]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
mutator system: add an EditProjectile hook
authorRudolf Polzer <divverent@alientrap.org>
Sat, 23 Oct 2010 07:43:43 +0000 (09:43 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Sat, 23 Oct 2010 07:43:43 +0000 (09:43 +0200)
14 files changed:
qcsrc/server/mutators/base.qh
qcsrc/server/w_common.qc
qcsrc/server/w_crylink.qc
qcsrc/server/w_electro.qc
qcsrc/server/w_fireball.qc
qcsrc/server/w_grenadelauncher.qc
qcsrc/server/w_hagar.qc
qcsrc/server/w_hlac.qc
qcsrc/server/w_hook.qc
qcsrc/server/w_laser.qc
qcsrc/server/w_minelayer.qc
qcsrc/server/w_porto.qc
qcsrc/server/w_rocketlauncher.qc
qcsrc/server/w_seeker.qc

index 73c16a9cd01c371a05d151d24499c82bf660faa8..cdc28f76bf426a44a4acace7da91b2a6396a807c 100644 (file)
@@ -112,3 +112,9 @@ MUTATOR_HOOKABLE(GetCvars);
        // INPUT:
                float get_cvars_f;
                string get_cvars_s;
+
+MUTATOR_HOOKABLE(EditProjectile);
+       // can edit any "just fired" projectile
+       // INPUT:
+               entity self;
+               entity other;
index 99df7041baf7196e83f4016123a2075ef6b30295..0b405ba77e8043dc2d73e7edf7a1155aa8f7554a 100644 (file)
@@ -371,6 +371,8 @@ void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, f
 
        proj.oldvelocity = proj.velocity;
 
+       other = proj; MUTATOR_CALLHOOK(EditProjectile);
+
        if(cvar("g_antilag_bullets"))
        if(pSpeed >= cvar("g_antilag_bullets"))
        {
index 5d1721f78f7def80f188107343408d8cb5d98d87..44e3967b546d9840970229196257bd256d0af6d4 100644 (file)
@@ -206,6 +206,8 @@ void W_Crylink_Attack (void)
 
                CSQCProjectile(proj, TRUE, (proj.cnt ? PROJECTILE_CRYLINK_BOUNCING : PROJECTILE_CRYLINK), TRUE);
 
+               other = proj; MUTATOR_CALLHOOK(EditProjectile);
+
                counter = counter + 1;
        }
 }
@@ -279,6 +281,8 @@ void W_Crylink_Attack2 (void)
 
                CSQCProjectile(proj, TRUE, (proj.cnt ? PROJECTILE_CRYLINK_BOUNCING : PROJECTILE_CRYLINK), TRUE);
 
+               other = proj; MUTATOR_CALLHOOK(EditProjectile);
+
                counter = counter + 1;
        }
 }
index 2268ca7cb150a558e9f83d325027213b238b4beb..6634837db6131f9da80daf588a54b53ceae2c008 100644 (file)
@@ -136,6 +136,8 @@ void W_Electro_Attack()
        //sounds bad
 
        CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO_BEAM, TRUE);
+
+       other = proj; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void W_Electro_Attack2()
@@ -182,6 +184,8 @@ void W_Electro_Attack2()
 #endif
 
        CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO, FALSE); // no culling, it has sound
+
+       other = proj; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 .vector hook_start, hook_end;
index 6b98d37cd7404b024f8252e55b49307d58ecf4c1..e78bb2bbc3b1c03ace99f72afcf8f9b280b8430c 100644 (file)
@@ -155,6 +155,8 @@ void W_Fireball_Attack1()
        proj.flags = FL_PROJECTILE;
 
        CSQCProjectile(proj, TRUE, PROJECTILE_FIREBALL, TRUE);
+
+       other = proj; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void W_Fireball_AttackEffect(float i, vector f_diff)
@@ -289,6 +291,8 @@ void W_Fireball_Attack2()
        proj.flags = FL_PROJECTILE;
 
        CSQCProjectile(proj, TRUE, PROJECTILE_FIREMINE, TRUE);
+
+       other = proj; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_fireball (void)
index 0bc08b8de77f2b2a6d84c9603d571bac6188421e..e92b2b26062bdae5bddfbe1b7ddb1b18785608b8 100644 (file)
@@ -200,6 +200,8 @@ void W_Grenade_Attack (void)
                CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE, TRUE);
        else
                CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE_BOUNCING, TRUE);
