public function try_selection($code) { $specs = combat_specs::get($code); $keys = array_keys($this->class); if (!shuffle($keys) || count($keys) <= 0) { return NULL; } foreach ($keys as $key) { if ($this->class[$key]['number'] > 0 && isset($specs[$key]) && rand(1, 100) <= $specs[$key]['selection']) { return $key; } } return $keys[array_rand($keys)]; }
private function select_and_touch($obj1, $obj2) { $bool = false; $code1 = $obj1->getRandom($this->energie_defense); $v1 = $obj1->{$code1}; // ici on fait des jets pour essayer de selectionner un ennemie en fonction des pourcentages et de ce qu'il y a de disponible for ($i = 1; $i <= $v1['attaque_nb']; $i++) { if (($code2 = $obj2->try_selection($code1)) !== NULL) { // ici on essaye d'attaquer, ($obj1) $code1 attaque ($obj2) $code2 $v2 = $obj2->{$code2}; if (!isset($v2['vie'])) { $v2['vie'] = $v2['defense_base']; } $specs = combat_specs::get($code1); if (!isset($specs[$code2])) { $touche = 50; } else { $touche = $specs[$code2]['touche']; } if (rand(1, 100) <= $touche) { $v2['vie'] -= $v1['attaque_base']; if ($v2['vie'] <= 0) { $v2['vie'] = $v2['defense_base']; $v2['number']--; } } $obj2->{$code2} = $v2; if ($v2['number'] <= 0) { $obj2->delete($code2); } $bool = true; } } if ($bool) { $this->current_tour--; } }