fix: exclude synchronized dex from inheritance
This commit is contained in:
@@ -152,19 +152,7 @@ class InheritancePointManager
|
||||
};
|
||||
switch ($key) {
|
||||
case InheritanceKey::dex:
|
||||
$extractFn = function () use ($general, $multiplier) {
|
||||
$dexLimit = Util::array_last(getDexLevelList())[0];
|
||||
$totalDex = 0;
|
||||
foreach (array_keys(GameUnitConst::allType()) as $armType) {
|
||||
$subDex = $general->getVar("dex{$armType}");
|
||||
if ($subDex > $dexLimit) {
|
||||
$totalDex += ($subDex - $dexLimit) / 3;
|
||||
$subDex = $dexLimit;
|
||||
}
|
||||
$totalDex += $subDex;
|
||||
}
|
||||
return [$totalDex * $multiplier, null];
|
||||
};
|
||||
$extractFn = fn () => [$this->getDexInheritancePoint($general), null];
|
||||
break;
|
||||
case InheritanceKey::betting:
|
||||
$extractFn = function () use ($general, $multiplier) {
|
||||
@@ -189,6 +177,28 @@ class InheritancePointManager
|
||||
return $value;
|
||||
}
|
||||
|
||||
/** @param null|int[] $armTypes */
|
||||
public function getDexInheritancePoint(
|
||||
General $general,
|
||||
?int $dexLimit = null,
|
||||
?array $armTypes = null
|
||||
): float
|
||||
{
|
||||
$dexLimit ??= Util::array_last(getDexLevelList())[0];
|
||||
$armTypes ??= array_keys(GameUnitConst::allType());
|
||||
$multiplier = $this->getInheritancePointType(InheritanceKey::dex)->pointCoeff;
|
||||
$totalDex = 0;
|
||||
foreach ($armTypes as $armType) {
|
||||
$subDex = CentennialAllStarGrowthService::recordableValue($general, "dex{$armType}");
|
||||
if ($subDex > $dexLimit) {
|
||||
$totalDex += ($subDex - $dexLimit) / 3;
|
||||
$subDex = $dexLimit;
|
||||
}
|
||||
$totalDex += $subDex;
|
||||
}
|
||||
return $totalDex * $multiplier;
|
||||
}
|
||||
|
||||
|
||||
public function setInheritancePoint(General $general, InheritanceKey $key, $value, $aux = null)
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ use sammo\CentennialAllStarGrowth;
|
||||
use sammo\CentennialAllStarGrowthService;
|
||||
use sammo\General;
|
||||
use sammo\GameConst;
|
||||
use sammo\InheritancePointManager;
|
||||
|
||||
$loader = require __DIR__ . '/../vendor/autoload.php';
|
||||
$loader->addPsr4('sammo\\', __DIR__ . '/../hwe/sammo', true);
|
||||
@@ -371,6 +372,28 @@ final class CentennialAllStarGrowthTest extends TestCase
|
||||
self::assertSame(900000, CentennialAllStarGrowth::dexFloor(900000, 1));
|
||||
}
|
||||
|
||||
public function testSynchronizedDexDoesNotIncreaseInheritancePoint(): void
|
||||
{
|
||||
$vars = $this->emptyGeneralVars();
|
||||
$vars['dex1'] = 1_300_000;
|
||||
$vars['dex2'] = 1_300_000;
|
||||
$aux = CentennialAllStarGrowthService::initialAux(
|
||||
$this->singleDexTarget('inheritance', 0),
|
||||
[]
|
||||
);
|
||||
$aux['granted']['dex1'] = 1_000_000;
|
||||
$general = $this->createStateGeneralMock($vars, $aux);
|
||||
|
||||
self::assertSame(
|
||||
1_400.0,
|
||||
InheritancePointManager::getInstance()->getDexInheritancePoint(
|
||||
$general,
|
||||
1_000_000,
|
||||
[1, 2, 3, 4, 5]
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function testNpcDexStopsAtFortyPercentOfHistoricalTarget(): void
|
||||
{
|
||||
$target = 900000;
|
||||
|
||||
Reference in New Issue
Block a user