Options
All
  • Public
  • Public/Protected
  • All
Menu

This class represents a main char of the game, the ones that can be integrated into the party like Isaac, Felix, Jenna, Mia, Garet etc.

Hierarchy

Index

Constructors

Properties

Accessors

Methods

Constructors

  • new MainChar(data: any, key_name: any, info: any, sprite_base: any, weapons_sprite_base: any, name: any, hp_curve: any, pp_curve: any, atk_curve: any, def_curve: any, agi_curve: any, luk_curve: any, exp_curve: any, starting_level: any, class_table: any, battle_scale: any, base_level: any, base_power: any, base_resist: any, innate_abilities: any, in_party: any, djinni: any, items: any, battle_animations_variations: any, battle_shadow_key: any, status_sprite_shift: any, special_class_type: any, weapon_sprite_shift: any): MainChar
  • Parameters

    • data: any
    • key_name: any
    • info: any
    • sprite_base: any
    • weapons_sprite_base: any
    • name: any
    • hp_curve: any
    • pp_curve: any
    • atk_curve: any
    • def_curve: any
    • agi_curve: any
    • luk_curve: any
    • exp_curve: any
    • starting_level: any
    • class_table: any
    • battle_scale: any
    • base_level: any
    • base_power: any
    • base_resist: any
    • innate_abilities: any
    • in_party: any
    • djinni: any
    • items: any
    • battle_animations_variations: any
    • battle_shadow_key: any
    • status_sprite_shift: any
    • special_class_type: any
    • weapon_sprite_shift: any

    Returns MainChar

Properties

_abilities: string[]
_class: Classes
_djinn_by_element: { all_elements: string[]; jupiter: string[]; mars: string[]; mercury: string[]; no_element: string[]; venus: string[] }

Type declaration

  • all_elements: string[]
  • jupiter: string[]
  • mars: string[]
  • mercury: string[]
  • no_element: string[]
  • venus: string[]
_element_afinity: elements
_equip_slots: { body: ItemSlot; boots: ItemSlot; chest: ItemSlot; class_changer: ItemSlot; head: ItemSlot; ring: ItemSlot; underwear: ItemSlot; weapon: ItemSlot }

Type declaration

_exp_curve: number[]
_items: ItemSlot[]
_learnt_abilities: string[]
_special_class_type: number
_sprite_base: SpriteBase
_weapon_sprite_shift: number
_weapons_sprite_base: SpriteBase
agi: number

The player agility points.

atk: number

The player attack points.

base_turns: number

The base amount of turns that this player has.

battle_animations_variations: {}

This maps a given ability key to a non-default ability animation key.

Type declaration

  • [ability_key: string]: string
battle_scale: number

The player battle scale.

battle_shadow_key: string

The player battle shadow sprite key.

before_buff_stats: { agi: number; atk: number; current_hp: number; current_pp: number; def: number; luk: number; max_hp: number; max_pp: number }

This player stats before applying buffers.

Type declaration

  • agi: number
  • atk: number
  • current_hp: number
  • current_pp: number
  • def: number
  • luk: number
  • max_hp: number
  • max_pp: number
buff_stats: { agi: number; atk: number; current_hp: number; current_pp: number; def: number; luk: number; max_hp: number; max_pp: number }

Stats points added/decreased by ability (buffers debuffers) on this player.

Type declaration

  • agi: number
  • atk: number
  • current_hp: number
  • current_pp: number
  • def: number
  • luk: number
  • max_hp: number
  • max_pp: number
class_table: any
current_exp: number

The player current experience points.

current_hp: number

The player current HP.

current_pp: number

The player current PP.

data: GoldenSun

Main GoldenSun object.

def: number

The player defense points.

effect_turns_count: {}

The effect: remaining turns to vanish dictionary.

Type declaration

  • [effect: string]: number | {}
effects: Effect[]

The list of Effects that affect this player.

elemental_base: { level?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }; power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }; resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number } }

Type declaration

  • Optional level?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental level base value stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
  • Optional power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental power base value stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
  • Optional resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental resist base value stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
elemental_before_buff: { power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }; resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number } }

Type declaration

  • Optional power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental power before buffs stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
  • Optional resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental resist before buffs stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
elemental_buff: { power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }; resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number } }

Type declaration

  • Optional power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental power added by buffs stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
  • Optional resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental resist added by buffs stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
elemental_current: { level?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }; power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }; resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number } }

Type declaration

  • Optional level?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental level stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
  • Optional power?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental power stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
  • Optional resist?: { all_elements: number; jupiter: number; mars: number; mercury: number; no_element: number; venus: number }

    The elemental resist stats object.

    • all_elements: number
    • jupiter: number
    • mars: number
    • mercury: number
    • no_element: number
    • venus: number
