void Character::SaveCharacter() { _log( ITEM__TRACE, "Saving character %u.", itemID() ); sLog.Debug( "Character::SaveCharacter()", "Saving all character info and skill attribute info to DB for character %s...", itemName().c_str() ); // character data m_factory.db().SaveCharacter( itemID(), CharacterData( accountID(), title().c_str(), description().c_str(), gender(), bounty(), balance(), securityRating(), logonMinutes(), corporationID(), allianceID(), warFactionID(), stationID(), solarSystemID(), constellationID(), regionID(), ancestryID(), careerID(), schoolID(), careerSpecialityID(), startDateTime(), createDateTime(), corporationDateTime() ) ); // corporation data m_factory.db().SaveCorpMemberInfo( itemID(), CorpMemberInfo( corporationHQ(), corpRole(), rolesAtAll(), rolesAtBase(), rolesAtHQ(), rolesAtOther() ) ); // Save this character's own attributes: SaveAttributes(); // Loop through all skills and invoke mAttributeMap.SaveAttributes() for each std::vector<InventoryItemRef> skills; GetSkillsList( skills ); std::vector<InventoryItemRef>::iterator cur, end; cur = skills.begin(); end = skills.end(); for(; cur != end; cur++) cur->get()->SaveAttributes(); //cur->get()->mAttributeMap.Save(); }
void Character::_CalculateTotalSPTrained() { // Loop through all skills trained and calculate total SP this character has trained so far, // NOT including the skill currently being trained: double exponent = 0.0f; double totalSP = 0.0f; EvilNumber skillLevel; EvilNumber skillRank; std::vector<InventoryItemRef> skills; GetSkillsList( skills ); std::vector<InventoryItemRef>::iterator cur, end; cur = skills.begin(); end = skills.end(); for(; cur != end; cur++) { // Calculate exact SP from each skill and add to total SP skillLevel = cur->get()->GetAttribute( AttrSkillLevel ); skillRank = cur->get()->GetAttribute( AttrSkillTimeConstant ); totalSP += 250.0f * (double)(skillRank.get_int()) * pow(32.0, (double)(((double)(skillLevel.get_int()) - 1.0f) / 2.0f)); } m_totalSPtrained = totalSP; }