]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/t_quake3.qc
use SUB_Remove instead in the init function that used to cause problems
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / t_quake3.qc
index 5f484acc73a3700a91aa2aae51118cbfeb7cf365..44036ade494e9b437934f93438fdd5ead1dab8ab 100644 (file)
@@ -40,17 +40,20 @@ void spawnfunc_item_armor_shard()    { spawnfunc_item_armor_small();    }
 void spawnfunc_item_enviro()         { spawnfunc_item_invincible();     }
 
 // weapon remove ent from df
-// +void target_init_verify()
+void target_init_verify()
 {
        entity trigger, targ;
        for(trigger = world; (trigger = find(trigger, classname, "trigger_multiple")); )
                for(targ = world; (targ = find(targ, targetname, trigger.target)); )
-                       if (targ.classname == "target_init" || targ.classname == "target_give" || targ.classname == "target_items") {
-                               targ.wait = -2;
+                       if (targ.classname == "target_init" || targ.classname == "target_give" || targ.classname == "target_items")
+                       {
+                               trigger.wait = 0;
+                               trigger.delay = 0;
+                               targ.wait = 0;
                                targ.delay = 0;
 
-                               setsize(targ, trigger.mins, trigger.maxs);
-                               setorigin(targ, trigger.origin);
+                               //setsize(targ, trigger.mins, trigger.maxs);
+                               //setorigin(targ, trigger.origin);
                                //remove(trigger);
                        }
 }
@@ -58,7 +61,7 @@ void spawnfunc_item_enviro()         { spawnfunc_item_invincible();     }
 void spawnfunc_target_init()
 {
        self.spawnflags = 0; // remove all weapons except the ones listed below
-       self.netname = "laser uzi"; // keep these weapons through the remove trigger
+       self.netname = "shotgun"; // keep these weapons through the remove trigger
        spawnfunc_target_items();
        InitializeEntity(self, target_init_verify, INITPRIO_FINDTARGET);
 }
@@ -69,25 +72,25 @@ void target_give_init()
        entity targ;
        for (targ = world; (targ = find(targ, targetname, self.target)); ) {
                if (targ.classname == "weapon_rocketlauncher") {
-                       self.ammo_rockets += targ.count * cvar("g_balance_rocketlauncher_ammo");
+                       self.ammo_rockets += targ.count * autocvar_g_balance_rocketlauncher_ammo;
                        self.netname = "rocketlauncher";
                }
                else if (targ.classname == "weapon_plasmagun") {
-                       self.ammo_rockets += targ.count * cvar("g_balance_hagar_primary_ammo");
+                       self.ammo_rockets += targ.count * autocvar_g_balance_hagar_primary_ammo;
                        if(self.netname == "")
                                self.netname = "hagar";
                        else
                                self.netname = strcat(self.netname, " hagar");
                }
                else if (targ.classname == "weapon_bfg") {
-                       self.ammo_cells += targ.count * cvar("g_balance_crylink_primary_ammo");
+                       self.ammo_cells += targ.count * autocvar_g_balance_crylink_primary_ammo;
                        if(self.netname == "")
                                self.netname = "crylink";
                        else
                                self.netname = strcat(self.netname, " crylink");
                }
                else if (targ.classname == "weapon_grenadelauncher") {
-                       self.ammo_rockets += targ.count * cvar("g_balance_grenadelauncher_primary_ammo");
+                       self.ammo_rockets += targ.count * autocvar_g_balance_grenadelauncher_primary_ammo;
                        if(self.netname == "")
                                self.netname = "grenadelauncher";
                        else
@@ -97,7 +100,9 @@ void target_give_init()
                        self.armorvalue = 100;
                else if (targ.classname == "item_health_mega")
                        self.health = 200;
-               remove(targ);
+               //remove(targ); // removing ents in init functions causes havoc, workaround:
+        targ.think = SUB_Remove;
+        targ.nextthink = time;
        }
        self.spawnflags = 2;
        spawnfunc_target_items();