/**
  * @test
  */
 public function I_can_create_it_for_range_weapon()
 {
     $maximalRange = MaximalRange::createForRangedWeapon($this->createEncounterRange(123));
     self::assertInstanceOf(MaximalRange::class, $maximalRange);
     self::assertInstanceOf(CombatGameCharacteristic::class, $maximalRange);
     self::assertSame(135, $maximalRange->getValue(), 'Value should be increased by twelve');
 }
Esempio n. 2
0
 /**
  * Ranged weapons can be used for indirect shooting and those have much longer maximal and still somehow
  * controllable
  * (more or less - depends on weapon) range.
  * Others have their maximal (and still controllable) range same as encounter range.
  * See PPH page 104 left column.
  *
  * @param WeaponlikeCode $weaponlikeCode
  * @param Strength $currentStrength
  * @param Speed $currentSpeed
  * @return MaximalRange
  * @throws CanNotUseWeaponBecauseOfMissingStrength
  * @throws UnknownArmament
  * @throws UnknownRangedWeapon
  * @throws UnknownBow
  */
 public function getMaximalRangeWithWeaponlike(WeaponlikeCode $weaponlikeCode, Strength $currentStrength, Speed $currentSpeed)
 {
     $encounterRange = $this->getEncounterRangeWithWeaponlike($weaponlikeCode, $currentStrength, $currentSpeed);
     if ($weaponlikeCode->isMelee()) {
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         return MaximalRange::createForMeleeWeapon($encounterRange);
         // that is without change and that is zero
     }
     assert($weaponlikeCode->isRanged());
     return MaximalRange::createForRangedWeapon($encounterRange);
 }
 /**
  * @test
  * @dataProvider provideWeaponsForRangeEncounter
  * @param RangedWeaponCode $rangedWeaponCode
  * @param Tables $tables
  * @param int $strengthValue
  * @param int $speedValue
  * @param int $expectedEncounterRange
  */
 public function I_can_get_maximal_range_with_ranged_weapon(RangedWeaponCode $rangedWeaponCode, Tables $tables, $strengthValue, $speedValue, $expectedEncounterRange)
 {
     $maximalRange = (new Armourer($tables))->getMaximalRangeWithWeaponlike($rangedWeaponCode, Strength::getIt($strengthValue), $this->createSpeed($speedValue));
     self::assertInstanceOf(MaximalRange::class, $maximalRange);
     self::assertSame(MaximalRange::createForRangedWeapon(new EncounterRange($expectedEncounterRange))->getValue(), $maximalRange->getValue());
 }