private void on_tooltip_consumable_info(IAssignableIdentity minion, GameObject widget_go, ToolTip tooltip) { tooltip.ClearMultiStringTooltip(); ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn; TableRow widgetRow = GetWidgetRow(widget_go); EdiblesManager.FoodInfo foodInfo = consumableInfoTableColumn.consumable_info as EdiblesManager.FoodInfo; int num = 0; if (foodInfo != null) { int num2 = foodInfo.Quality; MinionIdentity minionIdentity = minion as MinionIdentity; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { AttributeInstance attributeInstance = minionIdentity.GetAttributes().Get(Db.Get().Attributes.FoodExpectation); num2 += Mathf.RoundToInt(attributeInstance.GetTotalValue()); } string effectForFoodQuality = Edible.GetEffectForFoodQuality(num2); Effect effect = Db.Get().effects.Get(effectForFoodQuality); foreach (AttributeModifier selfModifier in effect.SelfModifiers) { if (selfModifier.AttributeId == Db.Get().Attributes.QualityOfLife.Id) { num += Mathf.RoundToInt(selfModifier.Value); } } } switch (widgetRow.rowType) { case TableRow.RowType.Header: tooltip.AddMultiStringTooltip(consumableInfoTableColumn.consumable_info.ConsumableName, null); if (foodInfo != null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_AVAILABLE, GameUtil.GetFormattedCalories(WorldInventory.Instance.GetAmount(consumableInfoTableColumn.consumable_info.ConsumableId.ToTag()) * foodInfo.CaloriesPerUnit, GameUtil.TimeSlice.None, true)), null); tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_QUALITY, GameUtil.AddPositiveSign(num.ToString(), num > 0)), null); tooltip.AddMultiStringTooltip("\n" + foodInfo.Description, null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_AVAILABLE, GameUtil.GetFormattedUnits(WorldInventory.Instance.GetAmount(consumableInfoTableColumn.consumable_info.ConsumableId.ToTag()), GameUtil.TimeSlice.None, true)), null); } break; case TableRow.RowType.Default: if (consumableInfoTableColumn.get_value_action(minion, widget_go) == ResultValues.True) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.NEW_MINIONS_FOOD_PERMISSION_ON, consumableInfoTableColumn.consumable_info.ConsumableName), null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.NEW_MINIONS_FOOD_PERMISSION_OFF, consumableInfoTableColumn.consumable_info.ConsumableName), null); } break; case TableRow.RowType.Minion: case TableRow.RowType.StoredMinon: if (minion != null) { if (consumableInfoTableColumn.get_value_action(minion, widget_go) == ResultValues.True) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_PERMISSION_ON, minion.GetProperName(), consumableInfoTableColumn.consumable_info.ConsumableName), null); } else { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_PERMISSION_OFF, minion.GetProperName(), consumableInfoTableColumn.consumable_info.ConsumableName), null); } if (foodInfo != null && (UnityEngine.Object)(minion as MinionIdentity) != (UnityEngine.Object)null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.FOOD_QUALITY_VS_EXPECTATION, GameUtil.AddPositiveSign(num.ToString(), num > 0), minion.GetProperName()), null); } else if ((UnityEngine.Object)(minion as StoredMinionIdentity) != (UnityEngine.Object)null) { tooltip.AddMultiStringTooltip(string.Format(UI.CONSUMABLESSCREEN.CANNOT_ADJUST_PERMISSIONS, (minion as StoredMinionIdentity).GetStorageReason()), null); } } break; } }