Merge branch 'ark-arrow' into 'master'

Ark Arrows

See merge request KartKrew/Kart!1402
This commit is contained in:
James R 2023-08-16 06:04:21 +00:00
commit a3ced9240f
9 changed files with 222 additions and 160 deletions

View file

@ -4000,39 +4000,49 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi
"S_LAMPPOST",
"S_MOSSYTREE",
// Lost Colony symbol signs
"S_SYMBOL_0",
"S_SYMBOL_1",
"S_SYMBOL_2",
"S_SYMBOL_3",
"S_SYMBOL_4",
"S_SYMBOL_5",
"S_SYMBOL_6",
"S_SYMBOL_7",
"S_SYMBOL_8",
"S_SYMBOL_9",
"S_SYMBOL_A",
"S_SYMBOL_B",
"S_SYMBOL_C",
"S_SYMBOL_D",
"S_SYMBOL_E",
"S_SYMBOL_F",
"S_SYMBOL_G",
"S_SYMBOL_H",
"S_SYMBOL_I",
"S_SYMBOL_J",
"S_SYMBOL_K",
"S_SYMBOL_L",
"S_SYMBOL_M",
"S_SYMBOL_N",
"S_SYMBOL_O",
"S_SYMBOL_P",
"S_SYMBOL_Q",
"S_SYMBOL_R",
"S_SYMBOL_S",
"S_SYMBOL_T",
"S_SYMBOL_U",
"S_SYMBOL_V",
// Ark Arrows
"S_ARKARROW_0",
"S_ARKARROW_1",
"S_ARKARROW_2",
"S_ARKARROW_3",
"S_ARKARROW_4",
"S_ARKARROW_5",
"S_ARKARROW_6",
"S_ARKARROW_7",
"S_ARKARROW_8",
"S_ARKARROW_9",
"S_ARKARROW_10",
"S_ARKARROW_11",
"S_ARKARROW_12",
"S_ARKARROW_13",
"S_ARKARROW_14",
"S_ARKARROW_15",
"S_ARKARROW_16",
"S_ARKARROW_17",
"S_ARKARROW_18",
"S_ARKARROW_19",
"S_ARKARROW_20",
"S_ARKARROW_21",
"S_ARKARROW_22",
"S_ARKARROW_23",
"S_ARKARROW_24",
"S_ARKARROW_25",
"S_ARKARROW_26",
"S_ARKARROW_27",
"S_ARKARROW_28",
"S_ARKARROW_29",
"S_ARKARROW_30",
"S_ARKARROW_31",
"S_ARKARROW_32",
"S_ARKARROW_33",
"S_ARKARROW_34",
"S_ARKARROW_35",
"S_ARKARROW_36",
"S_ARKARROW_37",
"S_ARKARROW_38",
"S_ARKARROW_39",
"S_ARKARROW_40",
"S_ARKARROW_41",
"S_BUMP1",
"S_BUMP2",
@ -5601,7 +5611,7 @@ const char *const MOBJTYPE_LIST[] = { // array length left dynamic for sanity t
"MT_LAMPPOST",
"MT_MOSSYTREE",
"MT_SYMBOL",
"MT_ARKARROW", // Ark Arrows
"MT_BUMP",

View file

@ -646,7 +646,7 @@ char sprnames[NUMSPRITES + 1][5] =
"CRAB", // Crystal Abyss mobs
"BRNG", // Chaotix Big Ring
// Lost Colony symbol signs
// Ark Arrows
"SYM0",
"SYM1",
"SYM2",
@ -679,6 +679,16 @@ char sprnames[NUMSPRITES + 1][5] =
"SYMT",
"SYMU",
"SYMV",
"SYMW",
"SYMX",
"SYMY",
"SYMZ",
"ARK0",
"ARK1",
"ARK2",
"ARK3",
"ARK4",
"ARK5",
"BUMP", // Player/shell bump
"FLEN", // Shell hit graphics stuff
@ -4687,39 +4697,49 @@ state_t states[NUMSTATES] =
{SPR_CRAB, 10, -1, {NULL}, 0, 0, S_NULL}, // S_LAMPPOST
{SPR_CRAB, 11, -1, {NULL}, 0, 0, S_NULL}, // S_MOSSYTREE
// Lost Colony symbol signs
{SPR_SYM0, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_0
{SPR_SYM1, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_1
{SPR_SYM2, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_2
{SPR_SYM3, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_3
{SPR_SYM4, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_4
{SPR_SYM5, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_5
{SPR_SYM6, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_6
{SPR_SYM7, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_7
{SPR_SYM8, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_8
{SPR_SYM9, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_9
{SPR_SYMA, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_A
{SPR_SYMB, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_B
{SPR_SYMC, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_C
{SPR_SYMD, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_D
{SPR_SYME, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_E
{SPR_SYMF, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_F
{SPR_SYMG, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_G
{SPR_SYMH, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_H
{SPR_SYMI, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_I
{SPR_SYMJ, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_J
{SPR_SYMK, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_K
{SPR_SYML, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_L
{SPR_SYMM, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_M
{SPR_SYMN, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_N
{SPR_SYMO, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_O
{SPR_SYMP, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_P
{SPR_SYMQ, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_Q
{SPR_SYMR, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_R
{SPR_SYMS, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_S
{SPR_SYMT, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_T
{SPR_SYMU, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_U
{SPR_SYMV, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_SYMBOL_V
// Ark Arrows
{SPR_SYM0, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_0
{SPR_SYM1, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_1
{SPR_SYM2, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_2
{SPR_SYM3, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_3
{SPR_SYM4, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_4
{SPR_SYM5, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_5
{SPR_SYM6, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_6
{SPR_SYM7, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_7
{SPR_SYM8, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_8
{SPR_SYM9, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_9
{SPR_SYMA, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_10
{SPR_SYMB, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_11
{SPR_SYMC, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_12
{SPR_SYMD, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_13
{SPR_SYME, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_14
{SPR_SYMF, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_15
{SPR_SYMG, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_16
{SPR_SYMH, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_17
{SPR_SYMI, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_18
{SPR_SYMJ, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_19
{SPR_SYMK, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_20
{SPR_SYML, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_21
{SPR_SYMM, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_22
{SPR_SYMN, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_23
{SPR_SYMO, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_24
{SPR_SYMP, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_25
{SPR_SYMQ, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_26
{SPR_SYMR, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_27
{SPR_SYMS, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_28
{SPR_SYMT, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_29
{SPR_SYMU, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_30
{SPR_SYMV, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_31
{SPR_SYMW, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_32
{SPR_SYMX, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_33
{SPR_SYMY, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_34
{SPR_SYMZ, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_35
{SPR_ARK0, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_36
{SPR_ARK1, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_37
{SPR_ARK2, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_38
{SPR_ARK3, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_39
{SPR_ARK4, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_40
{SPR_ARK5, FF_ANIMATE|FF_PAPERSPRITE, -1, {NULL}, 15, 2, S_NULL}, // S_ARKARROW_41
{SPR_BUMP, FF_FULLBRIGHT, 3, {NULL}, 0, 0, S_BUMP2}, // S_BUMP1
{SPR_BUMP, FF_FULLBRIGHT|1, 3, {NULL}, 0, 0, S_BUMP3}, // S_BUMP2
@ -26355,9 +26375,9 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
S_NULL // raisestate
},
{ // MT_SYMBOL
{ // MT_ARKARROW
4094, // doomednum
S_SYMBOL_0, // spawnstate
S_ARKARROW_0, // spawnstate
1000, // spawnhealth
S_NULL, // seestate
sfx_None, // seesound

View file

@ -1199,7 +1199,7 @@ typedef enum sprite
SPR_CRAB, // Crystal Abyss mobs
SPR_BRNG, // Chaotix Big Ring
// Lost Colony symbol signs
// Ark Arrows
SPR_SYM0,
SPR_SYM1,
SPR_SYM2,
@ -1232,6 +1232,17 @@ typedef enum sprite
SPR_SYMT,
SPR_SYMU,
SPR_SYMV,
SPR_SYMW,
SPR_SYMX,
SPR_SYMY,
SPR_SYMZ,
SPR_ARK0,
SPR_ARK1,
SPR_ARK2,
SPR_ARK3,
SPR_ARK4,
SPR_ARK5,
SPR_BUMP, // Player/shell bump
SPR_FLEN, // Shell hit graphics stuff
@ -5142,39 +5153,49 @@ typedef enum state
S_LAMPPOST,
S_MOSSYTREE,
// Lost Colony symbol signs
S_SYMBOL_0,
S_SYMBOL_1,
S_SYMBOL_2,
S_SYMBOL_3,
S_SYMBOL_4,
S_SYMBOL_5,
S_SYMBOL_6,
S_SYMBOL_7,
S_SYMBOL_8,
S_SYMBOL_9,
S_SYMBOL_A,
S_SYMBOL_B,
S_SYMBOL_C,
S_SYMBOL_D,
S_SYMBOL_E,
S_SYMBOL_F,
S_SYMBOL_G,
S_SYMBOL_H,
S_SYMBOL_I,
S_SYMBOL_J,
S_SYMBOL_K,
S_SYMBOL_L,
S_SYMBOL_M,
S_SYMBOL_N,
S_SYMBOL_O,
S_SYMBOL_P,
S_SYMBOL_Q,
S_SYMBOL_R,
S_SYMBOL_S,
S_SYMBOL_T,
S_SYMBOL_U,
S_SYMBOL_V,
// Ark Arrows
S_ARKARROW_0,
S_ARKARROW_1,
S_ARKARROW_2,
S_ARKARROW_3,
S_ARKARROW_4,
S_ARKARROW_5,
S_ARKARROW_6,
S_ARKARROW_7,
S_ARKARROW_8,
S_ARKARROW_9,
S_ARKARROW_10,
S_ARKARROW_11,
S_ARKARROW_12,
S_ARKARROW_13,
S_ARKARROW_14,
S_ARKARROW_15,
S_ARKARROW_16,
S_ARKARROW_17,
S_ARKARROW_18,
S_ARKARROW_19,
S_ARKARROW_20,
S_ARKARROW_21,
S_ARKARROW_22,
S_ARKARROW_23,
S_ARKARROW_24,
S_ARKARROW_25,
S_ARKARROW_26,
S_ARKARROW_27,
S_ARKARROW_28,
S_ARKARROW_29,
S_ARKARROW_30,
S_ARKARROW_31,
S_ARKARROW_32,
S_ARKARROW_33,
S_ARKARROW_34,
S_ARKARROW_35,
S_ARKARROW_36,
S_ARKARROW_37,
S_ARKARROW_38,
S_ARKARROW_39,
S_ARKARROW_40,
S_ARKARROW_41,
S_BUMP1,
S_BUMP2,
@ -6778,7 +6799,7 @@ typedef enum mobj_type
MT_LAMPPOST,
MT_MOSSYTREE,
MT_SYMBOL, // Lost Colony symbol signs
MT_ARKARROW, // Ark Arrows
MT_BUMP,

View file

@ -183,10 +183,10 @@ void Obj_BattleUFOBeamThink(mobj_t *beam);
void Obj_SpawnPowerUpAura(player_t* player);
void Obj_PowerUpAuraThink(mobj_t* mobj);
/* Lost Colony symbol signs */
void Obj_SymbolSpawn(mobj_t *mobj);
void Obj_SymbolSetup(mobj_t *mobj, mapthing_t *mthing);
void Obj_SymbolThink(mobj_t *mobj);
/* Ark Arrows */
void Obj_ArkArrowSpawn(mobj_t *mobj);
void Obj_ArkArrowSetup(mobj_t *mobj, mapthing_t *mthing);
void Obj_ArkArrowThink(mobj_t *mobj);
/* Dash Rings */
void Obj_RegularDashRingSpawn(mobj_t *mobj);

View file

@ -24,7 +24,7 @@ target_sources(SRB2SDL2 PRIVATE
super-flicky.cpp
battle-ufo.cpp
powerup-aura.cpp
symbol.c
ark-arrow.c
dash-rings.c
sneaker-panel.c
emerald.c

49
src/objects/ark-arrow.c Normal file
View file

@ -0,0 +1,49 @@
#include "../p_local.h"
#include "../k_objects.h"
#define ARKARROW_SCALE (2<<FRACBITS)
#define ARKARROW_ZOFFSET (19<<FRACBITS)
#define ARKARROW_BOBRANGE (64<<FRACBITS)
#define ARKARROW_BOBSPEED (5<<FRACBITS)
#define ARKARROW_OPTIONS 42
void Obj_ArkArrowSpawn(mobj_t *mobj)
{
mobj->extravalue1 = mobj->z;
mobj->extravalue2 = FixedMul(mobj->x + mobj->y, mapobjectscale);
}
void Obj_ArkArrowSetup(mobj_t *mobj, mapthing_t *mthing)
{
const fixed_t oldHeight = mobj->height;
statenum_t stateNum = mobj->info->spawnstate + mthing->args[0];
if (stateNum - mobj->info->spawnstate >= ARKARROW_OPTIONS)
{
CONS_Alert(CONS_WARNING, "Ark Arrow with symbol ID %d is larger than maximum symbol ID (%d)!\n", stateNum, ARKARROW_OPTIONS - 1);
stateNum = mobj->info->spawnstate;
}
mobj->angle += ANGLE_90;
P_SetScale(mobj, mobj->destscale = 4 * FixedMul(mobj->scale, ARKARROW_SCALE));
mobj->z += 4 * FixedMul(mapobjectscale, ARKARROW_ZOFFSET) * P_MobjFlip(mobj);
if (mthing->options & MTF_OBJECTFLIP)
{
mobj->z += oldHeight - mobj->height;
}
mobj->extravalue1 = mobj->old_z = mobj->z;
P_SetMobjState(mobj, stateNum);
}
void Obj_ArkArrowThink(mobj_t *mobj)
{
fixed_t offset = FixedMul(mapobjectscale,
FixedMul(ARKARROW_BOBRANGE,
FixedMul(FINESINE(FixedAngle(leveltime * ARKARROW_BOBSPEED + mobj->extravalue2) >> ANGLETOFINESHIFT) + FRACUNIT, FRACUNIT >> 1)
)
);
mobj->z = mobj->extravalue1 + P_MobjFlip(mobj) * offset;
}

View file

@ -1,43 +0,0 @@
#include "../p_local.h"
#include "../k_objects.h"
#define SYMBOL_SCALE (2<<FRACBITS)
#define SYMBOL_ZOFFSET (19<<FRACBITS)
#define SYMBOL_BOBRANGE (64<<FRACBITS)
#define SYMBOL_BOBSPEED (5<<FRACBITS)
#define SYMBOL_OPTIONS 32
void Obj_SymbolSpawn(mobj_t *mobj)
{
mobj->extravalue1 = mobj->z;
mobj->extravalue2 = FixedMul(mobj->x + mobj->y, mapobjectscale);
}
void Obj_SymbolSetup(mobj_t *mobj, mapthing_t *mthing)
{
fixed_t oldHeight = mobj->height;
statenum_t stateNum = mobj->info->spawnstate + (mthing->args[0] % SYMBOL_OPTIONS);
mobj->angle += ANGLE_90;
P_SetScale(mobj, mobj->destscale = 4 * FixedMul(mobj->scale, SYMBOL_SCALE));
mobj->z += 4 * FixedMul(mapobjectscale, SYMBOL_ZOFFSET) * P_MobjFlip(mobj);
if (mthing->options & MTF_OBJECTFLIP)
{
mobj->z += oldHeight - mobj->height;
}
mobj->extravalue1 = mobj->old_z = mobj->z;
P_SetMobjState(mobj, stateNum);
}
void Obj_SymbolThink(mobj_t *mobj)
{
fixed_t offset = FixedMul(mapobjectscale,
FixedMul(SYMBOL_BOBRANGE,
FixedMul(FINESINE(FixedAngle(leveltime * SYMBOL_BOBSPEED + mobj->extravalue2) >> ANGLETOFINESHIFT) + FRACUNIT, FRACUNIT >> 1)
)
);
mobj->z = mobj->extravalue1 + P_MobjFlip(mobj) * offset;
}

View file

@ -6716,8 +6716,8 @@ static void P_MobjSceneryThink(mobj_t *mobj)
return;
}
break;
case MT_SYMBOL:
Obj_SymbolThink(mobj);
case MT_ARKARROW:
Obj_ArkArrowThink(mobj);
break;
case MT_VWREF:
case MT_VWREB:
@ -10960,8 +10960,8 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
case MT_BATTLEUFO:
Obj_SpawnBattleUFOLegs(mobj);
break;
case MT_SYMBOL:
Obj_SymbolSpawn(mobj);
case MT_ARKARROW:
Obj_ArkArrowSpawn(mobj);
break;
case MT_DASHRING:
Obj_RegularDashRingSpawn(mobj);
@ -13543,9 +13543,9 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
Obj_LinkBattleUFOSpawner(mobj);
break;
}
case MT_SYMBOL:
case MT_ARKARROW:
{
Obj_SymbolSetup(mobj, mthing);
Obj_ArkArrowSetup(mobj, mthing);
break;
}
case MT_DASHRING:

View file

@ -7250,13 +7250,18 @@ static void P_ConvertBinaryThingTypes(void)
case CEILING_SLOPE_THING:
mapthings[i].args[0] = mapthings[i].extrainfo;
break;
case 4094: // MT_SYMBOL
case 4094: // MT_ARKARROW
mapthings[i].args[0] = mapthings[i].extrainfo;
if (mapthings[i].options & MTF_OBJECTSPECIAL)
{
// Special = add 16 to the symbol type
mapthings[i].args[0] += 16;
}
if (mapthings[i].options & MTF_AMBUSH)
{
// Ambush = add 32 to the symbol type
mapthings[i].args[0] += 32;
}
break;
default:
break;