Converts most spans into span procs. Mostly used regex for this and sorted out any compile time errors afterwards so there could be some bugs.
Was initially going to do defines, but ninja said to make it into a proc, and if there's any overhead, they can easily be changed to defines.
Makes it easier to control the formatting and prevents typos when creating spans as it'll runtime if you misspell instead of silently failing.
Reduces the code you need to write when writing spans, as you don't need to close the span as that's automatically handled by the proc.
(Note from Lemon: This should be converted to defines once we update the minimum version to 514. Didn't do it now because byond pain and such)
About The Pull Request
Scrubs those filthy single letter variables out of surgery and organ code.
Replaces a few 0s and 1s with FALSE and TRUE where relevant
Normalises and cleans up surgery step lists and surgical implements lists.
Replaces a whole lotta for loops with for x as anything in y lops
This is my first PR (upstream anyway) so I encourage you to treat my code with as much confidence as I treat it, which is to say none, because there's a strong chance I've totally broken everything.
But it compiles!
Why It's Good For The Game
code improvement, follows contributing guidelines.
Changelog
🆑 FlamingLily
code: Cleanup of surgery and organ code
/🆑
About The Pull Request
This PR removes intents and replaces them with a combat mode. An explanation of what this means can be found below
Major changes:
Disarm and Grab intents have been removed.
Harm/Help is now combat mode, toggled by F or 4 by default
The context/verb/popup menu now only works when you do shift+right-click
Right click is now disarm, both in and out of combat mode.
Grabbing is now on ctrl-click.
If you're in combat mode, and are currently grabbing/pulling someone, and ctrl-click somewhere else, it will not release the grab (To prevent misclicks)
Minor interaction changes:
Right click to dissasemble tables, racks, filing cabinets (When holding the right tool to do so)
Left click to stunbaton, right click to harmbaton
Right click to tip cows
Right click to malpractice surgery
Right click to hold people at gunpoint (if youre holding a gun)
Why It's Good For The Game
Intents heavily cripple both the code and the UI design of interactions. While I understand that a lot of people will dislike this PR as they are used to intents, they are one of our weakest links in terms of explaining to players how to do specific things, and require a lot more keypresses to do compared to this.
As an example, martial arts can now be done without having to juggle 1 2 3 and 4 to switch intents quickly.
As some of you who saw the first combat mode PR, the context menu used to be disabled in combat mode. In this version it is instead on shift-right click ensuring that you can always use it in the same way.
In this version, combat mode also no longer prevents you from attacking with items when you would so before, as this was something that was commonly complained about.
The full intention of this shift in control scheme is that right click will become "secondary interaction" for items, which prevents some of the awkward juggling we have now with item modes etcetera.
Changelog
cl Qustinnus
add: Intents have been replaced with a combat mode. For more info find the PR here: #56601
/cl
* works on my machine
* saving is a sin 1% of the time!
* works... on... my... machine...?
* i can't test this but it worked on my machine too
Co-Authored-By: Bobbahbrown <bobbahbrown@gmail.com>
* more testing /w TW
* caps XP gain (per iteration) for TW
* no skinnies
Co-authored-by: Bobbahbrown <bobbahbrown@gmail.com>
* b
* helps to commit huh
* math is hard
* parenthesis are even harder
* Update code/datums/skills/_skill.dm
Co-Authored-By: Bobbahbrown <bobbahbrown@gmail.com>
* removes efficiency... or efficacy 😏
* baby sha... i mean files
About The Pull Request
Adds 'notice' span class to all visible_messages which had no span class, making all those black messages blue.
Why It's Good For The Game
This should help differentiate action-messages from talking-messages in the chat. More actions will be blue, thus black talking-messages should pop out more.
About The Pull Request
Part of #44440
Surgery now gives detailed description to the surgeon and anyone within one tile of distance, and more vague or ambiguous descriptions to the patient and anyone further away. This can lead to a surgeon being able to perform a brainwashing in place of a brain surgery with nobody being the wiser, or implanting a different organ than the one agreed on, and so on.
Changelog
cl
add: Surgery steps are now shown in detail only to the surgeon and anyone standing adjacent to them; the patient and people watching from further away get a more vague/ambiguous description.
/cl
Currently we have all the basic surgeries listed without capital
letter, and all the researched ones with. This bring them all in line.
Also changed the name of a step in revival surgery to make it more
intuitive.
* Refactor several log lines to use datum_info_line and atom_loc_line
* Add default return strings from datum_info_line and atom_loc_line
* Add parentheses around atom_loc_line data
* Change more logs to use atom_loc_line
* Add check in atom_loc_line for turfs to avoid calling get_turf on them
* Re-add removed 'at'
* Replace datum_info_line with key_name and atom_loc_line with loc_name
* Refactor logging functions
* Avoid double-logging self-interactions
* Fallback to simple stringification if all else fails in key_name()
* Rewrite muscle spasm logging to use log_message
* Standardize logging of martial arts
* Tweak individual logging panel look
* Fix individual logging panel source
* When I typed || I really meant &&
* Fix Telecomms logging always showing client logs in the panel
* Reverts addition of buggy ownership log to panel
* Remove colon
* Fix missing log_directed_talk tag
* Add warning for missing type in log_direted_talk
* Change warnings to stack_traces
* Add square brackets around fallthrough key_name() case to help parsing
* Allow atom arguments/src in log_*() functions
* Change log_combat call with null argument to log_message
* Change mecha types' log_message() arguments to match atom and mob version
* Add key_name() case for atoms
* Fix resist_grab() unsetting pulledby before log_combat gets a chance to use it
* Fix log_globally logic
* Add logging for hitting objects with items
* Move log_combat() to atoms.dm
* Use utility functions for object stringification in log_combat()
* Use utility functions for object stringification in log_combat()
* Add missing logs for interacting with display cases
* Rewrite log_combat() comment
* Add missing space in log_combat()
* Add logging for hitting grilles barehanded
* Add missing ..()
balance: Limbs no longer need to have full damage to be dismemberable, although more damage means higher dismemberment chance.
balance: Damaging limbs now only counts as 75% for the mob's total health. Bleeding still applies normally.
add: Limbs that reach max damage will now be disabled until they are healed to half health.
add: Disabled limbs work similarly to missing limbs, but they can still be used to wear items or handcuffs.
Fixes#38445
Always felt odd how reaching max damage on a limb had no consequence. Now it does.
Currently i only added effects for disabling arms and legs; "breaking" heads and torsos has no effect as of now.
* Adds tool_behaviour support to construction datums (mech construction)
* Adds tool_behaviour support to wire datums
* Adds tool_behavior support to surgeries
* Adds tool_behavior support to crafting
* New proc, to be used for checking tool qualities in hands
* Improves tool quality support on wires
Full augment sets on the left, partial mix/match on the right.
This PR aims to make augmenting slightly more interesting than just turning your body grey, while also begin reminiscent of the cyborg parts that are actually used in the process.
Using the augment manipulator now found in robotics, one can insert a part and custom fit it to one of three different styles (security, engineering, and standard). Mix and match if you so choose, or make a full set for maximum style.
* Fixes invisible surplus right leg
* New argument for change_bodypart_status
* I am not an admin
* Changes change_bodypart_status arguments to boolean
* Moves checks for psuedolimbs(chainsaws, armblades) into dismemberment
* Introduces psuedoparts for limbs, which some surgeries don't work on. Prevents silly things like putting a toolset in an armblade.
* Spelling, TRUE/FALSE defines, and removal of unnecessary setter.
🆑 XDTM
tweak: Implanting chainsaws is now a prosthetic replacement instead of its own surgery.
add: You can now implant synthetic armblades (from an emagged limb grower) into people's arms to use it at its full potential.
del: Chainsaw removal surgery has been removed as well; you'll have to sever the limb and get a new one.
/🆑
Reason for adding
Makes the surgery code more consistent, without a snowflake surgery for chainsaws. This also gives a legitimate use for synthetic armblades, which were otherwise just a much shittier and harder to get circular saw.
* - I rearranged X_defense.dm mob files, more damage_procs.dm.Here's what's inside:
* X_defense.dm: is for the procs of attacks onto the mob, all the XXX_act() proc (things happening to the mob), as well as protection check and get procs (armor, ear prot, projectile dismemberment)
* damage_procs.dm: actual damage procs like adjustBruteLoss() getfireloss, any proc that handles damaging.
- some bugfixes with gibspawner effects.
- monkey's bodyparts can be dismembered and are used to create its icon.
- brains are no longer carbons.
- all carbon have bodyparts that can be dropped when the mob is gibbed.
- adminspawned bodyparts now have a default icon.
- robotic parts are now a child of bodyparts.
- health analyzer on alien/monkey shows damage on each limb
- added admin option to add/remove bodyparts for all carbon (instead of just remove on humans)
- Fixes keycheck message spam for janicart and all when trying to move.
- Fixes bug with buckling to a scooter while limbless.
- removed arg "hit_zone" in proj's on_hit() because we can already use the def_zone var (where hit_zone got its value)
- Fixes mob not getting any damage when hit by a projectile on their missing limb, despite a hit message shown). carbon/apply_damage() now when we specify a def_zone and the corresponding BP is missing we default to the chest instead of stopping the proc. Consistently with how human/attacked_by() default to its attack to chest if missing limb.
- Fixes mini uzi icon when empty and no mag (typo).
- I renamed and changed a bit check_eye_prot and ear prot
- renamed flash_eyes to flash_act()
- I made a soundbang_act() similar to flash_act but for loud bangs.
- added a gib and dust animation to larva.
- husked monkeys
- no damage overlay for husk or skeleton.
- damage overlay for robotic limb now.
- no damage overlay when organic bodypart husked.
- one handed human with a bloody hand still get a bloody single hand overlay.
- fix admin heal being unable to heal robotic bodyparts.
- slightly touched robotic bodypart sprites (head one pixel too high)
- Fixes 18532 "beheaded husk has hair".
- Fixes 18584 "Ling stasis appearance bug"
- no more eyes or lipstick on husks.
- can remove flashes/wires/cells from robot chest and head with crowbar.
- Fixes not being able to surgically amputate robotic arm/leg.
* More merge conflict fixes and adding the new files I forgot to add.
* of course I forgot birdstation
* More typos and stuff I forgot to undo.
* Fixing a typo in examine.dm
Removing an unnecessary check.
Making admin heal regenerate limbs on all carbons.
Monkey-human transformation now transfer missing limbs info and presence of a cavity implant.
NODISMEMBER species can still lack a limb if the mob lacked a limb and changed into that new species.
Changeling Regenerate ability now also regenerate limbs when in monkey form. (and remove some cryptic useless code)
* Fixing more conflicts with remie's multihands PR.
* Fixes runtime with hud when calling build_hand_slots().
Fixes lightgeist healing not working.
Fixes null.handle_fall() runtimes with pirate mobs.
Fixes typo in has_left_hadn() and has_right_hand().
* Derp, forgot to remove debug message.