<NME> WhatTheHellIsSCD_ARK.cs
<BEF> ﻿using UnityEngine;
using System.Collections;
using System.Text;
using System.IO;



public class WhatTheHellIsSCD_ARK : UWEBase {

	public int InfoSize=4;

	public void DumpScdArkInfo(string SCD_Ark_File_Path, int LevelNo)
	{
		public void DumpScdArkInfo(string SCD_Ark_File_Path)
		{
				if (!DoTheThingThisCodeDoes)
				{
						return;
				}

				int LevelNo=0;
				string output="";
				StreamWriter writer;// = new StreamWriter( Application.dataPath + "//..//_scd_ark.txt", false);
				if (TableView)
				{
		int NoOfBlocks=(int)DataLoader.getValAtAddress(scd_ark_file_data,0,32);
		for (LevelNo=0; LevelNo<NoOfBlocks; LevelNo++)
		{
			writer.WriteLine("Block No " + LevelNo);	
			long address_pointer=6;
			int compressionFlag=(int)DataLoader.getValAtAddress(scd_ark_file_data,address_pointer + (NoOfBlocks*4) + (LevelNo*4) ,32);
			int datalen =(int)DataLoader.getValAtAddress(scd_ark_file_data,address_pointer + (NoOfBlocks*4*2) + (LevelNo*4) ,32);



				char[] scd_ark;	
				char[] scd_ark_file_data;
				if (!DataLoader.ReadStreamFile(Loader.BasePath +  SCD_Ark_File_Path, out scd_ark_file_data))
				{
						Debug.Log(Loader.BasePath + SCD_Ark_File_Path + " File not loaded");
						return;
				}	

				int NoOfBlocks=(int)DataLoader.getValAtAddress(scd_ark_file_data,0,32);
				for (LevelNo=0; LevelNo<NoOfBlocks; LevelNo++)
				{

						long address_pointer=6;
						int compressionFlag=(int)DataLoader.getValAtAddress(scd_ark_file_data,address_pointer + (NoOfBlocks*4) + (LevelNo*4) ,32);
						long datalen =DataLoader.getValAtAddress(scd_ark_file_data,address_pointer + (NoOfBlocks*4*2) + (LevelNo*4) ,32);
						int isCompressed =(compressionFlag>>1) & 0x01;
						long AddressOfBlockStart;
						address_pointer=(LevelNo * 4) + 6;
						//Debug.Log("Block " + LevelNo + " Datalen is " + datalen + " at address " + ( (int)DataLoader.getValAtAddress(scd_ark_file_data,address_pointer,32) ));
						if ((int)DataLoader.getValAtAddress(scd_ark_file_data,address_pointer,32)==0)
						{
								Debug.Log("No Scd.ark data for this level");
						}

						if (isCompressed == 1)
						{//should not happen in scd.ark
			}
			int add_ptr=0;
				//Output data
			for (int i=0; i<datalen/InfoSize; i++)
			{
				output="";
				for (int d= 0; d<InfoSize; d++)
				{
					output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + ",";
				}

				writer.WriteLine(output);
							
			}
		}
		writer.Close();

	}
														output = output + AddressOfBlockStart+add_ptr + "," + LevelNo +",";	
												}
												switch(r)
												{													
												case 2://type
														{
																output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr,8) +"," ;
																switch ((int)DataLoader.getValAtAddress(scd_ark,add_ptr,8))
																{//TODO:Add all the identified types in event_action.cs
																case event_base.RowTypeSetNPCGoal:
																		output = output + "SetGoal";
																		break;
																case event_base.RowTypeCondition:
																		output = output + "Condition";
																		break;
																case event_base.RowTypeKillNPC:
																		output =output+"KillNPC";
																		break;
																case event_base.RowTypeFireTriggers:
																		output = output + "FireTrigger";
																		break;
																case event_base.RowTypeScheduled:
																		output = output + "ScheduledEvent";
																		break;
																case event_base.RowTypeRaceAttidude:
																		output = output + "RaceAttitude";
																		break;
																case event_base.RowTypeSetProps:
																		output = output + "SetProps";
																		break;
																case event_base.RowTypeRemoveNPC:
																		output = output + "RemoveNPC";
																		break;
																case event_base.RowTypeKillNPCorRace:
																		output=output + "KillNPCorRace";
																		break;
																case event_base.RowTypePlaceNPC:
																		output = output + "PlaceNPC";
																		break;
																case event_base.RowTypeSetNPCGOAL_Alt:
																		output = output + "SetGoal Alt";
																		break;
																default:
																		output = output + "UNK";
																		break;
																}

																add_ptr++;
																break;
														}

												default:
														output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8);// + ",";
														break;
												}


