Planeshift

cachemanager.h

Go to the documentation of this file.
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