VERSION 5.00
Begin VB.Form frmLevelHeader 
   Caption         =   "Level Header Info"
   ClientHeight    =   5250
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   7650
   Icon            =   "frmLevelHeader.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   ScaleHeight     =   5250
   ScaleWidth      =   7650
   StartUpPosition =   3  'Windows Default
   Begin VB.TextBox txtRunSOC 
      Height          =   285
      Left            =   6240
      MaxLength       =   8
      TabIndex        =   49
      Top             =   4680
      Width           =   1215
   End
   Begin VB.CheckBox chkLevelSelect 
      Caption         =   "Show on Host Game selection menu"
      Height          =   375
      Left            =   1680
      TabIndex        =   48
      Top             =   4800
      Width           =   1935
   End
   Begin VB.CheckBox chkTimeAttack 
      Caption         =   "Include in Time Attack calculations"
      Height          =   255
      Left            =   1680
      TabIndex        =   47
      Top             =   4440
      Width           =   2775
   End
   Begin VB.CheckBox chkNoReload 
      Caption         =   "Retain level state when player dies."
      Height          =   255
      Left            =   1680
      TabIndex        =   46
      Top             =   4080
      Width           =   2895
   End
   Begin VB.CommandButton cmdSave 
      Caption         =   "&Save Map"
      Height          =   735
      Left            =   120
      Style           =   1  'Graphical
      TabIndex        =   45
      Top             =   4440
      Width           =   1215
   End
   Begin VB.CommandButton cmdRename 
      Caption         =   "&Rename Map"
      Height          =   375
      Left            =   120
      TabIndex        =   44
      Top             =   3960
      Width           =   1215
   End
   Begin VB.CommandButton cmdDelete 
      Caption         =   "&Delete Map"
      Height          =   375
      Left            =   120
      TabIndex        =   43
      Top             =   3480
      Width           =   1215
   End
   Begin VB.CommandButton cmdAddMap 
      Caption         =   "&Add Map"
      Height          =   375
      Left            =   120
      TabIndex        =   42
      Top             =   3000
      Width           =   1215
   End
   Begin VB.CheckBox chkNossmusic 
      Caption         =   "Disable Super Sonic music changes"
      Height          =   255
      Left            =   4560
      TabIndex        =   29
      Top             =   1200
      Width           =   2895
   End
   Begin VB.CheckBox chkHidden 
      Caption         =   "Don't show on level selection menu"
      Height          =   255
      Left            =   4560
      TabIndex        =   28
      Top             =   480
      Width           =   2895
   End
   Begin VB.TextBox txtCountdown 
      Height          =   285
      Left            =   6360
      MaxLength       =   3
      TabIndex        =   26
      Top             =   840
      Width           =   735
   End
   Begin VB.TextBox txtCutscenenum 
      Height          =   285
      Left            =   4440
      MaxLength       =   3
      TabIndex        =   25
      Top             =   3720
      Width           =   495
   End
   Begin VB.TextBox txtPrecutscenenum 
      Height          =   285
      Left            =   2640
      MaxLength       =   3
      TabIndex        =   22
      Top             =   3720
      Width           =   495
   End
   Begin VB.CheckBox chkScriptislump 
      Caption         =   "Script is a lump in WAD, not a file"
      Height          =   255
      Left            =   1680
      TabIndex        =   21
      Top             =   3360
      Width           =   2775
   End
   Begin VB.TextBox txtScriptname 
      Height          =   285
      Left            =   2640
      MaxLength       =   191
      TabIndex        =   19
      Top             =   3000
      Width           =   1455
   End
   Begin VB.TextBox txtSkynum 
      Height          =   285
      Left            =   2640
      MaxLength       =   4
      TabIndex        =   17
      Top             =   2640
      Width           =   495
   End
   Begin VB.ComboBox cmbWeather 
      Height          =   315
      ItemData        =   "frmLevelHeader.frx":0442
      Left            =   2640
      List            =   "frmLevelHeader.frx":0458
      TabIndex        =   15
      Top             =   2280
      Width           =   2295
   End
   Begin VB.TextBox txtForcecharacter 
      Height          =   285
      Left            =   2640
      MaxLength       =   2
      TabIndex        =   13
      Top             =   1920
      Width           =   495
   End
   Begin VB.ComboBox cmbMusicslot 
      Height          =   315
      Left            =   2640
      TabIndex        =   11
      Top             =   1560
      Width           =   1815
   End
   Begin VB.TextBox txtNextlevel 
      Height          =   285
      Left            =   2640
      MaxLength       =   4
      TabIndex        =   9
      Top             =   1200
      Width           =   615
   End
   Begin VB.Frame frmTypeOfLevel 
      Caption         =   "Type of Level"
      Height          =   2775
      Left            =   5040
      TabIndex        =   8
      Top             =   1680
      Width           =   2535
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Christmas"
         Height          =   255
         Index           =   11
         Left            =   1440
         TabIndex        =   41
         Tag             =   "1024"
         Top             =   960
         Width           =   975
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "2D"
         Height          =   255
         Index           =   10
         Left            =   1440
         TabIndex        =   40
         Tag             =   "512"
         Top             =   720
         Width           =   735
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Mario"
         Height          =   255
         Index           =   9
         Left            =   120
         TabIndex        =   39
         Tag             =   "256"
         Top             =   2400
         Width           =   1455
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Sonic Adventure"
         Height          =   255
         Index           =   8
         Left            =   120
         TabIndex        =   38
         Tag             =   "128"
         Top             =   2160
         Width           =   1575
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "NiGHTS"
         Height          =   255
         Index           =   7
         Left            =   120
         TabIndex        =   37
         Tag             =   "64"
         Top             =   1920
         Width           =   1335
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Chaos"
         Height          =   255
         Index           =   6
         Left            =   120
         TabIndex        =   36
         Tag             =   "32"
         Top             =   1680
         Width           =   1455
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Capture the Flag"
         Height          =   255
         Index           =   5
         Left            =   120
         TabIndex        =   35
         Tag             =   "16"
         Top             =   1440
         Width           =   1695
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Tag"
         Height          =   255
         Index           =   4
         Left            =   120
         TabIndex        =   34
         Tag             =   "8"
         Top             =   1200
         Width           =   1215
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Match"
         Height          =   255
         Index           =   3
         Left            =   120
         TabIndex        =   33
         Tag             =   "4"
         Top             =   960
         Width           =   855
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Race"
         Height          =   255
         Index           =   2
         Left            =   120
         TabIndex        =   32
         Tag             =   "2"
         Top             =   720
         Width           =   855
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Cooperative"
         Height          =   255
         Index           =   1
         Left            =   120
         TabIndex        =   31
         Tag             =   "1"
         Top             =   480
         Width           =   1215
      End
      Begin VB.CheckBox chkTypeoflevel 
         Caption         =   "Single Player"
         Height          =   255
         Index           =   0
         Left            =   120
         TabIndex        =   30
         Tag             =   "4096"
         Top             =   240
         Width           =   1215
      End
   End
   Begin VB.CheckBox chkNozone 
      Caption         =   "Don't show ""ZONE"" after Level Name"
      Height          =   255
      Left            =   4560
      TabIndex        =   7
      Top             =   120
      Width           =   3015
   End
   Begin VB.TextBox txtAct 
      Height          =   285
      Left            =   2640
      MaxLength       =   2
      TabIndex        =   5
      Top             =   840
      Width           =   495
   End
   Begin VB.TextBox txtInterscreen 
      Height          =   285
      Left            =   2640
      MaxLength       =   8
      TabIndex        =   3
      Top             =   480
      Width           =   1335
   End
   Begin VB.ListBox lstMaps 
      Height          =   2790
      Left            =   120
      Sorted          =   -1  'True
      TabIndex        =   2
      Top             =   120
      Width           =   1215
   End
   Begin VB.TextBox txtLevelName 
      Height          =   285
      Left            =   2640
      MaxLength       =   32
      TabIndex        =   0
      Top             =   120
      Width           =   1815
   End
   Begin VB.Label lblRunSOC 
      Alignment       =   1  'Right Justify
      Caption         =   "Run SOC at level load (lump name):"
      Height          =   495
      Left            =   4440
      TabIndex        =   50
      Top             =   4560
      Width           =   1695
   End
   Begin VB.Label lblCountdown 
      Alignment       =   1  'Right Justify
      Caption         =   "Level Timer (seconds):"
      Height          =   255
      Left            =   4560
      TabIndex        =   27
      Top             =   840
      Width           =   1695
   End
   Begin VB.Label lblCutscenenum 
      Alignment       =   1  'Right Justify
      Caption         =   "Cutscene to play after level:"
      Height          =   495
      Left            =   3240
      TabIndex        =   24
      Top             =   3600
      Width           =   1095
   End
   Begin VB.Label lblPrecutscenenum 
      Alignment       =   1  'Right Justify
      Caption         =   "Cutscene to play before level:"
      Height          =   375
      Left            =   1320
      TabIndex        =   23
      Top             =   3600
      Width           =   1215
   End
   Begin VB.Label lblScriptName 
      Alignment       =   1  'Right Justify
      Caption         =   "Script Name:"
      Height          =   255
      Left            =   1440
      TabIndex        =   20
      Top             =   3000
      Width           =   1095
   End
   Begin VB.Label lblSkynum 
      Alignment       =   1  'Right Justify
      Caption         =   "Sky #:"
      Height          =   255
      Left            =   1800
      TabIndex        =   18
      Top             =   2640
      Width           =   735
   End
   Begin VB.Label Label1 
      Alignment       =   1  'Right Justify
      Caption         =   "Weather:"
      Height          =   255
      Left            =   1680
      TabIndex        =   16
      Top             =   2280
      Width           =   855
   End
   Begin VB.Label lblForcecharacter 
      Caption         =   "Force Character #:"
      Height          =   375
      Left            =   1440
      TabIndex        =   14
      Top             =   1800
      Width           =   1095
   End
   Begin VB.Label lblMusicslot 
      Alignment       =   1  'Right Justify
      Caption         =   "Music:"
      Height          =   255
      Left            =   1800
      TabIndex        =   12
      Top             =   1560
      Width           =   735
   End
   Begin VB.Label lblNextlevel 
      Alignment       =   1  'Right Justify
      Caption         =   "Next Level:"
      Height          =   255
      Left            =   1440
      TabIndex        =   10
      Top             =   1200
      Width           =   1095
   End
   Begin VB.Label lblAct 
      Alignment       =   1  'Right Justify
      Caption         =   "Act:"
      Height          =   255
      Left            =   2040
      TabIndex        =   6
      Top             =   840
      Width           =   495
   End
   Begin VB.Label lblInterscreen 
      Alignment       =   1  'Right Justify
      Caption         =   "Intermission BG:"
      Height          =   255
      Left            =   1320
      TabIndex        =   4
      Top             =   480
      Width           =   1215
   End
   Begin VB.Label lblLevelName 
      Alignment       =   1  'Right Justify
      Caption         =   "Level Name:"
      Height          =   255
      Left            =   1560
      TabIndex        =   1
      Top             =   120
      Width           =   975
   End