												r++;
												if (r==16)
												{
														r=0;
														output = output +"\n"; 		
												}
												else
												{
														output=output + ",";	
												}

										}
										output = output +"\n";
								}

						}
						else
						{
								output = output + "Block no " + LevelNo + " at address " + AddressOfBlockStart + "\n";
								output = output+ "No of rows " + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + "\n";
								int noOfRows = (int)DataLoader.getValAtAddress(scd_ark,0,8);
								if (noOfRows!=0)
								{
										output = output + "Unknown info 1-325\n";
										for (int i=1;i<324;i++)
										{
												output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + "\n";		
										}


										output = output +"Row Data\nr\n";
										add_ptr=326;
										int r=0;

										for (int i=326; i<datalen; i++)
										{				

												output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + "\n";
												r++;
												if (r==16)
												{
														r=0;
														output = output +"r\n"; 		
												}

										}
								}		
						}


				}
				writer.WriteLine(output);
				writer.Close();

		}
}

<MSG> More notes on scd.ark and scheduled trigger. 
Change to output structure of scd.ark data to text file.
<DFF> @@ -7,7 +7,7 @@ using System.IO;
 
 public class WhatTheHellIsSCD_ARK : UWEBase {
 
-	public int InfoSize=4;
+	public int InfoSize=16;
 
 	public void DumpScdArkInfo(string SCD_Ark_File_Path, int LevelNo)
 	{
@@ -26,7 +26,7 @@ public class WhatTheHellIsSCD_ARK : UWEBase {
 		int NoOfBlocks=(int)DataLoader.getValAtAddress(scd_ark_file_data,0,32);
 		for (LevelNo=0; LevelNo<NoOfBlocks; LevelNo++)
 		{
-			writer.WriteLine("Block No " + LevelNo);	
+
 			long address_pointer=6;
 			int compressionFlag=(int)DataLoader.getValAtAddress(scd_ark_file_data,address_pointer + (NoOfBlocks*4) + (LevelNo*4) ,32);
 			int datalen =(int)DataLoader.getValAtAddress(scd_ark_file_data,address_pointer + (NoOfBlocks*4*2) + (LevelNo*4) ,32);
@@ -62,18 +62,39 @@ public class WhatTheHellIsSCD_ARK : UWEBase {
 			}
 			int add_ptr=0;
 				//Output data
-			for (int i=0; i<datalen/InfoSize; i++)
+						Debug.Log("block no " + LevelNo);
+			output = output + "\nBlock no " + LevelNo + "\n";
+			output = output+ "No of rows " + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + "\n";
+			int noOfRows = (int)DataLoader.getValAtAddress(scd_ark,0,8);
+			if (noOfRows!=0)
 			{
-				output="";
-				for (int d= 0; d<InfoSize; d++)
+				output = output + "Unknown info 1-325\n";
+				for (int i=1;i<324;i++)
 				{
-					output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + ",";
+					output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + ",";		
 				}
+			
+
+				output = output +"\nRow Data\n";
+				add_ptr=326;
+								int r=0;
+				//for (int i=0; i<noOfRows; i++)
+				for (int i=326; i<datalen; i++)
+				{				
 
-				writer.WriteLine(output);
-							
+					output = output + (int)DataLoader.getValAtAddress(scd_ark,add_ptr++,8) + ",";
+					r++;
+					if (r==16)
+					{
+							r=0;
+							output = output +"\n"; 		
+					}
+
+													 
+				}
 			}
 		}
+		writer.WriteLine(output);
 		writer.Close();
 
 	}

More notes on scd.ark and scheduled trigger.  Change to output structure of scd.ark data to text file.