[0.2.0] - 2019-06-29

All notable changes for version [v0.2.0] are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Added

Ability module

  • Add CommandSoundAbility(Ability) object; plays a sound when the ability is intiated by the player

  • Add ExecutionSoundAbility(Ability) object; plays a sound while the ability is executed by the game entity

  • Add AnimationOverrideAbility(Ability) object; overrides other abilities’ animation with AnimationOverride objects

  • Add source_fee : float member to ExchangeResources; multiplier for source_resources member

  • Add target_fee : float member to ExchangeResources; multiplier for target_resources member

  • Add exchange_mode : ExchangeMode member to ExchangeResources; multiplier for target_resources member

  • Add search_range : float member to DropResources; used for limiting the search range for finding a drop site

  • Add allowed_types : set(GameEntityType) member to DropResources; used to define the game entity types where the resources can be dropped off

  • Add blacklisted_game_entities : set(GameEntity) member to DropResources; exceptions for allowed game entity types

  • Add carry_progress : set(CarryProgress) member to Gather; used for carry amount progression

  • Add interrupt_cooldown : float member to Cloak

  • Add allowed_types : set(GameEntityType) member to EnterContainer

  • Add blacklisted_game_entities : set(GameEntity) member to EnterContainer

  • Add allowed_types : set(GameEntityType) member to SendBackToTask

  • Add blacklisted_game_entities : set(GameEntity) member to SendBackToTask

  • Add spawning_area_offset_x : float member to ShootProjectile; used for location of spawn area

  • Add spawning_area_offset_y : float member to ShootProjectile; used for location of spawn area

  • Add spawning_area_offset_z : float member to ShootProjectile; used for location of spawn area

  • Add starting_progress : int member to Constructable; used for defining the construction progress when game entity is spawned

  • Add attribute : Attribute member to Damageable; specifies the attribute whos progression is tracked

  • Add despawn_condition : set(DespawnCondition) member to Despawn; used for triggering despawns

  • Add despawn_time : float member to Despawn; used for duration of ability

  • Add state_change : StateChanger member to Despawn; used for state change during despawning

  • Add death_time : float member to Die; time until completion of ability

  • Add state_change : StateChanger member to Die; used for state change during death

