From 292b8d14700fd9ebf4eed49311fdc11a72c7fd7d Mon Sep 17 00:00:00 2001
From: Eidolon <furyhunter600@gmail.com>
Date: Sun, 17 Jul 2022 19:52:41 -0500
Subject: [PATCH] Remove unmaintained SOCEdit

Written in VB6. Superceded by better tools and also probably not even
buildable anymore.
---
 tools/SOCEdit/Global.bas             |   96 --
 tools/SOCEdit/SOCEdit.vbp            |   53 -
 tools/SOCEdit/Things.frm             | 1895 --------------------------
 tools/SOCEdit/Things.frx             |  Bin 1094 -> 0 bytes
 tools/SOCEdit/frmCharacterEdit.frm   |  320 -----
 tools/SOCEdit/frmCharacterEdit.frx   |  Bin 1215 -> 0 bytes
 tools/SOCEdit/frmCutsceneEdit.frm    | 1365 -------------------
 tools/SOCEdit/frmCutsceneEdit.frx    |  Bin 1098 -> 0 bytes
 tools/SOCEdit/frmEmblemEdit.frm      |  384 ------
 tools/SOCEdit/frmEmblemEdit.frx      |  Bin 1090 -> 0 bytes
 tools/SOCEdit/frmHUDEdit.frm         |  315 -----
 tools/SOCEdit/frmHUDEdit.frx         |  Bin 1090 -> 0 bytes
 tools/SOCEdit/frmHelp.frm            |  213 ---
 tools/SOCEdit/frmHelp.frx            |  Bin 2795 -> 0 bytes
 tools/SOCEdit/frmHub.frm             |  429 ------
 tools/SOCEdit/frmHub.frx             |  Bin 50308 -> 0 bytes
 tools/SOCEdit/frmLevelHeader.frm     |  839 ------------
 tools/SOCEdit/frmLevelHeader.frx     |  Bin 1204 -> 0 bytes
 tools/SOCEdit/frmMaincfg.frm         |  644 ---------
 tools/SOCEdit/frmMaincfg.frx         |  Bin 1090 -> 0 bytes
 tools/SOCEdit/frmSoundEdit.frm       |  485 -------
 tools/SOCEdit/frmSoundEdit.frx       |  Bin 1094 -> 0 bytes
 tools/SOCEdit/frmStateEdit.frm       |  940 -------------
 tools/SOCEdit/frmStateEdit.frx       |  Bin 1254 -> 0 bytes
 tools/SOCEdit/frmUnlockablesEdit.frm |  391 ------
 tools/SOCEdit/frmUnlockablesEdit.frx |  Bin 1399 -> 0 bytes
 tools/SOCEdit/icon1.ico              |  Bin 1078 -> 0 bytes
 27 files changed, 8369 deletions(-)
 delete mode 100644 tools/SOCEdit/Global.bas
 delete mode 100644 tools/SOCEdit/SOCEdit.vbp
 delete mode 100644 tools/SOCEdit/Things.frm
 delete mode 100644 tools/SOCEdit/Things.frx
 delete mode 100644 tools/SOCEdit/frmCharacterEdit.frm
 delete mode 100644 tools/SOCEdit/frmCharacterEdit.frx
 delete mode 100644 tools/SOCEdit/frmCutsceneEdit.frm
 delete mode 100644 tools/SOCEdit/frmCutsceneEdit.frx
 delete mode 100644 tools/SOCEdit/frmEmblemEdit.frm
 delete mode 100644 tools/SOCEdit/frmEmblemEdit.frx
 delete mode 100644 tools/SOCEdit/frmHUDEdit.frm
 delete mode 100644 tools/SOCEdit/frmHUDEdit.frx
 delete mode 100644 tools/SOCEdit/frmHelp.frm
 delete mode 100644 tools/SOCEdit/frmHelp.frx
 delete mode 100644 tools/SOCEdit/frmHub.frm
 delete mode 100644 tools/SOCEdit/frmHub.frx
 delete mode 100644 tools/SOCEdit/frmLevelHeader.frm
 delete mode 100644 tools/SOCEdit/frmLevelHeader.frx
 delete mode 100644 tools/SOCEdit/frmMaincfg.frm
 delete mode 100644 tools/SOCEdit/frmMaincfg.frx
 delete mode 100644 tools/SOCEdit/frmSoundEdit.frm
 delete mode 100644 tools/SOCEdit/frmSoundEdit.frx
 delete mode 100644 tools/SOCEdit/frmStateEdit.frm
 delete mode 100644 tools/SOCEdit/frmStateEdit.frx
 delete mode 100644 tools/SOCEdit/frmUnlockablesEdit.frm
 delete mode 100644 tools/SOCEdit/frmUnlockablesEdit.frx
 delete mode 100644 tools/SOCEdit/icon1.ico

