Index: D:/Programming/magma/myth2/1.8-dev/Myth2Code/artifact_definitions.h
===================================================================
--- D:/Programming/magma/myth2/1.8-dev/Myth2Code/artifact_definitions.h	(revision 5123)
+++ D:/Programming/magma/myth2/1.8-dev/Myth2Code/artifact_definitions.h	(revision 5124)
@@ -50,6 +50,7 @@
 	// Build 303 - ALS - end change
 	_artifact_projectile_pickup_adds_charges_bit, // Build 400 - ALS
 	_artifact_charges_drop_as_ammo_bit, // Build 401 - ALS
+	_artifact_overrides_monster_collection_bit, // Build 403 - ALS
 
 	NUMBER_OF_ARTIFACT_FLAGS,
 	
@@ -75,7 +76,8 @@
 	_artifact_does_not_override_monster_effect_modifiers_flag= FLAG(_artifact_does_not_override_monster_effect_modifiers_bit),
 	// Build 303 - ALS - end change
 	_artifact_projectile_pickup_adds_charges_flag= FLAG(_artifact_projectile_pickup_adds_charges_bit), // Build 400 - ALS
-	_artifact_charges_drop_as_ammo_flag= FLAG(_artifact_charges_drop_as_ammo_bit) // Build 401 - ALS
+	_artifact_charges_drop_as_ammo_flag= FLAG(_artifact_charges_drop_as_ammo_bit), // Build 401 - ALS
+	_artifact_overrides_monster_collection_flag= FLAG(_artifact_overrides_monster_collection_bit), // Build 403 - ALS
 };
 
 enum // projectiles
Index: D:/Programming/magma/myth2/1.8-dev/Myth2Code/monsters.c
===================================================================
--- D:/Programming/magma/myth2/1.8-dev/Myth2Code/monsters.c	(revision 5123)
+++ D:/Programming/magma/myth2/1.8-dev/Myth2Code/monsters.c	(revision 5124)
@@ -902,7 +902,6 @@
 					
 				// Build 224 - ACS - just making sure
 				monster->marker_index = NONE; // Build 357 - ALS
-				monster->carried_artifact_flags = 0;
 			}
 			else
 			{
@@ -1135,7 +1134,6 @@
 
 				// Build 224 - ACS - just making sure
 				monster->marker_index = get_marker_index(marker); // Build 357 - ALS
-				monster->carried_artifact_flags = 0;
 			}
 			else
 			{
@@ -2985,7 +2983,6 @@
 	int new_monster_type = monster->orig_type;
 	boolean monster_needs_new_action= FALSE; // Build 350 - ALS
 
-	monster->carried_artifact_flags = 0;
 	monster->display_dirty_flags |= _monster_items_dirty_flag;
 	if (monster->carrying_object_index != NONE)
 	{
@@ -3007,8 +3004,6 @@
 				if (carried_object->expiry <= 0)
 					carried_object->expiry = artifact_definition->expiry_timer;
 
-				monster->carried_artifact_flags = artifact_definition->flags;  // Build 224 - ACS
-
 				if (artifact_overrides_monster(artifact_definition, monster, get_monster_definition(monster->orig_type))) // Build 401 - ALS - refactored
 				{
 					new_monster_type = artifact_definition->monster_override_type;
@@ -3026,11 +3021,19 @@
 	{
 		struct monster_definition *monster_definition = get_monster_definition(new_monster_type);
 		struct object_data *monster_object = get_object_data(monster->object_index);
+		struct artifact_definition *artifact_definition= get_artifact_definition(monster->artifact_index);
 
 		monster->type = new_monster_type;
 		monster->base_movement_speed = monster_definition->base_movement_speed;
 		monster->mana = MIN(monster->mana, monster_definition->maximum_mana);
 
+		// Build 403 - ALS - new flag to actually enable artifacts to switch monster collection
+		if (get_game_play_version() > GAMEPLAY_VERSION_172 && (artifact_definition->flags & _artifact_overrides_monster_collection_flag))
+		{
+			monster_object->shape_collection_index= monster_definition->collection_index;
+		}
+		// Build 403 - ALS - end change
+
 		if (monster_definition->flags & _monster_floats_flag)
 		{
 			monster_object->flags |= (_object_floats_on_land_flag|_object_floats_on_media_flag);
@@ -5251,8 +5254,8 @@
 #endif
 
 	// Build 224 - ACS
-	if (monster->carrying_object_index != NONE &&
-			(monster->carried_artifact_flags & _artifact_use_original_death_flag))
+	if (monster->carrying_object_index != NONE && monster->artifact_index != NONE &&
+			(get_artifact_definition(monster->artifact_index)->flags & _artifact_use_original_death_flag))
 	{
 		definition = get_monster_definition(monster->orig_type);
 	}
Index: D:/Programming/magma/myth2/1.8-dev/Myth2Code/monsters.h
===================================================================
--- D:/Programming/magma/myth2/1.8-dev/Myth2Code/monsters.h	(revision 5123)
+++ D:/Programming/magma/myth2/1.8-dev/Myth2Code/monsters.h	(revision 5124)
@@ -314,7 +314,7 @@
 	 (monster)->action != _monster_action_being_held && \
 	 (monster)->action != _monster_action_being_healed)
 
-#define SIZEOF_STRUCT_MONSTER_DATA 220
+#define SIZEOF_STRUCT_MONSTER_DATA 216
 struct monster_data
 {
 	DATUM_HEADER;
@@ -394,7 +394,6 @@
 	unsigned long artifact_timer;  // Build 217 - ACS - for timed expiry of artifacts
 
 	// Build 216 - ACS - backups of original values, for overriding artifacts
-	long carried_artifact_flags;
 	short orig_type;
 	short_world_distance orig_base_movement_speed;
 
Index: D:/Programming/magma/myth2/1.8-dev/Myth2Code/oos_debug.c
===================================================================
--- D:/Programming/magma/myth2/1.8-dev/Myth2Code/oos_debug.c	(revision 5123)
+++ D:/Programming/magma/myth2/1.8-dev/Myth2Code/oos_debug.c	(revision 5124)
@@ -356,10 +356,9 @@
 	_begin_bs_array, MAXIMUM_ARTIFACTS_PER_MONSTER, _2byte, _end_bs_array,
 	_2byte, _2byte, _4byte,
 	
-	// long carried_artifact_flags;
 	// short orig_type;
 	// short_world_distance orig_base_movement_speed;
-	_4byte, _2byte, _2byte,
+	_2byte, _2byte,
 
 	// void *monster_map_action_data;
 	// int marker_index; // Build 357 - ALS
@@ -530,7 +529,6 @@
 	fprintf(debug_file, "held_object_count= %d\n", monster->held_object_count);
 	fprintf(debug_file, "current_overhead_text_index= %d\n", monster->current_overhead_text_index);
 	fprintf(debug_file, "artifact_timer= %d\n", monster->artifact_timer);
-	fprintf(debug_file, "carried_artifact_flags= %d\n", monster->carried_artifact_flags);
 	fprintf(debug_file, "orig_type= %d\n", monster->orig_type);
 	fprintf(debug_file, "maximum_artifacts_carried= %d\n", monster->maximum_artifacts_carried);
 	fprintf(debug_file, "orig_base_movement_speed= %d\n", monster->orig_base_movement_speed);