Auxilary module

  • Add AdjacentTilesVariant(Variant) object; variant based on adjacent game entities

  • Add LureType(Entity) object; used by Lure effect/resistance for matching

  • Add ProgressType(Entity) object; used by TimeRelativeProgress effect/resistance for matching

  • Add Contruct(ProgressType) object; used for construction progress

  • Add SendToContainerType(Entity) object; used by SendToContainer effect/resistance for matching

  • Add InverseLinar(DropoffType) object; used for calculations influenced by dropoffs

  • Add Cost(Entity) object; unifies previous approaches of referencing ResourceAmount or AttributeAmount

  • Add ResourceCost(Cost) object; for payments with resources

  • Add AttributeCost(Cost) object; for payments with attribute points

  • Add PaymentMode(Entity) object; used by Cost object to determine payment due date

  • Add Advance(PaymentMode) object

  • Add Adaptive(PaymentMode) object

  • Add Arrear(PaymentMode) object

  • Add StateChanger(Entity) object; can influence the state of a game entity

  • Add TechResearched(AvailabilityPrerequisite) object; is true if the referenced tech is researched by the player

  • Add GameEntityProgress(AvailabilityPrerequisite) object; is true if the player owns a game entity that has reached this progress

  • Add ProgressStatus(Entity) object; used by GameEntityProgress to define desired status for fulfillment

  • Add TerrainOverlay(Progress) object; overlays Terrain stored in OverlayTerrain ability after a certain progress is reached

  • Add StateChangeProgress(Progress) object; changes state of a game entity after a certain progress is reached

  • Add Normal(MoveMode) object

  • Add ExchangeMode(Entity) object; used by ExchangeResources ability to customize exchanges further

  • Add Fixed(ExchangeMode) object; used for default resource exchanges

  • Add Volatile(ExchangeMode) object; used for adjusting resource amounts after transactions

  • Add VolatileFlat(Volatile) object; mimics AoE2 market behaviour

  • Add ExchangeScope(Entity) object; used for global or local resource exchanges involving multiple players

  • Add AoE1TradeRoute(TradeRoute) object; used for AoE1 trading machanics

  • Add AttributeSetting(Entity) object; used for setting attribute values of game entities

  • Add DespawnCondition(Entity) object; used for triggering despawn abilities

  • Add ResourceSpotsDepleted(DespawnCondition) object; used for triggering despawn abilities when resource spots are empty

  • Add Timer(DespawnCondition) object; used for triggering despawn abilities after a time limit

  • Add ProjectilePassThrough(DeathCondition) object; used for triggering death for projectiles

  • Add ProjectileHitTerrain(DeathCondition) object; used for triggering death for projectiles

  • Add priority : int member to Variant; decides which variant is applied first

  • Add limit : int member to TerrainAmbiant; limits the number of ambient objects created on a chunk of terrain

  • Add starting_amount : int member to ResourceSpot; sets the starting amount of a resource spot

  • Add sound : Sound member to Cheat; played on activation

  • Add ability_preference : orderedset(Ability) member to GameEntityStance; indicates which abilities can be used when a game entity has a certain stance

  • Add type_preference : orderedset(GameEntityType) member to GameEntityStance; indicates which game entity types are targeted with the abilities

  • Add range : float member to Follow(MoveMode); sets the range at which the game entity follows the target

  • Add creation_sound : Sound member to CreatableGameEntity; plays when game entity is spawned

  • Add research_sound : Sound member to ResearchableTech; plays when tech finishes researching

  • Add trade_resource : Resource member to TradeRoute; defines the traded resource

  • Add start_trade_post : GameEntity member to TradeRoute; defines the type of game entity that has to be the start of the trade route

  • Add end_trade_post : GameEntity member to TradeRoute; defines the type of game entity that has to be the end of the trade route

  • Add carry_progress : set(CarryProgress) member to Container; used for carry progression of container

  • Add state_change : StateChanger member to StorageElement; changes state of a game entity if storage element is in container

  • Add dispersion_dropoff : DropoffType member to Accuracy; dynamic multiplier for accuracy dispersion

Effect module

  • Add TimeRelativeAttributeChange(ContinuousEffect) object; changes attribute points in a fixed amount of time

  • Add TimeRelativeAttributeDecrease(TimeRelativeAttributeChange) object; decreases attribute points in a fixed amount of time

  • Add TimeRelativeAttributeIncrease(TimeRelativeAttributeChange) object; increases attribute points in a fixed amount of time

  • Add TimeRelativeProgress(ContinuousEffect) object; changes progress in a fixed amount of time

  • Add TimeRelativeProgressDecrease(TimeRelativeProgress) object; decreases progress in a fixed amount of time

  • Add TimeRelativeProgressIncrease(TimeRelativeProgress) object; decreases progress in a fixed amount of time

  • Add type : LureType member to Lure; used for matching with the corresponding resistance object

  • Add min_chance_success : optional(float) member to Convert; defines minimum guaranteed chance for conversion to succeed

  • Add max_chance_success : optional(float) member to Convert; defines maximum guaranteed chance for conversion to succeed

  • Add type : SendToContainerType member to SendToContainerType; used for matching with the corresponding resistance object

