X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Ft_teleporters.qc;h=2cfdd8a7720f5bf665d22ed5d7916da177375887;hb=d363eb368a00bc3837c8729014ee50e3e09700a8;hp=25dc837f953a514ce0ad9918b02d6d0bec92adc2;hpb=cf26ba11220f6f3d6280c26040ad311ee92ebeb2;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/t_teleporters.qc b/qcsrc/server/t_teleporters.qc index 25dc837f9..2cfdd8a77 100644 --- a/qcsrc/server/t_teleporters.qc +++ b/qcsrc/server/t_teleporters.qc @@ -75,6 +75,11 @@ void spawn_tdeath(vector v0, entity e, vector v) #define TELEPORT_FLAGS_WARPZONE 0 #define TELEPORT_FLAGS_PORTAL (TELEPORT_FLAG_SOUND | TELEPORT_FLAG_PARTICLES | TELEPORT_FLAG_TDEATH | TELEPORT_FLAG_FORCE_TDEATH) #define TELEPORT_FLAGS_TELEPORTER (TELEPORT_FLAG_SOUND | TELEPORT_FLAG_PARTICLES | TELEPORT_FLAG_TDEATH) + +// types for .teleportable entity setting +#define TELEPORT_NORMAL 1 // play sounds/effects etc +#define TELEPORT_SIMPLE 2 // only do teleport, nothing special + void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angles, vector to_velocity, vector telefragmin, vector telefragmax, float tflags) { entity telefragger; @@ -87,7 +92,7 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle makevectors (to_angles); - if(player.classname == "player") // don't play sounds or show particles for anything that isn't a player, maybe change later to block only observers + if(player.teleportable == TELEPORT_NORMAL) // don't play sounds or show particles for anything that isn't a player, maybe change later to block only observers { if(self.pushltime < time) // only show one teleport effect per teleporter per 0.2 seconds, for better fps { @@ -197,20 +202,17 @@ void Teleport_Touch (void) if (self.active != ACTIVE_ACTIVE) return; - if not(other.iscreature) - return; - - // for gameplay: vehicles can't teleport - if (other.vehicle_flags & VHF_ISVEHICLE) + if not(other.teleportable) return; - if(other.vehicle) - return; - - if(other.turrcaps_flags & TFL_TURRCAPS_ISTURRET) - return; + if(other.vehicle) + if(!other.vehicle.teleportable) + return; + + if(other.turrcaps_flags & TFL_TURRCAPS_ISTURRET) + return; - if (other.deadflag != DEAD_NO) + if(other.deadflag != DEAD_NO) return; if(self.team)