00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifdef __cplusplus
00024
00025 # ifndef OGS_MAGIC_ABILITY_H
00026 # define OGS_MAGIC_ABILITY_H
00027
00028 # include <vector>
00029
00030 # include <ogs/core/Ability.h>
00031 # include <ogs/core/Modifier.h>
00032 # include <ogs/magic/Namespace.h>
00033 # include <ogs/magic/Types.h>
00034
00035 OGS_BEGIN_MAGIC_NAMESPACE
00036
00043 class Ability {
00044 public:
00050 virtual int getHighestSpellLevel () const = 0;
00051
00057 virtual SpellCounts getBonusSpells () const = 0;
00058
00059 protected:
00060 static int getHighestSpellLevel (ogs::core::Ability::Score);
00061 static SpellCounts getBonusSpells (ogs::core::Modifier::Value);
00062 };
00063
00071 inline int
00072 Ability::getHighestSpellLevel (ogs::core::Ability::Score score) {
00073 int level = score - 10;
00074 return (level < 0? -1: level > 9? 9: level);
00075 }
00076
00077 OGS_END_MAGIC_NAMESPACE
00078
00079 # endif
00080
00081 #endif
00082