Skip to content

subvention

Source: base/tealdef/game_mechanics/subventions/subvention.d.tl

Notes

Types of the subsidy system, its saved state and the interface each subsidy type script implements.

SubventionBonusMalus

record global base/tealdef/game_mechanics/subventions/subvention.d.tl:3

global record SubventionBonusMalus

Notes

One reward or penalty of a subsidy, applied with SubventionUtil.applyBonusMalus on accept, completion or failure.

Details

Create it with SubventionUtil.makeBonusMalusMoney, makeBonusMalusReputation or makeBonusMalusTownExp. params has the fields of the record named by type.

Fields

Name Type Description
type Type Kind of this entry.
params Param Values of this entry; cast to the record named by type.

SubventionBonusMalus.Type

enum base/tealdef/game_mechanics/subventions/subvention.d.tl:4

enum Type

Notes

Kind of reward or penalty.

Used in the base game: 1 time in 1 file

base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:177

subvention_util.makeBonusMalus = function(t : SubventionBonusMalus.Type, params : SubventionBonusMalus.Param) : SubventionBonusMalus

Value Description
"Money" Payment or fine in game currency.
"Reputation" Change of the player's reputation in a town.
"TownExperience" Level progress of a town.

SubventionBonusMalus.Money

record base/tealdef/game_mechanics/subventions/subvention.d.tl:9

record Money

Notes

Params of a Money entry.

Used in the base game: 2 times in 1 file

base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:127

local data = bonusMalus.params as SubventionBonusMalus.Money

Fields

Name Type Description
amount integer Amount in game currency. Paid when the entry is applied as positive, charged otherwise.

SubventionBonusMalus.Reputation

record base/tealdef/game_mechanics/subventions/subvention.d.tl:12

record Reputation

Notes

Params of a Reputation entry.

Used in the base game: 2 times in 1 file

base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:137

local data = bonusMalus.params as SubventionBonusMalus.Reputation

Fields

Name Type Description
townEntity EntityUtil.EntityAndRevision Town whose reputation changes.
amount number Reputation change as a fraction (shown as a percentage).

SubventionBonusMalus.TownExperience

record base/tealdef/game_mechanics/subventions/subvention.d.tl:16

record TownExperience

Notes

Params of a TownExperience entry.

Used in the base game: 2 times in 1 file

base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:145

local data = bonusMalus.params as SubventionBonusMalus.TownExperience

Fields

Name Type Description
townEntity EntityUtil.EntityAndRevision Town that gains level progress.
amount number Level progress as a fraction (shown as a percentage).

SubventionBonusMalus.Param

record base/tealdef/game_mechanics/subventions/subvention.d.tl:20

record Param

Notes

Union of the params records, the declared type of params.

Used in the base game: 1 time in 1 file

base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:177

subvention_util.makeBonusMalus = function(t : SubventionBonusMalus.Type, params : SubventionBonusMalus.Param) : SubventionBonusMalus

Fields

Name Type Description
amount integer Amount; its meaning depends on type.
townEntity EntityUtil.EntityAndRevision Town for Reputation and TownExperience entries.

SubventionBonusMalus.Data

record base/tealdef/game_mechanics/subventions/subvention.d.tl:28

record Data

Notes

Display line for a reward or penalty, as made by SubventionUtil.getData.

Used in the base game: 2 times in 2 files

base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:186

subvention_util.getData = function(upfront : {SubventionBonusMalus}, positive : boolean) : {SubventionBonusMalus.Data}
base/content/game_mechanics/game_mechanics/subventions/subventions_gui.tl:30
data : {SubventionBonusMalus.Data}

Fields

Name Type Description
text string Translated text, e.g. "$1,000,000 Payment" or "10% Reputation in Davao".

ISubvention

interface global base/tealdef/game_mechanics/subventions/subvention.d.tl:33

global interface ISubvention

Notes

One subsidy instance as stored in SubventionState.

Details

The subsidy game script moves an instance from proposedSubventions to activeSubventions on the Subvention event onAccept, then to completedSubventions when the type's isComplete returns true, or to failedSubventions when shouldDespawn returns a reason while it is active.

Fields

