Welcome to the Achaea Forums! Please be sure to read the Forum Rules.

Long Live Wundersys

124»

Comments

  • ShubShub Member Posts: 200 ✭✭✭ - Distinguished
    Is it using gmcp for just aff's or are you gmcp tracking targets/room items/inventory and everything else too?

    I'm wondering if this will eventually grow to replace my existing gmcp parser that drives my gauges/consoles/antitheft/etc.

  • TynilTynil Member Posts: 33 ✭✭✭ - Distinguished
    Good question @Shub. For now, it just tracks affs, defs, and vitals. 1.3 will make use of the affs, and maybe vitals. Defs will come later. Eventually, I'll probably plan to add tracking for any of those other GMCP related things too (there are definitely times where I just want easy table access to my inventory, rift, room items, who here, etc). The goal would be to create a shareable foundation that other scripts can be built on top of. Even now, anyone can pull in WunderSys Foundation.xml, without needing the full WunderSys.xml at all. The Foundation/WsysF (what to call this is open for discussion) should be purely passive. It won't take any action, unless you have other scripts calling into any of it's utility functions (there aren't many currently, but I may eventually build that out too). Anyone should be able to install this and not have to worry about things being gagged, commands being sent, settings being changed, etc.

    So, yes, you should eventually be able to put your gauges/consoles etc. on top of that. And then if you wanted to share that with someone else, you can package the WsysF piece with your scripts as a dependency. Or if someone wants to start writing their own curing system, they could use WsysF to handle aff tracking for them, so they don't have to deal with getting all those edge cases of how various stackable affs work with GMCP (I think I got them worked out, but there are definitely things the devs could do to make this easier through gmcp).

    Other than affs, most of the GMCP tracking pieces are pretty simple. The defs tracking I have was basically a copy/paste from what MMP uses, plus adding handling for things like converting "parrying (head)" to parrying = "head". But even if they're simple, it still seems like it would be useful to have a single lightweight script to do that once, rather than having every separate script copy/paste and do it on it's own. That's my reasoning with this anyway.
  • ShubShub Member Posts: 200 ✭✭✭ - Distinguished
    I agree, moving all my stuff over to gmcp where possible has massively simplified the script load. It's worth doing just to make things easier to maintain. Room GMCP is a little weird, denizens are technically 'items' with a specific flag on them. Targetting is a little funky too, I couldn't make the GMGP.Target.Set message work on players so I have to split the function and do a send(settarget <name>) when I want to target a player vs the gmcp message for denizens. 

    I would love to have a more popular foundation gmcp handler. Asking everyone to use my own hacked-up version of mdata is the main barrier keeping me from sharing my own scripts.

    What is MMP?

  • PyoriPyori Member Posts: 1,862 @@ - Legendary Achaean
    @Tynil it's what I got from Dunn and Seragorn when I was building my aff tracking for Occie.

  • TynilTynil Member Posts: 33 ✭✭✭ - Distinguished
    @Shub MMP = Mudlet Mapper (maybe no one calls it that, but mmp is the namespace table used in all its scripts)

    @Pyori I'll try to find an Occultist to test with to confirm. Thanks for letting me know.
  • ShubShub Member Posts: 200 ✭✭✭ - Distinguished
    I bought a new keyboard today, this one has a functional printscreen key! That means I was able to capture the split second bug icon error;



    I see where 'manual defs' is trying to reference myclass, I am still looking through all the scripts to determine where myclass is defined. I'm on the latest release version, haven't given the gmcp thing a go yet. I meant to, but then the black wave came.

    Also, new keyboard feels really nice, its a steelseries m750 tkl. I've always been skeptical of the gamer hardware brands but I was sick of the apple keyboard. Hopefully Shub has fewer idiotic sounding typos now. At this point I'm pretty sure everyone thinks he has a speech impediment.

  • TynilTynil Member Posts: 33 ✭✭✭ - Distinguished
    @Shub if you're feeling adventurous, I think I fixed your issue here: https://github.com/tynil/WunderSys/commit/d4b9e05c46a96c2c73f3614ede73d18f2fe7dbb4
    The issue was that the table was using functions, but it was just trying to execute those functions when the script initializing. It'd probably work fine on reloading scripts, but could have issues if you just opened mudlet and the order of things wasn't quite right. In either case, it was wrong, and probably would have caused issues if Sylvan/Sentinel was using those in defup and switched class without reloading the script. It should be fixed on master now.

    I have that change, plus the switch to pure GMCP aff tracking and some do queue changes I've been sitting on for 3+ years up on master and just about ready. I just need to do a couple more quick tests for validation before I tag that for a 1.3-beta-1. I should have that out in the next couple of days if all goes well. It's probably not quite as polished as I'd like, but I've been using it for a while now, and it works well enough.
  • TynilTynil Member Posts: 33 ✭✭✭ - Distinguished
    edited May 8

    WunderSys v1.3-beta-1

    New beta release available at https://github.com/tynil/WunderSys/releases

    Check out the release for details, but this does include:
    • the switch to pure GMCP aff tracking (using WunderSys Foundation)
    • A bunch of doqueue changes that I've had locally for 3+ years. They're not pretty, but they should work. The main improvements are that it now uses the doqueue for some lock curing (fitness, restore, dragonheal), and I threw in some expression expansions for the do queue, which I use for all my attacks. I still want to re-write the doqueue at some point, but there's really no reason to keep sitting on these changes.
    • Hopefully fixed some issues with manualcommand defup (thanks @Shub)
    If you're happy with v1.2.2, there's not a whole lot substantial here to force an update. If you're willing to try it out though, let me know if you encounter any issues. The aff change in particular involved ripping out a lot of places where affs were being set, so it's certainly possible that I missed something or removed something that still had a purpose.

    Next Steps

    I plan to let this beta soak for a bit, see if any issues come up, and maybe in a month or so if all goes well, I can push it as a full release. There are still some improvements that could be made to the prediction logic (things that GMCP doesn't catch, like masked recklessness), but the issues with them aren't anything major currently, so not a high priority.

    Still TODO (future versions, not necessarily 1.3):
    • Improve prediction logic/failsafes
    • Use wsysf.defs for def tracking
    • Add item, rift, who here tracking to WunderSys Foundation
    • Retardation curing needs a good deep dive
    • Would like to parse AFFLICTION LIST/AFFLICTION SHOW output to tables (and the DEFENCE equivalent)
    In particular, if anyone wants a good programming project, that last bullet could be a good challenge. The end result I want is a large table that is programmatically generated (please don't just try and make this table by hand!), that looks something like:
    aff_list = {
      addiction = { 
        aff = "Addiction to curatives"
        diagnose = "suffering from addiction.",
        msg = "You feel a terrible hunger grow within you."
        cured = "Your terrible addiction seems to wane."
        cures = { "Eat Ginseng / Eat Ferrum" },
        madness = true,
        tzantza = true,
        accentato = true,
        cadmus = false,
      },
      aeon = {
        aff = "The aeon curse"
        diagnose = "afflicted with the curse of the Aeon.",
        msg = "Suddenly your movement through the time stream is slowed."
        cured = "The curse of the Aeon wears off and you return to the normal timestream."
        cures = { "Smoke Elm / Smoke Cinnabar", "Time" },
        madness = false,
        tzantza = false,
        accentato = false,
        cadmus = false,
      },
    ...
    }

    If you want to attempt that, don't worry about hooking it up to anything, or when to run it. I can integrate it into WunderSys Foundation, along with tweaking small pieces, like maybe parsing out the "Eat Ginseng" into something more usable. I have some ideas about using this to make WunderSys update itself when new affs are added, removed, changed etc. This could also eliminate the need for a lot of permanent triggers, since  this gives the typical added/cured/diagnose lines.

    I can/will probably do something like that eventually, but if anyone wants to save me some time, feel free to give it a shot.


    Anyway, I'll maintain and work through any issues anyone finds with this 1.3 beta, but otherwise I may be taking a short break from working on WunderSys to focus a bit more on some of my own offensive scripts for a bit. As always, if anyone finds any issues, please let me know!
    EllrynShirszaeVandred
  • KhalyonKhalyon Member Posts: 38
    I know next to nothing when it comes to coding, and so I end up depending on people like you that make stuff like this open to the public. So first off thank you! 

    I was also wanting to make a suggestion, or see if I am just missing it. But is their a way, or if you get time to, to make def look like wshow keepup, or wshow defup?
  • TynilTynil Member Posts: 33 ✭✭✭ - Distinguished
    Khalyon said:
    I was also wanting to make a suggestion, or see if I am just missing it. But is their a way, or if you get time to, to make def look like wshow keepup, or wshow defup?
    I created https://github.com/tynil/WunderSys/issues/32. It doesn't do that currently, but since I already have wsysf.defs tracking your defs from GCMP, that probably wouldn't be that hard. Thanks for the suggestion, I'll consider it.
  • ShubShub Member Posts: 200 ✭✭✭ - Distinguished
    I installed the beta today, I'm working on tying my gauges to the foundation data. I have a lot of balance indicators, while trying to make my sip indicator work I found this odd trigger:


    Easy enough to fix, but I thought I should let you know, just need to chop 'or tonic' out of the line. Is there a less illusion vulnerable way to track sip balance? I suppose we could validate the line against a timer and only act on it within a certain margin.

    I managed to get alchemist educe salt balance into the tables and events, still trying to sort out how to work the ability into the curing logic.

    The defense keepup table is not finnicky anymore, thank you!

  • GilliamGilliam Member Posts: 78 ✭✭✭ - Distinguished
    Shub said:
    I installed the beta today, I'm working on tying my gauges to the foundation data. I have a lot of balance indicators, while trying to make my sip indicator work I found this odd trigger:


    Easy enough to fix, but I thought I should let you know, just need to chop 'or tonic' out of the line. Is there a less illusion vulnerable way to track sip balance? I suppose we could validate the line against a timer and only act on it within a certain margin.

    I managed to get alchemist educe salt balance into the tables and events, still trying to sort out how to work the ability into the curing logic.

    The defense keepup table is not finnicky anymore, thank you!
    If you do the timer, don't forget to factor in skull fractures. .5s extra per fracture. So 0=4.3 1=4.8 2=5.3 capping at 6=7.3. Sidenote, someone seems to be going around telling people to parry legs against two-hander. Don't.
    ShubJethan
  • CaelanCaelan Member Posts: 1,955 @ - Epic Achaean
    Shub said:
     I suppose we could validate the line against a timer and only act on it within a certain margin.
    This is basically how I set my curing up (don't use WSys but peruse for ideas). Need to sip flag, triggered sip state and timer, reset flag iirc.

  • ShubShub Member Posts: 200 ✭✭✭ - Distinguished
    So I thought about it some more, the lost sip balance is also trigger based, on the line server side curing gives you when it sips, not that 'elixir soothes you' message. I've never seen it but maybe that could be illusion'd too, people probably don't do it because the split between client and serverside users. So the illusion guard for this whole thing is might be, capture the sipped curing line, check it against gmcp for health changes (with appropriate exceptions for blackout), check your skull fracture count, start a timer. Does anything else affect sip balance time? I'm wondering if mayology/golden phials does.

    Then once your gained sip balance trigger hits, check the timer and only update the balances table if the remaining time is within some small margin.

    That blackout sip illusion could be dangerous. I guess the only way to avoid falling for that trick is to sip from the client side when under blackout, otherwise you'd lose track of your sips and possibly provide your opponent with an opening.

    Does serverside continue to sip under blackout, does it tell you that you're sipping during blackout? I'll get my balance labels working, then I'll worry about blackout.

  • VandredVandred Member Posts: 10
    I just want to say I greatly appreciate projects like this and the folks who run them. Keep up the awesome work.
    Shub
  • ShubShub Member Posts: 200 ✭✭✭ - Distinguished
    I have a couple more questions/ideas

    is there an ingame wundersys clan?
    is there a list of wundersys generated events anywhere, things like 'system loaded' and 'class changed' that I can hook into for other scripts?

    I found another initialization bug, disappears as soon as the script is clicked into, much like the defenses issue:


    This time it looks like this script is loading up before the bals table is defined.

  • TynilTynil Member Posts: 33 ✭✭✭ - Distinguished

    WunderSys v1.3

    New release available at https://github.com/tynil/WunderSys/releases

    Note that this is mostly just officially releasing all the changes that went into the previous beta, with a couple minor bug-fixes added on. See the release page for details.

    @Shub I moved the Tables folder up above all the others, which should fix the Time Tracking initialization bug you mentioned above.
    With respect to the clan, there technically is one, but it's owned by Nemutaur, and no one else in it has any special permissions beyond inducting and writing news. There are occasionally people in it, though no one really ever asks any questions on it. Ask for an invite, or if anyone wants to get something more useful going, I'd love to see more collaboration.

    Documentation is definitely something WunderSys lacks right now. It looks like Nemutaur's original documentation isn't up anymore either. if anyone wants access to edit the wiki at https://github.com/tynil/WunderSys/wiki, let me know. I just barely have time to work on the code itself, let alone documentation.

    Until we have better documentation, for WunderSys generated events at least, you can try looking through the code for where raiseEvent is called.


    Anyway that's all for now. Hopefully this 1.3 version should be pretty stable. There were just a few minor fixes from the beta, but I otherwise haven't heard any complaints for the beta either. I'm probably going to continue taking a bit of a break for the time being. I just have too much other stuff going on right now. I'm trying to at least stay around a bit, so I don't completely disappear. And I'll probably get back to this eventually. Hopefully sooner than in another 3-4 years this time.
    CaelanNeraeosVandred
  • CaelanCaelan Member Posts: 1,955 @ - Epic Achaean
    I have it installed on a profile just for ideas (try to write my own), and just wanted to say thanks for keeping up and offering an SVO alternative. Especially one as easy to mod and see the code..

    Tynil
  • CotillionCotillion Member Posts: 3
    Having an issue with pipes on the latest 1.3 version. I just tried installing it and it this immediately came up.. Tried looking at the triggers for pipe-refilling/lighting but don't know what to change or how to change it. It will only fill the first pipe, then it jams up somewhere and the rest won't go.


    pipelist
    Status  Pipe         Contents                       Puffs Months 
    -------------------------------------------------------------------------------
    lit     pipe381113   a skullcap flower              10    236
    out     pipe381290   empty                          0     236
    setalias dofree5 light pipes
    queue add bal dofree5
    out     pipe382493   empty                          0     236
    -------------------------------------------------------------------------------
    [Curing]: PUT VALERIAN IN 381290
    A long pipe of polished crystal is full and will hold no more items.
    4992h 3449m 100%e 100%w XX|EE B D C K M 
    [Curing]: PUT ELM IN 381290
    A long pipe of polished crystal is full and will hold no more items.
    4992h 3449m 100%e 100%w XX|EE B D C K M 
    [Curing]: LIGHT PIPES
    You have no pipes that require lighting.
    4992h 3449m 100%e 100%w XX|EE B D C K M 
    4992h 3449m 100%e 100%w XX|EE B D C K M 
    [System]: Added light pipes to your balance queue.
    You have no pipes that require lighting.


    Any help, please?
  • VandredVandred Member Posts: 10
    @Cotillion I've tried to reproduce the issue you've been having but I haven't been able to come up with anything. Have you tried the simple stuff like uninstalling/reinstalling the system from scratch? Maybe there was an unintentional edit somewhere.
  • CotillionCotillion Member Posts: 3
    @Vandred I think I got it fixed. There was an issue with the pipes I had bought (for some reason there was a snowglobe in one of them which can't be taken out). Bought a new set and it's working so far.
  • KhalyonKhalyon Member Posts: 38
    I was told you can turn off the use of the tree tattoo on server side cutting and have ways take over it's use. Was wondering if that's true, and what, if any, settings in ways I need to adjust?
  • TynilTynil Member Posts: 33 ✭✭✭ - Distinguished
    Khalyon said:
    I was told you can turn off the use of the tree tattoo on server side cutting and have ways take over it's use. Was wondering if that's true, and what, if any, settings in ways I need to adjust?
    ATR [ON/OFF] - Auto-tree on/off. Or just ATR to toggle it. If Auto-tree is on, it'll use server-side tree curing (typically, that means it'll just use tree pretty much on balance to cure any affs you have at all). If disabled, then it'll save tree balance until you manually use it (e.g. TR), or WunderSys will attempt to automatically use it to cure out of near-lock situations, if possible. Recommended to set ATR off when fighting burst affliction/lock classes (e.g. Serpent), but you might want to leave it on for momentum aff classes, or against anyone that isn't likely to lock you.
    Khalyon
  • KhalyonKhalyon Member Posts: 38
    @Tynil thank you. Thanks for everything you do!
  • VandredVandred Member Posts: 10
    When I precache herbs, I oftentimes find that it out-rifts 3-4 times the amount that I originally set it at whenever I put up defenses or log into the game. Is there any fix for this so that it always keeps the right number of herbs out without requiring me to manually rift it all again?
  • JovoloJovolo EnglandMember Posts: 3,241 @@ - Legendary Achaean
    edited September 9
    nvm i fixed it
  • JovoloJovolo EnglandMember Posts: 3,241 @@ - Legendary Achaean
    Is there a wundersys clan in game? 
  • PyoriPyori Member Posts: 1,862 @@ - Legendary Achaean
    CLANHELP WUNDER, not sure how active it is though since Nemutaur is still the clan head.

Sign In to Comment.