Modifier module

  • Add CreationAttributeCost object; multiplier for creation attribute costs

  • Add CreationResourceCost object; multiplier for creation resource costs

  • Add ResearchAttributeCost object; multiplier for research attribute costs

  • Add ResearchResourceCost object; multiplier for research resource costs

  • Add TimeRelativeProgress(EffectMultiplierModifier) object; multiplier for effects

  • Add TimeRelativeAttributeChange(EffectMultiplierModifier) object; multiplier for effects

  • Add Terrain(FlatAttributeChangeModifier) object; multiplier for effects

  • Add ElevationDifferenceHigh(FlatAttributeChangeModifier) object; multiplier for effects

  • Add Unconditional(FlatAttributeChangeModifier) object; multiplier for effects

  • Add Terrain(FlatAttributeChangeModifier) object; multiplier for resistances

  • Add ElevationDifferenceLow(FlatAttributeChangeModifier) object; multiplier for resistances

  • Add Unconditional(FlatAttributeChangeModifier) object; multiplier for resistances

  • Add DepositResourcesOnProgress(Modifier) object; used for dropping off resources after building buildings

  • Add InContainerDiscreteEffect(Modifier) object; used for applying effects to the game entity when in a container

  • Add InContainerContinuousEffect(Modifier) object; used for applying effects to the game entity when in a container

  • Add RefundOnDeath(Modifier) object; used for giving back resources on death

  • Add DiplomaticLineOfSight(Modifier) object; used for diplomacy viewpoints

  • Add creatables : set(CreatableGameEntity) member to CreationTime; used for limiting the bonus to specified creatables

Resistance module

  • Add TimeRelativeAttributeChange(ContinuousResistance) object; changes attribute points in a fixed amount of time

  • Add TimeRelativeAttributeDecrease(TimeRelativeAttributeChange) object

  • Add TimeRelativeAttributeIncrease(TimeRelativeAttributeChange) object

  • Add TimeRelativeProgress(ContinuousResistance) object

  • Add TimeRelativeProgressDecrease(TimeRelativeProgress) objectrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

  • Add TimeRelativeProgressIncrease(TimeRelativeProgress) object

  • Add type : LureType member to Lure; used for matching with the corresponding effect object

  • Add type : SendToContainerType member to SendToContainer; used for matching with the corresponding effect object

  • Add ignore_containers : set(Container) member to SendToContainer; lets resistor ignore defined set of containers

  • Add resource_spot : resourceSpot member to MakeHarvestable; used for matching with the corresponding effect object

Changed

Ability module

  • Change type of states member in Transform from set(TransformState) to set(StateChanger)

  • Change type of initial_state member in Transform from TransformState to StateChanger

  • Change type of target_state member in TransformTo from TransformState to StateChanger

  • Change type of manual_cost member in Restock from set(ResourceAmount) to Cost

  • Change type of auto_cost member in Restock from set(ResourceAmount) to Cost

  • Change type of attributes member in Live from set(Attribute) to set(AttributeSetting)

  • Move target_mode member from ShootProjectile to Projectile

  • Rename UnitStance object to GameEntityStance

  • Rename TradeResources object to ExchangeResources

  • Rename RegenerateResource object to RegenerateResourceSpot

  • Rename Stealth object to Cloak

  • Rename Decay object to Despawn

  • Rename mode member of Move to modes

  • Rename flag member of RallyPoint to indicator

  • Rename units member of Create to creatables

  • Rename techs member of Research to researchables

  • Rename sell_resources member of ExchangeResources to source_resources

  • Rename receive_resources member of ExchangeResources to target_resources

  • Rename ingame_help member of Named to long_description

  • Rename tile_width member of TileRequirement to tiles_x

  • Rename tile_height member of TileRequirement to tiles_y

  • Rename flatten_terrain member of Foundation to flatten_ground

  • Rename terrain member of OverlayTerrain to terrain_overlay

  • Rename condition member of Die to death_conditions

