* fixes penetrator rounds phasing through vehicles (#61907)
When I gave vehicles the PASSMACHINE flag in #61793 I forgot that penetrator rounds existed leading to them completely ignoring mechs. This time I created a new flag for vehicles, added it to water particle effects, and excluded it from the penetrator rounds.
Additionally this flag has been added to the heretic's phasing ability.
* fixes penetrator rounds phasing through vehicles
Co-authored-by: Invalid <51190031+InvalidArgument3@users.noreply.github.com>
* Fix bow controlling dropped arrow (#61868)
When loading an arrow into a bow and firing the bow without drawing it, the arrow would drop and still be able to be dropped repeatedly, making the arrow follow the player on the ground. See before clip. Also resulted in cleaning up a pointless if statement.
* Fix bow controlling dropped arrow
Co-authored-by: Peter <30943236+PeterMorrison1@users.noreply.github.com>
* Fix ebow acceting pka modkits (#61879)
This pull request make ebow think that he has -1% of mod capacity because ebow is not pka but still pka. So you will be unable to slap modkits from pka to ebow. Its not best way to deal with issue but best i can afford.
* Fix ebow acceting pka modkits
Co-authored-by: kopoba <kopoba.webmaster@gmail.com>
* Meteor guns, the admin weapon, once again harms living mobs (#61520)
When explosions got refactored, this stopped harming mobs because it lacked a check. Goof must have missed this, but it's also probably not as simple to put everything back as it was. This mostly restores old behaviour by putting the relevant code into on_hit() and out of Bump() when handling living mobs, since it's a projectile and all. I don't know if the values I added are appropriate but given that the old behaviour was a high damage localized explosion, it almost certainly isn't far off.
fixes#61244
* Meteor guns, the admin weapon, once again harms living mobs
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* [TM Candidate] Overhauls orbit and POI code to fix part of issue #61508 where players could observe /mob/living/new_player on the lobby.
* E
* Missed merge
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fixes flatgun drop code (#61453)
About The Pull Request
Changes the drop code handling from being in pickup (requiring some shitcode to work) to instead handle the same code in equip. This behaviour is nonsense, but it at least now works as intended.
fixes#61281
Why It's Good For The Game
Shit ruin with bad loot and bullshit like this
Changelog
cl
fix: Stickmen flatguns now properly drop out of your hands when picked up, as intended.
/cl
* Fixes flatgun drop code
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Removes Tactical Resting (#61552)
About The Pull Request
If you are on combat mode, your bullets will hit people lying down or stunned, otherwise they pass through.
Why It's Good For The Game
The original PR that added it was labeled a fix (#55495) only mentioning it in the changelog once, when it was a balance change, as resting to avoid bullets was intentionally removed after we added crawling and a rest button, for being fucking stupid.
The thing that original pr "fixed" was mobs being bullet sponges, which you can now prevent by switching off combat mode, so it is no longer needed.
Avoiding people shooting at you while also having guns of your own you are perfectly able to shoot is stupid.
It makes mobs like beepsky super annoying, where unless youre in a large area the robot chasing you with one of the only hardstuns left in the game will be really hard to hit.
Changelog
cl
balance: If you are on Combat Mode, your bullets no longer pass through prone people
/cl
* Removes Tactical Resting
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
* hopefully fixes buckshots only shooting one projectile (#61464)
* hopefully fixes buckshots only shooting one projectile
Co-authored-by: Seris02 <49109742+Seris02@users.noreply.github.com>
* The Odysseus is no longer an artillery mech. (#61372)
Removes the ability for the Odysseus to fire syringes filled with dangerous chemical combos that only react on impact. Does this by removing the NO_REACT flag when syringe darts are created.
This doesn't change any behaviour of handheld syringe guns. You can't fire a Water/Potassium syringe out of a handheld syringe gun as doing so requires creating a syringe of Water/Potassium, which will instantly react. The same holds true for other chem reactions. The traitor reagent dartgun which synths its own syringes uses different projectiles that are not impacted by this change. It functions identically to how it did before and is unchanged and untouched.
This change specifically targets Ody behaviour.
The Ody is intended to be a medical support mech. Stop using the Ody as a cheap spammable artillery mech with RDX/Teslium combos.
Use the Odysseus the way God himself intended. Fire sleepy chems into your victim, abduct him in your vore chamber and keep him sedated with a slow infusion of sleepy chems for the rest of the shift.
* The Odysseus is no longer an artillery mech.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Makes tank explosions scale with volume and have diminishing returns. (Nerfs singlecaps) (#60600)
Changes tank explosions to take tank volume into account and use sqrt scaling when calculating explosion range.
This basically means that they scale faster at lower pressures and slower at high pressures.
Rebalances tank explosion scaling so that maxcap TTVs are where they used to be pressure-wise.
Rebalances the research doppler arrays cash generation algorithm so it maxes out at the same TTV pressure. This does however mean that the doppler array will grant more points at lower explosion pressures.
Rebalances blastcannon shot range calculation so it scales as it used to with normal TTVs.
The comparatively tiny emergency tanks no longer produce the same size explosion as a TTV at the same pressure.
It is much more difficult to carry around 70 maxcaps in a single duffle bag. (I don't think it renders this completely impossible but it does kill oxy-trit emergency tank singlecaps as far as I know.)
Lemon posting past this line.
How it works:
Change assumes maxcaps should be just as easy with the standard ttv setup of 2 70L tanks.
So it divides the bomb's strength by 14, then scales it using dyn_explosion's (x*2)^0.5.
If you graph it the strength is exactly the same with a 140L reaction vessel, but as volume goes down, strength falls off very quickly because of that division, and the use of dyn_explosion.
Hopefully this will effectively disincentivize singlecapping, and remove the everpresent threat of someone leaking the station leveling method.
Reasoning for when github blows up:
I don't think single caps are on the same level as typical atmos antag threats. They're a hell problem
1: tanks should explode when someone hyper pressurizes them
2: we want all tank explosions to act the same, for the sake of a believable world
3: really well put together tank explosions (ttvs), should be really powerful
4: reaction code is a son of a bitch
I do think knowledge gating has some place. Knowing how to do something well should have a benefit. but that isn't like, an ultimate truth.
I've seen what proper, full on atmos autism single capping looks like. I don't like that level of absolute destruction at speed being feasible full stop.
I consider single caps to be a necessary side effect of how explosion code works. I think it's really cool that people have gotten so deep into this game and the systems around it that they've started optimizing this side effect into a tool/bragging rights thing.
But I'm still not a huge fan. If big booms are gated only by knowledge, then as soon as that knowledge spreads we're fucked. I've seen this happen before with things like rad batteries (cue crit being cringe).
It's not just single caps mind, the destruction you can make with em scales with knowledge.
I'm not in love with this pr mind, because it means I need to worry about bomb code when someone makes some silly tank volume balance pr. but it's a good solution. better then what's been tried in the past. still leaves space for things just blowing up in your face without maxcaps coming into the equation easily.
* Makes tank explosions scale with volume and have diminishing returns. (Nerfs singlecaps)
Co-authored-by: TemporalOroboros <TemporalOroboros@gmail.com>
* Baton refactor. item/melee/baton is now a subtype of item/melee/baton (formerly classic_baton)
* EEEE
* E
* follow the fucking guidelines
* E
* Update CentCom_skyrat.dmm
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* kills 4 object definitions that are inside of proc arguments (#61152)
thanks to putnam for reporting this in coderbus
/obj/machinery/smartfridge/drying_rack/load(/obj/item/dried_object)
looks pretty harmless right? youd think that this would make a proc argument called dried_object of type /obj/item but no, this defines a new /obj/item class definition called dried_object with zero changes from /obj/item
you can use this to do weird things, like /obj/machinery/smartfridge/drying_rack/load(/obj/item/var/dried_object = 3)
creates a new var on /obj/item called dried_object and is very cursed
gets rid of 4 of these abominations, they dont seem to have caused any bugs except for maybe behavior that relies on typesof(/some/path)
* kills 4 object definitions that are inside of proc arguments
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* Using a soulstone on a construct shell no longer destroys it and the shade if no option is taken. Plus code improvement
* Fixed the merge conflicts.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* adds a gun circuit shell (#61156)
adds the circuit gun shell, every projectile it hits with outputs the shot mob, everytime its shot charge from an attached circuit is transferred to it, it deals no damage
increases the range of the to string circuit to 7 tiles from 5, now should get everything in view range
* adds a gun circuit shell
* Update gun.dm
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fixes being able to spam ghost role notifications. (#61085)
There are methods that let players spam the everloving shit out of ghosts with BONG BONG BONG BONG BONG BONG BONG etc. through being able to constantly poll ghosts for roles with no restriction or cooldown.
Examples are laughter and slaughter demon antag_spawners.
It makes no sense to be able to concurrently poll for the same mob. As a result, I've now added a guard against this. The proc has been given a static list of mobs it's polling for ghost roles for. If it's already polling for ghost roles for a given mob, then it just early returns with an empty list, otherwise it adds the mob to the static list when the poll starts and removes it when the poll ends.
I've also done a little cleanup in var names and the proc name, with a find-and-replace done. There weren't many things calling it and none used named keywords in the args so should be fine.
There is also poll_candidates_for_mobs (also included in my cleanup) - This proc is basically only called by admins via sentience balloons and they have their own guards against spamming (the balloon pops and thus can only be used once)
Also fixes an issue in /mob/living/silicon/robot/proc/replace_banned_cyborg() where incorrect args were used in the proc call to poll for candidates.
* Fixes being able to spam ghost role notifications.
* a
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Del The World: Unit testing for hard deletes
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Fixes shotgun meteorslugs not displacing airlocks (#60808)
Gives meteorslugs MOVE_FORCE_EXTREMELY_STRONG force.
Turns out safe_throw_at was created to fix "situations involving mechas and the clock cult, and meteor slugs moving grav gen" (rip clock clut) and then later some force checks were added that made some movables resist meteorslugs with default force like airlocks.
* Fixes shotgun meteorslugs not displacing airlocks
Co-authored-by: Wayland-Smithy <64715958+Wayland-Smithy@users.noreply.github.com>
* Fix polymorph behavior for pAIs and mimics (#60502)
This fixes#58258. Basically anytime a pAI holoform gets shot with a staff of changing or polymorph item it would change their mob type. This allowed ghost roles infinite respawns since the pAI card is not destroyed when it gets polymorphed. An unlimited army can be created with no downsides since you can keep bringing people back to life with the pAI requests.
I also went and fixed another strange behavior with polymorph, where if you used a staff of animate on an object, you could turn around and then polymorph the object into a mob. The animate magic is supposed to wear off the object after a certain while so I made the mimic immune to polymorph effects.
* Fix polymorph behavior for pAIs and mimics
Co-authored-by: Tim <timothymtorres@gmail.com>
* Exosuit Proto-kinetic Accelerator (#60384)
Adds new equipment for mechas: the Exosuit Proto-kinetic Accelerator, unlocked with the mining tech research. Compared to the standard one, it is able to hit 5 tiles away with a low cooldown.
However, unlike the handheld version, it draws a considerable amount of power from the battery, pretty much requiring you to bring generator equipment or upgraded parts.
The projectile is identical to the standard handheld version otherwise and will do little damage in pressurized environments.
* Exosuit Proto-kinetic Accelerator
Co-authored-by: InvalidArgument3 <51190031+InvalidArgument3@users.noreply.github.com>
* Meat-hooks and changeling tentacle's firing pins are no longer visable (#60455)
Adds a Boolean to mark guns as "pinless" so they don't care about or show firing pins
* Meat-hooks and changeling tentacle's firing pins are no longer visable
* Update gun.dm
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* EVEN MORE HARDDEL FIXES (#60228)
Fixes a ton of harddels, sourced from #59996
I think this brings us down to like, ~100 per round from ~200, with only like 20 of those being proper hell failures. I've seen harddel profiles below 1 second of total cost. Feeling good.
See you on the other side
Makes the cryopod control computer into a weakref, never trust bee code
Converts brig door timer internal lists to weakrefs
Fixes a harddel caused by qdeling a motion sensitive camera after it had left its source area, jesus christ why didn't we do this already holy shit
Converts the radio implant ref held by the antenna mutation to weakrefs because it isn't reliably cleaned up, makes the radio implant actually qdel its fucking radio
Removes the target var from the throwing datum, it does literally nothing and just exists to cause harddels, mostly for the singularity
Fixes a cable harddel sourced from things that try to enter blueprints after smoothing, but before roundstart. IE, shuttles. Removes shuttles from the blueprints
Fixes emmisive blockers being added post qdel
Removes some manual ghosting from cryopods, I initially did this for harddel reasons, but I figured out a better fix for that. I'm now doing it because it's got this really strange logic for like "re-entering the game" that doesn't actually link to what the ghostize proc does. We should remove this at some point
Fixes robot hud objects harddeling due to hanging refs
Fixes buildmode related hanging refs, I'm coming for you admin team
Fixes a few instances of trying to add the forensics component post qdel, hhhhhhhhhhh
Fixes some split personality harddels/weirdness
Replaces a use of disconnect_duct with an init qdel hint, I suspect there's more issues with duct harddels, I've seen some odd logs about ahhh the area_contents list, but we can worry about that later
Makes teleporter targets into weakrefs, properly types them as /atom
Makes frequency devices into weakrefs
Makes cameras remove themselves from camera nets on Destroy
Makes tgui ui datums implement destroy, this means if I ever see one hang a ref to user or whatever, I know there's an error with calling close() properly. I've seen this harddel once, but not after this change so I assume there was some error with close(). IDK maybe this is a papering over? Would have to ask @ stylemistake
I've seen logs of beartraps being in world post del, putting a return there just in case. The same is true of nerf darts, but I haven't really looked into that yet
Makes a shoe's ref to untying alerts a weakref, yes this is needed.
Moves clearing client_in_contents to the Login of the new mob. This prevents doing things like ghosting someone before a mob qdel causing harddels
Fixes a harddel set sourced from adding a status effect to a qdeleted thing. Is this an error? I'm honestly not sure.
Converts bsa code to weakrefs
Converts the partner var of heat exchangers to weakrefs
Converts camera assemblies to weakrefs
Fixes some dumb behavior with ammo casings and assuming you'll be on a turf post Destroy parent call
Fixes? merger related harddels, you were never cleared from your own members list, so origin objects would end up making a new list, creating harddels. Potential input from @ ninjanomnom about the logic
Chasms store a static list of "falling atoms", which only exists for chasms that go somewhere else. This list wasn't being cleared of qdeleted objects, which is what happens when you fall in most chasms. Fixes this, and converts the list to weakrefs.
Fixes some runtimes in both sheet code, and the weather listener element. This is here because runtime spam made testing more of a pain, didn't think it needed its own pr
Fixes colorful reagent harddels sourced from reagents that were qdel'd before roundstart. I'm only like 50% sure this actually got it, but the issue may have been solved by #60174, so eh
Turns the nuke op antag datum's ref to the war button into a weakref
Fixes some holopad code that was not nulling refs all the time
Converts camera bugs to weakrefs, this was the result of the bug being "reworked" like 6 years back without taking the existing ref clearing into account. Whole item needs a redo, but this'll do for now.
Ensures that the both pulling and pullee refs are cleared on Destroy
The crew monitor held all users in a non clearing list, makes that list a weakref because I hate everything
Oh and I removed all sources of gas_mixture qdeletion, I'm kinda unsure on this since it's not technically supported, but any harddels from it might? indicate something going wrong with like, gas passing logic. I'd like @ MrStonedOne's thoughts, since I trust him to call me an idiot if I'm wrong.
<!-- Please add a short description of why you think these changes would benefit the game. If you can't justify it in words, it might not be worth adding. -->
## Why it's not good for the game
I crashed sybil like 10 times to get this data, I'm gonna put it to good use. Don't think you're safe sybilites, I'm coming for you.
* EVEN MORE HARDDEL FIXES
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Improves item's action button updating code (#60149)
This PR improves item action button updating code by introducing a proc to update all item's associated action buttons, which simplifies the process and reduces code duplication.
I also fixed a relevant bug where a PDA's action button icon did not properly update upon light toggle because it did not force the button update. Forcing the button update is needed in this case due to how light overlay operates, where the button icon state stays the same, so the code thought updating the action button icon was unnecessary.
* Improves item's action button updating code
* Mirror!
Co-authored-by: Arkatos1 <43862960+Arkatos1@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Fix honkstaff not being affected by antimagic (#60164)
* Fix honkstaff not being affected by antimagic
* Update special.dm
removes a line that doesnt do anything
* Fix honkstaff not being affected by antimagic
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Fixing Energy Gun Weapon Description Runtimes + Miscellaneous Weapon Description Fixes, Take 2 (#59778)
Fixes a runtime issue cause by the possibility of loaded_projectile being null by changing how projectile stats are obtained on energy weapons, and adds a separate line for energy ammo types that deal stamina damage and regular damage to incorporate both damage types
* Fixing Energy Gun Weapon Description Runtimes + Miscellaneous Weapon Description Fixes, Take 2
Co-authored-by: Beatrice <83368538+SpaceDragon00@users.noreply.github.com>
* Makes mutant bodyparts and mutcolors into editable genetic traits (plus a whole shitload of otherwise out of scope code improvements because I just HAD to touch old code)
* Mirror
* genetically-editable mutant bodyparts and colors - skyrat edition
Co-authored-by: Funce <funce.973@gmail.com>
* Increase the number of shots for laser rifles, energy guns and hellfire lasers (#60015)
* Lasers get more shooty
* down to 15%
* Increase the number of shots for laser rifles, energy guns and hellfire lasers
Co-authored-by: Spookuni <70739420+Spookuni@users.noreply.github.com>