]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/server/mutators/mutator_physical_weapons.qc
Move the physical weapon code to the new mutator
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator_physical_weapons.qc
1 void thrown_wep_ode_think()
2 {
3         self.nextthink = time;
4         if(!self.owner.modelindex)
5                 remove(self); // the real weapon is gone, remove this
6 }
7
8 MUTATOR_HOOKFUNCTION(item_spawning)
9 {
10         if(!autocvar_physics_ode)
11                 return FALSE;
12         if(self.classname != "droppedweapon")
13                 return FALSE;
14
15         // make the dropped weapon physical
16         entity wep;
17         wep = spawn();
18         setsize(wep, self.mins, self.maxs);
19         setorigin(wep, self.origin);
20         wep.angles = self.angles;
21         wep.velocity = self.velocity;
22
23         wep.classname = "droppedweapon2";
24         wep.owner = self;
25         wep.solid = SOLID_CORPSE;
26         wep.movetype = MOVETYPE_PHYSICS;
27         wep.takedamage = DAMAGE_AIM;
28         wep.damageforcescale = autocvar_g_ode_weapons_damageforcescale;
29
30         wep.think = thrown_wep_ode_think;
31         wep.nextthink = time;
32
33         self.effects |= EF_NOMODELFLAGS; // disable the spinning
34         self.movetype = MOVETYPE_FOLLOW;
35         self.aiment = wep;
36
37         return FALSE;
38 }
39
40 MUTATOR_DEFINITION(mutator_physical_weapons)
41 {
42         MUTATOR_HOOK(Item_Spawn, item_spawning, CBC_ORDER_ANY);
43
44         return FALSE;
45 }