Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

[Trial of the Champion] not start #658

Closed
click opened this Issue · 14 comments

9 participants

@click
Collaborator

I was Protestant prejudice of the trial champion, is from 5 to normal or heroic 5, just before the start NPC and turn the 3 groups of soldiers entering the arena. then I take the shield with a spear, but
Bug 1: I speel from the 3 to use the spear
Bug: the soldiers do not attack me then do not start Levento ..
or tried to talk it over with the NPC before but does not make me do anything.
could you help me?
Thank you very much

@click
Collaborator

Author: telsamat
this instance is not completed by TC team

@Poli93

Confirmed.

@Betaman2k

Heya
core: 3d9ff95
TDB: latest full DB from u
Patches:NO

The instance totall buggy, all NPC are friendly, u can not run the instance

@digz6666

My fix for the Trial of Champion event, but it doesn't give achievement.
Mounted fight, all boss events and spells, summon memory, drops are working as it should.

Tested with following:
Source: 9004580
Database: TDB 335.49

Author: Batbayar <digz6666@gmail.com>  2012-09-25 22:06:45
Committer: Batbayar <digz6666@gmail.com>  2012-09-25 22:06:45
Parent: f92946e128ed44de21c97900b0a935c7c55fcd65 (Core/Misc: Fix some mem-leaks and uninitialized variables.)
Branch: master
Follows: TDB335.49
Precedes: 

    trial of champion fix.

 src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp 
index d77c84b..d010bfb 100644
@@ -47,7 +47,6 @@ enum eSpells
     SPELL_HOLY_NOVA             = 66546,
     SPELL_SHIELD                = 66515,
     SPELL_CONFESS               = 66680,
-    SPELL_SUMMON_MEMORY         = 66545,

     //Memory
     SPELL_OLD_WOUNDS            = 66620,
@@ -55,9 +54,35 @@ enum eSpells
     SPELL_SHADOWS_PAST          = 66619,
     SPELL_SHADOWS_PAST_H        = 67678,
     SPELL_WAKING_NIGHTMARE      = 66552,
-    SPELL_WAKING_NIGHTMARE_H    = 67677
+    SPELL_WAKING_NIGHTMARE_H    = 67677,
+};
+const uint32 summonMemory[] = {
+    66543,
+    66705,
+    66706,
+    66707,
+    66708,
+    66709,
+    66710,
+    66711,
+    66712,
+    66713,
+    66714,
+    66704,
+    66703,
+    66702,
+    66691,
+    66692,
+    66694,
+    66695,
+    66696,
+    66697,
+    66698,
+    66699,
+    66700,
+    66701,
+    66715,
 };
-
 class OrientationCheck : public std::unary_function<Unit*, bool>
 {
     public:
@@ -338,7 +363,7 @@ public:
                 me->InterruptNonMeleeSpells(true);
                 DoCastAOE(SPELL_HOLY_NOVA, false);
                 DoCast(me, SPELL_SHIELD);
-                DoCastAOE(SPELL_SUMMON_MEMORY, false);
+                DoCastAOE(summonMemory[urand(0, 24)], false);
                 DoCastAOE(SPELL_CONFESS, false);

                 bHealth = true;
@@ -377,6 +402,10 @@ public:
             uiOldWoundsTimer = 12000;
             uiShadowPastTimer = 5000;
             uiWakingNightmare = 7000;
+            me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
+            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+            me->SetReactState(REACT_DEFENSIVE);
+            me->setFaction(14);
         }

         void UpdateAI(const uint32 uiDiff)

 src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp 
index f3b6078..306a479 100644
@@ -108,6 +108,7 @@ void AggroAllPlayers(Creature* temp)

             if (player->isAlive())
             {
+                temp->setFaction(14);
                 temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC);
                 temp->SetReactState(REACT_AGGRESSIVE);
                 temp->SetInCombatWith(player);

 src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp 
index 310dd10..5a9fb92 100644
@@ -27,7 +27,7 @@ EndScriptData */
 #include "trial_of_the_champion.h"

 #define MAX_ENCOUNTER  4
