private void OnTakeDamage(Hero hero, Agent agent, Hero attackerHero, Agent attackerAgent, BLTHeroPowersMissionBehavior.RegisterBlowParams blowParams) { AddDamagePower.ApplyDamageEffects(agent, blowParams, ArmorToIgnorePercent, DamageModifierPercent, DamageToAdd, AddHitBehavior, RemoveHitBehavior); }
private void OnDoDamage(Hero hero, Agent agent, Hero victimHero, Agent victimAgent, BLTHeroPowersMissionBehavior.RegisterBlowParams blowParams) { agent.Health = Math.Min(agent.HealthLimit, agent.Health + blowParams.blow.InflictedDamage * DamageToAbsorbPercent / 100f); }
public void DoDamage(Hero attackerHero, Agent attackerAgent, Hero victimHero, Agent victimAgent, BLTHeroPowersMissionBehavior.RegisterBlowParams blowParams) => OnDoDamage?.Invoke(attackerHero, attackerAgent, victimHero, victimAgent, blowParams);
private void OnTakeDamage(Hero hero, Agent agent, Hero attackerHero, Agent attackerAgent, BLTHeroPowersMissionBehavior.RegisterBlowParams blowParams) { int damage = (int)(blowParams.blow.InflictedDamage * ReflectPercent / 100f); if (damage > 0 && attackerAgent != null && attackerAgent != agent) { var blow = new Blow(attackerAgent.Index) { AttackType = attackerAgent.IsMount ? AgentAttackType.Collision : AgentAttackType.Standard, DamageType = attackerAgent.IsMount ? DamageTypes.Blunt : blowParams.blow.DamageType, BoneIndex = agent.Monster.ThoraxLookDirectionBoneIndex, Position = agent.Position, BlowFlag = HitBehavior.AddFlags(agent, BlowFlags.None), BaseMagnitude = 0f, InflictedDamage = damage, SwingDirection = agent.LookDirection.NormalizedCopy(), Direction = agent.LookDirection, DamageCalculated = true, WeaponRecord = new () { AffectorWeaponSlotOrMissileIndex = -1 }, }; // blow.WeaponRecord.FillAsMeleeBlow(null, null, -1, -1); attackerAgent.RegisterBlow(blow); if (ReflectedDamageIsSubtracted) { blowParams.blow.InflictedDamage = Math.Max(0, blowParams.blow.InflictedDamage - damage); } } }