Auxilary module

  • Change type of modifiers member in Civilization from Modifier to ScopedModifier

  • Change type of progress_sprite member in AnimationProgress from Animation to AnimationOverride

  • Change type of cost member in CreatableGameEntity from set(ResourceAmount) to Cost

  • Change type of cost member in ResearchableTech from set(ResourceAmount) to Cost

  • Change type of conflicts member in StorageElement from set(GameEntity) to set(StorageElement)

  • Rename ChanceType object to ConvertType

  • Rename Default object to Fallback

  • Rename Prerequiste object to AvailabilityPrerequisite

  • Rename AnimatedProgress object to AnimationProgress

  • Rename UnitStance object to GameEntityStance

  • Rename UnitFormation object to GameEntityFormation

  • Rename AttributeDeathCondition object to AttributeInterval

  • Rename Self(ModifierScope) object to Standard

  • Rename chance member of RandomVariant to chance_share

  • Rename tech_tree_help member of Civilization to long_description

  • Rename ingame_help member of Tech to long_description

  • Rename ambient member of Terrain to ambience and change its type from orderedset(TerrainAmbient) to set(TerrainAmbient)

  • Rename max_density member of TerrainAmbient to density

  • Rename type member of ResourceSpot to resource

  • Rename impact member of Cheat to changes

  • Rename negation member of AvailabilityPrerequisite to mode

Effect module

  • Change type of cost member in CostEffect from set(AttributeAmount) to Cost

  • Rename ChanceEffect object to Convert and change the type of its type member from ChanceType to ConvertType

  • Rename SendToStorage object to SendToContainer and change its parent from ContinuousEffect to DiscreteEffect

  • Rename min_range_to_destination member of Lure to min_distance_to_destination

  • Rename AoE2Conversion object to AoE2Convert

Modifier module

  • Change type of provider_abilities member in AoE2ProjectileAmount from ApplyDiscreteEffect to set(ApplyDiscreteEffect)

  • Change type of receiver_abilities member in AoE2ProjectileAmount from ApplyDiscreteEffect to set(ApplyDiscreteEffect)

  • Rename PercentageModifier object to MultiplierModifier

  • Rename AttributeModifier object to AttributeSettingsValue

  • Rename MoveSpeedModifier object to MoveSpeed

  • Rename ReloadTimeModifier object to ReloadTime

  • Rename GatheringEfficiencyModifier object to GatheringEfficiency

  • Rename GatheringRateModifier object to GatheringRate

  • Rename StorageElementModifier object to StorageElementCapacity

  • Rename ContainerCapacityModifier object to ContainerCapacity

  • Rename CreationTimeModifier object to CreationTime

  • Rename EffectPercentageModifier object to EffectMultiplierModifier

  • Rename ResistancePercentageModifier object to ResistanceMultiplierModifier

  • Rename FlyoverModifier object to Flyover

  • Rename StrayModifier object to Stray

  • Rename RevealModifier object to Reveal

  • Rename AlwaysHerdModifier object to AlwaysHerd

  • Rename TechUnlockModifier object to InstantTechResearch

  • Rename AbsoluteProjectileAmountModifier object to AbsoluteProjectileAmount

  • Rename AoE2ProjectileAmountModifier object to AoE2ProjectileAmount

  • Rename ContinuousResourceModifier object to ContinuousResource and set Modifier as only direct parent

  • Rename rate member of ContinuousResource to rates

  • Rename provider_ability member of AoE2ProjectileAmount to provider_abilities

  • Rename receiver_ability member of AoE2ProjectileAmount to receiver_abilities

