Project 1999

Go Back   Project 1999 > Class Discussions > Melee

Reply
 
Thread Tools Display Modes
  #1  
Old 11-06-2024, 10:31 PM
Jafir Jafir is offline
Orc


Join Date: Jan 2013
Posts: 41
Default

Classic/Kunark/Velious Agility gave both Avoidance and Mitigation AC. Whether or not the formula on P99 adheres to that, I do not know. Here is a reference to mid-Velious, which still had a hard cap on Mitigation AC:

defense_agility_bonus method
Code:
if GetAGI() < 40: # penalty
  return (25 * (GetAGI() - 40)) / 40

if GetAGI() <= 60:
  return 0

if GetAGI() <= 74:
  bonus = 28 - (200 - GetAGI()) / 5
  return 2 * bonus / 3

# so 75+
bonus = max(200 - GetAGI(), 0)
if GetLevel() >= 40:
  bonus = 80 - bonus / 5
elif GetLevel() >= 20:
  bonus = 70 - bonus / 5
elif GetLevel() >= 7:
  bonus = 55 - bonus / 5
else:
  bonus = 35 - bonus / 5
return 2 * bonus / 3
compute_defense method
Code:
skill = max(GetSkill(SkillDefense), 0)
bonus = 400 * skill / 225 + defense_agility_bonus()

if IsClient():
  drunk = float(GetIntoxication() / 2)
  if drunk > 20.0:
    redux = min((110.0 - drunk) * 0.01, 1.0)
    bonus = int(bonus * redux)

return max(bonus, 1)
ac method
Code:
item_ac = 0
for slot in range(0, 21):
  item = GetItemPossession(slot)
  if item.IsValid and item.GetItemClass() == ItemClassCommon:
    item_ac = item_ac + item.GetItemAC()

if not IsMage():
  bonus = 4 * item_ac / 3

if IsClient() and bonus > 6 * GetLevel() + 25:
  bonus = 6 * GetLevel() + 25

weight_hardcap = 30
weight_softcap = 14

if GetLevel() > 59:
  weight_hardcap = 45
  weight_softcap = 24
elif GetLevel() > 54:
  weight_hardcap = 40
  weight_softcap = 20
elif GetLevel() > 50:
  weight_hardcap = 38
  weight_softcap = 18
elif GetLevel() > 44:
  weight_hardcap = 36
  weight_softcap = 17
elif GetLevel() > 29:
  weight_hardcap = 34
  weight_softcap = 16
elif GetLevel() > 14:
  weight_hardcap = 32
  weight_softcap = 15

if GetClass() == MONK:
  weight = GetWeight()
  if weight < weight_hardcap - 1:
    weight_bonus = float(level + 5)
    if weight > weight_softcap:
      temp_mod = min(float(weight - weight_softcap) * 6.66667, 100.0)
      weight_bonus = max(0.0, weight_bonus * ((100.0 - temp_mod) * 0.01))
    bonus = bonus + int(weight_bonus * 11.0 * 0.1)

if bonus < 0:
  bonus = 0

if GetClass() == MONK:
  weight = GetWeight()
  if weight > weight_hardcap + 1:
    weight_penalty = level + 5
    temp_mod = min(1.0, (float(weight) - 20.0) * 0.01)
    bonus = bonus - int(temp_mod)

if GetClass() == ROGUE:
  agi = GetAGI()
  if agi > 75 and GetLevel() > 29:
    LevelScaler = GetLevel() - 26
    if agi >= 100:
      LevelScaler = LevelScaler * 5
    elif agi >= 90:
      LevelScaler = LevelScaler * 4
    elif agi >= 85:
      LevelScaler = LevelScaler * 3
    elif agi >= 80:
      LevelScaler = LevelScaler * 2
    tmp_bonus = LevelScaler / 4
    bonus = bonus + min(12, tmp_bonus)

