Core/Scripts: unified scripted gossip/quest api
Port From (https://github.com/TrinityCore/TrinityCore/commit/6604849716bc73d82a4cdbf8c66bb188086ceae4)
This commit is contained in:
@@ -1034,7 +1034,7 @@ namespace Scripts.Northrend.Ulduar.FlameLeviathan
|
||||
}
|
||||
}
|
||||
|
||||
public override void GossipSelect(Player player, uint menuId, uint gossipListId)
|
||||
public override bool GossipSelect(Player player, uint menuId, uint gossipListId)
|
||||
{
|
||||
if (menuId == GossipIds.MenuLoreKeeper && gossipListId == GossipIds.OptionLoreKeeper)
|
||||
{
|
||||
@@ -1062,6 +1062,7 @@ namespace Scripts.Northrend.Ulduar.FlameLeviathan
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
InstanceScript _instance;
|
||||
@@ -1072,31 +1073,42 @@ namespace Scripts.Northrend.Ulduar.FlameLeviathan
|
||||
{
|
||||
public go_ulduar_tower() : base("go_ulduar_tower") { }
|
||||
|
||||
public override void OnDestroyed(GameObject go, Player player)
|
||||
class go_ulduar_towerAI : GameObjectAI
|
||||
{
|
||||
InstanceScript instance = go.GetInstanceScript();
|
||||
if (instance == null)
|
||||
return;
|
||||
|
||||
switch (go.GetEntry())
|
||||
public go_ulduar_towerAI(GameObject go) : base(go)
|
||||
{
|
||||
case Towers.ofStorms:
|
||||
instance.ProcessEvent(go, InstanceEventIds.TowerOfStormDestroyed);
|
||||
break;
|
||||
case Towers.ofFlames:
|
||||
instance.ProcessEvent(go, InstanceEventIds.TowerOfFlamesDestroyed);
|
||||
break;
|
||||
case Towers.ofFrost:
|
||||
instance.ProcessEvent(go, InstanceEventIds.TowerOfFrostDestroyed);
|
||||
break;
|
||||
case Towers.ofLife:
|
||||
instance.ProcessEvent(go, InstanceEventIds.TowerOfLifeDestroyed);
|
||||
break;
|
||||
instance = go.GetInstanceScript();
|
||||
}
|
||||
|
||||
Creature trigger = go.FindNearestCreature(CreatureIds.UlduarGauntletGenerator, 15.0f, true);
|
||||
if (trigger)
|
||||
trigger.DisappearAndDie();
|
||||
public override void Destroyed(Player player, uint eventId)
|
||||
{
|
||||
switch (me.GetEntry())
|
||||
{
|
||||
case Towers.ofStorms:
|
||||
instance.ProcessEvent(me, InstanceEventIds.TowerOfStormDestroyed);
|
||||
break;
|
||||
case Towers.ofFlames:
|
||||
instance.ProcessEvent(me, InstanceEventIds.TowerOfFlamesDestroyed);
|
||||
break;
|
||||
case Towers.ofFrost:
|
||||
instance.ProcessEvent(me, InstanceEventIds.TowerOfFrostDestroyed);
|
||||
break;
|
||||
case Towers.ofLife:
|
||||
instance.ProcessEvent(me, InstanceEventIds.TowerOfLifeDestroyed);
|
||||
break;
|
||||
}
|
||||
|
||||
Creature trigger = me.FindNearestCreature(CreatureIds.UlduarGauntletGenerator, 15.0f, true);
|
||||
if (trigger)
|
||||
trigger.DisappearAndDie();
|
||||
}
|
||||
|
||||
InstanceScript instance;
|
||||
}
|
||||
|
||||
public override GameObjectAI GetAI(GameObject go)
|
||||
{
|
||||
return GetInstanceAI<go_ulduar_towerAI>(go);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ using Game.Scripting;
|
||||
using Game.Spells;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Dynamic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Scripts.Northrend.Ulduar
|
||||
@@ -1594,21 +1595,32 @@ namespace Scripts.Northrend.Ulduar
|
||||
{
|
||||
public go_mimiron_hardmode_button() : base("go_mimiron_hardmode_button") { }
|
||||
|
||||
public override bool OnGossipHello(Player player, GameObject go)
|
||||
class go_mimiron_hardmode_buttonAI : GameObjectAI
|
||||
{
|
||||
if (go.HasFlag(GameObjectFlags.NotSelectable))
|
||||
go_mimiron_hardmode_buttonAI(GameObject go) : base(go)
|
||||
{
|
||||
instance = go.GetInstanceScript();
|
||||
}
|
||||
|
||||
public override bool GossipHello(Player player, bool reportUse)
|
||||
{
|
||||
if (me.HasFlag(GameObjectFlags.NotSelectable))
|
||||
return true;
|
||||
|
||||
Creature computer = ObjectAccessor.GetCreature(me, instance.GetGuidData(InstanceData.Computer));
|
||||
if (computer)
|
||||
computer.GetAI().DoAction(Actions.ActivateComputer);
|
||||
me.SetGoState(GameObjectState.Active);
|
||||
me.AddFlag(GameObjectFlags.NotSelectable);
|
||||
return true;
|
||||
}
|
||||
|
||||
InstanceScript instance = go.GetInstanceScript();
|
||||
if (instance == null)
|
||||
return false;
|
||||
InstanceScript instance;
|
||||
}
|
||||
|
||||
Creature computer = ObjectAccessor.GetCreature(go, instance.GetGuidData(InstanceData.Computer));
|
||||
if (computer)
|
||||
computer.GetAI().DoAction(Actions.ActivateComputer);
|
||||
go.SetGoState(GameObjectState.Active);
|
||||
go.AddFlag(GameObjectFlags.NotSelectable);
|
||||
return true;
|
||||
public override GameObjectAI GetAI(GameObject go)
|
||||
{
|
||||
return GetInstanceAI<go_mimiron_hardmode_buttonAI>(go);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user