I put mystery boxes on their own sound channel so they could cancel out the full music clip when someone took an item from them, but this causes issues because only one box could be playing a sound clip at a time, and they'd cut each other off if there were multiple. Now they reserve their own channels for their duration, then release them, so they can all play at the same time. Accordingly, their sounds now fall off quicker so having multiple of them nearby won't destroy your ear drums.
* improves meatspike code, makes it use default buckle
* small edit to make checks run again
trying to see if somehow this is my fault?? i doubt it.
* lets simpleanimals get buckled again
About The Pull Request
Simply converts all instances of soundkeys that use get_sfx from strings into defines.
E.g. "sparks" is now SFX_SPARKS
Why It's Good For The Game
It makes life a lot easier when you're looking for a sound effect. You just type SFX_ and you get suggestions in VSC. Plus, it looks better.
image
Changelog
Not player facing.
About The Pull Request
Continuation of #64375, extracting tool behavior from attackby() and moving it into discrete _act procs. This is about as many files as I had in the last version, as I still want this to be reviewable.
As before, I've tested everything in game and it works as it previously did.
Why It's Good For The Game
The more code moved out of attackby, the more modular things become.
Changelog
cl
refactor: Moves more tool behavior out of attackby().
/cl
About The Pull Request
You now right-click to wet your mop and left-click to put it away to prevent having to double-click to get rid of it when it's not completely wet
Can right-click with an empty hand to remove mop and skip radial menu
You now right-click to put things in the trash bag (prevents trash bag unintentionally eating things, such as the crowbar you were trying to use to empty the cart)
Left-clicking skips radial menu when there's only one item in the cart
Can fill open reagent containers from drainables like the janitorial cart (useful to empty it)
Adds examine hints for these changes
Right-clicking to splash reagents now requires combat mode (this is because it interfered with using right-click to empty)
Cyborg cleaning modules now use the NODROP trait to prevent them being put in the cart, instead of their own copypasted var and proc
Fixes overlays not immediately updating when filling janitorial cart
Fixes bludgeoning janitorial cart when filling it
Why It's Good For The Game
Should make it less clunky and more enjoyable to use.
Changelog
cl
add: Right-clicking to splash reagents requires combat mode
add: Remember the above
qol: You now right-click the janitorial cart to wet mops and left-click to put them away
qol: You can right-click the janitorial cart with an empty hand to quickly remove your mop
qol: You now right-click to put things in the trash bag
qol: Left-clicking the cart with an empty hand will skip the radial menu if there's only one item in the cart
add: Adds examine hints for these changes
fix: Fixes overlays not immediately updating when filling janitorial cart
fix: Fixes bludgeoning janitorial cart when filling it
add: You can right-click with "glass" reagent containers (e.g. buckets) to fill from drainable containers like janitorial carts
code: Improvements to janitorial cart code
/cl
Monkey knockdown used to be on Crossed until it was made an AI here: 55238
Now it instead uses COMSIG_ATOM_ENTERED, which only takes into account walking over the monkey. Something that you can't do unless you are non-dense or they are lying on the floor, in which case you aren't even knocking them down?
Now it uses COMSIG_MOVABLE_CROSS instead so it's how it used to be, actually functional and useful.
adds new variants for each sized engine to look like they are in walls (basically cut down sprites with their density set to false (because they dont take up the full tiles, especially the huge engines are 3x3 but only take up 1x3, they must have no density or they block way more than they should))
before: dumb looking gap
image
after: nice clean engine (and box trams are soul filled, also, trams kinda too small to really get any sort of diagnal design working)
image
showcase of each sized thruster:
image
added new structures that act like walls but arent turfs, and can only be used (and can be used!) on trams!
comes with 3 types, iron, plastitanium, and titanium. supports more types being added if you want but these are basically all that a tram needs to use:
Untitled.1.mp4
also removed a duplicated APC in a maint on tram, and removed cycle helpers from random maint airlocks that arent actually meant to cycle (they are solo)
Why It's Good For The Game
engines are kinda too bulky and organically shaped so they dont really fit some designs such as tram as a good example, in wall designs allow you to add thrusters onto any shaped ship easily without worrying about ensuring the walls around them being shaped right, as it appears to have the bulk of the engine merged inside the wall
Changelog
cl Nari Harimoto
imageadd: New thruster sprites to allow for in-wall designs
fix: removed cycle helpers from 2 random tram maint airlocks that arent meant to cycle (solo airlocks) and a duplicated APC in tram maint
expansion: the tram now has new walls! they are structures that function like walls so as to be built on the tram, create and deconstruct via the new tram girder (screwdriver on the girder to deconstruct, there is no displaced version ie wrench)
/cl
Fence doors used a var to track if they were opened or not, but it doesn't sync consistently with the density var. Density was getting set when updating icon state instead of when toggling the door. This removes the unneeded open var and flips density only during toggle.
Adds the foundational system for contextual screentips, which will show you what you can do with objects/items, including through context, such as what you are holding.
Provides several helper elements for most use cases, and applies it to a handful of common objects in order to show the full breadth of the system.
Changes screentips preference from on/off to on/off/only with context. Players who originally had it on off will have it migrated to only with context, though can re-disable it.
* Buffs Omega soap from 300 uses to 800
- Changes cleanspeed and mopspeed vars to use SECONDS define instead of straight deciseconds
- Renames mopcap to max_reagent_volume for clarity
- Puts the slowest child of soap (homemade) first
- Clarifies/improves a couple of my 3 year old comments on soaps
- Makes homemade soap grind into the reagents of the recipe
- Capitalises Omega in Omega soap because it's supposed to be and it makes it more impressive
- Makes Omega soap description tie into the name
* Changes mopcap to max_reagent_volume in janicart.dm
* Adds specific grind results to soaps lacking them
Craftable ones are 1 reagent less than their recipes require
About The Pull Request
The design doc behind this PR, which is only mildy been deviated from on some of the end particulars. Cobby-Approved! Maintainer Discussed!
https://hackmd.io/@6DbtsAKCTtW_9MByKFjZqg/r1xYKCNOt
Cargo Changes
Cargo has had all WT-550's removed and replaced with Thermal Pistols.
Cargo can now order Thermal Pistols, a kind of energy/ballistic hybrid weapon shooting chunks of altered nanites into people. We couldn't use them in people, so maybe we'll use them as bullets! Magma/Ice bullets, to be exact.
You can, after paying a whopping 4K on a goodie pack (you have to pay from your own personal account) buy a .38 revolver. This is mostly to help some poor detective who lost their revolve in what I'm sure will be an inevitable scramble for ballistics. If even the 4K pricetag isn't enough, at least it requires detective access to open the pack...I hope.
Some of the crates that contained autorifle related items have been changed/removed.
unknown (2)
securarevolver 4 0
Science Changes
Ballistic Weaponry node no longer exists, and has been replaced with Exotic Ammo as both the pre-requisite to other nodes, as well as being able to be researched as soon as the Weaponry node is unlocked and not Advanced Weaponry.
Thermal Pistols
-Fairly average bullet statistics; 10 AP but shooting into Energy armor. 20 damage (Brute for cryo, Burn for inferno). Decent wounding potential, but individually much lower ammo counts than lasers.
-Bought in twinned pairs in a two gun holster (just for normal sized energy guns). They're normal sized.
-Each gun has 8 shots (thereabouts). 16 between two.
-Cryo pistols do a knockdown and extra damage against extremely hot targets. Inferno pistols do an explosion cantered on the target against extremely cold targets.
-The guns are EMP-proof.
Why It's Good For The Game
The current gameplay loop of crew combatants is them relying on backup and retreating as necessary to reload their weapons during fights. The ability to repeatedly harry opponents in the field reloads is something that should be moved away from for crew equipment, as it emphasizes lone wolf tactics and one-man army problems, with boxes full of spare ammo usually allowing any single combatant to outlast multiple foes. In addition, ballistics often are not subject to the same (interesting) limitations of energy weapons, so they're typically a no-brainer choice. We shouldn't have such an easy choice be readily available like that.
The thermal pistols present a more challenging weapon to use as a solo combatant but become far more versatile and potent when paired with a decent buddy and basic level co-ordination. They're not a straightforward choice for every situation, but instead are a weapon employed given the right circumstances for them to shine.
In addition to the gameplay issues that ballistics pose, we're in a goddamn spacegame. Unless the ballistics are noticeably weird (they're not), we should expect that our more advanced research station has some pretty odd guns of the energy variety.
Changelog
🆑 Necromanceranne, quin
add: Adds the Inferno and Cryo Pistols. A hybrid energy/ballistic weapon, to cargo. It can be purchased in either a goodies pack or a normal crate order.
add: Thermal Pistols do more damage and a special based on temperature of the target hit.
add: Inferno pistols cause an explosion when they hit a severely cold target.
add: Cryo pistols cause a knockdown and extra damage if they hit a severely hot target.
add: There is a special nanite pistol, which is admin spawned. Don't tell anyone about the forbidden ballistic energy gun.
add: You can order a .38 revolver as a goodie pack. It is expensive.
del: Removes WT-550's from cargo and related content from the techweb/protolathes.
balance: Exotic Ammo is now much earlier in the tech web to take the place of Ballistic Weaponry.
/🆑
About The Pull Request
Adds an argument to typecache generation that allows specifying the whether to include/exclude types in the input list.
Also adds another argument to specify whether to remove falsey values after the typecache is generated.
Why It's Good For The Game
Might make zaps slightly faster???
Honestly I just thought it would be a good way to condense some whitelist/blacklist typecache sets.
* Move element to component, start UI, move assets into their own directory
* Complete UI
* Stop when another surgery is started
* Set your real zone since I forgot you actually need to start the surgery too
* Bring this back since I was just removing it as part of a cleanup for asset cache, but I can't prove it's not used anymore
* Remove unnecessary constructor I was using for something else
* Fix signal override
This adds some new defines and flags for the rotation component that lets us remove lots of c/p code chunks. I also added documentation to all the rotation defines that currently exist and in other spots that had weird behavior.
New rotation flags:
ROTATION_GHOSTS_ALLOWED - checks if ghosts are able to manipulate objects in config and lets them rotate the object
ROTATION_IGNORE_ANCHORED - this skips checking if an object is anchored (which normally prevents us from rotating) Used mainly for chairs.
ROTATION_NO_FLIPPING - this removes the flip verb from possible right click rotation options. Used for pipes that have custom flipping verbs instead
ROTATION_NEEDS_ROOM - this checks if an object needs to have an empty spot available in target direction. Used for windows and railings.
Objects can now be rotated in the direction based on which LMB or RMB you click with when you ALT click it. LMB is counter clockwise. RMB is clockwise. Before some objects could only be rotated clockwise. Now any object that inherits the rotation component can be rotated in either direction.
There was also a bug with wheelchairs that existed from when they were ported over from another codebase. The rotation logic was broken and never allowed anyone to rotate them. This has been fixed.
Rotation for IV_drips was enabled however Alt Click was being used for another proc and rotation was ignored because of this. I removed the rotation component due to this since I didn't want to change the hotkeys for IV drips since those have an actual effect on gameplay interactions while rotation does not.
Fingerprints are no longer added when something gets rotated. Only a few objects had this enabled but I believe this interaction was very spammy and unnecessary. I can readd this as a flag if needed but for now it's removed.
Alert balloons have replaced a lot of rotation to_chat() messages for the same reason as fingerprints. Rotating objects has almost no effect on gameplay and will only clutter a player's message log.
The hotkeys for pipe interactions had to be redone since Alt clicking was already being used in some situations. For regular pipes: Right clicking now changes the pipe layer. Alt clicking rotates the pipe. For Trinary pipes: Right clicking now flips the pipe device. Alt clicking rotates the device.
ComponentInitialize() is a deprecated function and the AddComponent proc was moved to Initialize for several objects.
A compliment to my recent root beer PR, since I've been on a retro CoD Zombies kick lately, this PR adds a new admin structure that randomly rolls an item and presents it to the player like the mystery box from... well, CoD Zombies.
The music that plays while selecting is The Ragtime Drummer by James Lent, sourced from freemusicarchive.
There's a base version that can spawn any item that the christmas tree/santa's bag can spawn, and then there's a subtype that draws from the Summon Guns list only. If you want, you can use the base type to generate a list of any subtypes of a given path, or you can edit the valid_types list to only consider specific types of atoms.
Ok, I'm fixing a few issues with certain crates, namely the abandoned one and the burial mound:
An oversight with the skittish trait letting players dive into burial mounds, which are technically a subtype of crates.
A runtime that made abandoned crates not update their lock lights when unlocked (the togglelock call was missing the user arg). This one was my fault.
An oversight with abandoned crates not resetting the number of attempts left and not nulling the last attempted code when re-locked. Idem.
Burial mounds somehow getting lock lights overlays.
Also i'm taking this opportunity to make the closets unit test not early return at the first encountered failure (at the time I made it I didn't know TEST_ASSERT & co would early return on failure) since we want this unit test to finish looping through all non-blacklisted closets.
lowered the grow time limit from 15-20 seconds to 5-10 seconds
weeds can't grow in water now
documented the variables and procs
use the cooldown system
children weeds of the parent node will be destroyed on parent destroyed
Reflectors get USB ports. You can put in an angle and, if the reflector is unlocked, it goes to that angle when the component is triggered.
Fun new uses for circuits! Fun new uses for the trig module!! We love lasers!!!
Apparently, the current sound we know as goon/sounds/effects/spring.ogg is actually this sound, sourced from freesound.org. If you take a look at the licensure screen, you'll see that it's public domain. Creative Commons 0. Wow!