1 #pragma once 2 3 #include <vector> 4 5 #include "enum.h" 6 #include "ability-type.h" 7 #include "equipment-type.h" 8 #include "item-prop-enum.h" 9 #include "job-type.h" 10 #include "size-part-type.h" 11 #include "size-type.h" 12 #include "species-def.h" 13 #include "species-type.h" 14 15 using std::vector; 16 17 const species_def& get_species_def(species_type species); 18 19 namespace species 20 { 21 enum name_type 22 { 23 SPNAME_PLAIN, 24 SPNAME_GENUS, 25 SPNAME_ADJ 26 }; 27 28 string name(species_type speci, name_type spname = SPNAME_PLAIN); 29 const char *get_abbrev(species_type which_species); 30 species_type from_abbrev(const char *abbrev); 31 species_type from_str(const string &species); 32 species_type from_str_loose(const string &species_str, 33 bool initial_only = false); 34 35 bool is_elven(species_type species); 36 bool is_orcish(species_type species); 37 bool is_undead(species_type species); 38 bool is_draconian(species_type species); 39 undead_state_type undead_type(species_type species) PURE; 40 monster_type to_mons_species(species_type species); 41 42 monster_type dragon_form(species_type s); 43 const char* scale_type(species_type species); 44 ability_type draconian_breath(species_type species); 45 species_type random_draconian_colour(); 46 47 int mutation_level(species_type species, mutation_type mut, int mut_level=1); 48 const vector<string>& fake_mutations(species_type species, bool terse); 49 bool has_hair(species_type species); 50 bool has_bones(species_type species); 51 bool can_throw_large_rocks(species_type species); 52 bool wears_barding(species_type species); 53 bool has_claws(species_type species); 54 bool is_nonliving(species_type species); 55 bool can_swim(species_type species); 56 bool likes_water(species_type species); 57 size_type size(species_type species, size_part_type psize = PSIZE_TORSO); 58 59 string walking_verb(species_type sp); 60 string prayer_action(species_type species); 61 string shout_verb(species_type sp, int screaminess, bool directed); 62 string skin_name(species_type sp, bool adj=false); 63 string arm_name(species_type species); 64 string hand_name(species_type species); 65 int arm_count(species_type species); 66 equipment_type sacrificial_arm(species_type species); 67 bool bans_eq(species_type species, equipment_type eq); 68 vector<equipment_type> ring_slots(species_type species, bool missing_hand); 69 70 int get_exp_modifier(species_type species); 71 int get_hp_modifier(species_type species); 72 int get_mp_modifier(species_type species); 73 int get_wl_modifier(species_type species); 74 int get_stat_gain_multiplier(species_type species); 75 bool has_low_str(species_type species); 76 bool recommends_job(species_type species, job_type job); 77 bool recommends_weapon(species_type species, weapon_type wpn); 78 79 bool is_valid(species_type species); 80 bool is_starting_species(species_type species); 81 species_type random_starting_species(); 82 bool is_removed(species_type species); 83 vector<species_type> get_all_species(); 84 } 85 86 void species_stat_init(species_type species); 87 void species_stat_gain(species_type species); 88 89 void give_basic_mutations(species_type species); 90 void give_level_mutations(species_type species, int xp_level); 91 92 void change_species_to(species_type sp); 93