Commit graph

259 commits

Author SHA1 Message Date
zergtmn
02c1bc6557 [11217] Drop effect indexes from *_addon.auras field 2011-03-05 01:50:49 +05:00
SilverIce
724092d9e5 [11193] Optimize visibility update and AI notification code. Optimization decreases amount of visibility and AI notification operations in 8-10 times, and as a result, lowers CPU usage by 30-40%
You need to update your config file, new "Visibility.RelocationLowerLimit" and "Visibility.AIRelocationNotifyDelay' options added

Special thanks to Ambal for code hints and advices
Thanks to Undergarun and kero99 for making tests
2011-02-22 02:37:08 +02:00
VladimirMangos
8feaf211f1 [11168] Use MapPersistentState for access to Pool System dynamic data.
* Direct store pool system dynamic data in sPoolMgr replaced by
  shared pool system data object (for all non instanceable maps)
  into WorldPersistentState, and own copies of pool system data
  object in DungeonPersistentState/BattlegroundPersistentState.
  This let have pools with object at many non-instanceable maps,
  and single map pools with unique state for each instance.

* Avoid direct global grid data modify from pool system, and use for this also
  recently added local for MapPersistentState grid spawn data.

* Implemented proper API for update pool system data in MapPersistentStates
  from GameEvent system.

* Initialize pool system state at MapPersistendState creating.
  For shared pool system state for non-instanceable maps initilized at first map state
  creating.

Now pool system propertly work in instance also!
2011-02-15 14:40:56 +03:00
VladimirMangos
04c21c95d3 [11159] Remove now redundent GetDBTableGUIDLow support.
Now any creatures/gameobjects loaded base at DB data
in non-instanceable/instanceable maps always have same guid
as in DB data.

* Also remove useless by same reasons MaNGOS::GameObjectWithDbGUIDCheck
2011-02-14 07:20:09 +03:00
Darkknight900
4709c7ecb3 [11151] Fixed typo in AddCreatureToRemoveListInMapsWorker.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2011-02-12 21:09:00 +03:00
VladimirMangos
cf685da47a [11139] Use for Creature/GameObject local per-map guids
* Creature/GameObject guid generators moved to Map
* For avoid wrong not converted cases generic function in ObjectMgr has been replaced by
  specilized guid generation function like sObjectMgr.GeneratePlayerLowGuid().
  This let catch all cases that need update in custom code or scripts.
* Drop many ObjectAcessor.h now dead code. This is also make mangos more thread safe.
* Restore one more time unix build broken in prev. commits.

Note: many cases when something not wotk in instance but work in continents
possible magicly start work after this commit. For example, some gm commands.
From large systems that need more chnages for start work in full power in instances
can be referecned pool/gamevent system. Last need just small hacks drop changes but
in will addded in independent commit.
2011-02-12 09:52:16 +03:00
VladimirMangos
9a8a74c2ad [11138] Make sure GameEvent/Pool systems work with static instance object guids
* Pool System for correct full power work in instance need implement
  MapPersistentState local pool system state for instanceable maps.
  Unit this not implemented pool system must avoid creating/despawn/touch
  instance map objects. Currently this work because instance map object use
  dynamic generated guids and "invisible" for Pool System, with explcitly forbiden
  for it spawn directly new objects. Code changes add explicit checks for preserve
  this way work for time when instance object will use static guids. When local pool
  state storing in persistent state this protection checks will possible drop.
  Non-instanced working cases converted in local map object search calls.

* GameEvent Systems currently have code that work correctly only with objects at
  non-instanced maps by same reasons as Pool System. But in different Pool System
  case game event activate/deactivate expected applied to _all_ object copies in all
  existed instanceable map copies. Code modified for work in expected way.
  Direct spawn disabled for instanceable maps until swith to static guids.
  Despawn code will make affect only for non-instanceavble maps unit swithc to static guids as-is.
  This is preserve current code working result.

* Convert last case usage global creature search in aura code to map local case.
  Player case also possible not need now after including caster damage/heal mods
  part to aura base damage/heal. In any cases player case preserved in old way work.

NOTE: this last places dependent from global creature/gameobject guid search so look like this
      make possible start direct work to switch instances use static guids instead dynamic generated
