Backwards compat for certain powers
This commit is contained in:
parent
6d071fd23a
commit
156fddad1c
3 changed files with 37 additions and 2 deletions
|
|
@ -1772,6 +1772,9 @@ static int power_get(lua_State *L)
|
|||
case pw_nocontrol:
|
||||
lua_pushinteger(L, plr->nocontrol);
|
||||
return 1;
|
||||
case pw_emeralds:
|
||||
lua_pushinteger(L, plr->emeralds);
|
||||
return 1;
|
||||
default:
|
||||
lua_pushinteger(L, powers[p]);
|
||||
return 1;
|
||||
|
|
@ -1801,6 +1804,9 @@ static int power_set(lua_State *L)
|
|||
case pw_nocontrol:
|
||||
plr->nocontrol = i;
|
||||
break;
|
||||
case pw_emeralds:
|
||||
plr->emeralds = i;
|
||||
break;
|
||||
default:
|
||||
powers[p] = i;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -229,6 +229,11 @@ static void P_NetArchivePlayers(savebuffer_t *save)
|
|||
if (flags & FOLLOWER)
|
||||
WRITEUINT32(save->p, players[i].follower->mobjnum);
|
||||
|
||||
for (j = 0; j < NUMPOWERS; j++)
|
||||
WRITEUINT16(save->p, players[i].powers[j]);
|
||||
for (j = 0; j < NUMKARTSTUFF; j++)
|
||||
WRITEINT32(save->p, players[i].kartstuff[j]);
|
||||
|
||||
WRITEUINT16(save->p, players[i].nocontrol);
|
||||
WRITEUINT8(save->p, players[i].carry);
|
||||
WRITEUINT16(save->p, players[i].dye);
|
||||
|
|
@ -560,6 +565,11 @@ static void P_NetUnArchivePlayers(savebuffer_t *save)
|
|||
if (flags & FOLLOWER)
|
||||
players[i].follower = (mobj_t *)(size_t)READUINT32(save->p);
|
||||
|
||||
for (j = 0; j < NUMPOWERS; j++)
|
||||
players[i].powers[j] = READUINT16(save->p);
|
||||
for (j = 0; j < NUMKARTSTUFF; j++)
|
||||
players[i].kartstuff[j] = READINT32(save->p);
|
||||
|
||||
players[i].nocontrol = READUINT16(save->p);
|
||||
players[i].carry = READUINT8(save->p);
|
||||
players[i].dye = READUINT16(save->p);
|
||||
|
|
|
|||
23
src/p_spec.c
23
src/p_spec.c
|
|
@ -3220,11 +3220,30 @@ boolean P_ProcessSpecial(activator_t *activator, INT16 special, INT32 *args, cha
|
|||
case 434: // Custom Power
|
||||
if (mo && mo->player)
|
||||
{
|
||||
powertype_t power = line->stringargs[0] ? get_number(line->stringargs[0]) : 0;
|
||||
INT32 value = line->stringargs[1] ? get_number(line->stringargs[1]) : 0;
|
||||
powertype_t power = stringargs[0] ? get_number(stringargs[0]) : 0;
|
||||
INT32 value = stringargs[1] ? get_number(stringargs[1]) : 0;
|
||||
if (value == -1) // 'Infinite'
|
||||
value = UINT16_MAX;
|
||||
|
||||
if (stringargs[0])
|
||||
{
|
||||
if (strcasecmp(stringargs[0], "PW_FLASHING"))
|
||||
{
|
||||
mo->player->flashing = value;
|
||||
break;
|
||||
}
|
||||
else if (strcasecmp(stringargs[0], "PW_NOCONTROL"))
|
||||
{
|
||||
mo->player->nocontrol = value;
|
||||
break;
|
||||
}
|
||||
else if (strcasecmp(stringargs[0], "PW_EMERALDS"))
|
||||
{
|
||||
mo->player->emeralds = value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
mo->player->powers[power] = value;
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue