39 #include "Core-Level-JR.h"
41 void rpgSheet_PlayableChar_Props::load(
class laPropertyList* pElement)
43 rpgSheet_Fighter_Props::load(pElement);
45 nLevel = pElement->getInt(
"Level" );
46 nXP = pElement->getInt(
"XP" );
47 nXP_Next = pElement->getInt(
"XP-Next" );
49 skills.load( pElement->getChild(
"skills-inventory") );
52 void rpgSheet_PlayableChar_Props::load(
class laFileParser *fp)
54 rpgSheet_Fighter_Props::load(fp);
56 fp->readUnsigned(&nLevel);
57 fp->readUnsigned(&nXP);
58 fp->readUnsigned(&nXP_Next);
61 void rpgSheet_PlayableChar_Props::save(FILE* f)
63 fprintf(f,
"[rpg-sheet]\n");
64 fprintf(f,
"[include] skills-include: 'tileset\\skills.ts'\n");
66 fprintf(f,
"[int] Level: %d\n", nLevel);
67 fprintf(f,
"[int] XP: %d\n", nXP);
68 fprintf(f,
"[int] XP-Next: %d\n", nXP_Next);
70 fprintf(f,
"[double] Speed: %.5lf\n", dSpeed /
M_UNIT);
71 fprintf(f,
"[double] JPower: %.5lf\n", dJPower /
M_UNIT);
72 fprintf(f,
"[double] SPower: %.5lf\n", dSPower /
M_UNIT);
74 fprintf(f,
"[int] HP: %d\n", nHP_Max);
75 fprintf(f,
"[int] AP: %d\n", nAP);
77 fprintf(f,
"[comment] 'These two attacks are used only when unarmed'\n");
78 fprintf(f,
"[comment] 'if unarmed combat is enabled'\n");
79 fprintf(f,
"[attack-0] \n");
80 fprintf(f,
" [int] Element: 0 \n");
81 fprintf(f,
" [int] AP: 1\n");
82 fprintf(f,
" [double] charge-time: 0.1\n");
83 fprintf(f,
"[/attack-0]\n");
84 fprintf(f,
"[attack-1] \n");
85 fprintf(f,
" [int] Element: 0 \n");
86 fprintf(f,
" [int] AP: 2\n");
87 fprintf(f,
" [double] charge-time: 0.1\n");
88 fprintf(f,
"[/attack-1]\n");
90 for(
unsigned i=0; i<M_ELEMENTS; i++)
91 fprintf(f,
"[double] DP-%d: %.3lf\n", i, arDP[i]);
93 fprintf(f,
"[/rpg-sheet]\n");
96 rpgAttack rpgSheet_PlayableChar::modAttack(
unsigned n )
99 std::string strItemClass = properties()->items.activePtr()->name();
101 if( !strcmp(strItemClass.c_str(),
"rpgWeapon") )
103 rpgWeapon *pw = (rpgWeapon *)properties()->items.activePtr();
105 ASSERT(n<2,
"Attack %d out of bounds for active Weapon.", n);
107 a.nAP += properties()->nAP;
108 a.nAP *= modifiers()->dMod_AP;
111 else a = rpgSheet_Fighter::modAttack( n );
118 double rpgSheet_PlayableChar::modDP(
unsigned nElement)
120 double dp = rpgSheet_Fighter::modDP( nElement );
128 void rpgSheet_PlayableChar::collect(
unsigned nXP)
130 properties()->nXP += nXP * modifiers()->dMod_XP;
132 if( properties()->nXP >= properties()->nXP_Next ) _level_up();
135 unsigned rpgSheet_PlayableChar::_XP_for_next_level()
137 return properties()->nXP_Next * M_XP_INCREMENT;
140 void rpgSheet_PlayableChar::_level_up()
144 properties()->nXP = 0;
145 properties()->nXP_Next = _XP_for_next_level();
146 properties()->nLevel++;
147 properties()->nTrainingPoints ++;
151 properties()->nHP_Max += M_HP_INCREMENT;
152 properties()->nHP = properties()->nHP_Max;
156 std::vector<rpgAttack>::iterator i;
158 for(i=properties()->vAttacks.begin(); i!=properties()->vAttacks.end(); i++)
163 for(
unsigned i=0; i<M_ELEMENTS; i++)
164 properties()->arDP[i] += M_DP_INCREMENT;
#define M_UNIT
Unit of 1 meter.