Jump to content

virusav

Members
  • Posts

    84
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by virusav

  1. Description: "When you gain mana from Drain Mana or Life Tap spells, your summoned demon gains 100% of the mana you gain.".

    Life Tap works, and Drain Mana - no.

    Patch (2 versions):

    1.

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 3975e1e..42ba154 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -6879,6 +6879,10 @@ void Aura::PeriodicTick()
                if(gain_amount)
                {
                    int32 gain = pCaster->ModifyPower(power, gain_amount);
    +                if (pCaster->GetTypeId() == TYPEID_PLAYER && spellProto->Id == 5138 && pCaster->HasSpell(30326))
    +                    if (Unit* pPet = pCaster->GetPet())
    +                        int32 temp = pPet->ModifyPower(power, gain_amount);
    +                
                    target->AddThreat(pCaster, float(gain) * 0.5f, pInfo.critical, GetSpellSchoolMask(spellProto), spellProto);
                }
                break; 

    2.

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 320fef2..f6fa41c 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -6881,6 +6881,9 @@ void Aura::PeriodicTick()
                if(gain_amount)
                {
                    int32 gain = pCaster->ModifyPower(power, gain_amount);
    +                if (pCaster->GetTypeId() == TYPEID_PLAYER && spellProto->Id == 5138 && pCaster->HasSpell(30326))
    +                    pCaster->CastCustomSpell(pCaster, 32554, &gain_amount, NULL, NULL, true, NULL);
    +
                    target->AddThreat(pCaster, float(gain) * 0.5f, pInfo.critical, GetSpellSchoolMask(spellProto), spellProto);
                }
                break; 

  2. Spell 51343 should not be cast on players and their pets, only to hostile NPC:

    diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
    index c59658e..6ae146a 100644
    --- a/src/game/Spell.cpp
    +++ b/src/game/Spell.cpp
    @@ -1789,15 +1789,32 @@ void Spell::SetTargetMap(SpellEffectIndex effIndex, uint32 targetMode, UnitList&
                break;
            case TARGET_AREAEFFECT_INSTANT:
            {
    -            SpellTargets targetB = SPELL_TARGETS_AOE_DAMAGE;
    -            // Select friendly targets for positive effect
    -            if (IsPositiveEffect(m_spellInfo->Id, effIndex))
    -                targetB = SPELL_TARGETS_FRIENDLY;
    +            // Razorpine's Fear Effect
    +            if (m_spellInfo->Id == 51343)
    +            {
    +                targetUnitMap.clear();
    +                std::list<Creature*> tempTargetUnitMap;
    +                MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck u_check(m_caster, m_caster, radius);
    +                MaNGOS::CreatureListSearcher<MaNGOS::AnyUnfriendlyUnitInObjectRangeCheck> searcher(tempTargetUnitMap, u_check);
    +                Cell::VisitAllObjects(m_caster, searcher, radius);
    +                for(std::list<Creature*>::iterator iter = tempTargetUnitMap.begin(); iter != tempTargetUnitMap.end(); ++iter)
    +                {
    +                    if (!((*iter)->IsPet() && (*iter)->GetOwner()->GetTypeId() == TYPEID_PLAYER))
    +                        targetUnitMap.push_back((*iter));
    +                }
    +            }
    +            else
    +            {
    +                SpellTargets targetB = SPELL_TARGETS_AOE_DAMAGE;
    +                // Select friendly targets for positive effect
    +                if (IsPositiveEffect(m_spellInfo->Id, effIndex))
    +                    targetB = SPELL_TARGETS_FRIENDLY;
    
    -            FillAreaTargets(targetUnitMap, m_caster->GetPositionX(), m_caster->GetPositionY(), radius, PUSH_DEST_CENTER, targetB);
    +                FillAreaTargets(targetUnitMap, m_caster->GetPositionX(), m_caster->GetPositionY(), radius, PUSH_DEST_CENTER, targetB);
    
    -            // exclude caster
    -            targetUnitMap.remove(m_caster);
    +                // exclude caster
    +                targetUnitMap.remove(m_caster);
    +            }
                break;
            }
            case TARGET_AREAEFFECT_CUSTOM: 

  3. Condition should consider an item in the bank, otherwise you may get some an item, for example, tabard.

    diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
    index 42570d6..6e84d2c 100644
    --- a/src/game/ObjectMgr.cpp
    +++ b/src/game/ObjectMgr.cpp
    @@ -8095,7 +8095,7 @@ bool PlayerCondition::Meets(Player const * player) const
                return false;
            }
            case CONDITION_NOITEM:
    -            return !player->HasItemCount(value1, value2);
    +            return !player->HasItemCount(value1, value2, true);
            case CONDITION_SPELL:
            {
                switch(value2) 

  4. On the quest http://www.wowhead.com/quest=11989 after using an item spell 50141 need to hang aura 50001:

    diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
    index 936da2d..d4f03bd 100644
    --- a/src/game/SpellAuras.cpp
    +++ b/src/game/SpellAuras.cpp
    @@ -2021,6 +2021,10 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
                        case 48025:                             // Headless Horseman's Mount
                            Spell::SelectMountByAreaAndSkill(target, 51621, 48024, 51617, 48023, 0);
                            return;
    +                    case 50141:                             // Blood Oath
    +                        // Blood Oath
    +                        target->CastSpell(target, 50001, true, NULL, this);
    +                        return;
                        case 62061:                             // Festive Holiday Mount
                            if (target->HasAuraType(SPELL_AURA_MOUNTED))
                                // Reindeer Transformation
    diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
    index 4f8441a..7c3cfec 100644
    --- a/src/game/SpellMgr.cpp
    +++ b/src/game/SpellMgr.cpp
    @@ -1753,6 +1753,11 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
                            (spellInfo_2->Id == 23170 && spellInfo_1->Id == 23171) )
                            return false;
    
    +                    // Blood Oath and Blood Oath
    +                    if ((spellInfo_1->Id == 50141 && spellInfo_2->Id == 50001) ||
    +                        (spellInfo_2->Id == 50141 && spellInfo_1->Id == 50001))
    +                        return false;
    +
                        // Cool Down (See PeriodicAuraTick())
                        if ((spellInfo_1->Id == 52441 && spellInfo_2->Id == 52443) ||
                            (spellInfo_2->Id == 52441 && spellInfo_1->Id == 52443)) 

    All the rest of the quest is realized in the database.

  5. No.

    If a player did not take and did not perform a certain quest, then it will be shown a hint where to find the NPC.

    If a player has taken or has already passed the quest, then the hint disappears.

    I would do all the conditions of quests reduced to one, and in the field value2 would indicate the status of the quest.

    But it's been a division, so wrote a patch according to the current separation conditions.

  6. In some of the gossip menu should appear when the quest is not on hand and never gave up, for example, the ancestors of the Lunar festival:

    diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
    index c8681f9..98efb7c 100644
    --- a/src/game/ObjectMgr.cpp
    +++ b/src/game/ObjectMgr.cpp
    @@ -8108,6 +8108,12 @@ bool PlayerCondition::Meets(Player const * player) const
                }
                return false;
            }
    +        case CONDITION_QUEST_NONE:
    +        {
    +            if (!player->IsCurrentQuest(value1) && !player->GetQuestRewardStatus(value1))
    +                return true;
    +            return false;
    +        }
            default:
                return false;
        }
    @@ -8219,6 +8225,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
            case CONDITION_QUESTREWARDED:
            case CONDITION_QUESTTAKEN:
            case CONDITION_QUESTAVAILABLE:
    +        case CONDITION_QUEST_NONE:
            {
                Quest const *Quest = sObjectMgr.GetQuestTemplate(value1);
                if (!Quest)
    diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
    index a3e5e65..83bd582 100644
    --- a/src/game/ObjectMgr.h
    +++ b/src/game/ObjectMgr.h
    @@ -607,9 +607,10 @@ enum ConditionType
        CONDITION_QUESTAVAILABLE        = 19,                   // quest_id     0       for case when loot/gossip possible only if player can start quest
        CONDITION_ACHIEVEMENT           = 20,                   // ach_id       0, 1 (0: has achievement, 1: hasn't achievement) for player
        CONDITION_ACHIEVEMENT_REALM     = 21,                   // ach_id       0, 1 (0: has achievement, 1: hasn't achievement) for server
    +    CONDITION_QUEST_NONE            = 22                    // quest_id     0 (quest did not take and not rewarded)
    };
    
    -#define MAX_CONDITION                 22                    // maximum value in ConditionType enum
    +#define MAX_CONDITION                 23                    // maximum value in ConditionType enum
    
    struct PlayerCondition
    { 

  7. In 8149 and 8150 quests need to use an item, whose effect is to cast spells, depending on the player's race:

    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index e6065b3..4f55ab1 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -5550,6 +5550,41 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx)
                        unitTarget->RemoveSpellsCausingAura(SPELL_AURA_MOD_DECREASE_SPEED);
                        return;
                    }
    +                case 24194:                                 // Uther's Tribute
    +                case 24195:                                 // Grom's Tribute
    +                {
    +                    if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
    +                        return;
    +
    +                    uint8 race = unitTarget->getRace();
    +                    uint32 spellId = 0;
    +                    switch(m_spellInfo->Id)
    +                    {
    +                        case 24194:
    +                            switch(race)
    +                            {
    +                                case RACE_HUMAN:            spellId = 24105; break;
    +                                case RACE_DWARF:            spellId = 24107; break;
    +                                case RACE_NIGHTELF:         spellId = 24108; break;
    +                                case RACE_GNOME:            spellId = 24106; break;
    +                                case RACE_DRAENEI:          spellId = 69533; break;
    +                            }
    +                            break;
    +                        case 24195:
    +                            switch(race)
    +                            {
    +                                case RACE_ORC:              spellId = 24104; break;
    +                                case RACE_UNDEAD_PLAYER:    spellId = 24103; break;
    +                                case RACE_TAUREN:           spellId = 24102; break;
    +                                case RACE_TROLL:            spellId = 24101; break;
    +                                case RACE_BLOODELF:         spellId = 69530; break;
    +                            }
    +                            break;
    +                    }
    +                    if (spellId)
    +                        unitTarget->CastSpell(unitTarget, spellId, true);
    +                    return;
    +                }
                    case 24590:                                 // Brittle Armor - need remove one 24575 Brittle Armor aura
                        unitTarget->RemoveAuraHolderFromStack(24575);
                        return;

  8. There is a spell 50001, which has the effect SPELL_EFFECT_SCRIPT_EFFECT, which lies in the fact that the player must say randomly one of 3 phrases.

    To date, this kernel can not be realized because the codes from the database will not be accepted into the kernel (and in which table should be placed texts - the question).

    A script SD2 also can not be realized, as not to assign that script.

    I asked Laise and VladimirMangos about where should such sales, but they could not answer this question.

    Maybe it should allow external scripts, such as SD2, describe the effects of spells, if this can be done in the kernel?

    Are there any solutions to this problem?

  9. Warrior for leveling talent Warbringer (http://www.wowhead.com/spell=57499) may use the ability Charge (http://www.wowhead.com/search?q=Charge#abilities) regardless of the battle.

    Currently you can not use Charge during the battle.

    Path:

    diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
    index 5e1e430..0b6fee5 100644
    --- a/src/game/Spell.cpp
    +++ b/src/game/Spell.cpp
    @@ -4212,7 +4212,13 @@ SpellCastResult Spell::CheckCast(bool strict)
                if(bg->GetStatus() == STATUS_WAIT_LEAVE)
                    return SPELL_FAILED_DONT_REPORT;
    
    -    if (m_caster->isInCombat() && IsNonCombatSpell(m_spellInfo))
    +    bool bNonCombatSpell = IsNonCombatSpell(m_spellInfo);
    +    
    +    // Warbringer
    +    if (m_spellInfo->SpellFamilyName == SPELLFAMILY_WARRIOR && m_spellInfo->Category == 1219 && m_spellInfo->SpellIconID == 457 && (m_caster->HasAura(57499) || m_caster->HasAura(64976)))
    +        bNonCombatSpell = false;
    +
    +    if (m_caster->isInCombat() && bNonCombatSpell)
            return m_triggeredByAuraSpell ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_AFFECTING_COMBAT;
    
        if (m_caster->GetTypeId() == TYPEID_PLAYER && !((Player*)m_caster)->isGameMaster() && 

  10. There are spells with the effect SPELL_EFFECT_SCRIPT_EFFECT, which must be cast spell, but with the goal of sex.

    Example:

    http://www.wowhead.com/spell=48762 - the main spell

    http://www.wowhead.com/spell=48763 - for male

    http://www.wowhead.com/spell=48761 - for women

    For the team has engaged SCRIPT_COMMAND_CAST_SPELL datalong3.

    The patch: http://paste2.org/p/913707.

    At the base:

    UPDATE `creature_movement_scripts` SET `datalong3` = 3 WHERE `command` = 15 AND `datalong3` = 0;
    UPDATE `event_scripts` SET `datalong3` = 3 WHERE `command` = 15 AND `datalong3` = 0;
    UPDATE `gameobject_scripts` SET `datalong3` = 3 WHERE `command` = 15 AND `datalong3` = 0;
    UPDATE `gossip_scripts` SET `datalong3` = 3 WHERE `command` = 15 AND `datalong3` = 0;
    UPDATE `quest_end_scripts` SET `datalong3` = 3 WHERE `command` = 15 AND `datalong3` = 0;
    UPDATE `quest_start_scripts` SET `datalong3` = 3 WHERE `command` = 15 AND `datalong3` = 0;
    UPDATE `spell_scripts` SET `datalong3` = 3 WHERE `command` = 15 AND `datalong3` = 0; 

    For these spells:

    DELETE FROM `spell_scripts` WHERE `id` = 48762;
    INSERT INTO `spell_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `datalong3`) VALUES
    (48762, 1, 15, 48763, 0, 1),
    (48762, 1, 15, 48761, 0, 2);

  11. Is there a need to specify the requirements of several classes of quests, has been based upon a patch http://code.google.com/p/trinitycore/source/detail?r=6f1c4fcf4e, then the rules manually, the kernel source, so k. original patch by Trinity.

    At the base:

    ALTER TABLE `quest_template` CHANGE COLUMN `SkillOrClass` `SkillOrClassMask` mediumint (8) NOT NULL DEFAULT '0 ';
    UPDATE `quest_template` SET `SkillOrClassMask` =- (1 <<(-` SkillOrClassMask `-1)) WHERE` SkillOrClassMask `<0;

    http://paste2.org/p/956558

    I checked in the game - is working.

    I hope that nothing is missed.:)

    Examples Quests:

    http://www.wowhead.com/quest=24595, put "-1104"

    http://www.wowhead.com/quest=24553, put "-598"

    similarly, for example

    http://www.wowhead.com/quest=13408, put "-1503" (now does not exclude DK)

    http://www.wowhead.com/quest=13410, put "-32" (now you can put "-6")

  12. The player casts a spell on the NPC, and he responded casts a spell with the effect of creating the result of either (quest http://ru.wowhead.com/quest=24560).

    Patch works, compare the visual effect with the video from official server - the same.

    diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
    index d8f6aac..58b7c53 100644
    --- a/src/game/SpellEffects.cpp
    +++ b/src/game/SpellEffects.cpp
    @@ -1770,6 +1770,14 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx)
                        m_caster->CastSpell(m_caster, spell_id, true);
                        return;
                    }
    +                case 69922:                                 // Temper Quel'Delar
    +                {
    +                    if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT)
    +                        return;
    +                    // Return Tempered Quel'Delar
    +                    unitTarget->CastSpell(m_caster, 69956, true);
    +                    return;
    +                }
                }
                break;
            } 

  13. Patch: http://paste2.org/p/876925

    For spells 24894, 17006, 17005, 17004, 17003 were previously aura to increase stamina and attack power, but now they are not in DBC.

    I looked through all spells with similar effects, but no one suitable has not found.

    The patch is working, but there is a small bug: when pumping the talent in the form of a bear is no change of stamina.

    If you change the form, all will fall into place.

    When leveling talents in other forms or shapes out all right.

    Bug insignificant, but it requires changes.

    In the patch is a condition:

     if (apply & & target-> GetTypeId () == TYPEID_PLAYER & & target-> getClass () == CLASS_DRUID & & target-> m_form & & m_modifier.m_miscvalue == STAT_STAMINA) 

    In bear form when pumping talents apply = false, it, in theory, in general, can be removed.

    But spells for leveling talent have the effect of increasing intelligence, and the rest - Dummy, so m_modifier.m_miscvalue == STAT_STAMINA not satisfied, because comes STAT_INTELLECT.

    To fix the bug must be in the study of talent in some way causing function conversion rate overall stamina or some other options.

    Any ideas?

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