# [0.4.0] - 2021-05-05
All notable changes for version [v0.4.0] are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Renamed
### Auxiliary module
- Rename `aux` module to `util`; makes the resulting folder names Windows-compatible

**The module will be referred to as the *utility module* as of now.**

- Rename `Container` object to `EntityContainer`

### Modifier module
- Rename `ContainerCapacity` object to `EntityContainerCapacity`

### Root module
- Rename `Entity` object to `Object`

## Added
### Ability module
- Add `container : ResourceContainer` member to `Trade`

### Utility module
- Add `AttributeChange(ProgressType)` object; replaces `AttributeChangeProgress(Progress)`
- Add `Carry(ProgressType)` object; replaces `CarryProgress(Progress)`
- Add `Harvest(ProgressType)` object; replaces `HarvestProgress(Progress)`
- Add `Restock(ProgressType)` object; replaces `RestockProgress(Progress)`
- Add `Transform(ProgressType)` object; replaces `TransformProgress(Progress)`
- Add `type : ProgressType` member to `Progress`


## Changed
### Ability module
- Change type of `construction_progress` member in `Constructable` from `set(ConstructionProgress)` to `set(Progress)`
- Change type of `harvest_progress` member in `Harvestable` from `set(HarvestProgress)` to `set(Progress)`
- Change type of `restock_progress` member in `Harvestable` from `set(RestockProgress)` to `set(Progress)`
- Change type of `transform_progress` member in `ActiveTransformTo` from `set(TransformProgress)` to `set(Progress)`
- Change type of `transform_progress` member in `PassiveTransformTo` from `set(TransformProgress)` to `set(Progress)`

### Utility module
- Change type of `carry_progress` member in `ResourceContainer` from `set(CarryProgress)` to `set(Progress)`
- Change type of `carry_progress` member in `EntityContainer` from `set(CarryProgress)` to `set(Progress)`


## Removed
### Utility module
- Remove `AttributeChangeProgress` object; replaced by progress type `AttributeChange`
- Remove `CarryProgress` object; replaced by progress type `Carry`
- Remove `ConstructProgress` object; replaced by progress type `Construct`
- Remove `HarvestProgress` object; replaced by progress type `Harvest`
- Remove `RestockProgress` object; replaced by progress type `Restock`
- Remove `TransformProgress` object; replaced by progress type `Transform`


## Reference visualization

* [Gamedata](https://github.com/SFTtech/openage/blob/78051b7f894fdf7f7c6d44c05ac7239fe5a896cb/doc/nyan/aoe2_nyan_tree.svg)
