Design Considerations¶
Client¶
- 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???
Quest Scripts¶
- 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.
}
}
World¶
- 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
Database Tables¶
AAs¶
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.
Account¶
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?
Admin¶
- 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
Adventures¶
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
Alternate Currency¶
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
Books¶
Text for items. Item availability would be controlled by lootdrop and merchantlist entries; likely no min/max expansion setting is required.
- books
Bots¶
Please review, Uleat.
Buyers¶
No action needed.
- buyer
Characters¶
- 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
Client Files¶
Please note the Client section above.
- base_data
- db_str
- skill_caps
- spells_new
- NO expansion setting.
Data Storage¶
No action needed.
- data_buckets
- quest_globals
Doors¶
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
Factions¶
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¶
Graveyards were gated by access to zones. No min/max expansion setting required.
- graveyard
Ground Spawns¶
Ground spawns, like fishing, certainly changed over time. A min/max expansion setting is required.
- ground_spawn
- Requires min/max expansion setting
Groups¶
Player table. No min/max expansion setting required.
- group_id
- group_leaders
Guilds¶
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¶
Grids do not need expansion settings as the associated spawn2 point would gate the settings.
- grid
- grid_entries
Horses¶
Horses were introduced and evolved over time, but likely they would be gated through quest scripts and merchantlist entries.
- horses
Instances¶
Player table. No min/max expansion setting required.
- instance_list
- instance_list_player
Inventory¶
Player table. No min/max expansion setting required.
- inventory
- inventory_snapshots
- inventory_versions
Items¶
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
Loginserver¶
World utility. No min/max expansion setting required.
- login_accounts
- login_api_tokens
- login_server_admins
- login_server_types
- login_world_servers
Loot¶
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¶
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
Merchants¶
Merchantlists certainly changed over time.
- merchantlist
- Requires min/max expansion settings
- Example: any spell scrolls
- merchantlist_temp
NPCs¶
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¶
Objects require min/max expansion settings--zones changed over time.
- object
- Requires min/max expansion settings
- Example: LDON camps
- object_contents
Pets¶
Pets would be gated by spell/aa access.
- pets
- pets_equipmentset
- pets_equipmentset_entries
Query Server¶
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
Raids¶
Player table. No min/max expansion settings necessary.
- raid_details
- raid_leaders
- raid_members
Rules¶
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¶
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¶
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
Tasks¶
These would be gated by quest scripts.
- completed_tasks
- goallists
- tasks
- tasksets
- task_activities
- task_replay_groups
Timers¶
Player table. No min/max expansion settings.
- timers
Titles¶
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¶
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
Traps¶
Some traps did evolve over time.
- ldon_trap_entries
- ldon_trap_templates
- traps
- Add min/max expansion settings
Tributes¶
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¶
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
Combat¶
if IsClient():
softcap = 350
if GetClass() == WARRIOR and GetLevel() > 50:
softcap = 430
if (GetClass() == PALADIN or GetClass() == SHADOWKNIGHT or GetClass() == BARD) and GetLevel() > 50
softcap = 403
if (GetClass() == RANGER or GetClass() == ROGUE or GetClass() == MONK or GetClass() == BEASTLORD) and GetLevel() > 50
softcap = 375
cs_mod = 0
cs_rank = GetAA(ComabtStability)
if cs_rank == 1:
cs_mod = 2
elif cs_rank == 2:
cs_mod = 5
elif 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/casters
return (bonus - softcap) / 12 + softcap
return softcap # hardcapped for everyone else