mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 17:05:44 +01:00
*Utgarde Keep: save & load door status, by Tartalo, thanks Aokromes for testing, and thanks Paradox for telling me about RAND() :P
--HG-- branch : trunk
This commit is contained in:
@@ -454,7 +454,6 @@ bool EffectDummyGameObj(Unit *caster, uint32 spellId, uint32 effIndex, GameObjec
|
||||
return tmpscript->pEffectDummyGameObj(caster, spellId, effIndex, gameObjTarget);
|
||||
}
|
||||
|
||||
|
||||
TRINITY_DLL_EXPORT
|
||||
bool EffectDummyItem(Unit *caster, uint32 spellId, uint32 effIndex, Item *itemTarget)
|
||||
{
|
||||
|
||||
@@ -20,7 +20,6 @@ update creature_template set scriptname = 'boss_maiden_of_grief' where entry = '
|
||||
#define SPELL_PILLAR_OF_WOE_N 50761
|
||||
#define SPELL_PILLAR_OF_WOE_H 59727
|
||||
|
||||
//not in db
|
||||
//Yell
|
||||
#define SAY_AGGRO -1603000
|
||||
#define SAY_SLAY_1 -1603001
|
||||
@@ -120,13 +119,8 @@ struct TRINITY_DLL_DECL boss_maiden_of_griefAI : public ScriptedAI
|
||||
{
|
||||
if (victim == m_creature)
|
||||
return;
|
||||
switch(rand()%4)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
|
||||
case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
|
||||
case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
|
||||
case 3: DoScriptText(SAY_SLAY_4, m_creature);break;
|
||||
}
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3,SAY_SLAY_4), m_creature);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
uint64 portcullis[2];
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
uint32 forge_event[3];
|
||||
std::string str_data;
|
||||
|
||||
void Initialize()
|
||||
@@ -80,6 +81,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
forge_bellow[i] = 0;
|
||||
forge_fire[i] = 0;
|
||||
forge_anvil[i] = 0;
|
||||
forge_event[i] = NOT_STARTED;
|
||||
}
|
||||
|
||||
portcullis[0] = 0;
|
||||
@@ -127,17 +129,28 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
switch(pGo->GetEntry())
|
||||
{
|
||||
//door and object id
|
||||
case ENTRY_BELLOW_1: forge_bellow[0] = pGo->GetGUID(); break;
|
||||
case ENTRY_BELLOW_2: forge_bellow[1] = pGo->GetGUID(); break;
|
||||
case ENTRY_BELLOW_3: forge_bellow[2] = pGo->GetGUID(); break;
|
||||
case ENTRY_FORGEFIRE_1: forge_fire[0] = pGo->GetGUID(); break;
|
||||
case ENTRY_FORGEFIRE_2: forge_fire[1] = pGo->GetGUID(); break;
|
||||
case ENTRY_FORGEFIRE_3: forge_fire[2] = pGo->GetGUID(); break;
|
||||
case ENTRY_GLOWING_ANVIL_1: forge_anvil[0] = pGo->GetGUID(); break;
|
||||
case ENTRY_GLOWING_ANVIL_2: forge_anvil[1] = pGo->GetGUID(); break;
|
||||
case ENTRY_GLOWING_ANVIL_3: forge_anvil[2] = pGo->GetGUID(); break;
|
||||
case ENTRY_GIANT_PORTCULLIS_1: portcullis[0] = pGo->GetGUID(); break;
|
||||
case ENTRY_GIANT_PORTCULLIS_2: portcullis[1] = pGo->GetGUID(); break;
|
||||
case ENTRY_BELLOW_1: forge_bellow[0] = pGo->GetGUID();
|
||||
if (forge_event[0] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_BELLOW_2: forge_bellow[1] = pGo->GetGUID();
|
||||
if (forge_event[1] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_BELLOW_3: forge_bellow[2] = pGo->GetGUID();
|
||||
if (forge_event[2] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_FORGEFIRE_1: forge_fire[0] = pGo->GetGUID();
|
||||
if (forge_event[0] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_FORGEFIRE_2: forge_fire[1] = pGo->GetGUID();
|
||||
if (forge_event[1] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_FORGEFIRE_3: forge_fire[2] = pGo->GetGUID();
|
||||
if (forge_event[2] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_GLOWING_ANVIL_1: forge_anvil[0] = pGo->GetGUID();
|
||||
if (forge_event[0] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_GLOWING_ANVIL_2: forge_anvil[1] = pGo->GetGUID();
|
||||
if (forge_event[1] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_GLOWING_ANVIL_3: forge_anvil[2] = pGo->GetGUID();
|
||||
if (forge_event[2] != NOT_STARTED)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_GIANT_PORTCULLIS_1: portcullis[0] = pGo->GetGUID();
|
||||
if (m_auiEncounter[2] == DONE)HandleGameObject(NULL,true,pGo);break;
|
||||
case ENTRY_GIANT_PORTCULLIS_2: portcullis[1] = pGo->GetGUID();
|
||||
if (m_auiEncounter[2] == DONE)HandleGameObject(NULL,true,pGo);break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,17 +172,9 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
switch(type)
|
||||
{
|
||||
case DATA_PRINCEKELESETH_EVENT:
|
||||
if (data == DONE)
|
||||
{
|
||||
//HandleGameObject(doorname, 0);
|
||||
}
|
||||
m_auiEncounter[0] = data;
|
||||
break;
|
||||
case DATA_SKARVALD_DALRONN_EVENT:
|
||||
if (data == DONE)
|
||||
{
|
||||
//HandleGameObject(doorname, 0);
|
||||
}
|
||||
m_auiEncounter[1] = data;
|
||||
break;
|
||||
case DATA_INGVAR_EVENT:
|
||||
@@ -192,6 +197,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
HandleGameObject(forge_fire[0],true);
|
||||
HandleGameObject(forge_anvil[0],true);
|
||||
}
|
||||
forge_event[0] = data;
|
||||
break;
|
||||
case EVENT_FORGE_2:
|
||||
if (data == NOT_STARTED)
|
||||
@@ -205,6 +211,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
HandleGameObject(forge_fire[1],true);
|
||||
HandleGameObject(forge_anvil[1],true);
|
||||
}
|
||||
forge_event[1] = data;
|
||||
break;
|
||||
case EVENT_FORGE_3:
|
||||
if (data == NOT_STARTED)
|
||||
@@ -218,6 +225,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
HandleGameObject(forge_fire[2],true);
|
||||
HandleGameObject(forge_anvil[2],true);
|
||||
}
|
||||
forge_event[2] = data;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -246,7 +254,7 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
|
||||
std::ostringstream saveStream;
|
||||
saveStream << "U K " << m_auiEncounter[0] << " " << m_auiEncounter[1] << " "
|
||||
<< m_auiEncounter[2];
|
||||
<< m_auiEncounter[2] << " " << forge_event[0] << " " << forge_event[1] << " " << forge_event[2];
|
||||
|
||||
str_data = saveStream.str();
|
||||
|
||||
@@ -265,10 +273,10 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
OUT_LOAD_INST_DATA(in);
|
||||
|
||||
char dataHead1, dataHead2;
|
||||
uint16 data0,data1,data2;
|
||||
uint16 data0,data1,data2, data3, data4, data5;
|
||||
|
||||
std::istringstream loadStream(in);
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2;
|
||||
loadStream >> dataHead1 >> dataHead2 >> data0 >> data1 >> data2 >> data3 >> data4 >> data5;
|
||||
|
||||
if (dataHead1 == 'U' && dataHead2 == 'K')
|
||||
{
|
||||
@@ -280,6 +288,10 @@ struct TRINITY_DLL_DECL instance_utgarde_keep : public ScriptedInstance
|
||||
if (m_auiEncounter[i] == IN_PROGRESS)
|
||||
m_auiEncounter[i] = NOT_STARTED;
|
||||
|
||||
forge_event[0] = data3;
|
||||
forge_event[1] = data4;
|
||||
forge_event[2] = data5;
|
||||
|
||||
}else OUT_LOAD_INST_DATA_FAIL;
|
||||
|
||||
OUT_LOAD_INST_DATA_COMPLETE;
|
||||
|
||||
Reference in New Issue
Block a user