Jump to content

Auntie Mangos

Moderators
  • Posts

    2446
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by Auntie Mangos

  1. If they add a line to their .htaccess to redirect to the index.php, it should fix that issue.
  2. Read this post and follow the instructions.
  3. Version: 7339 Bug Report: http://getmangos.eu/community/viewtopic.php?id=5238 Writer: miranda.conrado [miranda.conrado at gmail dot com] What it does: implements potions cooldowns and blocking during combat. Paste2 link: http://paste2.org/p/155518 (anything wrong, just say, because it works well here) Complete description: It's kind of a workaround, but it is very clean. Conditions: 1- drink potion not in combat: starts a 1min cooldown 2- drink potion in combat: cast Potion Sickness (53787), potions blocked until end of combat, then starts a 1min cooldown 3- enter in combat during potion cooldown: cooldown continues normally UPDATE: checked with Elixirs UPDATE2: changed to Category==4
  4. * What bug does the patch fix? What features does the patch add? This patch makes it so that character customization (from AT_LOGIN_CUSTOMIZE) does not force you to rename. At the moment, if you leave your name the same, it will give you the error message that a character with that name already exists. * For which repository revision was the patch created? For Revision 7276 * Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. There is a bug report for this, see : http://getmangos.eu/community/viewtopic.php?id=6341 * Who has been writing this patch? Please include either forum user names or email addresses. Just me. diff --git a/src/game/CharacterHandler.cpp b/src/game/CharacterHandler.cpp index 9f3e070..a0fc085 100644 --- a/src/game/CharacterHandler.cpp +++ b/src/game/CharacterHandler.cpp @@ -1284,7 +1284,7 @@ void WorldSession::HandleCharCustomize(WorldPacket& recv_data) return; } - if(objmgr.GetPlayerGUIDByName(newname)) // character with this name already exist + if(objmgr.GetPlayerGUIDByName(newname) && objmgr.GetPlayerGUIDByName(newname) != guid) // character with this name already exist { WorldPacket data(SMSG_CHAR_CUSTOMIZE, 1); data << uint8(CHAR_CREATE_NAME_IN_USE);
  5. this was my suggestion about this problem some time ago: http://getmangos.eu/community/post/123998/#p123998 However after more researching, such selecting policy seems to be applied to any npc that doesn't move. So likely a generic solution like bool selectOnlyMeleeRangedTargets = GetMotionMaster()->GetMotionType() != CHASE_MOTION_TYPE || <IsRooted()>; and the returned value is also not needed, as the needed scripts can very simple just use if (m_creature->CanReachWithMeleeAttack(m_creature->getVictim()) to decide whether to use range-ability or normal melee
  6. http://getmangos.eu/community/viewtopic.php?id=4276 third post, git reset --hard <Rev>
  7. #620 http://getmangos.eu/community/showthread.php?8386-%5BPATCH%5D-AuctionHouse-Bot&p=111164&viewfull=1#post111164
  8. http://getmangos.eu/community/showthread.php?10069-%5Bpatch%5DRemove-Immunity-Effect-for-Shattering-Throw&p=107459&viewfull=1#post107459
  9. What bug does the patch fix? What features does the patch add? It fixes the purge part of felhunter's Devour Magic spell, which didn't work due to two checks with wrong results of function "IsPositiveSpell()". For which repository revision was the patch created? Rev. 9020 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. http://getmangos.eu/community/viewtopic.php?id=10279 Who has been writing this patch? Please include either forum user names or email addresses. Me, reeshack. paste2.org: http://paste2.org/p/574361 diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index cf8ffaa..4083525 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4094,7 +4094,7 @@ SpellCastResult Spell::CheckCast(bool strict) } // TODO: this check can be applied and for player to prevent cheating when IsPositiveSpell will return always correct result. // check target for pet/charmed casts (not self targeted), self targeted cast used for area effects and etc - else if (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->GetCharmerOrOwnerGUID()) + else if (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->GetCharmerOrOwnerGUID() && !IsDispelSpell(m_spellInfo)) { // check correctness positive/negative cast target (pet cast real check and cheating check) if(IsPositiveSpell(m_spellInfo->Id)) @@ -4931,7 +4931,7 @@ SpellCastResult Spell::CheckPetCast(Unit* target) if(!_target->isAlive()) return SPELL_FAILED_BAD_TARGETS; - if(IsPositiveSpell(m_spellInfo->Id)) + if(IsPositiveSpell(m_spellInfo->Id) && !IsDispelSpell(m_spellInfo)) { if(m_caster->IsHostileTo(_target)) return SPELL_FAILED_BAD_TARGETS; @@ -4944,7 +4944,7 @@ SpellCastResult Spell::CheckPetCast(Unit* target) //TARGET_DUELVSPLAYER is positive AND negative duelvsplayertar |= (m_spellInfo->EffectImplicitTargetA[j] == TARGET_DUELVSPLAYER); } - if(m_caster->IsFriendlyTo(target) && !duelvsplayertar) + if(m_caster->IsFriendlyTo(target) && !duelvsplayertar && !IsDispelSpell(m_spellInfo)) { return SPELL_FAILED_BAD_TARGETS; }
  10. First off I think we are defining engine and library differently. I was using engine as another way to say library. Unreal and ReamCrafter are more Engines as they provide nearly everything you need to create a game quickly. Ogre is more of a library as it only provides some basic 3d functionality and by itself cannot make a game. I've actually worked with the Unreal engine, Ogre, and Irrlicht. The second two are not a preset number of outcomes. Neither Ogre nor Irrlicht have collision systems built in nor are script systems. They are purely 3d libraries. You can make any type of game with them. Unreal is somewhat designed in that way but even the Unreal engine is designed to allow C++ code to be integrated with it though (and in some licensing cases you are given the full source code). I would say that is far more efficient to use an existing library than writing your own. 3d libraries require you to write your own import mechanisms for meshes which is very difficult (or write an exporter for Maya to export to your proprietary format). Not to mention your own scene node system, material + texture + shader systems, camera & viewport systems, lightmapping, and timing methods. Neither Direct3d nor OpenGL will do these for you. They only provide basic calls like IDirect3DDevice9:: DrawPrimitive, IDirect3DDevice9::SetPixelShader, IDirect3DDevice9::SetTexture. The same goes for a quality Audio Library. Sure you can use DirectSound8 but it is far easier and faster to implement FMOD which supports MP3s nativity along with support for file streaming (which is a pain to implement well). "...using a premade script, as in a 3d rendering engine, is not as efficient as making your own code" Efficiency= time. You can spend years writing your own 3d graphical libs or you could just download / license one and start working on coding the actual game. I would agree with you if the engine limited what you could do but in the cases I've listed above they do not.
  11. Core: 10610 but appear since 9000+ and i always need a hack to fix it. Only appear with high population 1000+ online http://getmangos.eu/community/viewtopic.php?pid=98052#p98052 Related with corrupted mover pointer at charmed creature... maybe: http://pastebin.com/8zR3cTDS With this fix http://pastebin.com/EVhHgrB0 by zergtmn crash less in low population 600 max online If i check with: http://pastebin.com/CM5eVNPJ crash again in same position If i remove this antiexploit check, crash later in: data.appendPackGUID(mover->GetGUID()); I can only use a really ugly hack checking if plMover is not null, but no relocation for charmed creatures. And no... i dont use vehicle patch and nothing related with movers Any ideas to finally fix it? Best regards
  12. There's already topic about reading DBC on the forums somewhere... http://getmangos.eu/community/showthread.php?14405-C-Read-DBC-Files
  13. this is supposed to work in similiar way i think http://getmangos.eu/community/showthread.php?11628-Spell-Stacking-System
  14. player.cpp and CalculateTalentsPoints found it through http://github.com/mangos/mangos/commit/b6098bbcc4f348634c25cd0e3c54b0fb8e696811 but i don't know if this function will cover all cases - maybe you search in the whole code for CLASS_DEATH_KNIGHT or RATE_TALENT edit: http://getmangos.eu/community/viewtopic.php?id=8752
  15. http://getmangos.eu/community/topic/14084/9700bgs-spirit-healerbug/
  16. * What bug does the patch fix? What features does the patch add? Implements aura 293 (note: rename at will) * For which repository revision was the patch created? 10820 * Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. not that i know of * Who has been writing this patch? Please include either forum user names or email addresses. me * Patch. notes: thanks to Shauren for the addSpell part, it really helped me with this PD: as i mentioned on the previous thread, implementation looks similar because i dont really think there is a better way to implement it
  17. There are many guides in the Installation, Configuration & Upgrades that explain this very well. What operating system are you using? Edit: I will note however that SD2 has a broken script due to MaNGOS revision 10156, so you may want to use MaNGOS 10155 until SD2 can catch up to the changes, but this is only relevant if you plan on using ScriptDev2
  18. This is realy easy to explain. Lets say that SoR deals 10dmg. Dampen Magic lower is by 120. It should be 10-120=0, but is 10-120=-110. Can you deal negative damage? No. It just resets and goes from 2147483646 same as http://getmangos.eu/community/showthread.php?10450 (fixed)
  19. Not correct. You should can still equip item with enchant, but enchant should'n work without skill. http://getmangos.eu/community/showthread.php?10965-patch-Not-apply-enchant-s-bonuses-if-require-skill-level&highlight=aplly+enchant
  20. What bug does the patch fix? What features does the patch add? allows periodic auras to be affected by haste, also added Shadowform triggering spell with this aura For which repository revision was the patch created? 9593 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. http://getmangos.eu/community/showthread.php?12995-[bUG]-Glyph-Quick-and-Decay Who has been writing this patch? Please include either forum user names or email addresses. me diff --git a/src/game/SpellAuraDefines.h b/src/game/SpellAuraDefines.h index fb5a5ee..01855e4 100644 --- a/src/game/SpellAuraDefines.h +++ b/src/game/SpellAuraDefines.h @@ -358,7 +358,7 @@ enum AuraType SPELL_AURA_313 = 313, SPELL_AURA_314 = 314, SPELL_AURA_315 = 315, - SPELL_AURA_316 = 316, + SPELL_AURA_MOD_PERIODIC_DURATION_OF_HASTE = 316, TOTAL_AURAS = 317 }; diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 4a64b7c..d0d0e74 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -366,7 +366,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]= &Aura::HandleNULL, //313 0 spells in 3.3 &Aura::HandleNULL, //314 1 test spell (reduce duration of silince/magic) &Aura::HandleNULL, //315 underwater walking - &Aura::HandleNULL //316 makes haste affect HOT/DOT ticks + &Aura::HandleNoImmediateEffect //316 makes haste affect HOT/DOT ticks, SPELL_AURA_MOD_PERIODIC_DURATION_OF_HASTE, implemented in Unit::CalculateSpellDuration }; static AuraType const frozenAuraTypes[] = { SPELL_AURA_MOD_ROOT, SPELL_AURA_MOD_STUN, SPELL_AURA_NONE }; @@ -398,14 +398,12 @@ m_isRemovedOnShapeLost(true), m_in_use(0), m_deleted(false) { m_caster_guid = target->GetGUID(); damage = m_currentBasePoints+1; // stored value-1 - m_maxduration = target->CalculateSpellDuration(m_spellProto, m_effIndex, target); } else { m_caster_guid = caster->GetGUID(); - damage = caster->CalculateSpellDamage(m_spellProto,m_effIndex,m_currentBasePoints,target); - m_maxduration = caster->CalculateSpellDuration(m_spellProto, m_effIndex, target); + damage = caster->CalculateSpellDamage(m_spellProto,m_effIndex,m_currentBasePoints,target); if (!damage && castItem && castItem->GetItemSuffixFactor()) { @@ -432,11 +430,24 @@ m_isRemovedOnShapeLost(true), m_in_use(0), m_deleted(false) } } - if(m_maxduration == -1 || m_isPassive && m_spellProto->DurationIndex == 0) - m_permanent = true; + + + SetModifier(AuraType(m_spellProto->EffectApplyAuraName[eff]), damage, m_spellProto->EffectAmplitude[eff], m_spellProto->EffectMiscValue[eff]); Player* modOwner = caster ? caster->GetSpellModOwner() : NULL; + // Apply periodic time mod + if(modOwner && m_modifier.periodictime) + modOwner->ApplySpellMod(GetId(), SPELLMOD_ACTIVATION_TIME, m_modifier.periodictime); + + if (!caster) + m_maxduration = target->CalculateSpellDuration(m_spellProto, m_effIndex, target, m_modifier.periodictime); + else + m_maxduration = caster->CalculateSpellDuration(m_spellProto, m_effIndex, target, m_modifier.periodictime); + + if(m_maxduration == -1 || m_isPassive && m_spellProto->DurationIndex == 0) + m_permanent = true; + if(!m_permanent && modOwner) { modOwner->ApplySpellMod(GetId(), SPELLMOD_DURATION, m_maxduration); @@ -449,12 +460,6 @@ m_isRemovedOnShapeLost(true), m_in_use(0), m_deleted(false) sLog.outDebug("Aura: construct Spellid : %u, Aura : %u Duration : %d Target : %d Damage : %d", m_spellProto->Id, m_spellProto->EffectApplyAuraName[eff], m_maxduration, m_spellProto->EffectImplicitTargetA[eff],damage); - SetModifier(AuraType(m_spellProto->EffectApplyAuraName[eff]), damage, m_spellProto->EffectAmplitude[eff], m_spellProto->EffectMiscValue[eff]); - - // Apply periodic time mod - if(modOwner && m_modifier.periodictime) - modOwner->ApplySpellMod(GetId(), SPELLMOD_ACTIVATION_TIME, m_modifier.periodictime); - // Start periodic on next tick or at aura apply if (!(m_spellProto->AttributesEx5 & SPELL_ATTR_EX5_START_PERIODIC_AT_APPLY)) m_periodicTimer += m_modifier.periodictime; @@ -5934,7 +5939,7 @@ void Aura::HandleShapeshiftBoosts(bool apply) break; case FORM_SHADOW: spellId1 = 49868; - + spellId2 = 71167; if(m_target->GetTypeId() == TYPEID_PLAYER) // Spell 49868 have same category as main form spell and share cooldown ((Player*)m_target)->RemoveSpellCooldown(49868); break; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 6608963..9383255 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -11570,7 +11570,7 @@ int32 Unit::CalculateSpellDamage(SpellEntry const* spellProto, SpellEffectIndex return value; } -int32 Unit::CalculateSpellDuration(SpellEntry const* spellProto, SpellEffectIndex effect_index, Unit const* target) +int32 Unit::CalculateSpellDuration(SpellEntry const* spellProto, SpellEffectIndex effect_index, Unit const* target, uint32 &periodicTime) { Player* unitPlayer = (GetTypeId() == TYPEID_PLAYER) ? (Player*)this : NULL; @@ -11588,6 +11588,20 @@ int32 Unit::CalculateSpellDuration(SpellEntry const* spellProto, SpellEffectInde if (duration > 0) { + if (periodicTime) + { + Unit::AuraList const& mModByHaste = GetAurasByType(SPELL_AURA_MOD_PERIODIC_DURATION_OF_HASTE); + for(Unit::AuraList::const_iterator i = mModByHaste.begin(); i != mModByHaste.end(); ++i) + { + if (!(*i)->isAffectedOnSpell(spellProto)) + continue; + + int32 ticksNum = duration / periodicTime ; + periodicTime = int32(GetFloatValue(UNIT_MOD_CAST_SPEED) * periodicTime); + duration = periodicTime * ticksNum; + break; + } + } int32 mechanic = GetEffectMechanic(spellProto, effect_index); // Find total mod value (negative bonus) int32 durationMod_always = target->GetTotalAuraModifierByMiscValue(SPELL_AURA_MECHANIC_DURATION_MOD, mechanic); diff --git a/src/game/Unit.h b/src/game/Unit.h index b566f0e..8ca7dd1 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1756,7 +1756,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject uint32 CalcNotIgnoreAbsorbDamage( uint32 damage, SpellSchoolMask damageSchoolMask, SpellEntry const* spellInfo = NULL); uint32 CalcNotIgnoreDamageRedunction( uint32 damage, SpellSchoolMask damageSchoolMask); - int32 CalculateSpellDuration(SpellEntry const* spellProto, SpellEffectIndex effect_index, Unit const* target); + int32 CalculateSpellDuration(SpellEntry const* spellProto, SpellEffectIndex effect_index, Unit const* target, uint32 &periodicTime); float CalculateLevelPenalty(SpellEntry const* spellProto) const; void addFollower(FollowerReference* pRef) { m_FollowingRefManager.insertFirst(pRef); } note: currently existing small problem with Vampiric Touch - it's dummy auras doesn't have periodic timer so they are not affected by haste and not removed at the same time with Vampiric Touch DoT =\\
  21. What bug does the patch fix? What features does the patch add? If the target has the Sacred Shield effect, Flash of Light heal an additional 100% over 12 sec. For which repository revision was the patch created? revision 8918 Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. http://getmangos.eu/community/viewtopic.php?id=11287 Who has been writing this patch? Please include either forum user names or email addresses. Myself DB part INSERT INTO spell_proc_event VALUES (58597 , 0, 10, 1073741824, 0, 0, 32768, 0, 0, 100, 0); Core part diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index a43c520..4fb03a6 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5864,6 +5910,19 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu basepoints0 = GetAttackTime(BASE_ATTACK) * int32(ap*0.022f + 0.044f * holy) / 1000; break; } + // Sacred Shield proc Flash of Light HoT + if ( dummySpell->Id == 58597 ) + { + Unit* caster = triggeredByAura->GetCaster(); + + if ( caster && pVictim && caster->GetGUID() == pVictim->GetGUID() ) + { + triggered_spell_id = 66922; + basepoints0 = int32( damage / 12 ); + target = this; + } + break; + } // Sacred Shield if (dummySpell->SpellFamilyFlags & UI64LIT(0x0008000000000000)) { Sorry for the name of the topic. I realised my mistake after posting new thread.
  22. That thread gave me absolutely no answers to my question. I'm not asking why DK's have no talent points, I'm asking how to change the Mangos code to have them receive talent points like every other class based on their level, ie. they would start with 46 talent points at lvl 55.
  23. Very old problem. Tryed to fix this month' ago (http://getmangos.eu/community/viewtopic.php?id=654). Just noticed it again but because the system has changed here is a new (simple) fix. Problem is that Unit::canReachWithAttack is used PetAI::Update to determine wheather a pet is close enough to attack or not. CanReachWithAttack uses UNIT_FIELD_COMBATREACH for calculation, witch can be 1 or lower for normal sized pets. In TargetedMovementGenerator<T>::Update it is checked if the distance is greater RATE_TARGET_POS_RECALCULATION_RANGE (+objsize...). As this is 1.5 by default there is the case, that the pet's TMG targetlocation is not updatet, but the pet can't reach the target with the meleeattack. CanReachWithAttack is only used for PetAI, so I think this is maybe outdatet and should not be used anymore!? In all other cases IsWithinDistInMap(victim, ATTACK_DISTANCE) is used, so that we have a fixed meleerange of 5. Patch: http://github.com/pasdVn/mangos/commit/d5861030bfe33643b4bccc35a4efbcef2c566e54 Other sollution would be to limit the range to RATE_TARGET_POS_RECALCULATION_RANGE (as a minimum) in canReachWithAttack pasdVn
  24. @madmax76, read this http://getmangos.eu/community/showthread.php?p=46139#post46139 and the post below
  25. Firstly it is a wrong place to ask this question. Playerbot has its own thread http://getmangos.eu/community/topic/8238/playerbot/ Also original playerbot repository was abandoned long ago. Active work is done in blueboy's repo https://github.com/blueboy. Choose 'mangos' which considered stable or 'portal' for new and not very well tested stuff. And finally, why on earth are you trying to create a patch? Git lets you mix code to your needs. Just learn to use it. Cheers.
×
×
  • 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