Jump to content

Auntie Mangos

Moderators
  • Posts

    2446
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by Auntie Mangos

  1. Please don't try to hijack my thread.
  2. I will update to latest revision and post a new crash report for most common crashes. Please change this topic's title to fixed and let's move on. Good job VladimirMangos and DrKLO.
  3. http://getmangos.eu/community/showpost.php?p=95268&postcount=426 Folliw instructions in this post.
  4. Here is auto announce by xeross155 http://getmangos.eu/community/viewtopic.php?id=10618
  5. Patch was split into 3 parts as suggested this one,http://getmangos.eu/community/viewtopic.php?id=10176 and http://getmangos.eu/community/showthread.php?p=86769 Please continue the discussion in related topic. First post updated, patch file included. PS: if it is possible to move some related posts to the other topics, please do. Thanks in advance.
  6. http://getmangos.eu/community/showthread.php?p=84122#post84122 I wonder if my posts are invisible or something..?
  7. This first post will focus on the core implementation. It may need lots of discussion, so other topics can be covered later. I am going to apologize in advance for a post which is simultaneously really long and overly brief or simplistic. [h]Table of Contents[/h] How it Works I want to initially just give an overview how pathfinding has been integrated into the core Read this first, then look at some code before continuing on (a diff between mmaps_rewrite HEAD and cee28237f73a) Pathfinding Control How pathfinding can be configured in the core, and how that impacts different people in the mangos community Future Work any known or outstanding issues [h]How it Works[/h] I won't go into the details of Recast or Detour, those libraries are a bit beyond the scope of this post. If you want to know more about those, I recommend looking at Mikko Mononen's blog. A prerequisite to understanding how mmaps works is knowing how the movement system works currently: SilverIce's move spline system Keep movement-related state and communicate this state to the client. At the risk of over simplifying, there are two entry points: MoveSplineInit::MoveTo builds a straight line, A -> B path MoveSplineInit::MovebyPath takes an arbitrary sequence of points [*]Movement generators The logic engines which determine where to go and how to get there. They sit on top of the move spline system, providing it with a destination point (for MoveTo) or a path to follow (for MovebyPath). mmaps supplements this system with a new class, the PathFinder - as qsa says, it is the real mmaps implementation, and everything which calls it is just usage examples. This class has the following capabilities: Using Detour, generate a new path which 1) avoids obstacles (don't walk through objects/terrain) and 2) follows terrain (don't fly off the ground) Store enough state to determine if a previously-generated path is valid, whether it needs to be updated, or if it needs to be recalculated from scratch. In practice, PathFinder is used in the following ways: MoveSplineInit::MoveTo now internally uses PathFinder to generate a path to the destination. This gives nice looking paths anywhere the spline system is used, and also frees the caller from doing any pathfinding work. MoveSplineInit::MovebyPath can take a path which was generated by PathFinder. This is recommended for when maintaining the path is important, such as a moving destination (see TargetedMovementGenerator). Maintaining PathFinder outside of the move spline system allows you to avoid expensive pathfinding operations which are unnecessary; for example, when the destination moved byt the rest of the path is unchanged If you want more specific details on how PathFinder works, please look at the code first. The constructor and the calculate function are a great starting point, and there are lots of comments in the code. After that, I can answer any questions you may have. [h]Pathfinding Control[/h] Developers have control over the use of pathfinding via two parameters to functions which lead to PathFinder calls: generatePath and forceDest [*]Scripters can use the new unit UnitState UNIT_STAT_IGNORE_PATHFINDING. Creatures with this flag will default to A -> B movement. It would be trivial to implement additional UnitStates for other functionality, such as forceDest [*]DB devs only have the inhabittype mechanism to control pathfinding. If a creature only has land inhabit type, PathFinder will not generate a path through water (except shallow areas, I think it was 1.5 yds for max depth). Some people have requested flags for the database like the new UnitState flags. [*]Admins/GMs can use the mangosd.conf settings to enable/disable server-wide pathfinding and also to disable pathfinding on specific maps. There is also a ".mmap on|off" command to toggle server-wide pathfinding [h]Future Work[/h] mmaps is complete, as far as generating usable paths for units to follow. However, there is some unfinished and unstarted work due to lack of time/motivation, tediousness, or unimplemented dependencies. In some cases, more design/value discussion is needed before committing to a certain feature/implementation. offmesh connections Some of Blizzard's collision meshes erroneously contain small gaps or holes which prevent generating a contiguous navmesh. Offmesh connections fix this by linking two arbitrary navmesh locations to each other. They need to be created manually, and any contributions by the community are welcome. Also, currently they are only added to the navmesh through the generator - a way to add/remove them at server runtime would be nice. Aggro system integration When targets are unreachable they are dropped from the threat list - mangos needs an explicit RemoveFromThreatList function for this, current implementation is a bit 'hacky'. Also, it has been heavily discussed whether monsters should be able to target only creatures that they can reach. Current implementation is a 'lazy' one - rather than generate paths to all creatues in aggro list until a reachable one is found, we generates only one path to one creature in aggro list per update cycle - if that creature is unreachable, we drop the target and repeat the process the next cycle. Evade timer implementation Currently, evasion happens immediately. There are some very specific things that creatures do when they can't reach any targets (complicated behavior, but easy to implement the basics first and build onto it) Better destination A @ XXXXXXXXXXXXXXXXXX X X Z B C# monster = @, player = #, obstacle = X nice path: @ -> A -> B -> C actual path: @ -> A -> B -> Z (code boxes are bugged, so here's a working version) Because the destination Z is found before we call PathFinder, we end up with a path that looks really bad from a player's perspective. It would be better to generate the path directly to #, but stop when we reach C. This will look better, and also eliminate the expensive GetNearPoint call, as B -> C is constrained/clamped to the terrain as part of the pathfinding. Shared paths We might be able to save cpu if one path could be generated for multiple units. Most paths are short, so amount of benefit is questionable (possibly minimal gain after factoring in path copy, validation, and (maybe) modification). Anyway, it would be accomplished most easily via AssistDelayEvent - pass a generated path to the constructor, and during AssistDelayEvent::Execute we copy it to the assistant(s) via overloaded AttackStart. reimplement smooth path While the majority of PathFinder is our original implementation/logic, the piece which builds the actual terrain-clamped point path (the 'smooth path') is not. It works, but the implementation is not very straightforward, and seems at first glance to be inefficient. dynamic mmaps Handling dynamic vmaps presents a lot of challenges, but dynamic mmaps is potentially worse. There are facilities to handle dynamic navmeshes, but picking the right one (then implementing it, and integrating it into mangos) would be a lot of work. generatePath=true enables path finding, but is defaulted to false. false will cause movement to be simple A -> B line. true has been used in the core where it makes sense to do so. forceDest makes reaching the destination guaranteed. Currently, if there isn't a complete path to the destination the resulting path leads to the reachable spot nearest the destination. Some behaviors require that a unit always reach its destination, such as pets following their owner - forceDest=true helps enforce this behavior. It is defaulted to false.
  8. http://getmangos.eu/community/topic/16244/warden-the-definitive-anticheat-system/ certain spells can only be cast outdoors area entry contains extended information about a part of the map, see the structs defined in DBCStructure.h (most is only relevant client-side)
  9. Let me be perfectly clear on this one: MaNGOS and Cataclysm is not a matter of technicalities, or getting the source changes to support it. This is all about the need to modify the game client, and as you probably know, we at MaNGOS have already tried to do our work without legal issues. Client modification is an issue not to be taken lightly. For anything else, see this thread.
  10. Hmm, Most peculiar why your bots are not flying. If they all possess the attribute I listed, they should work. The only thing I could suggest is that you clear the client cache, before loading the client. I posted a batch file that will do this for you. http://getmangos.eu/community/post/131377/#p131377 Disabling mmaps shouldn't help. I always run with mmaps and it works perfectly on my server. BThallid has just posted an update to the loot-fix-bt branch. I haven't had chance yet to test this, but it may well solve your issue with the collection of game objects (including quest items) Let me know if it helps
  11. http://getmangos.eu/community/viewtopic.php?id=10618
  12. first post dead but post 37 link alive http://getmangos.eu/community/viewtopic.php?id=11219&p=114631&viewfull=1#post114631
  13. This patch implements the rune activation part of spell 47568 Depends on my 2 other patches: * http://getmangos.eu/community/viewtopic.php?id=15098 * http://getmangos.eu/community/viewtopic.php?id=15099 For Rev. 10408. diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 3ad5b93..b0affd0 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2712,6 +2712,19 @@ void Spell::EffectTriggerSpell(SpellEffectIndex effIndex) pet->CastSpell(pet, 28305, true); return; } + // Empower Rune Weapon + case 53258: + { + // remove cooldown of all runes and send update to client + // +25 runic power already added in Spell::CheckOrTakeRunePower() in Spell::cast() + if(m_caster->GetTypeId() == TYPEID_PLAYER) + { + for(uint32 i = 0; i < MAX_RUNES; i++) + ((Player*)m_caster)->SetRuneCooldown(i, 0); + ((Player*)m_caster)->ResyncRunes(MAX_RUNES); + } + return; + } } // normal case
  14. http://getmangos.eu/community/showthread.php?4271-player-loot
  15. the same must be done for Unit::MeleeMissChanceCalc() too -miss-chance-for-melee-damage"][bUG] miss chance for melee damage
  16. What bug does the patch fix? What features does the patch add? - Adding some proper bonuses into Pet::InitStatsForLevel() for few summons. NOTE: some of those not yet fully supported by the core. This used to be part of http://getmangos.eu/community/viewtopic.php?id=10150 split due to request. For which repository revision was the patch created? 8526 Who has been writing this patch? Please include either forum user names or email addresses. Me Patch: diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index 3581c45..2bbd2bd 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -855,38 +855,45 @@ bool Pet::InitStatsForLevel(uint32 petlevel, Unit* owner) { case SUMMON_PET: { - if(owner->GetTypeId() == TYPEID_PLAYER) + if(owner->getClass() == CLASS_WARLOCK) { - switch(owner->getClass()) - { - case CLASS_WARLOCK: - { + //the damage bonus used for pets is either fire or shadow damage, whatever is higher + uint32 fire = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE); + uint32 shadow = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW); + uint32 val = (fire > shadow) ? fire : shadow; - //the damage bonus used for pets is either fire or shadow damage, whatever is higher - uint32 fire = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FIRE); - uint32 shadow = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW); - uint32 val = (fire > shadow) ? fire : shadow; + SetBonusDamage(int32 (val * 0.15f)); + //bonusAP += val * 0.57; + } - SetBonusDamage(int32 (val * 0.15f)); - //bonusAP += val * 0.57; - break; - } - case CLASS_MAGE: - { - //40% damage bonus of mage's frost damage - float val = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST) * 0.4; - if(val < 0) - val = 0; - SetBonusDamage( int32(val)); - break; - } - default: - break; + switch(GetEntry()) + { + case 510: // Water Elemental + { + //40% damage bonus of mage's frost damage + float val = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST) * 0.4f; + if(val < 0) + val = 0; + SetBonusDamage(int32(val)); + break; } - } + case 19668: // Shadowfiend + { + //6% damage bonus of priest's shadow damage + float val = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_SHADOW) * 0.06f; + if(val < 0) + val = 0; - SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)) ); - SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)) ); + SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4) + val) ); + SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4) + val) ); + break; + } + default: + SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4)) ); + SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4)) ); + break; + } //SetModifierValue(UNIT_MOD_ATTACK_POWER, BASE_VALUE, float(cinfo->attackpower)); @@ -959,18 +966,50 @@ bool Pet::InitStatsForLevel(uint32 petlevel, Unit* owner) break; } case GUARDIAN_PET: + + switch(GetEntry()) + { + // Force of Nature -- TODO : move to pet after fixed, it should not be guardian + case 1964: + { + float val = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_NATURE) * 0.035f; + if(val < 0) + val = 0; + + SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4) + val) ); + SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4) + val) ); + break; + } + case 31216: // Mirror Image + { + //33% damage bonus of mage's frost damage + float val = owner->GetUInt32Value(PLAYER_FIELD_MOD_DAMAGE_DONE_POS + SPELL_SCHOOL_FROST) * 0.33f; + if(val < 0) + val = 0; + SetBonusDamage(int32(val)); + break; + } + case 27829: // Ebon Gargoyle + { + // 40% AP + float val = owner->GetTotalAttackPowerValue(BASE_ATTACK) * 0.4f; + if(val < 0) + val = 0; + SetBonusDamage(int32(val)); + break; + } + default: + SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4))); + SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4))); + break; + } + SetUInt32Value(UNIT_FIELD_PETEXPERIENCE, 0); SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, 1000); SetCreateMana(28 + 10*petlevel); SetCreateHealth(28 + 30*petlevel); - // FIXME: this is wrong formula, possible each guardian pet have own damage formula - //these formula may not be correct; however, it is designed to be close to what it should be - //this makes dps 0.5 of pets level - SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel - (petlevel / 4))); - //damage range is then petlevel / 2 - SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel + (petlevel / 4))); break; default: sLog.outError("Pet have incorrect type (%u) for levelup.", getPetType());
  17. why dont you use the "proper" Horde & Alliance grouping/trade posted by patro(no offence to thorazi) http://getmangos.eu/community/showpost.php?p=71654&postcount=33
  18. I investigated that a bit: Snake trap should work with entrapment. Maybe you forget any sql update? Only bug is that you are getting rootet, too, as well as your target. It is because the snake summone is targeted to yourself.There is a bug currently, that allows allows all trigger auras with OnTrapActivation to trigger, no matter if the procflag fits or not, but should work in the next time: http://getmangos.eu/community/viewtopic.php?id=5740 my last post... Freezing trap won't trigger because it only creates a presistent area aura, that have no direct target and so can't trigger on the target. But I think that this is not necessary, because it is not working like that on the offi servers neigther. I think it procs only from those not exisitng spells, getting triggered by the second aura of frost trap effect, every two sec (correct me if I am wrong). So problem is how to handle that. But other (maybe bigger problem) for me is, that the 2nd and 3rd presistent area aura are canceled immeadeatly in PersistentAreaAura::Update() after getting created, because manos does not find a fitting dynamic object (whatever this is^^, beyond my scope currently). Very strange that you can see that in the client. You will notice three buff symbols at the target, but the second two (that seems to represent area aura 2 and 3) will disappear at once as these auras are getting cancelled. Just what I found out. Maybe anybody can use this information.
  19. What bug does the patch fix? What features does the patch add? Correct procFlags for spell 35080 For which SubVersion revision was the patch created? Newest MaNGOS Is there a thread in the bug report section? If yes, please add a link to the thread. http://getmangos.eu/community/viewtopic.php?id=4551 Who has been writing this patch? Please include either forum user names or email addresses. Malah UPDATE `spell_proc_event` SET `procFlags` = '0x00080000' WHERE `spell_proc_event`.`entry` =35080;
  20. take a look into this http://getmangos.eu/community/topic/17015/movemaps/
  21. 1. Neo is currently working on an implementation of the Warden system, but the current official mangos core does not include Warden.
  22. This change originates from http://getmangos.eu/community/viewtopic.php?id=11759&p=121875&viewfull=1#post121875, don't know who the original author is. For Rev. 10408. Side note: In the original version, count+1 was used, but that seems wrong because the client can crash at logout if higher values used. diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 0572c21..324819e 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -20984,7 +20984,8 @@ void Player::ConvertRune(uint8 index, RuneType newType) void Player::ResyncRunes(uint8 count) { - WorldPacket data(SMSG_RESYNC_RUNES, count * 2); + WorldPacket data(SMSG_RESYNC_RUNES, 4 + count * 2); + data << uint32(count); for(uint32 i = 0; i < count; ++i) { data << uint8(GetCurrentRune(i)); // rune type
  23. 392 as i know, but this forum not for discussion DB. You need update DB cleary. UDB forum down currently but thread http://getmangos.eu/community/viewtopic.php?id=84 have link have also and svn link...
  24. Probably caused because the grid where the creature was is set to a <pause mode> when nobody is in. With gameobjects, they directly despawn. look-alike http://getmangos.eu/community/showthread.php?14136-Bug-amp-possible-fix-Inaccurate-respawn-time.
  25. So we don't need to run the sql file? I though thats how the table got created in the sql database... all sql code worked fine.... just that row that must apear twice in their ...in overall if you want to check out the procedure i've written: http://getmangos.eu/community/showthread.php?13121-World-of-Warcraft-Server-for-Windows-Installation-Guide Part 24 on page 2 .... you could re write the text at your convenience to put it here if you want as i wrote everything to be an installation also possible while creating your server
×
×
  • 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