예제 #1
0
        private void Events_OnZombieDamaging(Zombie nativeZombie, ref ushort damageAmount, ref Vector3 ragdoll,
                                             ref ERagdollEffect ragdollEffect, ref bool trackKill,
                                             ref bool dropLoot, ref EZombieStunOverride stunOverride, out bool cancel)
        {
            UnturnedZombie zombie = new UnturnedZombie(nativeZombie);

            UnturnedZombieDamagingEvent @event;

            if (damageAmount >= zombie.Health)
            {
                @event = new UnturnedZombieDyingEvent(zombie, damageAmount, ragdoll, ragdollEffect, trackKill, dropLoot,
                                                      stunOverride);
            }
            else
            {
                @event = new UnturnedZombieDamagingEvent(zombie, damageAmount, ragdoll, ragdollEffect, trackKill,
                                                         dropLoot, stunOverride);
            }

            Emit(@event);

            damageAmount  = @event.DamageAmount;
            ragdoll       = @event.Ragdoll;
            ragdollEffect = @event.RagdollEffect;
            trackKill     = @event.TrackKill;
            dropLoot      = @event.DropLoot;
            stunOverride  = @event.StunOverride;
            cancel        = @event.IsCancelled;
        }
예제 #2
0
 public UnturnedZombieDamagingEvent(UnturnedZombie zombie, ushort damageAmount, Vector3 ragdoll, ERagdollEffect ragdollEffect, bool trackKill, bool dropLoot, EZombieStunOverride stunOverride) : base(zombie)
 {
     DamageAmount  = damageAmount;
     Ragdoll       = ragdoll;
     RagdollEffect = ragdollEffect;
     TrackKill     = trackKill;
     DropLoot      = dropLoot;
     StunOverride  = stunOverride;
 }
예제 #3
0
 public UnturnedZombieDamagingEvent(UnturnedZombie zombie, UnturnedPlayer?user, ushort damageAmount,
                                    Vector3 ragdoll, ERagdollEffect ragdollEffect, EZombieStunOverride stunOverride) : base(zombie)
 {
     DamageAmount  = damageAmount;
     Instigator    = user;
     Ragdoll       = ragdoll;
     RagdollEffect = ragdollEffect;
     StunOverride  = stunOverride;
 }
예제 #4
0
            private static bool AskDamage(Zombie __instance, ref ushort amount, ref Vector3 newRagdoll,
                                          ref ERagdollEffect ragdollEffect, ref bool trackKill, ref bool dropLoot,
                                          ref EZombieStunOverride stunOverride)
            {
                if (amount == 0 || __instance.isDead)
                {
                    return(true);
                }

                bool cancel = false;

                OnZombieDamaging?.Invoke(__instance, ref amount, ref newRagdoll, ref ragdollEffect,
                                         ref trackKill, ref dropLoot, ref stunOverride, out cancel);

                return(!cancel);
            }
예제 #5
0
 public UnturnedZombieDyingEvent(UnturnedZombie zombie, UnturnedPlayer?player, ushort damageAmount,
                                 Vector3 ragdoll, ERagdollEffect ragdollEffect, EZombieStunOverride stunOverride)
     : base(zombie, player, damageAmount, ragdoll, ragdollEffect, stunOverride)
 {
 }
예제 #6
0
 public UnturnedZombieDyingEvent(UnturnedZombie zombie, ushort damageAmount, Vector3 ragdoll, ERagdollEffect ragdollEffect, bool trackKill, bool dropLoot, EZombieStunOverride stunOverride) : base(zombie, damageAmount, ragdoll, ragdollEffect, trackKill, dropLoot, stunOverride)
 {
 }