private Activity(string name, LocationFeature[] requiredFeatures = null, bool selectable = true, bool cancellable = true, Stats statChanges = null, int duration = 1, Update onComplete = null ) { Name = name; LocationFeatures = requiredFeatures ?? new LocationFeature[] {}; Selectable = selectable; Cancellable = cancellable; StatChanges = statChanges ?? new Stats(); InitialDuration = duration; TicksLeft = duration; OnComplete = onComplete ?? (hans => { }); foreach (var stat in (Stat[])Enum.GetValues(typeof(Stat))) { if (!StatChanges.ContainsKey(stat)) { StatChanges.Add(stat, DefaultDecay[stat] * duration); } } }