Short Questions Thread

Discuss Median XL!
User avatar
Scalewinged
Cow Ninja
1293 | 61
Common Posting Badge
Posted over 1.000 messages
Great Popularity Badge
Has a thread with over 50.000 views
Common Love Badge
Earned over 20 cookies
Diaco wrote:is there something I'm not understanding for traprat breakpoints? according to the speedcalc max fpa is 13 (!?) for 56 IAS... but Ferocity gives insane amounts of IAS which as it is, it's completely useless. Also, is it confirmed that Uninterruptable Attack is bugged and doesn't actually do anything?


Breakpoint is real so only profit from IAS on Ferocity is to counter slow effects which can be dreadful even on faster chars and can put you down to smth like 20 fpa on trap rat (no idea if it's possible to put chars speeds beyond lowest breakpoints).
UA is not bugged and esp useful for trap rat in my exp. Seems like 50% UA only making set extremely rise rat survivability (at least it can easily beat crafted gear with much more def/dr and even max block).
Istaryu
Harpylisk
1443 | 58
Common Posting Badge
Posted over 1.000 messages
Great Popularity Badge
Has a thread with over 50.000 views
Common Love Badge
Earned over 20 cookies
Common Guide Badge
Created a complete character guide
Diaco wrote:is there something I'm not understanding for traprat breakpoints? according to the speedcalc max fpa is 13 (!?) for 56 IAS... but Ferocity gives insane amounts of IAS which as it is, it's completely useless. Also, is it confirmed that Uninterruptable Attack is bugged and doesn't actually do anything?


I am pretty sure that trap rat attack frames are intentionally horrible, because you attack once with quill storm, and it hits your whole screen, 5 times. Obviously, i am just exaggerating a bit, but you get the idea, i think :) Same goes for thorn wall, it does a lot of dmg and multihits like crazy, so you dont need to stack a lot of it as a faster attacking multihitting skill.
User avatar
Jampula
Amazon Warrior
1677 | 91
Common Posting Badge
Posted over 1.000 messages
Great Popularity Badge
Has a thread with over 50.000 views
Common Love Badge
Earned over 20 cookies
Common Supporter Badge
Donated 1 time
Scalewinged wrote:UA is not bugged and esp useful for trap rat in my exp. Seems like 50% UA only making set extremely rise rat survivability (at least it can easily beat crafted gear with much more def/dr and even max block).

I had completely different results with pouncezon, high UA didn't seem to do anything. Pounce, even though it is warp attack it still uses attack animation (slow one), I got interrupted whether I had high UA or not, with Great Hunt too. High life and FHR/FBR much more important stats.
User avatar
SwineFlu
Heretic
402 | 53
Common Popularity Badge
Has a thread with over 10.000 views
Common Love Badge
Earned over 20 cookies
Scalewinged wrote:UA is not bugged and esp useful for trap rat in my exp.


I told you already a while ago that game doesn't care about this stat as long as it's not tied to the corresponding state. There is only one place in the code where this stat is queried by the game and this code snippet is definitely related to animation interruption.

I hope your C/C++ knowledge is good enough, otherwise I can post it in assembly language :coolstorybob:

Code: Select all

