/** * Kalkuler beskyttelse * @param player $up spiller som angriper (beskyttelsen er avhengig av den som angriper) */ public function calc_protection(player $up = NULL) { $styrke = 0; // beregn vektverdi $weight = $this->calc_weight($up); // har vi kjøpt beskyttelse? if ($this->data) { // beregn utgangspunkt for styrkeverdi $styrke += $this->data['strength'] / (self::MAX_PROTECTION * 2); // legg til vektverdi $styrke += $weight; // sett i perspektiv med beskyttelseskapasiteten $styrke *= $this->up->data['up_protection_state']; } // legg til minimumbeskyttelse $styrke += $this->calc_protection_min($weight); // sett i perspektiv med energiprosenten $styrke *= 1 - (1 - $this->up->get_energy_percent() / 100) / 4; return $styrke; }
/** * Kalkuler sannsynlighet for alternativ */ protected function calc_prob($row) { // egen sannsynlighet $prob = $this->prob_ks_max == 0 ? 0 : $row['ks_strength'] / $this->prob_ks_max; // juster for denne krimen i forhold til de andre // den mest populære krimen settes ned 20 % $d = $this->prob_k_max == $this->prob_k_min ? 1 : ($row['k_strength'] - $this->prob_k_min) / ($this->prob_k_max - $this->prob_k_min); $d *= 0.2; // settes ned maksimalt 20 % $prob -= $prob * $d; // juster mellom min og maks $prob = $prob * ($this->prob_max - $this->prob_min) + $this->prob_min; // juster for energi (ikke bruk energi over 100 %) $prob *= min(1, $this->up->get_energy_percent() / 100); return $prob; }