End
Attribute VB_Name = "frmLevelHeader"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Sub cmdAddMap_Click()
    Dim Response As String
    Dim NewNum As Integer
    
    Response$ = InputBox("Enter the new level (NUMBER ONLY):")
    
    If Response = "" Then
        Exit Sub
    End If
    
    NewNum = Val(TrimComplete(Response))
    
    lstMaps.AddItem "Level " & NewNum
    lstMaps.ListIndex = lstMaps.ListCount - 1
End Sub

Private Sub cmdDelete_Click()
    Dim i As Integer
    
    If MsgBox("Delete this level header?", vbYesNo) = vbNo Then
        Exit Sub
    End If
    
    i = InStr(lstMaps.List(lstMaps.ListIndex), " ") + 1
    
    i = Mid(lstMaps.List(lstMaps.ListIndex), i, Len(lstMaps.List(lstMaps.ListIndex)) - i + 1)
    i = Val(i)
    Call WriteLevel(True, i)
    lstMaps.RemoveItem lstMaps.ListIndex
    
    If lstMaps.ListCount > 0 Then
        lstMaps.ListIndex = 0
    End If
End Sub

Private Sub cmdRename_Click()
    Dim Response As String
    Dim NewNum As Integer
    Dim i As Integer
    
    Response$ = InputBox("Rename level to (NUMBER ONLY):")
    
    If Response = "" Then
        Exit Sub
    End If
    
    NewNum = Val(TrimComplete(Response))
    
    i = InStr(lstMaps.List(lstMaps.ListIndex), " ") + 1
    
    i = Mid(lstMaps.List(lstMaps.ListIndex), i, Len(lstMaps.List(lstMaps.ListIndex)) - i + 1)
    i = Val(i)
    Call WriteLevel(True, i)
    lstMaps.List(lstMaps.ListIndex) = "Level " & NewNum
    Call cmdSave_Click
