Updated Project PEQ Expansions Concept Doc (markdown)

Logan
2019-01-21 19:02:34 -08:00
parent 68e14a8a11
commit 4f1a76f117
+60 -1
@@ -2,4 +2,63 @@
This document describes the challenges and solutions to creating a dynamic-expansion supported PEQ baseline. This document describes the challenges and solutions to creating a dynamic-expansion supported PEQ baseline.
## Extend Expansion bit support ## Areas of Concern
- Load data based on expansion: Add a new expansion TINYINT(4)? to many tables to allow dynamic loading.
- aa tables: This is handled I believe with db_string? Verify
- account: This stores the expansion value per account, used by other tables.
- adventure_template: Since multiple expansions add different styles of adventures, add support for this.
- char_create_combinations: expansions_req contains this data
- doors: Does this need expansion? I'm leaning no, zone will determine
- global_loot: Does this need expansion? I'm leaning yes, as itemization should be determined with expansion
- items: may need expansion to ensure merchants are not populated with out of era items
- spawn2: need expansion to disable spawning of certain npcs
- spells_new: needs a way to discern expansion for allowing certain spells.
- starting_items: perhaps just honor if an item is of a proper expansion or not?
- titles: may need expansion?
- tradeskill_recipe: needs expansion
- zone: will not be able to zone into an area unless you are GM status or have the expansion enabled.
- Quests
- Perhaps add a feature to prefix a quest file with an expansion to enable/disable it? Especially useful for things like player.pl/player.lua.
### Combat
- https://github.com/mackal/EQMechanics/wiki
```[PM] mackal: they used to have hardcaps on mitigation
[6:55 PM] mackal: which was easy to hit during kunark as a plat toon
[6:55 PM] mackal: plate
[6:56 PM] mackal: they added a softcap, then shield going over
[6:53 PM] mackal: combat system is basically the same
[6:53 PM] mackal: mostly just a change in mitigation calcs
[6:56 PM] mackal: then it basically stayed the same
```
```cpp
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
```