X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fw_minelayer.qc;h=aeefbcd0b7dac1a6162726367a65fe2a52b4bf48;hp=7342d1e2bb4a9c8c1fd6fb80bf869038d02faca2;hb=98b778e3efdd3f118d3e9bc463d4250e31f083d2;hpb=06831b03595a3e450bf120d56d54f7e32c603cbe diff --git a/qcsrc/server/w_minelayer.qc b/qcsrc/server/w_minelayer.qc index 7342d1e2bb..aeefbcd0b7 100644 --- a/qcsrc/server/w_minelayer.qc +++ b/qcsrc/server/w_minelayer.qc @@ -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; @@ -98,7 +99,7 @@ void W_Mine_RemoteExplode () if(self.owner.deadflag == DEAD_NO) if((self.spawnshieldtime >= 0) ? (time >= self.spawnshieldtime) // timer - : (vlen(NearestPointOnBox(self.owner, self.origin) - self.origin) > cvar("g_balance_minelayer_radius")) // safety device + : (vlen(NearestPointOnBox(self.owner, self.origin) - self.origin) > cvar("g_balance_minelayer_remote_radius")) // safety device ) { W_Mine_DoRemoteExplode(); @@ -170,9 +171,6 @@ void W_Mine_Think (void) if (self.owner.deadflag == DEAD_NO) if (self.minelayer_detonate) W_Mine_RemoteExplode(); - - if(self.csqcprojectile_clientanimate == 0) - UpdateCSQCProjectile(self); } void W_Mine_Touch (void) @@ -196,8 +194,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")) @@ -251,7 +249,7 @@ void W_Mine_Attack (void) mine.cnt = time + cvar("g_balance_minelayer_lifetime"); mine.flags = FL_PROJECTILE; - CSQCProjectile(mine, FALSE, PROJECTILE_MINE, TRUE); + CSQCProjectile(mine, TRUE, PROJECTILE_MINE, TRUE); // muzzle flash for 1st person view flash = spawn (); @@ -261,6 +259,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 +276,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 +311,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 +340,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)