Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TavernBrawlManager.HasValidDeckForCurrent #26

Open
chucklu opened this issue Sep 15, 2019 · 6 comments
Open

TavernBrawlManager.HasValidDeckForCurrent #26

chucklu opened this issue Sep 15, 2019 · 6 comments

Comments

@chucklu
Copy link
Collaborator

chucklu commented Sep 15, 2019

2019-09-15 11:14:38.453+08:00 [11] INFO Triton.Common.LogUtilities.Logger - [TavernBrawlScene]
2019-09-15 11:14:38.537+08:00 [11] DEBUG Triton.Common.LogUtilities.Logger - [TavernBrawlScene] !TavernBrawlManager.HasValidDeckForCurrent.
2019-09-15 11:14:39.616+08:00 [11] INFO Triton.Common.LogUtilities.Logger - [TavernBrawlScene]
2019-09-15 11:14:39.638+08:00 [11] DEBUG Triton.Common.LogUtilities.Logger - [TavernBrawlScene] !TavernBrawlManager.HasValidDeckForCurrent.

@chucklu
Copy link
Collaborator Author

chucklu commented Sep 15, 2019

else if (!tavernBrawlManager.HasValidDeckForCurrent())
{
DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] !TavernBrawlManager.HasValidDeckForCurrent.", Array.Empty());

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x060013AF RID: 5039 RVA: 0x000BE878 File Offset: 0x000BCA78
private async Task method_47(PegasusScene pegasusScene_0)
{
	DefaultBot.ilog_0.InfoFormat("[TavernBrawlScene]", Array.Empty<object>());
	PresenceMgr presenceMgr = PresenceMgr.Get();
	if (presenceMgr == null)
	{
		DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] PresenceMgr is null.", Array.Empty<object>());
		TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
		if (!taskAwaiter.IsCompleted)
		{
			await taskAwaiter;
			TaskAwaiter taskAwaiter2;
			taskAwaiter = taskAwaiter2;
			taskAwaiter2 = default(TaskAwaiter);
		}
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
	}
	else
	{
		List<MonoEnum> statusEnums = presenceMgr.GetStatusEnums(BnetPresenceMgr.Get().GetMyPlayer());
		if (statusEnums != null && statusEnums.Count != 0)
		{
			PresenceStatus presenceStatus = statusEnums[0].AsEnum<PresenceStatus>();
			TritonHs.smethod_4(presenceMgr, ref presenceStatus);
			if (presenceStatus == PresenceStatus.TAVERN_BRAWL_SCREEN)
			{
				TavernBrawlDisplay tavernBrawlDisplay = TavernBrawlDisplay.Get();
				if (tavernBrawlDisplay == null)
				{
					DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] TavernBrawlDisplay is null.", Array.Empty<object>());
					TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
					if (!taskAwaiter.IsCompleted)
					{
						await taskAwaiter;
						TaskAwaiter taskAwaiter2;
						taskAwaiter = taskAwaiter2;
						taskAwaiter2 = default(TaskAwaiter);
					}
					taskAwaiter.GetResult();
					taskAwaiter = default(TaskAwaiter);
				}
				else if (tavernBrawlDisplay.IsInDeckEditMode())
				{
					DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] TavernBrawlDisplay.IsInDeckEditMode.", Array.Empty<object>());
					TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
					if (!taskAwaiter.IsCompleted)
					{
						await taskAwaiter;
						TaskAwaiter taskAwaiter2;
						taskAwaiter = taskAwaiter2;
						taskAwaiter2 = default(TaskAwaiter);
					}
					taskAwaiter.GetResult();
					taskAwaiter = default(TaskAwaiter);
				}
				else
				{
					TavernBrawlManager tavernBrawlManager = TavernBrawlManager.Get();
					if (tavernBrawlManager == null)
					{
						DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] TavernBrawlManager is null.", Array.Empty<object>());
						TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
						if (!taskAwaiter.IsCompleted)
						{
							await taskAwaiter;
							TaskAwaiter taskAwaiter2;
							taskAwaiter = taskAwaiter2;
							taskAwaiter2 = default(TaskAwaiter);
						}
						taskAwaiter.GetResult();
						taskAwaiter = default(TaskAwaiter);
					}
					else if (!tavernBrawlManager.HasValidDeckForCurrent())
					{
						DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] !TavernBrawlManager.HasValidDeckForCurrent.", Array.Empty<object>());
						TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
						if (!taskAwaiter.IsCompleted)
						{
							await taskAwaiter;
							TaskAwaiter taskAwaiter2;
							taskAwaiter = taskAwaiter2;
							taskAwaiter2 = default(TaskAwaiter);
						}
						taskAwaiter.GetResult();
						taskAwaiter = default(TaskAwaiter);
					}
					else
					{
						TavernBrawlMission tavernBrawlMission = tavernBrawlManager.CurrentMission();
						if (tavernBrawlMission == null)
						{
							DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] TavernBrawlManager.CurrentMission is null.", Array.Empty<object>());
							TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
							if (!taskAwaiter.IsCompleted)
							{
								await taskAwaiter;
								TaskAwaiter taskAwaiter2;
								taskAwaiter = taskAwaiter2;
								taskAwaiter2 = default(TaskAwaiter);
							}
							taskAwaiter.GetResult();
							taskAwaiter = default(TaskAwaiter);
						}
						else
						{
							DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] BrawlType = {0} | seasonId = {1} | missionId = {2}", tavernBrawlMission.BrawlType, tavernBrawlMission.seasonId, tavernBrawlMission.missionId);
							PlayButton playButton = tavernBrawlDisplay.m_playButton;
							if (playButton != null && playButton.m_enabled)
							{
								if (tavernBrawlManager.SelectHeroBeforeMission())
								{
									DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] TavernBrawlManager.SelectHeroBeforeMission is active.", Array.Empty<object>());
									TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
									if (!taskAwaiter.IsCompleted)
									{
										await taskAwaiter;
										TaskAwaiter taskAwaiter2;
										taskAwaiter = taskAwaiter2;
										taskAwaiter2 = default(TaskAwaiter);
									}
									taskAwaiter.GetResult();
									taskAwaiter = default(TaskAwaiter);
								}
								else
								{
									DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] Now clicking on \"{0}\".", playButton.m_newPlayButtonText.Text);
									Client.LeftClickAt(playButton.Transform.Position);
									TaskAwaiter taskAwaiter = Coroutine.Sleep(2500).GetAwaiter();
									if (!taskAwaiter.IsCompleted)
									{
										await taskAwaiter;
										TaskAwaiter taskAwaiter2;
										taskAwaiter = taskAwaiter2;
										taskAwaiter2 = default(TaskAwaiter);
									}
									taskAwaiter.GetResult();
									taskAwaiter = default(TaskAwaiter);
								}
							}
							else
							{
								DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] TavernBrawlDisplay.m_playButton is not active.", Array.Empty<object>());
								TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
								if (!taskAwaiter.IsCompleted)
								{
									await taskAwaiter;
									TaskAwaiter taskAwaiter2;
									taskAwaiter = taskAwaiter2;
									taskAwaiter2 = default(TaskAwaiter);
								}
								taskAwaiter.GetResult();
								taskAwaiter = default(TaskAwaiter);
							}
						}
					}
				}
			}
			else
			{
				TaskAwaiter taskAwaiter;
				TaskAwaiter taskAwaiter2;
				if (presenceStatus == PresenceStatus.TAVERN_BRAWL_DECKEDITOR)
				{
					DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] {0}.", presenceStatus);
				}
				else if (presenceStatus != PresenceStatus.TAVERN_BRAWL_QUEUE)
				{
					if (presenceStatus == PresenceStatus.TAVERN_BRAWL_GAME)
					{
						DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] {0}.", presenceStatus);
					}
					else if (presenceStatus == PresenceStatus.TAVERN_BRAWL_FRIENDLY_GAME)
					{
						DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] {0}.", presenceStatus);
					}
					else if (presenceStatus == PresenceStatus.TAVERN_BRAWL_FRIENDLY_WAITING)
					{
						DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] {0}.", presenceStatus);
					}
					else
					{
						if (presenceStatus != PresenceStatus.SPECTATING_GAME_TAVERN_BRAWL)
						{
							DefaultBot.ilog_0.ErrorFormat("[AdventureScene] Unhandled presence status detected: {0}. Please restart your client and try again. If the error is still not fixed, please report this message.", presenceStatus);
							BotManager.Stop();
							taskAwaiter = Coroutine.Yield().GetAwaiter();
							if (!taskAwaiter.IsCompleted)
							{
								await taskAwaiter;
								taskAwaiter = taskAwaiter2;
								taskAwaiter2 = default(TaskAwaiter);
							}
							taskAwaiter.GetResult();
							taskAwaiter = default(TaskAwaiter);
							return;
						}
						DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] {0}.", presenceStatus);
					}
				}
				taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
				if (!taskAwaiter.IsCompleted)
				{
					await taskAwaiter;
					taskAwaiter = taskAwaiter2;
					taskAwaiter2 = default(TaskAwaiter);
				}
				taskAwaiter.GetResult();
				taskAwaiter = default(TaskAwaiter);
			}
		}
		else
		{
			DefaultBot.ilog_0.DebugFormat("[TavernBrawlScene] PresenceMgr.GetStatus is null or empty.", Array.Empty<object>());
			TaskAwaiter taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
			if (!taskAwaiter.IsCompleted)
			{
				await taskAwaiter;
				TaskAwaiter taskAwaiter2;
				taskAwaiter = taskAwaiter2;
				taskAwaiter2 = default(TaskAwaiter);
			}
			taskAwaiter.GetResult();
			taskAwaiter = default(TaskAwaiter);
		}
	}
}

