Skip to content

Someone smack some sense into me.

So, as a beginner, I just want to get a sense for the massive scope of all this.

So, in order to be reasonably helpful in PvP (currently playing ranger), a number of scripts are required, right? Some kind of battling script, a limb break tracker, an afflictions/toxins tracker, a shield/rebounding tracker.

For toxins, lets say, in order to create a decent tracker. You're going to need all the 1st person, 2nd person and 3rd party/room messages that each toxin gives and each cure for each toxin gives and when those appear on the screen, it triggers some kind of list that shows them to you?

That seems like it'd take 100 years for a guy like me to get done.

The thing is, I'm reading all these javascript tutorials and also learning on codecademy (i'm using the online client) and I'm getting pretty decent with syntax and whatnot, but the tutorials don't list imperian specific commands and things. I found out that send_direct() will input commands into the game, but send_direct() is nowhere to be found in any of these tutorials. How am I supposed to get this info?

I know this is half question/half just complaining, and a lot of you have already been tremendously helpful, but wow. How are you ALL able to do this stuff?!

Comments

  • Most of us just tinkered with it for years to get what we have. I'd suggest picking up a new client though. The two main clients are Mudlet(free) and Cmud(paid), there are plenty of people that can help with each client, and some people even have systems with all that stuff included on the forums or at the very least are willing to hand it over if asked.

  • edited November 2014
    The best thing to do if you want to seriously start working on this stuff is to move to a third part client. The most popular one is Mudlet, which is free. CMUD is another alternative. While the IRE client is actually quite good, it suffers from the fact that none of the established players are using it, which makes it much harder to get help when you're using it.

    With that said, the coding in these games is actually deceptively simple; if you learn how to use variables and if/then/else statements, you can handle damn near every situation you come across. Maybe your approach will be technically sloppy, because of advanced features you don't know how to use, but a modern computer can handle virtually any task in this game you set it to without flinching, no matter how inefficient your system is.

    The hardest thing about it is just learning how to think about the problem and break it down into something that you can code, and that just takes practice,

    This is an example of how I break down a system. I'll go over rebounding/shield, because it's an easy topic and it's very important in combat. This will all be pseudocode; it will not work in any client, but it will show you the kind of thing you should implement.

    Decide what you want to track. The first thing I do is break down what information I want to keep track off and how I am going to track it. In this case, it's the status of the target's shield and the target's rebounding; we will track these in two variables, tshield and trebound.

    Decide when to update your information: This is a simple list of criteria. What changes do you want to track? When do you not want to update it. In this case, we have a few situations:

    • We want to update it when their shield or rebounding goes up
    • We want to update it whenever we hit their shield or rebounding.
    • We want to update it when they drop their defenses
    • We want to update it when we remove one of their defenses
    • We want to update it when a teammate removes one of the defenses.
    • We do not want to update it when the message is for somebody other than the target
    Build the triggers: Set up your triggers so that your set of triggers meets your requirements. My set of triggers might look like this:
    • /action {Dude shields!} {if (Dude is the target) (tshield = 1)}
    • /action {I hit Dude's shield!} {if (Dude is the target) (tshield = 1)}
    • /action {Guy razes Dude's shield!} {if (Dude is the target) (tshield = 0)}
    • /action {I raze Dude's shield!} {if (Dude is the target) (tshield = 0)}
    • /action {Dude drops shield!!} {if (Dude is the target) (tshield = 0)}
    • /action {Ranger pierce Dude's shield!} {if (Dude is the target) (tshield = 0)}
    And so forth. Obviously I'm going to need many more triggers to account for all the messages, but once you know what you want the trigger to do it's easy to add new triggers; you can often just c/p the same logic into the triggers repeatedly, maybe with a few modifications.

    Build the aliases:  Now that you're tracking this information, use it! My alias might look something like...
    • /alias {tqj} {if (tshield == 1 or trebound == 1) then (pierce target)  or else (qjab target)}
    Try it a few times yourself and then post on the forums when you can't get it working: Somebody will here will help you troubleshoot it.The answer will probably be either "improperly initialized variables" or a regex problem, fyi.


    "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."

  • Wow, Dicene for president. I can't even begin to thank you for all your help. And Khizan for his help in meta-analysis of things.
  • edited November 2014
    Edit: Apparently I don't know how to quote:

    F = Focus. Whether or not an affliction can be FOCUSed away by someone who has a transcendent 
    knowledge of Survival. Focus has a 4-second balance and only cures certain mental afflictions. Note 
    that not all Focusable afflictions count for Brainmelt.

    P = Purge. Whether or not you can PURGE your BLOOD of an affliction, usable by those that have 
    transcended Antidotes. Purge has a 15-second balance and only cures toxin afflictions(whether or not 
    they were actually afflicted through a toxin.) Note that all afflictions that can be purged can be 
    inflicted through toxins. Inversely, the effects of all toxins, apart from Benzene, Benzedrine(crippled
    arms/legs), and Hemotoxin can be purged.

    Just adding in rq, Focus and Purge aren't trans skills. Everybody at basic lowbie levels has access to them. Trans just makes the recovery time faster.
     You say, "This is much harder than just being a normal person."
  • edited November 2014
    To give more information on the times:

    Focus has a cooldown of 8 seconds when initially learned (at 75% Adept survival). It is reduced to 4 seconds when Lucidity is learned (at Transcendent).

    Purge blood has a cooldown of 35 seconds when initially learned (at 0% inept antidotes - everyone has it). This is reduced to 15 seconds at Transcendent antidotes,
    Like what we're doing? Why not take a second to vote? Vote for Imperian at http://www.imperian.com/vote
  • IniarIniar Australia
    edited November 2014
    @Mirrottes

    Mirrottes said:
    So, in order to be reasonably helpful in PvP (currently playing ranger), a number of scripts are required, right? Some kind of battling script, a limb break tracker, an afflictions/toxins tracker, a shield/rebounding tracker.

    There are several kinds of combatants, and as a function of your class and as you improve in IG skill, personal awareness and coding ability, you progress through these:
    - non-liability combatant
    - useful combatant
    - competent combatant
    - dangerous combatant

    To work through the 'massive' scope of what needs to be done, simply break it down into little chunks. For each chunk, there is a step-wise process:- identify the issue, list the solutions, harvest the messages, prepare your solutions and test them. As a ranger, you barely need a toxin tracker (in fact, arguably, only Outrider requires some semblance of reliable tracking in AM). Yes, it makes you more dangerous, but it is far beyond the basics of what you need to learn in the first instance. I list here as an example of what you -could- do:

    Week 1 (non liability)
    - Learn and deal with rebounding and shield, so you can attack accurately and efficiently
    - in your case, this is being able to swap between pierce and qjab
    - in terms of coding, it is as simple as Khizan puts it
    - Learn how to follow when someone calls a primary target

    Week 2 (non liability)
    - Learn what keeps you alive
    - in the case of ranger, remember to keep up things: barkskin, vitality, balancing, counter, weathering
    - general things you need to know: how to keep both cloak and mass up
    - start getting the tempo of when you need to use the shield tattoo
    - start getting the tempo of what you need to escape a room - walk out, vault or tumble
    - make a panic alias to walk/tumble in directions you can
    - learn what a shard wall is, and how to stall people
    - learn how to undo a shard wall
    - Get into as -many- battles as you can, :especially: the ones where you are likely, but not unavoidably, the losing end - you learn a lot more from losing than by winning through sheer numerical superiority. 

    Week 3 (useful)
    - Learn what hinders your allies, and what helps them, from your end
    - remember that a large number of AM classes use limbs, and because they track their limb hits, do not hit the same limb as them (unless asked to)
    - learn how to use and track 'lockup', one of your potent holding skills
    - learn how to use your net (and other) arrows, as you may need to hold a specific target, or work from outside the room

    Week 4 (useful -> competent)
    - Keep learning all the things that make you a 'useful' team member: tentacle, web, butterfly tattoos, longshot, strangle, wedge.
    - Finally, learn what ranger -really- is all about; the puzzle that you are trying to solve is simply: 

    how do I keep someone from pulling an incendiary arrow in the amount of time it takes for the arrow to burn down (10s)?

    - Everything else is simply means to that end; limb tracking, affliction tracking, cure prioritization, whatever.
    - Find out all the things that stop people from pulling arrows: crippled arms, paralysis, prone, off-eq, whatever.
    - As a head-start, the method for which incendiary was designed for are limb breaks: 
    - assuming a limb breaks in 21 hits, then it will show the following messages:
    (7 hits) :: ^(\w+)'s (.*) trembles slightly under the blow\.$
    (14 hits) :: ^You notice several bruises forming on (\w+)'s (.*)\.$
    (21 hits) :: ^(\w+)'s left leg has been mutilated.
    - a 'limb' break delivers two afflictions: crippled limb, and damaged limb. 
    - (AFFLICTION SHOW CRIPPLED RIGHT ARM and AFFLICTION SHOW DAMAGED RIGHT ARM)
    - DAMAGED is cured by restoration which takes four seconds, and must be cured before CRIPPLED
    - People can wax lyrical about how it all works, but what you need to do, is find a non-templar and break their right arm.
    - Then find a templar wearing limb armour, and break their arm too.
    - Watch how it works, specifically how people heal out of it, and ask many questions (preferably to a competent ranger ((and ask about butisol)))

    Week 5 (useful -> competent)
    - Work out what exactly you need to achieve your primary goal, with the aid of another ranger. (Hint: no affliction tracking required)
    - Write down the minimum of what you need to 'code' to achieve this goal. (Hint: you'll probably need five aliases)
    - Find someone and practice. Practice. And then practice more.

    Week 6 (barely competent)
    - Here is when you can really start to layer on the difficult coding: using toxins to enhance your offence, using a limb tracker to help verify your manual counting, creating alternative pathways to fulfilling the incendiary condition.
    - This is when you start to actually transition into learning about counters for your offence and how to go about sidestepping them.
    - As you can see, the requirement is extremely minimal. You don't need a fancy affliction tracker to get to this stage, and certainly not for ranger. Remember that you are already 4 weeks in of being a 'useful' team member, and if you keep learning, you'll become a competent one.
    - Here is where you will also start to learn how to recognise situations where your incendiary has/is already/jointly fulfilled by another team member, or where you could align your efforts with, say, a monk, and both pull off your own kill methods faster than you would individually.

    Remember, coding is a method to solve a problem - be sure that the problem you are solving is one you genuinely need to solve first.

    Good luck and ask many questions.
    wit beyond measure is a Sidhe's greatest treasure
  • For reference, Hypnosis 3P messages:

    Impatience: ^(\w+) shuffles (?:his|her) feet in boredom\.$
    Clumsiness: ^(\w+) shakes (?:his|her) head dizzily\.$
    Addiction: ^A look of sheer longing passes over (\w+)'s face\.$
    Masochism: ^An odd expression flits quickly upon (\w+)'s face\.$
    Loneliness: ^(\w+) glances nervously around the room\.$
    Claustrophobia: ^(\w+) begins to pant in terror\.$
    Stuttering: ^(\w+) makes an oddly stuttered sound\.$
    Hallucinations: ^(\w+) squints strangely at you\.$
    Pacifism: ^(\w+) smiles, a look of radiant peace spread across (?:his|her) features\.$
    Hypersomnia: ^(\w+)'s eyes grow heavy and start to close\.$
    Dementia: ^(\w+) stares about (?:him|her)self frenziedly, wild-eyed\.$
    Deadening: ^(\w+) looks about with a dazed expression on (?:his|her) face\.$
    Epilepsy: ^(\w+) twitches imperceptibly\.$
    Agoraphobia: ^(\w+) is gripped with fear, staring out with terrified eyes\.$
    Paranoia: ^(\w+) narrows (?:his|her) eyes at you unnervingly\.$
    Recklessness: ^(\w+) grits (?:his|her) teeth and a resolve flashes fiercely across (?:his|her) features\.$
    Vertigo: ^(\w+) stumbles suddenly, unable to catch (?:his|her) balance\.$
    Heroism: ^(\w+) stands upright and flexes (?:his|her) muscles\.$
    Lethargy: ^(\w+) suddenly slumps down wearily\.$
    Anorexia: ^(\w+) suddenly looks nauseous\.$
    Confusion: ^(\w+)'s eyes grow vacant and (?:his|her) jaw hangs open\.$
    Stupidity: ^A glazed look descends over the features of (\w+)\.$
    Generosity: ^(\w+)'s eyes gleam with generosity\.$
    image
  • Some other things I had missed:

    3P Cure: 
    Sulfonal: ^(\w+) appears less dizzy\.$

    3P Toxin Afflictions:
    Weariness: ^(\w+) slumps with a weary groan\.$
    Butisol: ^(\w+) appears flushed, (?:his|her) skin sweating heavily\.$
    Calotropis: ^(\w+)'s skin suddenly turns pale and (?:he|she) begins sweating profusely\.$
    Numbness: ^(\w+) appears terrified as \w+ muscles seem to become difficult to control\.$
    Hemotoxin: ^(\w+) pales suddenly and slumps perceptibly\.$
    Withered Throat: ^(\w+) panics, grasping at (?:his|her) shriveling throat\.$
    Slow Elixirs: ^(\w+) grimaces, gripping at (?:his|her) throat\.$
    Slow Herbs: ^(\w+) appears hungry\.$
    Metrazol: ^(\w+)'s .+ suddenly goes limp\.$
    Slow Balance: ^(\w+) stumbles and appears off balance\.$
    Sunallergy: ^(\w+) winces slightly as (?:his|her) skin reddens\.$
    image
  • edited December 2014
    Another rebounding message. I make no guarantees about the regex, so I'm giving both the conversion and the original

    A cocky cobalt kestrel shreds Kliko's aura of rebounding with its vicious steel 
    talons.

    ^.+ shreds (\w+)'s aura of rebounding with its vicious steel talons.$
Sign In or Register to comment.