/* * "TECH_MATHEMATICS" "MATHEMATICS_ADJUST_SEA_MOVEMENT" * "TECH_CARTOGRAPHY" "CARTOGRAPHY_GRANT_OCEAN_NAVIGATION" * "TECH_CARTOGRAPHY" "CARTOGRAPHY_ADJUST_EMBARKED_MOVEMENT" * "TECH_STEAM_POWER" "STEAM_POWER_ADJUST_EMBARKED_MOVEMENT" * "TECH_COMBUSTION" "COMBUSTION_ADJUST_EMBARKED_MOVEMENT" * "TECH_PRINTING" "PRINTING_ADD_DIPLO_VISIBILITY" * "TECH_COMPUTERS" "TECH_GRANT_SPY" * "TECH_PRINTING" "PRINTING_BOOST_WRITING_TOURISM" * "TECH_COMPUTERS" "COMPUTERS_BOOST_ALL_TOURISM" * * * * * * */ public string GetModifierTextForResource(Resource resource) { StringBuilder output = new StringBuilder(); List <ModifierArgument> resourceArguments = ModifierArgumentList.Where(x => x.Value == "RESOURCE_" + resource.ReferenceName).ToList(); if (resourceArguments.Count != 0) { //Get Modifiers foreach (ModifierArgument argument in resourceArguments) { Modifier modifier = ModifierList.First(x => x.ModifierId == argument.ModifierId); { if (modifier != null) { if (modifier.ModifierType == "MODIFIER_PLAYER_ADJUST_FREE_RESOURCE_IMPORT") { //Granted by trade with city states string text = "A free resource import can be gained from the City State of " + modifier.ModifierId.Split('_')[2]; if (modifier.SubjectRequirementSetId != null) { text += ", provided that " + modifier.SubjectRequirementSetId.ToTitleCase(); } output.AppendLine(text); } if (modifier.ModifierType == "MODIFIER_PLAYER_OWNED_BONUS_RESOURCE_EXTRA_AMENITIES") { //Granted by trade with city states string text = "Extra amenities can be gained from the City State of " + modifier.ModifierId.Split('_')[2]; if (modifier.SubjectRequirementSetId != null) { text += ", provided that " + modifier.SubjectRequirementSetId.ToTitleCase(); } output.AppendLine(text); } if (modifier.ModifierType == "MODIFIER_SINGLE_CITY_GRANT_RESOURCE_IN_CITY") { //Granted by Great Person List <GreatPersonIndividualActionModifier> actionModifiers = GreatPersonActionModifiers.Where(x => x.ModifierId == modifier.ModifierId).ToList(); foreach (GreatPersonIndividualActionModifier actionMod in actionModifiers) { resource.GrantedByGreatPerson.Add(actionMod.GreatPersonIndividual); string text = "A free resource can be gained from the Great Person " + actionMod.GreatPersonIndividual.html_Goto_URL_Link; if (modifier.SubjectRequirementSetId != null) { text += ", provided that " + modifier.SubjectRequirementSetId.ToTitleCase(); } output.AppendLine(text); } } if (modifier.ModifierType == "MODIFIER_PLAYER_GRANT_FREE_RESOURCE_VISIBILITY") { //Made Visible by Great Person List <GreatPersonIndividualActionModifier> actionModifiers = GreatPersonActionModifiers.Where(x => x.ModifierId == modifier.ModifierId).ToList(); foreach (GreatPersonIndividualActionModifier actionMod in actionModifiers) { resource.MadeVisibleByGreatPerson.Add(actionMod.GreatPersonIndividual); string text = "The resource can be found by the Great Person " + actionMod.GreatPersonIndividual.html_Goto_URL_Link; if (modifier.SubjectRequirementSetId != null) { text += ", provided that " + modifier.SubjectRequirementSetId.ToTitleCase(); } output.AppendLine(text); } } if (modifier.ModifierType == "MODIFIER_PLAYER_GRANT_FREE_RESOURCE_FROM_UNIT_PLOT") { //Made Visible by Great Person List <GreatPersonIndividualActionModifier> actionModifiers = GreatPersonActionModifiers.Where(x => x.ModifierId == modifier.ModifierId).ToList(); foreach (GreatPersonIndividualActionModifier actionMod in actionModifiers) { resource.GrantFreeResourceFromUnitPlotByGreatPerson.Add(actionMod.GreatPersonIndividual); string text = "Additional resource can be granted from from a plot by the Great Person " + actionMod.GreatPersonIndividual.html_Goto_URL_Link; if (modifier.SubjectRequirementSetId != null) { text += ", provided that " + modifier.SubjectRequirementSetId.ToTitleCase(); } output.AppendLine(text); } } } } } return(output.ToString()); } else { return(""); } }