public override void TakeDamage(float damage) { float resolvedDamage = damage * DefenseDamageReduction * DamageReduction; Health -= resolvedDamage; FCTInterface.SpawnText(resolvedDamage.ToString("0"), Camera.main.WorldToScreenPoint(this.handler.transform.position) + FCTOffset, 92f); if (Health <= 0f) { //dead //handler.Die(); // doing this in the battle controller now handler.GetHit(); // TRIGGER OnDeath here if (boss.HasPassiveSkill(SkillTriggers.OnDeath)) { List <Skill> passives = boss.GetPassiveSkills(SkillTriggers.OnDeath); if (passives.Count > 0) { // Add it to the battlecontroller incase multiple actors have died and multiple skills need to be activated foreach (Skill passive in passives) { controller.AddOnDeathSKill(this, passive); } } } } else { handler.GetHit(); } Health = UnityEngine.Mathf.Max(0f, Health); // Check for HP phase change BossPatternTrigger Trigger = boss.GetCurrentPhaseTrigger(); if (Trigger != null) { Debug.Log("[HealthTrigger] " + boss.Name + " has trigger: [" + Trigger.ToString() + "]\n"); } if (Trigger != null && Trigger.Trigger == BossPhaseTriggerType.HealthPercent) { float percent = Health / (float)boss.MaxHealth; // if the condition is met, change the phase if (percent < Trigger.Condition) { boss.BossPhase = Trigger.PhaseChange; FCTInterface.SpawnText(Trigger.MessageOnChange, Camera.main.WorldToScreenPoint(this.handler.transform.position) + FCTOffset, 72f, textColor: Color.blue); Debug.Log("[HealthTrigger] " + boss.Name + " has triggered and changed from phase {" + Trigger.TargetPhase + "} to phase {" + boss.BossPhase + "}\n"); } } if (onHealthChanged != null) { onHealthChanged(); } }
public override void OnAllyDeath() { BossPatternTrigger Trigger = boss.GetCurrentPhaseTrigger(); if (Trigger != null) { Debug.Log("[OnAllyDeathTrigger] " + boss.Name + " has trigger: [" + Trigger.ToString() + "]\n"); } if (Trigger != null && Trigger.Trigger == BossPhaseTriggerType.OnAllyDeath) { boss.BossPhase = Trigger.PhaseChange; FCTInterface.SpawnText(Trigger.MessageOnChange, Camera.main.WorldToScreenPoint(this.handler.transform.position) + FCTOffset, 72f, textColor: Color.blue); Debug.Log("[OnAllyDeathTrigger] " + boss.Name + " has triggered and changed from phase {" + Trigger.TargetPhase + "} to phase {" + boss.BossPhase + "}\n"); } }
public void UpdateTurnCount() { TurnCount++; BossPatternTrigger Trigger = boss.GetCurrentPhaseTrigger(); if (Trigger != null) { Debug.Log("[TurnTrigger] " + boss.Name + " has trigger: [" + Trigger.ToString() + "]\n"); } if (Trigger != null && Trigger.Trigger == BossPhaseTriggerType.TurnsPassed) { if (TurnCount >= Trigger.Condition) { boss.BossPhase = Trigger.PhaseChange; FCTInterface.SpawnText(Trigger.MessageOnChange, Camera.main.WorldToScreenPoint(this.handler.transform.position) + FCTOffset, 72f, textColor: Color.blue); TurnCount = 0; Debug.Log("[TurnTrigger] " + boss.Name + " has triggered and changed from phase {" + Trigger.TargetPhase + "} to phase {" + boss.BossPhase + "}\n"); } } }