コード例 #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
        private void Events_OnAnimalDamaging(Animal nativeAnimal, ref ushort amount, ref Vector3 ragdoll,
                                             ref ERagdollEffect ragdollEffect, ref bool trackKill, ref bool dropLoot, out bool cancel)
        {
            UnturnedAnimal animal = new UnturnedAnimal(nativeAnimal);

            UnturnedAnimalDamagingEvent @event;

            if (amount >= animal.Health)
            {
                @event = new UnturnedAnimalDyingEvent(animal, amount, ragdoll.ToSystemVector(), ragdollEffect, trackKill, dropLoot);
            }
            else
            {
                @event = new UnturnedAnimalDamagingEvent(animal, amount, ragdoll.ToSystemVector(), ragdollEffect, trackKill, dropLoot);
            }

            Emit(@event);

            amount        = @event.DamageAmount;
            ragdoll       = @event.Ragdoll.ToUnityVector();
            ragdollEffect = @event.RagdollEffect;
            trackKill     = @event.TrackKill;
            dropLoot      = @event.DropLoot;
            cancel        = @event.IsCancelled;
        }
コード例 #3
0
 public UnturnedAnimalDamagingEvent(UnturnedAnimal animal, ushort damageAmount, Vector3 ragdoll,
                                    ERagdollEffect ragdollEffect, CSteamID instigator) : base(animal)
 {
     DamageAmount  = damageAmount;
     Ragdoll       = ragdoll;
     RagdollEffect = ragdollEffect;
     Instigator    = instigator;
 }
コード例 #4
0
 public UnturnedAnimalDamagingEvent(UnturnedAnimal animal, ushort damageAmount, Vector3 ragdoll, ERagdollEffect ragdollEffect, bool trackKill, bool dropLoot) : base(animal)
 {
     DamageAmount  = damageAmount;
     Ragdoll       = ragdoll;
     RagdollEffect = ragdollEffect;
     TrackKill     = trackKill;
     DropLoot      = dropLoot;
 }
コード例 #5
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;
 }
コード例 #6
0
            private static bool AskDamage(Animal __instance, ref ushort amount, ref Vector3 newRagdoll,
                                          ref ERagdollEffect ragdollEffect, ref bool trackKill, ref bool dropLoot)
            {
                bool cancel = false;

                if (amount == 0 || __instance.isDead)
                {
                    return(false);
                }

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

                return(!cancel);
            }
コード例 #7
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);
            }
コード例 #8
0
 public UnturnedAnimalDyingEvent(UnturnedAnimal animal, ushort damageAmount, Vector3 ragdoll,
                                 ERagdollEffect ragdollEffect, CSteamID instigator) : base(animal, damageAmount, ragdoll,
                                                                                           ragdollEffect, instigator)
 {
 }
コード例 #9
0
        public static void Prefix(byte amount, Vector3 newRagdoll, EDeathCause newCause, ELimb newLimb, CSteamID newKiller, ref EPlayerKill kill, bool trackKill, ERagdollEffect newRagdollEffect, bool canCauseBleeding, PlayerLife __instance)
        {
            Player ply = __instance.channel.owner.player;

            if (ply is null)
            {
                return;
            }

            if (amount >= ply.life.health && ply.clothing.vest == 1013)
            {
                ply.clothing.askWearVest(0, 0, new byte[0], true);
                InventorySearch foundVest = ply.inventory.has(1013);
                if (foundVest is null)
                {
                    return;
                }

                ply.inventory.removeItem(foundVest.page, ply.inventory.getIndex(foundVest.page, foundVest.jar.x, foundVest.jar.y));

                ExplosionParameters explodParams = new ExplosionParameters(ply.transform.position, 10f, EDeathCause.KILL, CSteamID.Nil);
                explodParams.penetrateBuildables = true;
                explodParams.playerDamage        = 150;
                explodParams.damageRadius        = 32;
                explodParams.barricadeDamage     = 1000;
                List <EPlayerKill> deadPlayers = new List <EPlayerKill>();
                EffectManager.sendEffect(45, byte.MaxValue, byte.MaxValue, byte.MaxValue, ply.transform.position);
                DamageTool.explode(explodParams, out deadPlayers);
            }
        }
コード例 #10
0
 public UnturnedZombieDyingEvent(UnturnedZombie zombie, UnturnedPlayer?player, ushort damageAmount,
                                 Vector3 ragdoll, ERagdollEffect ragdollEffect, EZombieStunOverride stunOverride)
     : base(zombie, player, damageAmount, ragdoll, ragdollEffect, stunOverride)
 {
 }
コード例 #11
0
 public UnturnedAnimalDyingEvent(UnturnedAnimal animal, ushort damageAmount, Vector3 ragdoll,
                                 ERagdollEffect ragdollEffect, bool trackKill, bool dropLoot) : base(animal, damageAmount, ragdoll,
                                                                                                     ragdollEffect, trackKill, dropLoot)
 {
 }
コード例 #12
0
        public static void Prefix(byte amount, Vector3 newRagdoll, EDeathCause newCause, ELimb newLimb, CSteamID newKiller, ref EPlayerKill kill, bool trackKill, ERagdollEffect newRagdollEffect, bool canCauseBleeding, PlayerLife __instance)
        {
            Player ply = __instance.channel.owner.player;
            if (ply is null) return;

            if (amount >= ply.life.health)
            {
                Transform deathboxTransform = BarricadeManager.dropBarricade(new Barricade(1283),ply.transform, ply.transform.position, 0f, 0f, 0f, (ulong) ply.channel.owner.playerID.steamID, 0UL);
                byte x;
                byte y;
                ushort plant;
                ushort index;
                BarricadeRegion region;

                if (!BarricadeManager.tryGetInfo(deathboxTransform, out x, out y, out plant, out index, out region)) return;

                InteractableStorage storage = deathboxTransform.GetComponent<InteractableStorage>();
                storage.items.resize(10, 10);

                for (byte page = 0; page < 6; page++)
                {
                    for (byte i = 0; i < ply.inventory.items[page].getItemCount(); i++)
                    {
                        ItemJar item = ply.inventory.items[page].getItem(i);
                        storage.items.tryAddItem(item.item);
                    }
                }
                TTTPlayer.ClearInventoryUnsafe(__instance.channel.owner); // Clears clothing to prevent players aqquiring detective vest ect.
            }
        }
コード例 #13
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)
 {
 }