BOOL __usercall D2GAME_AnimInterrupt(D2GameStrc* pGame, D2UnitStrc* pChar, DWORD nSwitchMode, BOOL bCheckUsedSkill, D2SkillStrc* pActiveSkill)
{
   if (pChar == NULL)
      return FALSE;
   
   if (D2COMMON_CheckState(pChar, STATE_UNINTERRUPTABLE) == TRUE)
      return FALSE;
   
   if (pChar->nAnimMode == PLRMODE_DEATH || pChar->nAnimMode == PLRMODE_DEAD)
      return FALSE;
   
   if (nSwitchMode == PLRMODE_DEATH)
      return TRUE;
   
   if (bCheckUsedSkill == TRUE)
   {
      if (D2SkillStrc* pUsedSkill = D2COMMON_GetUsedSkill(pChar))
      {
         if (D2SkillsTXT* pSkillTxt = D2GAME_GetSkillTxtRecord(D2COMMON_GetSkillIdFromSkill(pUsedSkill, __FILE__, __LINE__)))
         {
            // SrvDoFunc = 67 - Charge, SrvDoFunc = 76 - WhirlWind
            if (pActiveSkill == pUsedSkill && (pSkillTxt->SrvDoFunc == 67 || pSkillTxt->SrvDoFunc == 76))
               return TRUE;
            
            if (pSkillTxt->InterruptFlag == TRUE)
            {
               if (D2COMMON_CheckState(pChar, STATE_CONCENTRATION) == TRUE)
               {
                  D2StatListStrc* pStatList = D2COMMON_GetStatListFromUnitAndState(pChar, STATE_CONCENTRATION);
                  int nConcentrationChance = D2COMMON_GetStatValue(pStatList, STATS_SKILL_CONCENTRATION, 0);
                  if (D2GAME_RandomEngine(&pChar->UnitSeed, 100) < nConcentrationChance)
                  {
                     if (pChar->nAnimMode == PLRMODE_NEUTRAL)
                     {
                        D2GAME_SwitchUnitAnimMode(pGame, pChar, NULL, PLRMODE_NEUTRAL, 0, 0, TRUE);
                        return TRUE;
                     }
                     
                     return FALSE;
                  }
               }
               
               if (D2COMMON_CheckState(pChar, STATE_CONCENTRATE) == TRUE)
               {
                  if (pChar->nAnimMode == PLRMODE_NEUTRAL)
                  {
                     D2GAME_SwitchUnitAnimMode(pGame, pChar, NULL, PLRMODE_NEUTRAL, 0, 0, TRUE);
                     return TRUE;
                  }
                  
                  return FALSE;
               }
            }
            else
            {
               if (pChar->nAnimMode == PLRMODE_NEUTRAL)
               {
                  D2GAME_SwitchUnitAnimMode(pGame, pChar, NULL, PLRMODE_NEUTRAL, 0, 0, TRUE);
                  return TRUE;
               }
               
               if (nSwitchMode == PLRMODE_ATTACK1 || nSwitchMode == PLRMODE_ATTACK2 || nSwitchMode == PLRMODE_CAST || nSwitchMode == PLRMODE_THROW || nSwitchMode == PLRMODE_SKILL1 || nSwitchMode == PLRMODE_SEQUENCE)
                  if (D2GAME_SkillInterrupt(pGame, pChar) == TRUE)
                     return TRUE;
               
               return FALSE;
            }
         }
      }
   }
   
   return TRUE;
}

Just so you know STATS_SKILL_CONCENTRATION is Chance of Uninterruptable Attack.
Diaco
Void Archon
883 | 43
Common Love Badge
Earned over 20 cookies
SwineFlu wrote:
Scalewinged wrote:UA is not bugged and esp useful for trap rat in my exp.


I told you already a while ago that game doesn't care about this stat as long as it's not tied to the corresponding state. There is only one place in the code where this stat is queried by the game and this code snippet is definitely related to animation interruption.

I hope your C/C++ knowledge is good enough, otherwise I can post it in assembly language :coolstorybob:

Code: Select all

BOOL __usercall D2GAME_AnimInterrupt(D2GameStrc* pGame, D2UnitStrc* pChar, DWORD nSwitchMode, BOOL bCheckUsedSkill, D2SkillStrc* pActiveSkill)
{
   if (pChar == NULL)
      return FALSE;
   
   if (D2COMMON_CheckState(pChar, STATE_UNINTERRUPTABLE) == TRUE)
      return FALSE;
   
   if (pChar->nAnimMode == PLRMODE_DEATH || pChar->nAnimMode == PLRMODE_DEAD)
      return FALSE;
   
   if (nSwitchMode == PLRMODE_DEATH)
      return TRUE;
   
   if (bCheckUsedSkill == TRUE)
   {
      if (D2SkillStrc* pUsedSkill = D2COMMON_GetUsedSkill(pChar))
      {
         if (D2SkillsTXT* pSkillTxt = D2GAME_GetSkillTxtRecord(D2COMMON_GetSkillIdFromSkill(pUsedSkill, __FILE__, __LINE__)))
         {
            // SrvDoFunc = 67 - Charge, SrvDoFunc = 76 - WhirlWind
            if (pActiveSkill == pUsedSkill && (pSkillTxt->SrvDoFunc == 67 || pSkillTxt->SrvDoFunc == 76))
               return TRUE;
            
            if (pSkillTxt->InterruptFlag == TRUE)
            {
               if (D2COMMON_CheckState(pChar, STATE_CONCENTRATION) == TRUE)
               {
                  D2StatListStrc* pStatList = D2COMMON_GetStatListFromUnitAndState(pChar, STATE_CONCENTRATION);
                  int nConcentrationChance = D2COMMON_GetStatValue(pStatList, STATS_SKILL_CONCENTRATION, 0);
                  if (D2GAME_RandomEngine(&pChar->UnitSeed, 100) < nConcentrationChance)
                  {
                     if (pChar->nAnimMode == PLRMODE_NEUTRAL)
                     {
                        D2GAME_SwitchUnitAnimMode(pGame, pChar, NULL, PLRMODE_NEUTRAL, 0, 0, TRUE);
                        return TRUE;
                     }
                     
                     return FALSE;
                  }
               }
               
               if (D2COMMON_CheckState(pChar, STATE_CONCENTRATE) == TRUE)
               {
                  if (pChar->nAnimMode == PLRMODE_NEUTRAL)
                  {
                     D2GAME_SwitchUnitAnimMode(pGame, pChar, NULL, PLRMODE_NEUTRAL, 0, 0, TRUE);
                     return TRUE;
                  }
                  
                  return FALSE;
               }
            }
            else
            {
               if (pChar->nAnimMode == PLRMODE_NEUTRAL)
               {
                  D2GAME_SwitchUnitAnimMode(pGame, pChar, NULL, PLRMODE_NEUTRAL, 0, 0, TRUE);
                  return TRUE;
               }
               
               if (nSwitchMode == PLRMODE_ATTACK1 || nSwitchMode == PLRMODE_ATTACK2 || nSwitchMode == PLRMODE_CAST || nSwitchMode == PLRMODE_THROW || nSwitchMode == PLRMODE_SKILL1 || nSwitchMode == PLRMODE_SEQUENCE)
                  if (D2GAME_SkillInterrupt(pGame, pChar) == TRUE)
                     return TRUE;
               
               return FALSE;
            }
         }
      }
   }
   
   return TRUE;
}

