Jump to content

Auntie Mangos

Moderators
  • Posts

    2446
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by Auntie Mangos

  1. Git is not what Forum Feedback & Help is about. You are looking for Source code mastery. If you have issues, provide the exact instructions you have used, or people will have to make wild guesses.
  2. Just tried using the patch that is Under Review now and found something odd from console ahbot status returns Items loaded for Alliance=542, Horde=542, Neutral=542. Total = 1626 however from MySQL SELECT COUNT(*) FROM auction GROUP BY houseid returns the values 220, 202, 120 //Total is 542 Tested under FreeBSD, MaNGOS Rev 10637, No other patches
  3. http://getmangos.eu/community/viewtopic.php?id=10902
  4. http://getmangos.eu/community/viewtopic.php?id=5153 Didnt test it but it think its the best way!!
  5. I've never used Smartgit, but if it has a GUI only interface you will need something like 'GitBash' that does include all the commands & shell necessary to run the scripts and apply the patches. It looks like you have not followed these instructions http://getmangos.eu/community/post/139809/#p139809 and they can't be anymore comprehensive The merge order is important Stage 1. Use first script to merge mmaps_rewrite with the core Starts by pulling mmaps_rewrite to your harddrive. It then merges the latest core (MaNGOS) with this. You apply the patch supplied (merge_mmap_into_core.patch - copy this to your source <root> where 'createprojects.bat' file exists) to fix these merge conflicts you mention. To finalize the merge (If you don't do this, the code will not be merged) (This opens the default git editor to allow you to edit the commit header for the merge. Just save the file and exit). Stage 2. You then merge the playerbot code with the code merged in Stage 1 above Again use the script and patch supplied for the playerbot merge, as instructed in Stage 1. If you try to compile the code without fixing the merge conflicts, it won't work. If you still have problems, wait until 'movemaps' is integrated into the core or learn more about git. I have updated how the scripts and patches as displayed (Thanks to cyberium) in the above link, so you can read them better. Please note that lines beginning with '#' in the scripts are comments only. Hope this helps
  6. Today I browsed this lovely forum via w3m (only browser I have installed on my server) and I felt like "wow not that bad". Got home looked into archlinux.org website code, installed fluxbb-1.4.4 and came up with this: At the bottom of style/Air.css (Arch part is their respective copyright (dunno, guess it's open source). /* * ARCH GLOBAL NAVBAR * * We're forcing all generic selectors with !important * to help prevent other stylesheets from interfering. * */ /* container for the entire bar */ #archnavbar { height: 40px !important; padding: 10px 15px !important; background: #333 !important; border-bottom: 5px #08c solid !important; } /* logo trickery -- GIF for IE6 and PNG for the rest */ #archnavbarlogo { float: left !important; margin: 0 !important; padding: 0 !important; height: 40px !important; width: 190px !important; } /* IE6 doesn't support alpha PNGs so we serve it a GIF */ #archnavbarlogo { background: url('/fluxbb-1.4.4/img/icon-mangos-mediawiki.png') no-repeat !important; } /* and use a proper PNG for all other modern browsers */ html > body #archnavbarlogo { background: url('/fluxbb-1.4.4/img/icon-mangos-mediawiki.png') no-repeat !important; } /* move the heading/paragraph text offscreen */ #archnavbarlogo p { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; } #archnavbarlogo h1 { margin: 0 !important; padding: 0 !important; text-indent: -9999px !important; } /* make the link the same size as the logo */ #archnavbarlogo a { display: block !important; height: 40px !important; width: 190px !important; } /* display the list inline, float it to the right and style it */ #archnavbar ul { display: inline !important; float: right !important; list-style: none !important; margin: 0 !important; padding: 0 !important; } #archnavbar ul li { float: left !important; font-size: 14px !important; font-family: sans-serif !important; line-height: 45px !important; padding-right: 15px !important; padding-left: 15px !important; } /* style the links */ #archnavbar ul#archnavbarlist li a { color: #999; font-weight: bold !important; text-decoration: none !important; } #archnavbar ul li a:hover { color: white !important; text-decoration: underline !important; } /* * MaNGOS Paypal Love Icon */ #application { *zoom: 1; margin-left: auto; margin-right: auto; width: 147; max-width: 100%; padding: 1em; } #application:after { content: "\\0020"; display: block; height: 0; clear: both; overflow: hidden; visibility: hidden; } #application form#paypal input[type=image] { display: block; position: absolute; top: 0; right: 0; width: 100px; height: 100px; } #application h1 a { display: block; width: 191px; height: 45px; position: relative; } #application h1 a span { position: absolute; width: 100%; height: 100%; } #application { background-color: white; color: #555753; -moz-border-radius-bottomleft: 11px; -webkit-border-bottom-left-radius: 11px; -o-border-bottom-left-radius: 11px; -ms-border-bottom-left-radius: 11px; -khtml-border-bottom-left-rad$ #application form#paypal input[type=image] { text-indent: -9999em; } #application h1 a span { background-image: url('/img/button-donate-mangos.png'); background-position: top left; background-repeat: no-repeat; cursor: pointer; } In header.php: ?> <title><?php echo generate_page_title($page_title, $p) ?></title> <link rel="stylesheet" type="text/css" href="style/<?php echo $pun_user['style'].'.css' ?>" /> + + <div id="archnavbar" class="anb-home"> + <div id="archnavbarlogo"><h1>[url="/"][img=img/icon-mangos-mediawiki.png]</img>[/url]</h1></div> + <div id="archnavbarmenu"> + <ul id="archnavbarlist"> + <li id="anb-home">[url="/"]Home[/url] + <li id="anb-forums">[url="http://getmangos.eu/community"]Forums[/url] + <li id="anb-wiki">[url="http://getmangos.eu/wiki"]Wiki[/url] + <li id="anb-bugs">[url="http://github.com/mangos/mangos/???"]Bugs[/url] + <li id="anb-download">[url="http://github.com/mangos/"]Source[/url] + <li id="anb-download">[url=""][/url] + <li id="anb-download">[url=""][/url] + <li id="anb-download">[url=""][/url] + [/list] + </div> + </div> + <div id="application"> + <form action="https://www.paypal.com/cgi-bin/webscr" id="paypal" method="post"> + <input name="cmd" type="hidden" value="_s-xclick"> + <input name="hosted_button_id" type="hidden" value="9M9GC4P3D52YG"> + <input alt='Give "mangos" some love back. Every bit helps keeping this site running.' name="submit" src="img/button-donate-mangos.png" type="image"> + [img=https://www.paypal.com/en_GB/i/scr/pixel.gif] + </form> <?php if (defined('PUN_ADMIN_CONSOLE')) and a minimized version of the forum icon and the love banner in folder img/. And this is what came out: I'm poor with CSS that's why I didn't do anything on my own, but otherwise I can't stand this forum (ever tried reading from a netbook?). It's not perfect, it's a start, but please change this right aligned style. Regards Skirnir [edit] archlinux.org not .com
  7. You need a map.h without this you will get compile error and you must add IsInWorld() to prevent crash Like I said http://getmangos.eu/community/viewtopic.php?id=15121&p=123374&viewfull=1#post123374
  8. Same here! P.S. Master loot bug references here
  9. The judment are ppm procs. But it won't work with the current system, because that are debuffs on the target, with a proc chance limited by the attackers weapon speed. I tried to fix this month ago (http://getmangos.eu/community/showthread.php?9326-).
  10. On small servers you basically won't see any performance bonuses with any patches just because load is very low. Also, currently packet processing takes alot of time only if you use vmaps/mmaps and any other CPU intensive code. W/o them packet processing is relatively low CPU consumer and with this patch http://getmangos.eu/community/topic/15594/performance-visibility-updates-and-relocations/ it will take only ~10% of overall server load in single-threaded mode. Cheers
  11. problem must fixed now. http://getmangos.eu/community/announcement.php?f=&a=2
  12. Trapoinet (or anyone who can do it), could you post here the SQLs for the vehicles of Strand of the Ancients ( http://www.wowhead.com/npc=27894 and http://www.wowhead.com/npc=28781 ). I'm trying to get the patch for SotA, of russian forums, work with this vehicles version. Thanks in advance ^^ P.S.: Here is the thread in this forum for GO type 33 and related (SotA)
  13. Thank you for the thorough question list! 1. I used wow.exe first, I only used launcher.exe after wow.exe appeared not to work. 2. I only have one installation of wow, and the data(./enGB/realmlist.wtf) folder is in the same place as the wow.exe that I try to run. 3. I wasn't able to completely log on to the original server because my live account is currently not paid. I get the following (from memory) [email protected]/password: the login information is incorrect. Please click this link for help. [live email][live password]: connecting, authentication, then the authenticator window comes up asking for my authenticator number. This would not happen when connecting to the mangos server. 4. I followed the .pdf guide posted by Temporary at http://getmangos.eu/community/showthread.php?13121-World-of-Warcraft-Server-for-Windows-Installation-Guide - this showed the syntax for creating a new user inside the mangosd console, which I followed exactly. Seeing that the client asks for an 'email' login I created a username that looks like an email, in this case [email protected]. This is also the username I tried to log on with. 5. I had not come across these yet. I will test these when I am at home again, also I will look in the account table with sqlyog to see what the user details are. I'll double check that realmlist.wtf is still as I changed it, will disable the launcher.exe, and will let you know what happens
  14. You should better use SOAP now: http://getmangos.eu/community/showthread.php?12712-[9466]-MaNGOS-SOAP-services
  15. Yes, it's help. But after some days it's happen again and again
  16. "2" - This patch would implement that enchanting vellums and the resulting items. "2" - 7812 "2" - http://getmangos.eu/community/viewtopic.php?id=6201 diff --git a/src/game/Item.cpp b/src/game/Item.cpp index 2d25b7f..f4acf34 100644 --- a/src/game/Item.cpp +++ b/src/game/Item.cpp @@ -740,6 +740,10 @@ bool Item::IsFitToSpellRequirements(SpellEntry const* spellInfo) const { ItemPrototype const* proto = GetProto(); + if(spellInfo->Effect[0] == SPELL_EFFECT_ENCHANT_ITEM && ((spellInfo->EquippedItemClass == ITEM_CLASS_ARMOR && IsArmorVellum()) || + (spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON && IsWeaponVellum()))) + return true; + if (spellInfo->EquippedItemClass != -1) // -1 == any item class { if(spellInfo->EquippedItemClass != int32(proto->Class)) diff --git a/src/game/Item.h b/src/game/Item.h index 2f7376a..e0694e6 100644 --- a/src/game/Item.h +++ b/src/game/Item.h @@ -221,6 +221,8 @@ class MANGOS_DLL_SPEC Item : public Object void DeleteFromInventoryDB(); bool IsBag() const { return GetProto()->InventoryType == INVTYPE_BAG; } + bool IsArmorVellum() const { return (GetProto()->Class == ITEM_CLASS_TRADE_GOODS && GetProto()->SubClass == ITEM_SUBCLASS_ARMOR_ENCHANTMENT); } + bool IsWeaponVellum() const { return (GetProto()->Class == ITEM_CLASS_TRADE_GOODS && GetProto()->SubClass == ITEM_SUBCLASS_WEAPON_ENCHANTMENT); } bool IsBroken() const { return GetUInt32Value(ITEM_FIELD_MAXDURABILITY) > 0 && GetUInt32Value(ITEM_FIELD_DURABILITY) == 0; } bool CanBeTraded() const; void SetInTrade(bool b = true) { mb_in_trade = b; } diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 648552d..12448bf 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -3587,6 +3587,18 @@ void Spell::TakeReagents() if (p_caster->CanNoReagentCast(m_spellInfo)) return; + if(m_CastItem) + { + for(int i=0; i<3; ++i) + { + if(m_spellInfo->EffectItemType[i] == m_CastItem->GetEntry()) + { + p_caster->DestroyItemCount(m_CastItem->GetEntry(), 1, true); + return; + } + } + } + for(uint32 x=0;x<8;x++) { if(m_spellInfo->Reagent[x] <= 0) @@ -4397,6 +4409,23 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_BAD_TARGETS; break; } + case SPELL_EFFECT_ENCHANT_ITEM: + { + if(m_spellInfo->EffectItemType[i] && m_targets.getItemTarget()) + { + if(m_targets.getItemTarget()->IsWeaponVellum() || m_targets.getItemTarget()->IsArmorVellum()) + { + ItemPosCountVec dest; + uint8 msg = ((Player*)m_caster)->CanStoreNewItem( NULL_BAG, NULL_SLOT, dest, m_spellInfo->EffectItemType[i], 1 ); + if(msg != EQUIP_ERR_OK) + { + ((Player*)m_caster)->SendEquipError( msg, NULL, NULL ); + return SPELL_FAILED_DONT_REPORT; + } + } + } + break; + } default:break; } } @@ -4866,11 +4895,13 @@ SpellCastResult Spell::CheckItems() Player* p_caster = (Player*)m_caster; + bool isNoReagentReqCast = m_CastItem ? m_CastItem->GetEntry() == m_spellInfo->EffectItemType[0] : false; + // cast item checks if(m_CastItem) { uint32 itemid = m_CastItem->GetEntry(); - if( !p_caster->HasItemCount(itemid,1) ) + if( !p_caster->HasItemCount(itemid,1) && !isNoReagentReqCast) return SPELL_FAILED_ITEM_NOT_READY; ItemPrototype const *proto = m_CastItem->GetProto(); @@ -4943,7 +4974,7 @@ SpellCastResult Spell::CheckItems() if(!m_targets.getItemTarget()) return SPELL_FAILED_ITEM_GONE; - if(!m_targets.getItemTarget()->IsFitToSpellRequirements(m_spellInfo)) + if(!m_targets.getItemTarget()->IsFitToSpellRequirements(m_spellInfo) && !isNoReagentReqCast) return SPELL_FAILED_EQUIPPED_ITEM_CLASS; } // if not item target then required item must be equipped @@ -4975,7 +5006,7 @@ SpellCastResult Spell::CheckItems() } // check reagents (ignore triggered spells with reagents processed by original spell) and special reagent ignore case. - if (!m_IsTriggeredSpell && !p_caster->CanNoReagentCast(m_spellInfo)) + if (!m_IsTriggeredSpell && !p_caster->CanNoReagentCast(m_spellInfo) && !isNoReagentReqCast) { for(uint32 i=0;i<8;++i) { @@ -5039,7 +5070,7 @@ SpellCastResult Spell::CheckItems() else TotemCategory -= 1; } - if(TotemCategory != 0) + if(TotemCategory != 0 && !isNoReagentReqCast) return SPELL_FAILED_TOTEM_CATEGORY; //0x7B // special checks for spell effects diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 10ab438..a5337a6 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -3804,6 +3804,19 @@ void Spell::EffectEnchantItemPerm(uint32 effect_idx) if(!pEnchant) return; + ItemPrototype const* targetProto = itemTarget->GetProto(); + // EffectItemType serves as the entry of the item to be created. + if(m_spellInfo->EffectItemType[effect_idx]) + { + if((m_spellInfo->EquippedItemClass == ITEM_CLASS_ARMOR && itemTarget->IsArmorVellum()) || + (m_spellInfo->EquippedItemClass == ITEM_CLASS_WEAPON && itemTarget->IsWeaponVellum())) + { + unitTarget = m_caster; + DoCreateItem(effect_idx,m_spellInfo->EffectItemType[effect_idx]); + return; + } + } + // item can be in trade slot and have owner diff. from caster Player* item_owner = itemTarget->GetOwner(); if(!item_owner) @@ -6579,4 +6592,4 @@ void Spell::EffectRenamePet(uint32 /*eff_idx*/) return; unitTarget->SetByteValue(UNIT_FIELD_BYTES_2, 2, UNIT_RENAME_ALLOWED); -} \\ No newline at end of file +} Patchfile The patch looks really hacky. It was posted here to get more _constructive_ suggestions.
  17. using only git: git log -1 --pretty=oneline
  18. also posted here: http://getmangos.eu/community/viewtopic.php?id=4159
  19. What bug does the patch fix? What features does the patch add? Leader can reset instance while member is still on it but logged off. After members relog he keep their positions so that permit to bypass all trash. With this patch, no reset is possible if any members is on instance leader try to reset. For which repository revision was the patch created? latest Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. found this old http://getmangos.eu/community/topic/11614/exploit-to-reset-instance/ Who has been writing this patch? Please include either forum user names or email addresses. me Patch: Last one http://paste2.org/p/1889282 Old version only for ref http://paste2.org/p/1885673 diff --git a/src/game/Group.cpp b/src/game/Group.cpp index e0cd4a6..c6f1b36 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -1168,6 +1168,7 @@ bool Group::_addMember(ObjectGuid guid, const char* name, bool isAssistant, uint member.name = name; member.group = group; member.assistant = isAssistant; + member.lastMap = player->GetMapId(); m_memberSlots.push_back(member); SubGroupCounterIncrease(group); @@ -1667,6 +1668,18 @@ bool Group::InCombatToInstance(uint32 instanceId) return false; } +bool Group::SetPlayerMap(const ObjectGuid guid, uint32 mapid) +{ + member_witerator slot = _getMemberWSlot(guid); + if (slot != m_memberSlots.end()) + { + slot->lastMap = mapid; + DEBUG_LOG("Group::SetPlayerMap> map is updated"); + return true; + } + return false; +} + void Group::ResetInstances(InstanceResetMethod method, bool isRaid, Player* SendMsgTo) { if(isBGGroup()) @@ -1677,6 +1690,20 @@ void Group::ResetInstances(InstanceResetMethod method, bool isRaid, Player* Send // we assume that when the difficulty changes, all instances that can be reset will be Difficulty diff = GetDifficulty(isRaid); + OfflineMapList offlineMapList; // to store map of offline players + + if ((method == INSTANCE_RESET_ALL) || (method == INSTANCE_RESET_CHANGE_DIFFICULTY)) + { + // build offline members Map list. For instance reset check. + for(member_citerator itr = m_memberSlots.begin(); itr != m_memberSlots.end(); ++itr) + { + Player* plr = ObjectAccessor::FindPlayer(itr->guid); + // add map from offline player in the list. + if (!plr) + offlineMapList.push_back(itr->lastMap); // add map from that player + } + } + for(BoundInstancesMap::iterator itr = m_boundInstances[diff].begin(); itr != m_boundInstances[diff].end() { DungeonPersistentState *state = itr->second.state; @@ -1701,7 +1728,20 @@ void Group::ResetInstances(InstanceResetMethod method, bool isRaid, Player* Send // if the map is loaded, reset it if (Map *map = sMapMgr.FindMap(state->GetMapId(), state->GetInstanceId())) if (map->IsDungeon() && !(method == INSTANCE_RESET_GROUP_DISBAND && !state->CanReset())) - isEmpty = ((DungeonMap*)map)->Reset(method); + { + // check if there is offline members + if (!offlineMapList.empty()) + for (OfflineMapList::iterator mapItr=offlineMapList.begin(); mapItr!=offlineMapList.end();mapItr++) + if ((*mapItr)==map->GetId()) // check if mapId of one offline member is the same as one we want to reset + { + // if at least one of offline player is in map consider map not empty + isEmpty=false; + break; + } + // now check if online players are in map + if (isEmpty) + isEmpty = ((DungeonMap*)map)->Reset(method); + } if (SendMsgTo) { diff --git a/src/game/Group.h b/src/game/Group.h index b674389..1e0f219 100644 --- a/src/game/Group.h +++ b/src/game/Group.h @@ -195,6 +195,7 @@ class MANGOS_DLL_SPEC Group std::string name; uint8 group; bool assistant; + uint32 lastMap; }; typedef std::list<MemberSlot> MemberSlotList; typedef MemberSlotList::const_iterator member_citerator; @@ -203,7 +204,7 @@ class MANGOS_DLL_SPEC Group protected: typedef MemberSlotList::iterator member_witerator; typedef std::set<Player*> InvitesList; - + typedef std::list<uint32> OfflineMapList; typedef std::vector<Roll*> Rolls; public: @@ -339,6 +340,8 @@ class MANGOS_DLL_SPEC Group void RewardGroupAtKill(Unit* pVictim, Player* player_tap); + bool SetPlayerMap(const ObjectGuid guid, uint32 mapid); + /*********************************************************/ /*** LOOT SYSTEM ***/ /*********************************************************/ diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp diff --git a/src/game/Player.cpp b/src/game/Player.cpp index bffcaad..f3ce03f 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1659,6 +1659,8 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati DEBUG_LOG("Player %s is being teleported to map %u", GetName(), mapid); } + if (Group* grp = GetGroup()) + grp->SetPlayerMap(GetObjectGuid(), mapid); // if we were on a transport, leave if (!(options & TELE_TO_NOT_LEAVE_TRANSPORT) && m_transport) {
  20. 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
  21. kyle1, I'm already wrote patch wich include talent's range bonus blueboy, you should compile new maps and vmaps extractors after you apply mmaps patch, then reextract maps and vmaps, then extract mmaps. I can give you all new extractors or use this (extracted maps, vmaps and mmaps): mmaps: http://narod.ru/disk/24068319000/mmaps.7z.html maps: http://narod.ru/disk/24068689000/maps.7z.html vmaps: http://narod.ru/disk/24068436000/vmaps.7z.html Patch for talent's range bonus: diff --git a/src/game/playerbot/PlayerbotAI.cpp b/src/game/playerbot/PlayerbotAI.cpp index 8b89150..86e9816 100644 --- a/src/game/playerbot/PlayerbotAI.cpp +++ b/src/game/playerbot/PlayerbotAI.cpp @@ -2238,12 +2238,16 @@ bool PlayerbotAI::CastSpell(uint32 spellId) uint64 targetGUID = m_bot->GetSelection(); Unit* pTarget = ObjectAccessor::GetUnit(*m_bot, m_bot->GetSelection()); + Spell* const pSpell = m_bot->FindCurrentSpellBySpellId(spellId); SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(pSpellInfo->rangeIndex); - float max_range = GetSpellMaxRange(srange, false); + float max_range = GetSpellMaxRange(srange, m_bot->IsFriendlyTo(pTarget)); float dist = m_bot->GetCombatDistance(pTarget); - + + if(m_bot->GetSpellModOwner()) + m_bot->ApplySpellMod(pSpellInfo->Id, SPELLMOD_RANGE, max_range, pSpell); + if(dist > max_range) - return false; + return false; if (!m_bot->IsWithinLOSInMap(pTarget)) return false; @@ -2275,7 +2279,6 @@ bool PlayerbotAI::CastSpell(uint32 spellId) // actually cast spell m_bot->CastSpell(pTarget, pSpellInfo, false); - Spell* const pSpell = m_bot->FindCurrentSpellBySpellId(spellId); if (!pSpell) return false;
  22. The main improvement is pathfinding : mobs don't walk in the air/walls/ground. There is a thread about it in "Core modifications" : mmaps redux See the first post to know what functionalities mmaps provide
  23. I've got the same trace after a crash from mindcontrol as Schmoozerd had. Posted it here: http://getmangos.eu/community/viewtopic.php?id=4235&p=119439&viewfull=1#post119439
  24. The Spell: http://www.wowhead.com/?search=demonic+pact#talents Triggered by this pet aura: http://www.wowhead.com/?spell=53646 The proc needs a custom baspoints calculation. It is calculated by the master's spellpower and a coefficient, that is stored in the talent dummy aura. Patch: From 0c15907d784c7b5f6f8ff3d7c737914903577b32 Mon Sep 17 00:00:00 2001 From: pasdVn <[email protected]> Date: Thu, 6 Aug 2009 13:35:38 +0200 Subject: [PATCH] implemented 47236 and ranks --- src/game/Unit.cpp | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 8fb3d78..4b296a9 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -6857,6 +6857,32 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB return false; break; } + // Demonic Pact + case 48090: + { + Unit *owner = GetOwner(); + if( !owner) + return false; + + int32 factor = 0; + // get factor from owner dummy aura + AuraList const& mDummy = owner->GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraList::const_iterator i = mDummy.begin(); i != mDummy.end(); ++i) + if( (*i)->GetModifier()->m_miscvalue == 12 && (*i)->GetSpellProto()->SpellIconID == 3220 ) + { + factor = (*i)->GetModifier()->m_amount; + break; + } + if( !factor) + return false; + + // cancel alredy existing demonic pact to prevent stacking + owner->RemoveAurasDueToSpell(48090); + basepoints0 = owner->SpellBaseDamageBonus(SpellSchoolMask(SPELL_SCHOOL_MASK_MAGIC))* factor /100; + + CastCustomSpell(target,trigger_spell_id,&basepoints0,&basepoints0,NULL,true,castItem,triggeredByAura); + return true; + } // Sword and Board case 50227: { -- 1.5.5.1 github: http://github.com/pasdVn/mangos/commit/0c15907d784c7b5f6f8ff3d7c737914903577b32.patch Don't forget the sql part (procs only on crit): DELETE FROM `spell_proc_event` WHERE `entry` IN ('53646'); INSERT INTO `spell_proc_event` (`entry` ,`SchoolMask` ,`SpellFamilyName` ,`SpellFamilyMask0` ,`SpellFamilyMask1` ,`SpellFamilyMask2` ,`procFlags` ,`procEx` ,`ppmRate` ,`CustomChance` ,`Cooldown`) VALUES ('53646', '0', '0', '0', '0', '0', '0', '2', '0', '0', '0'); Edit: I found a bug report^^: http://getmangos.eu/community/viewtopic.php?id=8038& pasdVn
  25. -What bug does the patch fix? It fix arena team invite in mangos-0.12 branch -Bug report: http://getmangos.eu/community/showpost.php?p=54905&postcount=2793 -What doesn't work? Sometimes players get "U already in team that size", however that's not true. -Patch: diff --git a/src/game/ArenaTeamHandler.cpp b/src/game/ArenaTeamHandler.cpp index ea0567e..27ec4be 100644 --- a/src/game/ArenaTeamHandler.cpp +++ b/src/game/ArenaTeamHandler.cpp @@ -171,7 +171,7 @@ void WorldSession::HandleArenaTeamInviteAcceptOpcode(WorldPacket & /*recv_data*/ if(!at) return; - if(_player->GetArenaTeamId(at->GetType())) + if(_player->GetArenaTeamId(at->GetSlot())) { SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S,"","",ERR_ALREADY_IN_ARENA_TEAM); // already in arena team that size return;
×
×
  • 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