public static void Display(VillageTask task) { // Access player Player player = Program.Player; // Define menu title string menuTitle = $"Doing task: \"{task.Description}\""; // Calculate health reduction per tick float tickDamage = player.VillagesManager.GetTaskHealthRequirement(task) / task.DurationTicks; // Display progress ConstantProgress.Start(menuTitle, 200, task.DurationTicks, (isDone) => { // Update player's health player.ApplyDamage(tickDamage); // Process last frame if (isDone) { // Update player's reputation player.VillagesManager.AddReputation(task.ReputationBonus); // Remove task from the village task.Village.Tasks.RemoveTask(task); } }); }
public float GetTaskHealthRequirement(VillageTask task) { return(Convert.ToSingle(task.DurationTicks * PlayerStats.HEALTH_AMOUNT_SOCIALIZATION_PER_TICK)); }
/// <summary> /// Checks if player has enough health to do a village task. /// </summary> /// <param name="task"> /// Target task /// </param> /// <returns> /// Boolean that represents if player another health to complete the target task /// </returns> public bool CanDoTask(VillageTask task) { return(Player.Health - GetTaskHealthRequirement(task) > 0); }