Jump to content

seirge

Members
  • Posts

    7
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

seirge's Achievements

Newbie

Newbie (1/3)

0

Reputation

  1. The problem with high (100%) load with omp can be solved via environment variable. Try the following: export OMP_WAIT_POLICY=PASSIVE before starting mangosd
  2. Current code for almost all bosses are not clean (or beautiful). For example, it has great number of copy'n'paste for repeating simple casts (that can be easily done via EAI). As I see there are only two way to solve such issues (for example, http://github.com/seirge/sd2fx/blob/38b615fe3273f17829bef5b37b27b4190df89745/scripts/northrend/naxxramas/boss_patchwerk.cpp ) 1. reimplement events subsystem in scripts (as in tc2 is done) 2. use existing core EventAI subsystem (as proposed). Other idea is to left as it is. But absence of any strict principles in ScriptedAI leads to very unclean and large code. The problem in extending EventAI in core is in fact that real custom actions are required sometimes (choose a target from top3 except top1 if other exist with most HP for example). Implement the whole boss AI as ScriptedAI only because one target of one spell is custom is rather bad idea.
  3. Currently EventAI cannot be used together with scripts. It leads to a lot of code in scripts that can be easily implemented via EventAI. So that's why the following idea is proposed: 1. Add new EVENT_T_CUSTOM that will delegate checking event conditions to scripts 2. Add new ACTION_T_CUSTOM that will delegate event action to scripts 3. Add new TargetByType constant to delegate target selection to scripts This allows to implement several custom conditions/actions via scripts leaving everything else to EventAI. Here is patch for mangos to support such customEAI handler: http://github.com/seirge/sd2fx/blob/master/patches/customEAI.patch Changes required for scriptdev2 are here: http://github.com/seirge/sd2fx/commit/e0e01abeea1d80017b32ba2a429d132f61990dc8 You can also find examples of converted AIs in that repository.
  4. This flymaster (Acherus, Ebon Hold) doesn't work for alliance players (due to wrong DBC data). If alliance player try to use it, it will show 'No path connected'. If Alliance GM try to use it, it will show that he is at nearest fly point (but he also cannot use it). The reason for it is 0 fly mountId in DBC. The following patch (rather a hack) fixes it. It is a dirty hack, but I do not find another possible solution. diff --git a/src/game/DBCStores.cpp b/src/game/DBCStores.cpp index 743c795..8c9f1d4 100644 --- a/src/game/DBCStores.cpp +++ b/src/game/DBCStores.cpp @@ -469,6 +469,11 @@ void LoadDBCStores(const std::string& dataPath) // old continent node (+ nodes virtually at old continents, check explicitly to avoid loading map files for zone info) if (node->map_id < 2 || i == 82 || i == 83 || i == 93 || i == 94) sOldContinentsNodesMask[field] |= submask; + + // fix DK node at Ebon Hold + if (i == 315) { + ((TaxiNodesEntry*)node)->MountCreatureID[1] = 32981; + } } }
  5. The patch will lead to server hang up when trying to save SKILL_UNCHANGED skill. The following patch will fix it. diff --git a/src/game/Player.cpp b/src/game/Player.cpp index fadfc43..38493d5 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -16273,8 +16273,11 @@ void Player::_SaveSkills() // we don't need transactions here. for( SkillStatusMap::iterator itr = mSkillStatus.begin(); itr != mSkillStatus.end(); ) { - if(itr->second.uState == SKILL_UNCHANGED) + if(itr->second.uState == SKILL_UNCHANGED) + { + ++itr; continue; + } if(itr->second.uState == SKILL_DELETED) {
  6. And It would be much slower to load into core. However, does _this_ patch has any problems now? Is it requires testing or there are some issues why it is not accepted?
  7. Try these patches (both). First one disallow to tame exotic pets without talent. Second one disallow to summon exotic pets without talent. From c4d30f295aeb9e296403fa6000b7333ce12d2d46 Mon Sep 17 00:00:00 2001 From: Sergey P. Kondratyev <[email protected]> Date: Sat, 14 Mar 2009 21:42:57 +0600 Subject: [PATCH 1/2] Support for Beast Mastery talent --- src/game/Creature.h | 13 +++++++++++++ src/game/Spell.cpp | 5 +++++ 2 files changed, 18 insertions(+), 0 deletions(-) diff --git a/src/game/Creature.h b/src/game/Creature.h index 90a83df..7c2024c 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -221,6 +221,19 @@ struct CreatureInfo { return type == CREATURE_TYPE_BEAST && family != 0 && (type_flags & CREATURE_TYPEFLAGS_TAMEABLE); } + + bool isExotic() const + { + if (family == CREATURE_FAMILY_DEVILSAUR || + family == CREATURE_FAMILY_CORE_HOUND || + family == CREATURE_FAMILY_CHIMAERA || + family == CREATURE_FAMILY_RHINO || + family == CREATURE_FAMILY_SPIRIT_BEAST || + family == CREATURE_FAMILY_SILITHID || + family == CREATURE_FAMILY_WORM) + return true; + return false; + } }; struct CreatureLocale diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 4ca8b1f..f6399e9 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4037,6 +4037,11 @@ uint8 Spell::CanCast(bool strict) if (!((Creature*)m_targets.getUnitTarget())->GetCreatureInfo()->isTameable ()) return SPELL_FAILED_BAD_TARGETS; + // we must have SPELL_AURA_ALLOW_TAME_PET_TYPE aura in order to tame exotic pets + if (((Creature*)m_targets.getUnitTarget())->GetCreatureInfo()->isExotic () + && !m_caster->HasAuraType(SPELL_AURA_ALLOW_TAME_PET_TYPE) ) + return SPELL_FAILED_BAD_TARGETS; + if(m_caster->GetPetGUID()) return SPELL_FAILED_ALREADY_HAVE_SUMMON; -- 1.6.2 From 4749b6b659fee9fde467e68c3de82265f43f148c Mon Sep 17 00:00:00 2001 From: Sergey P. Kondratyev <[email protected]> Date: Sun, 15 Mar 2009 16:27:06 +0600 Subject: [PATCH 2/2] Do not allow to Summon exotic pets without Beast Mastery talent --- src/game/Pet.cpp | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index d650583..b78cec6 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -165,6 +165,11 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool return true; } + if (cinfo->isExotic () && !owner->HasAuraType(SPELL_AURA_ALLOW_TAME_PET_TYPE) ) { + delete result; + return false; + } + if(getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && cinfo->type == CREATURE_TYPE_DEMON && owner->getClass() == CLASS_WARLOCK)) m_charmInfo->SetPetNumber(pet_number, true); else -- 1.6.2
×
×
  • 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