Merge remote-tracking branch 'public/next' into 2215

This commit is contained in:
Lactozilla 2025-01-20 01:39:55 -03:00
commit 507e72a4a8
3 changed files with 59 additions and 64 deletions

View file

@ -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. UINT8 spam_tokens[MAXPLAYERS] = { 1 }; // fill the buffer with 1 so the motd can be sent.
tic_t spam_tics[MAXPLAYERS]; 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. /** Receives a message, processing an ::XD_SAY command.
* \sa DoSayCommand * \sa DoSayCommand
* \author Graue <graue@oceanbase.org> * \author Graue <graue@oceanbase.org>
@ -710,51 +749,27 @@ static void Got_Saycmd(UINT8 **p, INT32 playernum)
{ {
if (players[playernum].ctfteam == 1) // red if (players[playernum].ctfteam == 1) // red
{ {
cstart = "\x85"; cstart = textcolor = GetChatColorFromSkinColor(skincolor_redteam);
textcolor = "\x85";
} }
else // blue else // blue
{ {
cstart = "\x84"; cstart = textcolor = GetChatColorFromSkinColor(skincolor_blueteam);
textcolor = "\x84";
} }
} }
else else
{ {
UINT16 chatcolor = skincolors[players[playernum].skincolor].chatcolor; cstart = GetChatColorFromSkinColor(players[playernum].skincolor);
if (G_GametypeHasTeams())
if (!chatcolor || chatcolor%0x1000 || chatcolor>V_INVERTMAP) {
cstart = "\x80"; if (players[playernum].ctfteam == 1) // red
else if (chatcolor == V_MAGENTAMAP) {
cstart = "\x81"; cstart = GetChatColorFromSkinColor(skincolor_redteam);
else if (chatcolor == V_YELLOWMAP) }
cstart = "\x82"; else // blue
else if (chatcolor == V_GREENMAP) {
cstart = "\x83"; cstart = GetChatColorFromSkinColor(skincolor_blueteam);
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";
} }
prefix = cstart; prefix = cstart;

View file

@ -613,6 +613,10 @@ static int libd_getSprite2Patch(lua_State *L)
if (super) if (super)
j |= SPR2F_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); sprdef = P_GetSkinSpritedef(skins[i], j);
// set frame number // set frame number

View file

@ -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 // P_SetPlayerMobjState
// Returns true if the mobj is still present. // Returns true if the mobj is still present.
@ -3805,7 +3784,7 @@ static void P_PlayerMobjThinker(mobj_t *mobj)
} }
animonly: animonly:
P_CyclePlayerMobjState(mobj); P_CycleMobjState(mobj);
} }
static void CalculatePrecipFloor(precipmobj_t *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. // Can end up here if a player dies.
if (mobj->player) P_CycleMobjState(mobj);
P_CyclePlayerMobjState(mobj);
else
P_CycleMobjState(mobj);
if (P_MobjWasRemoved(mobj)) if (P_MobjWasRemoved(mobj))
return; return;