Source of the bug: I changed the red screen to use BLEND_MULTIPLY. Due to a mistake I made, the white part in the middle was fully opaque, but since it was a multiply blend, that didn't matter. Turns out in software mode, MULTIPLY defaults to OVERLAY or something, so users in software mode were seeing a fully opaque, non-blended white screen rather than a slightly red tint. Nasty.
Also multiply was stupid. The red was barely noticeable in many cases. Against black like space or things you couldn't see, the red literally didn't even display. No idea why I was so insistent on using this.
Solution: Instead I'll use BLEND_ADD which works just fine in software mode. However, ADD can't add blackness, so I have to have a second layer of darkness on the edges. Also I made the red on the so real blood screen brighter and more intense because it looked kind of dumb. This will probably need to be toned down or even reverted but that's ok.
- Thrown items play throwhitsound on impact. If no throwhitsound is defined, they play hitsound instead. If that isn't defined, they play genhit.ogg. The latter fixes \#2508. The volume of the sound is dependant on the item's throwforce and/or weight class.
- Adds 15 throwforce to the fireaxe, which previously had only 1.
Weapons that do no damage play a tap sound, except for the bike horn and banhammer.
Adds a different attack message for forceless attacks. It says tapped or
patted on instead of attacked in.
Adds force zero check to armour before attempting to block attacks.
Adds hitsounds to the welder, lighter, matches, cigarettes, energy sword and energy axe for when they're on and off.
Adds 5 force to the lighter when it's lit. Same as when you accidentally burn yourself lighting it. Adds a hitsound and the correct damage type to the lighter.
Adds hitsound volume scaling based on the weapon's force and its weight class. Adds tap sound scaling based on a weapon's weight class.
Removes boldness from item attack messages on non-human mobs. The attack is still bolded for the player
controlling the mob.
Adds a force check to blood spurts when attacking non-human mobs. If the weapon doesn't have a force, no blood will come out.
Adds adminhelp.ogg as the banhammer's hitsound with Cheridan's permission.
Adds a much needed period to the catatonic human examine message.
Makes the activation and deactivation sounds of toy swords, energy swords and energy shields quieter. What an earsore.
Makes description, item_state and name of matches that have burned out on their own consistent with those put out by the player. Changes match, cigarette and lighter attack verbs and forces based on whether they're lit or not.
Fixes a bug that allowed players to light cigarettes with burnt matches.
Names lit cigarettes and children of cigarettes lit [name].
Fixes a bug with the energy blade that kept it at weight class 5 after it was deactivated.
Changes the welder out of fuel message slightly to be less fragmented.
Removes dead air from most of the weapon sound effects used in this pull to make them more responsive. In other words, the fire extinguisher sound will play a lot sooner after you click than before. Equalised their peak volumes to all be -0.1dB and in an attempt to make altering volumes based on force more consistent.
Thank you @YotaXP for help with the item_attack.dm attack messages.
Thank you @optimumtact for help with code for testing item_attack volumes.
Thank you @Giacom for help with the code for scaling hitsound and tap sound volume by hitforce.
Thank you @Tastyfish for telling me why my proc wasn't working.
Thank you to anyone else on #coderbus who helped me who I've forgotten to mention.
If throwhitsound isn't defined, a thrown item calls the hitsound
instead. If that isn't defined, no sound is played.
Circular saw now calls pierce.ogg as its throwhitsound instead of its
hitsound.
Added get_inactive_modules and get_usable_modules procs to use while looping through the cyborg's modules.
The cyborg's storage screen will now shrink if there is an empty row.
Added a new on_emag proc for modules, which is called when the module is emagged. Miner borgs use it to replace their borg drill for a diamond one.
Fixes a runtime where there is no client to update the hud.
Fixes a bug where if you emag a cyborg with no module and when they choose a miner they do not receive their diamond drill.
When you touch an item, to spread the blood, it would take the "bloody_hands" to 0; which is checked if true while you wash your hands. I limited it to only go down to 1, so it will still be true unless you wash your hands.
Fixed an issue where blood_DNA was being cleared before the blood_hands variable was being set to 0. Now you can properly hide your bloody hands with gloves and when you take them off the hands will still be bloody.
Removed an unused variable.
Set the bloody_hands_mob to null where it was appropriate.
The amount of blood you can transfer to other items, when you touch them, will be a little random for variety.
Revive() will now heal your hallos damage.