Jump to content

virusav

Members
  • Posts

    84
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by virusav

  1. Updated link: http://paste2.org/p/1274204
  2. Checking the relevance of the patch. By sniffs from version 4.0.6x obtain the same data as in this patch.
  3. diff --git a/sql/updates/11169_01_mangos_mangos_string.sql b/sql/updates/11169_01_mangos_mangos_string.sql index fba16dc..4d4d1f5 100644 --- a/sql/updates/11169_01_mangos_mangos_string.sql +++ b/sql/updates/11169_01_mangos_mangos_string.sql @@ -1,6 +1,6 @@ ALTER TABLE db_version CHANGE COLUMN required_11117_01_mangos_world_template required_11169_01_mangos_mangos_string bit; -DELETE FROM mangos_string WHERE entry IN (376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,1500,15001,1502); +DELETE FROM mangos_string WHERE entry IN (376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,1500,1501,1502); INSERT INTO mangos_string VALUES (376,'%u - |cffffffff|Hpool:%u|h[%s]|h|r AutoSpawn: %u MaxLimit: %u Creatures: %u GameObjecs: %u Pools %u',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), As I understand it, requests are written to be used safely many times. It would be nice if the developers themselves rolls requests at least 2 times, because In this case, the error pops up immediately, and not the first time such a joint.
  4. The core patch is no longer needed, as adopted by the patch in SD2 1973.
  5. Updated patch in first post: added removal of auras SPELL_AURA_EMPATHY when changing forms. At the moment there is a problem with displaying the characteristics of just about the player: 1. Damage. 2. Armor. 3. Resistance. What is responsible?
  6. http://www.scriptdev2.com/project.php?issueid=1137 Choose.
  7. When using a knife on the corpses of the NPC should be counted killcredit: diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 6a3b3db..b06fd85 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1801,6 +1801,16 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) return; } + case 52090: // Ahunae's Knife + { + if (m_caster->GetTypeId() == TYPEID_PLAYER && unitTarget && unitTarget->GetTypeId() == TYPEID_UNIT) + { + ((Player*)m_caster)->KilledMonsterCredit(28622); + ((Creature*)unitTarget)->ForcedDespawn(); + } + + return; + } case 52308: // Take Sputum Sample { switch(eff_idx)
  8. These spells are needed for a quest http://www.wowhead.com/quest=12527. diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 6a3b3db..fa1ee38 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1411,6 +1411,7 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) return; } case 46167: // Planning for the Future: Create Snowfall Glade Pup Cover + case 50918: // Gluttonous Lurkers: Create Basilisk Crystals Cover case 50926: // Gluttonous Lurkers: Create Zul'Drak Rat Cover case 51026: // Create Drakkari Medallion Cover case 51592: // Pickup Primordial Hatchling @@ -1426,6 +1427,7 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) switch(m_spellInfo->Id) { case 46167: spellId = 46773; break; + case 50918: spellId = 50919; break; case 50926: spellId = 50927; break; case 51026: spellId = 50737; break; case 51592: spellId = 51593; break; @@ -6478,6 +6480,26 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx) ((Player*)caster)->RemoveSpellCategoryCooldown(82, true); return; } + case 50894: // Zul'Drak Rat + { + if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT) + return; + + if (Aura* pAura = unitTarget->GetAura(50894, EFFECT_INDEX_0)) + if (pAura->GetStackAmount() >= m_spellInfo->StackAmount - 1) + // Gluttonous Lurkers: Summon Gorged Lurking Basilisk + if (const SpellEntry *pSpell = sSpellStore.LookupEntry(50928)) + { + unitTarget->CastSpell(m_caster, 50928, true); + + Creature* creatureTarget = (Creature*)unitTarget; + + if (const SpellCastTimesEntry *pCastTime = sSpellCastTimesStore.LookupEntry(pSpell->CastingTimeIndex)) + creatureTarget->ForcedDespawn(pCastTime->CastTime + 1); + } + + return; + } case 51770: // Emblazon Runeblade { Unit* caster = GetAffectiveCaster();
  9. Spell http://www.wowhead.com/spell=1462 should display the details of the NPC or a player in the forms of animals just for the caster. Patch (copy http://paste2.org/p/1238101): diff --git a/src/game/Object.cpp b/src/game/Object.cpp index 2dfa981..728555e 100644 --- a/src/game/Object.cpp +++ b/src/game/Object.cpp @@ -637,17 +637,45 @@ void Object::BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask * *data << (m_uint32Values[index] & ~UNIT_FLAG_NOT_SELECTABLE); } // hide lootable animation for unallowed players - else if (index == UNIT_DYNAMIC_FLAGS && GetTypeId() == TYPEID_UNIT) + else if (index == UNIT_DYNAMIC_FLAGS) { - if (!target->isAllowedToLoot((Creature*)this)) - *data << (m_uint32Values[index] & ~(UNIT_DYNFLAG_LOOTABLE | UNIT_DYNFLAG_TAPPED_BY_PLAYER)); - else + uint32 appendValue = m_uint32Values[index]; + + // checking SPELL_AURA_EMPATHY and caster + if (((Unit*)this)->isAlive()) { - // flag only for original loot recipent - if (target->GetObjectGuid() == ((Creature*)this)->GetLootRecipientGuid()) - *data << m_uint32Values[index]; + bool bIsEmpathy = false; + bool bIsCaster = false; + Unit::AuraList const& mAuraEmpathy = ((Unit*)this)->GetAurasByType(SPELL_AURA_EMPATHY); + for(Unit::AuraList::const_iterator i = mAuraEmpathy.begin(); i != mAuraEmpathy.end(); ++i) + { + bIsEmpathy = true; + if ((*i)->GetCasterGuid() == target->GetObjectGuid()) + { + bIsCaster = true; + break; + } + } + if (bIsEmpathy && !bIsCaster) + appendValue &= ~UNIT_DYNFLAG_SPECIALINFO; + } + + if (GetTypeId() == TYPEID_UNIT) + { + if (!target->isAllowedToLoot((Creature*)this)) + *data << (appendValue & ~(UNIT_DYNFLAG_LOOTABLE | UNIT_DYNFLAG_TAPPED_BY_PLAYER)); else - *data << (m_uint32Values[index] & ~(UNIT_DYNFLAG_TAPPED | UNIT_DYNFLAG_TAPPED_BY_PLAYER)); + { + // flag only for original loot recipent + if (target->GetObjectGuid() == ((Creature*)this)->GetLootRecipientGuid()) + *data << appendValue; + else + *data << (appendValue & ~(UNIT_DYNFLAG_TAPPED | UNIT_DYNFLAG_TAPPED_BY_PLAYER)); + } + } + else + { + *data << appendValue; } } else diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index bcedb01..dc89c6c 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3066,6 +3066,14 @@ void Aura::HandleAuraModShapeshift(bool apply, bool Real) Unit *target = GetTarget(); + // remove SPELL_AURA_EMPATHY + Unit::AuraList const& mAuraEmpathy = target->GetAurasByType(SPELL_AURA_EMPATHY); + for(Unit::AuraList::const_iterator i = mAuraEmpathy.begin(); i != mAuraEmpathy.end(); ++i) + { + target->RemoveAurasByCasterSpell((*i)->GetId(), (*i)->GetCasterGUID()); + i = mAuraEmpathy.begin(); + } + SpellShapeshiftFormEntry const* ssEntry = sSpellShapeshiftFormStore.LookupEntry(form); if (!ssEntry) { @@ -6475,12 +6483,10 @@ void Aura::HandleShapeshiftBoosts(bool apply) void Aura::HandleAuraEmpathy(bool apply, bool /*Real*/) { - if(GetTarget()->GetTypeId() != TYPEID_UNIT) + if (GetTarget()->GetTypeId() != TYPEID_UNIT && GetTarget()->GetTypeId() != TYPEID_PLAYER) return; - CreatureInfo const * ci = ObjectMgr::GetCreatureTemplate(GetTarget()->GetEntry()); - if(ci && ci->type == CREATURE_TYPE_BEAST) - GetTarget()->ApplyModUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_SPECIALINFO, apply); + GetTarget()->ApplyModUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_SPECIALINFO, apply); } void Aura::HandleAuraUntrackable(bool apply, bool /*Real*/) Creature Type Mask = 0x00000001 (BEAST) Skill (Id 50) "Beast Mastery" Questions: 1. Why when you hover on a player in the forms of cats, bears, etc. damage and armor show 0, but the resistance did not appear? Where is the handling of this moment? 2. How can we determine the forms of the NPC / player, which can cast a spell, so when you change form to remove it if necessary?
  10. The problem is still there. For example, in the quest http://www.wowhead.com/quest=12028 all text says the player instead of the NPC. Due to changes in SCRIPT_COMMAND_TALK rewrote the patch: http://paste2.org/p/1193746 This patch allows you to search not only for NPC entry, but also guid: 1. If datalong3> 0, then datalong2 = entry. 2. If datalong3 = 0, then datalong2 = guid (the case with the flight to taxi).
  11. I do not check, but others say that the core revision 10915 spawn NPC is working properly. Remains the only mistake on the start of the opening event during the transfer of hours.
  12. In the quest cache ReqSourdeId an item listed. An item falls in the presence of a quest, so the chance of a quest. Or we are talking about condition_value1 and condition_value2 in `creature_loot_template`? In this case, for each combination of an item and NPC should be created on 2 lines: 8 CONDITION_QUESTREWARDED Player must have completed a quest first 9 CONDITION_QUESTTAKEN Players must have the quest in the quest log and not completed yet ?
  13. At the moment, if the quest is completed but not delivered, then the player can not receive ancillary an item listed in ReqSourceId, cease to fall, but should. Example: http://www.wowhead.com/quest=12068 (also in other quests of the chain). In the quest is the basic requirement to bring an item, but you have to gather 5 auxiliary item is that the player can impose on themselves the aura, see the NPC and to pass the quest. Now when taking the quest item is impossible to dislodge support and pass the quest. Patch: diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 8cf5741..bcaad71 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -14765,36 +14765,37 @@ void Player::ReputationChanged(FactionEntry const* factionEntry ) bool Player::HasQuestForItem( uint32 itemid ) const { - for( int i = 0; i < MAX_QUEST_LOG_SIZE; ++i ) + for (int i = 0; i < MAX_QUEST_LOG_SIZE; ++i) { uint32 questid = GetQuestSlotQuestId(i); - if ( questid == 0 ) + if (questid == 0) continue; QuestStatusMap::const_iterator qs_itr = mQuestStatus.find(questid); - if(qs_itr == mQuestStatus.end()) + if (qs_itr == mQuestStatus.end()) continue; QuestStatusData const& q_status = qs_itr->second; - if (q_status.m_status == QUEST_STATUS_INCOMPLETE) + if (q_status.m_status == QUEST_STATUS_INCOMPLETE || q_status.m_status == QUEST_STATUS_COMPLETE) { Quest const* qinfo = sObjectMgr.GetQuestTemplate(questid); - if(!qinfo) - continue; - - // hide quest if player is in raid-group and quest is no raid quest - if (GetGroup() && GetGroup()->isRaidGroup() && !qinfo->IsAllowedInRaid() && !InBattleGround()) + if (!qinfo) continue; - // There should be no mixed ReqItem/ReqSource drop - // This part for ReqItem drop - for (int j = 0; j < QUEST_ITEM_OBJECTIVES_COUNT; ++j) + if (q_status.m_status == QUEST_STATUS_INCOMPLETE) { - if(itemid == qinfo->ReqItemId[j] && q_status.m_itemcount[j] < qinfo->ReqItemCount[j] ) - return true; + // hide quest if player is in raid-group and quest is no raid quest + if (GetGroup() && GetGroup()->isRaidGroup() && !qinfo->IsAllowedInRaid() && !InBattleGround()) + continue; + + // There should be no mixed ReqItem drop + for (int j = 0; j < QUEST_ITEM_OBJECTIVES_COUNT; ++j) + { + if (itemid == qinfo->ReqItemId[j] && q_status.m_itemcount[j] < qinfo->ReqItemCount[j]) + return true; + } } - // This part - for ReqSource for (int j = 0; j < QUEST_SOURCE_ITEM_IDS_COUNT; ++j) { // examined item is a source item
  14. 2. If you clear the table `game_event_gameobject`, then the NPC spawns, as it should.
  15. 1. There Event 15 (fishing in Stranglethorn Valley) is every Sunday from 14:00 to 16:00. The database indicated that time. In the logs: start opening event at 13:00, ending - at 15:00. It turns out that at the start and stop opening event is not considered transfer hours. 2. To event number 2 is bound pool with NPC [13602]. At the start of the event NPC does not appear at any point. If you remove it from the pool, then the NPC will appear immediately at all points. It turns out that this pool does not allow the NPC to appear in the world.
  16. Patch no longer needed, it is sufficient: DELETE FROM `spell_script_target` WHERE `entry`=51343; INSERT INTO `spell_script_target` VALUES (51343, 1, 28077), (51343, 1, 28095);
  17. After committing 10842, you can specify the target for spells 43723 in `spell_script_target`, but to implement cast 43753 still need to SPELL_EFFECT_DUMMY, because it is there goal TARGET_AREAEFFECT_INSTANT. diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index d553575..f198be3 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1202,17 +1202,13 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) unitTarget->CastSpell(unitTarget, 43059, true); return; } - // Demon Broiled Surprise - /* FIX ME: Required for correct work implementing implicit target 7 (in pair (22,7)) - case 43723: + case 43723: // Demon Broiled Surprise { - if (m_caster->GetTypeId() != TYPEID_PLAYER) - return; + if (m_caster->GetTypeId() == TYPEID_PLAYER) + m_caster->CastSpell(m_caster, 43753, false); // Demon-Broiled Surprise - ((Player*)m_caster)->CastSpell(unitTarget, 43753, true); return; } - */ case 43882: // Scourging Crystal Controller Dummy { if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT) For database: DELETE FROM `spell_script_target` WHERE `entry`=43723; INSERT INTO `spell_script_target` SET `entry`=43723, `type`=2, `targetentry`=19973; DELETE FROM `spell_scripts` WHERE `id`=43723;
  18. Revision 10829: diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 09cace4..dea6a80 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -4619,9 +4619,19 @@ void Aura::HandlePeriodicTriggerSpell(bool apply, bool /*Real*/) target->CastSpell(target, 32612, true, NULL, this); return; - case 42783: //Wrath of the Astrom... + case 42783: // Wrath of the Astrom... if (m_removeMode == AURA_REMOVE_BY_EXPIRE && GetEffIndex() + 1 < MAX_EFFECT_INDEX) target->CastSpell(target, GetSpellProto()->CalculateSimpleValue(SpellEffectIndex(GetEffIndex()+1)), true); + + return; + case 46221: // Animal Blood + if (target->GetTypeId() == TYPEID_PLAYER && m_removeMode == AURA_REMOVE_BY_DEFAULT && target->IsInWater()) + { + float position_z = target->GetTerrain()->GetWaterLevel(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ()); + // Spawn Blood Pool + target->CastSpell(target->GetPositionX(), target->GetPositionY(), position_z, 63471, true); + } + return; case 51912: // Ultra-Advanced Proto-Typical Shortening Blaster if (m_removeMode == AURA_REMOVE_BY_EXPIRE)
  19. Checking the relevance of the patch.
  20. Checking the relevance of the patch.
  21. Checking the relevance of the patch.
  22. Name effects of spells in the files do not match, so it is hard to find a handler for the effect. diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index e390eed..fee94da 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -682,11 +682,11 @@ enum SpellEffects SPELL_EFFECT_ACTIVATE_RUNE = 146, SPELL_EFFECT_QUEST_FAIL = 147, SPELL_EFFECT_148 = 148, - SPELL_EFFECT_149 = 149, + SPELL_EFFECT_CHARGE2 = 149, SPELL_EFFECT_150 = 150, SPELL_EFFECT_TRIGGER_SPELL_2 = 151, SPELL_EFFECT_152 = 152, - SPELL_EFFECT_153 = 153, + SPELL_EFFECT_CREATE_PET = 153, SPELL_EFFECT_TEACH_TAXI_NODE = 154, SPELL_EFFECT_TITAN_GRIP = 155, SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC = 156, diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index c7d9c24..e5eca83 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -194,7 +194,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]= &Spell::EffectUnused, //131 SPELL_EFFECT_131 used in some test spells &Spell::EffectPlayMusic, //132 SPELL_EFFECT_PLAY_MUSIC sound id in misc value (SoundEntries.dbc) &Spell::EffectUnlearnSpecialization, //133 SPELL_EFFECT_UNLEARN_SPECIALIZATION unlearn profession specialization - &Spell::EffectKillCredit, //134 SPELL_EFFECT_KILL_CREDIT misc value is creature entry + &Spell::EffectKillCredit, //134 SPELL_EFFECT_KILL_CREDIT2 misc value is creature entry &Spell::EffectNULL, //135 SPELL_EFFECT_CALL_PET &Spell::EffectHealPct, //136 SPELL_EFFECT_HEAL_PCT &Spell::EffectEnergisePct, //137 SPELL_EFFECT_ENERGIZE_PCT
  23. Damage must be applied as a percentage: diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 69b1279..64ab7f2 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -352,6 +352,7 @@ void Spell::EffectSchoolDMG(SpellEffectIndex effect_idx) case 29142: // Eyesore Blaster case 35139: // Throw Boom's Doom case 49882: // Leviroth Self-Impale + case 55269: // Deathly Stare { damage = damage * unitTarget->GetMaxHealth() / 100; break;
×
×
  • 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