Resistance module

  • Change type of cost member in CostResistance from set(AttributeAmount) to Cost

  • Change type of resist_condition member in MakeHarvestable from set(AvailabilityRequirement) to set(HarvestableRequirement)

  • Rename FlatResistance(ContinuousResistance) object to FlatAttributeChange

  • Rename FlatAttributeDecreaseResistance(FlatAttributeChange) (continuous branch) object to FlatAttributeDecrease

  • Rename FlatAttributeIncreaseResistance(FlatAttributeChange) (continuous branch) object to FlatAttributeIncrease

  • Rename FlatAttributeResistance(DiscreteResistance) object to FlatAttributeChange

  • Rename FlatAttributeDecreaseResistance(FlatAttributeChange) (discrete branch) object to FlatAttributeDecrease

  • Rename FlatAttributeIncreaseResistance(FlatAttributeChange) (discrete branch) object to FlatAttributeIncrease

  • Rename LureResistance(ContinuousResistance) object to Lure

  • Rename SendToStorageResistance(ContinuousResistance) object to SendToContainer and change its parent from ContinuousResistance to DiscreteResistance

  • Rename HarvestableResistance(Discreteresistance) object to MakeHarvestable

  • Rename ChanceResistance(Discreteresistance) object to Convert and change the type of its type member from ChanceType to ConvertType

  • Rename AoE2ConversionResistance(Convert) object to AoE2Convert

  • Rename protection_recharge_time member of AoE2Convert to protection_round_recharge_time

Removed

Ability module

  • Remove SoundAbility(Ability) object; functionality split into ExecutionSoundAbility and CommandSoundAbility

  • Remove Construct(Ability) object; is now an effect

  • Remove TransferResourceWithModifier(Ability) object; merged into ExchangeResources

  • Remove AttackGround(ShootProjectile) object

  • Remove accept_on_construction member from DropSite; now handled by a modifier

  • Remove die_on_hit member from Projectile; now handled as death condition

  • Remove pass_through_range member from Projectile; now handled as death condition

  • Remove progress member from OverlayTerrain; any progress can now change terrain overlays

Auxilary module

  • Remove DiplomaticSetup(Entity) object; functionality replaced by DiplomaticPatch

  • Remove Exponential(DropoffType) object; might be reintroduced in a later release

  • Remove AnimatedTerrain(Terrain) object; now handled by .terrain definition file and renderer

  • Remove TechPrerequiste(Prerequisite) object; functionality replaced by TechResearched

  • Remove BuildingPrerequiste(Prerequisite) object; functionality replaced by GameEntityProgress

  • Remove TransformState(Entity) object; functionality replaced by StateChanger

  • Remove Guard(MoveMode) object; functionality integrated into Follow

  • Remove Constructable(Entity) object

  • Remove NearestTradeRoute(Entity) object

  • Remove graphic_set member from Civilization; now handled by civ_setup member

  • Remove diplo_setup member from Civilization; now handled by civ_setup member

  • Remove modifiers member from Cheat

  • Remove enable_abilities member from Progress; now handled by StateChangeProgress specialization

  • Remove disable_abilities member from Progress; now handled by StateChangeProgress specialization

  • Remove enable_modifiers member from Progress; now handled by StateChangeProgress specialization

  • Remove disable_modifiers member from Progress; now handled by StateChangeProgress specialization

  • Remove attribute member from DamageProgress; member was obselete

  • Remove min_value member from Attribute; now stored in AttributeSetting

  • Remove max_value member from Attribute; now stored in AttributeSetting

  • Remove enable_abilities member from StorageElement; now handled by state_change member

  • Remove disable_abilities member from StorageElement; now handled by state_change member

  • Remove enable_modifiers member from StorageElement; now handled by state_change member

  • Remove disable_modifiers member from StorageElement; now handled by state_change member

Modifier module

  • Remove DiscreteModifier(Modifier) object; might be introduced back later

  • Remove DiscreteResourceModifier(DiscreteModifier) object; might be introduced back later

  • Remove CreationCostModifier(MultiplierModifier) object; split into CreationAttributeCost and CreationResourceCost

  • Remove ResearchCostModifier(MultiplierModifier) object; split into ResearchAttributeCost and ResearchResourceCost

  • Remove ConstructionTimeModifier(MultiplierModifier) object; moved to effect bonus

  • Remove ElevationModifier(FlatAttributeChangeModifier) object; replaced by ElevationDifferenceHigh modifier

  • Remove ContinuousModifier(Modifier) object; might be introduced back later

Reference visualization