@chucklu
Copy link
Collaborator Author

chucklu commented Sep 15, 2019

case SceneMgr.Mode.TAVERN_BRAWL:
taskAwaiter = this.defaultBot_0.method_47(new TavernBrawlScene(this.pegasusScene_0.Address)).GetAwaiter();
if (taskAwaiter.IsCompleted)
{
goto IL_724;
}
this.int_0 = 16;
this.taskAwaiter_0 = taskAwaiter;
this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
return;

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot.Struct60
// Token: 0x060013D7 RID: 5079 RVA: 0x000C20B8 File Offset: 0x000C02B8
void IAsyncStateMachine.MoveNext()
{
	int num = this.int_0;
	try
	{
		TaskAwaiter taskAwaiter;
		TaskAwaiter<bool> taskAwaiter2;
		switch (num)
		{
		case 0:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			break;
		case 1:
			taskAwaiter2 = this.taskAwaiter_1;
			this.taskAwaiter_1 = default(TaskAwaiter<bool>);
			this.int_0 = -1;
			goto IL_2D3;
		case 2:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_381;
		case 3:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_3CB;
		case 4:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_40C;
		case 5:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_443;
		case 6:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_479;
		case 7:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_4BA;
		case 8:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_504;
		case 9:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_545;
		case 10:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_57C;
		case 11:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_5D6;
		case 12:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_617;
		case 13:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_661;
		case 14:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_6A8;
		case 15:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_6DC;
		case 16:
			taskAwaiter = this.taskAwaiter_0;
			this.taskAwaiter_0 = default(TaskAwaiter);
			this.int_0 = -1;
			goto IL_724;
		default:
			goto IL_2E4;
		}
		IL_287:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		this.pegasusScene_0 = SceneMgr.Get().GetScene();
		this.mode_0 = SceneMgr.Get().GetMode();
		taskAwaiter2 = this.defaultBot_0.method_20().GetAwaiter();
		if (!taskAwaiter2.IsCompleted)
		{
			this.int_0 = 1;
			this.taskAwaiter_1 = taskAwaiter2;
			this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter<bool>, DefaultBot.Struct60>(ref taskAwaiter2, ref this);
			return;
		}
		IL_2D3:
		bool result = taskAwaiter2.GetResult();
		taskAwaiter2 = default(TaskAwaiter<bool>);
		if (!result)
		{
			switch (this.mode_0)
			{
			case SceneMgr.Mode.INVALID:
				DefaultBot.ilog_0.DebugFormat("[MainCoroutine] Unprocessed mode: {0}.", this.mode_0);
				taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_381;
				}
				this.int_0 = 2;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.STARTUP:
				DefaultBot.ilog_0.DebugFormat("[MainCoroutine] Unprocessed mode: {0}.", this.mode_0);
				taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_3CB;
				}
				this.int_0 = 3;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.LOGIN:
				taskAwaiter = this.defaultBot_0.method_46(new Login(this.pegasusScene_0.Address)).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_40C;
				}
				this.int_0 = 4;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.HUB:
				taskAwaiter = this.defaultBot_0.method_45(this.pegasusScene_0).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_443;
				}
				this.int_0 = 5;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.GAMEPLAY:
				taskAwaiter = this.defaultBot_0.method_32(Gameplay.Get()).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_479;
				}
				this.int_0 = 6;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.COLLECTIONMANAGER:
				taskAwaiter = this.defaultBot_0.method_5(new CollectionManagerScene(this.pegasusScene_0.Address)).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_4BA;
				}
				this.int_0 = 7;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.PACKOPENING:
				DefaultBot.ilog_0.DebugFormat("[MainCoroutine] Unprocessed mode: {0}.", this.mode_0);
				taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_504;
				}
				this.int_0 = 8;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.TOURNAMENT:
				taskAwaiter = this.defaultBot_0.method_48(new TournamentScene(this.pegasusScene_0.Address)).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_545;
				}
				this.int_0 = 9;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.FRIENDLY:
				taskAwaiter = this.defaultBot_0.method_30(this.pegasusScene_0).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_57C;
				}
				this.int_0 = 10;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.FATAL_ERROR:
				DefaultBot.ilog_0.DebugFormat("[MainCoroutine] Unprocessed mode: {0}.", this.mode_0);
				GameEventManager.Instance.method_9();
				BotManager.Stop();
				taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_5D6;
				}
				this.int_0 = 11;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.DRAFT:
				taskAwaiter = this.defaultBot_0.method_24(new DraftScene(this.pegasusScene_0.Address)).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_617;
				}
				this.int_0 = 12;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.CREDITS:
				DefaultBot.ilog_0.DebugFormat("[MainCoroutine] Unprocessed mode: {0}.", this.mode_0);
				taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_661;
				}
				this.int_0 = 13;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.RESET:
				DefaultBot.ilog_0.DebugFormat("[MainCoroutine] Unprocessed mode: {0}.", this.mode_0);
				taskAwaiter = Coroutine.Sleep(1000).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_6A8;
				}
				this.int_0 = 14;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.ADVENTURE:
				taskAwaiter = this.defaultBot_0.method_0(this.pegasusScene_0).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_6DC;
				}
				this.int_0 = 15;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			case SceneMgr.Mode.TAVERN_BRAWL:
				taskAwaiter = this.defaultBot_0.method_47(new TavernBrawlScene(this.pegasusScene_0.Address)).GetAwaiter();
				if (taskAwaiter.IsCompleted)
				{
					goto IL_724;
				}
				this.int_0 = 16;
				this.taskAwaiter_0 = taskAwaiter;
				this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
				return;
			default:
				goto IL_6EB;
			}
		}
		IL_2E4:
		taskAwaiter = Coroutine.Yield().GetAwaiter();
		if (!taskAwaiter.IsCompleted)
		{
			this.int_0 = 0;
			this.taskAwaiter_0 = taskAwaiter;
			this.asyncTaskMethodBuilder_0.AwaitUnsafeOnCompleted<TaskAwaiter, DefaultBot.Struct60>(ref taskAwaiter, ref this);
			return;
		}
		goto IL_287;
		IL_381:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_3CB:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_40C:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_443:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_479:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_4BA:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_504:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_545:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_57C:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_5D6:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_617:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_661:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_6A8:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
		IL_6DC:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		IL_6EB:
		this.pegasusScene_0 = null;
		goto IL_2E4;
		IL_724:
		taskAwaiter.GetResult();
		taskAwaiter = default(TaskAwaiter);
		goto IL_6EB;
	}
	catch (Exception exception)
	{
		this.int_0 = -2;
		this.asyncTaskMethodBuilder_0.SetException(exception);
	}
}

