From 8d3b5621028093f29888c8faac651e35e3892e8c Mon Sep 17 00:00:00 2001 From: raczman Date: Sun, 12 Apr 2009 12:45:17 +0200 Subject: Allow GM's to see invisible/stealthed players correctly. <3 Machiavelli. --HG-- branch : trunk --- src/game/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 24d36a42558..addabe73eeb 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -17637,7 +17637,7 @@ bool Player::canSeeOrDetect(Unit const* u, bool detect, bool inVisibleList, bool return false; } - if(u->GetVisibility() == VISIBILITY_OFF) + if(u->GetVisibility() == VISIBILITY_OFF || u->m_invisibilityMask ) { // GMs see any players, not higher GMs and all units if(isGameMaster()) -- cgit v1.2.3 From c82cd936c5b8c9c45fe3a0573081fbcce68ecbca Mon Sep 17 00:00:00 2001 From: Rat Date: Sun, 12 Apr 2009 12:46:21 +0200 Subject: *finished allliance cleaning wave in hyjal --HG-- branch : trunk --- .../scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp | 14 +- .../zone/caverns_of_time/hyjal/hyjal_trash.cpp | 265 +++++++++++++-------- .../zone/caverns_of_time/hyjal/hyjal_trash.h | 1 + 3 files changed, 179 insertions(+), 101 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index 718b9ed4452..4fe60c053ec 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -116,6 +116,15 @@ float VeinPos[14][8]=//spawn points of the ancient gem veins {5441.54, -3321.59, 1651.55, 0.258306, 0, 0, 0.128794, 0.991671} //horde }; +float AllianceOverrunGargPos[5][4]=//gargoyle spawn points in the alliance overrun +{ + {5279.94, -2049.68, 1311.38, 0},//garg1 + {5289.15, -2219.06, 1291.12, 0},//garg2 + {5202.07, -2136.10, 1305.07, 2.8},//garg3 + {5071.52, -2425.63, 1454.48, 5.54},//garg4 + {5120.65, -2467.92, 1463.93, 2.54}//garg5 +}; + float AllianceFirePos[92][8]=//spawn points for the fire visuals (GO) in the alliance base { {5039.9, -1796.84, 1323.88, 2.59222, 0, 0, 0.962511, 0.271243}, @@ -1141,7 +1150,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) pUnit->setActive(true); } } - for(uint8 i = 0; i < 5; i++)//summon 5 abominations + for(uint8 i = 0; i < 3; i++)//summon 3 abominations { uint8 r = rand()%4; Creature* pUnit = m_creature->SummonCreature(ABOMINATION, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); @@ -1156,9 +1165,10 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) for(uint8 i = 0; i < 5; i++)//summon 5 gargoyles { uint8 r = rand()%4; - Creature* pUnit = m_creature->SummonCreature(GARGOYLE, AllianceBase[r][0]+irand(-15,15), AllianceBase[r][1]+irand(-15,15), AllianceBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + Creature* pUnit = m_creature->SummonCreature(GARGOYLE, AllianceOverrunGargPos[i][0], AllianceOverrunGargPos[i][1], AllianceOverrunGargPos[i][2], AllianceOverrunGargPos[i][3], TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { + pUnit->SetHomePosition(AllianceOverrunGargPos[i][0], AllianceOverrunGargPos[i][1], AllianceOverrunGargPos[i][2], AllianceOverrunGargPos[i][3]); ((hyjal_trashAI*)pUnit->AI())->faction = Faction; ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp index 3f6fd1044ff..058d5a0f72d 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp @@ -54,7 +54,7 @@ float FlyPathWPs[3][3]=//waypoints for the gargoyls and frost wyrms in horde bas {5456.67, -2725.48, 1493.08} }; -float AllianceOverrunWP[36][3]=//waypoints in the alliance base used in the end in the cleaning wave +float AllianceOverrunWP[55][3]=//waypoints in the alliance base used in the end in the cleaning wave { {4976.37,-1708.02,1339.43},//0spawn {4994.83,-1725.52,1333.25},//1 start @@ -91,7 +91,26 @@ float AllianceOverrunWP[36][3]=//waypoints in the alliance base used in the end {4983.25, -1857.4, 1320.48},//32 {5015.94, -1821.24, 1321.86},//33 {5027.97, -1775.25, 1321.87},//34 - {5015.27, -1738.77, 1324.83}//35 + {5015.27, -1738.77, 1324.83},//35 + {5081.07, -1902.10, 1346.36},//36 abo start + {5107.65, -1912.03, 1356.49},//37 + {5132.83, -1927.07, 1362.42},//38 + {5147.78, -1954.41, 1365.98},//39 + {5164.96, -1966.48, 1367.04},//40 + {5189.04, -1961.06, 1367.90},//41 + {5212.27, -1975.30, 1365.58},//42 + {5221.82, -1994.18, 1364.97},//43 end1 + {5202.23, -1994.94, 1367.59},//44 end2 + {5279.94, -2049.68, 1311.38},//45 garg1 + {5289.15, -2219.06, 1291.12},//46 garg2 + {5202.07, -2136.10, 1305.07},//47 garg3 + {5071.52, -2425.63, 1454.48},//48 garg4 + {5120.65, -2467.92, 1463.93},//49 garg5 + {5283.04, -2043.26, 1300.11},//50 garg target1 + {5313.22, -2207.60, 1290.06},//51 garg target2 + {5180.41, -2121.87, 1292.62},//52 garg target3 + {5088.68, -2432.04, 1441.73},//53 garg target4 + {5111.26, -2454.73, 1449.63}//54 garg target5 }; @@ -167,12 +186,124 @@ void hyjal_trashAI::UpdateAI(const uint32 diff) { SetupOverrun = true; if(faction == 0) - { - for(uint8 i = 0; i < 4; i++) - AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]); + { + if(m_creature->GetEntry() == GARGOYLE) + { + switch(OverrunType) + { + case 0: + { + DummyTarget[0] = AllianceOverrunWP[50][0]; + DummyTarget[1] = AllianceOverrunWP[50][1]; + DummyTarget[2] = AllianceOverrunWP[50][2]; + } + break; + case 1: + { + DummyTarget[0] = AllianceOverrunWP[51][0]; + DummyTarget[1] = AllianceOverrunWP[51][1]; + DummyTarget[2] = AllianceOverrunWP[51][2]; + } + break; + case 2: + { + DummyTarget[0] = AllianceOverrunWP[52][0]; + DummyTarget[1] = AllianceOverrunWP[52][1]; + DummyTarget[2] = AllianceOverrunWP[52][2]; + } + break; + case 3: + { + DummyTarget[0] = AllianceOverrunWP[53][0]; + DummyTarget[1] = AllianceOverrunWP[53][1]; + DummyTarget[2] = AllianceOverrunWP[53][2]; + } + break; + case 4: + { + DummyTarget[0] = AllianceOverrunWP[54][0]; + DummyTarget[1] = AllianceOverrunWP[54][1]; + DummyTarget[2] = AllianceOverrunWP[54][2]; + } + break; + } + + } + if(m_creature->GetEntry() == ABOMINATION) + { + for(uint8 i = 0; i < 4; i++) + AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]); + switch(OverrunType) + { + case 0: + AddWaypoint( 4, AllianceOverrunWP[35][0]+irand(-3,3), AllianceOverrunWP[35][1]+irand(-3,3), AllianceOverrunWP[35][2]); + AddWaypoint( 5, AllianceOverrunWP[34][0]+irand(-3,3), AllianceOverrunWP[34][1]+irand(-3,3), AllianceOverrunWP[34][2]); + AddWaypoint( 6, AllianceOverrunWP[33][0]+irand(-3,3), AllianceOverrunWP[33][1]+irand(-3,3), AllianceOverrunWP[33][2]); + AddWaypoint( 7, AllianceOverrunWP[32][0]+irand(-3,3), AllianceOverrunWP[32][1]+irand(-3,3), AllianceOverrunWP[32][2]); + AddWaypoint( 8, AllianceOverrunWP[31][0]+irand(-3,3), AllianceOverrunWP[31][1]+irand(-3,3), AllianceOverrunWP[31][2]); + AddWaypoint( 9, AllianceOverrunWP[30][0]+irand(-3,3), AllianceOverrunWP[30][1]+irand(-3,3), AllianceOverrunWP[30][2]); + AddWaypoint(10, AllianceOverrunWP[29][0]+irand(-3,3), AllianceOverrunWP[29][1]+irand(-3,3), AllianceOverrunWP[29][2]); + AddWaypoint(11, AllianceOverrunWP[36][0]+irand(-3,3), AllianceOverrunWP[36][1]+irand(-3,3), AllianceOverrunWP[36][2]); + AddWaypoint(12, AllianceOverrunWP[37][0]+irand(-3,3), AllianceOverrunWP[37][1]+irand(-3,3), AllianceOverrunWP[37][2]); + AddWaypoint(13, AllianceOverrunWP[38][0]+irand(-3,3), AllianceOverrunWP[38][1]+irand(-3,3), AllianceOverrunWP[38][2]); + AddWaypoint(14, AllianceOverrunWP[39][0]+irand(-3,3), AllianceOverrunWP[39][1]+irand(-3,3), AllianceOverrunWP[39][2]); + AddWaypoint(15, AllianceOverrunWP[40][0]+irand(-3,3), AllianceOverrunWP[40][1]+irand(-3,3), AllianceOverrunWP[40][2]); + AddWaypoint(16, AllianceOverrunWP[41][0]+irand(-3,3), AllianceOverrunWP[41][1]+irand(-3,3), AllianceOverrunWP[41][2]); + AddWaypoint(17, AllianceOverrunWP[42][0]+irand(-3,3), AllianceOverrunWP[42][1]+irand(-3,3), AllianceOverrunWP[42][2]); + AddWaypoint(18, AllianceOverrunWP[43][0]+irand(-3,3), AllianceOverrunWP[43][1]+irand(-3,3), AllianceOverrunWP[43][2]); + m_creature->SetHomePosition(AllianceOverrunWP[43][0]+irand(-3,3), AllianceOverrunWP[43][1]+irand(-3,3), AllianceOverrunWP[43][2],0); + SetDespawnAtEnd(false); + LastOverronPos = 18; + Start(true, true, true); + break; + case 1: + AddWaypoint( 4, AllianceOverrunWP[35][0]+irand(-3,3), AllianceOverrunWP[35][1]+irand(-3,3), AllianceOverrunWP[35][2]); + AddWaypoint( 5, AllianceOverrunWP[34][0]+irand(-3,3), AllianceOverrunWP[34][1]+irand(-3,3), AllianceOverrunWP[34][2]); + AddWaypoint( 6, AllianceOverrunWP[33][0]+irand(-3,3), AllianceOverrunWP[33][1]+irand(-3,3), AllianceOverrunWP[33][2]); + AddWaypoint( 7, AllianceOverrunWP[32][0]+irand(-3,3), AllianceOverrunWP[32][1]+irand(-3,3), AllianceOverrunWP[32][2]); + AddWaypoint( 8, AllianceOverrunWP[31][0]+irand(-3,3), AllianceOverrunWP[31][1]+irand(-3,3), AllianceOverrunWP[31][2]); + AddWaypoint( 9, AllianceOverrunWP[30][0]+irand(-3,3), AllianceOverrunWP[30][1]+irand(-3,3), AllianceOverrunWP[30][2]); + AddWaypoint(10, AllianceOverrunWP[29][0]+irand(-3,3), AllianceOverrunWP[29][1]+irand(-3,3), AllianceOverrunWP[29][2]); + AddWaypoint(11, AllianceOverrunWP[36][0]+irand(-3,3), AllianceOverrunWP[36][1]+irand(-3,3), AllianceOverrunWP[36][2]); + AddWaypoint(12, AllianceOverrunWP[37][0]+irand(-3,3), AllianceOverrunWP[37][1]+irand(-3,3), AllianceOverrunWP[37][2]); + AddWaypoint(13, AllianceOverrunWP[38][0]+irand(-3,3), AllianceOverrunWP[38][1]+irand(-3,3), AllianceOverrunWP[38][2]); + AddWaypoint(14, AllianceOverrunWP[39][0]+irand(-3,3), AllianceOverrunWP[39][1]+irand(-3,3), AllianceOverrunWP[39][2]); + AddWaypoint(15, AllianceOverrunWP[40][0]+irand(-3,3), AllianceOverrunWP[40][1]+irand(-3,3), AllianceOverrunWP[40][2]); + AddWaypoint(16, AllianceOverrunWP[41][0]+irand(-3,3), AllianceOverrunWP[41][1]+irand(-3,3), AllianceOverrunWP[41][2]); + AddWaypoint(17, AllianceOverrunWP[42][0]+irand(-3,3), AllianceOverrunWP[42][1]+irand(-3,3), AllianceOverrunWP[42][2]); + AddWaypoint(18, AllianceOverrunWP[44][0]+irand(-3,3), AllianceOverrunWP[44][1]+irand(-3,3), AllianceOverrunWP[44][2]); + m_creature->SetHomePosition(AllianceOverrunWP[44][0]+irand(-3,3), AllianceOverrunWP[44][1]+irand(-3,3), AllianceOverrunWP[44][2],0); + SetDespawnAtEnd(false); + LastOverronPos = 18; + Start(true, true, true); + break; + default: + AddWaypoint( 4, AllianceOverrunWP[35][0]+irand(-3,3), AllianceOverrunWP[35][1]+irand(-3,3), AllianceOverrunWP[35][2]); + AddWaypoint( 5, AllianceOverrunWP[34][0]+irand(-3,3), AllianceOverrunWP[34][1]+irand(-3,3), AllianceOverrunWP[34][2]); + AddWaypoint( 6, AllianceOverrunWP[33][0]+irand(-3,3), AllianceOverrunWP[33][1]+irand(-3,3), AllianceOverrunWP[33][2]); + AddWaypoint( 7, AllianceOverrunWP[32][0]+irand(-3,3), AllianceOverrunWP[32][1]+irand(-3,3), AllianceOverrunWP[32][2]); + AddWaypoint( 8, AllianceOverrunWP[31][0]+irand(-3,3), AllianceOverrunWP[31][1]+irand(-3,3), AllianceOverrunWP[31][2]); + AddWaypoint( 9, AllianceOverrunWP[30][0]+irand(-3,3), AllianceOverrunWP[30][1]+irand(-3,3), AllianceOverrunWP[30][2]); + AddWaypoint(10, AllianceOverrunWP[29][0]+irand(-3,3), AllianceOverrunWP[29][1]+irand(-3,3), AllianceOverrunWP[29][2]); + AddWaypoint(11, AllianceOverrunWP[28][0]+irand(-3,3), AllianceOverrunWP[28][1]+irand(-3,3), AllianceOverrunWP[28][2]); + AddWaypoint(12, AllianceOverrunWP[27][0]+irand(-3,3), AllianceOverrunWP[27][1]+irand(-3,3), AllianceOverrunWP[27][2]); + AddWaypoint(13, AllianceOverrunWP[26][0]+irand(-3,3), AllianceOverrunWP[26][1]+irand(-3,3), AllianceOverrunWP[26][2]); + AddWaypoint(14, AllianceOverrunWP[25][0]+irand(-3,3), AllianceOverrunWP[25][1]+irand(-3,3), AllianceOverrunWP[25][2]); + AddWaypoint(15, AllianceOverrunWP[24][0]+irand(-3,3), AllianceOverrunWP[24][1]+irand(-3,3), AllianceOverrunWP[24][2]); + AddWaypoint(16, AllianceOverrunWP[23][0]+irand(-3,3), AllianceOverrunWP[23][1]+irand(-3,3), AllianceOverrunWP[23][2]); + AddWaypoint(17, AllianceOverrunWP[22][0]+irand(-3,3), AllianceOverrunWP[22][1]+irand(-3,3), AllianceOverrunWP[22][2]); + //m_creature->SetHomePosition(AllianceOverrunWP[0][0]+irand(-3,3), AllianceOverrunWP[0][1]+irand(-3,3), AllianceOverrunWP[0][2],0); + SetDespawnAtEnd(true); + LastOverronPos = 17; + Start(true, true, true); + break; + } + } if(m_creature->GetEntry() == GHOUL) { - switch(OverrunType)//0-19 ghouls, 20-24 abominations, 25-29 gargoyles + for(uint8 i = 0; i < 4; i++) + AddWaypoint(i, AllianceWPs[i][0]+irand(-3,3), AllianceWPs[i][1]+irand(-3,3), AllianceWPs[i][2]); + switch(OverrunType) { case 0: AddWaypoint(4, AllianceOverrunWP[1][0]+irand(-3,3), AllianceOverrunWP[1][1]+irand(-3,3), AllianceOverrunWP[1][2]); @@ -252,81 +383,7 @@ void hyjal_trashAI::UpdateAI(const uint32 diff) Start(true, true, true); break; } - } - //}else if(faction == 1 && m_creature->GetEntry() != GARGOYLE){ - // switch(OverrunType) - // { - // case 0:break;//infernal - // case 1: - // AddWaypoint(0, HordeOverrunWP[6][0], HordeOverrunWP[6][1], HordeOverrunWP[6][2]); - // AddWaypoint(1, HordeOverrunWP[7][0]+irand(-3,3), HordeOverrunWP[7][1]+irand(-3,3), HordeOverrunWP[7][2]); - // SetDespawnAtEnd(false); - // LastOverronPos = 1; - // Start(true, true, true); - // break; - // case 2: - // AddWaypoint(0, HordeOverrunWP[6][0], HordeOverrunWP[6][1], HordeOverrunWP[6][2]); - // AddWaypoint(1, HordeOverrunWP[7][0]+irand(-3,3), HordeOverrunWP[7][1]+irand(-3,3), HordeOverrunWP[7][2]); - // SetDespawnAtEnd(false); - // LastOverronPos = 1; - // Start(true, true, true); - // break; - // case 3: - // AddWaypoint(0, HordeOverrunWP[8][0], HordeOverrunWP[8][1], HordeOverrunWP[8][2]); - // AddWaypoint(1, HordeOverrunWP[9][0]+irand(-3,3), HordeOverrunWP[9][1]+irand(-3,3), HordeOverrunWP[9][2]); - // SetDespawnAtEnd(false); - // LastOverronPos = 1; - // Start(true, true, true); - // break; - // case 4: - // AddWaypoint(0, HordeOverrunWP[10][0], HordeOverrunWP[10][1], HordeOverrunWP[10][2]); - // AddWaypoint(1, HordeOverrunWP[11][0], HordeOverrunWP[11][1], HordeOverrunWP[11][2]); - // AddWaypoint(2, HordeOverrunWP[12][0], HordeOverrunWP[12][1], HordeOverrunWP[12][2]); - // AddWaypoint(3, HordeOverrunWP[13][0]+irand(-3,3), HordeOverrunWP[13][1]+irand(-3,3), HordeOverrunWP[13][2]); - // SetDespawnAtEnd(false); - // LastOverronPos = 3; - // Start(true, true, true); - // break; - // case 5: - // AddWaypoint(0, HordeOverrunWP[14][0], HordeOverrunWP[14][1], HordeOverrunWP[14][2]); - // AddWaypoint(1, HordeOverrunWP[15][0], HordeOverrunWP[15][1], HordeOverrunWP[15][2]); - // AddWaypoint(2, HordeOverrunWP[16][0]+irand(-3,3), HordeOverrunWP[16][1]+irand(-3,3), HordeOverrunWP[16][2]); - // SetDespawnAtEnd(false); - // LastOverronPos = 2; - // Start(true, true, true); - // break; - // case 6: - // AddWaypoint(0, HordeOverrunWP[17][0], HordeOverrunWP[17][1], HordeOverrunWP[17][2]); - // AddWaypoint(1, HordeOverrunWP[18][0], HordeOverrunWP[18][1], HordeOverrunWP[18][2]); - // AddWaypoint(2, HordeOverrunWP[19][0], HordeOverrunWP[19][1], HordeOverrunWP[19][2]); - // AddWaypoint(3, HordeOverrunWP[20][0], HordeOverrunWP[20][1], HordeOverrunWP[20][2]); - // AddWaypoint(4, HordeOverrunWP[21][0], HordeOverrunWP[21][1], HordeOverrunWP[21][2]); - // AddWaypoint(5, HordeOverrunWP[22][0], HordeOverrunWP[22][1], HordeOverrunWP[22][2]); - // AddWaypoint(6, HordeOverrunWP[23][0], HordeOverrunWP[23][1], HordeOverrunWP[23][2]); - // AddWaypoint(7, HordeOverrunWP[24][0], HordeOverrunWP[24][1], HordeOverrunWP[24][2]); - // AddWaypoint(8, HordeOverrunWP[25][0], HordeOverrunWP[25][1], HordeOverrunWP[25][2]); - // AddWaypoint(9, HordeOverrunWP[26][0]+irand(-3,3), HordeOverrunWP[26][1]+irand(-3,3), HordeOverrunWP[26][2]); - // SetDespawnAtEnd(true); - // LastOverronPos = 9; - // Start(true, true, true); - // break; - // case 7: - // AddWaypoint(0, HordeOverrunWP[27][0], HordeOverrunWP[27][1], HordeOverrunWP[27][2]); - // AddWaypoint(1, HordeOverrunWP[28][0], HordeOverrunWP[28][1], HordeOverrunWP[28][2]); - // AddWaypoint(2, HordeOverrunWP[29][0], HordeOverrunWP[29][1], HordeOverrunWP[29][2]); - // AddWaypoint(3, HordeOverrunWP[30][0], HordeOverrunWP[30][1], HordeOverrunWP[30][2]); - // AddWaypoint(4, HordeOverrunWP[31][0], HordeOverrunWP[31][1], HordeOverrunWP[31][2]); - // AddWaypoint(5, HordeOverrunWP[32][0]+irand(-3,3), HordeOverrunWP[32][1]+irand(-3,3), HordeOverrunWP[32][2]); - // SetDespawnAtEnd(true); - // LastOverronPos = 5; - // Start(true, true, true); - // break; - // } - //}else if(faction == 1 && m_creature->GetEntry() == GARGOYLE){ - // AddWaypoint(0, 5536.65+irand(-80,+80), -2710.66+irand(-80,+80), 1504.45+irand(-5,+5)); - // SetDespawnAtEnd(false); - // LastOverronPos = 0; - // Start(false, true, true); + } } } } @@ -351,6 +408,9 @@ void hyjal_trashAI::JustDied(Unit *victim) ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; ((hyjal_trashAI*)pUnit->AI())->OverrunType = OverrunType; ((hyjal_trashAI*)pUnit->AI())->SetupOverrun = true; + ((hyjal_trashAI*)pUnit->AI())->DummyTarget[0] = DummyTarget[0]; + ((hyjal_trashAI*)pUnit->AI())->DummyTarget[1] = DummyTarget[1]; + ((hyjal_trashAI*)pUnit->AI())->DummyTarget[2] = DummyTarget[2]; pUnit->setActive(true); pUnit->AI()->EnterEvadeMode(); } @@ -542,15 +602,17 @@ struct mob_abominationAI : public hyjal_trashAI } if (i == LastOverronPos && IsOverrun) { - Creature* pUnit = m_creature->SummonCreature(17931, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 2*60*1000); - if(pUnit) + if(faction == 0 && LastOverronPos == 17)//alliance round { - pUnit->SetVisibility(VISIBILITY_OFF); - pUnit->SetMaxHealth(10000000); - pUnit->SetHealth(10000000); - pUnit->setFaction(17772); - pUnit->Attack(m_creature, true); - m_creature->AddThreat(pUnit,0); + Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),4928.48+irand(-10,10), -1526.38+irand(-10,10), 1326.83+irand(-10,10),0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + if(pUnit) + { + ((hyjal_trashAI*)pUnit->AI())->faction = faction; + ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; + ((hyjal_trashAI*)pUnit->AI())->OverrunType = 2;//default + ((hyjal_trashAI*)pUnit->AI())->SetupOverrun = false; + pUnit->setActive(true); + } } } } @@ -639,15 +701,10 @@ struct mob_ghoulAI : public hyjal_trashAI if (target && target->isAlive()) m_creature->AddThreat(target,0.0); } - } - if(faction == 0)//alliance round - { - } if (i == LastOverronPos && IsOverrun) { m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACKUNARMED); - //m_creature->SetHomePosition(m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation()); if(faction == 0 && LastOverronPos == 17)//alliance round { Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),4928.48+irand(-10,10), -1526.38+irand(-10,10), 1326.83+irand(-10,10),0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); @@ -1275,6 +1332,7 @@ struct mob_gargoyleAI : public hyjal_trashAI pInstance = ((ScriptedInstance*)c->GetInstanceData()); go = false; pos = 0; + DummyTarget[0] = 0;DummyTarget[1] = 0;DummyTarget[2] = 0; Reset(); } @@ -1283,7 +1341,7 @@ struct mob_gargoyleAI : public hyjal_trashAI uint32 pos; uint32 MoveTimer; float Zpos; - bool forcemove; + bool forcemove; void Reset() { @@ -1291,7 +1349,7 @@ struct mob_gargoyleAI : public hyjal_trashAI Zpos = 10.0; StrikeTimer = 2000+rand()%5000; MoveTimer = 0; - m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING); + m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT + MOVEMENTFLAG_LEVITATING); } void WaypointReached(uint32 i) @@ -1318,14 +1376,12 @@ struct mob_gargoyleAI : public hyjal_trashAI void JustDied(Unit *victim) { - if(pInstance && IsEvent) - pInstance->SetData(DATA_TRASH, 0);//signal trash is dead - float x,y,z; m_creature->GetPosition(x,y,z); z = m_creature->GetMap()->GetVmapHeight(x, y, z, true); m_creature->GetMotionMaster()->MovePoint(0,x,y,z); m_creature->Relocate(x,y,z,0); + hyjal_trashAI::JustDied(victim); } void UpdateAI(const uint32 diff) @@ -1358,6 +1414,17 @@ struct mob_gargoyleAI : public hyjal_trashAI } } } + if(IsOverrun && !UpdateVictim()) + { + if(faction == 0)//alliance + { + if(StrikeTimerCastSpell(DummyTarget[0],DummyTarget[1],DummyTarget[2],SPELL_GARGOYLE_STRIKE,false); + StrikeTimer = 2000+rand()%1000; + }else StrikeTimer -= diff; + } + } if (!UpdateVictim()) return; if(m_creature->GetDistance(m_creature->getVictim()) >= 20 || forcemove) diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h index 3ea12038436..1b5c0c3ab37 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h @@ -34,6 +34,7 @@ struct TRINITY_DLL_DECL hyjal_trashAI : public npc_escortAI uint8 faction; bool useFlyPath; uint32 damageTaken; + float DummyTarget[3]; //private: }; -- cgit v1.2.3 From 1e77ccd935b7706b7892b40803cd800e970eeee3 Mon Sep 17 00:00:00 2001 From: raczman Date: Sun, 12 Apr 2009 12:57:06 +0200 Subject: Change container type for guilds to Map. Use const_iterator in case nothing is modified in loop. author: bladex. --HG-- branch : trunk --- src/game/ArenaTeam.cpp | 8 ++++---- src/game/Guild.cpp | 12 ++++++------ src/game/ObjectMgr.cpp | 43 +++++++++++++++++++++++++++---------------- src/game/ObjectMgr.h | 13 +++++++------ 4 files changed, 44 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp index c498ed33be4..747ad811b85 100644 --- a/src/game/ArenaTeam.cpp +++ b/src/game/ArenaTeam.cpp @@ -297,7 +297,7 @@ void ArenaTeam::Disband(WorldSession *session) CharacterDatabase.PExecute("DELETE FROM arena_team_member WHERE arenateamid = '%u'", Id); //< this should be alredy done by calling DelMember(memberGuids[j]); for each member CharacterDatabase.PExecute("DELETE FROM arena_team_stats WHERE arenateamid = '%u'", Id); CharacterDatabase.CommitTransaction(); - objmgr.RemoveArenaTeam(this); + objmgr.RemoveArenaTeam(Id); } void ArenaTeam::Roster(WorldSession *session) @@ -309,7 +309,7 @@ void ArenaTeam::Roster(WorldSession *session) data << uint32(GetMembersSize()); // members count data << uint32(GetType()); // arena team type? - for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for (MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { pl = objmgr.GetPlayer(itr->guid); @@ -361,7 +361,7 @@ void ArenaTeam::NotifyStatsChanged() { // this is called after a rated match ended // updates arena team stats for every member of the team (not only the ones who participated!) - for(MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for(MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player * plr = objmgr.GetPlayer(itr->guid); if(plr) @@ -434,7 +434,7 @@ void ArenaTeam::SetStats(uint32 stat_type, uint32 value) void ArenaTeam::BroadcastPacket(WorldPacket *packet) { - for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for (MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player *player = objmgr.GetPlayer(itr->guid); if(player) diff --git a/src/game/Guild.cpp b/src/game/Guild.cpp index 56d82c1a313..87dbb81c5c6 100644 --- a/src/game/Guild.cpp +++ b/src/game/Guild.cpp @@ -709,7 +709,7 @@ void Guild::Disband() CharacterDatabase.PExecute("DELETE FROM guild_bank_eventlog WHERE guildid = '%u'",Id); CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE guildid = '%u'",Id); CharacterDatabase.CommitTransaction(); - objmgr.RemoveGuild(this); + objmgr.RemoveGuild(Id); } void Guild::Roster(WorldSession *session) @@ -721,7 +721,7 @@ void Guild::Roster(WorldSession *session) data << GINFO; data << (uint32)m_ranks.size(); - for (RankList::iterator ritr = m_ranks.begin(); ritr != m_ranks.end();++ritr) + for (RankList::const_iterator ritr = m_ranks.begin(); ritr != m_ranks.end(); ++ritr) { data << (uint32)ritr->rights; data << (uint32)ritr->BankMoneyPerDay; // count of: withdraw gold(gold/day) Note: in game set gold, in packet set bronze. @@ -731,7 +731,7 @@ void Guild::Roster(WorldSession *session) data << (uint32)ritr->TabSlotPerDay[i]; // for TAB_i count of: withdraw items(stack/day) } } - for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for (MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { if (Player *pl = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER))) { @@ -771,7 +771,7 @@ void Guild::Query(WorldSession *session) data << Id; data << name; - RankList::iterator itr; + for (size_t i = 0 ; i < 10; ++i) // show always 10 ranks { if(i < m_ranks.size()) @@ -1022,7 +1022,7 @@ void Guild::DisplayGuildBankContentUpdate(uint8 TabId, int32 slot1, int32 slot2) AppendDisplayGuildBankSlot(data, tab, slot2); } - for(MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for(MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player *player = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER)); if(!player) @@ -1060,7 +1060,7 @@ void Guild::DisplayGuildBankContentUpdate(uint8 TabId, GuildItemPosCountVec cons for(GuildItemPosCountVec::const_iterator itr = slots.begin(); itr != slots.end(); ++itr) AppendDisplayGuildBankSlot(data, tab, itr->slot); - for(MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + for(MemberList::const_iterator itr = members.begin(); itr != members.end(); ++itr) { Player *player = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER)); if(!player) diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index fbe22bea64b..9d4e3020cfc 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -172,8 +172,10 @@ ObjectMgr::~ObjectMgr() // free group and guild objects for (GroupSet::iterator itr = mGroupSet.begin(); itr != mGroupSet.end(); ++itr) delete (*itr); - for (GuildSet::iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - delete (*itr); + + for (GuildMap::iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr) + delete itr->second; + mGuildMap.clear(); for (CachePlayerInfoMap::iterator itr = m_mPlayerInfoMap.begin(); itr != m_mPlayerInfoMap.end(); ++itr) delete itr->second; @@ -251,40 +253,49 @@ Group * ObjectMgr::GetGroupByLeader(const uint64 &guid) const Guild * ObjectMgr::GetGuildById(const uint32 GuildId) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if ((*itr)->GetId() == GuildId) - return *itr; + GuildMap::const_iterator itr = mGuildMap.find(GuildId); + if (itr != mGuildMap.end()) + return itr->second; return NULL; } Guild * ObjectMgr::GetGuildByName(const std::string& guildname) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if ((*itr)->GetName() == guildname) - return *itr; + for(GuildMap::const_iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr) + if (itr->second->GetName() == guildname) + return itr->second; return NULL; } std::string ObjectMgr::GetGuildNameById(const uint32 GuildId) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if ((*itr)->GetId() == GuildId) - return (*itr)->GetName(); + GuildMap::const_iterator itr = mGuildMap.find(GuildId); + if (itr != mGuildMap.end()) + return itr->second->GetName(); return ""; } Guild* ObjectMgr::GetGuildByLeader(const uint64 &guid) const { - for(GuildSet::const_iterator itr = mGuildSet.begin(); itr != mGuildSet.end(); ++itr) - if( (*itr)->GetLeader() == guid) - return *itr; + for(GuildMap::const_iterator itr = mGuildMap.begin(); itr != mGuildMap.end(); ++itr) + if (itr->second->GetLeader() == guid) + return itr->second; return NULL; } +void ObjectMgr::AddGuild(Guild* guild) +{ + mGuildMap[guild->GetId()] = guild; +} + +void ObjectMgr::RemoveGuild(uint32 Id) +{ + mGuildMap.erase(Id); +} ArenaTeam* ObjectMgr::GetArenaTeamById(const uint32 arenateamid) const { ArenaTeamMap::const_iterator itr = mArenaTeamMap.find(arenateamid); @@ -317,9 +328,9 @@ void ObjectMgr::AddArenaTeam(ArenaTeam* arenaTeam) mArenaTeamMap[arenaTeam->GetId()] = arenaTeam; } -void ObjectMgr::RemoveArenaTeam(ArenaTeam* arenaTeam) +void ObjectMgr::RemoveArenaTeam(uint32 Id) { - mArenaTeamMap.erase( arenaTeam->GetId() ); + mArenaTeamMap.erase(Id); } CreatureInfo const* ObjectMgr::GetCreatureTemplate(uint32 id) diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index bb2866d55c7..954bb6dbe61 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -296,9 +296,10 @@ class ObjectMgr typedef UNORDERED_MAP ItemMap; typedef std::set< Group * > GroupSet; - typedef std::set< Guild * > GuildSet; - typedef UNORDERED_MAP ArenaTeamMap; + typedef UNORDERED_MAP GuildMap; + + typedef UNORDERED_MAP ArenaTeamMap; typedef UNORDERED_MAP QuestMap; @@ -334,14 +335,14 @@ class ObjectMgr Guild* GetGuildById(const uint32 GuildId) const; Guild* GetGuildByName(const std::string& guildname) const; std::string GetGuildNameById(const uint32 GuildId) const; - void AddGuild(Guild* guild) { mGuildSet.insert( guild ); } - void RemoveGuild(Guild* guild) { mGuildSet.erase( guild ); } + void AddGuild(Guild* guild); + void RemoveGuild(uint32 Id); ArenaTeam* GetArenaTeamById(const uint32 arenateamid) const; ArenaTeam* GetArenaTeamByName(const std::string& arenateamname) const; ArenaTeam* GetArenaTeamByCaptain(uint64 const& guid) const; void AddArenaTeam(ArenaTeam* arenaTeam); - void RemoveArenaTeam(ArenaTeam* arenaTeam); + void RemoveArenaTeam(uint32 Id); ArenaTeamMap::iterator GetArenaTeamMapBegin() { return mArenaTeamMap.begin(); } ArenaTeamMap::iterator GetArenaTeamMapEnd() { return mArenaTeamMap.end(); } @@ -804,7 +805,7 @@ class ObjectMgr typedef std::set GameObjectForQuestSet; GroupSet mGroupSet; - GuildSet mGuildSet; + GuildMap mGuildMap; ArenaTeamMap mArenaTeamMap; ItemMap mItems; -- cgit v1.2.3 From 250bae10d8afe23fd6d932f84edaec5563e58b1f Mon Sep 17 00:00:00 2001 From: raczman Date: Sun, 12 Apr 2009 13:11:07 +0200 Subject: Fixed exploit with several spells being casted on pet with no de-buff applied. Author: Elron. --HG-- branch : trunk --- src/game/SpellEffects.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 7b2204ca16e..af7d2ee8a98 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2176,7 +2176,7 @@ void Spell::EffectApplyAura(uint32 i) return; // TODO Make a way so it works for every related spell! - if(unitTarget->GetTypeId()==TYPEID_PLAYER) // Negative buff should only be applied on players + if(unitTarget->GetTypeId()==TYPEID_PLAYER ||( unitTarget->GetTypeId()==TYPEID_UNIT && ((Creature*)unitTarget)->isPet() ) ) // Negative buff should only be applied on players { uint32 spellId = 0; if(m_spellInfo->CasterAuraStateNot==AURA_STATE_WEAKENED_SOUL || m_spellInfo->TargetAuraStateNot==AURA_STATE_WEAKENED_SOUL) -- cgit v1.2.3 From a8a0a03b1b5eb17a841baba14f58206685d375c9 Mon Sep 17 00:00:00 2001 From: Rat Date: Sun, 12 Apr 2009 19:49:23 +0200 Subject: *hyjal update -lowered raid damage to 700k -added horde base cleaning wave (watch out for infernal rain) --HG-- branch : trunk --- .../zone/caverns_of_time/hyjal/boss_anetheron.cpp | 1 - .../zone/caverns_of_time/hyjal/boss_azgalor.cpp | 1 - .../zone/caverns_of_time/hyjal/boss_kazrogal.cpp | 1 - .../hyjal/boss_rage_winterchill.cpp | 1 - .../scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp | 75 ++++++-- .../zone/caverns_of_time/hyjal/hyjal_trash.cpp | 194 +++++++++++++++------ .../zone/caverns_of_time/hyjal/hyjal_trash.h | 2 +- 7 files changed, 204 insertions(+), 71 deletions(-) (limited to 'src') diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp index 25e22f8f391..32b944861ff 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_anetheron.cpp @@ -43,7 +43,6 @@ struct TRINITY_DLL_DECL boss_anetheronAI : public hyjal_trashAI pInstance = ((ScriptedInstance*)c->GetInstanceData()); go = false; pos = 0; - Reset(); SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_SLEEP); if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1) { diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp index 85948706145..ef4db888797 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_azgalor.cpp @@ -34,7 +34,6 @@ struct TRINITY_DLL_DECL boss_azgalorAI : public hyjal_trashAI pInstance = ((ScriptedInstance*)c->GetInstanceData()); go = false; pos = 0; - Reset(); SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_HOWL_OF_AZGALOR); if(TempSpell) TempSpell->EffectRadiusIndex[0] = 12;//100yards instead of 50000?! diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp index 6bd24fca7a4..9e8b4393fed 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_kazrogal.cpp @@ -31,7 +31,6 @@ struct TRINITY_DLL_DECL boss_kazrogalAI : public hyjal_trashAI pInstance = ((ScriptedInstance*)c->GetInstanceData()); go = false; pos = 0; - Reset(); SpellEntry *TempSpell = (SpellEntry*)GetSpellStore()->LookupEntry(SPELL_MARK); if(TempSpell && TempSpell->EffectImplicitTargetA[0] != 1) { diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp index b125668947c..c77e4aef20d 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_rage_winterchill.cpp @@ -37,7 +37,6 @@ struct TRINITY_DLL_DECL boss_rage_winterchillAI : public hyjal_trashAI pInstance = ((ScriptedInstance*)c->GetInstanceData()); go = false; pos = 0; - Reset(); } uint32 FrostArmorTimer; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp index 4fe60c053ec..d144423ccca 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp @@ -84,18 +84,34 @@ float InfernalPos[8][3]=//spawn points for the infernals in the horde base {5482.39, -2689.19, 1481.09} }; -float InfernalSPWP[10][3]=//spawn points for the infernals in the horde base used in the cleaning wave +float InfernalSPWP[26][4]=//spawn points for the infernals in the horde base used in the cleaning wave { - {5528.5, -2771.23, 1494.08}, - {5471.41, -2711.17, 1483.97}, - {5464.08, -2653.9, 1482.67}, - {5550.84, -2633.8, 1484.08}, - {5579.86, -2704.86, 1489.33}, - {5589.67, -2655.5, 1490.15}, - {5432.36, -2744.81, 1486.25}, - {5463.14, -2857.41, 1512.45}, - {5534.31, -2774.58, 1494.89}, - {5524.36, -2735.52, 1484.16} + {5490.96, -2718.72, 1482.96, 0.49773}, + {5449.51, -2723.32, 1485.69, 2.69685}, + {5520.83, -2624.68, 1483.82, 1.20459}, + {5558.28, -2629.26, 1485.76, 0.37992}, + {5567.97, -2758.69, 1494.10, 5.04125}, + {5384.90, -2793.47, 1503.90, 5.55412}, + {5495.33, -2814.06, 1501.56, 1.12055}, + {5472.63, -2929.39, 1538.31, 1.95777}, + {5334.72, -2952.29, 1534.34, 0.50869}, + {5398.36, -2872.46, 1512.38, 0.76787}, + {5514.39, -2768.63, 1492.30, 1.55721}, + {5598.91, -2703.75, 1495.64, 2.56644}, + {5467.80, -2655.93, 1482.27, 0.85819}, + {5399.83, -2985.24, 1545.04, 5.92559}, + {5232.13, -2967.05, 1553.09, 5.41351}, + {5272.02, -3082.52, 1567.09, 3.40681}, + {5343.26, -3120.71, 1582.92, 3.16727}, + {5371.26, -3175.24, 1587.41, 6.10466}, + {5434.67, -3177.91, 1579.25, 2.77850}, + {5237.39, -3149.25, 1593.59, 0.83855}, + {5202.15, -3016.64, 1566.28, 3.31256}, + {5302.54, -2914.37, 1528.53, 3.37146}, + {5439.04, -2834.81, 1508.80, 2.14231}, + {5421.33, -2771.04, 1494.28, 6.06223}, + {5549.76, -2692.93, 1482.68, 2.19414}, + {5459.78, -2755.71, 1490.68, 1.05139} }; float VeinPos[14][8]=//spawn points of the ancient gem veins @@ -1164,7 +1180,6 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) } for(uint8 i = 0; i < 5; i++)//summon 5 gargoyles { - uint8 r = rand()%4; Creature* pUnit = m_creature->SummonCreature(GARGOYLE, AllianceOverrunGargPos[i][0], AllianceOverrunGargPos[i][1], AllianceOverrunGargPos[i][2], AllianceOverrunGargPos[i][3], TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { @@ -1180,6 +1195,42 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff) for(uint8 i = 0; i < 65; i++)//summon fires m_creature->SummonGameObject(FLAMEOBJECT,HordeFirePos[i][0],HordeFirePos[i][1],HordeFirePos[i][2],HordeFirePos[i][3],HordeFirePos[i][4],HordeFirePos[i][5],HordeFirePos[i][6],HordeFirePos[i][7],0); + for(uint8 i = 0; i < 26; i++)//summon infernals + { + Creature* pUnit = m_creature->SummonCreature(GIANT_INFERNAL, InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3], TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + if(pUnit) + { + pUnit->SetHomePosition(InfernalSPWP[i][0], InfernalSPWP[i][1], InfernalSPWP[i][2], InfernalSPWP[i][3]); + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; + ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; + pUnit->setActive(true); + } + } + for(uint8 i = 0; i < 25; i++)//summon 25 ghouls + { + uint8 r = rand()%4; + Creature* pUnit = m_creature->SummonCreature(GHOUL, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + if(pUnit) + { + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; + ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; + pUnit->setActive(true); + } + } + for(uint8 i = 0; i < 5; i++)//summon 5 abominations + { + uint8 r = rand()%4; + Creature* pUnit = m_creature->SummonCreature(ABOMINATION, HordeBase[r][0]+irand(-15,15), HordeBase[r][1]+irand(-15,15), HordeBase[r][2], 0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + if(pUnit) + { + ((hyjal_trashAI*)pUnit->AI())->faction = Faction; + ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; + ((hyjal_trashAI*)pUnit->AI())->OverrunType = i; + pUnit->setActive(true); + } + } break; } } \ No newline at end of file diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp index 058d5a0f72d..f099f1be6da 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.cpp @@ -17,7 +17,7 @@ float HordeWPs[8][3]=//basic waypoints from spawn to leader {5554.58, -2514.66, 1476.12}, {5554.16, -2567.23, 1479.90}, {5540.67, -2625.99, 1480.89}, - {5508.16, -2659.2, 1480.15}, + {5508.16, -2659.20, 1480.15},//random rush starts from here {5489.62, -2704.05, 1482.18}, {5457.04, -2726.26, 1485.10} }; @@ -36,7 +36,7 @@ float AllianceWPs[8][3]=//basic waypoints from spawn to leader float FrostWyrmWPs[3][3]=//waypoints for the frost wyrms in horde base { {5580.82, -2628.83, 1528.28}, - {5550.9, -2667.16, 1505.45}, + {5550.90, -2667.16, 1505.45}, {5459.64, -2725.91, 1484.83} }; @@ -114,41 +114,29 @@ float AllianceOverrunWP[55][3]=//waypoints in the alliance base used in the end }; -float HordeOverrunWP[33][3]=//waypoints in the horde base used in the end in the cleaning wave -{ - {5510.4815, -2676.7112, 1480.4314},// 0 spawn - {5528.5, -2771.23, 1494.08},// 1 infernal 1 - {5471.41, -2711.17, 1483.97},// 2 infernal 2 - {5464.08, -2653.9, 1482.67},// 3 infernal 3 - {5550.84, -2633.8, 1484.08},// 4 infernal 4 - {5579.86, -2704.86, 1489.33},// 5 infernal 5 - {5531.17, -2634.41, 1481.11},// 6 start - {5484.56, -2662.32, 1481.11},// 7 end - {5528.79, -2636.19, 1481.33},// 8 start - {5511.87, -2626.16, 1484.76},// 9 end - {5537.93, -2637.54, 1480.69},// 10 start - {5504.26, -2710.44, 1482.14},// 11 - {5449.92, -2724.51, 1485.69},// 12 - {5431.08, -2713.96, 1493.37},// 13 end - {5546.89, -2620.74, 1481.06},// 14 start - {5579.75, -2658.66, 1488.61},// 15 - {5598.45, -2692.56, 1493.59},// 16 end - {5550.96, -2624.63, 1482.94},// 17 start - {5578.7, -2656.13, 1488.69},// 18 - {5574.56, -2722.74, 1488.5},// 19 - {5590.46, -2746.81, 1495},// 20 - {5571.33, -2761.14, 1494.93},// 21 - {5546.45, -2770.83, 1495.33},// 22 - {5532.51, -2804.72, 1498.49},// 23 - {5492.97, -2760.9, 1489.16},// 24 - {5451.35, -2724.44, 1485.58},// 25 - {5430.23, -2714.38, 1493.51},// 26 end - {5535.67, -2627.69, 1480.87},// 27 start - {5485.75, -2667.97, 1480.64},// 28 - {5510.78, -2740.5, 1486.27},// 29 - {5559.93, -2710.97, 1483.59},// 30 - {5561.09, -2688.13, 1484.65},// 31 - {5556.73, -2676.17, 1482.58}// 32 end +float HordeOverrunWP[21][3]=//waypoints in the horde base used in the end in the cleaning wave +{ + {5490.72,-2702.94,1482.14},//0 start + {5469.77,-2741.34,1486.95}, + {5439.47,-2771.02,1494.59}, + {5408.85,-2811.92,1505.68}, + {5423.87,-2857.80,1515.55}, + {5428.19,-2898.15,1524.61}, + {5394.59,-2930.05,1528.23}, + {5351.11,-2935.80,1532.24}, + {5312.37,-2959.06,1536.21}, + {5264.93,-2989.80,1545.70}, + {5256.63,-3056.16,1559.24}, + {5267.32,-3119.55,1575.36}, + {5305.61,-3139.88,1586.38}, + {5330.56,-3135.37,1588.58}, + {5365.87,-3139.78,1583.96}, + {5389.39,-3163.57,1582.57},//15 end + {5500.86,-2669.89,1481.04},//16 start + {5472.08,-2715.14,1483.55}, + {5450.11,-2721.47,1485.61}, + {5433.25,-2712.93,1493.02},//19 end 1 + {5429.91,-2718.44,1493.42}//20 end 2 }; void hyjal_trashAI::Reset(){} @@ -385,6 +373,89 @@ void hyjal_trashAI::UpdateAI(const uint32 diff) } } } + if(faction == 1) + { + if(m_creature->GetEntry() == GHOUL) + { + for(uint8 i = 0; i < 6; i++) + AddWaypoint(i, HordeWPs[i][0]+irand(-3,3), HordeWPs[i][1]+irand(-3,3), HordeWPs[i][2]); + switch(OverrunType) + { + case 0: + AddWaypoint( 5, HordeOverrunWP[16][0]+irand(-10,10), HordeOverrunWP[16][1]+irand(-10,10), HordeOverrunWP[16][2]); + AddWaypoint( 6, HordeOverrunWP[17][0]+irand(-10,10), HordeOverrunWP[17][1]+irand(-10,10), HordeOverrunWP[17][2]); + AddWaypoint( 7, HordeOverrunWP[18][0], HordeOverrunWP[18][1], HordeOverrunWP[18][2]); + AddWaypoint( 8, HordeOverrunWP[19][0], HordeOverrunWP[19][1], HordeOverrunWP[19][2]); + m_creature->SetHomePosition(HordeOverrunWP[19][0], HordeOverrunWP[19][1], HordeOverrunWP[19][2],0); + SetDespawnAtEnd(false); + LastOverronPos = 8; + Start(true, true, true); + break; + case 1: + AddWaypoint( 5, HordeOverrunWP[16][0]+irand(-10,10), HordeOverrunWP[16][1]+irand(-10,10), HordeOverrunWP[16][2]); + AddWaypoint( 6, HordeOverrunWP[17][0]+irand(-10,10), HordeOverrunWP[17][1]+irand(-10,10), HordeOverrunWP[17][2]); + AddWaypoint( 7, HordeOverrunWP[18][0], HordeOverrunWP[18][1], HordeOverrunWP[18][2]); + AddWaypoint( 8, HordeOverrunWP[20][0], HordeOverrunWP[20][1], HordeOverrunWP[20][2]); + m_creature->SetHomePosition(HordeOverrunWP[20][0], HordeOverrunWP[20][1], HordeOverrunWP[20][2],0); + SetDespawnAtEnd(false); + LastOverronPos = 8; + Start(true, true, true); + break; + default: + AddWaypoint( 5, HordeOverrunWP[0][0]+irand(-10,10), HordeOverrunWP[0][1]+irand(-10,10), HordeOverrunWP[0][2]); + AddWaypoint( 6, HordeOverrunWP[1][0]+irand(-10,10), HordeOverrunWP[1][1]+irand(-10,10), HordeOverrunWP[1][2]); + AddWaypoint( 7, HordeOverrunWP[2][0]+irand(-10,10), HordeOverrunWP[2][1]+irand(-10,10), HordeOverrunWP[2][2]); + AddWaypoint( 8, HordeOverrunWP[3][0]+irand(-10,10), HordeOverrunWP[3][1]+irand(-10,10), HordeOverrunWP[3][2]); + AddWaypoint( 9, HordeOverrunWP[4][0]+irand(-10,10), HordeOverrunWP[4][1]+irand(-10,10), HordeOverrunWP[4][2]); + AddWaypoint(10, HordeOverrunWP[5][0]+irand(-10,10), HordeOverrunWP[5][1]+irand(-10,10), HordeOverrunWP[5][2]); + AddWaypoint(11, HordeOverrunWP[6][0]+irand(-10,10), HordeOverrunWP[6][1]+irand(-10,10), HordeOverrunWP[6][2]); + AddWaypoint(12, HordeOverrunWP[7][0]+irand(-10,10), HordeOverrunWP[7][1]+irand(-10,10), HordeOverrunWP[7][2]); + AddWaypoint(13, HordeOverrunWP[8][0]+irand(-10,10), HordeOverrunWP[8][1]+irand(-10,10), HordeOverrunWP[8][2]); + AddWaypoint(14, HordeOverrunWP[9][0]+irand(-10,10), HordeOverrunWP[9][1]+irand(-10,10), HordeOverrunWP[9][2]); + AddWaypoint(15, HordeOverrunWP[10][0]+irand(-10,10), HordeOverrunWP[10][1]+irand(-10,10), HordeOverrunWP[10][2]); + AddWaypoint(16, HordeOverrunWP[11][0]+irand(-10,10), HordeOverrunWP[11][1]+irand(-10,10), HordeOverrunWP[11][2]); + AddWaypoint(17, HordeOverrunWP[12][0]+irand(-10,10), HordeOverrunWP[12][1]+irand(-10,10), HordeOverrunWP[12][2]); + AddWaypoint(18, HordeOverrunWP[13][0]+irand(-10,10), HordeOverrunWP[13][1]+irand(-10,10), HordeOverrunWP[13][2]); + AddWaypoint(19, HordeOverrunWP[14][0]+irand(-10,10), HordeOverrunWP[14][1]+irand(-10,10), HordeOverrunWP[14][2]); + AddWaypoint(20, HordeOverrunWP[15][0]+irand(-10,10), HordeOverrunWP[15][1]+irand(-10,10), HordeOverrunWP[15][2]); + //m_creature->SetHomePosition(AllianceOverrunWP[2][0]+irand(-10,10), AllianceOverrunWP[2][1]+irand(-10,10), AllianceOverrunWP[2][2],0); + SetDespawnAtEnd(true); + LastOverronPos = 20; + Start(true, true, true); + break; + } + } + if(m_creature->GetEntry() == ABOMINATION) + { + for(uint8 i = 0; i < 6; i++) + AddWaypoint(i, HordeWPs[i][0]+irand(-10,10), HordeWPs[i][1]+irand(-10,10), HordeWPs[i][2]); + switch(OverrunType) + { + default: + AddWaypoint( 5, HordeOverrunWP[0][0]+irand(-10,10), HordeOverrunWP[0][1]+irand(-10,10), HordeOverrunWP[0][2]); + AddWaypoint( 6, HordeOverrunWP[1][0]+irand(-10,10), HordeOverrunWP[1][1]+irand(-10,10), HordeOverrunWP[1][2]); + AddWaypoint( 7, HordeOverrunWP[2][0]+irand(-10,10), HordeOverrunWP[2][1]+irand(-10,10), HordeOverrunWP[2][2]); + AddWaypoint( 8, HordeOverrunWP[3][0]+irand(-10,10), HordeOverrunWP[3][1]+irand(-10,10), HordeOverrunWP[3][2]); + AddWaypoint( 9, HordeOverrunWP[4][0]+irand(-10,10), HordeOverrunWP[4][1]+irand(-10,10), HordeOverrunWP[4][2]); + AddWaypoint(10, HordeOverrunWP[5][0]+irand(-10,10), HordeOverrunWP[5][1]+irand(-10,10), HordeOverrunWP[5][2]); + AddWaypoint(11, HordeOverrunWP[6][0]+irand(-10,10), HordeOverrunWP[6][1]+irand(-10,10), HordeOverrunWP[6][2]); + AddWaypoint(12, HordeOverrunWP[7][0]+irand(-10,10), HordeOverrunWP[7][1]+irand(-10,10), HordeOverrunWP[7][2]); + AddWaypoint(13, HordeOverrunWP[8][0]+irand(-10,10), HordeOverrunWP[8][1]+irand(-10,10), HordeOverrunWP[8][2]); + AddWaypoint(14, HordeOverrunWP[9][0]+irand(-10,10), HordeOverrunWP[9][1]+irand(-10,10), HordeOverrunWP[9][2]); + AddWaypoint(15, HordeOverrunWP[10][0]+irand(-10,10), HordeOverrunWP[10][1]+irand(-10,10), HordeOverrunWP[10][2]); + AddWaypoint(16, HordeOverrunWP[11][0]+irand(-10,10), HordeOverrunWP[11][1]+irand(-10,10), HordeOverrunWP[11][2]); + AddWaypoint(17, HordeOverrunWP[12][0]+irand(-10,10), HordeOverrunWP[12][1]+irand(-10,10), HordeOverrunWP[12][2]); + AddWaypoint(18, HordeOverrunWP[13][0]+irand(-10,10), HordeOverrunWP[13][1]+irand(-10,10), HordeOverrunWP[13][2]); + AddWaypoint(19, HordeOverrunWP[14][0]+irand(-10,10), HordeOverrunWP[14][1]+irand(-10,10), HordeOverrunWP[14][2]); + AddWaypoint(20, HordeOverrunWP[15][0]+irand(-10,10), HordeOverrunWP[15][1]+irand(-10,10), HordeOverrunWP[15][2]); + //m_creature->SetHomePosition(AllianceOverrunWP[2][0]+irand(-10,10), AllianceOverrunWP[2][1]+irand(-10,10), AllianceOverrunWP[2][2],0); + SetDespawnAtEnd(true); + LastOverronPos = 20; + Start(true, true, true); + break; + } + } + } } } @@ -424,7 +495,7 @@ struct mob_giant_infernalAI : public hyjal_trashAI pInstance = ((ScriptedInstance*)c->GetInstanceData()); meteor = false;//call once! CanMove = false; - Delay = rand()%10000; + Delay = rand()%30000; m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_INVIS); @@ -462,19 +533,6 @@ struct mob_giant_infernalAI : public hyjal_trashAI if (target && target->isAlive()) m_creature->AddThreat(target,0.0); } - } - if (i == LastOverronPos && IsOverrun) - { - Creature* pUnit = m_creature->SummonCreature(17931, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 2*60*1000); - if(pUnit) - { - pUnit->SetVisibility(VISIBILITY_OFF); - pUnit->SetMaxHealth(10000000); - pUnit->SetHealth(10000000); - pUnit->setFaction(17772); - pUnit->Attack(m_creature, true); - m_creature->AddThreat(pUnit,0); - } } } @@ -604,7 +662,7 @@ struct mob_abominationAI : public hyjal_trashAI { if(faction == 0 && LastOverronPos == 17)//alliance round { - Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),4928.48+irand(-10,10), -1526.38+irand(-10,10), 1326.83+irand(-10,10),0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),4928.48+irand(-10,10), -1526.38+irand(-10,10), 1326.83,0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { ((hyjal_trashAI*)pUnit->AI())->faction = faction; @@ -614,6 +672,18 @@ struct mob_abominationAI : public hyjal_trashAI pUnit->setActive(true); } } + if(faction == 1 && LastOverronPos == 20)//horde round + { + Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),5458.01+irand(-10,10),-2340.27+irand(-10,10),1459.60,0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + if(pUnit) + { + ((hyjal_trashAI*)pUnit->AI())->faction = faction; + ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; + ((hyjal_trashAI*)pUnit->AI())->OverrunType = 10;//default + ((hyjal_trashAI*)pUnit->AI())->SetupOverrun = false; + pUnit->setActive(true); + } + } } } @@ -681,9 +751,13 @@ struct mob_ghoulAI : public hyjal_trashAI bool go; uint32 FrenzyTimer; uint32 pos; + uint32 MoveTimer; + bool RandomMove; void Reset() { FrenzyTimer = 5000+rand()%5000; + MoveTimer = 2000; + RandomMove = false; } void WaypointReached(uint32 i) @@ -707,7 +781,7 @@ struct mob_ghoulAI : public hyjal_trashAI m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_ATTACKUNARMED); if(faction == 0 && LastOverronPos == 17)//alliance round { - Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),4928.48+irand(-10,10), -1526.38+irand(-10,10), 1326.83+irand(-10,10),0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),4928.48+irand(-10,10), -1526.38+irand(-10,10), 1326.83,0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); if(pUnit) { ((hyjal_trashAI*)pUnit->AI())->faction = faction; @@ -717,6 +791,18 @@ struct mob_ghoulAI : public hyjal_trashAI pUnit->setActive(true); } } + if(faction == 1 && LastOverronPos == 20)//horde round + { + Creature* pUnit = m_creature->SummonCreature(m_creature->GetEntry(),5458.01+irand(-10,10), -2340.27+irand(-10,10), 1459.60,0, TEMPSUMMON_MANUAL_DESPAWN, 2*60*1000); + if(pUnit) + { + ((hyjal_trashAI*)pUnit->AI())->faction = faction; + ((hyjal_trashAI*)pUnit->AI())->IsOverrun = true; + ((hyjal_trashAI*)pUnit->AI())->OverrunType = 10;//default + ((hyjal_trashAI*)pUnit->AI())->SetupOverrun = false; + pUnit->setActive(true); + } + } } } @@ -754,7 +840,7 @@ struct mob_ghoulAI : public hyjal_trashAI { DoCast(m_creature,SPELL_FRENZY); FrenzyTimer = 15000+rand()%15000; - }else FrenzyTimer -= diff; + }else FrenzyTimer -= diff; if (!UpdateVictim()) return; diff --git a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h index 1b5c0c3ab37..1113ce4c8a2 100644 --- a/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h +++ b/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal_trash.h @@ -5,7 +5,7 @@ #include "def_hyjal.h" #include "../../../npc/npc_escortAI.h" -#define MINRAIDDAMAGE 1000000//minimal damage before trash can drop loot and reputation +#define MINRAIDDAMAGE 700000//minimal damage before trash can drop loot and reputation, resets if faction leader dies struct TRINITY_DLL_DECL hyjal_trashAI : public npc_escortAI { -- cgit v1.2.3 From 74977d73f3758b866d90ace7f9cf075c2be540fc Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 12 Apr 2009 16:32:03 -0500 Subject: *Do not allow chase/follow self. --HG-- branch : trunk --- src/game/MotionMaster.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/game/MotionMaster.cpp b/src/game/MotionMaster.cpp index 170a9b52211..9beecf9c5cf 100644 --- a/src/game/MotionMaster.cpp +++ b/src/game/MotionMaster.cpp @@ -245,7 +245,7 @@ void MotionMaster::MoveChase(Unit* target, float dist, float angle) { // ignore movement request if target not exist - if(!target) + if(!target || target == i_owner) return; i_owner->clearUnitState(UNIT_STAT_FOLLOW); @@ -271,7 +271,7 @@ void MotionMaster::MoveFollow(Unit* target, float dist, float angle) { // ignore movement request if target not exist - if(!target) + if(!target || target == i_owner) return; i_owner->addUnitState(UNIT_STAT_FOLLOW); -- cgit v1.2.3 From 5032bd159cc0fff5e10d38161ecb5e7469c3d75f Mon Sep 17 00:00:00 2001 From: megamage Date: Sun, 12 Apr 2009 16:44:44 -0500 Subject: *Add better debug log for grid state. --HG-- branch : trunk --- src/game/GridStates.cpp | 3 ++- src/game/Map.cpp | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/game/GridStates.cpp b/src/game/GridStates.cpp index fa1c0a2b534..36092fbdc29 100644 --- a/src/game/GridStates.cpp +++ b/src/game/GridStates.cpp @@ -40,6 +40,7 @@ ActiveState::Update(Map &m, NGridType &grid, GridInfo & info, const uint32 &x, c ObjectGridStoper stoper(grid); stoper.StopN(); grid.SetGridState(GRID_STATE_IDLE); + sLog.outDebug("Grid[%u,%u] on map %u moved to IDLE state", x, y, m.GetId()); } else { @@ -53,7 +54,7 @@ IdleState::Update(Map &m, NGridType &grid, GridInfo &, const uint32 &x, const ui { m.ResetGridExpiry(grid); grid.SetGridState(GRID_STATE_REMOVAL); - sLog.outDebug("Grid[%u,%u] on map %u moved to IDLE state", x, y, m.GetId()); + sLog.outDebug("Grid[%u,%u] on map %u moved to REMOVAL state", x, y, m.GetId()); } void diff --git a/src/game/Map.cpp b/src/game/Map.cpp index b7e0fd59f61..b12c7b477c0 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -410,6 +410,8 @@ Map::EnsureGridCreated(const GridPair &p) Guard guard(*this); if(!getNGrid(p.x_coord, p.y_coord)) { + sLog.outDebug("Loading grid[%u,%u] for map %u", p.x_coord, p.y_coord, i_id); + setNGrid(new NGridType(p.x_coord*MAX_NUMBER_OF_GRIDS + p.y_coord, p.x_coord, p.y_coord, i_gridExpiry, sWorld.getConfig(CONFIG_GRID_UNLOAD)), p.x_coord, p.y_coord); @@ -1139,7 +1141,7 @@ bool Map::UnloadGrid(const uint32 &x, const uint32 &y, bool unloadAll) if(!unloadAll && ActiveObjectsNearGrid(x, y) ) return false; - DEBUG_LOG("Unloading grid[%u,%u] for map %u", x,y, i_id); + sLog.outDebug("Unloading grid[%u,%u] for map %u", x,y, i_id); ObjectGridUnloader unloader(*grid); -- cgit v1.2.3