End Sub

Private Sub cmdSave_Click()
    Dim i As Integer
    
    i = InStr(lstMaps.List(lstMaps.ListIndex), " ") + 1
    
    i = Val(Mid(lstMaps.List(lstMaps.ListIndex), i, Len(lstMaps.List(lstMaps.ListIndex)) - i + 1))
    Call WriteLevel(False, i)
End Sub

Private Sub Form_Load()
    Call LoadMusic
    Call LoadSOCMaps
    If lstMaps.ListCount > 0 Then lstMaps.ListIndex = 0
End Sub

Private Sub LoadSOCMaps()
    Dim myFSO As New Scripting.FileSystemObject
    Dim ts As TextStream
    Dim line As String
    Dim word As String
    Dim word2 As String
    
    Set ts = myFSO.OpenTextFile(SOCFile, ForReading, False)
    
    lstMaps.Clear
    
SOCLoad:
    Do While Not ts.AtEndOfStream
        line = ts.ReadLine
        
        If Left(line, 1) = "#" Then GoTo SOCLoad
        
        If Left(line, 1) = vbCrLf Then GoTo SOCLoad
        
        If Len(line) < 1 Then GoTo SOCLoad
        
        word = FirstToken(line)
        word2 = SecondToken(line)
        
        If UCase(word) = "LEVEL" Then
            lstMaps.AddItem ("Level " & Val(word2))
        End If
    Loop
    
    ts.Close
    Set myFSO = Nothing
