diff -r 158fa88e91ae docs/zandronum-history.txt
--- a/docs/zandronum-history.txt	Fri Jul 12 19:43:25 2013 +0200
+++ b/docs/zandronum-history.txt	Sun Jul 14 17:22:53 2013 +0200
@@ -100,6 +100,7 @@
 -	- Fixed: Level authentication did not work at all with UDMF maps. [Dusk]
 -	- Fixed: CLIENTSIDE scripts were not stopped on clients online during map resets. [Torr Samaho] 
 -	- Fixed: Lightning was not stopped during map resets. [Torr Samaho]
+-	- Fixed: Arguments of actors were not reset to their initial values upon map resets. [Dusk, Torr Samaho]
 !	- sv_coop_damagefactor is not archived in the config file anymore, but reset to its default value when the game starts. [Torr Samaho]
 !	- Chex now uses the Doom status bar code allowing the new fullscreen HUD (cl_stfullscreenhud) to be used in Chex. [Torr Samaho]
 !	- Changed the default of the CVARs cl_run and freelook to true. [Torr Samaho]
diff -r 158fa88e91ae src/actor.h
--- a/src/actor.h	Fri Jul 12 19:43:25 2013 +0200
+++ b/src/actor.h	Sun Jul 14 17:22:53 2013 +0200
@@ -850,6 +850,7 @@
 	int				special;		// special
 	BYTE			SavedSpecial;	// [BC] Saved actor special for when a map gets reset.
 	int				args[5];		// special arguments
+	int				SavedArgs[5];	// [Dusk] More map reset stuff
 
 	AActor			*inext, **iprev;// Links to other mobjs in same bucket
 	TObjPtr<AActor> goal;			// Monster's goal if not chasing anything
diff -r 158fa88e91ae src/g_game.cpp
--- a/src/g_game.cpp	Fri Jul 12 19:43:25 2013 +0200
+++ b/src/g_game.cpp	Sun Jul 14 17:22:53 2013 +0200
@@ -3242,6 +3242,13 @@
 					pActor->Destroy( );
 				continue;
 			}
+
+			// [BB] ALLOWCLIENTSPAWN actors spawned by the map are supposed to stay untouched. Some mods ignore
+			// this restriction. To work around some problems caused by this, we reset their args. In particular,
+			// this is helpful for DynamicLight tricks.
+			if ( ( pActor->ulSTFlags & STFL_LEVELSPAWNED ) && ( pActor->ulNetworkFlags & NETFL_ALLOWCLIENTSPAWN ) )
+				for ( int i = 0; i < 5; ++i )
+			    pActor->args[i] = pActor->SavedArgs[i];
 		}
 
 		// [BB] Clients may be running CLIENTSIDE scripts, so we also need to reset ACS scripts on the clients.
@@ -3650,11 +3657,11 @@
 				pNewActor->tid = pActor->tid;
 				pNewActor->special = pActor->SavedSpecial;
 				pNewActor->SavedSpecial = pActor->SavedSpecial;
-				pNewActor->args[0] = pActor->args[0];
-				pNewActor->args[1] = pActor->args[1];
-				pNewActor->args[2] = pActor->args[2];
-				pNewActor->args[3] = pActor->args[3];
-				pNewActor->args[4] = pActor->args[4];
+				for ( int i = 0; i < 5; ++i )
+				{
+					pNewActor->args[i] = pActor->SavedArgs[i];
+					pNewActor->SavedArgs[i] = pActor->SavedArgs[i];
+				}
 				pNewActor->AddToHash( );
 
 				pNewActor->ulSTFlags |= STFL_LEVELSPAWNED;
@@ -3707,6 +3714,11 @@
 			if ( pActor->special != pActor->SavedSpecial )
 				pActor->special = pActor->SavedSpecial;
 
+			// [Dusk] Args must be reset too
+			for ( ULONG i = 0; i < 5; ++i )
+				if ( pActor->args[i] != pActor->SavedArgs[i] )
+					pActor->args[i] = pActor->SavedArgs[i];
+
 			// [BB] This is a valid monster on the map, count it.
 			if ( pActor->CountsAsKill( ) && !(pActor->flags & MF_FRIENDLY) )
 				level.total_monsters++;
@@ -3774,11 +3786,11 @@
 			pNewActor->tid = pActor->tid;
 			pNewActor->special = pActor->SavedSpecial;
 			pNewActor->SavedSpecial = pActor->SavedSpecial;
-			pNewActor->args[0] = pActor->args[0];
-			pNewActor->args[1] = pActor->args[1];
-			pNewActor->args[2] = pActor->args[2];
-			pNewActor->args[3] = pActor->args[3];
-			pNewActor->args[4] = pActor->args[4];
+			for ( int i = 0; i < 5; ++i )
+			{
+				pNewActor->args[i] = pActor->SavedArgs[i];
+				pNewActor->SavedArgs[i] = pActor->SavedArgs[i];
+			}
 			pNewActor->AddToHash( );
 
 			// Just do this stuff for monsters.
diff -r 158fa88e91ae src/p_mobj.cpp
--- a/src/p_mobj.cpp	Fri Jul 12 19:43:25 2013 +0200
+++ b/src/p_mobj.cpp	Sun Jul 14 17:22:53 2013 +0200
@@ -5504,6 +5504,10 @@
 	// [BC] Save the thing's special for resetting the map.
 	mobj->SavedSpecial = mobj->special;
 
+	// [Dusk] Save args
+	for (int i = 0; i < 5; ++i)
+		mobj->SavedArgs[i] = mobj->args[i];
+
 	// [RH] Add ThingID to mobj and link it in with the others
 	mobj->tid = mthing->thingid;
 	mobj->AddToHash ();
