From: Anders R. <ma...@us...> - 2003-10-10 23:37:21
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1:/tmp/cvs-serv5700/src/server Modified Files: command.cpp progressionmanager.cpp spellmanager.cpp Log Message: - Added <exp>expression</exp> operation to the progression script system. Will add expression experience points to the actor. - Added sending of experience points and progression points to the statDR message. - Added display of experience progression bar and progression points. - Updated clock when infowindow is created. The info is in the client no point of waiting for the next clock update, to display the clock. Index: command.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/command.cpp,v retrieving revision 1.87 retrieving revision 1.88 diff -C2 -d -r1.87 -r1.88 *** command.cpp 8 Oct 2003 20:08:33 -0000 1.87 --- command.cpp 10 Oct 2003 23:37:14 -0000 1.88 *************** *** 1116,1119 **** --- 1116,1121 ---- CPrintf("CON %7.1f\n",charData->GetAttribute(PSITEMSTATS_ATTRIBUTE_CONSTITUTION)); CPrintf("STA %7.1f\n",charData->GetAttribute(PSITEMSTATS_ATTRIBUTE_STRENGTH)); + CPrintf("Experience points %7d\n",charData->GetExperiencePoints()); + CPrintf("Progression points %7d\n",charData->GetProgressionPoints()); return 0; } *************** *** 1172,1176 **** if (actor!=NULL) { ! psserver->GetProgressionManager()->ProcessEvent(event,actor); return 0; } --- 1174,1178 ---- if (actor!=NULL) { ! psserver->GetProgressionManager()->ProcessEvent(event,actor,actor); return 0; } Index: progressionmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/progressionmanager.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** progressionmanager.cpp 9 Oct 2003 06:51:46 -0000 1.27 --- progressionmanager.cpp 10 Oct 2003 23:37:15 -0000 1.28 *************** *** 389,392 **** --- 389,455 ---- /*-------------------------------------------------------------*/ + /* + * Adjust the experience of the target. + */ + class ExperienceOp : public ProgressionOperation + { + protected: + ExpressionOp *value; + + public: + ExperienceOp() {}; + virtual ~ExperienceOp() {}; + + bool Load(iDocumentNode *node, ProgressionManager *mgr) + { + value = ExpressionOp::LoadExpression(node,mgr); + + return true; + } + + virtual csString ToString() + { + csString xml; + xml.Format("<exp>%s</exp>",value->ToString().GetData()); + return xml; + } + + + float Run(gemActor * actor, gemObject *target, ProgressionManager *mgr) + { + if (!actor) + { + CPrintf("Error: ProgressionEvent(%s) ExperienceOp no actor.", + eventName->GetData()); + return 0.0f; + } + + int exp = (int)value->Run(actor,target,mgr); + + psSystemMessage msg(actor->GetClientID(),MSG_INFO,"You gained %.1f experience points.",exp); + if (msg.valid) + mgr->SendMessage(msg.msg); + else + { + Bug2("Failed to create valid psSystemMessage for client %u.\n",actor->GetClientID()); + } + + if (int pp = actor->GetCharacterData()->AddExperiencePoints(exp)) + { + psSystemMessage msg(actor->GetClientID(),MSG_INFO,"You gained %d progression points.",pp); + if (msg.valid) + mgr->SendMessage(msg.msg); + else + { + Bug2("Failed to create valid psSystemMessage for client %u.\n",actor->GetClientID()); + } + } + + return 0.0f; + } + }; + + /*-------------------------------------------------------------*/ + class FactionOp : public ProgressionOperation { *************** *** 1092,1095 **** --- 1155,1162 ---- op = new StatsOp(StatsOp::END); } + else if ( strcmp( node->GetValue(), "exp" ) == 0 ) + { + op = new ExperienceOp; + } else if ( strcmp( node->GetValue(), "faction" ) == 0 ) { Index: spellmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/spellmanager.cpp,v retrieving revision 1.40 retrieving revision 1.41 diff -C2 -d -r1.40 -r1.41 *** spellmanager.cpp 8 Oct 2003 20:08:33 -0000 1.40 --- spellmanager.cpp 10 Oct 2003 23:37:15 -0000 1.41 *************** *** 542,546 **** mana_wil_bonus = (character->GetAttribute(PSITEMSTATS_ATTRIBUTE_WILL)-20.0)/1.2; mana_cha_bonus = (character->GetAttribute(PSITEMSTATS_ATTRIBUTE_CHARISMA)-20.0)/1.2; ! character->SetManaMax(mana_int_bonus+mana_wil_bonus+mana_cha_bonus); } --- 542,546 ---- mana_wil_bonus = (character->GetAttribute(PSITEMSTATS_ATTRIBUTE_WILL)-20.0)/1.2; mana_cha_bonus = (character->GetAttribute(PSITEMSTATS_ATTRIBUTE_CHARISMA)-20.0)/1.2; ! character->SetManaMax((mana_int_bonus+mana_wil_bonus+mana_cha_bonus)*2.5); } |