My offense tracker

24

Comments

  • Yeah auto offense is ridiculous.  This is only meant to intelligently decide your next attack(venom) which you manually send. There should never be a point where you cannot run because your offense is going.  If there is,  you're doing it wrong and I do not support at all. If you notice I didn't include any offensive aliases,  mainly because mine are very simple.  I do have modes that illusion on a stab or gust on a rend,  but they are all triggered off attacks(which is a terrible way to do it).  That is about all.  If you fully automate,  a serpent is going to give you a hard way to go with illusion cures/shields/ect. You should always have a backup, because of this. 
  • The only slight complication is that the sample "dragonstack ()" focuses on single additions to the affliction, whereas a doublestabbing Serpent may need something a little more complicated! :open_mouth: 



  • You would just have to make two separate attack if-strings,  one for first venom and one for second.  It can be same script, and then envenom both at the end of the function,  using the table(whose name eluded me[vcombo?]).  I have one for ginseng at home that i wrote up for someone real quick a few days ago if you need an example.  It can be improved a lot,  but again,  this isn't cookie cutter.  I will never release fully finished attack strings. This  requires your input to really excel, because if I released a full offense, for free,  Vadi and Nemutaur will just update priorities if everyone started using it.

    If this sounded mean,  I am really sorry.  I am here to help anyone with whatever.  Just being candid because of terrible day. 
  • @Austere‌ For the Svo prompt function, you can set up an event handler for Svo's "svo system loaded" event so that you only add extra prompt tag definitions once Svo has finished loading. Saves worrying about the order of your scripts and means the script itself won't throw any errors if the user doesn't have Svo installed (because that event will never be triggered).
  • AustereAustere Tennessee
    edited September 2014
    @Antonius‌ I swear, every Svo script I have wrote has that event and they all error if not ordered.  I dunno if I am broke or what.  Was the only reason I didn't include that.  

    Edit: does adding it to the main script folder, instead of individual scripts, help?
  • @Austere, no offense taken - you already put in the groundwork for this, and I'm very thankful for it. I'll tinker with it a bit at a time. :smile: 



  • @Bronislav‌ I will update it tonight with a dstab demo that is non-specific herb stacking.  This way you have a general idea how to do it,  but still need personal input.  I can post it to this thread for those who don't want to update the entire script. 
  • With new in-line envenoming, you just need a separate DSTAB trigger.

    Multiline, capture the venom you secrete out of the two lines, apply venoms on dstab. (You might already be planning to do this, just saying that's how I have it)
    image
    Cascades of quicksilver light streak across the firmament as the celestial voice of Ourania intones, "Oh Jarrod..."

  • @jarrod any chance you can get me a copy of what the in line envenom looks like?  Honestly if dstab will show you the venoms as you stab them,  there is no need to even track what is on the dirk or even run a temp timer for envenom. You can just select as you stab and allow it to capture.  The reason I use a temp is if you select with pre envenom leading into stab,  you run the risk of the decided values changing between a send and the server receiving.  I ran into this while setting up shaman offense and I will be the first to tell you,  my work around is ugly as all get out.  I have to save every send to a table and then clear them as they fail from no balance/hinder.  This is what I get for holding down my enter button.  Yes my work around was ugly,  but it worked at the time
  • image
    Cascades of quicksilver light streak across the firmament as the celestial voice of Ourania intones, "Oh Jarrod..."

  • AustereAustere Tennessee
    edited September 2014
    Ohh, I thought it was going to be like "^You prick (\w+) twice in rapid succession with your dirk envenomed with Kalmia and Curare\.$"  My triggers should already parse that correctly since I add venoms to a table(currentvenoms) whenever I envenom(generally whatever is inside vcombo table).   Thank you, though.  I went ahead and added it with credits to you.  Never seen a trigger like that, so maybe someone else can learn something new too. 

    I added an example serpent stack function, with as much comments as I can be bothered to write.   Posting here in case you don't feel like updating the whole thing just to have it.  I know, it is terrible stacking theory, hints the example part. 
    function serpentexamplestack ()
    
    vcombo = {nil}
    --Primary Venom Selection
    if affstrack.score.paralysis<100 then
       table.insert(vcombo,"curare")
    elseif affstrack.score.asthma<100 then
       table.insert(vcombo,"kalmia")
    end
    
    --Secondary Venom Selection if math.random(100)<50 then if affstrack.score.addiction<100 then table.insert(vcombo,"vardrax") elseif affstrack.score.stupidity<100 then table.insert(vcombo,"aconite") elseif affstrack.score.dizziness<100 then table.insert(vcombo,"larkspur") elseif affstrack.score.clumsiness<100 then table.insert(vcombo,"xentio") elseif affstrack.score.sensitivity<100 then table.insert(vcombo,"prefarar") end else if affstrack.score.haemophilia<100 then table.insert(vcombo,"larkspur") elseif affstrack.score.stupidity<100 then table.insert(vcombo,"aconite") elseif affstrack.score.dizziness<100 then table.insert(vcombo,"larkspur") elseif affstrack.score.clumsiness<100 then table.insert(vcombo,"xentio") elseif affstrack.score.sensitivity<100 then table.insert(vcombo,"prefarar") end end --if affstrack.score.asthma > 0 then asthmachecker() end --Can have a seperate script that runs if they have asthma, --so you can go ahead and progress a vlock. As long as you add --two more venoms to the vcombo table, you can use ANY --seperate function here to force dstab changes, despite stacking requirements. if vcombo[1] then --display(vcombo) send("secrete "..vcombo[1].." on dirk")
    send("secrete "..vcombo[2].." on dirk")
    end end
    scoreup()

    You would want to add something like this to your dstab trigger:

    if stack == "serpentexample" then venomtimer = tempTimer(2, [[serpentexamplestack ()]]) end

    and then create a key to: 

       change the current "stack" variable to serpentexample : stack = "serpentexample"

       run the script once, to get an envenom on dirk: serpentexamplestack()

     

    Edit:  Didn't test, not a serpent.  One day I will figure out how code-spoilers work so everyone doesn't have to read all of this every time they click the topic.  Sorry. 

  • Jarrod said:
    FWIW, the second line spacer there should be unnecessary, since there's no way patterns 2 and 4 could match on the same line.
  • Awesome work, @Austere - Thanks a lot :) My main gripe with the aff-tracker is that I can't seem to get the off-hand venoms to register with the tracker. Example below -


    [ SnB PvP Guide | Link ]

    [ Runewarden Sparring Videos | Link ]
  • @Exelethril‌, I didn't watch the video because I am at work and not sure how loud it is.  My take on your problem assuming I understand right:

    This is because it only tracks venoms for a single weapon.  The problem with two weapons is you need to distinguish which rapier has which venoms in two seperate tables so that you can unset the score on misses or dodges. I have been giving this a lot of thought lately and I have an idea how to implement using temp variables when you try to envenom that stores which weapon it is going to.  Then using a variable to cycle between the two weapons on each dsl or rsl and set the affliction accordingly.  Only problem is,  single razes would confuse it unless you use a multi line raze trigger with a prompt follow to unset the weapon tracking variable. I am fairly confident I could do something to account for this,  but your own pre - envenom would mess it up unless you tell it which weaponvenomtable to add to. 

    Summary: I can code it I think and I don't care to( fofree).  Doubt I include in mass distribution unless not enabled though, because I am afraid it could mess up single weapon stabbing such as serpent.  Anyone else have a better idea how to do it please speak up? Seriously been considering this thinking about this sincesomeone mentioned on the first page. 

    Disclaimer:sorry if this makes no sense,  I might have confused myself just explaining it
  • That made total sense. I haven't seen that many other knight players that use your aff tracker and it's not really a need for me per se(just wanted to try out an aff tracker) so I don't think it's worth the effort of coding on your end. 

    [ SnB PvP Guide | Link ]

    [ Runewarden Sparring Videos | Link ]
  • Honestly it would only be useful for prep.  Your Kelp stacks would always be godly,  but when you go for the kill,  you use venoms like delph to prone or epteth to kill salve balance.  It would be hard to run a function that you tell to throw off herb balance once then change to x and y venom. Could let it cycle which limb to hit if there is a chance they are paralyzed to by pass parry. .I dunno.  Up to you.  I am sure I can do it,  just might be ugly. 
  • I spent a bit of time yesterday looking at the problem of tracking pre-envenoming for doubleslash, since I'm considering potentially building my own affliction tracker as something to do. Basic idea I came up with would look something like this: http://pastebin.com/Yi9fkpmB

    Essentially tracks the relevant parts of all envenoming commands that are going to be sent to the game using the sysDataSendRequest event, then cycles through them on the envenom line to assign the actual venoms to left/right hand weapons. There's some relatively basic logic in there to account for things like stupidity or aeon causing one or both of the commands to fail, but it's by no means perfect - should mainly just cause issues on combos where you're envenoming both weapons with the same venom.
  • AustereAustere Tennessee
    edited September 2014
    I wanted to issue an apology.  The above dstab example will not fire because I miscalled a variable. .. my bad.  Not updated drop box yet either,  just fyi.

    if affstrack.score.paralysis<100 then
    --Should be
    if affstrack.score.paralyse<100 then
  • StrataStrata United States of Derp
    Austere said:
    I wanted to issue an apology.  The above dstab example will not fire because I miscalled a variable. .. my bad.  Not updated drop box yet either,  just fyi.

    if affstrack.score.paralysis<100 then
    --Should be
    if affstrack.score.paralyse<100 then
    I want my credits back. That is just unacceptable.
  • Strata said:
    Austere said:
    I wanted to issue an apology.  The above dstab example will not fire because I miscalled a variable. .. my bad.  Not updated drop box yet either,  just fyi.

    if affstrack.score.paralysis<100 then
    --Should be
    if affstrack.score.paralyse<100 then
    I want my credits back. That is just unacceptable.
    What credits?  Oh you mean donations?  Only had one.  Pretty sure he was an eccentric billionaire with nothing better to burn cash on than a pity donation.  It's okay,  It definitely made my month 10x better and inspired fixes(Yes, ooc month.  Have you never lived with a pregnant woman?  Getting to wake up one day not listening to puking makes my month, so free stuff is always that much better)  I am just glad someone stepped up and said,"Hey my shit don't work.  Fix it."
  • So I I have gotten a lot of requests since releasing this, and I realized that 90% of the problems people are having, I have already fixed on my personal tracker.  SO, with that in mind, I decided to go through and reyank mine so everyone has the most up to date version.  If you have wrote anything custom for this, I recommend you move it outside of the tracking folders before uninstalling and installing the new version via the package manager.  A few key notes:

       I handle my offense completely differently now.  I no longer utilize timers to select venoms for me.  With this in mind, when you install this, it is going to update a serverside alias(or 6 if you are in dragon prep mode) every time the combat scenario changes. This allows you to use the most up to date information on every single attack.  I have not personally experienced any lag issues using this method, but if you live in Australia, good luck!   I do recommend mashing the 5 key to turn off all offensive actions in retardation and aeon.  You can also trigger the serverside settarget(assuming you do this in your targetting alias{it isn't required}) to set stack to "none" when targetting a denizen.   Keep in mind, this is still not a fully automated combat script, and it never will be.  You will want to either make aliases to send the serverside aliases I set(using the oattack script), or use those aliases for your offense.  You can reuse the same alias for multiple different attack approaches, so either one works.  You will want to turnoff "Show the text you sent" via the settings in mudlet unless you want to see exactly what is going on with your alias setting, 99% of the time.  I did include a gag for this assuming you use svo.  It is located in the triggers(it should be the last one).
       
       Instead of just posting a jumbled mess of an example offense script, I took the liberty of writing a dstab offense script and a dragon offense script for you all to look at, use,  and expand on.  I hope it serves you well.

       I went through and drastically improved the quality of the code as well as the logic.  If you haven't went through and personally changed a crap ton of things in my tracker, I thoroughly recommend you update this.  

       This was not a direct copy paste of my offense, I took a lot out, so if you notice a function that doesn't exist, let me know and I will readd it or make a correction so it is no longer required.  

       Again, PLEASE READ THE INSTRUCTIONS FIRST.  I swear the next person who asks me in a tell why it isn't resetting, I am going to ask Jhui to raid. 

    The link again, https://www.dropbox.com/s/oj6o91ssjs65cud/Austere's Opponent Tracking.zip?dl=0

    Lastly, if you run into any issues(I am sure there will be some, I can't just delete everything and something NOT break) please let me know.  I did not test the dstab trigger, but the logic is sound.  Let me know.  As always, donations welcome but not required. 
  • KlendathuKlendathu Eye of the Storm
    edited November 2014
    You left if svo.defc.dragonform then uncommented in function dragoncurser (). I tend to use if gmcp.Char.Status.race == "Dragon" then in its place, as it's system agnostic.

    Also still referring to affstrack.score.paralysis in function dragoncurser () and others, which should be affstrack.score.paralyse

    If I hadn't already ripped the guts out of this and reworked it for myself, I'd be using the new version. It's top drawer

    Tharos, the Announcer of Delos shouts, "It's near the end of the egghunt and I still haven't figured out how to pronounce Clean-dat-hoo."
  • KlendathuKlendathu Eye of the Storm
    Addedum to above (edit window has expired), there's references to both paralysis and paralyse, I assume they're meant to be the same thing

    Tharos, the Announcer of Delos shouts, "It's near the end of the egghunt and I still haven't figured out how to pronounce Clean-dat-hoo."
  • AustereAustere Tennessee
    edited November 2014
    The paralyse vs paralysis problem had driven me nuts for a while.  I decided I liked paralysis more,  so I converted everything to that,  including the curing calls.  If you want to use paralyse instead,  it would take some work. The paralyse call in dragoncurser () is probably for the sending,  not the tracking. 

     Can't believe I forgot to comment out an svo call.  I wrote in the instructions that it was probably best to do your own search for it though just to make sure.  

    Edit: can't look at this again until Friday night,  so no updates until then.  Sorry!  Good call outs,  though. 
  • KlendathuKlendathu Eye of the Storm
    I was looking through to see what you changed from the version I originally installed, out of habit did a search for paralysis (remembering the issues from berfore). After the edit window had closed on my post, I realised you'd replaced most of the paralyse with paralysis. The only instance I found of paralyse was in the Wundersys section (I didn't save the profile into which I loaded it, can't be more specific)



    Tharos, the Announcer of Delos shouts, "It's near the end of the egghunt and I still haven't figured out how to pronounce Clean-dat-hoo."
  • Yeah,  I am not a wundersys kid,  so overlooking that one makes sense since I just copy pasted it from the public version.  It should just be a variable in the table,  though.  Easy fix. Even with it wrong,  it just means paralysis won't show on prompt.  Not super concerned,  but I will try to remember to change.  My one concern is the dstab trigger,  which I decided last night is just a little flawed.  I clear currentvenoms [1] just a little bit early I think.  Can't remember without looking at it,  though.  Will fix Friday,  either way. 
  • edited November 2014

    RE: @Exelethril There are a few options for tracking multiple weapons (less so for identically named weapons).

    The "most accurate" way to do it is to char one of the weapons, so they can be tracked independently.

    The other method involves some really complex stuff that tracks which venoms you try to apply, which actually complete (thanks to things like amnesia, stupidity, paralysis, being out of a venom, etc), and carefully adding these venoms to each weapon's venom queue, client-side.  This is inherently difficult and can results in errors (albeit rarely) when you use the same venom on both rapiers (but only one venom succeeds), and in a handful of other outlier conditions.

    Best way to go, by far, is to char/customize one of your weapons.  Then you're 100% accurate, and don't need to incorporate any type of input/envenom functions into your personal offense setup.

    Both methods are native to Go... you get the idea.

  • edited November 2014

    It should also be noted that your example doesn't account for reflections/rebounding/etc.

    For knights, this is particularly challenging, as only the first slash is stopped by reflection, not the second.  You also have to be careful not to table.remove() the venom queue when you shouldn't (for example, when you hit parry or guarding with DSL).

    I use a combination of up to 4 different edged weapons sometimes, each of which has their own venom queues.  Trust me, it gets tricky.

    It requires a mildly complicated system to do this "correctly", but it looks like this is starting off on the right track.
  • That really is an amazing idea.  Thanks for the call out on charring. I remove the currentvenom, but I set another table so I can reassign it on misses.  My script already has the appropriate triggers for rebounding,  missing, reflection, parry,  ect. No clue if I have a trigger for guarding though. As a magi dragon,  I don't have a large need to track a ton of weapons, so I will probably leave that to the individual to code. As for knight hitting reflection,  it should be easy enough to code in the reflection portion because of the way I save previous venoms.  
  • How do you char weapons? What else can be charred?



Sign In or Register to comment.