/// <summary>
        /// Initilize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is ProtoItemMedical medical)
            {
                //EntityInformation.Add(new ViewModelEntityInformation("Medical toxicity", medical.MedicalToxicity));
                if (Math.Abs(medical.FoodRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Food restore", medical.FoodRestore));
                }
                if (Math.Abs(medical.WaterRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Water restore", medical.WaterRestore));
                }
                if (Math.Abs(medical.HealthRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Health restore", medical.HealthRestore));
                }
                if (Math.Abs(medical.StaminaRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Stamina restore", medical.StaminaRestore));
                }
                if (medical.MedicalToxicity > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                         EntityViewModelsManager.GetEntityViewModelByType <StatusEffectMedicineOveruse>(),
                                                                         medical.MedicalToxicity));
                }
            }

            // TODO: Rework this.
            // Hardcoded information
            AddStatusEffectsInformation();
        }
        /// <summary>
        /// Initialize entity relationships with each other - invoked after all entity view Models created,
        /// so you can access them by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitAdditionalRecipes()
        {
            base.InitAdditionalRecipes();

            if (!(ProtoEntity is ProtoItemMedical medical))
            {
                return;
            }

            foreach (EffectAction effect in medical.Effects)
            {
                var statusEffectVM = EntityViewModelsManager.GetEntityViewModel(effect.ProtoStatusEffect);
                if (statusEffectVM is ProtoStatusEffectViewModel statusEffectViewModel)
                {
                    statusEffectViewModel.AddConsumable(this, effect.Intensity);
                }
                else
                {
                    Api.Logger.Error("CNEI: It's not a status effect " + statusEffectVM + " in " + this);
                }
            }

            if (medical.MedicalToxicity > 0)
            {
                var medicineOveruseVM =
                    EntityViewModelsManager.GetEntityViewModelByType <StatusEffectMedicineOveruse>();
                if (medicineOveruseVM is ProtoStatusEffectViewModel medicineOveruseViewModel)
                {
                    medicineOveruseViewModel.AddConsumable(this, medical.MedicalToxicity);
                }
            }
        }
        /// <summary>
        /// Initialize information about entity - invoked after all entity view Models created,
        /// so you can use links to other entity by using <see cref="EntityViewModelsManager.GetEntityViewModel" />
        /// and <see cref="EntityViewModelsManager.GetAllEntityViewModels" />.
        /// </summary>
        public override void InitInformation()
        {
            base.InitInformation();

            if (ProtoEntity is ProtoItemMedical medical)
            {
                //EntityInformation.Add(new ViewModelEntityInformation("Medical toxicity", medical.MedicalToxicity));
                if (Math.Abs(medical.FoodRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Food restore", medical.FoodRestore));
                }
                if (Math.Abs(medical.WaterRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Water restore", medical.WaterRestore));
                }
                if (Math.Abs(medical.HealthRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Health restore", medical.HealthRestore));
                }
                if (Math.Abs(medical.StaminaRestore) > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Stamina restore", medical.StaminaRestore));
                }
                if (medical.MedicalToxicity > 0)
                {
                    EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                         EntityViewModelsManager.GetEntityViewModelByType <StatusEffectMedicineOveruse>(),
                                                                         medical.MedicalToxicity));
                }
                foreach (EffectAction effect in medical.Effects)
                {
                    EntityInformation.Add(new ViewModelEntityInformation(effect.Intensity > 0 ? "Add effect" : "Remove effect",
                                                                         EntityViewModelsManager.GetEntityViewModel(effect.ProtoStatusEffect), effect.Intensity));
                }
            }
        }
        private void AddStatusEffectsInformation()
        {
            switch (ProtoEntity)
            {
            case ItemAntiMutation _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectMutation>(), 1.0));
                break;

            case ItemAntiNausea _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 1.0));
                break;

            case ItemAntiRadiation _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectRadiationPoisoning>(), 0.3));
                break;

            case ItemAntiRadiationPreExposure _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectRadiationPoisoning>(), 0.1));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectProtectionRadiation>(), 0.5));
                break;

            case ItemAntiToxin _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 0.3));
                break;

            case ItemAntiToxinPreExposure _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 0.1));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectProtectionToxins>(), 0.5));
                break;

            case ItemBandage _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectBleeding>(), 0.3));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHealingSlow>(), 0.1));
                break;

            case ItemCigarCheap _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHigh>(), 0.3));
                break;

            case ItemCigarNormal _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHigh>(), 0.5));
                break;

            case ItemCigarPremium _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHigh>(), 0.7));
                break;

            case ItemHeatPreExposure _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectProtectionHeat>(), 0.5));
                break;

            case ItemHemostatic _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectBleeding>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectProtectionBleeding>(), 0.25));
                break;

            case ItemHerbGreen _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHealingSlow>(), 0.07));
                break;

            case ItemHerbPurple _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectRadiationPoisoning>(), 0.05));
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 0.05));
                break;

            case ItemHerbRed _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectEnergyRush>(), 0.05));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 0.1));
                break;

            case ItemMedkit _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHealingSlow>(), 0.75));
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectBleeding>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectBrokenLeg>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectSplintedLeg>(), 1.0));
                break;

            case ItemNeuralEnhancer _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectPain>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add LP",
                                                                     ItemNeuralEnhancer.UsageGivesLearningPointsAmount));
                break;

            case ItemPainkiller _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectPain>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectProtectionPain>(), 0.5));
                break;

            case ItemPeredozin _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectMedicineOveruse>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectAnalBlockage>(), 1.0));
                break;

            case ItemPsiPreExposure _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectProtectionPsi>(), 0.5));
                break;

            case ItemRemedyHerbal _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHealingSlow>(), 0.35));
                break;

            case ItemSplint _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectBrokenLeg>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectSplintedLeg>(), 1.0));
                break;

            case ItemStimpack _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHealingFast>(), 0.4));
                break;

            case ItemStrengthBoostBig _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectStrength>(), 0.7));
                break;

            case ItemStrengthBoostSmall _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectStrength>(), 0.3));
                break;
            }
        }