Name Type Description
data ISubventionData Data of the subsidy; cast it to the type's own record.
id string Res name of the subsidy type, e.g. ::/game_mechanics/subventions/deliver_cargo/deliver_cargo.res.
acceptedTime number Game time (ms) when the player accepted the offer; nil while proposed.
spawnTime number Game time (ms) when the offer was created.
completedTime number Game time (ms) when the subsidy was fulfilled; nil until then.
uid number Unique id of the subsidy within its type. Accept and decline events and notifications refer to it.

ISubvention.ISubventionData

interface base/tealdef/game_mechanics/subventions/subvention.d.tl:34

interface ISubventionData

Notes

Data part of a subsidy. Each subsidy type extends it with its own fields, e.g. the target entity.

Details

Start from SubventionUtil.makeDefaultSubventionTemplate, which sets name and the three durations.

Used in the base game: 20 times in 8 files

base/content/game_mechanics/game_mechanics/subventions/subventions.script.tl:95

local spawnSubvention = function(state : SubventionState, currentGameTime : number, subventionName : string, data : ISubvention.ISubventionData, uid: number) : 
base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:272
subvention_util.defaultTimeout = function<T is ISubvention.ISubventionData>(state : Subvention<T>,  currentGameTime : number) : ISubvention.FailReason
base/content/game_mechanics/game_mechanics/subventions/subventions_gui.tl:221
local subventionData = subvention.data as ISubvention.ISubventionData
base/content/game_mechanics/game_mechanics/subventions/deliver_cargo/deliver_cargo.script.tl:40
local record DeliverCargoState is ISubvention.ISubventionData
base/content/game_mechanics/game_mechanics/subventions/deliver_workers/deliver_workers.script.tl:40
local record DeliverWorkersState is ISubvention.ISubventionData
base/content/game_mechanics/game_mechanics/subventions/deliver_cargo_town/deliver_cargo_town.script.tl:44
local record DeliverCargoTownState is ISubvention.ISubventionData
… and 2 more files.

Fields

Name Type Description
upfront {SubventionBonusMalus} Rewards applied when the player accepts the offer.
complete {SubventionBonusMalus} Rewards applied when the subsidy is fulfilled.
failure {SubventionBonusMalus} Penalties applied when the subsidy fails. The base game types repeat the upfront payment here, so it is paid back.
name string Translated title of the subsidy, e.g. "Supply Industry".
expireDurationProposed number Time (ms) the offer stays open before it is withdrawn; -1 means it never expires.
expireDuration number Time (ms) after acceptance to fulfil the subsidy.
effectDuration integer Time (ms) the reward effect lasts after completion; then the subsidy is removed. The cargo and passenger types show the effect as "2x Income".
toDeliver integer Amount the player has to deliver, for the cargo subsidies one unit per delivered cargo item.
delivered integer Amount delivered so far.

ISubvention.ISpecificSubventionParam

interface base/tealdef/game_mechanics/subventions/subvention.d.tl:46

interface ISpecificSubventionParam

Notes

Parameters for spawning a given subsidy type through the Subvention script event subventionSpawn. The type's spawnSpecific receives them.

Example

-- urbangames_campaign_mission_06
local subvention : DeliverCargoSubventionParam = {
    target = entity,
    expireDurationProposed = -1,
}
api.cmd.sendCommand(api.cmd.makeScriptingSendEventCmd("", "Subvention", "subventionSpawn", {
    name = "::/game_mechanics/subventions/deliver_cargo/deliver_cargo.res",
    specific = subvention,
}))
Used in the base game: 31 times in 5 files

base/content/mission/mission/tasks/subsidies/subsidies.tl:34

