void init_spell(Spell& spell_arg, const std::string& name_arg, int damage_arg, int cost_arg, float precision_arg, bool zone_arg, std::vector elements_arg, std::vector combinaison_arg ); void init_spells(std::vector& spell_book_arg); int possible_spell(const std::vector& spell_book_arg, const std::vector& spell_arg); Spell find_spell_by_combinaison(const std::vector& spell_book_arg, const std::vector& spell_arg); bool cast_spell(Player& player_arg, std::vector& spell_arg, std::vector& ennemies_arg); void casting_spell(Player& player_arg, std::vector& ennemies_arg); void use_spell(const Spell& spell_arg, Player& player_arg, std::vector& ennemies_arg); void spell_damage(Ennemy& ennemy_arg, const Spell& spell_arg); Ennemy& choose_target(std::vector& ennemies_arg); void ennemy_use_spell(const Spell& spell_arg, Player& player_arg, Ennemy& ennemy_arg); void print_spell(const Spell& spell_arg); void print_spell_book(const std::vector& spell_book_arg);