End Sub

Private Sub LoadMusic()
    Dim myFSO As New Scripting.FileSystemObject
    Dim ts As TextStream
    Dim line As String
    Dim number As Integer
    Dim startclip As Integer, endclip As Integer
    Dim addstring As String
    
    ChDir SourcePath
    Set ts = myFSO.OpenTextFile("sounds.h", ForReading, False)
    
    Do While InStr(ts.ReadLine, "Music list (don't edit this comment!)") = 0
    Loop
    
    ts.SkipLine ' typedef enum
    ts.SkipLine ' {
    
    line = ts.ReadLine
    number = 0
    
    cmbMusicslot.Clear
    
    Do While InStr(line, "NUMMUSIC") = 0
        startclip = InStr(line, "mus_")
        If InStr(line, "mus_") <> 0 Then
            endclip = InStr(line, ",")
            line = Mid(line, startclip, endclip - startclip)
            addstring = number & " - " & line
            cmbMusicslot.AddItem addstring
            number = number + 1
        End If
        line = ts.ReadLine
    Loop
    
    ts.Close
    Set myFSO = Nothing
End Sub

Private Sub ClearForm()
    Dim j As Integer
    
    txtLevelName.Text = ""
    txtInterscreen.Text = ""
    txtAct.Text = ""
    txtNextlevel.Text = ""
    cmbMusicslot.Text = ""
    txtForcecharacter.Text = ""
    cmbWeather.Text = ""
    txtSkynum.Text = ""
    txtScriptname.Text = ""
    chkScriptislump.Value = 0
    txtPrecutscenenum.Text = ""
    txtCutscenenum.Text = ""
    txtRunSOC.Text = ""
    chkNozone.Value = 0
    chkHidden.Value = 0
    txtCountdown.Text = ""
    chkNossmusic.Value = 0
    chkNoReload.Value = 0
    chkTimeAttack.Value = 0
    chkLevelSelect = 0
    
    For j = 0 To 11
        chkTypeoflevel(j).Value = 0
    Next j
End Sub

Private Sub lstMaps_Click()
    Dim startclip As Integer
    Call ClearForm
    startclip = InStr(lstMaps.List(lstMaps.ListIndex), " ")
    Call LoadSOCMapInfo(Val(Mid(lstMaps.List(lstMaps.ListIndex), startclip + 1, Len(lstMaps.List(lstMaps.ListIndex)))))
End Sub

Private Sub LoadSOCMapInfo(num As Integer)
    Dim myFSO As New Scripting.FileSystemObject
    Dim ts As TextStream
    Dim line As String
    Dim word As String
    Dim word2 As String
    
    Set ts = myFSO.OpenTextFile(SOCFile, ForReading, False)
    