equipped_abilities: string[]
extra_stats: { agi: number; atk: number; current_hp: number; current_pp: number; def: number; luk: number; max_hp: number; max_pp: number }

Any extra stats points added to the main stats of this player.

Type declaration

  • agi: number
  • atk: number
  • current_hp: number
  • current_pp: number
  • def: number
  • luk: number
  • max_hp: number
  • max_pp: number
extra_turns: number

The extra amount of turns that this player has.

fighter_type: fighter_types

Whether it's an ally or enemy in the main party point of view.

hp_recovery: number

The player HP recovery points.

in_party: boolean

Returns whether this char is in the party or not.

info: GameInfo
innate_abilities: string[]
key_name: string

The player key name.

level: number

The player current level.

luk: number

The player luck points.

main_stats_curve: { agi: number[]; atk: number[]; current_hp: number[]; current_pp: number[]; def: number[]; luk: number[]; max_hp: number[]; max_pp: number[] }

Type declaration

  • agi: number[]
  • atk: number[]
  • current_hp: number[]
  • current_pp: number[]
  • def: number[]
  • luk: number[]
  • max_hp: number[]
  • max_pp: number[]
max_hp: number

The player max HP.

max_pp: number

The player max PP.

name: string

The player name.

on_status_change: Subject<{ added: boolean; status: permanent_status | temporary_status }>

The rxjs Subject that's triggered when this player suffers a status change.

paralyzed_by_effect: boolean

Whether the player is paralyzed by any Effect in battle.

permanent_status: Set<permanent_status>

The permanent status set. Use this property only to check whether the player has a given status.

pp_recovery: number

The player PP recovery points.

starting_level: number
status_sprite_shift: number

The aditional shift added to status sprite in battle.

temporary_status: Set<temporary_status>

The temporary status set. Use this property only to check whether the player has a given status.

turns: number

The current amount of turns that this player has.

ELEM_LV_DELTA: 1 = 1
ELEM_POWER_DELTA: 5 = 5
ELEM_RESIST_DELTA: 5 = 5
MAX_GENERAL_ITEM_NUMBER: 30 = 30
MAX_ITEMS_PER_CHAR: 15 = 15

Accessors

  • get abilities(): string[]
  • Returns a list of abilities of this char. This abilities can be of any nature.

    Returns string[]

  • get djinn_by_element(): { all_elements: string[]; jupiter: string[]; mars: string[]; mercury: string[]; no_element: string[]; venus: string[] }
  • Returns a list of djinn separated by element type.

    Returns { all_elements: string[]; jupiter: string[]; mars: string[]; mercury: string[]; no_element: string[]; venus: string[] }

    • all_elements: string[]
    • jupiter: string[]
    • mars: string[]
    • mercury: string[]
    • no_element: string[]
    • venus: string[]
  • get djinni(): string[]
  • Returns a list of djinn sorted by djinn index that this char owns.

    Returns string[]

  • get exp_curve(): number[]
  • get granted_class_type(): number
  • If this char is equipping an item that changes his class, this function returns the class type of the class that this item grants. If no class changer item is equipped, returns -1.

    Returns number

  • get inventory_is_full(): boolean
  • get learnt_abilities(): string[]
  • Return the list of abities that this char learnt during the game.

    Returns string[]

  • get special_class_type(): number
  • Returns the special class family type of this char. Returns -1 of no special type.

    Returns number

  • get weapon_sprite_shift(): number
  • Returns the y-adjusment value that is used to fit the weapon sprite on char battle sprite.

    Returns number

