summaryrefslogtreecommitdiff
path: root/src/fpsgame
diff options
context:
space:
mode:
authorxolatile2025-08-03 19:29:58 +0200
committerxolatile2025-08-03 19:29:58 +0200
commit9d533fa4d82935a083ff93a09aed95baea9fbfd4 (patch)
treecbdae0db5551d64b7234cc8c604427696e391e6a /src/fpsgame
parent5e6e01e66378261a075bbc9730c9287874b8c3bd (diff)
downloadxolatile-badassbug-9d533fa4d82935a083ff93a09aed95baea9fbfd4.tar.xz
xolatile-badassbug-9d533fa4d82935a083ff93a09aed95baea9fbfd4.tar.zst
Bunch of stuff...
Diffstat (limited to 'src/fpsgame')
-rw-r--r--src/fpsgame/fps.cpp10
-rw-r--r--src/fpsgame/game.h10
-rw-r--r--src/fpsgame/weapon.cpp97
3 files changed, 61 insertions, 56 deletions
diff --git a/src/fpsgame/fps.cpp b/src/fpsgame/fps.cpp
index 37777cb..6a72335 100644
--- a/src/fpsgame/fps.cpp
+++ b/src/fpsgame/fps.cpp
@@ -405,11 +405,11 @@ namespace game
{
d->state = CS_DEAD;
d->lastpain = lastmillis;
- if(!restore)
- {
- gibeffect(max(-d->health, 0), d->vel, d);
- d->deaths++;
- }
+ if(!restore) d->deaths++;
+ //~{
+ //~gibeffect(max(-d->health, 0), d->vel, d);
+ //~d->deaths++;
+ //~}
if(d==player1)
{
if(deathscore) showscores(true);
diff --git a/src/fpsgame/game.h b/src/fpsgame/game.h
index ad102f1..4a09d3f 100644
--- a/src/fpsgame/game.h
+++ b/src/fpsgame/game.h
@@ -263,11 +263,11 @@ static const struct guninfo {
} guns[NUMGUNS] = {
// delay| dmg| spr| spd| kck| rng| ray| pus| exp|
{ S_PUNCH1, 100, 30, 0, 0, 0, 30, 1, 80, 0, 0, "fist", "fist", 0 },
- { S_SG, 1000, 20, 280, 0, 20, 1024, MAXRAYS, 80, 0, 0, "shotgun", "shotg", 0 },
+ { S_SG, 1000, 20, 280, 0, 20, 1024, MAXRAYS, 100, 0, 0, "shotgun", "shotg", 0 },
{ S_CG, 100, 20, 70, 0, 10, 1024, 1, 80, 0, 0, "chaingun", "chaing", 0 },
- { S_RLFIRE, 800, 120, 0, 270, 10, 1024, 1, 160, 40, 0, "rocketlauncher", "rocket", 0 },
- { S_RIFLE, 1200, 120, 0, 0, 30, 2048, 1, 80, 0, 0, "rifle", "rifle", 0 },
- { S_FLAUNCH, 600, 90, 0, 300, 20, 1024, 1, 250, 45, 1500, "grenadelauncher", "gl", 0 },
+ { S_RLFIRE, 800, 120, 0, 270, 10, 1024, 1, 240, 40, 0, "rocketlauncher", "rocket", 0 },
+ { S_RIFLE, 1200, 120, 0, 0, 30, 2048, 1, 120, 0, 0, "rifle", "rifle", 0 },
+ { S_FLAUNCH, 600, 90, 0, 300, 20, 1024, 1, 160, 45, 1500, "grenadelauncher", "gl", 0 },
{ S_PISTOL, 400, 60, 110, 0, 10, 1024, 1, 80, 0, 0, "pistol", "pistol", 0 },
};
@@ -666,7 +666,7 @@ namespace game
extern void explode(bool local, fpsent *owner, const vec &v, dynent *safe, int dam, int gun);
extern void explodeeffects(int gun, fpsent *d, bool local, int id = 0);
extern void damageeffect(int damage, fpsent *d, bool thirdperson = true);
- extern void gibeffect(int damage, const vec &vel, fpsent *d);
+ //~extern void gibeffect(int damage, const vec &vel, fpsent *d);
extern float intersectdist;
extern bool intersect(dynent *d, const vec &from, const vec &to, float &dist = intersectdist);
extern dynent *intersectclosest(const vec &from, const vec &to, fpsent *at, float &dist = intersectdist);
diff --git a/src/fpsgame/weapon.cpp b/src/fpsgame/weapon.cpp
index f516c2e..6ade009 100644
--- a/src/fpsgame/weapon.cpp
+++ b/src/fpsgame/weapon.cpp
@@ -13,7 +13,7 @@ namespace game
};
vector<hitmsg> hits;
- VARP(maxdebris, 10, 25, 1000);
+ //~VARP(maxdebris, 10, 25, 1000);
ICOMMAND(getweapon, "", (), intret(player1->gunselect));
@@ -133,7 +133,8 @@ namespace game
loopi(guns[gun].rays) offsetray(from, to, guns[gun].spread, guns[gun].range, rays[i]);
}
- enum { BNC_GRENADE, BNC_GIBS, BNC_DEBRIS };
+ //~enum { BNC_GRENADE, BNC_GIBS, BNC_DEBRIS };
+ enum { BNC_GRENADE };
struct bouncer : physent
{
@@ -180,7 +181,8 @@ namespace game
{
bouncer &bnc = *bouncers.add(new bouncer);
bnc.o = from;
- bnc.radius = bnc.xradius = bnc.yradius = type==BNC_DEBRIS ? 0.5f : 1.5f;
+ //~bnc.radius = bnc.xradius = bnc.yradius = type==BNC_DEBRIS ? 0.5f : 1.5f;
+ bnc.radius = bnc.xradius = bnc.yradius = 1.5f;
bnc.eyeheight = bnc.radius;
bnc.aboveeye = bnc.radius;
bnc.lifetime = lifetime;
@@ -190,12 +192,14 @@ namespace game
bnc.id = local ? lastmillis : id;
if(light) bnc.light = *light;
- switch(type)
- {
- case BNC_GRENADE: bnc.collidetype = COLLIDE_ELLIPSE_PRECISE; break;
- case BNC_DEBRIS: bnc.variant = rnd(4); break;
- case BNC_GIBS: bnc.variant = rnd(3); break;
- }
+ bnc.collidetype = COLLIDE_ELLIPSE_PRECISE;
+
+ //~switch(type)
+ //~{
+ //~case BNC_GRENADE: bnc.collidetype = COLLIDE_ELLIPSE_PRECISE; break;
+ //~case BNC_DEBRIS: bnc.variant = rnd(4); break;
+ //~case BNC_GIBS: bnc.variant = rnd(3); break;
+ //~}
vec dir(to);
dir.sub(from).safenormalize();
@@ -221,7 +225,8 @@ namespace game
{
if(d->type != ENT_BOUNCE) return;
bouncer *b = (bouncer *)d;
- if(b->bouncetype != BNC_GIBS || b->bounces >= 2) return;
+ //~if(b->bouncetype != BNC_GIBS || b->bounces >= 2) return;
+ if(b->bounces >= 2) return;
b->bounces++;
adddecal(DECAL_BLOOD, vec(b->o).sub(vec(surface).mul(b->radius)), surface, 2.96f/b->bounces, bvec(0x60, 0xFF, 0xFF), rnd(4));
}
@@ -239,16 +244,16 @@ namespace game
vec old(bnc.o);
bool stopped = false;
if(bnc.bouncetype==BNC_GRENADE) stopped = bounce(&bnc, 0.6f, 0.5f, 0.8f) || (bnc.lifetime -= time)<0;
- else
- {
- // cheaper variable rate physics for debris, gibs, etc.
- for(int rtime = time; rtime > 0;)
- {
- int qtime = min(30, rtime);
- rtime -= qtime;
- if((bnc.lifetime -= qtime)<0 || bounce(&bnc, qtime/1000.0f, 0.6f, 0.5f, 1)) { stopped = true; break; }
- }
- }
+ //~else
+ //~{
+ //~// cheaper variable rate physics for debris, gibs, etc.
+ //~for(int rtime = time; rtime > 0;)
+ //~{
+ //~int qtime = min(30, rtime);
+ //~rtime -= qtime;
+ //~if((bnc.lifetime -= qtime)<0 || bounce(&bnc, qtime/1000.0f, 0.6f, 0.5f, 1)) { stopped = true; break; }
+ //~}
+ //~}
if(stopped)
{
if(bnc.bouncetype==BNC_GRENADE)
@@ -340,12 +345,12 @@ namespace game
newbouncer(p, to, true, 0, d, type, rnd(1000)+1000, rnd(100)+20, light);
}
- void gibeffect(int damage, const vec &vel, fpsent *d)
- {
- if(!blood || damage <= 0) return;
- vec from = d->abovehead();
- loopi(min(damage/25, 40)+1) spawnbouncer(from, vel, d, BNC_GIBS);
- }
+ //~void gibeffect(int damage, const vec &vel, fpsent *d)
+ //~{
+ //~if(!blood || damage <= 0) return;
+ //~vec from = d->abovehead();
+ //~loopi(min(damage/25, 40)+1) spawnbouncer(from, vel, d, BNC_GIBS);
+ //~}
void hit(int damage, dynent *d, fpsent *at, const vec &vel, int gun, float info1, int info2 = 1)
{
@@ -428,16 +433,16 @@ namespace game
if(gun==GUN_RL) adddynlight(v, 1.15f*guns[gun].exprad, vec(2, 1.5f, 1), 700, 100, 0, guns[gun].exprad/2, vec(1, 0.75f, 0.5f));
else if(gun==GUN_GL) adddynlight(v, 1.15f*guns[gun].exprad, vec(0.5f, 1.5f, 2), 600, 100, 0, 8, vec(0.25f, 1, 1));
else adddynlight(v, 1.15f*guns[gun].exprad, vec(2, 1.5f, 1), 700, 100);
- int numdebris = rnd(maxdebris-5)+5;
- vec debrisvel = vec(owner->o).sub(v).safenormalize(), debrisorigin(v);
- if(gun==GUN_RL) debrisorigin.add(vec(debrisvel).mul(8));
- if(numdebris)
- {
- entitylight light;
- lightreaching(debrisorigin, light.color, light.dir);
- loopi(numdebris)
- spawnbouncer(debrisorigin, debrisvel, owner, BNC_DEBRIS, &light);
- }
+ //~int numdebris = rnd(maxdebris-5)+5;
+ //~vec debrisvel = vec(owner->o).sub(v).safenormalize(), debrisorigin(v);
+ //~if(gun==GUN_RL) debrisorigin.add(vec(debrisvel).mul(8));
+ //~if(numdebris)
+ //~{
+ //~entitylight light;
+ //~lightreaching(debrisorigin, light.color, light.dir);
+ //~loopi(numdebris)
+ //~spawnbouncer(debrisorigin, debrisvel, owner, BNC_DEBRIS, &light);
+ //~}
if(!local) return;
int numdyn = numdynents();
loopi(numdyn)
@@ -836,14 +841,14 @@ namespace game
}
static const char * const projnames[2] = { "projectiles/grenade", "projectiles/rocket" };
- static const char * const gibnames[3] = { "gibs/gib01", "gibs/gib02", "gibs/gib03" };
- static const char * const debrisnames[4] = { "debris/debris01", "debris/debris02", "debris/debris03", "debris/debris04" };
+ //~static const char * const gibnames[3] = { "gibs/gib01", "gibs/gib02", "gibs/gib03" };
+ //~static const char * const debrisnames[4] = { "debris/debris01", "debris/debris02", "debris/debris03", "debris/debris04" };
void preloadbouncers()
{
loopi(sizeof(projnames)/sizeof(projnames[0])) preloadmodel(projnames[i]);
- loopi(sizeof(gibnames)/sizeof(gibnames[0])) preloadmodel(gibnames[i]);
- loopi(sizeof(debrisnames)/sizeof(debrisnames[0])) preloadmodel(debrisnames[i]);
+ //~loopi(sizeof(gibnames)/sizeof(gibnames[0])) preloadmodel(gibnames[i]);
+ //~loopi(sizeof(debrisnames)/sizeof(debrisnames[0])) preloadmodel(debrisnames[i]);
}
void renderbouncers()
@@ -870,12 +875,12 @@ namespace game
int cull = MDL_CULL_VFC|MDL_CULL_DIST|MDL_CULL_OCCLUDED;
float fade = 1;
if(bnc.lifetime < 250) fade = bnc.lifetime/250.0f;
- switch(bnc.bouncetype)
- {
- case BNC_GIBS: mdl = gibnames[bnc.variant]; cull |= MDL_LIGHT|MDL_LIGHT_FAST|MDL_DYNSHADOW; break;
- case BNC_DEBRIS: mdl = debrisnames[bnc.variant]; break;
- default: continue;
- }
+ //~switch(bnc.bouncetype)
+ //~{
+ //~case BNC_GIBS: mdl = gibnames[bnc.variant]; cull |= MDL_LIGHT|MDL_LIGHT_FAST|MDL_DYNSHADOW; break;
+ //~case BNC_DEBRIS: mdl = debrisnames[bnc.variant]; break;
+ //~default: continue;
+ //~}
rendermodel(&bnc.light, mdl, ANIM_MAPMODEL|ANIM_LOOP, pos, yaw, pitch, cull, NULL, NULL, 0, 0, fade);
}
}