2011-02-12 07:24:04 +03:00
VladimirMangos
5858aae4d9 [11136] Add Creature::FillGuidsListFromThreatList for safe guid iteration from threat list.
Often not 100%-safe iterate by live threat list because called code can modify threat list (reset for example).
2011-02-11 21:37:12 +03:00
VladimirMangos
3bfe4bbd3b [11134] Make GCC happy and restore build at *nix. 2011-02-11 18:15:50 +03:00
VladimirMangos
da1b616312 [11133] Implement template functions for call functor for all Map/MapPersistentState with some map id. 2011-02-11 04:05:18 +03:00
VladimirMangos
108feb993d [11127] Rename src/game/InstanceSaveMgr.* -> src/game/MapPersistentStateMgr.* 2011-02-10 05:35:07 +03:00
VladimirMangos
dde16bc48c [11126] Rewrite InstanceSaveMgr related code.
* 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
2011-02-10 05:20:56 +03:00
VladimirMangos
6cfa64db97 [11123] Move respawn data to InstanceSave.
This make prev commit more useful.
In future InstanceSave also planned store local pools state.
2011-02-09 06:09:32 +03:00
NoFantasy
e3387ec6b0 [11120] Remove all auras at creature respawn.
This will remove death persistent auras and AI does no longer need to remove any such auras at respawn manually (GM will still see the death persistent aura all until creature respawn).

Signed-off-by: NoFantasy <nofantasy@nf.no>
2011-02-08 21:21:08 +01:00
VladimirMangos
f73868a703 [11117] Allow for non-instancable maps have InstanceData and instance scripts.
* 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.
2011-02-08 04:15:13 +03:00
NoFantasy
3251f39684 [11081] Beautify some SQL log queries and remove not needed enclose character
Signed-off-by: NoFantasy <nofantasy@nf.no>
2011-01-29 10:40:36 +01:00
mns
d699d0973b [11068] Prevent infinity creature fall at fail get heght.
Also fix wrong use INVALID_HEIGHT as height value.
It must be used only for _check_ height, and DON'T must use as real height value.
Must fix some wrong height check results.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2011-01-25 01:17:53 +03:00
Schmoozerd
54cb8f1a63 [11032] Implement CREATURE_FLAG_EXTRA_AGGRO_ZONE.
This let control zone wide aggro in DB data instead
need special script code.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2011-01-18 13:48:46 +03:00
XTZGZoReX
2d87d68b4e [10626] CONFIG_BOOL_SAVE_RESPAWN_TIME_IMMEDIATLY -> CONFIG_BOOL_SAVE_RESPAWN_TIME_IMMEDIATELY 2011-01-16 18:47:52 +01:00
VladimirMangos
a0e298179c [10952] Don't use singleton to access static functions. 2011-01-03 14:55:55 +03:00
VladimirMangos
bf0ecf6e71 [10947] Update copyright notice for 2011 year. 2011-01-01 20:33:43 +03:00
VladimirMangos
d38df50a7e [10932] Imporvments gameevent creature morphing.
* 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.
2010-12-29 01:38:49 +03:00
VladimirMangos
3ff5ff2e6f [10929] Move game event creature morphing code to Creature::UpdateEntry
* This is allow have more clean logic in feature work.
* Prevent modify static creature data.
2010-12-28 22:52:40 +03:00
NoFantasy
f8921dbca8 [10928] Uncomment all races in enum Races
Race can also be creature race and needed for future implementation of spells.
RACE_UNDEAD_PLAYER renamed to more proper RACE_UNDEAD

Signed-off-by: NoFantasy <nofantasy@nf.no>
2010-12-28 19:53:01 +01:00
zergtmn
d400f00224 [10927] Prevent null-pointer dereference in AI calls 2010-12-28 22:09:25 +05:00
Ambal
b11820593c [10924] Send time diff between Update() calls for object - should help with mob respawn on inactive grids etc. Based on patches by VladimirMangos and cipherCOM. All issues from previous patches should be finally fixed now.
Signed-off-by: Ambal <pogrebniak@gala.net>
2010-12-27 22:27:20 +02:00
zergtmn
72b1d30a1c [10923] Cleanup some magic numbers 2010-12-27 19:04:59 +05:00
zergtmn
0d6f990e4e [10912] Move scripting related functions from ObjectMgr to ScriptMgr 2010-12-24 00:23:37 +05:00
VladimirMangos
4a7638c80e [10905] Fixed vendor templates work.
* Avoid unexpected errors at template loading for shared templates for many npc.
* Really use vendor template in work.
2010-12-21 19:39:43 +03:00
VladimirMangos
1d8f222621 [10867] Implement templates for trainer spell data in npc_trainer_template.
New table let avoid duplication similar trainer spells for different trainers.
2010-12-13 16:39:53 +03:00
SilverIce
d560503a03 [10819] Fixed creature's speed recalculation, forgotten DB speed mods are used now
Also properly update speeds at creature entry change(in case there are aura speed bonuses), thanks to Vladimir for pointing
2010-12-03 04:11:52 +02:00
NoFantasy
afe50cd549 [10797] Check for valid sheath state in creature addon at startup.
Signed-off-by: NoFantasy <nofantasy@nf.no>
2010-11-30 09:42:51 +01:00
VladimirMangos
0c8a7c3826 [10788] Replace bytes in single field bytes2 by independent fields for creature_addon. 2010-11-27 23:56:08 +03:00
VladimirMangos
cc0655a402 [10782] Use Team enum types in all appropriate cases and catches bug in result fix.
* 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.
2010-11-25 01:11:17 +03:00
VladimirMangos
ce09cb70a2 [10769] Fixed trainer flags uses for pet trainers.
* Not exclude trainer flags for client for pet trainers.
* Not report error for pet trianers empty spell lists.