if GetRace() == IKSAR:
  bonus = bonus + min(35, max(10, GetLevel())

if IsMage():
  bonus = bonus + GetSkill(SkillDefense) / 2
else:
  bonus = bonus + GetSkill(SkillDefense) / 3

if GetAGI() > 70:
  bonus = bonus + GetAGI() / 20

if IsMage():
  bonus = bonus + TotalEffect(SPA_AC) / 3
else:
  bonus = bonus + TotalEffect(SPA_AC) / 4

if bonus < 0:
  bonus = 0

if IsClient():
  hardcap = 350
  if GetClass() == WARRIOR and GetLevel() > 50:
    hardcap = 430
  if (GetClass() == PALADIN or GetClass() == SHADOWKNIGHT or GetClass() == BARD) and GetLevel() > 50
    hardcap = 403
  if (GetClass() == RANGER or GetClass() == ROGUE or GetClass() == MONK) and GetLevel() > 50
    hardcap = 375
  if bonus > hardcap:
    bonus = hardcap

return bonus
That means you could have 12.75 Mitigation AC and 53.33 Avoidance AC from 255 Agility. Compared to 75 Agility where you get 3.75 Mitigation AC and 36.67 Avoidance AC.
Last edited by Jafir; 11-06-2024 at 10:45 PM..
Reply With Quote
  #2  
Old 11-06-2024, 11:33 PM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,758
Default

Quote:
Originally Posted by Jafir [You must be logged in to view images. Log in or Register.]
Classic/Kunark/Velious Agility gave both Avoidance and Mitigation AC.
 
Whether or not the formula on P99 adheres to that, I do not know. Here is a reference to mid-Velious, which still had a hard cap on Mitigation AC:

defense_agility_bonus method
Code:
if GetAGI() < 40: # penalty
  return (25 * (GetAGI() - 40)) / 40

if GetAGI() <= 60:
  return 0

if GetAGI() <= 74:
  bonus = 28 - (200 - GetAGI()) / 5
  return 2 * bonus / 3

# so 75+
bonus = max(200 - GetAGI(), 0)
if GetLevel() >= 40:
  bonus = 80 - bonus / 5
elif GetLevel() >= 20:
  bonus = 70 - bonus / 5
elif GetLevel() >= 7:
  bonus = 55 - bonus / 5
else:
  bonus = 35 - bonus / 5
return 2 * bonus / 3
compute_defense method
Code:
skill = max(GetSkill(SkillDefense), 0)
bonus = 400 * skill / 225 + defense_agility_bonus()

if IsClient():
  drunk = float(GetIntoxication() / 2)
  if drunk > 20.0:
    redux = min((110.0 - drunk) * 0.01, 1.0)
    bonus = int(bonus * redux)

return max(bonus, 1)
ac method
Code:
item_ac = 0
for slot in range(0, 21):
  item = GetItemPossession(slot)
  if item.IsValid and item.GetItemClass() == ItemClassCommon:
    item_ac = item_ac + item.GetItemAC()

if not IsMage():
  bonus = 4 * item_ac / 3

if IsClient() and bonus > 6 * GetLevel() + 25:
  bonus = 6 * GetLevel() + 25

weight_hardcap = 30
weight_softcap = 14

if GetLevel() > 59:
  weight_hardcap = 45
  weight_softcap = 24
elif GetLevel() > 54:
  weight_hardcap = 40
  weight_softcap = 20
elif GetLevel() > 50:
  weight_hardcap = 38
  weight_softcap = 18
elif GetLevel() > 44:
  weight_hardcap = 36
  weight_softcap = 17
elif GetLevel() > 29:
  weight_hardcap = 34
  weight_softcap = 16
elif GetLevel() > 14:
  weight_hardcap = 32
  weight_softcap = 15

if GetClass() == MONK:
  weight = GetWeight()
  if weight < weight_hardcap - 1:
    weight_bonus = float(level + 5)
    if weight > weight_softcap:
      temp_mod = min(float(weight - weight_softcap) * 6.66667, 100.0)
      weight_bonus = max(0.0, weight_bonus * ((100.0 - temp_mod) * 0.01))
    bonus = bonus + int(weight_bonus * 11.0 * 0.1)

if bonus < 0:
  bonus = 0

if GetClass() == MONK:
  weight = GetWeight()
  if weight > weight_hardcap + 1:
    weight_penalty = level + 5
    temp_mod = min(1.0, (float(weight) - 20.0) * 0.01)
    bonus = bonus - int(temp_mod)

if GetClass() == ROGUE:
  agi = GetAGI()
  if agi > 75 and GetLevel() > 29:
    LevelScaler = GetLevel() - 26
    if agi >= 100:
      LevelScaler = LevelScaler * 5
    elif agi >= 90:
      LevelScaler = LevelScaler * 4
    elif agi >= 85:
      LevelScaler = LevelScaler * 3
    elif agi >= 80:
      LevelScaler = LevelScaler * 2
    tmp_bonus = LevelScaler / 4
    bonus = bonus + min(12, tmp_bonus)

if GetRace() == IKSAR:
  bonus = bonus + min(35, max(10, GetLevel())

if IsMage():
  bonus = bonus + GetSkill(SkillDefense) / 2
else:
  bonus = bonus + GetSkill(SkillDefense) / 3

if GetAGI() > 70:
  bonus = bonus + GetAGI() / 20

if IsMage():
  bonus = bonus + TotalEffect(SPA_AC) / 3
else:
  bonus = bonus + TotalEffect(SPA_AC) / 4

if bonus < 0:
  bonus = 0

if IsClient():
  hardcap = 350
  if GetClass() == WARRIOR and GetLevel() > 50:
    hardcap = 430
  if (GetClass() == PALADIN or GetClass() == SHADOWKNIGHT or GetClass() == BARD) and GetLevel() > 50
    hardcap = 403
  if (GetClass() == RANGER or GetClass() == ROGUE or GetClass() == MONK) and GetLevel() > 50
    hardcap = 375
  if bonus > hardcap:
    bonus = hardcap

return bonus

That means you could have 12.75 Mitigation AC and 53.33 Avoidance AC from 255 Agility. Compared to 75 Agility where you get 3.75 Mitigation AC and 36.67 Avoidance AC.
Very interesting. On live, if you use a monster shroud and spend shroud AA on agility your mitigation ac rises too. I wonder whether a similar system is in use there.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:00 AM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.