Methods

  • add_djinn(djinn_key_name: string): void
  • Adds a specific djinn to this char and do all the necessary attribute updates.

    Parameters

    • djinn_key_name: string

      The djinn key name.

    Returns void

  • add_effect(effect_obj: any, effect_owner_instance: Ability | Item, apply?: boolean): { changes: { after?: number; all_elements?: boolean; before?: number; removed_effects?: Effect[] }; effect: Effect }
  • Parameters

    • effect_obj: any
    • effect_owner_instance: Ability | Item
    • apply: boolean = false

    Returns { changes: { after?: number; all_elements?: boolean; before?: number; removed_effects?: Effect[] }; effect: Effect }

    • changes: { after?: number; all_elements?: boolean; before?: number; removed_effects?: Effect[] }
      • Optional after?: number
      • Optional all_elements?: boolean
      • Optional before?: number
      • Optional removed_effects?: Effect[]
    • effect: Effect
  • add_exp(value: number): { after: StatusType; before: StatusType }
  • Adds an amount of experience to this char. This char level, class, abilities and attributes are also updated if needed.

    Parameters

    • value: number

      the amount of experience to add.

    Returns { after: StatusType; before: StatusType }

    returns the before and after exp add char status, like level, abilities and stats.

    • after: StatusType
    • before: StatusType
  • add_extra_stat(stat: main_stats, amount: number, update?: boolean): void
  • Increments by a value a given extra main stat of this char.

    Parameters

    • stat: main_stats

      the extra main stat.

    • amount: number

      the quantity to increment.

    • update: boolean = true

      whether the char correspondent main stat should be updated.

    Returns void

  • add_item(item_key_name: string, quantity: number, equip: boolean): boolean
  • Adds an item to this char. If this char already has the given item, this function will just increase this item quantity.

    Parameters

    • item_key_name: string

      The item key name.

    • quantity: number

      The amount of this item to add.

    • equip: boolean

      if true, this item will be equipped.

    Returns boolean

    return true if the item was added.

  • apply_turns_count_value(): void
  • change_level(value: number): void
  • Changes level of a character. borrowed the implementation of MainChar.add_exp.

    Parameters

    • value: number

      the target level value we want to set.

    Returns void

    returns the before and after exp add char status, like level, abilities and stats.

  • equip_item(index: number, initialize?: boolean): void
  • Equips an item to this char. This char must already own the item. After equipping, all relevant updates are done like abilities, class, attributes, effects etc.

    Parameters

    • index: number

      the item slot index of this char.

    • initialize: boolean = false

      only sets this to true if constructing this char.

    Returns void

  • get_effect_turns_count(effect: Effect): any
  • get_effect_turns_key(effect: Effect): string
  • init_djinni(djinni: string[]): void
  • Initializes this char djinn list and updates this char elemental attributes. Call this function when constructing a char.

    Parameters

    • djinni: string[]

      list of initial djinn key names.

    Returns void

  • init_effect_turns_count(): void
  • init_items(): void
  • is_downed(): boolean
  • is_paralyzed(include_downed?: boolean, exclude_no_downed_anim?: boolean): boolean
  • learn_ability(ability_key: string, update: boolean): void
  • Adds a new ability to this char.

    Parameters

    • ability_key: string

      the ability key

    • update: boolean

      whether it should update the final abilities list of this char.

    Returns void

  • preview_djinn_change(stats: main_stats[], djinni_key_names: string[], djinni_next_status: djinn_status[], action?: djinn_actions): { abilities?: string[]; class_key_name: string; class_name: string } & { agi: number; atk: number; current_hp: number; current_pp: number; def: number; luk: number; max_hp: number; max_pp: number }
  • Previews the changes of trading, giving, receiving and/or changing the status of a list of djinn. These changes are in class, abilities and stats.

    Parameters

    • stats: main_stats[]

      The stats the you want to analyze.

    • djinni_key_names: string[]

      The djinn key names.

    • djinni_next_status: djinn_status[]

      The next djinn status. Must match with djinni_key_names size.

    • Optional action: djinn_actions

      Whether it's trading or giving a djinn.

    Returns { abilities?: string[]; class_key_name: string; class_name: string } & { agi: number; atk: number; current_hp: number; current_pp: number; def: number; luk: number; max_hp: number; max_pp: number }

    Returns an object with the changes info.

  • preview_elemental_stats_without_abilities_effect(): { all_elements: { level: number; power: number; resist: number }; jupiter: { level: number; power: number; resist: number }; mars: { level: number; power: number; resist: number }; mercury: { level: number; power: number; resist: number }; no_element: { level: number; power: number; resist: number }; venus: { level: number; power: number; resist: number } }
  • Previews the elemental stats values without abilities effects.

    Returns { all_elements: { level: number; power: number; resist: number }; jupiter: { level: number; power: number; resist: number }; mars: { level: number; power: number; resist: number }; mercury: { level: number; power: number; resist: number }; no_element: { level: number; power: number; resist: number }; venus: { level: number; power: number; resist: number } }

    returns the preview values for power, resist and level for each element.

    • all_elements: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • jupiter: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • mars: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • mercury: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • no_element: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • venus: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
  • preview_stat_without_abilities_effect(stat: main_stats): number
  • Previews a stat value by ignoring all abilities effects.

    Parameters

    Returns number

    returns the stat preview value.

  • preview_stats_without_item_effect(effect_type: effect_types, effect_obj: any, item_key_name: string): number
  • Previews a stat value without the given effect of an item.

    Parameters

    • effect_type: effect_types

      the effect type.

    • effect_obj: any

      the item effect object.

    • item_key_name: string

      the item key name.

    Returns number

    returns the corresponding stat preview value of the given effect.

  • remove_djinn(djinn_key_name: string): void
  • Removes a specific djinn to this char and do all the necessary attribute updates.

    Parameters

    • djinn_key_name: string

      The djinn key name.

    Returns void

  • remove_effect(effect_to_remove: Effect, apply?: boolean): void
  • remove_item(item_slot_to_remove: ItemSlot, quantity?: number, remove_curse?: boolean): void
  • Removes/drops an item from this char. If the item is equipped, it will be unequipped. If the given quantity is smaller than the current quantity, the item slot for the given item will be kept, otherwise, it will be removed.

    Parameters

    • item_slot_to_remove: ItemSlot

      this char item slot you wish to remove.

    • quantity: number = 1

      the quantity to be removed. Default is 1.

    • remove_curse: boolean = false

      if removing a cursed item, removes the curse too.

    Returns void

  • replace_djinn(old_djinn_key_name: string, new_djinn_key_name: string): void
  • Removes a specific djinni, then adds another specific djinni.

    Parameters

    • old_djinn_key_name: string

      The key name of the djinni to be removed.

    • new_djinn_key_name: string

      The key name of the djinni to be addeed.

    Returns void

  • set_effect_turns_count(effect: any, value?: number, relative?: boolean): any
  • set_main_stat(stat: main_stats, preview?: boolean, preview_obj?: { action?: djinn_actions; djinni_key_names?: string[]; djinni_next_status?: djinn_status[]; effect_obj?: any; ignore_ability_effect?: boolean; item_key_name?: string }): number
  • Parameters

    • stat: main_stats
    • preview: boolean = false
    • preview_obj: { action?: djinn_actions; djinni_key_names?: string[]; djinni_next_status?: djinn_status[]; effect_obj?: any; ignore_ability_effect?: boolean; item_key_name?: string } = {}
      • Optional action?: djinn_actions
      • Optional djinni_key_names?: string[]
      • Optional djinni_next_status?: djinn_status[]
      • Optional effect_obj?: any
      • Optional ignore_ability_effect?: boolean
      • Optional item_key_name?: string

    Returns number

  • sort_items(): void
  • unequip_item(index: number, remove_curse?: boolean): void
  • Unequips an item to this char. After unequipping, all relevant updates are done like abilities, class, attributes, effects etc.

    Parameters

    • index: number

      the item slot index of this char.

    • remove_curse: boolean = false

      if unequipping a cursed item, removes the curse too.

    Returns void

  • update_abilities(): void
  • Updates the abilities list of this char reggarding class, innate abilities and equipped items that grant abilities.

    Returns void

  • update_all(): void
  • update_all_buff_turn_count(effect_type: effect_types, value: number): void
  • update_attributes(): void
  • update_class(): void
  • update_elemental_attributes(preview?: boolean, ignore_ability_effects?: boolean): { all_elements: { level: number; power: number; resist: number }; jupiter: { level: number; power: number; resist: number }; mars: { level: number; power: number; resist: number }; mercury: { level: number; power: number; resist: number }; no_element: { level: number; power: number; resist: number }; venus: { level: number; power: number; resist: number } }
  • Updates all elemental stats of this char.

    Parameters

    • preview: boolean = false

      if true, the stats won't be updated and the calculated values returned.

    • ignore_ability_effects: boolean = false

      if true, abilities effects won't be considered.

    Returns { all_elements: { level: number; power: number; resist: number }; jupiter: { level: number; power: number; resist: number }; mars: { level: number; power: number; resist: number }; mercury: { level: number; power: number; resist: number }; no_element: { level: number; power: number; resist: number }; venus: { level: number; power: number; resist: number } }

    if preview is true, it returns the calculated stats.

    • all_elements: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • jupiter: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • mars: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • mercury: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • no_element: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
    • venus: { level: number; power: number; resist: number }
      • level: number
      • power: number
      • resist: number
  • update_turns_count(): void
  • Updates the amount of turns that this char has in battle.

    Returns void

  • Adds a djinni to the first available position among all party members.

    Parameters

    • party_data: PartyData

      the party data object.

    • djinn: Djinn

      the djinn to be added.

    Returns MainChar

    returns the char that received the djinni.

  • add_item_to_party(party_data: PartyData, item: Item, quantity: number): boolean
  • Adds an item to the first item slot available among all party members.

    Parameters

    • party_data: PartyData

      the party data object.

    • item: Item

      the item to be added.

    • quantity: number

      the amount of the given item to be added.

    Returns boolean

    returns true if the item was added to a char.

  • distribute_djinn(party_data: PartyData): void
  • Returns all the chars that are not downed.

    Parameters

    • party_data: PartyData

      the party data object.

    • max: number

      the max char to be returned.

    Returns MainChar[]

    return the chars list that are not downed.

  • remove_item_from_party(party_data: PartyData, item: Item, quantity?: number): boolean
  • Removes an item from the first item slot available among all party members.

    Parameters

    • party_data: PartyData

      the party data object.

    • item: Item
    • quantity: number = 1

      the amount of the given item to be removed.

    Returns boolean

    returns true if the item was removed from a char.

Generated using TypeDoc