Skip to content

What would the general logic for a basher look like?

Apologize if this is covered elsewhere - I'm trying to wrap my head around what logic a good basher should have.  I'm not asking anyone to write the code for me - in fact, I insist you don't, just provide a general outline of functionality.

Thanks

Comments

  • edited June 2015
    1) List of targets ordered in priority of what you wanna kill first, something like this:
               target_order = {
                   "first",
                   "second",
                   "third",
                   "fourth",
                   --etc
               }
    2) Target typically chosen when you enter the room, or kill something in the room. Or something enters the room when you move (use gmcp.Char.Items for this)
    3) Attacking when you have balance, and aren't otherwise hindered (this is easily done with gmcp.Char.Afflictions)
    4) Don't make it auto path/move, if you want to continue playing Imperian.


    Easy.
    image
  • So, to combine your 1. and 2., the target_order is a custom list that I specify, and when I enter the room, (or get a gmcp.Char.Items event), it will try to match items on the list to select the actual target?

    Is there anything you'd recommend with alternative attacks (from what I understand, certain afflictions work on mobs now?)

    4. Duh :)
  • Correct.

    Don't know much about alternative ones. I'd say if you can't combo them together though, then it's not going to be really worthwhile / noticeable. (Assassin/Renegade are the first to come to mind with this, being able to garrote/puncture + worm freeze)
    image
  • Have a list of all the rooms in an area, some custom built path, or some way to path-find your way around an area.

    Walk to the next room.

    Check IH or GMCP and determine how many aggressive/teaming mobs.

    Check Whohere or GMCP and determine how many other players.

    If both numbers are below the thresholds you've set, begin bashing that room.

    Queue an attack every time you spend balance/equilibrium. Also queue an attack every time you cure a hindering disease like Paralysis or Crippled Arm.

    Continue attacking through that target until you run out of targets in room.

    If you're using multiple targets, move to the next target and check the room(or just start bashing again).

    Otherwise, move to the next room.
    image
  • I need to figure this out, too. I'll be in touch with credits.
    (Ring): Lartus says, "I heard Theophilus once threw a grenade and killed ten people."
    (Ring): Lartus says, "Then it exploded."

    (Ring): Zsetsu says, "Everyone's playing checkers, but Theophilus is playing chess."
  • Thanks @Dicene.  I'm making good progress now.  One question - how can I tell whether the mob is teaming/aggressive using either IH or GMCP?  I think they're colored red in IH, but I really really don't want to try to be scraping colors in my triggers.
  • Honestly, that's exactly how I do it. I use this on the trigger for each individual mob in Mudlet. It'd be convenient if that info was included in gmcp, but it isn't currently I also keep a database of mob types and if I see them turn aggressive with the "<x> snarls angrily at you and moves in for the kill." message, I then mark that mob type as aggressive for future reference. It's not 100% accurate since (afaik) mobs of the same name can have different flags by id. Other people that feel like putting in more effort will mark individual ids.

    local fgColor = {}

    fgColor.red, fgColor.green, fgColor.blue = getFgColor()

    --display(fgColor)

    if fgColor.red==255 then

    table.insert(bashCheckAggro, matches[2])

    end

    image
  • This only works if you get mob info using IH, right?  I currently get room mob info from gmcp, so I might need to rework (or at least supplement it)

    Or maybe I'll adopt the hybrid approach, where I IH only when I see the "snarls angrily" line, and then store their id in a database that I'll check against when scanning the room with gmcp.

    Thanks, this is helpful.

    Also, per Aysari above, auto-moving is dangerous.  Am I in the clear if I never AFK while I bash?
  • I do not personally encourage automoving, but it is not against the rules. As long as you are paying attention to Imperian while bashing (which we test in a variety of ways, but none that are underhanded or sneaky), you aren't breaking any rule and won't be punished.
    Like what we're doing? Why not take a second to vote? Vote for Imperian at http://www.imperian.com/vote
  • The aggressive testing really isn't all that important, honestly.

    You can safely assume that everything in Demon's Pass or the Necropolis or Skegdald is aggressive, so you prioritize based on how dangerous they are. Crabs on Kilauthu are aggressive but nothing else there is so you just prioritize crabs higher than the other things there. 

    Iaat is really the only place where it matters, honestly.

    "On the battlefield I am a god. I love war. The steel, the smell, the corpses. I wish there were more. On the first day I drove the Northmen back alone at the ford. Alone! On the second I carried the bridge! Me! Yesterday I climbed the Heroes! I love war! I… I wish it wasn’t over."

  • IniarIniar Australia
    Eoghan said:
    I do not personally encourage automoving, but it is not against the rules. As long as you are paying attention to Imperian while bashing (which we test in a variety of ways, but none that are underhanded or sneaky), you aren't breaking any rule and won't be punished.
    I do love designing the auto-movers though... there're so many ways to make one :3
    wit beyond measure is a Sidhe's greatest treasure
  • edited June 2015
    So, Mudlet apparently doesn't persist variables between sessions, thus deleting a bunch of my hard work.  Is there some sort of data type that lets you save state between sessions?

    Thanks.

    edit: nm, figured it out.
Sign In or Register to comment.