Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds Combat mode, rclick functionality #11899

Open
wants to merge 81 commits into
base: master
Choose a base branch
from

Conversation

Tsar-Salat
Copy link
Contributor

@Tsar-Salat Tsar-Salat commented Nov 18, 2024

About The Pull Request

This adds right-click functionality through the addition of the combat mode system.

Changes are as listed:

Major Codebase changes

  • Disarm and Grab Intents have been removed.
  • Diametric intents (harm/help) are not combat mode. Toggled by F or 4.
  • Context menu now appears on shift+rclick (like examine)
  • Disarm functionality has now been moved to rclick, whether CM is active or not
  • Grabbing has been centralized in its hotkey ctrl-click

Functional Item changes

  • Ninja Dash now activates via right-click
  • M90 grenade launcher activates through right click rather than toggle
  • Health analyzer now scans health with left click, chemicals with right click
  • Jumpsuits change suit sensors through right-click
  • Airlocks are now welded through rightclick
  • Reagent splashing is done through right click
  • RCDs deconstruct through rclick
  • Syringes now lclick to inject, rclick to draw
  • washingmachines now use rclick to start
  • stack splitting now uses rclick
  • hookshotguns use rclick instead of toggle
  • deconstructing windows, tables, chairs is done through rclick with appropriate tools
  • secure lockers are now (un)locked through rclick
  • gas canisters are repaired on lclick and deconstructed on rclick
  • right clicking a reagent container will now set it to its previous transfer amount
  • Screwdrivers can now be put in autolathes through lclick, maintenance through rclick
  • girders can be built by rclicking a turf with a sheet of iron (allowing building multiple at the same time)
  • Most previously rotatable structures or machines can now be rotated through mouseclick. Left for Counterclockwise, right for clockwise.
  • closet wrench actions moved to rclick
  • chemistry machines use rclick to add/remove their beakers
  • Kinetic Crusher projectiles are now fired on rclick
  • ID Painter now lets your remove IDs/PDA through rclick
  • PKA modkits can now be removed through a radial on rclick
Ports:

(not rclick but rclick needed)

Rclick:

Why It's Good For The Game

Intents are by-and-large not a very well written system. The "grab" intent, for instance, has had a hotkey for years on ctrl-click.

The large goal of this PR is to address two fundamental issues:

  1. The current intent check system, which almost entirely relies on if a character is or is not on help or harm mode, to determine that players intention.
  2. The clunkiness of actual systems that DO fully utilize the intent system

For the first issue, nearly all of our intent checks in the codebase are just diametric checks for if a player is in harm or help mode. Grab is only checked when checking grab_state, which is attached to attack_hand, otherwise you can basically forget about the intent and just use the ctrl hotkey.
Disarm is in an even worse boat, its basically Harm Jr. in that players in combat will primarily be on harm while in combat and be spam-switching between the two only for the purpose of trying to stun them on a wall, table, or mob.

For the second issue, the most notable use of intents is martial arts. This is not to the boon of martial arts either, as the combination of moves that you have to do mid-combat is not very well done.

Allowing players to free up their mouse instead of the specific intents gives coders a lot more room and buttons to work with, and allow simplification for needlessly complex tasks like martial arts or construction.

Testing Photographs and Procedure

Screenshots&Videos

rclick welding

dreamseeker_3glRJS1Dp3.mp4

lclick/rclick syringes

dreamseeker_NzvFfxDE1k.mp4

grab states

dreamseeker_zvpHi0bMQQ.mp4

RCD rclick deconstruction

dreamseeker_Nez9ejXPHj.mp4

generic structure deconstruction

dreamseeker_uBsH8AheX2.mp4

CW/CCW mouse rotation

dreamseeker_LJmxLX3m8t.mp4

rclick girder construction

dreamseeker_8bMhahRAPx.mp4

Changelog

