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_CORE_SAVES_H
00026 # define OGS_CORE_SAVES_H
00027
00028 # include <ogs/core/Die.h>
00029 # include <ogs/core/Experience.h>
00030 # include <ogs/core/Modifiers.h>
00031 # include <ogs/core/Namespace.h>
00032
00033 OGS_BEGIN_CORE_NAMESPACE
00034
00044 struct Saves {
00045 static Modifier::Value getStrongBonus (XP::Level xpLevel);
00046 static Modifier::Value getWeakBonus (XP::Level xpLevel);
00047
00049 Modifiers fort;
00051 Modifiers ref;
00053 Modifiers will;
00054
00055 Saves ();
00056
00057 bool rollFortSave (Die::Value dc) const;
00058 bool rollRefSave (Die::Value dc) const;
00059 bool rollWillSave (Die::Value dc) const;
00060 };
00061
00068 inline Modifier::Value
00069 Saves::getStrongBonus (XP::Level xpLevel) {
00070 return ((xpLevel + 4) / 2);
00071 }
00072
00079 inline Modifier::Value
00080 Saves::getWeakBonus (XP::Level xpLevel) {
00081 return (xpLevel / 3);
00082 }
00083
00088 inline Saves::Saves ():
00089 fort (), ref (), will () {
00090
00091 }
00092
00101 inline bool
00102 Saves::rollFortSave (Die::Value dc) const {
00103 return ((Die::roll () + fort.getValue ()) >= dc);
00104 }
00105
00114 inline bool
00115 Saves::rollRefSave (Die::Value dc) const {
00116 return ((Die::roll () + ref.getValue ()) >= dc);
00117 }
00118
00127 inline bool
00128 Saves::rollWillSave (Die::Value dc) const {
00129 return ((Die::roll () + will.getValue ()) >= dc);
00130 }
00131
00132 OGS_END_CORE_NAMESPACE
00133
00134 # endif
00135
00136 #endif
00137