d3hog/libs/demonhunter.php
Andrew Tomaka 4124cd55f3 Abstract Stats Collection
Abstract the stats collection portions of DPClass so that additional
providers might easily be substituted in the future.  Initial abstract
is weak and can expand when an additional provider is actually found.
2013-03-05 00:22:17 -05:00

40 lines
No EOL
1.3 KiB
PHP

<?php
class DemonHunter extends DiabloClass {
function __construct($stats) {
$this->class = $stats->class;
parent::__construct($stats);
}
function EHPScore() {
$ehp = $this->stats->getStat('EHP Unbuffed');
if($ehp <= 500000) {
return $ehp / 10000;
} elseif(500000 < $ehp && $ehp <= 1000000) {
return 50 + ($ehp-500000) / 20000;
} elseif(1000000 < $ehp && $ehp <= 2000000) {
return 75 + ($ehp - 1000000) / 40000;
} else {
return 100 + ($ehp - 2000000) / 100000;
}
}
function sustainScore() {
$effectiveLs = $this->stats->getStat('DPS Unbuffed') *
$this->stats->getStat('Life Steal') * .2;
$mitigation = $this->stats->getStat('EHP Unbuffed') / $this->stats->getStat('Life');
return 1 + $mitigation * ($this->stats->getStat('Life on Hit') *
($this->stats->getStat('Attacks per Second') + 1) / 2 +
$this->stats->getStat('Life per Second') + $effectiveLs) /
($this->stats->getStat('Life') * $this->EHPScore() * 10000 /
$this->stats->getStat('EHP Unbuffed'));
}
function miscScore() {
return 1 + ($this->stats->getStat('+Maximum Discipline') / 2 +
$this->stats->getStat('+Hatred Regenerated per Second') * 2 +
$this->stats->getStat('+Discipline Regenerated per Second') * 15) / 100;
}
}