Add infos into target window
[ryzomcore.git] / ryzom / server / src / entities_game_service / egs_variables.cpp
blob61c3017051a10d357bee12cc76eddc2444260a1c
1 // Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
2 // Copyright (C) 2010 Winch Gate Property Limited
3 //
4 // This source file has been modified by the following contributors:
5 // Copyright (C) 2019 Jan BOON (Kaetemi) <jan.boon@kaetemi.be>
6 //
7 // This program is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Affero General Public License as
9 // published by the Free Software Foundation, either version 3 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU Affero General Public License for more details.
17 // You should have received a copy of the GNU Affero General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
21 #include "stdpch.h"
22 #include "egs_variables.h"
23 #include "entities_game_service.h"
24 #include "player_manager/player_manager.h"
25 #include "player_manager/player.h"
26 #include "guild_manager/fame_manager.h"
28 using namespace NLMISC;
29 using namespace std;
31 CVariable<bool> ClearAttackFlags("egs","ClearAttackFlags","teampraire !!",true,0,true);
33 CVariable<bool> GuildSystemEnabled("egs","GuildSystemEnabled","bool enabling /disabling the GuildSystem",true,0,true);
34 CVariable<bool> MissionSystemEnabled("egs","MissionSystemEnabled","bool enabling /disabling the MissionSystem",true,0,true);
35 CVariable<bool> PackAnimalSystemEnabled("egs","PackAnimalSystemEnabled","bool enabling /disabling the PackAnimalSystem",true,0,true);
36 CVariable<bool> EnchantSystemEnabled("egs","EnchantSystemEnabled","bool enabling /disabling the EnchantSystem",true,0,true);
37 CVariable<bool> ForageSystemEnabled("egs","ForageSystemEnabled","bool enabling /disabling the ForageSystem",true,0,true);
38 CVariable<bool> CraftSystemEnabled("egs","CraftSystemEnabled","bool enabling /disabling the CraftSystem",true,0,true);
39 CVariable<bool> HarvestSystemEnabled("egs","HarvestSystemEnabled","bool enabling /disabling the HarvestSystem",true,0,true);
41 CVariable<uint32> DelayBeforeItemTP("egs","DelayBeforeItemTP","delay between item use and teleportation",150,0,true);
43 // XP/Progression config
44 CVariable<float> MaxDistanceForXpGain("egs","MaxDistanceForXpGain", "max distance from combat to gain Xp at creature death (in meters)", 50.0f, 0, true );
45 CVariable<float> XPTeamMemberDivisorValue("egs","XPTeamMemberDivisorValue", "for team XP progression, add this value to the xp divisor for each team member above one", 0.9f, 0, true );
46 CVariable<float> MaxXPGainPerPlayer("egs","MaxXPGainPerPlayer", "Max XP gain by any one player on any creature (each team member can gain up to this value)", 30.0f, 0, true );
48 CVariable<uint32> NbTickForRegenCreature("egs","NbTickForRegenCreature", "nb tick needed for regenerate scores of all creature (total creature / number regenerated per tick)", 64, 0, true );
50 // variable create Character Start skills value
51 CVariable<std::string> CreateCharacterStartSkillsValue("egs","CreateCharacterStartSkillsValue", "create Character Start skills value", std::string(""), 0, true );
52 // variable for death penalty duration
53 CVariable<double> DeathXPFactor("egs","DeathXPFactor", "XP to gain after a death is DeathXPFactor * max skill /(1 + death index )", 10, 0, true );
54 // variable for death penalty resorption
55 CVariable<double> DeathXPResorptionTime("egs","DeathXPResorptionTime", "XP resorbs totally after DeathXPResorptionTime / NbDeath", 3, 0, true );
56 // variable for min best skill value to get death penalty
57 CVariable<sint32> DeathPenaltyMinLevel("egs","DeathPenaltyMinLevel", "No death penalty if best skill value is lesser than DeathPenaltyMinLevel", 10, 0, true );
58 // comma duration before character are dead (it's time allowed for resurect player buy a healing spell)
59 CVariable<uint32> CommaDelayBeforeDeath( "egs", "CommaDelayBeforeDeath", "Comma time in server tick before a character dead", 3000, 0, true );
60 // variable define Max skill value can be reached, this not decrease skill value if this limit are reduce and player character have higher skills
61 CVariable<sint32> SkillFightValueLimiter("egs","SkillFightValueLimiter", "Skill value limit", 250, 0, true );
62 CVariable<sint32> SkillMagicValueLimiter("egs","SkillMagicValueLimiter", "Skill value limit", 250, 0, true );
63 CVariable<sint32> SkillCraftValueLimiter("egs","SkillCraftValueLimiter", "Skill value limit", 250, 0, true );
64 CVariable<sint32> SkillHarvestValueLimiter("egs","SkillHarvestValueLimiter", "Skill value limit", 250, 0, true );
66 // magic skill boost for low level chars
67 CVariable<uint32> MagicSkillStartValue("egs","MagicSkillStartValue", "Minimum magic skill used for break cast and resist tests", 20, 0, true );
69 // variable define if areas effects are on or off
70 CVariable<bool> FightAreaEffectOn("egs","FightAreaEffectOn", "Are effect for fight are active if variable = true", true, 0, true );
71 CVariable<bool> MagicAreaEffectOn("egs","MagicAreaEffectOn", "Are effect for magic are active if variable = true", true, 0, true );
72 CVariable<bool> HarvestAreaEffectOn("egs","HarvestAreaEffectOn", "Are effect for harvest (toxic cloud) are active if variable = true", true, 0, true );
73 CVariable<uint32> MaxAreaTargetCount("egs","MaxAreaTargetCount", "maximum number of target in an area effect spell/missile", 6, 0, true );
75 CVariable<bool> CorrectInvalidPlayerPositions("egs","CorrectInvalidPlayerPositions", "If true, invalid player positions will be corrected if when a player logs in", true, 0, true );
77 CVariable<uint32> MountDuration("egs","MountDuration","delay in ticks between mount order and player really mounted on creature",50,0,true);
78 CVariable<uint32> UnmountDuration("egs","UnmountDuration","delay in ticks between unmount order and player really unmounted from creature",30,0,true);
81 /// tod guild : put that to false when ben has debugged the system
82 CVariable<bool> DataPersistsAsText("egs","DataPersistsAsText", "If true Persistant data will be stored as text", false, 0, true );
83 CVariable<uint32> GuildSavingPeriod("egs","GuildSavingPeriod", "guild saving period in ticks", 10, 0, true );
84 CVariable<uint32> StoreSavePeriod("egs","StoreSavePeriod","sell store save period in ticks", 10, 0, true );
86 // values used by the weapon table
87 CVariable<float> MinDamage("egs","MinDamage", "Min damage (when skill 0), used by weapon damage table", 25.0f, 0, true );
88 CVariable<float> DamageStep("egs","DamageStep", "Damage step, used by weapon damage table", 1.0f, 0, true );
89 CVariable<float> ExponentialPower("egs","ExponentialPower", "ExponentialPower used by weapon damage table", 2.0f, 0, true );
90 CVariable<float> SmoothingFactor("egs","SmoothingFactor", "SmoothingFactor used by weapon damage table", 0.8f, 0, true );
91 // combat config vars
92 CVariable<float> HandToHandDamage("egs","HandToHandDamage", "damage factor when fighting without weapons", 0.35f, 0, true );
93 CVariable<uint16> HandToHandLatency("egs","HandToHandLatency", "attacks latency *in ticks* when fighting without a weapon", 30, 0, true );
94 CVariable<uint16> HandToHandReachValue("egs","HandToHandReachValue", "reach value (~allonge) when fighting without a weapon", 0, 0, true );
95 CVariable<uint16> MinTwoWeaponsLatency("egs","MinTwoWeaponsLatency", "Min attack latency (in ticks) when using 2 weapons", 15, 0, true );
96 CVariable<float> MaxAngleForRangeCombat("egs","MaxAngleForRangeCombat", "Max angle in Radians between player heading and target position to validate range combat", (float)NLMISC::Pi, 0, true );
98 CVariable<uint32> AreaEffectClipDistance("egs","AreaEffectClipDistance", "above this value (in mm) we clip vertical range to 'AreaEffectClipVerticalRange' millimeters", 5000, 0, true );
99 CVariable<uint32> AreaEffectClipVerticalRange("egs","AreaEffectClipVerticalRange", "vertical range of area effects when area effect range is below 4-5meters (see 'AreaEffectClipDistance')", 2000, 0, true );
101 // fame interpolation time (for player fame comming from guild)
102 CVariable<uint32> FameMemoryInterpolation("egs","FameMemoryInterpolation", "Guild fame interpolation time in ticks", 4320000, 0, true );
103 // fame trend reset delay.
104 CVariable<uint32> FameTrendResetDelay("egs","FameTrendResetDelay", "Guild fame trend reset delay in ticks", 18000, 0, true );
106 CVariable<uint32> AutoSpawnForageSourcePeriodOverride(
107 "egs",
108 "AutoSpawnForageSourcePeriodOverride",
109 "Average time in ticks between two auto-spawns of forage source in a deposit with auto-spawn enabled (set to 0 to use deposit settings instead)",
110 0, // using deposit settings instead
111 0, true );
113 CVariable<float> ForageKamiAngerDecreasePerHour(
114 "egs",
115 "ForageKamiAngerDecreasePerHour",
116 "Level of kami anger automatically decreased per hour (10x3600 gamecycles)",
117 83.0f, // decrease by 1000 in about 12h
118 0, true );
120 CVariable<float> ForageKamiAngerOverride(
121 "egs",
122 "ForageKamiAngerOverride",
123 "Force all deposits to the specified kami anger level (debug option)",
125 0, false );
127 CVariable<float> ForageKamiAngerThreshold1(
128 "egs",
129 "ForageKamiAngerThreshold1", "Threshold 1 of kami anger level (<ForageKamiAngerThreshold2)",
130 950.0f,
131 0, true );
133 CVariable<float> ForageKamiAngerThreshold2(
134 "egs",
135 "ForageKamiAngerThreshold2", "Threshold 1 of kami anger level (>ForageKamiAngerThreshold1)",
136 1000.0f,
137 0, true );
139 CVariable<sint32> ForageKamiAngerPunishDamage(
140 "egs",
141 "ForageKamiPunishDamage", "Max HP hit once by an angry (invisible) kami",
142 6000,
143 0, true );
145 /*CVariable<uint> ForageKamiAngerPunishFX(
146 "KamiAngerPunishFX", "0 = Piercing; 1 = Blunt; 2 = Slashing",
148 0, true );*/
150 CVariable<uint16> ForageSiteStock(
151 "egs",
152 "ForageSiteStock", "Number of extractions before a forage site is empty",
153 100,
154 0, true );
156 CVariable<uint16> ForageSiteNbUpdatesToLive(
157 "egs",
158 "ForageSiteNbUpdatesToLive", "Number of deposit updates before a forage site stock is reset",
160 0, true );
162 CVariable<float> ForageSiteRadius(
163 "egs",
164 "ForageSiteRadius", "Radius of foage site area",
165 9.0f, // diameter 18 m (as wide as three source ranges)
166 0, true );
168 CVariable<bool> UseAsyncBSPlayerLoading("egs","UseAsyncBSPlayerLoading", "Use BS for Asynchrone player loading", true, 0, true );
169 //CVariable<string> BackupServiceIP("egs","BSHost", "Host address and port of backup service (ip:port)", "localhost", 0, true );
170 //CVariable<bool> UseBS("egs","UseBS", "if 1, use the backup service or use local save", false, 0, true);
173 //#ifdef NL_DEBUG
174 CVariable<float> GlobalDebugDamageFactor("egs","GlobalDebugDamageFactor", "global damage factor (debug only)", 1.0f, 0, true );
175 //#endif
177 CVariable<bool> VerboseWorldInstance("egs","VerboseWorldInstance", "world instance activity verbose", false, 0, true );
180 // FOR TESTING ONLY
181 CVariable<bool> EntitiesNoResist("egs","EntitiesNoResist", "change or just display the NoResist flag - true means no target resist", false ,0 , true);
182 CVariable<bool> EntitiesNoActionFailure("egs","EntitiesNoActionFailure", "hange or just display the NoActionFailure flag - true means no failure", false ,0 , true);
183 CVariable<bool> EntitiesNoCastBreak("egs","EntitiesNoCastBreak","change or just display the NoCastBreak flag - true means no cast break when hit", false ,0 , true);
185 // ITEM DECAY vars
186 CVariable<uint16> ReferenceWeaponLatencyForWear("egs","ReferenceLatencyForWear","latency used as reference for weapon wear, a weapon with this latency will have a wear factor of 1.0", 20,0,true);;
188 CVariable<float> DaggerWearPerAction("egs","DaggerWearPerAction","define the 'wear per action' for Dagger (1.0 = -1 HP for each action)", 0.01f,0,true);
189 CVariable<float> SwordWearPerAction("egs","SwordWearPerAction","define the 'wear per action' for Sword (1.0 = -1 HP for each action)", 0.01f,0,true);
190 CVariable<float> MaceWearPerAction("egs","MaceWearPerAction","define the 'wear per action' for Mace (1.0 = -1 HP for each action)", 0.01f,0,true);
191 CVariable<float> AxeWearPerAction("egs","AxeWearPerAction","define the 'wear per action' for Axe (1.0 = -1 HP for each action)", 0.01f,0,true);
192 CVariable<float> SpearWearPerAction("egs","SpearWearPerAction","define the 'wear per action' for Spear (1.0 = -1 HP for each action)", 0.01f,0,true);
193 CVariable<float> StaffWearPerAction("egs","StaffWearPerAction","define the 'wear per action' for Staff (1.0 = -1 HP for each action)", 0.01f,0,true);
194 CVariable<float> MagicianStaffWearPerAction("egs","MagicianStaffWearPerAction","define the 'wear per action' for MagicianStaff (1.0 = -1 HP for each action)", 0.01f,0,true);
195 CVariable<float> TwoHandSwordWearPerAction("egs","TwoHandSwordWearPerAction","define the 'wear per action' for TwoHandSword (1.0 = -1 HP for each action)", 0.01f,0,true);
196 CVariable<float> TwoHandAxeWearPerAction("egs","TwoHandAxeWearPerAction","define the 'wear per action' for TwoHandAxe (1.0 = -1 HP for each action)", 0.01f,0,true);
197 CVariable<float> PikeWearPerAction("egs","PikeWearPerAction","define the 'wear per action' for Pike (1.0 = -1 HP for each action)", 0.01f,0,true);
198 CVariable<float> TwoHandMaceWearPerAction("egs","TwoHandMaceWearPerAction","define the 'wear per action' for TwoHandMace (1.0 = -1 HP for each action)", 0.01f,0,true);
200 CVariable<float> AutolauchWearPerAction("egs","AutolauchWearPerAction","define the 'wear per action' for Autolauch (1.0 = -1 HP for each action)", 0.01f,0,true);
201 CVariable<float> BowrifleWearPerAction("egs","BowrifleWearPerAction","define the 'wear per action' for Bowrifle (1.0 = -1 HP for each action)", 0.01f,0,true);
202 CVariable<float> LauncherWearPerAction("egs","LauncherWearPerAction","define the 'wear per action' for Launcher (1.0 = -1 HP for each action)", 0.01f,0,true);
203 CVariable<float> PistolWearPerAction("egs","PistolWearPerAction","define the 'wear per action' for Pistol (1.0 = -1 HP for each action)", 0.01f,0,true);
204 CVariable<float> BowpistolWearPerAction("egs","BowpistolWearPerAction","define the 'wear per action' for Bowpistol (1.0 = -1 HP for each action)", 0.01f,0,true);
205 CVariable<float> RifleWearPerAction("egs","RifleWearPerAction","define the 'wear per action' for Rifle (1.0 = -1 HP for each action)", 0.01f,0,true);
207 CVariable<float> CraftingToolWearPerAction("egs","CraftingToolWearPerAction","define the 'wear per action' for CraftingTool (1.0 = -1 HP for each action)", 0.01f,0,true);
208 CVariable<float> ForageToolWearPerAction("egs","ForageToolWearPerAction","define the 'wear per action' for ForageTool (1.0 = -1 HP for each action)", 0.01f,0,true);
209 CVariable<float> ArmorWearPerAction("egs","ArmorWearPerAction","define the 'wear per action' for Armor (1.0 = -1 HP for each action)", 0.01f,0,true);
210 CVariable<float> JewelryWearPerAction("egs","JewelryWearPerAction","define the 'wear per action' for Jewels (1.0 = -1 HP for each action)", 0.01f,0,true);
211 CVariable<float> ShieldWearPerAction("egs","ShieldWearPerAction","define the 'wear per action' for Shield (1.0 = -1 HP for each action)", 0.01f,0,true);
213 CVariable<float> WornState1("egs","WornState1","define the 'WornState1' for items (0.2 = 20% of hp)", 0.25f,0,true);
214 CVariable<float> WornState2("egs","WornState2","define the 'WornState2' for items (0.2 = 20% of hp)", 0.10f,0,true);
215 CVariable<float> WornState3("egs","WornState3","define the 'WornState3' for items (0.2 = 20% of hp)", 0.05f,0,true);
216 CVariable<float> WornState4("egs","WornState4","define the 'WornState4' for items (0.2 = 20% of hp)", 0.01f,0,true);
218 // MAGIC config
219 // add some time to dead links
220 CVariable<uint32> NoLinkSurvivalAddTime("egs","NoLinkSurvivalAddTime","add some time to dead links", 0,0,true);
221 CVariable<uint32> NoLinkTimeFear("egs","NoLinkTimeFear","add some time to dead Fear links", 0,0,true);
222 CVariable<uint32> NoLinkTimeSleep("egs","NoLinkTimeSleep","add some time to dead Sleep links", 0,0,true);
223 CVariable<uint32> NoLinkTimeStun("egs","NoLinkTimeStun","add some time to dead Stun links", 0,0,true);
224 CVariable<uint32> NoLinkTimeRoot("egs","NoLinkTimeRoot","add some time to dead Root links", 0,0,true);
225 CVariable<uint32> NoLinkTimeSnare("egs","NoLinkTimeSnare","add some time to dead Snare links", 0,0,true);
226 CVariable<uint32> NoLinkTimeSlow("egs","NoLinkTimeSlow","add some time to dead Slow links", 0,0,true);
227 CVariable<uint32> NoLinkTimeBlind("egs","NoLinkTimeBlind","add some time to dead Blind links", 0,0,true);
228 CVariable<uint32> NoLinkTimeMadness("egs","NoLinkTimeMadness","add some time to dead Madness links", 0,0,true);
229 CVariable<uint32> NoLinkTimeDot("egs","NoLinkTimeDot","add some time to dead Dot links", 0,0,true);
231 CVariable<uint32> UpdatePeriodFear("egs","UpdatePeriodFear","update period of Fear link spells", 40,0,true);
232 CVariable<uint32> UpdatePeriodSleep("egs","UpdatePeriodSleep","update period of Sleep link spells", 40,0,true);
233 CVariable<uint32> UpdatePeriodStun("egs","UpdatePeriodStun","update period of Stun link spells", 40,0,true);
234 CVariable<uint32> UpdatePeriodRoot("egs","UpdatePeriodRoot","update period of Root link spells", 40,0,true);
235 CVariable<uint32> UpdatePeriodSnare("egs","UpdatePeriodSnare","update period of Snare link spells", 40,0,true);
236 CVariable<uint32> UpdatePeriodSlow("egs","UpdatePeriodSlow","update period of Slow link spells", 40,0,true);
237 CVariable<uint32> UpdatePeriodBlind("egs","UpdatePeriodBlind","update period of Blind link spells", 40,0,true);
238 CVariable<uint32> UpdatePeriodMadness("egs","UpdatePeriodMadness","update period of Madness link spells", 40,0,true);
239 CVariable<uint32> UpdatePeriodDot("egs","UpdatePeriodDot","update period of Dot link spells", 40,0,true);
240 CVariable<uint32> DefaultUpdatePeriod("egs","DefaultUpdatePeriod","default update period of link spells", 40,0,true);
242 // add some post cast time to magic (latency)
243 CVariable<uint32> PostCastLatency("egs","PostCastLatency","add some post cast time to magic (latency in ticks)", 5,0,true);
245 // value added to resist value each time a spell is cast on an entity
246 CVariable<uint16> ResistIncreaseFear("egs","ResistIncreaseFear","value added to Fear resist each time a Fear spell is cast on an entity", 5,0,true);
247 CVariable<uint16> ResistIncreaseSleep("egs","ResistIncreaseSleep","value added to Sleep resist each time a Sleep spell is cast on an entity", 5,0,true);
248 CVariable<uint16> ResistIncreaseStun("egs","ResistIncreaseStun","value added to Stun resist each time a Stun spell is cast on an entity", 5,0,true);
249 CVariable<uint16> ResistIncreaseRoot("egs","ResistIncreaseRoot","value added to Root resist each time a Root spell is cast on an entity", 5,0,true);
250 CVariable<uint16> ResistIncreaseSnare("egs","ResistIncreaseSnare","value added to Snare resist each time a Snare spell is cast on an entity", 5,0,true);
251 CVariable<uint16> ResistIncreaseSlow("egs","ResistIncreaseSlow","value added to Slow resist each time a Slow spell is cast on an entity", 5,0,true);
252 CVariable<uint16> ResistIncreaseBlind("egs","ResistIncreaseBlind","value added to Blind resist each time a Blind spell is cast on an entity", 5,0,true);
253 CVariable<uint16> ResistIncreaseMadness("egs","ResistIncreaseMadness","value added to Madness resist each time a Madness spell is cast on an entity", 5,0,true);
255 CVariable<uint16> ResistIncreaseAcid("egs","ResistIncreaseAcid","value added to Acid resist each time a Acid spell is cast on an entity", 3,0,true);
256 CVariable<uint16> ResistIncreaseCold("egs","ResistIncreaseCold","value added to Cold resist each time a Cold spell is cast on an entity", 3,0,true);
257 CVariable<uint16> ResistIncreaseElectricity("egs","ResistIncreaseElectricity","value added to Electricity resist each time a Electricity spell is cast on an entity", 5,0,true);
258 CVariable<uint16> ResistIncreaseFire("egs","ResistIncreaseFire","value added to Fire resist each time a Fire spell is cast on an entity", 3,0,true);
259 CVariable<uint16> ResistIncreasePoison("egs","ResistIncreasePoison","value added to Poison resist each time a Poison spell is cast on an entity", 3,0,true);
260 CVariable<uint16> ResistIncreaseRot("egs","ResistIncreaseRot","value added to Rot resist each time a Rot spell is cast on an entity", 3,0,true);
261 CVariable<uint16> ResistIncreaseShockwave("egs","ResistIncreaseShockwave","value added to Shockwave resist each time a Shockwave spell is cast on an entity", 3,0,true);
263 // values used to determine player magic resist level
264 CVariable<float> MagicResistFactorForCombatSkills("egs","MagicResistFactorForCombatSkills","factor on combat skill level to get equivalent magic resist level", 1.0f,0,true);
265 CVariable<float> MagicResistFactorForMagicSkills("egs","MagicResistFactorForMagicSkills","factor on magic skill level to get equivalent magic resist level", 1.0f,0,true);
266 CVariable<float> MagicResistFactorForForageSkills("egs","MagicResistFactorForForageSkills","factor on forage skill level to get equivalent magic resist level", 0.5f,0,true);
267 CVariable<sint32> MagicResistSkillDelta("egs","MagicResistSkillDelta","value always added to player base magic resist", -25,0,true);
269 CVariable<uint32> MaxMagicProtection("egs","MaxMagicProtection","Maximum protection a character can have against a magic damage",80,0,true);
270 CVariable<uint32> MaxAbsorptionFactor("egs","MaxAbsorptionFactor","Maximum magic damage absorption factor, 100 = factor 1.0f, base absorption is sum of jewel level", 100,0,true);
271 CVariable<uint32> HominBaseProtection("egs","HominBaseProtection","Homin base protection against magic common damage (cold, acid, rot)", 10,0,true);
272 CVariable<uint32> HominRacialProtection("egs","HominRacialProtection","Homin base protection against magic racial damage (Fire, Poison, Shockwave, Electricity)", 20,0,true);
273 CVariable<uint32> HominRacialResistance("egs","HominRacialResistance","Homin base resistance against magic racial spell type", 10,0,true);
274 CVariable<uint32> MaxMagicResistanceBonus("egs","MaxMagicResistanceBonus","Max bonus resistance against magic spell type", 50,0,true);
275 CVariable<uint32> EcosystemResistancePenalty("egs","EcosystemResistancePenalty","Resistance Penalty gived by each ecosystem", 10,0,true);
277 // intangible time after a teleport or a respawn
278 CVariable<uint16> IntangibleTimeAfterTP("egs","IntangibleTimeAfterTP","intangible time after a teleport or a respawn (in ticks)", 30,0,true);
280 // update frequency of the compass target position (in ticks)
281 CVariable<uint32> CompassTargetUpdateFrequency("egs","CompassTargetUpdateFrequency", " update frequency of the compass target position (in ticks)", 20, 0, true);
283 // update period of toxic cloud damaging (in ticks)
284 CVariable<uint32> ToxicCloudUpdateFrequency("egs","ToxicCloudUpdateFrequency", "update frequency of toxic cloud damaging (in ticks)", 20, 0, true);
286 // update period of deposits (in ticks) (should not be frequent; 0 is forbidden)
287 CVariable<uint32> DepositUpdateFrequency("egs","DepositUpdateFrequency", "update frequency of deposits (in ticks)", 300, 0, true, cbChangeDepositUpdateFrequency); // default: 30 s
289 // update period of auras effects (to determine chich entities are affected for instance) (in ticks)
290 CVariable<uint32> AurasUpdateFrequency("egs","AurasUpdateFrequency", "update frequency of auras effects (to determine which entities are affected for instance) (in ticks)", 20, 0, true);
292 // update frequency of locate deposit effect
293 CVariable<uint32> ForageLocateDepositUpdateFrequency("egs","ForageLocateDepositUpdateFrequency", "update frequency of locate deposit effect", 25, 0, true );
295 // characteristic brick progression step
296 CVariable<uint32> CharacteristicBrickStep("egs","CharacteristicBrickStep", "characteristic brick progression step(brick xxxx05 match a charac value of characteristic 5*CharacteristicBrickStep)", 5, 0, true);
298 // Variable regen divisor & factor
299 CVariable<float> RegenDivisor("egs","RegenDivisor", "Divisor used for compute regenerate per seconde in repos (divide characteristics per divisor)", 16.0f, 0, true, CPlayerService::updateRegen );
300 CVariable<float> RegenReposFactor("egs","RegenReposFactor", "Divisor used for compute regenerate per seconde in action (regen repos / factor)", 2.0f, 0, true, CPlayerService::updateRegen );
301 CVariable<float> RegenOffset("egs","RegenOffset", "Regen offset", 1.6f, 0, true, CPlayerService::updateRegen );
303 // Max value for player's characteristics
304 CVariable<uint16> MaxCharacteristicValue("egs","MaxCharacteristicValue", "Max value for player's characteristics", 250, 0, true);
306 // COMBAT config
307 // factor on creature and npc damage
308 CVariable<float> BotDamageFactor("egs","BotDamageFactor", "Factor applied on all Bots (creature and npcs) damage", 1.0f, 0, true );
310 CVariable<bool> ApplyAverageDodgeFactor("egs","ApplyAverageDodgeFactor", "Whether to use the average dodge factor in calculating mob damage ", true, 0, true );
312 CVariable<float> HitChestStaLossFactor("egs","HitChestStaLossFactor", "factor of damage also lost in sta when hit to chest", 0.5f, 0, true );
313 CVariable<float> HitHeadStunDuration("egs","HitHeadStunDuration", "duration (in seconds) of a stun when hit to head", 2.5f, 0, true );
314 CVariable<float> HitArmsSlowDuration("egs","HitArmsSlowDuration", "duration (in seconds) of a slow attack when hit to arms", 5.0f, 0, true );
315 CVariable<sint16> HitArmsSlowFactor("egs","HitArmsSlowFactor", "slowing factor when hit to arms (+20 = +20% to attack latency)", 50, 0, true );
316 CVariable<float> HitLegsSlowDuration("egs","HitLegsSlowDuration", "duration (in seconds) of a slow move when hit to legs", 5.0f, 0, true );
317 CVariable<sint16> HitLegsSlowFactor("egs","HitLegsSlowFactor", "slowing factor when hit to legs (-20 = -20% to move speed)", -20, 0, true );
318 CVariable<float> HitHandsDebuffDuration("egs","HitHandsDebuffDuration", "duration in seconds of skills debuff when hit to hands", 5.0f, 0, true );
319 CVariable<sint32> HitHandsDebuffValue("egs","HitHandsDebuffValue", "value of skills debuff when hit to hands ", -20, 0, true );
320 CVariable<float> HitFeetDebuffDuration("egs","HitFeetDebuffDuration", "duration in seconds of dodge debuff when hit to feet", 5.0f, 0, true );
321 CVariable<sint32> HitFeetDebuffValue("egs","HitFeetDebuffValue", "value of skills dodge when hit to hands ", -20, 0, true );
323 CVariable<uint32> NbOpponentsBeforeMalus("egs","NbOpponentsBeforeMalus", "number of opponent one can handle without defense malus", 1, 0, true );
324 CVariable<sint32> ModPerSupernumeraryOpponent("egs","ModPerSupernumeraryOpponent", "modifier on defense (parry/dodge) per opponent after 'n'", -5, 0, true );
325 CVariable<float> ShieldingRadius("egs","ShieldingRadius", "effective radius of the 'shielding' power", 5.0f, 0, true );
327 CVariable<uint32> CombatFlagLifetime("egs","CombatFlagLifetime", "time *in ticks* during which a combat flag is kept 'active'", 50, 0, true );
329 CVariable<uint16> CriticalHitChances("egs","CriticalHitChances", "chances (in%) to make a critical hit during a combat action (5 means 5%)", 5, 0, true );
331 CVariable<float> DodgeFactorForMagicSkills("egs","DodgeFactorForMagicSkills", "Factor aplied on magic skill values to determine the equivalent for dodge", 1.0f, 0, true );
332 CVariable<float> DodgeFactorForForageSkills("egs","DodgeFactorForForageSkills", "Factor aplied on forage skill values to determine the equivalent for dodge", 0.5f, 0, true );
334 CVariable<float> ForageExtractionTimeMinGC( "egs", "ForageExtractionTimeMinGC", "Minimum time of extraction in ticks", 230.0f, 0, true );
335 CVariable<float> ForageExtractionTimeSlopeGC( "egs", "ForageExtractionTimeSlopeGC", "Slope of base extraction time curve", 2.0f, 0, true );
338 CVariable<float> ForageQuantityBaseRate( "egs", "ForageQuantityBaseRate", "Base of extraction rate", 0.23f, 0, true ); // 0.23 doubles the previous minimum setting
340 // ForageQuantitySlowFactor=0.5 => Results: 100% of rate at extraction #4
341 CVariable<float> ForageQuantitySlowFactor( "egs","ForageQuantitySlowFactor",
342 "Factor for slowness of quantity growth", 0.5f,
343 0, true );
345 // ForageQualitySlowFactor=1.69 and ForageQualityCeilingFactor=1.1
346 CVariable<float> ForageQualitySlowFactor( "egs","ForageQualitySlowFactor",
347 "Factor for slowness of quality growth", 1.69f,
348 0, true );
349 CVariable<float> ForageQualitySlowFactorQualityLevelRatio( "egs", "ForageQualitySlowFactorQualityLevelRatio",
350 "Each quality level in extraction action slows the quality raising from this amount", 0.01f,
351 0, true );
352 CVariable<float> ForageQualitySlowFactorDeltaLevelRatio( "egs", "ForageQualitySlowFactorDeltaLevelRatio",
353 "Each delta between quality level in extraction action and player's level slows the quality raising from this amount", 0.08f,
354 0, true );
355 CVariable<float> ForageQualitySlowFactorMatSpecRatio( "egs", "ForageQualitySlowFactorMatSpecRatio",
356 "Material specialization in extraction speeds up the quality raising from this amount", 0.80f,
357 0, true );
358 CVariable<float> ForageQualityCeilingFactor( "egs","ForageQualityCeilingFactor",
359 "Factor for ceiling of quality growth", 1.1f,
360 0, true );
361 CVariable<bool> ForageQualityCeilingClamp( "egs","ForageQualityCeilingClamp",
362 "Prevent to go past the ceiling", true,
363 0, true );
365 // Impact on negative values
366 CVariable<float> ForageQuantityImpactFactor( "egs","ForageQuantityImpactFactor",
367 "Factor for extraction impact", 20.0f,
368 0, true );
369 CVariable<float> ForageQualityImpactFactor( "egs","ForageQualityImpactFactor",
370 "Factor for extraction impact", 1.5f,
371 0, true );
373 CVariable<float> ForageExtractionAbsorptionMatSpecFactor( "egs", "ForageExtractionAbsorptionMatSpecFactor", "Material specialization reduces harmfulness", 4.0f, 0, true );
374 CVariable<float> ForageExtractionAbsorptionMatSpecMax( "egs", "ForageExtractionAbsorptionMatSpecMax", "Material specialization reduces harmfulness", 0.8f, 0, true );
375 CVariable<float> ForageExtractionCareMatSpecFactor( "egs", "ForageExtractionCareMatSpecFactor", "Material specialization raises care", 1.2f, 0, true );
377 CVariable<float> ForageExtractionAbsorptionEcoSpecFactor( "egs", "ForageExtractionAbsorptionEcoSpecFactor", "Ecosystem specialization reduces harmfulness", 3.0f, 0, true );
378 CVariable<float> ForageExtractionAbsorptionEcoSpecMax( "egs", "ForageExtractionAbsorptionEcoSpecMax", "Ecosystem specialization reduces harmfulness", 0.8f, 0, true );
379 CVariable<float> ForageExtractionCareEcoSpecFactor( "egs", "ForageExtractionCareEcoSpecFactor", "Ecosystem specialization raises care", 1.1f, 0, true );
381 CVariable<float> ForageExtractionNaturalDDeltaPerTick( "egs", "ForageExtractionNaturalDDeltaPerTick", "D increase per tick", 0.1f, 0, true );
382 CVariable<float> ForageExtractionNaturalEDeltaPerTick( "egs", "ForageExtractionNaturalEDeltaPerTick", "E increase per tick", 0.1f, 0, true );
383 CVariable<float> ForageHPRatioPerSourceLifeImpact( "egs", "HPRatioPerSourceLifeImpact", "Ratio of HP damaged per source life (D) impact value", 0.003937f, 0, true ); // 1/127 / 2
384 CVariable<float> ForageCareFactor( "egs","ForageCareFactor","Factor for care delta", 4.0f,0, true );
386 CVariable<float> ForageCareBeginZone( "egs", "ForageCareBeginZone", "", 5.0f, 0, true );
387 CVariable<float> ForageProspectionXPBonusRatio( "egs", "ForageProspectionXPBonusRatio", "", 0.5f, 0, true );
388 CVariable<float> ForageExtractionXPFactor( "egs", "ForageExtractionXPFactor", "", 5.0f, 0, true );
389 CVariable<float> ForageExtractionNbParticipantsXPBonusRatio( "egs", "ForageExtractionNbParticipantsXPBonusRatio", "", 0.1f, 0, true );
390 CVariable<float> ForageExtractionNastyEventXPMalusRatio( "egs", "ForageExtractionNastyEventXPMalusRatio", "", 0.1f, 0, true );
392 CVariable<uint32> ArkLootTimeBeforeNewDraw( "egs", "ArkLootTimeBeforeNewDraw", "Time need before a new Ark Loot draw", 120, 0, true ); // 12sec
393 CVariable<float> ArkLootExtraModifierMultiplier( "egs", "ArkLootExtraModifierMultiplier", "Extra multiplier for Ark Loot modifier", 1.0f, 0, true ); // 12sec
395 CVariable<float> ToxicCloudDamage( "egs","ToxicCloudDamage", "Max HP hit by a toxic cloud at ToxicCloudUpdateFrequency", 800.0f, true );
396 CVariable<float> ForageExplosionDamage( "egs","ForageExplosionDamage", "Max HP hit once by a forage explosion", 4000.0f, true );
398 CVariable<sint32> FameByKill( "egs","FameByKill", "Number of fame point lost for a kill", -5000, true );
400 CVariable<sint32> PVPFameRequired ("egs","PVPFameRequired", "Minimum of positive or negative fame for PVP", 25, 0, true );
401 NLMISC::CVariable<NLMISC::TGameCycle>DuelQueryDuration ("egs","DuelQueryDuration", "duration in ticks of a duel requests", 600, 0, true );
402 NLMISC::CVariable<NLMISC::TGameCycle> PVPZoneEnterBufferTime ("egs","PVPZoneEnterBufferTime", "duration in ticks of the time buffer triggered when someone enters a PVP zone", 300, 0, true );
403 NLMISC::CVariable<NLMISC::TGameCycle> PVPZoneLeaveBufferTime ("egs","PVPZoneLeaveBufferTime", "duration in ticks of the time buffer triggered when someone leaves a PVP zone", 9000, 0, true );
405 NLMISC::CVariable<NLMISC::TGameCycle> PVPZoneWarningRepeatTime ("egs","PVPZoneWarningRepeatTime", "duration in ticks used to repeat warnings of PVP zones", 50, 0, true );
406 NLMISC::CVariable<NLMISC::TGameCycle> PVPZoneWarningRepeatTimeL ("egs","PVPZoneWarningRepeatTimeL", "duration in ticks used to repeat warnings of PVP zones for time left is more than one minute", 50, 0, true );
407 NLMISC::CVariable<bool> PVPZoneWithDeathPenalty("egs","PVPZoneWithDeathPenalty", "if true a player killed by another player in a PVP zone will have a death penalty", false, 0, true );
409 NLMISC::CVariable<float> PVPMeleeCombatDamageFactor("egs","PVPMeleeCombatDamageFactor", "Factor applied on Melee Damage in PVP", 0.8f, 0, true );
410 NLMISC::CVariable<float> PVPRangeCombatDamageFactor("egs","PVPRangeCombatDamageFactor", "Factor applied on Range Damage in PVP", 0.8f, 0, true );
411 NLMISC::CVariable<float> PVPMagicDamageFactor("egs","PVPMagicDamageFactor", "Factor applied on Magic Damage in PVP", 0.8f, 0, true );
412 //NLMISC::CVariable<float> PVPMagicHealFactor("egs","PVPMagicHealFactor", "Factor applied on heals in PVP", 0.8f, 0, true );
414 NLMISC::CVariable<NLMISC::TGameCycle> TimeForSetPVPFlag("egs","TimeForSetPVPFlag", "time before set pvp flag become effective (in game cycle)", 1200, 0, true );
415 NLMISC::CVariable<NLMISC::TGameCycle> TimeForResetPVPFlag("egs","TimeForResetPVPFlag", "minimal time before reset pvp flag (in game cycle)", 18000, 0, true );
416 NLMISC::CVariable<NLMISC::TGameCycle> TimeForPVPFlagOff("egs","TimeForPVPFlagOff", "time before pvp flag return to off become effective (in game cycle)", 300, 0, true );
417 NLMISC::CVariable<NLMISC::TGameCycle> PVPActionTimer("egs","PVPActionTimer", "time duration of pvp action flag, each time a character made a pvp action, corresponding flag is true during this timer", 6000, 0, true );
420 NLMISC::CVariable<float> KillAttribMinFactor("egs","KillAttribMinFactor", "min fraction of the total damage done on a creature that a group/player must do to be attributed a kill", 0.3f, 0, true);
423 CVariable<sint32> BaseGuildBulk("egs","BaseGuildBulk", "base bulk for a new guild building", 2000000, 0, true);
424 CVariable<sint16> MinFameToBuyGuildBuilding("egs","MinFameToBuyGuildBuilding", "Minimum Fame To Buy a Guild Building", 0, 0, true);
425 CVariable<sint16> MinFameToBuyPlayerBuilding("egs","MinFameToBuyPlayerBuilding", "Minimum Fame To Buy a Player Building", 0, 0, true);
426 CVariable<uint32> GuildCreationCost("egs","GuildCreationCost", "", 100, 0, true);
427 CVariable<uint32> GuildMaxMemberCount("egs","GuildMaxMemberCount", "", 256, 0, true);
428 CVariable<uint32> GuildMaxPoints("egs","GuildMaxPoints", "", 200, 0, true);
431 CVariable<NLMISC::TGameCycle> TriggerRequestTimout("egs","TriggerRequestTimout", "", 300, 0, true);
433 CVariable<uint32> GuildSavePeriod("egs","GuildSavePeriod", "", 100, 0, true);
437 CVariable<TGameCycle> MonoMissionTimout("egs","MonoMissionTimout", "default timout of mono mission", 144000, 0, true);
438 CVariable<bool> VerboseMissions("egs","VerboseMissions", "Logging of mission parsing/event (0/1)", false, 0, true);
439 CVariable<bool> MissionPrerequisitsEnabled("egs","MissionPrerequisitsEnabled", "Activate the checking of pre requisits for mission", true, 0, true);
441 CVariable<uint32> TickFrequencyCompassUpdate("egs","TickFrequencyCompassUpdate","Min time in tick between 2 updates of mission compass of a character", 32, 0, true);
442 CVariable<float> WearMalusCraftFactor("egs","WearMalusCraftFactor", "Factor for apply wear penalty to craft", 0.1f, 0, true );
444 CVariable<float> ForageCareSpeed( "egs","ForageCareSpeed",
445 "Speed of care action in action/tick", 0.05f, // 2 s
446 0, true );
447 CVariable<float> ForageKamiOfferingSpeed( "egs","ForageKamiOfferingSpeed",
448 "Speed of offering action in action/tick", 0.02f, // 5 s
449 0, true );
450 CVariable<uint32> ForageReduceDamageTimeWindow( "egs", "ForageReduceDamageTimeWindow", "Time in tick before a blowing up when Reduce Damage actions are taken into account", 30, 0, true ); // 3 s
452 CVariable<uint32> ForageDebug( "egs","ForageDebug",
453 "Debug mode for forage phrases (0=normal 2=focusOnly 5=focus+skill 7=prospectionWithVariables 10=fullCheat)", 0,
454 0, true );
455 CVariable<uint32> ForageSourceSpawnDelay( "egs","ForageSourceSpawnDelay",
456 "Time (ticks) between end of prospection & spawning the source(s)",
457 50, 0, true );
458 CVariable<bool> ForageValidateSourcesSpawnPos( "egs", "ForageValidateSourcesSpawnPos",
459 "If true, the AIS checks all source spawn positions",
460 true, 0, true );
462 CVariable<uint8> ForageRange( "egs","ForageRange", "", 0, 0, false );
463 CVariable<uint8> ForageAngle( "egs","ForageAngle", "", 0, 0, false );
464 CVariable<uint8> ForageLevel( "egs","ForageLevel", "", 0, 0, false );
465 CVariable<sint32> ForageFocusRatioOfLocateDeposit( "egs", "ForageFocusRatioOfLocateDeposit", "", 10, 0, true );
466 CVariable<float> ForageQuantityXPDeltaLevelBonusRate( "egs", "ForageQuantityXPDeltaLevelBonusRate", "Delta level increase per qtty unit (except 1st one)", 2.0f, 0, true );
468 CVariable<float> QuarteringQuantityAverageForCraftHerbivore( "egs", "QuarteringQuantityAverageForCraftHerbivore", "Control the global quantity in quartering for craft RMs of herbivores (H/B/P)", 1.0f, 0, true );
469 CVariable<float> QuarteringQuantityAverageForCraftCarnivore( "egs", "QuarteringQuantityAverageForCraftCarnivore", "Control the global quantity in quartering for craft RMs of carnivores", 5.0f, 0, true );
470 CVariable<float> QuarteringQuantityAverageForMissions( "egs", "QuarteringQuantityAverageForMissions", "Control the global quantity in quartering for mission RMs", 5.0f, 0, true );
471 CVariable<float> QuarteringQuantityAverageForBoss5( "egs", "QuarteringQuantityAverageForBoss5", "Control the quantity of quartered material of normal creatures '5' and '8'", 10, 0, true );
472 CVariable<float> QuarteringQuantityAverageForBoss7( "egs", "QuarteringQuantityAverageForBoss7", "Control the quantity of quartered material of normal creatures '7'", 40, 0, true );
473 CVariable<float> QuarteringQuantityForInvasion5( "egs", "QuarteringQuantityForInvasion5", "Control the quantity of quartered invasion material of creatures '5'", 40, 0, true );
474 CVariable<float> QuarteringQuantityForInvasion7( "egs", "QuarteringQuantityForInvasion7", "Control the quantity of quartered invasion material of creatures '7'", 80, 0, true );
476 CVariable<float> LootMoneyAmountPerXPLevel( "egs", "LootMoneyAmountPerXPLevel", "Amount of money to earn when looting, per XPLevel of the looted NPC", 10.0f, 0, true );
479 CVariable<uint32> GuildChargeSavePeriod("egs","GuildChargeSavePeriod", "", 100, 0, true);
480 CVariable<uint32> MaxAppliedChargeCount("egs","AppliedChargeMaxCount", "max number of charge a guild can apply for", 1, 0, true);
481 CVariable<float> OupostPowerRadius("egs","OupostPowerRadius", "Radius of an outpost power in meters", 100, 0, true);
482 CVariable<uint32> OutpostPowerDuration("egs","OutpostPowerDuration", "duration of outpost powers in ticks", 54000, 0, true);
486 CVariable<bool> DumpRangeAnalysis("egs","DumpRangeAnalysis","debug dump for range combat",false,0,true);
487 CVariable<float> RechargeMoneyFactor("egs","RechargeMoneyFactor", "factor to apply on a recharge spell sabrina cost to get the cost in money", 2.0f, 0, true );
488 CVariable<float> CristalMoneyFactor("egs","CristalMoneyFactor", "factor to apply on a cristallisation spell sabrina cost to get the cost in money", 2.0f, 0, true );
490 CVariable<bool> AllowPVP("egs","AllowPVP", "AllowPVP", false ); // free PVP everywhere!
493 NLMISC::CVariable<uint32> BasePlayerRoomBulk("egs","BasePlayerRoomBulk", "Maximum bulk a player can have in his room", 500000, 0, true);
494 NLMISC::CVariable<uint32> MaxPlayerBulk("egs","MaxPlayerBulk", "Maximum bulk a player can have on him", 100000, 0, true);
495 NLMISC::CVariable<uint32> BaseMaxCarriedWeight("egs","BaseMaxCarriedWeight", "max weight in grammes a player can have on him if his strength is 0", 100000, 0, true);
496 NLMISC::CVariable<std::string> MessageOfTheDay("egs","MessageOfTheDay", "Message of the day sended at new connected player", string(""), 0, true, broadcastMessageOfTheDay);
498 NLMISC::CVariable<float> MaxDistanceGooDamage("egs","MaxDistanceGooDamage", "the maximum distance when character take damage from goo path", 100.0f, 0, true );
499 NLMISC::CVariable<float> DeathGooDistance("egs","DeathGooDistance", "the distance when character take 100% damage from goo path", 1.0f, 0, true );
500 NLMISC::CVariable<float> MaxGooDamageRatio("egs","MaxGooDamageRatio", "the factor applied goo damage for calculate effective goo damage (distance = 0 - 100% * ratio * base hp = damages)", 0.5f, 0, true );
501 NLMISC::CVariable<uint32> NBTickForGooDamageRate("egs","NBTickForGooDamageRate", "nb tick needed for apply goo damage again", 5, 0, true );
502 NLMISC::CVariable<uint32> NBTickForNewbieGooDamageRate("egs","NBTickForNewbieGooDamageRate", "nb tick needed for apply goo damage again in newbieland", 10, 0, true );
503 NLMISC::CVariable<float> NewbieGooDamageFactor("egs","NewbieGooDamageFactor", "percentage of life lost at maximum from goo in newbieland", .2f, 0, true );
506 NLMISC::CVariable<uint32> TickFrequencyPCSave("loadSave","TickFrequencyPCSave", "A PC is saved in each nb tick for prevent overrun backup system", 100, 0, true );
507 NLMISC::CVariable<uint32> MinPlayerSavePeriod("loadSave","MinPlayerSavePeriod", "The same PC cant be saved more than once during MinPlayerSavePeriod ticks", 600, 0, true );
508 NLMISC::CVariable<bool> XMLSave("loadSave","XMLSave", "boolean : if true players are saved in XML format", true, 0, true );
509 NLMISC::CVariable<bool> PDRSave("loadSave","PDRSave", "boolean : if true players are saved in PDR format", true, 0, true );
510 NLMISC::CVariable<bool> PDRLoad("loadSave","PDRLoad", "boolean : if true players are loaded from PDR format", false, 0, true );
511 NLMISC::CVariable<bool> SerialSave("loadSave","SerialSave", "boolean : if true players are saved in serial format", false, 0, true );
513 CVariable<float> ItemPriceCoeff0("egs","ItemPriceCoeff0", "polynom coeff of degree 0 in the price formula", 1.0f, 0, true );
514 CVariable<float> ItemPriceCoeff1("egs","ItemPriceCoeff1", "polynom coeff of degree 1 in the price formula", 1.0f, 0, true );
515 CVariable<float> ItemPriceCoeff2("egs","ItemPriceCoeff2", "polynom coeff of degree 2 in the price formula", 1.0f, 0, true );
516 CVariable<float> ItemPriceFactor("egs","ItemPriceFactor", "factor to apply on non raw material items to compute their price", 1.0f, 0, true );
518 CVariable<float> AnimalSellFactor("egs","AnimalSellFactor", "factor to apply on animal price to get the price a user can buy them", 1.0f, 0, true );
519 CVariable<float> TeleportSellFactor("egs","TeleportSellFactor", "factor to apply on teleport price to get the price a user can buy them", 1.0f, 0, true );
521 CVariable<float> MaxFamePriceVariation("egs","MaxFamePriceVariation", "maximum price variation ( in absolute value ) that can be due to fame", 0.3f, 0, true );
522 CVariable<sint32> MaxFameToTrade("egs","MaxFameToTrade", "maximum fame value taken in account in trade", 600000, 0, true );
523 CVariable<sint32> MinFameToTrade("egs","MinFameToTrade", "minimum fame value taken in account in trade", -200000, 0, true );
525 CVariable<NLMISC::TGameCycle> MaxGameCycleSaleStore("egs", "MaxGameCycleSaleStore", "maximum time game cycle an item stay in sale store before been destroyed", 7*24*60*60*10, 0, true );
527 CVariable<sint32> MaxLevelNpcItemInStore("egs","MaxLevelNpcItemInStore", "Maximum level for item solded by NPC", 250, 0, true );
529 CVariable<bool> VerboseShopParsing("egs","VerboseShopParsing", "activate verbose mode for shop category parsing", false, 0, true );
531 CVariable<uint32> NBMaxItemPlayerSellDisplay("egs","NBMaxItemPlayerSellDisplay","NB max item can be displayed for player item list selled",128, 0, true);
532 CVariable<uint32> NBMaxItemNpcSellDisplay("egs","NBMaxItemNpcSellDisplay","NB max item can be displayed for npc item list selled",128, 0, true);
533 CVariable<uint32> NBMaxItemYoursSellDisplay("egs","NBMaxItemYoursSellDisplay","NB max item can be displayed for your item list selled",128, 0, true);
535 /// disconnection delay
536 CVariable<uint32> TimeBeforeDisconnection("egs","TimeBeforeDisconnection", "delai during character stay in game after a disconnection for prevent logoff exploit", 300, 0, true );
539 // Privilege needed for banner
540 CVariable<string> BannerPriv("privilege", "BannerPriv", "Privilege needed for banner", string(":G:SG:VG:GM:SGM:"), 0, true);
541 // Privilege that never aggro the bots
542 CVariable<string> NeverAggroPriv("privilege", "NeverAggroPriv", "Privilege that never aggro the bots", string(":OBSERVER:G:SG:VG:GM:SGM:"), 0, true);
543 // Privilege always invisible
544 CVariable<string> AlwaysInvisiblePriv("privilege", "AlwaysInvisiblePriv", "Privilege always invisible", string(":OBSERVER:"), 0, true);
545 // Privilege to teleport with a mektoub
546 CVariable<string> TeleportWithMektoubPriv("privilege", "TeleportWithMektoubPriv", "Privilege to teleport with a mektoub", string(":GM:SGM:DEV:"), 0, true);
547 // Privilege that forbid action execution
548 CVariable<string> NoActionAllowedPriv("privilege", "NoActionAllowedPriv", "Privilege that forbid action execution", string(":OBSERVER:"), 0, true);
549 // Privilege that bypass value and score checking
550 CVariable<string> NoValueCheckingPriv("privilege", "NoValueCheckingPriv", "Privilege that bypass value and score checking", string(":GM:SGM:DEV:"), 0, true);
551 // Privilege that prevent being disconnected in case of shard closing for technical problem
552 CVariable<string> NoForceDisconnectPriv("privilege", "NoForceDisconnectPriv", "Privilege that prevent being disconnected in case of shard closing for technical problem", string(":GM:SGM:DEV:"), 0, true);
555 * AnimalHungerFactor = MaxSatiety * RunSpeed / ( Range * (RunSpeed - WalkSpeed) * NbSecondPerTick)
556 * Example: 1000 * 9 / ( 7680 * (9 - 4.5 ) * 0.1)
558 CVariable<float> AnimalHungerFactor( "egs", "AnimalHungerFactor",
559 "Number of satiety points decreased per tick for each m/tick above the walk speed",
560 1000.0f*9.0f / (7680.0f * (9.0f-4.5f) * 0.1f), // maxsatiety=1000, range=7680 m, runspeed=9m/s, walkspeed=4.5m/s
561 0, true );
563 CVariable<float> AnimalStopFollowingDistance( "egs", "AnimalStopFollowingDistance",
564 "When a follower mektoub get further than this distance (in m) from his target, he stops", 100.0f, 0, true );
566 // events
567 CVariable<uint32> EventChannelHistoricSize( "egs", "EventChannelHistoricSize", "Historic size of event channel", 512, 0, true );
569 // outposts
570 CVariable<NLMISC::TGameCycle> OutpostSavingPeriod( "egs", "OutpostSavingPeriod", "Save period of outposts in ticks (1 outpost saved at a time)", 10, 0, true );
571 CVariable<NLMISC::TGameCycle> OutpostUpdatePeriod( "egs", "OutpostUpdatePeriod", "Period in ticks between 2 updates of the same outpost", 10, 0, true );
572 CVariable<NLMISC::TGameCycle> OutpostLeavePeriod("egs","OutpostLeavePeriod", "time duration before a user who has left outpost zone looses his pvp flag", 60*10, 0, true ); // 10 min as seconds
574 CVariable<bool> VerboseFactionPoint("egs", "VerboseFactionPoint", "set if faction point system is verbose or not", false, 0, true);
576 CVariable<bool> UseNewNewbieLandStartingPoint("egs", "UseNewNewbieLandStartingPoint", "set if create new character start at new noobland or old", false, 0, true);
578 // Fame
579 // - Limits
580 CVariable<sint32> FameMinToDeclare( "egs", "FameMinToDeclare", "Minimum level of fame needed to declare membership to a clan", 30*kFameMultipler, 0, true );
581 CVariable<sint32> FameWarningLevel( "egs", "FameWarningLevel", "Level at which a player is notified that their fame is getting too low", 5*kFameMultipler, 0, true );
582 CVariable<sint32> FameMinToRemain( "egs", "FameMinToRemain", "Minimum fame needed to remain as a member of a clan", 0*kFameMultipler, 0, true );
583 CVariable<sint32> FameMinToTrade( "egs", "FameMinToTrade", "Minimum fame needed to trade with a clan", -30*kFameMultipler, 0, true, CFameManager::thresholdChanged );
584 CVariable<sint32> FameMinToKOS( "egs", "FameMinToKOS", "Minimum fame needed to not be KOS to a clan", -50*kFameMultipler, 0, true, CFameManager::thresholdChanged );
585 CVariable<sint32> FameMaxDefault( "egs", "FameMaxDefault", "Default maximum amount of fame (same as neutral max)", 50*kFameMultipler, 0, true );
586 CVariable<sint32> FameAbsoluteMin( "egs", "FameAbsoluteMin", "Absolute fame minimum a player can have", -100*kFameMultipler, 0, true );
587 CVariable<sint32> FameAbsoluteMax( "egs", "FameAbsoluteMax", "Absolute fame maximum a player can have", 100*kFameMultipler, 0, true );
589 /* Fame variables, naming:
590 The fame variables begin with the name "Fame". The next part is if the variable is a
591 starting value, "Start", or maximum value, "Max". The last elements indicate the groups
592 compared. The first group is the character's group, then a small 'v' to separate, and
593 then the target group of the fame desired. For example: FameStartTrykervFyros is a Tryker
594 character's starting Fyros fame.
597 // - Start values, Civilizations
598 CVariable<sint32> FameStartFyrosvFyros( "egs", "FameStartFyrosvFyros", "Starting fame of a Fyros to their own civ", 20*kFameMultipler, 0, true );
599 CVariable<sint32> FameStartFyrosvMatis( "egs", "FameStartFyrosvMatis", "Starting fame of a Fyros to the Matis civ", -20*kFameMultipler, 0, true );
600 CVariable<sint32> FameStartFyrosvTryker( "egs", "FameStartFyrosvTryker", "Starting fame of a Fyros to the Tryker civ", -10*kFameMultipler, 0, true );
601 CVariable<sint32> FameStartFyrosvZorai( "egs", "FameStartFyrosvZorai", "Starting fame of a Fyros to the Zorai civ", 10*kFameMultipler, 0, true );
602 CVariable<sint32> FameStartMatisvFyros( "egs", "FameStartMatisvFyros", "Starting fame of a Matis to the Fyros civ", -20*kFameMultipler, 0, true );
603 CVariable<sint32> FameStartMatisvMatis( "egs", "FameStartMatisvMatis", "Starting fame of a Matis to their own civ", 20*kFameMultipler, 0, true );
604 CVariable<sint32> FameStartMatisvTryker( "egs", "FameStartMatisvTryker", "Starting fame of a Matis to the Tryker civ", 10*kFameMultipler, 0, true );
605 CVariable<sint32> FameStartMatisvZorai( "egs", "FameStartMatisvZorai", "Starting fame of a Matis to the Zorai civ", -10*kFameMultipler, 0, true );
606 CVariable<sint32> FameStartTrykervFyros( "egs", "FameStartTrykervFyros", "Starting fame of a Tryker to the Fyros civ", -10*kFameMultipler, 0, true );
607 CVariable<sint32> FameStartTrykervMatis( "egs", "FameStartTrykervMatis", "Starting fame of a Tryker to the Matis civ", 10*kFameMultipler, 0, true );
608 CVariable<sint32> FameStartTrykervTryker( "egs", "FameStartTrykervTryker", "Starting fame of a Tryker to their own civ", 20*kFameMultipler, 0, true );
609 CVariable<sint32> FameStartTrykervZorai( "egs", "FameStartTrykervZorai", "Starting fame of a Tryker to the Zorai civ", -20*kFameMultipler, 0, true );
610 CVariable<sint32> FameStartZoraivFyros( "egs", "FameStartZoraivFyros", "Starting fame of a Zorai to the Fyros civ", 10*kFameMultipler, 0, true );
611 CVariable<sint32> FameStartZoraivMatis( "egs", "FameStartZoraivMatis", "Starting fame of a Zorai to the Matis civ", -10*kFameMultipler, 0, true );
612 CVariable<sint32> FameStartZoraivTryker( "egs", "FameStartZoraivTryker", "Starting fame of a Zorai to the Tryker civ", -20*kFameMultipler, 0, true );
613 CVariable<sint32> FameStartZoraivZorai( "egs", "FameStartZoraivZorai", "Starting fame of a Zorai to their own civ", 20*kFameMultipler, 0, true );
615 // - Start values, Cults
616 CVariable<sint32> FameStartFyrosvKami( "egs", "FameStartFyrosvKami", "Starting fame of a Fyros to the Kami cult", 10*kFameMultipler, 0, true );
617 CVariable<sint32> FameStartFyrosvKaravan( "egs", "FameStartFyrosvKaravan", "Starting fame of a Fyros to the Karavan cult", -10*kFameMultipler, 0, true );
618 CVariable<sint32> FameStartMatisvKami( "egs", "FameStartMatisvKami", "Starting fame of a Matis to the Kami cult", -20*kFameMultipler, 0, true );
619 CVariable<sint32> FameStartMatisvKaravan( "egs", "FameStartMatisvKaravan", "Starting fame of a Matis to the Karavan cult", 20*kFameMultipler, 0, true );
620 CVariable<sint32> FameStartTrykervKami( "egs", "FameStartTrykervKami", "Starting fame of a Tryker to the Kami cult", -10*kFameMultipler, 0, true );
621 CVariable<sint32> FameStartTrykervKaravan( "egs", "FameStartTrykervKaravan", "Starting fame of a Tryker to the Karavan cult", 10*kFameMultipler, 0, true );
622 CVariable<sint32> FameStartZoraivKami( "egs", "FameStartZoraivKami", "Starting fame of a Zorai to the Kami cult", 20*kFameMultipler, 0, true );
623 CVariable<sint32> FameStartZoraivKaravan( "egs", "FameStartZoraivKaravan", "Starting fame of a Zorai to the Karavan cult", -20*kFameMultipler, 0, true );
625 // - Max Values when declared, Civilizations
626 CVariable<sint32> FameMaxNeutralvFyros( "egs", "FameMaxNeutralvFyros", "Maximum Fame for a neutral to the Fyros civ", 50*kFameMultipler, 0, true );
627 CVariable<sint32> FameMaxNeutralvMatis( "egs", "FameMaxNeutralvMatis", "Maximum Fame for a neutral to the Matis civ", 50*kFameMultipler, 0, true );
628 CVariable<sint32> FameMaxNeutralvTryker( "egs", "FameMaxNeutralvTryker", "Maximum Fame for a neutral to the Tryker civ", 50*kFameMultipler, 0, true );
629 CVariable<sint32> FameMaxNeutralvZorai( "egs", "FameMaxNeutralvZorai", "Maximum Fame for a neutral to the Zorai civ", 50*kFameMultipler, 0, true );
630 CVariable<sint32> FameMaxFyrosvFyros( "egs", "FameMaxFyrosvFyros", "Maximum Fame for a Fyros to their own civ", 100*kFameMultipler, 0, true );
631 CVariable<sint32> FameMaxFyrosvMatis( "egs", "FameMaxFyrosvMatis", "Maximum Fame for a Fyros to the Matis civ", 0*kFameMultipler, 0, true );
632 CVariable<sint32> FameMaxFyrosvTryker( "egs", "FameMaxFyrosvTryker", "Maximum Fame for a Fyros to the Tryker civ", 25*kFameMultipler, 0, true );
633 CVariable<sint32> FameMaxFyrosvZorai( "egs", "FameMaxFyrosvZorai", "Maximum Fame for a Fyros to the Zorai civ", 75*kFameMultipler, 0, true );
634 CVariable<sint32> FameMaxMatisvFyros( "egs", "FameMaxMatisvFyros", "Maximum Fame for a Matis to the Fyros civ", 0*kFameMultipler, 0, true );
635 CVariable<sint32> FameMaxMatisvMatis( "egs", "FameMaxMatisvMatis", "Maximum Fame for a Matis to their own civ", 100*kFameMultipler, 0, true );
636 CVariable<sint32> FameMaxMatisvTryker( "egs", "FameMaxMatisvTryker", "Maximum Fame for a Matis to the Tryker civ", 75*kFameMultipler, 0, true );
637 CVariable<sint32> FameMaxMatisvZorai( "egs", "FameMaxMatisvZorai", "Maximum Fame for a Matis to the Zorai civ", 25*kFameMultipler, 0, true );
638 CVariable<sint32> FameMaxTrykervFyros( "egs", "FameMaxTrykervFyros", "Maximum Fame for a Tryker to the Fyros civ", 25*kFameMultipler, 0, true );
639 CVariable<sint32> FameMaxTrykervMatis( "egs", "FameMaxTrykervMatis", "Maximum Fame for a Tryker to the Matis civ", 75*kFameMultipler, 0, true );
640 CVariable<sint32> FameMaxTrykervTryker( "egs", "FameMaxTrykervTryker", "Maximum Fame for a Tryker to their own civ", 100*kFameMultipler, 0, true );
641 CVariable<sint32> FameMaxTrykervZorai( "egs", "FameMaxTrykervZorai", "Maximum Fame for a Tryker to the Zorai civ", 0*kFameMultipler, 0, true );
642 CVariable<sint32> FameMaxZoraivFyros( "egs", "FameMaxZoraivFyros", "Maximum Fame for a Zorai to the Fyros civ", 75*kFameMultipler, 0, true );
643 CVariable<sint32> FameMaxZoraivMatis( "egs", "FameMaxZoraivMatis", "Maximum Fame for a Zorai to the Matis civ", 25*kFameMultipler, 0, true );
644 CVariable<sint32> FameMaxZoraivTryker( "egs", "FameMaxZoraivTryker", "Maximum Fame for a Zorai to the Tryker civ", 0*kFameMultipler, 0, true );
645 CVariable<sint32> FameMaxZoraivZorai( "egs", "FameMaxZoraivZorai", "Maximum Fame for a Zorai to their own civ", 100*kFameMultipler, 0, true );
647 // - Max Values when declared, Civilizations
648 CVariable<sint32> FameMaxNeutralvKami( "egs", "FameMaxNeutralvKami", "Max fame for a neutral to the Kami cult", 50*kFameMultipler, 0, true );
649 CVariable<sint32> FameMaxNeutralvKaravan( "egs", "FameMaxNeutralvKaravan", "Max fame for a neutral to the Karavan cult", 50*kFameMultipler, 0, true );
650 CVariable<sint32> FameMaxKamivKami( "egs", "FameMaxKamivKami", "Max fame for a Kami to the Kami cult", 100*kFameMultipler, 0, true );
651 CVariable<sint32> FameMaxKamivKaravan( "egs", "FameMaxKamivKaravan", "Max fame for a Kami to the Karavan cult", -50*kFameMultipler, 0, true );
652 CVariable<sint32> FameMaxKaravanvKami( "egs", "FameMaxKaravanvKami", "Max fame for a Karavan to the Kami cult", -50*kFameMultipler, 0, true );
653 CVariable<sint32> FameMaxKaravanvKaravan( "egs", "FameMaxKaravanvKaravan", "Max fame for a Karavan to the Karavan cult", 100*kFameMultipler, 0, true );
655 // female titles
656 CVariable<bool> UseFemaleTitles("egs","UseFemaleTitles", "Use female titles when character is a female character", true, 0, true);
658 // - NPC Icons
659 CVariable<uint32> ClientNPCIconRefreshTimerDelay("egs", "ClientNPCIconRefreshTimerDelay", "Max number of gamecycles between 2 refreshes of a single mission giver NPC", 60*10, 0, true, CPlayerManager::onNPCIconTimerChanged);
661 // - Ring
662 CVariable<uint32> TickFrequencyNpcControlUpdate("egs","TickFrequencyNpcControlUpdate","Min time in tick between 2 updates of udate of npc control", 6, 0, true);
663 CVariable<bool> RingXpEnabled("egs", "RingXpEnabled", "Enable earning XP in Ring", false, 0, true);
664 CVariable<bool> RingLootEnabled("egs", "RingLootEnabled", "Enable looting mobs in Ring", false, 0, true);
666 // Scores
667 CVariable<sint32> PhysicalCharacteristicsBaseValue( "egs", "PhysicalCharacteristicsBaseValue", "Physical characteristic base value used to compute base score value", 10, 0, true );
668 CVariable<sint32> PhysicalCharacteristicsFactor( "egs", "PhysicalCharacteristicsFactor", "Factor used to compute base score value from characteristic value", 10, 0, true );