Multi-patch texture support for transparency AND translucency
Fixes the transparent bits of the multi-patch glass texture in THZ1 turning cyan when linedef types 900-908 are applied for translucency
See merge request !56
Zoom tube camera fix
Fixed a mistake where I accidentially allowed people to change the player angle whilst in a zoom tube when previously improving them.
See merge request !57
TEXTURES additions
Some new features and fixes for textures and the TEXTURES lump:
* Flipping of individual patches used by textures is now supported, both horizontally and vertically. The formatting for doing so in TEXTURES should match that of ZDoom's:
```
WallTexture EXAMPLE, 128, 128
{
Patch TEST, 0, 0
Patch TEST, 64, 0
{
FlipX
}
Patch TEST, 0, 64
{
FlipY
}
Patch TEST, 64, 64
{
FlipX
FlipY
}
}
```
(in other words you need { and } below the Patch you want to flip, containing FlipX if you want horizontal flipping or FlipY if you want vertical flipping... or both, if you want both!)
* Negative patch y-offsets should now work properly for multi-patch textures or single-patch textures with no holes.
See merge request !58
*Added FLIPX/FLIPY support for multi-patch textures and single-patch textures without holes
*Added FLIPY support for single-patch textures with holes; I'll sort FLIPX support out later
HWR_DrawFill support for V_NOSCALESTART
This fixes the console selection highlighting being wrongly positioned and sized for OpenGL.
See merge request !135
Sprite2 changes
Some stuff!
* Lua access to sprite2.
* Introducing new Lua-exclusive function, P_IsValidSprite2(mo, spr2). Basically just a wrapper for (((skin_t *)mobj->skin)->sprites[spr2].numframes > 0), useful for creating custom sprite2 defaulting functions since hooking into P_GetMobjSprite2 wouldn't be worth it.
* FF_ANIMATE support for sprite2s. The var2 of the state works identically to normal FF_ANIMATE, but var1 is completely disregarded - it just runs all of the frames available to that one sprite2 animation set.
* As a result, a bunch of states which were either not previously animatable or had animated at constant speed now get animation without state changes.
* P_SetMobjState now supports sprite2 defaulting like P_SetPlayerMobjState does.
See merge request !51
Damage control + Match rebalancing
This is two branches in one since while I was working on damage-control's changes months back, I felt it was best Match rebalancing was merged in here too (thanks JTE for helping me do so).
Changes from damage-control:
* `player->health` (formerly the "HUD copy" of `player->mo->health`) is now `player->rings`, and is also now the player's actual ring count.
* `player->mo->health` (formerly rings + 1) is now always 1 when alive, regardless of ring count; if player with rings is damaged, this is untouched.
* P_RingDamage now includes ring spilling code.
* P_ShieldDamage now has a damagetype argument, allowing me to remove the last MT_NULL hack left in from the pre-damagetype days that I forgot about.
* The old "switch-to-seestate" enemy damaging behavior in P_DamageMobj has been removed. This was a Doom left-over and doesn't really affect SRB2's enemies anyway - see, Doom enemies had a random chance of using seestate or painstate, SRB2 enemies always use painstate.
* Other minor efforts to reorganise damaging code and have it make more sense, but otherwise nothing that should affect gameplay in general.
Changes from match-rebalancing:
* New weapon/ammo dropping behavior: if you have the weapon panel + ammo, you drop the panel (but not the ammo); if you don't, you just drop the ammo.
* New Match ammo consumption: Weapon rings can now be fired with no rings at double the ammo cost.
* New emerald behaviour: collecting all 7 emeralds no longer turns you super (read: Match super is dead now) but instead steal points from enemies and gives you and teammates invincibility + sneakers
* Tails ringslinger buff: Any character with CA_FLY will now throw rings 1.5x as fast.
See merge request !28
* All Lua-originated sprite2 settings are now forced through P_GetMobjSprite2. Makes sense because of SPR2_JUMP, which none of the main characters have sprites for yet all use.
* Cleaned up P_GetMobjSprite2 to not set irrelevant, otherwise-unused variable.
Console improvements
* Unused console backgrounds no longer take up memory
* Input cursor can now move left and right
* Support for selections (Shift-arrow keys, CTRL-A, etc)
* Clipboard support (CTRL-C to copy, CTRL-V to paste, CTRL-X to cut)
* Fixed handling of simultaneous modifier key presses
https://dl.dropboxusercontent.com/u/3518218/21/console.gif
None of this affects chat yet, that's not part of the console. I'll look at it later.
See merge request !133
MD2 vertex/frame/triangle/etc limits checking
Fix for this bug: http://mb.srb2.org/showthread.php?t=42099
The model reading code didn't properly check if the model had too many vertices, so models with higher counts freely broke the game. This fix now stops that and prints an error message if that is the case.
However, it seems some models happily exceed other limits such as texcoords without problem (to my knowledge), so I've not bothered with checking those limits for now. Perhaps this could be a time to discuss if we need to change such limits again or not? Either way, one can easily uncomment my lines for checking texcoords/skins/triangles limits later if needed.
EDIT: I've allowed checking for triangle and frame limits too now, after some discussion.
See merge request !132