diff options
| author | Rat <gmstreetrat@gmail.com> | 2014-11-30 15:37:11 +0100 |
|---|---|---|
| committer | Rat <gmstreetrat@gmail.com> | 2014-11-30 15:37:11 +0100 |
| commit | 065e1ec3cd13bd1d3fb099c95ff30d6164bf5435 (patch) | |
| tree | 049f78a5ee82aa92e3d83b06998e1b16dba30419 /src/server/game/Spells | |
| parent | eda9094226983fc719378af5c1eca1a7ce93428e (diff) | |
Core/Spells: some work on auras and packets
Diffstat (limited to 'src/server/game/Spells')
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuraDefines.h | 109 | ||||
| -rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 32 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.h | 6 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellInfo.h | 5 |
5 files changed, 149 insertions, 5 deletions
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 3c05c15a57d..e75a3424c2f 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -428,7 +428,114 @@ enum AuraType SPELL_AURA_368 = 368, // Not used in 4.3.4 SPELL_AURA_ENABLE_POWER_BAR_TIMER = 369, SPELL_AURA_SET_FAIR_FAR_CLIP = 370, // Overrides client's View Distance setting to max("Fair", current_setting) - TOTAL_AURAS = 371 // 4.3.4 + SPELL_AURA_371 = 371, + SPELL_AURA_372 = 372, + SPELL_AURA_373 = 373, + SPELL_AURA_374 = 374, + SPELL_AURA_375 = 375, + SPELL_AURA_376 = 376, + SPELL_AURA_377 = 377, + SPELL_AURA_378 = 378, + SPELL_AURA_379 = 379, + SPELL_AURA_380 = 380, + SPELL_AURA_381 = 381, + SPELL_AURA_382 = 382, + SPELL_AURA_383 = 383, + SPELL_AURA_384 = 384, + SPELL_AURA_385 = 385, + SPELL_AURA_386 = 386, + SPELL_AURA_387 = 387, + SPELL_AURA_388 = 388, + SPELL_AURA_389 = 389, + SPELL_AURA_390 = 390, + SPELL_AURA_391 = 391, + SPELL_AURA_392 = 392, + SPELL_AURA_393 = 393, + SPELL_AURA_394 = 394, + SPELL_AURA_395 = 395, + SPELL_AURA_396 = 396, + SPELL_AURA_397 = 397, + SPELL_AURA_398 = 398, + SPELL_AURA_399 = 399, + SPELL_AURA_400 = 400, + SPELL_AURA_401 = 401, + SPELL_AURA_402 = 402, + SPELL_AURA_403 = 403, + SPELL_AURA_404 = 404, + SPELL_AURA_405 = 405, + SPELL_AURA_406 = 406, + SPELL_AURA_407 = 407, + SPELL_AURA_408 = 408, + SPELL_AURA_409 = 409, + SPELL_AURA_410 = 410, + SPELL_AURA_411 = 411, + SPELL_AURA_412 = 412, + SPELL_AURA_413 = 413, + SPELL_AURA_414 = 414, + SPELL_AURA_415 = 415, + SPELL_AURA_416 = 416, + SPELL_AURA_417 = 417, + SPELL_AURA_418 = 418, + SPELL_AURA_419 = 419, + SPELL_AURA_420 = 420, + SPELL_AURA_421 = 421, + SPELL_AURA_422 = 422, + SPELL_AURA_423 = 423, + SPELL_AURA_424 = 424, + SPELL_AURA_425 = 425, + SPELL_AURA_426 = 426, + SPELL_AURA_427 = 427, + SPELL_AURA_428 = 428, + SPELL_AURA_429 = 429, + SPELL_AURA_430 = 430, + SPELL_AURA_431 = 431, + SPELL_AURA_432 = 432, + SPELL_AURA_433 = 433, + SPELL_AURA_434 = 434, + SPELL_AURA_435 = 435, + SPELL_AURA_436 = 436, + SPELL_AURA_437 = 437, + SPELL_AURA_438 = 438, + SPELL_AURA_439 = 439, + SPELL_AURA_440 = 440, + SPELL_AURA_441 = 441, + SPELL_AURA_442 = 442, + SPELL_AURA_443 = 443, + SPELL_AURA_444 = 444, + SPELL_AURA_445 = 445, + SPELL_AURA_446 = 446, + SPELL_AURA_447 = 447, + SPELL_AURA_448 = 448, + SPELL_AURA_449 = 449, + SPELL_AURA_450 = 450, + SPELL_AURA_451 = 451, + SPELL_AURA_452 = 452, + SPELL_AURA_453 = 453, + SPELL_AURA_454 = 454, + SPELL_AURA_455 = 455, + SPELL_AURA_456 = 456, + SPELL_AURA_457 = 457, + SPELL_AURA_458 = 458, + SPELL_AURA_459 = 459, + SPELL_AURA_460 = 460, + SPELL_AURA_461 = 461, + SPELL_AURA_462 = 462, + SPELL_AURA_463 = 463, + SPELL_AURA_464 = 464, + SPELL_AURA_465 = 465, + SPELL_AURA_466 = 466, + SPELL_AURA_467 = 467, + SPELL_AURA_468 = 468, + SPELL_AURA_469 = 469, + SPELL_AURA_471 = 471, + SPELL_AURA_472 = 472, + SPELL_AURA_473 = 473, + SPELL_AURA_474 = 474, + SPELL_AURA_475 = 475, + SPELL_AURA_476 = 476, + SPELL_AURA_477 = 477, + SPELL_AURA_478 = 478, + TOTAL_AURAS = 479 // 4.3.4 }; enum AuraObjectType diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 6451111d0b8..1acddcc5523 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -227,7 +227,7 @@ void AuraApplication::ClientUpdate(bool remove) { _needClientUpdate = false; - WorldPackets::Spell::SendAuraUpdate update; + WorldPackets::Spells::SendAuraUpdate update; update.Init(false, GetTarget()->GetGUID(), 1); update.BuildUpdatePacket(this, remove, GetTarget()->getLevel()); // TODO 6.x should be caster's level diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index bc386f0ba65..0a55735eae5 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -57,6 +57,7 @@ #include "DB2Stores.h" #include "Battlefield.h" #include "BattlefieldMgr.h" +#include "SpellPackets.h" extern pEffect SpellEffects[TOTAL_SPELL_EFFECTS]; @@ -118,6 +119,28 @@ SpellCastTargets::SpellCastTargets() : m_elevation(0), m_speed(0), m_strTarget() m_targetMask = 0; } +SpellCastTargets::SpellCastTargets(Unit* caster, uint32 targetMask, ObjectGuid targetGuid, ObjectGuid itemTargetGuid, ObjectGuid srcTransportGuid, ObjectGuid destTransportGuid, Position srcPos, Position destPos, float elevation, float missileSpeed, std::string targetString) : + m_targetMask(targetMask), m_objectTargetGUID(targetGuid), m_itemTargetGUID(itemTargetGuid), m_elevation(elevation), m_speed(missileSpeed), m_strTarget(targetString) +{ + m_objectTarget = NULL; + m_itemTarget = NULL; + m_itemTargetEntry = 0; + + m_src._transportGUID = srcTransportGuid; + if (m_src._transportGUID != ObjectGuid::Empty) + m_src._transportOffset.Relocate(srcPos); + else + m_src._position.Relocate(srcPos); + + m_dst._transportGUID = destTransportGuid; + if (m_dst._transportGUID != ObjectGuid::Empty) + m_dst._transportOffset.Relocate(destPos); + else + m_dst._position.Relocate(destPos); + + Update(caster); +} + SpellCastTargets::~SpellCastTargets() { } void SpellCastTargets::Read(ByteBuffer& data, Unit* caster) @@ -3841,7 +3864,10 @@ void Spell::SendSpellStart() if (m_spellInfo->RuneCostID && m_spellInfo->PowerType == POWER_RUNES) castFlags |= CAST_FLAG_NO_GCD; // not needed, but Blizzard sends it - WorldPacket data(SMSG_SPELL_START, (8+8+4+4+2)); + WorldPackets::Spells::SendSpellStart spellStart; + spellStart.spell = this; + + /*WorldPacket data(SMSG_SPELL_START, (8+8+4+4+2)); if (m_CastItem) data << m_CastItem->GetPackGUID(); else @@ -3901,9 +3927,9 @@ void Spell::SendSpellStart() data << uint8(0); // unkByte // if (unkByte == 2) // data.append(0); - } + }*/ - m_caster->SendMessageToSet(&data, true); + m_caster->SendMessageToSet(spellStart.Write(), true); } void Spell::SendSpellGo() diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 890ebdf4081..8accaf896d0 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -99,6 +99,7 @@ class SpellCastTargets { public: SpellCastTargets(); + SpellCastTargets(Unit* caster, uint32 targetMask, ObjectGuid targetGuid, ObjectGuid itemTargetGuid, ObjectGuid srcTransportGuid, ObjectGuid destTransportGuid, Position srcPos, Position destPos, float elevation, float missileSpeed, std::string targetString); ~SpellCastTargets(); void Read(ByteBuffer& data, Unit* caster); @@ -168,6 +169,7 @@ class SpellCastTargets void Update(Unit* caster); void OutDebug() const; + std::string GetTargetString() const { return m_strTarget; } private: uint32 m_targetMask; @@ -516,6 +518,10 @@ class Spell Spell** m_selfContainer; // pointer to our spell container (if applicable) + SpellInfo const* GetTriggeredByAuraSpell() const { return m_triggeredByAuraSpell; } + + int32 GetTimer() const { return m_timer; } + protected: bool HasGlobalCooldown() const; void TriggerGlobalCooldown(); diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index a49f956bc57..413eb9d39a5 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -65,6 +65,11 @@ enum SpellCastTargetFlags TARGET_FLAG_DEST_TARGET = 0x00040000, // sometimes appears with DEST_TARGET spells (may appear or not for a given spell) TARGET_FLAG_EXTRA_TARGETS = 0x00080000, // uint32 counter, loop { vec3 - screen position (?), guid }, not used so far TARGET_FLAG_UNIT_PASSENGER = 0x00100000, // guessed, used to validate target (if vehicle passenger) + TARGET_FLAG_UNK400000 = 0X00400000, + TARGET_FLAG_UNK1000000 = 0X01000000, + TARGET_FLAG_UNK4000000 = 0X04000000, + TARGET_FLAG_UNK10000000 = 0X10000000, + TARGET_FLAG_UNK40000000 = 0X40000000, TARGET_FLAG_UNIT_MASK = TARGET_FLAG_UNIT | TARGET_FLAG_UNIT_RAID | TARGET_FLAG_UNIT_PARTY | TARGET_FLAG_UNIT_ENEMY | TARGET_FLAG_UNIT_ALLY | TARGET_FLAG_UNIT_DEAD | TARGET_FLAG_UNIT_MINIPET | TARGET_FLAG_UNIT_PASSENGER, |