Beispiel #5
0
        private void AddStatusEffectsInformation()
        {
            switch (ProtoEntity)
            {
            case ItemBeer _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectDrunk>(), 0.2));
                break;

            case ItemBottleWaterSalty _:
            case ItemBottleWaterStale _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 0.5));
                break;

            case ItemCarrotGrilled _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectWellFed>(), 0.2));
                break;

            case ItemChiliBeans _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectWellFed>(), 0.3));
                break;

            case ItemChiliPepper _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectPain>(), 0.3));
                break;

            case ItemCoffeeBeans _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 0.2));
                break;

            case ItemCoffeeCup _:
                EntityInformation.Add(new ViewModelEntityInformation("Effect depends on", "freshnes"));
                EntityInformation.Add(new ViewModelEntityInformation("Effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectEnergyRush>(), 0.2));
                break;

            case ItemDrinkEnergy _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectEnergyRush>(), 0.3));
                break;

            case ItemDrinkHerbal _:
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 0.025));
                break;

            case ItemEggsRaw _:
                EntityInformation.Add(new ViewModelEntityInformation("Effect chance", "33%"));
                EntityInformation.Add(new ViewModelEntityInformation("Effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 0.5));
                break;

            case ItemLiquor _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectDrunk>(), 0.35));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHealingSlow>(), 0.1));
                break;

            case ItemMeatRaw _:
                EntityInformation.Add(new ViewModelEntityInformation("Effect chance", "50%"));
                EntityInformation.Add(new ViewModelEntityInformation("Effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 0.75));
                break;

            case ItemMushroomPink _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 1.0));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 1.0));
                break;

            case ItemMushroomRust _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectNausea>(), 0.5));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 0.15));
                break;

            case ItemPieBerry _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectWellFed>(), 0.4));
                break;

            case ItemSandwich _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectWellFed>(), 0.2));
                break;

            case ItemStew _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectWellFed>(), 0.5));
                break;

            case ItemTequila _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectDrunk>(), 0.4));
                break;

            case ItemTincture _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectDrunk>(), 0.2));
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectHealingSlow>(), 0.25));
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectToxins>(), 0.1));
                EntityInformation.Add(new ViewModelEntityInformation("Remove effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectRadiationPoisoning>(), 0.1));
                break;

            case ItemVodka _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectDrunk>(), 0.45));
                break;

            case ItemWine _:
                EntityInformation.Add(new ViewModelEntityInformation("Add effect",
                                                                     EntityViewModelsManager.GetEntityViewModelByType <StatusEffectDrunk>(), 0.25));
                break;
            }
        }