aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bindings/scripts/include/sc_instance.h4
-rw-r--r--src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp18
-rw-r--r--src/game/InstanceData.h4
-rw-r--r--src/game/ObjectMgr.cpp10
-rw-r--r--src/game/ObjectMgr.h3
5 files changed, 30 insertions, 9 deletions
diff --git a/src/bindings/scripts/include/sc_instance.h b/src/bindings/scripts/include/sc_instance.h
index 8de13c10f72..cb6374b0415 100644
--- a/src/bindings/scripts/include/sc_instance.h
+++ b/src/bindings/scripts/include/sc_instance.h
@@ -33,10 +33,6 @@ class TRINITY_DLL_DECL ScriptedInstance : public InstanceData
virtual uint64 GetData64(uint32) {return 0; }
virtual void SetData64(uint32, uint64) { }
- //All-purpose data storage 32 bit
- virtual uint32 GetData(uint32) { return 0; }
- virtual void SetData(uint32, uint32 data) {}
-
// Called every instance update
virtual void Update(uint32) {}
diff --git a/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp b/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp
index b28b8a9bd06..a5706027f55 100644
--- a/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp
+++ b/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp
@@ -103,7 +103,8 @@ CreatureAI* GetAI_npc_forest_frog(Creature *_Creature)
#define GOSSIP_HOSTAGE1 "I am glad to help you."
-static uint32 HostageInfo[] = {23790, 23999, 24024, 24001};
+static uint32 HostageEntry[] = {23790, 23999, 24024, 24001};
+static uint32 ChestEntry[] = {186648, 187021, 186672, 186667};
struct TRINITY_DLL_DECL npc_zulaman_hostageAI : public ScriptedAI
{
@@ -142,11 +143,20 @@ bool GossipSelect_npc_zulaman_hostage(Player* player, Creature* _Creature, uint3
ScriptedInstance* pInstance = ((ScriptedInstance*)_Creature->GetInstanceData());
if(pInstance)
{
- uint8 progress = pInstance->GetData(DATA_CHESTLOOTED);
+ //uint8 progress = pInstance->GetData(DATA_CHESTLOOTED);
pInstance->SetData(DATA_CHESTLOOTED, 0);
float x, y, z;
_Creature->GetPosition(x, y, z);
- Creature* summon = _Creature->SummonCreature(HostageInfo[progress], x-2, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 0);
+ uint32 entry = _Creature->GetEntry();
+ for(uint8 i = 0; i < 4; ++i)
+ {
+ if(HostageEntry[i] == entry)
+ {
+ _Creature->SummonGameObject(ChestEntry[i], x-2, y, z, 0, 0, 0, 0, 0, 0);
+ break;
+ }
+ }
+ /*Creature* summon = _Creature->SummonCreature(HostageInfo[progress], x-2, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 0);
if(summon)
{
((npc_zulaman_hostageAI*)summon->AI())->PlayerGUID = player->GetGUID();
@@ -154,7 +164,7 @@ bool GossipSelect_npc_zulaman_hostage(Player* player, Creature* _Creature, uint3
summon->SetDisplayId(10056);
summon->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
summon->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- }
+ }*/
}
return true;
}
diff --git a/src/game/InstanceData.h b/src/game/InstanceData.h
index a1611a2bc1f..8fea525a6e2 100644
--- a/src/game/InstanceData.h
+++ b/src/game/InstanceData.h
@@ -64,5 +64,9 @@ class TRINITY_DLL_SPEC InstanceData
//called on creature creation
virtual void OnCreatureCreate(Creature * /*creature*/, uint32 /*creature_entry*/) {}
+
+ //All-purpose data storage 32 bit
+ virtual uint32 GetData(uint32) { return 0; }
+ virtual void SetData(uint32, uint32 data) {}
};
#endif
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index 070e171f9fc..54f92b5fccf 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -45,6 +45,7 @@
#include "SpellAuras.h"
#include "Util.h"
#include "WaypointManager.h"
+#include "InstanceData.h" //for condition_instance_data
INSTANTIATE_SINGLETON_1(ObjectMgr);
@@ -6737,6 +6738,12 @@ bool PlayerCondition::Meets(Player const * player) const
return !player->HasAura(value1, value2);
case CONDITION_ACTIVE_EVENT:
return gameeventmgr.IsActiveEvent(value1);
+ case CONDITION_INSTANCE_DATA:
+ {
+ Map *map = player->GetMap();
+ if(map && map->IsDungeon() && ((InstanceMap*)map)->GetInstanceData())
+ return ((InstanceMap*)map)->GetInstanceData()->GetData(value1) == value2;
+ }
default:
return false;
}
@@ -6881,6 +6888,9 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val
}
break;
}
+ case CONDITION_INSTANCE_DATA:
+ //TODO: need some check
+ break;
}
return true;
}
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index 9595418ed22..8c7f8728b0b 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -216,9 +216,10 @@ enum ConditionType
CONDITION_AD_COMMISSION_AURA = 10, // 0 0, for condition true while one from AD ñommission aura active
CONDITION_NO_AURA = 11, // spell_id effindex
CONDITION_ACTIVE_EVENT = 12, // event_id
+ CONDITION_INSTANCE_DATA = 13, // entry data
};
-#define MAX_CONDITION 13 // maximum value in ConditionType enum
+#define MAX_CONDITION 14 // maximum value in ConditionType enum
//Player's info
typedef struct _tagCachePlayerInfo