TODO:
* Add check for redundent trainer spell data for pet trainers at server startup
* Need hide train gossip option for pet trainers, but currently without it gossip
  window not open for pet trainer by some unknown reason.
2010-11-22 00:34:52 +03:00
VladimirMangos
12b80fec68 [10747] Some other aura caster object guid use cases. 2010-11-19 18:36:43 +03:00
Ambal
f67d89f109 [10727] Map system re-engineered. Special thanks to Blueboy for tests.
Signed-off-by: Ambal <pogrebniak@gala.net>
2010-11-16 21:08:28 +02:00
VladimirMangos
3b0e926788 [10717] Revert "[10716][10688] New version of patch for send real diff from last update."
This reverts commit 8398a55fa274471daae115e00c627b299a3fdbbd.
This reverts commit 06e2d6859ba3d7fd47be72c23a64e68ae039701f.
2010-11-10 06:29:49 +03:00
VladimirMangos
534ff29f15 [10711] Check localization data for existance main table entres.
Data will skipped for nonexistent entries, and reported with
disabled LogFilter_DbStrictedCheck filter.
2010-11-09 20:26:59 +03:00
VladimirMangos
d2b3981631 [10695] Cleanup some death state enums usage. 2010-11-08 02:13:25 +03:00
VladimirMangos
10d3d3ce24 [10692] Fixed some GCC warnings and code errors.
Thanks to freghar for provide cleaned list of warning messages.
2010-11-07 21:30:55 +03:00
VladimirMangos
e219ee99bb [10688] New version of patch for send real diff from last update.
In new version last update time stopred for specific Cell that store all world objects
placed in it. All objects of Cell updated (or not updated) in same time.

Original version provided by ciphercom.
2010-11-06 22:59:54 +03:00
VladimirMangos
0847d4c8cd [10683] Revert "[10677] Send to creature/etc Update call real diff from last update and use it."
This reverts commit 10784a8c7cc81c468b5411e973d36ecf31de9603.

Main reason: impossibility for me as commiter test problem and fix all corner cases problems.
2010-11-05 19:54:31 +03:00
VladimirMangos
0bf8b0aa79 [10679] New table npc_vendor_template for comon item data for diff vendors.
In vendor list show own vedor items + template ites if any.
Vendor template item lists selected by id stored in creature_template.vendor_id
2010-11-04 20:22:47 +03:00
cipherCOM
555c1a9094 [10677] Send to creature/etc Update call real diff from last update and use it.
Now in case when creature/etc some tices not updates in result stay
in not active (no near players or active objects) cell some important
timers (corpse decay, summon timers, group loot expire, aura durations, etc) will
updates at real diff time from last prev. update call.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>

For some systems added exclude use real diff time because current limitations
like move generators. So its stay use last tick diff and considered freeze and
skip all time while creature in not active map part.
2010-11-03 07:07:13 +03:00
VladimirMangos
a32d68febd [10671] Convert some Unit owner/etc guids to ObjectGuid way. 2010-11-01 13:19:50 +03:00
NoFantasy
81d3368e29 [10652] Allow set pvp flags from creatures *_addon data
Signed-off-by: NoFantasy <nofantasy@nf.no>
2010-10-27 09:49:55 +02:00
Schmoozerd
edbb840103 [10646] Preserve creature dynamic flags at UpdateEntry
Signed-off-by: NoFantasy <nofantasy@nf.no>
2010-10-26 13:23:46 +02:00
VladimirMangos
c955941b55 [10627] Use ObjectGuid for player's selection and unit's target 2010-10-20 08:19:48 +04:00
DasBlub
fc5dd54f37 [10612] Revert "[10611] Made some values const"
Reason: It makes no sense to make a local variable const.

This reverts commit 49e3184d69056738701bc15d9b7f982bf11d7bbc.
2010-10-15 22:29:10 +02:00