From dd05e564cf1c0d1eb6b878c9690e4a3e2fa6cf1e Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@zdoom.fake>
Date: Sun, 29 Jun 2014 14:32:50 +0200
Subject: [PATCH 1/6] - this needed more fixes...

---
 src/p_3dfloors.cpp | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/p_3dfloors.cpp b/src/p_3dfloors.cpp
index 91153715ac..bdeb45d782 100644
--- a/src/p_3dfloors.cpp
+++ b/src/p_3dfloors.cpp
@@ -226,11 +226,11 @@ static int P_Set3DFloor(line_t * line, int param, int param2, int alpha)
 		if (param==0)
 		{
 			flags=FF_EXISTS|FF_RENDERALL|FF_SOLID|FF_INVERTSECTOR;
+			alpha = 255;
 			for (i=0;i<sec->linecount;i++)
 			{
 				line_t * l=sec->lines[i];
 
-				alpha=255;
 				if (l->special==Sector_SetContents && l->frontsector==sec)
 				{
 					alpha=clamp<int>(l->args[1], 0, 100);
@@ -252,12 +252,10 @@ static int P_Set3DFloor(line_t * line, int param, int param2, int alpha)
 
 						l->frontsector->ColorMap = 
 							GetSpecialLights (l->frontsector->ColorMap->Color, 
-											  (unsigned int)(vavoomcolors[l->args[0]]&VC_COLORMASK), 
+											  vavoomcolors[l->args[0]], 
 											  l->frontsector->ColorMap->Desaturate);
-										
-						alpha = (int)((unsigned int)(vavoomcolors[l->args[0]]&VC_ALPHAMASK)>>24);
 					}
-					else alpha=(alpha*255)/100;
+					alpha=(alpha*255)/100;
 					break;
 				}
 			}

From d83f048858c6ca3be9442dce658a4dae542ebfad Mon Sep 17 00:00:00 2001
From: Edoardo Prezioso <edo88@email.it>
Date: Tue, 1 Jul 2014 19:13:05 +0200
Subject: [PATCH 2/6] - Miscellaneous CMakeLists.txt fixes.

- fixed a CMake warning about uninitialized use of the variable CROSS_EXPORTS in the tools subfolder when CMAKE_CROSSCOMPILING is off;
- fixed a variable typo: CMAKE_CURRENTY_BINARY_DIR instead of CMAKE_CURRENT_BINARY_DIR;
- in src/CMakeLists.txt, fixed a missing merge of a portion of code from maint branch to master.
---
 CMakeLists.txt       | 6 ++++++
 gdtoa/CMakeLists.txt | 2 +-
 src/CMakeLists.txt   | 7 ++++---
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d548d26a97..65e2d223fb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -227,6 +227,12 @@ endif( GME_FOUND AND NOT FORCE_INTERNAL_GME )
 
 set( LZMA_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lzma/C" )
 
+if( NOT CMAKE_CROSSCOMPILING )
+	if( NOT CROSS_EXPORTS )
+		set( CROSS_EXPORTS "" )
+	endif( NOT CROSS_EXPORTS )
+endif( NOT CMAKE_CROSSCOMPILING )
+
 add_subdirectory( lzma )
 add_subdirectory( tools )
 add_subdirectory( dumb )
diff --git a/gdtoa/CMakeLists.txt b/gdtoa/CMakeLists.txt
index 7f394e1403..9ec7c2f610 100644
--- a/gdtoa/CMakeLists.txt
+++ b/gdtoa/CMakeLists.txt
@@ -34,7 +34,7 @@ if( NOT MSVC AND NOT APPLE )
 		DEPENDS qnan )
 		
 	set( GEN_FP_FILES arith.h gd_qnan.h )
