* Implements a Demolition Modifier variable to items, affects damage vs structures and robots. (#66967)
Adds a modifier variable which can be used to increase or decrease a given items damage to structures, machinery, vehicles, and robots (including cyborgs, simple-bots, and anything else with the MOB_ROBOTIC biotype)
* Fixes attacks on mech equipment ignoring armor / melee damage, also fixes mech equipment not being disabled at 0% health, also also unit tests mech armor (#67411)
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Machinery attack_paw() gives feedback for no damage attacks (#65306)
* Machinery attack_paw gives feedback for no damage attacks
* I am growing stronger
* Makes messages consistent and read better
- Cleans up shitty code
* hmm
* Adds it to hulk object attack message
* Machinery attack_paw() gives feedback for no damage attacks
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Adds 2 new signals, adds pre/postattack_secondary signals to circuit signal handler presets (+a proccall component fix) (#62233)
Adds COMSIG_ITEM_AFTERATTACK_SECONDARY and COMSIG_MOB_ITEM_AFTERATTACK_SECONDARY signals, which are both called by item/proc/afterattack_secondary.
Adds COMSIG_ITEM_PRE_ATTACK_SECONDARY and COMSIG_ITEM_AFTERATTACK_SECONDARY to the list of circuit signal handler presets.
The proc call, set var, and spawn atom components will resolve any weakrefs passed to them in their parameter port, seeing as the list literal component now converts datums into weakrefs.
* Adds 2 new signals, adds pre/postattack_secondary signals to circuit signal handler presets (+a proccall component fix)
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
* Fix grammar when attacked by an unknown assailant (#61103)
* Fix grammar when attacked by an unknown assailant
Co-authored-by: esainane <esainane+github@gmail.com>
* Adds a kneecapping element and adds that very element to baseball bats.
* Update signals.dm
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Modifies right click logic so that it is not the same priority as modifier keys. (#59656)
Strips out the existing right click code - Due to the myriad of ways right clicking has been implemented, dedicated signals and procs for right clicking without modifiers are fundamentally incompatible with our system of primary and secondary attacks.
Adds additional signals to attacking code. These signals allow atoms to cancel the attack chain early on secondary attacks, or override the standard procs and not send signals to prevent any undesired behaviour from signal handlers.
Items that used RightClick procs have been converted to attack_hand_secondary.
The slaughter demon, having its own set of snowflake code as poor OOP principles have been applied in UnarmedAttack() procs with lacking calls to parent procs and arbitrary redefinition of behaviour, checks for a right click in its own UnarmedAttack() and performs a bodyslam off that.
Storage components now hijack the secondary attackby stage via signals to handle their opening and closing shortcuts on right click. When you right click a storage component equipped item with an object in your active hand, the object has an opportunity to perform its logic in pre secondary attack code and cancel the attack chain. If it does not cancel the attack chain in pre-attack, then the storage component takes over for attackby and, if possible, opens the relevant inventory and ends the attack chain.
The forensic scanner is a proof-of-concept of this working in action. With its scan logic moved from afterattack code to pre attack code for right clicking, right clicking with the scanner will now perform a scan where previously one was impossible. Left clicking still does what it always does - Scans at the very end of the attack chain.
The logic still isn't perfect - For example, you still can't attack containers in melee even in combat mode (you'll either open them or put your weapon into them regardless of which option you choose) - But this is a better setup overall which allows for items to at least override this behaviour in pre-attack if needed.
* Modifies right click logic so that it is not the same priority as modifier keys.
* a
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
Co-authored-by: Gandalf <jzo123@hotmail.com>
Right-clicking a reagent container in your active hand will pick the previous transfer amount instead of the next one
Adds an attack_self_secondary proc which allows for different interactions when right-clicking things in your active hand
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Adds deflection messages for no damage attacks against objects (#58873)
* Adds deflection messages for no damage attacks
* Changes the addition to ", which doesn't leave a mark" instead
* Adds deflection messages for no damage attacks against objects
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
* Moves the plant analyzer chem mode to right click + lets you read out a tray's chemical contents
* Update growninedible.dm
* Update grown.dm
* Create grown.dm
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* Fix pre_attack (#56798)
Someone passed in the thing being used as the target, this broke many things. Bad moth :newspaper2:
* Fix pre_attack, fixing RPEDs
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* Add locking into portals with right click on hand tele, refactor hand tele code, add pre_attack_secondary (#56700)
Refactors hand tele code with better variable names, splitting procs, fixing C&P code, etc.
Adds pre_attack_secondary, the right click version of pre_attack.
Adds a new alternate function to hand teles, which will reopen the last location you opened. Works based off locations, not turfs. For example, right clicking after locking in "None (Dangerous)" will not teleport you to the same place.
* Add locking into portals with right click on hand tele, refactor hand tele code, add pre_attack_secondary
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* Renames the _alt attacks to _secondary for clarity (#56752)
* Renames the _alt attacks to _secondary for clarity
Co-authored-by: Rohesie <rohesie@gmail.com>
* Add alternate attack procs (#56663)
Adds alternate attack procs for right-clicking. Updates the gunpoint code to use this new proc as an example (though I suspect this is being changed soon, so oops).
This makes it easier to add new behavior to right click, which we should be doing.
* Add alternate attack procs
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* Fix zero damage items not showing explicitly set attack verbs in chat (#55509)
Borked exactly five months ago by #52890.
This will close#55219.
* Fixing zero damage items with set attack verbs not showing chat messages anyway.
Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
* unfucks hitting simplemobs with melee attacks (sorry!) (#55269)
Adds a single "!" to the code I added (in #55023) to make it not make most simplemobs immune to being hit with most melee weapons.
* unfucks hitting simplemobs with melee attacks (sorry!)
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Makes the usage of force_threshold in the attackby() proc for simplemobs consistent with the way it's used everywhere else (#55023)
## About The Pull Request
Namely, this means that a simplemob's immunity to melee attacks of force X or lower now accounts for that simplemobs damage multipliers to various damage types. It also means that simplemobs with a force_threshold of X are now immune to melee attacks of force X or lower, not melee attacks with a force less than X (<= vs. <).
## Why It's Good For The Game
**tldr;
This make the code for simplemob "your stick must be this strong to deal damage" thresholds more consistent.**
Xenomorphs, xenomorph larvae, barehanded monkeys, slimes, and simplemobs in general all multiply the damage of their attacks by the relevant damage resistance multiplier BEFORE checking it against the force_threshold of the simplemob they're attacking, and also check to see if their damage is <= the force_threshold of the simplemob they're attacking (instead of requiring it to be strictly < the force_threshold of the simplemob they're attacking).
As for balance concerns, while this will affect juggernauts *slightly* (as they'll now be immune to force <= 10 melee weapons instead of just force < 10 melee weapons), I'm not too worried about that. What I _am_ worried about is blobbernauts, who, after this change, will be immune to brute melee weapons of force 20 or lower (due to their 0.5 brute damage multiplier). You will, of course, still be able to welder them just as effectively as you could before, but I'm worried that this could make blob-aligned blobbernauts even stronger than they already are.
* Makes the usage of force_threshold in the attackby() proc for simplemobs consistent with the way it's used everywhere else
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
* Standardizes attack chain signal returns and fixes a tk bug (#54475)
The attack chain is a bit of a mess, and the introduction of signals hasn't helped in simplifying it.
In order to take a step into untangling this, I re-ordered the attack signals to no longer be by source type and instead to be grouped more modularly, as they are all members of the attack chain and function similarly. They all share the trait of potentially ending the attack chain via a return, but had several different names for it. I joined it into one.
Additionally, fixed a tk bug reported by @ Timberpoes by adding a signal return check at the base of /mob/proc/RangedAttack
Lastly, removed the async call of /datum/mutation/human/telekinesis/proc/on_ranged_attack, which was added as a lazy patch to appease the linter complaining about a sleep on a signal handler (namely in /obj/singularity/attack_tk). Fixed the problem using timers.
Also cleaned some code here and there.
* Standardizes attack chain signal returns and fixes a tk bug
Co-authored-by: Rohesie <rohesie@gmail.com>
* Personalized combat messages part 2 (#52890)
Adds more "personalized" combat messages for all participants in a fight: the attacker, the victim and the spectators
* Personalized combat messages part 2
* Update misc.dm
Co-authored-by: kingofkosmos <riki.sundberg@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
* pierce the heavens
* starts doing projs
* continue pierce
* before armor
* before sharpness redefine
* rename sharp defines, before further implementation
* finishing undoing atk_type back to sharpness
* neatens up sharpness defines, FALSE -> SHARP_NONE
* more piercing, removes brute damage bleed, bubblegum no longer wound
* starts letting embeds get in on the fun
* half with embed
* work on dismembering
* continued embed work
* more moving bandaging to limbs
* more dismemberment work
* removing embed pierce stuff
* tweaking bullets
* more docs and work on dismemberment
* spans, piercing, guns
* dismemberment and scar fixes
* bee changes
* bullets embedding
* more bullet and dismember work
* dismemberment, surgery, piercing, formaldehyde,
* pleases travis
* pierce smite
* nicer on blood
* Auto stash before rebase of "tgstation/master"
* more neatening
* wounds only consider up to 35 damage, wounds on l6 and 762
* updates hulk
* balance
* defines
* lower slug to 50 brute to accommodate wounds
* adds differentiation for having flesh/bones/both in mobs
* moves scar descs to json, renames organic_state
* excises removed healing skill
* fixes logs, inconsistencies, some balance changes
* untab
* slight compress
* a
* kills pointed global list
* dmdoc
* halfway through roh
* finishes roh review
* okay NOW i finished roh's reviews
* roh roh roh your boat
* gently down the stream
* global lists
* list ops, fix scanner for bone gel improvised fix
* travis moment
* sounds added and moved
* pellet clouds can join the fun fully, slight gun balancing for wounds
* doc moment
* unconflicts myself
* update hulk
* Update code/_onclick/item_attack.dm
Co-authored-by: Rohesie <rohesie@gmail.com>
* crying ascii face
* final rohview
* oops
* final final
Co-authored-by: Rohesie <rohesie@gmail.com>
* Fixes the 50% time dilation on every server by removing demos, an admin only tool that is the laggiest thing on the planet for incredibly little gain.
* appeases the linter