-
+const Position BlackKnightPos = {758.135620f, 639.459778f, 411.722473f, 0.808736f};
 class instance_trial_of_the_champion : public InstanceMapScript
 {
 public:
@@ -206,7 +206,9 @@ public:
                         {
                             pBoss->GetMotionMaster()->MovePoint(0, 746.88f, 618.74f, 411.06f);
                             pBoss->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+                            pBoss->setFaction(14);
                             pBoss->SetReactState(REACT_AGGRESSIVE);
+                            pBoss->AI()->DoZoneInCombat();
                         }
                     }
                     break;
@@ -217,6 +219,16 @@ public:
                         pAnnouncer->GetMotionMaster()->MovePoint(0, 748.309f, 619.487f, 411.171f);
                         pAnnouncer->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                         pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_EADRIC_LOOT_H : GO_EADRIC_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, 0, 0, 0, 0, 90000000);
+
+                        if(Creature* knightVehicle = pAnnouncer->SummonCreature(VEHICLE_BLACK_KNIGHT, 769.834f, 651.915f, 447.035f, 0)){
+                            knightVehicle->SetReactState(REACT_PASSIVE);
+                            if(Creature* bKnight = knightVehicle->SummonCreature(35451, BlackKnightPos)){
+                                bKnight->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+                                bKnight->setFaction(14);
+                                bKnight->SetReactState(REACT_AGGRESSIVE);
+                                bKnight->AI()->DoZoneInCombat();
+                            }
+                        }
                     }
                     break;
                 case BOSS_ARGENT_CHALLENGE_P:
@@ -224,8 +236,20 @@ public:
                     if (Creature* pAnnouncer = instance->GetCreature(uiAnnouncerGUID))
                     {
                         pAnnouncer->GetMotionMaster()->MovePoint(0, 748.309f, 619.487f, 411.171f);
-                        pAnnouncer->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
+                        pAnnouncer->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
                         pAnnouncer->SummonGameObject(instance->IsHeroic()? GO_PALETRESS_LOOT_H : GO_PALETRESS_LOOT, 746.59f, 618.49f, 411.09f, 1.42f, 0, 0, 0, 0, 90000000);
+
+                        if(Creature* knightVehicle = pAnnouncer->SummonCreature(VEHICLE_BLACK_KNIGHT, 769.834f, 651.915f, 447.035f, 0)){
+
+                            knightVehicle->SetReactState(REACT_PASSIVE);
+                            if(Creature* bKnight = knightVehicle->SummonCreature(35451, BlackKnightPos)){
+                                bKnight->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+                                bKnight->setFaction(14);
+                                bKnight->SetReactState(REACT_AGGRESSIVE);
+                                bKnight->AI()->DoZoneInCombat();
+                                pAnnouncer->DespawnOrUnsummon();
+                            }
+                        }
                     }
                     break;
             }

 src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.cpp 
index a248851..ecb0c8b 100644
@@ -40,8 +40,8 @@ EndContentData */
 /*######
 ## npc_announcer_toc5
 ######*/
-
-const Position SpawnPosition = {746.261f, 657.401f, 411.681f, 4.65f};
+const Position BlackKnightPos = {758.135620f, 639.459778f, 411.722473f, 0.808736f};
+const Position SpawnPosition  = {746.261f, 657.401f, 411.681f, 4.65f};

 class npc_announcer_toc5 : public CreatureScript
 {
@@ -311,12 +311,24 @@ public:
             {
                 for (uint8 i = 0; i < 3; ++i)
                 {
-                    if (Creature* pTrash = me->SummonCreature(NPC_ARGENT_LIGHWIELDER, SpawnPosition))
+                    if (Creature* pTrash = me->SummonCreature(NPC_ARGENT_LIGHWIELDER, SpawnPosition)){
                         pTrash->AI()->SetData(i, 0);
-                    if (Creature* pTrash = me->SummonCreature(NPC_ARGENT_MONK, SpawnPosition))
+                        pTrash->setFaction(14);
+                        pTrash->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
+                        pTrash->SetReactState(REACT_DEFENSIVE);
+                    }
+                    if (Creature* pTrash = me->SummonCreature(NPC_ARGENT_MONK, SpawnPosition)){
                         pTrash->AI()->SetData(i, 0);
-                    if (Creature* pTrash = me->SummonCreature(NPC_PRIESTESS, SpawnPosition))
+                        pTrash->setFaction(14);
+                        pTrash->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
+                        pTrash->SetReactState(REACT_DEFENSIVE);
+                    }
+                    if (Creature* pTrash = me->SummonCreature(NPC_PRIESTESS, SpawnPosition)){
                         pTrash->AI()->SetData(i, 0);
+                        pTrash->setFaction(14);
+                        pTrash->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
+                        pTrash->SetReactState(REACT_DEFENSIVE);
+                    }
                 }
             }
         }
