Commit graph

498 commits

Author SHA1 Message Date
VladimirMangos
e583f543a2 [9066] Small cleanups in spell code.
Mostly avoid unclear "lost" break case
2009-12-25 21:05:11 +03:00
VladimirMangos
a1bba62e88 [9056] Not exclude real caster from TARGET_ALL_ENEMY_IN_AREA_INSTANT.
Not found cases when this need for affected case (without 27/28 effects)
2009-12-24 15:54:14 +03:00
VladimirMangos
d36281f315 [9047] Support triggered spells that have cast time.
Like spell will placed in unit event list for cast at next tick or later dependent from cast timer.
Before all triggered spell ignore cast time and casted explcitly from related cast caller code.
This must fix some spell work like 17086 in damage apply time part and also in preventing possible
stack overflow because this spell triggering by chain 19 spell casts from each other.

This also exclude from triggered arg of CastSpell function meaning that this cast will instant alsways.
So triggred arg now meaning only that this seppl casted nit from player side and then not send
in some cases cast info to client if not vosula effect expected.
2009-12-23 12:38:06 +03:00
pasdVn
f1850c9ebe [9046] Correctly send channeling start/update packets to clients
(cherry-picked from commit 1bc38f7)

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2009-12-22 21:03:28 +03:00
VladimirMangos
15de428242 [9037] Cleanups in spellmode apply code.
* Add constructores for spellmode creating instead explcit fields init
* Use uint32 for family mask 2 instead unneded uint64

Also drop one from manual applies for uno-existed now spell.
2009-12-20 19:47:14 +03:00
VladimirMangos
9e18fc5745 [9035] Attempt make more fast and less hackish spell target checks
* Enable server side recheck clear negative to friend or positive to enemy casts that already checks at client side
* Use more fast way check in similar cases for non-players, and fall back to old way in unclear (for while at least)

Please report if some spell stop propertly casted at friends/enemies.
2009-12-20 03:29:36 +03:00
VladimirMangos
6b78ed534d [9020] Re-implement 1680 (and triggred spell for 46924) in less hack way. 2009-12-18 06:20:35 +03:00
Sarjuuk
393ab4a7ca [9018] Implement aditional form specific bonus for 16857.
SQL data prepered by MrLama.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2009-12-18 03:03:29 +03:00
balrok
0502de55af [9013] shapeshift spells
some shapeshift forms will give the player spells
so we need to tell the server that the player has those new
spells else he can't cast them since the server is thinking the player is
cheating

ps forms with spells:
FORM_GHOUL
FORM_THARONJA_SKELETON
FORM_TEST_OF_STRENGTH
FORM_BLB_PLAYER
FORM_TEST
FORM_ZOMBIE

--
so this mostly won't affect any ingame experience.. but good to have this
feature anyway.. :)

also changed errormessage if player has no reagents for spell..
thx to nofantasy
2009-12-17 14:02:59 +01:00
freghar
a13fa7f873 [9006] Trailing whitespace cleaning
Sorry for a (bit) delayed commit.

Signed-off-by: freghar <compmancz@gmail.com>
2009-12-16 15:38:08 +01:00
VladimirMangos
457807eb80 [8996] Implement 2 items effect from itemsets 803/-33
Original patch provided by Splinter.
2009-12-16 00:51:32 +03:00
VladimirMangos
be79375b56 [8994] Re-implement remove auras from channeled target
* Old way have problem with auras that have last tick avent at one from caster/target:
  depndent from auras update order in caster/target pair ti can wrongly not triggered.
* Fxied possible problem with remove same spell non-caster auras at target/caster at spell cast cancel
* Also fix memory lost in old deleted auras cleanup.
2009-12-15 18:50:45 +03:00
VladimirMangos
1d608c482f [8978] Fix wrongly apply weapon damage mods to broken weapon. 2009-12-12 21:12:43 +03:00
qsa
aad9e12a70 [8958] Inlcude 15407 and ranks damage in talent 15286 affect.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2009-12-09 21:26:21 +03:00
Maxxie
0ec0f34be7 [8956] Implement aura SPELL_AURA_ALLOW_ONLY_ABILITY.
(cherry picked from commit f4d1e05)

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2009-12-09 16:01:08 +03:00
qsa
ffca4301d0 [8944] Use DBC data for summon effect functionality.
Also some more local fixes:
* Alow multiply same type guardians req. for some spells.
* Apply spell duration mods to summons

Many summon spells must start work.

Great work qsa! :)

