コード例 #1
0
 private void OnTakeDamage(Hero hero, Agent agent, Hero attackerHero, Agent attackerAgent,
                           BLTHeroPowersMissionBehavior.RegisterBlowParams blowParams)
 {
     AddDamagePower.ApplyDamageEffects(agent, blowParams, ArmorToIgnorePercent, DamageModifierPercent, DamageToAdd, AddHitBehavior,
                                       RemoveHitBehavior);
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 public void DoDamage(Hero attackerHero, Agent attackerAgent, Hero victimHero, Agent victimAgent,
                      BLTHeroPowersMissionBehavior.RegisterBlowParams blowParams)
 => OnDoDamage?.Invoke(attackerHero, attackerAgent, victimHero, victimAgent, blowParams);
コード例 #4
0
        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);
                }
            }
        }