refactor(weapon): emit AOS attributes via AosAttributes/AosWeaponAttributes.GetProperties
This commit is contained in:
parent
54a512c98f
commit
ea8dfd29bd
2 changed files with 47 additions and 210 deletions
|
|
@ -0,0 +1,38 @@
|
||||||
|
using Server.Items;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace UOContent.Tests;
|
||||||
|
|
||||||
|
[Collection("Sequential UOContent Tests")]
|
||||||
|
public class BaseWeaponPropertiesTests
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void Weapon_AttributeLineSet_Preserved()
|
||||||
|
{
|
||||||
|
var weapon = new Longsword();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
weapon.Attributes.DefendChance = 5;
|
||||||
|
weapon.Attributes.BonusInt = 6;
|
||||||
|
weapon.Attributes.SpellChanneling = 1;
|
||||||
|
weapon.WeaponAttributes.UseBestSkill = 1;
|
||||||
|
weapon.WeaponAttributes.HitFireball = 12;
|
||||||
|
weapon.WeaponAttributes.MageWeapon = 25;
|
||||||
|
weapon.WeaponAttributes.SelfRepair = 3;
|
||||||
|
|
||||||
|
var map = ItemOplTestHelper.DecodeAttributeLines(weapon);
|
||||||
|
|
||||||
|
Assert.Equal("5", map[1060408]); // DefendChance
|
||||||
|
Assert.Equal("6", map[1060432]); // BonusInt
|
||||||
|
Assert.Equal("", map[1060482]); // SpellChanneling
|
||||||
|
Assert.Equal("", map[1060400]); // UseBestSkill
|
||||||
|
Assert.Equal("12", map[1060420]); // HitFireball
|
||||||
|
Assert.Equal("5", map[1060438]); // MageWeapon (30 - 25)
|
||||||
|
Assert.Equal("3", map[1060450]); // SelfRepair
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
weapon.Delete();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2998,114 +2998,11 @@ public abstract partial class BaseWeapon
|
||||||
list.Add(1072792); // Balanced
|
list.Add(1072792); // Balanced
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WeaponAttributes.UseBestSkill != 0)
|
WeaponAttributes.GetProperties(list);
|
||||||
{
|
|
||||||
list.Add(1060400); // use best weapon skill
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = GetDamageBonus() + Attributes.WeaponDamage) != 0)
|
if ((prop = GetLowerStatReq()) != 0)
|
||||||
{
|
{
|
||||||
list.Add(1060401, prop); // damage increase ~1_val~%
|
list.Add(1060435, prop); // lower requirements ~1_val~%
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.DefendChance) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060408, prop); // defense chance increase ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.EnhancePotions) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060411, prop); // enhance potions ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.CastRecovery) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060412, prop); // faster cast recovery ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.CastSpeed) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060413, prop); // faster casting ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = GetHitChanceBonus() + Attributes.AttackChance) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060415, prop); // hit chance increase ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitColdArea) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060416, prop); // hit cold area ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitDispel) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060417, prop); // hit dispel ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitEnergyArea) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060418, prop); // hit energy area ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitFireArea) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060419, prop); // hit fire area ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitFireball) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060420, prop); // hit fireball ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitHarm) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060421, prop); // hit harm ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitLeechHits) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060422, prop); // hit life leech ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitLightning) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060423, prop); // hit lightning ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitLowerAttack) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060424, prop); // hit lower attack ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitLowerDefend) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060425, prop); // hit lower defense ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitMagicArrow) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060426, prop); // hit magic arrow ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitLeechMana) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060427, prop); // hit mana leech ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitPhysicalArea) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060428, prop); // hit physical area ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitPoisonArea) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060429, prop); // hit poison area ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.HitLeechStam) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060430, prop); // hit stamina leech ~1_val~%
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImmolatingWeaponSpell.IsImmolating(this))
|
if (ImmolatingWeaponSpell.IsImmolating(this))
|
||||||
|
|
@ -3118,110 +3015,12 @@ public abstract partial class BaseWeapon
|
||||||
list.Add(1072793, prop); // Velocity ~1_val~%
|
list.Add(1072793, prop); // Velocity ~1_val~%
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((prop = Attributes.BonusDex) != 0)
|
Attributes.GetProperties(
|
||||||
{
|
list,
|
||||||
list.Add(1060409, prop); // dexterity bonus ~1_val~
|
damageBonus: GetDamageBonus(),
|
||||||
}
|
hitChanceBonus: GetHitChanceBonus(),
|
||||||
|
luckBonus: GetLuckBonus()
|
||||||
if ((prop = Attributes.BonusHits) != 0)
|
);
|
||||||
{
|
|
||||||
list.Add(1060431, prop); // hit point increase ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.BonusInt) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060432, prop); // intelligence bonus ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.LowerManaCost) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060433, prop); // lower mana cost ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.LowerRegCost) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060434, prop); // lower reagent cost ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = GetLowerStatReq()) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060435, prop); // lower requirements ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = GetLuckBonus() + Attributes.Luck) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060436, prop); // luck ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.MageWeapon) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060438, 30 - prop); // mage weapon -~1_val~ skill
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.BonusMana) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060439, prop); // mana increase ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.RegenMana) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060440, prop); // mana regeneration ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Attributes.NightSight != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060441); // night sight
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.ReflectPhysical) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060442, prop); // reflect physical damage ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.RegenStam) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060443, prop); // stamina regeneration ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.RegenHits) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060444, prop); // hit point regeneration ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = WeaponAttributes.SelfRepair) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060450, prop); // self repair ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Attributes.SpellChanneling != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060482); // spell channeling
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.SpellDamage) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060483, prop); // spell damage increase ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.BonusStam) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060484, prop); // stamina increase ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.BonusStr) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060485, prop); // strength bonus ~1_val~
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((prop = Attributes.WeaponSpeed) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1060486, prop); // swing speed increase ~1_val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Core.ML && (prop = Attributes.IncreasedKarmaLoss) != 0)
|
|
||||||
{
|
|
||||||
list.Add(1075210, prop); // Increased Karma Loss ~1val~%
|
|
||||||
}
|
|
||||||
|
|
||||||
GetDamageTypes(
|
GetDamageTypes(
|
||||||
null,
|
null,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue