Remove Garden Top grounded arrow

This commit is contained in:
James R 2023-02-18 22:10:58 -08:00
parent cdf19e8c79
commit ebcab0fac0
2 changed files with 7 additions and 66 deletions

View file

@ -4371,7 +4371,7 @@ state_t states[NUMSTATES] =
{SPR_GTOP, 4, 1, {NULL}, 5, 1, S_GARDENTOP_SINKING1}, // S_GARDENTOP_SINKING3 {SPR_GTOP, 4, 1, {NULL}, 5, 1, S_GARDENTOP_SINKING1}, // S_GARDENTOP_SINKING3
{SPR_GTOP, FF_ANIMATE, 100, {A_Scream}, 5, 1, S_NULL}, // S_GARDENTOP_DEAD {SPR_GTOP, FF_ANIMATE, 100, {A_Scream}, 5, 1, S_NULL}, // S_GARDENTOP_DEAD
{SPR_BDRF, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 5, 2, S_NULL}, // S_GARDENTOPSPARK {SPR_BDRF, FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 5, 2, S_NULL}, // S_GARDENTOPSPARK
{SPR_GTAR, FF_FULLBRIGHT, -1, {NULL}, 5, 2, S_NULL}, // S_GARDENTOPARROW {SPR_GTAR, FF_FULLBRIGHT|FF_PAPERSPRITE, -1, {NULL}, 5, 2, S_NULL}, // S_GARDENTOPARROW
{SPR_HYUU, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_HYUDORO {SPR_HYUU, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_HYUDORO

View file

@ -57,7 +57,6 @@ enum {
}; };
#define arrow_top(o) ((o)->target) #define arrow_top(o) ((o)->target)
#define arrow_kind(o) ((o)->reactiontime)
static inline player_t * static inline player_t *
get_rider_player (mobj_t *rider) get_rider_player (mobj_t *rider)
@ -212,47 +211,16 @@ spawn_grind_spark (mobj_t *top)
} }
} }
static mobj_t * static void
spawn_arrow spawn_arrow (mobj_t *top)
( mobj_t * top,
UINT32 ff,
UINT8 kind)
{ {
mobj_t *arrow = P_SpawnMobjFromMobj( mobj_t *arrow = P_SpawnMobjFromMobj(
top, 0, 0, 0, MT_GARDENTOPARROW); top, 0, 0, 0, MT_GARDENTOPARROW);
P_SetTarget(&arrow_top(arrow), top); P_SetTarget(&arrow_top(arrow), top);
arrow_kind(arrow) = kind;
arrow->frame |= ff; P_SetScale(arrow,
(arrow->destscale = 3 * arrow->scale / 4));
return arrow;
}
static void
spawn_arrow_pair (mobj_t *top)
{
{
mobj_t *x = spawn_arrow(top,
FF_PAPERSPRITE, ARROW_OVERHEAD);
// overhead arrow is slightly smaller
P_SetScale(x, (x->destscale = 3 * x->scale / 4));
}
{
mobj_t *x = spawn_arrow(top,
FF_FLOORSPRITE | FF_ADD, ARROW_IN_FRONT);
x->renderflags |= RF_SLOPESPLAT | RF_NOSPLATBILLBOARD;
// Let splat be flat, useful later for
// Obj_GardenTopArrowThink reverse gravity.
x->height = 0;
// Make the arrow wider (sprite length is horizontal).
x->spriteyscale = 2*FRACUNIT;
}
} }
static void static void
@ -547,24 +515,6 @@ anchor_arrow_overhead (mobj_t *arrow)
anchor(arrow, top, rider->angle + ANGLE_180, 0); anchor(arrow, top, rider->angle + ANGLE_180, 0);
} }
static void
anchor_arrow_in_front (mobj_t *arrow)
{
mobj_t *top = arrow_top(arrow);
mobj_t *rider = top_rider(top);
anchor(arrow, top, rider->angle, 2 * rider->radius);
arrow->angle += ANGLE_90;
if (P_IsObjectFlipped(arrow))
{
arrow->angle += ANGLE_180;
}
arrow->floorspriteslope = rider->standingslope;
}
void void
Obj_GardenTopDeploy (mobj_t *rider) Obj_GardenTopDeploy (mobj_t *rider)
{ {
@ -591,7 +541,7 @@ Obj_GardenTopDeploy (mobj_t *rider)
spawn_spark_circle(top, 6); spawn_spark_circle(top, 6);
spawn_arrow_pair(top); spawn_arrow(top);
} }
mobj_t * mobj_t *
@ -712,16 +662,7 @@ Obj_GardenTopArrowThink (mobj_t *arrow)
return; return;
} }
switch (arrow_kind(arrow))
{
case ARROW_OVERHEAD:
anchor_arrow_overhead(arrow); anchor_arrow_overhead(arrow);
break;
case ARROW_IN_FRONT:
anchor_arrow_in_front(arrow);
break;
}
if (rider->player) if (rider->player)
{ {