public static bool Mission_Finish(this Player Player, int Global_ID) { if (Player.Tutorials.FindIndex(M => M == Global_ID) < 0) { Missions Mission = CSV.Tables.Get(Gamefile.Missions).GetDataWithID(Global_ID) as Missions; #if DEBUG Console.WriteLine($"Mission received {Mission.Name} marked as finished"); #endif if (!string.IsNullOrEmpty(Mission.RewardResource)) { Files.CSV_Logic.Resource CSV_Resources = CSV.Tables.Get(Gamefile.Resources).GetData(Mission.RewardResource) as Files.CSV_Logic.Resource; Player.Resources.Plus(CSV_Resources.GetGlobalID(), Mission.RewardResourceCount); } if (!string.IsNullOrEmpty(Mission.RewardTroop)) { Characters CSV_Characters = CSV.Tables.Get(Gamefile.Characters).GetData(Mission.RewardTroop) as Characters; #if DEBUG Console.WriteLine($"Player received {CSV_Characters.Name} as mission rewards"); #endif Player.Add_Unit(CSV_Characters.GetGlobalID(), Mission.RewardTroopCount); } if (!string.IsNullOrEmpty(Mission.Dependencies)) { int DependenciesID = CSV.Tables.Get(Gamefile.Missions).GetData(Mission.Dependencies).GetGlobalID(); if (Player.Tutorials.FindIndex(M => M == DependenciesID) < 0) { #if DEBUG Console.WriteLine( $"Mission Dependencies {(CSV.Tables.Get(Gamefile.Missions).GetDataWithID(DependenciesID) as Missions).Name} marked as finished"); #endif Mission_Finish(Player, DependenciesID); } } if (!string.IsNullOrEmpty(Mission.AttackNPC)) { Npcs CSV_Npcs = CSV.Tables.Get(Gamefile.Npcs).GetData(Mission.AttackNPC) as Npcs; if (Player.Npcs.FindIndex(N => N.NPC_Id == CSV_Npcs.GetGlobalID()) > -1) { Player.Resources.Plus(Logic.Enums.Resource.Gold, CSV_Npcs.Gold); Player.Resources.Plus(Logic.Enums.Resource.Elixir, CSV_Npcs.Elixir); } } if (Mission.ChangeName) { Player.Resources.Plus(Logic.Enums.Resource.Gold, 900); Player.Resources.Plus(Logic.Enums.Resource.Elixir, 400); } Player.AddExperience(Mission.RewardXP); Player.Tutorials.Add(Mission.GetGlobalID()); return(true); } return(false); }