======Perk====== =====Overview===== This is the base class of the Perks. All perks inherit this Perk. =====Settings===== ====Format - Unit==== Unit-specific settings are written in the "perk" section. { "perk": { "options": { "apply": [String, ...], } } } =====Properties===== ====info==== ''Type:Object'' ''get'' Returns an object with information about this perk. It has the following keys: |< 100% 180px 130px - >| ^Key^Type^Description^ |depends|String/ \\ Array of String|The name of the perk on which this perk depends. It is possible to specify more than one in an array.| |sectionName|String|The section name of the settings this perk will use. If this section name is present in the settings, the corresponding perk will be attached to the unit.| |order|Number|The priority level of the perk. The lower the number, the higher the priority. Perk initialization and event handlers are executed according to this priority order.| Each perk needs to override this property and return proper information. ====ready==== ''Type:Promise'' ''get'' The promise that is resolved when a perk is ready. =====Methods===== ====createHandler(handlerName, ...args)==== ''Type:Function'' Create a handler. The handler must have been previously registered with [[#registerhandler_handler_perkname|registerHandler()]]. === Parameters === |< 100% 180px 130px - >| ^Parameter^Type^Description^ |handlerName \\ ''Required''|String|The name of a handler to create.| |...args|Array of Arguments|The arguments passed to a handler's constructor.| === Return Value === A created handler instance. ---- ====getPerk(perkName)==== ''Type:Perk'' ''static'' Returns a perk specified with the perkName argument. The perk must have been previously registered with registerPerk(). === Parameters === |< 100% 180px 130px - >| ^Parameter^Type^Description^ |perkName \\ ''Required''|String|The name of a perk to retrieve.| === Return Value === Perk. ---- ====globalInit()==== ''Type:Undefined'' ''static'' Initializes the perk. It is called automatically once when a perk is registered using [[#registerperk_perk|registerPerk()]]. Normally, the perk is registered before any other processing begins. Each perk needs to override this method and do its processing if necessary. ===Parameters=== None. ===Return Value=== Undefined. ---- ====init(unit, options)==== ''Type:Undefined'' ''Asynchronous'' ''static'' Initializes the unit. It is called when attaching a perk to a unit. Normally, it is called automatically when the settings are loaded. The unit to be attached is passed as an argument. Each perk needs to override this method and do its processing if necessary. ===Parameters=== |< 100% 180px 130px - >| ^Parameter^Type^Description^ |unit \\ ''Required''|Unit|A unit to be attached.| |options|Object|Initialization options.| ===Return Value=== Undefined. ---- ====registerHandler(handler, perkName)==== ''Type:Undefined'' Registers a handler with the perk. The handler is a class that is used by a perk to handle actual processing. === Parameters === |< 100% 180px 130px - >| ^Parameter^Type^Description^ |handler \\ ''Required''|Function|The handler to register.| |perkName|String|The perk with which a handler registers.| === Return Value === None. ---- ====registerPerk(perk)==== ''Type:Undefined'' Registers the perk with the system. A perk cannot be attached unless it is registered. The perk's global initialization process is executed when registered. ===Parameters=== |< 100% 180px 130px - >| ^Parameter^Type^Description^ |perk \\ ''Required''|Perk|The perk to register.| ===Return Value=== Undefined. =====Spells===== ====attach==== ''Type:Undefined'' ''Target:Unit'' Attaches the perk passed in the argument to the unit. If the perk depends on other perks, dependent perks are attached first. The attached perk is added to the unit's perk asset. When attaching, each park's init() method is called and the unit is upgraded. If the specified perk is already attached, nothing is done. ===Parameters=== |< 100% 180px 130px - >| ^Parameter^Type^Description^ |perk \\ ''Required''|Perk|The perk to attach.| |options|Object|Options. Passed to the init() method of the attaching perk.| ===Return Value=== Undefined. ---- ====attachPerks==== ''Type:Undefined'' ''Target:Unit'' Attaches all the perks depending on the settings using the [[#attach|attachl]] spell. The order of attaching is based on the priority number of each perk, the lower the number the earlier. ===Parameters=== |< 100% 180px 130px - >| ^Parameter^Type^Description^ |options \\ ''Required''|Object|Options. Has the following keys:| | "settings"|Object|The unit settings.| ===Return Value=== Undefined.