Jump to content

Is a dragon breath counted as a ranged attack?


Recommended Posts

You know I have never actually looked into this.  But if it does Pallegina with Aru-Brekr would be a great breath dodger lol

Edited by Torm51

Have gun will travel.

Link to comment
Share on other sites

Boeroer is right.

 


Technically through there is AttackRanged class that extends AttackBase, and AttackAOE that extends AttackRanged. And dragon breath is an AttackAOE.

 

Afaik "Ranged Deflection Bonus" (Aru-Breaker) works vs AttackRanged attacks that are considered ranged.

And "Reflecting" (The Golden Scales, Durganized Shields) works vs AttackRanged attacks that are considered ranged and are single-targeted.

 

AttackRanged is considered ranged if !ApplyToSelfOnly and there is PathsToPos (i.e. you click somewhere not on the caster himself; true by default)

AttackAOE is considered ranged if !ApplyToSelfOnly, there is PathsToPos and !IsCone.

 

P.S. Gafonercos, Adra, Sky and Alpine dragons use cone breath aoe. While Turisulfus has circular aoe.

Edited by MaxQuest
  • Like 2
Link to comment
Share on other sites

Argh, I mistook Aru-Brekr's defensive bonus as reflection (like Golden Scales has). Sorry.

 

But still: Dragons' breath attacks (which are cone-shaped except one) will not work with Aru-Brekr (if I read MaxQuest's answer correctly). Only Turisulfus' circular breath attack will lead to a defensive bonus.

 

Quite complicated check by the way.

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

Yeap, and you have read correctly. Only Turisulfus' breath would match Aru-Brekr's condition. But then again: a bonus to deflection doesn't make any difference vs a spell that targets reflex.

Edited by MaxQuest
Link to comment
Share on other sites

Well I guess with the unspeakable amount of hours I have put into this game you would think I know that! But it does help with search like Blades says lol.  Anything to help the community of course.  All of the answers are much appreciated!

Edited by Torm51

Have gun will travel.

Link to comment
Share on other sites

If dragon attacks work that way, how does the diving helmet prevent them.  Are they a unique subclass of AoE attacks, or does the diving helmet look for each one.

Diving Helmet provides two persistent buffs:

ResistKeyword 35 vs DefenseType (5) {None}, Keyword ("DragonBreath")

ResistKeyword 20 vs DefenseType (5) {None}, Keyword ("poison")

 

This means that it adds 35 to a defensive roll vs any spell or ability marked with "DragonBreath" keyword, and it doesn't matter which defense is targeted.

 

P.S. Alpine, Sky and Adra dragon breaths are marked with "DragonBreath". While Turi and Gafo breaths are marked with "DragonBreath Poison". But I don't know if this helmet provides 35 or 55 defense vs them, or even if "DragonBreath Poison" is recognized at all, because there are no keywords on their respective tooltips.

  • Like 1
Link to comment
Share on other sites

Do you know if keywords are case sensitive in PoE?

 

In C# (which is used by Unity) the usual string comparison works with "System.StringComparison.Ordinal" which is case sensitive, but you can use "OrdinalIgnoreCase" as well.

 

Although I like a keyword approach, using case sensitivity with keywords might be a bad idea. In this case, it might not work because the keywords "poison" and "Poison" will not be considered equal if you choose to use "Ordinal" instead of "OrdinalIgnoreCase". And once designers (who don't know this case stuff) and programmers (who don't know the right spelling of keywords) start to place keywords indepentendly things get messy.

 

For example I see a lot of names where designers and programmers used different words although they mean the same (for example in the game object folder: Foregemasters Gloves/Forgemaster's Gloves, Rumbalt/Rumbald and so on). So if you don't have some sort of keyword completition or a spell checking this approach can be very prone to bugs and errors.

 

Last time I used a lot of keywords (or  tags, labels or how you want to call it) in a project I had to write a special phonetic search to filter all the duplicates which got misspelled. 

 

I didn't test it in PoE, but I suspect that the Diving Helmet will provide no bonus to the poison part of the swamp dragons' breath.

Edited by Boeroer

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

Do you know if keywords are case sensitive in PoE?

I don't tbh.

 


Edit: made a search by:

- ".StringComparison.Ordinal" - used in at least 17 files

- ".StringComparison.OrdinalIgnoreCase" - used in at least 15 files

 

ewA2psh.png

 

 

Majority of checks use OrdinalIgnoreCase.

But RighteousSoul and two checks from StatusEffect use case sensitive comparison (and yes... one of them is for poison):

 

 

public bool IsPoisonEffect
{
  get
  {
    return (this.m_abilityOrigin != null && this.m_abilityOrigin.Attack != null && this.m_abilityOrigin.Attack.HasKeyword("poison")) || (this.m_afflictionOrigin != null && this.m_afflictionKeyword != null && this.m_afflictionKeyword.Equals("poison", StringComparison.Ordinal));
  }
}

public bool IsDiseaseEffect
{
  get
  {
    return (this.m_abilityOrigin != null && this.m_abilityOrigin.Attack != null && this.m_abilityOrigin.Attack.HasKeyword("disease")) || (this.m_afflictionOrigin != null && this.m_afflictionKeyword != null && this.m_afflictionKeyword.Equals("disease", StringComparison.Ordinal));
  }
}

 

Edited by MaxQuest
Link to comment
Share on other sites

Typical programmer's error that can happen during development. Especially code completion (as awesome as it is) can lead to such an oversight. But it should be easy to fix with a search that you did. A simple "search & replace" in the IDE should do the trick.

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

Yeap. Been there)

 

 

 

Have to note that if the project is big (and PoE is), it would make sense to put these keywords in a separate static class and use global constants instead of hardcoded strings.

If I remember C# syntax correctly, something like:

public static class KEYWORDS
{
  public const string POISON = "poison";
  public const string DRAGON_BREATH = "dragon_breath";
}
Easier to mass rename, and safer.

 

 

Edited by MaxQuest
  • Like 1
Link to comment
Share on other sites

That would have been way better.

 

But maybe also non-programmers had to write down stuff - maybe into a database or a readable file format or whatever - or they used some other tool to create game objects without having to know C#. I have no idea, but there might be reasons why they used strings.

 

OBS - they might have great ideas and so on - but as I said a while ago they don't seem to write the most sophisticated code. ;) But on the other hand: who does when a deadline is approaching. ;)

  • Like 1

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

Just tested, it doesn't seem like the helmet provides any defenses at all against the bog dragons.  Will report.  That will also explain why Eder could shrug off attacks from the other scaled PotD Dragons and then dropped like a fly against Llengrath.

Edited by anameforobsidian
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...