@@ -358,45 +370,40 @@ public:
             {
                 if (instance->GetData(BOSS_ARGENT_CHALLENGE_E) == NOT_STARTED && instance->GetData(BOSS_ARGENT_CHALLENGE_P) == NOT_STARTED)
                 {
-                    if (instance->GetData(BOSS_GRAND_CHAMPIONS) == NOT_STARTED)
+                    if (instance->GetData(BOSS_GRAND_CHAMPIONS) == NOT_STARTED){
                         me->AI()->SetData(DATA_START, 0);
+                    }

-                    if (instance->GetData(BOSS_GRAND_CHAMPIONS) == DONE)
+                    if (instance->GetData(BOSS_GRAND_CHAMPIONS) == DONE){
                         DoStartArgentChampionEncounter();
-                }
+                    }
+                }else{
+                    if(Creature* knightVehicle = me->SummonCreature(VEHICLE_BLACK_KNIGHT, 769.834f, 651.915f, 447.035f, 0)){
+
+                        knightVehicle->SetReactState(REACT_PASSIVE);

-               if ((instance->GetData(BOSS_GRAND_CHAMPIONS) == DONE &&
-                   instance->GetData(BOSS_ARGENT_CHALLENGE_E) == DONE) ||
-                   instance->GetData(BOSS_ARGENT_CHALLENGE_P) == DONE)
-                    me->SummonCreature(VEHICLE_BLACK_KNIGHT, 769.834f, 651.915f, 447.035f, 0);
+                        if(Creature* bKnight = knightVehicle->SummonCreature(35451, BlackKnightPos)){
+                            bKnight->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+                            bKnight->setFaction(14);
+                            bKnight->SetReactState(REACT_AGGRESSIVE);
+                            bKnight->AI()->DoZoneInCombat();
+                        }
+                    }
+                }
             }
         }

         void AggroAllPlayers(Creature* temp)
         {
             Map::PlayerList const &PlList = me->GetMap()->GetPlayers();
-
+            temp->setFaction(14);
+            temp->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
+            temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
+            temp->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
+            temp->SetReactState(REACT_AGGRESSIVE);
+            temp->AI()->DoZoneInCombat();
             if (PlList.isEmpty())
                 return;
-
-            for (Map::PlayerList::const_iterator i = PlList.begin(); i != PlList.end(); ++i)
-            {
-                if (Player* player = i->getSource())
-                {
-                    if (player->isGameMaster())
-                        continue;
-
-                    if (player->isAlive())
-                    {
-                        temp->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
-                        temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
-                        temp->SetReactState(REACT_AGGRESSIVE);
-                        temp->SetInCombatWith(player);
-                        player->SetInCombatWith(temp);
-                        temp->AddThreat(player, 0.0f);
-                    }
-                }
-            }
         }

        void UpdateAI(const uint32 uiDiff)