Thanks The_Game_Master for updaing patch to recent sources.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
2009-12-07 23:40:10 +03:00
VladimirMangos
b0a6993031 [8936] Implement spell 48743 2009-12-07 14:12:47 +03:00
VladimirMangos
94147f2b5a [8910] Implement spell 62124 damage part. 2009-12-03 02:03:49 +03:00
VladimirMangos
d63e4798b2 [8904] In spell effect debug string outpu also spell id and effect index. 2009-12-02 19:32:17 +03:00
Astellar
aa759d8161 [8854] Implement heal back part of spell 48181.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>

I choice maybe less clear way store future heal amount, but with avoid use additional fields for auras.
2009-11-21 11:20:30 +03:00
balrok
413a44d114 [8806] remove wrong erroroutput for teleportspells
they are just handled in a different way - so this errorcheck
isn't valid for those spells
2009-11-11 15:29:32 +01:00
XTZGZoReX
0734adb746 [8789] Rename several singleton macros to use more consistent names.
* objmgr -> sObjectMgr
 * spellmgr -> sSpellMgr
 * WaypointMgr -> sWaypointMgr
 * poolhandler -> sPoolMgr
 * objaccessor -> sObjectAccessor
 * mapmgr -> sMapMgr
 * sInstanceSaveManager -> sInstanceSaveMgr
 * ticketmgr -> sTicketMgr
 * CreatureEAI_Mgr -> sEventAIMgr
 * auctionmgr -> sAuctionMgr
 * achievementmgr -> sAchievementMgr
2009-11-08 12:11:34 +01:00
XTZGZoReX
1f23884757 Don't use singleton to access static functions.
* This affects especially ObjectMgr functions:
   - GetCreatureInfo
   - GetGameObjectInfo
   - GetInstanceTemplate
   These are in fact static functions.
2009-11-08 03:54:27 +01:00
VladimirMangos
34dab079c4 [8784] Use more appropriate error for cast fail on taxi flight. 2009-11-08 03:42:36 +03:00
VladimirMangos
a4e3b3e6aa [8743] Fix cooldowns for passive spells
Passive spell cooldowns only for client show.
It sets by  non passive spells with same category
triggered from passive spell auras or in code explictly.

* Ignore cooldown at cast passive spells
* Not set coldowns at passive spell cast itself.
2009-10-27 09:29:01 +03:00
VladimirMangos
d7ae5e3af0 [8718] Remove most GetObjectInWorld functions and move some map local to Map
Also mape pet guid counter per-map (in different expecte to be global pet number)
2009-10-24 01:16:40 +04:00
ApoC
40b0a2cd92 [8717] Fixed SPELL_EFFECT_TAMECREATURE broken after [8686]
Signed-off-by: ApoC <apoc@nymfe.net>
2009-10-23 22:31:16 +02:00
balrok
ac6e13d0e3 [8691] fix battleground spiritguides
they are now alive and so some spellchecks got invalid
2009-10-20 23:37:47 +02:00
ApoC
58139610eb [8687] Fixes in TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT.
* Removed my too script check on data load.
* Allow looking up fo DB target also if spell has required focus set.
* Makes DB targets optional not required.

Signed-off-by: ApoC <apoc@nymfe.net>
2009-10-20 23:21:44 +02:00
balrok
a2ff999fd3 [8676] implemented dead-visible creature flags_extra
with this flag you can specify a creature to be only
visible for dead players - this removes all hacks from
spiritguides/spirithealers from code and allows some other
special creatures

