Jump to content

thenecromancer

Members
  • Posts

    110
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by thenecromancer

  1. Nice, but it is not as simple. You did forget about stacking more similar effects by multiple units, this includes for example two mages casting missiles on one target. So you still have to: * make sure that all dummy targeting auras stack * check for caster guids as well * ultimately, dirty solution might be to use channelling target instead ( this target is used only for channeling spells when it has dummy aura, right? )
  2. Patch is not correct: client must show all abilities faded instead of returning error message ( but part is good in case of cheaters ) warrior CAN autoattack while bladestorming, it only resets swing timer when you start bladestorming ( it however has no interrupt flag, so it will probably require hardcoding ) also what is point of updating damage ?
  3. [color=#000000][color=#007700]+ if([/color][color=#0000BB]procSpell[/color][color=#007700]->[/color][color=#0000BB]SpellFamilyFlags [/color][color=#007700]& [/color][color=#0000BB]UI64LIT[/color][color=#007700]([/color][color=#0000BB]0x0000000000000002[/color][color=#007700])) spell_proc_event ? [/color][/color] [color=#000000][color=#007700]+ [/color][color=#0000BB]target [/color][color=#007700]= [/color][color=#0000BB]this[/color][color=#007700];[/color][/color][color=#000000][color=#007700] 63106 has TARGET_SELF [/color][/color]
  4. RemoveSpellsByDamageTaken is outdated, on retail it always breaks on fixed amount of damage ( much like damage absorbtion shields ). This is done that way to smite "Fear and dots" rotations. Amount of damage it can take is based on base health of target. This aura should increase that number as well as getting this thing moved to procs ( to be honest, not all root/fear auras should break on damage ).
  5. Just check if target is victim, otherwise ignore proc (problem might be with that AE ability, right?). This is same for Sweeping Strikes. ( which should work exactly right Blade Flurry, and as far as I remmember it had wrong spellid for proced spell ) And by the way Blade Flurry should do unmitigated damage (it cannot crit anyway), but to do that, you'll have to pass clean damage to triggers.
  6. http://wiki.udbforums.org/index.php/Spell_affect
  7. You can just change starting location of your players, however I'm not sure what it will do with intro cutscenes ( but they may be disabled anyway )
  8. Hi, as for Totem::IsImmunedToSpell, you would better create helper in spell mgr returning if spell has any direct damage effect ( like IsDirectDamageSpell ) it might be rather useful in future. Alternativly you may choose to use state immunity, but that one will not pop immune damage log. As for destroying grounding totem, don't be so specific, in procflag it only removed aura ( I'm however not sure if it was fixed to send proc with virtual 1 damage to correctly remove on non damaging spells though, but that's another story ) Totems should be probably learnt to die when their aura fades for whatever reason in my opinion. While your way is nice, you never really know when some NPC with multi-charge totem with plenty of health will be added. Then it won't work nice and will require to be rewritten again. As I said already: state immunity makes this
  9. Oddly enough, MOVEMENTFLAG_WALK_MODE does the opposite, for players...
  10. This will prevent any forced walk after anything possibly in gameplay, however I'm not completly sure, if any movement flag aside from MOVEMENTFLAG_WALK_MODE is valid for players, currently none is used for them. ( if this is going to be true, source code must completly garrant to grant players correct flags ) For server admins, this patch should do the job, but further development MAY need to do it long way instead... ( thus I am not sure if this is right section, but well.. ) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 49b88eb..80a74af 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -364,7 +364,7 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 ty } //Movement Flags (0x0 = walk, 0x100 = run, 0x200 = fly/swim) - data << uint32(MovementFlags); + data << uint32(GetTypeId() == TYPEID_PLAYER ? MOVEMENTFLAG_WALK_MODE : MovementFlags); data << Time; // Time in between points data << uint32(1); // 1 single waypoint EDIT: more info from Ntsc
  11. No it is not. Don't want to be rude at all, but the stuff is completly unrelated. Solution is simple, I'll upload a patch, but not sure if it has any chance, as you might not like it...
  12. There are two problems with Fear and Confusions: if one fear effect ends and there is another one ( typicaly Death Coil followed by Fear ) target is no longer feared, even it still has fear aura. Second problem is, when target is killed while feared, it's corpse will move ( because alive check is still true at time of removing ) diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index b4741b4..41caa26 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3097,7 +3097,13 @@ void Aura::HandleModConfuse(bool apply, bool Real) if(!Real) return; - m_target->SetConfused(apply, GetCasterGUID(), GetId()); + // check if there are no other confuse auras + Unit::AuraList const& confuseAuras = m_target->GetAurasByType(SPELL_AURA_MOD_CONFUSE); + if(!apply && !confuseAuras.empty()) + return; + + + m_target->SetConfused(apply, GetCasterGUID(), GetId(), m_removeMode==AURA_REMOVE_BY_DEATH); } void Aura::HandleModFear(bool apply, bool Real) @@ -3105,7 +3111,12 @@ void Aura::HandleModFear(bool apply, bool Real) if (!Real) return; - m_target->SetFeared(apply, GetCasterGUID(), GetId()); + // check if there are no other fear auras + Unit::AuraList const& fearAuras = m_target->GetAurasByType(SPELL_AURA_MOD_FEAR); + if(!apply && !fearAuras.empty()) + return; + + m_target->SetFeared(apply, GetCasterGUID(), GetId(), m_removeMode==AURA_REMOVE_BY_DEATH); } void Aura::HandleFeignDeath(bool apply, bool Real) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index cfd5fa9..49b88eb 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -10290,7 +10290,7 @@ void Unit::StopMoving() SendMessageToSet(&data,false); } -void Unit::SetFeared(bool apply, uint64 casterGUID, uint32 spellID) +void Unit::SetFeared(bool apply, uint64 casterGUID, uint32 spellID, bool death) { if( apply ) { @@ -10312,7 +10312,7 @@ void Unit::SetFeared(bool apply, uint64 casterGUID, uint32 spellID) GetMotionMaster()->MovementExpired(false); - if( GetTypeId() != TYPEID_PLAYER && isAlive() ) + if( GetTypeId() != TYPEID_PLAYER && !death ) { // restore appropriate movement generator if(getVictim()) @@ -10331,7 +10331,7 @@ void Unit::SetFeared(bool apply, uint64 casterGUID, uint32 spellID) ((Player*)this)->SetClientControl(this, !apply); } -void Unit::SetConfused(bool apply, uint64 casterGUID, uint32 spellID) +void Unit::SetConfused(bool apply, uint64 casterGUID, uint32 spellID, bool death) { if( apply ) { @@ -10347,7 +10347,7 @@ void Unit::SetConfused(bool apply, uint64 casterGUID, uint32 spellID) GetMotionMaster()->MovementExpired(false); - if (GetTypeId() == TYPEID_UNIT) + if (GetTypeId() == TYPEID_UNIT && !death) { // if in combat restore movement generator if(getVictim()) diff --git a/src/game/Unit.h b/src/game/Unit.h index a81308c..2cde239 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1234,8 +1234,8 @@ class MANGOS_DLL_SPEC Unit : public WorldObject uint32 GetUnitMovementFlags() const { return m_unit_movement_flags; } void SetUnitMovementFlags(uint32 f) { m_unit_movement_flags = f; } - void SetFeared(bool apply, uint64 casterGUID = 0, uint32 spellID = 0); - void SetConfused(bool apply, uint64 casterGUID = 0, uint32 spellID = 0); + void SetFeared(bool apply, uint64 casterGUID = 0, uint32 spellID = 0, bool death = false); + void SetConfused(bool apply, uint64 casterGUID = 0, uint32 spellID = 0, bool death = false); void AddComboPointHolder(uint32 lowguid) { m_ComboPointHolders.insert(lowguid); } void RemoveComboPointHolder(uint32 lowguid) { m_ComboPointHolders.erase(lowguid); }
  13. You have to add 100 base damage via custom spell call. Didn't found why, but the spell has no base damage ( should do 100 ).
  14. It was not like one thread doing one map. There are some operations and classes that should belong under map, but they are not. IIRC for example object accessor is not one par map, but one per server, together with all other things this is resulting of need to lock things, and not really using all the power you can have.You probably want your maps to be done by single thread, and being sure that. ( Eg. one object would be accessed by only one thread at time ). This is true only if you are running something really intensive in your maps, like vmaps. Otherwise I would not go for multi-threading if I did not really know what I'm doing...
  15. The only "important" patch not applied is procflag atm. Right now too much spell stuff is handled differently that it should be, and it makes further devlopment a little harder. It however does not really matter when arenas are integrated, as it is finished stuff, it won't be used for anything else, period. And if you read more carefuly you would know that one developer is already working on review/rewrite. What all you are writting here won't help situation at all. While you might recieve answer sooner than without posting anything, you are however NOT going to help it, but to do otherwise. I think that all agre that arena patch is done from game side, but it does not mean there is nothing they want to change. Just wait, and I think if you ask nice and clever question you are going to have answer.
  16. It is actualy called colision, too bad it's done on players clients ( but good for performance ofc ). It can be ofcourse done on server as well, but as Ntsc said it could result in quite a lot of calculations. Though maybe some simple box colision versus these object could be doable.
  17. What you say? Cooldown packet can also do global cooldown? That's quite nice if it is true...
  18. This. The problem is that water detection on server is not really that great and still fails a lot of times. It also pretty much disallows checking for swim movetype to disallow flying cheats :-/ ...
  19. There is already option to dump the character before deleting it...
  20. the spells themselfs should do the global cooldown, however I have no idea what data to send to make client show it :-/
  21. Why not just set this up in that SQL table? And it would be even better to have it with delays as well. Last but not least, can it be cached instead?
  22. But it looks that you guarantee it will crash for sure Anyway thanks for sharing.
  23. Oh what's up? Now you can make your branch and no longer need to bother by formating patches in files to post in review section. Of course you have to RTM to use it. And by the way was not it mirrored to SVN as well recently?
  24. Do not forget about dmg class as well as ignore immunity attributes
  25. Shouldn't be system message an opcode? Text template is in dbc file anyway...
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use