Just so you know STATS_SKILL_CONCENTRATION is Chance of Uninterruptable Attack.


what does this mean in practical terms? that UA doesn't work? would this be the case in SP mode too?
User avatar
SwineFlu
Heretic
402 | 53
Common Popularity Badge
Has a thread with over 10.000 views
Common Love Badge
Earned over 20 cookies
Diaco wrote:what does this mean in practical terms? that UA doesn't work? would this be the case in SP mode too?


This stat is hardcoded in a very specific way that prevents it from using without the corresponding state. In vanilla d2 it's linked to a Concentration state via Concentration Aura, meanwhile in MXL it's treated as usual item stat like MF. It doesn't matter whether you play in SP, over TCP/IP and I believe that even realm is not an exception.
Diaco
Void Archon
883 | 43
Common Love Badge
Earned over 20 cookies
SwineFlu wrote:
Diaco wrote:what does this mean in practical terms? that UA doesn't work? would this be the case in SP mode too?


This stat is hardcoded in a very specific way that prevents it from using without the corresponding state. In vanilla d2 it's linked to a Concentration state via Concentration Aura, meanwhile in MXL it's treated as usual item stat like MF. It doesn't matter whether you play in SP, over TCP/IP and I believe that even realm is not an exception.

in short, it doesn't work unless you have the concentration aura?
User avatar
SwineFlu
Heretic
402 | 53
Common Popularity Badge
Has a thread with over 10.000 views
Common Love Badge
Earned over 20 cookies
Diaco wrote:in short, it doesn't work unless you have the concentration aura?


Guess you could say that for the sake of simplicity, although it should be noted that you need to receive this stat from that particular aura, any additional bonus from your equipment is not gonna count towards the total chance. Yeah, I know it's kinda complicated but it is how it is, if anything you should blame Blizzard for that :D
User avatar
Jampula
Amazon Warrior
1677 | 91
Common Posting Badge
Posted over 1.000 messages
Great Popularity Badge
Has a thread with over 50.000 views
Common Love Badge
Earned over 20 cookies
Common Supporter Badge
Donated 1 time
SwineFlu wrote:
Diaco wrote:in short, it doesn't work unless you have the concentration aura?


Guess you could say that for the sake of simplicity, although it should be noted that you need to receive this stat from that particular aura, any additional bonus from your equipment is not gonna count towards the total chance. Yeah, I know it's kinda complicated but it is how it is, if anything you should blame Blizzard for that :D

That just made it more complicated. So amas Defensive Harmonys UA is useless?

Just for the interest of mechanism, don't really care for the stat. I tested it on Eastern Sun -mod a lot where you can easily reach 100% UA, never noticed any difference in gameplay.

Too weird stat, better to stick standard ones.
Tookmyrole
Skeleton
3 | 0
Hey all,

Quick backround,
As a newer player i started Soft core and have a couple chars in 120 range and havnt “beaten” the game but have always been drawn to HC. Yes ik its a bad idea but i enjoy the playstyle and accept the consequences.

My question: If i decide to over level some of the uber/dungeon areas where you get a charm, is it possible to be locked out and unable to re-enter if your level is to high? If so, which ones?

Searched for a bit couldnt find anything,
Thanks for your time!