Skip to content

Automatically skip Block Yard missions #299

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

Merged
merged 5 commits into from
Sep 17, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions Uchu.StandardScripts/AvantGardens/SkipBlockYardMissions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using System.Linq;
using System.Threading.Tasks;
using Uchu.Core.Resources;
using Uchu.World;
using Uchu.World.Scripting.Native;
using Uchu.World.Social;

namespace Uchu.StandardScripts.AvantGardens
{
[ZoneSpecific(1100)]
public class SkipBlockYardMissions : NativeScript
{
public override Task LoadAsync()
{
var crashHelmut = Zone.GameObjects.First(g => g.Lot == Lot.CrashHelmutNpc);
Listen(crashHelmut.GetComponent<MissionGiverComponent>().OnMissionOk, async tuple =>
{
var (missionId, _, _, player) = tuple;

// 'go to block yard' mission
if (missionId != (int) MissionId.BackupBulwark)
return;

// small delay to make sure the mission has been added to the player's mission inventory and started
await Task.Delay(1000);

// complete 'go to block yard' mission
var missionInventory = player.GetComponent<MissionInventoryComponent>();
var bulwarkMission = missionInventory.GetMission(MissionId.BackupBulwark);
await bulwarkMission.CompleteAsync();

// complete 'smash spider queen' mission
var arachnophobiaMission = await missionInventory.AddMissionAsync((int) MissionId.Arachnophobia, player);
await arachnophobiaMission.StartAsync();
await arachnophobiaMission.CompleteAsync();

// start 'talk to sky lane' mission
var skyLaneMission = await missionInventory.AddMissionAsync((int) MissionId.CheckInwithSkyLane, player);
await skyLaneMission.StartAsync();

// show pop-up to player
await UiHelper.AnnouncementAsync((Player) player, "Completed Missions",
"Block Yard is currently not implemented. The missions have been completed for you.");
});

return Task.CompletedTask;
}
}
}
21 changes: 21 additions & 0 deletions Uchu.StandardScripts/BlockYard/BlockYardWarning.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System.Threading.Tasks;
using Uchu.World.Scripting.Native;
using Uchu.World.Social;

namespace Uchu.StandardScripts.BlockYard
{
[ZoneSpecific(1150)]
public class BlockYardWarning : NativeScript
{
public override Task LoadAsync()
{
Listen(Zone.OnPlayerLoad, async player =>
{
await UiHelper.AnnouncementAsync(player, "Not yet implemented",
"Block Yard is currently not implemented. You can return to Avant Gardens by sending <font color=\"#FF7F00\">/testmap 1100</font> in the chat.");
});

return Task.CompletedTask;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@ public MissionInstance GetMission(int id)
/// <param name="missionId">The missionId to create a mission for</param>
/// <param name="gameObject">The game object to assign the mission to</param>
/// <returns>The newly created mission instance</returns>
private async Task<MissionInstance> AddMissionAsync(int missionId, GameObject gameObject)
public async Task<MissionInstance> AddMissionAsync(int missionId, GameObject gameObject)
{
var mission = new MissionInstance(missionId, (Player)GameObject);
await mission.LoadAsync();
Expand Down
2 changes: 2 additions & 0 deletions Uchu.World/Structs/Lot.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ public int[] GetComponentIds(int componentType)
public const int MonumentRaceCancelTrigger = 3297;
public const int MonumentFinishLine = 4967;

public const int CrashHelmutNpc = 6374;

#endregion
}
}