Bloom! A new and shiny basher and influencer!

edited October 2021 in Mechanic's Corner
Partly inspired by my desire to rework my own bashing stuff, and also by running into people using some really archaic stuff like chade's basher, I decided to build a new one! Bigger! better! shinier than ever before.
Bashing features:
Alias and ID based targeting (Toggleable on a per-mob basis)
Aliases and clickable menus to add, remove, and edit mob entries.
Automatic beast detection and use.
Resistance and buff tracking to automatically choose between multiple attacks.
Built in aff-tracking to only attack when not-hindered!

Influencing features:
Automatic oil and scarecrow use
Aliases and clickable menus to add, remove, and edit entries.


This package also includes a genrunner, so it can automatically bash and influence full areas. I am not responsible if you use afk bash and get punished for it. What you do with my system is entirely on you.
I chose to include the runner in the release versions because I believe everyone should be on equal footing and have the tools that are needed to play efficiently and competitively, and there are already many players who have and use similar systems.

Bloom requires Mudlet 4.11+ to work.
It also requires mudlet mapper (mmp) to be installed.
You will need to restart mudlet after installing the package for everything to initialize properly.

Screenshots!


\


Note: had to change it to .txt file to upload it on the forums, but should still be importable.

Comments

  • EritheylEritheyl ** Trigger Warning **
    This is too cute not to use, the attention to the UI speaks to my soul.
    Crumkane, Lord of Epicurean Delights says, "WAS IT INDEED ON FIRE, ERITHEYL."

    -

    With a deep reverb, Contemptible Sutekh says, "CEASE YOUR INFERNAL ENERGY, ERITHEYL."
  • EritheylEritheyl ** Trigger Warning **
    edited October 2021
    Okay! I seem to have broken it right out the gate.

    Attempted to BLOOM ADD MANTIS on Fire, it definitely probed it and said it was added to the list. BLOOM REVIEW remains empty though, both with local and a search for mantis applied. Is there a quick way to empty out the list and try to add it back in? Successive attempts just give the added message without changing it up.

    Similarly, adding mobs to the inf table gives a success message, but that list remains empty as well.


    Crumkane, Lord of Epicurean Delights says, "WAS IT INDEED ON FIRE, ERITHEYL."

    -

    With a deep reverb, Contemptible Sutekh says, "CEASE YOUR INFERNAL ENERGY, ERITHEYL."
  • What mudlet version are you on? If I had to guess, the review alias is breaking there because you're on an earlier version without support for anonymous functions in cecholink.

    Also, unrelated to that issue, but because Demonnic pointed out a mistake in the help file (it says BLOOM RUN STOP is the alias for stopping a run, but it's actually BLOOM STOP) here's an updated version with the typo fixed! It doesn't change anything beyond that in the code, though.
  • edited October 2021
    So apparently my death check wasn't that great, and it'd fire on things like astral insanity's 'You have been slain by your own delusions.' line. I've fixed it up a bit, but instead of endlessly posting new versions here every time I need to do a minor change, I decided to just host it on github instead.
    My Github! Clickity click!
    I'll try to keep that up to date, and others are welcome to open PRs and stuff if they would like to contribute too.  :)
  • EritheylEritheyl ** Trigger Warning **
    edited October 2021
    After testing this out in a few areas, swapping back and forth between influencing and bashing, I can conclusively say that this is freaking awesome. Documentation is thorough, so even if you're not up to snuff with coding you can find everything you need and edit it appropriately if so desired. Also, the bashing/influencing is made separate from the actual running, so if you're the sort that doesn't like being dragged around to every corner of an area (or if you're working specific quests that only require X corpses, X influences, etc), you can set one or the other to run while you manually move room by room. That's a fantastic option, so I'm thrilled it's set up like this.

    A+ for quality, A+ for aesthetics, A+++ for functionality. Thanks so much for posting this!
    Crumkane, Lord of Epicurean Delights says, "WAS IT INDEED ON FIRE, ERITHEYL."

    -

    With a deep reverb, Contemptible Sutekh says, "CEASE YOUR INFERNAL ENERGY, ERITHEYL."
  • This is A+ pretty great.

    If there's a way to show an example of how to chain areas in the genrun that would be sweet. Aka, run through all kephera hives, or run through multiple elemental planes.
  • XenthosXenthos Shadow Lord
    "This package also includes a genrunner, so it can automatically bash and influence full areas. I am not responsible if you use afk bash and get punished for it. What you do with my system is entirely on you."
    Do you at least have a check in it to move on if someone else is already in the room when you walk in?
    image
  • edited October 2021
    You can define custom 'areas' to run (referred to as 'paths' within the system, and stored in the 'Paths' script in the walker folder.
    They can be used to exclude portions of an area, or run areas which cross multiple areas. An example is this, for the naga caves (which spawns both part of the southern mountains, as well as a good portion of the caverns of muhanlesh)

    bl.paths.naga = { 1914, 5816, 5819, 5818, 5817, 5820, 10670, 10678, 10680, 10681, 10683, 10684, 10685, 10689, 10690, 10672, 10679, 10692, 10693, 10694, 10695, 10696, 10697, 10698, 10699, 10929, 10936, 10935, 10934, 10937, 10938, 10939, 10941, 10701, 10702, 10703, 10704, 10705, 10706, 10708, 10710, 10712, 10711, 10715, 10713, 10714, 10716, 10719, 10717, 10720 }

    Basically, it is an un-ordered table of rooms. By building a similar table and storing it in the bl.paths table, you'd be able to run it by using the BLOOM RUN <path> alias: for the above mentioned path, it'd be bloom run naga. I am not sure how well it would work across multiple elemental planes, though, because I've done some tweaks to the walker script I borrowed from Demonnic to have it skip the step of considering bixes when pathing in order to reduce the overhead on every movement. Because moving between the hives can generally be done without any bix movement, that one will almost certainly work smoothly.

    The paths don't neccesarily have to be stored in the bloom folders themselves to work, as long as they're in the correct table. Also, if you build paths which you think are generally useful, you can always pass them to me and I can test and make them come bundled with the system, too.

    Also, paths can be a little tedious to build by hand, but if you use map functions and splice tables together and stuff you can bop them out super quick - feel free to reach out to me on discord if you'd like help building a particular one.
  • edited October 2021
    hmm. hmm. The walker can take a table of roomIDs to walk, that's how the predefined paths are setup (bl.paths.icewynd, etc) so you could create them programmatically. 

    function mungeAreas(...)
      local at = getAreaTable()
      local areas = {...}
      local result = {}
      for _,area in ipairs(areas) do
        if type(area) ~= "number" then
          area = at[area]
        end
        if area then
          for _,room in pairs(getAreaRooms(area)) do
            result[#result + 1] = room
          end
        end
      end
      return result
    end
    
    function allElementalPlanes()
      return mungeAreas(
        "Elemental Plane of Air",
        "Elemental Plane of Earth, Catacombs",
        "Elemental Plane of Earth, Mountains",
        "Elemental Plane of Fire",
        "Elemental Plane of Water, Dream Lake",
        "Elemental Plane of Water, Mystic River",
        "Elemental Plane of Water, Starry Sea"
      )
    end
    
    bl.paths.fullelemental = allElementalPlanes()

    in a script below Bloom would allow you to use 'bloom run fullelemental' to run all those areas.  You can get a printout of all the area names using the lua alias, `lua getAreaTable()` 

    I have not tested this works with bloom, but I used something like this with the walker before, it should work.

    ETA: strictly speaking the allElementalPlanes() function isn't necessary, you could just use the mungeAreas all there, but I foresee making several and I think if it were me I'd want to make a function for each, and then at the bottom just have

    bl.paths.fullelemental = allElementalPlanes()
    bl.paths.fullkephera = allKephHives()
    -- etc

    in a big group at the bottom.

    I also can't guarantee this will work if they switch to a better walker solution than mine =)
  • Xenthos said:
    "This package also includes a genrunner, so it can automatically bash and influence full areas. I am not responsible if you use afk bash and get punished for it. What you do with my system is entirely on you."
    Do you at least have a check in it to move on if someone else is already in the room when you walk in?
    It does now! Woo, new features!
  • XenthosXenthos Shadow Lord
    Awesome, thank you!  Being kind to other players is A+. :)
    image
  • AeldraAeldra , using cake powered flight
    Having had the chance to use Llani's basher, I can only say this thing is positively lovely and amazing. thanks for making it happen <3
    Avatar / Picture done by the lovely Gurashi.
  • After sleeping it occurs to me to also mention you need to be able to walk between those areas using the mudlet mapper normally, or it won't be able to move between them. It doesn't do anything special for walking between areas.
  • edited October 2021
    I just added a snippet to the walker to have it use bixes over longer (>10 rooms in length) paths, which should make stuff like hopping between elemental planes much faster, as well as making it way less painful to start a specific path while being far from that area. However, the mapper must still be able to establish a foot path between the two points or it won't even consider moving to that room in the first place. I might look into chopping further into the demonwalker code to improve that functionality in the future, but it depends on how and when inspiration strikes for the problem. I figured out an okay way to do it, and once it has exhausted all rooms you can reach by normal walking, it'll then try to use bixes to reach any other rooms to which normal paths failed. 
  • Thank you, so much! This is awesome! I added something to imbue my esteem, but that may be something you want to add in the future. 
  • The copies on this thread are a little out of date, because it wasn't practical to keep posting a new copy every time I made some small change. The more up-to-date version on my github does have esteem auto-imbue (it'll do it once you pass 250 esteem - not on every influence. It's just a personal preference for round numbers!)
  • Just in case anyone wants a quick fix for a warrior, you can double the following line in the attack script: bl.send(string.format(bestAttack, target)). If you are using strike as your attack then it will swing with both arms.
  • This is so awesome - thank you for creating + sharing!!

    With custom paths - is there any way to create a custom path for an area that's not mapped? For example, I gathered all the room numbers for the dream realm for the Aegis quest and saved it to the Paths file, but Bloom tells me the area is unmapped.
  • I've made some aliases to quickly start and stop bashes/influence. Just a couple of aliases to trigger other aliases since I was too lazy to copy-paste Llani's code!


    Bloom Bash Area - bba

    Bloom Influence Area - infa

    Bloom Full Stop - bs


    https://drive.google.com/file/d/1wNMEdEzxOb-PR0K7m4k8fd7Ewh12NvT_/view?usp=sharing

  • It doesn't seem to want to register my bashing attack. I try to do "bloom alias fire cat add" and it's like "No, I don't appreciate this." I'm not sure how to get it to recognize that I want to do more than one word.
  • EritheylEritheyl ** Trigger Warning **
    I actually have no idea how the alias part works, and so I never use it. What you want to do is go into the Bloom config script file, and place your attack in there (really just amounts to changing the example id to 'cat').
    Crumkane, Lord of Epicurean Delights says, "WAS IT INDEED ON FIRE, ERITHEYL."

    -

    With a deep reverb, Contemptible Sutekh says, "CEASE YOUR INFERNAL ENERGY, ERITHEYL."
  • @Eritheyl -- That's a huge help, thank you so much. I hadn't even considered looking at the config scripts because I'm so out of it lately, lol.
  • edited May 2022
    [Nevermind, figured it out]
  • LuceLuce Fox Populi
    So, for the record, BLOOM ALIAS is for adding aliases of things you are going to attack, so that, for example, if you're in the gray moors, you could do BLOOM ALIAS KROKANI ADD so that instead of targeting the krokani by their ID, it'll use the alias so that your gnomeweapon's iterative attacks aren't whiffed in a room full of badguys that need killing.
  • EritheylEritheyl ** Trigger Warning **
    Luce said:
    So, for the record, BLOOM ALIAS is for adding aliases of things you are going to attack, so that, for example, if you're in the gray moors, you could do BLOOM ALIAS KROKANI ADD so that instead of targeting the krokani by their ID, it'll use the alias so that your gnomeweapon's iterative attacks aren't whiffed in a room full of badguys that need killing.
    oh HELL that's exactly the thing I've been wanting but did not realize was already actually a thing. blessed art thou.
    Crumkane, Lord of Epicurean Delights says, "WAS IT INDEED ON FIRE, ERITHEYL."

    -

    With a deep reverb, Contemptible Sutekh says, "CEASE YOUR INFERNAL ENERGY, ERITHEYL."
  •  My pet was supposed to be using breathe gas, started using bash instead, and now it does literally nothing.  Could some one help me? Thank you.
    A lack of pain shows the superiority of Undeath over pitiful life itself." ~ Vareth v'Vanecu, Necromancer
Sign In or Register to comment.