-	set( GEN_FP_DEPS ${CMAKE_CURRENT_BINARY_DIR}/arith.h ${CMAKE_CURRENTY_BINARY_DIR}/gd_qnan.h )
+	set( GEN_FP_DEPS ${CMAKE_CURRENT_BINARY_DIR}/arith.h ${CMAKE_CURRENT_BINARY_DIR}/gd_qnan.h )
 endif( NOT MSVC AND NOT APPLE )
 
 add_library( gdtoa
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9c53446c89..1564c9e60d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -595,12 +595,13 @@ else( WIN32 )
 	endif( APPLE )
 endif( WIN32 )
 
+if( NOT ASM_SOURCES )
+	set( ASM_SOURCES "" )
+endif( NOT ASM_SOURCES )
+
 if( NO_ASM )
 	add_definitions( -DNOASM )
 else( NO_ASM )
-	if( NOT ASM_SOURCES )
-		set( ASM_SOURCES "" )
-	endif( NOT ASM_SOURCES )
 	if( X64 )
 		ADD_ASM_FILE( asm_x86_64 tmap3 )
 	else( X64 )

From e1729a9ec206b20a8ea0b9c2314d2652c697cd0f Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@zdoom.fake>
Date: Wed, 9 Jul 2014 09:15:51 +0200
Subject: [PATCH 3/6] - fixed compilation with VC++2005 solution.

hu_stuff.h defined some callbacks for qsort without STACK_ARGS which causes problems with this solution's Release setting which uses __fastcall calling convention.
---
 src/hu_stuff.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/hu_stuff.h b/src/hu_stuff.h
index e2cc75918a..dc22a2adcc 100644
--- a/src/hu_stuff.h
+++ b/src/hu_stuff.h
@@ -21,6 +21,8 @@
 #ifndef __HU_STUFF_H__
 #define __HU_STUFF_H__
 
+#include "doomtype.h"
+
 struct event_t;
 class player_t;
 
@@ -52,7 +54,7 @@ int HU_GetRowColor(player_t *player, bool hightlight);
 
 // Sorting routines
 
-int comparepoints(const void *arg1, const void *arg2);
-int compareteams(const void *arg1, const void *arg2);
+int STACK_ARGS comparepoints(const void *arg1, const void *arg2);
+int STACK_ARGS compareteams(const void *arg1, const void *arg2);
 
 #endif

From e1130b860ea5c56b0c0ba2218bf81851e9b5be4c Mon Sep 17 00:00:00 2001
From: Edward Richardson <Edward850@crantime.org>
Date: Sun, 13 Jul 2014 14:32:43 +1200
Subject: [PATCH 4/6] Serialize FriendPlayer

---
 src/p_mobj.cpp | 4 ++++
 src/version.h  | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp
index 72679ef719..076d106eb3 100644
--- a/src/p_mobj.cpp
+++ b/src/p_mobj.cpp
@@ -314,6 +314,10 @@ void AActor::Serialize (FArchive &arc)
 		arc << PoisonDamageType << PoisonDamageTypeReceived;
 	}
 	arc << ConversationRoot << Conversation;
+	if (SaveVersion >= 4509)
+	{
+		arc << FriendPlayer;
+	}
 
 	{
 		FString tagstr;
diff --git a/src/version.h b/src/version.h
index 6c94bf3e6c..6b6361d26a 100644
--- a/src/version.h
+++ b/src/version.h
@@ -76,7 +76,7 @@ const char *GetVersionString();
 
 // Use 4500 as the base git save version, since it's higher than the
 // SVN revision ever got.
-#define SAVEVER 4508
+#define SAVEVER 4509
 
 #define SAVEVERSTRINGIFY2(x) #x
 #define SAVEVERSTRINGIFY(x) SAVEVERSTRINGIFY2(x)

From 400a573e6505f4759d98774726a40ac701187d04 Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@zdoom.fake>
Date: Sun, 13 Jul 2014 09:12:46 +0200
Subject: [PATCH 5/6] - fixed: ACS's LineAttack function with a valid tid still
 used the activator as the attack's source.

---
 src/p_acs.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/p_acs.cpp b/src/p_acs.cpp
index 981870a360..feecbb0aa9 100644
--- a/src/p_acs.cpp
+++ b/src/p_acs.cpp
@@ -5105,7 +5105,7 @@ int DLevelScript::CallFunction(int argCount, int funcIndex, SDWORD *args, const
 
 					while ((source = it.Next()) != NULL)
 					{
-						P_LineAttack(activator, angle, range, pitch, damage, damagetype, pufftype, fhflags);
+						P_LineAttack(source, angle, range, pitch, damage, damagetype, pufftype, fhflags);
 					}
 				}
 			}

From 004cf5748c6a425fea717635c7269608d52c3c61 Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@zdoom.fake>
Date: Sun, 13 Jul 2014 09:43:28 +0200
Subject: [PATCH 6/6] - fixed: FraggleScript's SpawnedThings array must always
 be checked for owned inventory items. The 'mapthingnumexist' function forgot
 to do that.

---
 src/fragglescript/t_func.cpp | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/fragglescript/t_func.cpp b/src/fragglescript/t_func.cpp
index 2513a68a82..32d4909d49 100644
--- a/src/fragglescript/t_func.cpp
+++ b/src/fragglescript/t_func.cpp
@@ -3530,8 +3530,17 @@ void FParser::SF_MapThingNumExist()
 		}
 		else
 		{
+			// Inventory items in the player's inventory have to be considered non-present.
+			if (SpawnedThings[intval]->IsKindOf(RUNTIME_CLASS(AInventory)) && 
+				barrier_cast<AInventory*>(SpawnedThings[intval])->Owner != NULL)
+			{
+				t_return.value.i = 0;
+			}
+			else
+			{
+				t_return.value.i = 1;
+			}
 			t_return.type = svt_int;
-			t_return.value.i = 1;
 		}
 	}
 }
@@ -3770,11 +3779,14 @@ void FParser::SF_ObjType()
 		mo = Script->trigger;
 	}
 
-	for(unsigned int i=0;i<countof(ActorTypes);i++) if (mo->GetClass() == ActorTypes[i])
+	if (mo != NULL)
 	{
-		t_return.type = svt_int;
-		t_return.value.i = i;
-		return;
+		for (unsigned int i = 0; i < countof(ActorTypes); i++) if (mo->GetClass() == ActorTypes[i])
+		{
+			t_return.type = svt_int;
+			t_return.value.i = i;
+			return;
+		}
 	}
 	t_return.type = svt_int;
 	t_return.value.i = -1;