* Enable 'achievement_criteria_requirement' support for achievement criterias of type 41 (ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM)
* Drop unneeded check for max type (this is done in default case in switch)
Signed-off-by: Schmoozerd <schmoozerd@scriptdev2.com>
* Rename barGoLink -> BarGoLink as expected by mangos code style
* Add uint32/uint6 constructor versions for BarGoLink,
and remove lot casts required before for BarGoLink use
This prevent lost detected achievement criteria update or have unexpected criteria update event
at character data loading like skills/spells/itemts/etc.
Achievment system state load by self not dependent from other character data (checked after
all data loading in CheckAllAchievementCriteria() call.
Note: PostgreSQL does not have prepared statements implemented using native APIs.
Huge thanks to Undergarun, kero99 and Vinolentus.
Signed-off-by: Ambal <pogrebniak@gala.net>
* New table added for non-instanced maps (except BG/arena):
- `mangos`.`world_template` (script mapping to non instanced data)
- `characters`.`world` (saved script data string storage)
* InstancedData created for any map types including BGs/arenas, that allow have scripts
state for any maps, but BG/arena instance data not saved.
Note: Possible structures will renamed later for clarify apply to any type maps,
but avoid for now for simplify changes and hard affect to script library sources.
* At game events table loading checked not only allowed event ids range but also event existance.
* Renamed CONDITION_ACTIVE_EVENT -> CONDITION_ACTIVE_GAME_EVENT
* Implemented new conditions:
- CONDITION_NOT_ACTIVE_GAME_EVENT
- CONDITION_ACTIVE_HOLIDAY
- CONDITION_NOT_ACTIVE_HOLIDAY
Recomended use holiday version where possible as more portable.
* Fixed wrong arenaid use at leave arena queue.
* Fixed memory lost and etc at not virtual EndBattleground call
* Fixed crash at arena join with fake data from client.
* Code cleanups.
ASSERT hard use in predictable way because diff. 3rd party libs code
redefine it inf different ways and hard make sure that used in end
of mangos define version. This is real detected problem make some
expected assert checks ignored and so bugs not detected as expected from code.
In addition made related changes:
* Common.h header expected to be first include in any src/game/header except most simple cases.
* Related FILE.h header expected to be first include in FILE.cpp
* Fixed some absent includes and type forwards for safe build without PCH enabled.
* Avoid using MANGOS_ASSERT in src/framework code
(based on Schmoozerd's repo commit 1e8c842)
Also drop `achievement_criteria_requirement` data use at start timed achivement:
its will be checked at criteria update (and complete) case. So wrong criteria will
started maybe (timer set but always fail - progress not updated.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
* Player::StartTimedAchievementCriteria can be used for activate timer
for specific explicitly starting timed achievement by timedRequirementId
in script.
* for ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST this done in core.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
In result wrong check characters complete
exalted reputation achievements at create or any reputation change event
with negative reputation. Fix prevent new cases but not do anything with
already wrongly recieved ahcievements.
Also:
* Avoid use PROGRESS_SET at normal achievment criteria progress update
becase achivement/counter in normal way can't decrease.
* At achievment criteria progress loading check that progress counter less
or equal max counter value.
* .achievement - let see achievement state and list criteria with progress data.
It provide criteria ids/shift-links for other commands.
* .achievement add - let complete achivement (set all criteria progress to max) with related events.
* .achievement remove - let reset achievement criteria progress and undo complete state for achievement.
Command also partly remove rewards (title part).
* .achievement criteria add - let increase criteria progress at specific amount or to complete state
* .achievement criteria remove - let reset/descrease criteria progress and undo criteria and related achivement complete state if need.
This is fist part for achievement related command set.
Edition commands will added in some later commits when ready.
Two command added:
* .lookup achievment $partname - show fit achievements
(id, shiftlink, complete date for selected player).
shiftlink included similar data as generated by client for achievement shift-link
(complete state, complete date, marked completed criteria).
* .character achievements [$playername] - show completed achievements for selected player
* Make possible have debug output if build in release mode.
* But preserver current optimization in avoid debug output args
calculation if debug ouput disabled if done using DEBUG_LOG
* Implement in same way BASIC_LOG, DETAIL_LOG. Recommended use
its instead explicit access to sLog
* Use variadic macros for DEBUG_LOG and other new defines.
All supported VS/GCC have its support as C++ extension.
* Add DEBUG_FILTER_LOG and semilar defines for filered log output and use its.
* Also move recent added debug output for transport events under LOG_FILTER_TRANSPORT_MOVES
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
Also add check to prevent have NONE gender with some other for same entry
in `achievement_reward` and `locales_achievement_reward`.
Also make more wide set achievement type criterias expected requirement in DB table.
Original patch in achievement call part provided BudIcePenguin.
Prepared to mangos sources by Burned@ru-mangos.ru
Implemented new achievement criteria requirement:
* ACHIEVEMENT_CRITERIA_REQUIRE_S_EQUIPED_ITEM_LVL (item level and item quality equiped in specific slot)
Implemented suppoprt achievement types:
* ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM (required DB data)
* ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL (required DB data)
Also achievment types used only for statistics:
* ACHIEVEMENT_CRITERIA_TYPE_CREATE_AUCTION
* ACHIEVEMENT_CRITERIA_TYPE_WON_AUCTIONS
* ACHIEVEMENT_CRITERIA_TYPE_MONEY_FROM_VENDORS
* ACHIEVEMENT_CRITERIA_TYPE_GOLD_EARNED_BY_AUCTIONS
* ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM
* ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM