Table of Contents

Class Skill

Namespace
GrindFest
Assembly
GrindFest.dll

Base class for every skill — a plain C# object, one instance per character, created with new. Unity never sees it: the type name is the identity and the design values live in content data.

Lifecycle (driven by SkillUserBehaviour): AddSkill -> OnAdded() Update -> Tick(dt) (cooldowns; buffs also count their duration down here) Remove -> OnRemoved() UseSkill -> Use() coroutine, hosted on the SkillUserBehaviour MonoBehaviour

Partial because the OneJS source generator only processes partial classes — the generated Level property and OnLevelChanged event are what the UI binds to.

public abstract class Skill
Inheritance
object
Skill
Derived

Fields

CooldownTimer
DurationTimer
Finished

Event fired when an active skill finishes its coroutine.

IsTemporary
User
_colliders
_enemies
_hits

Properties

CanBeInterrupted
Category
Command
Cooldown
Description
DisplayName

Human-readable name for tooltips and book titles. Derived from the type name (GoldBonusBuff reads as "Gold Bonus Buff") unless a skill overrides it.

Duration
Icon
IsHidden
IsLearnable
Level

Reactive view of _level; raises OnLevelChanged when the value actually changes.

MaxLevel
MovementInterrupts
Range
Rarity
RequiredDexterity
RequiredIntelligence
RequiredLevel
RequiredStrength
Target
TargetCombatant
TargetPosition
TargetType
TypeName

Stable identity of the skill: the type name. A prefab address used to serve this role, but the prefabs are gone — saves, drop tables and the loot generator all key on the type now.

name

Machine name of the skill — the class name, matching the old MonoBehaviour name.

Methods

BuildTooltipDescription()

Rich-text tooltip block: command quote, description and unmet requirements.

CanUse()

Can this skill be used right now? Buffs and passives override this away.

CheckSkillRequirement(int, HeroController, bool)
GainXP(float)
GetEnemiesInRadius(float, HashSet<CombatBehaviour>)
GetEnemiesInRadius(Vector3, float, HashSet<CombatBehaviour>)
GetRequiredDexterity(int)
GetRequiredIntelligence(int)
GetRequiredStrength(int)
GetTooltipDescription()
IsValidEnemy(CombatBehaviour)
MoveTo(Vector3, float)
OnAdded()
OnRemoved()
PlayEffect(ParticleSystem, Transform, Vector3)
PlayEffect(ParticleSystem, Vector3, Vector3, Quaternion)
PlaySound(EventReference, Vector3)
ShowTooltip(ShowTooltip, GameObject)

Fills the skill tooltip UI. Same content as the old MonoBehaviour version, but a plain skill has no GameObject of its own — the caller passes the tooltip object.

Tick(float)
Use()
WaitForSeconds(float)

Events

OnLevelChanged