// Ryzom - MMORPG Framework
// Copyright (C) 2010 Winch Gate Property Limited
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
#include "stdpch.h"
#include "egs_variables.h"
#include "entities_game_service.h"
#include "player_manager/player_manager.h"
#include "player_manager/player.h"
#include "guild_manager/fame_manager.h"
using namespace NLMISC;
using namespace std;
CVariable ClearAttackFlags("egs","ClearAttackFlags","teampraire !!",true,0,true);
CVariable GuildSystemEnabled("egs","GuildSystemEnabled","bool enabling /disabling the GuildSystem",true,0,true);
CVariable MissionSystemEnabled("egs","MissionSystemEnabled","bool enabling /disabling the MissionSystem",true,0,true);
CVariable PackAnimalSystemEnabled("egs","PackAnimalSystemEnabled","bool enabling /disabling the PackAnimalSystem",true,0,true);
CVariable EnchantSystemEnabled("egs","EnchantSystemEnabled","bool enabling /disabling the EnchantSystem",true,0,true);
CVariable ForageSystemEnabled("egs","ForageSystemEnabled","bool enabling /disabling the ForageSystem",true,0,true);
CVariable CraftSystemEnabled("egs","CraftSystemEnabled","bool enabling /disabling the CraftSystem",true,0,true);
CVariable HarvestSystemEnabled("egs","HarvestSystemEnabled","bool enabling /disabling the HarvestSystem",true,0,true);
CVariable DelayBeforeItemTP("egs","DelayBeforeItemTP","delay between item use and teleportation",150,0,true);
// XP/Progression config
CVariable MaxDistanceForXpGain("egs","MaxDistanceForXpGain", "max distance from combat to gain Xp at creature death (in meters)", 50.0f, 0, true );
CVariable XPTeamMemberDivisorValue("egs","XPTeamMemberDivisorValue", "for team XP progression, add this value to the xp divisor for each team member above one", 0.9f, 0, true );
CVariable 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 );
CVariable NbTickForRegenCreature("egs","NbTickForRegenCreature", "nb tick needed for regenerate scores of all creature (total creature / number regenerated per tick)", 64, 0, true );
// variable create Character Start skills value
CVariable CreateCharacterStartSkillsValue("egs","CreateCharacterStartSkillsValue", "create Character Start skills value", std::string(""), 0, true );
// variable for death penalty duration
CVariable DeathXPFactor("egs","DeathXPFactor", "XP to gain after a death is DeathXPFactor * max skill /(1 + death index )", 10, 0, true );
// variable for death penalty resorption
CVariable DeathXPResorptionTime("egs","DeathXPResorptionTime", "XP resorbs totally after DeathXPResorptionTime / NbDeath", 3, 0, true );
// variable for min best skill value to get death penalty
CVariable DeathPenaltyMinLevel("egs","DeathPenaltyMinLevel", "No death penalty if best skill value is lesser than DeathPenaltyMinLevel", 10, 0, true );
// comma duration before character are dead (it's time allowed for resurect player buy a healing spell)
CVariable CommaDelayBeforeDeath( "egs", "CommaDelayBeforeDeath", "Comma time in server tick before a character dead", 3000, 0, true );
// variable define Max skill value can be reached, this not decrease skill value if this limit are reduce and player character have higher skills
CVariable SkillFightValueLimiter("egs","SkillFightValueLimiter", "Skill value limit", 250, 0, true );
CVariable SkillMagicValueLimiter("egs","SkillMagicValueLimiter", "Skill value limit", 250, 0, true );
CVariable SkillCraftValueLimiter("egs","SkillCraftValueLimiter", "Skill value limit", 250, 0, true );
CVariable SkillHarvestValueLimiter("egs","SkillHarvestValueLimiter", "Skill value limit", 250, 0, true );
// magic skill boost for low level chars
CVariable MagicSkillStartValue("egs","MagicSkillStartValue", "Minimum magic skill used for break cast and resist tests", 20, 0, true );
// variable define if areas effects are on or off
CVariable FightAreaEffectOn("egs","FightAreaEffectOn", "Are effect for fight are active if variable = true", true, 0, true );
CVariable MagicAreaEffectOn("egs","MagicAreaEffectOn", "Are effect for magic are active if variable = true", true, 0, true );
CVariable HarvestAreaEffectOn("egs","HarvestAreaEffectOn", "Are effect for harvest (toxic cloud) are active if variable = true", true, 0, true );
CVariable MaxAreaTargetCount("egs","MaxAreaTargetCount", "maximum number of target in an area effect spell/missile", 6, 0, true );
CVariable CorrectInvalidPlayerPositions("egs","CorrectInvalidPlayerPositions", "If true, invalid player positions will be corrected if when a player logs in", true, 0, true );
CVariable MountDuration("egs","MountDuration","delay in ticks between mount order and player really mounted on creature",50,0,true);
CVariable UnmountDuration("egs","UnmountDuration","delay in ticks between unmount order and player really unmounted from creature",30,0,true);
/// tod guild : put that to false when ben has debugged the system
CVariable DataPersistsAsText("egs","DataPersistsAsText", "If true Persistant data will be stored as text", false, 0, true );
CVariable GuildSavingPeriod("egs","GuildSavingPeriod", "guild saving period in ticks", 10, 0, true );
CVariable StoreSavePeriod("egs","StoreSavePeriod","sell store save period in ticks", 10, 0, true );
// values used by the weapon table
CVariable MinDamage("egs","MinDamage", "Min damage (when skill 0), used by weapon damage table", 25.0f, 0, true );
CVariable DamageStep("egs","DamageStep", "Damage step, used by weapon damage table", 1.0f, 0, true );
CVariable ExponentialPower("egs","ExponentialPower", "ExponentialPower used by weapon damage table", 2.0f, 0, true );
CVariable SmoothingFactor("egs","SmoothingFactor", "SmoothingFactor used by weapon damage table", 0.8f, 0, true );
// combat config vars
CVariable HandToHandDamage("egs","HandToHandDamage", "damage factor when fighting without weapons", 0.35f, 0, true );
CVariable HandToHandLatency("egs","HandToHandLatency", "attacks latency *in ticks* when fighting without a weapon", 30, 0, true );
CVariable HandToHandReachValue("egs","HandToHandReachValue", "reach value (~allonge) when fighting without a weapon", 0, 0, true );
CVariable MinTwoWeaponsLatency("egs","MinTwoWeaponsLatency", "Min attack latency (in ticks) when using 2 weapons", 15, 0, true );
CVariable MaxAngleForRangeCombat("egs","MaxAngleForRangeCombat", "Max angle in Radians between player heading and target position to validate range combat", (float)NLMISC::Pi, 0, true );
CVariable AreaEffectClipDistance("egs","AreaEffectClipDistance", "above this value (in mm) we clip vertical range to 'AreaEffectClipVerticalRange' millimeters", 5000, 0, true );
CVariable AreaEffectClipVerticalRange("egs","AreaEffectClipVerticalRange", "vertical range of area effects when area effect range is below 4-5meters (see 'AreaEffectClipDistance')", 2000, 0, true );
// fame interpolation time (for player fame comming from guild)
CVariable FameMemoryInterpolation("egs","FameMemoryInterpolation", "Guild fame interpolation time in ticks", 4320000, 0, true );
// fame trend reset delay.
CVariable FameTrendResetDelay("egs","FameTrendResetDelay", "Guild fame trend reset delay in ticks", 18000, 0, true );
CVariable AutoSpawnForageSourcePeriodOverride(
"egs",
"AutoSpawnForageSourcePeriodOverride",
"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)",
0, // using deposit settings instead
0, true );
CVariable ForageKamiAngerDecreasePerHour(
"egs",
"ForageKamiAngerDecreasePerHour",
"Level of kami anger automatically decreased per hour (10x3600 gamecycles)",
83.0f, // decrease by 1000 in about 12h
0, true );
CVariable ForageKamiAngerOverride(
"egs",
"ForageKamiAngerOverride",
"Force all deposits to the specified kami anger level (debug option)",
0,
0, false );
CVariable ForageKamiAngerThreshold1(
"egs",
"ForageKamiAngerThreshold1", "Threshold 1 of kami anger level ( ForageKamiAngerThreshold2(
"egs",
"ForageKamiAngerThreshold2", "Threshold 1 of kami anger level (>ForageKamiAngerThreshold1)",
1000.0f,
0, true );
CVariable ForageKamiAngerPunishDamage(
"egs",
"ForageKamiPunishDamage", "Max HP hit once by an angry (invisible) kami",
6000,
0, true );
/*CVariable ForageKamiAngerPunishFX(
"KamiAngerPunishFX", "0 = Piercing; 1 = Blunt; 2 = Slashing",
1,
0, true );*/
CVariable ForageSiteStock(
"egs",
"ForageSiteStock", "Number of extractions before a forage site is empty",
100,
0, true );
CVariable ForageSiteNbUpdatesToLive(
"egs",
"ForageSiteNbUpdatesToLive", "Number of deposit updates before a forage site stock is reset",
10,
0, true );
CVariable ForageSiteRadius(
"egs",
"ForageSiteRadius", "Radius of foage site area",
9.0f, // diameter 18 m (as wide as three source ranges)
0, true );
CVariable UseAsyncBSPlayerLoading("egs","UseAsyncBSPlayerLoading", "Use BS for Asynchrone player loading", true, 0, true );
//CVariable BackupServiceIP("egs","BSHost", "Host address and port of backup service (ip:port)", "localhost", 0, true );
//CVariable UseBS("egs","UseBS", "if 1, use the backup service or use local save", false, 0, true);
//#ifdef NL_DEBUG
CVariable GlobalDebugDamageFactor("egs","GlobalDebugDamageFactor", "global damage factor (debug only)", 1.0f, 0, true );
//#endif
CVariable VerboseWorldInstance("egs","VerboseWorldInstance", "world instance activity verbose", false, 0, true );
// FOR TESTING ONLY
CVariable EntitiesNoResist("egs","EntitiesNoResist", "change or just display the NoResist flag - true means no target resist", false ,0 , true);
CVariable EntitiesNoActionFailure("egs","EntitiesNoActionFailure", "hange or just display the NoActionFailure flag - true means no failure", false ,0 , true);
CVariable EntitiesNoCastBreak("egs","EntitiesNoCastBreak","change or just display the NoCastBreak flag - true means no cast break when hit", false ,0 , true);
// ITEM DECAY vars
CVariable 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);;
CVariable DaggerWearPerAction("egs","DaggerWearPerAction","define the 'wear per action' for Dagger (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable SwordWearPerAction("egs","SwordWearPerAction","define the 'wear per action' for Sword (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable MaceWearPerAction("egs","MaceWearPerAction","define the 'wear per action' for Mace (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable AxeWearPerAction("egs","AxeWearPerAction","define the 'wear per action' for Axe (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable SpearWearPerAction("egs","SpearWearPerAction","define the 'wear per action' for Spear (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable StaffWearPerAction("egs","StaffWearPerAction","define the 'wear per action' for Staff (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable MagicianStaffWearPerAction("egs","MagicianStaffWearPerAction","define the 'wear per action' for MagicianStaff (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable TwoHandSwordWearPerAction("egs","TwoHandSwordWearPerAction","define the 'wear per action' for TwoHandSword (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable TwoHandAxeWearPerAction("egs","TwoHandAxeWearPerAction","define the 'wear per action' for TwoHandAxe (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable PikeWearPerAction("egs","PikeWearPerAction","define the 'wear per action' for Pike (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable TwoHandMaceWearPerAction("egs","TwoHandMaceWearPerAction","define the 'wear per action' for TwoHandMace (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable AutolauchWearPerAction("egs","AutolauchWearPerAction","define the 'wear per action' for Autolauch (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable BowrifleWearPerAction("egs","BowrifleWearPerAction","define the 'wear per action' for Bowrifle (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable LauncherWearPerAction("egs","LauncherWearPerAction","define the 'wear per action' for Launcher (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable PistolWearPerAction("egs","PistolWearPerAction","define the 'wear per action' for Pistol (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable BowpistolWearPerAction("egs","BowpistolWearPerAction","define the 'wear per action' for Bowpistol (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable RifleWearPerAction("egs","RifleWearPerAction","define the 'wear per action' for Rifle (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable CraftingToolWearPerAction("egs","CraftingToolWearPerAction","define the 'wear per action' for CraftingTool (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable ForageToolWearPerAction("egs","ForageToolWearPerAction","define the 'wear per action' for ForageTool (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable ArmorWearPerAction("egs","ArmorWearPerAction","define the 'wear per action' for Armor (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable JewelryWearPerAction("egs","JewelryWearPerAction","define the 'wear per action' for Jewels (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable ShieldWearPerAction("egs","ShieldWearPerAction","define the 'wear per action' for Shield (1.0 = -1 HP for each action)", 0.01f,0,true);
CVariable WornState1("egs","WornState1","define the 'WornState1' for items (0.2 = 20% of hp)", 0.25f,0,true);
CVariable WornState2("egs","WornState2","define the 'WornState2' for items (0.2 = 20% of hp)", 0.10f,0,true);
CVariable WornState3("egs","WornState3","define the 'WornState3' for items (0.2 = 20% of hp)", 0.05f,0,true);
CVariable WornState4("egs","WornState4","define the 'WornState4' for items (0.2 = 20% of hp)", 0.01f,0,true);
// MAGIC config
// add some time to dead links
CVariable NoLinkSurvivalAddTime("egs","NoLinkSurvivalAddTime","add some time to dead links", 0,0,true);
CVariable NoLinkTimeFear("egs","NoLinkTimeFear","add some time to dead Fear links", 0,0,true);
CVariable NoLinkTimeSleep("egs","NoLinkTimeSleep","add some time to dead Sleep links", 0,0,true);
CVariable NoLinkTimeStun("egs","NoLinkTimeStun","add some time to dead Stun links", 0,0,true);
CVariable NoLinkTimeRoot("egs","NoLinkTimeRoot","add some time to dead Root links", 0,0,true);
CVariable NoLinkTimeSnare("egs","NoLinkTimeSnare","add some time to dead Snare links", 0,0,true);
CVariable NoLinkTimeSlow("egs","NoLinkTimeSlow","add some time to dead Slow links", 0,0,true);
CVariable NoLinkTimeBlind("egs","NoLinkTimeBlind","add some time to dead Blind links", 0,0,true);
CVariable NoLinkTimeMadness("egs","NoLinkTimeMadness","add some time to dead Madness links", 0,0,true);
CVariable NoLinkTimeDot("egs","NoLinkTimeDot","add some time to dead Dot links", 0,0,true);
CVariable UpdatePeriodFear("egs","UpdatePeriodFear","update period of Fear link spells", 40,0,true);
CVariable UpdatePeriodSleep("egs","UpdatePeriodSleep","update period of Sleep link spells", 40,0,true);
CVariable UpdatePeriodStun("egs","UpdatePeriodStun","update period of Stun link spells", 40,0,true);
CVariable UpdatePeriodRoot("egs","UpdatePeriodRoot","update period of Root link spells", 40,0,true);
CVariable UpdatePeriodSnare("egs","UpdatePeriodSnare","update period of Snare link spells", 40,0,true);
CVariable UpdatePeriodSlow("egs","UpdatePeriodSlow","update period of Slow link spells", 40,0,true);
CVariable UpdatePeriodBlind("egs","UpdatePeriodBlind","update period of Blind link spells", 40,0,true);
CVariable UpdatePeriodMadness("egs","UpdatePeriodMadness","update period of Madness link spells", 40,0,true);
CVariable UpdatePeriodDot("egs","UpdatePeriodDot","update period of Dot link spells", 40,0,true);
CVariable DefaultUpdatePeriod("egs","DefaultUpdatePeriod","default update period of link spells", 40,0,true);
// add some post cast time to magic (latency)
CVariable PostCastLatency("egs","PostCastLatency","add some post cast time to magic (latency in ticks)", 5,0,true);
// value added to resist value each time a spell is cast on an entity
CVariable ResistIncreaseFear("egs","ResistIncreaseFear","value added to Fear resist each time a Fear spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseSleep("egs","ResistIncreaseSleep","value added to Sleep resist each time a Sleep spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseStun("egs","ResistIncreaseStun","value added to Stun resist each time a Stun spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseRoot("egs","ResistIncreaseRoot","value added to Root resist each time a Root spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseSnare("egs","ResistIncreaseSnare","value added to Snare resist each time a Snare spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseSlow("egs","ResistIncreaseSlow","value added to Slow resist each time a Slow spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseBlind("egs","ResistIncreaseBlind","value added to Blind resist each time a Blind spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseMadness("egs","ResistIncreaseMadness","value added to Madness resist each time a Madness spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseAcid("egs","ResistIncreaseAcid","value added to Acid resist each time a Acid spell is cast on an entity", 3,0,true);
CVariable ResistIncreaseCold("egs","ResistIncreaseCold","value added to Cold resist each time a Cold spell is cast on an entity", 3,0,true);
CVariable ResistIncreaseElectricity("egs","ResistIncreaseElectricity","value added to Electricity resist each time a Electricity spell is cast on an entity", 5,0,true);
CVariable ResistIncreaseFire("egs","ResistIncreaseFire","value added to Fire resist each time a Fire spell is cast on an entity", 3,0,true);
CVariable ResistIncreasePoison("egs","ResistIncreasePoison","value added to Poison resist each time a Poison spell is cast on an entity", 3,0,true);
CVariable ResistIncreaseRot("egs","ResistIncreaseRot","value added to Rot resist each time a Rot spell is cast on an entity", 3,0,true);
CVariable ResistIncreaseShockwave("egs","ResistIncreaseShockwave","value added to Shockwave resist each time a Shockwave spell is cast on an entity", 3,0,true);
// values used to determine player magic resist level
CVariable MagicResistFactorForCombatSkills("egs","MagicResistFactorForCombatSkills","factor on combat skill level to get equivalent magic resist level", 1.0f,0,true);
CVariable MagicResistFactorForMagicSkills("egs","MagicResistFactorForMagicSkills","factor on magic skill level to get equivalent magic resist level", 1.0f,0,true);
CVariable MagicResistFactorForForageSkills("egs","MagicResistFactorForForageSkills","factor on forage skill level to get equivalent magic resist level", 0.5f,0,true);
CVariable MagicResistSkillDelta("egs","MagicResistSkillDelta","value always added to player base magic resist", -25,0,true);
CVariable MaxMagicProtection("egs","MaxMagicProtection","Maximum protection a character can have against a magic damage",80,0,true);
CVariable MaxAbsorptionFactor("egs","MaxAbsorptionFactor","Maximum magic damage absorption factor, 100 = factor 1.0f, base absorption is sum of jewel level", 100,0,true);
CVariable HominBaseProtection("egs","HominBaseProtection","Homin base protection against magic common damage (cold, acid, rot)", 10,0,true);
CVariable HominRacialProtection("egs","HominRacialProtection","Homin base protection against magic racial damage (Fire, Poison, Shockwave, Electricity)", 20,0,true);
CVariable HominRacialResistance("egs","HominRacialResistance","Homin base resistance against magic racial spell type", 10,0,true);
CVariable MaxMagicResistanceBonus("egs","MaxMagicResistanceBonus","Max bonus resistance against magic spell type", 50,0,true);
CVariable EcosystemResistancePenalty("egs","EcosystemResistancePenalty","Resistance Penalty gived by each ecosystem", 10,0,true);
// intangible time after a teleport or a respawn
CVariable IntangibleTimeAfterTP("egs","IntangibleTimeAfterTP","intangible time after a teleport or a respawn (in ticks)", 30,0,true);
// update frequency of the compass target position (in ticks)
CVariable CompassTargetUpdateFrequency("egs","CompassTargetUpdateFrequency", " update frequency of the compass target position (in ticks)", 20, 0, true);
// update period of toxic cloud damaging (in ticks)
CVariable ToxicCloudUpdateFrequency("egs","ToxicCloudUpdateFrequency", "update frequency of toxic cloud damaging (in ticks)", 20, 0, true);
// update period of deposits (in ticks) (should not be frequent; 0 is forbidden)
CVariable DepositUpdateFrequency("egs","DepositUpdateFrequency", "update frequency of deposits (in ticks)", 300, 0, true, cbChangeDepositUpdateFrequency); // default: 30 s
// update period of auras effects (to determine chich entities are affected for instance) (in ticks)
CVariable AurasUpdateFrequency("egs","AurasUpdateFrequency", "update frequency of auras effects (to determine which entities are affected for instance) (in ticks)", 20, 0, true);
// update frequency of locate deposit effect
CVariable ForageLocateDepositUpdateFrequency("egs","ForageLocateDepositUpdateFrequency", "update frequency of locate deposit effect", 25, 0, true );
// characteristic brick progression step
CVariable CharacteristicBrickStep("egs","CharacteristicBrickStep", "characteristic brick progression step(brick xxxx05 match a charac value of characteristic 5*CharacteristicBrickStep)", 5, 0, true);
// Variable regen divisor & factor
CVariable RegenDivisor("egs","RegenDivisor", "Divisor used for compute regenerate per seconde in repos (divide characteristics per divisor)", 16.0f, 0, true, CPlayerService::updateRegen );
CVariable RegenReposFactor("egs","RegenReposFactor", "Divisor used for compute regenerate per seconde in action (regen repos / factor)", 2.0f, 0, true, CPlayerService::updateRegen );
CVariable RegenOffset("egs","RegenOffset", "Regen offset", 1.6f, 0, true, CPlayerService::updateRegen );
// Max value for player's characteristics
CVariable MaxCharacteristicValue("egs","MaxCharacteristicValue", "Max value for player's characteristics", 250, 0, true);
// COMBAT config
// factor on creature and npc damage
CVariable BotDamageFactor("egs","BotDamageFactor", "Factor applied on all Bots (creature and npcs) damage", 1.0f, 0, true );
CVariable HitChestStaLossFactor("egs","HitChestStaLossFactor", "factor of damage also lost in sta when hit to chest", 0.5f, 0, true );
CVariable HitHeadStunDuration("egs","HitHeadStunDuration", "duration (in seconds) of a stun when hit to head", 2.5f, 0, true );
CVariable HitArmsSlowDuration("egs","HitArmsSlowDuration", "duration (in seconds) of a slow attack when hit to arms", 5.0f, 0, true );
CVariable HitArmsSlowFactor("egs","HitArmsSlowFactor", "slowing factor when hit to arms (+20 = +20% to attack latency)", 50, 0, true );
CVariable HitLegsSlowDuration("egs","HitLegsSlowDuration", "duration (in seconds) of a slow move when hit to legs", 5.0f, 0, true );
CVariable HitLegsSlowFactor("egs","HitLegsSlowFactor", "slowing factor when hit to legs (-20 = -20% to move speed)", -20, 0, true );
CVariable HitHandsDebuffDuration("egs","HitHandsDebuffDuration", "duration in seconds of skills debuff when hit to hands", 5.0f, 0, true );
CVariable HitHandsDebuffValue("egs","HitHandsDebuffValue", "value of skills debuff when hit to hands ", -20, 0, true );
CVariable HitFeetDebuffDuration("egs","HitFeetDebuffDuration", "duration in seconds of dodge debuff when hit to feet", 5.0f, 0, true );
CVariable HitFeetDebuffValue("egs","HitFeetDebuffValue", "value of skills dodge when hit to hands ", -20, 0, true );
CVariable NbOpponentsBeforeMalus("egs","NbOpponentsBeforeMalus", "number of opponent one can handle without defense malus", 1, 0, true );
CVariable ModPerSupernumeraryOpponent("egs","ModPerSupernumeraryOpponent", "modifier on defense (parry/dodge) per opponent after 'n'", -5, 0, true );
CVariable ShieldingRadius("egs","ShieldingRadius", "effective radius of the 'shielding' power", 5.0f, 0, true );
CVariable CombatFlagLifetime("egs","CombatFlagLifetime", "time *in ticks* during which a combat flag is kept 'active'", 50, 0, true );
CVariable CriticalHitChances("egs","CriticalHitChances", "chances (in%) to make a critical hit during a combat action (5 means 5%)", 5, 0, true );
CVariable DodgeFactorForMagicSkills("egs","DodgeFactorForMagicSkills", "Factor aplied on magic skill values to determine the equivalent for dodge", 1.0f, 0, true );
CVariable DodgeFactorForForageSkills("egs","DodgeFactorForForageSkills", "Factor aplied on forage skill values to determine the equivalent for dodge", 0.5f, 0, true );
CVariable ForageExtractionTimeMinGC( "egs", "ForageExtractionTimeMinGC", "Minimum time of extraction in ticks", 230.0f, 0, true );
CVariable ForageExtractionTimeSlopeGC( "egs", "ForageExtractionTimeSlopeGC", "Slope of base extraction time curve", 2.0f, 0, true );
CVariable ForageQuantityBaseRate( "egs", "ForageQuantityBaseRate", "Base of extraction rate", 0.23f, 0, true ); // 0.23 doubles the previous minimum setting
// ForageQuantitySlowFactor=0.5 => Results: 100% of rate at extraction #4
CVariable ForageQuantitySlowFactor( "egs","ForageQuantitySlowFactor",
"Factor for slowness of quantity growth", 0.5f,
0, true );
// ForageQualitySlowFactor=1.69 and ForageQualityCeilingFactor=1.1
CVariable ForageQualitySlowFactor( "egs","ForageQualitySlowFactor",
"Factor for slowness of quality growth", 1.69f,
0, true );
CVariable ForageQualitySlowFactorQualityLevelRatio( "egs", "ForageQualitySlowFactorQualityLevelRatio",
"Each quality level in extraction action slows the quality raising from this amount", 0.01f,
0, true );
CVariable ForageQualitySlowFactorDeltaLevelRatio( "egs", "ForageQualitySlowFactorDeltaLevelRatio",
"Each delta between quality level in extraction action and player's level slows the quality raising from this amount", 0.08f,
0, true );
CVariable ForageQualitySlowFactorMatSpecRatio( "egs", "ForageQualitySlowFactorMatSpecRatio",
"Material specialization in extraction speeds up the quality raising from this amount", 0.80f,
0, true );
CVariable ForageQualityCeilingFactor( "egs","ForageQualityCeilingFactor",
"Factor for ceiling of quality growth", 1.1f,
0, true );
CVariable ForageQualityCeilingClamp( "egs","ForageQualityCeilingClamp",
"Prevent to go past the ceiling", true,
0, true );
// Impact on negative values
CVariable ForageQuantityImpactFactor( "egs","ForageQuantityImpactFactor",
"Factor for extraction impact", 20.0f,
0, true );
CVariable ForageQualityImpactFactor( "egs","ForageQualityImpactFactor",
"Factor for extraction impact", 1.5f,
0, true );
CVariable ForageExtractionAbsorptionMatSpecFactor( "egs", "ForageExtractionAbsorptionMatSpecFactor", "Material specialization reduces harmfulness", 4.0f, 0, true );
CVariable ForageExtractionAbsorptionMatSpecMax( "egs", "ForageExtractionAbsorptionMatSpecMax", "Material specialization reduces harmfulness", 0.8f, 0, true );
CVariable ForageExtractionCareMatSpecFactor( "egs", "ForageExtractionCareMatSpecFactor", "Material specialization raises care", 1.2f, 0, true );
CVariable ForageExtractionAbsorptionEcoSpecFactor( "egs", "ForageExtractionAbsorptionEcoSpecFactor", "Ecosystem specialization reduces harmfulness", 3.0f, 0, true );
CVariable ForageExtractionAbsorptionEcoSpecMax( "egs", "ForageExtractionAbsorptionEcoSpecMax", "Ecosystem specialization reduces harmfulness", 0.8f, 0, true );
CVariable ForageExtractionCareEcoSpecFactor( "egs", "ForageExtractionCareEcoSpecFactor", "Ecosystem specialization raises care", 1.1f, 0, true );
CVariable ForageExtractionNaturalDDeltaPerTick( "egs", "ForageExtractionNaturalDDeltaPerTick", "D increase per tick", 0.1f, 0, true );
CVariable ForageExtractionNaturalEDeltaPerTick( "egs", "ForageExtractionNaturalEDeltaPerTick", "E increase per tick", 0.1f, 0, true );
CVariable ForageHPRatioPerSourceLifeImpact( "egs", "HPRatioPerSourceLifeImpact", "Ratio of HP damaged per source life (D) impact value", 0.003937f, 0, true ); // 1/127 / 2
CVariable ForageCareFactor( "egs","ForageCareFactor","Factor for care delta", 4.0f,0, true );
CVariable ForageCareBeginZone( "egs", "ForageCareBeginZone", "", 5.0f, 0, true );
CVariable ForageProspectionXPBonusRatio( "egs", "ForageProspectionXPBonusRatio", "", 0.5f, 0, true );
CVariable ForageExtractionXPFactor( "egs", "ForageExtractionXPFactor", "", 5.0f, 0, true );
CVariable ForageExtractionNbParticipantsXPBonusRatio( "egs", "ForageExtractionNbParticipantsXPBonusRatio", "", 0.1f, 0, true );
CVariable ForageExtractionNastyEventXPMalusRatio( "egs", "ForageExtractionNastyEventXPMalusRatio", "", 0.1f, 0, true );
CVariable ToxicCloudDamage( "egs","ToxicCloudDamage", "Max HP hit by a toxic cloud at ToxicCloudUpdateFrequency", 800.0f, true );
CVariable ForageExplosionDamage( "egs","ForageExplosionDamage", "Max HP hit once by a forage explosion", 4000.0f, true );
CVariable FameByKill( "egs","FameByKill", "Number of fame point lost for a kill", -5000, true );
NLMISC::CVariableDuelQueryDuration ("egs","DuelQueryDuration", "duration in ticks of a duel requests", 600, 0, true );
NLMISC::CVariable PVPZoneEnterBufferTime ("egs","PVPZoneEnterBufferTime", "duration in ticks of the time buffer triggered when someone enters a PVP zone", 300, 0, true );
NLMISC::CVariable PVPZoneLeaveBufferTime ("egs","PVPZoneLeaveBufferTime", "duration in ticks of the time buffer triggered when someone leaves a PVP zone", 9000, 0, true );
NLMISC::CVariable PVPZoneWarningRepeatTime ("egs","PVPZoneWarningRepeatTime", "duration in ticks used to repeat warnings of PVP zones", 50, 0, true );
NLMISC::CVariable PVPZoneWarningRepeatTimeL ("egs","PVPZoneWarningRepeatTimeL", "duration in ticks used to repeat warnings of PVP zones for time left is more than one minute", 50, 0, true );
NLMISC::CVariable PVPZoneWithDeathPenalty("egs","PVPZoneWithDeathPenalty", "if true a player killed by another player in a PVP zone will have a death penalty", false, 0, true );
NLMISC::CVariable PVPMeleeCombatDamageFactor("egs","PVPMeleeCombatDamageFactor", "Factor applied on Melee Damage in PVP", 0.8f, 0, true );
NLMISC::CVariable PVPRangeCombatDamageFactor("egs","PVPRangeCombatDamageFactor", "Factor applied on Range Damage in PVP", 0.8f, 0, true );
NLMISC::CVariable PVPMagicDamageFactor("egs","PVPMagicDamageFactor", "Factor applied on Magic Damage in PVP", 0.8f, 0, true );
//NLMISC::CVariable PVPMagicHealFactor("egs","PVPMagicHealFactor", "Factor applied on heals in PVP", 0.8f, 0, true );
NLMISC::CVariable TimeForSetPVPFlag("egs","TimeForSetPVPFlag", "time before set pvp flag become effective (in game cycle)", 1200, 0, true );
NLMISC::CVariable TimeForResetPVPFlag("egs","TimeForResetPVPFlag", "minimal time before reset pvp flag (in game cycle)", 18000, 0, true );
NLMISC::CVariable TimeForPVPFlagOff("egs","TimeForPVPFlagOff", "time before pvp flag return to off become effective (in game cycle)", 300, 0, true );
NLMISC::CVariable 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 );
NLMISC::CVariable 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);
CVariable BaseGuildBulk("egs","BaseGuildBulk", "base bulk for a new guild building", 2000000, 0, true);
CVariable MinFameToBuyGuildBuilding("egs","MinFameToBuyGuildBuilding", "Minimum Fame To Buy a Guild Building", 0, 0, true);
CVariable MinFameToBuyPlayerBuilding("egs","MinFameToBuyPlayerBuilding", "Minimum Fame To Buy a Player Building", 0, 0, true);
CVariable GuildCreationCost("egs","GuildCreationCost", "", 100, 0, true);
CVariable GuildMaxMemberCount("egs","GuildMaxMemberCount", "", 256, 0, true);
CVariable TriggerRequestTimout("egs","TriggerRequestTimout", "", 300, 0, true);
CVariable GuildSavePeriod("egs","GuildSavePeriod", "", 100, 0, true);
CVariable MonoMissionTimout("egs","MonoMissionTimout", "default timout of mono mission", 144000, 0, true);
CVariable VerboseMissions("egs","VerboseMissions", "Logging of mission parsing/event (0/1)", false, 0, true);
CVariable MissionPrerequisitsEnabled("egs","MissionPrerequisitsEnabled", "Activate the checking of pre requisits for mission", true, 0, true);
CVariable TickFrequencyCompassUpdate("egs","TickFrequencyCompassUpdate","Min time in tick between 2 updates of mission compass of a character", 32, 0, true);
CVariable WearMalusCraftFactor("egs","WearMalusCraftFactor", "Factor for apply wear penalty to craft", 0.1f, 0, true );
CVariable ForageCareSpeed( "egs","ForageCareSpeed",
"Speed of care action in action/tick", 0.05f, // 2 s
0, true );
CVariable ForageKamiOfferingSpeed( "egs","ForageKamiOfferingSpeed",
"Speed of offering action in action/tick", 0.02f, // 5 s
0, true );
CVariable ForageReduceDamageTimeWindow( "egs", "ForageReduceDamageTimeWindow", "Time in tick before a blowing up when Reduce Damage actions are taken into account", 30, 0, true ); // 3 s
CVariable ForageDebug( "egs","ForageDebug",
"Debug mode for forage phrases (0=normal 2=focusOnly 5=focus+skill 7=prospectionWithVariables 10=fullCheat)", 0,
0, true );
CVariable ForageSourceSpawnDelay( "egs","ForageSourceSpawnDelay",
"Time (ticks) between end of prospection & spawning the source(s)",
50, 0, true );
CVariable ForageValidateSourcesSpawnPos( "egs", "ForageValidateSourcesSpawnPos",
"If true, the AIS checks all source spawn positions",
true, 0, true );
CVariable ForageRange( "egs","ForageRange", "", 0, 0, false );
CVariable ForageAngle( "egs","ForageAngle", "", 0, 0, false );
CVariable ForageLevel( "egs","ForageLevel", "", 0, 0, false );
CVariable ForageFocusRatioOfLocateDeposit( "egs", "ForageFocusRatioOfLocateDeposit", "", 10, 0, true );
CVariable ForageQuantityXPDeltaLevelBonusRate( "egs", "ForageQuantityXPDeltaLevelBonusRate", "Delta level increase per qtty unit (except 1st one)", 2.0f, 0, true );
CVariable QuarteringQuantityAverageForCraftHerbivore( "egs", "QuarteringQuantityAverageForCraftHerbivore", "Control the global quantity in quartering for craft RMs of herbivores (H/B/P)", 1.0f, 0, true );
CVariable QuarteringQuantityAverageForCraftCarnivore( "egs", "QuarteringQuantityAverageForCraftCarnivore", "Control the global quantity in quartering for craft RMs of carnivores", 5.0f, 0, true );
CVariable QuarteringQuantityAverageForMissions( "egs", "QuarteringQuantityAverageForMissions", "Control the global quantity in quartering for mission RMs", 5.0f, 0, true );
CVariable QuarteringQuantityAverageForBoss5( "egs", "QuarteringQuantityAverageForBoss5", "Control the quantity of quartered material of normal creatures '5' and '8'", 10, 0, true );
CVariable QuarteringQuantityAverageForBoss7( "egs", "QuarteringQuantityAverageForBoss7", "Control the quantity of quartered material of normal creatures '7'", 40, 0, true );
CVariable QuarteringQuantityForInvasion5( "egs", "QuarteringQuantityForInvasion5", "Control the quantity of quartered invasion material of creatures '5'", 40, 0, true );
CVariable QuarteringQuantityForInvasion7( "egs", "QuarteringQuantityForInvasion7", "Control the quantity of quartered invasion material of creatures '7'", 80, 0, true );
CVariable LootMoneyAmountPerXPLevel( "egs", "LootMoneyAmountPerXPLevel", "Amount of money to earn when looting, per XPLevel of the looted NPC", 10.0f, 0, true );
CVariable GuildChargeSavePeriod("egs","GuildChargeSavePeriod", "", 100, 0, true);
CVariable MaxAppliedChargeCount("egs","AppliedChargeMaxCount", "max number of charge a guild can apply for", 1, 0, true);
CVariable OupostPowerRadius("egs","OupostPowerRadius", "Radius of an outpost power in meters", 100, 0, true);
CVariable OutpostPowerDuration("egs","OutpostPowerDuration", "duration of outpost powers in ticks", 54000, 0, true);
CVariable DumpRangeAnalysis("egs","DumpRangeAnalysis","debug dump for range combat",false,0,true);
CVariable RechargeMoneyFactor("egs","RechargeMoneyFactor", "factor to apply on a recharge spell sabrina cost to get the cost in money", 2.0f, 0, true );
CVariable CristalMoneyFactor("egs","CristalMoneyFactor", "factor to apply on a cristallisation spell sabrina cost to get the cost in money", 2.0f, 0, true );
CVariable AllowPVP("egs","AllowPVP", "AllowPVP", false ); // free PVP everywhere!
NLMISC::CVariable BasePlayerRoomBulk("egs","BasePlayerRoomBulk", "Maximum bulk a player can have in his room", 500000, 0, true);
NLMISC::CVariable MaxPlayerBulk("egs","MaxPlayerBulk", "Maximum bulk a player can have on him", 100000, 0, true);
NLMISC::CVariable BaseMaxCarriedWeight("egs","BaseMaxCarriedWeight", "max weight in grammes a player can have on him if his strength is 0", 100000, 0, true);
NLMISC::CVariable