public void Reset(CharacterContext context) { context.SetState( CharacterWorldState.HasEnemyTargetInMeleeRange, false, FluidHTN.EffectType.Permanent); }
public void Reset(CharacterContext context) { context.SetState( CharacterWorldState.HasEnemyTargetAtSpellCastRange, true, FluidHTN.EffectType.Permanent); }
public void Tick(CharacterContext context) { if (context.CurrentEnemyTarget == null) { return; } var dir = (context.CurrentEnemyTarget.Position - context.Self.Position); context.SetState( CharacterWorldState.HasEnemyTargetInMeleeRange, math.lengthsq(dir) <= 1, FluidHTN.EffectType.Permanent); }
public void ApplyUseCost(CharacterContext context, EffectType type) { if (context.ContextState == ContextState.Planning) { var currentMana = (int)context.GetState(CharacterWorldState.Mana); var newMana = currentMana - _manaCost; if (type == EffectType.Permanent) { context.Self.Mana = newMana; } else { context.SetState(CharacterWorldState.Mana, (byte)newMana, type); } } else { context.Self.Mana -= _manaCost; } }