This is just the code of the program, use it at will. Youre gonna need Visual Studio
using System;
using System.IO;
using System.Media;
using System.Windows.Forms;
namespace UndertaleStylishMusicMod
{
public partial class Form1 : Form
{
private static string gameFolder;
private static SoundPlayer simpleSound;
private int bueno = 0;
private int malo = 0;
public Form1()
{
InitializeComponent();
simpleSound = new SoundPlayer();
gameFolder = "";
label2.Text = "_";
richTextBox1.Text = MostrarCreditos();
comboBox1.Items.AddRange(IndexaCarpetas("ghostFight"));
comboBox2.Items.AddRange(IndexaCarpetas("heartache"));
comboBox3.Items.AddRange(IndexaCarpetas("dogsong"));
comboBox4.Items.AddRange(IndexaCarpetas("bonetrousle"));
comboBox5.Items.AddRange(IndexaCarpetas("dummy"));
comboBox6.Items.AddRange(IndexaCarpetas("spearofjustice"));
comboBox7.Items.AddRange(IndexaCarpetas("bath"));
comboBox8.Items.AddRange(IndexaCarpetas("metalCrusher"));
comboBox9.Items.AddRange(IndexaCarpetas("spiderDance"));
comboBox10.Items.AddRange(IndexaCarpetas("deathGlamour"));
comboBox11.Items.AddRange(IndexaCarpetas("megalovania"));
comboBox12.Items.AddRange(IndexaCarpetas("asgore"));
comboBox13.Items.AddRange(IndexaCarpetas("ruins"));
comboBox14.Items.AddRange(IndexaCarpetas("snowy"));
comboBox15.Items.AddRange(IndexaCarpetas("waterfall"));
comboBox16.Items.AddRange(IndexaCarpetas("anotherMedium"));
comboBox17.Items.AddRange(IndexaCarpetas("snowdinTown"));
comboBox18.Items.AddRange(IndexaCarpetas("core"));
comboBox19.Items.AddRange(IndexaCarpetas("flowey"));
comboBox20.Items.AddRange(IndexaCarpetas("fallenDown"));
comboBox21.Items.AddRange(IndexaCarpetas("sans"));
comboBox22.Items.AddRange(IndexaCarpetas("nyehe"));
comboBox23.Items.AddRange(IndexaCarpetas("alphys"));
comboBox24.Items.AddRange(IndexaCarpetas("battle"));
comboBox25.Items.AddRange(IndexaCarpetas("determination"));
comboBox26.Items.AddRange(IndexaCarpetas("spooktune"));
comboBox27.Items.AddRange(IndexaCarpetas("bergentrung"));
}
private void Creditos(object sender, EventArgs e)
{
richTextBox1.Text = MostrarCreditos();
}
private void Tutoriel(object sender, EventArgs e)
{
richTextBox1.Text = MostrarTutoriel();
}
private void BlankAll(object sender, EventArgs e)
{
comboBox1.Text = "Dont Change";
comboBox2.Text = "Dont Change";
comboBox3.Text = "Dont Change";
comboBox4.Text = "Dont Change";
comboBox5.Text = "Dont Change";
comboBox6.Text = "Dont Change";
comboBox7.Text = "Dont Change";
comboBox8.Text = "Dont Change";
comboBox9.Text = "Dont Change";
comboBox10.Text = "Dont Change";
comboBox11.Text = "Dont Change";
comboBox12.Text = "Dont Change";
comboBox13.Text = "Dont Change";
comboBox14.Text = "Dont Change";
comboBox15.Text = "Dont Change";
comboBox16.Text = "Dont Change";
comboBox17.Text = "Dont Change";
comboBox18.Text = "Dont Change";
comboBox19.Text = "Dont Change";
comboBox20.Text = "Dont Change";
comboBox21.Text = "Dont Change";
comboBox22.Text = "Dont Change";
comboBox23.Text = "Dont Change";
comboBox24.Text = "Dont Change";
comboBox25.Text = "Dont Change";
comboBox26.Text = "Dont Change";
comboBox27.Text = "Dont Change";
}
private void VanillaAll(object sender, EventArgs e)
{
comboBox1.Text = IndexaCarpetas("ghostFight")[0];
comboBox2.Text = IndexaCarpetas("heartache")[0];
comboBox3.Text = IndexaCarpetas("dogsong")[0];
comboBox4.Text = IndexaCarpetas("bonetrousle")[0];
comboBox5.Text = IndexaCarpetas("dummy")[0];
comboBox6.Text = IndexaCarpetas("spearofjustice")[0];
comboBox7.Text = IndexaCarpetas("bath")[0];
comboBox8.Text = IndexaCarpetas("metalCrusher")[0];
comboBox9.Text = IndexaCarpetas("spiderDance")[0];
comboBox10.Text = IndexaCarpetas("deathGlamour")[0];
comboBox11.Text = IndexaCarpetas("megalovania")[0];
comboBox12.Text = IndexaCarpetas("asgore")[0];
comboBox13.Text = IndexaCarpetas("ruins")[0];
comboBox14.Text = IndexaCarpetas("snowy")[0];
comboBox15.Text = IndexaCarpetas("waterfall")[0];
comboBox16.Text = IndexaCarpetas("anotherMedium")[0];
comboBox17.Text = IndexaCarpetas("snowdinTown")[0];
comboBox18.Text = IndexaCarpetas("core")[0];
comboBox19.Text = IndexaCarpetas("flowey")[0];
comboBox20.Text = IndexaCarpetas("fallenDown")[0];
comboBox21.Text = IndexaCarpetas("sans")[0];
comboBox22.Text = IndexaCarpetas("nyehe")[0];
comboBox23.Text = IndexaCarpetas("alphys")[0];
comboBox24.Text = IndexaCarpetas("battle")[0];
comboBox25.Text = IndexaCarpetas("determination")[0];
comboBox26.Text = IndexaCarpetas("spooktune")[0];
comboBox27.Text = IndexaCarpetas("bergentrung")[0];
}
private string[] IndexaCarpetas(string cancion)
{
string path = Path.GetFullPath(@"Resources\" + cancion);
string[] dirs2 = new string[1];
try
{
String[] dirs = Directory.GetDirectories(path, "*", SearchOption.TopDirectoryOnly);
dirs2 = new string[dirs.Length];
int i = 0;
foreach (String dir in dirs)
{
DirectoryInfo di = new DirectoryInfo(dir);
dirs2[i]= di.Name;
i++;
}
}catch(DirectoryNotFoundException e)
{
dirs2[0] = "Folder empty";
}
return dirs2;
}
public string MostrarCreditos()
{
return " Undertale Stylish Music Mod by EvilTony13 v1.0 (should also work with the steam version)\n"
+ " Last game build tested: Undertale v1.001 GOG_installer version: undertale_2.0.0.2.exe\n"
+ " __________________________________________________________________\n"
+ "This is a non-profit software, if you paid for this software then you got fooled lol...\n"
+ "This music database is not meant for ilicit software distribution, just for modding\n"
+ "Please support Toby Fox and the authors of the rest of the covers\n"
+ "Credits for the songs goes to their respective, here's a full list of them:\n\n"
+ " - Toby Fox (Main creator of Undertale): https://store.steampowered.com/app/391570/UNDERTALE_Soundtrack/ \n"
+ " - Amosdoll Music: https://www.youtube.com/channel/UCj31PEVBMTnLvVOCSQGpbog \n"
+ " - RichaadEB: https://www.youtube.com/channel/UCPM1bCbT-dVAHAEIpUUpVLQ \n"
+ " - Smooth McGroove: https://www.youtube.com/channel/UCJvBEEqTaLaKclbCPgIjBSQ \n"
+ " - GameChops: https://www.youtube.com/channel/UCDVKYPXwdYUQfgA05CkyFSg \n"
+ " GameChomps is like a song database for a large number of creators, not just a group\n"
+ " - String Player Gamer: https://www.youtube.com/channel/UCZF_RZUVo-5jUfdlp76G-lQ \n"
+ " - Vetrom: https://www.youtube.com/channel/UCc8Z-QX87IY--16O9unVXpQ \n"
+ " - Noisestorm: https://www.youtube.com/channel/UCMxqfxGRX07XOoFfyaM-eYA \n"
+ " - Kyle Allen Music: https://www.youtube.com/channel/UCHS0hTD4x-w5sUHxNhi6xiw \n"
+ " - Metal Fortress: https://www.youtube.com/channel/UCu5mvfbtdqWv3FXs-cD6Fug \n"
+ " - ThunderScott: https://www.youtube.com/user/ThunderScott6267 \n"
+ " - The Living Tombstone: https://www.youtube.com/channel/UCFYMDSW-BzeYZKFSxROw3Rg \n"
+ " - Paweł Zadrożniak and his mighty Floppotron: https://www.youtube.com/channel/UCximsD7EJ38jzCNgfP_YTmA \n"
+ " - Luuul's Piano: https://www.youtube.com/channel/UCifYf_nIpb3ShFCOrIW86xA \n"
+ " - Square Enix: They dont need more introduction\n"
+ " - Marvel: We're sorry you lost spiderman, we're sorry you're part of disney now,\n we're sorry Stan Lee passed out, we're sorry Avengers ended... when will this end...\n"
+ " - LucasArts: They are part of Disney now...\n"
+ " - Disney: Look at your TV, they may own that as well\n"
+ " - Nintendo: aka lawswit incoming\n"
+ " - Baha Men: A guy who talks to dogs\n"
+ " - Fall Out Boy: A band pretty much everyone knows\n"
+ " - Linking Park: You don't know these guys? you suck\n"
+ " - Skrillex: The man of the century...\n"
+ " - OutKast: Sick people :D\n"
+ " - DMX: X already gave it to ya\n"
+ " - Ray Parker Jr.: He compose ghostbusters... damn i have to teach you everything...\n"
+ " - Lesley Gore: Too old to get any profit of this credit\n"
+ " - Mellen Gi & Tommee Profitt: for the cover.. ya know...\n"
+ " - Luis Fonsi ft. Daddy Yankee: They're pretty famous here in Spain, Can't figure out why...\n"
+ " - Justin Biever ft. Ludacris: Well... guess earth also needs variety...\n"
+ "\n";
}
public string MostrarTutoriel()
{
return "\n----Tutoriel----\n\n"
+ "1-Locate your undertale's root instalation directory (where UNDERTALE.exe is located)\n"
+ "2-Pick songs, they're all playable, it makes easier to decide, uh? ;) wink\n"
+ "3-Press Install and please dont call me if anything goes wrong xD\n\n"
+ "Notes:\n"
+ "A ComboBox blank and 'Dont change' equals same (None will change any file)\n"
+ "Play will only reproduce a few seconds sample, but the fited song will be installed in the game\n"
+ "Stored Vanilla versions are from the game itself: Undertale v1.001 GOG_installer version: undertale_2.0.0.2.exe\n";
}
private void FolderSearch(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = folderBrowserDialog1.SelectedPath;
gameFolder = textBox1.Text;
}
}
private void Play(object sender, EventArgs e, string boxOpcion, string cancion, string archivo)
{
gameFolder = textBox1.Text;
if (boxOpcion == "Dont Change" || boxOpcion == "" || boxOpcion == "Folder empty")
{
label2.Text = "_Error: You have to select a song version from the list";
}
else
{
try
{
Stop(sender, e);
string localRute = Path.GetFullPath(@"Samples\" + cancion + @"\" + boxOpcion + @"\" + archivo);
simpleSound = new SoundPlayer(localRute);
simpleSound.Play();
label2.Text = "_Playing: " + cancion + " - " + boxOpcion;
}catch(FileNotFoundException b)
{
label2.Text = @"_BIG ERROR: The file Samples\" + cancion + @"\" + boxOpcion + @"\" + archivo + " was not found:";
}
}
}
private void Stop(object sender, EventArgs e)
{
label2.Text = "_";
simpleSound.Stop();
}
private void Copiar(object sender, EventArgs e, string boxOpcion, string cancion, string archivo)
{
string gameRute= gameFolder + @"\" + archivo;
string localRute= Path.GetFullPath(@"Resources\" + cancion + @"\" + boxOpcion + @"\" + archivo);
if (boxOpcion != "Dont Change" && boxOpcion != "" && boxOpcion != "Folder empty")
{
if (File.Exists(gameRute))
{
try
{
richTextBox1.Text += "installing " + cancion + "... ";
System.IO.File.Delete(gameRute);
System.IO.File.Copy(localRute, gameRute, true);
richTextBox1.Text += "success.\n";
bueno++;
}
catch (System.IO.IOException ex)
{
richTextBox1.Text += "failure:\n"+ex.Message + "\n";
malo++;
return;
}
}
else
{
try
{
richTextBox1.Text += "game folder's file for " + cancion + ": " + archivo + " wasn't found\ncreating new one... ";
System.IO.File.Copy(localRute, gameRute, true);
richTextBox1.Text += "success.\n";
bueno++;
}
catch (System.IO.IOException ex)
{
richTextBox1.Text += "failure:\n" + ex.Message + "\n";
malo++;
return;
}
}
}
}
private void Instalacion(object sender, EventArgs e)
{
gameFolder = textBox1.Text;
if (textBox1.Text == "")
{
label2.Text = "Error: You didn't select a folder";
}
else
{
if (File.Exists(gameFolder + @"\UNDERTALE.exe"))
{
bueno = 0;
malo = 0;
richTextBox1.Text = "----------------------------------------------\n";
Copiar(sender, e, comboBox1.Text, "ghostFight", "mus_ghostbattle.ogg");
Copiar(sender, e, comboBox2.Text, "heartache", "mus_boss1.ogg");
Copiar(sender, e, comboBox3.Text, "dogsong", "mus_dogsong.ogg");
Copiar(sender, e, comboBox4.Text, "bonetrousle", "mus_papyrusboss.ogg");
Copiar(sender, e, comboBox5.Text, "dummy", "mus_dummybattle.ogg");
Copiar(sender, e, comboBox6.Text, "spearofjustice", "mus_undyneboss.ogg");
Copiar(sender, e, comboBox7.Text, "bath", "mus_x_undyne.ogg");
Copiar(sender, e, comboBox8.Text, "metalCrusher", "mus_mettatonbattle.ogg");
Copiar(sender, e, comboBox9.Text, "spiderDance", "mus_spider.ogg");
Copiar(sender, e, comboBox10.Text, "deathGlamour", "mus_mettaton_ex.ogg");
Copiar(sender, e, comboBox11.Text, "megalovania", "mus_zz_megalovania.ogg");
Copiar(sender, e, comboBox12.Text, "asgore", "mus_vsasgore.ogg");
Copiar(sender, e, comboBox13.Text, "ruins", "mus_ruins.ogg");
Copiar(sender, e, comboBox14.Text, "snowy", "mus_snowy.ogg");
Copiar(sender, e, comboBox15.Text, "waterfall", "mus_waterfall.ogg");
Copiar(sender, e, comboBox16.Text, "anotherMedium", "mus_anothermedium.ogg");
Copiar(sender, e, comboBox17.Text, "snowdinTown", "mus_town.ogg");
Copiar(sender, e, comboBox18.Text, "core", "mus_core.ogg");
Copiar(sender, e, comboBox19.Text, "flowey", "mus_flowey.ogg");
Copiar(sender, e, comboBox20.Text, "fallenDown", "mus_toriel.ogg");
Copiar(sender, e, comboBox21.Text, "sans", "mus_muscle.ogg");
Copiar(sender, e, comboBox22.Text, "nyehe", "mus_papyrus.ogg");
Copiar(sender, e, comboBox23.Text, "alphys", "mus_lab.ogg");
Copiar(sender, e, comboBox24.Text, "battle", "mus_battle1.ogg");
Copiar(sender, e, comboBox25.Text, "determination", "mus_gameover.ogg");
Copiar(sender, e, comboBox26.Text, "spooktune", "mus_spoopy.ogg");
Copiar(sender, e, comboBox27.Text, "bergentrung", "mus_bergentruckung.ogg");
richTextBox1.Text += "----------------------------------------------\n";
richTextBox1.Text += "Instalation ended with "+bueno+" succeeded tasks and "+malo+" failures.\n\n\n--";
}
else
{
label2.Text = "Error: UNDERTALE.exe Wasn't found in the choosen game folder";
}
}
}
private void GhostFightPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox1.Text;
Play(sender, e, boxOpcion, "ghostFight", "mus_ghostbattle.wav");
}
private void HeartachePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox2.Text;
Play(sender, e, boxOpcion, "heartache", "mus_boss1.wav");
}
private void DogSongPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox3.Text;
Play(sender, e, boxOpcion, "dogsong", "mus_dogsong.wav");
}
private void BonetrouslePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox4.Text;
Play(sender, e, boxOpcion, "bonetrousle", "mus_papyrusboss.wav");
}
private void DummyPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox5.Text;
Play(sender, e, boxOpcion, "dummy", "mus_dummybattle.wav");
}
private void SpearofJusticePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox6.Text;
Play(sender, e, boxOpcion, "spearofjustice", "mus_undyneboss.wav");
}
private void BATHPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox7.Text;
Play(sender, e, boxOpcion, "bath", "mus_x_undyne.wav");
}
private void MetalCrusherPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox8.Text;
Play(sender, e, boxOpcion, "metalCrusher", "mus_mettatonbattle.wav");
}
private void SpiderDancePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox9.Text;
Play(sender, e, boxOpcion, "spiderDance", "mus_spider.wav");
}
private void DeathGlamourPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox10.Text;
Play(sender, e, boxOpcion, "deathGlamour", "mus_mettaton_ex.wav");
}
private void MegalovaniaPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox11.Text;
Play(sender, e, boxOpcion, "megalovania", "mus_zz_megalovania.wav");
}
private void ASGOREPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox12.Text;
Play(sender, e, boxOpcion, "asgore", "mus_vsasgore.wav");
}
private void RuinsPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox13.Text;
Play(sender, e, boxOpcion, "ruins", "mus_ruins.wav");
}
private void SnowyPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox14.Text;
Play(sender, e, boxOpcion, "snowy", "mus_snowy.wav");
}
private void WaterfallPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox15.Text;
Play(sender, e, boxOpcion, "waterfall", "mus_waterfall.wav");
}
private void AnotherMediumPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox16.Text;
Play(sender, e, boxOpcion, "anotherMedium", "mus_anothermedium.wav");
}
private void SnowdinTownPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox17.Text;
Play(sender, e, boxOpcion, "snowdinTown", "mus_town.wav");
}
private void COREPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox18.Text;
Play(sender, e, boxOpcion, "core", "mus_core.wav");
}
private void FloweyPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox19.Text;
Play(sender, e, boxOpcion, "flowey", "mus_flowey.wav");
}
private void FallenDownPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox20.Text;
Play(sender, e, boxOpcion, "fallenDown", "mus_toriel.wav");
}
private void SansPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox21.Text;
Play(sender, e, boxOpcion, "sans", "mus_muscle.wav");
}
private void NyehePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox22.Text;
Play(sender, e, boxOpcion, "nyehe", "mus_papyrus.wav");
}
private void AlphysPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox23.Text;
Play(sender, e, boxOpcion, "alphys", "mus_lab.wav");
}
private void BattlePlay(object sender, EventArgs e)
{
string boxOpcion = comboBox24.Text;
Play(sender, e, boxOpcion, "battle", "mus_battle1.wav");
}
private void DeterminationPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox25.Text;
Play(sender, e, boxOpcion, "determination", "mus_gameover.wav");
}
private void SpookPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox26.Text;
Play(sender, e, boxOpcion, "spooktune", "mus_spoopy.wav");
}
private void BergentrungPlay(object sender, EventArgs e)
{
string boxOpcion = comboBox27.Text;
Play(sender, e, boxOpcion, "bergentrung", "mus_bergentruckung.wav");
}
}
}