Mapbase v6.0

- Fixed path_track paths saving as pointers instead of handles
- Fixed player animations not falling to base class correctly
- Fixed logic_externaldata creating garbage in trailing spaces
- Added "SetHandModelSkin" input
- Added unique colors for various types of console message, adjustable via convars
- Added the ability to use map-specific weapon scripts
- Added a way to display (placeholder) text entirely from Faceposer scenes
- Added "autobreak" keyvalue to game_text, which automatically breaks long text into different lines
- Added the ability to change a game_text's font (very limited)
- Added LightToggle input to point_spotlight
- Added Enable/DisableSprites on npc_manhack
- Added ai_goal_police behavior from metrocops to Combine soldiers and citizens
- Added func_precipitation particle rain systems from the Alien Swarm SDK
- Added new func_precipitation spawnflags for controlling behavior in particle types
- Added "mapbase_version" cvar which shows the version of Mapbase a mod might be running on
- Fixed an oversight with NPC crouch activities which was causing npc_metropolice to stop firing in standoffs
- Added toggleable patches to npc_combine AI which make soldiers less likely to stand around without shooting or rush to melee when not needed
- Added key for custom logo font on env_credits scripts
- Added SetSpeed and SetPushDir inputs for trigger_push
- Added a bunch of I/O/KV to func_fish_pool to allow for more control over the fish
- Added OnLostEnemy/Player support for npc_combine_camera
- Added enhanced save/restore for the Response System, toggleable via convar
- Added a convar which allows users to disable weapon autoswitching when picking up ammo
- Split VScript base script into its own file
- Added VScript descriptions for NPC squads and the manager class which handles them
- Moved several classes, functions, etc. to the VScript library itself for future usage in other projects, like VBSP
- Added VScript to VBSP with basic map file interfacing
- Made some VScript documentation more clear due to deprecation of online documentation
- Added VScript "hook" registration, creating a standardized system which shows up in script_help documentation
- Added VScript-driven custom weapons
- Added clientside VScript scopes
- Added a bunch of weapon-related VScript functions
- Split a bunch of cluttered VScript stuff into different files
- Added VScript functions for "following" entities/bonemerging
- Added VScript functions for grenades
- Added a few more VScript trigger functions
- Added OnDeath hook for VScript
- Fixed documentation for aliased functions in VScript
- Fixed $bumpmask not working on SDK_LightmappedGeneric
- Made vertex blend swapping in Hammer use a constant instead of a combo (makes it easier to compile the shader, especially for $bumpmask's sake)
- Fixed brush phong, etc. causing SDK_WorldVertexTransition to stop working
- Added limited support for $envmapmask in the bumpmapping shader
- Fixed more issues with parallax corrected cubemaps and instances
- Made instance variable recursion consistent with VMFII
This commit is contained in:
Blixibon
2020-11-26 02:26:55 +00:00
parent 3b5b3a9ccb
commit eb014cce6c
125 changed files with 8058 additions and 2767 deletions

View File

@@ -862,6 +862,82 @@ void CHudMessage::MsgFunc_HudMsg(bf_read &msg)
// see tmessage.cpp why 512
msg.ReadString( (char*)pNetMessage->pMessage, 512 );
#ifdef MAPBASE
//
// Mapbase adds a new data entry for custom fonts on entities like game_text.
// Some existing instances of this user message may not have this, so we have to make sure we have any bits left first.
//
if (msg.GetNumBitsLeft() > 0)
{
// Try to have VGui font names for each channel
static char szVGuiFontNames[MAX_NETMESSAGE][512];
msg.ReadString( szVGuiFontNames[channel], 512 );
if (szVGuiFontNames[channel][0] != '\0')
{
pNetMessage->pVGuiSchemeFontName = szVGuiFontNames[channel];
}
}
//
// Mapbase adds a new data entry for breaking game_text into newline when it goes past the user's screen.
// Some existing instances of this user message may not have this, so we have to make sure we have any bits left first.
//
if (msg.GetNumBitsLeft() > 0)
{
int len = msg.ReadByte();
// This is supposed to work around a bug where certain aspect ratios cut off lengthy texts.
//int lineMax = 64 * ((float)ScreenWidth() / 1440.0f);
int lineMax = 100 / engine->GetScreenAspectRatio();
int lineMinBreak = lineMax * 0.9;
DevMsg( "Line max is %i from an aspect ratio of %.3f (strlen %i)\n", lineMax, engine->GetScreenAspectRatio(), len );
char *curMessage = (char*)pNetMessage->pMessage;
char newMessage[512];
int cur = 0; // Current time on this line
int i = 0; // curMessage
int i2 = 0; // newMessage
for (i = 0; i < len; i++)
{
cur++;
newMessage[i2] = curMessage[i];
// Check if we're past the point in which we should break the line
if (cur >= lineMinBreak)
{
// Line break at the next space
if (curMessage[i] == ' ')
{
newMessage[i2] = '\n';
cur = 0;
}
else if (curMessage[i] == '\n')
{
// Already a newline here
cur = 0;
}
else if (cur >= lineMax)
{
// We're at the max and there's no space. Force a newline with a hyphen
newMessage[i2] = '-';
i2++;
newMessage[i2] = '\n';
i2++;
newMessage[i2] = curMessage[i];
cur = 0;
}
}
i2++;
}
Q_strncpy( (char*)pNetMessage->pMessage, newMessage, 512 );
}
#endif
MessageAdd( pNetMessage->pName );
}