---------------------- src/server/game/AI/CreatureAI.cpp ----------------------
index e586811..f20c928 100755
@@ -77,8 +77,10 @@ void CreatureAI::DoZoneInCombat(Creature* creature /*= NULL*/, float maxRangeToN

     if (!creature->HasReactState(REACT_PASSIVE) && !creature->getVictim())
     {
+       creature->SetReactState(REACT_AGGRESSIVE);
+        creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
         sLog->outError(LOG_FILTER_GENERAL, "DoZoneInCombat called for creature that has empty threat list (creature entry = %u)", creature->GetEntry());
-        return;
+        //return;
     }

     Map::PlayerList const& playerList = map->GetPlayers();
@@ -97,7 +99,7 @@ void CreatureAI::DoZoneInCombat(Creature* creature /*= NULL*/, float maxRangeToN
             {
                 creature->SetInCombatWith(player);
                 player->SetInCombatWith(creature);
-                creature->AddThreat(player, 0.0f);
+                creature->AddThreat(player, 1.0f);
             }

             /* Causes certain things to never leave the threat list (Priest Lightwell, etc):

World database fixes:

UPDATE `creature_template` SET `spell1` = '66479', `spell2` = '68282', `spell3` = '62575', `spell4` = '62552' WHERE `entry` = '36557';
UPDATE `creature_template` SET `spell1` = '66479', `spell2` = '68282', `spell3` = '62575', `spell4` = '62552' WHERE `entry` = '36558';
UPDATE `creature_template` SET `spell1` = '66479', `spell2` = '68282', `spell3` = '62575', `spell4` = '62552' WHERE `entry` = '36559';
UPDATE `creature_template` SET `pickpocketloot` = '33498' WHERE `entry` = '33498';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33316';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33217';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33318';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33219';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33320';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33321';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33322';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33323';
UPDATE `creature_template` SET `ScriptName` = 'generic_vehicleAI_toc5' WHERE `entry` = '33324';

UPDATE creature_template set minlevel=82, maxlevel=82, faction_H=14, faction_A=14, ScriptName='npc_memory', difficulty_entry_1=0, exp=2, mindmg=488, maxdmg=642, attackpower=782, dmg_multiplier=7.5, dynamicflags=8, minrangedmg=363, maxrangedmg=521, rangedattackpower=121 
WHERE entry in (35519,35527,35521,35522,35520,35523,35524,35534,35528,35529,35525,35032,35543,35537,35533,35540,35542,35536,35532,35539,35051,35544,35541,35535,35538,35050,35043,35531,35530,35030,35046,35028,35029,35039,35047,35045,35048,35049,35038,35034,35040,35042,35031,35037,35044,35041,35036,35033,35052,34942);

UPDATE creature_template set minlevel=80, maxlevel=80, exp=2, difficulty_entry_1=0, faction_H=16, faction_A=16, mindmg=422, maxdmg=586, attackpower=642, dmg_multiplier=7.5, baseattacktime=2000, dynamicflags=8, minrangedmg=345, maxrangedmg=509, rangedattackpower=103, ScriptName='npc_argent_soldier' 
WHERE entry in (35305, 35306, 35307, 35308, 35309, 35310);

INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES ('34735', '63070', '1', '0');
UPDATE `creature` SET `npcflag` = '16777216' WHERE `guid` = '34735';

INSERT INTO `pickpocketing_loot_template` (`entry`, `item`, `ChanceOrQuestChance`, `lootmode`, `groupid`, `mincountOrRef`, `maxcount`)
VALUES ('33498', '45082', '100', '1', '0', '1', '1');
@Aokromes
Owner
@Aokromes Aokromes closed this
@NeKroZ

digz6666, tested?

@digz6666

Yes. My friend manages 1 private server. Me and my another friend helps him to fix bugs.
i can make 1 video of the instance.

@Maxxgold

Does this still work ?

@digz6666

@Maxxgold Outdated for now, I can update to new revision and maybe I can do some pull request.
On the pull request we can discuss and fix things.

@Maxxgold

@digz6666 That would be awesome if you could fix this. I really love this instance. : )

@Maxxgold

@diz6666 Any update on this : )

@cshaaa

@digz6666 ,do you have the fix to the latest core?

@cshaaa

@digz6666 i have tried it on the latest core b69fd4,but it does not work now.

@lainimer

any news?

@Aokromes Aokromes locked and limited conversation to collaborators
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Something went wrong with that request. Please try again.