SOCLoad:
    Do While Not ts.AtEndOfStream
        line = ts.ReadLine
        
        If Left(line, 1) = "#" Then GoTo SOCLoad
        
        If Left(line, 1) = vbCrLf Then GoTo SOCLoad
        
        If Len(line) < 1 Then GoTo SOCLoad
        
        word = UCase(FirstToken(line))
        word2 = UCase(SecondToken(line))
        
        If word = "LEVEL" Then
            If Val(word2) = num Then
                Do While Len(line) > 0 And Not ts.AtEndOfStream
                    line = ts.ReadLine
                    word = UCase(FirstToken(line))
                    word2 = UCase(SecondTokenEqual(line))
                    
                    If word = "LEVELNAME" Then
                        txtLevelName.Text = word2
                    ElseIf word = "INTERSCREEN" Then
                        txtInterscreen.Text = word2
                    ElseIf word = "ACT" Then
                        txtAct.Text = Val(word2)
                    ElseIf word = "NOZONE" Then
                        chkNozone.Value = Val(word2)
                    ElseIf word = "TYPEOFLEVEL" Then
                        ProcessMapFlags (Val(word2))
                    ElseIf word = "NEXTLEVEL" Then
                        txtNextlevel.Text = Val(word2)
                    ElseIf word = "MUSICSLOT" Then
                        cmbMusicslot.ListIndex = Val(word2)
                    ElseIf word = "FORCECHARACTER" Then
                        txtForcecharacter.Text = Val(word2)
                    ElseIf word = "WEATHER" Then
                        cmbWeather.ListIndex = Val(word2)
                    ElseIf word = "SKYNUM" Then
                        txtSkynum.Text = Val(word2)
                    ElseIf word = "SCRIPTNAME" Then
                        txtScriptname.Text = word2
                    ElseIf word = "SCRIPTISLUMP" Then
                        chkScriptislump.Value = Val(word2)
                    ElseIf word = "PRECUTSCENENUM" Then
                        txtPrecutscenenum.Text = Val(word2)
                    ElseIf word = "CUTSCENENUM" Then
                        txtCutscenenum.Text = Val(word2)
                    ElseIf word = "COUNTDOWN" Then
                        txtCountdown.Text = Val(word2)
                    ElseIf word = "HIDDEN" Then
                        chkHidden.Value = Val(word2)
                    ElseIf word = "NOSSMUSIC" Then
                        chkNossmusic.Value = Val(word2)
                    ElseIf word = "NORELOAD" Then
                        chkNoReload.Value = Val(word2)
                    ElseIf word = "TIMEATTACK" Then
                        chkTimeAttack.Value = Val(word2)
                    ElseIf word = "LEVELSELECT" Then
                        chkLevelSelect.Value = Val(word2)
                    ElseIf word = "RUNSOC" Then
                        txtRunSOC.Text = word2
                   ElseIf Len(line) > 0 And Left(line, 1) <> "#" Then
                        MsgBox "Error in SOC!" & vbCrLf & "Unknown line: " & line
                    End If
                Loop
                Exit Do
            End If
        End If
    Loop
    
    ts.Close
    Set myFSO = Nothing
End Sub

Private Sub ProcessMapFlags(flags As Long)
    Dim j As Integer
    
    For j = 0 To 11
        If flags And chkTypeoflevel(j).Tag Then
            chkTypeoflevel(j).Value = 1
        Else
            chkTypeoflevel(j).Value = 0
        End If
    Next j
End Sub

