held items actually contains "null" entries by default using just var/I
gets these null items and then tries to wash_obj a null causing a
runtime
Specifying /obj/item will stop the nulls being iterated
* Fixes projectiles not hitting mobs, some refactoring too
* some stuff for projectile can hit target to work with not being ontop of an object
* Yeah let's just refactor bullet_act while we're at it.
* Yeah let's just refactor bullet_act while we're at it.
* Yeah let's just refactor bullet_act while we're at it.
* CanPass returns true to projectiles regardless of hit
* snakecase?
cl coiax
fix: Objects and items can now be inserted into closets, like before.
fix: Fixes a bug which prevented carbons from throwing items.
/cl
Essentially, the original way the insert() proc was structured, I
overlooked an else-if chain that was skipped if something was an item,
because I thought it only existed to type-check the item to access its
flags.
These are the changed lines from the NODROP PR. https://github.com/tgstation/tgstation/pull/42109/files#diff-2b130b854bf2e2a5e76320246520eea4L171closes#42109
* Refactors NODROP flag into TRAIT_NODROP
🆑 coiax
fix: Anti-drop implants can no longer be used to drop objects that they
were not responsible for sticking to a person's hand.
fix: Backfiring with a Barnyard spellbook will now play a spooky horse sound.
refactor: Refactors the way that "NODROP" items work to a new system,
there should be no change in functionality.
/🆑
Various items in the codebase were doing weird hoop jumps in order to
preserve the nodrop flag's state when it also wanted to change it, so I
moved it to a trait system.
I may have gone overboard with the type of unique trait sources, but
those can be changed later. My long term plan is make a general "CURSED"
nodrop origin, which means you can unlock cursed items by being hit with
a bolt of door opening or something. But that's for another PR, this has
no functionality changes, apart from some slightly modified descriptions
on cursed masks.
- Removed a bunch of redundant voice changing code for all the voice
changing animal masks, used two new clothing flags for this purpose.
- Also refactored a bit the animal masks, making new cursed subtypes that play
the sound when created.
* Drop location
🆑 coiax
fix: Ghosts and camera mobs no longer feel if the shower is cold or too hot.
/🆑Fixes#42269.
- In addition, replaces some "the shower" with [src].
cl coiax
fix: Monkey cubes now expand in a running shower!
fix: Slimes now die in running showers.
/cl
Showers now apply 200 water reagent via TOUCH every tick to anything under them.
This doesn't actually add reagent to the atoms it touches though.
Showers now use timers rather than spawn for the mist creation.
Mist isn't recreated every time the shower is turned on and off.
All living mobs are burned by hot showers, not just carbons.
This means that slimes are healed by hot showers.
Showers are now in a separate file.
Shower temperatures now use defines.
Fixes#41773.
This description doesn't really make much sense when people use them for flavor
on stations and sometimes to make entire NT shuttles out of. So it's no longer
evil.
cl Floyd / Qustinnus
tweak: You now have to be naked to get the nice shower moodlet, if you shower with clothes you get a bad moodie
add: Hygiene, you slowly become dirty over time, the more covered in blood you are the faster you will lose hygiene. When you are too dirty you will have a stink overlay. (Hygiene doesn't affect mood currently) It also spawns miasma slowly if you smell like shit.
add: adds NEET and neat traits. NEET's get 20 bucks social welfare extra and like being unhygienic, while neat people dislike being unhygienic and like being hygienic
/cl
This doesn't affect mood so plssss dont strawman in this PR about how I'm forcing you to shower or die or whatever
This PR is mostly visual and will allow for people to judge others for literaly being smelly as hell.
also NEET and neat traits which interact with being smelly. (neat likes hygiene, dislikes lack of it. NEETs like lack of hygiene and get some social welfare (20 bucks))
* You can now click on objects and mobs below flaps and signs
* Update admins.txt
* Update code/controllers/subsystem/vis_overlays.dm
Co-Authored-By: nicbn <nicolas.nattis@gmail.com>
cl XDTM
balance: DNA-damaging methods (changeling draining, mainly) no longer prevent alternative revival methods, but can no longer be circumvented by upgrading DNA scanners.
balance: Any source of husking now prevents cloning on unupgraded cloning scanners, instead of only husking caused by changelings.
balance: Husking now fully prevents revival from several non-cloning methods, including defibrillation, surgery, and strange reagent.
/cl
Why? Consistency! Also, the removal of prescanning/autocloning really simplifies this.
Changeling draining effectively prevents cloning until you transfer the brain to an intact body.
cl coiax
add: Bartenders can now rename the generic area "Bar" to the bar name of their choice with the use of their bar sign. This will rename air alarms, doors and APCs, so everyone knows what you're calling your bar this shift. (The bar sign chosen is also now a statistic that's tracked!)
/cl
Metastation now only has one bar sign.
Bar signs start blank.
Bar signs no longer require bartender ID to repair.
Emagging now only sets the bar sign (and bar name) to the Syndi Cat, rather than changing the Barsign to syndicate access only and making them impossible to repair.
Only machinery that is normally renamed when the area is renamed will have their name changed, this means only doors originally called "Bar" will be renamed.
Area renames are split into separate procs, so we can use their renaming of machinery features.
* Christmas code changes
🆑 coiax
add: Santa can now examine presents to see what's inside.
del: Santa no longer has a mass summon presents spell, because of his
new regenerating bag!
add: Santa's bag regenerates presents as long as Santa is holding it.
balance: You can only find one gift under a christmas tree per round, no
matter how many trees you search.
balance: Santa's teleport does not announce where he's going.
fix: Fixed Santa not having a full head and beard of white hair.
fix: Fixed Santa not being genetically white-haired.
fix: Fixed Concentrated Barber's Aid not growing extreme amounts of
hair.
/🆑
The `box` var has been moved down from `/datum/outfit/job` to
`/datum/outfit`.
Added unlimited christmas tree with presents, for testing.
Santa's restriction against opening presents is now done by
TRAIT_CANNOT_OPEN_PRESENTS. Santa's ability to see inside presents is
done by the TRAIT_PRESENT_VISION, which also determines if Santa's Bag
will regenerate presents every 30 to 60 seconds.
Santa no longer starts with a breath mask and O2 tank, but instead has
an internals box. Santa no longer has a no-access gold ID, he can
teleport from room to room!
Gifts determine what type is inside them on initialization, rather than
when unwrapped.
- Reasoning -
Unlike last year, there are various possible methods of accessing
christmas trees spawners, allowing for an unlimited number of anything
presents. Cutting down the presents to one per round regardless of tree
count will avoid this.
Santa should be able to see what he's giving, because then he can reward
the naughty and nice children with different gifts.
* Missed a merge
* Adds present investigate logs, and visible messages
* Use the body+mind checking of mob.has_trait
* Less globals, more static vars on types; also event renaming
Basic multiZ mob movement procs (Observers can always move)
Open space, showing what things are below it, and everything that entails. No complex support for dynamic generation just yet.
Decide how openspace should look :/
Atoms falling through open space (NO MOB SUPPORT/DAMAGE/ANYTHING YET.)
//CANCELLED FOR ANOTHER PR - [ ] Being able to see upwards? Downwards is going to be handled by open space.
MultiZ tile atmospherics - EDIT: Working demo! https://puu.sh/B7mUs/3f6274740f.mp4
Bugtest the heck out of this trainwreck.
cl coiax
add: Any talented Musician can now use any instrument to lift
spirits, and ease burdens. They can now also use the space piano and minimog
to grant people the Good Music buffs, just like a handheld instrument.
/cl
A living mob with TRAIT_MUSICIAN will now apply the Good Music
status effect to everyone who can hear the music. The buff will
now apply even to players who have disabled instrument sounds.
The Good Music status effect lasts for 6 seconds after the
musician stops playing.
Added STATUS_EFFECT_REFRESH that just refreshes the duration
of a status effect, rather than instancing a new one.
Spiritual successor and extension to #17798, an almost entire rebuild of the SQL ban system backend and interface.
Bantypes are removed per #8584 and #6174. All bans are now 'role bans', server bans are when a ban's role is server. Admin bans are a column, meaning it's possible to ban admins from jobs.
Bans now have only an expiry datetime, duration is calculated from this when queried.
unbanned column is removed as it's superfluous, checking unban status is now done through checking unban_datetime. unban_round_id column added. Each ip and computerid columns rearranged so ip is always first, like in other tables. Bans now permit a null ckey, ip and computerid.
Ban checking is split into two procs now is_banned_from() does a check if a ckey is banned from one or more roles and returns true or false. This effectively replaces jobban_isbanned() used in simple if() statements. If connected a client's ban cache is checked rather than querying the DB. This makes it possible for a client connected to two or more servers to ignore any bans made on one server until their ban cache is rebuilt on the others. Could be avoided with cross-server calls to update ban caches or just the removal of the ban cache but as is I've done neither since I think it's enough of an edge case to not be worth it.
The second proc is is_banned_from_with_details(), this queries the DB for a role ban on a player's ckey, ip or CID and returns the details. This replaces direct queries in IsBanned.dm and the preferences menu.
The legacy ban system is removed.
The interfaces for banning, unbanning and editing bans have been remade to require less clicking and easier simultaneous operations. The banning and jobban panel are combined. They also store player connection details when opened so a client disconnecting no longer stops a ban being placed.
New banning panel:
Key, IP and CID can all be toggled to allow excluding them from a ban.
Checking Use IP and CID from last connection lets you enter only a ckey and have the DB fill these fields in for you, if possible.
Temporary bans have a drop-menu which lets you select between seconds, minutes, hours, days, weeks, months and years so you don't need to calculate how many minutes a long ban would be. The ban is still converted into minutes on the DB however.
Checking any of the head roles will check both of the boxes for you.
The red role box indicates there is already a ban on that role for this ckey. You can apply additional role bans to stack them.
New unbanning panel:
Unbanning panel is now separate from the banning panel but otherwise functionally the same.
Ban editing panel:
Actually just a modified banning panel, all the features from it work the same here.
You can now edit almost all parameters of a ban instead of just the reason.
You can't edit severity as it's not really part of the ban.
The panels have been tested but I've not been able to get my local server to be accessible so ban functionality isn't properly confirmed. Plenty of testing will be required as I'd rather not break bans.
cl
admin: Ban interface rework. The banning and unbanning panels have received a new design which is easier to use and allows multiple role bans to be made at once.
prefix: Ban search and unbanning moved to unbanning panel, which is now a separate panel to the old banning panel.
/cl
* Tendrils are now structure based
* Re-adds tendril wipe achievement
neatens up ash walker variables
gets rid of unnecessary variables in hivelord
* Marks spawner children as admin spawned
* Passes thrownthing to hitby
* Items now also pass thrownthing
* No longer uses default arguments
Also fixes bananium shield
* Adds more arguments to hitby calls
* Standardises throw_impact
* Clears up some loose ends
* Adds back wacky comment
* Reinstates can_push=FALSE on bananium shield
cl XDTM
add: You can now pay for cargo orders from your account with the cargo requests console. Credits will be detracted from the requester's account instead of the cargo budget. A 10% handling fee on top of the order will be paid to the cargo department budget.
add: Cargo employees must still accept the order for it to be delivered.
add: The delivery will arrive in a locked crate that can only be opened by an id with the paying bank account.
/cl
If you're wealthy, why should you waste your time waiting for cargo to get money? Pay for the stuff yourself; the quartermaster won't have to worry about their budget and will likely just put the order in the next shipment.