Jump to content

domingo

Members
  • Posts

    27
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by domingo

  1. Very good idea, and what with effect mechanics? ( Frostbolt, Frost Nova, Shadowfury, Shocks etc. ) EDIT: I mean if those spells are calculated as binary on official as well.
    wiki explanation on binary spells:
    Spells which deal a debuff (like Frost Nova or Vampiric Embrace) or some other effect can either be resisted fully or not at all (these are binary spells).
    Binary spells are spells which can only have full effect (hit) or no effect (resist); partial resists are not possible. Normally, damage spells are only binary if they have an additional non-damage effect. Some examples are Frostbolt, Death Coil, and Mind Flay.
    AFAIK all player spells do have mechanic set if non-physical spell applies non-damaging debuff ... So spell is binary in my understanding if it has spell mechanic or effect mechanic set. But as I wrote, it might be wrong, I'd imagine there might be some spell attribute that governs whether spell is binary (or partially resistable).
  2. I've recently played a little bit with spell resistances.

    My inspiration was mostly 'well known wiki', topics about resistances, spell hit, penetration, etc ...

    What this patch implements: binary spell resistance and melee/ranged spell resistances (aka Cheap Shot resist).

    As I am on dead end from point of information, here I share my work: http://github.com/modom/mangos/tree/resistances

    Open points (where I am at dead end because of lack of informations):

    - Binary spell recognition - I think spell can be considered as binary if it has some mechanic set. It's probably wrong - there is probably some attribute that marks the spell as binary (or partially resistible). Or the decision should be done just by checking for damage effects.

    - I guess that mechanic & debuff resistances should be processed in resist roll, not hit roll.

    - Unavoidable overlevel resistance for partially resistible spells is set to 5 per level, but there are different informations to have this value up to 8 per level.

    - 5% base resistance to crowd control mechanic: I read it somewhere, but consider it as unconfirmed (early break of cc effect is not implemented).

    - I guessed that total spell resistance can go up to 100%, if victim has some mechanic/debuff resistances in addition to school resistance (for example rogue with Fleet Footed and pre-WotLK Master Poisoner talents, being enchanted with snare resist spells and having 175+ nature resistance, resisting other rogues crippling poison) - but this is wild guess, maybe 75% is total resistance that can be attained.

    Anyway, this patch is intended to be used with procflag (because of spell hit part), although there are some conflicts and merged sources have to be edited a little by hand (Unit::CalcAbsorbResist() use).

    1

  3. When I removed the ?hack? (1 DOT damage on full resist, patch in GIT updated), I get such resist logs (only this patch):

    DoT (Corruption):

    50% resist: <victim> suffers 5 Shadow damage from <caster>'s Corruption. (5 resisted)

    100% resist: <caster>'s Corruption does not affect <victim>. <victim> resisted. (Tick resisted).

    full absorb, with any resist: <caster>'s Corruption was absorbed by <victim> for a moment. (Tick absorbed)

    Health Leech (Siphon Life):

    50% resist: <caster>'s Siphon Life hits <victim> for 8 Shadow damage. (8 resisted)

    100% resist: <caster>'s Siphon Life was fully resisted by <victim>.

    full absorb, with any resist: <caster>'s Siphon Life was absorbed by <victim>.

    (maybe health leech should use SMSG_PERIODICAURALOG instead of SMSG_SPELLNONMELEEDAMAGELOG ? log text makes more sense to me)

    Direct Damage (Shadowbolt): same as health leech.

    Looks more-or-less ok to me.

    Without both patches:

    I get 'fully resist' direct damage logs on 50% resist, negative damage log on 75% resist (and no sct log :-)) ... and full damage on any kind of DoT resist (although damage done is correct).

  4. You test it if get full resist/absorb for dots?

    In this case you don`t get any log :(

    Its one reason not added in.

    Hmm ... so that's why on clean mangos there is DOT full-resist not reducing all damage but keeping 1 ?

    I'll try to play with it ...

    I didn't specifically play with resists on your patch, I'll try it ... that information (maybe wrong) is from how I understood your changes related to damage -> no changes to periodic & environmetal damage logs in clean.

  5. But devs anyway will can't use this svn revs in sql update names

    That wouldn't be a big problem, it's just naming convention.

    One of the big issues with SVN and SourceForge was the increasing instability. The SVN repository was over 1.4GB in size with full history.

    Additionaly SVN does not work offline, Git does. You have full diffs and logs even without internet connection. That all is stuff SVN does not have.

    Plus, many people constantly downloaded from SVN, where it was not necessary.

    Git is intended for developers, and it is used to ease development process.

    Few days ago I persuaded myself to do local mirror of svn repository and whole mirror of mangos repository on my PC has ~220MB (svn 1.4.6). Pity I did it for nothing ...

    That way it satisfied both conditions of being accessible without internet connection and to limit downloading of new revisions to just once, even when applying many patches with many conflicting sources (that patching process mostly solved automatically).

    For "normal" users who just want to run MaNGOS, there will be pre-built binaries once the switch to client 3.0.2 is done.

    so nothing for more advanced users who wants to add some patches into core & compile for themselves, they have to use GIT now ... :/

    To be honest, what I dislike on GIT is mostly non-existing GUI backend like SVN Tortoise and unusable default revision numbering.

    The revision numbering can be worked around as it is now in process (well I worked with ClearCase few years ago where revision number also was unknown term - solved by labelling on release).

    What I really dislike is missing tortoise-like backend. Not because of svn update (that is bugged anyway in tortoise) or patch creation - for both I used commandline svn up / svn diff ... but the 'trivial' thing of showing me which sources/directories have been changed and because of quite good 'patch apply'.

  6. Well, problem is different. On offi, the loot content (and locked state) of any inventory container is saved. So if you lockpick container and get item A, B, C and take just A and close loot window, container remains in your inventory. Later you have just to click on it to open - you don't have to pick it again - and you get to loot B and C. Until you throw away that container or loot it completely. Maybe 'gift' system should be reused for this functionality to work ?

  7. <div class='quotetop'>QUOTE (Azureus @ Aug 14 2008, 09:26 PM) <{POST_SNAPBACK}></div>

    Everything works fine, except one thing. In Haala, when you take the wyvern to drop bombs, the bombs do not deal damage. Instead of exploding it summons an infernal.[/b]

    That's problem with ACID scripts.

    <div class='quotetop'>QUOTE (Azureus @ Aug 14 2008, 09:26 PM) <{POST_SNAPBACK}></div>

    The server doesn't crash after completing a opvp objective, but it also doesn't show any message. It just applies the +5% dmg aura and that's all.[/b]

    So my update was not correct :/ at least it won't crash the server ...

  8. What about:

    New public method in World.h:

    void SendMangosString(uint32 strid, uint32 zone = 0, WorldSession *self = 0, uint32 team = 0);

    Code in World.cpp:

    /// Send a packet to all players (of selected team if team != 0) in the zone (world if zone == 0), except self (if self != NULL)
    void World::SendMangosString(uint32 strid, uint32 zone, WorldSession *self, uint32 team)
    {
           std::map<int, WorldPacket> packets;
    
           for (SessionMap::iterator itr = m_sessions.begin(); itr != m_sessions.end(); itr++)
           {
                   if (itr->second &&
                           itr->second->GetPlayer() &&
                           itr->second->GetPlayer()->IsInWorld() &&
                           (zone == 0 || itr->second->GetPlayer()->GetZoneId() == zone) &&
                           itr->second != self &&
                           (team == 0 || itr->second->GetPlayer()->GetTeam() == team) )
                   {
                           int locidx = itr->second->GetSessionDbLocaleIndex();
                           std::map<int, WorldPacket>::iterator ipkt = packets.find(locidx);
                           if (ipkt == packets.end())
                           {
                                   ipkt = packets.insert(std::Pair<int, WorldPacket>(locidx, WorldPacket())).first;
                                   ChatHandler::FillMessageData(&ipkt->second, NULL, CHAT_MSG_SYSTEM, LANG_UNIVERSAL,
                                           NULL, 0, objmgr.GetMangosString(strid, locidx), NULL);
                           }
                           itr->second->SendPacket(&ipkt->second);
                   }
           }
    }

    And then replacing all

    sWorld.SendZoneText(X,objmgr.GetMangosString(Y));

    with

    sWorld.SendMangosString(X, Y);

    in OutdoorPvP*.cpp files ...

    Will it help ? Compiles OK ... but I didn't checked if it works OK.

    Patch link (for 6458): http://filebeam.com/3ec8b85ff189cfc42952ea06be7f04af

  9. <div class='quotetop'>QUOTE (Butch3r @ Aug 12 2008, 11:16 AM) <{POST_SNAPBACK}></div>

    or simple say: change GetMangosString to GetMangosStringForDBCLocale is correct way?[/b]

    <div class='quotetop'>QUOTE (w12x @ Aug 12 2008, 01:59 PM) <{POST_SNAPBACK}></div>

    iirc GetMangosString with one argument is now a member of WorldSession, so depending on the context, it's either GetSession()->GetMangosString() or player->GetSession()->GetmangosString().[/b]

    <div class='quotetop'>QUOTE (Butch3r @ Aug 12 2008, 03:15 PM) <{POST_SNAPBACK}></div>

    ok, i try so, but i think its real reason to update patch[/b]

    Easy way (just search+replace): use GetMangosStringForDBCLocale() as replacement for GetMangosString(). It uses locale from DBC files on server side. Might cause problems when players use client with locale different from server locale.

    Correct way: create replacement for sWorld.SendZoneText(X, GetMangosString(Y)) that would use GetSession()->GetMangosString() for every player separately (they can have different client locales). Use that replacement instead.

  10. Binary spell - a spell whose effects are fully applied or is completely resisted. Nothing in between. As opposed to partially resistable spells that apply effect with lessened efficiency.

    Only damage spells can be partially resistable, but not all are - those that apply additional auras generally aren't.

    Do someone have an idea how to detect which spells are binary ? Is there some attribute that marks the spell as binary (or opposite, spell as partially resistable) ? Or it should be decided by it's effects ?

    What about: partially resistable spells are those that have damage effect and don't have apply aura effect ? Maybe they also need spell or effect (for apply aura effect) mechanic ? All other spells are binary.

    (I know, resistance currently works only for damage part of spells, all other effects are applied ...)

  11. <div class='quotetop'>QUOTE (yiuu @ Jul 14 2008, 03:03 AM) <{POST_SNAPBACK}></div>

    <div class='quotetop'>QUOTE
    This patch is not made to work with other patches. It's for clean MaNGOS Installation.[/b]

    rolleyes.gif

    [/b]

    While it was made to be alone, it merges and works nicely with several bigger patches (arena, procflag) and numerous small ones ...

    OP just meant: if you want to use it with another patch, it's your problem to make it compatible ...

×
×
  • 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