Private Sub WriteLevel(Remove As Boolean, Mapnum As Integer)
    Dim myFSOSource As New Scripting.FileSystemObject
    Dim tsSource As TextStream
    Dim myFSOTarget As New Scripting.FileSystemObject
    Dim tsTarget As TextStream
    Dim line As String
    Dim word As String
    Dim word2 As String
    Dim flags As Long
    Dim i As Integer
    
    Set tsSource = myFSOSource.OpenTextFile(SOCFile, ForReading, False)
    Set tsTarget = myFSOTarget.OpenTextFile(SOCTemp, ForWriting, True)
    
    Do While Not tsSource.AtEndOfStream
        line = tsSource.ReadLine
        word = UCase(FirstToken(line))
        word2 = UCase(SecondToken(line))
        
        i = InStr(lstMaps.List(lstMaps.ListIndex), " ") + 1
    
        i = Mid(lstMaps.List(lstMaps.ListIndex), i, Len(lstMaps.List(lstMaps.ListIndex)) - i + 1)
        i = Val(i)
        'If the current level exists in the SOC, delete it.
        If word = "LEVEL" And Val(word2) = i Then
            Do While Len(TrimComplete(tsSource.ReadLine)) > 0 And Not (tsSource.AtEndOfStream)
            Loop
        Else
            tsTarget.WriteLine line
        End If
    Loop
    
    tsSource.Close
    Set myFSOSource = Nothing
    
    If Remove = False Then
        If line <> "" Then tsTarget.WriteLine ""
    
        tsTarget.WriteLine UCase(lstMaps.List(lstMaps.ListIndex))
        txtLevelName.Text = TrimComplete(txtLevelName.Text)
        txtInterscreen.Text = TrimComplete(txtInterscreen.Text)
        txtAct.Text = TrimComplete(txtAct.Text)
        txtNextlevel.Text = TrimComplete(txtNextlevel.Text)
        cmbMusicslot.Text = TrimComplete(cmbMusicslot.Text)
        txtForcecharacter.Text = TrimComplete(txtForcecharacter.Text)
        cmbWeather.Text = TrimComplete(cmbWeather.Text)
        txtSkynum.Text = TrimComplete(txtSkynum.Text)
        txtScriptname.Text = TrimComplete(txtScriptname.Text)
        txtPrecutscenenum.Text = TrimComplete(txtPrecutscenenum.Text)
        txtCutscenenum.Text = TrimComplete(txtCutscenenum.Text)
        txtCountdown.Text = TrimComplete(txtCountdown.Text)
        txtRunSOC.Text = TrimComplete(txtRunSOC.Text)
        
        If txtLevelName.Text <> "" Then tsTarget.WriteLine "LEVELNAME = " & txtLevelName.Text
        If txtInterscreen.Text <> "" Then tsTarget.WriteLine "INTERSCREEN = " & txtInterscreen.Text
        If txtAct.Text <> "" Then tsTarget.WriteLine "ACT = " & Val(txtAct.Text)
        If txtNextlevel.Text <> "" Then tsTarget.WriteLine "NEXTLEVEL = " & Val(txtNextlevel.Text)
        If cmbMusicslot.Text <> "" Then tsTarget.WriteLine "MUSICSLOT = " & cmbMusicslot.ListIndex
        If txtForcecharacter.Text <> "" Then tsTarget.WriteLine "FORCECHARACTER = " & Val(txtForcecharacter.Text)
        If cmbWeather.Text <> "" Then tsTarget.WriteLine "WEATHER = " & cmbWeather.ListIndex
        If txtSkynum.Text <> "" Then tsTarget.WriteLine "SKYNUM = " & Val(txtSkynum.Text)
        If txtScriptname.Text <> "" Then tsTarget.WriteLine "SCRIPTNAME = " & txtScriptname.Text
        If txtPrecutscenenum.Text <> "" Then tsTarget.WriteLine "PRECUTSCENENUM = " & Val(txtPrecutscenenum.Text)
        If txtCutscenenum.Text <> "" Then tsTarget.WriteLine "CUTSCENENUM = " & Val(txtCutscenenum.Text)
        If txtCountdown.Text <> "" Then tsTarget.WriteLine "COUNTDOWN = " & Val(txtCountdown.Text)
        If chkScriptislump.Value = 1 Then tsTarget.WriteLine "SCRIPTISLUMP = 1"
        If chkNozone.Value = 1 Then tsTarget.WriteLine "NOZONE = 1"
        If chkHidden.Value = 1 Then tsTarget.WriteLine "HIDDEN = 1"
        If chkNossmusic.Value = 1 Then tsTarget.WriteLine "NOSSMUSIC = 1"
        If chkNoReload.Value = 1 Then tsTarget.WriteLine "NORELOAD = 1"
        If chkTimeAttack.Value = 1 Then tsTarget.WriteLine "TIMEATTACK = 1"
        If chkLevelSelect.Value = 1 Then tsTarget.WriteLine "LEVELSELECT = 1"
        If txtRunSOC.Text <> "" Then tsTarget.WriteLine "RUNSOC = " & txtRunSOC.Text
    
        flags = 0
        For i = 0 To 11
            If chkTypeoflevel(i).Value = 1 Then
                flags = flags + Val(chkTypeoflevel(i).Tag)
            End If
        Next
        
        If flags > 0 Then tsTarget.WriteLine "TYPEOFLEVEL = " & flags
    End If
    
    tsTarget.Close
    Set myFSOTarget = Nothing
    
    FileCopy SOCTemp, SOCFile
    
    Kill SOCTemp
    
    If Remove = True Then
        MsgBox "Level Deleted."
    Else
        MsgBox "Level Saved."
    End If
End Sub