Godot and GDScript
I have been using godot to make my own game a rougelike deckbuilder similar to slay the spire. I have not settled on a name, Galaxy Slayer, Cosmic Gambit, etc. Below is some code to show my skills
Code Example
# systems/effect.gd
class_name Effect
extends Resource
enum Type {
COMBAT_DEAL_DAMAGE,
COMBAT_GAIN_ARMOR,
COMBAT_HEAL,
COMBAT_APPLY_POISON,
COMBAT_APPLY_BURN,
COMBAT_APPLY_WEAK,
COMBAT_APPLY_VULNERABLE,
CARDS_DRAW,
CARDS_DISCARD,
CARDS_EXHAUST,
PLAYER_GAIN_MANA,
PLAYER_GAIN_GOLD,
SYSTEM_COMPOSITE,
}
enum Trigger {
ON_PLAY,
ON_TURN_START,
ON_TURN_END,
ON_DRAW,
ON_DISCARD,
ON_DEATH,
ON_NTH_CARD_PLAYED,
}
class Value extends Resource:
enum Type {
FIXED,
RANDOM_RANGE,
TIMES_STATUS_STACKS,
TIMES_HAND_SIZE,
TIMES_GOLD,
TIMES_MISSING_HP,
TIMES_ENEMIES,
FIXED_COLOR,
LERP_COLOR,
FIXED_STRING,
FIXED_TEXTURE,
FIXED_VECTOR,
}
@export var type: Value.Type
@export var multiplier: float = 1.0
@export var status_type: Effect.Type
@export var numbers: Array[float]
@export var colors: Array[Color]
@export var strings: Array[String]
@export var textures: Array[Texture2D]
@export var vectors: Array[Vector2]
class Condition extends Resource:
enum Type {
TARGET_HAS_STATUS,
TARGET_HP_BELOW,
TARGET_HP_ABOVE,
PLAYER_HP_BELOW,
PLAYER_HP_ABOVE,
HAND_SIZE_BELOW,
HAND_SIZE_ABOVE,
TURN_NUMBER_ABOVE,
ENEMIES_REMAINING_BELOW,
AND,
OR,
NOT,
}
@export var type: Condition.Type
@export var value: int
@export var status_type: Effect.Type
@export var operands: Array[Condition]
class Target extends Resource:
enum Type {
SELF,
ENEMY,
ALL_ENEMIES,
RANDOM_ENEMY,
CLOSEST_ENEMY,
CARD_IN_HAND,
CARD_IN_DRAW,
CARD_IN_DISCARD,
FILTER,
}
@export var type: Target.Type
@export var condition: Condition
Effect fields
@export var type: Effect.Type
@export var values: Array[Value]
@export var upgrade_values: Array[Value]
@export var triggers: Array[Trigger]
@export var trigger_values: Array[Value]
@export var targets: Array[Target]
@export var guard: Condition
@export var custom_description: String