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_FEATS_IMPROVED_SAVE_H
00026 # define OGS_FEATS_IMPROVED_SAVE_H
00027
00028 # include <ogs/core/Feat.h>
00029 # include <ogs/core/Modifier.h>
00030 # include <ogs/feats/Namespace.h>
00031
00032 OGS_BEGIN_FEATS_NAMESPACE
00033
00039 class ImprovedSave: public ogs::core::Feat {
00040 public:
00042 enum Type {
00043
00045 GREAT_FORTITUDE,
00046
00048 IRON_WILL,
00049
00051 LIGHTNING_REFLEXES,
00052 };
00053
00054 static ImprovedSave* createGreatFortitude ();
00055 static ImprovedSave* createIronWill ();
00056 static ImprovedSave* createLightningReflexes ();
00057
00058 bool attachObject (Object& object);
00059 bool detachObject ();
00060 ogs::core::Feat::Compatibility getCompatibility () const;
00061 ogs::core::Feat::Group getGroup () const;
00062
00063 Type getType () const;
00064
00065 private:
00066 Type _type;
00067 static ogs::core::Modifier _modifier;
00068
00069 ImprovedSave (Type type);
00070
00071 bool canAttach (const Object& object) const;
00072 };
00073
00080 inline ogs::core::Feat::Compatibility
00081 ImprovedSave::getCompatibility () const {
00082 return (ogs::core::Feat::EXCLUSIVE);
00083 }
00084
00091 inline ogs::core::Feat::Group
00092 ImprovedSave::getGroup () const {
00093 return (ogs::core::Feat::GENERAL);
00094 }
00095
00101 inline ImprovedSave::Type
00102 ImprovedSave::getType () const {
00103 return (this->_type);
00104 }
00105
00106 OGS_END_FEATS_NAMESPACE
00107
00108 # endif
00109
00110 #endif
00111