mirror of
https://github.com/polserver/polserver
synced 2026-08-13 08:23:08 -04:00
* python script to generate cpp file with BareDistro content poltool cmd to generate the files * updated baredistro, fixed compilation * fix warning, ignore autogenerated file in stylechecker * test for pol? uoconvert got a new argument outdir for the cfg file output single thread decay has now a upper limit of sleeptime fixed that the exit_code can only get worse basic files for core testing in testsuite added a not really nice way to set it up via ctest integrated in CI with upload of log output * testenv * update poltool filegeneration to c++17 * first real tests * first npc test * equip a backpack and test a bit aos props * fixed early returns
1420 lines
30 KiB
C++
1420 lines
30 KiB
C++
|
|
// autogenerated
|
|
#include "baredistro.h"
|
|
|
|
#include <utility>
|
|
|
|
namespace Pol
|
|
{
|
|
namespace PolTool
|
|
{
|
|
void BareDistro::distro_files( std::map<fs::path, std::vector<std::string>>& distro )
|
|
{
|
|
distro.emplace( "scripts/start.src",
|
|
std::initializer_list<std::string>( {
|
|
"program start(noncrit)",
|
|
" print(\"POL initialization complete.\");",
|
|
"endprogram",
|
|
} ) );
|
|
|
|
distro.emplace( "config/cmds.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"CmdLevel Player",
|
|
"{",
|
|
"}",
|
|
"",
|
|
"CmdLevel Test",
|
|
"{",
|
|
"}",
|
|
} ) );
|
|
|
|
distro.emplace( "config/itemdesc.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"Container 0xE75",
|
|
"{",
|
|
" //MainStuff",
|
|
" Name BackPackCore",
|
|
" Name BackPack",
|
|
" Desc back pack",
|
|
"",
|
|
" //ContainerInfo",
|
|
" Gump 0x3C",
|
|
" MinX 44",
|
|
" MaxX 143",
|
|
" MinY 65",
|
|
" MaxY 140",
|
|
" MaxItems 5000",
|
|
" MaxWeight 0",
|
|
"}",
|
|
"",
|
|
"Container 0x2006",
|
|
"{",
|
|
" //MainStuff",
|
|
" Name Corpse",
|
|
"",
|
|
" //ContainerInfo",
|
|
" Gump 0x9",
|
|
" MinX 20",
|
|
" MaxX 80",
|
|
" MinY 85",
|
|
" MaxY 165",
|
|
" MaxItems 0",
|
|
" MaxWeight 0",
|
|
"}",
|
|
"",
|
|
"Weapon 0x1F020",
|
|
"{",
|
|
" //MainStuff",
|
|
" Name Intrinsic Weapon",
|
|
" Desc Intrinsic Weapon",
|
|
" Graphic 1",
|
|
"",
|
|
" //WeaponInfo",
|
|
" Speed 40",
|
|
" Attribute Tactics",
|
|
" Anim 0x9",
|
|
" Damage 1d8",
|
|
" HitSound 0x13E",
|
|
" MissSound 0x234",
|
|
" MaxHP 1",
|
|
"",
|
|
" //Booleans",
|
|
" SaveOnExit 0",
|
|
"}",
|
|
"",
|
|
"Armor 0x1F022",
|
|
"{",
|
|
" Name intrinsicshield",
|
|
" Graphic 1",
|
|
" MaxHP 1",
|
|
" SaveOnExit 0",
|
|
"}",
|
|
"",
|
|
"Container 0x1FF01",
|
|
"{",
|
|
" //MainStuff",
|
|
" Name SecureTradeContainer",
|
|
" Desc secure trade container",
|
|
" Graphic 0x1E5E",
|
|
" Weight 0",
|
|
"",
|
|
" //ContainerInfo",
|
|
" Gump 0x3C",
|
|
" MinX 0",
|
|
" MaxX 66",
|
|
" MinY 0",
|
|
" MaxY 33",
|
|
" MaxItems 500",
|
|
" MaxWeight 0",
|
|
"}",
|
|
"",
|
|
"Container 0x1FF02",
|
|
"{",
|
|
" //MainStuff",
|
|
" Name WornItemsContainer",
|
|
" Desc WornItemsContainer",
|
|
" Graphic 0x2",
|
|
" Weight 0",
|
|
"",
|
|
" //ContainerInfo",
|
|
" Gump 0x3C",
|
|
" MinX 0",
|
|
" MaxX 66",
|
|
" MinY 0",
|
|
" MaxY 33",
|
|
" MaxItems 65535",
|
|
" MaxWeight 65535",
|
|
"}",
|
|
} ) );
|
|
|
|
distro.emplace( "config/repsys.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"General",
|
|
"{",
|
|
" CriminalFlagInterval 120 # Time, in seconds, for which you will be marked criminal",
|
|
" AggressorFlagTimeout 120 # Time, in seconds, for which you will be marked an aggressor",
|
|
"}",
|
|
"",
|
|
"NameColoring NameColoring",
|
|
"{",
|
|
" Murderer 38",
|
|
" Criminal 905",
|
|
" Attackable 905",
|
|
" Innocent 90",
|
|
"",
|
|
" GuildAlly 68",
|
|
" GuildEnemy 44",
|
|
"",
|
|
" Invulnerable 53",
|
|
"}",
|
|
} ) );
|
|
|
|
distro.emplace( "config/startloc.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"//",
|
|
"// Recent change for Client 1.26: Starting Locations must be in the following",
|
|
"// order: Yew, Minoc, Britain, Moonglow, Trinsic, Magincia, Jhelom, Skara Brae, Vesper",
|
|
"//",
|
|
"//",
|
|
"// StartingLocation",
|
|
"// {",
|
|
"// City (string CityName)",
|
|
"// Description (string Description)",
|
|
"// MapID (int mapid {default 0})",
|
|
"// Cliloc (int clilocid {default 1075072})",
|
|
"// Coordinate (int x),(int y),(int z)",
|
|
"// Realm (string realm)",
|
|
"// }",
|
|
"//",
|
|
"// Documentation can be found: https://docs.polserver.com/pol100/configfiles.php#startloc.cfg",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Yew",
|
|
" Description Town Center",
|
|
" Coordinate 535,992,0",
|
|
"}",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Minoc",
|
|
" Description Minoc Inn",
|
|
" Coordinate 2476,411,15",
|
|
"}",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Britain",
|
|
" Description Britain Inn",
|
|
" Coordinate 1492,1628,12",
|
|
"}",
|
|
"",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Moonglow",
|
|
" Description Moonglow Inn",
|
|
" Coordinate 4403,1170,0",
|
|
"}",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Trinsic",
|
|
" Description Trinsic Inn",
|
|
" Coordinate 1942,2793,0",
|
|
"}",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Magincia",
|
|
" Description Magincia Inn",
|
|
" Coordinate 3739,2223,0",
|
|
"}",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Jhelom",
|
|
" Description Jhelom Inn",
|
|
" Coordinate 1378,3817,0",
|
|
"}",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Skara Brae",
|
|
" Description Skara Brae Inn",
|
|
" Coordinate 619,2234,0",
|
|
"}",
|
|
"",
|
|
"StartingLocation",
|
|
"{",
|
|
" City Vesper",
|
|
" Description Vesper Inn",
|
|
" Coordinate 2978,878,0",
|
|
"}",
|
|
"",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Britain",
|
|
"// Description Castle Blackthorne",
|
|
"// Coordinate 1523,1458,30",
|
|
"//}",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Wind",
|
|
"// Description Main Entrance",
|
|
"// Coordinate 5223,189,5",
|
|
"//}",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Trinsic",
|
|
"// Description Docks",
|
|
"// Coordinate 2053,2857,0",
|
|
"//}",
|
|
"",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Buccaneer's Den",
|
|
"// Description Docks",
|
|
"// Coordinate 2736,2166,0",
|
|
"//}",
|
|
"",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Occlo",
|
|
"// Description Docks",
|
|
"// Coordinate 3650,2653,0",
|
|
"//}",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Nujhelm",
|
|
"// Description Docks",
|
|
"// Coordinate 3803,1279,10",
|
|
"//}",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Cove",
|
|
"// Description East Gate",
|
|
"// Coordinate 2285,1209,0",
|
|
"//}",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Vesper",
|
|
"// Description Ironwood Inn",
|
|
"// Coordinate 2771,977,0",
|
|
"//}",
|
|
"",
|
|
"//StartingLocation",
|
|
"//{",
|
|
"// City Vesper",
|
|
"// Description The Magician's Friend",
|
|
"// Coordinate 3000,835,0",
|
|
"//}",
|
|
} ) );
|
|
|
|
distro.emplace( "config/servspecopt.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"## This file is needed because new clients have different total skills & stats,",
|
|
"## which is not supported by default in the core.",
|
|
"",
|
|
"##",
|
|
"## servspecopt.cfg - Server Specific Options",
|
|
"##",
|
|
"## Options relating to gameplay",
|
|
"##",
|
|
"## NOTE: It is recommended that you copy this file to 'servspecopt.local.cfg'",
|
|
"## and set your settings there; new distributions will not overwrite",
|
|
"## your changes to servspecopt.local.cfg",
|
|
"##",
|
|
"",
|
|
"#",
|
|
"# StartingGold - Amount of gold the core gives a character on creation.",
|
|
"# In the distro it is created in the newCharacter package.",
|
|
"#",
|
|
"StartingGold=100",
|
|
"",
|
|
"#",
|
|
"# NewbieStartingEquipment 1/0 (default 1) to determine if equipped items",
|
|
"# created during the character creation should be newbied or not.",
|
|
"NewbieStartingEquipment=1",
|
|
"",
|
|
"#",
|
|
"# SupportFaces 0/1/2 (default 0)",
|
|
"# set it to 1 to support basic faces",
|
|
"# set it to 2 to support roleplay faces (sets 0x2000 flag in 0xB9 packet)",
|
|
"# Note: Faces are normal items (like hair/beard) with layer 15, objtype 0x3B44-0x3B57",
|
|
"# roleplay faces 0x3B4E-0x3B57#",
|
|
"SupportFaces=0",
|
|
"",
|
|
"#",
|
|
"# CoreSendsSeason 1/0 (default 1)",
|
|
"# Determines if the core should send season packet on char creation/logon/reconnect and realm",
|
|
"# change based on the season entry in realm.cfg.",
|
|
"CoreSendsSeason=1",
|
|
"",
|
|
"#",
|
|
"# CoreGuildMessages=0/1, Default = 1",
|
|
"# Determine if core handles guild and alliance messages.",
|
|
"CoreGuildMessages=1",
|
|
"",
|
|
"#",
|
|
"# CoreHandledTags (default 0xFFFF)",
|
|
"# bitfield to determine which tags are displayed on singleclick, current used bits are:",
|
|
"# 0x1 [title_guild]",
|
|
"# 0x2 [frozen]",
|
|
"# 0x4 [paralyzed]",
|
|
"# 0x8 [squelched]",
|
|
"# 0x10 [deafened]",
|
|
"CoreHandledTags=0xFFFF",
|
|
"",
|
|
"",
|
|
"#",
|
|
"# CoreIgnoresDefenceCaps = 0/1, Default = 0",
|
|
"# If set to 1 core will not calculate resistances and defence increase limits set on the mobile.",
|
|
"CoreIgnoresDefenceCaps=0",
|
|
"",
|
|
"#",
|
|
"# SpeedhackPrevention - 1/0 (default 0)",
|
|
"# chr priv \"speedhack\" disables Speedhack Prevention for chr",
|
|
"SpeedhackPrevention=0",
|
|
"",
|
|
"#",
|
|
"# SpeedHack_MountRunDelay default 80 ms",
|
|
"# SpeedHack_MountWalkDelay default 180 ms",
|
|
"# SpeedHack_FootRunDelay default 180 ms",
|
|
"# SpeedHack_FootWalkDelay default 380 ms",
|
|
"#",
|
|
"# Change them on your own risk",
|
|
"SpeedHack_MountRunDelay=80",
|
|
"SpeedHack_MountWalkDelay=180",
|
|
"SpeedHack_FootRunDelay=180",
|
|
"SpeedHack_FootWalkDelay=380",
|
|
"",
|
|
"",
|
|
"",
|
|
"",
|
|
"# ScriptedMerchantHandlers - 1/0 (default 0 )",
|
|
"# If enabled, the below change will come into effect:",
|
|
"# When a player buys something from a merchant the core will not longer handle taking gold from the player, and moving items to the players pack.",
|
|
"# When the event for EVID_MERCHANT_SOLD and EVID_MERCHANT_BOUGHT is sent it will be a struct containing the following struct:",
|
|
"# struct.type = EVID_MERCHANT_SOLD or EVID_MERCHANT_BOUGHT",
|
|
"# struct.source = player buying",
|
|
"# struct.shoppinglist = array( struct.item, struct.amount )",
|
|
"#",
|
|
"# The shopping list items will still be items in the merchant's container.",
|
|
"# It is up to the script to split the items from the stacks there and move them to the player's pack.",
|
|
"# It is also up to the script to handle gold checks and consumption.",
|
|
"ScriptedMerchantHandlers=0",
|
|
"",
|
|
"#",
|
|
"# UseTileFlagPrefix - Determines if core adds A/AN as a prefix to item names",
|
|
"# based on their tiles.cfg settings.",
|
|
"#",
|
|
"UseTileFlagPrefix=1",
|
|
"",
|
|
"#",
|
|
"# DefaultDoubleclickRange - doubleclick range if DoubleClickRange isn't",
|
|
"# specified for an objtype in itemdesc.cfg",
|
|
"# Default is 2",
|
|
"#",
|
|
"DefaultDoubleclickRange=2",
|
|
"",
|
|
"#",
|
|
"# DoubleClickWait - Number of seconds that must pass before a player can",
|
|
"# double click an object again.",
|
|
"# Default is 1",
|
|
"#",
|
|
"DoubleClickWait=1",
|
|
"",
|
|
"#",
|
|
"# DefaultLightLevel - Default light level for regions with no level defined.",
|
|
"# Default is 10",
|
|
"#",
|
|
"DefaultLightLevel=10",
|
|
"",
|
|
"#",
|
|
"# CoreSendsCaps - 1/0 (default 0), makes POL send",
|
|
"# attribute cap information in the Send Skills (0x3A) packet.",
|
|
"CoreSendsCaps=0",
|
|
"",
|
|
"#",
|
|
"# DefaultAttributeCap - defines which value POL should use as cap for attributes.",
|
|
"# Value is in tenths so a value of 1000 equals 100.0 attribute cap.",
|
|
"# Default is 1000",
|
|
"#",
|
|
"DefaultAttributeCap=1000",
|
|
"",
|
|
"#",
|
|
"# CoreHandledLocks 1/0 Statlock change (Extended Stats, 0xBF sub 0x1A) will be handled if",
|
|
"# enabled. It will now send statlock (Extended Stats, 0xBF sub 0x19)",
|
|
"# on every status update.",
|
|
"# Default is 0",
|
|
"#",
|
|
"CoreHandledLocks=0",
|
|
"",
|
|
"#",
|
|
"# AllowMovingTrade - (default 0). 0 = Disable moving more than 4 tiles with an open trade window.",
|
|
"# If you move more than 4 tiles from who trading with, cancels trade.",
|
|
"AllowMovingTrade=0",
|
|
"",
|
|
"#",
|
|
"# From core-changes.txt Re this option:",
|
|
"# Added: support for new ObjectCacheInfos introduced in 5.0.0",
|
|
"# old behavior: Server sends 0xBF Sub 0x10 per object ->Client response also with 0xBF Sub 0x10 per item",
|
|
"# new behavior: Server sends 0xDC per object -> Client response with 0xD6 (there can be more then one serial up to ~16)",
|
|
"# intern check is",
|
|
"# if ((ssopt.ForceNewObjCachePackets) || (isUOKR) || (clientversion.major>=5))",
|
|
"# since the client sends his clientversion not instantly the first few ObjCacheInfos are sent",
|
|
"# the old way (thats why the new ssopt is added)",
|
|
"# Note: since client 6.0.5.0 the clientversion is instantly known (new seed packet)",
|
|
"# Default is 0",
|
|
"#",
|
|
"ForceNewObjCachePackets=0",
|
|
"",
|
|
"# PrivacyPaperdoll",
|
|
"# If enabled, Paperdoll gives only char name for others",
|
|
"# Default is 0",
|
|
"#",
|
|
"PrivacyPaperdoll=0",
|
|
"",
|
|
"#",
|
|
"# SeperateSpeechTokens=0/1",
|
|
"# When set RegisterForSpeechEvents() and EnableEvents/DisableEvents behave differently.",
|
|
"# Added: uo:RegisterForSpeechEvents Flags LISTENPT_HEAR_TOKENS,LISTENPT_NO_SPEECH",
|
|
"# Added: SYSEVENT_TOKEN_SPEECH:=0x4000 and SYSEVENT_TOKEN_GHOST_SPEECH:=0x8000 for uo:EnableEvents/DisableEvents",
|
|
"# Note: if SeperateSpeechTokens is set you can control which events you get,",
|
|
"# for NPCs you only get speech with tokens if you set SYSEVENT_TOKEN_SPEECH/SYSEVENT_TOKEN_GHOST_SPEECH",
|
|
"# and non Token speech with SYSEVENT_SPEECH,SYSEVENT_GHOST_SPEECH",
|
|
"# for RegisterForSpeechEvents() you get speech with and without Tokens when setting LISTENPT_HEAR_TOKENS and no speech without Tokens",
|
|
"# setting LISTENPT_NO_SPEECH",
|
|
"# Note: Token and nonToken Eventtype is still the same (SYSEVENT_SPEECH)",
|
|
"# Default is 0",
|
|
"#",
|
|
"SeperateSpeechTokens=0",
|
|
"",
|
|
"#",
|
|
"# SpeechRange",
|
|
"# Default is 12",
|
|
"#",
|
|
"SpeechRange=12",
|
|
"",
|
|
"#",
|
|
"# WhisperRange",
|
|
"# Default is 2",
|
|
"#",
|
|
"WhisperRange=2",
|
|
"",
|
|
"#",
|
|
"# YellRange",
|
|
"# Default is 25",
|
|
"#",
|
|
"YellRange=25",
|
|
"",
|
|
"# CarryingCapacityMod - (value type is a double) as * modifier for mobile max_weight",
|
|
"# Note: Formula is (40 + strength * 7 / 2) * ssopt.CarryingCapacityMod",
|
|
"# Note: Since ML max weight is send for statusgump",
|
|
"# Default is 1.0",
|
|
"#",
|
|
"CarryingCapacityMod=1.0",
|
|
"",
|
|
"#",
|
|
"# DefaultCharacterHeight",
|
|
"# This will be the default (and never changed so far) height of Characters",
|
|
"# and NPCs. Default value is 15. Back in the POL095 days is was 9, so consider",
|
|
"# 9-15 as your \"safe\" play range. Anything outside that range could cause weird",
|
|
"# movement behavior. Even small changes will have a great impact on LOS",
|
|
"# calculations and, more in general, on the combat system.",
|
|
"# It is also used to calculate wether a Character can fit under a low",
|
|
"# passage (e.g. dungeon stairs).",
|
|
"# Keep in mind a Titan and a Slime will have the same height.",
|
|
"# Default is 15",
|
|
"#",
|
|
"DefaultCharacterHeight=15",
|
|
"",
|
|
"#",
|
|
"# SendStatLocks to send the stat locks message.",
|
|
"# Beware that this message will only be sent to clients which have major version > 3",
|
|
"# (to avoid breaking older ones).",
|
|
"# Default is 0",
|
|
"#",
|
|
"SendStatLocks=0",
|
|
"",
|
|
"#",
|
|
"# UseContainerSlots - true/false",
|
|
"# Default is 0",
|
|
"#",
|
|
"UseContainerSlots=0",
|
|
"",
|
|
"# MaxContainerSlots - This will allow setting the internal overall allowed item count for containers.",
|
|
"# This is introduced for future KR support. KR client is only 125, but we are",
|
|
"# making this here so custom clients later can support more slots.",
|
|
"# If you have containers with max item count over 125 and use ONLY 2D,",
|
|
"# and not KR, set this to your highest amount used!",
|
|
"# Default is 125",
|
|
"#",
|
|
"MaxContainerSlots=125",
|
|
"",
|
|
"#",
|
|
"# EventVisibilityCoreChecks - If enabled, the core will not send system events",
|
|
"# to NPCs unless they are visible to the source.",
|
|
"# Visibility is based on:",
|
|
"# Source is logged in",
|
|
"# Source is not hidden / concealed",
|
|
"#",
|
|
"# If disabled, you will do the checks yourself in the scripts.",
|
|
"# Default is 0",
|
|
"#",
|
|
"EventVisibilityCoreChecks=0",
|
|
"",
|
|
"#",
|
|
"# MovementUsesStamina - stamina cost per movement will be enforced, using",
|
|
"# weight and carrying capacity.",
|
|
"# Default is 1",
|
|
"#",
|
|
"MovementUsesStamina=1",
|
|
"",
|
|
"#",
|
|
"# AllowSecureTradingInWarMode - 1/0",
|
|
"# Default is 1",
|
|
"#",
|
|
"AllowSecureTradingInWarMode=1",
|
|
"",
|
|
"#",
|
|
"# TotalStatsAtCreation - 65 for older clients, 80 for newer.",
|
|
"# Accepts any value you like, but those are the",
|
|
"# important ones. Accepts lists and ranges, for",
|
|
"# instance: 65,80,90-95,100",
|
|
"# Default is 65,80",
|
|
"#",
|
|
"TotalStatsAtCreation=65,80, 90",
|
|
"",
|
|
"#",
|
|
"# DecayItems - Determines if the decay system is enabled or not.",
|
|
"# Default is 1",
|
|
"#",
|
|
"DecayItems=1",
|
|
"",
|
|
"#",
|
|
"# DefaultDecayTime - minimum number of minutes before movable items decay (are destroyed)",
|
|
"# Default is 10",
|
|
"#",
|
|
"DefaultDecayTime=10",
|
|
"",
|
|
"#",
|
|
"# DefaultContainerMaxItems and",
|
|
"# DefaultContainerMaxWeight",
|
|
"# These values will be used for containers that do not define \"MaxItems\" and \"MaxWeight\"",
|
|
"# in their itemdesc.cfg entries.",
|
|
"# Default DefaultContainerMaxItems is 125",
|
|
"# Default DefaultContainerMaxWeight is 250",
|
|
"#",
|
|
"DefaultContainerMaxItems=125",
|
|
"DefaultContainerMaxWeight=250",
|
|
"",
|
|
"# UO Feature Enable: Packet 0xA9 Dword, used by newer clients to enable",
|
|
"# specific features or configurations.",
|
|
"# NOTE this value will not be used in packet 0xB9 (specific UO expansion enable),",
|
|
"# best to send that in login/reconnect.src.",
|
|
"# BE VERY CAREFUL WITH THIS SETTING, VERY POSSIBLE IT IS HARMFUL.",
|
|
"#",
|
|
"# I would also not expect any of these to work, but they're here for completeness.",
|
|
"# Set to 0x00 if you don't know what you're doing.",
|
|
"#",
|
|
"# Values courtesy of LordBinary, and DarkStorm",
|
|
"#",
|
|
"# 0x02 = send config/req logout (IGR?)",
|
|
"# 0x04 = single character (siege)",
|
|
"# 0x08 = enable npcpopup menus",
|
|
"# 0x10 = unknown",
|
|
"# 0x20 = enable common AOS features (tooltip thing/fight system book, but",
|
|
"# not AOS monsters/map/skills (0xB9 controls))",
|
|
"#",
|
|
"# Be sure to set InvulTag to 2 if using AOSTooltip setting. This is so the Invul",
|
|
"# color will show correctly in the tooltips.",
|
|
"# Default i 0x1A8",
|
|
"#",
|
|
"UOFeatureEnable=0x01A8",
|
|
"",
|
|
"#",
|
|
"# HiddenTurnsCount",
|
|
"# This will define whether or not turns made while hidden will count as a \"move\".",
|
|
"# It defaults to 1, which is the way POL has always previously operated. If set",
|
|
"# to zero, then if you are hidden and make a turn, it will not count against your",
|
|
"# stealth steps, nor will it unhide you if you are not stealthing. If set to one,",
|
|
"# turns while hidden do count against stealthsteps, and will unhide you if you",
|
|
"# are not stealthing.",
|
|
"# Default is 1",
|
|
"#",
|
|
"HiddenTurnsCount=1",
|
|
"",
|
|
"#",
|
|
"# InvulTag",
|
|
"# This will define whether or not to display the Invul tag for mobs, and if so, HOW",
|
|
"# to display them. It defaults to 1, which is the way POL has always previously operated.",
|
|
"# If set to zero, then there will be no way to tell invuls from not by single click, etc.",
|
|
"# If set to 2 (only use this if your shard is for 3.x+ Clients!) it will remove the",
|
|
"# invul tag on their name, and make them highlightable as Yellow/Gold instead!",
|
|
"# Default is 1",
|
|
"#",
|
|
"InvulTag=1",
|
|
"",
|
|
"#",
|
|
"# MaxPathFindRange",
|
|
"# This will define the maximum distance between the start and destination points",
|
|
"# which pathfinding will be performed on. If PathFind is called on points greater",
|
|
"# than this value, an error result will be returned with \"Beyond Max Range.\" as",
|
|
"# the errortext. Default value for this is 50.",
|
|
"#",
|
|
"MaxPathFindRange=50",
|
|
"",
|
|
"#UseWinLFH=0|1",
|
|
"# Use Windows XP/2003 low-fragmentation Heap?",
|
|
"# Default is 0",
|
|
"#",
|
|
"UseWinLFH=0",
|
|
"",
|
|
"#",
|
|
"# ItemColorMask",
|
|
"# It is a bitmask of what colors should be considered valid. For example, with an",
|
|
"# ItemColorMask of 0xFFF, any color from 0 to 4095 is considered a valid color.With",
|
|
"# an ItemColorMask of 0xFF, this would be reduced to a range from 0 to 255. It was",
|
|
"# left a mask instead of given as a range in order to allow specifying certain bits",
|
|
"# to be on. So, for instance, with the newer clients, a mask of 0x4FFF will allow",
|
|
"# the third bit (value 4) of the most significant nibble to be turned on, but no",
|
|
"# others in that nibble. This allows for newer clients to use the \"transparent",
|
|
"# animation\" feature, which allows equipped mounts to be transparent(ie, ethereals).",
|
|
"# Bear in mind, older clients may well crash if you set colors to be outside of the",
|
|
"# non-default mask of 0xFFF, so this is strictly at your own risk to use it. But",
|
|
"# for those of you wishing ethereal beetles and other mount animations to be",
|
|
"# ethereal, you will have to set the mount piece to be color 0x4001 and then equip",
|
|
"# it. And in order to do that, you will need an ItemColorMask of 0x4FFF.",
|
|
"# Default is 0x4FFF",
|
|
"#",
|
|
"ItemColorMask=0x4FFF",
|
|
"",
|
|
"#",
|
|
"# HonorUnequipScriptOnDeath",
|
|
"# If enabled, the core will call unequip and unequiptest scripts on death and obey their return value.",
|
|
"# Default is 0",
|
|
"#",
|
|
"HonorUnequipScriptOnDeath=0",
|
|
"",
|
|
"#",
|
|
"# MobilesBlockNpcMovement",
|
|
"# If enabled mobiles will block the movement of npcs.",
|
|
"# Default is 1",
|
|
"#",
|
|
"MobilesBlockNpcMovement=1",
|
|
"",
|
|
"#",
|
|
"# DefaultAccessibleRange",
|
|
"#",
|
|
"# This is the default range test for the Accessible()",
|
|
"# function in uo.em. You can specify a range in",
|
|
"# the function call. See the POL documentation for",
|
|
"# details. The default value is 18 squares.",
|
|
"# The previous documentation that listed it as 2",
|
|
"# squares was in error. Internally POL had a set",
|
|
"# range of 18 squares for this function.",
|
|
"# The default value was chosen to prevent breaking",
|
|
"# legacy (old) scripts that might rely on the previos",
|
|
"# way Accessible worked.",
|
|
"#",
|
|
"DefaultAccessibleRange=18",
|
|
"",
|
|
"# EnableWorldMapPackets - 1/0 (default 0)",
|
|
"#",
|
|
"# Custom clients have implemented a packet that tracks the position of party and",
|
|
"# guild members. This enables the client to overlay member positions on a world",
|
|
"# map directly inside the client. Set to 1 to enable core handling of this packet.",
|
|
"#",
|
|
"EnableWorldMapPackets=0",
|
|
} ) );
|
|
|
|
distro.emplace( "config/servers.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"GameServer POL-LOCAL",
|
|
"{",
|
|
" Name POL-LocalHost",
|
|
" IP 127.0.0.1",
|
|
" Port 5003",
|
|
" IPMatch 127.0.0.1",
|
|
"}",
|
|
"",
|
|
"GameServer POL-LAN",
|
|
"{",
|
|
" Name POL-LAN",
|
|
" IP --lan--",
|
|
" Port 5003",
|
|
" IPMatch 192.168.0.0/255.255.0.0",
|
|
"}",
|
|
"",
|
|
"GameServer POL-WAN",
|
|
"{",
|
|
" Name POL-WAN",
|
|
" // Below, you should set it to your actual WAN IP instead of --ip--",
|
|
" // example: 45.32.1.23",
|
|
" IP --ip--",
|
|
" Port 5003",
|
|
"}",
|
|
} ) );
|
|
|
|
distro.emplace( "pkg/systems/attributes/pkg.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"Enabled 1",
|
|
"Name attributes",
|
|
"Version 1.0",
|
|
"",
|
|
"CoreRequired 100",
|
|
"",
|
|
"Maintainer POL Distro Team",
|
|
"Email distro@polserver.com",
|
|
} ) );
|
|
|
|
distro.emplace( "pkg/systems/attributes/hooks/vitalInit.src",
|
|
std::initializer_list<std::string>( {
|
|
"use attributes;",
|
|
"",
|
|
"program Install()",
|
|
" return 1;",
|
|
"endprogram",
|
|
"",
|
|
"// Regen rates are in 'hundredths of points per minute.' A current regen",
|
|
"// rate of 100 (1 point per 5 seconds) would therefore be 1200 (12 points",
|
|
"// per minute)",
|
|
"exported function GetHitsRegenRate(unused mobile)",
|
|
" return 1200;",
|
|
"endfunction",
|
|
"",
|
|
"exported function GetHitsMaximumValue(mobile)",
|
|
" return GetAttribute(mobile, \"Strength\") * 100;",
|
|
"endfunction",
|
|
"",
|
|
"exported function GetManaRegenRate(unused mobile)",
|
|
" return 1200;",
|
|
"endfunction",
|
|
"",
|
|
"exported function GetManaMaximumValue(mobile)",
|
|
" return GetAttribute(mobile, \"Intelligence\") * 100;",
|
|
"endfunction",
|
|
"",
|
|
"exported function GetStaminaRegenRate(unused mobile)",
|
|
" return 1200;",
|
|
"endfunction",
|
|
"",
|
|
"exported function GetStaminaMaximumValue(mobile)",
|
|
" return GetAttribute(mobile, \"Dexterity\") * 100;",
|
|
"endfunction",
|
|
} ) );
|
|
|
|
distro.emplace( "pkg/systems/attributes/config/uoskills.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"Skill 0",
|
|
"{",
|
|
" Attribute Alchemy",
|
|
"}",
|
|
"",
|
|
"Skill 1",
|
|
"{",
|
|
" Attribute Anatomy",
|
|
"}",
|
|
"",
|
|
"Skill 2",
|
|
"{",
|
|
" Attribute AnimalLore",
|
|
"}",
|
|
"",
|
|
"Skill 3",
|
|
"{",
|
|
" Attribute ItemIdentification",
|
|
"}",
|
|
"",
|
|
"Skill 4",
|
|
"{",
|
|
" Attribute ArmsLore",
|
|
"}",
|
|
"",
|
|
"Skill 5",
|
|
"{",
|
|
" Attribute Parry",
|
|
"}",
|
|
"",
|
|
"Skill 6",
|
|
"{",
|
|
" Attribute Begging",
|
|
"}",
|
|
"",
|
|
"Skill 7",
|
|
"{",
|
|
" Attribute Blacksmithy",
|
|
"}",
|
|
"",
|
|
"Skill 8",
|
|
"{",
|
|
" Attribute BowcraftFletching",
|
|
"}",
|
|
"",
|
|
"Skill 9",
|
|
"{",
|
|
" Attribute Peacemaking",
|
|
"}",
|
|
"",
|
|
"Skill 10",
|
|
"{",
|
|
" Attribute Camping",
|
|
"}",
|
|
"",
|
|
"Skill 11",
|
|
"{",
|
|
" Attribute Carpentry",
|
|
"}",
|
|
"",
|
|
"Skill 12",
|
|
"{",
|
|
" Attribute Cartography",
|
|
"}",
|
|
"",
|
|
"Skill 13",
|
|
"{",
|
|
" Attribute Cooking",
|
|
"}",
|
|
"",
|
|
"Skill 14",
|
|
"{",
|
|
" Attribute DetectingHidden",
|
|
"}",
|
|
"",
|
|
"Skill 15",
|
|
"{",
|
|
" Attribute Discordance",
|
|
"}",
|
|
"",
|
|
"Skill 16",
|
|
"{",
|
|
" Attribute EvaluatingIntelligence",
|
|
"}",
|
|
"",
|
|
"Skill 17",
|
|
"{",
|
|
" Attribute Healing",
|
|
"}",
|
|
"",
|
|
"Skill 18",
|
|
"{",
|
|
" Attribute Fishing",
|
|
"}",
|
|
"",
|
|
"Skill 19",
|
|
"{",
|
|
" Attribute ForensicEvaluation",
|
|
"}",
|
|
"",
|
|
"Skill 20",
|
|
"{",
|
|
" Attribute Herding",
|
|
"}",
|
|
"",
|
|
"Skill 21",
|
|
"{",
|
|
" Attribute Hiding",
|
|
"}",
|
|
"",
|
|
"Skill 22",
|
|
"{",
|
|
" Attribute Provocation",
|
|
"}",
|
|
"",
|
|
"Skill 23",
|
|
"{",
|
|
" Attribute Inscription",
|
|
"}",
|
|
"",
|
|
"Skill 24",
|
|
"{",
|
|
" Attribute Lockpicking",
|
|
"}",
|
|
"",
|
|
"Skill 25",
|
|
"{",
|
|
" Attribute Magery",
|
|
"}",
|
|
"",
|
|
"Skill 26",
|
|
"{",
|
|
" Attribute ResistingSpells",
|
|
"}",
|
|
"",
|
|
"Skill 27",
|
|
"{",
|
|
" Attribute Tactics",
|
|
"}",
|
|
"",
|
|
"#Skill 28",
|
|
"#{",
|
|
"# Attribute Snooping",
|
|
"#}",
|
|
"",
|
|
"Skill 29",
|
|
"{",
|
|
" Attribute Musicianship",
|
|
"}",
|
|
"",
|
|
"Skill 30",
|
|
"{",
|
|
" Attribute Poisoning",
|
|
"}",
|
|
"",
|
|
"Skill 31",
|
|
"{",
|
|
" Attribute Archery",
|
|
"}",
|
|
"",
|
|
"Skill 32",
|
|
"{",
|
|
" Attribute SpiritSpeak",
|
|
"}",
|
|
"",
|
|
"#Skill 33",
|
|
"#{",
|
|
"# Attribute Stealing",
|
|
"#}",
|
|
"",
|
|
"Skill 34",
|
|
"{",
|
|
" Attribute Tailoring",
|
|
"}",
|
|
"",
|
|
"Skill 35",
|
|
"{",
|
|
" Attribute AnimalTaming",
|
|
"}",
|
|
"",
|
|
"Skill 36",
|
|
"{",
|
|
" Attribute TasteIdentification",
|
|
"}",
|
|
"",
|
|
"Skill 37",
|
|
"{",
|
|
" Attribute Tinkering",
|
|
"}",
|
|
"",
|
|
"Skill 38",
|
|
"{",
|
|
" Attribute Tracking",
|
|
"}",
|
|
"",
|
|
"Skill 39",
|
|
"{",
|
|
" Attribute Veterinary",
|
|
"}",
|
|
"",
|
|
"Skill 40",
|
|
"{",
|
|
" Attribute Swordsmanship",
|
|
"}",
|
|
"",
|
|
"Skill 41",
|
|
"{",
|
|
" Attribute Macefighting",
|
|
"}",
|
|
"",
|
|
"Skill 42",
|
|
"{",
|
|
" Attribute Fencing",
|
|
"}",
|
|
"",
|
|
"Skill 43",
|
|
"{",
|
|
" Attribute Wrestling",
|
|
"}",
|
|
"",
|
|
"Skill 44",
|
|
"{",
|
|
" Attribute Lumberjacking",
|
|
"}",
|
|
"",
|
|
"Skill 45",
|
|
"{",
|
|
" Attribute Mining",
|
|
"}",
|
|
"",
|
|
"Skill 46",
|
|
"{",
|
|
" Attribute Meditation",
|
|
"}",
|
|
"",
|
|
"Skill 47",
|
|
"{",
|
|
" Attribute Stealth",
|
|
"}",
|
|
"",
|
|
"Skill 48",
|
|
"{",
|
|
" Attribute RemoveTrap",
|
|
"}",
|
|
} ) );
|
|
|
|
distro.emplace( "pkg/systems/attributes/config/attributes.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"Attribute Strength",
|
|
"{",
|
|
" AttributeType Stat",
|
|
" Alias STR",
|
|
"}",
|
|
"",
|
|
"Attribute Intelligence",
|
|
"{",
|
|
" AttributeType Stat",
|
|
" Alias INT",
|
|
"}",
|
|
"",
|
|
"Attribute Dexterity",
|
|
"{",
|
|
" AttributeType Stat",
|
|
" Alias DEX",
|
|
"}",
|
|
"",
|
|
"",
|
|
"Attribute Alchemy",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 0",
|
|
"}",
|
|
"",
|
|
"Attribute Anatomy",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 1",
|
|
"}",
|
|
"",
|
|
"Attribute AnimalLore",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 2",
|
|
"}",
|
|
"",
|
|
"Attribute ItemIdentification",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 3",
|
|
"}",
|
|
"",
|
|
"Attribute ArmsLore",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 4",
|
|
"}",
|
|
"",
|
|
"Attribute Parry",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 5",
|
|
"}",
|
|
"",
|
|
"Attribute Begging",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 6",
|
|
"}",
|
|
"",
|
|
"Attribute Blacksmithy",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 7",
|
|
"}",
|
|
"",
|
|
"Attribute BowcraftFletching",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 8",
|
|
"}",
|
|
"",
|
|
"Attribute Peacemaking",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 9",
|
|
"}",
|
|
"",
|
|
"Attribute Camping",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 10",
|
|
"}",
|
|
"",
|
|
"Attribute Carpentry",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 11",
|
|
"}",
|
|
"",
|
|
"Attribute Cartography",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 12",
|
|
"}",
|
|
"",
|
|
"Attribute Cooking",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 13",
|
|
"}",
|
|
"",
|
|
"Attribute DetectingHidden",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 14",
|
|
"}",
|
|
"",
|
|
"Attribute Discordance",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 15",
|
|
"}",
|
|
"",
|
|
"Attribute EvaluatingIntelligence",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 16",
|
|
"}",
|
|
"",
|
|
"Attribute Healing",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 17",
|
|
"}",
|
|
"",
|
|
"Attribute Fishing",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 18",
|
|
"}",
|
|
"",
|
|
"Attribute ForensicEvaluation",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 19",
|
|
"}",
|
|
"",
|
|
"Attribute Herding",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 20",
|
|
"}",
|
|
"",
|
|
"Attribute Hiding",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 21",
|
|
"}",
|
|
"",
|
|
"Attribute Provocation",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 22",
|
|
"}",
|
|
"",
|
|
"Attribute Inscription",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 23",
|
|
"}",
|
|
"",
|
|
"Attribute Lockpicking",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 24",
|
|
"}",
|
|
"",
|
|
"Attribute Magery",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 25",
|
|
"}",
|
|
"",
|
|
"Attribute ResistingSpells",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 26",
|
|
"}",
|
|
"",
|
|
"Attribute Tactics",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 27",
|
|
"}",
|
|
"",
|
|
"Attribute Snooping",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 28",
|
|
"}",
|
|
"",
|
|
"Attribute Musicianship",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 29",
|
|
"}",
|
|
"",
|
|
"Attribute Poisoning",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 30",
|
|
"}",
|
|
"",
|
|
"Attribute Archery",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 31",
|
|
"}",
|
|
"",
|
|
"Attribute SpiritSpeak",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 32",
|
|
"}",
|
|
"",
|
|
"Attribute Stealing",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 33",
|
|
"}",
|
|
"",
|
|
"Attribute Tailoring",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 34",
|
|
"}",
|
|
"",
|
|
"Attribute AnimalTaming",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 35",
|
|
"}",
|
|
"",
|
|
"Attribute TasteIdentification",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 36",
|
|
"}",
|
|
"",
|
|
"Attribute Tinkering",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 37",
|
|
"}",
|
|
"",
|
|
"Attribute Tracking",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 38",
|
|
"}",
|
|
"",
|
|
"Attribute Veterinary",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 39",
|
|
"}",
|
|
"",
|
|
"Attribute Swordsmanship",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 40",
|
|
"}",
|
|
"",
|
|
"Attribute MaceFighting",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 41",
|
|
"}",
|
|
"",
|
|
"Attribute Fencing",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 42",
|
|
"}",
|
|
"",
|
|
"Attribute Wrestling",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 43",
|
|
"}",
|
|
"",
|
|
"Attribute Lumberjacking",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 44",
|
|
"}",
|
|
"",
|
|
"Attribute Mining",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 45",
|
|
"}",
|
|
"",
|
|
"Attribute Meditation",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 46",
|
|
"}",
|
|
"",
|
|
"Attribute Stealth",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 47",
|
|
"}",
|
|
"",
|
|
"Attribute RemoveTrap",
|
|
"{",
|
|
" AttributeType Skill",
|
|
" SkillId 48",
|
|
"}",
|
|
} ) );
|
|
|
|
distro.emplace( "pkg/systems/attributes/config/vitals.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"Vital Life",
|
|
"{",
|
|
" Alias Hits",
|
|
" RegenRateFunction :attributes:hooks/vitalInit:GetHitsRegenRate",
|
|
" MaximumFunction :attributes:hooks/vitalInit:GetHitsMaximumValue",
|
|
"}",
|
|
"",
|
|
"Vital Mana",
|
|
"{",
|
|
" RegenRateFunction :attributes:hooks/vitalInit:GetManaRegenRate",
|
|
" MaximumFunction :attributes:hooks/vitalInit:GetManaMaximumValue",
|
|
"}",
|
|
"",
|
|
"Vital Stamina",
|
|
"{",
|
|
" RegenRateFunction :attributes:hooks/vitalInit:GetStaminaRegenRate",
|
|
" MaximumFunction :attributes:hooks/vitalInit:GetStaminaMaximumValue",
|
|
"}",
|
|
} ) );
|
|
|
|
distro.emplace( "pkg/systems/accounts/pkg.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"Enabled 1",
|
|
"Name accounts",
|
|
"Version 1.0",
|
|
"",
|
|
"CoreRequired 100",
|
|
"",
|
|
"Maintainer POL Distro Team",
|
|
"Email distro@polserver.com",
|
|
} ) );
|
|
|
|
distro.emplace( "pkg/systems/accounts/config/uoclient.cfg",
|
|
std::initializer_list<std::string>( {
|
|
"General",
|
|
"{",
|
|
" Strength Strength",
|
|
" Intelligence Intelligence",
|
|
" Dexterity Dexterity",
|
|
" Hits Life",
|
|
" Mana Mana",
|
|
" Stamina Stamina",
|
|
" MaxSkillID 57",
|
|
"}",
|
|
"",
|
|
"Listener none-5003",
|
|
"{",
|
|
" Port 5003",
|
|
" Encryption none",
|
|
" AOSResistances 0",
|
|
" KeepClients 1",
|
|
"}",
|
|
} ) );
|
|
|
|
|
|
}
|
|
} // namespace PolTool
|
|
} // namespace Pol
|