@chucklu
Copy link
Collaborator Author

chucklu commented Sep 15, 2019

asyncTaskMethodBuilder_.Start<DefaultBot.Struct60>(ref @struct);

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x06001395 RID: 5013 RVA: 0x000BE0E8 File Offset: 0x000BC2E8
private Task method_21()
{
	DefaultBot.Struct60 @struct;
	@struct.defaultBot_0 = this;
	@struct.asyncTaskMethodBuilder_0 = AsyncTaskMethodBuilder.Create();
	@struct.int_0 = -1;
	AsyncTaskMethodBuilder asyncTaskMethodBuilder_ = @struct.asyncTaskMethodBuilder_0;
	asyncTaskMethodBuilder_.Start<DefaultBot.Struct60>(ref @struct);
	return @struct.asyncTaskMethodBuilder_0.Task;
}

@chucklu
Copy link
Collaborator Author

chucklu commented Sep 15, 2019

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x060013B7 RID: 5047 RVA: 0x0000EAED File Offset: 0x0000CCED
[CompilerGenerated]
private Task method_53()
{
	return this.method_21();
}

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x060013B8 RID: 5048 RVA: 0x0000EAED File Offset: 0x0000CCED
[CompilerGenerated]
private Task method_54()
{
	return this.method_21();
}

