* Modified MT_SEED to have aesthetically nicer behaviour.
* Removed Soniccd command, as flicky selection involves a P_RandomKey call - this messes with replays and demos.
This commit is contained in:
parent
df88d888e6
commit
3f92a2305a
|
@ -101,7 +101,6 @@ extern consvar_t cv_recycler;
|
||||||
extern consvar_t cv_itemfinder;
|
extern consvar_t cv_itemfinder;
|
||||||
|
|
||||||
extern consvar_t cv_inttime, cv_advancemap, cv_playersforexit;
|
extern consvar_t cv_inttime, cv_advancemap, cv_playersforexit;
|
||||||
extern consvar_t cv_soniccd;
|
|
||||||
extern consvar_t cv_match_scoring;
|
extern consvar_t cv_match_scoring;
|
||||||
extern consvar_t cv_overtime;
|
extern consvar_t cv_overtime;
|
||||||
extern consvar_t cv_startinglives;
|
extern consvar_t cv_startinglives;
|
||||||
|
|
|
@ -1014,7 +1014,7 @@ static const struct {
|
||||||
{"CANARY", MT_FLICKY_16},
|
{"CANARY", MT_FLICKY_16},
|
||||||
{"a", 0}, // End of normal flickies - a lower case character so will never fastcmp valid with uppercase tmp
|
{"a", 0}, // End of normal flickies - a lower case character so will never fastcmp valid with uppercase tmp
|
||||||
//{"FLICKER", MT_FLICKER},
|
//{"FLICKER", MT_FLICKER},
|
||||||
{"SEED", MT_SEED},//MT_CDSEED},
|
{"SEED", MT_SEED},
|
||||||
{NULL, 0}
|
{NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4728,7 +4728,7 @@ void G_BeginRecording(void)
|
||||||
// Don't do it.
|
// Don't do it.
|
||||||
WRITEFIXED(demo_p, player->jumpfactor);
|
WRITEFIXED(demo_p, player->jumpfactor);
|
||||||
|
|
||||||
// Save netvar data (SONICCD, etc)
|
// Save netvar data
|
||||||
CV_SaveNetVars(&demo_p);
|
CV_SaveNetVars(&demo_p);
|
||||||
|
|
||||||
memset(&oldcmd,0,sizeof(oldcmd));
|
memset(&oldcmd,0,sizeof(oldcmd));
|
||||||
|
|
|
@ -2522,7 +2522,7 @@ state_t states[NUMSTATES] =
|
||||||
{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL}, // S_FOG14
|
{SPR_TFOG, FF_FULLBRIGHT|FF_TRANS50|13, 2, {NULL}, 0, 0, S_NULL}, // S_FOG14
|
||||||
|
|
||||||
// Flower Seed
|
// Flower Seed
|
||||||
{SPR_SEED, FF_FULLBRIGHT, -1, {NULL}, 0, 0, S_NULL}, // S_SEED
|
{SPR_SEED, FF_FULLBRIGHT|FF_ANIMATE, -1, {NULL}, 2, 2, S_NULL}, // S_SEED
|
||||||
|
|
||||||
// Particle sprite
|
// Particle sprite
|
||||||
{SPR_PRTL, FF_FULLBRIGHT|FF_TRANS70, 2*TICRATE, {NULL}, 0, 0, S_NULL}, // S_PARTICLE
|
{SPR_PRTL, FF_FULLBRIGHT|FF_TRANS70, 2*TICRATE, {NULL}, 0, 0, S_NULL}, // S_PARTICLE
|
||||||
|
@ -11867,7 +11867,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
4, // mass
|
4, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY, // flags
|
MF_NOBLOCKMAP|MF_SCENERY, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -10352,9 +10352,7 @@ mobj_t *P_InternalFlickySpawn(mobj_t *actor, mobjtype_t flickytype, fixed_t momz
|
||||||
{
|
{
|
||||||
mobj_t *flicky;
|
mobj_t *flicky;
|
||||||
|
|
||||||
if (cv_soniccd.value)
|
if (!flickytype)
|
||||||
flickytype = MT_SEED; // MT_CDSEED
|
|
||||||
else if (!flickytype)
|
|
||||||
{
|
{
|
||||||
if (!mapheaderinfo[gamemap-1] || !mapheaderinfo[gamemap-1]->numFlickies) // No mapheader, no shoes, no service.
|
if (!mapheaderinfo[gamemap-1] || !mapheaderinfo[gamemap-1]->numFlickies) // No mapheader, no shoes, no service.
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -10365,17 +10363,12 @@ mobj_t *P_InternalFlickySpawn(mobj_t *actor, mobjtype_t flickytype, fixed_t momz
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flickytype == MT_SEED) // MT_CDSEED
|
|
||||||
{
|
|
||||||
flicky = P_SpawnMobj(actor->x, actor->y, actor->z + (actor->height / 2) - FixedMul(mobjinfo[flickytype].height / 2, actor->scale), flickytype);
|
|
||||||
flicky->destscale = actor->scale;
|
|
||||||
P_SetScale(flicky, flicky->destscale);
|
|
||||||
return flicky;
|
|
||||||
}
|
|
||||||
|
|
||||||
flicky = P_SpawnMobjFromMobj(actor, 0, 0, 0, flickytype);
|
flicky = P_SpawnMobjFromMobj(actor, 0, 0, 0, flickytype);
|
||||||
flicky->angle = actor->angle;
|
flicky->angle = actor->angle;
|
||||||
|
|
||||||
|
if (flickytype == MT_SEED)
|
||||||
|
flicky->z += (actor->height - flicky->height)/2;
|
||||||
|
|
||||||
if (actor->eflags & MFE_UNDERWATER)
|
if (actor->eflags & MFE_UNDERWATER)
|
||||||
momz = FixedDiv(momz, FixedSqrt(3*FRACUNIT));
|
momz = FixedDiv(momz, FixedSqrt(3*FRACUNIT));
|
||||||
|
|
||||||
|
|
101
src/p_inter.c
101
src/p_inter.c
|
@ -2266,67 +2266,62 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
||||||
&& target->flags & MF_ENEMY)
|
&& target->flags & MF_ENEMY)
|
||||||
{
|
{
|
||||||
mobjtype_t item;
|
mobjtype_t item;
|
||||||
if (cv_soniccd.value)
|
INT32 prandom;
|
||||||
item = MT_SEED;
|
|
||||||
else
|
switch (target->type)
|
||||||
{
|
{
|
||||||
INT32 prandom;
|
case MT_REDCRAWLA:
|
||||||
|
case MT_GOLDBUZZ:
|
||||||
|
case MT_SKIM:
|
||||||
|
case MT_UNIDUS:
|
||||||
|
item = MT_FLICKY_02/*MT_BUNNY*/;
|
||||||
|
break;
|
||||||
|
|
||||||
switch (target->type)
|
case MT_BLUECRAWLA:
|
||||||
{
|
case MT_JETTBOMBER:
|
||||||
case MT_REDCRAWLA:
|
case MT_GFZFISH:
|
||||||
case MT_GOLDBUZZ:
|
item = MT_FLICKY_01/*MT_BIRD*/;
|
||||||
case MT_SKIM:
|
break;
|
||||||
case MT_UNIDUS:
|
|
||||||
item = MT_FLICKY_02/*MT_BUNNY*/;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MT_BLUECRAWLA:
|
case MT_JETTGUNNER:
|
||||||
case MT_JETTBOMBER:
|
case MT_CRAWLACOMMANDER:
|
||||||
case MT_GFZFISH:
|
case MT_REDBUZZ:
|
||||||
item = MT_FLICKY_01/*MT_BIRD*/;
|
case MT_DETON:
|
||||||
break;
|
item = MT_FLICKY_12/*MT_MOUSE*/;
|
||||||
|
break;
|
||||||
|
|
||||||
case MT_JETTGUNNER:
|
case MT_GSNAPPER:
|
||||||
case MT_CRAWLACOMMANDER:
|
case MT_EGGGUARD:
|
||||||
case MT_REDBUZZ:
|
case MT_SPRINGSHELL:
|
||||||
case MT_DETON:
|
item = MT_FLICKY_11/*MT_COW*/;
|
||||||
item = MT_FLICKY_12/*MT_MOUSE*/;
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
case MT_GSNAPPER:
|
case MT_MINUS:
|
||||||
case MT_EGGGUARD:
|
case MT_VULTURE:
|
||||||
case MT_SPRINGSHELL:
|
case MT_POINTY:
|
||||||
item = MT_FLICKY_11/*MT_COW*/;
|
case MT_YELLOWSHELL:
|
||||||
break;
|
item = MT_FLICKY_03/*MT_CHICKEN*/;
|
||||||
|
break;
|
||||||
|
|
||||||
case MT_MINUS:
|
case MT_AQUABUZZ:
|
||||||
case MT_VULTURE:
|
item = MT_FLICKY_01/*MT_REDBIRD*/;
|
||||||
case MT_POINTY:
|
break;
|
||||||
case MT_YELLOWSHELL:
|
|
||||||
item = MT_FLICKY_03/*MT_CHICKEN*/;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MT_AQUABUZZ:
|
default:
|
||||||
item = MT_FLICKY_01/*MT_REDBIRD*/;
|
if (target->info->doomednum)
|
||||||
break;
|
prandom = target->info->doomednum%5; // "Random" animal for new enemies.
|
||||||
|
else
|
||||||
|
prandom = P_RandomKey(5); // No placable object, just use a random number.
|
||||||
|
|
||||||
default:
|
switch(prandom)
|
||||||
if (target->info->doomednum)
|
{
|
||||||
prandom = target->info->doomednum%5; // "Random" animal for new enemies.
|
default: item = MT_FLICKY_02/*MT_BUNNY*/; break;
|
||||||
else
|
case 1: item = MT_FLICKY_01/*MT_BIRD*/; break;
|
||||||
prandom = P_RandomKey(5); // No placable object, just use a random number.
|
case 2: item = MT_FLICKY_12/*MT_MOUSE*/; break;
|
||||||
|
case 3: item = MT_FLICKY_11/*MT_COW*/; break;
|
||||||
switch(prandom)
|
case 4: item = MT_FLICKY_03/*MT_CHICKEN*/; break;
|
||||||
{
|
}
|
||||||
default: item = MT_FLICKY_02/*MT_BUNNY*/; break;
|
break;
|
||||||
case 1: item = MT_FLICKY_01/*MT_BIRD*/; break;
|
|
||||||
case 2: item = MT_FLICKY_12/*MT_MOUSE*/; break;
|
|
||||||
case 3: item = MT_FLICKY_11/*MT_COW*/; break;
|
|
||||||
case 4: item = MT_FLICKY_03/*MT_CHICKEN*/; break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mo = P_SpawnMobj(target->x, target->y, target->z + (target->height / 2) - FixedMul(mobjinfo[item].height / 2, target->scale), item);
|
mo = P_SpawnMobj(target->x, target->y, target->z + (target->height / 2) - FixedMul(mobjinfo[item].height / 2, target->scale), item);
|
||||||
|
|
22
src/p_mobj.c
22
src/p_mobj.c
|
@ -3482,17 +3482,14 @@ static boolean P_SceneryZMovement(mobj_t *mo)
|
||||||
if ((!(mo->eflags & MFE_VERTICALFLIP) && mo->z <= mo->floorz)
|
if ((!(mo->eflags & MFE_VERTICALFLIP) && mo->z <= mo->floorz)
|
||||||
|| (mo->eflags & MFE_VERTICALFLIP && mo->z+mo->height >= mo->ceilingz))
|
|| (mo->eflags & MFE_VERTICALFLIP && mo->z+mo->height >= mo->ceilingz))
|
||||||
{
|
{
|
||||||
// DO NOT use random numbers here.
|
mobjtype_t flowertype = ((P_RandomChance(FRACUNIT/2)) ? MT_GFZFLOWER1 : MT_GFZFLOWER3);
|
||||||
// SonicCD mode is console togglable and
|
mobj_t *flower = P_SpawnMobjFromMobj(mo, 0, 0, 0, flowertype);
|
||||||
// affects demos.
|
if (flower)
|
||||||
UINT8 rltime = (leveltime & 4);
|
{
|
||||||
|
P_SetScale(flower, mo->scale/16);
|
||||||
if (!rltime)
|
flower->destscale = mo->scale;
|
||||||
P_SpawnMobj(mo->x, mo->y, mo->floorz, MT_GFZFLOWER3);
|
flower->scalespeed = mo->scale/8;
|
||||||
else if (rltime == 2)
|
}
|
||||||
P_SpawnMobj(mo->x, mo->y, mo->floorz, MT_GFZFLOWER2);
|
|
||||||
else
|
|
||||||
P_SpawnMobj(mo->x, mo->y, mo->floorz, MT_GFZFLOWER1);
|
|
||||||
|
|
||||||
P_RemoveMobj(mo);
|
P_RemoveMobj(mo);
|
||||||
return false;
|
return false;
|
||||||
|
@ -7049,7 +7046,8 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MT_SEED:
|
case MT_SEED:
|
||||||
mobj->momz = mobj->info->speed;
|
if (P_MobjFlip(mobj)*mobj->momz < mobj->info->speed)
|
||||||
|
mobj->momz = P_MobjFlip(mobj)*mobj->info->speed;
|
||||||
break;
|
break;
|
||||||
case MT_ROCKCRUMBLE1:
|
case MT_ROCKCRUMBLE1:
|
||||||
case MT_ROCKCRUMBLE2:
|
case MT_ROCKCRUMBLE2:
|
||||||
|
|
|
@ -148,7 +148,6 @@ consvar_t cv_flipcam2 = {"flipcam2", "No", CV_SAVE|CV_CALL|CV_NOINIT, CV_YesNo,
|
||||||
consvar_t cv_shadow = {"shadow", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_shadow = {"shadow", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_shadowoffs = {"offsetshadows", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_shadowoffs = {"offsetshadows", "Off", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_skybox = {"skybox", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_skybox = {"skybox", "On", CV_SAVE, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_soniccd = {"soniccd", "Off", CV_NETVAR, CV_OnOff, NULL, 0, NULL, NULL, 0, 0, NULL};
|
|
||||||
consvar_t cv_allowmlook = {"allowmlook", "Yes", CV_NETVAR, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_allowmlook = {"allowmlook", "Yes", CV_NETVAR, CV_YesNo, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_showhud = {"showhud", "Yes", CV_CALL, CV_YesNo, R_SetViewSize, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_showhud = {"showhud", "Yes", CV_CALL, CV_YesNo, R_SetViewSize, 0, NULL, NULL, 0, 0, NULL};
|
||||||
consvar_t cv_translucenthud = {"translucenthud", "10", CV_SAVE, translucenthud_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
consvar_t cv_translucenthud = {"translucenthud", "10", CV_SAVE, translucenthud_cons_t, NULL, 0, NULL, NULL, 0, 0, NULL};
|
||||||
|
@ -1424,7 +1423,6 @@ void R_RegisterEngineStuff(void)
|
||||||
{
|
{
|
||||||
CV_RegisterVar(&cv_gravity);
|
CV_RegisterVar(&cv_gravity);
|
||||||
CV_RegisterVar(&cv_tailspickup);
|
CV_RegisterVar(&cv_tailspickup);
|
||||||
CV_RegisterVar(&cv_soniccd);
|
|
||||||
CV_RegisterVar(&cv_allowmlook);
|
CV_RegisterVar(&cv_allowmlook);
|
||||||
CV_RegisterVar(&cv_homremoval);
|
CV_RegisterVar(&cv_homremoval);
|
||||||
CV_RegisterVar(&cv_flipcam);
|
CV_RegisterVar(&cv_flipcam);
|
||||||
|
|
Loading…
Reference in a new issue