Giter VIP home page Giter VIP logo

tecext's Issues

Add a toggle to use 'brise' instead of 'stand' when knocked down

While we're here, let's move some config around:

  • Add a new configuration tab for Combat
  • Move existing combat toggles for kill and continue on walks in into this new tab.
  • Add a new toggle to use brise instead of stand when knocked down. It should be off by default.

Optimistically change targets when out of range

For combat scripts, in the following scenarios, we want to run the command ac <target>, where <target> is the internally tracked target entered when the script was started (not the TEC concept of a for macros).

  1. You'll have to retreat first
  2. There aren't that many there

Might have to check the exact wording on those, but in both cases we want to take the results of ac <target>, and track an attempt to move to the next on the list. For example: change the to 2 <target>, then 3 <target> etc, with logic for a reset back to just <target>

Expanded Detail After Investigation

Here is what we get back in a single block from the server when we use the command ac <target>, ie: ac man|rat:

</pre><pre><font size=+1><b>Checking the approach status of &quot;man|rat&quot;</b></font></font>
<hr>
1: a dirt-caked man with milky-white eyes and greasy hair(unconscious)
2: a gaunt rat with milky-white eyes (engaging) 
3: a filthy man with milky-white eyes and pale skin (engaging) 
<hr>
</pre>

Regex psuedo:

  • Starts with a number and a :, ends with (engaging). Capture the group between the two.
  • After capture, use the first one found (first (engaging));

Steps:

  1. Move any other out of range related code into this function to handle it centrally.
  2. When you get the message: You'll have to retreat first, it's time to switch targets.
  3. Run the ac ${target} command, and parse the output to find the first (highest number) target on the list that is (engaging).
  4. Add a new variable to track ${targetOverride}, and add support in the main attack loop targeting code.
  5. Determine when to reset ${targetOverride} (set it to ''); likely when you get one of these messages:
    • There aren't that many there
    • You can't
  6. Add support in command parsing to handle having a number before a target, ie: 2 man|rat.

Add global parses and actions

It would be useful to be able to define, either by variables in the UI/settings or in the script itself, a way to have global (parse -> action)s defined.

For example:

  • Stop/pause script execution if someone walks into your area.
  • Stand if you are knocked down (without having to rely the function in combat scripts that will stand if you try an action that says you must be standing - this wastes time).

Allow multiple 'outcome' statements in a single parse

Right now you have to provide an array of parses when you have multiple outcomes for a given command. It was suggested that instead we could make an or syntax.

What it's like today:

{
    "command": "sbash",
    "parse": [
        {
            "moveNextWhen": "You are no longer busy",
            "outcome": "You bash"
        },
        {
            "moveNextWhen": "You are no longer busy",
            "outcome": "with your shield bash!"
        }
    ]
},

Perhaps it could be something like:

{
    "command": "sbash",
    "parse": {
        "moveNextWhen": "You are no longer busy",
        "outcome": "You bash|with your shield bash!"
    }
},

AIM'ing Breaks kill command

When attacking a specific area of the body...

i.e. /start archshot "sea|sail neck"
Result: "When the TARGET falls unconscious: "Neck" is not necessary; try again without it."

The desire is for the TARGET to be killed regardless of the AIM.

@jdalley

Add config for custom approach command

The idea would be to have a text box where you could enter your preferred approach command if your weapon set has an attack that approaches ie: Falcata Tumble Slash.

If a value exists here we'd use it instead of advance or engage.

Adding a Shield box under weapons

For folks who use both a weapon and a shield, adding in shields as a separate field in addition to the weapon would be helpful. Then when the code can't conduct an attack due to non-wielding, have it attempt to wield both fields

Add a setting to define a custom command time delay range

It was suggested that a custom delay could be added to commands within a script to buffer time before going to the next action.

{
    "command": "echo <target>",
    "delayNextCommand": "5",
    "parse": {
        "moveNextWhen": "Now you repeat it",
        "outcome": ""
    }
}

Update:
I decided to instead add a global delay range that's configurable in the client, with a fallback to 900 - 1100 milliseconds. This will be added in a new config tab General.

'walks in/arrives' Break

Mostly seen in high spawn areas such as Signal Tower Island or the Rat Pits. If a target arrives just as the, "You are no longer busy" displays then the script will stall until the next, "walks in/arrives" or manual /resume. @jdalley

Implement a 'travel' script type

It might be useful to have a type of script with a different notation for inputting a terse, comma-delimited list of directions for getting from point A to B.

{
  "directions": "e-5, s-10, e-4, n-3, se-2, up, 2 door, down",
  "scriptType": "travel"
}

Add thoughts, says, and whispers to a separate window

Suggestion from JagerBtFM from Discord:

Is there any chance you could make the extension box bigger OR make a second window pop up, which would just show tells, says, whispers and thinks in it? Kinda like the communications box from the mIRC client? I hate missing speech and thinks during multiple opponent combat.

Implementation thoughts:

  • Could add this in the TEC window itself, pinned to the top of the screen with adjustable size. This may not work too well with the way the core Orchil display renders.
  • Adding it to the pop-out window for the extension would probably be fine, it's certainly due for an overhaul in general.

Support a Macro Rotation

Right now it's not possible to just specify a combat script that calls macros after setting a target using the in-game target command.

It would be cool to create a script possibility like this with a new scriptType, combatMacro:

 {
        "addAttack": false,
        "commandList": [
            {
                "command": "fe1",
                "parse": {
                    "moveNextWhen": "You are no longer busy"
                }
            },
            {
                "command": "fe2",
                "parse": {
                    "moveNextWhen": "You are no longer busy"
                }
            },
            {
                "command": "fe3",
                "parse": {
                    "moveNextWhen": "You are no longer busy"
                }
            },
            {
                "command": "fe4",
                "parse": {
                    "moveNextWhen": "You are no longer busy"
                }
            },
            {
                "command": "fe5",
                "parse": {
                    "moveNextWhen": "You are no longer busy"
                }
            }
        ],
        "scriptFriendlyName": "Macro: fe1-fe5",
        "scriptName": "macroRotation2ha",
        "scriptType": "combatMacro",
        "shouldKill": true,
        "shouldKillParse": "With massive force",
        "stanceCommand": "wgrip"
    },

The script should take the target you want to set as target in-game, and set that target as the script begins.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.