🆑 rkz, Qustinnus, Mothblocks, TJatPBnJ, IndieanaJones, KathyRyals, Arkatos, norill, Fikou, dragomagol, SgtHunk, JJRCop, ninjanomnom, cacogen, Timberpoes, LemonInTheDark, Ghommie, Sealed101, Ghilker, TheBonded, Timothymtorres, CameronWoof, ArcaneDefence, BurgerLUA, OneAsianTortoise, vincentiusvin, itseasytosee, AnturK, GuillaumePrata, Timberpoes, Ghommie, zxaber, Gpeckman
add: Adds combat mode
refactor: refactored syringe code to use flags
tweak: clicking on the turf of a airlock while combat mode is off will now close the airlock. No more pixel hunting!
balance: buffs to hook shotgun in addition to rclick functionality
code: renames RemoveComponent, component destroy will no longer runtime when parent is null
refactor: refactored simple rotation component
fix: fixed abandoned crates to not try to kill you if you perform actions on them AFTER they are unlocked
code: introduced variable weapon attack speed. No weapon utilizes this yet but admins can now varedit items to attack faster/slower.
code: unit tests reagent container transfer amounts
code: unit tests attacking people
/:cl:

Copy link

github-actions bot commented Dec 7, 2024

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@ro5490
Copy link
Contributor

ro5490 commented Jan 19, 2025

Possibility to have shift-rightclick and rightclick to be swapped around as a preference?

@PowerfulBacon
Copy link
Member

PowerfulBacon commented Jan 19, 2025

1:
You cannot aggro-grab monkeys

2:

Possibility to have shift-rightclick and rightclick to be swapped around as a preference?

It's possible but this would be an absolutely horrendous and unusable control scheme, since it would mean all secondary actions would end up becoming shift-right click which will only get worse as more secondary actions get added. It would be so unusable, that I see no point to even having it as a preference.

3:
I'm not sure how big of a fan I am of right click to pick up items and repeat the left-click action. Duplicating the command just means you accidentally left-click on things while trying to test if something has a right click interaction. Especially while getting used to combat mode, it will be common to right click items which results in accidental pickups.

For example, right clicking on an iron rod will pick it up, but right clicking on a box will open its inventory. Making right click default to left click actions if there are no right click actions results in a lot of inconsistent controls and I don't see it being frequent that players will be using right click for primary actions.

@XeonMations
Copy link
Contributor

You're unable to get out of a neck grab. Ever.

@XeonMations
Copy link
Contributor

You cant use your PDA to open firelocks anymore. Left and right click just smash your PDA against the firelock. Tested with combat mode on and off.

You also cannot open firelocks with IDs anymore. Tested with combat mode on and off.

@XeonMations
Copy link
Contributor

You are unable to shove monkeys with right click with combat mode disabled.

You are unable to aggrograb and above a monkey.

@XeonMations
Copy link
Contributor

Monkeys are able to bite you through cuffs.

@JReese3
Copy link

JReese3 commented Jan 19, 2025

RCD does not punch holes

@Tsar-Salat
Copy link
Contributor Author

RCD does not punch holes

dreamseeker_4mNubF5pZn.mp4

Could not reproduce.

@Tsar-Salat
Copy link
Contributor Author

I'm not sure how big of a fan I am of right click to pick up items and repeat the left-click action. Duplicating the command just means you accidentally left-click on things while trying to test if something has a right click interaction. Especially while getting used to combat mode, it will be common to right click items which results in accidental pickups.

Collaborating on screentips should mitigate this.

@XeonMations
Copy link
Contributor

RCD does not punch holes

dreamseeker_4mNubF5pZn.mp4

Could not reproduce.

Is the RCD able to space tiles?

@Tsar-Salat
Copy link
Contributor Author

Is the RCD able to space tiles?

Yes?

Its the same interaction its just on rclick not radial.

@JReese3
Copy link

JReese3 commented Jan 19, 2025

RCD does not punch holes

dreamseeker_4mNubF5pZn.mp4
Could not reproduce.

I don't know if I was right clicking on a pipe on an obscured tile... I was trying to vent a holding tank with scrubbers and injectors on every tile.

Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants