/// <summary> /// Sets the built damage action to use percentage-of-last-received-move damage. /// </summary> /// <param name="builder">The damage action builder.</param> /// <param name="percentage">The percentage of damage to deal.</param> /// <param name="actionHistory">The action history.</param> public static DamageActionBuilder PercentageOfLastReceivedMoveDamage( this DamageActionBuilder builder, int percentage, IActionHistory actionHistory) { return(builder.WithDamageCalculator(new PercentageOfLastReceivedMoveDamageCalculator(percentage, actionHistory))); }
/// <summary> /// Sets the built damage action to target the user of the move /// containing the action that last affected the user. /// </summary> /// <param name="builder">The damage action builder.</param> /// <param name="actionHistory">The action history.</param> public static DamageActionBuilder Retaliates( this DamageActionBuilder builder, IActionHistory actionHistory) { return(builder.WithActionTargetCalculator(new RetaliationActionTargetCalculator(actionHistory)) .WithTag(DamageTags.Retaliation)); }
public void WithActionTargetCalculator_NullArgument_Throws() { // Arrange var builder = new DamageActionBuilder(); // Act and Assert Assert.Throws <ArgumentNullException>(() => _ = builder.WithActionTargetCalculator(null)); }
/// <summary> /// Sets the built damage action to use percentage-of-last-received-move damage. /// </summary> /// <param name="builder">The damage action builder.</param> /// <param name="startingBasePower">The starting base power.</param> /// <param name="linearFactor">The linear factor.</param> /// <param name="random">The random number generator.</param> /// <param name="actionHistory">The action history.</param> public static DamageActionBuilder BasePowerIncreasesLinearlyWithUses( this DamageActionBuilder builder, int startingBasePower, int linearFactor, IRandom random, IActionHistory actionHistory) { return(builder.WithDamageCalculator(new BasePowerIncreasesLinearlyWithUsesDamageCalculator(startingBasePower, linearFactor, random, actionHistory))); }
public void Build_MissingActionTargetCalculator_Throws() { // Arrange var builder = new DamageActionBuilder() .WithBasePower(20, Mock.Of <Random>()); // Act and Assert Assert.Throws <InvalidOperationException>(() => _ = builder.Build()); }
public void Build_MissingDamageCalculator_Throws() { // Arrange var builder = new DamageActionBuilder() .TargetsOthers(); // Act and Assert Assert.Throws <InvalidOperationException>(() => _ = builder.Build()); }
public void Build_CallsPresent_Succeeds() { // Arrange var builder = new DamageActionBuilder() .AbsoluteDamage(20) .TargetsAll(); // Act var damage = builder.Build(); // Assert Assert.That(damage, Is.Not.Null); }
/// <summary> /// Sets the built damage action to target a single enemy chosen by the user. /// </summary> /// <param name="builder">The damage action builder.</param> /// <param name="userInput">The user input.</param> /// <param name="gameOutput">The game output.</param> public static DamageActionBuilder UserSelectsSingleEnemy(this DamageActionBuilder builder, IUserInput userInput) { return(builder.WithActionTargetCalculator(new SingleEnemyActionTargetCalculator(userInput))); }