private static int GetConstitutionHpBonus(IAttributesModule attributesModule) { var constitutionAttribute = attributesModule.GetAttribute(PersonAttributeType.Constitution); int constitutionHpBonus; if (constitutionAttribute is null) { constitutionHpBonus = 0; } else { const int CONSTITUTION_HP_INFLUENCE = 2; const int BASE_CONSTITUTION = 10; if (constitutionAttribute.Value > 10) { constitutionHpBonus = ((int)constitutionAttribute.Value - BASE_CONSTITUTION) * CONSTITUTION_HP_INFLUENCE; } else { constitutionHpBonus = -(BASE_CONSTITUTION - (int)constitutionAttribute.Value) * CONSTITUTION_HP_INFLUENCE; } } return(constitutionHpBonus); }
private static IEnumerable <SurvivalStat> GetStatsIterator([NotNull] IPersonScheme personScheme, IAttributesModule attributesModule) { // Устанавливаем характеристики выживания персонажа yield return(SetHitPointsStat(personScheme, attributesModule)); // Выставляем сытость/упоённость if (personScheme.SurvivalStats != null) { yield return(CreateStatFromScheme(personScheme.SurvivalStats, SurvivalStatType.Satiety, PersonSurvivalStatType.Satiety)); yield return(CreateStatFromScheme(personScheme.SurvivalStats, SurvivalStatType.Hydration, PersonSurvivalStatType.Hydration)); yield return(CreateStatFromScheme(personScheme.SurvivalStats, SurvivalStatType.Intoxication, PersonSurvivalStatType.Intoxication)); yield return(CreateStatFromScheme(personScheme.SurvivalStats, SurvivalStatType.Wound, PersonSurvivalStatType.Wound)); } yield return(CreateUselessStat(SurvivalStatType.Breath)); yield return(CreateUselessStat(SurvivalStatType.Energy)); }
public HumanSurvivalModule([NotNull] IPersonScheme personScheme, [NotNull] ISurvivalRandomSource randomSource, [NotNull] IAttributesModule attributesModule) : this( personScheme, randomSource, attributesModule, effectsModule : null, evolutionModule : null, equipmentModule : null) { }
public HumanSurvivalModule(IPersonScheme personScheme, ISurvivalRandomSource randomSource, IAttributesModule attributesModule) : this( personScheme, randomSource, attributesModule, сonditionModule : null, evolutionModule : null, equipmentModule : null) { }
public HumanSurvivalModule([NotNull] IPersonScheme personScheme, [NotNull] ISurvivalRandomSource randomSource, [NotNull] IAttributesModule attributesModule) : this( personScheme, randomSource, attributesModule, null, null, null) { }
private static SurvivalStat SetHitPointsStat(IPersonScheme personScheme, IAttributesModule attributesModule) { var constitutionHpBonus = GetConstitutionHpBonus(attributesModule); // В схеме храним базовые ХП. // Конституция добавяет или снижает ХП. var totalHp = personScheme.Hp + constitutionHpBonus; var hpStat = new HpSurvivalStat(totalHp, 0, totalHp) { Type = SurvivalStatType.Health }; return(hpStat); }
private static IEnumerable <SurvivalStat> GetStats([NotNull] IPersonScheme personScheme, [NotNull] IAttributesModule attributesModule) { if (personScheme is null) { throw new ArgumentNullException(nameof(personScheme)); } if (attributesModule is null) { throw new ArgumentNullException(nameof(attributesModule)); } return(GetStatsIterator(personScheme, attributesModule).Where(x => x != null)); }
public HumanSurvivalModule([NotNull] IPersonScheme personScheme, [NotNull] ISurvivalRandomSource randomSource, [NotNull] IAttributesModule attributesModule, IEffectsModule effectsModule, IEvolutionModule evolutionModule, IEquipmentModule equipmentModule) : base(GetStats(personScheme, attributesModule)) { _personScheme = personScheme ?? throw new ArgumentNullException(nameof(personScheme)); _randomSource = randomSource ?? throw new ArgumentNullException(nameof(randomSource)); _attributesModule = attributesModule ?? throw new ArgumentNullException(nameof(attributesModule)); _effectsModule = effectsModule; _evolutionModule = evolutionModule; _equipmentModule = equipmentModule; RegisterModuleEventHandlers(); foreach (var stat in Stats) { stat.Changed += Stat_Changed; } CalcSurvivalStats(); }
public HumanSurvivalModule(IPersonScheme personScheme, ISurvivalRandomSource randomSource, IAttributesModule attributesModule, IConditionsModule?сonditionModule, IEvolutionModule?evolutionModule, IEquipmentModule?equipmentModule) : base(GetStats(personScheme, attributesModule)) { _personScheme = personScheme; _randomSource = randomSource; _attributesModule = attributesModule; _сonditionModule = сonditionModule; _evolutionModule = evolutionModule; _equipmentModule = equipmentModule; RegisterModuleEventHandlers(); foreach (var stat in Stats) { stat.Changed += Stat_Changed; } CalcSurvivalStats(); }
public MovingModule(IAttributesModule attributesModule) { _attributesModule = attributesModule; }