public void OnRangeMet() { #region Debug #if UNITY_EDITOR if (!gameObject.activeSelf) { Debug.Log("Projectile called OnRangeMet() for an inactive object *thonk face*"); return; } #endif #endregion lastEvent = ProjLastEvent.RangeMet; ModReturn fate = ModReturn.Pass; for (int i = 0; i < container.mods.Count; i++) { bool boo = container.mods[i].OnRangeMet(out ModReturn _fate); if (fate == ModReturn.Pass) { fate = _fate; } if (boo) { break; } } if (fate == ModReturn.Remove || fate == ModReturn.Pass) { OnRemove(); } }
public void OnHitTarget(Entity other) { lastEvent = ProjLastEvent.HitTarget; ModReturn fate = ModReturn.Pass; bool cancelDamage = false; for (int i = 0; i < container.mods.Count; i++) { bool boo = container.mods[i].OnHitTarget(out ModReturn _fate, out bool _cancelDamage); if (_cancelDamage) { cancelDamage = true; } if (fate == ModReturn.Pass) { fate = _fate; } if (boo) { break; } } if (!cancelDamage) { other.Damage(container.stats.damage, container.stats.element, out float damageDealt, out float damageResisted); } if (fate == ModReturn.Remove || fate == ModReturn.Pass) { OnRemove(); } }
public ProjMod_Dummy(ProjMod_Dummy other) { type = other.type; priority = other.priority; targetFate = other.targetFate; wallFate = other.wallFate; rangeFate = other.rangeFate; }
public override bool OnHitWall(out ModReturn modReturn) { if (bounceOffWall) { Bounce(); modReturn = ModReturn.Keep; return(true); } modReturn = ModReturn.Pass; return(false); }
public override bool OnHitTarget(out ModReturn modReturn, out bool cancelDamage) { cancelDamage = false; if (bounceOffTarget) { Bounce(); modReturn = ModReturn.Keep; return(true); } modReturn = ModReturn.Pass; return(false); }
public override bool OnHitWall(out ModReturn modReturn) { if (pierceWall) { modReturn = ModReturn.Keep; Pierce(); } else { modReturn = ModReturn.Pass; } return(false); }
public override bool OnHitTarget(out ModReturn modReturn, out bool cancelDamage) { cancelDamage = false; if (pierceTarget) { modReturn = ModReturn.Keep; Pierce(); } else { modReturn = ModReturn.Pass; } return(false); }
private void OnUpdate() { ModReturn fate = ModReturn.Pass; for (int i = 0; i < container.mods.Count; i++) { bool boo = container.mods[i].OnFixedUpdate(out ModReturn _fate); if (fate == ModReturn.Pass) { fate = _fate; } if (boo) { break; } } if (fate == ModReturn.Remove) { OnRemove(); } }
public void OnHitWall() { lastEvent = ProjLastEvent.HitWall; ModReturn fate = ModReturn.Pass; for (int i = 0; i < container.mods.Count; i++) { bool boo = container.mods[i].OnHitWall(out ModReturn _fate); if (fate == ModReturn.Pass) { fate = _fate; } if (boo) { break; } } if (fate == ModReturn.Remove || fate == ModReturn.Pass) { OnRemove(); } }
/// <summary> /// Called whenever the projectile hits a valid target /// </summary> /// <returns>True to break mod loop</returns> public virtual bool OnHitTarget(out ModReturn modReturn, out bool cancelDamage) { modReturn = ModReturn.Pass; cancelDamage = false; return(false); }
public override bool OnFixedUpdate(out ModReturn modReturn) { modReturn = ModReturn.Pass; return(false); }
/// <summary> /// Called every frame /// </summary> /// <returns>True to break mod loop</returns> public virtual bool OnFixedUpdate(out ModReturn modReturn) { modReturn = ModReturn.Pass; return(false); }
public override bool OnRangeMet(out ModReturn modReturn) { modReturn = rangeFate; return(false); }
public override bool OnHitTarget(out ModReturn modReturn, out bool cancelDamage) { modReturn = targetFate; cancelDamage = false; return(true); }
/// <summary> /// Called when the projectile collides with a wall /// </summary> /// <returns>True to break mod loop</returns> public virtual bool OnHitWall(out ModReturn modReturn) { modReturn = ModReturn.Pass; return(false); }
/// <summary> /// Called when the projectile reaches its max range /// </summary> /// <returns>True to break mod loop</returns> public virtual bool OnRangeMet(out ModReturn modReturn) { modReturn = ModReturn.Pass; return(false); }
public override bool OnHitWall(out ModReturn modReturn) { modReturn = wallFate; return(false); }