Various Skill Progress Hideout Adjustments (#739)
* Adjust ArmorKitSkillPointGainPerRepairPointMultiplier evaluation * Adjust GetWeaponRepairSkillPoints * adjust WeaponRepair Treatment gain values and intellect gain values * enable scaling for hideout upgrade * Adjust HandleRecipe * adjust skill points addition for PrestigeHelper and RewardHelper * format * adjust doc * adjust doc * amend some ABI changes * clarify bool usage * adjust UpdateFuel, WaterFilters and AirFilters * add HideoutManagement skill progression to scav case --------- Co-authored-by: rootdarkarchon <root.darkarchon@outlook.com>
This commit is contained in:
@@ -217,7 +217,8 @@ public class HideoutController(
|
||||
profileHelper.AddSkillPointsToPlayer(
|
||||
pmcData,
|
||||
SkillTypes.HideoutManagement,
|
||||
globals.Configuration.SkillsSettings.HideoutManagement.SkillPointsPerAreaUpgrade
|
||||
globals.Configuration.SkillsSettings.HideoutManagement.SkillPointsPerAreaUpgrade,
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
@@ -687,8 +688,9 @@ public class HideoutController(
|
||||
);
|
||||
pmcData.Hideout.Production[request.RecipeId].SptIsScavCase = true;
|
||||
|
||||
// reward charisma based on skill progress rate for each scav production start
|
||||
// reward charisma and hideout management based on skill progress rate for each scav production start
|
||||
profileHelper.AddSkillPointsToPlayer(pmcData, SkillTypes.Charisma, 1, true);
|
||||
profileHelper.AddSkillPointsToPlayer(pmcData, SkillTypes.HideoutManagement, 1, true);
|
||||
|
||||
return output;
|
||||
}
|
||||
@@ -822,7 +824,7 @@ public class HideoutController(
|
||||
}
|
||||
|
||||
// Variables for management of skill
|
||||
var craftingExpAmount = 0;
|
||||
double craftingExpAmount = 0;
|
||||
var counterHoursCrafting = GetCustomSptHoursCraftingTaskConditionCounter(pmcData, recipe);
|
||||
var totalCraftingHours = counterHoursCrafting.Value;
|
||||
|
||||
@@ -863,19 +865,19 @@ public class HideoutController(
|
||||
// Check if the recipe is the same as the last one - get bonus when crafting same thing multiple times
|
||||
var area = pmcData.Hideout.Areas.FirstOrDefault(area => area.Type == recipe.AreaType);
|
||||
if (area is not null && request.RecipeId != area.LastRecipe)
|
||||
// 1 point per craft upon the end of production for alternating between 2 different crafting recipes in the same module
|
||||
// 5 points per craft upon the end of production for alternating between 2 different crafting recipes in the same module
|
||||
{
|
||||
craftingExpAmount += HideoutConfig.ExpCraftAmount; // Default is 10
|
||||
craftingExpAmount += HideoutConfig.CraftingExpAmount; // Default is 12.5, scaled (at 0.4 scale => 5 points per alternating craft)
|
||||
}
|
||||
|
||||
// Update variable with time spent crafting item(s)
|
||||
// 1 point per 8 hours of crafting
|
||||
// 1.5 (3.75 w/ applying default 0.4 scale) points per 8 hours of crafting
|
||||
totalCraftingHours += recipe.ProductionTime;
|
||||
if (totalCraftingHours / HideoutConfig.HoursForSkillCrafting >= 1)
|
||||
{
|
||||
// Spent enough time crafting to get a bonus xp multiplier
|
||||
var multiplierCrafting = Math.Floor(totalCraftingHours.Value / HideoutConfig.HoursForSkillCrafting);
|
||||
craftingExpAmount += (int)(1 * multiplierCrafting);
|
||||
craftingExpAmount += (HideoutConfig.CraftingExpForHoursOfCrafting * multiplierCrafting);
|
||||
totalCraftingHours -= HideoutConfig.HoursForSkillCrafting * multiplierCrafting;
|
||||
}
|
||||
|
||||
@@ -943,12 +945,18 @@ public class HideoutController(
|
||||
// Add Crafting skill to player profile
|
||||
if (craftingExpAmount > 0)
|
||||
{
|
||||
profileHelper.AddSkillPointsToPlayer(pmcData, SkillTypes.Crafting, craftingExpAmount);
|
||||
profileHelper.AddSkillPointsToPlayer(pmcData, SkillTypes.Crafting, craftingExpAmount, true);
|
||||
|
||||
// TODO: verify this is still giving intellect skill points on live
|
||||
var intellectAmountToGive = 0.5 * Math.Round((double)(craftingExpAmount / 15));
|
||||
if (intellectAmountToGive > 0)
|
||||
{
|
||||
profileHelper.AddSkillPointsToPlayer(pmcData, SkillTypes.Intellect, intellectAmountToGive);
|
||||
profileHelper.AddSkillPointsToPlayer(
|
||||
pmcData,
|
||||
SkillTypes.Intellect,
|
||||
intellectAmountToGive,
|
||||
useSkillProgressRateMultiplier: false
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -277,7 +277,13 @@ public class InventoryController(
|
||||
}
|
||||
|
||||
// TODO: update this with correct calculation using values from globals json
|
||||
profileHelper.AddSkillPointsToPlayer(fullProfile.CharacterData.PmcData, SkillTypes.Intellect, 0.05 * itemTpls.Count());
|
||||
// TODO: verify this is still giving intellect skill points on live
|
||||
profileHelper.AddSkillPointsToPlayer(
|
||||
fullProfile.CharacterData.PmcData,
|
||||
SkillTypes.Intellect,
|
||||
0.05 * itemTpls.Count(),
|
||||
useSkillProgressRateMultiplier: false
|
||||
);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user