]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/w_minelayer.qc
Merge remote branch 'refs/remotes/origin/fruitiex/racefixes'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / w_minelayer.qc
index 7342d1e2bb4a9c8c1fd6fb80bf869038d02faca2..dc4f48152e4ebb6d6dc07df6a0af8d49695cb77c 100644 (file)
@@ -2,6 +2,7 @@
 REGISTER_WEAPON(MINE_LAYER, w_minelayer, IT_ROCKETS, 4, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_HIGH, "minelayer", "minelayer", "Mine Layer");
 #else
 #ifdef SVQC
+void W_Mine_Think (void);
 .float minelayer_detonate, minelayer_mines;
 .float mine_time;
 
@@ -16,7 +17,7 @@ void W_Mine_Stick ()
 
        // in order for mines to face properly when sticking to the ground, they must be a server side entity rather than a csqc projectile
 
-       local entity newmine;
+       entity newmine;
        newmine = spawn();
        newmine.classname = self.classname;
 
@@ -40,7 +41,7 @@ void W_Mine_Stick ()
        newmine.mine_time = self.mine_time;
 
        newmine.touch = SUB_Null;
-       newmine.think = self.think;
+       newmine.think = W_Mine_Think;
        newmine.nextthink = time;
        newmine.cnt = self.cnt;
        newmine.flags = self.flags;
@@ -196,8 +197,8 @@ void W_Mine_Damage (entity inflictor, entity attacker, float damage, float death
 
 void W_Mine_Attack (void)
 {
-       local entity mine;
-       local entity flash;
+       entity mine;
+       entity flash;
 
        // scan how many mines we placed, and return if we reached our limit
        if(cvar("g_balance_minelayer_limit"))
@@ -261,6 +262,8 @@ void W_Mine_Attack (void)
        W_AttachToShotorg(flash, '5 0 0');
 
        // common properties
+
+       other = mine; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_minelayer (void); // defined in t_items.qc
@@ -276,9 +279,9 @@ float w_minelayer(float req)
                if(skill >= 2) // skill 0 and 1 bots won't detonate mines!
                {
                        // decide whether to detonate mines
-                       local entity mine, targetlist, targ;
-                       local float edgedamage, coredamage, edgeradius, recipricoledgeradius, d;
-                       local float selfdamage, teamdamage, enemydamage;
+                       entity targetlist, targ;
+                       float edgedamage, coredamage, edgeradius, recipricoledgeradius, d;
+                       float selfdamage, teamdamage, enemydamage;
                        edgedamage = cvar("g_balance_minelayer_edgedamage");
                        coredamage = cvar("g_balance_minelayer_damage");
                        edgeradius = cvar("g_balance_minelayer_radius");
@@ -311,7 +314,7 @@ float w_minelayer(float req)
                                }
                                mine = find(mine, classname, "mine");
                        }
-                       local float desirabledamage;
+                       float desirabledamage;
                        desirabledamage = enemydamage;
                        if (teamplay != 1 && time > self.invincible_finished && time > self.spawnshieldtime)
                                desirabledamage = desirabledamage - selfdamage * cvar("g_balance_selfdamagepercent");
@@ -340,7 +343,7 @@ float w_minelayer(float req)
                                                targ = targ.chain;
                                        }
                                }else{
-                                       local float distance; distance= bound(300,vlen(self.origin-self.enemy.origin),30000);
+                                       float distance; distance= bound(300,vlen(self.origin-self.enemy.origin),30000);
                                        //As the distance gets larger, a correct detonation gets near imposible
                                        //Bots are assumed to use the mine spawnfunc_light to see if the mine gets near a player
                                        if(v_forward * normalize(mine.origin - self.enemy.origin)< 0.1)