private Person caster; //Person from whom this effect originated. /// <summary> /// AbilityEffect main constructor for all values /// </summary> /// <param name="damage">Damage done immediately on hit.</param> /// <param name="damageATurn">Damage done per turn to all hit.</param> /// <param name="dotLength">Duration of the DoT effect, if there is one</param> /// <param name="energyHit">Energy removed from the target immediately on hit.</param> /// <param name="energyDoT">Energy removed per turn on all hit.</param> /// <param name="EoTLength">Duration of the EoT</param> /// <param name="Caster">Originator of this Effect.</param> /// <param name="iconSprite">Icon for the debuff to display in the character stat sheet.</param> /// <param name="overlaySprite">Sprite which draws over the character on the grid while this effect is on.</param> public AbilityEffect(float damage, float damageATurn, float dotLength, float energyHit, float energyDoT, float EoTLength, Sprite iconSprite, Sprite overlaySprite = null, Person Caster = null) { damageOnHit = damage; damagePerTurn = damageATurn; dotDuration = dotLength; energyDamage = energyHit; energyDamagePerTurn = energyDoT; eotDuration = EoTLength; debuffSprite = iconSprite; caster = Caster; effectSprite = overlaySprite; }
protected Person caster = null, target = null; //originator and target of the current cast cycle. /// <summary> /// Ability Constructor /// </summary> /// <param name="EnergyCost">Amount of energy required to cast, and taken when cast.</param> /// <param name="Aggressive">Indicates whether this ability will target enemies(T) or allies(F).</param> /// <param name="ButtonSprite">Sprite displayed on the button</param> /// <param name="Name">Name of the ability displayed on the buttons</param> /// <param name="overtimeEffects">Any and all effects this spell will have</param> /// <param name="Cooldown">Number of turns until this ability can be cast again.</param> /// <param name="ChannelTime">Length of time this spell requires the character to be inactive between cast start and effects.</param> /// <param name="EnergyCostPerTurn">Energy removed from the caster per turn this effect is channeled.</param> /// <param name="SelfDamage">Damage done to the caster, instantly upon hit.</param> /// <param name="ImpactSprite">Sprite added to any victim's Spritelist.</param> /// <param name="ProjectileType">Indicates whether this Ability will fly between targets (T), or immediately hit its target (F).</param> /// <param name="Projectile">Sprites shown to fly between targets, if this will create a projectile</param> public Ability(float EnergyCost, bool Aggressive, Sprite ButtonSprite, String Name, List<AbilityEffect> overtimeEffects, short ProjectileType = (short) ProjectileTypes.none, List<Sprite> ProjectileSprites = null, Sprite ImpactSprite = null, int Cooldown = 0, int ChannelTime = 0, float EnergyCostPerTurn = 0, float SelfDamage = 0) { this.energyCost = EnergyCost; this.bAggressive = Aggressive; this.buttonSprite = ButtonSprite; this.AbilityName = Name; this.abilityEffects = overtimeEffects; this.cooldown = Cooldown; this.channelTime = ChannelTime; this.energyCostPerTurn = EnergyCostPerTurn; this.lashbackDamage = SelfDamage; this.projectileType = ProjectileType; this.impactSprite = ImpactSprite; this.projectileSprites = ProjectileSprites; if (projectileSprites == null) { projectileSprites = new List<Sprite>(); } }
/// <summary> /// Changes the effect's sprites for the current instance and all subsequently copied instances /// </summary> /// <param name="iconSprite"></param> /// <param name="overlaySprite"></param> public void setSprites(Sprite iconSprite, Sprite overlaySprite = null) { debuffSprite = iconSprite; effectSprite = overlaySprite; }