Автор: Schmoozerd
+ contrib/convertConditions/ConvertConditions.py
+ contrib/convertConditions/README.txt
m sql/mangos.sql
+ sql/updates/11964_01_mangos_conditions.sql
m src/game/Chat.cpp
m src/game/Chat.h
m src/game/CreatureEventAI.cpp
m src/game/CreatureEventAIMgr.cpp
m src/game/Level3.cpp
m src/game/LootMgr.cpp
m src/game/ObjectMgr.cpp
m src/game/ObjectMgr.h
m src/game/Player.cpp
m src/game/SQLStorages.cpp
m src/game/SQLStorages.h
m src/game/World.cpp
m src/shared/revision_nr.h
m src/shared/revision_sql.h
[11964] Implement new conditions system
Tree-like design idea by Faramir118, thanks for that!
* Add `conditions` table to store conditions.
* REPLACE current handling of conditions for the *_loot_template tables
Convert the old conditions in *_loot_template to the new system by SQL-Queries
* ADD support for new conditions to gossip_menu and gossip_menu_option.
If for these tables no condition_id (new system) is provided, the old conditions will still be used
* Add a small helper python script to contrib/convertConditions, see README there for details
* Add new command to reload the `conditions` table (.reload conditions)
* Add two Meta-Condition types CONDITION_AND (-1) and CONDITION_OR (-2) which are used as:
value1 (as condition_entry) AND / OR value2 (as condition_entry)
With these meta-conditions it is possible to create tree like and very complicated combined conditions (like HasAura && (HasItem || HasQuest))
NOTE about conversion:
For easier convertion all the old table data is still preserved, but will be removed eventually (within a circle of the moon approximately)
The python script will not create an optimal initial fill of the `conditions` table. You might want to tweak it manually or suggest some optimized algorithm :)
Signed-off-by: Schmoozerd
Подробнее...