mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-09 18:31:53 +00:00
hardcode ring vaccums
This commit is contained in:
parent
ca90d27e30
commit
12b80b392b
5 changed files with 111 additions and 0 deletions
27
src/info.c
27
src/info.c
|
|
@ -30702,6 +30702,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
MF_SOLID, // flags
|
MF_SOLID, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{ // MT_DLZ_SUCKEDRING,
|
||||||
|
-1, // doomednum
|
||||||
|
S_RING, // spawnstate
|
||||||
|
1000, // spawnhealth
|
||||||
|
S_NULL, // seestate
|
||||||
|
sfx_None, // seesound
|
||||||
|
0, // reactiontime
|
||||||
|
sfx_None, // attacksound
|
||||||
|
S_NULL, // painstate
|
||||||
|
0, // painchance
|
||||||
|
sfx_None, // painsound
|
||||||
|
S_NULL, // meleestate
|
||||||
|
S_NULL, // missilestate
|
||||||
|
S_NULL, // deathstate
|
||||||
|
S_NULL, // xdeathstate
|
||||||
|
sfx_None, // deathsound
|
||||||
|
0, // speed
|
||||||
|
32*FRACUNIT, // radius
|
||||||
|
32*FRACUNIT, // height
|
||||||
|
0, // display offset
|
||||||
|
0, // mass
|
||||||
|
0, // damage
|
||||||
|
sfx_None, // activesound
|
||||||
|
MF_NOGRAVITY, // flags
|
||||||
|
S_NULL // raisestate
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -262,6 +262,11 @@ void Obj_DLZSeasawCollide(mobj_t *mo, mobj_t *mo2);
|
||||||
void Obj_DLZHoverSpawn(mobj_t *mo);
|
void Obj_DLZHoverSpawn(mobj_t *mo);
|
||||||
void Obj_DLZHoverCollide(mobj_t *mo, mobj_t *mo2);
|
void Obj_DLZHoverCollide(mobj_t *mo, mobj_t *mo2);
|
||||||
|
|
||||||
|
/* DLZ Ring Vaccum */
|
||||||
|
void Obj_DLZRingVaccumSpawn(mobj_t *mo);
|
||||||
|
void Obj_DLZRingVaccumCollide(mobj_t *mo, mobj_t *mo2);
|
||||||
|
void Obj_DLZSuckedRingThink(mobj_t *mo);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ void Obj_DLZHoverSpawn(mobj_t *mo)
|
||||||
mo->destscale = mapobjectscale*4;
|
mo->destscale = mapobjectscale*4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// collision between MT_PLAYER and hover
|
||||||
void Obj_DLZHoverCollide(mobj_t *mo, mobj_t *mo2)
|
void Obj_DLZHoverCollide(mobj_t *mo, mobj_t *mo2)
|
||||||
{
|
{
|
||||||
player_t *p = mo->player;
|
player_t *p = mo->player;
|
||||||
|
|
@ -66,4 +67,67 @@ void Obj_DLZHoverCollide(mobj_t *mo, mobj_t *mo2)
|
||||||
|
|
||||||
p->lasthover = leveltime;
|
p->lasthover = leveltime;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ring Vaccum:
|
||||||
|
void Obj_DLZRingVaccumSpawn(mobj_t *mo)
|
||||||
|
{
|
||||||
|
P_SetScale(mo, mapobjectscale*4);
|
||||||
|
mo->destscale = mapobjectscale*4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// collision between MT_FLINGRING and ring vaccum
|
||||||
|
void Obj_DLZRingVaccumCollide(mobj_t *mo, mobj_t *mo2)
|
||||||
|
{
|
||||||
|
mobj_t *fake;
|
||||||
|
|
||||||
|
if (mo->z + mo->height < mo2->z)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (mo->z > mo2->z + mo2->height)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!P_IsObjectOnGround(mo) || mo->momz)
|
||||||
|
return;
|
||||||
|
|
||||||
|
fake = P_SpawnMobj(mo->x, mo->y, mo->z, MT_FLINGRING);
|
||||||
|
P_SetScale(fake, mo->scale);
|
||||||
|
fake->scalespeed = mapobjectscale/64;
|
||||||
|
fake->destscale = 1;
|
||||||
|
|
||||||
|
P_SetTarget(&fake->target, mo2);
|
||||||
|
|
||||||
|
fake->angle = R_PointToAngle2(mo2->x, mo2->y, fake->x, fake->y);
|
||||||
|
fake->movefactor = R_PointToDist2(mo2->x, mo2->y, fake->x, fake->y);
|
||||||
|
|
||||||
|
P_RemoveMobj(mo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Obj_DLZSuckedRingThink(mobj_t *mo)
|
||||||
|
{
|
||||||
|
mobj_t *t = mo->target;
|
||||||
|
fixed_t x, y;
|
||||||
|
|
||||||
|
// commit die if the target disappears for some fucking reason
|
||||||
|
if (!t || P_MobjWasRemoved(t))
|
||||||
|
{
|
||||||
|
P_RemoveMobj(mo);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
x = t->x + mo->movefactor*FINECOSINE(mo->angle>>ANGLETOFINESHIFT);
|
||||||
|
y = t->y + mo->movefactor*FINESINE(mo->angle>>ANGLETOFINESHIFT);
|
||||||
|
|
||||||
|
P_MoveOrigin(mo, x, y, mo->z);
|
||||||
|
|
||||||
|
if (mo->cusval < 24)
|
||||||
|
mo->cusval++;
|
||||||
|
|
||||||
|
mo->angle += mo->cusval*ANG1;
|
||||||
|
|
||||||
|
if (mo->cusval > 8 && mo->movefactor)
|
||||||
|
mo->movefactor -= 1;
|
||||||
|
|
||||||
|
if (mo->scale < mapobjectscale/12)
|
||||||
|
P_RemoveMobj(mo);
|
||||||
}
|
}
|
||||||
|
|
@ -758,6 +758,14 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing)
|
||||||
return BMIT_CONTINUE;
|
return BMIT_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (thing->type == MT_DLZ_RINGVACCUM)
|
||||||
|
{
|
||||||
|
if (tm.thing->type == MT_FLINGRING)
|
||||||
|
Obj_DLZRingVaccumCollide(tm.thing, thing);
|
||||||
|
|
||||||
|
return BMIT_CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
if (tm.thing->type == MT_INSTAWHIP)
|
if (tm.thing->type == MT_INSTAWHIP)
|
||||||
{
|
{
|
||||||
if (tm.thing->z > thing->z + thing->height)
|
if (tm.thing->z > thing->z + thing->height)
|
||||||
|
|
|
||||||
|
|
@ -9733,6 +9733,10 @@ static boolean P_MobjRegularThink(mobj_t *mobj)
|
||||||
Obj_DLZSeasawThink(mobj);
|
Obj_DLZSeasawThink(mobj);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MT_DLZ_SUCKEDRING:
|
||||||
|
Obj_DLZSuckedRingThink(mobj);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// check mobj against possible water content, before movement code
|
// check mobj against possible water content, before movement code
|
||||||
P_MobjCheckWater(mobj);
|
P_MobjCheckWater(mobj);
|
||||||
|
|
@ -11175,6 +11179,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
|
||||||
case MT_DLZ_HOVER:
|
case MT_DLZ_HOVER:
|
||||||
Obj_DLZHoverSpawn(mobj);
|
Obj_DLZHoverSpawn(mobj);
|
||||||
break;
|
break;
|
||||||
|
case MT_DLZ_RINGVACCUM:
|
||||||
|
Obj_DLZRingVaccumSpawn(mobj);
|
||||||
|
break;
|
||||||
case MT_SNEAKERPANEL:
|
case MT_SNEAKERPANEL:
|
||||||
Obj_SneakerPanelSpawn(mobj);
|
Obj_SneakerPanelSpawn(mobj);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue