diff -r cb9670e7c501 docs/zandronum-history.txt
--- a/docs/zandronum-history.txt	Thu Jul 11 20:26:04 2013 +0200
+++ b/docs/zandronum-history.txt	Sat Jul 13 16:38:26 2013 +0300
@@ -99,6 +99,7 @@
 -	- Fixed an exploit that allowed a manipulated client to bring its player into an undefined state leading to various problems. Kudos to kgsws for finding and reporting this exploit. [Torr Samaho] 
 -	- 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: Arguments of dynamic lights were not restored upon map resets. [Dusk]
 !	- 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 cb9670e7c501 src/actor.h
--- a/src/actor.h	Thu Jul 11 20:26:04 2013 +0200
+++ b/src/actor.h	Sat Jul 13 16:38:26 2013 +0300
@@ -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 cb9670e7c501 src/g_game.cpp
--- a/src/g_game.cpp	Thu Jul 11 20:26:04 2013 +0200
+++ b/src/g_game.cpp	Sat Jul 13 16:38:26 2013 +0300
@@ -3237,6 +3237,12 @@
 					pActor->Destroy( );
 				continue;
 			}
+
+			// [Dusk] Hmm. Dynamic lights don't have net IDs yet their args need to be reset.
+			// Do so here. Maybe we need to reset more than just the args?
+			if ( pActor->lNetID == -1 )
+				for ( ULONG 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.
@@ -3645,11 +3651,10 @@
 				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->AddToHash( );
 
 				pNewActor->ulSTFlags |= STFL_LEVELSPAWNED;
@@ -3702,6 +3707,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++;
diff -r cb9670e7c501 src/p_mobj.cpp
--- a/src/p_mobj.cpp	Thu Jul 11 20:26:04 2013 +0200
+++ b/src/p_mobj.cpp	Sat Jul 13 16:38:26 2013 +0300
@@ -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 ();
