Fixes unscrewing a broken computer only dropping one glass shard instead of two.
Fixes AI holopad, recharger, keycard authentication device, reagent_dispensers reagentgrinder, and APC not being attackable.
Fixes APC cover knockdown being random, it now uses the take_damage() proc, which also allows animals and xenos to knock down the cover of a broken apc.
This contains the changes to item_attack.dm
Obj/attackby() now follows a similar structure as mob/living/attackby. It calls attack_obj() (like attack() but for obj) which calls attacked_by (just like attack() does)
The use of the NOBLUDGEON flag changes a bit, it is now used to signify the item cannot be used as a melee weapon at all. No attack animation, no attack message. I've given this bitflag to many items that have an afterattack() so as to not both attack and do the special action (among those items: the rcd)
There's also the code changes to attacking machines: attacking any machine now give a proper message and a sound. And with this, I made more machines breakable (using a health var and the very little used BROKEN stat). Most notably, tables can now be attacked when on harm intent and be destroyed.
The newly destroyable machines have a take_damage() proc used by all sorts of attack (weapon, xeno, animal, hulk, mech melee, gun projectile, thrown items).
There's some more stuff in there, see the PR's description and comments.
These are the files with just tiny tweaks. Mostly modify an object's attackby so it does "return ..()" instead of "..()".
If there are other things in this commit, the PR's description will explain them.
This setup allows subsystems to pause themselves until next mc fire if they are about to go over a tick, and resume on the next mc tick
It also makes it so we prioritize running subsystems we skipped because there wasn't enough time in the current tick to run them based on their avg tick usage. (as well as subsystems paused mid way thru)
Adds a macro for adding this to non-mc procs. just drop it in the loop. There is a define version as well for if checks if you want to know if you just slept to avoid lag.
This is all inside #if DM_VERSION defines, so once i test that 509 still works to compile/test this should be good to merge
Strong blobs are now much more resistant to brute damage. Don't even bother hitting them with a wrench.
Tweaks blob reagents;
Removes Ripping Tendrils and Draining Spikes
Sporing Pods now does much less damage, and is less likely to produce spores when killed
Replicating Foam now takes increased brute damage and when expanding from damage, will not expand again
Energized Fibers no longer heals when hit with stamina damage, and is instead immune to the tesla
Boiling Oil takes damage from extinguisher blasts. Its blobbernauts, however, do not
Flammable Goo takes 50% increased burn damage
Regenerative Materia, Hallucinogenic Nectar, and Envenomed Filaments each do less toxin damage
Poisonous Strands applies its damage over a longer period of time
Explosive Lattice now takes much higher damage from fire, flashbangs, and the tesla
Reactive Gelatin now has a lower minimum damage
Electromagnetic Web takes full brute damage, lasers will now one-hit normal blobs, and the death EMP is smaller
Cryogenic Liquid does less burn damage
Pressurized Slime does less brute damage
Adds deconstruct structure helper
Moves chair sprites from objects.dmi to chairs.dmi
Fixes check shields passing proper flags on unarmed attacks
Makes stools and chairs able to be picked up
Cable coils will only be built in stacks of 30, at maximum.
Reduced cable coil cost to 1/4 to be more in line with other tool costs.
Reduced cable coil cost to 1/4 to be more in line with other tool costs.
Fixed it not compiling?
Finally got it to compile
Fixes bad code
removed unnecessary /var
Added maxstack var to define custom stack sizes for things
Allowed the autolathe to use custom stack sizes.
Adds correct maxstack values to various stackable objects