@chucklu
Copy link
Collaborator Author

chucklu commented Sep 15, 2019

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x0600138B RID: 5003 RVA: 0x000BDE14 File Offset: 0x000BC014
public void Start()
{
	this.coroutine_0 = new Coroutine(new Func<Task>(this.method_53));
	this.bool_2 = false;
	GameEventManager.Instance.Start();
	PluginManager.Start();
	RoutineManager.Start();
	ProcessHookManager.Enable();
	GameEventManager.NewGame += this.method_18;
	GameEventManager.GameOver += this.method_19;
	GameEventManager.MulliganConfirm += this.method_16;
	InactivePlayerKicker inactivePlayerKicker = InactivePlayerKicker.Get();
	if (inactivePlayerKicker != null)
	{
		inactivePlayerKicker.SetShouldCheckForInactivity(false);
	}
}
// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x0600138E RID: 5006 RVA: 0x0000EA4B File Offset: 0x0000CC4B
private void method_17()
{
	this.coroutine_0.Dispose();
	this.coroutine_0 = new Coroutine(new Func<Task>(this.method_54));
}

@chucklu
Copy link
Collaborator Author

chucklu commented Sep 15, 2019

// Triton.Bot.Logic.Bots.DefaultBot.DefaultBot
// Token: 0x0600138F RID: 5007 RVA: 0x000BDE9C File Offset: 0x000BC09C
public void Tick()
{
	if (this.coroutine_0.IsFinished)
	{
		DefaultBot.ilog_0.DebugFormat("The bot coroutine has finished in a state of {0}", this.coroutine_0.Status);
		BotManager.Stop();
		return;
	}
	if (!TritonHs.IsClientInUsableState(true))
	{
		BotManager.MsBeforeNextTick += 750;
		this.method_17();
		return;
	}
	if (!this.bool_2 && ChatMgr.Get().FriendListFrame != null)
	{
		DefaultBot.ilog_0.ErrorFormat("[Tick] FriendListFrame != null.", Array.Empty<object>());
		Client.LeftClickAtDialog(BnetBar.Get().m_friendButton.m_OnlineCountText.Transform.Position);
		BotManager.MsBeforeNextTick += 1000;
		this.method_17();
		return;
	}
	bool flag;
	if (TritonHs.HandleDialog(new ShouldAcceptFriendlyChallengeDelegate(this.ShouldAcceptFriendlyChallenge), out flag))
	{
		if (flag)
		{
			BotManager.Stop();
		}
		BotManager.MsBeforeNextTick += 3000;
		this.method_17();
		return;
	}
	GameEventManager.Instance.Tick();
	PluginManager.Tick();
	RoutineManager.Tick();
	try
	{
		this.coroutine_0.Resume();
	}
	catch
	{
		this.method_17();
		throw;
	}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant