]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add .future_target field for func_train
authorFreddy <schro.sb@gmail.com>
Wed, 2 Nov 2016 17:57:18 +0000 (18:57 +0100)
committerFreddy <schro.sb@gmail.com>
Wed, 2 Nov 2016 17:57:18 +0000 (18:57 +0100)
qcsrc/common/triggers/func/train.qc

index 5de9d42a5e46af59f5e2d17d2626953851535d78..2e4356bab3214d5f124150e20975ee14056e0126 100644 (file)
@@ -1,5 +1,6 @@
 #include "train.qh"
 .float train_wait_turning;
+.entity future_target;
 void train_next(entity this);
 #ifdef SVQC
 void train_use(entity this, entity actor, entity trigger);
@@ -14,7 +15,7 @@ void train_wait(entity this)
        {
                entity targ, cp;
                vector ang;
-               targ = find(NULL, targetname, this.target);
+               targ = this.future_target;
                if((this.spawnflags & 1) && targ.curvetarget)
                        cp = find(NULL, targetname, targ.curvetarget);
                else
@@ -41,7 +42,7 @@ void train_wait(entity this)
 #endif
 
 #ifdef SVQC
-       entity tg = find(NULL, targetname, this.target);
+       entity tg = this.future_target;
        if(tg.spawnflags & 4)
        {
                this.use = train_use;
@@ -84,10 +85,11 @@ void train_next(entity this)
        entity targ = NULL, cp = NULL;
        vector cp_org = '0 0 0';
 
-       targ = train_next_find(this);
+       targ = this.future_target;
 
        this.target = targ.target;
        this.target_random = targ.target_random;
+       this.future_target = train_next_find(targ);
 
        if (this.spawnflags & 1)
        {
@@ -209,6 +211,8 @@ void func_train_find(entity this)
        entity targ = train_next_find(this);
        this.target = targ.target;
        this.target_random = targ.target_random;
+       // save the future target for later
+       this.future_target = train_next_find(targ);
        if (this.target == "")
                objerror(this, "func_train_find: no next target");
        SUB_SETORIGIN(this, targ.origin - this.view_ofs);