• Visit Rebornbuddy
  • EB and Contagion

    Discussion in 'Archives' started by ysbear, Dec 21, 2015.

    1. ysbear

      ysbear Member

      Joined:
      Mar 13, 2014
      Messages:
      147
      Likes Received:
      1
      Trophy Points:
      18
      Has anyone tried using this with Old Routine?

      Any suggestions on set up?

      Thanks.
       
    2. Tormiasz

      Tormiasz Community Developer

      Joined:
      Jun 16, 2014
      Messages:
      701
      Likes Received:
      5
      Trophy Points:
      18
      No because it sucks balls :D
       
    3. ysbear

      ysbear Member

      Joined:
      Mar 13, 2014
      Messages:
      147
      Likes Received:
      1
      Trophy Points:
      18
      Hahaha, yeah for botting it doesnt seem to be optimal. BUt its still an awesome skill.
       
    4. Tormiasz

      Tormiasz Community Developer

      Joined:
      Jun 16, 2014
      Messages:
      701
      Likes Received:
      5
      Trophy Points:
      18
      No, it really sucks balls. You need to cast it and essence drain to make it work. While you are casting those two, I'll kill the mobs with one.
       
    5. lyvewyre

      lyvewyre Member

      Joined:
      Jan 3, 2013
      Messages:
      418
      Likes Received:
      12
      Trophy Points:
      18
      Thanks for the opinion. There are a number of examples out there that can show how these two skills can bring back the burn prolif of old, with extremely strong single target damage. So while YMMV with these skills, others might want to utilize them.

      Back to the topic, OP did you end up trying this out to see if you could get something working? I can see setting contag to aoe ranged and ED to ST ranged, but that'll end up pretty sub optimal for ED spread as it would spam contag till it switched to ST.

      I'm hopeful it wouldn't take much tweaking to get the mechanic working. Essentially we just need the bot to ensure contagion is on the target and then cast ED. If it could do a debuff check on the target to see if it has contagion debuff, then prioritize casting ED on target/s till a target is found without the contagion debuff. Is there a dev / routine guru out there that can comment if this would be doable?
       
    6. Unknown Buddy

      Unknown Buddy Member

      Joined:
      May 20, 2015
      Messages:
      603
      Likes Received:
      17
      Trophy Points:
      18
      It is absolutely doable. You can read more on debuffs / making sure they are applied here: https://www.thebuddyforum.com/exilebuddy-forum/combat-routines/228701-curse-hit.html

      You could basically set up contagion to act like a curse (debuff), then cast X skill if the debuff is applied.
       
    7. lyvewyre

      lyvewyre Member

      Joined:
      Jan 3, 2013
      Messages:
      418
      Likes Received:
      12
      Trophy Points:
      18
      Awesome work! I see where you are going with it. I am not familiar enough how to set these things up as far as making the contagion debuff an aura that we'd replace vulnerability with in your example. And yours is setup for rares+ whereas this would need to be setup for anything unless you build contag to do enough damage, which is sub optimal dps wise.

      I'm thinking something like:
      Code:
      //Contagion and Essence Drain Spread
      var ED_Spread = myPos.Distance(cachedPosition) < OldRoutineSettings.Instance.MaxRangeRange && Has_Contagion && !ED_Debuff [COLOR="#FF0000"]I'm not sure how to write the variable, but we are checking if the ED debuff is not present as we don't need to recast it on a mob that already has it[/COLOR]  ;
      if (ED_Spread)
      {
      	var skill = LokiPoe.InGameState.SkillBarPanel.Slot([COLOR="#FF0000"]1[/COLOR]);
      	if (skill.CanUse() &&
      	!bestTarget.HasAura("[COLOR="#FF0000"]Essence Drain[/COLOR]") &&
      	bestTarget.HasAura("[COLOR="#FF0000"]Contagion[/COLOR]"))
      							
           {
      	//await DisableAlwaysHiglight();
      					
      	var err1 = LokiPoe.InGameState.SkillBarPanel.UseAt([COLOR="#FF0000"]1[/COLOR], false, cachedPosition);
      	if (err1 == LokiPoe.InGameState.UseError.None)
      		return true;
      
      	Log.ErrorFormat("[Logic] Use returned {0} for {1}.", err1, skill.Name);
           }
      }
      
      I removed the rarity check and condense check as we want this to cast on anything with the debuff.

      So once this is working (IE Variables are setup properly) this would cast ED on anything that has the contagion debuff. Theorectically, if we set contagion to Ranged.Aoe and set this as a higher priority, it will contagion then spam ED until it cannot find a bestTarget with contagion debuff that doesn't have the ED debuff. At that point if there are still mobs around it will go back to casting contagion.

      We're still not completely there as far as optimizing this spec, as this would avoid casting ED on any target that has ED debuff. So for bosses which do not go down within half a second under ED, it would spam contagion until no ED was detected.

      In that case I'd set another one just like this, with the rarity check for rares and above, that would spam cast ED instead.

      So I think it would look something like:

      Code:
      //Contagion and Essence Drain Boss
      var ED_Boss = myPos.Distance(cachedPosition) < OldRoutineSettings.Instance.MaxRangeRange && Has_Contagion && cachedRarity >= Rarity.Rare [COLOR="#FF0000"]I'm not sure how to write the variable, but we are checking if the Boss/Rare has Contagion and is Rare and above [/COLOR]  ;
      if (ED_Boss)
      {
      	var skill = LokiPoe.InGameState.SkillBarPanel.Slot([COLOR="#FF0000"]1[/COLOR]);
      	if (skill.CanUse() &&
      	bestTarget.HasAura("[COLOR="#FF0000"]Contagion[/COLOR]"))
      							
           {
      	//await DisableAlwaysHiglight();
      					
      	var err1 = LokiPoe.InGameState.SkillBarPanel.UseAt([COLOR="#FF0000"]1[/COLOR], false, cachedPosition);
      	if (err1 == LokiPoe.InGameState.UseError.None)
      		return true;
      
      	Log.ErrorFormat("[Logic] Use returned {0} for {1}.", err1, skill.Name);
           }
      }
      
      Does this look right? As mentioned earlier in the thread, I am not a coder and am not familiar with the basics, all I'm applying is logic based on Unknown Buddy's linked post about debuff checking. If anyone can do some corrections and let me know how I'd set up the skills/variables I'd happily test it as I have a character ready.

      Also, while talking about bosses, we'd want to drop a wither totem. So I'm thinking just setting up a rarity check on the OldRoutine totem drop logic. I'm not sure how I'd set it at a higher priority than ED_Boss but lower than ED_Spread, so if anyone can help with that I'd appreciate it.

      Cheers for the help Unknown Buddy, hopefully we can get this working. And for those who are wondering how this is comparable to a cycloner, in my set up I hardly ever cast contagion, as it is set to a low level CWDT/IAOE. Most of the time I'm just casting essence drain, survivability comes from quad curse. I want to try out a bino's (it got nerfed yes, but it went from stupidly OP to very usable, not complete horse shit like some will tell you). The bug was rolling the essence drain dot directly into the poison dot, instead of 10% like it was suppose to. So no more 30k healing per second, but more around the 3k healing per second, which is still sufficient for map survival outside of 1-shots (temp chains, fortify and enfeeble help with that).
       
    8. toNyx

      toNyx Well-Known Member

      Joined:
      Oct 29, 2011
      Messages:
      3,770
      Likes Received:
      35
      Trophy Points:
      48
      basically a debuff is shown as an Aura (often, not always, some debuffs are "hidden" like life flasks debuff) you'll have to be fast to actuall dump the stuff you need haha :D I would isolate a mob to process, basically start the bot, let your bot pop the contagion on it, dump, go into monsters tab and get the infos.

      You should find in those infos the correct naming of the "aura". that's pretty much like this for all auras.

      you can code using a simple way, you pretty much thought about it already

      Code:
      if (contagionslot != -1 && combat range is fine)
      {
          if (rarity == boss (unique))
          {
              specific behavior like idk, cast every X or shit
              return true; // This is important, to avoid processing the default contagion behavior.
          }
      
          process default contagion behavior
          return true; // same story, better process the good shtuff.
      }
      you should consider caching the important values, to avoid the routine throwing.

      to give it a priority is should execute first, that's why I've set up a boss/unique check before usual behavior, if it's a boss it'll behave differently.

      For the totem stuff I'm not sure that you need logic for it, any totem is handled by default as "support skill"
       
    9. lyvewyre

      lyvewyre Member

      Joined:
      Jan 3, 2013
      Messages:
      418
      Likes Received:
      12
      Trophy Points:
      18
      Ok never done this before but I think this is what you are referring to:

      Code:
      [Aura]
      BaseAddress: 0x9FBDE078
      SubInfo: 0x659E6468
      Name: Contagion
      InternalName: contagion
      Description: You are taking Chaos Damage Over Time
      CasterId: 1100
      OwnerId: 0
      BuffType: 30
      TimeLeft: 00:00:08.4670000
      MaxTimeLeft: 00:00:08.5000000
      Charges: 0
      IsInvisible: False
      IsRemovable: False
      
      [Aura]
      BaseAddress: 0x82D78E98
      SubInfo: 0x659E6828
      Name: Essence Drain
      InternalName: siphon_damage
      Description: You are taking Chaos Damage Over Time
      CasterId: 559
      OwnerId: 0
      BuffType: 30
      TimeLeft: 00:00:05.7670000
      MaxTimeLeft: 00:00:06.4600000
      Charges: 0
      IsInvisible: False
      IsRemovable: False
      
      Not sure what/how to achieve this, bit of snooping in OR I think you mean like this?

      Code:
      var cachedContagion = bestTarget.HasContagion;
      var cachedWither = bestTarget.HasWither;
      
      They were already present in OR, but where do I find/define what HasContagion or HasWither is? Would be good to make a HasEssenceDrain (HasED for short?) to make the checks pretty much the same style as to what is in OR now. I get the impression that the order in which it fires is based on which is higher in the list of if statements (ie as soon as it finds one that returns true it fires that first). If that is the case then ensuring the priority is easy.

      Ok I will give it a go. Essentially we're doing this for essence drain, so assuming I'd need to define an essence drain slot similar to the contagion one, is that as simple as setting private int _essencedrainSlot = -1; ? I notice further down on lines 497-501 it redefines _contagionSlot = con.Slot but con.Slot does not appear anywhere else. I'm guessing there is another file that needs to be edited to add an Essence Drain version?

      Yeah so checking through OR I found that HasWither is already present:
      Code:
      // Handle Wither logic.
      				if (_witherSlot != -1)
      				{
      					var skill = LokiPoe.InGameState.SkillBarPanel.Slot(_witherSlot);
      					if (skill.CanUse(false, false, false) && !cachedWither)
      					{
      						await DisableAlwaysHiglight();
      
      						var err1 = LokiPoe.InGameState.SkillBarPanel.UseAt(_witherSlot, true, cachedPosition);
      
      						if (err1 == LokiPoe.InGameState.UseError.None)
      						{
      							await Coroutine.Sleep(Utility.LatencySafeValue(250));
      
      							await Coroutines.FinishCurrentAction(false);
      
      							return true;
      						}
      
      						Log.ErrorFormat("[Logic] UseAt returned {0} for {1}.", err1, skill.Name);
      					}
      				}
      I figured to achieve what I wanted, all I would have to do is add && cachedRarity >= Rarity.Rare to the second if statement so it would look like:

      if (skill.CanUse(false, false, false) && !cachedWither && cachedRarity >= Rarity.Rare)

      Thanks for your help with this champ, really appreciate it!
       
      Last edited: Jan 5, 2016
    10. lyvewyre

      lyvewyre Member

      Joined:
      Jan 3, 2013
      Messages:
      418
      Likes Received:
      12
      Trophy Points:
      18
      So bit of an update for those interested. In trying to capture the 'auras' I stumbled upon the fact that contagion is already present in OldRoutine, and as long as you have it slotted on the bar, it will cast it if the bestTarget doesn't have the debuff. There's no logic set for essence drain, but what this means is that the gameplay functionality is already there out of the box, no modification to OldRoutine needed, as all you need to do is set Essence Drain to ST ranged and the bot will ensure contag is on the target before essence draining. So it simply 'works'.

      However, it doesn't handle anything more than that. So once contag is on the mob, it will spam essence drain if that is your only spell, regardless of whether mob has the ED debuff or not, dictated by the bestTarget obviously (at least from what I've noticed). If you're happy with that then no modification need be done. Slot in wither and it will drop a wither totem anytime one is not present.

      It's not quite dps optimal, but at least this means anyone can still use the combo. If ToNyx is still willing to help, I'm going to try and figure how to get the logic for ED working.

      Edit: Typo.
       
      Last edited: Jan 5, 2016
    11. Fujiyama

      Fujiyama Member

      Joined:
      Mar 27, 2014
      Messages:
      485
      Likes Received:
      4
      Trophy Points:
      18
      Any progress on ED?
       
    12. lyvewyre

      lyvewyre Member

      Joined:
      Jan 3, 2013
      Messages:
      418
      Likes Received:
      12
      Trophy Points:
      18
      Negative champ. Check out Orobouros routine, his latest update mentions putting in some ED logic.
       
    13. Hennes

      Hennes New Member

      Joined:
      Mar 6, 2017
      Messages:
      22
      Likes Received:
      0
      Trophy Points:
      1
      I guess this died?
       

    Share This Page