Skip to content

Commit dbae6fc

Browse files
authored
Merge pull request #3 from PoESkillTree/poe3.8
Update for PoE 3.8.0
2 parents b292098 + 9762c8a commit dbae6fc

69 files changed

Lines changed: 1683 additions & 976 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

PoESkillTree.Engine.Computation.Builders.Tests/Buffs/BuffBuildersTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ public void AuraBuildsToCorrectResults()
114114
[Test]
115115
public void BuffsWithoutParametersCountBuildsToCorrectValue()
116116
{
117-
// Buff properties + conflux + dummy buff and aura + passed buff skills
118-
var expected = 14 + 4 + 2 + 3;
117+
// Buff properties + conflux + dummy buffs + passed buff skills
118+
var expected = 14 + 4 + 3 + 3;
119119
// For every source entity
120120
expected *= Enums.GetMemberCount<Entity>();
121121
var context = Mock.Of<IValueCalculationContext>(c =>
@@ -130,8 +130,8 @@ public void BuffsWithoutParametersCountBuildsToCorrectValue()
130130
[Test]
131131
public void BuffsWithParamtersCountBuildsToCorrectValue()
132132
{
133-
// Buff properties + conflux + dummy buff and aura + passed buff skills
134-
var expected = 14 + 4 + 2 + 3;
133+
// Buff properties + conflux + dummy buffs + passed buff skills
134+
var expected = 14 + 4 + 3 + 3;
135135
var source = new ModifierSourceEntityBuilder();
136136
var target = new ModifierSourceEntityBuilder();
137137
var context = Mock.Of<IValueCalculationContext>(c =>

PoESkillTree.Engine.Computation.Builders/Buffs/BuffBuilders.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public BuffBuilders(IStatFactory statFactory, SkillDefinitions skills)
3939
Impale = Create("Impale");
4040
Infusion = Create("Infusion");
4141
Conflux = new ConfluxBuffBuilders(statFactory);
42+
GenericMine = Create("Mine");
4243
CurseLimit = StatBuilderUtils.FromIdentity(statFactory, "CurseLimit", typeof(uint));
4344

4445
var allBuffs = new List<BuffBuilderWithKeywords>
@@ -65,6 +66,7 @@ public BuffBuilders(IStatFactory statFactory, SkillDefinitions skills)
6566
new BuffBuilderWithKeywords(Create("Buff")),
6667
// Aura effect increase (used for Aura())
6768
new BuffBuilderWithKeywords(Create("Aura"), Keyword.Aura),
69+
new BuffBuilderWithKeywords(GenericMine, Keyword.Aura, Keyword.Mine),
6870
};
6971
var skillBuffBuilders = skills.Skills
7072
.Where(s => !s.IsSupport && s.ActiveSkill.ProvidesBuff)
@@ -90,6 +92,7 @@ private BuffBuilder Create(string buffIdentity) =>
9092
public IBuffBuilder Innervation { get; }
9193
public IBuffBuilder Impale { get; }
9294
public IBuffBuilder Infusion { get; }
95+
public IBuffBuilder GenericMine { get; }
9396
public IConfluxBuffBuilders Conflux { get; }
9497

9598
public IStatBuilder Temporary(IStatBuilder gainedStat)

PoESkillTree.Engine.Computation.Builders/Damage/DamageTypeBuilder.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,14 @@ public IDamageTypeBuilder Except(IDamageTypeBuilder type) =>
7373
new DamageStatBuilder(_statFactory, CoreStat(_statFactory.Damage));
7474

7575
public IDamageRelatedStatBuilder DamageMultiplier =>
76+
DamageRelatedStatBuilder.Create(_statFactory, new CompositeCoreStatBuilder(
77+
CoreStat(typeof(int), nameof(DamageMultiplierWithCrits)),
78+
CoreStat(typeof(int), nameof(DamageMultiplierWithNonCrits))));
79+
80+
public IDamageRelatedStatBuilder DamageMultiplierWithCrits =>
81+
DamageRelatedStatBuilder.Create(_statFactory, CoreStat(typeof(int)));
82+
83+
public IDamageRelatedStatBuilder DamageMultiplierWithNonCrits =>
7684
DamageRelatedStatBuilder.Create(_statFactory, CoreStat(typeof(int)));
7785

7886
public IDamageTakenConversionBuilder DamageTakenFrom(IPoolStatBuilder pool)

PoESkillTree.Engine.Computation.Builders/Entities/EntityBuilders.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class EntityBuilders : IEntityBuilders
1919
public IEntityBuilder OpponentOfSelf => new ModifierSourceOpponentEntityBuilder();
2020
public IEnemyBuilder Enemy => new EnemyBuilder(_statFactory);
2121
public IEntityBuilder Character => new EntityBuilder(Entity.Character);
22-
public IEntityBuilder Ally => new EntityBuilder(Entity.Minion, Entity.Totem);
22+
public ICountableEntityBuilder Ally => new AllyBuilder(_statFactory);
2323
public IEntityBuilder Totem => new EntityBuilder(Entity.Totem);
2424
public IEntityBuilder Minion => new EntityBuilder(Entity.Minion);
2525
public IEntityBuilder Any => EntityBuilder.AllEntities;
@@ -39,6 +39,10 @@ public ValueBuilder CountNearby
3939
=> StatBuilderUtils.FromIdentity(_statFactory, "Enemy.CountNearby", typeof(uint),
4040
ExplicitRegistrationTypes.UserSpecifiedValue(0)).Value;
4141

42+
public ValueBuilder CountRareOrUniqueNearby
43+
=> StatBuilderUtils.FromIdentity(_statFactory, "Enemy.CountRareOrUniqueNearby", typeof(uint),
44+
ExplicitRegistrationTypes.UserSpecifiedValue(0)).Value;
45+
4246
public IConditionBuilder IsRare => StatBuilderUtils.ConditionFromIdentity(_statFactory, "Enemy.IsRare",
4347
ExplicitRegistrationTypes.UserSpecifiedValue(false));
4448

@@ -50,5 +54,17 @@ public ValueBuilder CountNearby
5054
public IConditionBuilder IsMoving => StatBuilderUtils.ConditionFromIdentity(_statFactory, "Enemy.IsMoving",
5155
ExplicitRegistrationTypes.UserSpecifiedValue(false));
5256
}
57+
58+
private class AllyBuilder : EntityBuilder, ICountableEntityBuilder
59+
{
60+
private readonly IStatFactory _statFactory;
61+
62+
public AllyBuilder(IStatFactory statFactory) : base(Entity.Minion, Entity.Totem) =>
63+
_statFactory = statFactory;
64+
65+
public ValueBuilder CountNearby
66+
=> StatBuilderUtils.FromIdentity(_statFactory, "Ally.CountNearby", typeof(uint),
67+
ExplicitRegistrationTypes.UserSpecifiedValue(0)).Value;
68+
}
5369
}
5470
}