diff --git a/tools/SOCEdit/Global.bas b/tools/SOCEdit/Global.bas
deleted file mode 100644
index 77bf3df2b7..0000000000
--- a/tools/SOCEdit/Global.bas
+++ /dev/null
@@ -1,96 +0,0 @@
-Attribute VB_Name = "Module1"
-Option Explicit
-Public SOCFile As String
-Public SOCTemp As String
-Public SourcePath As String
-
-Public Function FirstToken(ByVal line As String)
-    Dim index As Integer
-
-    index = InStr(line, " ") - 1
-    
-    If index < 1 Then
-        index = Len(line)
-    End If
-    
-    FirstToken = TrimComplete(Left(line, index))
-End Function
-
-Public Function SecondToken(ByVal line As String)
-    Dim startclip As Integer
-    Dim endclip As Integer
-    
-    startclip = InStr(line, " ")
-    
-    startclip = startclip + 1
-    
-    SecondToken = TrimComplete(Mid(line, startclip, Len(line)))
-End Function
-
-Public Function SecondTokenEqual(ByVal line As String)
-    Dim startclip As Integer
-    Dim endclip As Integer
-    
-    startclip = InStr(line, "=")
-    
-    startclip = startclip + 2
-    
-    line = Mid(line, startclip, Len(line))
-    
-    SecondTokenEqual = TrimComplete(line)
-End Function
-
-Public Function TrimComplete(ByVal sValue As String) As String
-    Dim sAns As String
-    Dim sWkg As String
-    Dim sChar As String
-    Dim lLen As Long
-    Dim lCtr As Long
-    
-    sAns = sValue
-    lLen = Len(sValue)
-    
-    If lLen > 0 Then
-        'Ltrim
-        For lCtr = 1 To lLen
-            sChar = Mid(sAns, lCtr, 1)
-            If Asc(sChar) > 32 Then Exit For
-        Next
-        
-        sAns = Mid(sAns, lCtr)
-        lLen = Len(sAns)
-        
-        'Rtrim
-        If lLen > 0 Then
-            For lCtr = lLen To 1 Step -1
-                sChar = Mid(sAns, lCtr, 1)
-                If Asc(sChar) > 32 Then Exit For
-            Next
-        End If
-        sAns = Left$(sAns, lCtr)
-    End If
-        
-    TrimComplete = sAns
-End Function
-
-Public Function RTrimComplete(ByVal sValue As String) As String
-    Dim sAns As String
-    Dim sWkg As String
-    Dim sChar As String
-    Dim lLen As Long
-    Dim lCtr As Long
-    
-    sAns = sValue
-    lLen = Len(sValue)
-    
-    'Rtrim
-    If lLen > 0 Then
-        For lCtr = lLen To 1 Step -1
-            sChar = Mid(sAns, lCtr, 1)
-            If Asc(sChar) > 32 Then Exit For
-        Next
-    End If
-    sAns = Left$(sAns, lCtr)
-    
-    RTrimComplete = sAns
-End Function
diff --git a/tools/SOCEdit/SOCEdit.vbp b/tools/SOCEdit/SOCEdit.vbp
deleted file mode 100644
index 90af0095ab..0000000000
--- a/tools/SOCEdit/SOCEdit.vbp
+++ /dev/null
@@ -1,53 +0,0 @@
-Type=Exe
-Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\WINNT\system32\stdole2.tlb#OLE Automation
-Reference=*\G{420B2830-E718-11CF-893D-00A0C9054228}#1.0#0#..\..\..\WINNT\system32\scrrun.dll#Microsoft Scripting Runtime
-Form=Things.frm
-Module=Module1; Global.bas
-Form=frmStateEdit.frm
-Form=frmLevelHeader.frm
-Form=frmHub.frm
-Form=frmMaincfg.frm
-Form=frmUnlockablesEdit.frm
-Form=frmEmblemEdit.frm
-Form=frmSoundEdit.frm
-Form=frmCharacterEdit.frm
-Form=frmCutsceneEdit.frm
-Form=frmHelp.frm
-Form=frmHUDEdit.frm
-IconForm="frmThingEdit"
-Startup="frmHub"
-HelpFile=""
-Title="SOC Editor"
-ExeName32="SOCEdit.exe"
-Path32="..\..\..\srb2demo2\SOCEdit"
-Command32=""
-Name="SOCEditor"
-HelpContextID="0"
-CompatibleMode="0"
-MajorVer=0
-MinorVer=7
-RevisionVer=7
-AutoIncrementVer=0
-ServerSupportFiles=0
-VersionComments="http://www.srb2.org/"
-VersionCompanyName="Sonic Team Junior"
-VersionFileDescription="For SRB2 v1.09.4"
-CompilationType=0
-OptimizationType=0
-FavorPentiumPro(tm)=0
-CodeViewDebugInfo=0
-NoAliasing=0
-BoundsCheck=0
-OverflowCheck=0
-FlPointCheck=0
-FDIVCheck=0
-UnroundedFP=0
-StartMode=0
-Unattended=0
-Retained=0
-ThreadPerObject=0
-MaxNumberOfThreads=1
-DebugStartupOption=0
-
-[MS Transaction Server]
-AutoRefresh=1
diff --git a/tools/SOCEdit/Things.frm b/tools/SOCEdit/Things.frm
deleted file mode 100644
index f95b6afb71..0000000000
--- a/tools/SOCEdit/Things.frm
+++ /dev/null
@@ -1,1895 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmThingEdit 
-   Caption         =   "Thing Edit"
-   ClientHeight    =   5745
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   11880
-   Icon            =   "Things.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   5745
-   ScaleWidth      =   11880
-   StartUpPosition =   3  'Windows Default
-   Begin VB.CommandButton cmdCopy 
-      Caption         =   "&Copy Thing"
-      Height          =   615
-      Left            =   6600
-      TabIndex        =   77
-      Top             =   4920
-      Width           =   975
-   End
-   Begin VB.CommandButton cmdLoadDefault 
-      Caption         =   "&Load Code Default"
-      Height          =   615
-      Left            =   4440
-      Style           =   1  'Graphical
-      TabIndex        =   76
-      Top             =   4920
-      Width           =   975
-   End
-   Begin VB.CommandButton cmdDelete 
-      Caption         =   "&Delete Thing from SOC"
-      Height          =   615
-      Left            =   3240
-      Style           =   1  'Graphical
-      TabIndex        =   74
-      Top             =   4920
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save"
-      Height          =   615
-      Left            =   5520
-      TabIndex        =   73
-      Top             =   4920
-      Width           =   975
-   End
-   Begin VB.Frame frmFlags 
-      Caption         =   "Flags"
-      Height          =   3735
-      Left            =   7680
-      TabIndex        =   45
-      Top             =   1920
-      Width           =   4095
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_FIRE"
-         Height          =   255
-         Index           =   26
-         Left            =   2040
-         TabIndex        =   72
-         Tag             =   "4194304"
-         ToolTipText     =   "Fire object. Doesn't harm if you have red shield."
-         Top             =   2160
-         Width           =   1695
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_NOCLIPTHING"
-         Height          =   255
-         Index           =   25
-         Left            =   2040
-         TabIndex        =   71
-         Tag             =   "1073741824"
-         ToolTipText     =   "Don't be blocked by things (partial clipping)"
-         Top             =   3120
-         Width           =   1815
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SCENERY"
-         Height          =   255
-         Index           =   24
-         Left            =   2040
-         TabIndex        =   70
-         Tag             =   "33554432"
-         ToolTipText     =   "Scenery (uses scenery thinker). Uses less CPU than a standard object, but generally can't move, etc."
-         Top             =   2880
-         Width           =   1455
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_ENEMY"
-         Height          =   255
-         Index           =   23
-         Left            =   2040
-         TabIndex        =   69
-         Tag             =   "16777216"
-         ToolTipText     =   "This mobj is an enemy!"
-         Top             =   2640
-         Width           =   1335
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_COUNTITEM"
-         Height          =   255
-         Index           =   22
-         Left            =   2040
-         TabIndex        =   68
-         Tag             =   "8388608"
-         ToolTipText     =   "On picking up, count this item object towards intermission item total."
-         Top             =   2400
-         Width           =   1695
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_NOTHINK"
-         Height          =   255
-         Index           =   21
-         Left            =   2040
-         TabIndex        =   67
-         Tag             =   "2097152"
-         ToolTipText     =   "Don't run this thing's thinker."
-         Top             =   1920
-         Width           =   1695
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_MONITOR"
-         Height          =   255
-         Index           =   20
-         Left            =   2040
-         TabIndex        =   66
-         Tag             =   "1048576"
-         ToolTipText     =   "Item box"
-         Top             =   1680
-         Width           =   1575
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_HIRES"
-         Height          =   255
-         Index           =   19
-         Left            =   2040
-         TabIndex        =   65
-         Tag             =   "524288"
-         ToolTipText     =   "Object uses a high-resolution sprite"
-         Top             =   1440
-         Width           =   1215
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_BOUNCE"
-         Height          =   255
-         Index           =   18
-         Left            =   2040
-         TabIndex        =   64
-         Tag             =   "262144"
-         ToolTipText     =   "Bounce off walls and things."
-         Top             =   1200
-         Width           =   1335
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SPRING"
-         Height          =   255
-         Index           =   17
-         Left            =   2040
-         TabIndex        =   63
-         Tag             =   "131072"
-         ToolTipText     =   "Item is a spring."
-         Top             =   960
-         Width           =   1575
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_MISSILE"
-         Height          =   255
-         Index           =   16
-         Left            =   2040
-         TabIndex        =   62
-         Tag             =   "65536"
-         ToolTipText     =   "Any kind of projectile currently flying through the air, waiting to hit something"
-         Top             =   720
-         Width           =   1335
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_BOXICON"
-         Height          =   255
-         Index           =   15
-         Left            =   2040
-         TabIndex        =   61
-         Tag             =   "32768"
-         ToolTipText     =   "Monitor powerup icon. These rise a bit."
-         Top             =   480
-         Width           =   1815
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_FLOAT"
-         Height          =   255
-         Index           =   14
-         Left            =   2040
-         TabIndex        =   60
-         Tag             =   "16384"
-         ToolTipText     =   "Allow moves to any height, no gravity. For active floaters."
-         Top             =   240
-         Width           =   1215
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SPECIALFLAGS"
-         Height          =   255
-         Index           =   13
-         Left            =   120
-         TabIndex        =   59
-         Tag             =   "8192"
-         ToolTipText     =   "This object does not adhere to regular flag/z properties for object placing."
-         Top             =   3360
-         Width           =   1815
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_NOCLIP"
-         Height          =   255
-         Index           =   12
-         Left            =   120
-         TabIndex        =   58
-         Tag             =   "4096"
-         ToolTipText     =   "Don't clip against objects, walls, etc."
-         Top             =   3120
-         Width           =   1335
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SLIDEME"
-         Height          =   255
-         Index           =   11
-         Left            =   120
-         TabIndex        =   57
-         Tag             =   "2048"
-         ToolTipText     =   "Slide this object when it hits a wall."
-         Top             =   2880
-         Width           =   1335
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_AMBIENT"
-         Height          =   255
-         Index           =   10
-         Left            =   120
-         TabIndex        =   56
-         Tag             =   "1024"
-         ToolTipText     =   "This object is an ambient sound."
-         Top             =   2640
-         Width           =   1695
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_NOGRAVITY"
-         Height          =   255
-         Index           =   9
-         Left            =   120
-         TabIndex        =   55
-         Tag             =   "512"
-         ToolTipText     =   "Don't apply gravity"
-         Top             =   2400
-         Width           =   1695
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SPAWNCEILING"
-         Height          =   255
-         Index           =   8
-         Left            =   120
-         TabIndex        =   54
-         Tag             =   "256"
-         ToolTipText     =   "On level spawning (initial position), hang from ceiling instead of stand on floor."
-         Top             =   2160
-         Width           =   1935
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_BOSS"
-         Height          =   255
-         Index           =   7
-         Left            =   120
-         TabIndex        =   53
-         Tag             =   "128"
-         ToolTipText     =   "Object is a boss."
-         Top             =   1920
-         Width           =   1575
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_PUSHABLE"
-         Height          =   255
-         Index           =   6
-         Left            =   120
-         TabIndex        =   52
-         Tag             =   "64"
-         ToolTipText     =   "You can push this object. It can activate switches and things by pushing it on top."
-         Top             =   1680
-         Width           =   1575
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_AMBUSH"
-         Height          =   255
-         Index           =   5
-         Left            =   120
-         TabIndex        =   51
-         Tag             =   "32"
-         ToolTipText     =   "Special attributes"
-         Top             =   1440
-         Width           =   1455
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_NOBLOCKMAP"
-         Height          =   255
-         Index           =   4
-         Left            =   120
-         TabIndex        =   50
-         Tag             =   "16"
-         ToolTipText     =   "Don't use the blocklinks (inert but displayable)"
-         Top             =   1200
-         Width           =   1815
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_NOSECTOR"
-         Height          =   255
-         Index           =   3
-         Left            =   120
-         TabIndex        =   49
-         Tag             =   "8"
-         ToolTipText     =   "Don't use the sector links (invisible but touchable)."
-         Top             =   960
-         Width           =   1575
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SHOOTABLE"
-         Height          =   255
-         Index           =   2
-         Left            =   120
-         TabIndex        =   48
-         Tag             =   "4"
-         ToolTipText     =   "Can be hit."
-         Top             =   720
-         Width           =   1695
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SOLID"
-         Height          =   255
-         Index           =   1
-         Left            =   120
-         TabIndex        =   47
-         Tag             =   "2"
-         ToolTipText     =   "Blocks."
-         Top             =   480
-         Width           =   1335
-      End
-      Begin VB.CheckBox chkFlags 
-         Caption         =   "MF_SPECIAL"
-         Height          =   255
-         Index           =   0
-         Left            =   120
-         TabIndex        =   46
-         Tag             =   "1"
-         ToolTipText     =   "Call P_TouchSpecialThing when touched."
-         Top             =   240
-         Width           =   1455
-      End
-   End
-   Begin VB.ComboBox cmbRaisestate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   43
-      Text            =   "cmbRaisestate"
-      Top             =   4440
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbActivesound 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   41
-      Text            =   "cmbActivesound"
-      Top             =   4080
-      Width           =   3300
-   End
-   Begin VB.TextBox txtDamage 
-      Height          =   285
-      Left            =   10680
-      TabIndex        =   39
-      Text            =   "0"
-      Top             =   1200
-      Width           =   1095
-   End
-   Begin VB.TextBox txtMass 
-      Height          =   285
-      Left            =   10680
-      TabIndex        =   37
-      Text            =   "0"
-      Top             =   840
-      Width           =   1095
-   End
-   Begin VB.TextBox txtHeight 
-      Height          =   285
-      Left            =   10680
-      TabIndex        =   35
-      Text            =   "0"
-      Top             =   480
-      Width           =   1095
-   End
-   Begin VB.TextBox txtRadius 
-      Height          =   285
-      Left            =   10680
-      TabIndex        =   33
-      Text            =   "0"
-      Top             =   120
-      Width           =   1095
-   End
-   Begin VB.TextBox txtSpeed 
-      Height          =   285
-      Left            =   8760
-      TabIndex        =   31
-      Text            =   "0"
-      Top             =   1560
-      Width           =   1095
-   End
-   Begin VB.ComboBox cmbDeathsound 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   29
-      Text            =   "cmbDeathsound"
-      Top             =   3720
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbXdeathstate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   27
-      Text            =   "cmbXdeathstate"
-      Top             =   3360
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbDeathstate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   25
-      Text            =   "cmbDeathstate"
-      Top             =   3000
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbMissilestate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   23
-      Text            =   "cmbMissilestate"
-      Top             =   2640
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbMeleestate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   21
-      Text            =   "cmbMeleestate"
-      Top             =   2280
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbPainsound 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   19
-      Text            =   "cmbPainsound"
-      Top             =   1920
-      Width           =   3300
-   End
-   Begin VB.TextBox txtPainchance 
-      Height          =   285
-      Left            =   8760
-      TabIndex        =   17
-      Text            =   "0"
-      Top             =   1200
-      Width           =   1095
-   End
-   Begin VB.ComboBox cmbPainstate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   15
-      Text            =   "cmbPainstate"
-      Top             =   1560
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbAttacksound 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   13
-      Text            =   "cmbAttacksound"
-      Top             =   1200
-      Width           =   3300
-   End
-   Begin VB.TextBox txtReactiontime 
-      Height          =   285
-      Left            =   8760
-      TabIndex        =   11
-      Text            =   "0"
-      Top             =   840
-      Width           =   1095
-   End
-   Begin VB.ComboBox cmbSeesound 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   9
-      Text            =   "cmbSeesound"
-      Top             =   840
-      Width           =   3300
-   End
-   Begin VB.ComboBox cmbSeestate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   7
-      Text            =   "cmbSeestate"
-      Top             =   480
-      Width           =   3300
-   End
-   Begin VB.TextBox txtSpawnhealth 
-      Height          =   285
-      Left            =   8760
-      TabIndex        =   6
-      Text            =   "0"
-      Top             =   480
-      Width           =   1095
-   End
-   Begin VB.ComboBox cmbSpawnstate 
-      Height          =   315
-      Left            =   4320
-      TabIndex        =   3
-      Text            =   "cmbSpawnstate"
-      Top             =   120
-      Width           =   3300
-   End
-   Begin VB.TextBox txtDoomednum 
-      Height          =   285
-      Left            =   8760
-      TabIndex        =   1
-      Text            =   "0"
-      Top             =   120
-      Width           =   1095
-   End
-   Begin VB.ListBox lstThings 
-      Height          =   5520
-      ItemData        =   "Things.frx":0442
-      Left            =   120
-      List            =   "Things.frx":0444
-      TabIndex        =   0
-      Top             =   120
-      Width           =   3015
-   End
-   Begin VB.Label lblStatusInfo 
-      Alignment       =   2  'Center
-      Caption         =   "Idle"
-      BeginProperty Font 
-         Name            =   "MS Sans Serif"
-         Size            =   8.25
-         Charset         =   0
-         Weight          =   700
-         Underline       =   0   'False
-         Italic          =   0   'False
-         Strikethrough   =   0   'False
-      EndProperty
-      Height          =   375
-      Left            =   9960
-      TabIndex        =   75
-      Top             =   1560
-      Width           =   1815
-   End
-   Begin VB.Label lblRaisestate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Raisestate:"
-      Height          =   255
-      Left            =   3360
-      TabIndex        =   44
-      Top             =   4440
-      Width           =   855
-   End
-   Begin VB.Label lblActivesound 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Activesound:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   42
-      Top             =   4080
-      Width           =   975
-   End
-   Begin VB.Label lblDamage 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Damage:"
-      Height          =   255
-      Left            =   9840
-      TabIndex        =   40
-      Top             =   1200
-      Width           =   735
-   End
-   Begin VB.Label lblMass 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Mass:"
-      Height          =   255
-      Left            =   9960
-      TabIndex        =   38
-      Top             =   840
-      Width           =   615
-   End
-   Begin VB.Label lblHeight 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Height:"
-      Height          =   255
-      Left            =   9960
-      TabIndex        =   36
-      Top             =   480
-      Width           =   615
-   End
-   Begin VB.Label lblRadius 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Radius:"
-      Height          =   255
-      Left            =   9960
-      TabIndex        =   34
-      Top             =   120
-      Width           =   615
-   End
-   Begin VB.Label lblSpeed 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Speed:"
-      Height          =   255
-      Left            =   7680
-      TabIndex        =   32
-      Top             =   1560
-      Width           =   975
-   End
-   Begin VB.Label lblDeathsound 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Deathsound:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   30
-      Top             =   3720
-      Width           =   975
-   End
-   Begin VB.Label lblXdeathstate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Xdeathstate:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   28
-      Top             =   3360
-      Width           =   975
-   End
-   Begin VB.Label lblDeathstate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Deathstate:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   26
-      Top             =   3000
-      Width           =   975
-   End
-   Begin VB.Label lblMissilestate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Missilestate:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   24
-      Top             =   2640
-      Width           =   975
-   End
-   Begin VB.Label lblMeleestate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Meleestate:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   22
-      Top             =   2280
-      Width           =   975
-   End
-   Begin VB.Label lblPainsound 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Painsound:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   20
-      Top             =   1920
-      Width           =   975
-   End
-   Begin VB.Label lblPainchance 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Painchance:"
-      Height          =   255
-      Left            =   7680
-      TabIndex        =   18
-      Top             =   1200
-      Width           =   975
-   End
-   Begin VB.Label lblPainstate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Painstate:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   16
-      Top             =   1560
-      Width           =   975
-   End
-   Begin VB.Label lblAttacksound 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Attacksound:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   14
-      Top             =   1200
-      Width           =   975
-   End
-   Begin VB.Label lblReactiontime 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Reactiontime:"
-      Height          =   255
-      Left            =   7680
-      TabIndex        =   12
-      Top             =   840
-      Width           =   975
-   End
-   Begin VB.Label lblSeesound 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Seesound:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   10
-      Top             =   840
-      Width           =   975
-   End
-   Begin VB.Label lblSeestate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Seestate:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   8
-      Top             =   480
-      Width           =   975
-   End
-   Begin VB.Label lblSpawnhealth 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Spawnhealth:"
-      Height          =   255
-      Left            =   7680
-      TabIndex        =   5
-      Top             =   480
-      Width           =   975
-   End
-   Begin VB.Label lblSpawnstate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Spawnstate:"
-      Height          =   255
-      Left            =   3240
-      TabIndex        =   4
-      Top             =   120
-      Width           =   975
-   End
-   Begin VB.Label lblDoomednum 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Thing Map #:"
-      Height          =   255
-      Left            =   7680
-      TabIndex        =   2
-      Top             =   120
-      Width           =   975
-   End
-End
-Attribute VB_Name = "frmThingEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdCopy_Click()
-    Dim Response As String
-    
-    Response$ = InputBox("Copy state to #:", "Copy State")
-    
-    If Response = "" Then Exit Sub
-    
-    Response = TrimComplete(Response)
-    
-    Call WriteThing(False, Val(Response))
-    
-    MsgBox "Thing copied to #" & Val(Response)
-End Sub
-
-Private Sub cmdDelete_Click()
-    Call WriteThing(True, lstThings.ListIndex)
-End Sub
-
-Private Sub cmdLoadDefault_Click()
-    Call ClearForm
-    If InStr(lstThings.List(lstThings.ListIndex), "MT_FREESLOT") = 0 Then
-        LoadObjectInfo (lstThings.ListIndex)
-    Else
-        MsgBox "Free slots do not have a code default."
-    End If
-End Sub
-
-Private Sub cmdSave_Click()
-    Call WriteThing(False, lstThings.ListIndex)
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-End Sub
-
-Private Sub ClearForm()
-    Dim i As Integer
-    cmbSpawnstate.Text = ""
-    cmbSeestate.Text = ""
-    cmbSeesound.Text = ""
-    cmbAttacksound.Text = ""
-    cmbPainstate.Text = ""
-    cmbPainsound.Text = ""
-    cmbMeleestate.Text = ""
-    cmbMissilestate.Text = ""
-    cmbDeathstate.Text = ""
-    cmbXdeathstate.Text = ""
-    cmbDeathsound.Text = ""
-    cmbActivesound.Text = ""
-    cmbRaisestate.Text = ""
-    txtDoomednum.Text = ""
-    txtSpawnhealth.Text = ""
-    txtReactiontime.Text = ""
-    txtPainchance.Text = ""
-    txtSpeed.Text = ""
-    txtRadius.Text = ""
-    txtHeight.Text = ""
-    txtMass.Text = ""
-    txtDamage.Text = ""
-    
-    For i = 0 To 26
-        chkFlags(i).Value = 0
-    Next
-End Sub
-
-Private Sub Reload()
-    lblStatusInfo.Caption = "Loading Sounds Info..."
-    DoEvents
-    LoadSounds
-    lblStatusInfo.Caption = "Loading Things Info..."
-    DoEvents
-    LoadThings
-    lblStatusInfo.Caption = "Loading States Info..."
-    DoEvents
-    LoadStates
-    lblStatusInfo.Caption = "Idle"
-    lstThings.ListIndex = 0
-End Sub
-
-Private Sub LoadSounds()
-    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
-    Dim i As Integer, numfreeslots As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("sounds.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "List of sounds (don't modify this comment!)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    cmbSeesound.Clear
-    cmbAttacksound.Clear
-    cmbPainsound.Clear
-    cmbDeathsound.Clear
-    cmbActivesound.Clear
-    
-    Do While InStr(line, "sfx_freeslot0") = 0
-        startclip = InStr(line, "sfx_")
-        If InStr(line, "sfx_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            addstring = number & " - " & line
-            cmbSeesound.AddItem addstring
-            cmbAttacksound.AddItem addstring
-            cmbPainsound.AddItem addstring
-            cmbDeathsound.AddItem addstring
-            cmbActivesound.AddItem addstring
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-    
-    'Populate the free slots!
-    numfreeslots = 800
-
-    For i = 1 To numfreeslots
-        If i < 10 Then
-            addstring = number & " - " & "sfx_fre00" & i & " (free slot)"
-        ElseIf i < 100 Then
-            addstring = number & " - " & "sfx_fre0" & i & " (free slot)"
-        Else
-            addstring = number & " - " & "sfx_fre" & i & " (free slot)"
-        End If
-        cmbSeesound.AddItem addstring
-        cmbAttacksound.AddItem addstring
-        cmbPainsound.AddItem addstring
-        cmbDeathsound.AddItem addstring
-        cmbActivesound.AddItem addstring
-        number = number + 1
-    Next
-End Sub
-Private Sub LoadStates()
-    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
-    Dim i As Integer
-    Dim numfreeslots As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Object states (don't modify this comment!)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    cmbSpawnstate.Clear
-    cmbSeestate.Clear
-    cmbPainstate.Clear
-    cmbMeleestate.Clear
-    cmbMissilestate.Clear
-    cmbDeathstate.Clear
-    cmbXdeathstate.Clear
-    cmbRaisestate.Clear
-    
-    Do While InStr(line, "S_FIRSTFREESLOT") = 0
-        startclip = InStr(line, "S_")
-        If InStr(line, "S_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            addstring = number & " - " & line
-            cmbSpawnstate.AddItem addstring
-            cmbSeestate.AddItem addstring
-            cmbPainstate.AddItem addstring
-            cmbMeleestate.AddItem addstring
-            cmbMissilestate.AddItem addstring
-            cmbDeathstate.AddItem addstring
-            cmbXdeathstate.AddItem addstring
-            cmbRaisestate.AddItem addstring
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    
-    'Populate the free slots!
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-
-    line = ts.ReadLine
-    Do While InStr(line, "#define NUMMOBJFREESLOTS") = 0
-        line = ts.ReadLine
-    Loop
-    
-    startclip = InStr(line, "SLOTS ") + 6
-    numfreeslots = Val(Mid(line, startclip, Len(line) - startclip + 1)) * 6
-
-    For i = 1 To numfreeslots
-        addstring = number & " - " & "S_FREESLOT" & i
-        cmbSpawnstate.AddItem addstring
-        cmbSeestate.AddItem addstring
-        cmbPainstate.AddItem addstring
-        cmbMeleestate.AddItem addstring
-        cmbMissilestate.AddItem addstring
-        cmbDeathstate.AddItem addstring
-        cmbXdeathstate.AddItem addstring
-        cmbRaisestate.AddItem addstring
-        number = number + 1
-    Next
-
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub LoadThings()
-    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 numfreeslots As Integer, i As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Little flag for SOC editor (don't change this comment!)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    lstThings.Clear
-    
-    Do While InStr(line, "MT_FIRSTFREESLOT") = 0
-        startclip = InStr(line, "MT_")
-        If InStr(line, "MT_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            lstThings.AddItem number & " - " & line
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    
-    'Populate the free slots!
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-
-    line = ts.ReadLine
-    Do While InStr(line, "#define NUMMOBJFREESLOTS") = 0
-        line = ts.ReadLine
-    Loop
-    
-    startclip = InStr(line, "SLOTS ") + 6
-    numfreeslots = Val(Mid(line, startclip, Len(line) - startclip + 1))
-
-    For i = 1 To numfreeslots
-        lstThings.AddItem number & " - " & "MT_FREESLOT" & i
-        number = number + 1
-    Next
-
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub LoadObjectInfo(ThingNum As Integer)
-    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
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("info.c", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "mobjinfo[NUMMOBJTYPES] =") = 0
-    Loop
-    
-    number = 0
-    
-    Do While number <> ThingNum
-        Do While InStr(ts.ReadLine, "}") = 0
-        Loop
-        number = number + 1
-    Loop
-    
-    Do While InStr(line, "doomednum") = 0
-        line = ts.ReadLine
-    Loop
-    
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtDoomednum.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "spawnstate") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbSpawnstate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbSpawnstate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbSpawnstate.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "spawnhealth") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtSpawnhealth.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "seestate") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbSeestate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbSeestate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbSeestate.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "seesound") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbSeesound, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbSeesound.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbSeesound.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "reactiontime") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtReactiontime.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "attacksound") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbAttacksound, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbAttacksound.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbAttacksound.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "painstate") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbPainstate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbPainstate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbPainstate.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "painchance") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtPainchance.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "painsound") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbPainsound, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbPainsound.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbPainsound.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "meleestate") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbMeleestate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbMeleestate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbMeleestate.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "missilestate") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbMissilestate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbMissilestate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbMissilestate.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "deathstate") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbDeathstate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbDeathstate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbDeathstate.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "xdeathstate") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbXdeathstate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbXdeathstate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbXdeathstate.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "deathsound") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbDeathsound, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbDeathsound.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbDeathsound.Text = number & " - " & line
-    End If
-    
-    
-    line = ts.ReadLine
-    Do While InStr(line, "speed") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtSpeed.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "radius") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtRadius.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "height") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtHeight.Text = line
-
-    line = ts.ReadLine 'Display order offset (add support, please!)
-
-    line = ts.ReadLine
-    Do While InStr(line, "mass") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtMass.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "damage") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    'Check for *FRACUNIT values
-    endclip = InStr(line, "*FRACUNIT")
-    If endclip <> 0 Then
-        line = Left(line, endclip - 1)
-        line = Val(line) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        line = FindThingNum(line) & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        line = FindPowerNum(line) & " - " & line
-    End If
-    txtDamage.Text = line
-    
-    line = ts.ReadLine
-    Do While InStr(line, "activesound") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbActivesound, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbActivesound.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbActivesound.Text = number & " - " & line
-    End If
-    
-    line = ts.ReadLine
-    Do While InStr(line, "flags") = 0
-    Loop
-    endclip = InStr(line, ",")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    ProcessFlags (line)
-    
-    line = ts.ReadLine
-    Do While InStr(line, "raisestate") = 0
-    Loop
-    endclip = InStr(line, "//")
-    line = Left(line, endclip - 1)
-    line = TrimComplete(line)
-    Call FindComboIndex(cmbRaisestate, line)
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(line, "MT_")
-    If endclip <> 0 Then
-        number = FindThingNum(line)
-        cmbRaisestate.Text = number & " - " & line
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(line, "pw_")
-    If endclip <> 0 Then
-        number = FindPowerNum(line)
-        cmbRaisestate.Text = number & " - " & line
-    End If
-        
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub ProcessFlags(flags As String)
-    Dim FlagList(32) As String
-    Dim endpoint As Integer
-    Dim ListCount As Integer
-    Dim FlagString As String
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim j As Integer, i As Integer
-    Dim number As Long
-    Dim startclip As Integer, endclip As Integer
-    
-    For j = 0 To 26
-        chkFlags(j).Value = 0
-    Next j
-    
-    FlagString = flags
-    
-    flags = flags & "||"
-    
-    ListCount = 0
-    
-    Do While Len(flags) > 3
-        endpoint = InStr(flags, "|")
-        FlagString = Left(flags, endpoint - 1)
-        flags = Right(flags, Len(flags) - endpoint)
-        FlagList(ListCount) = FlagString
-        ListCount = ListCount + 1
-    Loop
-    
-    ChDir SourcePath
-    
-    For i = 0 To ListCount - 1
-        Set ts = myFSO.OpenTextFile("p_mobj.h", ForReading, False)
-        
-        line = ts.ReadLine
-        
-        Do While Not ts.AtEndOfStream
-            line = ts.ReadLine
-            If InStr(line, FlagList(i)) Then
-                If InStr(line, "//") = 0 Or (InStr(line, "//") > InStr(line, FlagList(i))) Then
-                    Exit Do
-                End If
-            End If
-        Loop
-        
-        If InStr(line, FlagList(i)) Then
-            startclip = InStr(line, "0x")
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip + 2, endclip - 1)
-            line = "&H" & line
-            TrimComplete (line)
-            line = Left(line, Len(line) - 1)
-            number = CLng(line)
-
-            For j = 0 To 26
-                If chkFlags(j).Tag = number Then
-                    chkFlags(j).Value = 1
-                End If
-            Next j
-        End If
-        ts.Close
-    Next i
-    
-    Set myFSO = Nothing
-End Sub
-
-Private Sub FindComboIndex(ByRef Box As ComboBox, line As String)
-    Dim i As Integer
-    
-    For i = 0 To Box.ListCount
-        If InStr(Box.List(i), line) Then
-            Box.ListIndex = i
-            Exit For
-        End If
-    Next
-End Sub
-
-Private Sub lstThings_Click()
-    lblStatusInfo.Caption = "Loading thing info..."
-    DoEvents
-    Call ClearForm
-    If InStr(lstThings.List(lstThings.ListIndex), "MT_FREESLOT") = 0 Then
-        LoadObjectInfo (lstThings.ListIndex)
-    End If
-    LoadSOCObjectInfo (lstThings.ListIndex)
-    lblStatusInfo.Caption = "Idle"
-End Sub
-
-Private Sub LoadSOCObjectInfo(ThingNum As Integer)
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim word As String
-    Dim word2 As String
-    Dim j As Integer
-    Dim temp As Long
-    
-    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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "THING" And Val(word2) = ThingNum Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondTokenEqual(line))
-                    
-                If word = "MAPTHINGNUM" Then
-                    txtDoomednum.Text = Val(word2)
-                ElseIf word = "SPAWNSTATE" Then
-                    cmbSpawnstate.ListIndex = Val(word2)
-                ElseIf word = "SPAWNHEALTH" Then
-                    txtSpawnhealth.Text = Val(word2)
-                ElseIf word = "SEESTATE" Then
-                    cmbSeestate.ListIndex = Val(word2)
-                ElseIf word = "SEESOUND" Then
-                    cmbSeesound.ListIndex = Val(word2)
-                ElseIf word = "REACTIONTIME" Then
-                    txtReactiontime.Text = Val(word2)
-                ElseIf word = "ATTACKSOUND" Then
-                    cmbAttacksound.ListIndex = Val(word2)
-                ElseIf word = "PAINSTATE" Then
-                    cmbPainstate.ListIndex = Val(word2)
-                ElseIf word = "PAINCHANCE" Then
-                    txtPainchance.Text = Val(word2)
-                ElseIf word = "PAINSOUND" Then
-                    cmbPainsound.ListIndex = Val(word2)
-                ElseIf word = "MELEESTATE" Then
-                    cmbMeleestate.ListIndex = Val(word2)
-                ElseIf word = "MISSILESTATE" Then
-                    cmbMissilestate.ListIndex = Val(word2)
-                ElseIf word = "DEATHSTATE" Then
-                    cmbDeathstate.ListIndex = Val(word2)
-                ElseIf word = "DEATHSOUND" Then
-                    cmbDeathsound.ListIndex = Val(word2)
-                ElseIf word = "XDEATHSTATE" Then
-                    cmbXdeathstate.ListIndex = Val(word2)
-                ElseIf word = "SPEED" Then
-                    txtSpeed.Text = Val(word2)
-                ElseIf word = "RADIUS" Then
-                    txtRadius.Text = Val(word2)
-                ElseIf word = "HEIGHT" Then
-                    txtHeight.Text = Val(word2)
-                ElseIf word = "MASS" Then
-                    txtMass.Text = Val(word2)
-                ElseIf word = "DAMAGE" Then
-                    txtDamage.Text = Val(word2)
-                ElseIf word = "ACTIVESOUND" Then
-                    cmbActivesound.ListIndex = Val(word2)
-                ElseIf word = "FLAGS" Then
-                    For j = 0 To 26
-                        temp = Val(word2)
-                        If temp And chkFlags(j).Tag Then
-                            chkFlags(j).Value = 1
-                        Else
-                            chkFlags(j).Value = 0
-                        End If
-                    Next j
-                ElseIf word = "RAISESTATE" Then
-                    cmbRaisestate.ListIndex = Val(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
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Function FindThingNum(ThingName As String) As Integer
-    Dim i As Integer
-    Dim temp As String
-    Dim startpoint As Integer
-    Dim endpoint As Integer
-    
-    For i = 0 To lstThings.ListCount - 1
-        temp = lstThings.List(i)
-        startpoint = InStr(temp, "-") + 2
-        endpoint = Len(temp) - startpoint + 1
-        temp = Mid(temp, startpoint, endpoint)
-        If temp = ThingName Then
-            FindThingNum = Val(lstThings.List(i))
-            Exit For
-        End If
-    Next
-End Function
-
-Private Function FindPowerNum(PowerName As String) As Integer
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim number As Integer
-    Dim startclip As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("d_player.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Player powers. (don't edit this comment)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    Do While InStr(line, "NUMPOWERS") = 0
-        startclip = InStr(line, PowerName)
-        If startclip <> 0 Then
-            FindPowerNum = number
-            Exit Do
-        End If
-        number = number + 1
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Function
-
-Private Sub WriteThing(Remove As Boolean, num 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 thingfound As Boolean
-    Dim i As Integer
-    
-    thingfound = False
-    
-    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))
-
-        'If the current thing exists in the SOC, delete it.
-        If word = "THING" And Val(word2) = num Then
-            thingfound = True
-            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 "Thing " & num
-        txtDoomednum.Text = TrimComplete(txtDoomednum.Text)
-        cmbSpawnstate.Text = TrimComplete(cmbSpawnstate.Text)
-        txtSpawnhealth.Text = TrimComplete(txtSpawnhealth.Text)
-        cmbSeestate.Text = TrimComplete(cmbSeestate.Text)
-        cmbSeesound.Text = TrimComplete(cmbSeesound.Text)
-        txtReactiontime.Text = TrimComplete(txtReactiontime.Text)
-        cmbAttacksound.Text = TrimComplete(cmbAttacksound.Text)
-        cmbPainstate.Text = TrimComplete(cmbPainstate.Text)
-        txtPainchance.Text = TrimComplete(txtPainchance.Text)
-        cmbPainsound.Text = TrimComplete(cmbPainsound.Text)
-        cmbMeleestate.Text = TrimComplete(cmbMeleestate.Text)
-        cmbMissilestate.Text = TrimComplete(cmbMissilestate.Text)
-        cmbDeathstate.Text = TrimComplete(cmbDeathstate.Text)
-        cmbDeathsound.Text = TrimComplete(cmbDeathsound.Text)
-        cmbXdeathstate.Text = TrimComplete(cmbXdeathstate.Text)
-        txtSpeed.Text = TrimComplete(txtSpeed.Text)
-        txtRadius.Text = TrimComplete(txtRadius.Text)
-        txtHeight.Text = TrimComplete(txtHeight.Text)
-        txtMass.Text = TrimComplete(txtMass.Text)
-        txtDamage.Text = TrimComplete(txtDamage.Text)
-        cmbActivesound.Text = TrimComplete(cmbActivesound.Text)
-        cmbRaisestate.Text = TrimComplete(cmbRaisestate.Text)
-        flags = 0
-        ' Only 31 bits can be used, because VB is stupid.
-        For i = 0 To 26
-            If chkFlags(i).Value = 1 Then flags = flags + Val(chkFlags(i).Tag)
-        Next
-        If txtDoomednum.Text <> "" Then tsTarget.WriteLine "MAPTHINGNUM = " & Val(txtDoomednum.Text)
-        If cmbSpawnstate.Text <> "" Then tsTarget.WriteLine "SPAWNSTATE = " & Val(cmbSpawnstate.Text)
-        If txtSpawnhealth.Text <> "" Then tsTarget.WriteLine "SPAWNHEALTH = " & Val(txtSpawnhealth.Text)
-        If cmbSeestate.Text <> "" Then tsTarget.WriteLine "SEESTATE = " & Val(cmbSeestate.Text)
-        If cmbSeesound.Text <> "" Then tsTarget.WriteLine "SEESOUND = " & Val(cmbSeesound.Text)
-        If txtReactiontime.Text <> "" Then tsTarget.WriteLine "REACTIONTIME = " & Val(txtReactiontime.Text)
-        If cmbAttacksound.Text <> "" Then tsTarget.WriteLine "ATTACKSOUND = " & Val(cmbAttacksound.Text)
-        If cmbPainstate.Text <> "" Then tsTarget.WriteLine "PAINSTATE = " & Val(cmbPainstate.Text)
-        If txtPainchance.Text <> "" Then tsTarget.WriteLine "PAINCHANCE = " & Val(txtPainchance.Text)
-        If cmbPainsound.Text <> "" Then tsTarget.WriteLine "PAINSOUND = " & Val(cmbPainsound.Text)
-        If cmbMeleestate.Text <> "" Then tsTarget.WriteLine "MELEESTATE = " & Val(cmbMeleestate.Text)
-        If cmbMissilestate.Text <> "" Then tsTarget.WriteLine "MISSILESTATE = " & Val(cmbMissilestate.Text)
-        If cmbDeathstate.Text <> "" Then tsTarget.WriteLine "DEATHSTATE = " & Val(cmbDeathstate.Text)
-        If cmbDeathsound.Text <> "" Then tsTarget.WriteLine "DEATHSOUND = " & Val(cmbDeathsound.Text)
-        If cmbXdeathstate.Text <> "" Then tsTarget.WriteLine "XDEATHSTATE = " & Val(cmbXdeathstate.Text)
-        If txtSpeed.Text <> "" Then tsTarget.WriteLine "SPEED = " & Val(txtSpeed.Text)
-        If txtRadius.Text <> "" Then tsTarget.WriteLine "RADIUS = " & Val(txtRadius.Text)
-        If txtHeight.Text <> "" Then tsTarget.WriteLine "HEIGHT = " & Val(txtHeight.Text)
-        If txtMass.Text <> "" Then tsTarget.WriteLine "MASS = " & Val(txtMass.Text)
-        If txtDamage.Text <> "" Then tsTarget.WriteLine "DAMAGE = " & Val(txtDamage.Text)
-        If cmbActivesound.Text <> "" Then tsTarget.WriteLine "ACTIVESOUND = " & Val(cmbActivesound.Text)
-        If cmbRaisestate.Text <> "" Then tsTarget.WriteLine "RAISESTATE = " & Val(cmbRaisestate.Text)
-        tsTarget.WriteLine "FLAGS = " & flags
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        If thingfound = True Then
-            MsgBox "Thing removed from SOC."
-        Else
-            MsgBox "Thing not found in SOC."
-        End If
-    Else
-        MsgBox "Thing Saved."
-    End If
-End Sub
diff --git a/tools/SOCEdit/Things.frx b/tools/SOCEdit/Things.frx
deleted file mode 100644
index 980538679b05296de823a191f94f0564401fd92d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1094
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
M!0;Xv_zVmT0C7A$vH$=8

diff --git a/tools/SOCEdit/frmCharacterEdit.frm b/tools/SOCEdit/frmCharacterEdit.frm
deleted file mode 100644
index 415fcbb0f8..0000000000
--- a/tools/SOCEdit/frmCharacterEdit.frm
+++ /dev/null
@@ -1,320 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmCharacterEdit 
-   Caption         =   "Character Edit"
-   ClientHeight    =   3345
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   4680
-   Icon            =   "frmCharacterEdit.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   3345
-   ScaleWidth      =   4680
-   Begin VB.CommandButton cmdExample 
-      Caption         =   "Show Me An &Example"
-      Height          =   495
-      Left            =   1320
-      Style           =   1  'Graphical
-      TabIndex        =   14
-      Top             =   2400
-      Width           =   975
-   End
-   Begin VB.CheckBox chkEnabled 
-      Caption         =   "Enable this player selection."
-      Height          =   495
-      Left            =   1080
-      TabIndex        =   13
-      Top             =   1560
-      Width           =   1455
-   End
-   Begin VB.CommandButton cmdDelete 
-      Caption         =   "&Delete from SOC"
-      Height          =   495
-      Left            =   120
-      Style           =   1  'Graphical
-      TabIndex        =   12
-      Top             =   2760
-      Width           =   855
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save"
-      Height          =   495
-      Left            =   120
-      TabIndex        =   11
-      Top             =   2160
-      Width           =   855
-   End
-   Begin VB.TextBox txtSkinname 
-      Height          =   285
-      Left            =   3240
-      TabIndex        =   9
-      Top             =   1200
-      Width           =   1335
-   End
-   Begin VB.TextBox txtPicname 
-      Height          =   285
-      Left            =   3240
-      MaxLength       =   8
-      TabIndex        =   7
-      Top             =   840
-      Width           =   1095
-   End
-   Begin VB.TextBox txtMenuposition 
-      Height          =   285
-      Left            =   3240
-      MaxLength       =   3
-      TabIndex        =   5
-      Top             =   480
-      Width           =   495
-   End
-   Begin VB.TextBox txtPlayername 
-      Height          =   285
-      Left            =   3240
-      MaxLength       =   64
-      TabIndex        =   3
-      Top             =   120
-      Width           =   1335
-   End
-   Begin VB.TextBox txtPlayertext 
-      Height          =   1455
-      Left            =   2640
-      MultiLine       =   -1  'True
-      TabIndex        =   1
-      Top             =   1800
-      Width           =   1935
-   End
-   Begin VB.ListBox lstPlayers 
-      Height          =   1815
-      ItemData        =   "frmCharacterEdit.frx":0442
-      Left            =   120
-      List            =   "frmCharacterEdit.frx":0461
-      TabIndex        =   0
-      Top             =   240
-      Width           =   855
-   End
-   Begin VB.Label lblSkinname 
-      Caption         =   "Name of player (skin) to use:"
-      Height          =   255
-      Left            =   1080
-      TabIndex        =   10
-      Top             =   1200
-      Width           =   2055
-   End
-   Begin VB.Label lblPicname 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Picture to display:"
-      Height          =   255
-      Left            =   1560
-      TabIndex        =   8
-      Top             =   840
-      Width           =   1575
-   End
-   Begin VB.Label lblMenuposition 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Vertical menu position:"
-      Height          =   255
-      Left            =   1320
-      TabIndex        =   6
-      Top             =   480
-      Width           =   1815
-   End
-   Begin VB.Label lblPlayername 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Displayed name of player:"
-      Height          =   255
-      Left            =   1320
-      TabIndex        =   4
-      Top             =   120
-      Width           =   1815
-   End
-   Begin VB.Label lblPlayertext 
-      Caption         =   "Short Description:"
-      Height          =   255
-      Left            =   2640
-      TabIndex        =   2
-      Top             =   1560
-      Width           =   1455
-   End
-End
-Attribute VB_Name = "frmCharacterEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdDelete_Click()
-    Call WriteCharacter(True)
-End Sub
-
-Private Sub cmdExample_Click()
-    txtPlayername.Text = "SONIC"
-    txtMenuposition.Text = "20"
-    txtPicname.Text = "SONCCHAR"
-    txtSkinname.Text = "SONIC"
-    chkEnabled.Value = 1
-    txtPlayertext.Text = "             Fastest" & vbCrLf & "                 Speed Thok" & vbCrLf & "             Not a good pick" & vbCrLf & "for starters, but when" & vbCrLf & "controlled properly," & vbCrLf & "Sonic is the most" & vbCrLf & "powerful of the three."
-End Sub
-
-Private Sub cmdSave_Click()
-    Call WriteCharacter(False)
-End Sub
-
-Private Sub ClearForm()
-    txtPlayername.Text = ""
-    txtMenuposition.Text = ""
-    txtPicname.Text = ""
-    txtSkinname.Text = ""
-    chkEnabled.Value = 0
-    txtPlayertext.Text = ""
-End Sub
-
-Private Sub ReadSOCPlayer(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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "CHARACTER" And 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 = "PLAYERTEXT" Then
-                    Dim startclip As Integer, endclip As Integer
-                    startclip = InStr(line, "=")
-    
-                    startclip = startclip + 2
-    
-                    line = Mid(line, startclip, Len(line))
-                    
-                    txtPlayertext.Text = line & vbCrLf
-                    
-                    Do While InStr(line, "#") = 0 And Not ts.AtEndOfStream
-                        line = ts.ReadLine & vbCrLf
-                        txtPlayertext.Text = txtPlayertext.Text & line
-                    Loop
-                    
-                    txtPlayertext.Text = RTrimComplete(txtPlayertext.Text)
-                    If Right(txtPlayertext.Text, 1) = "#" Then
-                        txtPlayertext.Text = Left(txtPlayertext.Text, Len(txtPlayertext.Text) - 1)
-                    End If
-                ElseIf word = "PLAYERNAME" Then
-                    txtPlayername.Text = word2
-                ElseIf word = "MENUPOSITION" Then
-                    txtMenuposition.Text = Val(word2)
-                ElseIf word = "PICNAME" Then
-                    txtPicname.Text = word2
-                ElseIf word = "STATUS" Then
-                    If Val(word2) = 32 Then
-                        chkEnabled.Value = 1
-                    Else
-                        chkEnabled.Value = 0
-                    End If
-                ElseIf word = "SKINNAME" Then
-                    txtSkinname.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
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub lstPlayers_Click()
-    Call ClearForm
-    Call ReadSOCPlayer(lstPlayers.ListIndex)
-End Sub
-
-Private Sub WriteCharacter(Remove As Boolean)
-    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 charfound As Boolean
-    
-    charfound = False
-    
-    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))
-        
-        'If the current character exists in the SOC, delete it.
-        If word = "CHARACTER" And Val(word2) = lstPlayers.ListIndex Then
-            charfound = True
-            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 "CHARACTER " & lstPlayers.ListIndex
-        txtPlayername.Text = TrimComplete(txtPlayername.Text)
-        txtMenuposition.Text = TrimComplete(txtMenuposition.Text)
-        txtPicname.Text = TrimComplete(txtPicname.Text)
-        txtSkinname.Text = TrimComplete(txtSkinname.Text)
-        If txtPlayername.Text <> "" Then tsTarget.WriteLine "PLAYERNAME = " & txtPlayername.Text
-        If txtMenuposition.Text <> "" Then tsTarget.WriteLine "MENUPOSITION = " & Val(txtMenuposition.Text)
-        If txtPicname.Text <> "" Then tsTarget.WriteLine "PICNAME = " & txtPicname.Text
-        If txtSkinname.Text <> "" Then tsTarget.WriteLine "SKINNAME = " & txtSkinname.Text
-        If chkEnabled.Value = 1 Then
-            tsTarget.WriteLine "STATUS = 32"
-        Else
-            tsTarget.WriteLine "STATUS = 0"
-        End If
-        If txtPlayertext.Text <> "" Then tsTarget.WriteLine "PLAYERTEXT = " & txtPlayertext.Text & "#"
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        If charfound = True Then
-            MsgBox "Player choice removed from SOC."
-        Else
-            MsgBox "Player choice not found in SOC."
-        End If
-    Else
-        MsgBox "Character Saved."
-    End If
-End Sub
-
diff --git a/tools/SOCEdit/frmCharacterEdit.frx b/tools/SOCEdit/frmCharacterEdit.frx
deleted file mode 100644
index 5e767f4abcf8678dcf707d1b13737541a8a4a58d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1215
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
z!0`S*0|O@mGXo=o0WQSJz`?-55Rj8tnOdY^0B0G(Sw?V{F`Q)rXPLrTW^k4{oMiz3
D#R6EF

diff --git a/tools/SOCEdit/frmCutsceneEdit.frm b/tools/SOCEdit/frmCutsceneEdit.frm
deleted file mode 100644
index 7fb18feede..0000000000
--- a/tools/SOCEdit/frmCutsceneEdit.frm
+++ /dev/null
@@ -1,1365 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmCutsceneEdit 
-   Caption         =   "Cutscene Edit"
-   ClientHeight    =   6495
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   10410
-   Icon            =   "frmCutsceneEdit.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   6495
-   ScaleWidth      =   10410
-   StartUpPosition =   3  'Windows Default
-   Begin VB.TextBox txtNumScenes 
-      Height          =   285
-      Left            =   3480
-      MaxLength       =   3
-      TabIndex        =   97
-      Top             =   240
-      Width           =   615
-   End
-   Begin VB.ListBox lstScene 
-      Height          =   450
-      ItemData        =   "frmCutsceneEdit.frx":0442
-      Left            =   3360
-      List            =   "frmCutsceneEdit.frx":0444
-      TabIndex        =   94
-      Top             =   600
-      Width           =   735
-   End
-   Begin VB.ComboBox cmbMusicslot 
-      Height          =   315
-      Left            =   8760
-      TabIndex        =   93
-      Top             =   1680
-      Width           =   1575
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 8:"
-      Height          =   1335
-      Index           =   7
-      Left            =   7440
-      TabIndex        =   80
-      Top             =   5040
-      Width           =   2895
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   7
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   85
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   7
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   84
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   7
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   83
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   7
-         Left            =   1320
-         TabIndex        =   82
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   7
-         Left            =   1320
-         TabIndex        =   81
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   7
-         Left            =   240
-         TabIndex        =   89
-         Top             =   960
-         Width           =   255
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   7
-         Left            =   240
-         TabIndex        =   88
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   7
-         Left            =   1200
-         TabIndex        =   87
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   7
-         Left            =   120
-         TabIndex        =   86
-         Top             =   240
-         Width           =   1095
-      End
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 7:"
-      Height          =   1335
-      Index           =   6
-      Left            =   4440
-      TabIndex        =   70
-      Top             =   5040
-      Width           =   2895
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   6
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   75
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   6
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   74
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   6
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   73
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   6
-         Left            =   1320
-         TabIndex        =   72
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   6
-         Left            =   1320
-         TabIndex        =   71
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   6
-         Left            =   240
-         TabIndex        =   79
-         Top             =   960
-         Width           =   255
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   6
-         Left            =   240
-         TabIndex        =   78
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   6
-         Left            =   1200
-         TabIndex        =   77
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   6
-         Left            =   120
-         TabIndex        =   76
-         Top             =   240
-         Width           =   1095
-      End
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 6:"
-      Height          =   1335
-      Index           =   5
-      Left            =   7440
-      TabIndex        =   60
-      Top             =   3600
-      Width           =   2895
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   5
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   65
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   5
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   64
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   5
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   63
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   5
-         Left            =   1320
-         TabIndex        =   62
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   5
-         Left            =   1320
-         TabIndex        =   61
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   5
-         Left            =   240
-         TabIndex        =   69
-         Top             =   960
-         Width           =   255
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   5
-         Left            =   240
-         TabIndex        =   68
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   5
-         Left            =   1200
-         TabIndex        =   67
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   5
-         Left            =   120
-         TabIndex        =   66
-         Top             =   240
-         Width           =   1095
-      End
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 5:"
-      Height          =   1335
-      Index           =   4
-      Left            =   4440
-      TabIndex        =   50
-      Top             =   3600
-      Width           =   2895
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   4
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   55
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   4
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   54
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   4
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   53
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   4
-         Left            =   1320
-         TabIndex        =   52
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   4
-         Left            =   1320
-         TabIndex        =   51
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   4
-         Left            =   240
-         TabIndex        =   59
-         Top             =   960
-         Width           =   255
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   4
-         Left            =   240
-         TabIndex        =   58
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   4
-         Left            =   1200
-         TabIndex        =   57
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   4
-         Left            =   120
-         TabIndex        =   56
-         Top             =   240
-         Width           =   1095
-      End
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 4:"
-      Height          =   1335
-      Index           =   3
-      Left            =   1440
-      TabIndex        =   40
-      Top             =   3600
-      Width           =   2895
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   3
-         Left            =   1320
-         TabIndex        =   45
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   3
-         Left            =   1320
-         TabIndex        =   44
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   3
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   43
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   3
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   42
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   3
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   41
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   3
-         Left            =   120
-         TabIndex        =   49
-         Top             =   240
-         Width           =   1095
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   3
-         Left            =   1200
-         TabIndex        =   48
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   3
-         Left            =   240
-         TabIndex        =   47
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   3
-         Left            =   240
-         TabIndex        =   46
-         Top             =   960
-         Width           =   255
-      End
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 3:"
-      Height          =   1335
-      Index           =   2
-      Left            =   7440
-      TabIndex        =   30
-      Top             =   2160
-      Width           =   2895
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   2
-         Left            =   1320
-         TabIndex        =   35
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   2
-         Left            =   1320
-         TabIndex        =   34
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   2
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   33
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   2
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   32
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   2
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   31
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   2
-         Left            =   120
-         TabIndex        =   39
-         Top             =   240
-         Width           =   1095
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   2
-         Left            =   1200
-         TabIndex        =   38
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   2
-         Left            =   240
-         TabIndex        =   37
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   2
-         Left            =   240
-         TabIndex        =   36
-         Top             =   960
-         Width           =   255
-      End
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 2:"
-      Height          =   1335
-      Index           =   1
-      Left            =   4440
-      TabIndex        =   20
-      Top             =   2160
-      Width           =   2895
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   1
-         Left            =   1320
-         TabIndex        =   25
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   1
-         Left            =   1320
-         TabIndex        =   24
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   1
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   23
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   1
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   22
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   1
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   21
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   1
-         Left            =   120
-         TabIndex        =   29
-         Top             =   240
-         Width           =   1095
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   1
-         Left            =   1200
-         TabIndex        =   28
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   1
-         Left            =   240
-         TabIndex        =   27
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   1
-         Left            =   240
-         TabIndex        =   26
-         Top             =   960
-         Width           =   255
-      End
-   End
-   Begin VB.TextBox txtTextypos 
-      Height          =   285
-      Left            =   3120
-      MaxLength       =   3
-      TabIndex        =   19
-      Top             =   5880
-      Width           =   615
-   End
-   Begin VB.TextBox txtTextxpos 
-      Height          =   285
-      Left            =   3120
-      MaxLength       =   3
-      TabIndex        =   18
-      Top             =   5520
-      Width           =   615
-   End
-   Begin VB.Frame frmPic1 
-      Caption         =   "Picture 1:"
-      Height          =   1335
-      Index           =   0
-      Left            =   1440
-      TabIndex        =   6
-      Top             =   2160
-      Width           =   2895
-      Begin VB.TextBox txtPicycoord 
-         Height          =   285
-         Index           =   0
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   14
-         Top             =   960
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicXcoord 
-         Height          =   285
-         Index           =   0
-         Left            =   600
-         MaxLength       =   3
-         TabIndex        =   12
-         Top             =   600
-         Width           =   495
-      End
-      Begin VB.TextBox txtPicduration 
-         Height          =   285
-         Index           =   0
-         Left            =   2040
-         MaxLength       =   5
-         TabIndex        =   11
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.TextBox txtPicname 
-         Height          =   285
-         Index           =   0
-         Left            =   1320
-         TabIndex        =   8
-         Top             =   240
-         Width           =   1455
-      End
-      Begin VB.CheckBox chkPichires 
-         Caption         =   "High-Resolution"
-         Height          =   255
-         Index           =   0
-         Left            =   1320
-         TabIndex        =   7
-         Top             =   960
-         Width           =   1455
-      End
-      Begin VB.Label lblPicycoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Y:"
-         Height          =   255
-         Index           =   0
-         Left            =   240
-         TabIndex        =   15
-         Top             =   960
-         Width           =   255
-      End
-      Begin VB.Label lblPicxcoord 
-         Alignment       =   1  'Right Justify
-         Caption         =   "X:"
-         Height          =   255
-         Index           =   0
-         Left            =   240
-         TabIndex        =   13
-         Top             =   600
-         Width           =   255
-      End
-      Begin VB.Label lblPicduration 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Duration:"
-         Height          =   255
-         Index           =   0
-         Left            =   1200
-         TabIndex        =   10
-         Top             =   600
-         Width           =   735
-      End
-      Begin VB.Label lblPicname 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Picture Name:"
-         Height          =   255
-         Index           =   0
-         Left            =   120
-         TabIndex        =   9
-         Top             =   240
-         Width           =   1095
-      End
-   End
-   Begin VB.TextBox txtNumberofpics 
-      Height          =   285
-      Left            =   3840
-      MaxLength       =   1
-      TabIndex        =   5
-      Top             =   1800
-      Width           =   375
-   End
-   Begin VB.TextBox txtScenetext 
-      Height          =   1815
-      Left            =   4440
-      MultiLine       =   -1  'True
-      TabIndex        =   3
-      Top             =   240
-      Width           =   3135
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save Scene"
-      Height          =   495
-      Left            =   3360
-      Style           =   1  'Graphical
-      TabIndex        =   1
-      Top             =   1200
-      Width           =   855
-   End
-   Begin VB.ListBox lstCutscenes 
-      Height          =   6300
-      ItemData        =   "frmCutsceneEdit.frx":0446
-      Left            =   120
-      List            =   "frmCutsceneEdit.frx":0448
-      TabIndex        =   0
-      Top             =   120
-      Width           =   1215
-   End
-   Begin VB.Label Label3 
-      Caption         =   "Note: The cutscene editor is not fully functional. Only use it to get an idea of the proper syntax to use."
-      BeginProperty Font 
-         Name            =   "MS Sans Serif"
-         Size            =   9.75
-         Charset         =   0
-         Weight          =   700
-         Underline       =   0   'False
-         Italic          =   0   'False
-         Strikethrough   =   0   'False
-      EndProperty
-      Height          =   1335
-      Left            =   7680
-      TabIndex        =   98
-      Top             =   240
-      Width           =   2655
-   End
-   Begin VB.Label Label2 
-      Caption         =   "For Scene Text:"
-      BeginProperty Font 
-         Name            =   "MS Sans Serif"
-         Size            =   8.25
-         Charset         =   0
-         Weight          =   400
-         Underline       =   -1  'True
-         Italic          =   0   'False
-         Strikethrough   =   0   'False
-      EndProperty
-      Height          =   255
-      Left            =   1560
-      TabIndex        =   96
-      Top             =   5160
-      Width           =   1695
-   End
-   Begin VB.Label Label1 
-      Caption         =   "Enter all time durations in game tics (35 = 1 second)"
-      BeginProperty Font 
-         Name            =   "MS Sans Serif"
-         Size            =   8.25
-         Charset         =   0
-         Weight          =   700
-         Underline       =   0   'False
-         Italic          =   0   'False
-         Strikethrough   =   0   'False
-      EndProperty
-      Height          =   855
-      Left            =   1560
-      TabIndex        =   95
-      Top             =   960
-      Width           =   1335
-   End
-   Begin VB.Label lblMusicslot 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Music to play:"
-      Height          =   255
-      Left            =   7680
-      TabIndex        =   92
-      Top             =   1680
-      Width           =   975
-   End
-   Begin VB.Label lblCurrentScene 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Current Scene:"
-      Height          =   255
-      Left            =   1920
-      TabIndex        =   91
-      Top             =   720
-      Width           =   1215
-   End
-   Begin VB.Label lblNumScenes 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Number of Scenes in this Cutscene:"
-      Height          =   375
-      Left            =   1440
-      TabIndex        =   90
-      Top             =   120
-      Width           =   1935
-   End
-   Begin VB.Label lblTextypos 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Text Y Position:"
-      Height          =   255
-      Left            =   1800
-      TabIndex        =   17
-      Top             =   5880
-      Width           =   1215
-   End
-   Begin VB.Label lblTextxpos 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Text X Position:"
-      Height          =   255
-      Left            =   1800
-      TabIndex        =   16
-      Top             =   5520
-      Width           =   1215
-   End
-   Begin VB.Label lblNumberofpics 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Number of Pictures (max 8):"
-      Height          =   255
-      Left            =   1560
-      TabIndex        =   4
-      Top             =   1800
-      Width           =   2175
-   End
-   Begin VB.Label lblScenetext 
-      Caption         =   "Scene Text:"
-      Height          =   255
-      Left            =   4440
-      TabIndex        =   2
-      Top             =   0
-      Width           =   1215
-   End
-End
-Attribute VB_Name = "frmCutsceneEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdSave_Click()
-    Call WriteScene(False)
-End Sub
-
-Private Sub lstScene_Click()
-    Call ClearForm
-    Call LoadSOCCutscene(Val(lstCutscenes.List(lstCutscenes.ListIndex)), Val(lstScene.List(lstScene.ListIndex)))
-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 cmdReload_Click()
-    Call Reload
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-End Sub
-
-Private Sub Reload()
-    ClearForm
-    Call ReadCutsceneSOCNumbers
-    Call LoadMusic
-    If lstCutscenes.ListCount > 0 Then
-        lstCutscenes.ListIndex = 0
-    End If
-End Sub
-
-Private Sub LoadSOCCutscene(CutNum As Integer, SceneNum As Integer)
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim word As String
-    Dim word2 As String
-    Dim ind As Integer
-    
-    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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        ' WOW! This looks fun, don't it?!
-        If UCase(word) = "CUTSCENE" And Val(word2) = CutNum Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondToken(line))
-
-                If word = "NUMSCENES" Then
-                    txtNumScenes.Text = Val(word2)
-                ElseIf UCase(word) = "SCENE" And Val(word2) = SceneNum Then
-                    Do While Len(line) > 0 And Not ts.AtEndOfStream
-                        line = ts.ReadLine
-                        word = UCase(FirstToken(line))
-                        word2 = UCase(SecondTokenEqual(line))
-                    
-                        If word = "SCENETEXT" Then
-                            Dim startclip As Integer, endclip As Integer
-                            startclip = InStr(line, "=")
-    
-                            startclip = startclip + 2
-    
-                            line = Mid(line, startclip, Len(line))
-                    
-                            txtScenetext.Text = line & vbCrLf
-                    
-                            Do While InStr(line, "#") = 0 And Not ts.AtEndOfStream
-                                line = ts.ReadLine & vbCrLf
-                                txtScenetext.Text = txtScenetext.Text & line
-                            Loop
-                    
-                            txtScenetext.Text = RTrimComplete(txtScenetext.Text)
-                            If Right(txtScenetext.Text, 1) = "#" Then
-                                txtScenetext.Text = Left(txtScenetext.Text, Len(txtScenetext.Text) - 1)
-                            End If
-                        ElseIf word = "PIC1NAME" Or word = "PIC2NAME" Or word = "PIC3NAME" Or word = "PIC4NAME" Or word = "PIC5NAME" Or word = "PIC6NAME" Or word = "PIC7NAME" Or word = "PIC8NAME" Then
-                            ind = Val(Mid(word, 4, 1)) - 1
-                            txtPicname(ind).Text = word2
-                        ElseIf word = "PIC1HIRES" Or word = "PIC2HIRES" Or word = "PIC3HIRES" Or word = "PIC4HIRES" Or word = "PIC5HIRES" Or word = "PIC6HIRES" Or word = "PIC7HIRES" Or word = "PIC8HIRES" Then
-                            ind = Val(Mid(word, 4, 1)) - 1
-                            chkPichires(ind).Value = Val(word2)
-                        ElseIf word = "PIC1DURATION" Or word = "PIC2DURATION" Or word = "PIC3DURATION" Or word = "PIC4DURATION" Or word = "PIC5DURATION" Or word = "PIC6DURATION" Or word = "PIC7DURATION" Or word = "PIC8DURATION" Then
-                            ind = Val(Mid(word, 4, 1)) - 1
-                            txtPicduration(ind).Text = Val(word2)
-                        ElseIf word = "PIC1XCOORD" Or word = "PIC2XCOORD" Or word = "PIC3XCOORD" Or word = "PIC4XCOORD" Or word = "PIC5XCOORD" Or word = "PIC6XCOORD" Or word = "PIC7XCOORD" Or word = "PIC8XCOORD" Then
-                            ind = Val(Mid(word, 4, 1)) - 1
-                            txtPicXcoord(ind).Text = Val(word2)
-                        ElseIf word = "PIC1YCOORD" Or word = "PIC2YCOORD" Or word = "PIC3YCOORD" Or word = "PIC4YCOORD" Or word = "PIC5YCOORD" Or word = "PIC6YCOORD" Or word = "PIC7YCOORD" Or word = "PIC8YCOORD" Then
-                            ind = Val(Mid(word, 4, 1)) - 1
-                            txtPicycoord(ind).Text = Val(word2)
-                        ElseIf word = "TEXTXPOS" Then
-                            txtTextxpos.Text = Val(word2)
-                        ElseIf word = "TEXTYPOS" Then
-                            txtTextypos.Text = Val(word2)
-                        ElseIf word = "MUSICSLOT" Then
-                            cmbMusicslot.ListIndex = Val(word2)
-                        ElseIf word = "NUMBEROFPICS" Then
-                            txtNumberofpics.Text = Val(word2)
-                        ElseIf word = "SCENE" Then 'End of scene data
-                            line = ""
-                        ElseIf Len(line) > 0 And Left(line, 1) <> "#" Then
-                            MsgBox "Error in SOC!" & vbCrLf & "Unknown line: " & line
-                        End If
-                    Loop
-                End If
-            Loop
-            Exit Do
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub ReadCutsceneSOCNumbers()
-    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)
-    
-    lstCutscenes.Clear
-    
-CutsceneLoad:
-    Do While Not ts.AtEndOfStream
-        line = ts.ReadLine
-        
-        If Left(line, 1) = "#" Then GoTo CutsceneLoad
-        
-        If Left(line, 1) = vbCrLf Then GoTo CutsceneLoad
-        
-        If Len(line) < 1 Then GoTo CutsceneLoad
-        
-        word = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "CUTSCENE" Then
-            lstCutscenes.AddItem (Val(word2))
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub ClearForm()
-    Dim i As Integer
-    
-    For i = 0 To 7
-        chkPichires(i).Value = 0
-        txtPicXcoord(i).Text = ""
-        txtPicycoord(i).Text = ""
-        txtPicname(i).Text = ""
-        txtPicduration(i).Text = ""
-    Next
-    
-    txtScenetext.Text = ""
-    txtNumberofpics.Text = ""
-    txtTextxpos.Text = ""
-    txtTextypos.Text = ""
-    cmbMusicslot.Text = ""
-End Sub
-
-Private Sub lstCutscenes_Click()
-    Dim i As Integer
-    
-    LoadNumScenes (Val(lstCutscenes.List(lstCutscenes.ListIndex)))
-    
-    lstScene.Clear
-    For i = 1 To Val(txtNumScenes.Text)
-        lstScene.AddItem i
-    Next
-    
-    If Val(txtNumScenes) > 0 Then
-        lstScene.ListIndex = lstScene.ListCount - 1
-        lstScene.ListIndex = 0
-    End If
-End Sub
-
-Private Sub LoadNumScenes(CutNum As Integer)
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim word As String
-    Dim word2 As String
-    Dim ind As Integer
-    
-    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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        ' WOW! This looks fun, don't it?!
-        If UCase(word) = "CUTSCENE" And Val(word2) = CutNum Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondToken(line))
-
-                If word = "NUMSCENES" Then
-                    txtNumScenes.Text = Val(word2)
-                End If
-            Loop
-            Exit Do
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub WriteScene(Remove As Boolean)
-    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
-    Dim CutsceneNum As Integer
-    Dim InCutScene As Boolean
-    Dim scenefound As Boolean
-    Dim nevercheckagain As Boolean
-    
-    ' This whole sub is a mess, but it works,
-    ' so I'd better not touch it...
-    scenefound = False
-    nevercheckagain = False
-    
-    InCutScene = False
-    CutsceneNum = Val(lstCutscenes.List(lstCutscenes.ListIndex))
-    
-    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))
-
-        If nevercheckagain = False And word = "CUTSCENE" And Val(word2) = CutsceneNum Then
-            InCutScene = True
-            tsTarget.WriteLine "CUTSCENE " & Val(lstCutscenes.List(lstCutscenes.ListIndex))
-            tsTarget.WriteLine "NUMSCENES " & Val(txtNumScenes.Text)
-            line = tsSource.ReadLine
-            word = UCase(FirstToken(line))
-            word2 = UCase(SecondToken(line))
-            If word = "NUMSCENES" Then
-                line = tsSource.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondToken(line))
-            End If
-        End If
-        
-        'If the current scene exists in the SOC, delete it.
-        If nevercheckagain = False And InCutScene = True And word = "SCENE" And Val(word2) = Val(lstScene.List(lstScene.ListIndex)) Then
-            scenefound = True
-            line = tsSource.ReadLine
-            Do While (Left(UCase(line), 6) <> "SCENE " And Len(TrimComplete(line)) > 0) And Not (tsSource.AtEndOfStream)
-                line = tsSource.ReadLine
-            Loop
-            If Remove = False Then
-                tsTarget.WriteLine "SCENE " & Val(lstScene.List(lstScene.ListIndex))
-                txtNumberofpics.Text = TrimComplete(txtNumberofpics.Text)
-                txtTextxpos.Text = TrimComplete(txtTextxpos.Text)
-                txtTextypos.Text = TrimComplete(txtTextypos.Text)
-                cmbMusicslot.Text = TrimComplete(cmbMusicslot.Text)
-        
-                For i = 0 To 7
-                    txtPicname(i).Text = TrimComplete(txtPicname(i).Text)
-                    txtPicXcoord(i).Text = TrimComplete(txtPicXcoord(i).Text)
-                    txtPicycoord(i).Text = TrimComplete(txtPicycoord(i).Text)
-                    txtPicduration(i).Text = TrimComplete(txtPicduration(i).Text)
-                Next
-        
-                If txtNumberofpics.Text <> "" Then tsTarget.WriteLine "NUMBEROFPICS = " & Val(txtNumberofpics.Text)
-                If txtTextxpos.Text <> "" Then tsTarget.WriteLine "TEXTXPOS = " & Val(txtTextxpos.Text)
-                If txtTextypos.Text <> "" Then tsTarget.WriteLine "TEXTYPOS = " & Val(txtTextypos.Text)
-                If cmbMusicslot.Text <> "" Then tsTarget.WriteLine "MUSICSLOT = " & Val(cmbMusicslot.Text)
-        
-                For i = 0 To 7
-                    If txtPicname(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "NAME = " & txtPicname(i).Text
-            
-                    If chkPichires(i).Value = 1 Then tsTarget.WriteLine "PIC" & (i + 1) & "HIRES = 1"
-            
-                    If txtPicXcoord(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "XCOORD = " & Val(txtPicXcoord(i).Text)
-                    If txtPicycoord(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "YCOORD = " & Val(txtPicycoord(i).Text)
-                    If txtPicduration(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "DURATION = " & Val(txtPicduration(i).Text)
-                Next
-                If txtScenetext.Text <> "" Then tsTarget.WriteLine "SCENETEXT = " & txtScenetext.Text & "#"
-            End If
-            InCutScene = False
-            nevercheckagain = True
-        End If
-            tsTarget.WriteLine line
-    Loop
-    
-    tsSource.Close
-    Set myFSOSource = Nothing
-    
-    If Remove = False And scenefound = False Then
-        If line <> "" Then tsTarget.WriteLine ""
-    
-        tsTarget.WriteLine "CUTSCENE " & Val(lstCutscenes.List(lstCutscenes.ListIndex))
-        tsTarget.WriteLine "NUMSCENES " & Val(txtNumScenes.Text)
-        tsTarget.WriteLine "SCENE " & Val(lstScene.List(lstScene.ListIndex))
-        txtNumberofpics.Text = TrimComplete(txtNumberofpics.Text)
-        txtScenetext.Text = TrimComplete(txtScenetext.Text)
-        txtTextxpos.Text = TrimComplete(txtTextxpos.Text)
-        txtTextypos.Text = TrimComplete(txtTextypos.Text)
-        cmbMusicslot.Text = TrimComplete(cmbMusicslot.Text)
-        
-        For i = 0 To 7
-            txtPicname(i).Text = TrimComplete(txtPicname(i).Text)
-            txtPicXcoord(i).Text = TrimComplete(txtPicXcoord(i).Text)
-            txtPicycoord(i).Text = TrimComplete(txtPicycoord(i).Text)
-            txtPicduration(i).Text = TrimComplete(txtPicduration(i).Text)
-        Next
-        
-        If txtNumberofpics.Text <> "" Then tsTarget.WriteLine "NUMBEROFPICS = " & Val(txtNumberofpics.Text)
-        If txtScenetext.Text <> "" Then tsTarget.WriteLine "SCENETEXT = " & txtScenetext.Text & "#"
-        If txtTextxpos.Text <> "" Then tsTarget.WriteLine "TEXTXPOS = " & Val(txtTextxpos.Text)
-        If txtTextypos.Text <> "" Then tsTarget.WriteLine "TEXTYPOS = " & Val(txtTextypos.Text)
-        If cmbMusicslot.Text <> "" Then tsTarget.WriteLine "MUSICSLOT = " & Val(cmbMusicslot.Text)
-        
-        For i = 0 To 7
-            If txtPicname(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "NAME = " & txtPicname(i).Text
-            
-            If chkPichires(i).Value = 1 Then tsTarget.WriteLine "PIC" & (i + 1) & "HIRES = 1"
-            
-            If txtPicXcoord(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "XCOORD = " & Val(txtPicXcoord(i).Text)
-            If txtPicycoord(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "YCOORD = " & Val(txtPicycoord(i).Text)
-            If txtPicduration(i).Text <> "" Then tsTarget.WriteLine "PIC" & (i + 1) & "DURATION = " & Val(txtPicduration(i).Text)
-        Next
-    End If
-            
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        If scenefound = True Then
-            MsgBox "Scene removed from SOC."
-        Else
-            MsgBox "Scene not found in SOC."
-        End If
-    Else
-        MsgBox "Scene Saved."
-    End If
-End Sub
diff --git a/tools/SOCEdit/frmCutsceneEdit.frx b/tools/SOCEdit/frmCutsceneEdit.frx
deleted file mode 100644
index 6f844e6431ce040d0f52f774e59f1b79b7f8e03d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1098
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
M!0;Xv_z+_l0B93EvH$=8

diff --git a/tools/SOCEdit/frmEmblemEdit.frm b/tools/SOCEdit/frmEmblemEdit.frm
deleted file mode 100644
index f94255b9ca..0000000000
--- a/tools/SOCEdit/frmEmblemEdit.frm
+++ /dev/null
@@ -1,384 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmEmblemEdit 
-   Caption         =   "Emblem Edit"
-   ClientHeight    =   2865
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   5160
-   Icon            =   "frmEmblemEdit.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   2865
-   ScaleWidth      =   5160
-   StartUpPosition =   3  'Windows Default
-   Begin VB.CommandButton cmdDelete 
-      Caption         =   "&Delete Last Emblem"
-      Height          =   735
-      Left            =   1560
-      Style           =   1  'Graphical
-      TabIndex        =   17
-      Top             =   600
-      Width           =   855
-   End
-   Begin VB.CommandButton cmdAdd 
-      Caption         =   "&Add"
-      Height          =   375
-      Left            =   1560
-      TabIndex        =   16
-      Top             =   120
-      Width           =   855
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save Emblem"
-      Height          =   495
-      Left            =   4200
-      Style           =   1  'Graphical
-      TabIndex        =   13
-      Top             =   2280
-      Width           =   855
-   End
-   Begin VB.CommandButton cmdReload 
-      Caption         =   "&Reload"
-      Height          =   495
-      Left            =   3120
-      TabIndex        =   12
-      Top             =   2280
-      Width           =   975
-   End
-   Begin VB.TextBox txtPlayernum 
-      Height          =   285
-      Left            =   4320
-      MaxLength       =   3
-      TabIndex        =   9
-      Top             =   1800
-      Width           =   735
-   End
-   Begin VB.TextBox txtMapnum 
-      Height          =   285
-      Left            =   4320
-      MaxLength       =   4
-      TabIndex        =   7
-      Top             =   1320
-      Width           =   735
-   End
-   Begin VB.TextBox txtZ 
-      Height          =   285
-      Left            =   4320
-      MaxLength       =   5
-      TabIndex        =   3
-      Top             =   960
-      Width           =   735
-   End
-   Begin VB.TextBox txtY 
-      Height          =   285
-      Left            =   4320
-      MaxLength       =   5
-      TabIndex        =   2
-      Top             =   600
-      Width           =   735
-   End
-   Begin VB.TextBox txtX 
-      Height          =   285
-      Left            =   4320
-      MaxLength       =   5
-      TabIndex        =   1
-      Top             =   240
-      Width           =   735
-   End
-   Begin VB.ListBox lstEmblems 
-      Height          =   2400
-      Left            =   120
-      TabIndex        =   0
-      Top             =   120
-      Width           =   1335
-   End
-   Begin VB.Label Label1 
-      Caption         =   "Emblem #s must be linear, sorry!"
-      Height          =   495
-      Left            =   1560
-      TabIndex        =   18
-      Top             =   2400
-      Width           =   1455
-   End
-   Begin VB.Label lblNumEmblems 
-      Caption         =   "# of Emblems:"
-      Height          =   255
-      Left            =   120
-      TabIndex        =   15
-      Top             =   2520
-      Width           =   1335
-   End
-   Begin VB.Label lblNote2 
-      Caption         =   "Don't forget to set Game Data file and # of Emblems in Global Game Settings!"
-      Height          =   855
-      Left            =   1560
-      TabIndex        =   14
-      Top             =   1440
-      Width           =   1575
-   End
-   Begin VB.Label lblNote 
-      Appearance      =   0  'Flat
-      BorderStyle     =   1  'Fixed Single
-      Caption         =   "Note: Enter map coordinates, not game coordinates. (I.e., 128, not 8388608)"
-      ForeColor       =   &H80000008&
-      Height          =   1095
-      Left            =   2640
-      TabIndex        =   11
-      Top             =   120
-      Width           =   1335
-   End
-   Begin VB.Label lblPlayernum 
-      Caption         =   "Player # (255 for all players):"
-      Height          =   495
-      Left            =   3240
-      TabIndex        =   10
-      Top             =   1680
-      Width           =   1095
-   End
-   Begin VB.Label lblMapnum 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Map #:"
-      Height          =   255
-      Left            =   3600
-      TabIndex        =   8
-      Top             =   1320
-      Width           =   615
-   End
-   Begin VB.Label lblZ 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Z:"
-      Height          =   255
-      Left            =   3960
-      TabIndex        =   6
-      Top             =   960
-      Width           =   255
-   End
-   Begin VB.Label lblY 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Y:"
-      Height          =   255
-      Left            =   3960
-      TabIndex        =   5
-      Top             =   600
-      Width           =   255
-   End
-   Begin VB.Label lblX 
-      Alignment       =   1  'Right Justify
-      Caption         =   "X:"
-      Height          =   255
-      Left            =   3960
-      TabIndex        =   4
-      Top             =   240
-      Width           =   255
-   End
-End
-Attribute VB_Name = "frmEmblemEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdAdd_Click()
-    lstEmblems.AddItem "Emblem " & lstEmblems.ListCount + 1
-    lstEmblems.ListIndex = lstEmblems.ListCount - 1
-    lblNumEmblems.Caption = "# of Emblems: " & lstEmblems.ListCount
-    txtX.Text = 0
-    txtY.Text = 0
-    txtZ.Text = 0
-    txtPlayernum.Text = 255
-    txtMapnum.Text = 1
-End Sub
-
-Private Sub cmdDelete_Click()
-    Call WriteEmblem(True)
-    lstEmblems.RemoveItem lstEmblems.ListCount - 1
-    lstEmblems.ListIndex = lstEmblems.ListCount - 1
-    lblNumEmblems.Caption = "# of Emblems: " & lstEmblems.ListCount
-End Sub
-
-Private Sub cmdReload_Click()
-    Call Reload
-End Sub
-
-Private Sub Reload()
-    lstEmblems.Clear
-    txtX.Text = ""
-    txtY.Text = ""
-    txtZ.Text = ""
-    txtMapnum.Text = ""
-    txtPlayernum.Text = ""
-    lblNumEmblems.Caption = "# of Emblems: " & lstEmblems.ListCount
-    Call ReadSOCEmblems
-End Sub
-
-Private Sub cmdSave_Click()
-    If lstEmblems.ListCount <= 0 Then
-        MsgBox "You have no emblems to save!"
-    Else
-        Call WriteEmblem(False)
-    End If
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-End Sub
-
-Private Sub ReadSOCEmblems()
-    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)
-    
-    lstEmblems.Clear
-    
-EmblemLoad:
-    Do While Not ts.AtEndOfStream
-        line = ts.ReadLine
-        
-        If Left(line, 1) = "#" Then GoTo EmblemLoad
-        
-        If Left(line, 1) = vbCrLf Then GoTo EmblemLoad
-        
-        If Len(line) < 1 Then GoTo EmblemLoad
-        
-        word = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "EMBLEM" Then
-            lstEmblems.AddItem ("Emblem " & Val(word2))
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub ReadSOCEmblemNum(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)
-    
-EmblemLoad:
-    Do While Not ts.AtEndOfStream
-        line = ts.ReadLine
-        
-        If Left(line, 1) = "#" Then GoTo EmblemLoad
-        
-        If Left(line, 1) = vbCrLf Then GoTo EmblemLoad
-        
-        If Len(line) < 1 Then GoTo EmblemLoad
-        
-        word = UCase(FirstToken(line))
-        word2 = UCase(SecondToken(line))
-        
-        If word = "EMBLEM" 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 = "X" Then
-                        txtX.Text = Val(word2)
-                    ElseIf word = "Y" Then
-                        txtY.Text = Val(word2)
-                    ElseIf word = "Z" Then
-                        txtZ.Text = Val(word2)
-                    ElseIf word = "PLAYERNUM" Then
-                        txtPlayernum.Text = Val(word2)
-                    ElseIf word = "MAPNUM" Then
-                        txtMapnum.Text = Val(word2)
-                    ElseIf Len(line) > 0 And Left(line, 1) <> "#" Then
-                        MsgBox "Error in SOC with Emblem " & num & vbCrLf & "Unknown line: " & line
-                    End If
-                Loop
-                Exit Do
-            End If
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub lstEmblems_Click()
-    Dim i As Integer
-    
-    i = InStr(lstEmblems.List(lstEmblems.ListIndex), " ") + 1
-    
-    i = Mid(lstEmblems.List(lstEmblems.ListIndex), i, Len(lstEmblems.List(lstEmblems.ListIndex)) - i + 1)
-    i = Val(i)
-    Call ReadSOCEmblemNum(i)
-End Sub
-
-Private Sub WriteEmblem(Remove As Boolean)
-    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 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(lstEmblems.List(lstEmblems.ListIndex), " ") + 1
-    
-        i = Mid(lstEmblems.List(lstEmblems.ListIndex), i, Len(lstEmblems.List(lstEmblems.ListIndex)) - i + 1)
-        i = Val(i)
-
-        'If the current emblem exists in the SOC, delete it.
-        If word = "EMBLEM" 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(lstEmblems.List(lstEmblems.ListIndex))
-        txtX.Text = TrimComplete(txtX.Text)
-        txtY.Text = TrimComplete(txtY.Text)
-        txtZ.Text = TrimComplete(txtZ.Text)
-        txtMapnum.Text = TrimComplete(txtMapnum.Text)
-        txtPlayernum.Text = TrimComplete(txtPlayernum.Text)
-        If txtX.Text <> "" Then tsTarget.WriteLine "X = " & Val(txtX.Text)
-        If txtY.Text <> "" Then tsTarget.WriteLine "Y = " & Val(txtY.Text)
-        If txtZ.Text <> "" Then tsTarget.WriteLine "Z = " & Val(txtZ.Text)
-        If txtMapnum.Text <> "" Then tsTarget.WriteLine "MAPNUM = " & Val(txtMapnum.Text)
-        If txtPlayernum.Text <> "" Then tsTarget.WriteLine "PLAYERNUM = " & Val(txtPlayernum.Text)
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        MsgBox "Emblem deleted."
-    Else
-        MsgBox "Emblem Saved."
-    End If
-End Sub
diff --git a/tools/SOCEdit/frmEmblemEdit.frx b/tools/SOCEdit/frmEmblemEdit.frx
deleted file mode 100644
index 2ae3673307b7e47781b379ec9ae8ac569ee3fda5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1090
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
K!0`S*0|NkhWj(S0

diff --git a/tools/SOCEdit/frmHUDEdit.frm b/tools/SOCEdit/frmHUDEdit.frm
deleted file mode 100644
index 2b267b79b2..0000000000
--- a/tools/SOCEdit/frmHUDEdit.frm
+++ /dev/null
@@ -1,315 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmHUDEdit 
-   Caption         =   "HUD Edit"
-   ClientHeight    =   2505
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   5160
-   Icon            =   "frmHUDEdit.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   2505
-   ScaleWidth      =   5160
-   StartUpPosition =   3  'Windows Default
-   Begin VB.CommandButton cmdCodeDefault 
-      Caption         =   "&Load Code Default"
-      Height          =   375
-      Left            =   3480
-      TabIndex        =   9
-      Top             =   1080
-      Width           =   1575
-   End
-   Begin VB.CommandButton cmdDelete 
-      Caption         =   "&Delete from SOC"
-      Height          =   375
-      Left            =   3480
-      TabIndex        =   7
-      Top             =   2040
-      Width           =   1575
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save Changes"
-      Height          =   375
-      Left            =   3480
-      TabIndex        =   6
-      Top             =   1560
-      Width           =   1575
-   End
-   Begin VB.TextBox txtY 
-      Height          =   285
-      Left            =   4080
-      MaxLength       =   3
-      TabIndex        =   3
-      Top             =   720
-      Width           =   615
-   End
-   Begin VB.TextBox txtX 
-      Height          =   285
-      Left            =   4080
-      MaxLength       =   3
-      TabIndex        =   2
-      Top             =   360
-      Width           =   615
-   End
-   Begin VB.ListBox lstHUD 
-      Height          =   2010
-      Left            =   120
-      TabIndex        =   0
-      Top             =   360
-      Width           =   3255
-   End
-   Begin VB.Label lblNote 
-      Caption         =   "HUD items are placed on a 320x200 grid."
-      Height          =   255
-      Left            =   1680
-      TabIndex        =   8
-      Top             =   120
-      Width           =   3015
-   End
-   Begin VB.Label lblY 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Y:"
-      Height          =   255
-      Left            =   3600
-      TabIndex        =   5
-      Top             =   720
-      Width           =   375
-   End
-   Begin VB.Label lblX 
-      Alignment       =   1  'Right Justify
-      Caption         =   "X:"
-      Height          =   255
-      Left            =   3720
-      TabIndex        =   4
-      Top             =   360
-      Width           =   255
-   End
-   Begin VB.Label lblHUDItems 
-      Caption         =   "HUD Items:"
-      Height          =   255
-      Left            =   120
-      TabIndex        =   1
-      Top             =   120
-      Width           =   975
-   End
-End
-Attribute VB_Name = "frmHUDEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdCodeDefault_Click()
-    LoadHUDInfo (lstHUD.ListIndex)
-End Sub
-
-Private Sub cmdDelete_Click()
-    Call WriteHUDItem(True)
-End Sub
-
-Private Sub cmdSave_Click()
-    Call WriteHUDItem(False)
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-End Sub
-
-Private Sub Reload()
-    txtX.Text = ""
-    txtY.Text = ""
-    Call LoadCode
-    lstHUD.ListIndex = 0
-End Sub
-
-Private Sub LoadCode()
-    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("st_stuff.h", ForReading, False)
-    
-    Do While ts.ReadLine <> "/** HUD location information (don't move this comment)"
-    Loop
-    
-    ts.ReadLine ' */
-    ts.ReadLine ' typedef struct
-    ts.ReadLine ' {
-    ts.ReadLine ' int x, y;
-    ts.ReadLine ' } hudinfo_t;
-    ts.ReadLine '
-    ts.ReadLine ' typedef enum
-    ts.ReadLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    lstHUD.Clear
-    
-    Do While InStr(line, "NUMHUDITEMS") = 0
-        startclip = InStr(line, "HUD_")
-        If InStr(line, "HUD_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            addstring = number & " - " & line
-            lstHUD.AddItem addstring
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub lstHUD_Click()
-    LoadHUDInfo (lstHUD.ListIndex)
-    Call ReadSOC(lstHUD.ListIndex)
-End Sub
-
-Private Sub LoadHUDInfo(HUDNum As Integer)
-    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
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("st_stuff.c", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "hudinfo[NUMHUDITEMS] =") = 0
-    Loop
-    
-    ts.SkipLine ' {
-    line = ts.ReadLine ' First HUD item
-    
-    number = 0
-    
-    Do While number <> HUDNum
-        line = ts.ReadLine
-        number = number + 1
-    Loop
-    
-    startclip = InStr(line, "{") + 1
-    endclip = InStr(line, ",")
-    
-    txtX.Text = TrimComplete(Mid(line, startclip, endclip - startclip))
-    
-    startclip = endclip + 2
-    endclip = InStr(startclip, line, "}") - 1
-    
-    txtY.Text = TrimComplete(Mid(line, startclip, endclip - startclip))
-        
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub ReadSOC(HUDNum 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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "HUDITEM" And Val(word2) = HUDNum Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondTokenEqual(line))
-                    
-                If word = "X" Then
-                    txtX.Text = Val(word2)
-                ElseIf word = "Y" Then
-                    txtY.Text = Val(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
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub WriteHUDItem(Remove As Boolean)
-    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 hudremoved As Boolean
-    
-    hudremoved = False
-    
-    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))
-        
-        'If the current item exists in the SOC, delete it.
-        If word = "HUDITEM" And Val(word2) = lstHUD.ListIndex Then
-            hudremoved = True
-            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 "HUDITEM " & lstHUD.ListIndex
-        txtX.Text = TrimComplete(txtX.Text)
-        txtY.Text = TrimComplete(txtY.Text)
-        If txtX.Text <> "" Then tsTarget.WriteLine "X = " & Val(txtX.Text)
-        If txtY.Text <> "" Then tsTarget.WriteLine "Y = " & Val(txtY.Text)
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        If hudremoved = True Then
-            MsgBox "HUD Item deleted from SOC."
-        Else
-            MsgBox "Couldn't find HUD Item in SOC."
-        End If
-    Else
-        MsgBox "HUD Item Saved."
-    End If
-End Sub
diff --git a/tools/SOCEdit/frmHUDEdit.frx b/tools/SOCEdit/frmHUDEdit.frx
deleted file mode 100644
index 2ae3673307b7e47781b379ec9ae8ac569ee3fda5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1090
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
K!0`S*0|NkhWj(S0

diff --git a/tools/SOCEdit/frmHelp.frm b/tools/SOCEdit/frmHelp.frm
deleted file mode 100644
index acf9910575..0000000000
--- a/tools/SOCEdit/frmHelp.frm
+++ /dev/null
@@ -1,213 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmHelp 
-   BorderStyle     =   3  'Fixed Dialog
-   Caption         =   "Getting Started"
-   ClientHeight    =   7395
-   ClientLeft      =   45
-   ClientTop       =   330
-   ClientWidth     =   6360
-   Icon            =   "frmHelp.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   MinButton       =   0   'False
-   ScaleHeight     =   7395
-   ScaleWidth      =   6360
-   ShowInTaskbar   =   0   'False
-   StartUpPosition =   1  'CenterOwner
-   Begin VB.CommandButton cmdOK 
-      Caption         =   "&OK, I know what I'm doing now."
-      Height          =   495
-      Left            =   1920
-      Style           =   1  'Graphical
-      TabIndex        =   8
-      Top             =   6840
-      Width           =   2535
-   End
-   Begin VB.Line Line9 
-      X1              =   120
-      X2              =   6120
-      Y1              =   4800
-      Y2              =   4800
-   End
-   Begin VB.Line Line7 
-      X1              =   120
-      X2              =   6120
-      Y1              =   5400
-      Y2              =   5400
-   End
-   Begin VB.Label Label12 
-      Caption         =   $"frmHelp.frx":0442
-      Height          =   615
-      Left            =   120
-      TabIndex        =   12
-      Top             =   4800
-      Width           =   6015
-   End
-   Begin VB.Line Line6 
-      X1              =   120
-      X2              =   6120
-      Y1              =   4200
-      Y2              =   4200
-   End
-   Begin VB.Label Label11 
-      Caption         =   $"frmHelp.frx":04F8
-      Height          =   615
-      Left            =   120
-      TabIndex        =   11
-      Top             =   4200
-      Width           =   6015
-   End
-   Begin VB.Line Line8 
-      X1              =   120
-      X2              =   6120
-      Y1              =   6360
-      Y2              =   6360
-   End
-   Begin VB.Line Line5 
-      X1              =   120
-      X2              =   6120
-      Y1              =   3720
-      Y2              =   3720
-   End
-   Begin VB.Line Line4 
-      X1              =   120
-      X2              =   6120
-      Y1              =   2880
-      Y2              =   2880
-   End
-   Begin VB.Line Line3 
-      X1              =   120
-      X2              =   6120
-      Y1              =   2400
-      Y2              =   2400
-   End
-   Begin VB.Line Line2 
-      X1              =   120
-      X2              =   6120
-      Y1              =   1800
-      Y2              =   1800
-   End
-   Begin VB.Line Line1 
-      X1              =   120
-      X2              =   6120
-      Y1              =   1200
-      Y2              =   1200
-   End
-   Begin VB.Label Label10 
-      Caption         =   $"frmHelp.frx":05EC
-      Height          =   495
-      Left            =   120
-      TabIndex        =   10
-      Top             =   3720
-      Width           =   6135
-   End
-   Begin VB.Label Label9 
-      Caption         =   $"frmHelp.frx":068F
-      Height          =   615
-      Left            =   120
-      TabIndex        =   9
-      Top             =   1200
-      Width           =   6135
-   End
-   Begin VB.Label Label8 
-      Caption         =   $"frmHelp.frx":0772
-      Height          =   495
-      Left            =   120
-      TabIndex        =   7
-      Top             =   6360
-      Width           =   6135
-   End
-   Begin VB.Label Label7 
-      Caption         =   "However, if you have these settings in the SOC you are using, don't worry - the editor will not erase them from your file."
-      Height          =   495
-      Left            =   120
-      TabIndex        =   6
-      Top             =   5880
-      Width           =   6135
-   End
-   Begin VB.Label Label6 
-      Caption         =   $"frmHelp.frx":0816
-      Height          =   495
-      Left            =   120
-      TabIndex        =   5
-      Top             =   5400
-      Width           =   6135
-   End
-   Begin VB.Label Label5 
-      Caption         =   $"frmHelp.frx":08A9
-      BeginProperty Font 
-         Name            =   "MS Sans Serif"
-         Size            =   8.25
-         Charset         =   0
-         Weight          =   700
-         Underline       =   0   'False
-         Italic          =   0   'False
-         Strikethrough   =   0   'False
-      EndProperty
-      Height          =   855
-      Left            =   120
-      TabIndex        =   4
-      Top             =   2880
-      Width           =   6135
-   End
-   Begin VB.Label Label4 
-      Caption         =   $"frmHelp.frx":09B1
-      Height          =   495
-      Left            =   120
-      TabIndex        =   3
-      Top             =   2400
-      Width           =   6135
-   End
-   Begin VB.Label Label3 
-      Caption         =   $"frmHelp.frx":0A5A
-      Height          =   495
-      Left            =   120
-      TabIndex        =   2
-      Top             =   1920
-      Width           =   6135
-   End
-   Begin VB.Label Label2 
-      Caption         =   "Finally! A way to easily edit SOC files! I know you're anxious to get started, but here are some things you should know first:"
-      BeginProperty Font 
-         Name            =   "MS Sans Serif"
-         Size            =   9.75
-         Charset         =   0
-         Weight          =   400
-         Underline       =   0   'False
-         Italic          =   0   'False
-         Strikethrough   =   0   'False
-      EndProperty
-      Height          =   495
-      Left            =   120
-      TabIndex        =   1
-      Top             =   600
-      Width           =   6135
-   End
-   Begin VB.Label Label1 
-      Caption         =   "How To Use This Program"
-      BeginProperty Font 
-         Name            =   "MS Sans Serif"
-         Size            =   13.5
-         Charset         =   0
-         Weight          =   700
-         Underline       =   -1  'True
-         Italic          =   0   'False
-         Strikethrough   =   0   'False
-      EndProperty
-      Height          =   495
-      Left            =   120
-      TabIndex        =   0
-      Top             =   120
-      Width           =   3855
-   End
-End
-Attribute VB_Name = "frmHelp"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdOK_Click()
-    frmHelp.Hide
-End Sub
diff --git a/tools/SOCEdit/frmHelp.frx b/tools/SOCEdit/frmHelp.frx
deleted file mode 100644
index 25004fe298fb4d56690dd551c70f3c8947b60cd3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2795
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
VNja$skT8eU29TVpkd$Ac2LP9QjSv6;

diff --git a/tools/SOCEdit/frmHub.frm b/tools/SOCEdit/frmHub.frm
deleted file mode 100644
index 3672c62b09..0000000000
--- a/tools/SOCEdit/frmHub.frm
+++ /dev/null
@@ -1,429 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmHub 
-   Caption         =   "SOC Editor"
-   ClientHeight    =   6960
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   4920
-   Icon            =   "frmHub.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   6960
-   ScaleWidth      =   4920
-   StartUpPosition =   3  'Windows Default
-   Begin VB.CommandButton cmdCreateBlank 
-      Caption         =   "Make a &Blank SOC"
-      Height          =   255
-      Left            =   240
-      TabIndex        =   22
-      Top             =   2520
-      Width           =   2055
-   End
-   Begin VB.CommandButton cmdUnlockables 
-      Caption         =   "Edit &Unlockables"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   2760
-      Style           =   1  'Graphical
-      TabIndex        =   21
-      Top             =   6360
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdAuthor 
-      Caption         =   "Enter &Author Info"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   120
-      Style           =   1  'Graphical
-      TabIndex        =   19
-      Top             =   3960
-      Width           =   1215
-   End
-   Begin VB.CommandButton cmdHelp 
-      Caption         =   "Getting Starte&d / READ ME FIRST!"
-      Height          =   495
-      Left            =   480
-      TabIndex        =   18
-      Top             =   2880
-      Width           =   1575
-   End
-   Begin VB.CommandButton cmdEditCutscenes 
-      Caption         =   "Edit C&utscenes"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   120
-      TabIndex        =   17
-      Top             =   6360
-      Width           =   1215
-   End
-   Begin VB.CommandButton cmdCharacterEdit 
-      Caption         =   "Edit &Character Select Screen"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   120
-      Style           =   1  'Graphical
-      TabIndex        =   16
-      Top             =   5760
-      Width           =   1215
-   End
-   Begin VB.PictureBox Picture1 
-      Height          =   1965
-      Left            =   2760
-      Picture         =   "frmHub.frx":0442
-      ScaleHeight     =   1905
-      ScaleWidth      =   1905
-      TabIndex        =   15
-      Top             =   3960
-      Width           =   1965
-   End
-   Begin VB.CommandButton cmdSoundEdit 
-      Caption         =   "Edit &Sounds"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   120
-      TabIndex        =   14
-      Top             =   5160
-      Width           =   1215
-   End
-   Begin VB.CommandButton cmdEmblemEdit 
-      Caption         =   "Edit &Emblem Locations"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   120
-      Style           =   1  'Graphical
-      TabIndex        =   13
-      Top             =   4560
-      Width           =   1215
-   End
-   Begin VB.CommandButton cmdHUDEdit 
-      Caption         =   "Edit &HUD Coordinates"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   1440
-      Style           =   1  'Graphical
-      TabIndex        =   12
-      Top             =   3960
-      Width           =   1215
-   End
-   Begin VB.CommandButton cmdMaincfg 
-      Caption         =   "Edit &Global Game Settings"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   1440
-      Style           =   1  'Graphical
-      TabIndex        =   11
-      Top             =   4560
-      Width           =   1215
-   End
-   Begin VB.DriveListBox Drive2 
-      Height          =   315
-      Left            =   2640
-      TabIndex        =   9
-      Top             =   360
-      Width           =   2175
-   End
-   Begin VB.DirListBox Dir2 
-      Height          =   1665
-      Left            =   2520
-      TabIndex        =   8
-      Top             =   720
-      Width           =   2295
-   End
-   Begin VB.FileListBox File1 
-      Height          =   1455
-      Left            =   2520
-      Pattern         =   "*.soc"
-      TabIndex        =   7
-      Top             =   2400
-      Width           =   2295
-   End
-   Begin VB.DriveListBox Drive1 
-      Height          =   315
-      Left            =   120
-      TabIndex        =   6
-      Top             =   360
-      Width           =   2295
-   End
-   Begin VB.DirListBox Dir1 
-      Height          =   1665
-      Left            =   120
-      TabIndex        =   4
-      Top             =   720
-      Width           =   2295
-   End
-   Begin VB.CommandButton cmdAbout 
-      Caption         =   "&About"
-      Height          =   375
-      Left            =   3960
-      TabIndex        =   3
-      Top             =   6000
-      Width           =   735
-   End
-   Begin VB.CommandButton cmdStateEdit 
-      Caption         =   "Edit St&ates"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   1440
-      TabIndex        =   2
-      Top             =   6360
-      Width           =   1215
-   End
-   Begin VB.CommandButton cmdLevelHeader 
-      Caption         =   "Edit &Level Headers"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   1440
-      Style           =   1  'Graphical
-      TabIndex        =   1
-      Top             =   5160
-      Width           =   1215
-   End
-   Begin VB.CommandButton cmdThingEdit 
-      Caption         =   "Edit &Things"
-      Enabled         =   0   'False
-      Height          =   495
-      Left            =   1440
-      TabIndex        =   0
-      Top             =   5760
-      Width           =   1215
-   End
-   Begin VB.Label lblAuthor 
-      Caption         =   "Modification By:"
-      Height          =   495
-      Left            =   120
-      TabIndex        =   20
-      Top             =   3480
-      Width           =   2295
-   End
-   Begin VB.Label lblSOCFile 
-      Caption         =   "SOC File to use (double click):"
-      Height          =   255
-      Left            =   2640
-      TabIndex        =   10
-      Top             =   120
-      Width           =   2175
-   End
-   Begin VB.Label lblSourcePath 
-      Caption         =   "Path to SRB2 Source Code:"
-      Height          =   255
-      Left            =   120
-      TabIndex        =   5
-      Top             =   120
-      Width           =   2175
-   End
-End
-Attribute VB_Name = "frmHub"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdAbout_Click()
-    MsgBox App.Title & " v" & App.Major & "." & App.Minor & "." & App.Revision & vbCrLf & "By " & App.CompanyName & vbCrLf & "(SSNTails)" & vbCrLf & App.Comments & vbCrLf & App.FileDescription
-End Sub
-
-Private Sub cmdAuthor_Click()
-    Dim Response As String
-    
-    Response$ = InputBox("Enter name to appear on credits (type in NOBODY to delete):", "Modification By", GetAuthor)
-    
-    If Response = "" Then Exit Sub
-    
-    Response = TrimComplete(Response)
-    
-    If UCase(Response) = "NOBODY" Then
-        Call WriteAuthor(True, Response)
-        lblAuthor.Caption = "Modification By: "
-    Else
-        Call WriteAuthor(False, Response)
-        lblAuthor.Caption = "Modification By: " & Response
-    End If
-End Sub
-
-Private Sub cmdCharacterEdit_Click()
-    frmCharacterEdit.Show vbModal, Me
-End Sub
-
-Private Sub cmdCreateBlank_Click()
-    Dim socname As String
-    
-    socname = InputBox("This file will be created in the directory you have selected on the main window." & vbCrLf & vbCrLf & "Enter the filename you want (do not include .SOC at the end):", "Make A Blank SOC")
-    Trim (socname)
-    
-    If InStr(LCase(socname), ".soc") > 0 Then
-        MsgBox "The thing says not to include the .SOC at the end, stupid.", vbOKOnly, "You goofed!"
-        Exit Sub
-    End If
-    
-    If Len(socname) > 0 Then
-        socname = socname & ".soc"
-        
-        Dim myFSOSOC As New Scripting.FileSystemObject
-        Dim tsSOC As TextStream
-    
-        Set tsSOC = myFSOSOC.OpenTextFile(File1.Path & "\" & socname, ForWriting, True)
-        tsSOC.Close
-        Set myFSOSOC = Nothing
-        
-        MsgBox "Blank SOC named " & socname & " created in " & File1.Path, vbOKOnly, "Success!"
-    End If
-End Sub
-
-Private Sub cmdEditCutscenes_Click()
-    frmCutsceneEdit.Show vbModal, Me
-End Sub
-
-Private Sub cmdEmblemEdit_Click()
-    frmEmblemEdit.Show vbModal, Me
-End Sub
-
-Private Sub cmdHelp_Click()
-    frmHelp.Show vbModal, Me
-End Sub
-
-Private Sub cmdHUDEdit_Click()
-    frmHUDEdit.Show vbModal, Me
-End Sub
-
-Private Sub cmdLevelHeader_Click()
-    frmLevelHeader.Show vbModal, Me
-End Sub
-
-Private Sub cmdMaincfg_Click()
-    frmMaincfg.Show vbModal, Me
-End Sub
-
-Private Sub cmdSoundEdit_Click()
-    frmSoundEdit.Show vbModal, Me
-End Sub
-
-Private Sub cmdStateEdit_Click()
-    frmStateEdit.Show vbModal, Me
-End Sub
-
-Private Sub cmdThingEdit_Click()
-    frmThingEdit.Show vbModal, Me
-End Sub
-
-Private Sub cmdUnlockables_Click()
-    frmUnlockablesEdit.Show vbModal, Me
-End Sub
-
-Private Sub Dir1_Change()
-    SourcePath = Dir1.Path
-End Sub
-
-Private Sub Dir2_Change()
-    File1.Path = Dir2.Path
-End Sub
-
-Private Sub Drive1_Change()
-    Dir1.Path = Drive1.Drive
-End Sub
-
-Private Sub Drive2_Change()
-    Dir2.Path = Drive2.Drive
-End Sub
-
-Private Sub File1_DblClick()
-    SOCTemp = File1.Path & "\" & "socedit.tmp"
-    SOCFile = File1.Path & "\" & File1.List(File1.ListIndex)
-    MsgBox "You are now using the file: " & vbCrLf & SOCFile
-    cmdLevelHeader.Enabled = True
-    cmdThingEdit.Enabled = True
-    cmdStateEdit.Enabled = True
-    cmdHUDEdit.Enabled = True
-    cmdMaincfg.Enabled = True
-    cmdEmblemEdit.Enabled = True
-    cmdSoundEdit.Enabled = True
-    cmdCharacterEdit.Enabled = True
-    cmdEditCutscenes.Enabled = True
-    cmdAuthor.Enabled = True
-    cmdUnlockables.Enabled = True
-    lblAuthor.Caption = "Modification By: " & GetAuthor
-End Sub
-
-Private Sub Form_Load()
-    SourcePath = App.Path
-    Dir1.Path = SourcePath
-End Sub
-
-Private Function GetAuthor() As String
-    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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "MODBY" Then
-            GetAuthor = word2
-            Exit Do
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Function
-
-Private Sub WriteAuthor(Remove As Boolean, ModderName As String)
-    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
-   
-    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))
-        
-        'If the entry exists in the SOC, delete it.
-        If word <> "MODBY" Then
-            tsTarget.WriteLine line
-        End If
-    Loop
-    
-    tsSource.Close
-    Set myFSOSource = Nothing
-    
-    If Remove = False Then
-        If line <> "" Then tsTarget.WriteLine ""
-    
-        tsTarget.WriteLine "ModBy " & ModderName
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        MsgBox "Name removed."
-    Else
-        MsgBox "Name Saved."
-    End If
-End Sub
-
diff --git a/tools/SOCEdit/frmHub.frx b/tools/SOCEdit/frmHub.frx
deleted file mode 100644
index 176491ab691e992176c9abbf087904eabfdfce0c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 50308
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
PMnhmU1V%$(z(W84eDqw7

diff --git a/tools/SOCEdit/frmLevelHeader.frm b/tools/SOCEdit/frmLevelHeader.frm
deleted file mode 100644
index e30acd581a..0000000000
--- a/tools/SOCEdit/frmLevelHeader.frm
+++ /dev/null
@@ -1,839 +0,0 @@
-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
-
diff --git a/tools/SOCEdit/frmLevelHeader.frx b/tools/SOCEdit/frmLevelHeader.frx
deleted file mode 100644
index fe81f4413fa61a067d219c069b5879dcd6861328..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1204
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
z!0`S*0|OfaGXo=o0UBaskZ0gvFi_A{@XOCj<zz5a&{YU7$uG*~U@!tP^YY6%7>pHk
z6@n5o^LQ9c6m%5=ic*sklQUA~8B7&)6?`(&GfMI@^V0Q0GD`DOQi~Kc^70jm5;OBO
E0U~i$#Q*>R

diff --git a/tools/SOCEdit/frmMaincfg.frm b/tools/SOCEdit/frmMaincfg.frm
deleted file mode 100644
index 3efca74a85..0000000000
--- a/tools/SOCEdit/frmMaincfg.frm
+++ /dev/null
@@ -1,644 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmMaincfg 
-   Caption         =   "Global Game Settings"
-   ClientHeight    =   5295
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   9360
-   Icon            =   "frmMaincfg.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   5295
-   ScaleWidth      =   9360
-   StartUpPosition =   3  'Windows Default
-   Begin VB.Frame frmReset 
-      Caption         =   "Reset Data (Be sure this is at the TOP of your SOC)"
-      Height          =   975
-      Left            =   4800
-      TabIndex        =   43
-      Top             =   4200
-      Width           =   4455
-      Begin VB.CheckBox chkReset 
-         Caption         =   "Thing Properties"
-         Height          =   255
-         Index           =   2
-         Left            =   1680
-         TabIndex        =   46
-         Tag             =   "4"
-         Top             =   240
-         Width           =   1575
-      End
-      Begin VB.CheckBox chkReset 
-         Caption         =   "States"
-         Height          =   255
-         Index           =   1
-         Left            =   240
-         TabIndex        =   45
-         Tag             =   "2"
-         Top             =   600
-         Width           =   1335
-      End
-      Begin VB.CheckBox chkReset 
-         Caption         =   "Sprite Names"
-         Height          =   255
-         Index           =   0
-         Left            =   240
-         TabIndex        =   44
-         Tag             =   "1"
-         Top             =   240
-         Width           =   1575
-      End
-   End
-   Begin VB.CheckBox chkDisableSpeedAdjust 
-      Caption         =   "Disable speed adjustment of player animations depending on how fast they are moving."
-      Height          =   375
-      Left            =   1080
-      TabIndex        =   42
-      Top             =   4200
-      Width           =   3615
-   End
-   Begin VB.TextBox txtTitleScrollSpeed 
-      Height          =   285
-      Left            =   4080
-      TabIndex        =   41
-      Top             =   1920
-      Width           =   495
-   End
-   Begin VB.CheckBox chkLoopTitle 
-      Caption         =   "Loop the title screen music?"
-      Height          =   195
-      Left            =   1080
-      TabIndex        =   39
-      Top             =   3840
-      Width           =   2415
-   End
-   Begin VB.TextBox txtCreditsCutscene 
-      Height          =   285
-      Left            =   4080
-      TabIndex        =   37
-      Top             =   1560
-      Width           =   495
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save"
-      Height          =   495
-      Left            =   120
-      TabIndex        =   36
-      Top             =   3120
-      Width           =   735
-   End
-   Begin VB.CommandButton cmdReload 
-      Caption         =   "&Reload"
-      Height          =   495
-      Left            =   120
-      TabIndex        =   35
-      Top             =   2520
-      Width           =   735
-   End
-   Begin VB.TextBox txtNumemblems 
-      Height          =   285
-      Left            =   4080
-      MaxLength       =   2
-      TabIndex        =   33
-      Top             =   3360
-      Width           =   495
-   End
-   Begin VB.TextBox txtGamedata 
-      Height          =   285
-      Left            =   3240
-      MaxLength       =   64
-      TabIndex        =   31
-      Top             =   2880
-      Width           =   1335
-   End
-   Begin VB.TextBox txtExeccfg 
-      Height          =   285
-      Left            =   3240
-      TabIndex        =   9
-      Top             =   2400
-      Width           =   1335
-   End
-   Begin VB.Frame frmTimers 
-      Caption         =   "Timers (35 = 1 second)"
-      Height          =   3975
-      Left            =   4800
-      TabIndex        =   8
-      Top             =   120
-      Width           =   4455
-      Begin VB.TextBox txtGameovertics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   29
-         Top             =   3480
-         Width           =   1335
-      End
-      Begin VB.TextBox txtHelpertics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   27
-         Top             =   3120
-         Width           =   1335
-      End
-      Begin VB.TextBox txtParalooptics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   25
-         Top             =   2760
-         Width           =   1335
-      End
-      Begin VB.TextBox txtExtralifetics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   23
-         Top             =   2400
-         Width           =   1335
-      End
-      Begin VB.TextBox txtSpacetimetics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   21
-         Top             =   2040
-         Width           =   1335
-      End
-      Begin VB.TextBox txtUnderwatertics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   19
-         Top             =   1680
-         Width           =   1335
-      End
-      Begin VB.TextBox txtTailsflytics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   17
-         Top             =   1320
-         Width           =   1335
-      End
-      Begin VB.TextBox txtFlashingtics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   15
-         Top             =   960
-         Width           =   1335
-      End
-      Begin VB.TextBox txtSneakertics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   13
-         Top             =   600
-         Width           =   1335
-      End
-      Begin VB.TextBox txtInvulntics 
-         Height          =   285
-         Left            =   3000
-         TabIndex        =   11
-         Top             =   240
-         Width           =   1335
-      End
-      Begin VB.Label lblGameovertics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Game Over Screen Time:"
-         Height          =   255
-         Left            =   960
-         TabIndex        =   30
-         Top             =   3480
-         Width           =   1935
-      End
-      Begin VB.Label lblHelpertics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "NiGHTS Nightopian Helper Time:"
-         Height          =   255
-         Left            =   240
-         TabIndex        =   28
-         Top             =   3120
-         Width           =   2655
-      End
-      Begin VB.Label lblParalooptics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "NiGHTS Paraloop Powerup Time:"
-         Height          =   255
-         Left            =   360
-         TabIndex        =   26
-         Top             =   2760
-         Width           =   2535
-      End
-      Begin VB.Label lblExtralifetics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Extra Life Music Duration:"
-         Height          =   255
-         Left            =   960
-         TabIndex        =   24
-         Top             =   2400
-         Width           =   1935
-      End
-      Begin VB.Label lblSpacetimetics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Space Breath Timeout:"
-         Height          =   255
-         Left            =   1200
-         TabIndex        =   22
-         Top             =   2040
-         Width           =   1695
-      End
-      Begin VB.Label lblUnderwatertics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Underwater Breath Timeout:"
-         Height          =   255
-         Left            =   840
-         TabIndex        =   20
-         Top             =   1680
-         Width           =   2055
-      End
-      Begin VB.Label lblTailsflytics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Tails Flying Time:"
-         Height          =   255
-         Left            =   1440
-         TabIndex        =   18
-         Top             =   1320
-         Width           =   1455
-      End
-      Begin VB.Label lblFlashingtics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Flashing Time After Being Hit:"
-         Height          =   255
-         Left            =   360
-         TabIndex        =   16
-         Top             =   960
-         Width           =   2535
-      End
-      Begin VB.Label lblSneakertics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Super Sneakers Time:"
-         Height          =   255
-         Left            =   240
-         TabIndex        =   14
-         Top             =   600
-         Width           =   2655
-      End
-      Begin VB.Label lblInvulntics 
-         Alignment       =   1  'Right Justify
-         Caption         =   "Invincibility Time:"
-         Height          =   255
-         Left            =   360
-         TabIndex        =   12
-         Top             =   240
-         Width           =   2535
-      End
-   End
-   Begin VB.TextBox txtIntrotoplay 
-      Height          =   285
-      Left            =   4080
-      TabIndex        =   6
-      Top             =   1200
-      Width           =   495
-   End
-   Begin VB.TextBox txtRacestage_start 
-      Height          =   285
-      Left            =   4080
-      MaxLength       =   4
-      TabIndex        =   4
-      Top             =   840
-      Width           =   495
-   End
-   Begin VB.TextBox txtSpstage_start 
-      Height          =   285
-      Left            =   4080
-      MaxLength       =   4
-      TabIndex        =   2
-      Top             =   480
-      Width           =   495
-   End
-   Begin VB.TextBox txtSstage_start 
-      Height          =   285
-      Left            =   4080
-      MaxLength       =   4
-      TabIndex        =   0
-      Top             =   120
-      Width           =   495
-   End
-   Begin VB.Label lblTitleScrollSpeed 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Scroll speed of title background:"
-      Height          =   255
-      Left            =   1560
-      TabIndex        =   40
-      Top             =   1920
-      Width           =   2415
-   End
-   Begin VB.Label lblCreditsCutscene 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Cutscene # to replace credits with:"
-      Height          =   255
-      Left            =   1080
-      TabIndex        =   38
-      Top             =   1560
-      Width           =   2895
-   End
-   Begin VB.Label lblNumemblems 
-      Alignment       =   1  'Right Justify
-      Caption         =   "# of LEVEL Emblems (Gamedata field must also be filled out):"
-      Height          =   375
-      Left            =   1440
-      TabIndex        =   34
-      Top             =   3240
-      Width           =   2535
-   End
-   Begin VB.Label lblGamedata 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Gamedata file (to save mod emblems and time data):"
-      Height          =   375
-      Left            =   960
-      TabIndex        =   32
-      Top             =   2760
-      Width           =   2175
-   End
-   Begin VB.Label lblExeccfg 
-      Alignment       =   1  'Right Justify
-      Caption         =   "CFG file to instantly execute upon loading this SOC:"
-      Height          =   495
-      Left            =   960
-      TabIndex        =   10
-      Top             =   2280
-      Width           =   2175
-   End
-   Begin VB.Label lblIntrotoplay 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Cutscene # to use for introduction:"
-      Height          =   255
-      Left            =   1440
-      TabIndex        =   7
-      Top             =   1200
-      Width           =   2535
-   End
-   Begin VB.Label lblRacestage_start 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Racing mode starts/loops back to this map #:"
-      Height          =   255
-      Left            =   720
-      TabIndex        =   5
-      Top             =   840
-      Width           =   3255
-   End
-   Begin VB.Label lblSpstage_start 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Single Player Game Starts on this map #:"
-      Height          =   255
-      Left            =   1080
-      TabIndex        =   3
-      Top             =   480
-      Width           =   2895
-   End
-   Begin VB.Label lblSstage_start 
-      Alignment       =   1  'Right Justify
-      Caption         =   "First Special Stage Map #:"
-      Height          =   255
-      Left            =   2040
-      TabIndex        =   1
-      Top             =   120
-      Width           =   1935
-   End
-End
-Attribute VB_Name = "frmMaincfg"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Private Sub cmdReload_Click()
-    Call Reload
-End Sub
-
-Private Sub cmdSave_Click()
-    Call WriteSettings
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-End Sub
-
-Private Sub ClearForm()
-    Dim i As Integer
-    
-    txtSstage_start.Text = ""
-    txtSpstage_start.Text = ""
-    txtRacestage_start.Text = ""
-    txtIntrotoplay.Text = ""
-    txtExeccfg.Text = ""
-    txtGamedata.Text = ""
-    txtNumemblems.Text = ""
-    txtInvulntics.Text = ""
-    txtSneakertics.Text = ""
-    txtFlashingtics.Text = ""
-    txtTailsflytics.Text = ""
-    txtUnderwatertics.Text = ""
-    txtSpacetimetics.Text = ""
-    txtExtralifetics.Text = ""
-    txtParalooptics.Text = ""
-    txtHelpertics.Text = ""
-    txtGameovertics.Text = ""
-    txtCreditsCutscene.Text = ""
-    txtTitleScrollSpeed.Text = ""
-    chkLoopTitle.Value = 0
-    chkDisableSpeedAdjust.Value = 0
-    
-    For i = 0 To 2
-        chkReset(i).Value = 0
-    Next i
-End Sub
-
-Private Sub Reload()
-    Call ClearForm
-    Call ReadSOCMaincfg
-End Sub
-
-Private Sub ReadSOCMaincfg()
-    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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "MAINCFG" Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondTokenEqual(line))
-                    
-                If word = "SSTAGE_START" Then
-                    txtSstage_start.Text = Val(word2)
-                ElseIf word = "SPSTAGE_START" Then
-                    txtSpstage_start.Text = Val(word2)
-                ElseIf word = "RACESTAGE_START" Then
-                    txtRacestage_start.Text = Val(word2)
-                ElseIf word = "INVULNTICS" Then
-                    txtInvulntics.Text = Val(word2)
-                ElseIf word = "SNEAKERTICS" Then
-                    txtSneakertics.Text = Val(word2)
-                ElseIf word = "FLASHINGTICS" Then
-                    txtFlashingtics.Text = Val(word2)
-                ElseIf word = "TAILSFLYTICS" Then
-                    txtTailsflytics.Text = Val(word2)
-                ElseIf word = "UNDERWATERTICS" Then
-                    txtUnderwatertics.Text = Val(word2)
-                ElseIf word = "SPACETIMETICS" Then
-                    txtSpacetimetics.Text = Val(word2)
-                ElseIf word = "EXTRALIFETICS" Then
-                    txtExtralifetics.Text = Val(word2)
-                ElseIf word = "PARALOOPTICS" Then
-                    txtParalooptics.Text = Val(word2)
-                ElseIf word = "HELPERTICS" Then
-                    txtHelpertics.Text = Val(word2)
-                ElseIf word = "GAMEOVERTICS" Then
-                    txtGameovertics.Text = Val(word2)
-                ElseIf word = "INTROTOPLAY" Then
-                    txtIntrotoplay.Text = Val(word2)
-                ElseIf word = "CREDITSCUTSCENE" Then
-                    txtCreditsCutscene.Text = Val(word2)
-                ElseIf word = "TITLESCROLLSPEED" Then
-                    txtTitleScrollSpeed.Text = Val(word2)
-                ElseIf word = "LOOPTITLE" Then
-                    chkLoopTitle.Value = Val(word2)
-                ElseIf word = "DISABLESPEEDADJUST" Then
-                    chkDisableSpeedAdjust.Value = Val(word2)
-                ElseIf word = "GAMEDATA" Then
-                    txtGamedata.Text = word2
-                ElseIf word = "NUMEMBLEMS" Then
-                    txtNumemblems.Text = Val(word2)
-                ElseIf word = "RESETDATA" Then
-                    Dim resetflags As Integer
-                    Dim z As Integer
-                    
-                    resetflags = Val(word2)
-                    
-                    For z = 0 To 2
-                        If resetflags And chkReset(z).Tag Then
-                            chkReset(z).Value = 1
-                        Else
-                            chkReset(z).Value = 0
-                        End If
-                    Next z
-                ElseIf Len(line) > 0 And Left(line, 1) <> "#" Then
-                    MsgBox "Error in SOC!" & vbCrLf & "Unknown line: " & line
-                End If
-            Loop
-            Exit Do
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub WriteSettings()
-    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))
-        
-        'If the category exists in the SOC, delete it.
-        If word = "MAINCFG" 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 line <> "" Then tsTarget.WriteLine ""
-    
-    tsTarget.WriteLine "MAINCFG CATEGORY"
-    txtSstage_start.Text = TrimComplete(txtSstage_start.Text)
-    txtSpstage_start.Text = TrimComplete(txtSpstage_start.Text)
-    txtRacestage_start.Text = TrimComplete(txtRacestage_start.Text)
-    txtIntrotoplay.Text = TrimComplete(txtIntrotoplay.Text)
-    txtCreditsCutscene.Text = TrimComplete(txtCreditsCutscene.Text)
-    txtExeccfg.Text = TrimComplete(txtExeccfg.Text)
-    txtGamedata.Text = TrimComplete(txtGamedata.Text)
-    txtNumemblems.Text = TrimComplete(txtNumemblems.Text)
-    txtInvulntics.Text = TrimComplete(txtInvulntics.Text)
-    txtSneakertics.Text = TrimComplete(txtSneakertics.Text)
-    txtFlashingtics.Text = TrimComplete(txtFlashingtics.Text)
-    txtTailsflytics.Text = TrimComplete(txtTailsflytics.Text)
-    txtUnderwatertics.Text = TrimComplete(txtUnderwatertics.Text)
-    txtSpacetimetics.Text = TrimComplete(txtSpacetimetics.Text)
-    txtExtralifetics.Text = TrimComplete(txtExtralifetics.Text)
-    txtParalooptics.Text = TrimComplete(txtParalooptics.Text)
-    txtHelpertics.Text = TrimComplete(txtHelpertics.Text)
-    txtGameovertics.Text = TrimComplete(txtGameovertics.Text)
-    txtTitleScrollSpeed.Text = TrimComplete(txtTitleScrollSpeed.Text)
-      
-    If txtSstage_start.Text <> "" Then tsTarget.WriteLine "SSTAGE_START = " & Val(txtSstage_start.Text)
-    If txtSpstage_start.Text <> "" Then tsTarget.WriteLine "SPSTAGE_START = " & Val(txtSpstage_start.Text)
-    If txtRacestage_start.Text <> "" Then tsTarget.WriteLine "RACESTAGE_START = " & Val(txtRacestage_start.Text)
-    If txtIntrotoplay.Text <> "" Then tsTarget.WriteLine "INTROTOPLAY = " & Val(txtIntrotoplay.Text)
-    If txtCreditsCutscene.Text <> "" Then tsTarget.WriteLine "CREDITSCUTSCENE = " & Val(txtCreditsCutscene.Text)
-    If txtExeccfg.Text <> "" Then tsTarget.WriteLine "EXECCFG = " & txtExeccfg.Text
-    If txtGamedata.Text <> "" Then tsTarget.WriteLine "GAMEDATA = " & txtGamedata.Text
-    If txtNumemblems.Text <> "" Then
-        tsTarget.WriteLine "NUMEMBLEMS = " & Val(txtNumemblems.Text)
-        EditedNumemblems = True
-    End If
-    If txtInvulntics.Text <> "" Then tsTarget.WriteLine "INVULNTICS = " & Val(txtInvulntics.Text)
-    If txtSneakertics.Text <> "" Then tsTarget.WriteLine "SNEAKERTICS = " & Val(txtSneakertics.Text)
-    If txtFlashingtics.Text <> "" Then tsTarget.WriteLine "FLASHINGTICS = " & Val(txtFlashingtics.Text)
-    If txtTailsflytics.Text <> "" Then tsTarget.WriteLine "TAILSFLYTICS = " & Val(txtTailsflytics.Text)
-    If txtUnderwatertics.Text <> "" Then tsTarget.WriteLine "UNDERWATERTICS = " & Val(txtUnderwatertics.Text)
-    If txtSpacetimetics.Text <> "" Then tsTarget.WriteLine "SPACETIMETICS = " & Val(txtSpacetimetics.Text)
-    If txtExtralifetics.Text <> "" Then tsTarget.WriteLine "EXTRALIFETICS = " & Val(txtExtralifetics.Text)
-    If txtParalooptics.Text <> "" Then tsTarget.WriteLine "PARALOOPTICS = " & Val(txtParalooptics.Text)
-    If txtHelpertics.Text <> "" Then tsTarget.WriteLine "HELPERTICS = " & Val(txtHelpertics.Text)
-    If txtGameovertics.Text <> "" Then tsTarget.WriteLine "GAMEOVERTICS = " & Val(txtGameovertics.Text)
-    If txtTitleScrollSpeed.Text <> "" Then tsTarget.WriteLine "TITLESCROLLSPEED = " & Val(txtTitleScrollSpeed.Text)
-    If chkLoopTitle.Value = 1 Then tsTarget.WriteLine "LOOPTITLE = " & chkLoopTitle.Value
-    If chkDisableSpeedAdjust.Value = 1 Then tsTarget.WriteLine "DISABLESPEEDADJUST = " & chkDisableSpeedAdjust.Value
-    
-    flags = 0
-    For i = 0 To 2
-        If chkReset(i).Value = 1 Then
-            flags = flags + Val(chkReset(i).Tag)
-        End If
-    Next
-        
-    If flags > 0 Then tsTarget.WriteLine "RESETDATA = " & flags
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    MsgBox "Settings Saved."
-End Sub
-
diff --git a/tools/SOCEdit/frmMaincfg.frx b/tools/SOCEdit/frmMaincfg.frx
deleted file mode 100644
index 2ae3673307b7e47781b379ec9ae8ac569ee3fda5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1090
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
K!0`S*0|NkhWj(S0

diff --git a/tools/SOCEdit/frmSoundEdit.frm b/tools/SOCEdit/frmSoundEdit.frm
deleted file mode 100644
index c91d84ed87..0000000000
--- a/tools/SOCEdit/frmSoundEdit.frm
+++ /dev/null
@@ -1,485 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmSoundEdit 
-   Caption         =   "Sound Edit"
-   ClientHeight    =   4995
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   6180
-   Icon            =   "frmSoundEdit.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   4995
-   ScaleWidth      =   6180
-   StartUpPosition =   3  'Windows Default
-   Begin VB.CommandButton cmdDelete 
-      Caption         =   "&Delete sound from SOC"
-      Height          =   495
-      Left            =   5040
-      Style           =   1  'Graphical
-      TabIndex        =   13
-      Top             =   4320
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save"
-      Height          =   495
-      Left            =   3840
-      TabIndex        =   6
-      Top             =   4320
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdReload 
-      Caption         =   "&Load Code Default"
-      Height          =   495
-      Left            =   2640
-      Style           =   1  'Graphical
-      TabIndex        =   5
-      Top             =   4320
-      Width           =   1095
-   End
-   Begin VB.Frame frmSpecial 
-      Caption         =   "Special Properties"
-      Height          =   3375
-      Left            =   2640
-      TabIndex        =   4
-      Top             =   840
-      Width           =   3495
-      Begin VB.CheckBox chkTotallySingle 
-         Caption         =   "Make sure only one sound of this is playing at a time on any sound channel."
-         Height          =   615
-         Left            =   120
-         TabIndex        =   12
-         Tag             =   "1"
-         Top             =   2640
-         Width           =   3255
-      End
-      Begin VB.CheckBox chkEightEx 
-         Caption         =   "Sound can be heard across 8x the distance"
-         Height          =   375
-         Left            =   120
-         TabIndex        =   10
-         Tag             =   "16"
-         Top             =   2160
-         Width           =   2295
-      End
-      Begin VB.CheckBox chkOutside 
-         Caption         =   "Volume dependent on how close you are to outside"
-         Height          =   375
-         Left            =   120
-         TabIndex        =   9
-         Tag             =   "4"
-         Top             =   360
-         Width           =   2295
-      End
-      Begin VB.CheckBox chkFourEx 
-         Caption         =   "Sound can be heard across 4x the distance"
-         Height          =   375
-         Left            =   120
-         TabIndex        =   8
-         Tag             =   "8"
-         Top             =   1560
-         Width           =   2055
-      End
-      Begin VB.CheckBox chkMultiple 
-         Caption         =   "More than one of this sound can be played per object at a time (i.e., thunder)"
-         Height          =   615
-         Left            =   120
-         TabIndex        =   7
-         Tag             =   "2"
-         Top             =   840
-         Width           =   2535
-      End
-      Begin VB.Label Label1 
-         Caption         =   "Combine for 32x"
-         Height          =   495
-         Left            =   2760
-         TabIndex        =   11
-         Top             =   1800
-         Width           =   615
-      End
-      Begin VB.Line Line4 
-         X1              =   2400
-         X2              =   2640
-         Y1              =   2400
-         Y2              =   2400
-      End
-      Begin VB.Line Line2 
-         X1              =   2400
-         X2              =   2640
-         Y1              =   1800
-         Y2              =   1800
-      End
-      Begin VB.Line Line1 
-         X1              =   2640
-         X2              =   2640
-         Y1              =   2400
-         Y2              =   1800
-      End
-   End
-   Begin VB.ComboBox cmbPriority 
-      Height          =   315
-      ItemData        =   "frmSoundEdit.frx":0442
-      Left            =   3360
-      List            =   "frmSoundEdit.frx":0444
-      TabIndex        =   2
-      Top             =   120
-      Width           =   855
-   End
-   Begin VB.CheckBox chkSingularity 
-      Caption         =   "Only one can be played at a time per object."
-      Height          =   255
-      Left            =   2640
-      TabIndex        =   1
-      Top             =   480
-      Width           =   3495
-   End
-   Begin VB.ListBox lstSounds 
-      Height          =   4740
-      Left            =   120
-      TabIndex        =   0
-      Top             =   120
-      Width           =   2415
-   End
-   Begin VB.Line Line3 
-      X1              =   0
-      X2              =   720
-      Y1              =   0
-      Y2              =   0
-   End
-   Begin VB.Label lblPriority 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Priority:"
-      Height          =   255
-      Left            =   2640
-      TabIndex        =   3
-      Top             =   120
-      Width           =   615
-   End
-End
-Attribute VB_Name = "frmSoundEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdDelete_Click()
-    Call WriteSound(True)
-End Sub
-
-Private Sub cmdReload_Click()
-    Call ClearForm
-    If InStr(lstSounds.List(lstSounds.ListIndex), "(free slot)") = 0 Then
-        Call LoadSoundInfo(lstSounds.ListIndex)
-    Else
-        MsgBox "Free slots do not have a code default."
-    End If
-End Sub
-
-Private Sub cmdSave_Click()
-    Call WriteSound(False)
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-End Sub
-
-Private Sub ClearForm()
-    cmbPriority.Text = ""
-    chkSingularity.Value = 0
-    chkOutside.Value = 0
-    chkMultiple.Value = 0
-    chkFourEx.Value = 0
-    chkEightEx.Value = 0
-    chkTotallySingle.Value = 0
-End Sub
-
-Private Sub Reload()
-    Call ClearForm
-    Call LoadCode
-    lstSounds.ListIndex = 0
-End Sub
-
-Private Sub LoadCode()
-    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
-    Dim i As Integer, numfreeslots As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("sounds.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "List of sounds (don't modify this comment!)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    lstSounds.Clear
-    
-    Do While InStr(line, "sfx_freeslot0") = 0
-        startclip = InStr(line, "sfx_")
-        If InStr(line, "sfx_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            addstring = number & " - " & line
-            lstSounds.AddItem addstring
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-    
-'Populate the free slots!
-    numfreeslots = 800
-
-    For i = 1 To numfreeslots
-        If i < 10 Then
-            addstring = number & " - " & "sfx_fre00" & i & " (free slot)"
-        ElseIf i < 100 Then
-            addstring = number & " - " & "sfx_fre0" & i & " (free slot)"
-        Else
-            addstring = number & " - " & "sfx_fre" & i & " (free slot)"
-        End If
-        lstSounds.AddItem addstring
-        number = number + 1
-    Next
-    
-    For i = 0 To 127
-        cmbPriority.AddItem i
-    Next
-End Sub
-
-Private Sub lstSounds_Click()
-    Call ClearForm
-    If InStr(lstSounds.List(lstSounds.ListIndex), "(free slot)") = 0 Then
-        Call LoadSoundInfo(lstSounds.ListIndex)
-    End If
-    Call LoadSOCSoundInfo(lstSounds.ListIndex)
-End Sub
-
-Private Sub LoadSOCSoundInfo(SoundNum 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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "SOUND" And Val(word2) = SoundNum Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondTokenEqual(line))
-                    
-                If word = "SINGULAR" Then
-                    If Val(word2) = 1 Then
-                        chkSingularity.Value = 1
-                    Else
-                        chkSingularity.Value = 0
-                    End If
-                ElseIf word = "PRIORITY" Then
-                    cmbPriority.Text = Val(word2)
-                ElseIf word = "FLAGS" Then
-                    ProcessSoundFlags (Val(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
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub LoadSoundInfo(StateNum As Integer)
-    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 token As String
-    Dim frame As Long
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("sounds.c", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "S_sfx[0] needs to be a dummy for odd reasons.") = 0
-    Loop
-    
-    number = 0
-    
-    Do While number <> StateNum
-        Do While InStr(ts.ReadLine, """") = 0
-        Loop
-        number = number + 1
-    Loop
-    
-    Do While InStr(line, """") = 0
-        line = ts.ReadLine
-    Loop
-    
-    startclip = InStr(line, """") + 1
-    line = Mid(line, startclip, Len(line) - startclip)
-    endclip = InStr(line, """") - 1
-    token = TrimComplete(Left(line, endclip))
-    
-    'txtName.Text = line
-    
-    startclip = InStr(line, ",") + 1
-    line = Mid(line, startclip, Len(line) - startclip)
-    endclip = InStr(line, ",") - 1
-    token = TrimComplete(Left(line, endclip))
-    
-    If token = "true" Then
-        chkSingularity.Value = 1
-    Else
-        chkSingularity.Value = 0
-    End If
-    
-    startclip = InStr(line, ",") + 1
-    line = Mid(line, startclip, Len(line) - startclip)
-    endclip = InStr(line, ",") - 1
-    token = TrimComplete(Left(line, endclip))
-    cmbPriority.Text = token
-    
-    startclip = InStr(line, ",") + 1
-    line = Mid(line, startclip, Len(line) - startclip)
-    endclip = InStr(line, ",") - 1
-    token = TrimComplete(Left(line, endclip))
-    
-    ProcessSoundFlags (Val(token))
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub ProcessSoundFlags(flags As Long)
-
-    chkTotallySingle.Value = 0
-    chkMultiple.Value = 0
-    chkOutside.Value = 0
-    chkFourEx.Value = 0
-    chkEightEx.Value = 0
-    
-    If flags = -1 Then
-        Exit Sub
-    End If
-    
-    If flags And 1 Then
-        chkTotallySingle.Value = 1
-    End If
-    
-    If flags And 2 Then
-        chkMultiple.Value = 1
-    End If
-    
-    If flags And 4 Then
-        chkOutside.Value = 1
-    End If
-    
-    If flags And 8 Then
-        chkFourEx.Value = 1
-    End If
-    
-    If flags And 16 Then
-        chkEightEx.Value = 1
-    End If
-    
-End Sub
-
-Private Sub WriteSound(Remove As Boolean)
-    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 soundfound As Boolean
-    
-    soundfound = False
-    
-    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))
-
-        'If the current sound exists in the SOC, delete it.
-        If word = "SOUND" And Val(word2) = lstSounds.ListIndex Then
-            soundfound = True
-            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 "SOUND " & lstSounds.ListIndex
-        cmbPriority.Text = TrimComplete(cmbPriority.Text)
-        If cmbPriority.Text <> "" Then tsTarget.WriteLine "PRIORITY = " & Val(cmbPriority.Text)
-        If chkSingularity.Value = 1 Then tsTarget.WriteLine "SINGULAR = 1"
-        
-        flags = 0
-        
-        If chkOutside.Value = 1 Then flags = flags + Val(chkOutside.Tag)
-        If chkMultiple.Value = 1 Then flags = flags + Val(chkMultiple.Tag)
-        If chkFourEx.Value = 1 Then flags = flags + Val(chkFourEx.Tag)
-        If chkEightEx.Value = 1 Then flags = flags + Val(chkEightEx.Tag)
-        If chkTotallySingle.Value = 1 Then flags = flags + Val(chkTotallySingle.Tag)
-        
-        If flags > 0 Then tsTarget.WriteLine "FLAGS = " & flags
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        If soundfound = True Then
-            MsgBox "Sound removed from SOC."
-        Else
-            MsgBox "Sound not found in SOC."
-        End If
-    Else
-        MsgBox "Sound Saved."
-    End If
-End Sub
-
diff --git a/tools/SOCEdit/frmSoundEdit.frx b/tools/SOCEdit/frmSoundEdit.frx
deleted file mode 100644
index 980538679b05296de823a191f94f0564401fd92d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1094
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
M!0;Xv_zVmT0C7A$vH$=8

diff --git a/tools/SOCEdit/frmStateEdit.frm b/tools/SOCEdit/frmStateEdit.frm
deleted file mode 100644
index 4eca5a1bc3..0000000000
--- a/tools/SOCEdit/frmStateEdit.frm
+++ /dev/null
@@ -1,940 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmStateEdit 
-   Caption         =   "State Edit"
-   ClientHeight    =   6750
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   8970
-   Icon            =   "frmStateEdit.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   6750
-   ScaleWidth      =   8970
-   StartUpPosition =   3  'Windows Default
-   Begin VB.TextBox lblVar2Desc 
-      Height          =   495
-      Left            =   4440
-      Locked          =   -1  'True
-      MultiLine       =   -1  'True
-      ScrollBars      =   2  'Vertical
-      TabIndex        =   25
-      Top             =   3000
-      Width           =   4455
-   End
-   Begin VB.TextBox lblVar1Desc 
-      Height          =   495
-      Left            =   4440
-      Locked          =   -1  'True
-      MultiLine       =   -1  'True
-      ScrollBars      =   2  'Vertical
-      TabIndex        =   24
-      Top             =   2400
-      Width           =   4455
-   End
-   Begin VB.TextBox lblActionDesc 
-      Height          =   735
-      Left            =   4440
-      Locked          =   -1  'True
-      MultiLine       =   -1  'True
-      ScrollBars      =   2  'Vertical
-      TabIndex        =   23
-      Top             =   1560
-      Width           =   4455
-   End
-   Begin VB.ListBox lstThings 
-      Height          =   450
-      ItemData        =   "frmStateEdit.frx":0442
-      Left            =   7440
-      List            =   "frmStateEdit.frx":0444
-      TabIndex        =   22
-      Top             =   6120
-      Visible         =   0   'False
-      Width           =   975
-   End
-   Begin VB.TextBox txtFuncVar2 
-      Height          =   285
-      Left            =   7200
-      TabIndex        =   19
-      Top             =   3600
-      Width           =   1215
-   End
-   Begin VB.TextBox txtFuncVar1 
-      Height          =   285
-      Left            =   5520
-      TabIndex        =   18
-      Top             =   3600
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdCopy 
-      Caption         =   "&Copy state to..."
-      Height          =   495
-      Left            =   6120
-      Style           =   1  'Graphical
-      TabIndex        =   17
-      Top             =   6120
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdDelete 
-      Caption         =   "&Delete State from SOC"
-      Height          =   495
-      Left            =   6120
-      Style           =   1  'Graphical
-      TabIndex        =   16
-      Top             =   5520
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdReload 
-      Caption         =   "&Load Code Default"
-      Height          =   495
-      Left            =   4920
-      Style           =   1  'Graphical
-      TabIndex        =   15
-      Top             =   5520
-      Width           =   1095
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save"
-      Height          =   495
-      Left            =   7320
-      TabIndex        =   14
-      Top             =   5520
-      Width           =   1095
-   End
-   Begin VB.ComboBox cmbTranslucency 
-      Height          =   315
-      ItemData        =   "frmStateEdit.frx":0446
-      Left            =   6720
-      List            =   "frmStateEdit.frx":045C
-      TabIndex        =   12
-      Top             =   5040
-      Width           =   1695
-   End
-   Begin VB.CheckBox chkFullbright 
-      Caption         =   "Make sprite full-brightness (unaffected by lighting)"
-      Height          =   495
-      Left            =   6240
-      TabIndex        =   11
-      Top             =   4440
-      Width           =   2175
-   End
-   Begin VB.ComboBox cmbNextstate 
-      Height          =   315
-      Left            =   6120
-      TabIndex        =   9
-      Top             =   3960
-      Width           =   2295
-   End
-   Begin VB.ComboBox cmbAction 
-      Height          =   315
-      Left            =   6000
-      TabIndex        =   7
-      Top             =   1200
-      Width           =   2295
-   End
-   Begin VB.TextBox txtTics 
-      Height          =   285
-      Left            =   7800
-      TabIndex        =   5
-      Top             =   720
-      Width           =   495
-   End
-   Begin VB.TextBox txtFrame 
-      Height          =   285
-      Left            =   5880
-      MaxLength       =   2
-      TabIndex        =   3
-      Top             =   720
-      Width           =   495
-   End
-   Begin VB.ComboBox cmbSprite 
-      Height          =   315
-      Left            =   5880
-      TabIndex        =   1
-      Top             =   120
-      Width           =   2415
-   End
-   Begin VB.ListBox lstStates 
-      Height          =   6495
-      Left            =   120
-      TabIndex        =   0
-      Top             =   120
-      Width           =   4215
-   End
-   Begin VB.Label lblFuncVar2 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Var2:"
-      Height          =   255
-      Left            =   6600
-      TabIndex        =   21
-      Top             =   3600
-      Width           =   495
-   End
-   Begin VB.Label lblFuncVar1 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Var1:"
-      Height          =   255
-      Left            =   4920
-      TabIndex        =   20
-      Top             =   3600
-      Width           =   495
-   End
-   Begin VB.Label lblTranslucency 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Translucency:"
-      Height          =   255
-      Left            =   5520
-      TabIndex        =   13
-      Top             =   5040
-      Width           =   1095
-   End
-   Begin VB.Label lblNextstate 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Next State:"
-      Height          =   255
-      Left            =   5160
-      TabIndex        =   10
-      Top             =   3960
-      Width           =   855
-   End
-   Begin VB.Label lblAction 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Function to Call:"
-      Height          =   375
-      Left            =   5040
-      TabIndex        =   8
-      Top             =   1080
-      Width           =   855
-   End
-   Begin VB.Label lblTics 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Tics (-1 for infinite duration):"
-      Height          =   495
-      Left            =   6480
-      TabIndex        =   6
-      Top             =   600
-      Width           =   1215
-   End
-   Begin VB.Label lblFrame 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Frame:"
-      Height          =   255
-      Left            =   5160
-      TabIndex        =   4
-      Top             =   720
-      Width           =   615
-   End
-   Begin VB.Label lblSprite 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Sprite:"
-      Height          =   255
-      Left            =   5160
-      TabIndex        =   2
-      Top             =   120
-      Width           =   615
-   End
-End
-Attribute VB_Name = "frmStateEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmbAction_Click()
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim index As Integer
-    Dim ActionName As String
-    
-    ActionName = cmbAction.List(cmbAction.ListIndex)
-    
-    If cmbAction.ListIndex = 0 Then
-        lblActionDesc.Text = ""
-        lblVar1Desc.Text = ""
-        lblVar2Desc.Text = ""
-        Exit Sub
-    End If
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("p_enemy.c", ForReading, False)
-    
-    Do While Not ts.AtEndOfStream
-        line = ts.ReadLine
-        
-        If Mid(line, 4, 9) = "Function:" And InStr(line, ActionName) > 0 Then
-            ts.ReadLine ' //
-            line = ts.ReadLine ' // Description:
-            index = InStr(line, ":")
-            lblActionDesc.Text = Mid(line, index + 2, Len(line) - (index + 1))
-            
-            ts.ReadLine ' //
-            line = ts.ReadLine ' // var1 =
-            If InStr(line, "var1:") Then
-                lblVar1Desc.Text = Mid(line, 4, Len(line) - 3)
-                line = ts.ReadLine
-                Do While Left(line, 7) <> "// var2"
-                    lblVar1Desc.Text = lblVar1Desc.Text & vbCrLf & TrimComplete(Mid(line, 4, Len(line) - 3))
-                    line = ts.ReadLine
-                Loop
-            Else
-                lblVar1Desc.Text = Mid(line, 4, Len(line) - 3)
-            End If
-            
-            If Left(line, 7) <> "// var2" Then
-                line = ts.ReadLine ' // var2 =
-            End If
-            
-            If InStr(line, "var2:") Then
-                lblVar2Desc.Text = Mid(line, 4, Len(line) - 3)
-                line = ts.ReadLine
-                Do While Len(line) > 4
-                    lblVar2Desc.Text = lblVar2Desc.Text & vbCrLf & TrimComplete(Mid(line, 4, Len(line) - 3))
-                    line = ts.ReadLine
-                Loop
-            Else
-                lblVar2Desc.Text = Mid(line, 4, Len(line) - 3)
-            End If
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub cmdCopy_Click()
-    Dim Response As String
-    
-    Response$ = InputBox("Copy state to #:", "Copy State")
-    
-    If Response = "" Then Exit Sub
-    
-    Response = TrimComplete(Response)
-    
-    Call WriteState(False, Val(Response))
-    
-    MsgBox "State copied to #" & Val(Response)
-End Sub
-
-Private Sub cmdDelete_Click()
-    Call WriteState(True, lstStates.ListIndex)
-End Sub
-
-Private Sub cmdReload_Click()
-    Call ClearForm
-    
-    If InStr(lstStates.List(lstStates.ListIndex), "S_FREESLOT") = 0 Then
-        LoadStateInfo (lstStates.ListIndex)
-    Else
-        MsgBox "Free slots do not have a code default."
-    End If
-End Sub
-
-Private Sub cmdSave_Click()
-    If TrimComplete(txtFrame.Text) = "" And (chkFullbright.Value = 1 Or cmbTranslucency.ListIndex > 0) Then
-        MsgBox "ERROR: Frame field required for fullbright/translucency."
-        Exit Sub
-    End If
-    Call WriteState(False, lstStates.ListIndex)
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-    lstStates.ListIndex = 0
-End Sub
-
-Private Sub ClearForm()
-    cmbNextstate.Text = ""
-    cmbSprite.Text = ""
-    txtFrame.Text = ""
-    cmbAction.Text = ""
-    txtFuncVar1.Text = ""
-    txtFuncVar2.Text = ""
-    lblActionDesc.Text = ""
-    lblVar1Desc.Text = ""
-    lblVar2Desc.Text = ""
-    chkFullbright.Value = False
-    cmbTranslucency.ListIndex = 0
-End Sub
-
-Private Sub Reload()
-    LoadStates
-    LoadSprites
-    LoadActions
-End Sub
-
-Private Sub LoadStates()
-    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
-    Dim numfreeslots As Integer, i As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Object states (don't modify this comment!)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    lstStates.Clear
-    
-    Do While InStr(line, "S_FIRSTFREESLOT") = 0
-        startclip = InStr(line, "S_")
-        If InStr(line, "S_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            addstring = number & " - " & line
-            lstStates.AddItem addstring
-            cmbNextstate.AddItem addstring
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    
-    'Populate the free slots!
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-
-    line = ts.ReadLine
-    Do While InStr(line, "#define NUMMOBJFREESLOTS") = 0
-        line = ts.ReadLine
-    Loop
-    
-    startclip = InStr(line, "SLOTS ") + 6
-    numfreeslots = Val(Mid(line, startclip, Len(line) - startclip + 1)) * 6
-
-    For i = 1 To numfreeslots
-        addstring = number & " - " & "S_FREESLOT" & i
-        lstStates.AddItem addstring
-        cmbNextstate.AddItem addstring
-        number = number + 1
-    Next
-
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub LoadSprites()
-    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
-    Dim numfreeslots As Integer, i As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Hey, moron! If you change this table, don't forget about") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    cmbSprite.Clear
-    
-    Do While InStr(line, "SPR_FIRSTFREESLOT") = 0
-        startclip = InStr(line, "SPR_")
-        If InStr(line, "SPR_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            addstring = number & " - " & line
-            cmbSprite.AddItem addstring
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    
-    'Populate the free slots!
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-
-    line = ts.ReadLine
-    Do While InStr(line, "#define NUMMOBJFREESLOTS") = 0
-        line = ts.ReadLine
-    Loop
-    
-    startclip = InStr(line, "SLOTS ") + 6
-    numfreeslots = Val(Mid(line, startclip, Len(line) - startclip + 1))
-
-    For i = 1 To numfreeslots
-        If i < 10 Then
-            addstring = number & " - " & "SPR_F00" & i & " (Free slot)"
-        ElseIf i < 100 Then
-            addstring = number & " - " & "SPR_F0" & i & " (Free slot)"
-        Else
-            addstring = number & " - " & "SPR_F" & i & " (Free slot)"
-        End If
-        
-        cmbSprite.AddItem addstring
-        number = number + 1
-    Next
-
-    ts.Close
-
-    Set myFSO = Nothing
-End Sub
-
-Private Sub LoadActions()
-    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("dehacked.c", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "actionpointer_t actionpointers[]") = 0
-    Loop
-    
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    cmbAction.Clear
-    
-    cmbAction.AddItem "None"
-    
-    Do While InStr(line, "NULL") = 0
-        startclip = InStr(line, "A_")
-        If InStr(line, "A_") <> 0 Then
-            endclip = InStr(line, "}")
-            line = Mid(line, startclip, endclip - startclip)
-            cmbAction.AddItem line
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub lstStates_Click()
-    Call ClearForm
-
-    If InStr(lstStates.List(lstStates.ListIndex), "S_FREESLOT") = 0 Then
-        LoadStateInfo (lstStates.ListIndex)
-    End If
-    
-    LoadSOCStateInfo (lstStates.ListIndex)
-End Sub
-
-Private Sub LoadSOCStateInfo(StateNum As Integer)
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim word As String
-    Dim word2 As String
-    Dim frameNum As Long
-    
-    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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "FRAME" And Val(word2) = StateNum Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondTokenEqual(line))
-                    
-                If word = "SPRITENUMBER" Then
-                    cmbSprite.ListIndex = Val(word2)
-                ElseIf word = "SPRITESUBNUMBER" Then
-                    frameNum = Val(word2)
-                    
-                    If frameNum >= 327680 Then ' 5 << 16
-                        cmbTranslucency.ListIndex = 5
-                        frameNum = frameNum And Not 327680
-                    ElseIf frameNum >= 262144 Then ' 4 << 16
-                        cmbTranslucency.ListIndex = 4
-                        frameNum = frameNum And Not 262144
-                    ElseIf frameNum >= 196608 Then ' 3 << 16
-                        cmbTranslucency.ListIndex = 3
-                        frameNum = frameNum And Not 196608
-                    ElseIf frameNum >= 131072 Then ' 2 << 16
-                        cmbTranslucency.ListIndex = 2
-                        frameNum = frameNum And Not 131072
-                    ElseIf frameNum >= 65536 Then ' 1 << 16
-                        cmbTranslucency.ListIndex = 1
-                        frameNum = frameNum And Not 65536
-                    End If
-                    
-                    If frameNum >= 32768 Then
-                        chkFullbright.Value = 1
-                        frameNum = frameNum And Not 32768
-                    Else
-                        chkFullbright.Value = 0
-                    End If
-                    
-                    txtFrame.Text = frameNum
-                ElseIf word = "DURATION" Then
-                    txtTics.Text = Val(word2)
-                ElseIf word = "NEXT" Then
-                    cmbNextstate.ListIndex = Val(word2)
-                ElseIf word = "ACTION" Then
-                    Call FindComboIndex(cmbAction, UCase(SecondToken(line)))
-                ElseIf word = "VAR1" Then
-                    txtFuncVar1.Text = Val(word2)
-                ElseIf word = "VAR2" Then
-                    txtFuncVar2.Text = Val(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
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub LoadStateInfo(StateNum As Integer)
-    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 token As String
-    Dim frame As Long
-    Dim templine As String
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("info.c", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Keep this comment directly above S_NULL") = 0
-    Loop
-    
-    number = 0
-    
-    Do While number <> StateNum
-        Do While InStr(ts.ReadLine, "SPR_") = 0
-        Loop
-        number = number + 1
-    Loop
-    
-    Do While InStr(line, "SPR_") = 0
-        line = ts.ReadLine
-    Loop
-    
-    startclip = InStr(line, "SPR_")
-    line = Mid(line, startclip, Len(line) - startclip)
-    endclip = InStr(line, ",") - 1
-    token = Left(line, endclip)
-    Call FindComboIndex(cmbSprite, token)
-    
-    startclip = InStr(line, ",") + 1
-    line = TrimComplete(Mid(line, startclip, Len(line) - startclip))
-    endclip = InStr(line, ",") - 1
-    frame = Val(Left(line, endclip))
-    
-    If frame >= 32768 Then
-        chkFullbright.Value = 1
-        frame = frame - 32768
-    Else
-        chkFullbright.Value = 0
-    End If
-        
-    txtFrame.Text = frame
-    
-    cmbTranslucency.ListIndex = 0
-    
-    startclip = InStr(line, ",") + 1
-    line = TrimComplete(Mid(line, startclip, Len(line) - startclip))
-    endclip = InStr(line, ",") - 1
-    txtTics.Text = Val(Left(line, endclip))
-    
-    startclip = InStr(line, "{") + 1
-    line = TrimComplete(Mid(line, startclip, Len(line) - startclip))
-    endclip = InStr(line, "}") - 1
-    cmbAction.Text = TrimComplete(Left(line, endclip))
-    If cmbAction.Text = "NULL" Then cmbAction.Text = "None"
-
-    startclip = InStr(line, ",") + 1
-    line = TrimComplete(Mid(line, startclip, Len(line) - startclip))
-    endclip = InStr(line, ",") - 1
-    templine = Left(line, endclip)
-    
-    templine = TrimComplete(templine)
-    'Check for *FRACUNIT values
-    endclip = InStr(templine, "*FRACUNIT")
-    If endclip <> 0 Then
-        templine = Left(templine, endclip - 1)
-        templine = Val(templine) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(templine, "MT_")
-    If endclip <> 0 Then
-        templine = FindThingNum(templine) & " - " & templine
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(templine, "pw_")
-    If endclip <> 0 Then
-        templine = FindPowerNum(templine) & " - " & templine
-    End If
-    txtFuncVar1.Text = templine
-    
-    startclip = InStr(line, ",") + 1
-    line = TrimComplete(Mid(line, startclip, Len(line) - startclip))
-    endclip = InStr(line, ",") - 1
-    templine = Left(line, endclip)
-    
-    templine = TrimComplete(templine)
-    'Check for *FRACUNIT values
-    endclip = InStr(templine, "*FRACUNIT")
-    If endclip <> 0 Then
-        templine = Left(templine, endclip - 1)
-        templine = Val(templine) * 65536
-    End If
-    'Check for crazy-odd MT_ usage
-    endclip = InStr(templine, "MT_")
-    If endclip <> 0 Then
-        templine = FindThingNum(templine) & " - " & templine
-    End If
-    'Check for crazy-odd pw_ usage
-    endclip = InStr(templine, "pw_")
-    If endclip <> 0 Then
-        templine = FindPowerNum(templine) & " - " & templine
-    End If
-    txtFuncVar2.Text = templine
-    
-    startclip = InStr(line, ",") + 1
-    line = TrimComplete(Mid(line, startclip, Len(line) - startclip))
-    endclip = InStr(line, "}") - 1
-    Call FindComboIndex(cmbNextstate, TrimComplete(Left(line, endclip)))
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub FindComboIndex(ByRef Box As ComboBox, line As String)
-    Dim i As Integer
-    
-    For i = 0 To Box.ListCount
-        If InStr(UCase(Box.List(i)), UCase(line)) Then
-            Box.ListIndex = i
-            Exit For
-        End If
-    Next
-End Sub
-
-Private Sub WriteState(Remove As Boolean, num 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 statefound As Boolean
-    
-    statefound = False
-    
-    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))
-
-        'If the current sound exists in the SOC, delete it.
-        If word = "FRAME" And Val(word2) = num Then
-            statefound = True
-            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 "FRAME " & num
-        cmbSprite.Text = TrimComplete(cmbSprite.Text)
-        txtFrame.Text = TrimComplete(txtFrame.Text)
-        txtTics.Text = TrimComplete(txtTics.Text)
-        cmbAction.Text = TrimComplete(cmbAction.Text)
-        txtFuncVar1.Text = TrimComplete(txtFuncVar1.Text)
-        txtFuncVar2.Text = TrimComplete(txtFuncVar2.Text)
-        cmbNextstate.Text = TrimComplete(cmbNextstate.Text)
-        cmbTranslucency.Text = TrimComplete(cmbTranslucency.Text)
-        
-        If cmbSprite.Text <> "" Then tsTarget.WriteLine "SPRITENUMBER = " & cmbSprite.ListIndex
-        
-        flags = Val(txtFrame.Text)
-        If chkFullbright.Value = 1 Then flags = flags + 32768
-        
-        ' Grrr VB doesn't have bitshifts!!
-        If cmbTranslucency.Text <> "" Then
-            flags = flags + cmbTranslucency.ListIndex * 65536
-        End If
-        
-        If txtFrame.Text <> "" Then tsTarget.WriteLine "SPRITESUBNUMBER = " & flags
-        If txtTics.Text <> "" Then tsTarget.WriteLine "DURATION = " & Val(txtTics.Text)
-        If cmbNextstate.Text <> "" Then tsTarget.WriteLine "NEXT = " & cmbNextstate.ListIndex
-        If cmbAction.Text <> "" Then tsTarget.WriteLine "ACTION " & cmbAction.Text
-        If txtFuncVar1.Text <> "" Then tsTarget.WriteLine "VAR1 = " & Val(txtFuncVar1.Text)
-        If txtFuncVar2.Text <> "" Then tsTarget.WriteLine "VAR2 = " & Val(txtFuncVar2.Text)
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        If statefound = True Then
-            MsgBox "State removed from SOC."
-        Else
-            MsgBox "State not found in SOC."
-        End If
-    Else
-        MsgBox "State Saved."
-    End If
-End Sub
-
-Private Sub LoadThings()
-    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 numfreeslots As Integer, i As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Little flag for SOC editor (don't change this comment!)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    lstThings.Clear
-    
-    Do While InStr(line, "MT_FIRSTFREESLOT") = 0
-        startclip = InStr(line, "MT_")
-        If InStr(line, "MT_") <> 0 Then
-            endclip = InStr(line, ",")
-            line = Mid(line, startclip, endclip - startclip)
-            lstThings.AddItem number & " - " & line
-            number = number + 1
-        End If
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    
-    'Populate the free slots!
-    Set ts = myFSO.OpenTextFile("info.h", ForReading, False)
-
-    line = ts.ReadLine
-    Do While InStr(line, "#define NUMMOBJFREESLOTS") = 0
-        line = ts.ReadLine
-    Loop
-    
-    startclip = InStr(line, "SLOTS ") + 6
-    numfreeslots = Val(Mid(line, startclip, Len(line) - startclip + 1))
-
-    For i = 1 To numfreeslots
-        lstThings.AddItem number & " - " & "MT_FREESLOT" & i
-        number = number + 1
-    Next
-
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Function FindThingNum(ThingName As String) As Integer
-    Dim i As Integer
-    Dim temp As String
-    Dim startpoint As Integer
-    Dim endpoint As Integer
-    
-    lstThings.Clear
-    LoadThings
-    
-    For i = 0 To lstThings.ListCount - 1
-        temp = lstThings.List(i)
-        startpoint = InStr(temp, "-") + 2
-        endpoint = Len(temp) - startpoint + 1
-        temp = Mid(temp, startpoint, endpoint)
-        If temp = ThingName Then
-            FindThingNum = Val(lstThings.List(i))
-            Exit For
-        End If
-    Next
-End Function
-
-Private Function FindPowerNum(PowerName As String) As Integer
-    Dim myFSO As New Scripting.FileSystemObject
-    Dim ts As TextStream
-    Dim line As String
-    Dim number As Integer
-    Dim startclip As Integer
-    
-    ChDir SourcePath
-    Set ts = myFSO.OpenTextFile("d_player.h", ForReading, False)
-    
-    Do While InStr(ts.ReadLine, "Player powers. (don't edit this comment)") = 0
-    Loop
-    
-    ts.SkipLine ' typedef enum
-    ts.SkipLine ' {
-    
-    line = ts.ReadLine
-    number = 0
-    
-    Do While InStr(line, "NUMPOWERS") = 0
-        startclip = InStr(line, PowerName)
-        If startclip <> 0 Then
-            FindPowerNum = number
-            Exit Do
-        End If
-        number = number + 1
-        line = ts.ReadLine
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Function
diff --git a/tools/SOCEdit/frmStateEdit.frx b/tools/SOCEdit/frmStateEdit.frx
deleted file mode 100644
index 8069c37e05db5bf778fe4a3f43101626fdb0d320..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1254
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
z!0;Xv_zVmTYz)i{j0^^7h>gLNfrG(7L07>qKQEP&!B9b0!PG$C)PR%0NI_S@$Uxu1
zfRn*kL07@hK;P0piNQocSD~aRF|Rl+vq(WBJwHE1AuYd1AuY2gRlhhRzob~xl))6P
srovD`qc}e|RUtV)C%>o|qBEy7IW@0DM<Kr?BekelA-^E8uryT@06=bKO8@`>

diff --git a/tools/SOCEdit/frmUnlockablesEdit.frm b/tools/SOCEdit/frmUnlockablesEdit.frm
deleted file mode 100644
index f43209a783..0000000000
--- a/tools/SOCEdit/frmUnlockablesEdit.frm
+++ /dev/null
@@ -1,391 +0,0 @@
-VERSION 5.00
-Begin VB.Form frmUnlockablesEdit 
-   Caption         =   "Unlockables Edit"
-   ClientHeight    =   3675
-   ClientLeft      =   60
-   ClientTop       =   345
-   ClientWidth     =   8130
-   Icon            =   "frmUnlockablesEdit.frx":0000
-   LinkTopic       =   "Form1"
-   MaxButton       =   0   'False
-   ScaleHeight     =   3675
-   ScaleWidth      =   8130
-   StartUpPosition =   3  'Windows Default
-   Begin VB.CheckBox chkGrade 
-      Caption         =   "Must have beaten Ultimate"
-      Height          =   255
-      Index           =   4
-      Left            =   5400
-      TabIndex        =   20
-      Tag             =   "1024"
-      Top             =   2160
-      Width           =   2655
-   End
-   Begin VB.CheckBox chkGrade 
-      Caption         =   "Must have beaten Very Hard"
-      Height          =   255
-      Index           =   3
-      Left            =   5400
-      TabIndex        =   19
-      Tag             =   "128"
-      Top             =   1800
-      Width           =   2655
-   End
-   Begin VB.CheckBox chkGrade 
-      Caption         =   "Must have all emblems"
-      Height          =   255
-      Index           =   2
-      Left            =   5400
-      TabIndex        =   18
-      Tag             =   "16"
-      Top             =   1440
-      Width           =   2055
-   End
-   Begin VB.CheckBox chkGrade 
-      Caption         =   "Must have gotten all 7 emeralds"
-      Height          =   255
-      Index           =   1
-      Left            =   5400
-      TabIndex        =   17
-      Tag             =   "8"
-      Top             =   1080
-      Width           =   2655
-   End
-   Begin VB.CheckBox chkGrade 
-      Caption         =   "Game must be completed"
-      Height          =   255
-      Index           =   0
-      Left            =   5400
-      TabIndex        =   16
-      Tag             =   "1"
-      Top             =   720
-      Width           =   2175
-   End
-   Begin VB.TextBox txtVar 
-      Height          =   285
-      Left            =   4320
-      TabIndex        =   14
-      Top             =   2640
-      Width           =   615
-   End
-   Begin VB.ComboBox cmbType 
-      Height          =   315
-      ItemData        =   "frmUnlockablesEdit.frx":0442
-      Left            =   3360
-      List            =   "frmUnlockablesEdit.frx":044C
-      TabIndex        =   12
-      Top             =   2160
-      Width           =   1575
-   End
-   Begin VB.TextBox txtNeededTime 
-      Height          =   285
-      Left            =   4080
-      TabIndex        =   10
-      Top             =   1680
-      Width           =   855
-   End
-   Begin VB.TextBox txtNeededEmblems 
-      Height          =   285
-      Left            =   4440
-      TabIndex        =   9
-      Top             =   1200
-      Width           =   495
-   End
-   Begin VB.TextBox txtObjective 
-      Height          =   285
-      Left            =   3240
-      TabIndex        =   7
-      Top             =   720
-      Width           =   1695
-   End
-   Begin VB.TextBox txtName 
-      Height          =   285
-      Left            =   3240
-      TabIndex        =   5
-      Top             =   240
-      Width           =   1695
-   End
-   Begin VB.CommandButton cmdDelete 
-      Caption         =   "&Delete from SOC"
-      Height          =   375
-      Left            =   3480
-      TabIndex        =   3
-      Top             =   3120
-      Width           =   1575
-   End
-   Begin VB.CommandButton cmdSave 
-      Caption         =   "&Save Changes"
-      Height          =   375
-      Left            =   1800
-      TabIndex        =   2
-      Top             =   3120
-      Width           =   1575
-   End
-   Begin VB.ListBox lstUnlockables 
-      Height          =   2985
-      ItemData        =   "frmUnlockablesEdit.frx":046A
-      Left            =   120
-      List            =   "frmUnlockablesEdit.frx":049B
-      TabIndex        =   0
-      Top             =   480
-      Width           =   1215
-   End
-   Begin VB.Label lblNote 
-      Caption         =   "Note: All requirements are combinable."
-      Height          =   495
-      Left            =   6000
-      TabIndex        =   22
-      Top             =   2760
-      Width           =   1695
-   End
-   Begin VB.Label lblOtherReqs 
-      Caption         =   "Other Requirements:"
-      Height          =   255
-      Left            =   5400
-      TabIndex        =   21
-      Top             =   360
-      Width           =   1935
-   End
-   Begin VB.Label lblVar 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Map # to warp to:"
-      Height          =   255
-      Left            =   2880
-      TabIndex        =   15
-      Top             =   2640
-      Width           =   1335
-   End
-   Begin VB.Label lblType 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Type of Unlockable:"
-      Height          =   255
-      Left            =   1800
-      TabIndex        =   13
-      Top             =   2160
-      Width           =   1455
-   End
-   Begin VB.Label lblNeededTime 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Needed time on Time Attack rank (in seconds):"
-      Height          =   375
-      Left            =   1440
-      TabIndex        =   11
-      Top             =   1560
-      Width           =   2535
-   End
-   Begin VB.Label lblNeededEmblems 
-      Alignment       =   1  'Right Justify
-      Caption         =   "# of Emblems Needed:"
-      Height          =   255
-      Left            =   2640
-      TabIndex        =   8
-      Top             =   1200
-      Width           =   1695
-   End
-   Begin VB.Label lblObjective 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Objective:"
-      Height          =   255
-      Left            =   2400
-      TabIndex        =   6
-      Top             =   720
-      Width           =   735
-   End
-   Begin VB.Label lblName 
-      Alignment       =   1  'Right Justify
-      Caption         =   "Name:"
-      Height          =   255
-      Left            =   2640
-      TabIndex        =   4
-      Top             =   240
-      Width           =   495
-   End
-   Begin VB.Label lblHUDItems 
-      Caption         =   "Unlockables:"
-      Height          =   255
-      Left            =   120
-      TabIndex        =   1
-      Top             =   240
-      Width           =   975
-   End
-End
-Attribute VB_Name = "frmUnlockablesEdit"
-Attribute VB_GlobalNameSpace = False
-Attribute VB_Creatable = False
-Attribute VB_PredeclaredId = True
-Attribute VB_Exposed = False
-Option Explicit
-
-Private Sub cmdDelete_Click()
-    Call WriteUnlockableItem(True)
-End Sub
-
-Private Sub cmdSave_Click()
-    Call WriteUnlockableItem(False)
-End Sub
-
-Private Sub Form_Load()
-    Call Reload
-End Sub
-
-Private Sub Reload()
-    txtName.Text = ""
-    txtObjective.Text = ""
-    txtNeededEmblems.Text = ""
-    txtNeededTime.Text = ""
-    cmbType.Text = ""
-    txtVar.Text = ""
-    
-    Dim i As Integer
-    
-    For i = 0 To chkGrade.Count - 1
-        chkGrade(i).Value = 0
-    Next i
-    
-    lstUnlockables.ListIndex = 0
-End Sub
-
-Private Sub lstUnlockables_Click()
-    Call ReadSOC(lstUnlockables.ListIndex + 1)
-End Sub
-
-Private Sub ReadSOC(UnlockableNum 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 = FirstToken(line)
-        word2 = SecondToken(line)
-        
-        If UCase(word) = "UNLOCKABLE" And Val(word2) = UnlockableNum Then
-            Do While Len(line) > 0 And Not ts.AtEndOfStream
-                line = ts.ReadLine
-                word = UCase(FirstToken(line))
-                word2 = UCase(SecondTokenEqual(line))
-                    
-                If word = "NAME" Then
-                    txtName.Text = word2
-                ElseIf word = "OBJECTIVE" Then
-                    txtObjective.Text = word2
-                ElseIf word = "NEEDEDEMBLEMS" Then
-                    txtNeededEmblems.Text = Val(word2)
-                ElseIf word = "NEEDEDTIME" Then
-                    txtNeededTime.Text = Val(word2)
-                ElseIf word = "TYPE" Then
-                    cmbType.ListIndex = Val(word2)
-                ElseIf word = "VAR" Then
-                    txtVar.Text = Val(word2)
-                ElseIf word = "NEEDEDGRADE" Then
-                    Dim i As Integer
-                    
-                    For i = 0 To chkGrade.Count - 1
-                        If Val(word2) And chkGrade(i).Tag Then
-                            chkGrade(i).Tag = True
-                        End If
-                    Next i
-                ElseIf Len(line) > 0 And Left(line, 1) <> "#" Then
-                    MsgBox "Error in SOC!" & vbCrLf & "Unknown line: " & line
-                End If
-            Loop
-            Exit Do
-        End If
-    Loop
-    
-    ts.Close
-    Set myFSO = Nothing
-End Sub
-
-Private Sub WriteUnlockableItem(Remove As Boolean)
-    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 unlockableremoved As Boolean
-    
-    unlockableremoved = False
-    
-    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))
-        
-        'If the current item exists in the SOC, delete it.
-        If word = "UNLOCKABLE" And Val(word2) = lstUnlockables.ListIndex + 1 Then
-            unlockableremoved = True
-            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 "UNLOCKABLE " & lstUnlockables.ListIndex + 1
-        txtName.Text = TrimComplete(txtName.Text)
-        txtObjective.Text = TrimComplete(txtObjective.Text)
-        txtNeededEmblems.Text = TrimComplete(txtNeededEmblems.Text)
-        txtNeededTime.Text = TrimComplete(txtNeededTime.Text)
-        txtVar.Text = TrimComplete(txtVar.Text)
-        
-        If txtName.Text <> "" Then tsTarget.WriteLine "NAME = " & txtName.Text
-        If txtObjective.Text <> "" Then tsTarget.WriteLine "OBJECTIVE = " & txtObjective.Text
-        If txtNeededEmblems.Text <> "" Then tsTarget.WriteLine "NEEDEDEMBLEMS = " & txtNeededEmblems.Text
-        If txtNeededTime.Text <> "" Then tsTarget.WriteLine "NEEDEDTIME = " & txtNeededTime.Text
-        If cmbType.ListIndex <> -1 Then tsTarget.WriteLine "TYPE = " & cmbType.ListIndex
-        If txtVar.Text <> "" Then tsTarget.WriteLine "VAR = " & txtVar.Text
-        
-        Dim writegrade As Long
-        Dim i As Integer
-        writegrade = 0
-        
-        For i = 0 To chkGrade.Count - 1
-            If chkGrade(i).Value = 1 Then
-                writegrade = writegrade + chkGrade(i).Tag
-            End If
-        Next i
-        
-        If writegrade > 0 Then tsTarget.WriteLine "NEEDEDGRADE = " & writegrade
-    End If
-    
-    tsTarget.Close
-    Set myFSOTarget = Nothing
-    
-    FileCopy SOCTemp, SOCFile
-    
-    Kill SOCTemp
-    
-    If Remove = True Then
-        If unlockableremoved = True Then
-            MsgBox "Unlockable deleted from SOC."
-        Else
-            MsgBox "Couldn't find Unlockable in SOC."
-        End If
-    Else
-        MsgBox "Unlockable Saved."
-    End If
-End Sub
diff --git a/tools/SOCEdit/frmUnlockablesEdit.frx b/tools/SOCEdit/frmUnlockablesEdit.frx
deleted file mode 100644
index d9d464d4e6a38acb9cb4cbd09818f5705e8c1a26..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1399
zcmcCxVPME9VPG(0VPIfjU}RuoP*4y6F&SPkF)*kxFfa%RK=>Mr3=DkC3=A3!3=9ek
z3=9rn^<Zrb4NPDyScnD&h6V-(hK2?R#n1p^G8{N?fT5uQB=Mht;XeZd!~g#fis3(q
z$?*R_NDzy03=E8dg2>{Gf`WqLNCJW&emPu#QF7+YndRkh0rr_QXa4{Hy}SUbqWnJ?
ze1|Eh2Xp`bhbmx)@qa=rWrs@t|2YvHC{XSH|IeH`5o97r`3I1inKNfHFff3Xe*pOg
z!Urn{`*!Bc2@DJjAmt#B^8W|(p~@K;82Hin44lZyK{kO*2WkHR<$x)Elwjlk&+s2v
z8pH=HgAnY{Fo*C!j%DBnIR?hBXFxUX13y}<@c(B(HXfuKh0nmi4>Jowqqq*_OEl%E
z#({$I|3Ci!|9>$5{|^ep2MqTAA27)OKfu8M{{RE~{{{x;{|yX`AUFSKaA5eyP{8nq
z;Sb{<hJTDd82>l^VEq651M~m?57__zKfv(EzJaZBegnVp{RV#H{~*l3Z~PyG8~ly$
zH>6e0Kk(s?Jt*#e{{R2~@Bjb*H9%<}n${T^AnE)7#3NWps-$y9L2#;Kkemrlf1vd6
z9Td@^pb&s0m!C61ndQU(pEE(Ji-F<iOlUMsV5o=0HYi>}4ur)XRG5JuA`QuJU<Duo
zWEum*KY0d*KkN()KbRR9elRkCBjSSt1H*$43=9wcGB6zc&%n?O#q9qX7~20cFr5F-
z!0`S*0|OHSGXo=o0V9I}69W$e4}(u?S!#|#aB5C!atRld7oJ#Dzz<gkQB9EKXW(Vv
zVF=C3$xqHsOv*`BFht=Qq411RcqS-3Qxu*V3eOycXMw`A<VCUF0F`Tq$~8je8l!Se
HP`Rc6+}eyl

diff --git a/tools/SOCEdit/icon1.ico b/tools/SOCEdit/icon1.ico
deleted file mode 100644
index 1ea9d1005fd0b48b539586fa21e1c4afca63daf1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1078
zcmZQzU}RuoP*4zH0D%`w3=C=v3=9GS5WWT@0|Os31A_(w1A_ts1A_wtNIeTkDMJGj
zn8HFdFfcSQFfcSUKq!U=5R>7+fddQ;4IqjC3=IDn7#RNlhfoavK}?4K|3QLSjALM6
z6cj`jXA~3^6h{&e1o6w^0*sO~XU;4yhYPUJoH_IV|L^4mP!;9>!QeYgK|PrJ|36d#
zJB<GmVktXR`v1>~;6Q<D|NnpH%!wcqLCQaX)XbbYlYxN&to#GWHxNEpIoP)|XHH;X
zU;rrxd6fS@m=9IXz`($d#%JI}Rt~ZWWI9Ou2Pg+j@uLJA|9^)6$kHG_SQ&(1hlV+X
z2XZU}KgcmKemw)KaUb~6Vuk-d1G4cT-6(tp27Z`X5E{jGAYY;>M>P%<jQ{`f|NsAk
z`Tu`VAU<HQ|NnqN{{I06{{IIU*#9>$F#m60U<A4OKZ66qKZXK^KMa2u|1kVx{K5FY
z@dxAo=O38=|9`;#|NjAoKlTl5mGc|;jqf+`8~+Dk27crJAl%?@e7_;Ba{hr2f9yeV
z_w)b%|9}7g|E~c``_Qz`$N)*_2Ou87LQ*B2GYW!J6@%nVaQXwKhwq?>1_gxxB)R;Y
z3Cb)V{{Nf_N?i;LKW9RtX#zt%B(_2E3UVMU_MpNH{19nKegi825g^kT82-sKF#KU>
zVEDnz!0>~S0UQw@92giLd|+UB@Rxz%;C}{&W+-O=&%n_BpMl~0e+Gv4{}~tnwi7&7

-- 
GitLab