There will be no mechanism to close off clients based on server expansion settings.
Server Operators are welcome to customize client requirements.
Spells (spells_us.txt) will not have expansion settings:
Various clients have spell count limitations
spells_us.txt should be part of a standard "patch day" download when an expansion is launched
Spell gems and spell book icons will not have expansion settings
Models will not have expansion settings
Feel free to customize using eqclient.ini pre-Luclin models
Server operators can provide any models they wish
Client Maps are enabled based on expansion settings through the client
The actual map content will not be controlled with expansion settings
Server operators can choose to provide any maps they wish
Skill Caps???
db_str???
base_data???
An expansion setting should be exposed to the quest API
Scripts should utilize the expansion setting to "mask" portions of the script:
sub EVENT_SAY {if ($text=~/hail/i) {if (quest::is_the_ruins_of_kunark_enabled()) {quest::say("Something.");}elsif (quest::is_the_scars_of_velious_enabled()) {quest::say("Something different.");}elsif (quest::is_the_shadows_of_luclin_enabled()) {quest::say("Something else entirely.");}#:: Etc.}}
Zone maps files will need to allow zone version support
.nav, .map, .wtr should exist for each version of the zone
All files should be standard on server install
Versions to be defined in the database
Examples: nektulos, lavastorm
Zone table customization to be covered below
Examples: Freeport, Highpass
Obviously AAs were added at each expansion. As AAs make use of spells, it would be incumbent upon the server operator to include any out-of-era spells in their server files.
aa_ability
Here we likely need a min/max expansion setting
Don't forget HT/LoH
aa_actions
aa_effects
aa_ranks
aa_rank_effects
aa_rank_prereqs
aa_required_level_cost
aa_timers
altadv_vars
Were AAs regrouped during our timeline? We may need an expansion setting on this expansion setting.
Accounts have an expansion setting on them that opens race / class combos. This should probably be examined at part of this development cycle.
account
account_flags
account_ip
account_rewards
Veteran rewards will need min/max expansion settings
sharedbank
Does this use the account expansion setting?
banned_ips
bot_command_settings
bug_reports
bugs
chatchannels
Chatchannels could make use of a rule setting to be turned on at the appropriate time for status < X.
class_skill
command_settings
db_version
discovered_items
eqtime
eventlog
fear_hints
gm_ips
hackers
ip_exemptions
level_exp_mods
logsys_categories
name_filter
perl_event_export_settings
petitions
profanity_list
races
reports
saylink
start_zones
Requires min/max expansion settings
starting_items
Requires min/max expansion settings
variables
veteran_reward_templates
These tables are all related to LDON. Presumably gating would occur with either zone access or npc_types for Adventures.
adventure_details
adventure_members
adventure_stats
adventure_template
adventure_template_entry
adventure_template_entry_flavor
The actual currencies were introduced on some timeline. Given that an item_id is assigned and that each currency is a table entry, likely no min/max expansion setting is required.
alternate_currency
Text for items. Item availability would be controlled by lootdrop and merchantlist entries; likely no min/max expansion setting is required.
books
Please review, Uleat.
No action needed.
buyer
character_activities
character_alternate_abilities
character_alt_currency
character_auras
character_bandolier
Is access to the bandolier currently observing expansion setting?
character_bind
character_buffs
character_corpses
character_corpse_items
character_currency
character_data
character_disciplines
character_enabledtasks
character_inspect_messages
character_item_recast
character_languages
character_leadership_abilities
character_material
character_memmed_spells
character_pet_buffs
character_pet_info
character_pet_inventory
character_potionbelt
Is access to the potion belt currently observing expansion setting?
character_skills
character_spells
character_tasks
character_task_lockouts
character_tribute
char_create_combinations
Uses existing expansion setting.
char_create_point_allocations
Requires min/max expansion settings
char_recipe_list
friends
keyring
Is access to the key ring currently observing expansion setting?
lfguild
player_titlesets
Please note the Client section above.
base_data
db_str
skill_caps
spells_new
NO expansion setting.
No action needed.
data_buckets
quest_globals
Certainly doors change throughout the various--keyitem(s) came and went, destination settings changed (IE tox vs toxxulia PoK book).
doors
Requires min/max expansion setting
Generally factions are gated by access to mobs. Some factions were added to npc_types as time went on, so under the NPC tables we'll want to look at min/max expansion settings. Noudess should probably confirm that faction_list_mod didn't change, especially.
client_faction_associations
client_faction_names
client_server_faction_map
custom_faction_mappings
faction_base_data
faction_list
faction_list_mod
faction_values
Graveyards were gated by access to zones. No min/max expansion setting required.
graveyard
Ground spawns, like fishing, certainly changed over time. A min/max expansion setting is required.
ground_spawn
Requires min/max expansion setting
Player table. No min/max expansion setting required.
group_id
group_leaders
The guild hall was added during DoN, some guild management tools were added during LoY.
guilds
guild_bank
guild_ranks
guild_members
guild_relations
Grids do not need expansion settings as the associated spawn2 point would gate the settings.
grid
grid_entries
Horses were introduced and evolved over time, but likely they would be gated through quest scripts and merchantlist entries.
horses
Player table. No min/max expansion setting required.
instance_list
instance_list_player
Player table. No min/max expansion setting required.
inventory
inventory_snapshots
inventory_versions
Items would be gated by lootdrop entries and merchantlists. Some consideration could be given to nerfed items, but ultimately the server operator should probably make that decision.
items
item_tick
World utility. No min/max expansion setting required.
login_accounts
login_api_tokens
login_server_admins
login_server_types
login_world_servers
Loot requires min/max expansion settings on multiple fronts:
global_loot
Requires min/max expansion settings
Example: Box of Abu-Kar
lootdrop
Requires min/max expansion settings
Example: Manastone
lootdrop_entries
loottable
Requires min/max expansion settings
Example: Manastone
loottable_entries
Mercenaries did evolve over time, however, are gated by zone/quest access.
mercs
merc_armorinfo
merc_buffs
merc_inventory
merc_merchantlist_entries
merc_merchant_templates
merc_merchant_template_entries
merc_name_types
merc_npc_types
merc_spell_lists
merc_spell_list_entries
merc_stance_entries
merc_stats
merc_subtypes
merc_templates
merc_types
merc_weaponinfo
Merchantlists certainly changed over time.
merchantlist
Requires min/max expansion settings
Example: any spell scrolls
merchantlist_temp
NPCs require min/max expansion settings on at least factions.
npc_emotes
npc_faction
Requires min/max expansion settings
Example: Primordial Malice
npc_faction_entries
npc_scale_global_base
npc_spells
npc_spells_effects
npc_spells_effects_entries
npc_spells_entries
npc_types
npc_types_metadata
npc_types_tint
proximities
Objects require min/max expansion settings--zones changed over time.
object
Requires min/max expansion settings
Example: LDON camps
object_contents
Pets would be gated by spell/aa access.
pets
pets_equipmentset
pets_equipmentset_entries
World utility. No min/max expansions required.
qs_merchant_transaction_record
qs_merchant_transaction_record_entries
qs_player_aa_rate_hourly
qs_player_delete_record
qs_player_delete_record_entries
qs_player_events
qs_player_handin_record
qs_player_handin_record_entries
qs_player_move_record
qs_player_move_record_entries
qs_player_npc_kill_record
qs_player_npc_kill_record_entries
qs_player_speech
qs_player_trade_record
qs_player_trade_record_entries
Player table. No min/max expansion settings necessary.
raid_details
raid_leaders
raid_members
Rules certainly changed over time--the question is whether or not this should be handled with various rule sets, or make use of a min/max expansion setting.
rule_sets
rule_values
Spawns certainly evolve over time.
respawn_times
This may require min/max expansion setting
spawn2
Min/Max expansion setting required.
spawnentry
spawngroup
spawn_conditions
spawn_condition_values
spawn_events
Spells evolved over time. Please see "Client" section above--spells will not get a min/max expansion setting.
auras
blocked_spells
damageshieldtypes
spell_buckets
spell_globals
spells_new
These would be gated by quest scripts.
completed_tasks
goallists
tasks
tasksets
task_activities
task_replay_groups
Player table. No min/max expansion settings.
timers
Titles are gated by character AAs / Skills / Class / Gender. Due to the inclusion of skills, titles would require min/max expansion since a tradeskill can surpass the lowest threshold, even in classic.
titles
Requires min/max expansion setting.
Tradeskills evolved over time and will require min/max expansion settings.
fishing
Requires min/max expansion setting
forage
Requires min/max expansion setting
tradeskill_recipe
Requires min/max expansion setting
tradeskill_recipe_entries
Some traps did evolve over time.
ldon_trap_entries
ldon_trap_templates
traps
Add min/max expansion settings
Tributes were added during GoD and evolved over time. Obviously merchantlist and lootdrop expansion settings would restrict item access to be used as tribute. Is this effected by world expansion setting?
tributes
tribute_levels
Zones evolved over time--access to zones as well as zone points. Min/Max expansion settings are required.
launcher
launcher_zones
zone
Requires min/max expansion setting (rather than using status / level)
zoneserver_auth
zone_flags
zone_points
Requires min/max expansion settings
Example: highpass vs. highpasshold
zone_server
if IsClient():softcap = 350if GetClass() == WARRIOR and GetLevel() > 50:softcap = 430if (GetClass() == PALADIN or GetClass() == SHADOWKNIGHT or GetClass() == BARD) and GetLevel() > 50softcap = 403if (GetClass() == RANGER or GetClass() == ROGUE or GetClass() == MONK or GetClass() == BEASTLORD) and GetLevel() > 50softcap = 375​cs_mod = 0cs_rank = GetAA(ComabtStability)if cs_rank == 1:cs_mod = 2elif cs_rank == 2:cs_mod = 5elif cs_rank == 3:cs_mod = 10​softcap = softcap + (softcap * cs_mod / 100)​if GetAA(PhysicalEnhancement):softcap = softcap + (2 * softcap / 100)​if bonus <= softcap:return bonus​if IsWarrior(): # melee, not priest/castersreturn (bonus - softcap) / 12 + softcap​return softcap # hardcapped for everyone else