i decided to not implement an extra deathstate cause
actualy those creatures are almost equal to living ones
2009-10-18 21:28:36 +02:00
ApoC
ef2992f175 [8673] Typo fix from prev. commit. :(
Signed-off-by: ApoC <apoc@nymfe.net>
2009-10-18 19:57:38 +02:00
ApoC
3558829283 [8672] Fixed condition in prev. commit.
Signed-off-by: ApoC <apoc@nymfe.net>
2009-10-18 19:33:04 +02:00
XTZGZoReX
0e1854a936 [8671] Correctly send SMSG_PET_TAME_FAILED with appropriate value when taming fail instead of spell fail.
I also removed conditions from Spell::EffectTameCreature which are checked in Spell::CheckCast.

Signed-off-by: ApoC <apoc@nymfe.net>
2009-10-18 19:16:48 +02:00
VladimirMangos
b258a17ba4 [8658] Threat calculation fixes and improvements.
* Add single arg version Unit::AddThreat for just adding to threat list.
* Req. provide schollmask and crit flag for any real threat value for proper threats mod apply.
* Send crit flag in DealDamage as MELEE_HIT_CRIT for spell damage for later send to threat call.
* For not affected by modifiers threat values use SPELL_SCHOOL_MASK_NONE.
* Implement aura SPELL_AURA_MOD_CRITICAL_THREAT (used only in itemset 529 effect).
2009-10-17 11:02:30 +04:00
VladimirMangos
a4d61a6988 [8649] Implement SPELL_AURA_MECHANIC_IMMUNITY_MASK (147) and related cleanups.
* Always use machanic masks in form (1 << (mech-1)), fix all cases.
* Imppement SPELL_AURA_MECHANIC_IMMUNITY_MASK (mostly boss/elite spells).

Note: db stored mechannic masks already stored in proper format so not affected.
2009-10-15 20:53:01 +04:00
NoFantasy
65965bc5fa [8642] Replace the Spanish word 'hostil' with the English one.
Signed-off-by: NoFantasy <nofantasy@nf.no>
2009-10-14 12:46:10 +02:00
ApoC
901eea0813 [8636] Fixed patch intoduced in [8544]. Now targeting should work as main idea of patch intended.
Signed-off-by: ApoC <apoc@nymfe.net>
2009-10-14 02:38:38 +02:00
pasdVn
c47cf7bd61 [8635] Rewrote bonus damage claculation
* calculation depends on the damageClass now
  ->SPELL_DAMAGE_CLASS_RANGED & SPELL_DAMAGE_CLASS_MELEE use MeleeDamageBonus()
  ->SPELL_DAMAGE_CLASS_MAGIC & SPELL_DAMAGE_CLASS_RANGED use SpellDamageBonus()
* changes/improvements in MeleeDamageBonus:
  -> improved criterions to apply bonuses
  -> implemented scaling of FLAT damage Bonus for non weapon damage based spells
  -> support of DOT's
  -> added pet's bonus damage for non weapon based spells
* general cleanup in CalculateSpellDamage() and MeleeDamageBonus()
* implemented global helper functions GetWeaponAttackType() and GetAuraTicks() in SpellMgr

Signed-off-by: ApoC <apoc@nymfe.net>
2009-10-14 00:33:24 +02:00
VladimirMangos
f591211538 [8606] Restore seelction point around dest coordinates for TARGET_RANDOM_NEARBY_DEST
Thanks to qsa for pointing to problem.
2009-10-09 13:08:33 +04:00
tomrus88
2964f399c7 Merge commit 'origin/master' into 320 2009-10-03 11:04:30 +04:00
VladimirMangos
9919d89907 Fixed some commented cases for later apply in 3.2.x
* Allow cast 879 and ranks to players
* Add support for spell 67596 from some items added into 3.2.x
2009-10-03 07:22:46 +04:00
VladimirMangos
e167a567d5 [8583] Prevent crash at casting DK spells by non-DK characters. 2009-10-02 21:55:53 +04:00
VladimirMangos
59befa2e0e Merge branch 'master' into 320 2009-10-02 19:09:06 +04:00
hunuza
cedc62bd40 [8578] Fix targeting of priest spell 64843.
Signed-off-by: hunuza <hunuza@gmail.com>
2009-10-01 20:32:47 +02:00
balrok
9204ed5eb5 [8569] replace ^ by != introduced in 8552
for clarification, also ^ could create unexpeced
results if our boolean TRUE is not equal to 1

thx to vladimir for pointing it out + explanation
2009-09-30 14:37:39 +02:00
Ambal
09c50ab921 [8568] Use more correct spell target coordinates calculation for implicit target types 72, 73, 86
Signed-off-by: Ambal <pogrebniak@gala.net>
2009-09-30 14:57:12 +03:00
qsa
8cda413ddc [8556] Implement implicit target 36. Qsa is on rampage today, somebody stop him! :)
Signed-off-by: Ambal <pogrebniak@gala.net>
2009-09-28 19:04:34 +03:00
tomrus88
546f7a7fe5 Merge commit 'origin/master' into 320
Conflicts:
	src/game/BattleGround.cpp
2009-09-28 19:52:54 +04:00
balrok
2da82a8c68 [8552] implemented spells which can be casted while dead
i added a function IsDeathOnlySpell() which returns true
if this spell can ONLY be casted while dead, so i haven't
implemented all spells which could be cast while dead..
2009-09-28 16:44:49 +02:00
balrok
5385b385bc [8551] code cleanup
moved arena/battleground check from spell::checkcast
to SpellMgr::GetSpellAllowedInLocationError

also i adjusted some spell_fail-codes related to battleground
cause a spell_fail_wrong_area always requires the areaid, else it
would output "not in area %s"

then we don't need to check for map->isarena() when player is already in an
arena

----
in Spell.h
i moved "isTargetableForAttack()" to the top - cause it was anyway used
in every case of that switch

and isTargetableForAttack for attack also checks for isAlive
and isInFlight

so this could get simplified
2009-09-28 16:44:37 +02:00