Hardcoded wood debris

This commit is contained in:
MascaraSnake 2019-06-09 12:27:09 +02:00
parent 7b603f4ac8
commit ca4ab06abf
5 changed files with 66 additions and 0 deletions

View File

@ -2395,6 +2395,7 @@ static actionpointer_t actionpointers[] =
{{A_Boss5BombExplode}, "A_BOSS5BOMBEXPLODE"},
{{A_DustDevilThink}, "A_DUSTDEVILTHINK"},
{{A_TNTExplode}, "A_TNTEXPLODE"},
{{A_DebrisRandom}, "A_DEBRISRANDOM"},
{{NULL}, "NONE"},
// This NULL entry must be the last in the list
@ -7055,6 +7056,8 @@ static const char *const STATE_LIST[] = { // array length left dynamic for sanit
"S_DUST3",
"S_DUST4",
"S_WOODDEBRIS",
"S_ROCKSPAWN",
"S_ROCKCRUMBLEA",
@ -7749,6 +7752,7 @@ static const char *const MOBJTYPE_LIST[] = { // array length left dynamic for s
"MT_EXPLODE", // Robot Explosion
"MT_UWEXPLODE", // Underwater Explosion
"MT_DUST",
"MT_WOODDEBRIS",
"MT_ROCKSPAWNER",
"MT_FALLINGROCK",
"MT_ROCKCRUMBLE1",

View File

@ -548,6 +548,7 @@ light_t *t_lspr[NUMSPRITES] =
&lspr[SUPERSPARK_L], // SPR_BOM3
&lspr[NOLIGHT], // SPR_BOM4
&lspr[REDBALL_L], // SPR_BMNB
&lspr[NOLIGHT], // SPR_WDDB
// Crumbly rocks
&lspr[NOLIGHT], // SPR_ROIA

View File

@ -443,6 +443,7 @@ char sprnames[NUMSPRITES + 1][5] =
"BOM3", // Boss Explosion 2
"BOM4", // Underwater Explosion
"BMNB", // Mine Explosion
"WDDB", // Wood Debris
// Crumbly rocks
"ROIA",
@ -3758,6 +3759,8 @@ state_t states[NUMSTATES] =
{SPR_DUST, 2|FF_TRANS60, 3, {NULL}, 0, 0, S_DUST4}, // S_DUST3
{SPR_DUST, 3|FF_TRANS70, 2, {NULL}, 0, 0, S_NULL}, // S_DUST4
{SPR_WDDB, FF_ANIMATE, -1, {A_DebrisRandom}, 7, 2, S_NULL}, // S_WOODDEBRIS
{SPR_NULL, 0, 1, {A_RockSpawn}, 0, 0, S_ROCKSPAWN}, // S_ROCKSPAWN
{SPR_ROIA, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 4, 2, S_NULL}, // S_ROCKCRUMBLEA
@ -18860,6 +18863,33 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_WOODDEBRIS
-1, // doomednum
S_WOODDEBRIS, // spawnstate
1, // 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
16*FRACUNIT, // radius
16*FRACUNIT, // height
0, // display offset
100, // mass
0, // damage
sfx_None, // activesound
MF_NOBLOCKMAP|MF_NOCLIPTHING|MF_RUNSPAWNFUNC|MF_NOCLIPHEIGHT, // flags
S_NULL // raisestate
},
{ // MT_ROCKSPAWNER
1202, // doomednum
S_ROCKSPAWN, // spawnstate

View File

@ -253,6 +253,7 @@ void A_LookForBetter();
void A_Boss5BombExplode();
void A_DustDevilThink();
void A_TNTExplode();
void A_DebrisRandom();
// ratio of states to sprites to mobj types is roughly 6 : 1 : 1
#define NUMMOBJFREESLOTS 256
@ -676,6 +677,7 @@ typedef enum sprite
SPR_BOM3, // Boss Explosion 2
SPR_BOM4, // Underwater Explosion
SPR_BMNB, // Mine Explosion
SPR_WDDB, // Wood Debris
// Crumbly rocks
SPR_ROIA,
@ -3807,6 +3809,8 @@ typedef enum state
S_DUST3,
S_DUST4,
S_WOODDEBRIS,
S_ROCKSPAWN,
S_ROCKCRUMBLEA,
@ -4521,6 +4525,7 @@ typedef enum mobj_type
MT_EXPLODE, // Robot Explosion
MT_UWEXPLODE, // Underwater Explosion
MT_DUST,
MT_WOODDEBRIS,
MT_ROCKSPAWNER,
MT_FALLINGROCK,
MT_ROCKCRUMBLE1,

View File

@ -282,6 +282,7 @@ void A_LookForBetter(mobj_t *actor);
void A_Boss5BombExplode(mobj_t *actor);
void A_DustDevilThink(mobj_t *actor);
void A_TNTExplode(mobj_t *actor);
void A_DebrisRandom(mobj_t *actor);
//for p_enemy.c
//
@ -12778,4 +12779,29 @@ void A_TNTExplode(mobj_t *actor)
}
actor->destscale *= 4;
}
// Function: A_DebrisRandom
//
// Description: Randomizes debris frame and movement.
//
// var1 = Frame range.
// var2 = unused
//
void A_DebrisRandom(mobj_t *actor)
{
INT32 locvar1 = var1;
//INT32 locvar2 = var2;
#ifdef HAVE_BLUA
if (LUA_CallAction("A_DebrisRandom", actor))
return;
#endif
actor->frame |= P_RandomRange(0, locvar1);
var1 = 0;
var2 = 359;
A_ChangeAngleAbsolute(actor);
P_Thrust(actor, actor->angle, FRACUNIT * 2);
}