local spawnSubsidies = function(subsidiesRes: {{ResName, ISubvention.ISpecificSubventionParam}}, guiTimeSeconds : number) : {{number, MissionTaskSubsidies.Statu
base/content/game_mechanics/game_mechanics/subventions/subventions.script.tl:123
local spawnSpecific = function(state: SubventionState, currentGameTime: number, subventionName: string, param: ISubvention.ISpecificSubventionParam) : boolean
mods/release/urbangames_campaign_mission_06/content/subventions/subventions/deliver_visitors/deliver_visitors.script.tl:47
local record DeliverVisitorsSubventionParam is ISubvention.ISpecificSubventionParam
mods/release/urbangames_campaign_mission_06/content/mission/mission/mission_story_cutscene_only.tl:41
local record DeliverVisitorsSubventionParam is ISubvention.ISpecificSubventionParam
mods/release/urbangames_campaign_mission_06/content/mission/mission/mission_story.tl:41
local record DeliverVisitorsSubventionParam is ISubvention.ISpecificSubventionParam

Fields

Name Type Description
expireDurationProposed number -1 means, does not expire
uid number Unique id of the new subsidy. When nil, the type derives one from its target. MissionTaskSubsidies sets it from a counter.

ISubvention.Status

enum base/tealdef/game_mechanics/subventions/subvention.d.tl:58

enum Status

Notes

Stage of a subsidy.

Used in the base game: 15 times in 7 files

base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:379

subvention_util.makeDefaultNotificationData = function(status : ISubvention.Status, failReason : ISubvention.FailReason, icon : string,
base/content/game_mechanics/game_mechanics/subventions/deliver_cargo/deliver_cargo.script.tl:244
getNotificationData = function(subventionId : string, params : DeliverCargoNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason, ent
base/content/game_mechanics/game_mechanics/subventions/deliver_workers/deliver_workers.script.tl:200
getNotificationData = function(subventionId : string, params : DeliverWorkersNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason, e
base/content/game_mechanics/game_mechanics/subventions/deliver_cargo_town/deliver_cargo_town.script.tl:341
getNotificationData = function(subventionId : string, params : DeliverCargoTownNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason,
base/content/game_mechanics/game_mechanics/subventions/deliver_passengers/deliver_passengers.script.tl:316
getNotificationData = function(subventionId : string, params : DeliverPassengersNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason
base/content/game_mechanics/game_mechanics/notifications/types/subvention.script.tl:24
local scriptGetNotificationData = util.useFn(subventionDesc.scriptFile .. ".getNotificationData") as function(string, any, ISubvention.Status, ISubvention.FailR
… and 1 more files.

Value Description
"Proposed" Offered, not yet accepted.
"Active" Accepted and running.
"Complete" Fulfilled; the reward effect is running.
"Failed" Not fulfilled in time.

ISubvention.FailReason

enum base/tealdef/game_mechanics/subventions/subvention.d.tl:65

enum FailReason

Notes

Why a subsidy ended without being fulfilled.

Used in the base game: 23 times in 9 files

base/content/game_mechanics/game_mechanics/subventions/subventions.script.tl:27

local notifyFailure = function(s : ISubvention, reason : ISubvention.FailReason)
base/content/game_mechanics/game_mechanics/subventions/subvention_util.tl:272
subvention_util.defaultTimeout = function<T is ISubvention.ISubventionData>(state : Subvention<T>,  currentGameTime : number) : ISubvention.FailReason
base/content/game_mechanics/game_mechanics/subventions/deliver_cargo/deliver_cargo.script.tl:244
getNotificationData = function(subventionId : string, params : DeliverCargoNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason, ent
base/content/game_mechanics/game_mechanics/subventions/deliver_workers/deliver_workers.script.tl:200
getNotificationData = function(subventionId : string, params : DeliverWorkersNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason, e
base/content/game_mechanics/game_mechanics/subventions/deliver_cargo_town/deliver_cargo_town.script.tl:341
getNotificationData = function(subventionId : string, params : DeliverCargoTownNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason,
base/content/game_mechanics/game_mechanics/subventions/deliver_passengers/deliver_passengers.script.tl:316
getNotificationData = function(subventionId : string, params : DeliverPassengersNotificationParams, status : ISubvention.Status, reason : ISubvention.FailReason
… and 3 more files.

Value Description
"None" No failure.
"Timeout" A deadline passed (see SubventionUtil.defaultTimeout).
"InvalidEntity" A target entity was removed or replaced.

Subvention

record global base/tealdef/game_mechanics/subventions/subvention.d.tl:72

global record Subvention<T is ISubvention.ISubventionData> is ISubvention

Notes

Subsidy instance with its data typed as T.

Fields

Name Type Description
data T Data of the subsidy.

SubventionState

record global base/tealdef/game_mechanics/subventions/subvention.d.tl:76

global record SubventionState

Notes

Saved state of the subsidy game script ::/game_mechanics/subventions/subventions.gs.

Details

Read it with api.engine.system.gameScriptSystem.getEntityForGameScript("::/game_mechanics/subventions/subventions.gs") and the GAME_SCRIPT component, as SubventionUtil.getSubventionAndStatusFromGameScript does. A random offer spawns when the spawn interval has passed since lastSpawnTime and fewer than 5 subsidies are active.

Fields

Name Type Description
lastSpawnTime number Game time (ms) of the last spawned offer; -1 before the first one.
proposedSubventions {ISubvention} Open offers.
activeSubventions {ISubvention} Accepted subsidies that are running.
completedSubventions {ISubvention} Fulfilled subsidies whose reward effect is still running.
failedSubventions {ISubvention} Subsidies that failed while active.
usedUids {string : {string : boolean}} Per subsidy type res name, the uids already spawned (key is the uid as string). true while the subsidy exists, false after it ended.
version integer State version; SubventionLegacyUtil.updateLegacyState upgrades states older than SubventionLegacyUtil.CurrentVersion.
spawnIntervalModifier number 1.0 is "neutral" (doing nothing)
pause boolean No subsidies spawn or update while true. Set with the Subvention event setPause (param is a boolean).

SubventionIcons

record global base/tealdef/game_mechanics/subventions/subvention.d.tl:88

global record SubventionIcons

Notes

Icon paths of a subsidy type for each status, read by SubventionUtil.getIcon.

Fields

Name Type Description
fallback string Icon used when the status has no icon of its own.
proposed string Icon of an open offer.
active string Icon of a running subsidy.
complete string Icon of a fulfilled subsidy.
failed string Icon of a failed or missed subsidy.

SubventionDesc

record global base/tealdef/game_mechanics/subventions/subvention.d.tl:96

global record SubventionDesc

Notes

Data of a generic res of type subvention, one per subsidy type.

Example

-- ::/game_mechanics/subventions/deliver_cargo/deliver_cargo.res.lua
function data()
return {
    type = "subvention",
    data = {
        scriptFile = "::/game_mechanics/subventions/deliver_cargo/deliver_cargo.script@deliver_cargo",
        icons = {
            fallback = "::/game_mechanics/subventions/deliver_cargo/deliver_cargo.tga",
        }
    }
}
end

Fields

Name Type Description
scriptFile string Script table of the type (<script file>@<table name>) that implements SubventionScript. The game script looks up each function as scriptFile .. ".canSpawn" and so on.
icons SubventionIcons Icons per status.

SubventionCardData

record global base/tealdef/game_mechanics/subventions/subvention.d.tl:101

global record SubventionCardData

Notes

Content of a subsidy card and window, returned by the type's getCardData.

Details

Start from SubventionUtil.makeDefaultCardData and add location, progress, description and the cargo fields.

Fields

Name Type Description
title Entry Icon and title of the subsidy.
deadline Entry Calendar icon and the formatted time to fulfil the subsidy. Hidden in the window once the deadline has passed.
description string Translated description for the current status.
expireDuration Expiration Remaining time; set only while the subsidy is active.
progress Progress Delivery progress; set by the cargo subsidies while active.
location Location Source and target of the subsidy.
cargoIcons {string} Icon paths of the cargo types to deliver.
cargoToDeliver integer Amount to deliver, shown after the cargo icons.
upfront {SubventionBonusMalus.Data} Display lines of the upfront rewards.
failure {SubventionBonusMalus.Data} Display lines of the penalties.
complete {SubventionBonusMalus.Data} Display lines of the completion rewards.
status ISubvention.Status Status the card was made for.
layerConfig LayerConfig Map layer shown with the window, e.g. cargo flow arrows from suppliers to the target.

SubventionCardData.Entry

record base/tealdef/game_mechanics/subventions/subvention.d.tl:102

record Entry

Notes

Icon with a text.

Fields

Name Type Description
icon string Icon path.
name string Text next to the icon.

SubventionCardData.Expiration

record base/tealdef/game_mechanics/subventions/subvention.d.tl:110

record Expiration

Notes

Remaining time of a running subsidy.

Used in the base game: 1 time in 1 file

base/content/game_mechanics/game_mechanics/subventions/subventions_gui.tl:76

expiration : SubventionCardData.Expiration

Fields

Name Type Description
value number Remaining share of expireDuration, from 1 (just accepted) to 0.
name string Remaining time, formatted for the current calendar speed.

SubventionCardData.Progress

record base/tealdef/game_mechanics/subventions/subvention.d.tl:116

record Progress

Notes

Delivery progress.

Fields

Name Type Description
value number Progress from 0 to 1.
text string Progress as text, e.g. "12 / 50".

SubventionCardData.Location

record base/tealdef/game_mechanics/subventions/subvention.d.tl:122

record Location

Notes

Source and target shown in the window, each with a locate and a select button.

Fields

Name Type Description
from {Engine.Entity, string} Source entity and its display name.
to {Engine.Entity, string} Target entity and its display name.

SubventionScript

record global base/tealdef/game_mechanics/subventions/subvention.d.tl:139

global record SubventionScript<T>

Notes

Functions a subsidy type script implements. The subsidy game script calls them through the scriptFile of the type's SubventionDesc.

Details

Most base game types use SubventionUtil.defaultOnAccept, defaultOnFailure and defaultOnComplete directly, and SubventionUtil.defaultTimeout inside shouldDespawn.

Functions

handleLegacy(state : Subvention<T>) : Subvention<T> base/tealdef/game_mechanics/subventions/subvention.d.tl:140

Notes

Fills fields missing in data from older savegames. The base game types implement it, but the subsidy game script does not call it.

Parameter Type Description
state Subvention<T> Subsidy to update.

Returns Subvention<T>: The updated subsidy.

canSpawn() : boolean base/tealdef/game_mechanics/subventions/subvention.d.tl:142

Notes

Whether an offer of this type can be created now (e.g. a suitable industry exists). The game script picks a random type among those that return true.

Returns boolean: True if onSpawn can create an offer.

onSpawn() : T, number base/tealdef/game_mechanics/subventions/subvention.d.tl:143

Notes

Creates the data of a random new offer of this type.

Returns T, number: The subsidy data (or nil if no offer could be made) and its uid.

spawnSpecific(param : ISubvention.ISpecificSubventionParam) : T, number base/tealdef/game_mechanics/subventions/subvention.d.tl:144

Notes

Creates the data of an offer for given parameters. Called for the Subvention event subventionSpawn.

Parameter Type Description
param ISubvention.ISpecificSubventionParam Type-specific parameters, e.g. DeliverCargoSubventionParam.

Returns T, number: The subsidy data (or nil if the target does not qualify) and its uid.

isComplete(state : Subvention<T>) : boolean base/tealdef/game_mechanics/subventions/subvention.d.tl:146

Notes

Checks whether an active subsidy is fulfilled. Called on every update.

Parameter Type Description
state Subvention<T> Active subsidy.

Returns boolean: True if the subsidy is fulfilled.

onComplete(state : Subvention<T>) base/tealdef/game_mechanics/subventions/subvention.d.tl:147

Notes

Called once when the subsidy is fulfilled, before it moves to the completed list.

Parameter Type Description
state Subvention<T> Fulfilled subsidy.

onFailure(state : Subvention<T>) base/tealdef/game_mechanics/subventions/subvention.d.tl:149

Notes

Called once when an active subsidy fails.

Parameter Type Description
state Subvention<T> Failed subsidy.

onAccept(state : Subvention<T>) base/tealdef/game_mechanics/subventions/subvention.d.tl:150

Notes

Called once when the player accepts the offer.

Parameter Type Description
state Subvention<T> Accepted subsidy.

onUpdate(state : Subvention<T>) base/tealdef/game_mechanics/subventions/subvention.d.tl:152

Notes

Called on every update of the game script for each active subsidy, before the despawn and completion checks.

Parameter Type Description
state Subvention<T> Active subsidy.

shouldDespawn(state : Subvention<T>, currentGameTime : number) : string base/tealdef/game_mechanics/subventions/subvention.d.tl:153

Notes

Checks whether a proposed, active or completed subsidy ends. Active ones then fail; proposed ones count as missed; completed ones end their reward effect.

Parameter Type Description
state Subvention<T> Subsidy to check.
currentGameTime number Current game time (ms).

Returns string: A ISubvention.FailReason value, or nil to keep the subsidy.

onDespawn(state : Subvention<T>) base/tealdef/game_mechanics/subventions/subvention.d.tl:154

Notes

Called when a proposed or completed subsidy is removed.

Parameter Type Description
state Subvention<T> Removed subsidy.

eventsToHandle() : {string} base/tealdef/game_mechanics/subventions/subvention.d.tl:156

Notes

Names of extra script events the subsidy game script subscribes to for this type.

Returns {string}: Event names, e.g. { "OnCalcTicketPrice" }.

handleEvent(src : string, id : string, name : string, param : any, state : Subvention<T>) : any base/tealdef/game_mechanics/subventions/subvention.d.tl:157

Notes

Handles a script event for one active or completed subsidy.

Parameter Type Description
src string Event source.
id string Event id.
name string Event name.
param any Event parameter.
state Subvention<T> Active or completed subsidy.

Returns any: Event result. The game script returns the last non-nil result, e.g. ticket price factors for OnCalcTicketPrice.

getNotificationParams(state : Subvention<T>) : any base/tealdef/game_mechanics/subventions/subvention.d.tl:159

Notes

Data to store in a notification about the subsidy, so the notification can be built later without the subsidy.

Parameter Type Description
state Subvention<T> Subsidy.

Returns any: Type-specific table, passed back to getNotificationData and getNotificationMissedData.

getNotificationData(subventionId : string, params : any, status : ISubvention.Status, reason : ISubvention.FailReason, entityNames : {Engine.Entity : string}) : NotificationGuiData base/tealdef/game_mechanics/subventions/subvention.d.tl:160

Notes

Builds the notification for a status change.

Parameter Type Description
subventionId string Res name of the subsidy type.
params any Table from getNotificationParams.
status ISubvention.Status Status to report.
reason ISubvention.FailReason Fail reason, "None" if there is none.
entityNames {Engine.Entity : string} Display names of the relevant entities.

Returns NotificationGuiData: Title, description and icon of the notification.

getNotificationMissedData(subventionId : string, params : any, reason : ISubvention.FailReason, entityNames : {Engine.Entity : string}) : NotificationGuiData base/tealdef/game_mechanics/subventions/subvention.d.tl:161

Notes

Builds the notification for an offer that was withdrawn before the player accepted it.

Parameter Type Description
subventionId string Res name of the subsidy type.
params any Table from getNotificationParams.
reason ISubvention.FailReason Why the offer was withdrawn.
entityNames {Engine.Entity : string} Display names of the relevant entities.

Returns NotificationGuiData: Title, description and icon of the notification.

getCardData(state : Subvention<T>) : SubventionCardData base/tealdef/game_mechanics/subventions/subvention.d.tl:162

Notes

Builds the card and window content of the subsidy.

Parameter Type Description
state Subvention<T> Subsidy.

Returns SubventionCardData: Card content.

getRelevantEntities(state : Subvention<T>) : {Engine.Entity}, {CargoTypeId : CargoUtil.StockProperties} base/tealdef/game_mechanics/subventions/subvention.d.tl:163

Notes

Entities and cargo types of the subsidy, used for notifications and for the subsidy icons on the map.

Parameter Type Description
state Subvention<T> Subsidy.

Returns {Engine.Entity}, {CargoTypeId : CargoUtil.StockProperties}: Entities (e.g. the target, and for deliver_cargo also the delivering lines and their vehicles) and the cargo types to highlight with their stock properties.

getRelevantEntityNames(state : Subvention<T>) : {Engine.Entity : string} base/tealdef/game_mechanics/subventions/subvention.d.tl:164

Notes

Display names of the relevant entities. Only deliver_cargo_town implements it, and the base game does not call it.

Parameter Type Description
state Subvention<T> Subsidy.

Returns {Engine.Entity : string}: Name per entity.