+
+       other = gren; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void W_Grenade_Attack2 (void)
@@ -244,6 +246,8 @@ void W_Grenade_Attack2 (void)
                CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE, TRUE);
        else
                CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE_BOUNCING, TRUE);
+
+       other = gren; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_grenadelauncher (void)
index 1d9e9e698e211b3ac12812cf4ebdb8a987e48c40..587c9fccc04b4a2de5528d23aa394f63dda06ec0 100644 (file)
@@ -71,6 +71,8 @@ void W_Hagar_Attack (void)
        missile.flags = FL_PROJECTILE;
 
        CSQCProjectile(missile, TRUE, PROJECTILE_HAGAR, TRUE);
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void W_Hagar_Attack2 (void)
@@ -106,6 +108,8 @@ void W_Hagar_Attack2 (void)
        missile.flags = FL_PROJECTILE;
 
        CSQCProjectile(missile, TRUE, PROJECTILE_HAGAR_BOUNCING, TRUE);
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_hagar (void)
index 9abb8a7a0200f76e63a5ecbe6b2ddeb2d19e7652..6aaf174147142b1f70212fd276274cbec9c5c053 100644 (file)
@@ -74,6 +74,8 @@ void W_HLAC_Attack (void)
        missile.projectiledeathtype = WEP_HLAC;
 
        CSQCProjectile(missile, TRUE, PROJECTILE_HLAC, TRUE);
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void W_HLAC_Attack2f (void)
@@ -116,6 +118,8 @@ void W_HLAC_Attack2f (void)
        missile.projectiledeathtype = WEP_HLAC | HITTYPE_SECONDARY;
 
        CSQCProjectile(missile, TRUE, PROJECTILE_HLAC, TRUE);
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void W_HLAC_Attack2 (void)
index 70fe77814de201e42e9f583d1e7b49c3da89e8a2..334e434c8afa9526774aab288d2ad2dfcbfa6dd5 100644 (file)
@@ -93,6 +93,8 @@ void W_Hook_Attack2()
        gren.flags = FL_PROJECTILE;
 
        CSQCProjectile(gren, TRUE, PROJECTILE_HOOKBOMB, TRUE);
+
+       other = gren; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_hook (void)
index 18715a9b4ba51ff79c7f995cd665d5a0bb1e88b5..db11eb395c3a370dce30aa21749e6a4199662702 100644 (file)
@@ -77,6 +77,9 @@ void W_Laser_Attack (float issecondary)
 
        missile.think = W_Laser_Think;
        missile.nextthink = time + cvar("g_balance_laser_primary_delay");
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
+
        if(time >= missile.nextthink)
        {
                entity oldself;
index 8c81d89f72c355c4281510a50f34357da2d4d74c..dc4f48152e4ebb6d6dc07df6a0af8d49695cb77c 100644 (file)
@@ -262,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
index 010a0f8b36546ccf7ad18a47b3460349b3d61a18..65442b21b957caa3b667202c422d9add5497e82b 100644 (file)
@@ -200,6 +200,8 @@ void W_Porto_Attack (void)
        gren.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP;
 
        CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED, TRUE);
+
+       other = gren; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_porto (void)
index 12f7647e570c9b262373350a20c4260de8238152..c109fc796b68afeb88d1b62d683083bd33062c29 100644 (file)
@@ -367,6 +367,7 @@ void W_Rocket_Attack (void)
        W_AttachToShotorg(flash, '5 0 0');
 
        // common properties
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_rocketlauncher (void); // defined in t_items.qc
index c91e4f40869ff7fb11e74a8cd9f514422c31b790..08b1a678269e3b88c8aa1a106a108f35c7aee022 100644 (file)
@@ -212,6 +212,8 @@ void Seeker_Fire_Missile(vector f_diff)
        missile.angles = vectoangles (missile.velocity);
 
        CSQCProjectile(missile, FALSE, PROJECTILE_SEEKER, TRUE);
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void Seeker_Vollycontroler_Think()
@@ -351,6 +353,8 @@ void Seeker_Fire_Tag()
        missile.angles = vectoangles (missile.velocity);
 
        CSQCProjectile(missile, TRUE, PROJECTILE_TAG, FALSE); // has sound
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 
@@ -424,6 +428,8 @@ void Seeker_Fire_Flac()
        missile.flags = FL_PROJECTILE;
 
        CSQCProjectile(missile, TRUE, PROJECTILE_FLAC, TRUE);
+
+       other = missile; MUTATOR_CALLHOOK(EditProjectile);
 }
 
 void spawnfunc_weapon_seeker (void)