#include "gibs.qh"
+#include "rubble.qh"
+#include "../common/movetypes/movetypes.qh"
+
+.float scale;
+.float alpha;
+.float cnt;
+.float gravity;
+
void Gib_Delete()
-{
+{SELFPARAM();
remove(self);
}
if(specnum != SPECIES_ROBOT_SOLID || mdlname == "models/gibs/chunk.mdl")
{
if(mdlname == "models/gibs/bloodyskull.md3")
- setmodel(gib, "models/gibs/robo.md3");
+ setmodel(gib, MDL_GIB_ROBO);
else
- setmodel(gib, strcat("models/gibs/robo", ftos(floor(random() * 8) + 1), ".md3"));
+ setmodel(gib, MDL_GIB_ROBO_RANDOM());
if(specnum == SPECIES_ROBOT_SHINY)
{
gib.skin = 1;
break;
}
default:
- setmodel(gib, mdlname);
+ _setmodel(gib, mdlname);
gib.skin = specnum;
break;
}
}
void Gib_Touch()
-{
+{SELFPARAM();
// TODO maybe bounce of walls, make more gibs, etc.
if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
}
if(!self.silent)
- sound(self, CH_PAIN, strcat("misc/gib_splat0", ftos(floor(prandom() * 4 + 1)), ".wav"), VOL_BASE, ATTEN_NORM);
- pointparticles(particleeffectnum(strcat(species_prefix(self.cnt), "blood")), self.origin + '0 0 1', '0 0 30', 10);
+ sound(self, CH_PAIN, SND_GIB_SPLAT_RANDOM(), VOL_BASE, ATTEN_NORM);
+ pointparticles(_particleeffectnum(strcat(species_prefix(self.cnt), "blood")), self.origin + '0 0 1', '0 0 30', 10);
Gib_Delete();
}
-void Gib_Draw()
+void Gib_Draw(entity this)
{
vector oldorg;
oldorg = self.origin;
if(self.touch == Gib_Touch) // don't do this for the "chunk" thingie...
// TODO somehow make it spray in a direction dependent on self.angles
- trailparticles(self, particleeffectnum(strcat(species_prefix(self.cnt), "TR_SLIGHTBLOOD")), oldorg, self.origin);
+ trailparticles(self, _particleeffectnum(strcat(species_prefix(self.cnt), EFFECT_TR_SLIGHTBLOOD.eent_eff_name)), oldorg, self.origin);
else
- trailparticles(self, particleeffectnum(strcat(species_prefix(self.cnt), "TR_BLOOD")), oldorg, self.origin);
+ trailparticles(self, _particleeffectnum(strcat(species_prefix(self.cnt), EFFECT_TR_BLOOD.eent_eff_name)), oldorg, self.origin);
self.renderflags = 0;
}
void Ent_GibSplash(bool isNew)
-{
+{SELFPARAM();
int amount, type, specnum;
vector org, vel;
string specstr;
{
case 0x01:
if(!issilent)
- sound (self, CH_PAIN, "misc/gib.wav", VOL_BASE, ATTEN_NORM);
+ sound (self, CH_PAIN, SND_GIB, VOL_BASE, ATTEN_NORM);
if(prandom() < amount)
TossGib ("models/gibs/eye.md3", org, org, vel, prandomvec() * 150, specnum, 0, issilent);
- new_te_bloodshower(particleeffectnum(strcat(specstr, "bloodshower")), org, 1200, amount);
+ new_te_bloodshower(_particleeffectnum(strcat(specstr, "bloodshower")), org, 1200, amount);
if(prandom() < amount)
TossGib ("models/gibs/bloodyskull.md3", org, org + 16 * prandomvec(), vel, prandomvec() * 100, specnum, 0, issilent);
}
break;
case 0x02:
- pointparticles(particleeffectnum(strcat(specstr, "blood")), org, vel, amount * 16);
+ pointparticles(_particleeffectnum(strcat(specstr, "blood")), org, vel, amount * 16);
break;
case 0x03:
if(prandom() < amount)
TossGib ("models/gibs/chunk.mdl", org, org, vel, prandomvec() * (prandom() * 30 + 20), specnum, 1, issilent); // TODO maybe adjust to more randomization?
break;
case 0x81:
- pointparticles(particleeffectnum(strcat(gentle_prefix, "damage_dissolve")), org, vel, amount);
+ pointparticles(_particleeffectnum(strcat(gentle_prefix, "damage_dissolve")), org, vel, amount);
break;
case 0x82:
- pointparticles(particleeffectnum(strcat(gentle_prefix, "damage_hit")), org, vel, amount * 16);
+ pointparticles(_particleeffectnum(strcat(gentle_prefix, "damage_hit")), org, vel, amount * 16);
break;
case 0x83:
// no gibs in gentle mode, sorry
break;
}
}
-
-void GibSplash_Precache()
-{
- precache_model("models/gibs/chunk.mdl");
- precache_model("models/gibs/leg1.md3");
- precache_model("models/gibs/leg2.md3");
- precache_model("models/gibs/chest.md3");
- precache_model("models/gibs/smallchest.md3");
- precache_model("models/gibs/arm.md3");
- precache_model("models/gibs/bloodyskull.md3");
- precache_model("models/gibs/eye.md3");
-
- precache_model("models/gibs/robo.md3");
- precache_model("models/gibs/robo1.md3");
- precache_model("models/gibs/robo2.md3");
- precache_model("models/gibs/robo3.md3");
- precache_model("models/gibs/robo4.md3");
- precache_model("models/gibs/robo5.md3");
- precache_model("models/gibs/robo6.md3");
- precache_model("models/gibs/robo7.md3");
- precache_model("models/gibs/robo8.md3");
-
- precache_sound ("misc/gib.wav");
- precache_sound ("misc/gib_splat01.wav");
- precache_sound ("misc/gib_splat02.wav");
- precache_sound ("misc/gib_splat03.wav");
- precache_sound ("misc/gib_splat04.wav");
-}