Planeshift
|
00001 /* 00002 * cachemanager.h 00003 * 00004 * Copyright (C) 2003 Atomic Blue ([email protected], http://www.atomicblue.org) 00005 * 00006 * 00007 * This program is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU General Public License 00009 * as published by the Free Software Foundation (version 2 of the License) 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 * GNU General Public License for more details. 00014 * You should have received a copy of the GNU General Public License 00015 * along with this program; if not, write to the Free Software 00016 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00017 * 00018 */ 00019 00020 #ifndef __CACHEMANAGER_H__ 00021 #define __CACHEMANAGER_H__ 00022 00023 //============================================================================= 00024 // Crystal Space Includes 00025 //============================================================================= 00026 #include <csutil/stringarray.h> 00027 #include <csutil/hash.h> 00028 #include <csgeom/vector3.h> 00029 00030 //============================================================================= 00031 // Project Space Includes 00032 //============================================================================= 00033 #include "util/slots.h" 00034 #include "util/gameevent.h" 00035 00036 #include "bulkobjects/pscharacter.h" 00037 #include "bulkobjects/psitemstats.h" 00038 00039 //============================================================================= 00040 // Local Includes 00041 //============================================================================= 00042 #include "icachedobject.h" 00043 00044 class psSectorInfo; 00045 class Client; 00046 class EntityManager; 00047 class psGuildInfo; 00048 class psGuildAlliance; 00049 class psSkillInfo; 00050 class psAccountInfo; 00051 class psQuest; 00052 class psAttack; 00053 class psAttackDefault; 00054 class psTradePatterns; 00055 class psTradeProcesses; 00056 class psTradeCombinations; 00057 class psTradeTransformations; 00058 class psTradeAutoContainers; 00059 class psItemSet; 00060 class psCommandManager; 00061 class psSpell; 00062 class psItemStats; 00063 class psItem; 00064 class RandomizedOverlay; 00065 00066 struct CraftTransInfo; 00067 struct CombinationConstruction; 00068 struct CombinationSet; 00069 struct CraftComboInfo; 00070 struct psItemAnimation; 00071 struct psItemCategory; 00072 struct psWay; 00073 struct Faction; 00074 struct psTrait; 00075 struct psRaceInfo; 00076 struct Stance; 00077 struct MathScript; 00078 00079 struct ArmorVsWeapon 00080 { 00081 int id; 00082 float c [3][4]; 00083 csString weapontype; 00084 }; 00085 00087 struct psItemStatFlags 00088 { 00089 csString string; 00090 int flag; 00091 00092 psItemStatFlags(const char* s, int f) : string(s), flag(f) { } 00093 void Set(const char* s,int f) 00094 { 00095 string=s; 00096 flag=f; 00097 } 00098 }; 00099 00100 // HACK TO GET AROUND BAD INCLUSION OF PSCHARACTER.H IN DRMESSAGE.H KWF 00101 #ifndef __PSMOVEMENT_H__ 00102 00103 struct psCharMode 00104 { 00105 uint32 id; 00106 csString name; 00107 csVector3 move_mod; 00108 csVector3 rotate_mod; 00109 csString idle_animation; 00110 }; 00111 00113 struct psMovement 00114 { 00115 uint32 id; 00116 csString name; 00117 csVector3 base_move; 00118 csVector3 base_rotate; 00119 }; 00120 #endif 00121 00131 struct psCharacterLimitation 00132 { 00133 uint32 id; 00134 csString limit_type; 00135 int min_score; 00136 csString value; 00137 }; 00138 00139 00147 class optionEntry 00148 { 00149 private: 00150 csString value; 00151 csHash<optionEntry,csString> subOptions; 00152 public: 00157 void setValue(const csString newValue) 00158 { 00159 value = newValue; 00160 } 00164 csString getValue() 00165 { 00166 return value; 00167 } 00171 double getValueAsDouble() 00172 { 00173 return atof(value); 00174 } 00178 int getValueAsInt() 00179 { 00180 return atoi(value); 00181 } 00187 csVector3 getValueAsVector(); 00194 bool getValueAsVector(csVector3 &vector); 00203 bool setOption(const csString path, const csString value); 00213 optionEntry* getOption(const csString path); 00221 optionEntry* getOptionSafe(const csString path, const csString fallback); 00222 }; 00223 00234 class CacheManager 00235 { 00236 public: 00237 CacheManager(); 00238 ~CacheManager(); 00239 00243 psSectorInfo* GetSectorInfoByName(const char* name); 00244 psSectorInfo* GetSectorInfoByID(unsigned int id); 00245 csHash<psSectorInfo*>::GlobalIterator GetSectorIterator(); 00247 00248 psCommandManager* GetCommandManager() 00249 { 00250 return commandManager; 00251 } 00252 00256 typedef csPDelArray<psTrait>::Iterator TraitIterator; 00257 psTrait* GetTraitByID(unsigned int id); 00258 psTrait* GetTraitByName(const char* name); 00259 TraitIterator GetTraitIterator(); 00261 00265 size_t GetRaceInfoCount(); 00266 psRaceInfo* GetRaceInfoByIndex(int idx); 00267 psRaceInfo* GetRaceInfoByID(unsigned int id); 00268 psRaceInfo* GetRaceInfoByNameGender(const char* name,PSCHARACTER_GENDER gender); 00269 psRaceInfo* GetRaceInfoByNameGender(unsigned int id, PSCHARACTER_GENDER gender); 00270 psRaceInfo* GetRaceInfoByMeshName(const csString &meshname); 00272 00276 psSkillInfo* GetSkillByID(unsigned int id); 00277 size_t GetSkillAmount(); 00278 psSkillInfo* GetSkillByName(const char* name); 00279 00281 void GetSkillsListbyCategory(csArray <psSkillInfo*> &listskill,int category); 00283 00287 const char* FindCommonString(unsigned int id); 00288 unsigned int FindCommonStringID(const char* name); 00289 inline void AddCommonStringID(const char* name) 00290 { 00291 FindCommonStringID(name); 00292 } 00293 00298 csStringSet* GetMsgStrings() 00299 { 00300 return &msg_strings; 00301 } 00302 00311 void GetCompressedMessageStrings(char* &data, unsigned long &size, 00312 uint32_t &num_strings, csMD5::Digest &digest); 00314 00318 psGuildInfo* FindGuild(unsigned int id); 00319 psGuildInfo* FindGuild(const csString &name); 00320 bool CreateGuild(const char* guildname, Client* client); 00321 void RemoveGuild(psGuildInfo* which); 00323 00327 psGuildAlliance* FindAlliance(unsigned int id); 00328 bool CreateAlliance(const csString &name, psGuildInfo* founder, Client* client); 00329 bool RemoveAlliance(psGuildAlliance* which); 00331 00335 psQuest* GetQuestByID(unsigned int id); 00336 psQuest* GetQuestByName(const char* name); 00337 psQuest* AddDynamicQuest(const char* name, psQuest* parentQuest, int step); 00338 00339 00341 bool UnloadQuest(int id); 00342 00344 bool LoadQuest(int id); 00345 csHash<psQuest*>::GlobalIterator GetQuestIterator(); 00347 00348 00352 psAttack *GetAttackByID(unsigned int id); 00353 psAttack *GetAttackByName(const char *name); 00354 csArray<psAttack*>GetAllAttacks(); 00356 bool UnloadAttack(int id); 00357 00359 bool LoadAttack(int id); 00360 csHash<psAttack *>::GlobalIterator GetAttackIterator(); 00362 00373 psAccountInfo* GetAccountInfoByID(AccountID accountid); 00374 00380 psAccountInfo* GetAccountInfoByCharID(PID charid); 00381 00389 psAccountInfo* GetAccountInfoByUsername(const char* username); 00390 00396 bool UpdateAccountInfo(psAccountInfo* ainfo); 00397 00403 unsigned int NewAccountInfo(psAccountInfo* ainfo); 00405 00407 bool PreloadAll(EntityManager* entitymanager); 00408 void UnloadAll(); 00409 00410 // Item categories 00411 psItemCategory* GetItemCategoryByID(unsigned int id); 00412 psItemCategory* GetItemCategoryByName(const csString &name); 00413 00418 psItemCategory* GetItemCategoryByPos(size_t pos) 00419 { 00420 return itemCategoryList.Get(pos); 00421 } 00425 size_t GetItemCategoryAmount() 00426 { 00427 return itemCategoryList.GetSize(); 00428 } 00429 00430 // Item Animations 00431 csPDelArray<psItemAnimation>* FindAnimationList(int id); 00432 00433 // Ways 00434 psWay* GetWayByID(unsigned int id); 00435 psWay* GetWayByName(const csString &name); 00436 00437 // attack types 00438 psAttackType *GetAttackTypeByID(unsigned int id); 00439 psAttackType *GetAttackTypeByName(csString name); 00440 00441 // weapon types 00442 psWeaponType*GetWeaponTypeByID(unsigned int id); 00443 psWeaponType *GetWeaponTypeByName(csString name); 00444 00445 // Factions 00446 Faction* GetFaction(const char* name); 00447 Faction* GetFaction(int id); 00448 Faction* GetFactionByName(const char* name); 00449 csHash<Faction*, int> &GetFactionHash() 00450 { 00451 return factions_by_id; 00452 } 00453 00454 // Progression Scripts 00455 ProgressionScript* GetProgressionScript(const char* name); 00456 00457 // Math scripts 00458 MathScript* GetMaxCarryWeight() { return maxCarryWeight; } 00459 MathScript* GetMaxCarryAmount() { return maxCarryAmount; } 00460 MathScript* GetMaxRealmScript() { return maxRealmScript; } 00461 MathScript* GetMaxManaScript() { return maxManaScript; } 00462 MathScript* GetMaxHPScript() { return maxHPScript; } 00463 MathScript* GetStaminaCalc() { return staminaCalc; } 00464 MathScript* GetExpSkillCalc() { return expSkillCalc; } 00465 MathScript* GetStaminaRatioWalk() { return staminaRatioWalk; } 00466 MathScript* GetStaminaRatioStill() { return staminaRatioStill; } 00467 MathScript* GetStaminaRatioSit() { return staminaRatioSit; } 00468 MathScript* GetStaminaRatioWork() { return staminaRatioWork; } 00469 MathScript* GetStaminaCombat() { return staminaCombat; } 00470 MathScript* GetDodgeValueCalc() { return dodgeValueCalc; } 00471 MathScript* GetArmorSkillsPractice() { return armorSkillsPractice; } 00472 MathScript* GetCharLevelGet() { return charLevelGet; } 00473 MathScript* GetSkillValuesGet() { return skillValuesGet; } 00474 MathScript* GetBaseSkillValuesGet() { return baseSkillValuesGet; } 00475 MathScript* GetSetBaseSkillsScript() { return setBaseSkillsScript; } 00476 MathScript* GetCalcDecay() { return calc_decay; } 00477 MathScript* GetCalcItemPrice() { return calcItemPrice; } 00478 MathScript* GetCalcItemSellPrice() { return calcItemSellPrice; } 00479 MathScript* GetPlayerSketchLimits() { return playerSketchLimits; } 00480 MathScript* GetSpellPowerLevel() { return spellPowerLevel; } 00481 MathScript* GetManaCost() { return manaCost; } 00482 MathScript* GetCastSuccess() { return castSuccess; } 00483 MathScript* GetResearchSuccess() { return researchSuccess; } 00484 MathScript* GetSpellPractice() { return spellPractice; } 00485 MathScript* GetDoDamage() { return doDamage; } 00486 MathScript* GetStaminaMove() { return staminaMove; } 00487 MathScript* GetFamiliarAffinity() { return msAffinity; } 00488 00489 // Spells 00490 typedef csPDelArray<psSpell>::Iterator SpellIterator; 00491 psSpell* GetSpellByID(unsigned int id); 00492 psSpell* GetSpellByName(const csString &name); 00493 SpellIterator GetSpellIterator(); 00494 00498 00499 csPDelArray<CombinationConstruction>* FindCombinationsList(uint32 patternid); 00500 00502 csPDelArray<psTradeTransformations>* FindTransformationsList(uint32 patternid, uint32 targetid); 00503 bool PreloadUniqueTradeTransformations(); 00504 csArray<uint32>* GetTradeTransUniqueByID(uint32 id); 00505 bool PreloadTradeProcesses(); 00506 csArray<psTradeProcesses*>* GetTradeProcessesByID(uint32 id); 00507 bool PreloadTradePatterns(); 00508 csArray<psTradePatterns*> GetTradePatternByItemID(uint32 id); 00509 psTradePatterns* GetTradePatternByName(csString name); 00510 csString CreateTransCraftDescription(psTradeTransformations* tran, psTradeProcesses* proc); 00511 csString CreateComboCraftDescription(CombinationConstruction* combArray); 00512 csString CreateComboCraftDescription(Result* combArray); 00513 csArray<CraftTransInfo*>* GetTradeTransInfoByItemID(uint32 id); 00514 csArray<CraftComboInfo*>* GetTradeComboInfoByItemID(uint32 id); 00516 00520 00521 psItemStats* GetBasicItemStatsByName(csString name); 00522 00524 psItemStats* GetBasicItemStatsByID(uint32 id); 00525 psItemStats* CopyItemStats(uint32 id, csString newName); 00526 00528 uint32 BasicItemStatsByNameExist(csString name); 00529 size_t ItemStatsSize(void) 00530 { 00531 return itemStats_IDHash.GetSize(); 00532 } 00533 00535 void CacheNameChange(csString oldName, csString newName); 00536 00537 bool LoadWorldItems(psSectorInfo* sector, csArray<psItem*> &items); 00538 00539 float GetArmorVSWeaponResistance(const char* armor_type, const char* weapon_type); 00540 float GetArmorVSWeaponResistance(psItemStats* armor, psItemStats* weapon); 00541 00542 void RemoveInstance(psItem* &item); 00543 void RemoveItemStats(psItemStats* &itemStats); 00544 00545 PSITEMSTATS_STAT ConvertAttributeString(const char* attributestring); 00546 00548 const char* Attribute2String(PSITEMSTATS_STAT s); 00550 00551 PSSKILL ConvertSkillString(const char* skillstring); 00552 PSSKILL ConvertSkill(int skill_id); 00553 PSCHARACTER_GENDER ConvertGenderString(const char* genderstring); 00554 PSITEMSTATS_SLOTLIST slotMap[PSCHARACTER_SLOT_BULK1]; 00555 00556 //Tips 00557 void GetTipByID(int id, csString &tip); 00558 unsigned int GetTipLength(); 00559 00560 SlotNameHash slotNameHash; 00561 00562 // Bad names 00563 size_t GetBadNamesCount(); 00564 const char* GetBadName(int pos); 00565 void AddBadName(const char*); 00566 void DelBadName(const char*); 00567 00569 csArray<psItemStatFlags> ItemStatFlagArray; 00570 00571 const char* MakeCacheName(const char* prefix, uint32 id); 00572 void AddToCache(iCachedObject* obj, const char* name, int max_cache_time_seconds); 00573 iCachedObject* RemoveFromCache(const char* name); 00574 00575 const csPDelArray<psCharMode> &GetCharModes() const 00576 { 00577 return char_modes; 00578 } 00579 const csPDelArray<psMovement> &GetMovements() const 00580 { 00581 return movements; 00582 } 00583 const psCharMode* GetCharMode(size_t id) const 00584 { 00585 return char_modes[id]; 00586 } 00587 const psMovement* GetMovement(size_t id) const 00588 { 00589 return movements[id]; 00590 } 00591 uint8_t GetCharModeID(const char* name); 00592 uint8_t GetMovementID(const char* name); 00593 00595 uint32_t NextEffectUID() 00596 { 00597 return ++effectID; 00598 } 00599 00601 const psCharacterLimitation* GetLimitation(size_t index); 00602 00604 csArray<Stance> stances; 00605 00607 csArray<csString> stanceID; 00608 00609 void AddItemStatsToHashTable(psItemStats* newitem); 00610 00618 optionEntry* getOption(const csString path) 00619 { 00620 return rootOptionEntry.getOption(path); 00621 } 00622 00631 optionEntry* getOptionSafe(const csString path, const csString value) 00632 { 00633 return rootOptionEntry.getOptionSafe(path,value); 00634 } 00635 00641 LootRandomizer* getLootRandomizer() 00642 { 00643 return lootRandomizer; 00644 } 00645 00652 void ApplyItemModifiers(psItemStats* baseItem, RandomizedOverlay* overlay, csArray<uint32_t> &modifierIds) 00653 { 00654 lootRandomizer->ApplyModifier(baseItem, overlay, modifierIds); 00655 } 00656 00662 void RandomizeItem(psItem* item, float maxCost, size_t numModifiers) 00663 { 00664 lootRandomizer->RandomizeItem(item, maxCost, false, numModifiers); 00665 } 00666 00670 bool ReloadOptions() 00671 { 00672 return PreloadOptions(); 00673 } 00674 00675 protected: 00676 uint32_t effectID; 00677 char CacheNameBuffer[15]; 00678 00679 bool PreloadSectors(); 00680 bool PreloadRaceInfo(); 00681 bool PreloadSkills(); 00682 bool PreloadAttacks(); 00686 bool PreloadOptions(); 00687 bool PreloadLimitations(); 00688 bool PreloadTraits(); 00689 bool PreloadItemCategories(); 00690 bool PreloadWays(); 00691 bool PreloadAttackTypes(); 00692 bool PreloadWeaponTypes(); 00694 void PreloadFactionCharacterEvents(const char* script, Faction* faction); 00695 bool PreloadFactions(); 00696 bool PreloadScripts(EntityManager* entitymanager); 00697 bool PreloadMathScripts(); 00698 bool PreloadSpells(); 00699 bool PreloadItemStatsDatabase(); 00700 bool PreloadItemAnimList(); 00701 bool PreloadQuests(); 00702 bool PreloadTradeCombinations(); 00703 bool PreloadTradeTransformations(); 00704 bool PreloadTips(); 00705 bool PreloadBadNames(); 00706 bool PreloadArmorVsWeapon(); 00707 bool PreloadMovement(); 00708 bool PreloadStances(); 00709 void PreloadCommandGroups(); 00710 00711 00717 bool PreloadLootModifiers(); 00718 00720 bool PreloadCraftMessages(); 00721 00728 bool UniqueInsertIntoItemArray(csArray<uint32>* finalItems, uint32 itemID); 00729 00740 int Contains(csArray<uint32>* list, uint32 id); 00741 00755 bool FindFinalItem(csHash<csHash<csPDelArray<psTradeTransformations>*, uint32> *,uint32>* txItemHash, csHash<csHash<csPDelArray<psTradeTransformations>*, uint32> *,uint32>* rxItemHash, csArray<uint32>* finalItems, uint32 itemID, csArray<uint32>* itemStack); 00756 00770 bool ReconcileFinalItems(csHash<csHash<csPDelArray<psTradeTransformations>*, uint32> *,uint32>* txItemHash, csHash<csHash<csPDelArray<psTradeTransformations>*, uint32> *,uint32>* rxItemHash, csArray<uint32>* finalItems, csArray<uint32>* craftBookItems, uint32 resultID, uint32 patternID, csArray<uint32>* itemStack); 00771 00781 bool loadTradeTransformationsByPatternAndGroup(Result* result, csHash<csHash<csPDelArray<psTradeTransformations> *,uint32> *,uint32>* txResultHash, csHash<csHash<csPDelArray<psTradeTransformations> *,uint32> *,uint32>* txItemHash); 00782 00791 bool freeTradeTransformationsByPatternAndGroup(csHash<csHash<csPDelArray<psTradeTransformations> *,uint32> *,uint32>* txItemHash, csHash<csHash<csPDelArray<psTradeTransformations> *,uint32> *,uint32>* txResultHash); 00792 00801 bool DescribeTransformation(psTradeTransformations* t, csArray<CraftTransInfo*>* newArray); 00802 00811 bool DescribeMultiTransformation(csPDelArray<psTradeTransformations>* rArray, csArray<CraftTransInfo*>* newArray); 00812 00821 bool DescribeCombination(Result* combinations, csArray<CraftTransInfo*>* newArray); 00822 00835 bool ListProductionSteps(csArray<CraftTransInfo*>* newArray, csHash<csHash<csPDelArray<psTradeTransformations>*, uint32> *,uint32>* txResultHash, csArray<uint32>* finalItems, uint32 itemID, uint32 patternID, uint32 groupID, csArray<uint32>* itemStack); 00836 00844 void CacheCraftTransforms(psMsgCraftingInfo* tradePattern, int patternID, int group); 00845 00853 void CacheCraftCombos(psMsgCraftingInfo* tradePattern, int patternID, int group); 00854 00855 PSTRAIT_LOCATION ConvertTraitLocationString(const char* locationstring); 00856 00857 class psCacheExpireEvent; // forward decl for next decl 00858 00859 struct CachedObject 00860 { 00861 csString name; 00862 iCachedObject* object; 00863 psCacheExpireEvent* event; 00864 }; 00865 00871 class psCacheExpireEvent : public psGameEvent 00872 { 00873 protected: 00874 bool valid; 00875 CachedObject* myObject; 00876 00877 public: 00878 psCacheExpireEvent(int delayticks,CachedObject* object); 00879 void CancelEvent() 00880 { 00881 valid = false; 00882 } 00883 virtual void Trigger(); 00884 }; 00885 00890 csHash<CachedObject*, csString> generic_object_cache; 00891 00892 // Common strings data. 00893 csStringSet msg_strings; 00894 char* compressed_msg_strings; 00895 unsigned long compressed_msg_strings_size; 00896 uint32_t num_compressed_strings; 00897 csMD5::Digest compressed_msg_strings_digest; 00898 00899 csHash<psSectorInfo*> sectorinfo_by_id; 00900 csHash<psSectorInfo*> sectorinfo_by_name; 00901 csPDelArray<psTrait > traitlist; 00902 csPDelArray<psRaceInfo > raceinfolist; 00903 00904 csHash<psSkillInfo*, int> skillinfo_IDHash; 00905 csHash<psSkillInfo*, csString> skillinfo_NameHash; 00906 csHash<psSkillInfo*, int> skillinfo_CategoryHash; 00907 00908 csPDelArray<psItemCategory > itemCategoryList; 00909 csPDelArray<psWay > wayList; 00910 csPDelArray<psAttackType > attackTypeList; 00911 csPDelArray<psWeaponType > weaponTypeList; 00912 csHash<Faction*, int> factions_by_id; 00913 csHash<Faction*, csString> factions; 00914 csHash<ProgressionScript*,csString> scripts; 00915 csPDelArray<psSpell > spellList; 00916 //csArray<psItemStats *> basicitemstatslist; 00917 csHash<psItemStats*,uint32> itemStats_IDHash; 00918 csHash<psItemStats*,csString> itemStats_NameHash; 00919 csPDelArray<csPDelArray<psItemAnimation > > item_anim_list; 00920 csHash<psGuildInfo*> guildinfo_by_id; 00921 csHash<psGuildAlliance*> alliance_by_id; 00922 csHash<psAttack *> attacks_by_id; 00923 csHash<psQuest *> quests_by_id; 00924 csHash<psTradePatterns *,uint32> tradePatterns_IDHash; 00925 csHash<psTradePatterns *,csString> tradePatterns_NameHash; 00926 csHash<csArray<psTradeProcesses*> *,uint32> tradeProcesses_IDHash; 00927 csHash<csPDelArray<CombinationConstruction> *,uint32> tradeCombinations_IDHash; 00928 csHash<csHash<csPDelArray<psTradeTransformations> *,uint32> *,uint32> tradeTransformations_IDHash; 00929 csHash<csArray<uint32> *,uint32> tradeTransUnique_IDHash; 00930 csHash<csArray<CraftTransInfo*> *,uint32> tradeCraftTransInfo_IDHash; 00931 csHash<csArray<CraftComboInfo*> *,uint32> tradeCraftComboInfo_IDHash; 00932 csArray<csString> tips_list; 00933 csStringArray bad_names; 00934 csPDelArray<ArmorVsWeapon> armor_vs_weapon; 00935 csPDelArray<psCharMode> char_modes; 00936 csPDelArray<psMovement> movements; 00937 csPDelArray<psCharacterLimitation> limits; 00938 psCommandManager* commandManager; 00939 optionEntry rootOptionEntry; 00940 00941 LootRandomizer* lootRandomizer; 00942 MathScript* maxCarryWeight; 00943 MathScript* maxCarryAmount; 00944 MathScript* maxRealmScript; 00945 MathScript* maxManaScript; 00946 MathScript* maxHPScript; 00947 MathScript* staminaCalc; 00948 MathScript* expSkillCalc; 00949 MathScript* staminaRatioWalk; 00950 MathScript* staminaRatioStill; 00951 MathScript* staminaRatioSit; 00952 MathScript* staminaRatioWork; 00953 MathScript* staminaCombat; 00954 MathScript* dodgeValueCalc; 00955 MathScript* armorSkillsPractice; 00956 MathScript* charLevelGet; 00957 MathScript* skillValuesGet; 00958 MathScript* baseSkillValuesGet; 00959 MathScript* setBaseSkillsScript; 00960 MathScript* calc_decay; 00961 MathScript* calcItemPrice; 00962 MathScript* calcItemSellPrice; 00963 MathScript* playerSketchLimits; 00964 MathScript* spellPowerLevel; 00965 MathScript* manaCost; 00966 MathScript* castSuccess; 00967 MathScript* researchSuccess; 00968 MathScript* spellPractice; 00969 MathScript* doDamage; 00970 MathScript* staminaMove; 00971 MathScript* msAffinity; 00972 }; 00973 00974 00975 #endif