* For better fit name to related map type class InstanceMap renamed -> DungeonMap.
This clarify usage Instanceable()/IsDungeon() because BG/Arenas maps also instanceable maps.
* InstanceSave have many code related to only DungeonMap case, so it replaced by 3 new classes:
- MapPersistentState as base class, used for non-instanceable maps (continents and some other) (!Instenceable())
- DungeonPersistentState subclass of MapPersistentState, used for DungeonMap states (IsDungoen())
- BattlegroundPersistentState subclass of MapPersistentState, used for BattlegroundMap states (IsBattleGroundOrArena())
Now all dungeon resets code moved to subclass and all player/gpoup bound functions/structures also use it.
* Map::GetInstanceSave renamed to Map::GetPersistentState and DungeonMap have specialized version
return DungeonPersistentState (same pointer in fact with proper subcalss type)
* InstanceResetScheduler renamed to DungeonResetScheduler
* 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.
* New comamnds mirror related normal sedn commands:
- send mass items
- send mass mail
- send mass money
* Instead player name it expect or numeric racemask or textual race/team name or 'all'.
* Use Set* names for cases when function replace old value by new (instead Add*)
* Prevent hidden MailDraft copy create becase if draft have items its can't be just shared
and need preoprtly cloned, but item close is high price operation (guid use, DB tiuched and etc)
So this must be explictly operation. In next commits will be added clone function for this.
* Some MailDraft overwrite by assign cases rewrited to more clean way.
- Script library presence is now optional.
- Some script hooks have new names. Scripting libraries need to be adjusted accordingly.
Signed-off-by: zergtmn <zerg@myisp.com>
* Table `game_event_model_equip` renamed to `game_event_creature_data`
* Table allow now store same creatures for different events, BUT
expected that related events no active in same time.
* Added possibility switch entry at gameevent time.
This let have diff factions/loot and etc for creatures.
* Added possibility cast spells at gameevent start/end.
Exist some spells that expected casted to creature at gameevent start
for model replace, and for animation in other cases.
Note: `game_event_creature_data`.`modelid` field posisble will removed soon in fowor related spell use.
Ofc, when spells will implemented in core.
Fix some bugs when all uint32 field modified instead byte parts.
In some cases added byte way set/get but code line itself need additinal reserch/fix
for use correctness in line pos.
* 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.
This can affect correct result in cases big guid values
(out of range for possitive part of int32 range) at x86 platforms.
Some other cases addded in addition to original patch fixes
where %d wrongly/unsafe used for unsigned values.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
* Implment vendor at show replace BoA item with reputation requirement
by identical item without rep. reqs for player that fit this requirements
of original item.
* Table also can be used for store item convertion data form one team items
to similar other team items. This case not impement but added function easy
used for it.
* Note: strict single convert for item not created problem for both way use:
item converted for same team or all, can't be original item for conversion to
another team.
Added ObjectGuid version Aura::GetCasterGuid()
But for prevent big problen with backporting AuraHolder
to mangos-0.12 in most cases still used old uint64 version
Aura::GetCasterGUID.
Recommended use new version where possible in clean way
as done for some cases in commit already.
Also other classes have been affected, due to the use of search&replace.
This will probably break some patches and 3rd party libraries, so make sure to update them if required.
Thanks to Phille for the original idea and patch!
Also
* Fixed some amount wrong uses low guids as full player guids.
* Add private without body ObjectGuid(uint32 const&) for catch wrong assigns low guids to ObjectGuid.
In some cases need assign "0" guid, then use ObjectGuid() instead.
* Fixed .pdump commands work.
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.
* Fixed crash at absent optional literal. Thanks to MysteriousSouL for reproting.
* Converted mode commands use new way parsing functions with fixing posible crash cases.
Also
* Better single | detection as non-link case (doubled by client)
* Commands .pdump now allow quoted filename (usefull if filename path include whitespaces)
* Commands .debug update and .modify bit removed as redundent
* Command .debug getvalue now can output values in float/int/hex/bitstring formats
* Command .debug setvalue now ca accept values in int/float/hex/bitstring formats
* Command .debug mod32value renamed to modvaue and can add int/float or apply hex mask
(in 3 modes: |= &= &=~ ) to value in update field
* Command .debug moditemvalue added similar .debug modvalue for item case.
* Command .npc set movetype now propertly update spawned in world creature state.
* Command .modify spell renamed to .debug spellmods and restored to working state.
* Commands .account password and .account set password now allow use quoted strings
for passwords and then now possible set from chat/console passwords with white spaces.
* Many commands converted to new functions without modify functionality
except better error detection in some cases at wrong command syntax use.
* Also fixed warnings in reload commands after prev. chat commit. Thanks to SkirnirMaNGOS for reporting.
* Now can be used as quotes any strings with symbols ' " [] around.
For example can be used: .additem [Tourch] or .additem "Tourch".
And in similar cases wher before [] or "" only canbe used in commands.
* New functions support propertly extraction shift-links as optional first args
* Also added more safe functions for extraction int32/uint32/float values.
For more wide use new functuons specialized extraction functions also need chnaged to same way work.
This is goal for future work at this part code.
We in any case modify args string content at parsing in commands,
so cast it to char* early. This let avoid lot later casts.
Some other code style exist in related code.
* all teleport commands support new areatrigger and areatriger-target shiftlinks
* .go trigger now let select areatrigger or areatrigger target as teleport point
* New commands:
.trigger - show detail info about areatrigger including all requirements
for teleport with shift-links to items/keys/quest
.trigger active - show all currently activated by character areatriggers
.trigger near - show near areatriggers
* .lookup item now show [usable] postfix if item can be used/equipped by selected character.
* Database table needs data for each faction that should give spillover to other faction(s). One faction may give spillover to max 4 other spillover factions.
* The spillover rate is multiplied with the points after bonuses and reward rate is set, Rate is given as: 0.5 for 50% gain, -1.0 for 100% loss, etc
* It is possible to restrict spillover faction by rank. If player has a higher rank with the spillover faction given in database, no spillover will be given towards this faction
Signed-off-by: NoFantasy <nofantasy@nf.no>
* Field `auctioneerguid` replaced by `houseid` and table reanmed to `auction`
(it list auctions and `id` is auction id).
* Update related code.
* SQL update fill `houseid` field by old `auctioneerguid`
BUT: SQL update expect that you world DB named `mangos`.
If this not true for your case you need modify SQL update BEFORE APPLY
in 2 placed in part "mangos.creature AS c, mangos.creature_template AS ct"
* Another small possitive result: now possible easy select auctions related
to some auction store (1-3 is one team actions, 4-6 another team auction,
and 7 is neutral auction store for both teams