PoESkillTree.Engine.Computation.Builders/Skills/SkillBuilders.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public SkillBuilders(IStatFactory statFactory, SkillDefinitions skills)
2424
private ISkillBuilderCollection CreateCollection(params IKeywordBuilder[] keywords)
2525
=> new SkillBuilderCollection(_statFactory, keywords, _skills.Skills);
2626

27-
public ISkillBuilder SummonSkeleton => FromId("SummonSkeletons");
27+
public ISkillBuilder SummonSkeletons => FromId("SummonSkeletons");
2828
public ISkillBuilder VaalSummonSkeletons => FromId("VaalSummonSkeletons");
2929
public ISkillBuilder RaiseSpectre => FromId("RaiseSpectre");
3030
public ISkillBuilder RaiseZombie => FromId("RaiseZombie");

PoESkillTree.Engine.Computation.Builders/Stats/StatBuilders.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ public IDamageRelatedStatBuilder Range
8888
public ValueBuilder UniqueAmount(string name)
8989
=> FromIdentity(name, typeof(uint), UserSpecifiedValue(0)).Value;
9090

91+
public ValueBuilder UniqueEnum<T>(string name) where T : Enum
92+
=> FromIdentity(name, typeof(T), UserSpecifiedValue(0)).Value;
93+
9194
public IStatBuilder IndependentMultiplier(string identity)
9295
=> FromIdentity(identity, typeof(uint), IndependentResult(NodeType.Increase));
9396

@@ -121,7 +124,7 @@ public MineStatBuilders(IStatFactory statFactory) : base(statFactory, "Mine")
121124
{
122125
}
123126

124-
public IStatBuilder Speed => FromIdentity("LayingSpeed", typeof(double));
127+
public IStatBuilder Speed => FromIdentity("ThrowingSpeed", typeof(double));
125128
public IStatBuilder Duration => FromIdentity(typeof(double));
126129
public IStatBuilder DetonationAoE => FromIdentity(typeof(int));
127130
}
@@ -250,6 +253,10 @@ public IStatBuilder IncreasesToSourceApplyToTarget(IStatBuilder source, IStatBui
250253
=> new StatBuilder(StatFactory,
251254
new ModifiersApplyToOtherStatCoreStatBuilder(source, target, Form.Increase, StatFactory));
252255

256+
public IStatBuilder BaseAddsToSourceApplyToTarget(IStatBuilder source, IStatBuilder target)
257+
=> new StatBuilder(StatFactory,
258+
new ModifiersApplyToOtherStatCoreStatBuilder(source, target, Form.BaseAdd, StatFactory));
259+
253260
private class ModifiersApplyToOtherStatCoreStatBuilder : ICoreStatBuilder
254261
{
255262
private readonly IStatBuilder _target;

PoESkillTree.Engine.Computation.Common/Builders/Buffs/IBuffBuilders.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ public interface IBuffBuilders
5656
IBuffBuilder Impale { get; }
5757
IBuffBuilder Infusion { get; }
5858

59+
IBuffBuilder GenericMine { get; }
60+
5961
/// <summary>
6062
/// Gets a buff factory that creates Conflux buffs.
6163
/// </summary>

PoESkillTree.Engine.Computation.Common/Builders/Charges/ChargeType.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ public enum ChargeType
1010
Intensity,
1111
Challenger,
1212
Blitz,
13+
Inspiration,
1314
}
1415
}

PoESkillTree.Engine.Computation.Common/Builders/Damage/IDamageTypeBuilder.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public interface IDamageTypeBuilder : IKeywordBuilder
5151
/// Gets a stat representing the multiplier to damage of this type.
5252
/// </summary>
5353
IDamageRelatedStatBuilder DamageMultiplier { get; }
54+
IDamageRelatedStatBuilder DamageMultiplierWithCrits { get; }
55+
IDamageRelatedStatBuilder DamageMultiplierWithNonCrits { get; }
5456

5557
/// <summary>
5658
/// Starts constructing a stat representing the percentage of damage of this stat's damage types that is taken
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using PoESkillTree.Engine.Computation.Common.Builders.Values;
2+
3+
namespace PoESkillTree.Engine.Computation.Common.Builders.Entities
4+
{
5+
public interface ICountableEntityBuilder : IEntityBuilder
6+
{
7+
8+
ValueBuilder CountNearby { get; }
9+
}
10+
}

0 commit comments

Comments
 (0)