mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-03-13 06:13:18 +00:00
Merge remote-tracking branch 'public/next' into 2215
This commit is contained in:
commit
507e72a4a8
3 changed files with 59 additions and 64 deletions
|
@ -590,6 +590,45 @@ static void Command_CSay_f(void)
|
|||
UINT8 spam_tokens[MAXPLAYERS] = { 1 }; // fill the buffer with 1 so the motd can be sent.
|
||||
tic_t spam_tics[MAXPLAYERS];
|
||||
|
||||
static const char *GetChatColorFromSkinColor(INT32 skincolor)
|
||||
{
|
||||
const char *textcolor = NULL;
|
||||
UINT16 chatcolor = skincolors[skincolor].chatcolor;
|
||||
if (!chatcolor || chatcolor%0x1000 || chatcolor>V_INVERTMAP)
|
||||
textcolor = "\x80";
|
||||
else if (chatcolor == V_MAGENTAMAP)
|
||||
textcolor = "\x81";
|
||||
else if (chatcolor == V_YELLOWMAP)
|
||||
textcolor = "\x82";
|
||||
else if (chatcolor == V_GREENMAP)
|
||||
textcolor = "\x83";
|
||||
else if (chatcolor == V_BLUEMAP)
|
||||
textcolor = "\x84";
|
||||
else if (chatcolor == V_REDMAP)
|
||||
textcolor = "\x85";
|
||||
else if (chatcolor == V_GRAYMAP)
|
||||
textcolor = "\x86";
|
||||
else if (chatcolor == V_ORANGEMAP)
|
||||
textcolor = "\x87";
|
||||
else if (chatcolor == V_SKYMAP)
|
||||
textcolor = "\x88";
|
||||
else if (chatcolor == V_PURPLEMAP)
|
||||
textcolor = "\x89";
|
||||
else if (chatcolor == V_AQUAMAP)
|
||||
textcolor = "\x8a";
|
||||
else if (chatcolor == V_PERIDOTMAP)
|
||||
textcolor = "\x8b";
|
||||
else if (chatcolor == V_AZUREMAP)
|
||||
textcolor = "\x8c";
|
||||
else if (chatcolor == V_BROWNMAP)
|
||||
textcolor = "\x8d";
|
||||
else if (chatcolor == V_ROSYMAP)
|
||||
textcolor = "\x8e";
|
||||
else if (chatcolor == V_INVERTMAP)
|
||||
textcolor = "\x8f";
|
||||
return textcolor;
|
||||
}
|
||||
|
||||
/** Receives a message, processing an ::XD_SAY command.
|
||||
* \sa DoSayCommand
|
||||
* \author Graue <graue@oceanbase.org>
|
||||
|
@ -710,51 +749,27 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
|
|||
{
|
||||
if (players[playernum].ctfteam == 1) // red
|
||||
{
|
||||
cstart = "\x85";
|
||||
textcolor = "\x85";
|
||||
cstart = textcolor = GetChatColorFromSkinColor(skincolor_redteam);
|
||||
}
|
||||
else // blue
|
||||
{
|
||||
cstart = "\x84";
|
||||
textcolor = "\x84";
|
||||
cstart = textcolor = GetChatColorFromSkinColor(skincolor_blueteam);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
UINT16 chatcolor = skincolors[players[playernum].skincolor].chatcolor;
|
||||
|
||||
if (!chatcolor || chatcolor%0x1000 || chatcolor>V_INVERTMAP)
|
||||
cstart = "\x80";
|
||||
else if (chatcolor == V_MAGENTAMAP)
|
||||
cstart = "\x81";
|
||||
else if (chatcolor == V_YELLOWMAP)
|
||||
cstart = "\x82";
|
||||
else if (chatcolor == V_GREENMAP)
|
||||
cstart = "\x83";
|
||||
else if (chatcolor == V_BLUEMAP)
|
||||
cstart = "\x84";
|
||||
else if (chatcolor == V_REDMAP)
|
||||
cstart = "\x85";
|
||||
else if (chatcolor == V_GRAYMAP)
|
||||
cstart = "\x86";
|
||||
else if (chatcolor == V_ORANGEMAP)
|
||||
cstart = "\x87";
|
||||
else if (chatcolor == V_SKYMAP)
|
||||
cstart = "\x88";
|
||||
else if (chatcolor == V_PURPLEMAP)
|
||||
cstart = "\x89";
|
||||
else if (chatcolor == V_AQUAMAP)
|
||||
cstart = "\x8a";
|
||||
else if (chatcolor == V_PERIDOTMAP)
|
||||
cstart = "\x8b";
|
||||
else if (chatcolor == V_AZUREMAP)
|
||||
cstart = "\x8c";
|
||||
else if (chatcolor == V_BROWNMAP)
|
||||
cstart = "\x8d";
|
||||
else if (chatcolor == V_ROSYMAP)
|
||||
cstart = "\x8e";
|
||||
else if (chatcolor == V_INVERTMAP)
|
||||
cstart = "\x8f";
|
||||
cstart = GetChatColorFromSkinColor(players[playernum].skincolor);
|
||||
if (G_GametypeHasTeams())
|
||||
{
|
||||
if (players[playernum].ctfteam == 1) // red
|
||||
{
|
||||
cstart = GetChatColorFromSkinColor(skincolor_redteam);
|
||||
}
|
||||
else // blue
|
||||
{
|
||||
cstart = GetChatColorFromSkinColor(skincolor_blueteam);
|
||||
}
|
||||
}
|
||||
}
|
||||
prefix = cstart;
|
||||
|
||||
|
|
|
@ -613,6 +613,10 @@ static int libd_getSprite2Patch(lua_State *L)
|
|||
if (super)
|
||||
j |= SPR2F_SUPER;
|
||||
|
||||
// If there is no "super" variation of this sprite, try with the normal one.
|
||||
if (!P_IsValidSprite2(skins[i], j))
|
||||
j &= ~SPR2F_SUPER;
|
||||
|
||||
sprdef = P_GetSkinSpritedef(skins[i], j);
|
||||
|
||||
// set frame number
|
||||
|
|
28
src/p_mobj.c
28
src/p_mobj.c
|
@ -178,27 +178,6 @@ static void P_CycleMobjState(mobj_t *mobj)
|
|||
}
|
||||
}
|
||||
|
||||
//
|
||||
// P_CycleMobjState for players.
|
||||
//
|
||||
static void P_CyclePlayerMobjState(mobj_t *mobj)
|
||||
{
|
||||
// state animations
|
||||
P_CycleStateAnimation(mobj);
|
||||
|
||||
// cycle through states,
|
||||
// calling action functions at transitions
|
||||
if (mobj->tics != -1)
|
||||
{
|
||||
mobj->tics--;
|
||||
|
||||
// you can cycle through multiple states in a tic
|
||||
if (!mobj->tics && mobj->state)
|
||||
if (!P_SetMobjState(mobj, mobj->state->nextstate))
|
||||
return; // freed itself
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// P_SetPlayerMobjState
|
||||
// Returns true if the mobj is still present.
|
||||
|
@ -3805,7 +3784,7 @@ static void P_PlayerMobjThinker(mobj_t *mobj)
|
|||
}
|
||||
|
||||
animonly:
|
||||
P_CyclePlayerMobjState(mobj);
|
||||
P_CycleMobjState(mobj);
|
||||
}
|
||||
|
||||
static void CalculatePrecipFloor(precipmobj_t *mobj)
|
||||
|
@ -10333,10 +10312,7 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
}
|
||||
|
||||
// Can end up here if a player dies.
|
||||
if (mobj->player)
|
||||
P_CyclePlayerMobjState(mobj);
|
||||
else
|
||||
P_CycleMobjState(mobj);
|
||||
P_CycleMobjState(mobj);
|
||||
|
||||
if (P_MobjWasRemoved(mobj))
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue