From 6568c3eac4e6f6bb0e475f732988c90f06d0b000 Mon Sep 17 00:00:00 2001 From: Tyler Young Date: Sun, 26 Nov 2023 19:10:22 -0500 Subject: [PATCH 1/3] SERVER: Kill zombies during teleportation --- source/server/entities/teleporter.qc | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/source/server/entities/teleporter.qc b/source/server/entities/teleporter.qc index bcfb336..222a0bb 100644 --- a/source/server/entities/teleporter.qc +++ b/source/server/entities/teleporter.qc @@ -250,13 +250,15 @@ void() teleporter_link_touch = void() teleport_touch = { + entity tempe; + if (self.cooldown) { useprint(other, 16, 0, 0); return; } if (other.classname != "player" || self.activated) - return; + return; if (!isPowerOn) { useprint(other, 8, 0, 0); @@ -295,8 +297,27 @@ void() teleport_touch = people.tele_target = find(world, targetname, self.target); people.movetype = MOVETYPE_NONE; } - people = people.chain; + people = people.chain; } + + entity zod = findradius(self.origin, self.stance); + while (zod != world) + { + if (zod.classname == "ai_zombie_head" || zod.classname == "ai_zombie_rarm" + || zod.classname == "ai_zombie_larm") + { + // If we're a limb, grab our body. + zod = zod.owner; + } + if (zod.classname == "ai_zombie" && !zod.electro_targeted) + { + tempe = self; + self = zod; + Z_ElectroShock(); + self = tempe; + } + zod = zod.chain; + } if (!other.tele_target) objerror("Couldn't find target!"); From b8c5fa2d6146322ae3a7816c2a9c041190b3d2b1 Mon Sep 17 00:00:00 2001 From: Tyler Young Date: Mon, 27 Nov 2023 20:25:23 -0500 Subject: [PATCH 2/3] SERVER: More efficient teleporter kills --- source/server/entities/teleporter.qc | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/source/server/entities/teleporter.qc b/source/server/entities/teleporter.qc index 222a0bb..80fdcc5 100644 --- a/source/server/entities/teleporter.qc +++ b/source/server/entities/teleporter.qc @@ -297,27 +297,15 @@ void() teleport_touch = people.tele_target = find(world, targetname, self.target); people.movetype = MOVETYPE_NONE; } - people = people.chain; - } - - entity zod = findradius(self.origin, self.stance); - while (zod != world) - { - if (zod.classname == "ai_zombie_head" || zod.classname == "ai_zombie_rarm" - || zod.classname == "ai_zombie_larm") - { - // If we're a limb, grab our body. - zod = zod.owner; - } - if (zod.classname == "ai_zombie" && !zod.electro_targeted) + else if (people.aistatus == "1" && !people.electro_targeted) { tempe = self; - self = zod; + self = people; Z_ElectroShock(); self = tempe; } - zod = zod.chain; - } + people = people.chain; + } if (!other.tele_target) objerror("Couldn't find target!"); From 5e939918e410317f97b61e539f4d78bab41d3066 Mon Sep 17 00:00:00 2001 From: Tyler Young Date: Wed, 29 Nov 2023 22:40:57 -0500 Subject: [PATCH 3/3] Account for dogs when teleporting --- source/server/entities/teleporter.qc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/server/entities/teleporter.qc b/source/server/entities/teleporter.qc index 80fdcc5..15c2d35 100644 --- a/source/server/entities/teleporter.qc +++ b/source/server/entities/teleporter.qc @@ -297,6 +297,15 @@ void() teleport_touch = people.tele_target = find(world, targetname, self.target); people.movetype = MOVETYPE_NONE; } + else if (people.classname == "ai_dog" && !people.electro_targeted) { + sound(self, CHAN_WEAPON, "sounds/machines/elec_shock.wav", 1, ATTN_NORM); + + tempe = self; + self = people; + self.electro_targeted = true; + self.th_die(); + self = tempe; + } else if (people.aistatus == "1" && !people.electro_targeted) { tempe = self;