Commit Graph

2938 Commits

Author SHA1 Message Date
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
MrMelbert
12afcb911e Comprehensive cleanup of storage datum, replaces the weakrefs with just refs (because they were managed already) (#81120)
## About The Pull Request

- Large amount of storage datum cleanup.
   - Documentation.
   - Maybe more consistent use of parent vs real_location. 
   - Removes the weakrefs, replaces it with just references.
      - These were already managed references anyways so why bother?
- Removes a bunch of arguments no one used and would ever used so only
the most useful args are left.
 
- Some bugfixes. 

## Why It's Good For The Game

Aiming to make storage easier to work with. The whole intent of this was
to bugfix the whole "weight class" thing that keeps popping up but I had
to do this first.

## Changelog

🆑 Melbert
fix: When placing an item into storage (such as backpacks), all nearby
mobs now get a message, rather than just the first mob.
fix: TGC decks of cards should act a bit less odd when looking inside.  
refactor: Refactored a bit of storage, cleaned up a fair bit of its
code. Let me know if you notice anything funky about storage (like
backpacks).
/🆑
2024-02-05 11:42:03 -08:00
ArcaneMusic
002051a3d5 ArcMining Pr Beta: Version 1.2 (#78524)
This one's not like the last one, so much so that I'm not even going to
outsource the PR description to a robot this time!
Basically, **You should read the PR body before assuming that everything
is the same as last time. It's not.**

## Video Summary
Click the link below to see a video summary of the main features of this
pull request.
https://youtu.be/Aho2omR0mjY?feature=shared

## About The Pull Request
This pull request serves as a large rework of minerals produced by
mining, and by extension mining itself. I'll try and list each change
and it's associated nuance here.

### Ore Vents
The biggest addition to the game with ArcMining is **Ore Vents**. Ore
vents spawn as a ruin on the map, placing a randomized ore vent onto map
generation. Ore vents spawn in 3 different sizes, **Small, Medium, and
Large**. These vents will pick from a pool of materials they can
generate, and will hang out across the map. A player can use a mining
scanner to discover an ore vent, granting a small quantity of **mining
points** to begin with. Once scanned, ore vents will show what minerals
that ore vent will generate after they're fully tapped.

Scanning the vent again will trigger the extraction process. A small
drone will fly down, called the NODE drone, and buckle onto the vent.
Your job during wave defense is to protect the drone and to defeat waves
of randomly spawning mobs (dependent on if you're on lavaland or on
icebox). The quantity, duration, and time between waves is scaled to the
size of the vent you're protecting. Starting by scanning and protecting
lower tier vents earlier in the shift is a safer bet than doing a large
vent in the first few minutes. The drone has 500 health, and can take a
good few hits, but leaving it alone will cause it to meet an unfortunate
end quite quickly.

Cooperation can be your best asset, as mining with allies can greatly
help with wave defense, and mineral points are granted to anyone who
helps with defending the ore vent equally (So 500 * size tier,
regardless of how much help you receive). Once complete, the ore vent
will have a mining machine constructed on top of it, and will start to
dredge up **Boulders** from the earth automatically. More on boulders
later.

Ore vents can be located based on your mining scanner, and will provide
an appropriate audio cue based on if the ore vent has been discovered or
not, and once processed will no longer alert you to it's presence.

**Each station comes with a free vent that produces exclusively iron and
glass, free of charge.** This is to help with shifts where the station
may not have shaft miners to produce minerals, and to provide the
station with a baseline amount of minerals where none may exist
otherwise.

### Mineral Generation
Mineral generation has been completely reworked. Previously, Mineral
Generation had a flat 13% spawn rate in-game. Once minerals spawned,
they would also have a chance to propagate their minerals to nearby
tiles, resulting in a rather massive pool of minerals that could spawn
throughout lavaland on the whole.

This tweaks that, by making minerals in walls spawn based on their
proximity to ore vents on maps that use cave generation. Both the
probability, and quantity of ores spawning in walls is scaled based on
distance, with ore vents looking like large caches of ores found in
walls. This makes following ores found in walls and checking their
quantity of minerals spawned a good indicator of how close you are to a
nearby vent in-round.

This means you can collect some points form both discovering ore vents
first, as well as collecting their surrounding ores, turn those in for
mining points, and then trading them in for gear upgrades to more
effectively take on ore vents. As a result of tweaking the balance of
this, the total amount of ores spawned in walls overall has been
decreased. However, by making more of the process time based, we still
result in a mostly balanced finished product.

### Boulder Processing
On station, there are now three new machines. These are the BRM, the
Refinery, and the Smelter.

- The BRM acts as a teleporter. Instead of needing to carry boulders
back to the station, you can activate the BRM, and it will automatically
pick boulders to teleport back to itself. You can use this to teleport
boulders dredged up from lavaland onto the station for processing. **The
BRM will only lock on to boulders that are resting on an ore vent.**
Moving boulders back by hand will mean you'll have to haul it back by
hand.
- The refinery processes the non-metallic materials out of boulders.
This process sends the materials straight to the ORM, and collects
mining points from the ores smelted in the machine. Swiping with an ID
card lets you withdraw those points for your own personal account, but
remember that these points are for your whole team to share from. The
**Mining points obtained from this process is only 75% of the amount an
equivalent amount of ores would provide.**
- The smelter works nearly identically, however the smelter produces
metallic materials out of boulders instead.
- Once a boulder has had all of it's materials extracted, it's broken
down and deleted from the line. Otherwise, the boulder is spat out for
the next machine to process it (either the refinery or smelter).
- Once there's no minerals left in a boulder of any type, the refinery
or smelter will break the boulder down.
- Boulders **do not stack onto tiles with each other**, so they'll block
each other when pulled or when moving on a conveyor belt.

Boulders can also be processed by hand. Using a mining tool on a boulder
with right click will allow you to break down a boulder into it's
composite ores, but limits you to a maximum of 10 ore per boulder, where
the full amount can be extracted using the proper processing machines.
Also, processing by hand does deal small amounts of stamina damage over
time, do breaking a full large boulder can be particularly taxing.

Additional Boulder Processing Machines can be built, with the BRM board
being obtained from the Protolathe, while the Smelter and Refinery
boards being obtainable from the Autolathe instead. A _boulder
processing beacon_ can also be obtained from the mining points vendor as
a reward to assist with boulder processing. Boulder processing beacons
can be used to spawn in a new BRM, refinery, and smelter on the tile the
user is standing on, however **you'll still need to link them to the
ORM**!

All three machines can be upgraded with Stock Parts, allowing for **more
boulders to be processed at a time**. It does not, however, increase the
amount of minerals received from boulders, or points earned.

### Mining Borg Tweaks
Mining borgs have been given some minor adjustments to compensate for
the changes to mining. Their mineral scanner, which now has an active
component to gameplay, is now a module as opposed to built into the mob.
This module allows for the same ability to discover and start waves of
monsters to fight.

Mining modules will find that their PKA now has a total of 90% mod
capacity as compared to the 80% they had before, to allow for more
robust defense of ore vents.

In addition, all borgs and AIs can interact with the BRM for boulder
collection.

### Mining Mech Tweaks
Mining Mechs have had their utility tweaked as a result of these changes
as well. Mineral scanners to be used on mining mechs now have a larger
radius by comparison to their handheld cousins. Similarly, it now has an
active scanning button, which will actively discovery nearby ore vents.
To begin wave defense, you will need to hop out and scan a second time
however, so that you can properly accept the risks of drawing a horde of
bloodthirsty wildlife towards you and your companions.

Mechs can also manually process boulders, similar to mining tools using
their drill.

### Golem Tweaks
Golems, being more gentle and less aggressive than humans, while being
made out of LITERAL ROCKS, have a greater need to secure access to ores
and minerals to eat. As such, they have adapted to be able to do two new
things:

- Golems may now right click ore vents to be able to manually haul a
boulder out of the vent. This costs a hefty amount of stamina, but it
allows for golems to avoid combat during regular gameplay.
- Golems may now left click a boulder with an open hand in order to
manually process a boulder like a pickaxe. While not faster, it is
consistent and prevents golems from starving if they have access to a
vent, but no ores, somehow.

### Gulag Tweaks
The labor camp, being a camp for rehabilitation and ~~excessive manual
labor~~ has been tweaked. Boulders now replace the random minerals
located on their island, and to acquire their prizes inside, much be
excavated and then broken out of the rock. Now YOU TOO can excavate
minerals and become a true mineral hero by working your way to freedom.

### Mining Point Changes
As a result of fewer mining points being available across the map due to
the new ore spawning mechanics, and the shift in how and when ores will
be coming in, almost every progress based mining point cost has been
reduced by around 10-20%. Many numbers are still subject to change at
present, but the idea is that core progress unlocks should be made a bit
more available earlier in the round before players can start to solo or
duo larger or more difficult ore vents, after which they'll be rolling
in ores.

### Rarities
Every once in awhile, an unusual boulder will get hauled up from the
mineral rich depths of lavaland. These **Artifact boulders** can
occasionally produce rare items, but for now they've mostly just been
pulling up **Strange objects** for science. Nanotrasen Natural Sciences
department will reward you extra points to be collected by boulder
processing machines for successfully extracting one. In the future, this
opens up a passive reward space that mining can reward to the station,
like providing cytology DNA samples, ancient seeds, or other artifacts.

### Misc notes

- Boulders can be stored in all varieties of ore boxes (ground, mech)
should you choose, however as mentioned it's best to leave them where
they spawn and teleport them to the station for convenience.
- Maps that are not subject to cave generation will find that they are
largely untouched in terms of mineral balance.
- Future or existing ruins can now be tweaked to have a mineral balance
cost, as the ore vent ruin does. This will allow us to spawn in more
interesting ruins for pre-made combat challenges.
- There are unique ore vents that spawn across the map, that will summon
a boss mob relevant to that map. If the boss mob is defeated, that vent
will spawn large boulders pulling from every possible ore type that can
spawn. Not for the faint of heart!
- Similarly, the number of ore vents and mineral budget is now
adjustable in the cave generation procs, so maps may spawn with more or
less ore vents as desired for balance.
- Artifact boulders opens up a LOT of room for possible future content
like archaeology, xenoarch, artisci, and other design spaces!
- Megafauna STILL SPAWN ON THE MAP. They just happen to spawn in
addition to boss ore vents.
- **I'll add more to this as I get asked questions and remember things,
this is a huge PR and I'm confident I've missed at least something**

## Why It's Good For The Game

I outlined a lot of this in #78040, so I'll try and keep this relatively
snappy this time, while noting that I've made some concessions to make
the whole system a lot more playable while not trying to break out
design decisions that are at the end of the day, better for the game and
the overall resource balance in round.

Minerals are a very poorly balanced system, and have been since their
inception many years ago. We heavily rely on mineral balance in round,
and yet we've really only balanced it by introducing so much supply that
there's no equivalent exchange for materials that doesn't just heavily
flood the exchanged material. For example, items printed from materials
that are otherwise considered "rare" on master exist in such quantities
and they'll never practically run out in our allotted 90 minute time
slot design. This PR adjusts how ores spawn to a point where we can
minimize the amount of ores that need to exist on the map for mining to
be able to progress, while still providing enough resources for the
station that it covers the needs of the station adequately.

Miners will need to be more strategic about what resources they've
collected, and be able to make decisions about which vents are worth the
risk of attempting to fight, how to prepare for a wave defense, and when
to head back up for upgrades, while finally giving them at least some
kind of incentive to work together and use different equipment.
Resonators make cleaning up the caves around vent easy, sandbags set up
easy defenses for your vent, mechs can serve as a wider range radar
while mining, all while still providing a new gameplay loop to mining.

By limiting the amount of ores that can enter the round from the
massive, massive amounts that were coming into the round beforehand (see
#78346 ), we can make ore processing more meaningful by adding more
gameplay to the processing of minerals. I have some plans for that,
however this PR already got bloated really REALLY badly due to scope
creep and the number of intersecting systems that rammed into each other
to make this PR possible. So that'll be next. Plus, as I've mentioned,
we open up places for ore processing to find fossils, relics, and other
things that can implemented down the line.

Overall, I don't expect this PR to save or kill ore balance, but we gain
a LOT more control over it through the use of our mining defines
attached to this PR, and at the end of the day, that's a great place to
start off of.

## Changelog

🆑
add: Added ore vents. Scanning them with mining scanners shows what
minerals they contain. Scan again to fight off a horde of beasts as your
drone assistant excavates the vent, so the ore vent will produce mineral
boulders!
bal: Ores that spawn in walls now spawn based on their proximity to ore
vents, with their chance to spawn and their minerals contained scaling
from low to high.
add: Added the BRM, Refinery, and Smelter. These pieces of equipment are
used to process ore boulders into minerals for the station. Stock Part
upgrades allow more boulders to be processed at one time. They collect
mining points as well, to be redeemed with an ID card swipe.
add: Boulders are teleported to the station via the BRM if left
untouched. Boulders can also be cracked open for a reduced amount of ore
using pickaxes or golems hands.
add: All stations come equipt with a pre-excavated ore vent, which
produces a basic supply of iron and glass only. Scan other vents for
your critical resources!
add: Look there's a shit ton of changes on mining, for more detail check
out the Pull Request: https://github.com/tgstation/tgstation/pull/78524.
sound: New sounds and noises for your high octane factorio-like
gameplay!
image: All new boulder sprites for the new minerals and rocks added to
the mining gameplay loop, as well as mining machines!
image: Overlays appear over vents when scanned to let you know their
contents at a glance when actively scanned with any mining scanners.
/🆑

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SyncIt21 <110812394+SyncIt21@users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-01-21 11:32:05 -05:00
Ghom
aa9caef0ed Fishing hook and reel line tweaks (also qol for the fish bounties) (#80599)
## About The Pull Request
This PR includes a series of small changes and additions to hooks and
reel lines, as well as the aforementioned bounties. My objective here is
to make the (base) hook and reel line feel more useful. Ditto with a few
other things.

Here's the list of changes:
- Almost all fishing rods come with a hook and reel line pre-installed.
The rod from the fishing toolbox comes with separate hook and reel line.
- Without a hook, you cannot fish. Without a reel line, the cast range
is reduced (from 5 to 3).
- Fishing with a reel line installed provides a mild boon to completion
speed by default.
- The sinewy reel line (craftable from lavaland mobs) can now be used to
fish on lava / liquid plasma, but it's a bit stiff and gives a mild
malus to completion speed.
- Unlike other hooks, the rescue and jawed hooks now allow you to cast a
line and reel in living mobs too, not only items. They even get a status
alert they can click to un-snag themselves, or move away far enough to
achieve the same effect.
- Master fishing rod buffed. It now comes with a flexible reel line and
weighted hook pre-installed, and can be cast further than other rods.
- On top of that, the jawed hook will slow down living mobs snagged by
it and is a bit harder to remove.
- when casting a line, it will now show the icon of the current hook as
projectile, not a generic one.
- Reeling now correctly checks movement resistance and anchorage.
- Reeling an object (or a mob) now plays a sound. Ditto for
installing/removing slotted items.
- A few balloon alert feedbacks.
- Minor code improvements.
- The jawed hook should look a smidge sharper.
- reel lines are now small items.

## Why It's Good For The Game
The base hook and reel line didn't do anything begin with, and you would
do just fine without them. In the end it's just a bit unintuitive for
them not to be a requirement.

Beside that, it makes sense for the rescue hook to be able to snag mobs,
so they may as well be used to drag people out of lava or liquid plasma.
As for the jawed hook, it always felt to me a bit underwhelming and a
bit of a filler I had cooked up on the moment. It really could have some
'tactical' utility in virtue of being one of those niche black market
items.

## Changelog

🆑
add: Most fishing rods come with a hook and line preinstalled. Fishing
toolboxes come with separate reel and lines as usual.
balance: Fishing hooks are now required to fish.
balance: Without a reel line, the range of fishing rods is reduced by
two tiles. Conversely, having one installed gives a mild buff to the
minigame completion speed.
balance: The craftable sinewy reel line can now be used to fish on lava
or liquid plasma, but it's a bit harder to use.
balance: The rare-to-find-in-maintenance master fishing rod now comes
with a flexible line and weighted hook preinstalled, and has better
range than other rods.
balance: Fishing reel lines are now small enough to fit pockets.
add: The rescue and jawed hook can now snag and reel in mobs, not only
items. The jawed hook also slows down when applied, a la beartrap.
qol: Fish bounties now accept filled (stasis) fish cases.
qol: Several balloon alerts for fishing rod interactions.
fix: Reeling in items (and mobs) now respects movement resistance and
anchorage.
fix: Fixed the fishing rod equipment UI being too small to fit its
components.
sound: Reeling in something now plays a sound.
/🆑
2024-01-17 04:37:52 -05:00
Bloop
fc0a1f4068 Removes timeout_mod arg from add_mood_effect (#80964)
## About The Pull Request

Partial Revert of https://github.com/tgstation/tgstation/pull/80800

Assuming every num passed in the parameters of `add_mood_effect` is a
`timeout_mod` is incorrect, because there can be mood events that take a
numeric arg which is not meant to be multiplied against the timeout.

This leads to the same issue as multiplying it with strings essentially
(in one case, shown below, this results in a negative duration of a
timer).


![image](https://github.com/tgstation/tgstation/assets/13398309/f8af858f-04ef-4144-9a0b-2fae60b71272)


![Code_ZN176cpMqA](https://github.com/tgstation/tgstation/assets/13398309/a6ec7689-0171-4909-91cb-a17b56454eb6)

Plus having a keyword arg that may or may not actually be what the
keyword arg claims to be is really confusing and bad.

Instead here's what I propose: passing in an instantiated mood datum
itself, which has been modified, and copying the timeout from it before
discarding it.

It is not as clean as I'd prefer either, but at least it's logically
sound and the intent is clear, and it's the best I can think of short of
a major refactor of the entire system for this one small thing which is
only being used by food quality.


![image](https://github.com/tgstation/tgstation/assets/13398309/8560c066-bb0b-4066-af94-372d5ea62679)

## Why It's Good For The Game

Clearer, less smelly code.

## Changelog

🆑
code: removed the timeout_mod arg from add_mood_event, which was only
used for one thing and causes more issues than it's worth
/🆑
2024-01-16 20:57:42 +01:00
Hatterhat
27386bffe8 fixes a bunch of moodlets potentially lasting forever (less band-aidy) (#80800)
## About The Pull Request
In a previous PR (https://github.com/tgstation/tgstation/pull/79661), I
noted that a lot of moodlets tended to have their timeouts break because
it was passing their names and whatnot as a parameter, that gets fed
into the timeout modifier parameter, causing the timeout multiplier to
break, because BYOND type-agnosticism means that it can multiply a
number (timeout_mod) by text (a name or some other object), resulting in
0 - which makes a moodlet permanent. This is probably not intended.

This fixes that in two ways:
- Adding a `1` to potentially applicable moodlets (searched for with a
regex of `.add_mood_event(.*, .*,)`) just to make sure the timeout
doesn't get multiplied out weirdly.
- Making the add_mood_event thing CRASH() if the timeout_mod is bad.

If someone else wants to come up with a solution better than this,
please do.

## Why It's Good For The Game
Maybe having your arm permanently fall asleep after getting it
reattached sucks, moodlet-wise. (Being stuck with permanent
positive/negative moodlets is probably not intended.)

## Changelog

🆑
fix: Moodlets with parameters/effects e.g. limb reattachment moodlets
should probably disappear more appropriately.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
2024-01-15 07:08:01 +01:00
Thunder12345
ca8c742882 Correctly offsets bayonets on pipeguns (#80805)
## About The Pull Request

Changes the offset for pipegun bayonets to align with the gun properly.

Fixes #79607

## Why It's Good For The Game

Floating bayonets are ugly

## Changelog
🆑
fix: Pipeguns no longer have floating bayonets
/🆑
2024-01-09 22:35:02 -07:00
Ghom
d05ca07891 Stop misfiring from re-iterating and looping through every munition in the mag like that doesn't make much sense. (#80796)
## About The Pull Request
So, the misfiring proc (`blow_up`) can trigger even when the shot is
aimed at oneself, which is what the proc does. It also tries to loop
through every loaded projetile in the magazine when you only need the
chambered round, which is the one we're going to fire anyway. It's...
just plain dumb and can freeze your game for a fair bit.

## Why It's Good For The Game

![immagine](https://github.com/tgstation/tgstation/assets/42542238/f449e6ac-6fc5-4677-b409-c0e67ad3c137)

## Changelog

🆑
fix: Fixed misfiring for firearms like tinkered detective revolvers.
/🆑
2024-01-09 14:12:04 -05:00
jimmyl
2356262a57 fixes the eZ-13 MK2 heavy pulse rifle (#80791)
## About The Pull Request

i just added a return idk what the issue was


https://github.com/tgstation/tgstation/assets/70376633/935f7869-d78c-4392-a7e5-bcfd780ddb3b


## Why It's Good For The Game

fixes #80170

## Changelog
🆑
fix: the eZ-13 MK2 heavy pulse rifle does damage again
/🆑
2024-01-05 18:16:11 -05:00
necromanceranne
8e75c930c1 Fixes every instance of 'kenetic' in the codebase (#80782)
## About The Pull Request

There were several instances of this being misspelled as 'kenetic'
rather than kinetic. This fixes that.

## Why It's Good For The Game

oughe

## Changelog
🆑
spellcheck: Corrects every misspelled 'kenetic' in the codebase.
/🆑
2024-01-05 17:55:09 +00:00
Ben10Omintrix
566c353d63 fix a hard delete in basic statues (#80696)
## About The Pull Request
if the creator of the statue got deleted, it might cause a hard delete.
also i noticed this variable wasnt being used so i removed it and
instead directly added the ref of the creator to the mob's faction list.
also i noticed the proc that was setting it had alot of nested
typechecks so i split it into child procs

## Why It's Good For The Game
fixes a hard delete

## Changelog
not player facing
2024-01-01 21:03:26 +01:00