rendered paste body#define BATTLEFIELD_NONE 0
#define BATTLEFIELD_OPEN 1
#define BATTLEFIELD_SELECT 2
#define BATTLEFIELD_QUEUED 3
#define BATTLEFIELD_CONFIRM 4
#define BATTLEFIELD_COUNTDOWN 5
#define BATTLEFIELD_ACTIVE 6
#define BATTLEFIELD_FINISHED 7
objectdef oBattlefield inherits oBase
{
variable bool EnteringBattlefield = FALSE
variable int BattlefieldCountdown = 60
variable int PreviousState
member State()
{
if ${WoWScript[GetBattlefieldWinner()](exists)}
{
return BATTLEFIELD_FINISHED
}
if ${WoWScript[GetBattlefieldStatus(1)].Equal["active"]} && ${BattlefieldCountdown} > 0
{
return BATTLEFIELD_COUNTDOWN
}
if ${WoWScript[GossipFrame:IsShown()].Equal[1]}
;&& ${This.EnteringBattlefield}
{
return BATTLEFIELD_OPEN
}
if ${WoWScript[BattlefieldFrame:IsShown()].Equal[1]}
{
return BATTLEFIELD_SELECT
}
if ${WoWScript[GetBattlefieldStatus(1)].Equal["queued"]}
{
return BATTLEFIELD_QUEUED
}
if ${WoWScript[GetBattlefieldStatus(1)].Equal["confirm"]}
{
return BATTLEFIELD_CONFIRM
}
if ${WoWScript[GetBattlefieldStatus(1)].Equal["active"]}
{
return BATTLEFIELD_ACTIVE
}
return BATTLEFIELD_NONE
}
method Pulse(int Priority)
{
This.CurrentState:Set[${This.State}]
if ${This.PreviousState} != ${This.CurrentState}
{
This.PreviousState:Set[${This.CurrentState}]
This:Echo["New state: ${This.CurrentState}"]
}
switch ${This.CurrentState}
{
case BATTLEFIELD_QUEUED
break
case BATTLEFIELD_SELECT
WoWScript JoinBattlefield(0)
WoWScript BattlefieldFrame:Hide()
This:Debug["Selecting battlefield"]
break
case BATTLEFIELD_OPEN
WoWScript SelectGossipOption(1)
This.EnteringBattlefield:Set[FALSE]
break
case BATTLEFIELD_CONFIRM
WoWScript AcceptBattlefieldPort(1,1)
This.BattlefieldCountdown:Set[60]
This:Debug["Entering battlefields"]
Event[BATTLEFIELD_EVENT_ENTER]:Execute
break
case BATTLEFIELD_COUNTDOWN
break
case BATTLEFIELD_ACTIVE
break
case BATTLEFIELD_FINISHED
This:Debug["Battlefield finished"]
Event[BATTLEFIELD_EVENT_LEAVE]:Execute
WoWScript LeaveBattlefield()
break
case BATTLEFIELD_NONE
break
}
}
method EnterBattlefield(string BattleMaster)
{
if !${Unit[${BattleMaster}](exists)}
{
return
}
Unit[${BattleMaster}]:Use
This.EnteringBattlefield:Set[TRUE]
}
member InBattlefield()
{
return ${WoWScript[GetBattlefieldStatus(1)].Equal["active"]}
}
method OnBattlefieldMessage(string Line, string EventId, string Message)
{
if ${Message.Find["1 minute"]}
{
This.BattlefieldCountdown:Set[60]
return
}
if ${Message.Find["30 seconds"]}
{
This.BattlefieldCountdown:Set[30]
return
}
if ${Message.Find["Let the battle for"]}
{
This.BattlefieldCountdown:Set[0]
This:Debug["Battlefields start"]
return
}
}
method Plugin()
{
Event[CORE_EVENT_PULSE]:AttachAtom[${This.ObjectName}:Pulse]
AddTrigger ${This.ObjectName}:OnBattlefieldMessage "[Event:@EVENTID@:CHAT_MSG_BG_SYSTEM_NEUTRAL](\"@message@\",\"@blah@\",\"@blah@\",\"@blah@\",\"@blah@\",\"@blah@\",@blah@,@blah@,\"@blah@\",@blah@)"
LavishScript:RegisterEvent[BATTLEFIELD_EVENT_ENTER]
LavishScript:RegisterEvent[BATTLEFIELD_EVENT_LEAVE]
}
method Shutdown()
{
Event[CORE_EVENT_PULSE]:DetachAtom[${This.ObjectName}:Pulse]
Event[BATTLEFIELD_EVENT_ENTER]:Unregister
Event[BATTLEFIELD_EVENT_LEAVE]:Unregister
}
}