예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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;
 }