diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
old mode 100755
new mode 100644
index 159b35c..f96f8c4
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,130 +8,12 @@ defaults:
working-directory: ./HorseIsleServer
jobs:
- build-linux:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
-
- - name: Git Submodule update
- run: git submodule update --init --recursive
-
- - name: Setup .NET
- uses: actions/setup-dotnet@v1
- with:
- dotnet-version: 8.0.x
- include-prerelease: false
- - name: Install utils
- run: |
- sudo apt update
- sudo apt install -y clang zlib1g-dev dos2unix
- dotnet tool install -g dotnet-script
-
- - name: Restore dependencies
- run: |
- dotnet restore LibHISP
- dotnet restore HISPd
-# linux x64
- - name: Build linux-x64
- continue-on-error: false
- run: |
- cd HISPd
- dotnet publish -p:PublishProfile=Linux64.pubxml
- cd ..
- cd MPN00BS
- dotnet publish -p:PublishProfile=Linux64.pubxml
- cd ..
-
-# linux arm
- - name: Build linux-arm
- continue-on-error: false
- run: |
- cd HISPd
- dotnet publish -p:PublishProfile=LinuxARM.pubxml
- cd ..
-# linux arm64
- - name: Build linux-arm64
- continue-on-error: false
- run: |
- cd HISPd
- dotnet publish -p:PublishProfile=LinuxARM64.pubxml
- cd ..
+ build:
-
- - name: Build deb package
- continue-on-error: false
- run: |
- mkdir /tmp/debpkg
- mkdir /tmp/debpkg/Debian64
- mkdir /tmp/debpkg/Debian64/etc
- mkdir /tmp/debpkg/Debian64/usr
- mkdir /tmp/debpkg/Debian64/etc/hisp
- mkdir /tmp/debpkg/Debian64/etc/hisp/gamedata
- mkdir /tmp/debpkg/Debian64/etc/systemd
- mkdir /tmp/debpkg/Debian64/etc/systemd/system
- mkdir /tmp/debpkg/Debian64/usr/bin
- mkdir /tmp/debpkg/Debian64/usr/lib
- mkdir /tmp/debpkg/Debian64/DEBIAN
- cp LibHISP/Resources/server.properties /tmp/debpkg/Debian64/etc/hisp/server.properties
- cp LibHISP/Resources/default_cross_domain.xml /tmp/debpkg/Debian64/etc/hisp/CrossDomainPolicy.xml
- cp -r HISPd/Resources/DEBIAN/* /tmp/debpkg/Debian64/DEBIAN
- cp -r HISPd/bin/x64/Linux/net8.0/linux-x64/publish/gamedata/* /tmp/debpkg/Debian64/etc/hisp/gamedata
- cp HISPd/bin/x64/Linux/net8.0/linux-x64/publish/libe_sqlite3.so /tmp/debpkg/Debian64/usr/lib/libe_sqlite3.so
- cp HISPd/bin/x64/Linux/net8.0/linux-x64/publish/HI1.MAP /tmp/debpkg/Debian64/etc/hisp/HI1.MAP
- cp HISPd/bin/x64/Linux/net8.0/linux-x64/publish/HISPd /tmp/debpkg/Debian64/usr/bin/HISPd
- cp HISPd/Resources/HISP.service /tmp/debpkg/Debian64/etc/systemd/system/HISP.service
- cat /tmp/debpkg/Debian64/DEBIAN/control
- dos2unix /tmp/debpkg/Debian64/DEBIAN/conffiles
- dos2unix /tmp/debpkg/Debian64/DEBIAN/control
- dos2unix /tmp/debpkg/Debian64/DEBIAN/postinst
- dos2unix /tmp/debpkg/Debian64/DEBIAN/postrm
- dos2unix /tmp/debpkg/Debian64/DEBIAN/prerm
- dos2unix /tmp/debpkg/Debian64/etc/systemd/system/HISP.service
- chmod 755 -R /tmp/debpkg/Debian64
- chmod +x /tmp/debpkg/Debian64/usr/bin/HISPd
- mkdir debpackage
- dpkg-deb --build /tmp/debpkg/Debian64
- mv /tmp/debpkg/Debian64.deb debpackage/HISP-Debian-AMD64.deb
-
-# Upload LINUX
- - name: Upload linux-x64
- uses: actions/upload-artifact@v4
- with:
- name: HISP-Linux64
- path: HorseIsleServer/HISPd/bin/x64/Linux/net8.0/linux-x64/publish/
-
- - name: Upload linux-x64-noobs
- uses: actions/upload-artifact@v4
- with:
- name: HISP-Linux64-Noobs
- path: HorseIsleServer/MPN00BS/bin/x64/Linux/net8.0/linux-x64/publish/
-
- - name: Upload linux-arm
- uses: actions/upload-artifact@v4
- with:
- name: HISP-LinuxARM
- path: HorseIsleServer/HISPd/bin/ARM/Linux/net8.0/linux-arm/publish/
-
- - name: Upload linux-arm64
- uses: actions/upload-artifact@v4
- with:
- name: HISP-LinuxARM64
- path: HorseIsleServer/HISPd/bin/ARM64/Linux/net8.0/linux-arm64/publish/
-
- - name: Upload deb package
- uses: actions/upload-artifact@v4
- with:
- name: HISP-DebianPackage
- path: HorseIsleServer/debpackage
-
- build-win:
runs-on: windows-latest
+
steps:
- uses: actions/checkout@v2
- with:
- fetch-depth: 0
- name: Git Submodule update
run: git submodule update --init --recursive
@@ -139,153 +21,156 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 8.0.x
- include-prerelease: false
-
- - name: Install utils
- run: dotnet tool install -g dotnet-script
-
+ dotnet-version: 6.0.x
+ include-prerelease: true
+
- name: Restore dependencies
run: dotnet restore
-
-# x64 build
+
+
- name: Build win-x64
continue-on-error: false
run: |
- cd HISPd
dotnet publish -p:PublishProfile=Win64.pubxml
- cd ..
- cd MPN00BS
- dotnet publish -p:PublishProfile=Win64.pubxml
- cd ..
- name: Build win-x86
continue-on-error: false
run: |
- cd HISPd
dotnet publish -p:PublishProfile=Win32.pubxml
- cd ..
- cd MPN00BS
- dotnet publish -p:PublishProfile=Win32.pubxml
- cd ..
-# arm64 build
+ - name: Build win-arm
+ continue-on-error: false
+ run: |
+ dotnet publish -p:PublishProfile=WinARM.pubxml
+
- name: Build win-arm64
continue-on-error: false
run: |
- cd HISPd
dotnet publish -p:PublishProfile=WinARM64.pubxml
- cd ..
-# Upload WINDOWS
-
- - name: Upload win-x64
- uses: actions/upload-artifact@v4
- with:
- name: HISP-Win64
- path: HorseIsleServer/HISPd/bin/x64/Windows/net8.0/win-x64/publish/
-
- - name: Upload win-x86
- uses: actions/upload-artifact@v4
- with:
- name: HISP-Win32
- path: HorseIsleServer/HISPd/bin/x86/Windows/net8.0/win-x86/publish/
-
- - name: Upload win-arm64
- uses: actions/upload-artifact@v4
- with:
- name: HISP-WinARM64
- path: HorseIsleServer/HISPd/bin/arm64/Windows/net8.0/win-arm64/publish/
-
- - name: Upload win-x86-noobs
- uses: actions/upload-artifact@v4
- with:
- name: HISP-Win32-Noobs
- path: HorseIsleServer/MPN00BS/bin/x86/Windows/net8.0/win-x86/publish/
-
- - name: Upload win-x64-noobs
- uses: actions/upload-artifact@v4
- with:
- name: HISP-Win64-Noobs
- path: HorseIsleServer/MPN00BS/bin/x64/Windows/net8.0/win-x64/publish/
-
- build-mac:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- with:
- fetch-depth: 0
-
- - name: Git Submodule update
- run: git submodule update --init --recursive
-
- - name: Setup .NET
- uses: actions/setup-dotnet@v1
- with:
- dotnet-version: 8.0.x
- include-prerelease: false
-
- - name: Install utils
- run: dotnet tool install -g dotnet-script
-
- - name: Restore dependencies
+ - name: Build linux-x64
+ continue-on-error: false
run: |
- dotnet restore LibHISP
- dotnet restore HISPd
-
+ dotnet publish -p:PublishProfile=Linux64.pubxml
+
+ - name: Build linux-arm
+ continue-on-error: false
+ run: |
+ dotnet publish -p:PublishProfile=LinuxARM.pubxml
+
+ - name: Build linux-arm64
+ continue-on-error: false
+ run: |
+ dotnet publish -p:PublishProfile=LinuxARM64.pubxml
+
- name: Build mac-x64
continue-on-error: false
run: |
- cd HISPd
dotnet publish -p:PublishProfile=Osx64.pubxml
- cd ..
- cd MPN00BS
- dotnet publish -p:PublishProfile=Osx64.pubxml
- cd ..
+
- name: Build mac-arm64
continue-on-error: false
run: |
- cd HISPd
dotnet publish -p:PublishProfile=OsxARM64.pubxml
- cd ..
+
+ - name: Build android-arm
+ continue-on-error: false
+ run: |
+ dotnet publish -p:PublishProfile=AndroidARM.pubxml
+
+ - name: Build android-arm64
+ continue-on-error: false
+ run: |
+ dotnet publish -p:PublishProfile=AndroidARM64.pubxml
+
+
+ - name: Upload win-x64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Win64
+ path: HorseIsleServer\HISP\bin\x64\Windows\net6.0\win-x64\publish\
+
+ - name: Upload win-x86
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Win32
+ path: HorseIsleServer\HISP\bin\x86\Windows\net6.0\win-x86\publish\
+
+ - name: Upload win-arm
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-WinARM
+ path: HorseIsleServer\HISP\bin\arm\Windows\net6.0\windows-arm\publish\
+
+ - name: Upload win-arm64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-WinARM64
+ path: HorseIsleServer\HISP\bin\arm64\Windows\net6.0\windows-arm64\publish\
+
+ - name: Upload win-x86-noobs
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Win32-Noobs
+ path: HorseIsleServer\N00BS\bin\x86\Windows\net6.0\win-x86\publish\
+
+ - name: Upload win-x64-noobs
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Win64-Noobs
+ path: HorseIsleServer\N00BS\bin\x64\Windows\net6.0\win-x64\publish\
+
+ - name: Upload linux-x64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Linux64
+ path: HorseIsleServer/HISPCli/bin/x64/Linux/net6.0/linux-x64/publish/
+
+ - name: Upload linux-arm
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-LinuxARM
+ path: HorseIsleServer/HISPCli/bin/ARM/Linux/net6.0/linux-arm/publish/
+
+ - name: Upload linux-arm64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-LinuxARM64
+ path: HorseIsleServer/HISPCli/bin/ARM64/Linux/net6.0/linux-arm64/publish/
+
- name: Upload mac-x64
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Mac64
- path: HorseIsleServer/HISPd/bin/x64/MacOS/net8.0/osx-x64/publish/
+ path: HorseIsleServer/HISPCli/bin/x64/MacOS/net6.0/osx-x64/publish/
- name: Upload mac-arm64
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-MacARM64
- path: HorseIsleServer/HISPd/bin/arm64/MacOS/net8.0/osx-arm64/publish/
-
- - name: Upload mac-x64-noobs
- uses: actions/upload-artifact@v4
- with:
- name: HISP-Mac-Noobs
- path: HorseIsleServer/MPN00BS/bin/x64/MacOS/net8.0/osx-x64/publish/
+ path: HorseIsleServer/HISPCli/bin/arm64/MacOS/net6.0/osx-arm64/publish/
- build-web:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
+ - name: Upload android-arm
+ uses: actions/upload-artifact@v2
with:
- fetch-depth: 0
-
- - name: Git Submodule update
- run: git submodule update --init --recursive
+ name: HISP-AndroidARM
+ path: HorseIsleServer/HISPCli/bin/arm/Android/net6.0/android-arm/publish/
+
+ - name: Upload android-arm64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-AndroidARM64
+ path: HorseIsleServer/HISPCli/bin/arm64/Android/net6.0/android-arm64/publish/
- # UPLOAD WEB
- name: Upload Website (master)
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Web-Master
path: HorseIsleWeb/master-site
- name: Upload Website (game)
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Web-Game
path: HorseIsleWeb/game-site
diff --git a/.gitignore b/.gitignore
index 61ba3f3..2e7eb53 100755
--- a/.gitignore
+++ b/.gitignore
@@ -3,32 +3,19 @@
*/.vs/*
*.log
*.suo
-*.csproj.user
-*.pubxml.user
-*.user
-*.idb
-*Thumbs.db
-*.DS_Store
HorseIsleServer/N00BS/obj/*
HorseIsleServer/N00BS/bin/*
-HorseIsleServer/MPN00BS/obj/*
-HorseIsleServer/MPN00BS/bin/*
-
-HorseIsleServer/HISPd/obj/*
-HorseIsleServer/HISPd/bin/*
-
-HorseIsleServer/HISPtests/obj/*
-HorseIsleServer/HISPtests/bin/*
+HorseIsleServer/HISPCli/obj/*
+HorseIsleServer/HISPCli/bin/*
+HorseIsleServer/Installer/obj/*
+HorseIsleServer/Installer/bin/*
HorseIsleServer/LibHISP/obj/*
HorseIsleServer/LibHISP/bin/*
HorseIsleServer/LibHISP/Resources/Versioning/*
-HorseIsleServer/Installer/Windows/*
-
-
-HorseIsleServer/.vs/*
+HorseIsleServer/.vs/*
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
old mode 100755
new mode 100644
index c89ecbb..5cffd84
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,8 +1,6 @@
[submodule "HorseIsleWeb"]
path = HorseIsleWeb
url = https://github.com/islehorse/HorseIsleWeb.git
- branch = master
[submodule "HorseIsleData"]
path = HorseIsleData
url = https://github.com/islehorse/HorseIsleData.git
- branch = master
diff --git a/.mailmap b/.mailmap
deleted file mode 100755
index 7164d16..0000000
--- a/.mailmap
+++ /dev/null
@@ -1,7 +0,0 @@
-Li
SilicaAndPina
-Li Bluzume <39113159+KuromeSan@users.noreply.github.com>
-Li SilicaPi
-Li SilicaPi
-Li Silica
-Li AtelierWindows
-Li KuromeSan
\ No newline at end of file
diff --git a/HorseIsleData b/HorseIsleData
index e9c09c7..35bf0e0 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit e9c09c77cd0dd99eb12e16b679478fb0e3742b55
+Subproject commit 35bf0e04a686990d7237326c048fd18b3a081aa5
diff --git a/HorseIsleServer/HISP.sln b/HorseIsleServer/HISP.sln
old mode 100755
new mode 100644
index 1bda296..a959455
--- a/HorseIsleServer/HISP.sln
+++ b/HorseIsleServer/HISP.sln
@@ -5,11 +5,11 @@ VisualStudioVersion = 17.2.32210.308
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibHISP", "LibHISP\LibHISP.csproj", "{C48CBD82-AB30-494A-8FFA-4DE7069B5827}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HISPd", "HISPd\HISPd.csproj", "{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HISPCli", "HISPCli\HISPCli.csproj", "{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MPN00BS", "MPN00BS\MPN00BS.csproj", "{72EF95FC-03DB-4E61-A696-E0095DD42A4E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "N00BS", "N00BS\N00BS.csproj", "{6B45A1E8-0F54-4BF7-AF48-41B9FE676570}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HISPtests", "HISPtests\HISPtests.csproj", "{689FB972-1612-440E-817D-BE290F655AA8}"
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Installer", "Installer\Installer.vdproj", "{D330A197-67D4-42B0-8906-54264AF95EC1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -23,11 +23,6 @@ Global
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
- iOS|Any CPU = iOS|Any CPU
- iOS|ARM = iOS|ARM
- iOS|ARM64 = iOS|ARM64
- iOS|x64 = iOS|x64
- iOS|x86 = iOS|x86
Linux|Any CPU = Linux|Any CPU
Linux|ARM = Linux|ARM
Linux|ARM64 = Linux|ARM64
@@ -38,11 +33,6 @@ Global
MacOS|ARM64 = MacOS|ARM64
MacOS|x64 = MacOS|x64
MacOS|x86 = MacOS|x86
- Release|Any CPU = Release|Any CPU
- Release|ARM = Release|ARM
- Release|ARM64 = Release|ARM64
- Release|x64 = Release|x64
- Release|x86 = Release|x86
Windows|Any CPU = Windows|Any CPU
Windows|ARM = Windows|ARM
Windows|ARM64 = Windows|ARM64
@@ -50,8 +40,8 @@ Global
Windows|x86 = Windows|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Android|Any CPU.ActiveCfg = Android|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Android|Any CPU.Build.0 = Android|Any CPU
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Android|Any CPU.ActiveCfg = Linux|Any CPU
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Android|Any CPU.Build.0 = Linux|Any CPU
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Android|ARM.ActiveCfg = Android|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Android|ARM.Build.0 = Android|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Android|ARM64.ActiveCfg = Android|ARM64
@@ -68,17 +58,8 @@ Global
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Debug|ARM64.Build.0 = Debug|ARM64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Debug|x64.ActiveCfg = Debug|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Debug|x64.Build.0 = Debug|x64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Debug|x86.ActiveCfg = Debug|x86
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Debug|x86.Build.0 = Debug|x86
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|Any CPU.ActiveCfg = iOS|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|Any CPU.Build.0 = iOS|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|ARM.ActiveCfg = iOS|ARM
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|ARM.Build.0 = iOS|ARM
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|ARM64.ActiveCfg = iOS|ARM64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|ARM64.Build.0 = iOS|ARM64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|x64.ActiveCfg = iOS|x64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|x64.Build.0 = iOS|x64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.iOS|x86.ActiveCfg = iOS|x86
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Debug|x86.ActiveCfg = Debug|AnyCPU
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Debug|x86.Build.0 = Debug|AnyCPU
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|Any CPU.ActiveCfg = Linux|Any CPU
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|Any CPU.Build.0 = Linux|Any CPU
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|ARM.ActiveCfg = Linux|ARM
@@ -99,18 +80,8 @@ Global
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x64.Build.0 = MacOS|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x86.ActiveCfg = MacOS|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x86.Build.0 = MacOS|x86
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|Any CPU.ActiveCfg = Windows|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|Any CPU.Build.0 = Windows|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM.ActiveCfg = Windows|ARM
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM.Build.0 = Windows|ARM
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM64.ActiveCfg = Windows|ARM64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM64.Build.0 = Windows|ARM64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x64.ActiveCfg = Windows|x64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x64.Build.0 = Windows|x64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x86.ActiveCfg = Windows|x86
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x86.Build.0 = Windows|x86
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|Any CPU.ActiveCfg = Windows|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|Any CPU.Build.0 = Windows|Any CPU
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|Any CPU.ActiveCfg = Windows|x64
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|Any CPU.Build.0 = Windows|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM.ActiveCfg = Windows|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM.Build.0 = Windows|ARM
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM64.ActiveCfg = Windows|ARM64
@@ -119,8 +90,8 @@ Global
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x64.Build.0 = Windows|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x86.ActiveCfg = Windows|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|x86.Build.0 = Windows|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|Any CPU.ActiveCfg = Android|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|Any CPU.Build.0 = Android|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|Any CPU.ActiveCfg = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|Any CPU.Build.0 = Debug|Any CPU
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|ARM.ActiveCfg = Android|ARM
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|ARM.Build.0 = Android|ARM
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|ARM64.ActiveCfg = Android|ARM64
@@ -131,25 +102,16 @@ Global
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Android|x86.Build.0 = Android|x86
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM.ActiveCfg = Debug|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM.Build.0 = Debug|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM64.Build.0 = Debug|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x64.ActiveCfg = Debug|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x64.Build.0 = Debug|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x86.ActiveCfg = Debug|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x86.Build.0 = Debug|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|Any CPU.ActiveCfg = iOS|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|Any CPU.Build.0 = iOS|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|ARM.ActiveCfg = iOS|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|ARM.Build.0 = iOS|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|ARM64.ActiveCfg = iOS|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|ARM64.Build.0 = iOS|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|x64.ActiveCfg = iOS|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|x64.Build.0 = iOS|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.iOS|x86.ActiveCfg = iOS|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|Any CPU.ActiveCfg = Linux|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|Any CPU.Build.0 = Linux|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM.Build.0 = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x64.Build.0 = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Debug|x86.Build.0 = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|Any CPU.ActiveCfg = Debug|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|Any CPU.Build.0 = Debug|Any CPU
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|ARM.ActiveCfg = Linux|ARM
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|ARM.Build.0 = Linux|ARM
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Linux|ARM64.ActiveCfg = Linux|ARM64
@@ -168,166 +130,78 @@ Global
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.MacOS|x64.Build.0 = MacOS|x64
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.MacOS|x86.ActiveCfg = MacOS|x86
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.MacOS|x86.Build.0 = MacOS|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|Any CPU.ActiveCfg = Windows|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|Any CPU.Build.0 = Windows|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM.ActiveCfg = Windows|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM.Build.0 = Windows|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM64.ActiveCfg = Windows|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM64.Build.0 = Windows|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x64.ActiveCfg = Windows|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x64.Build.0 = Windows|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x86.ActiveCfg = Windows|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x86.Build.0 = Windows|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|Any CPU.ActiveCfg = Windows|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|Any CPU.Build.0 = Windows|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|ARM.ActiveCfg = Windows|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|ARM.Build.0 = Windows|ARM
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|Any CPU.ActiveCfg = Debug|x64
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|Any CPU.Build.0 = Debug|x64
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|ARM.ActiveCfg = Windows|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|ARM.Build.0 = Windows|Any CPU
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|ARM64.ActiveCfg = Windows|ARM64
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|ARM64.Build.0 = Windows|ARM64
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|x64.ActiveCfg = Windows|x64
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|x64.Build.0 = Windows|x64
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|x86.ActiveCfg = Windows|x86
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|x86.Build.0 = Windows|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|Any CPU.ActiveCfg = Android|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|Any CPU.Build.0 = Android|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|ARM.ActiveCfg = Android|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|ARM.Build.0 = Android|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|ARM64.ActiveCfg = Android|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|ARM64.Build.0 = Android|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|x64.ActiveCfg = Android|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|x64.Build.0 = Android|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|x86.ActiveCfg = Android|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Android|x86.Build.0 = Android|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|ARM.ActiveCfg = Debug|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|ARM.Build.0 = Debug|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|ARM64.Build.0 = Debug|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|x64.ActiveCfg = Debug|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|x64.Build.0 = Debug|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|x86.ActiveCfg = Debug|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Debug|x86.Build.0 = Debug|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|Any CPU.ActiveCfg = iOS|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|Any CPU.Build.0 = iOS|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|ARM.ActiveCfg = iOS|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|ARM.Build.0 = iOS|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|ARM64.ActiveCfg = iOS|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|ARM64.Build.0 = iOS|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|x64.ActiveCfg = iOS|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|x64.Build.0 = iOS|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|x86.ActiveCfg = iOS|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.iOS|x86.Build.0 = iOS|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|Any CPU.ActiveCfg = Linux|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|Any CPU.Build.0 = Linux|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|ARM.ActiveCfg = Linux|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|ARM.Build.0 = Linux|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|ARM64.ActiveCfg = Linux|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|ARM64.Build.0 = Linux|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|x64.ActiveCfg = Linux|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|x64.Build.0 = Linux|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|x86.ActiveCfg = Linux|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Linux|x86.Build.0 = Linux|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|Any CPU.ActiveCfg = MacOS|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|Any CPU.Build.0 = MacOS|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|ARM.ActiveCfg = MacOS|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|ARM.Build.0 = MacOS|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|ARM64.ActiveCfg = MacOS|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|ARM64.Build.0 = MacOS|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|x64.ActiveCfg = MacOS|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|x64.Build.0 = MacOS|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|x86.ActiveCfg = MacOS|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.MacOS|x86.Build.0 = MacOS|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|Any CPU.ActiveCfg = Windows|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|Any CPU.Build.0 = Windows|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|ARM.ActiveCfg = Windows|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|ARM.Build.0 = Windows|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|ARM64.ActiveCfg = Windows|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|ARM64.Build.0 = Windows|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|x64.ActiveCfg = Windows|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|x64.Build.0 = Windows|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|x86.ActiveCfg = Windows|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Release|x86.Build.0 = Windows|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|Any CPU.ActiveCfg = Windows|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|Any CPU.Build.0 = Windows|Any CPU
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|ARM.ActiveCfg = Windows|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|ARM.Build.0 = Windows|ARM
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|ARM64.ActiveCfg = Windows|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|ARM64.Build.0 = Windows|ARM64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|x64.ActiveCfg = Windows|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|x64.Build.0 = Windows|x64
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|x86.ActiveCfg = Windows|x86
- {72EF95FC-03DB-4E61-A696-E0095DD42A4E}.Windows|x86.Build.0 = Windows|x86
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|Any CPU.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|Any CPU.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|ARM.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|ARM.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|ARM64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|ARM64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|x64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|x64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|x86.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Android|x86.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|ARM.ActiveCfg = Debug|ARM
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|ARM.Build.0 = Debug|ARM
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|ARM64.Build.0 = Debug|ARM64
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|x64.ActiveCfg = Debug|x64
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|x64.Build.0 = Debug|x64
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|x86.ActiveCfg = Debug|x86
- {689FB972-1612-440E-817D-BE290F655AA8}.Debug|x86.Build.0 = Debug|x86
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|Any CPU.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|Any CPU.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|ARM.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|ARM.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|ARM64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|ARM64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|x64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|x64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|x86.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.iOS|x86.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|Any CPU.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|Any CPU.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|ARM.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|ARM.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|ARM64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|ARM64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|x64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|x64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|x86.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Linux|x86.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|Any CPU.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|Any CPU.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|ARM.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|ARM.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|ARM64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|ARM64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|x64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|x64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|x86.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.MacOS|x86.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|Any CPU.Build.0 = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|ARM.ActiveCfg = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|ARM.Build.0 = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|ARM64.ActiveCfg = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|ARM64.Build.0 = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|x64.ActiveCfg = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|x64.Build.0 = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|x86.ActiveCfg = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Release|x86.Build.0 = Release|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|Any CPU.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|Any CPU.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|ARM.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|ARM.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|ARM64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|ARM64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|x64.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|x64.Build.0 = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|x86.ActiveCfg = Debug|Any CPU
- {689FB972-1612-440E-817D-BE290F655AA8}.Windows|x86.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Android|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Android|Any CPU.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Android|ARM.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Android|ARM64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Android|x64.ActiveCfg = Windows|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Android|x86.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|ARM.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x64.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x86.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Linux|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Linux|Any CPU.Build.0 = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Linux|ARM.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Linux|ARM64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Linux|x64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Linux|x86.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.MacOS|Any CPU.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.MacOS|ARM.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.MacOS|ARM64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.MacOS|x64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.MacOS|x86.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|Any CPU.ActiveCfg = Debug|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|Any CPU.Build.0 = Debug|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|ARM.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|ARM64.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|x64.ActiveCfg = Windows|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|x64.Build.0 = Windows|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|x86.ActiveCfg = Windows|x86
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Windows|x86.Build.0 = Windows|x86
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|Any CPU.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|ARM.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|ARM64.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|x64.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Android|x86.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|Any CPU.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|ARM.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|ARM64.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|x64.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|x86.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|Any CPU.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|ARM.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|ARM64.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|x64.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Linux|x86.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|Any CPU.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|ARM.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|ARM64.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|x64.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.MacOS|x86.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|Any CPU.ActiveCfg = Debug
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|ARM.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|ARM64.ActiveCfg = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x64.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x64.Build.0 = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x86.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Windows|x86.Build.0 = Windows
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/HorseIsleServer/HISPd/HISPd.csproj b/HorseIsleServer/HISPCli/HISPCli.csproj
old mode 100755
new mode 100644
similarity index 57%
rename from HorseIsleServer/HISPd/HISPd.csproj
rename to HorseIsleServer/HISPCli/HISPCli.csproj
index b280073..f564645
--- a/HorseIsleServer/HISPd/HISPd.csproj
+++ b/HorseIsleServer/HISPCli/HISPCli.csproj
@@ -1,169 +1,230 @@
-
-
- Exe
- HISP.Cli
- 10.0
- x64;x86;ARM;ARM64;AnyCPU
- Debug;Windows;Linux;MacOS;Android;iOS
-
-
-
-
-
-
- True
- True
- Resources.resx
-
-
-
-
- PublicResXFileCodeGenerator
- Resources.Designer.cs
-
-
-
- false
- false
-
-
- net8.0
- false
- true
- icon.ico
- HISP.Cli.Program
- OnBuildSuccess
- embedded
- False
- none
- False
- Public Domain, 2022
- https://islehorse.com
- https://github.com/islehorse/HISP
- git
- 3
- 1701;1702;2026;IL2026
-
-
-
- partial
- false
- true
-
-
-
- win-x86
- true
- x86
- x86
- OS_WINDOWS;ARCH_X86
- none
-
-
- win-x64
- true
- x64
- x64
- OS_WINDOWS;ARCH_X86_64
- none
-
-
- win-arm
- true
- ARM
- OS_WINDOWS;ARCH_ARM
- none
-
-
- win-arm64
- true
- ARM64
- OS_WINDOWS;ARCH_ARM64
- none
-
-
-
-
- android-arm
- true
- ARM
- OS_ANDROID;ARCH_ARM
- 3
-
- none
-
-
- android-arm64
- true
- ARM64
- OS_ANDROID;ARCH_ARM64
- none
-
-
-
- linux-x64
- true
- x64
- OS_LINUX;ARCH_X86_64
- none
-
-
- linux-arm
- ARM
- true
- OS_LINUX;ARCH_ARM
- none
-
-
- linux-arm64
- ARM64
- true
- OS_LINUX;ARCH_ARM64
- none
-
-
-
- osx-x64
- true
- x64
- OS_MACOS;ARCH_X86_64
- none
-
-
- osx-arm64
- true
- OS_MACOS;ARCH_ARM64
- none
-
-
-
- ios-arm
- true
- ARM
- OS_IOS;ARCH_ARM
- none
-
-
- ios-arm64
- true
- ARM64
- OS_IOS;ARCH_ARM64
- none
-
-
-
- win-x86;win-x64;win-arm;win-arm64;linux-x64;linux-arm;linux-arm64;osx-x64;osx-arm64
- True
- OS_ALL;ARCH_ANYCPU
-
-
-
-
- False
- DEBUG;TRACE;OS_DEBUG
- full
-
-
-
-
-
+
+
+ Exe
+ HISP
+ 10.0
+ x64;x86;ARM;ARM64;AnyCPU
+ Debug;Windows;Linux;MacOS;Android
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+ false
+ false
+
+
+ net6.0
+ false
+ true
+ icon.ico
+ HISP.Program
+ OnBuildSuccess
+ embedded
+ False
+ none
+ False
+ Public Domain, 2022
+ https://islehorse.com
+ https://github.com/islehorse/HISP
+ git
+
+
+
+ win-x86
+ true
+ x86
+ OS_WINDOWS;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+ win-x64
+ true
+ x64
+ OS_WINDOWS;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+ win-arm
+ true
+ ARM
+ OS_WINDOWS;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+ win-arm64
+ true
+ ARM64
+ OS_WINDOWS;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+
+ android-arm
+ true
+ ARM
+ OS_ANDROID;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+ android-arm64
+ true
+ ARM64
+ OS_ANDROID;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+ linux-x64
+ true
+ x64
+ OS_LINUX;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+ linux-arm
+ ARM
+ true
+ OS_LINUX;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+ linux-arm64
+ ARM64
+ true
+ OS_LINUX;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+ osx-x64
+ true
+ x64
+ OS_MACOS;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+ osx-arm64
+ true
+ OS_MACOS;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+
+ net6.0
+ win-x86;win-x64;win-arm;win-arm64;linux-x64;linux-arm;linux-arm64;osx-x64;osx-arm64
+ True
+ OS_ALL;ARCH_ANYCPU
+
+
+
+
+ ARM
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+
+
+ ARM64
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+
+
+ True
+ OS_MACOS;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+
+
+ True
+ OS_LINUX;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ OS_LINUX;ARCH_ANYCPU
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ OS_WINDOWS;ARCH_ANYCPU
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ OS_MACOS;ARCH_ANYCPU
+ 3
+ 1701;1702;2026
+
+
+
+
+ True
+ OS_MACOS;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+
+
+ 3
+ 1701;1702;2026
+ False
+
+
+
+
diff --git a/HorseIsleServer/HISPCli/Program.cs b/HorseIsleServer/HISPCli/Program.cs
new file mode 100644
index 0000000..3b2f602
--- /dev/null
+++ b/HorseIsleServer/HISPCli/Program.cs
@@ -0,0 +1,43 @@
+using HISP.Server;
+using System;
+using System.IO;
+
+namespace HISP
+{
+ public static class Program
+ {
+ public static bool ShuttingDown = false;
+ public static string LogFile;
+ public static string BaseDir;
+
+ public static void OnShutdown()
+ {
+ ShuttingDown = true;
+ }
+ public static void LogToFile(string text)
+ {
+ File.AppendAllTextAsync(text, LogFile);
+ }
+ public static void LogStdout(string text)
+ {
+ Console.Out.WriteAsync(text + Console.Out.NewLine);
+ }
+ public static void Main(string[] args)
+ {
+ string BaseDir = Directory.GetCurrentDirectory();
+#if DEB_PACKAGE
+ ConfigReader.ConfigurationFileName = "/etc/hisp.conf"
+ LogFile = "/var/log/hisp.log"
+ Logger.SetCallback(LogToFile);
+#else
+ Logger.SetCallback(LogStdout);
+#endif
+
+ Entry.SetShutdownCallback(OnShutdown);
+ Entry.Start();
+
+ while (!ShuttingDown) { /* Allow asyncronous operations to happen. */ };
+
+ }
+ }
+}
diff --git a/HorseIsleServer/MPN00BS/Properties/AssemblyInfo.cs b/HorseIsleServer/HISPCli/Properties/AssemblyInfo.cs
old mode 100755
new mode 100644
similarity index 81%
rename from HorseIsleServer/MPN00BS/Properties/AssemblyInfo.cs
rename to HorseIsleServer/HISPCli/Properties/AssemblyInfo.cs
index dc7b03a..e22bdd6
--- a/HorseIsleServer/MPN00BS/Properties/AssemblyInfo.cs
+++ b/HorseIsleServer/HISPCli/Properties/AssemblyInfo.cs
@@ -1,43 +1,35 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("HISP")]
-[assembly: AssemblyDescription("Server Emulator for \"Horse Isle\"")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Li")]
-[assembly: AssemblyProduct("HISP")]
-[assembly: AssemblyCopyright("Public Domain © 2022")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("31f0bdf5-f6d1-4aeb-8905-80dbc223c836")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.8.73.0")]
-[assembly: AssemblyFileVersion("1.8.73.0")]
-
-
-
-
-
-
-
-
-
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HISP")]
+[assembly: AssemblyDescription("Server Emulator for \"Horse Isle\"")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("SilicaAndPina")]
+[assembly: AssemblyProduct("HISP")]
+[assembly: AssemblyCopyright("Public Domain © 2022")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("57264c6b-1461-41d6-9304-3890cf6c8390")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.3.0.0")]
+[assembly: AssemblyFileVersion("1.3.0.0")]
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/AndroidARM.pubxml
old mode 100755
new mode 100644
similarity index 81%
rename from HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/AndroidARM.pubxml
index 4c08f3e..d6707c6
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/AndroidARM.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Android
ARM
- bin\arm\Android\net8.0\android-arm\publish\
+ bin\arm\Android\net6.0\android-arm\publish\
FileSystem
- net8.0
+ net6.0
android-arm
True
True
@@ -17,4 +17,4 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
True
OS_ANDROID;ARCH_ARM
-
\ No newline at end of file
+
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM64.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/AndroidARM64.pubxml
old mode 100755
new mode 100644
similarity index 81%
rename from HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM64.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/AndroidARM64.pubxml
index e9b3839..9a8e766
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM64.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/AndroidARM64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Android
ARM64
- bin\arm64\Android\net8.0\android-arm64\publish\
+ bin\arm64\Android\net6.0\android-arm64\publish\
FileSystem
- net8.0
+ net6.0
android-arm64
True
True
@@ -17,4 +17,4 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
True
OS_ANDROID;ARCH_ARM64
-
\ No newline at end of file
+
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Linux64.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Linux64.pubxml
similarity index 82%
rename from HorseIsleServer/HISPtests/Properties/PublishProfiles/Linux64.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/Linux64.pubxml
index acb8a96..e633e09 100644
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Linux64.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Linux64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Linux
x64
- bin\x64\Linux\net8.0\linux-x64\publish\
+ bin\x64\Linux\net6.0\linux-x64\publish\
FileSystem
- net8.0
+ net6.0
linux-x64
True
True
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/LinuxARM.pubxml
old mode 100755
new mode 100644
similarity index 82%
rename from HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/LinuxARM.pubxml
index fdccff1..8257770
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/LinuxARM.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Linux
ARM
- bin\ARM\Linux\net8.0\linux-arm\publish\
+ bin\ARM\Linux\net6.0\linux-arm\publish\
FileSystem
- net8.0
+ net6.0
linux-arm
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM64.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/LinuxARM64.pubxml
old mode 100755
new mode 100644
similarity index 84%
rename from HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM64.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/LinuxARM64.pubxml
index f387011..b9c21d1
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM64.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/LinuxARM64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Linux
ARM64
- bin\ARM64\Linux\net8.0\linux-arm64\publish\
+ bin\ARM64\Linux\net6.0\linux-arm64\publish\
FileSystem
- net8.0
+ net6.0
linux-arm64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/Osx64.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Osx64.pubxml
old mode 100755
new mode 100644
similarity index 82%
rename from HorseIsleServer/HISPd/Properties/PublishProfiles/Osx64.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/Osx64.pubxml
index f6e810f..8e6230a
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/Osx64.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Osx64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
MacOS
x64
- bin\x64\MacOS\net8.0\osx-x64\publish\
+ bin\x64\MacOS\net6.0\osx-x64\publish\
FileSystem
- net8.0
+ net6.0
osx-x64
True
True
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/OsxARM64.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/OsxARM64.pubxml
old mode 100755
new mode 100644
similarity index 82%
rename from HorseIsleServer/MPN00BS/Properties/PublishProfiles/OsxARM64.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/OsxARM64.pubxml
index 6d6a41d..bf66d06
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/OsxARM64.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/OsxARM64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
MacOS
ARM64
- bin\arm64\MacOS\net8.0\osx-arm64\publish\
+ bin\arm64\MacOS\net6.0\osx-arm64\publish\
FileSystem
- net8.0
+ net6.0
osx-arm64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/Win32.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Win32.pubxml
old mode 100755
new mode 100644
similarity index 84%
rename from HorseIsleServer/HISPd/Properties/PublishProfiles/Win32.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/Win32.pubxml
index 0608a65..627bbac
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/Win32.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Win32.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Windows
x86
- bin\x86\Windows\net8.0\win-x86\publish\
+ bin\x86\Windows\net6.0\win-x86\publish\
FileSystem
- net8.0
+ net6.0
win-x86
True
True
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Win64.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Win64.pubxml
similarity index 82%
rename from HorseIsleServer/HISPtests/Properties/PublishProfiles/Win64.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/Win64.pubxml
index 79a4c04..b7888f5 100644
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Win64.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/Win64.pubxml
@@ -6,14 +6,14 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Windows
x64
- bin\x64\Windows\net8.0\win-x64\publish\
+ bin\x64\Windows\net6.0\win-x64\publish\
FileSystem
- net8.0
+ net6.0
win-x64
True
- True
True
True
+ True
OS_WINDOWS;ARCH_X86_64
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/WinARM.pubxml
similarity index 83%
rename from HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/WinARM.pubxml
index f6cc04e..202b002 100644
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/WinARM.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Windows
ARM
- bin\arm\Windows\net8.0\win-arm\publish\
+ bin\arm\Windows\net6.0\windows-arm\publish\
FileSystem
- net8.0
+ net6.0
win-arm
True
True
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM64.pubxml b/HorseIsleServer/HISPCli/Properties/PublishProfiles/WinARM64.pubxml
similarity index 82%
rename from HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM64.pubxml
rename to HorseIsleServer/HISPCli/Properties/PublishProfiles/WinARM64.pubxml
index 10dfe10..32dcdcb 100644
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM64.pubxml
+++ b/HorseIsleServer/HISPCli/Properties/PublishProfiles/WinARM64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Windows
ARM64
- bin\arm64\Windows\net8.0\win-arm64\publish\
+ bin\arm64\Windows\net6.0\windows-arm64\publish\
FileSystem
- net8.0
+ net6.0
win-arm64
True
True
diff --git a/HorseIsleServer/HISPCli/Properties/Resources.Designer.cs b/HorseIsleServer/HISPCli/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..aecea91
--- /dev/null
+++ b/HorseIsleServer/HISPCli/Properties/Resources.Designer.cs
@@ -0,0 +1,118 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace HISP.Properties {
+ using System;
+
+
+ ///
+ /// A strongly-typed resource public class, for looking up localized strings, etc.
+ ///
+ // This public class was auto-generated by the StronglyTypedResourceBuilder
+ // public class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources() {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this public class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HISP.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource public class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to <cross-domain-policy>
+ /// <allow-access-from domain="*" to-ports="12321" secure="false"/>
+ ///</cross-domain-policy>.
+ ///
+ internal static string DefaultCrossDomain {
+ get {
+ return ResourceManager.GetString("DefaultCrossDomain", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to # HorseIsleServer Default Configuration File
+ ///
+ ///# Ip address the server will bind to (default: 0.0.0.0 ALL INTERFACES)
+ ///ip=0.0.0.0
+ ///# Port the server will bind to (default: 12321)
+ ///port=12321
+ ///
+ ///# MariaDB Database
+ ///db_ip=127.0.0.1
+ ///db_name=beta
+ ///db_username=root
+ ///db_password=test123
+ ///db_port=3306
+ ///
+ ///# Map Data
+ ///map=HI1.MAP
+ ///
+ ///# JSON Format Data
+ ///
+ ///gamedata=gamedata.json
+ ///
+ ///# Cross-Domain Policy File
+ ///crossdomain=CrossDomainPolicy.xml
+ ///
+ ///# Red Text Stating "Todays Note:"
+ ///motd=April 11, 2020. New breed, C [rest of string was truncated]";.
+ ///
+ internal static string DefaultServerProperties {
+ get {
+ return ResourceManager.GetString("DefaultServerProperties", resourceCulture);
+ }
+ }
+
+ ///
+ /// UNKNOWN COMMIT HASH
+ ///
+ internal static string GitCommit {
+ get {
+ return ResourceManager.GetString("GitCommit", resourceCulture);
+ }
+ }
+
+ }
+}
diff --git a/HorseIsleServer/HISPd/Properties/Resources.resx b/HorseIsleServer/HISPCli/Properties/Resources.resx
old mode 100755
new mode 100644
similarity index 91%
rename from HorseIsleServer/HISPd/Properties/Resources.resx
rename to HorseIsleServer/HISPCli/Properties/Resources.resx
index 852a652..1af7de1
--- a/HorseIsleServer/HISPd/Properties/Resources.resx
+++ b/HorseIsleServer/HISPCli/Properties/Resources.resx
@@ -1,124 +1,120 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- ..\Resources\HISP.service;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/launchSettings.json b/HorseIsleServer/HISPCli/Properties/launchSettings.json
old mode 100755
new mode 100644
similarity index 100%
rename from HorseIsleServer/HISPd/Properties/launchSettings.json
rename to HorseIsleServer/HISPCli/Properties/launchSettings.json
diff --git a/HorseIsleServer/HISPd/icon.ico b/HorseIsleServer/HISPCli/icon.ico
old mode 100755
new mode 100644
similarity index 100%
rename from HorseIsleServer/HISPd/icon.ico
rename to HorseIsleServer/HISPCli/icon.ico
diff --git a/HorseIsleServer/HISPd/Program.cs b/HorseIsleServer/HISPd/Program.cs
deleted file mode 100755
index 2f5ca20..0000000
--- a/HorseIsleServer/HISPd/Program.cs
+++ /dev/null
@@ -1,197 +0,0 @@
-using HISP.Cli.Properties;
-using HISP.Server;
-using System;
-using System.IO;
-using System.Threading;
-
-namespace HISP.Cli
-{
- public static class Program
- {
- private static StreamWriter sw = null;
- private static FileStream fs = null;
- private static string logFile;
- private static EventWaitHandle shutdownHandle = null;
-
- public static bool ShuttingDown = false;
- public static string BaseDir;
- public static string LogFile
- {
- get
- {
- return logFile;
- }
- set
- {
- logFile = value;
- if(sw != null)
- {
- sw.Flush();
- sw.Dispose();
- sw = null;
- }
- if(fs != null)
- {
- fs.Flush();
- fs.Dispose();
- fs = null;
- }
-
- fs = File.OpenWrite(logFile);
- sw = new StreamWriter(fs);
- }
- }
-
- public static void OnShutdown()
- {
- try
- {
- if (sw != null)
- {
- sw.Flush();
- sw.Close();
- sw.Dispose();
- sw = null;
- }
-
- }
- catch (Exception) { };
-
- try
- {
- if (fs != null)
- {
- fs.Flush();
- fs.Close();
- fs.Dispose();
- fs = null;
- }
- }
- catch (Exception) { };
-
-
- if(shutdownHandle != null)
- shutdownHandle.Set();
- }
-
- private static string formatMessage(string type, string text, bool console)
- {
-#if OS_WINDOWS
- string newline = "\r\n";
-#else
- string newline = "\n";
-#endif
-
- string msg = DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss") + ": [" + type + "] ";
- if (console && text.Length > (Console.WindowWidth - msg.Length) - newline.Length)
- text = text.Substring(0, (Console.WindowWidth - msg.Length) - newline.Length);
-
- return msg + text + newline;
- }
-
- public static void LogToFile(bool error, string type,string text)
- {
- sw.WriteLine(formatMessage(type, text, false));
- if (error)
- sw.Flush();
- }
- public static void LogStdout(bool error, string type, string text)
- {
- if (type == "CRASH")
- LogToFile(error, type, text);
- try
- {
- if (error)
- Console.Error.WriteAsync(formatMessage(type, text, true));
- else
- Console.Out.WriteAsync(formatMessage(type, text, true));
-
- }
- catch (Exception) { };
- }
-
- public static void Main(string[] args)
- {
- AppDomain.CurrentDomain.ProcessExit += ProcessQuitHandler;
-
- string baseDir = Directory.GetCurrentDirectory();
- Logger.SetCallback(LogStdout);
- Entry.SetShutdownCallback(OnShutdown);
-
- string hispConfVar = Environment.GetEnvironmentVariable("HISP_CONF_FILE");
- string hispLogVar = Environment.GetEnvironmentVariable("HISP_LOG_FILE");
- string hispBaseDir = Environment.GetEnvironmentVariable("HISP_BASE_DIR");
-
- foreach (string arg in args)
- {
- switch (arg)
- {
- case "--install-service":
-#if OS_LINUX
- File.WriteAllBytes("/etc/systemd/system/HISP.service", Resources.HISPService);
- LogStdout(false, "INFO", "Crreated Service! enable it with \"sudo systemctl enable HISP\"");
-#else
- LogStdout(true, "ERROR", "Installing as a service unsupported on this platform");
-#endif
- break;
- default:
- if (arg.Contains("="))
- {
- string[] argu = arg.Split("=");
- if (argu.Length >= 2)
- {
- switch (argu[0])
- {
- case "--config-file":
- ConfigReader.ConfigurationFileName = argu[1];
- break;
- case "--log-to-file":
- LogFile = argu[1];
- Logger.SetCallback(LogToFile);
- break;
- case "--base-directory":
- baseDir = argu[1];
- Directory.SetCurrentDirectory(baseDir);
- break;
- default:
- continue;
- }
- }
- }
- break;
- }
- }
-
- if (hispConfVar != null)
- {
- ConfigReader.ConfigurationFileName = hispConfVar;
- }
-
- if (hispLogVar != null)
- {
- LogFile = hispLogVar;
- Logger.SetCallback(LogToFile);
- }
- else
- {
- LogFile = Path.Combine(baseDir, "crash.log");
- }
-
- if (hispBaseDir != null)
- {
- baseDir = hispBaseDir;
- Directory.SetCurrentDirectory(baseDir);
- }
-
- Entry.Start();
-
- shutdownHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
- shutdownHandle.WaitOne();
- }
-
- private static void ProcessQuitHandler(object sender, EventArgs e)
- {
- GameServer.ShutdownServer("HISPd process quitting.");
- }
- }
-}
diff --git a/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs b/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs
deleted file mode 100755
index a40e782..0000000
--- a/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("HISPd")]
-[assembly: AssemblyDescription("Server Emulator for \"Horse Isle\"")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Li")]
-[assembly: AssemblyProduct("HISP")]
-[assembly: AssemblyCopyright("Public Domain � 2022")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("57264c6b-1461-41d6-9304-3890cf6c8390")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.8.73.0")]
-[assembly: AssemblyFileVersion("1.8.73.0")]
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM64.pubxml
deleted file mode 100755
index e9b3839..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM64.pubxml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- Android
- ARM64
- bin\arm64\Android\net8.0\android-arm64\publish\
- FileSystem
- net8.0
- android-arm64
- True
- True
- True
- True
- True
- OS_ANDROID;ARCH_ARM64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/Linux64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/Linux64.pubxml
deleted file mode 100755
index acb8a96..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/Linux64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Linux
- x64
- bin\x64\Linux\net8.0\linux-x64\publish\
- FileSystem
- net8.0
- linux-x64
- True
- True
- True
- True
- OS_LINUX;ARCH_X86_64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM.pubxml
deleted file mode 100755
index fdccff1..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Linux
- ARM
- bin\ARM\Linux\net8.0\linux-arm\publish\
- FileSystem
- net8.0
- linux-arm
- True
- True
- True
- True
- OS_LINUX;ARCH_ARM
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/OsxARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/OsxARM64.pubxml
deleted file mode 100755
index 6d6a41d..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/OsxARM64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- MacOS
- ARM64
- bin\arm64\MacOS\net8.0\osx-arm64\publish\
- FileSystem
- net8.0
- osx-arm64
- True
- True
- True
- True
- OS_MACOS;ARCH_ARM64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM.pubxml
deleted file mode 100755
index f6cc04e..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Windows
- ARM
- bin\arm\Windows\net8.0\win-arm\publish\
- FileSystem
- net8.0
- win-arm
- True
- True
- True
- True
- OS_WINDOWS;ARCH_ARM
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM64.pubxml
deleted file mode 100755
index 10dfe10..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Windows
- ARM64
- bin\arm64\Windows\net8.0\win-arm64\publish\
- FileSystem
- net8.0
- win-arm64
- True
- True
- True
- True
- OS_WINDOWS;ARCH_ARM64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM.pubxml
deleted file mode 100755
index 077cfed..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- iOS
- ARM
- bin\arm\iOS\net8.0\ios-arm\publish\
- FileSystem
- net8.0
- ios-arm
- True
- False
- False
- True
- OS_IOS;ARCH_ARM
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM64.pubxml
deleted file mode 100755
index ec7144e..0000000
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- iOS
- ARM64
- bin\arm64\iOS\net8.0\ios-arm64\publish\
- FileSystem
- net8.0
- ios-arm64
- True
- False
- False
- True
- OS_IOS;ARCH_ARM64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/Resources.Designer.cs b/HorseIsleServer/HISPd/Properties/Resources.Designer.cs
deleted file mode 100755
index 7f3c72b..0000000
--- a/HorseIsleServer/HISPd/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace HISP.Cli.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- public class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HISP.Cli.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized resource of type System.Byte[].
- ///
- public static byte[] HISPService {
- get {
- object obj = ResourceManager.GetObject("HISPService", resourceCulture);
- return ((byte[])(obj));
- }
- }
- }
-}
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/conffiles b/HorseIsleServer/HISPd/Resources/DEBIAN/conffiles
deleted file mode 100755
index 5ecd5c1..0000000
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/conffiles
+++ /dev/null
@@ -1,2 +0,0 @@
-/etc/hisp/server.properties
-/etc/hisp/CrossDomainPolicy.xml
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/control b/HorseIsleServer/HISPd/Resources/DEBIAN/control
deleted file mode 100755
index 1350d9e..0000000
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/control
+++ /dev/null
@@ -1,7 +0,0 @@
-Package: hisp
-Version: 1.8.73
-Depends: coreutils,systemd,mariadb-server,libsqlite3-dev,zlib1g-dev,libicu-dev,libkrb5-dev
-Maintainer: Li
-Homepage: https://islehorse.com
-Architecture: amd64
-Description: Open Source Implementation of the server for flash game "Horse Isle".
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/copyright b/HorseIsleServer/HISPd/Resources/DEBIAN/copyright
deleted file mode 100755
index 241d8f9..0000000
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/copyright
+++ /dev/null
@@ -1,4 +0,0 @@
-== Silica's Public Domain License ==
-
-All source code and binaries, for the HISP Software are entered into the Public Domain.
-However the software is provided "AS-IS" without any warrenty and i shall take no liability for anything that may happen by using this software.
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/postinst b/HorseIsleServer/HISPd/Resources/DEBIAN/postinst
deleted file mode 100755
index cb2151d..0000000
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/postinst
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-useradd -r horseisle
-mkdir -p /etc/hisp
-mkdir -p /var/log/hisp
-chown -R horseisle:horseisle /etc/hisp
-chown -R horseisle:horseisle /var/log/hisp
-systemctl enable HISP.service
-systemctl start HISP
-
-echo "Make sure to edit /etc/hisp/server.properties!"
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/postrm b/HorseIsleServer/HISPd/Resources/DEBIAN/postrm
deleted file mode 100755
index 1a24852..0000000
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/postrm
+++ /dev/null
@@ -1 +0,0 @@
-#!/bin/sh
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/prerm b/HorseIsleServer/HISPd/Resources/DEBIAN/prerm
deleted file mode 100755
index f425856..0000000
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/prerm
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-systemctl stop HISP
-systemctl disable HISP
-userdel horseisle
diff --git a/HorseIsleServer/HISPd/Resources/HISP.service b/HorseIsleServer/HISPd/Resources/HISP.service
deleted file mode 100755
index 2292353..0000000
--- a/HorseIsleServer/HISPd/Resources/HISP.service
+++ /dev/null
@@ -1,32 +0,0 @@
-[Unit]
-Description=HISP (Horse Isle Server Program)
-
-After=syslog.target
-After=network.target
-
-Wants=mariadb.service
-After=mariadb.service
-
-
-[Service]
-Type=simple
-
-# Disable access to features HISP doesnt need
-# (For security ...)
-ProtectSystem=full
-PrivateDevices=true
-
-StandardError=journal+console
-StandardOutput=journal+console
-
-User=horseisle
-Group=horseisle
-
-WorkingDirectory=/etc/hisp
-ExecStart=/usr/bin/HISPd
-
-Environment=USER=horseisle HOME=/etc/hisp HISP_BASE_DIR=/etc/hisp HISP_CONF_FILE=/etc/hisp/server.properties HISP_LOG_FILE=/var/log/hisp/hisp.log
-
-[Install]
-WantedBy=multi-user.target
-Alias=hisp.service
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/HISPtests.csproj b/HorseIsleServer/HISPtests/HISPtests.csproj
deleted file mode 100644
index 5c326c3..0000000
--- a/HorseIsleServer/HISPtests/HISPtests.csproj
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
- Exe
- HISP.Tests
- 10.0
- x64;x86;ARM;ARM64;AnyCPU
- Debug;Windows;Linux;MacOS;Android;iOS
-
-
-
-
-
-
- Resources.resx
- True
- True
-
-
-
-
- Resources.Designer.cs
- PublicResXFileCodeGenerator
-
-
-
- false
- false
-
-
- net8.0
- false
- true
- icon.ico
- HISP.Tests.Program
- OnBuildSuccess
- embedded
- False
- none
- False
- Public Domain, 2022
- https://islehorse.com
- https://github.com/islehorse/HISP
- git
- 3
- 1701;1702;2026;IL2026
-
-
-
- partial
- false
- true
-
-
-
- win-x86
- true
- x86
- x86
- OS_WINDOWS;ARCH_X86
- none
-
-
- win-x64
- true
- x64
- x64
- OS_WINDOWS;ARCH_X86_64
- none
-
-
- win-arm
- true
- ARM
- OS_WINDOWS;ARCH_ARM
- none
-
-
- win-arm64
- true
- ARM64
- OS_WINDOWS;ARCH_ARM64
- none
-
-
-
-
- android-arm
- true
- ARM
- OS_ANDROID;ARCH_ARM
- 3
-
- none
-
-
- android-arm64
- true
- ARM64
- OS_ANDROID;ARCH_ARM64
- none
-
-
-
- linux-x64
- true
- x64
- OS_LINUX;ARCH_X86_64
- none
-
-
- linux-arm
- ARM
- true
- OS_LINUX;ARCH_ARM
- none
-
-
- linux-arm64
- ARM64
- true
- OS_LINUX;ARCH_ARM64
- none
-
-
-
- osx-x64
- true
- x64
- OS_MACOS;ARCH_X86_64
- none
-
-
- osx-arm64
- true
- OS_MACOS;ARCH_ARM64
- none
-
-
-
- ios-arm
- true
- ARM
- OS_IOS;ARCH_ARM
- none
-
-
- ios-arm64
- true
- ARM64
- OS_IOS;ARCH_ARM64
- none
-
-
-
- win-x86;win-x64;win-arm;win-arm64;linux-x64;linux-arm;linux-arm64;osx-x64;osx-arm64
- True
- OS_ALL;ARCH_ANYCPU
-
-
-
-
- False
- DEBUG;TRACE;OS_DEBUG
- full
-
-
-
-
-
diff --git a/HorseIsleServer/HISPtests/Program.cs b/HorseIsleServer/HISPtests/Program.cs
deleted file mode 100644
index 8a11d3d..0000000
--- a/HorseIsleServer/HISPtests/Program.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using HISP.Server;
-using HISP.Tests.UnitTests;
-using System;
-using System.Threading.Tasks;
-
-namespace HISP.Tests
-{
- public static class Program
- {
-
- public static async Task Main(string[] args)
- {
- ServerStartTest.RunServerStartTest();
- AuthenticationTest.RunAuthenticationTest();
- await UserTest.RunUserTest();
- PacketTest.RunPacketTest();
- }
- }
-
-}
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/AndroidARM.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/AndroidARM.pubxml
deleted file mode 100644
index 4c08f3e..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/AndroidARM.pubxml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- Android
- ARM
- bin\arm\Android\net8.0\android-arm\publish\
- FileSystem
- net8.0
- android-arm
- True
- True
- True
- True
- True
- OS_ANDROID;ARCH_ARM
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/AndroidARM64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/AndroidARM64.pubxml
deleted file mode 100644
index e9b3839..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/AndroidARM64.pubxml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- Android
- ARM64
- bin\arm64\Android\net8.0\android-arm64\publish\
- FileSystem
- net8.0
- android-arm64
- True
- True
- True
- True
- True
- OS_ANDROID;ARCH_ARM64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/LinuxARM.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/LinuxARM.pubxml
deleted file mode 100644
index fdccff1..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/LinuxARM.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Linux
- ARM
- bin\ARM\Linux\net8.0\linux-arm\publish\
- FileSystem
- net8.0
- linux-arm
- True
- True
- True
- True
- OS_LINUX;ARCH_ARM
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/LinuxARM64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/LinuxARM64.pubxml
deleted file mode 100644
index f387011..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/LinuxARM64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Linux
- ARM64
- bin\ARM64\Linux\net8.0\linux-arm64\publish\
- FileSystem
- net8.0
- linux-arm64
- True
- True
- True
- True
- OS_LINUX;ARCH_ARM64
-
-
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Osx64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/Osx64.pubxml
deleted file mode 100644
index f6e810f..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Osx64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- MacOS
- x64
- bin\x64\MacOS\net8.0\osx-x64\publish\
- FileSystem
- net8.0
- osx-x64
- True
- True
- True
- True
- OS_MACOS;ARCH_X86_64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/OsxARM64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/OsxARM64.pubxml
deleted file mode 100644
index 6d6a41d..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/OsxARM64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- MacOS
- ARM64
- bin\arm64\MacOS\net8.0\osx-arm64\publish\
- FileSystem
- net8.0
- osx-arm64
- True
- True
- True
- True
- OS_MACOS;ARCH_ARM64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/iOSARM.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/iOSARM.pubxml
deleted file mode 100644
index 077cfed..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/iOSARM.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- iOS
- ARM
- bin\arm\iOS\net8.0\ios-arm\publish\
- FileSystem
- net8.0
- ios-arm
- True
- False
- False
- True
- OS_IOS;ARCH_ARM
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/iOSARM64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/iOSARM64.pubxml
deleted file mode 100644
index ec7144e..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/iOSARM64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- iOS
- ARM64
- bin\arm64\iOS\net8.0\ios-arm64\publish\
- FileSystem
- net8.0
- ios-arm64
- True
- False
- False
- True
- OS_IOS;ARCH_ARM64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/Resources.Designer.cs b/HorseIsleServer/HISPtests/Properties/Resources.Designer.cs
deleted file mode 100644
index c28d931..0000000
--- a/HorseIsleServer/HISPtests/Properties/Resources.Designer.cs
+++ /dev/null
@@ -1,74 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace HISP.Tests.Properties {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- public class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HISP.Tests.Properties.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to {
- /// "2PlayerClose": "UFgA",
- /// "BirdMap_OutsideMapTop": "dgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ [rest of string was truncated]";.
- ///
- public static string PacketTestDataSet {
- get {
- return ResourceManager.GetString("PacketTestDataSet", resourceCulture);
- }
- }
- }
-}
diff --git a/HorseIsleServer/HISPtests/Resources/PacketTestDataSet.json b/HorseIsleServer/HISPtests/Resources/PacketTestDataSet.json
deleted file mode 100644
index 56aea31..0000000
--- a/HorseIsleServer/HISPtests/Resources/PacketTestDataSet.json
+++ /dev/null
@@ -1,256 +0,0 @@
-{
- "2PlayerClose": "UFg=",
- "BirdMap_OutsideMapTop": "dgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "BirdMap_OutsideMapBottom": "dgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEGAQIBCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAREBEQEGAQoBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBDwERARABBgEKAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQESARoBEAEPAQYBCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBASABFgEaAQ4BEAEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBHwEhARMBDgEQAQYBCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEqAR8BFgEaAQ8BEQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBASMBIQEhARMBDwEOAQYBCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBJgEqASEBFgEaAQ4BEAEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEuASMBIQEhARMBEAEQAQYBCgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAS8BJgEqAR4BFgEaAREBEQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBOgEuASMBHwEgARMBDgEOAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEzAS4BJgEqASABEwEQAQ8BAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBATMBMAExASMBIQETAQ8BEAEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBMwEwLDEBIwEgARMBEAEQAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE2ATorMS4jASABEwEPARABAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAT8UMwEvHCMgHwETAREBEAEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "BirdMap_InsideMap": "dhkBIQEtASIBIgEiASIBIgEiASIBIgEqASABHgEtASIBKSAvATABPQE5ATMBMAEjASEBIAEhAR8BIQEgAR8BHgElATABNQEzAS8BIwEhARcBGwEOAQ8BAwEBAQEBAQEBAQEBHgEtASkBMQEwHDABMQEuAS8BLwExASYBIgEiASkhMQEwAT0BMgE5AUABMwEuASMBIQEhASEBHwEhAR4BHwEfASUBPQE5ATMBLgEjASABEwEOAREBEAEDAQEBAQEBAQEBAQEiASkBMAE9ATIBMgEyATIBMgEyAToBMAEvAS4BLwE9ATIBOQFAAUEBQb5nMwEwASMBIQEfAR8BHwEgASEBHgEtASkBNQE3ATsBLgEjASEBEwEOAREBBwELAQEBAQEBAQEBAQEuATABPQE5AT8BPwE/AUEBPwE/ATYBMgEyATIBMgE5AT8BQAE+AUC+aD8BMwEvASMBHwEfASABHgEfASABIAElAS4BPAE7AS8BJwErAR4BEwEQARABAwEBAQEBAQEBAQEBAQE9ATIBOQFBAa0soiiiLaK+Z6IBqio/AT8BQAE/AT4BQQGtAaIBqr5jPgE/ATMBMAEjASEBIAEhAR8BHwEeAR4BJQEwAT0BOgEuASMBHwEXARsBEAEQAQMBAQEBAQEBAQEBAQEBOQFBAT4BrSypLa4Bsb5friywAaYpogGiKqIBor5for5koimpAa4BpgGqAT8BMwEwASMBHgEhAR8BIQEeASEBLQEpATABPAE7AS4BIwEfARMBEQEOAREBAwEBAQEBAQEBAQEBAQE/Aa0BogGpAbEor75lsQGxvl+uvmCvvmKuAa++X6++cK++ca6+crG+c7C+ZbEBr75mo75hPwEzATABJgEqAR4BHwEgAS0BIgEpATABPQE6ATABJx8rASABEwEOAQ8BBwELAQEBAQEBAQEBAQEBAaK+ZKkBsQGwLq8Brr5nsAGvvnCuvnGxvnOvL64BrjCwLLAqr75tsb5urgGwK6a+YqoBNgE6ATEBJgEiASIBIgEpATEBPQE6ATwBOwEnASsBHwEXARsBDwEQAQMBAQEBAQEBAQEBAQEBAQGxvmGvAa6+Zq8BsSixAbAosCqvKLABrymvAa8BsL5isb5prwGxAbC+YK8qrwGjAUEBNgE6AS4BMQEuATABMQEvATwBOwEwAScBKwEgARcBGwEQARABEAEDAQEBAQEBAQEBAQEBAQEBr75frgGvvnCuvnGwvnGxvnOuLrABsQGuAbG+ZrEBrwGxAbAsr75lri6wAbEBrgGmAaq+Y0ABNgEyATIBOgExATABLwEwATABJyErASEBFwEbAQ8BDwEQAQcBCwEBAQEBAQEBAQEBAQEBAbG+crG+crG+c7G+gbG+Zq6+ZLEor75friiuvnCxvnGwvnGxvnOwvmOxvmCuvn6wvn+xAbEBsQGwKKYBqr5oPwE/ATcBOwEwHTABLwEnASQBKwEhARcBGwEOAREBDgEHAQsBAQEBAQEBAQEBAQEBAQEBAa4BriyvAa4BsAGwAbEBrwGvvnCvvnOxvmawAbEtrgGvvo6xvoauvoewvo6wvnCwvnOvAacBq75kPwE3ATsBLgEnASQBJAErAR4BHgEXARsBEQEOARABBwELAQEBAQEBAQEBAQEBAQEBAQEBAbC+Y7C+YbEBr75+sb5/sL5wrr5xAb50r75zriywvmGuAbG+Y7C+ZbEBrgGwAbG+ba++ZKcBpL5iqwFAATcBOwEvAScBKwEgAR4BHgEXARQBGwEPAQ4BEAEHAQsBAQEBAQEBAQEBAQEBAQEBAQEBAQGoAa6+YK++ja6+hq++h6++jbC+cK6+ca++c7EBsAGvLa6+drG+d7ABryixAbG+a6cBq75rQQFAATcBOwEvAScaKwEhARcBFAEUARsBDgEQAREBEQEHAQsBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAawqqAGuAa8prwGxKq8BsQGxAa8Bsb5krgGvvmSuvmCuKq8BsAGnAau+Zj4BNwE0ATsBMQEnASsBIAEXARsBEQEPAQ8BEAEQAQ4BBwELAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAUEBrAGovmavAa8BrgGvvmaxAbG+ZLC+YK8Br75nsS2vAbABrr5fpwGrvmo+ATcBOwExATEBJwErAR8BFwEbAQ8BEQEOAQ8BEAEHAQQBCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBATgBPwGsvmGovmevAa8BrymuAbEBr75mrwGvAbABr75qr75ir75gowFAATcBOwExAScBJAErAR4BFwEbAQ8BEQEPAQcBBAEEAQsBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBPAE4AUABrL5jpL5opAGkvmWkvmSoAbG+X66+Ya8rsQGuKq8Bp75fqwE+ATMBLgEnASsBIQEhARcBGwEPAREBEQEHAQsBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBMRo8ATgBQAFBAT4BPgE+AawBpAGkKaQBpAGoAa4ro75jQQE3ATsBLwEjAR4BFwEUARsBDwEQAREBBwELAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBKAExATwBNAE0ATQBNAE4AT4BPwFAAT8BPgGsLaS+ZassQAEzAS4BJxsrAR4BEwEPAQ8BEQERAQcBCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBLAEoATABMAEvATEBLwE8ATQBNAE0ATQBOAE/AUEBPwFAATMBMAEjASEBFwEbAQ8BEQEPAQcBCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBDQEfASwBJAEkASQBJAEoAS4BMAExGi4BMQE8ATQBOAFBATcBOwExASMBHwETAQ4BEQEPAQcBCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBDQEJARgBIQEgAR4BHgEgASwBJAEkASQBJAEoAS4BLgE8ATgBMwExAScBKwEeARMBDwEQAQcBCwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFAQ8BHAEUARQBFAEUARgBHgEeAR8BHgEgASwBJAEoIS8BPAE7AS8BIwEeARcBGwEPAQ8BAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQUBDgEPAQ4BETIRARABHAEUARQBGAEhASABHgEgASwBKAEwATABMAEjKSEBEwEQARABDgEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBQEOAREBEQEPAREBEAEPAQ8BDgEcARQBGAEgASABHgElAS8BLgEwASMBHgETARABEQEHAQsBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBDQEJARABBAEEAQQBCAERAQ8BDwEQARABDwEcARgBHwEeASwBKAEvAS4BIwEeARMBDgERAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFAREBDgEBAQEBAQEMAQQBBAEEAQgBDgERARABHAEYAR8BIAElATABLgEjASABEwEOAQ4BAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQUBDgERAQEBAQEBAQEBAQEBAQEBBQEPAQ4BEAERARUBHgEeASUBLgEwASMBIAETARABDgEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBQEQARABAQEBAQEBAQEBAQEBAQEFARABDgEPAQ8BFQEfAR4BJQExAS8BIwEgARMBDwEOAQMBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBDQEJAQ8BDgEBAQEBAQEBAQEBAQEBAQUBDgEPAQ8BEAEVAR4BIAElAS8BMS4jASEBEwEPAREBAwEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEFAQ4BDgERAQ==",
- "BrickPoetList": "UEF8MXxBfDIwM3wxNTh8XkF8MnxIT1JTRXwyODN8MTU3fF5BfDN8VEhFfDM0N3w3fF5BfDR8TUFORXwxOTV8Nzl8XkF8NXxBTkR8MjE4fDV8XkF8NnxBTnwyODN8MnxeQXw3fFRBSUx8MTczfDYwfF5BfDh8UE9OWXw2MHwxNjZ8XkF8OXxNQVJFfDc0fDV8XkF8MTB8U1RBTExJT058Mjc0fDIzN3xeQXwxMXxHRUxESU5HfDg4fDEyM3xeQXwxMnxHUk9PTXwzMzl8NnxeQXwxM3xTUEVFRFl8MzZ8MTk2fF5BfDE0fEFSRXw1fDEwOHxeQXwxNXxJfDEyOXwyMDN8XkF8MTZ8QU18MjExfDI3NHxeQXwxN3xaSVBQWXwzMjV8MTUxfF5BfDE4fElTTEFORHwxNzR8MjMwfF5BfDE5fFdBVEVSfDEzMnw1MXxeQXwyMHxCUk9XTnwxNzl8MzR8XkF8MjF8QkxBQ0t8MTQ5fDF8XkF8MjJ8RlVaWll8MTl8MTI2fF5BfDIzfEZVTktZfDc1fDN8XkF8MjR8R0FMTE9QfDEyMnwyMjF8XkF8MjV8SlVNUHwyNzd8MjI1fF5BfDI2fFlPVXwyNTh8NTB8XkF8Mjd8V0V8MzI1fDc1fF5BfDI4fEJMQUNLfDczfDY4fF5BfDI5fFJJREV8MTA3fDE2OHxeQXwzMHxQUkVUVFl8MTg3fDEzN3xeQXwzMXxQVVJQTEV8MjI1fDIzN3xeQXwzMnxDVVJMWXw1NHwxOTN8XkF8MzR8V0lMRHwxMjZ8MjU5fF5BfDM1fEJVVHwzNDd8MjM0fF5BfDM2fE9SfDR8MTIzfF5BfDM3fElUfDI1MHwyMTl8XkF8Mzh8VEFNRXwxNjF8Nzd8XkF8Mzl8VEhFWXwxNjR8MTMwfF5BfDQwfEdPfDE3fDEzMXxeQXw0MXxIQVBQWXw2MXwxMDl8XkF8NDJ8QU1BWklOR3wwfDI3OHxeQXw0M3xDSEVTVE5VVHwyMDl8ODh8XkF8NDR8R1JBWXwyMzh8OTR8XkF8NDV8UklERVN8ODB8MTU2fF5BfDQ2fE1ZfDE1MnwxNTF8XkF8NDd8U0FEfDExfDk5fF5BfDQ4fElTfDI0N3w1MHxeQXw0OXxSRUlOfDY4fDE3OHxeQXw1MHxJTkd8MzIwfDMxfF5BfDUxfFN8MTk4fDEwMHxeQXw1MnxTfDE0M3wyNTF8XkF8NTN8TVVTVHwzNTV8Nzh8XkF8NTR8V0lUSE9VVHwyNzd8MjEyfF5BfDU1fEJFTElFVkV8NTZ8MjAwfF5BfDU2fEJFQVVUSUZVTHwxOHwxOTl8XkF8NTd8U1VOU0VUfDJ8ODh8XkF8NTh8QlJFRVpFfDE5MHwyMDZ8XkF8NTl8TUFHTklGSUNFTlR8MjV8MTU0fF5BfDYwfEZBTlRBU1RJQ3w1M3w1OHxeQXw2MXxVTlJJVkFMRUR8MjN8MTc4fF5BfDYyfEFEVkVOVFVSRXwzMzZ8MTU3fF5BfDYzfE1ZfDE3MXw1N3xeQXw2NHxZT1V8NzJ8MTU3fF5BfDY1fE9VUnwyNzB8MjA3fF5BfDY2fElTfDE4OHwyMjh8XkF8Njd8VEhFfDEwNXwxNjJ8XkF8Njh8R1JFQVRFU1R8NXwxOTV8XkF8Njl8TE9WRXwxODR8MTk1fF5BfDcwfFdPTkRFUkZVTHw5NXwxNTl8XkF8NzF8VkVSWXwyMTF8NzF8XkF8NzJ8SVN8MjY3fDE0NHxeQXw3M3xIRXwxNzd8ODN8XkF8NzR8U0hFfDI2NHwxMDl8XkF8NzV8QkVZT05EfDE0NXw1OXxeQXw3NnxBR0FJTlNUfDMxMXw2M3xeQXw3N3xCRXw1NXwyNDZ8XkF8Nzh8SU5UT3wzNDJ8Mjl8XkF8Nzl8QU5EfDMzM3wyMTR8XkF8ODB8QUxTT3wyOTN8MjIyfF5BfDgxfEJFQ0FVU0V8MzIwfDIzNnxeQXw4MnxGT1JFVkVSfDI4NXwxOTF8XkF8ODN8QUxXQVlTfDI3MHwxOTh8XkF8Mjg1fFRPfDQ0fDQwfF5BfDI4NnxCRXwxNzR8MjcyfF5BfDI4N3xJTlRPfDE3fDE4fF5BfDI4OHxUSFJPVUdIfDI4fDIzNnxeQXwyODl8QVJPVU5EfDMyNnw1fF5BfDQ1NXxTSUxWRVJ8MzV8MTkyfF4=",
- "BrickPoetMove": "UFV8MzB8MTg3fDEzN3xe",
- "ChatBottomLeft": "FBRUcmFucyBSaWdodHM=",
- "ChatBottomRight": "FBVBcmUgSHVtYW4=",
- "ChatDmRight": "FBZSaWdodHM=",
- "ChatMotd": "fkVuYmllcyBhcmUgdmFsaWQh",
- "DrawingRoomUpdate": "UEM5NTl8NjReNjd8NjZeNzN8NjheNzl8NjleODc=",
- "DressupRoomPeiceLoad": "UA==",
- "DressupRoomPeiceMove": "UDExfDE0LjR8Mi40fF4=",
- "ForwardedSwfModule_516152": "UFFhUg==",
- "ForwardedSwfModule_AF8D91C8": "UK+Nkcg=",
- "KeepAlive": "fA==",
- "KickMessage": "gFRyYW5zcGhvYmlh",
- "LoginSuccess": "fxQ=",
- "LoginFail": "fxU=",
- "LoginFail_ReasonBanned": "fxZZb3UgYXJlIGJhbm5lZC4=",
- "CreateMeta": "Hl5SMVRyYW5zIFJpZ2h0c15YXlo=",
- "MoneyPlayerCountAndMail": "ezEwMHwxfDQwfA==",
- "Movement_DirectionUpMoveUpInsideMapWalk": "FRU0FhYUFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveDownInsideMapWalk": "FRVLFj0UFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveLeftInsideMapWalk": "FRciFi8UFCIrFa8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionUpMoveRightInsideMapWalk": "FRRDFEgUFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveUpdateInsideMapWalk": "FRUqFikUFBUeFQ==",
- "Movement_DirectionUpMoveEscapeInsideMapWalk": "FRUnFD4UFBssFQEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionDownMoveUpInsideMapWalk": "FRU0FhYWFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveDownInsideMapWalk": "FRVLFj0WFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveLeftInsideMapWalk": "FRciFi8WFCIrFa8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionDownMoveRightInsideMapWalk": "FRRDFEgWFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveUpdateInsideMapWalk": "FRUqFikWFBUeFQ==",
- "Movement_DirectionDownMoveEscapeInsideMapWalk": "FRUnFD4WFBssFQEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionLeftMoveUpInsideMapWalk": "FRU0FhYXFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveDownInsideMapWalk": "FRVLFj0XFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveLeftInsideMapWalk": "FRciFi8XFCIrFa8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionLeftMoveRightInsideMapWalk": "FRRDFEgXFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveUpdateInsideMapWalk": "FRUqFikXFBUeFQ==",
- "Movement_DirectionLeftMoveEscapeInsideMapWalk": "FRUnFD4XFBssFQEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionRightMoveUpInsideMapWalk": "FRU0FhYVFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveDownInsideMapWalk": "FRVLFj0VFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveLeftInsideMapWalk": "FRciFi8VFCIrFa8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionRightMoveRightInsideMapWalk": "FRRDFEgVFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveUpdateInsideMapWalk": "FRUqFikVFBUeFQ==",
- "Movement_DirectionRightMoveEscapeInsideMapWalk": "FRUnFD4VFBssFQEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionTeleportMoveUpInsideMapWalk": "FRU0FhYYFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveDownInsideMapWalk": "FRVLFj0YFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveLeftInsideMapWalk": "FRciFi8YFCIrFa8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionTeleportMoveRightInsideMapWalk": "FRRDFEgYFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveUpdateInsideMapWalk": "FRUqFikYFBUeFQ==",
- "Movement_DirectionTeleportMoveEscapeInsideMapWalk": "FRUnFD4YFBssFQEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionNoneMoveUpInsideMapWalk": "FRU0FhYeFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveDownInsideMapWalk": "FRVLFj0eFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveLeftInsideMapWalk": "FRciFi8eFCIrFa8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionNoneMoveRightInsideMapWalk": "FRRDFEgeFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveUpdateInsideMapWalk": "FRUqFikeFBUeFQ==",
- "Movement_DirectionNoneMoveEscapeInsideMapWalk": "FRUnFD4eFBssFQEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionUpMoveUpInsideMap": "FRU0FhYUFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveDownInsideMap": "FRVLFj0UFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveLeftInsideMap": "FRciFi8UFCIrFK8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionUpMoveRightInsideMap": "FRRDFEgUFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveUpdateInsideMap": "FRUqFikUFBUeFA==",
- "Movement_DirectionUpMoveEscapeInsideMap": "FRUnFD4UFBssFAEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionDownMoveUpInsideMap": "FRU0FhYWFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveDownInsideMap": "FRVLFj0WFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveLeftInsideMap": "FRciFi8WFCIrFK8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionDownMoveRightInsideMap": "FRRDFEgWFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveUpdateInsideMap": "FRUqFikWFBUeFA==",
- "Movement_DirectionDownMoveEscapeInsideMap": "FRUnFD4WFBssFAEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionLeftMoveUpInsideMap": "FRU0FhYXFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveDownInsideMap": "FRVLFj0XFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveLeftInsideMap": "FRciFi8XFCIrFK8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionLeftMoveRightInsideMap": "FRRDFEgXFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveUpdateInsideMap": "FRUqFikXFBUeFA==",
- "Movement_DirectionLeftMoveEscapeInsideMap": "FRUnFD4XFBssFAEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionRightMoveUpInsideMap": "FRU0FhYVFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveDownInsideMap": "FRVLFj0VFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveLeftInsideMap": "FRciFi8VFCIrFK8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionRightMoveRightInsideMap": "FRRDFEgVFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveUpdateInsideMap": "FRUqFikVFBUeFA==",
- "Movement_DirectionRightMoveEscapeInsideMap": "FRUnFD4VFBssFAEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionTeleportMoveUpInsideMap": "FRU0FhYYFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveDownInsideMap": "FRVLFj0YFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveLeftInsideMap": "FRciFi8YFCIrFK8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionTeleportMoveRightInsideMap": "FRRDFEgYFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveUpdateInsideMap": "FRUqFikYFBUeFA==",
- "Movement_DirectionTeleportMoveEscapeInsideMap": "FRUnFD4YFBssFAEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionNoneMoveUpInsideMap": "FRU0FhYeFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveDownInsideMap": "FRVLFj0eFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveLeftInsideMap": "FRciFi8eFCIrFK8tpwGrAUABPgE/AT4BQAE/AUABsb5zr75fpwGjAaMBowGjAaMBowGjAQ==",
- "Movement_DirectionNoneMoveRightInsideMap": "FRRDFEgeFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveUpdateInsideMap": "FRUqFikeFBUeFA==",
- "Movement_DirectionNoneMoveEscapeInsideMap": "FRUnFD4eFBssFAEBAQEBAQEBAQEBAQwBCAEOARABFQEgAR8BAQEBAQEBAQEBAQEBAQEMAQgBDwEVAR4BIQEBAQEBAQEBAQEBAQEBAQEBBQERARwBGAEhAQEBAQEBAQEBAQEBAQEBAQEMAQgBEQEcARgBAQEBAQEBAQEBAQEBAQEBAQEBDAEIARABHAEBAQEBAQEBAQEBAQEBAQEBAQEBAQwBCAERAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEMAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionUpMoveUpOutsideMapTopWalk": "FRPsEhAUFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveDownOutsideMapTopWalk": "FRPVEukUFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveLeftOutsideMapTopWalk": "FRH+EvcUFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveRightOutsideMapTopWalk": "FRTdFN4UFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveUpdateOutsideMapTopWalk": "FRP2Ev0UFBUeFQ==",
- "Movement_DirectionUpMoveEscapeOutsideMapTopWalk": "FRP5FOgUFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionDownMoveUpOutsideMapTopWalk": "FRPsEhAWFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveDownOutsideMapTopWalk": "FRPVEukWFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveLeftOutsideMapTopWalk": "FRH+EvcWFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveRightOutsideMapTopWalk": "FRTdFN4WFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveUpdateOutsideMapTopWalk": "FRP2Ev0WFBUeFQ==",
- "Movement_DirectionDownMoveEscapeOutsideMapTopWalk": "FRP5FOgWFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionLeftMoveUpOutsideMapTopWalk": "FRPsEhAXFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveDownOutsideMapTopWalk": "FRPVEukXFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveLeftOutsideMapTopWalk": "FRH+EvcXFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveRightOutsideMapTopWalk": "FRTdFN4XFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveUpdateOutsideMapTopWalk": "FRP2Ev0XFBUeFQ==",
- "Movement_DirectionLeftMoveEscapeOutsideMapTopWalk": "FRP5FOgXFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionRightMoveUpOutsideMapTopWalk": "FRPsEhAVFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveDownOutsideMapTopWalk": "FRPVEukVFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveLeftOutsideMapTopWalk": "FRH+EvcVFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveRightOutsideMapTopWalk": "FRTdFN4VFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveUpdateOutsideMapTopWalk": "FRP2Ev0VFBUeFQ==",
- "Movement_DirectionRightMoveEscapeOutsideMapTopWalk": "FRP5FOgVFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionTeleportMoveUpOutsideMapTopWalk": "FRPsEhAYFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveDownOutsideMapTopWalk": "FRPVEukYFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveLeftOutsideMapTopWalk": "FRH+EvcYFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveRightOutsideMapTopWalk": "FRTdFN4YFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveUpdateOutsideMapTopWalk": "FRP2Ev0YFBUeFQ==",
- "Movement_DirectionTeleportMoveEscapeOutsideMapTopWalk": "FRP5FOgYFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionNoneMoveUpOutsideMapTopWalk": "FRPsEhAeFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveDownOutsideMapTopWalk": "FRPVEukeFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveLeftOutsideMapTopWalk": "FRH+EvceFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveRightOutsideMapTopWalk": "FRTdFN4eFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveUpdateOutsideMapTopWalk": "FRP2Ev0eFBUeFQ==",
- "Movement_DirectionNoneMoveEscapeOutsideMapTopWalk": "FRP5FOgeFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionUpMoveUpOutsideMapTop": "FRPsEhAUFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveDownOutsideMapTop": "FRPVEukUFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveLeftOutsideMapTop": "FRH+EvcUFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveRightOutsideMapTop": "FRTdFN4UFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveUpdateOutsideMapTop": "FRP2Ev0UFBUeFA==",
- "Movement_DirectionUpMoveEscapeOutsideMapTop": "FRP5FOgUFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionDownMoveUpOutsideMapTop": "FRPsEhAWFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveDownOutsideMapTop": "FRPVEukWFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveLeftOutsideMapTop": "FRH+EvcWFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveRightOutsideMapTop": "FRTdFN4WFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveUpdateOutsideMapTop": "FRP2Ev0WFBUeFA==",
- "Movement_DirectionDownMoveEscapeOutsideMapTop": "FRP5FOgWFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionLeftMoveUpOutsideMapTop": "FRPsEhAXFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveDownOutsideMapTop": "FRPVEukXFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveLeftOutsideMapTop": "FRH+EvcXFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveRightOutsideMapTop": "FRTdFN4XFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveUpdateOutsideMapTop": "FRP2Ev0XFBUeFA==",
- "Movement_DirectionLeftMoveEscapeOutsideMapTop": "FRP5FOgXFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionRightMoveUpOutsideMapTop": "FRPsEhAVFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveDownOutsideMapTop": "FRPVEukVFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveLeftOutsideMapTop": "FRH+EvcVFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveRightOutsideMapTop": "FRTdFN4VFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveUpdateOutsideMapTop": "FRP2Ev0VFBUeFA==",
- "Movement_DirectionRightMoveEscapeOutsideMapTop": "FRP5FOgVFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionTeleportMoveUpOutsideMapTop": "FRPsEhAYFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveDownOutsideMapTop": "FRPVEukYFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveLeftOutsideMapTop": "FRH+EvcYFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveRightOutsideMapTop": "FRTdFN4YFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveUpdateOutsideMapTop": "FRP2Ev0YFBUeFA==",
- "Movement_DirectionTeleportMoveEscapeOutsideMapTop": "FRP5FOgYFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionNoneMoveUpOutsideMapTop": "FRPsEhAeFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveDownOutsideMapTop": "FRPVEukeFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveLeftOutsideMapTop": "FRH+EvceFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveRightOutsideMapTop": "FRTdFN4eFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveUpdateOutsideMapTop": "FRP2Ev0eFBUeFA==",
- "Movement_DirectionNoneMoveEscapeOutsideMapTop": "FRP5FOgeFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionUpMoveUpOutsideMapBottomWalk": "FSUcHUoUFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveDownOutsideMapBottomWalk": "FSUzHjEUFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveLeftOutsideMapBottomWalk": "FSZKHiMUFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveRightOutsideMapBottomWalk": "FSQrHDwUFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveUpdateOutsideMapBottomWalk": "FSRSHh0UFBUeFQ==",
- "Movement_DirectionUpMoveEscapeOutsideMapBottomWalk": "FSRPHDIUFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionDownMoveUpOutsideMapBottomWalk": "FSUcHUoWFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveDownOutsideMapBottomWalk": "FSUzHjEWFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveLeftOutsideMapBottomWalk": "FSZKHiMWFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveRightOutsideMapBottomWalk": "FSQrHDwWFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveUpdateOutsideMapBottomWalk": "FSRSHh0WFBUeFQ==",
- "Movement_DirectionDownMoveEscapeOutsideMapBottomWalk": "FSRPHDIWFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionLeftMoveUpOutsideMapBottomWalk": "FSUcHUoXFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveDownOutsideMapBottomWalk": "FSUzHjEXFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveLeftOutsideMapBottomWalk": "FSZKHiMXFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveRightOutsideMapBottomWalk": "FSQrHDwXFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveUpdateOutsideMapBottomWalk": "FSRSHh0XFBUeFQ==",
- "Movement_DirectionLeftMoveEscapeOutsideMapBottomWalk": "FSRPHDIXFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionRightMoveUpOutsideMapBottomWalk": "FSUcHUoVFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveDownOutsideMapBottomWalk": "FSUzHjEVFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveLeftOutsideMapBottomWalk": "FSZKHiMVFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveRightOutsideMapBottomWalk": "FSQrHDwVFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveUpdateOutsideMapBottomWalk": "FSRSHh0VFBUeFQ==",
- "Movement_DirectionRightMoveEscapeOutsideMapBottomWalk": "FSRPHDIVFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionTeleportMoveUpOutsideMapBottomWalk": "FSUcHUoYFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveDownOutsideMapBottomWalk": "FSUzHjEYFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveLeftOutsideMapBottomWalk": "FSZKHiMYFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveRightOutsideMapBottomWalk": "FSQrHDwYFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveUpdateOutsideMapBottomWalk": "FSRSHh0YFBUeFQ==",
- "Movement_DirectionTeleportMoveEscapeOutsideMapBottomWalk": "FSRPHDIYFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionNoneMoveUpOutsideMapBottomWalk": "FSUcHUoeFB4oFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveDownOutsideMapBottomWalk": "FSUzHjEeFCApFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveLeftOutsideMapBottomWalk": "FSZKHiMeFCIrFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveRightOutsideMapBottomWalk": "FSQrHDweFCQqFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveUpdateOutsideMapBottomWalk": "FSRSHh0eFBUeFQ==",
- "Movement_DirectionNoneMoveEscapeOutsideMapBottomWalk": "FSRPHDIeFBssFQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionUpMoveUpOutsideMapBottom": "FSUcHUoUFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveDownOutsideMapBottom": "FSUzHjEUFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveLeftOutsideMapBottom": "FSZKHiMUFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveRightOutsideMapBottom": "FSQrHDwUFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionUpMoveUpdateOutsideMapBottom": "FSRSHh0UFBUeFA==",
- "Movement_DirectionUpMoveEscapeOutsideMapBottom": "FSRPHDIUFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionDownMoveUpOutsideMapBottom": "FSUcHUoWFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveDownOutsideMapBottom": "FSUzHjEWFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveLeftOutsideMapBottom": "FSZKHiMWFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveRightOutsideMapBottom": "FSQrHDwWFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionDownMoveUpdateOutsideMapBottom": "FSRSHh0WFBUeFA==",
- "Movement_DirectionDownMoveEscapeOutsideMapBottom": "FSRPHDIWFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionLeftMoveUpOutsideMapBottom": "FSUcHUoXFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveDownOutsideMapBottom": "FSUzHjEXFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveLeftOutsideMapBottom": "FSZKHiMXFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveRightOutsideMapBottom": "FSQrHDwXFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionLeftMoveUpdateOutsideMapBottom": "FSRSHh0XFBUeFA==",
- "Movement_DirectionLeftMoveEscapeOutsideMapBottom": "FSRPHDIXFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionRightMoveUpOutsideMapBottom": "FSUcHUoVFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveDownOutsideMapBottom": "FSUzHjEVFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveLeftOutsideMapBottom": "FSZKHiMVFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveRightOutsideMapBottom": "FSQrHDwVFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionRightMoveUpdateOutsideMapBottom": "FSRSHh0VFBUeFA==",
- "Movement_DirectionRightMoveEscapeOutsideMapBottom": "FSRPHDIVFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionTeleportMoveUpOutsideMapBottom": "FSUcHUoYFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveDownOutsideMapBottom": "FSUzHjEYFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveLeftOutsideMapBottom": "FSZKHiMYFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveRightOutsideMapBottom": "FSQrHDwYFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionTeleportMoveUpdateOutsideMapBottom": "FSRSHh0YFBUeFA==",
- "Movement_DirectionTeleportMoveEscapeOutsideMapBottom": "FSRPHDIYFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "Movement_DirectionNoneMoveUpOutsideMapBottom": "FSUcHUoeFB4oFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveDownOutsideMapBottom": "FSUzHjEeFCApFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveLeftOutsideMapBottom": "FSZKHiMeFCIrFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveRightOutsideMapBottom": "FSQrHDweFCQqFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE=",
- "Movement_DirectionNoneMoveUpdateOutsideMapBottom": "FSRSHh0eFBUeFA==",
- "Movement_DirectionNoneMoveEscapeOutsideMapBottom": "FSRPHDIeFBssFAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB",
- "PlaceData": "eV5UFysXLRYbFh1Ucm9waWN0b24gVmlsbGFnZV5UGEMYRhU5FTtSYWlueSBNZWFkb3dzXlQdLR0xFkAWQ0NhbnRsZSBNZWFkb3dzXlQYFhgbGUIZRlRhaWwgRW5kXlQXLxcyFiwWNFRyb3BpY3Rvbl5UGTwZRBZFFkhXaGlza2VydG9uXlQaQhpJGk4aUlNhbmR5IE1lYWRvd3NeVBssGzEZLxk2U3Vuc2hpbmUgTWVhZG93c15UHEYcThczFzhUcmVldG9uXlQhTyIXFSwVMUNyb3NzYm9uZXMgQ2FtcF5UGTkZRRZIFkxXaGlza2VydG9uXlQaRxpQFj4WRFNvYXJpbmcgTWVhZG93c15UGjcaQRYlFitXaW5ndG9uXlQYRBhLFk0XFkNhcnJvdHRvbl5UIDwgRhkiGSlBc2h0b25eVB06HUYUShRQQ3J5c3RhbHRvbl5UHUcdUhYdFiRXaXRoZXJ0b25eVBw2HEMaShpQU2FudG9uXlQaPxpIFhsWJFdpbmd0b25eVCI5IkUZHhklTW9sdGVuIE1lYWRvd3NeVBsYGycUMhQ4Q2hpbGx0b25eVCI9IksUSBRPU2t1bGx0b25eVBk7GUUVKhU0SW5rdG9uXlQXLRc7FjUWPVRyb3BpY3Rvbl5UGUcaFBdGF09GbGlwcGVydG9uXlQcKBw3GT8ZR0hvcnNlc2hvZSBWaWxsYWdlXlQdGB0kGEEYTFNoZWxsdG9uXlQaORpGGRYZJEFwcGxldG9uXlQcPRxNFzkXRVRyZWV0b25eVBsgGy8aMRo+SG90dG9uXlQbUhwnFj0WS0VhcnRvbl5BGygbKxZOFk9QYXN0IEl0cyBQcmltZSBGb3Jlc3ReQRhKGEwWSBZLVmVsdmV0ZWVuIEZvcmVzdF5BGE0YTxZLFk5WZWx2ZXRlZW4gRm9yZXN0XkEbKRstFkwWTlBhc3QgSXRzIFByaW1lIEZvcmVzdF5BGyYbKhZQFlJQYXN0IEl0cyBQcmltZSBGb3Jlc3ReQR43HjsWGxYdTXlzdGljIEZvcmVzdF5BGzEbNBo3GjpUb2FzdHkgRm9yZXN0XkEcThxQF0gXTU11enpsZSBGb3Jlc3ReQRlKGVAXPxdBRmxpcHBlciBGb3Jlc3ReQRsZGx0aOBo7U3dlbHRyeSBGb3Jlc3ReQSI6IjwVFRUcUGF0Y2ggRm9yZXN0XkEZNxk5GDAYN0ZsaXBwZXIgRm9yZXN0XkEZRBlIFzgXPEJsb3dob2xlIEZvcmVzdF5BGDsYPxcxFzVCdW5ueSBIb3AgRm9yZXN0XkEZRBlMF0IXREZsaXBwZXIgRm9yZXN0XkEbFRsZFx8XI1NlYSBvZiBTYW5kXkEdIR0iFzsXTE11enpsZSBGb3Jlc3ReQRlEGU0WRBZGQ2F0bmlwIEZvcmVzdF5BGzEbNxozGjZUb2FzdHkgRm9yZXN0XkEcFBwWGSkZM1RhaWwgRm9yZXN0XkEaFxobFSYVK0Zsb3dlciBGb3Jlc3ReQRkVGRkXTxgUVGh1bXBlciBGb3Jlc3ReQRlAGUUVHRUhU25vd3kgQWNyZXNeQR4eHiMWNxY7TXlzdGljIEZvcmVzdF5BGjMaOhkkGSdNb29uIEZvcmVzdF5BGDwYPxdBF0hCdW5ueSBIb3AgRm9yZXN0XkEZPxlBGCIYLUZsaXBwZXIgRm9yZXN0XkEZORlEFlIXFENhdG5pcCBGb3Jlc3ReQRg/GEsZIBkiRGV3IEZvcmVzdF5BGj8aSxkxGTNNb29uIEZvcmVzdF5BGUoZTxUsFTFQYWludGVkIEJheV5BGTcZPBUjFShTYW5keSBQYWxtc15BHRQdGBhMGFNTaGVsbCBGb3Jlc3ReQRlEGUgXURgYRmxpcHBlciBGb3Jlc3ReQR0nHSsYQxhKU2hlbGwgRm9yZXN0XkEZFBkbGEIYRldpbGRmbG93ZXIgRm9yZXN0XkEZThoUGSkZLkxvc3QgRm9yZXN0XkEdKB0rF0EXS011enpsZSBGb3Jlc3ReQRk1GToWTRZTQ2F0bmlwIEZvcmVzdF5BGCkYLhg/GEVEYWlzeSBGb3Jlc3ReQRxEHEwXRxdLTXV6emxlIEZvcmVzdF5BGEAYRBZEFkxWZWx2ZXRlZW4gRm9yZXN0XkEYPRhBFkoWUlZlbHZldGVlbiBGb3Jlc3ReQRlAGUsWThZRQ2F0bmlwIEZvcmVzdF5BGzcbORkuGT9UYWlsIEZvcmVzdF5BGTMZOBZFFkxDYXRuaXAgRm9yZXN0XkEdJR0sGEoYT1NoZWxsIEZvcmVzdF5BG0cbShgVGCFNYW5lIEZvcmVzdF5BGUEZSxY/FkNDYXRuaXAgRm9yZXN0XkEcLRwyGTYZPkhvb2YgRm9yZXN0XkEcMhxAFzQXN1dlc3QgVHJlZXRvbiBGb3Jlc3ReQRpRGxwaMxo3U3dlbHRyeSBGb3Jlc3ReQRwXHCAWNhY7RWFydGlwIEZvcmVzdF5BGjwaRRgzGDhMaXR0bGUgQXBwbGV0b24gRm9yZXN0XkEaPhpGGC0YM0xpdHRsZSBBcHBsZXRvbiBGb3Jlc3ReQRo5GkEXPBdCUHJpY2tseSBTcGl0XkEaMho2GRgZJE1vb24gRm9yZXN0XkEcORxFFyMXJ1dlc3QgVHJlZXRvbiBGb3Jlc3ReQRlGGU0WRxZOQ2F0bmlwIEZvcmVzdF5BGDoYPxc2F0BCdW5ueSBIb3AgRm9yZXN0XkEZShoUGS8ZNExvc3QgRm9yZXN0XkEiNCI5FFIVHVBhdGNoIEZvcmVzdF5BGTkaFRlAGUJMb3N0IEZvcmVzdF5BHSMdJxc+F0xNdXp6bGUgRm9yZXN0XkEYQhhJFkMWS1ZlbHZldGVlbiBGb3Jlc3ReQR43HkEWHhYkTXlzdGljIEZvcmVzdF5BGj8bFBktGTBNb29uIEZvcmVzdF5BGE8ZHBg7GEBXaWxkZmxvd2VyIEZvcmVzdF5BGzMbORkzGT5UYWlsIEZvcmVzdF5BHiQeLhY0FjtNeXN0aWMgRm9yZXN0XkEaMho8GE8ZFk1vb24gRm9yZXN0XkEaOBpBGDkYQUxpdHRsZSBBcHBsZXRvbiBGb3Jlc3ReQR87H0QUPRRFRnJpZ2lkIE1lYWRvd3NeQRslGzcXORc9TWFuZSBGb3Jlc3ReQRsqGzUYKxgySG9yc2UgSXNsZSBFcXVlc3RyaWFuIFBhcmteQRo1Gj4YQhhLTGl0dGxlIEFwcGxldG9uIEZvcmVzdF5BGzIbORkfGStUYWlsIEZvcmVzdF5BHVIeJxZRFxVNeXN0aWMgRm9yZXN0XkEYOxhDFlMXHlZlbHZldGVlbiBGb3Jlc3ReQRk/GhYZOxk/TG9zdCBGb3Jlc3ReQRw0HEcXLhczV2VzdCBUcmVldG9uIEZvcmVzdF5BHBYcJhcqFzBCaWcgRm9yZXN0XkEZQhoWGTUZOkxvc3QgRm9yZXN0XkEiKyIzFFAVHVBhdGNoIEZvcmVzdF5BGx4bJRdAF09NYW5lIEZvcmVzdF5BHVMeSBY8Fj5NeXN0aWMgRm9yZXN0XkEZNBlAFjsWRENhdG5pcCBGb3Jlc3ReQRtQHBQZHhk6VGFpbCBGb3Jlc3ReQRw0HEsXKBctV2VzdCBUcmVldG9uIEZvcmVzdF5BHRsdIBc3F05NdXp6bGUgRm9yZXN0XkEeNB5FFiUWLE15c3RpYyBGb3Jlc3ReQRwxHDsXOBdEV2VzdCBUcmVldG9uIEZvcmVzdF5BGUYZUhUqFTRUaGUgU2hvcmVzIG9mIFBhaW50ZWQgQmF5XkEdGB0qGE8ZFlNoZWxsIEZvcmVzdF5BGTsZQxc3F0dGbGlwcGVyIEZvcmVzdF5BGTkZPxgiGDhGbGlwcGVyIEZvcmVzdF5BG0AbRhdMGCNNYW5lIEZvcmVzdF5BHBQcKRciFylCaWcgRm9yZXN0XkEbTBtQGRgZPVRhaWwgRm9yZXN0XkEbURwhFzEXO0JpZyBGb3Jlc3ReQRhTGRoXNxdOVGh1bXBlciBGb3Jlc3ReQRtPHCsWURcXQmlnIEZvcmVzdF5BHUceMhZMFlBNeXN0aWMgRm9yZXN0XkEaNBsXGScZLE1vb24gRm9yZXN0XkEdUB4bFU4WHkJyaWRsZSBGb3Jlc3ReQRk9GUQXSBgiRmxpcHBlciBGb3Jlc3ReQRxRHRoXMhdNTXV6emxlIEZvcmVzdF5BGDUYPxhEGR1EZXcgRm9yZXN0XkEbKhs/GBYYIk1hbmUgRm9yZXN0XkEaSBsaGRUZJk1vb24gRm9yZXN0XkEeLx5IFi0WO015c3RpYyBGb3Jlc3ReQRhAGE0YQxkfRGV3IEZvcmVzdF5BG0ocNxcYFyFCaWcgRm9yZXN0XkEYMhkUGEoZF0RldyBGb3Jlc3ReQRsmGz8XPhgVTWFuZSBGb3Jlc3ReQRs5G0wZFRlAVGFpbCBGb3Jlc3ReQR02HkoWPxZLTXlzdGljIEZvcmVzdF5JHTUdOBgxGDMwVGhlIE5ldmVyZW5kaW5nIElzbGVzXkkeMB4zGBcYGTBTb2xvbW9uIElzbGVeSR06HT8XLRcxMFBhbG0gSXNsZV5JHj8eRBhEGEowTm9uZXN1Y2ggSXNsZV5JHU4eFBkwGTU2SXNsZSBvZiBIYXJkbHleSR0/HUQYKBgvMFRoZSBOZXZlcmVuZGluZyBJc2xlc15JHSMdKRcWFxwwVGFsb24gSXNsZV5JHTsdQhg2GD0wVGhlIE5ldmVyZW5kaW5nIElzbGVzXkkeLh4zGRYZITBSb2NrIElzbGVeSR1OHhYYMBg3MFRoZSBOZXZlcmVuZGluZyBJc2xlc15JHU8eFxgiGCkwVGhlIE5ldmVyZW5kaW5nIElzbGVzXkkeOx5EGFMZGjBTcGlyaXQgSXNsZV5JHSMdLhk8GUI1UHV1aG9udWEgSXNsZV5JHTMdPRk4GUAwUGF0c3kgSXNsZV5JHTkdQxgZGCEwU3BpY2UgSXNsZV5JHi0eNRg4GEIzSGF2ZW4gSXNsZV5JGh8aJxsjGy4yVGhlIFNhbmQgSXNsZXNeSR4uHjYYQxhOM0hhbGYgSGF2ZW4gSXNsZV5JHjIePBcyFzswQ3JhenkgRWRkaWUncyBJc2xlXkkdUB4ZFyYXMDBBdHJvcG9zIElzbGVeSR0+HUgZNBk9MFBhdHN5IElzbGVeSRk4GUQaNho+MlRoZSBTYW5kIElzbGVzXkkdQR1MFzUXPjBNYXJlIElzbGVeSR1CHVAYPhhIM1RyYW5xdWlsaXR5IElzbGVeSR1RHhoYPxhPMFNlcmVuaXR5IElzbGVeSR1CHUsXHhcuMEFyZGVudCBJc2xlXkkdPx1NGSIZLTBEcmlsbCBJc2xlXkkeHx4tGDkYRDNIYXZlbiBJc2xlXkkeFR4lGigaMjBBZXNvcCBJc2xlXkkeRR5QGBwYKzBIb3R6ZXBsb3R6IElzbGVeSR4fHi0YRRhSM0hhdmVuIElzbGVeSRwVHCAVUhYkMFdlbGNvbWUgSXNsZV5JHSodOxcZFyUwU2hpbW1lciBJc2xlXkkdQR1OGEwZHDBMaWxhYyBJc2xlXkkeMh49GCAYNDBMb2NoIElzbGVeSRkwGUYaKxo1MlRoZSBTYW5kIElzbGVzXkkaQRsVFywXNzJNYW5lIElzbGVeSR41HkYXHhcrMFBhcmFkaXNlIElzbGVeSRo3GkcXOBdGMk1hbmUgSXNsZV5JGhUaHhsUGy0yVGhlIFNhbmQgSXNsZXNeSR5GHxUYMRhBMFRoZW9icm9tYSBJc2xlXkkeTh8mFCoUNDFJY2ljbGUgSXNsZV5JHUgeFxdIGBkwUXVpZXQgSXNsZV5JHlEfGhdJGCgwSG90emVwbG90eiBJc2xlXkkeLR5HF0sYFzBCb25lIElzbGVeSR4fHjIUSRUbMVNub3diYWxsIElzbGVeSRw2HEUULBRDMUNocmlzdG1hcyBJc2xlXkkbGxsyFkgXGDJNYW5lIElzbGVeSR4eHioXTxguMENyZXNjZW50IElzbGVeSR4VHi4ZFhklMFJvY2sgSXNsZV5JHUIdTxY5FxgwU2FkZGxlIElzbGVeSRROFSkWMBZANVJhaW4gSXNsZV5JHkIfGxctFz8wRWxkb3JhZG8gSXNsZV5JIiAiNxZDFxc3VGVwaHJhIElzbGVeSRlQGjkUJRQxMUdsYWNpZXIgSXNsZV5JIkwjJRdSGCc3U2NvcmlhIElzbGVeSRw4HE0UTRUmMUJlcmcgSXNsZV5JGkcbJhcZFysyTWFuZSBJc2xlXkkZTBohGDoZFTBUYWlsIElzbGVeSSMYIzIUMhRJM0hhdCBJc2xlXkkeIB4+FC0UQzFQb2xhciBJc2xlXkkfJh89GBoYOTBDYWJpbiBJc2xlXkkdLh1MGiwaRDJEdXN0IElzbGVeSR4bHjAaPhsiMlRvcnJpZCBJc2xlXkkeHB43FyoXSjBCb25lIElzbGVeSRgsGRUZRxodMFRhaWwgSXNsZV5JHkwfGxYkFyEwU2FkZGxlIElzbGVeSRUqFUUWKRZLNVZpbmUgSXNsZV5JIkQjMhQcFDEzSGF0IElzbGVeSR1QHiUWLBcdMFNhZGRsZSBJc2xlXkkZFhk0GTcaGjBUYWlsIElzbGVeSRwhHEMZKxlNMEhvb2YgSXNsZV5JF08YKxkxGh0wVGFpbCBJc2xlXkkfKiAiGDoYUDBDYWJpbiBJc2xlXkkZOBoUGkIbLjJUaGUgU2FuZCBJc2xlc15JHR0dQRYvFlIwU2FkZGxlIElzbGVeSRQfFEgUIhRCMFByaXNvbiBJc2xlXkkdNB4wGkYbHDJUb3JyaWQgSXNsZV5JIj4jJRccFz43TWFnbWEgSXNsZV5JIRQhPxQmFEUzVHJlYXN1cmUgSXNsZV5JHTgeIRVGFiswUmlkZXIgSXNsZV5JFEAVQRZMFyU1VmluZSBJc2xlXkkYTRk3GjYbHjJUaGUgU2FuZCBJc2xlc15JHSAeIBsdGzoyVG9ycmlkIElzbGVeSR8UH0IZURo+N1B1bWljZSBJc2xlXkkcOR0ZFTcWPTBIb3JuIElzbGVeSRksGiMVFhU/MEFydCBJc2xlXkkcQh03GDIZIDBUdXJ0bGUgSXNsZV5JGSIaFRYqFxwwQ2F0IElzbGVeSRk1GiUZFhlPMFRhaWwgSXNsZV5JHzchGBcbFzkwV2hvcmwgSXNsZV5JHz4gPBdJGDowQ2FiaW4gSXNsZV5JFC8VLhcmGBg1VmluZSBJc2xlXkkWUxdOGScaHTBTdGFyZmlzaCBJc2xlXkkVThY0FCcVPDVXZWIgSXNsZV5JIjojKRoWGxw3QmFzYWx0IElzbGVeSR4mHksVQhcbMFNhZGRsZSBJc2xlXkkcTR4eFDQVHTFJY2UgSXNsZV5JFR0VTRQ2FT81V2ViIElzbGVeSRpSG0oVIRYiMFJpbmcgSXNsZV5JGCMZJBg1GTU0Rmxvd2VyIElzbGVeSRg1GSAWPRgiMEhhcmUgSXNsZV5JGhcbGRVJFkwwQmlyZCBJc2xlXkkeIR9LFCwVFzFQb2xhciBJc2xlXkkhGyIsFy0YMzdJZ25lb3VzIElzbGVeSRhJGS8ZIhs+MlllbGxvdyBCcmljayBJc2xlXkkZLBosFyYYSDBEb2xwaGluIElzbGVeSRo+HDcUIhUZMVNub3cgSXNsZV5JISwjFxQ2FU4zUGlyYXRlIElzbGVeSR8xISAVMRcaMFdob3JsIElzbGVeSRU8FzoYHhk8NUp1bmdsZSBJc2xlXkkgFiMfGDIZPzdMYXZhIElzbGVeSRlOHSkaKhtBMkRlc2VydCBJc2xlXkkULxU7FSIZKzVEb2cgSXNsZV5JHz4iNhk/Gzc3TGF2YSBJc2xlXkkUGxdLGUEbLTZUaGUgQ2xvdWQgSXNsZXNeSRopHTQWLhlGMEhvcnNlIElzbGVeSRU8GRsUShgdNUp1bmdsZSBJc2xl",
- "PlayerInfoUpdateOrCreate": "FhUVNBcbFBQeTGk=",
- "PlayerLeave": "FhZMaQ==",
- "PlaySound": "I1BN",
- "ProfilePage": "GFRSQU5TIFJJR0hUUyBBUkUgSFVNQU4gUklHSFRT",
- "SecCode_AdminMod": "gVJzQ1VB",
- "SecCode_Admin": "gXVTRVVB",
- "SecCode_Mod": "gUMzM1VN",
- "SecCode_User": "gTNTNVVO",
- "SwfModule_Force": "KHRlc3Quc3dm",
- "SwfModule_Gentle": "KnRlc3Quc3dm",
- "SwfModule_Cutscene": "KXRlc3Quc3dm",
- "TileClickInfo": "d1RyYW5zIFJpZ2h0cyBBcmUgSHVtYW4gUmlnaHRz",
- "TileOverlayFlags": "dTEyMzEyMzEyMw==",
- "TimeAndWeatherUpdate": "ehQeFBgcMVNVTk5Z",
- "WeatherUpdate": "ehNDTE9VRA=="
-}
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/ResultLogger.cs b/HorseIsleServer/HISPtests/ResultLogger.cs
deleted file mode 100644
index 3dc1f1b..0000000
--- a/HorseIsleServer/HISPtests/ResultLogger.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace HISP.Tests
-{
- public class ResultLogger
- {
- public static void LogTestStatus(bool successful, string testname, string message)
- {
- if (successful)
- {
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.Out.Write("[ " + testname + " ] ");
-
- Console.ForegroundColor = ConsoleColor.Green;
- Console.Out.WriteLine("* " + message + " *");
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.Error.Write("[ " + testname + " ] ");
-
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Error.WriteLine("* " + message + " *");
- }
- }
-
- public static void LogTestResult(bool successful, string testname, string message, string expected)
- {
- if (successful)
- {
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.Out.Write("[ " + testname + " ] ");
-
- Console.ForegroundColor = ConsoleColor.Green;
- Console.Out.WriteLine("* " + message + " == " + expected + " *");
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.Error.Write("[ " + testname + " ] ");
-
- Console.ForegroundColor = ConsoleColor.Red;
- Console.Error.WriteLine("* " + message + " != " + expected + " *");
- }
- }
- }
-}
diff --git a/HorseIsleServer/HISPtests/UnitTests/AuthenticationTest.cs b/HorseIsleServer/HISPtests/UnitTests/AuthenticationTest.cs
deleted file mode 100644
index 9bbd4bc..0000000
--- a/HorseIsleServer/HISPtests/UnitTests/AuthenticationTest.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using HISP.Security;
-using HISP.Util;
-using System.Collections.Generic;
-
-namespace HISP.Tests.UnitTests
-{
- public class AuthenticationTest
- {
-
- private const string ALLOWED_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
- public static bool Test(string testName, object value, object valueComp)
- {
- bool result = value.Equals(valueComp);
- if (result)
- ResultLogger.LogTestStatus(true, "AUTH_TEST " + testName, "Success.");
- else
- ResultLogger.LogTestResult(false, "AUTH_TEST " + testName, value.ToString(), valueComp.ToString());
-
- return result;
- }
-
- public static bool RunAuthenticationTest()
- {
- List results = new List();
-
- // Test Login Encrypt/Decrypt
- for(int i = 0; i <= 100; i++)
- {
- string rngStr = Helper.RandomString(ALLOWED_CHARS);
- string cipherText = Authentication.EncryptLogin(rngStr);
- string plainText = Authentication.DecryptLogin(cipherText);
-
- results.Add(Test("LoginEncryptDecrypt" + i.ToString(), plainText, rngStr));
-
- }
-
-
- string username = Helper.RandomString(ALLOWED_CHARS);
- string password = Helper.RandomString(ALLOWED_CHARS);
-
- string wrongPassword = Helper.RandomString(ALLOWED_CHARS);
- string wrongUsername = Helper.RandomString(ALLOWED_CHARS);
-
- Authentication.CreateAccount(username, password, "DEMIGIRL", true, true);
-
- // Test Login function
- results.Add(Test("CorrectUsernameAndPassword", Authentication.CheckPassword(username, password), true));
- results.Add(Test("CorrectUsernameWrongPassword", Authentication.CheckPassword(username, wrongPassword), false));
- results.Add(Test("WrongPasswordAndUsername", Authentication.CheckPassword(wrongUsername, wrongPassword), false));
- results.Add(Test("WrongUsernameCorrectPassword", Authentication.CheckPassword(wrongUsername, password), false));
-
-
- foreach (bool result in results)
- if (!result)
- return false;
- return true;
- }
- }
-}
diff --git a/HorseIsleServer/HISPtests/UnitTests/PacketTest.cs b/HorseIsleServer/HISPtests/UnitTests/PacketTest.cs
deleted file mode 100644
index bd41a03..0000000
--- a/HorseIsleServer/HISPtests/UnitTests/PacketTest.cs
+++ /dev/null
@@ -1,416 +0,0 @@
-//#define GENERATE
-
-using HISP.Tests.Properties;
-using HISP.Game.SwfModules;
-using HISP.Game;
-using HISP.Server;
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.IO;
-
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-
-
-namespace HISP.Tests.UnitTests
-{
- public class PacketTest
- {
-
- private static Dictionary knownGoodPackets = new Dictionary();
-
- public static bool Test(string name, byte[] packet)
- {
- #if GENERATE
- knownGoodPackets.Add(name, Convert.ToBase64String(packet));
- return true;
- #else
- string goodPacketStr = null;
- knownGoodPackets.TryGetValue(name, out goodPacketStr);
- byte[] goodPacket = Convert.FromBase64String(goodPacketStr);
-
-
- if(!goodPacket.SequenceEqual(packet))
- {
- ResultLogger.LogTestResult(false, "PACKET_TEST "+name, BitConverter.ToString(packet).Replace("-", ""), goodPacket.ToString().Replace("-", ""));
- return false;
- }
- else
- {
- ResultLogger.LogTestStatus(true, "PACKET_TEST " + name, "Success.");
- return true;
- }
- #endif
- }
-
- public static bool RunPacketTest()
- {
- #if !GENERATE
- JObject jobj = JsonConvert.DeserializeObject(Resources.PacketTestDataSet) as JObject;
- knownGoodPackets = jobj.ToObject>();
- #endif
-
- List results = new List();
-
- results.Add(Test("2PlayerClose", PacketBuilder.Create2PlayerClose()));
-
- // Test Map
- results.Add(Test("BirdMap_OutsideMapTop", PacketBuilder.CreateBirdMap(-100, -800)));
- results.Add(Test("BirdMap_OutsideMapBottom", PacketBuilder.CreateBirdMap(Map.Height+100, Map.Width+600)));
- results.Add(Test("BirdMap_InsideMap", PacketBuilder.CreateBirdMap(100, 200)));
-
- // Test Brickpoet
- results.Add(Test("BrickPoetList", PacketBuilder.CreateBrickPoetList(Brickpoet.GetPoetryRoom(1))));
- results.Add(Test("BrickPoetMove", PacketBuilder.CreateBrickPoetMove(Brickpoet.GetPoetryPeice(Brickpoet.GetPoetryRoom(1), 30))));
-
- // Test Chat
- results.Add(Test("ChatBottomLeft", PacketBuilder.CreateChat("Trans Rights", PacketBuilder.CHAT_BOTTOM_LEFT)));
- results.Add(Test("ChatBottomRight", PacketBuilder.CreateChat("Are Human", PacketBuilder.CHAT_BOTTOM_RIGHT)));
- results.Add(Test("ChatDmRight", PacketBuilder.CreateChat("Rights", PacketBuilder.CHAT_DM_RIGHT)));
- results.Add(Test("ChatMotd", PacketBuilder.CreateMotd("Enbies are valid!")));
-
- // Test Drawing Room
- results.Add(Test("DrawingRoomUpdate", PacketBuilder.CreateDrawingUpdate("C959|64^67|66^73|68^79|69^87")));
-
- // Test Dressup Room
- results.Add(Test("DressupRoomPeiceLoad", PacketBuilder.CreateDressupRoomPeiceLoad(Dressup.GetDressupRoom(2).DressupPeices)));
- results.Add(Test("DressupRoomPeiceMove", PacketBuilder.CreateDressupRoomPeiceMove(11, 14.4, 2.4, true)));
-
- // Test SwfModule Forwarding
- results.Add(Test("ForwardedSwfModule_516152", PacketBuilder.CreateForwardedSwfModule(new byte[] { 0x51, 0x61, 0x52 })));
- results.Add(Test("ForwardedSwfModule_AF8D91C8", PacketBuilder.CreateForwardedSwfModule(new byte[] { 0xAF, 0x8D, 0x91, 0xC8 })));
-
- // Test KeepAlive
- results.Add(Test("KeepAlive", PacketBuilder.CreateKeepAlive()));
-
- // Test KickMessage
- results.Add(Test("KickMessage", PacketBuilder.CreateKickMessage("Transphobia")));
-
- // Test Login
- results.Add(Test("LoginSuccess", PacketBuilder.CreateLogin(true)));
- results.Add(Test("LoginFail", PacketBuilder.CreateLogin(false)));
- results.Add(Test("LoginFail_ReasonBanned", PacketBuilder.CreateLogin(false, "You are banned.")));
-
- // Test Meta
- results.Add(Test("CreateMeta", PacketBuilder.CreateMeta("^R1Trans Rights^X^Z")));
-
- // Test Money, PlayerCount, Mail
- results.Add(Test("MoneyPlayerCountAndMail", PacketBuilder.CreateMoneyPlayerCountAndMail(100, 1, 40)));
-
- // Test Movement
- results.Add(Test("Movement_DirectionUpMoveUpInsideMapWalk", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionUpMoveDownInsideMapWalk", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionUpMoveLeftInsideMapWalk", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionUpMoveRightInsideMapWalk", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionUpMoveUpdateInsideMapWalk", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionUpMoveEscapeInsideMapWalk", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionDownMoveUpInsideMapWalk", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionDownMoveDownInsideMapWalk", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionDownMoveLeftInsideMapWalk", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionDownMoveRightInsideMapWalk", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionDownMoveUpdateInsideMapWalk", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionDownMoveEscapeInsideMapWalk", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionLeftMoveUpInsideMapWalk", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionLeftMoveDownInsideMapWalk", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionLeftMoveLeftInsideMapWalk", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionLeftMoveRightInsideMapWalk", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionLeftMoveUpdateInsideMapWalk", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionLeftMoveEscapeInsideMapWalk", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionRightMoveUpInsideMapWalk", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionRightMoveDownInsideMapWalk", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionRightMoveLeftInsideMapWalk", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionRightMoveRightInsideMapWalk", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionRightMoveUpdateInsideMapWalk", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionRightMoveEscapeInsideMapWalk", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionTeleportMoveUpInsideMapWalk", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionTeleportMoveDownInsideMapWalk", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionTeleportMoveLeftInsideMapWalk", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionTeleportMoveRightInsideMapWalk", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionTeleportMoveUpdateInsideMapWalk", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionTeleportMoveEscapeInsideMapWalk", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionNoneMoveUpInsideMapWalk", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionNoneMoveDownInsideMapWalk", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionNoneMoveLeftInsideMapWalk", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionNoneMoveRightInsideMapWalk", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionNoneMoveUpdateInsideMapWalk", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionNoneMoveEscapeInsideMapWalk", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_ESCAPE, true)));
-
- // walk = false
-
- results.Add(Test("Movement_DirectionUpMoveUpInsideMap", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionUpMoveDownInsideMap", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionUpMoveLeftInsideMap", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionUpMoveRightInsideMap", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionUpMoveUpdateInsideMap", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionUpMoveEscapeInsideMap", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionDownMoveUpInsideMap", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionDownMoveDownInsideMap", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionDownMoveLeftInsideMap", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionDownMoveRightInsideMap", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionDownMoveUpdateInsideMap", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionDownMoveEscapeInsideMap", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionLeftMoveUpInsideMap", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionLeftMoveDownInsideMap", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionLeftMoveLeftInsideMap", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionLeftMoveRightInsideMap", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionLeftMoveUpdateInsideMap", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionLeftMoveEscapeInsideMap", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionRightMoveUpInsideMap", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionRightMoveDownInsideMap", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionRightMoveLeftInsideMap", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionRightMoveRightInsideMap", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionRightMoveUpdateInsideMap", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionRightMoveEscapeInsideMap", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionTeleportMoveUpInsideMap", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionTeleportMoveDownInsideMap", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionTeleportMoveLeftInsideMap", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionTeleportMoveRightInsideMap", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionTeleportMoveUpdateInsideMap", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionTeleportMoveEscapeInsideMap", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionNoneMoveUpInsideMap", PacketBuilder.CreateMovement(100, 131, 10, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionNoneMoveDownInsideMap", PacketBuilder.CreateMovement(123, 170, 12, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionNoneMoveLeftInsideMap", PacketBuilder.CreateMovement(210, 156, 14, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionNoneMoveRightInsideMap", PacketBuilder.CreateMovement(51, 53, 16, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionNoneMoveUpdateInsideMap", PacketBuilder.CreateMovement(90, 150, 1, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionNoneMoveEscapeInsideMap", PacketBuilder.CreateMovement(87, 43, 7, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_ESCAPE, false)));
-
- /*
- * Test Outside Map (From Top)
- */
-
- results.Add(Test("Movement_DirectionUpMoveUpOutsideMapTopWalk", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionUpMoveDownOutsideMapTopWalk", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionUpMoveLeftOutsideMapTopWalk", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionUpMoveRightOutsideMapTopWalk", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionUpMoveUpdateOutsideMapTopWalk", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionUpMoveEscapeOutsideMapTopWalk", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionDownMoveUpOutsideMapTopWalk", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionDownMoveDownOutsideMapTopWalk", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionDownMoveLeftOutsideMapTopWalk", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionDownMoveRightOutsideMapTopWalk", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionDownMoveUpdateOutsideMapTopWalk", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionDownMoveEscapeOutsideMapTopWalk", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionLeftMoveUpOutsideMapTopWalk", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionLeftMoveDownOutsideMapTopWalk", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionLeftMoveLeftOutsideMapTopWalk", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionLeftMoveRightOutsideMapTopWalk", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionLeftMoveUpdateOutsideMapTopWalk", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionLeftMoveEscapeOutsideMapTopWalk", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionRightMoveUpOutsideMapTopWalk", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionRightMoveDownOutsideMapTopWalk", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionRightMoveLeftOutsideMapTopWalk", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionRightMoveRightOutsideMapTopWalk", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionRightMoveUpdateOutsideMapTopWalk", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionRightMoveEscapeOutsideMapTopWalk", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionTeleportMoveUpOutsideMapTopWalk", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionTeleportMoveDownOutsideMapTopWalk", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionTeleportMoveLeftOutsideMapTopWalk", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionTeleportMoveRightOutsideMapTopWalk", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionTeleportMoveUpdateOutsideMapTopWalk", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionTeleportMoveEscapeOutsideMapTopWalk", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionNoneMoveUpOutsideMapTopWalk", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionNoneMoveDownOutsideMapTopWalk", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionNoneMoveLeftOutsideMapTopWalk", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionNoneMoveRightOutsideMapTopWalk", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionNoneMoveUpdateOutsideMapTopWalk", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionNoneMoveEscapeOutsideMapTopWalk", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_ESCAPE, true)));
-
- // walk = false
-
- results.Add(Test("Movement_DirectionUpMoveUpOutsideMapTop", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionUpMoveDownOutsideMapTop", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionUpMoveLeftOutsideMapTop", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionUpMoveRightOutsideMapTop", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionUpMoveUpdateOutsideMapTop", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionUpMoveEscapeOutsideMapTop", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionDownMoveUpOutsideMapTop", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionDownMoveDownOutsideMapTop", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionDownMoveLeftOutsideMapTop", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionDownMoveRightOutsideMapTop", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionDownMoveUpdateOutsideMapTop", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionDownMoveEscapeOutsideMapTop", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionLeftMoveUpOutsideMapTop", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionLeftMoveDownOutsideMapTop", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionLeftMoveLeftOutsideMapTop", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionLeftMoveRightOutsideMapTop", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionLeftMoveUpdateOutsideMapTop", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionLeftMoveEscapeOutsideMapTop", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionRightMoveUpOutsideMapTop", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionRightMoveDownOutsideMapTop", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionRightMoveLeftOutsideMapTop", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionRightMoveRightOutsideMapTop", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionRightMoveUpdateOutsideMapTop", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionRightMoveEscapeOutsideMapTop", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionTeleportMoveUpOutsideMapTop", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionTeleportMoveDownOutsideMapTop", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionTeleportMoveLeftOutsideMapTop", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionTeleportMoveRightOutsideMapTop", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionTeleportMoveUpdateOutsideMapTop", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionTeleportMoveEscapeOutsideMapTop", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionNoneMoveUpOutsideMapTop", PacketBuilder.CreateMovement(-100, -131, 10, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionNoneMoveDownOutsideMapTop", PacketBuilder.CreateMovement(-123, -170, 12, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionNoneMoveLeftOutsideMapTop", PacketBuilder.CreateMovement(-210, -156, 14, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionNoneMoveRightOutsideMapTop", PacketBuilder.CreateMovement(-51, -53, 16, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionNoneMoveUpdateOutsideMapTop", PacketBuilder.CreateMovement(-90, -150, 1, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionNoneMoveEscapeOutsideMapTop", PacketBuilder.CreateMovement(-87, -43, 7, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_ESCAPE, false)));
-
- /*
- * Test Outside Map (From Bottom)
- */
-
- results.Add(Test("Movement_DirectionUpMoveUpOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionUpMoveDownOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionUpMoveLeftOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionUpMoveRightOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionUpMoveUpdateOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionUpMoveEscapeOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionDownMoveUpOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionDownMoveDownOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionDownMoveLeftOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionDownMoveRightOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionDownMoveUpdateOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionDownMoveEscapeOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionLeftMoveUpOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionLeftMoveDownOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionLeftMoveLeftOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionLeftMoveRightOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionLeftMoveUpdateOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionLeftMoveEscapeOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionRightMoveUpOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionRightMoveDownOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionRightMoveLeftOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionRightMoveRightOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionRightMoveUpdateOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionRightMoveEscapeOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionTeleportMoveUpOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionTeleportMoveDownOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionTeleportMoveLeftOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionTeleportMoveRightOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionTeleportMoveUpdateOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionTeleportMoveEscapeOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_ESCAPE, true)));
-
- results.Add(Test("Movement_DirectionNoneMoveUpOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UP, true)));
- results.Add(Test("Movement_DirectionNoneMoveDownOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_DOWN, true)));
- results.Add(Test("Movement_DirectionNoneMoveLeftOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_LEFT, true)));
- results.Add(Test("Movement_DirectionNoneMoveRightOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_RIGHT, true)));
- results.Add(Test("Movement_DirectionNoneMoveUpdateOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UPDATE, true)));
- results.Add(Test("Movement_DirectionNoneMoveEscapeOutsideMapBottomWalk", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_ESCAPE, true)));
-
- // walk = false
-
- results.Add(Test("Movement_DirectionUpMoveUpOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionUpMoveDownOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionUpMoveLeftOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionUpMoveRightOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionUpMoveUpdateOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionUpMoveEscapeOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_UP, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionDownMoveUpOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionDownMoveDownOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionDownMoveLeftOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionDownMoveRightOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionDownMoveUpdateOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionDownMoveEscapeOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_DOWN, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionLeftMoveUpOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionLeftMoveDownOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionLeftMoveLeftOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionLeftMoveRightOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionLeftMoveUpdateOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionLeftMoveEscapeOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_LEFT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionRightMoveUpOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionRightMoveDownOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionRightMoveLeftOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionRightMoveRightOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionRightMoveUpdateOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionRightMoveEscapeOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_RIGHT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionTeleportMoveUpOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionTeleportMoveDownOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionTeleportMoveLeftOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionTeleportMoveRightOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionTeleportMoveUpdateOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionTeleportMoveEscapeOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_TELEPORT, PacketBuilder.MOVE_ESCAPE, false)));
-
- results.Add(Test("Movement_DirectionNoneMoveUpOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+100, Map.Height+131, 10, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UP, false)));
- results.Add(Test("Movement_DirectionNoneMoveDownOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+123, Map.Height+170, 12, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_DOWN, false)));
- results.Add(Test("Movement_DirectionNoneMoveLeftOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+210, Map.Height+156, 14, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_LEFT, false)));
- results.Add(Test("Movement_DirectionNoneMoveRightOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+51, Map.Height+53, 16, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_RIGHT, false)));
- results.Add(Test("Movement_DirectionNoneMoveUpdateOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+90, Map.Height+150, 1, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_UPDATE, false)));
- results.Add(Test("Movement_DirectionNoneMoveEscapeOutsideMapBottom", PacketBuilder.CreateMovement(Map.Width+87, Map.Height+43, 7, PacketBuilder.DIRECTION_NONE, PacketBuilder.MOVE_ESCAPE, false)));
-
- // Test Place Data Packet
- results.Add(Test("PlaceData", PacketBuilder.CreatePlaceData(World.Isles.ToArray(), World.Towns.ToArray(), World.Areas.ToArray())));
-
- // Test Player Update
- results.Add(Test("PlayerInfoUpdateOrCreate", PacketBuilder.CreatePlayerInfoUpdateOrCreate(100, 200, PacketBuilder.DIRECTION_UP, 10, "Li")));
- results.Add(Test("PlayerLeave", PacketBuilder.CreatePlayerLeave("Li")));
-
- // Test PlaySound Packet
- results.Add(Test("PlaySound", PacketBuilder.CreatePlaySound("PM")));
-
- // Test Profile Page
- results.Add(Test("ProfilePage", PacketBuilder.CreateProfilePage("TRANS RIGHTS ARE HUMAN RIGHTS")));
-
- // Test SecCode
- results.Add(Test("SecCode_AdminMod", PacketBuilder.CreateSecCode(new byte[] { 0x31, 0x52, 0x22 }, 0x34, true, true)));
- results.Add(Test("SecCode_Admin", PacketBuilder.CreateSecCode(new byte[] { 0x54, 0x32, 0x24 }, 0x34, true, false)));
- results.Add(Test("SecCode_Mod", PacketBuilder.CreateSecCode(new byte[] { 0x22, 0x12, 0x12 }, 0x34, false, true)));
- results.Add(Test("SecCode_User", PacketBuilder.CreateSecCode(new byte[] { 0x12, 0x32, 0x14 }, 0x34, false, false)));
-
- // Test SwfModule
- results.Add(Test("SwfModule_Force", PacketBuilder.CreateSwfModule("test.swf", PacketBuilder.PACKET_SWF_MODULE_FORCE)));
- results.Add(Test("SwfModule_Gentle", PacketBuilder.CreateSwfModule("test.swf", PacketBuilder.PACKET_SWF_MODULE_GENTLE)));
- results.Add(Test("SwfModule_Cutscene", PacketBuilder.CreateSwfModule("test.swf", PacketBuilder.PACKET_SWF_MODULE_CUTSCENE)));
-
- // Test TileClickInfo
- results.Add(Test("TileClickInfo", PacketBuilder.CreateTileClickInfo("Trans Rights Are Human Rights")));
-
- // Test TileOverlayFlags
- //results.Add(Test("TileOverlayFlags", PacketBuilder.CreateTileOverlayFlags(new int[] { 1, 2, 3, 1, 2, 3, 1, 2, 3 })));
-
- // Test TimeAndWeatherUpdate
- results.Add(Test("TimeAndWeatherUpdate", PacketBuilder.CreateTimeAndWeatherUpdate(10, 4, 541, "SUNNY")));
- results.Add(Test("WeatherUpdate", PacketBuilder.CreateWeatherUpdate("CLOUD")));
-
- #if GENERATE
- string resultsStr = JsonConvert.SerializeObject(knownGoodPackets, Formatting.Indented);
- File.WriteAllText("test.json", resultsStr);
- #endif
-
- foreach(bool result in results)
- {
- if (result == false)
- return false;
- }
- return true;
- }
- }
-}
diff --git a/HorseIsleServer/HISPtests/UnitTests/ServerStartTest.cs b/HorseIsleServer/HISPtests/UnitTests/ServerStartTest.cs
deleted file mode 100644
index a1ad156..0000000
--- a/HorseIsleServer/HISPtests/UnitTests/ServerStartTest.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using HISP.Server;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace HISP.Tests.UnitTests
-{
- public class ServerStartTest
- {
-
- public static void OnShutdown()
- {
- ResultLogger.LogTestStatus(false, "START_SERVER", "OnShutdown called");
- }
- public static void LogStdout(bool error, string type, string text)
- {
- if (type == "CRASH")
- ResultLogger.LogTestStatus(false, "START_SERVER", text);
- }
-
- public static bool RunServerStartTest()
- {
- try
- {
- Logger.SetCallback(LogStdout);
- Entry.SetShutdownCallback(OnShutdown);
- Entry.Start();
- ResultLogger.LogTestStatus(true, "START_SERVER_TEST", "Success.");
- return true;
- }
- catch (Exception e)
- {
- ResultLogger.LogTestStatus(false, "START_SERVER_TEST", e.Message);
- return false;
- }
- }
- }
-}
diff --git a/HorseIsleServer/HISPtests/UnitTests/UserTest.cs b/HorseIsleServer/HISPtests/UnitTests/UserTest.cs
deleted file mode 100644
index 2ac491f..0000000
--- a/HorseIsleServer/HISPtests/UnitTests/UserTest.cs
+++ /dev/null
@@ -1,248 +0,0 @@
-using HISP.Game;
-using HISP.Game.Horse;
-using HISP.Game.Items;
-using HISP.Player;
-using HISP.Security;
-using HISP.Server;
-using HISP.Util;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Sockets;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace HISP.Tests.UnitTests
-{
- public class UserTest
- {
- private const string ALLOWED_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
-
- private static byte[] createLoginPacket(string username, string password)
- {
- byte[] loginInformation = Encoding.UTF8.GetBytes("91|" + Authentication.EncryptLogin(username) + "|" + Authentication.EncryptLogin(password) + "|");
- byte[] loginPacket = new byte[1 * 3 + loginInformation.Length];
- loginPacket[0] = PacketBuilder.PACKET_LOGIN;
- loginPacket[loginPacket.Length - 2] = PacketBuilder.PACKET_CLIENT_TERMINATOR;
- loginPacket[loginPacket.Length - 1] = 0;
-
- Array.ConstrainedCopy(loginInformation, 0, loginPacket, 1, loginInformation.Length);
-
- return loginPacket;
- }
-
- private static byte[] createUserInfoPacket()
- {
- byte[] packet = new byte[] { PacketBuilder.PACKET_LOGIN, PacketBuilder.PACKET_CLIENT_TERMINATOR, 0};
- return packet;
- }
-
- public static bool Test(string testName, object value, object valueComp)
- {
- bool result = value.Equals(valueComp);
- if (result)
- ResultLogger.LogTestStatus(true, "USER_TEST "+testName, "Success.");
- else
- ResultLogger.LogTestResult(false, "USER_TEST " + testName, value.ToString(), valueComp.ToString());
-
- return result;
- }
-
- private static async Task receiveAsync(Socket s)
- {
- byte[] buffer = new byte[s.Available];
- await s.ReceiveAsync(buffer);
- return buffer;
- }
-
- public static async Task RunUserTest()
- {
- List results = new List();
-
- string username = Helper.RandomString(ALLOWED_CHARS);
- string password = Helper.RandomString(ALLOWED_CHARS);
-
- int userId = Authentication.CreateAccount(username, password, "GENDERFLUID", true, true);
-
- // Connect to running server via TCP;
- using (Socket hispServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
- {
- // This is already a pretty good unit test; confirming we can actually login to the game,
-
- try
- {
- await hispServer.ConnectAsync("127.0.0.1", ConfigReader.Port);
-
- // Login to the game;
- await hispServer.SendAsync(createLoginPacket(username, password));
- await receiveAsync(hispServer);
-
- await hispServer.SendAsync(createUserInfoPacket());
- await receiveAsync(hispServer);
-
-
- ResultLogger.LogTestStatus(true, "GAME_LOGIN_TEST", "Success.");
- }
- catch (Exception e)
- {
- ResultLogger.LogTestStatus(false, "GAME_LOGIN_TEST", e.Message);
- return false;
- }
-
-
-
- // While were here; lets do a bunch of tests on HISPs "User" object.
- User user = GameServer.GetUserById(userId);
-
-
- // Test Maximums
-
- user.SetMoney(Int32.MaxValue);
- user.AddMoney(1000);
- results.Add(Test("MoneyOverflow", user.Money, Int32.MaxValue));
-
- user.Hunger = 8000;
- results.Add(Test("HungerMaximumEnforcement", user.Hunger, 1000));
- user.Hunger = -8000;
- results.Add(Test("HungerMinimumEnforcement", user.Hunger, 0));
-
- user.Thirst = 8000;
- results.Add(Test("ThirstMaximumEnforcement", user.Thirst, 1000));
- user.Thirst = -8000;
- results.Add(Test("ThirstMinimumEnforcement", user.Thirst, 0));
-
- user.Tiredness = 8000;
- results.Add(Test("TirednessMaximumEnforcement", user.Tiredness, 1000));
- user.Tiredness = -8000;
- results.Add(Test("TirednessMinimumEnforcement", user.Tiredness, 0));
-
-
- user.BankMoney = 9999999999.9999;
- user.BankMoney += 1000.0;
- results.Add(Test("BankMoneyMaximumEnforcement", user.BankMoney, 9999999999.9999));
-
- user.BankInterest = 9999999999.9999;
- user.BankInterest += 1000.0;
- results.Add(Test("BankInterestMaximumEnforcement", user.BankInterest, 9999999999.9999));
-
- // Test Gender Setting
- user.Gender = "GENDERFLUID";
- results.Add(Test("GenderedPronounsTestTheir", user.GetPronouns(true), Messages.PronounNeutralTheir));
- results.Add(Test("GenderedPronounsTestThey", user.GetPronouns(false), Messages.PronounNeutralThey));
-
- user.Gender = "MALE";
- results.Add(Test("GenderedPronounsTestHis", user.GetPronouns(true), Messages.PronounMaleHis));
- results.Add(Test("GenderedPronounsTestHe", user.GetPronouns(false), Messages.PronounMaleHe));
-
- user.Gender = "FEMALE";
- results.Add(Test("GenderedPronounsTestHer", user.GetPronouns(true), Messages.PronounFemaleHer));
- results.Add(Test("GenderedPronounsTestShe", user.GetPronouns(false), Messages.PronounFemaleShe));
-
- // Test icon
-
- results.Add(Test("IconTestAdmin", user.GetPlayerListIcon(), Messages.AdminIcon));
- user.Administrator = false;
- results.Add(Test("IconTestModerator", user.GetPlayerListIcon(), Messages.ModeratorIcon));
- user.Moderator = false;
- results.Add(Test("IconTestNew", user.GetPlayerListIcon(), Messages.NewUserIcon));
- user.NewPlayer = false;
- results.Add(Test("IconTestNone", user.GetPlayerListIcon(), -1));
-
- user.SubscribedUntil = DateTime.UtcNow.AddMonths(1);
- user.Subscribed = true;
- results.Add(Test("IconTest1Month", user.GetPlayerListIcon(), Messages.MonthSubscriptionIcon));
- user.SubscribedUntil = DateTime.UtcNow.AddMonths(3);
- results.Add(Test("IconTest3Month", user.GetPlayerListIcon(), Messages.ThreeMonthSubscripitionIcon));
- user.SubscribedUntil = DateTime.UtcNow.AddYears(1).AddMonths(3);
- results.Add(Test("IconTest1Year", user.GetPlayerListIcon(), Messages.YearSubscriptionIcon));
-
- // SecCode
- user.SecCodeSeeds[0] = 0x34;
- user.SecCodeSeeds[1] = 0x39;
- user.SecCodeSeeds[2] = 0x2a;
- user.SecCodeInc = 0x3e;
-
- byte[] expectedSecCodeResult = { 0x55, 0x3C, 0x4B, 0x58 };
- byte[] gotSecCode = user.GenerateSecCode();
-
- results.Add(Test("GenerateSecCode", gotSecCode.SequenceEqual(expectedSecCodeResult), true));
-
- // Check max horses count
- user.Subscribed = false;
- results.Add(Test("UnsubbedMaxHorses", user.MaxHorses, 7));
-
- user.Subscribed = true;
- results.Add(Test("SubbedMaxHorses", user.MaxHorses, 11));
-
-
- HorseInstance horse = new HorseInstance(HorseInfo.GetBreedById(170));
- horse.BasicStats.Thirst = 0;
- horse.BasicStats.Hunger = 0;
- int horseId = horse.RandomId;
-
- user.HorseInventory.AddHorse(horse);
-
- /*
- * Test Ranches
- */
-
- // Give player ranch id 10
- Ranch.GetRanchById(37).OwnerId = user.Id;
-
- // Check ranch is now owned by that player, and propagates to user object.
- results.Add(Test("GiveRanchTest", user.OwnedRanch.Id, 37));
- results.Add(Test("HaveDorothyShoes", user.Inventory.HasItemId(Item.DorothyShoes), true));
-
- // Ranch upgrade test
- foreach(Ranch.RanchUpgrade upgrade in Ranch.RanchUpgrade.RanchUpgrades)
- {
- int id = upgrade.Id;
- user.OwnedRanch.UpgradedLevel = id;
- }
-
- // Test swf
- results.Add(Test("RanchSwfMine", user.OwnedRanch.GetSwf(true), "ranchviewer.swf?H=10&B1=11&B2=&B3=&B4=&B5=&B6=&B7=&B8=&B9=&B10=&B11=&B12=&B13=&B14=&B15=&B16=&MINE=1"));
- results.Add(Test("RanchSwf", user.OwnedRanch.GetSwf(false), "ranchviewer.swf?H=10&B1=11&B2=&B3=&B4=&B5=&B6=&B7=&B8=&B9=&B10=&B11=&B12=&B13=&B14=&B15=&B16="));
-
- // Test Ranch Building Functionality
-
- // Test Barn
- user.OwnedRanch.SetBuilding(0, Ranch.RanchBuilding.GetRanchBuildingById(1)); // Barn
- results.Add(Test("RanchBarnMaxHorses", user.MaxHorses, 11 + 4));
-
- // Test Water Well
- user.OwnedRanch.SetBuilding(0, Ranch.RanchBuilding.GetRanchBuildingById(2)); // Water Well
- user.Teleport(user.OwnedRanch.X, user.OwnedRanch.Y);
- results.Add(Test("RanchWaterWellWatering", user.HorseInventory.GetHorseById(horseId).BasicStats.Thirst, 1000));
-
- // Test Grain Silo
- user.OwnedRanch.SetBuilding(0, Ranch.RanchBuilding.GetRanchBuildingById(3)); // Grain Silo
- user.Teleport(user.OwnedRanch.X, user.OwnedRanch.Y);
- results.Add(Test("RanchGrainSiloFeeding", user.HorseInventory.GetHorseById(horseId).BasicStats.Hunger, 1000));
-
-
- // Set building id 0 to a big barn
- user.OwnedRanch.SetBuilding(0, Ranch.RanchBuilding.GetRanchBuildingById(10)); // Big Barn
- results.Add(Test("RanchBigBarnMaxHorses", user.MaxHorses, 11 + 8));
-
- // Set building id 0 to a gold barn
- user.OwnedRanch.SetBuilding(0, Ranch.RanchBuilding.GetRanchBuildingById(11)); // Gold Barn
- results.Add(Test("RanchGoldBarnMaxHorses", user.MaxHorses, 11 + 12));
-
-
-
-
- foreach (bool result in results)
- if (!result)
- return false;
-
- return true;
-
- }
-
-
- }
-
- }
-}
-
diff --git a/HorseIsleServer/Installer/Installer.vdproj b/HorseIsleServer/Installer/Installer.vdproj
new file mode 100644
index 0000000..3d8c519
--- /dev/null
+++ b/HorseIsleServer/Installer/Installer.vdproj
@@ -0,0 +1,956 @@
+"DeployProject"
+{
+"VSVersion" = "3:800"
+"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"
+"IsWebType" = "8:FALSE"
+"ProjectName" = "8:Installer"
+"LanguageId" = "3:1033"
+"CodePage" = "3:1252"
+"UILanguageId" = "3:1033"
+"SccProjectName" = "8:"
+"SccLocalPath" = "8:"
+"SccAuxPath" = "8:"
+"SccProvider" = "8:"
+ "Hierarchy"
+ {
+ "Entry"
+ {
+ "MsmKey" = "8:_0D21C5FF039F49C088EB634A33FC411B"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_1564B665DC1B4C84B3B06154ED218D5B"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_1A4693530D8B4CBBB2A5EC31D8340F0F"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_28A4D7E632204CABA7FE740BEFC91DEF"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_5677B9A3E24F4F6C967D0E86BC2E3E74"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_611F30D5162547E3BA321F145FD40AC5"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_98F70300FEAC42DE808CBC3BF0A4EDEE"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_9B65B8D30BEB46508FDC1142245936E3"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_A323663C87734476B43AED93BCEE5E78"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_DBECA6BD50F344FFAF7D3BC0A6A35A2B"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ }
+ "Configurations"
+ {
+ "Windows"
+ {
+ "DisplayName" = "8:Windows"
+ "IsDebugOnly" = "11:FALSE"
+ "IsReleaseOnly" = "11:TRUE"
+ "OutputFilename" = "8:Windows\\HISP-N00BS-INSTALLER.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
+ {
+ "Enabled" = "11:TRUE"
+ "PromptEnabled" = "11:TRUE"
+ "PrerequisitesLocation" = "2:1"
+ "Url" = "8:"
+ "ComponentsUrl" = "8:"
+ "Items"
+ {
+ "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
+ {
+ "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
+ "ProductCode" = "8:.NETFramework,Version=v4.7.2"
+ }
+ }
+ }
+ }
+ }
+ "Deployable"
+ {
+ "CustomAction"
+ {
+ }
+ "DefaultFeature"
+ {
+ "Name" = "8:DefaultFeature"
+ "Title" = "8:"
+ "Description" = "8:"
+ }
+ "ExternalPersistence"
+ {
+ "LaunchCondition"
+ {
+ "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_5202EFE80DEE4723BF89431D6D801282"
+ {
+ "Name" = "8:.NET Core"
+ "Message" = "8:[VSDNETCOREMSG]"
+ "AllowLaterVersions" = "11:FALSE"
+ "InstallUrl" = "8:https://dotnet.microsoft.com/download/dotnet-core/[NetCoreVerMajorDotMinor]"
+ "IsNETCore" = "11:TRUE"
+ "Architecture" = "2:0"
+ "Runtime" = "2:0"
+ }
+ }
+ }
+ "File"
+ {
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0D21C5FF039F49C088EB634A33FC411B"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\flash.dll"
+ "TargetName" = "8:flash.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1564B665DC1B4C84B3B06154ED218D5B"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\HISP-N00BS.exe"
+ "TargetName" = "8:HISP-N00BS.exe"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A4693530D8B4CBBB2A5EC31D8340F0F"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\PresentationNative_cor3.dll"
+ "TargetName" = "8:PresentationNative_cor3.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_28A4D7E632204CABA7FE740BEFC91DEF"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\vcruntime140_cor3.dll"
+ "TargetName" = "8:vcruntime140_cor3.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5677B9A3E24F4F6C967D0E86BC2E3E74"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\PenImc_cor3.dll"
+ "TargetName" = "8:PenImc_cor3.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_611F30D5162547E3BA321F145FD40AC5"
+ {
+ "SourcePath" = "8:..\\N00BS\\icon.ico"
+ "TargetName" = "8:icon.ico"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_98F70300FEAC42DE808CBC3BF0A4EDEE"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\e_sqlite3.dll"
+ "TargetName" = "8:e_sqlite3.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9B65B8D30BEB46508FDC1142245936E3"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\wpfgfx_cor3.dll"
+ "TargetName" = "8:wpfgfx_cor3.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A323663C87734476B43AED93BCEE5E78"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\D3DCompiler_47_cor3.dll"
+ "TargetName" = "8:D3DCompiler_47_cor3.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:VersionNT64"
+ "Transitive" = "11:TRUE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ }
+ }
+ "FileType"
+ {
+ }
+ "Folder"
+ {
+ "{1525181F-901A-416C-8A58-119130FE478E}:_2BED5EC5191147F4815904695DFB5319"
+ {
+ "Name" = "8:#1916"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:DesktopFolder"
+ "Folders"
+ {
+ }
+ }
+ "{1525181F-901A-416C-8A58-119130FE478E}:_3B89F894B58B4F149DD0DBE5EC931BA2"
+ {
+ "Name" = "8:#1919"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:ProgramMenuFolder"
+ "Folders"
+ {
+ }
+ }
+ "{3C67513D-01DD-4637-8A68-80971EB9504F}:_E3419B32123541589220537FB1154298"
+ {
+ "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
+ "Name" = "8:#1925"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:TARGETDIR"
+ "Folders"
+ {
+ }
+ }
+ }
+ "LaunchCondition"
+ {
+ }
+ "Locator"
+ {
+ }
+ "MsiBootstrapper"
+ {
+ "LangId" = "3:1033"
+ "RequiresElevation" = "11:FALSE"
+ }
+ "Product"
+ {
+ "Name" = "8:Microsoft Visual Studio"
+ "ProductName" = "8:HISP-N00BS"
+ "ProductCode" = "8:{60BA2AF1-4913-4A37-9280-093E8E7DAADE}"
+ "PackageCode" = "8:{88A7C3C4-CB07-4D31-ADA6-1FA3B9FFAB19}"
+ "UpgradeCode" = "8:{FAD2FB5F-7B7C-4293-BF2D-09384146449E}"
+ "AspNetVersion" = "8:2.0.50727.0"
+ "RestartWWWService" = "11:FALSE"
+ "RemovePreviousVersions" = "11:TRUE"
+ "DetectNewerInstalledVersion" = "11:FALSE"
+ "InstallAllUsers" = "11:TRUE"
+ "ProductVersion" = "8:1.3.0"
+ "Manufacturer" = "8:IsleHorse"
+ "ARPHELPTELEPHONE" = "8:"
+ "ARPHELPLINK" = "8:"
+ "Title" = "8:HISP N00BS INSTALLER"
+ "Subject" = "8:"
+ "ARPCONTACT" = "8:SilicaAndPina"
+ "Keywords" = "8:"
+ "ARPCOMMENTS" = "8:Horse Isle Server Emulator (N00BS Package)"
+ "ARPURLINFOABOUT" = "8:islehorse.com"
+ "ARPPRODUCTICON" = "8:_611F30D5162547E3BA321F145FD40AC5"
+ "ARPIconIndex" = "3:0"
+ "SearchPath" = "8:"
+ "UseSystemSearchPath" = "11:TRUE"
+ "TargetPlatform" = "3:0"
+ "PreBuildEvent" = "8:"
+ "PostBuildEvent" = "8:"
+ "RunPostBuildEvent" = "3:0"
+ }
+ "Registry"
+ {
+ "HKLM"
+ {
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_64C38CA6346B449692BF6B4AA592D702"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_AC38AB208C084DF4BA565F75F0BE4432"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCU"
+ {
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_A730B92ABA6442DA8A8DE8F8B12B006C"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_1DE78BC22BE74532BD96E9D0C76B8456"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCR"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKU"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKPU"
+ {
+ "Keys"
+ {
+ }
+ }
+ }
+ "Sequences"
+ {
+ }
+ "Shortcut"
+ {
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_0EE8B0868FFB48F9A5AF0E106F29270F"
+ {
+ "Name" = "8:HISP-N00BS"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_DBECA6BD50F344FFAF7D3BC0A6A35A2B"
+ "Folder" = "8:_2BED5EC5191147F4815904695DFB5319"
+ "WorkingFolder" = "8:_E3419B32123541589220537FB1154298"
+ "Icon" = "8:_611F30D5162547E3BA321F145FD40AC5"
+ "Feature" = "8:"
+ }
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_8C2FF2BBC6C5459CB7C3C3D7563A6B24"
+ {
+ "Name" = "8:HISP-N00BS"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_DBECA6BD50F344FFAF7D3BC0A6A35A2B"
+ "Folder" = "8:_3B89F894B58B4F149DD0DBE5EC931BA2"
+ "WorkingFolder" = "8:_E3419B32123541589220537FB1154298"
+ "Icon" = "8:_611F30D5162547E3BA321F145FD40AC5"
+ "Feature" = "8:"
+ }
+ }
+ "UserInterface"
+ {
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_07CE736F4DA7413AAEC990B2E3F8E5E6"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:2"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_090F0EE34745459F9686C050B2C11242"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Installation Folder"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_3DAE3EEA3A0D49A2BF44023DFA46DD1F"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirm Installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_7E134743D03E4D2BAB1A4EFBBCFFB85A"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Welcome"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_1005C5ECDBA6463C8F26D022ADF2B15B"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdUserInterface.wim"
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_1B5CC2AD42AB4B8A871994A5BDA4AF2E"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:1"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_13902A19FA564BEB9B78FA7710553B5D"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_2D7F530E4D9144F7A17E26C070A09A38"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:2"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_669ADC1422094131A197F6A6C9DBFF21"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progress"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_34E02BE2018C46BBBBBFAD4ED87A477C"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdBasicDialogs.wim"
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6CBD4A41E51D4CA3B91CA1BDB8AC6624"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:1"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_01032F7BADD4495B95310569E9419B49"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "UpdateText"
+ {
+ "Name" = "8:UpdateText"
+ "DisplayName" = "8:#1058"
+ "Description" = "8:#1158"
+ "Type" = "3:15"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1258"
+ "DefaultValue" = "8:#1258"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_A4FECCFE0E0A48748DB3E442DAEC4BDD"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:2"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_4DACC92277D2418AA749B1DED80D4118"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Finished"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdAdminFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_EEB71AB6095340A5925C86FF3F54F56B"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:1"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_812C2FA3E5F945D2B42F27AE98132D86"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirm Installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_82627D6985A9465F9963EA555AE205F1"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Welcome"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FF55283F2CDE4642916803852163C654"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Installation Folder"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:\\VsdFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "InstallAllUsersVisible"
+ {
+ "Name" = "8:InstallAllUsersVisible"
+ "DisplayName" = "8:#1059"
+ "Description" = "8:#1159"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ }
+ "MergeModule"
+ {
+ }
+ "ProjectOutput"
+ {
+ "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_DBECA6BD50F344FFAF7D3BC0A6A35A2B"
+ {
+ "SourcePath" = "8:..\\N00BS\\bin\\x64\\Windows\\net6.0\\win-x64\\publish\\HISP-N00BS.exe"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_E3419B32123541589220537FB1154298"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:PublishItems"
+ "OutputProjectGuid" = "8:{6B45A1E8-0F54-4BF7-AF48-41B9FE676570}"
+ "ShowKeyOutput" = "11:TRUE"
+ "PublishProfilePath" = "8:Properties\\PublishProfiles\\Win64.pubxml"
+ "ExcludeFilters"
+ {
+ }
+ }
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Game/AbuseReport.cs b/HorseIsleServer/LibHISP/Game/AbuseReport.cs
old mode 100755
new mode 100644
index 4fb543c..2f4e648
--- a/HorseIsleServer/LibHISP/Game/AbuseReport.cs
+++ b/HorseIsleServer/LibHISP/Game/AbuseReport.cs
@@ -1,5 +1,4 @@
-using HISP.Server;
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace HISP.Game
{
public class AbuseReport
diff --git a/HorseIsleServer/LibHISP/Game/Arena.cs b/HorseIsleServer/LibHISP/Game/Arena.cs
old mode 100755
new mode 100644
index 8b5acc0..ae54006
--- a/HorseIsleServer/LibHISP/Game/Arena.cs
+++ b/HorseIsleServer/LibHISP/Game/Arena.cs
@@ -2,7 +2,7 @@
using HISP.Player;
using HISP.Security;
using HISP.Server;
-using HISP.Util;
+
using System;
using System.Collections.Generic;
using System.Linq;
@@ -14,7 +14,7 @@ namespace HISP.Game
{
private static List arenas = new List();
- private ThreadSafeList entries;
+ private List entries;
private Timer arenaTimeout;
public static int[] ExpRewards;
public int Id;
@@ -59,7 +59,7 @@ namespace HISP.Game
Slots = slots;
Timeout = timeOut;
arenas.Add(this);
- entries = new ThreadSafeList();
+ entries = new List();
}
public bool HaveAllPlayersCompleted()
@@ -201,10 +201,10 @@ namespace HISP.Game
break;
}
byte[] startingUpEventPacket = PacketBuilder.CreateChat(message, PacketBuilder.CHAT_BOTTOM_RIGHT);
- byte[] swfModulePacket = PacketBuilder.CreateSwfModule(swf, PacketBuilder.PACKET_SWF_MODULE_CUTSCENE);
+ byte[] swfModulePacket = PacketBuilder.CreateSwfModulePacket(swf, PacketBuilder.PACKET_SWF_CUTSCENE);
Logger.DebugPrint(entry.EnteredUser.Username + " Loading swf: " + swf);
- entry.EnteredUser.Client.SendPacket(swfModulePacket);
- entry.EnteredUser.Client.SendPacket(startingUpEventPacket);
+ entry.EnteredUser.LoggedinClient.SendPacket(swfModulePacket);
+ entry.EnteredUser.LoggedinClient.SendPacket(startingUpEventPacket);
}
arenaTimeout = new Timer(new TimerCallback(arenaTimedOut), null, Timeout * 60 * 1000, Timeout * 60 * 1000);
@@ -275,7 +275,7 @@ namespace HISP.Game
try
{
byte[] arenaResults = PacketBuilder.CreateChat(chatMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- entry.EnteredUser.Client.SendPacket(arenaResults);
+ entry.EnteredUser.LoggedinClient.SendPacket(arenaResults);
int expReward = expRewards[place];
@@ -289,7 +289,7 @@ namespace HISP.Game
byte[] youWinMessage = PacketBuilder.CreateChat(Messages.FormatArenaYouWinMessage(prize, expReward), PacketBuilder.CHAT_BOTTOM_RIGHT);
- entry.EnteredUser.Client.SendPacket(youWinMessage);
+ entry.EnteredUser.LoggedinClient.SendPacket(youWinMessage);
// Awards:
@@ -327,7 +327,7 @@ namespace HISP.Game
entry.EnteredUser.Awards.AddAward(Award.GetAwardById(32)); // Perseverance
byte[] youDONTWinMessage = PacketBuilder.CreateChat(Messages.FormatArenaOnlyWinnerWinsMessage(expReward), PacketBuilder.CHAT_BOTTOM_RIGHT);
- entry.EnteredUser.Client.SendPacket(youDONTWinMessage);
+ entry.EnteredUser.LoggedinClient.SendPacket(youDONTWinMessage);
}
place++;
}
@@ -361,8 +361,8 @@ namespace HISP.Game
if (Entries.Length + 1 > Slots)
{
byte[] enterFailed = PacketBuilder.CreateChat(Messages.ArenaFullErrorMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(enterFailed);
- GameServer.UpdateArea(user.Client);
+ user.LoggedinClient.SendPacket(enterFailed);
+ GameServer.UpdateArea(user.LoggedinClient);
return;
}
}
@@ -378,7 +378,7 @@ namespace HISP.Game
user.TakeMoney(EntryCost);
byte[] enteredIntoCompetition = PacketBuilder.CreateChat(Messages.ArenaEnteredInto, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(enteredIntoCompetition);
+ user.LoggedinClient.SendPacket(enteredIntoCompetition);
GameServer.UpdateAreaForAll(user.X, user.Y, true);
return;
diff --git a/HorseIsleServer/LibHISP/Game/Book.cs b/HorseIsleServer/LibHISP/Game/Book.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Chat/ChatMsg.cs b/HorseIsleServer/LibHISP/Game/Chat/Chat.cs
similarity index 62%
rename from HorseIsleServer/LibHISP/Game/Chat/ChatMsg.cs
rename to HorseIsleServer/LibHISP/Game/Chat/Chat.cs
index fecd2a7..f7d9473 100644
--- a/HorseIsleServer/LibHISP/Game/Chat/ChatMsg.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/Chat.cs
@@ -1,509 +1,634 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Linq;
-
-using HISP.Player;
-using HISP.Server;
-
-namespace HISP.Game.Chat
-{
- public class ChatMsg
- {
- public struct Correction
- {
- public string FilteredWord;
- public string ReplacedWord;
- }
-
- public struct Reason
- {
- public string Name;
- public string Message;
- }
- public struct Filter
- {
- public string FilteredWord;
- public Reason Reason;
- public bool MatchAll;
- }
-
-
- public enum ChatChannel
- {
- All = 0x14,
- Ads = 0x1D,
- Near = 0x15,
- Buddies = 0x17,
- Here = 0x18,
- Isle = 0x1A,
- Dm = 0x16,
- Mod = 0x1c,
- Admin = 0x1b
- }
- public static string PrivateMessageSound;
-
- private static List filteredWords = new List();
- private static List correctedWords = new List();
- private static List reasons = new List();
-
- public static void AddFilter(Filter filter)
- {
- filteredWords.Add(filter);
- }
- public static void AddCorrection(Correction correction)
- {
- correctedWords.Add(correction);
- }
- public static void AddReason(Reason reason)
- {
- reasons.Add(reason);
- }
- public static Filter[] FilteredWords
- {
- get
- {
- return filteredWords.ToArray();
- }
- }
- public static Correction[] CorrectedWords
- {
- get
- {
- return correctedWords.ToArray();
- }
- }
- public static Reason[] Reasons
- {
- get
- {
- return reasons.ToArray();
- }
- }
-
- public static bool ProcessCommand(User user, string message)
- {
- if (message.Length < 1)
- return false;
-
- string parsedMessage = message;
-
- parsedMessage = parsedMessage.Trim();
- char cLetter = parsedMessage[0];
- parsedMessage = parsedMessage.Substring(1).Trim();
-
- string messageToGive = parsedMessage;
-
-
- foreach (CommandRegister cmd in CommandRegister.RegisteredCommands)
- {
- if(cmd.CmdLetter == cLetter)
- {
- if (parsedMessage.ToUpper(CultureInfo.InvariantCulture).StartsWith(cmd.CmdName))
- {
- string[] args = parsedMessage.Substring(cmd.CmdName.Length).Trim().Split(' ');
- return cmd.Execute(messageToGive, args, user);
- }
- }
- }
- return false;
- }
- public static Object FilterMessage(string message) // Handles chat filtering and violation stuffs
- {
- if (!ConfigReader.EnableSwearFilter) // Freedom of Speech Mode
- return null;
-
-
- string[] wordsSaid;
- if (message.Contains(' '))
- wordsSaid = message.Split(' ');
- else
- wordsSaid = new string[] { message };
-
-
- foreach(Filter filter in FilteredWords)
- {
- if (!filter.MatchAll)
- {
- foreach (string word in wordsSaid)
- {
- if (word.ToLower() == filter.FilteredWord.ToLower())
- return filter.Reason;
- }
- }
- else
- {
- if (message.ToLower().Contains(filter.FilteredWord))
- return filter.Reason;
- }
- }
-
- return null;
- }
-
- public static byte GetSide(ChatChannel channel)
- {
- switch (channel)
- {
- case ChatChannel.All:
- case ChatChannel.Ads:
- case ChatChannel.Isle:
- return PacketBuilder.CHAT_BOTTOM_LEFT;
- case ChatChannel.Buddies:
- case ChatChannel.Here:
- case ChatChannel.Admin:
- case ChatChannel.Mod:
- return PacketBuilder.CHAT_BOTTOM_RIGHT;
- case ChatChannel.Dm:
- return PacketBuilder.CHAT_DM_RIGHT;
- default:
- Logger.ErrorPrint("unknown channel: " + (byte)channel);
- return PacketBuilder.CHAT_BOTTOM_LEFT;
- }
-
- }
-
- public static string GetDmRecipiant(string message)
- {
- if(message.Contains('|'))
- {
- string recipiantName = message.Split('|')[0];
- return recipiantName;
- }
- else
- {
- return null;
- }
- }
-
- public static string GetDmMessage(string message)
- {
- if (message.Contains('|'))
- {
- string messageStr = message.Split('|')[1];
- return messageStr;
- }
- else
- {
- return message;
- }
- }
-
- public static GameClient[] GetRecipiants(User user, ChatChannel channel, string to=null)
- {
- if (channel == ChatChannel.All)
- {
- List recipiants = new List();
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- if (!client.User.MuteGlobal && !client.User.MuteAll)
- if (client.User.Id != user.Id)
- if(!client.User.MutePlayer.IsUserMuted(user))
- recipiants.Add(client);
- }
- return recipiants.ToArray();
- }
-
- if(channel == ChatChannel.Ads)
- {
- List recipiants = new List();
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- if (!client.User.MuteAds && !client.User.MuteAll)
- if (client.User.Id != user.Id)
- if (!client.User.MutePlayer.IsUserMuted(user))
- recipiants.Add(client);
- }
- return recipiants.ToArray();
- }
-
- if(channel == ChatChannel.Buddies)
- {
- List recipiants = new List();
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- if (!client.User.MuteBuddy && !client.User.MuteAll)
- if (client.User.Id != user.Id)
- if (client.User.Friends.List.Contains(user.Id))
- if (!client.User.MutePlayer.IsUserMuted(user))
- recipiants.Add(client);
- }
- return recipiants.ToArray();
- }
-
- if (channel == ChatChannel.Isle)
- {
- List recipiants = new List();
- if(World.InIsle(user.X,user.Y))
- {
- User[] usersInSile = GameServer.GetUsersInIsle(World.GetIsle(user.X, user.Y), true, false);
- foreach (User userInIsle in usersInSile)
- {
- if (user.Id != userInIsle.Id)
- if(!userInIsle.MuteAll && !userInIsle.MuteIsland)
- if(!userInIsle.MutePlayer.IsUserMuted(user))
- recipiants.Add(userInIsle.Client);
- }
- return recipiants.ToArray();
- }
- else
- {
- return new GameClient[0];
- }
-
- }
-
- if (channel == ChatChannel.Here)
- {
- List recipiants = new List();
- User[] usersHere = GameServer.GetUsersAt(user.X, user.Y, true, false);
- foreach (User userHere in usersHere)
- {
- if (user.Id != userHere.Id)
- if (!userHere.MuteAll && !userHere.MuteHere)
- if (!userHere.MutePlayer.IsUserMuted(user))
- recipiants.Add(userHere.Client);
- }
- return recipiants.ToArray();
- }
-
- if (channel == ChatChannel.Near)
- {
- List recipiants = new List();
- User[] nearbyUsers = GameServer.GetNearbyUsers(user.X, user.Y, true, false);
- foreach (User nearbyUser in nearbyUsers)
- {
- if (user.Id != nearbyUser.Id)
- if (!nearbyUser.MuteAll && !nearbyUser.MuteNear)
- if (!nearbyUser.MutePlayer.IsUserMuted(user))
- recipiants.Add(nearbyUser.Client);
- }
- return recipiants.ToArray();
- }
-
- if (channel == ChatChannel.Mod)
- {
- if (!user.Moderator && !user.Administrator) // No mod chat for non-mods!
- {
- Logger.WarnPrint(user.Username + " attempted to send in MOD chat, without being a MOD.");
- return new GameClient[0];
- }
-
- List recipiants = new List();
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- if (client.User.Moderator)
- if (client.User.Id != user.Id)
- recipiants.Add(client);
- }
- return recipiants.ToArray();
- }
-
- if(channel == ChatChannel.Admin)
- {
- if (!user.Administrator) // No admin chat for non-admins!
- {
- Logger.WarnPrint(user.Username + " attempted to send in ADMIN chat, without being an ADMIN.");
- return new GameClient[0];
- }
-
-
- List recipiants = new List();
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- if (client.User.Administrator)
- if (client.User.Id != user.Id)
- recipiants.Add(client);
- }
- return recipiants.ToArray();
- }
-
- if(channel == ChatChannel.Dm)
- {
- if (to != null && to != "")
- {
- List recipiants = new List();
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- {
- if (!client.User.MutePrivateMessage && !client.User.MuteAll)
- {
- if (client.User.Username.ToLower().StartsWith(to.ToLower()))
- {
- recipiants.Add(client);
- break;
- }
-
- }
- }
- }
- return recipiants.ToArray();
- }
- else
- {
- Logger.ErrorPrint("Channel is " + channel + " (DM) BUT no 'to' Paramater was specfied");
- return new GameClient[0];
- }
- }
-
-
- Logger.ErrorPrint(user.Username + " Sent message in unknown channel: " + (byte)channel);
- return new GameClient[0]; // No recipiants
- }
-
- public static string DoCorrections(string message)
- {
- if (!ConfigReader.EnableCorrections)
- return message;
-
- foreach(Correction correct in CorrectedWords)
- message = message.Replace(correct.FilteredWord, correct.ReplacedWord);
-
- return message.Trim();
- }
- public static string EscapeMessage(string message)
- {
- return message.Replace("<", "<");
- }
-
- public static string FormatChatForOthers(User user, ChatChannel channel, string message, bool autoReply=false)
- {
-
- switch (channel)
- {
- case ChatChannel.All:
- if (user.Moderator || user.Administrator)
- return Messages.FormatGlobalChatMessageForMod(user.Username, message);
- else
- return Messages.FormatGlobalChatMessage(user.Username, message);
- case ChatChannel.Ads:
- return Messages.FormatAdsChatMessage(user.Username, message);
- case ChatChannel.Buddies:
- return Messages.FormatBuddyChatMessage(user.Username, message);
- case ChatChannel.Dm:
- string badge = "";
- if (user.Moderator || user.Administrator)
- badge += Messages.DmModBadge;
- if (autoReply)
- badge += Messages.DmAutoResponse;
- return Messages.FormatDirectMessage(user.Username, message, badge);
- case ChatChannel.Near:
- return Messages.FormatNearbyChatMessage(user.Username, message);
- case ChatChannel.Isle:
- return Messages.FormatIsleChatMessage(user.Username, message);
- case ChatChannel.Here:
- return Messages.FormatHereChatMessage(user.Username, message);
- case ChatChannel.Mod:
- if (user.Moderator || user.Administrator)
- return Messages.FormatModChatMessage(user.Username, message);
- else
- {
- Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)");
- return "";
- }
- case ChatChannel.Admin:
- if (user.Administrator)
- return Messages.FormatAdminChatMessage(user.Username, message);
- else
- {
- Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)");
- return "";
- }
- default:
- Logger.ErrorPrint(user.Username + " is trying to end a message in unknown channel " + channel.ToString("X"));
- return "not implemented yet :(";
- }
- }
- public static string FormatChatForSender(User user, ChatChannel channel, string message, string dmRecipiant=null, bool autoReply=false)
- {
- switch (channel)
- {
- case ChatChannel.All:
- if (user.Moderator || user.Administrator)
- return Messages.FormatGlobalChatMessageForMod(user.Username, message);
- else
- return Messages.FormatGlobalChatMessage(user.Username, message);
- case ChatChannel.Ads:
- int numbListening = GameServer.GetNumberOfPlayersListeningToAdsChat(); // vry specific function ik
- return Messages.FormatAdsChatForSender(numbListening-1, user.Username, message);
- case ChatChannel.Buddies:
- return Messages.FormatBuddyChatMessageForSender(GameServer.GetNumberOfBuddiesOnline(user), user.Username, message);
- case ChatChannel.Isle:
- int inIsle = 0;
- if (World.InIsle(user.X, user.Y))
- inIsle = GameServer.GetUsersInIsle(World.GetIsle(user.X, user.Y), false, false).Length -1;
- return Messages.FormatIsleChatMessageForSender(inIsle, user.Username, message);
- case ChatChannel.Here:
- int usersHere = GameServer.GetUsersAt(user.X, user.Y, false, false).Length -1;
- return Messages.FormatHereChatMessageForSender(usersHere, user.Username, message);
- case ChatChannel.Near:
- int nearbyUsers = GameServer.GetNearbyUsers(user.X, user.Y, false, false).Length -1;
- return Messages.FormatNearChatMessageForSender(nearbyUsers, user.Username, message);
- case ChatChannel.Mod:
- int modsOnline = GameServer.GetNumberOfModsOnline() - 1;
- return Messages.FormatModChatForSender(modsOnline, user.Username, message);
- case ChatChannel.Admin:
- int adminsOnline = GameServer.GetNumberOfAdminsOnline() - 1;
- return Messages.FormatAdminChatForSender(adminsOnline, user.Username, message);
- case ChatChannel.Dm:
- string badge = "";
- if (user.Moderator || user.Administrator)
- badge += Messages.DmModBadge;
- if (autoReply)
- badge += Messages.DmAutoResponse;
- return Messages.FormatDirectChatMessageForSender(user.Username, dmRecipiant, message, badge);
- default:
- Logger.ErrorPrint(user.Username + " is trying to end a message in unknown channel " + channel.ToString("X"));
- return "not implemented yet :(";
- }
- }
-
- public static string NonViolationChecks(User user, string message)
- {
- if(!ConfigReader.EnableNonViolations)
- return null;
-
- // Check if contains password.
- if (message.ToLower().Contains(user.Password.ToLower()))
- return Messages.PasswordNotice;
-
- // Check if ALL CAPS
- string[] wordsSaid;
- if (message.Contains(' '))
- wordsSaid = message.Split(' ');
- else
- wordsSaid = new string[] { message };
-
- foreach (string word in wordsSaid)
- {
- string lettersOnly = "";
- foreach(char c in word)
- {
- if((byte)c >= (byte)'A' && (byte)c <= (byte)'z') // is letter
- {
- lettersOnly += c;
- }
- }
- if (lettersOnly.ToUpper() == lettersOnly && lettersOnly.Length >= 5)
- return Messages.CapsNotice;
- }
-
- return null;
- }
- public static Reason GetReason(string name)
- {
- foreach (Reason reason in Reasons)
- if (reason.Name == name)
- return reason;
-
- throw new KeyNotFoundException("Reason " + name + " not found.");
- }
-
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using HISP.Player;
+using HISP.Server;
+
+namespace HISP.Game.Chat
+{
+ public class Chat
+ {
+ public struct Correction
+ {
+ public string FilteredWord;
+ public string ReplacedWord;
+ }
+
+ public struct Reason
+ {
+ public string Name;
+ public string Message;
+ }
+ public struct Filter
+ {
+ public string FilteredWord;
+ public Reason Reason;
+ public bool MatchAll;
+ }
+
+
+ public enum ChatChannel
+ {
+ All = 0x14,
+ Ads = 0x1D,
+ Near = 0x15,
+ Buddies = 0x17,
+ Here = 0x18,
+ Isle = 0x1A,
+ Dm = 0x16,
+ Mod = 0x1c,
+ Admin = 0x1b
+ }
+ public static string PrivateMessageSound;
+
+ private static List filteredWords = new List();
+ private static List correctedWords = new List();
+ private static List reasons = new List();
+
+ public static void AddFilter(Filter filter)
+ {
+ filteredWords.Add(filter);
+ }
+ public static void AddCorrection(Correction correction)
+ {
+ correctedWords.Add(correction);
+ }
+ public static void AddReason(Reason reason)
+ {
+ reasons.Add(reason);
+ }
+ public static Filter[] FilteredWords
+ {
+ get
+ {
+ return filteredWords.ToArray();
+ }
+ }
+ public static Correction[] CorrectedWords
+ {
+ get
+ {
+ return correctedWords.ToArray();
+ }
+ }
+ public static Reason[] Reasons
+ {
+ get
+ {
+ return reasons.ToArray();
+ }
+ }
+ public static bool ProcessCommand(User user, string message)
+ {
+ if (message.Length < 1)
+ return false;
+
+ string[] args = message.Split(' ').Skip(1).ToArray();
+
+ if (user.Administrator || user.Moderator)
+ {
+ if (message[0] == '%')
+ {
+ if (message.ToUpper().StartsWith("%GIVE"))
+ return Command.Give(message, args, user);
+ if (message.ToUpper().StartsWith("%SWF"))
+ return Command.Swf(message, args, user);
+ if (message.ToUpper().StartsWith("%GOTO"))
+ return Command.Goto(message, args, user);
+ if (message.ToUpper().StartsWith("%JUMP"))
+ return Command.Jump(message, args, user);
+ if (message.ToUpper().StartsWith("%KICK"))
+ return Command.Kick(message, args, user);
+ if (message.ToUpper().StartsWith("%RULES"))
+ return Command.Rules(message, args, user);
+ if (message.ToUpper().StartsWith("%PRISON"))
+ return Command.Prison(message, args, user);
+ if (message.ToUpper().StartsWith("%NOCLIP"))
+ return Command.NoClip(message, args, user);
+ if (message.ToUpper().StartsWith("%STEALTH"))
+ return Command.Stealth(message, args, user);
+ if (message.ToUpper().StartsWith("%BAN"))
+ return Command.Ban(message, args, user);
+ if (message.ToUpper().StartsWith("%UNBAN"))
+ return Command.UnBan(message, args, user);
+ if (message.ToUpper().StartsWith("%ESCAPE"))
+ return Command.Escape(message, args, user);
+ if (message.ToUpper().StartsWith("%MODHORSE"))
+ return Command.ModHorse(message, args, user);
+ if (message.ToUpper().StartsWith("%DELITEM"))
+ return Command.DelItem(message, args, user);
+ if (message.ToUpper().StartsWith("%SHUTDOWN"))
+ return Command.Shutdown(message, args, user);
+ if (message.ToUpper().StartsWith("%CALL HORSE"))
+ return Command.CallHorse(message, args, user);
+ return false;
+ }
+
+ }
+ if (message[0] == '!')
+ {
+
+ // Alias for !MUTE
+ if (message.ToUpper().StartsWith("!MUTEALL"))
+ return Command.Mute(message, new string[] { "ALL" }, user);
+ else if (message.ToUpper().StartsWith("!MUTEADS"))
+ return Command.Mute(message, new string[] { "ADS" }, user);
+ else if (message.ToUpper().StartsWith("!MUTEGLOBAL"))
+ return Command.Mute(message, new string[] { "GLOBAL" }, user);
+ else if (message.ToUpper().StartsWith("!MUTEISLAND"))
+ return Command.Mute(message, new string[] { "ISLAND" }, user);
+ else if (message.ToUpper().StartsWith("!MUTENEAR"))
+ return Command.Mute(message, new string[] { "NEAR" }, user);
+ else if (message.ToUpper().StartsWith("!MUTEHERE"))
+ return Command.Mute(message, new string[] { "HERE" }, user);
+ else if (message.ToUpper().StartsWith("!MUTEBUDDY"))
+ return Command.Mute(message, new string[] { "BUDDY" }, user);
+ else if (message.ToUpper().StartsWith("!MUTEPM"))
+ return Command.Mute(message, new string[] { "PM" }, user);
+ else if (message.ToUpper().StartsWith("!MUTEBR"))
+ return Command.Mute(message, new string[] { "BR" }, user);
+ else if (message.ToUpper().StartsWith("!MUTESOCIALS"))
+ return Command.Mute(message, new string[] { "SOCIALS" }, user);
+ else if (message.ToUpper().StartsWith("!MUTELOGINS"))
+ return Command.Mute(message, new string[] { "LOGINS" }, user);
+
+
+ else if (message.ToUpper().StartsWith("!MUTE"))
+ return Command.Mute(message, args, user);
+
+ // Alias for !UNMUTE
+ else if (message.ToUpper().StartsWith("!UNMUTEALL"))
+ return Command.UnMute(message, new string[] { "ALL" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTEADS"))
+ return Command.UnMute(message, new string[] { "ADS" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTEGLOBAL"))
+ return Command.UnMute(message, new string[] { "GLOBAL" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTEISLAND"))
+ return Command.UnMute(message, new string[] { "ISLAND" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTENEAR"))
+ return Command.UnMute(message, new string[] { "NEAR" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTEHERE"))
+ return Command.UnMute(message, new string[] { "HERE" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTEBUDDY"))
+ return Command.UnMute(message, new string[] { "BUDDY" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTEPM"))
+ return Command.UnMute(message, new string[] { "PM" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTEBR"))
+ return Command.UnMute(message, new string[] { "BR" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTESOCIALS"))
+ return Command.UnMute(message, new string[] { "SOCIALS" }, user);
+ else if (message.ToUpper().StartsWith("!UNMUTELOGINS"))
+ return Command.UnMute(message, new string[] { "LOGINS" }, user);
+
+ else if (message.ToUpper().StartsWith("!UNMUTE"))
+ return Command.UnMute(message, args, user);
+
+ // Alias for !HEAR
+ else if (message.ToUpper().StartsWith("!HEARALL"))
+ return Command.UnMute(message, new string[] { "ALL" }, user);
+ else if (message.ToUpper().StartsWith("!HEARADS"))
+ return Command.UnMute(message, new string[] { "ADS" }, user);
+ else if (message.ToUpper().StartsWith("!HEARGLOBAL"))
+ return Command.UnMute(message, new string[] { "GLOBAL" }, user);
+ else if (message.ToUpper().StartsWith("!HEARISLAND"))
+ return Command.UnMute(message, new string[] { "ISLAND" }, user);
+ else if (message.ToUpper().StartsWith("!HEARNEAR"))
+ return Command.UnMute(message, new string[] { "NEAR" }, user);
+ else if (message.ToUpper().StartsWith("!HEARHERE"))
+ return Command.UnMute(message, new string[] { "HERE" }, user);
+ else if (message.ToUpper().StartsWith("!HEARBUDDY"))
+ return Command.UnMute(message, new string[] { "BUDDY" }, user);
+ else if (message.ToUpper().StartsWith("!HEARPM"))
+ return Command.UnMute(message, new string[] { "PM" }, user);
+ else if (message.ToUpper().StartsWith("!HEARBR"))
+ return Command.UnMute(message, new string[] { "BR" }, user);
+ else if (message.ToUpper().StartsWith("!HEARSOCIALS"))
+ return Command.UnMute(message, new string[] { "SOCIALS" }, user);
+ else if (message.ToUpper().StartsWith("!HEARLOGINS"))
+ return Command.UnMute(message, new string[] { "LOGINS" }, user);
+
+ else if (message.ToUpper().StartsWith("!HEAR"))
+ return Command.UnMute(message, args, user);
+
+ else if (message.ToUpper().StartsWith("!AUTOREPLY"))
+ return Command.AutoReply(message, args, user);
+
+ else if (message.ToUpper().StartsWith("!QUIZ"))
+ return Command.Quiz(message, args, user);
+
+ else if (message.ToUpper().StartsWith("!WARP")) // some stupid handling on this one.
+ {
+ string placeName = message.Substring("!WARP".Length);
+ placeName = placeName.Trim();
+
+ return Command.Warp(message, placeName.Split(' '), user);
+ }
+
+ else if (message.ToUpper().StartsWith("!DANCE"))
+ return Command.Dance(message, args, user);
+
+ else if (message.ToUpper().StartsWith("!VERSION"))
+ return Command.Version(message, args, user);
+ }
+ return false;
+ }
+ public static Object FilterMessage(string message) // Handles chat filtering and violation stuffs
+ {
+ if (!ConfigReader.BadWords) // Freedom of Speech Mode
+ return null;
+
+
+ string[] wordsSaid;
+ if (message.Contains(' '))
+ wordsSaid = message.Split(' ');
+ else
+ wordsSaid = new string[] { message };
+
+
+ foreach(Filter filter in FilteredWords)
+ {
+ if (!filter.MatchAll)
+ {
+ foreach (string word in wordsSaid)
+ {
+ if (word.ToLower() == filter.FilteredWord.ToLower())
+ return filter.Reason;
+ }
+ }
+ else
+ {
+ if (message.ToLower().Contains(filter.FilteredWord))
+ return filter.Reason;
+ }
+ }
+
+ return null;
+ }
+
+ public static byte GetSide(ChatChannel channel)
+ {
+ switch (channel)
+ {
+ case ChatChannel.All:
+ case ChatChannel.Ads:
+ case ChatChannel.Isle:
+ return PacketBuilder.CHAT_BOTTOM_LEFT;
+ case ChatChannel.Buddies:
+ case ChatChannel.Here:
+ case ChatChannel.Admin:
+ case ChatChannel.Mod:
+ return PacketBuilder.CHAT_BOTTOM_RIGHT;
+ case ChatChannel.Dm:
+ return PacketBuilder.CHAT_DM_RIGHT;
+ default:
+ Logger.ErrorPrint("unknown channel: " + (byte)channel);
+ return PacketBuilder.CHAT_BOTTOM_LEFT;
+ }
+
+ }
+
+ public static string GetDmRecipiant(string message)
+ {
+ if(message.Contains('|'))
+ {
+ string recipiantName = message.Split('|')[0];
+ return recipiantName;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public static string GetDmMessage(string message)
+ {
+ if (message.Contains('|'))
+ {
+ string messageStr = message.Split('|')[1];
+ return messageStr;
+ }
+ else
+ {
+ return message;
+ }
+ }
+
+ public static GameClient[] GetRecipiants(User user, ChatChannel channel, string to=null)
+ {
+ if (channel == ChatChannel.All)
+ {
+ List recipiants = new List();
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ if (!client.LoggedinUser.MuteGlobal && !client.LoggedinUser.MuteAll)
+ if (client.LoggedinUser.Id != user.Id)
+ if(!client.LoggedinUser.MutePlayer.IsUserMuted(user))
+ recipiants.Add(client);
+ }
+ return recipiants.ToArray();
+ }
+
+ if(channel == ChatChannel.Ads)
+ {
+ List recipiants = new List();
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ if (!client.LoggedinUser.MuteAds && !client.LoggedinUser.MuteAll)
+ if (client.LoggedinUser.Id != user.Id)
+ if (!client.LoggedinUser.MutePlayer.IsUserMuted(user))
+ recipiants.Add(client);
+ }
+ return recipiants.ToArray();
+ }
+
+ if(channel == ChatChannel.Buddies)
+ {
+ List recipiants = new List();
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ if (!client.LoggedinUser.MuteBuddy && !client.LoggedinUser.MuteAll)
+ if (client.LoggedinUser.Id != user.Id)
+ if (client.LoggedinUser.Friends.List.Contains(user.Id))
+ if (!client.LoggedinUser.MutePlayer.IsUserMuted(user))
+ recipiants.Add(client);
+ }
+ return recipiants.ToArray();
+ }
+
+ if (channel == ChatChannel.Isle)
+ {
+ List recipiants = new List();
+ if(World.InIsle(user.X,user.Y))
+ {
+ User[] usersInSile = GameServer.GetUsersInIsle(World.GetIsle(user.X, user.Y), true, false);
+ foreach (User userInIsle in usersInSile)
+ {
+ if (user.Id != userInIsle.Id)
+ if(!userInIsle.MuteAll && !userInIsle.MuteIsland)
+ if(!userInIsle.MutePlayer.IsUserMuted(user))
+ recipiants.Add(userInIsle.LoggedinClient);
+ }
+ return recipiants.ToArray();
+ }
+ else
+ {
+ return new GameClient[0];
+ }
+
+ }
+
+ if (channel == ChatChannel.Here)
+ {
+ List recipiants = new List();
+ User[] usersHere = GameServer.GetUsersAt(user.X, user.Y, true, false);
+ foreach (User userHere in usersHere)
+ {
+ if (user.Id != userHere.Id)
+ if (!userHere.MuteAll && !userHere.MuteHere)
+ if (!userHere.MutePlayer.IsUserMuted(user))
+ recipiants.Add(userHere.LoggedinClient);
+ }
+ return recipiants.ToArray();
+ }
+
+ if (channel == ChatChannel.Near)
+ {
+ List recipiants = new List();
+ User[] nearbyUsers = GameServer.GetNearbyUsers(user.X, user.Y, true, false);
+ foreach (User nearbyUser in nearbyUsers)
+ {
+ if (user.Id != nearbyUser.Id)
+ if (!nearbyUser.MuteAll && !nearbyUser.MuteNear)
+ if (!nearbyUser.MutePlayer.IsUserMuted(user))
+ recipiants.Add(nearbyUser.LoggedinClient);
+ }
+ return recipiants.ToArray();
+ }
+
+ if (channel == ChatChannel.Mod)
+ {
+ if (!user.Moderator && !user.Administrator) // No mod chat for non-mods!
+ {
+ Logger.WarnPrint(user.Username + " attempted to send in MOD chat, without being a MOD.");
+ return new GameClient[0];
+ }
+
+ List recipiants = new List();
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ if (client.LoggedinUser.Moderator)
+ if (client.LoggedinUser.Id != user.Id)
+ recipiants.Add(client);
+ }
+ return recipiants.ToArray();
+ }
+
+ if(channel == ChatChannel.Admin)
+ {
+ if (!user.Administrator) // No admin chat for non-admins!
+ {
+ Logger.WarnPrint(user.Username + " attempted to send in ADMIN chat, without being an ADMIN.");
+ return new GameClient[0];
+ }
+
+
+ List recipiants = new List();
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ if (client.LoggedinUser.Administrator)
+ if (client.LoggedinUser.Id != user.Id)
+ recipiants.Add(client);
+ }
+ return recipiants.ToArray();
+ }
+
+ if(channel == ChatChannel.Dm)
+ {
+ if (to != null && to != "")
+ {
+ List recipiants = new List();
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ {
+ if (!client.LoggedinUser.MutePrivateMessage && !client.LoggedinUser.MuteAll)
+ {
+ if (client.LoggedinUser.Username.ToLower().StartsWith(to.ToLower()))
+ {
+ recipiants.Add(client);
+ break;
+ }
+
+ }
+ }
+ }
+ return recipiants.ToArray();
+ }
+ else
+ {
+ Logger.ErrorPrint("Channel is " + channel + " (DM) BUT no 'to' Paramater was specfied");
+ return new GameClient[0];
+ }
+ }
+
+
+ Logger.ErrorPrint(user.Username + " Sent message in unknown channel: " + (byte)channel);
+ return new GameClient[0]; // No recipiants
+ }
+
+ public static string DoCorrections(string message)
+ {
+ if (!ConfigReader.DoCorrections)
+ return message;
+
+ foreach(Correction correct in CorrectedWords)
+ message = message.Replace(correct.FilteredWord, correct.ReplacedWord);
+
+ return message.Trim();
+ }
+ public static string EscapeMessage(string message)
+ {
+ return message.Replace("<", "<");
+ }
+
+ public static string FormatChatForOthers(User user, ChatChannel channel, string message, bool autoReply=false)
+ {
+
+ switch (channel)
+ {
+ case ChatChannel.All:
+ if (user.Moderator || user.Administrator)
+ return Messages.FormatGlobalChatMessageForMod(user.Username, message);
+ else
+ return Messages.FormatGlobalChatMessage(user.Username, message);
+ case ChatChannel.Ads:
+ return Messages.FormatAdsChatMessage(user.Username, message);
+ case ChatChannel.Buddies:
+ return Messages.FormatBuddyChatMessage(user.Username, message);
+ case ChatChannel.Dm:
+ string badge = "";
+ if (user.Moderator || user.Administrator)
+ badge += Messages.DmModBadge;
+ if (autoReply)
+ badge += Messages.DmAutoResponse;
+ return Messages.FormatDirectMessage(user.Username, message, badge);
+ case ChatChannel.Near:
+ return Messages.FormatNearbyChatMessage(user.Username, message);
+ case ChatChannel.Isle:
+ return Messages.FormatIsleChatMessage(user.Username, message);
+ case ChatChannel.Here:
+ return Messages.FormatHereChatMessage(user.Username, message);
+ case ChatChannel.Mod:
+ if (user.Moderator || user.Administrator)
+ return Messages.FormatModChatMessage(user.Username, message);
+ else
+ {
+ Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)");
+ return "";
+ }
+ case ChatChannel.Admin:
+ if (user.Administrator)
+ return Messages.FormatAdminChatMessage(user.Username, message);
+ else
+ {
+ Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)");
+ return "";
+ }
+ default:
+ Logger.ErrorPrint(user.Username + " is trying to end a message in unknown channel " + channel.ToString("X"));
+ return "not implemented yet :(";
+ }
+ }
+ public static string FormatChatForSender(User user, ChatChannel channel, string message, string dmRecipiant=null, bool autoReply=false)
+ {
+ switch (channel)
+ {
+ case ChatChannel.All:
+ if (user.Moderator || user.Administrator)
+ return Messages.FormatGlobalChatMessageForMod(user.Username, message);
+ else
+ return Messages.FormatGlobalChatMessage(user.Username, message);
+ case ChatChannel.Ads:
+ int numbListening = GameServer.GetNumberOfPlayersListeningToAdsChat(); // vry specific function ik
+ return Messages.FormatAdsChatForSender(numbListening-1, user.Username, message);
+ case ChatChannel.Buddies:
+ return Messages.FormatBuddyChatMessageForSender(GameServer.GetNumberOfBuddiesOnline(user), user.Username, message);
+ case ChatChannel.Isle:
+ int inIsle = 0;
+ if (World.InIsle(user.X, user.Y))
+ inIsle = GameServer.GetUsersInIsle(World.GetIsle(user.X, user.Y), false, false).Length -1;
+ return Messages.FormatIsleChatMessageForSender(inIsle, user.Username, message);
+ case ChatChannel.Here:
+ int usersHere = GameServer.GetUsersAt(user.X, user.Y, false, false).Length -1;
+ return Messages.FormatHereChatMessageForSender(usersHere, user.Username, message);
+ case ChatChannel.Near:
+ int nearbyUsers = GameServer.GetNearbyUsers(user.X, user.Y, false, false).Length -1;
+ return Messages.FormatNearChatMessageForSender(nearbyUsers, user.Username, message);
+ case ChatChannel.Mod:
+ int modsOnline = GameServer.GetNumberOfModsOnline() - 1;
+ return Messages.FormatModChatForSender(modsOnline, user.Username, message);
+ case ChatChannel.Admin:
+ int adminsOnline = GameServer.GetNumberOfAdminsOnline() - 1;
+ return Messages.FormatAdminChatForSender(adminsOnline, user.Username, message);
+ case ChatChannel.Dm:
+ string badge = "";
+ if (user.Moderator || user.Administrator)
+ badge += Messages.DmModBadge;
+ if (autoReply)
+ badge += Messages.DmAutoResponse;
+ return Messages.FormatDirectChatMessageForSender(user.Username, dmRecipiant, message, badge);
+ default:
+ Logger.ErrorPrint(user.Username + " is trying to end a message in unknown channel " + channel.ToString("X"));
+ return "not implemented yet :(";
+ }
+ }
+
+ public static string NonViolationChecks(User user, string message)
+ {
+ if(!ConfigReader.DoNonViolations)
+ return null;
+
+ // Check if contains password.
+ if (message.ToLower().Contains(user.Password.ToLower()))
+ return Messages.PasswordNotice;
+
+ // Check if ALL CAPS
+ string[] wordsSaid;
+ if (message.Contains(' '))
+ wordsSaid = message.Split(' ');
+ else
+ wordsSaid = new string[] { message };
+
+ foreach (string word in wordsSaid)
+ {
+ string lettersOnly = "";
+ foreach(char c in word)
+ {
+ if((byte)c >= (byte)'A' && (byte)c <= (byte)'z') // is letter
+ {
+ lettersOnly += c;
+ }
+ }
+ if (lettersOnly.ToUpper() == lettersOnly && lettersOnly.Length >= 5)
+ return Messages.CapsNotice;
+ }
+
+ return null;
+ }
+ public static Reason GetReason(string name)
+ {
+ foreach (Reason reason in Reasons)
+ if (reason.Name == name)
+ return reason;
+
+ throw new KeyNotFoundException("Reason " + name + " not found.");
+ }
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Game/Chat/Command.cs b/HorseIsleServer/LibHISP/Game/Chat/Command.cs
old mode 100755
new mode 100644
index 463696b..2ab0e52
--- a/HorseIsleServer/LibHISP/Game/Chat/Command.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/Command.cs
@@ -1,1106 +1,986 @@
-using HISP.Player;
-using HISP.Server;
-using HISP.Game.Items;
-using HISP.Game.Events;
-using HISP.Game.Horse;
-using HISP.Game.Inventory;
-
-using System.Linq;
-using System;
-using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
-
-namespace HISP.Game.Chat
-{
- public class Command
- {
- private static User findNamePartial(string name)
- {
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client == null)
- continue;
- if (client.LoggedIn)
- {
- if (client.User.Username.ToLower().StartsWith(name.ToLower()))
- {
- return client.User;
- }
- }
- }
- throw new KeyNotFoundException("name not found");
- }
-
- public static void RegisterCommands()
- {
- // Admin Commands
- new CommandRegister('%', "GIVE", "OBJECT [username / ALL]\nMONEY [username]\nHORSE [username]\nQUEST [FORCE]\nAWARD [username]", Command.Give, true, false);
- new CommandRegister('%', "SWF", " [username / ALL]", Command.Swf, true, false);
- new CommandRegister('%', "GOTO", ",\nPLAYER \nAREA \nNPC ", Command.Goto, true, false);
- new CommandRegister('%', "JUMP", " HERE", Command.Jump, true, false);
- new CommandRegister('%', "NOCLIP", "", Command.NoClip, true, false);
- new CommandRegister('%', "MODHORSE", " ", Command.ModHorse, true, false);
- new CommandRegister('%', "DELITEM", "- [username]", Command.DelItem, true, false);
- new CommandRegister('%', "SHUTDOWN", "", Command.Shutdown, true, false);
- new CommandRegister('%', "CALL", "HORSE", Command.CallHorse, true, false);
- new CommandRegister('%', "MESSAGE", "", Command.Message, true, false);
- new CommandRegister('%', "PERMISSION", " ", Command.Permission, true, false);
-
- // Moderator commands
- new CommandRegister('%', "RULES", "", Command.Rules, false, true);
- new CommandRegister('%', "PRISON", "", Command.Prison, false, true);
- new CommandRegister('%', "STEALTH", "", Command.Stealth, false, true);
- new CommandRegister('%', "KICK", " [reason]", Command.Kick, false, true);
- new CommandRegister('%', "BAN", " [reason]", Command.Ban, false, true);
- new CommandRegister('%', "UNBAN", "", Command.UnBan, false, true);
- new CommandRegister('%', "ESCAPE", "", Command.Escape, false, true);
-
- // User commands
- new CommandRegister('%', "VERSION", "", Command.Version, false, false);
- new CommandRegister('%', "HELP", "", Command.Help, false, false);
-
- new CommandRegister('!', "MUTE", "ALL\nGLOBAL\nISLAND\nNEAR\nHERE\nBUDDY\nPM\nBR\nSOCIALS\nLOGINS", Command.Mute, false, false);
- new CommandRegister('!', "UNMUTE", "ALL\nGLOBAL\nISLAND\nNEAR\nHERE\nBUDDY\nPM\nBR\nSOCIALS\nLOGINS", Command.UnMute, false, false);
- new CommandRegister('!', "HEAR", "ALL\nGLOBAL\nISLAND\nNEAR\nHERE\nBUDDY\nPM\nBR\nSOCIALS\nLOGINS", Command.UnMute, false, false);
- new CommandRegister('!', "AUTOREPLY", "[message]", Command.AutoReply, false, false);
- new CommandRegister('!', "QUIZ", "", Command.Quiz, false, false);
- new CommandRegister('!', "WARP", "", Command.Warp, false, false);
- new CommandRegister('!', "DANCE", "", Command.Dance, false, false);
- }
-
- public static bool Help(string message, string[] args, User user)
- {
-
- foreach (CommandRegister cmd in CommandRegister.RegisteredCommands)
- {
- if (!cmd.HasPermission(user)) continue;
-
- user.Client.SendPacket(PacketBuilder.CreateChat(Messages.FormatHispHelpUsage(cmd.CmdLetter, cmd.CmdName, cmd.CmdUsage).Replace("\n", "
\t"), PacketBuilder.CHAT_BOTTOM_LEFT));
- }
-
- user.Client.SendPacket(PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT));
-
- return true;
- }
-
- public static bool Permission(string message, string[] args, User user)
- {
- if (args.Length < 2)
- return false;
- string username = args[0].Trim();
- string privledgeLevel = args[1].ToUpper().Trim();
-
- try
- {
- User modifyUser = findNamePartial(username);
-
- if (privledgeLevel == "NORMAL")
- {
- modifyUser.Administrator = false;
- modifyUser.Moderator = false;
- }
- else if (privledgeLevel == "ADMIN")
- {
- modifyUser.Administrator = true;
- modifyUser.Moderator = true;
- }
- else if (privledgeLevel == "MOD" || privledgeLevel == "MODERATOR")
- {
- modifyUser.Administrator = false;
- modifyUser.Moderator = true;
- }
- else
- {
- return false;
- }
- }
- catch (KeyNotFoundException)
- {
- try
- {
- int playerId = Database.GetUserid(username);
-
- if (privledgeLevel == "NORMAL")
- {
- Database.SetUserAdmin(playerId, false);
- Database.SetUserMod(playerId, false);
- }
- else if (privledgeLevel == "ADMIN")
- {
- Database.SetUserAdmin(playerId, true);
- Database.SetUserMod(playerId, true);
- }
- else if (privledgeLevel == "MOD" || privledgeLevel == "MODERATOR")
- {
- Database.SetUserAdmin(playerId, false);
- Database.SetUserMod(playerId, true);
- }
- else
- {
- return false;
- }
- }
- catch (KeyNotFoundException) { return false; };
- };
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
-
- return true;
- }
-
- public static bool Message(string message, string[] args, User user)
- {
-
- string serverAnnoucement = String.Join(" ", args);
-
- byte[] chatLeftPacket = PacketBuilder.CreateChat(Messages.FormatServerAnnoucement(serverAnnoucement), PacketBuilder.CHAT_BOTTOM_LEFT);
- byte[] chatRightPacket = PacketBuilder.CreateChat(Messages.FormatServerAnnoucement(serverAnnoucement), PacketBuilder.CHAT_BOTTOM_RIGHT);
-
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- {
- client.SendPacket(chatLeftPacket);
- client.SendPacket(chatRightPacket);
- }
- }
-
- return true;
- }
- public static bool Shutdown(string message, string[] args, User user)
- {
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- GameServer.ShutdownServer("Administrator initiated");
-
- return true;
- }
- public static bool Give(string message, string[] args, User user)
- {
- if (args.Length <= 0)
- return false;
- if(args[0].ToUpper() == "OBJECT")
- {
- int itemId = 0;
- try
- {
- if(args[1] != "RANDOM")
- {
- itemId = int.Parse(args[1]);
- }
- else
- {
- itemId = Item.GetRandomItem().Id;
- }
-
- Item.GetItemById(itemId); // Calling this makes sure this item id exists.
-
- ItemInstance newItemInstance = new ItemInstance(itemId);
-
- if (itemId == Item.Present)
- newItemInstance.Data = Item.GetRandomItem().Id;
-
- if (args.Length >= 3)
- {
- if(args[2] == "ALL")
- {
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- {
- ItemInstance itmInstance = new ItemInstance(itemId);
-
- if (itemId == Item.Present)
- itmInstance.Data = Item.GetRandomItem().Id;
-
- client.User.Inventory.AddIgnoringFull(itmInstance);
- }
- }
- }
- else
- {
- findNamePartial(args[2]).Inventory.AddIgnoringFull(newItemInstance);
- }
- }
- else
- {
- user.Inventory.AddIgnoringFull(newItemInstance);
- }
- }
- catch(Exception)
- {
- return false;
- }
- }
- else if (args[0].ToUpper() == "HORSE")
- {
- int horseId = 0;
- try
- {
- horseId = int.Parse(args[1]);
- HorseInstance horse = new HorseInstance(HorseInfo.GetBreedById(horseId));
-
- if (args.Length >= 3)
- {
- findNamePartial(args[2]).HorseInventory.AddHorse(horse);
- }
- else
- {
- user.HorseInventory.AddHorse(horse);
- }
- }
- catch (Exception)
- {
- return false;
- }
- }
- else if(args[0].ToUpper() == "AWARD")
- {
- int awardId = 0;
- try
- {
- awardId = int.Parse(args[1]);
- if (args.Length >= 3)
- {
- findNamePartial(args[2]).Awards.AddAward(Award.GetAwardById(awardId));
- }
- else
- {
- user.Awards.AddAward(Award.GetAwardById(awardId));
- }
-
- }
- catch (Exception)
- {
- return false;
- }
- }
- else if (args[0].ToUpper() == "MONEY")
- {
- int money = 0;
- try
- {
- money = int.Parse(args[1]);
- if (args.Length >= 3)
- {
- findNamePartial(args[2]).AddMoney(money);
- }
- else
- {
- user.AddMoney(money);
- }
- }
- catch (Exception)
- {
- return false;
- }
- }
- else if (args[0].ToUpper() == "QUEST")
- {
- int questId = 0;
- try
- {
- questId = int.Parse(args[1]);
- if(args.Length >= 3)
- {
- if (args[2].ToUpper() == "FORCE")
- {
- Quest.CompleteQuest(user, Quest.GetQuestById(questId));
- goto msg;
- }
- }
- Quest.ActivateQuest(user, Quest.GetQuestById(questId));
- }
- catch (Exception)
- {
- return false;
- }
- }
- else
- {
- return false;
- }
- msg:;
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
-
- public static bool Swf(string message, string[] args, User user)
- {
- if (args.Length <= 0)
- return false;
-
-
- try
- {
- string swfName = args[0];
- string swfUser = user.Username;
- if (args.Length <= 2)
- swfUser = args[1];
-
- byte[] packetBytes = PacketBuilder.CreateSwfModule(swfName, PacketBuilder.PACKET_SWF_MODULE_FORCE);
- if (swfUser.ToUpper() == "ALL")
- {
- foreach (GameClient client in GameClient.ConnectedClients)
- {
- if (client.LoggedIn)
- client.SendPacket(packetBytes);
- }
- }
- else
- {
- User player = findNamePartial(swfUser);
- player.Client.SendPacket(packetBytes);
- }
- }
- catch (Exception)
- {
- return false;
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
-
- public static bool UnBan(string message, string[] args, User user)
- {
- if(args.Length <= 0)
- return false;
-
- try{
- string userName = args[0];
- int id = Database.GetUserid(userName);
- Database.UnBanUser(id);
- }
- catch(Exception e)
- {
- Logger.ErrorPrint(e.Message);
- return false;
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
-
- public static bool Version(string message, string[] args, User user)
- {
- // Get current version and send to client
- byte[] versionPacket = PacketBuilder.CreateChat(ServerVersion.GetBuildString(), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(versionPacket);
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatPlayerCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
- public static bool Ban(string message, string[] args, User user)
- {
- if (args.Length <= 0)
- return false;
-
- try
- {
- string userName = args[0];
- int id = Database.GetUserid(userName);
- string ip = Database.GetIpAddress(id);
- string reason = "NONE SPECIFIED";
- if (args.Length >= 2)
- {
- reason = string.Join(" ", args, 1, args.Length - 1);
- }
-
- Database.BanUser(id, ip, reason);
- }
- catch(Exception)
- {
- return false;
- }
- try{
- User bannedUser = GameServer.GetUserByName(args[0]);
- bannedUser.Client.Kick(Messages.KickReasonBanned);
- }
- catch(KeyNotFoundException){};
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
- public static bool Escape(string message, string[] args, User user)
- {
-
- user.Teleport(Map.ModIsleX, Map.ModIsleY);
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message) + Messages.ModIsleMessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
-
- public static bool Stealth(string message, string[] args, User user)
- {
-
- user.Stealth = !user.Stealth;
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
- public static bool NoClip(string message, string[] args, User user)
- {
- user.NoClip = !user.NoClip;
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
-
- public static bool Rules(string message, string[] args, User user)
- {
- if (args.Length <= 0)
- return false;
-
- try
- {
- User toSend = GameServer.GetUserByName(args[0]);
-
- toSend.Teleport(Map.RulesIsleX, Map.RulesIsleY);
- byte[] studyTheRulesMsg = PacketBuilder.CreateChat(Messages.RulesIsleSentMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- toSend.Client.SendPacket(studyTheRulesMsg);
- }
- catch (KeyNotFoundException)
- {
- return false;
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message)+Messages.FormatRulesCommandMessage(args[0]), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
-
- public static bool Prison(string message, string[] args, User user)
- {
-
- if (args.Length <= 0)
- return false;
-
- try
- {
- User toSend = GameServer.GetUserByName(args[0]);
-
- toSend.Teleport(Map.PrisonIsleX, Map.PrisonIsleY);
- byte[] dontDoTheTime = PacketBuilder.CreateChat(Messages.PrisonIsleSentMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- toSend.Client.SendPacket(dontDoTheTime);
- }
- catch (KeyNotFoundException)
- {
- return false;
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message) + Messages.FormatPrisonCommandMessage(args[0]), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
-
- }
- public static bool Kick(string message, string[] args, User user)
- {
-
- if (args.Length <= 0)
- return false;
-
- try
- {
- User toKick = GameServer.GetUserByName(args[0]);
-
- if (args.Length >= 2)
- {
- string reason = string.Join(" ", args, 1, args.Length - 1);
- toKick.Client.Kick(reason);
- }
- else
- {
- toKick.Client.Kick(Messages.KickReasonKicked);
- }
- }
- catch (KeyNotFoundException)
- {
- return false;
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
-
- public static bool Jump(string message, string[] args, User user)
- {
- if (args.Length < 2)
- return false;
-
-
- try
- {
- User tp = findNamePartial(args[0]);
- if (args[1].ToUpper() == "HERE")
- tp.Teleport(user.X, user.Y);
- }
- catch (KeyNotFoundException)
- {
- return false;
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
-
- public static bool DelItem(string message, string[] args, User user)
- {
- if (args.Length <= 0)
- return false;
-
- int itemId = 0;
- try
- {
- itemId = int.Parse(args[0]);
- User target = user;
- if (args.Length > 1)
- target = findNamePartial(args[1]);
-
- if (target.Inventory.HasItemId(itemId))
- {
- InventoryItem itm = target.Inventory.GetItemByItemId(itemId);
-
- foreach (ItemInstance instance in itm.ItemInstances)
- {
- target.Inventory.Remove(instance);
- }
- }
- }
- catch (Exception)
- {
- return false;
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
- public static bool Goto(string message, string[] args, User user)
- {
- if (args.Length <= 0)
- return false;
- if(args[0].ToUpper() == "PLAYER")
- {
- if(args.Length < 2)
- return false;
- try
- {
- User tpTo = findNamePartial(args[1]);
- user.Teleport(tpTo.X, tpTo.Y);
- }
- catch (KeyNotFoundException)
- {
- return false;
- }
- }
- else if(args[0].ToUpper() == "AREA")
- {
- if (args.Length < 2)
- return false;
-
- try
- {
- string area = string.Join(" ", args, 1, args.Length - 1);
- bool teleported = false;
- foreach(World.Waypoint waypnt in World.Waypoints)
- {
- if(waypnt.Name.ToLower().StartsWith(area.ToLower()))
- {
- user.Teleport(waypnt.PosX, waypnt.PosY);
- teleported = true;
- break;
- }
- }
- if(!teleported)
- return false;
- }
- catch(Exception)
- {
- return false;
- }
- }
- else if(args[0].ToUpper() == "NPC")
- {
- if (args.Length < 2)
- return false;
-
- try
- {
- string npcName = string.Join(" ", args, 1, args.Length - 1);
- bool teleported = false;
- foreach (Npc.NpcEntry npc in Npc.NpcList)
- {
- if (npc.Name.ToLower().StartsWith(npcName.ToLower()))
- {
- user.Teleport(npc.X, npc.Y);
- teleported = true;
- break;
- }
- }
- if (!teleported)
- return false;
- }
- catch (Exception)
- {
- return false;
- }
- }
- else if(args[0].Contains(","))
- {
- try
- {
- string[] xy = args[0].Split(',');
- int x = int.Parse(xy[0]);
- int y = int.Parse(xy[1]);
- user.Teleport(x, y);
- }
- catch(FormatException)
- {
- return false;
- }
- }
- else
- {
- return false;
- }
-
-
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
-
- public static bool ModHorse(string message, string[] args, User user)
- {
- if (args.Length < 3)
- return false;
-
-
- int id = 0;
- int amount = 0;
- try
- {
- id = int.Parse(args[0]);
- if(args[1].ToUpper() != "COLOR")
- amount = int.Parse(args[2]);
- }
- catch (Exception)
- {
- return false;
- }
-
-
- int i = 0;
- foreach (HorseInfo.Category category in HorseInfo.HorseCategories)
- {
- HorseInstance[] horsesInCategory = user.HorseInventory.GetHorsesInCategory(category).OrderBy(o => o.Name).ToArray();
- if (horsesInCategory.Length > 0)
- {
- foreach (HorseInstance instance in horsesInCategory)
- {
- i++;
-
- if(i == id)
- {
- switch (args[1].ToUpper())
- {
- case "INTELLIGENCE":
- instance.AdvancedStats.Inteligence = amount;
- break;
- case "PERSONALITY":
- instance.AdvancedStats.Personality = amount;
- break;
- case "HEIGHT":
- instance.AdvancedStats.Height = amount;
- break;
- case "COLOR":
- instance.Color = args[2].ToLower();
- break;
- case "EXPERIENCE":
- instance.BasicStats.Experience = amount;
- break;
- case "SPEED":
- instance.AdvancedStats.Speed = amount;
- break;
- case "STRENGTH":
- instance.AdvancedStats.Strength = amount;
- break;
- case "CONFORMATION":
- instance.AdvancedStats.Conformation = amount;
- break;
- case "ENDURANCE":
- instance.AdvancedStats.Endurance = amount;
- break;
- case "AGILITY":
- instance.AdvancedStats.Agility = amount;
- break;
- }
- }
- }
- }
- }
-
-
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
-
- public static bool Warp(string message, string[] args, User user)
- {
-
- string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message);
-
- if (user.CurrentlyRidingHorse == null)
- goto onlyRiddenUnicorn;
-
- if (user.CurrentlyRidingHorse.Breed.Type == "unicorn")
- goto doCommand;
-
- goto onlyRiddenUnicorn;
-
- onlyRiddenUnicorn:;
- formattedmessage = Messages.OnlyUnicornCanWarp;
- goto sendText;
-
-
- cantUnderstandCommand:;
- formattedmessage += Messages.FailedToUnderstandLocation;
- goto sendText;
-
-
- doCommand:;
-
- string areaName = string.Join(" ", args).ToLower();
- areaName = areaName.Trim();
- if (args.Length <= 0)
- areaName = "horse isle";
- try
- {
- User tp = GameServer.GetUserByName(areaName);
-
- user.Teleport(tp.X, tp.Y);
- formattedmessage += Messages.SuccessfullyWarpedToPlayer;
- goto playSwf;
-
- }
- catch (KeyNotFoundException)
- {
- foreach (World.Waypoint waypoint in World.Waypoints)
- {
- if (waypoint.Name.ToLower().StartsWith(areaName))
- {
- user.Teleport(waypoint.PosX, waypoint.PosY);
- formattedmessage += Messages.SuccessfullyWarpedToLocation;
- goto playSwf;
- }
- }
-
- goto cantUnderstandCommand;
- }
-
- playSwf:;
- byte[] swfPacket = PacketBuilder.CreateSwfModule("warpcutscene", PacketBuilder.PACKET_SWF_MODULE_CUTSCENE);
- user.Client.SendPacket(swfPacket);
-
-
- sendText:;
- byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
-
- public static bool CallHorse(string message, string[] args, User user)
- {
-
- if (args.Length <= 0)
- return false;
- string formattedmessage = "";
- try
- {
- if (args[0].ToUpper() != "HORSE")
- return false;
-
- formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message);
-
- WildHorse horse = WildHorse.WildHorses[GameServer.RandomNumberGenerator.Next(0, WildHorse.WildHorses.Length)];
- horse.X = user.X;
- horse.Y = user.Y;
-
- GameServer.UpdateAreaForAll(user.X, user.Y);
- }
- catch (Exception)
- {
- return false;
- }
-
-
- byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
-
- }
-
- public static bool AutoReply(string message, string[] args, User user)
- {
- string replyMessage = string.Join(" ", args);
- string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message);
- replyMessage = replyMessage.Trim();
-
- if (replyMessage.Length > 1024)
- {
- byte[] tooLong = PacketBuilder.CreateChat(Messages.AutoReplyTooLong, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(tooLong);
-
- return false;
- }
-
- Object violationReason = ChatMsg.FilterMessage(replyMessage);
- if (violationReason != null)
- {
- byte[] hasVios = PacketBuilder.CreateChat(Messages.AutoReplyHasViolations, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(hasVios);
-
- return false;
- }
-
- user.AutoReplyText = replyMessage;
-
- byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
- }
- public static bool Dance(string message, string[] args, User user)
- {
- string moves = string.Join(" ", args).ToLower();
- string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message);
-
- if (user.ActiveDance != null)
- user.ActiveDance.Dispose();
-
- user.ActiveDance = new Dance(user, moves);
-
- byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
-
- }
-
- public static bool Quiz(string message, string[] args, User user)
- {
- bool quizActive = (GameServer.QuizEvent != null);
- if(user.InRealTimeQuiz)
- {
- byte[] cantEnterRealTimeQuiz = PacketBuilder.CreateChat(Messages.EventAlreadyEnteredRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(cantEnterRealTimeQuiz);
- return false;
- }
- if (quizActive)
- {
- string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message);
-
- RealTimeQuiz.Participent participent = GameServer.QuizEvent.JoinEvent(user);
-
- if(participent.Quit)
- {
- byte[] quizQuit = PacketBuilder.CreateChat(Messages.EventQuitRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(quizQuit);
-
- return false;
- }
-
- participent.UpdateParticipent();
- byte[] enteredRealTimeQuiz = PacketBuilder.CreateChat(Messages.EventEnteredRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(enteredRealTimeQuiz);
-
- byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
- return true;
-
- }
- else
- {
- byte[] quizUnavailable = PacketBuilder.CreateChat(Messages.EventUnavailableRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(quizUnavailable);
- return false;
- }
-
- }
-
- public static bool Mute(string message, string[] args, User user)
- {
- string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message);
-
- if (args.Length <= 0)
- {
- formattedmessage += Messages.MuteHelp;
- }
- else
- {
-
- string muteType = args[0];
-
- if (muteType.ToUpper() == "GLOBAL")
- {
- user.MuteGlobal = true;
- }
- else if (muteType.ToUpper() == "ISLAND")
- {
- user.MuteIsland = true;
- }
- else if (muteType.ToUpper() == "NEAR")
- {
- user.MuteNear = true;
- }
- else if (muteType.ToUpper() == "HERE")
- {
- user.MuteHere = true;
- }
- else if (muteType.ToUpper() == "BUDDY")
- {
- user.MuteBuddy = true;
- }
- else if (muteType.ToUpper() == "SOCIALS")
- {
- user.MuteSocials = true;
- }
- else if (muteType.ToUpper() == "PM")
- {
- user.MutePrivateMessage = true;
- }
- else if (muteType.ToUpper() == "BR")
- {
- user.MuteBuddyRequests = true;
- }
- else if (muteType.ToUpper() == "LOGINS")
- {
- user.MuteLogins = true;
- }
- else if (muteType.ToUpper() == "ADS")
- {
- user.MuteAds = true;
- }
- else if (muteType.ToUpper() == "ALL")
- {
- user.MuteAll = true;
- user.MuteGlobal = true;
- user.MuteIsland = true;
- user.MuteNear = true;
- user.MuteHere = true;
- user.MuteBuddy = true;
- user.MuteSocials = true;
- user.MutePrivateMessage = true;
- user.MuteBuddyRequests = true;
- user.MuteLogins = true;
- }
- else
- {
- formattedmessage += Messages.MuteHelp;
- }
- }
-
- byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
-
- public static bool UnMute(string message, string[] args, User user)
- {
- string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message);
-
- if (args.Length <= 0)
- {
- formattedmessage += Messages.UnMuteHelp;
- }
- else
- {
- string muteType = args[0];
-
- if (muteType.ToUpper() == "GLOBAL")
- {
- user.MuteGlobal = false;
- }
- else if (muteType.ToUpper() == "ISLAND")
- {
- user.MuteIsland = false;
- }
- else if (muteType.ToUpper() == "ADS")
- {
- user.MuteAds = false;
- }
- else if (muteType.ToUpper() == "NEAR")
- {
- user.MuteNear = false;
- }
- else if (muteType.ToUpper() == "HERE")
- {
- user.MuteHere = false;
- }
- else if (muteType.ToUpper() == "BUDDY")
- {
- user.MuteBuddy = false;
- }
- else if (muteType.ToUpper() == "SOCIALS")
- {
- user.MuteSocials = false;
- }
- else if (muteType.ToUpper() == "PM")
- {
- user.MutePrivateMessage = false;
- }
- else if (muteType.ToUpper() == "BR")
- {
- user.MuteBuddyRequests = false;
- }
- else if (muteType.ToUpper() == "LOGINS")
- {
- user.MuteLogins = false;
- }
- else if (muteType.ToUpper() == "ALL")
- {
- user.MuteAll = false;
- user.MuteGlobal = false;
- user.MuteIsland = false;
- user.MuteNear = false;
- user.MuteHere = false;
- user.MuteBuddy = false;
- user.MuteSocials = false;
- user.MutePrivateMessage = false;
- user.MuteBuddyRequests = false;
- user.MuteLogins = false;
- }
- else
- {
- formattedmessage += Messages.UnMuteHelp;
- }
- }
-
-
- byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
-
- return true;
- }
- }
-}
+using HISP.Player;
+using HISP.Server;
+using HISP.Game.Items;
+using System;
+using System.Collections.Generic;
+using HISP.Game.Events;
+using HISP.Game.Horse;
+using System.Linq;
+using HISP.Game.Inventory;
+using System.Threading;
+
+namespace HISP.Game.Chat
+{
+ public class Command
+ {
+
+ private static User findNamePartial(string name)
+ {
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client == null)
+ continue;
+ if (client.LoggedIn)
+ {
+ if (client.LoggedinUser.Username.ToLower().StartsWith(name.ToLower()))
+ {
+ return client.LoggedinUser;
+ }
+ }
+ }
+ throw new KeyNotFoundException("name not found");
+ }
+
+ public static bool Shutdown(string message, string[] args, User user)
+ {
+ if (!user.Administrator)
+ return false;
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ GameServer.ShutdownServer();
+
+ return true;
+ }
+ public static bool Give(string message, string[] args, User user)
+ {
+ if (args.Length <= 0)
+ return false;
+ if (!user.Administrator)
+ return false;
+ if(args[0].ToUpper() == "OBJECT")
+ {
+ int itemId = 0;
+ try
+ {
+ if(args[1] != "RANDOM")
+ {
+ itemId = int.Parse(args[1]);
+ }
+ else
+ {
+ itemId = Item.GetRandomItem().Id;
+ }
+
+ Item.GetItemById(itemId); // Calling this makes sure this item id exists.
+
+ ItemInstance newItemInstance = new ItemInstance(itemId);
+
+ if (itemId == Item.Present)
+ newItemInstance.Data = Item.GetRandomItem().Id;
+
+ if (args.Length >= 3)
+ {
+ if(args[2] == "ALL")
+ {
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ {
+ ItemInstance itmInstance = new ItemInstance(itemId);
+
+ if (itemId == Item.Present)
+ itmInstance.Data = Item.GetRandomItem().Id;
+
+ client.LoggedinUser.Inventory.AddIgnoringFull(itmInstance);
+ }
+ }
+ }
+ else
+ {
+ findNamePartial(args[2]).Inventory.AddIgnoringFull(newItemInstance);
+ }
+ }
+ else
+ {
+ user.Inventory.AddIgnoringFull(newItemInstance);
+ }
+ }
+ catch(Exception)
+ {
+ return false;
+ }
+ }
+ else if (args[0].ToUpper() == "HORSE")
+ {
+ int horseId = 0;
+ try
+ {
+ horseId = int.Parse(args[1]);
+ HorseInstance horse = new HorseInstance(HorseInfo.GetBreedById(horseId));
+
+ if (args.Length >= 3)
+ {
+ findNamePartial(args[2]).HorseInventory.AddHorse(horse);
+ }
+ else
+ {
+ user.HorseInventory.AddHorse(horse);
+ }
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+ else if(args[0].ToUpper() == "AWARD")
+ {
+ int awardId = 0;
+ try
+ {
+ awardId = int.Parse(args[1]);
+ if (args.Length >= 3)
+ {
+ findNamePartial(args[2]).Awards.AddAward(Award.GetAwardById(awardId));
+ }
+ else
+ {
+ user.Awards.AddAward(Award.GetAwardById(awardId));
+ }
+
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+ else if (args[0].ToUpper() == "MONEY")
+ {
+ int money = 0;
+ try
+ {
+ money = int.Parse(args[1]);
+ if (args.Length >= 3)
+ {
+ findNamePartial(args[2]).AddMoney(money);
+ }
+ else
+ {
+ user.AddMoney(money);
+ }
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+ else if (args[0].ToUpper() == "QUEST")
+ {
+ int questId = 0;
+ try
+ {
+ questId = int.Parse(args[1]);
+ if(args.Length >= 3)
+ {
+ if (args[2].ToUpper() == "FORCE")
+ {
+ Quest.CompleteQuest(user, Quest.GetQuestById(questId));
+ goto msg;
+ }
+ }
+ Quest.ActivateQuest(user, Quest.GetQuestById(questId));
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+ msg:;
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+
+ public static bool Swf(string message, string[] args, User user)
+ {
+ if (args.Length <= 2)
+ return false;
+
+ if (!user.Administrator && !user.Moderator)
+ return false;
+
+ try
+ {
+ string swfName = args[0];
+ string swfUser = args[1];
+ byte[] packetBytes = PacketBuilder.CreateSwfModulePacket(swfName, PacketBuilder.PACKET_SWF_MODULE_FORCE);
+ if (swfUser.ToUpper() == "ALL")
+ {
+ foreach (GameClient client in GameClient.ConnectedClients)
+ {
+ if (client.LoggedIn)
+ client.SendPacket(packetBytes);
+ }
+ }
+ else
+ {
+ User player = findNamePartial(args[1]);
+ player.LoggedinClient.SendPacket(packetBytes);
+ }
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+
+ public static bool UnBan(string message, string[] args, User user)
+ {
+ if(args.Length <= 0)
+ return false;
+ if(!user.Administrator && !user.Moderator)
+ return false;
+
+ try{
+ string userName = args[0];
+ int id = Database.GetUserid(userName);
+ Database.UnBanUser(id);
+ }
+ catch(Exception e)
+ {
+ Logger.ErrorPrint(e.Message);
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+
+ public static bool Version(string message, string[] args, User user)
+ {
+ // Get current version and send to client
+ byte[] versionPacket = PacketBuilder.CreateChat(ServerVersion.GetBuildString(), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(versionPacket);
+
+ // Send Command complete message to client.
+ byte[] versionCommandCompletePacket = PacketBuilder.CreateChat(Messages.FormatPlayerCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(versionCommandCompletePacket);
+ return true;
+ }
+ public static bool Ban(string message, string[] args, User user)
+ {
+ if (args.Length <= 0)
+ return false;
+ if (!user.Administrator && !user.Moderator)
+ return false;
+ try
+ {
+ string userName = args[0];
+ int id = Database.GetUserid(userName);
+ string ip = Database.GetIpAddress(id);
+ string reason = "NONE SPECIFIED";
+ if (args.Length >= 2)
+ {
+ reason = string.Join(" ", args, 1, args.Length - 1);
+ }
+
+ Database.BanUser(id, ip, reason);
+ }
+ catch(Exception)
+ {
+ return false;
+ }
+ try{
+ User bannedUser = GameServer.GetUserByName(args[0]);
+ bannedUser.LoggedinClient.Kick(Messages.KickReasonBanned);
+ }
+ catch(KeyNotFoundException){};
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+ public static bool Escape(string message, string[] args, User user)
+ {
+ if (!user.Administrator && !user.Moderator)
+ return false;
+
+ user.Teleport(Map.ModIsleX, Map.ModIsleY);
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)) + Messages.ModIsleMessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+
+ public static bool Stealth(string message, string[] args, User user)
+ {
+ if (!user.Administrator && !user.Moderator)
+ return false;
+
+ user.Stealth = !user.Stealth;
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+ public static bool NoClip(string message, string[] args, User user)
+ {
+ if (!user.Administrator)
+ return false;
+
+ user.NoClip = !user.NoClip;
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+
+ public static bool Rules(string message, string[] args, User user)
+ {
+ if (!user.Administrator && !user.Moderator)
+ return false;
+
+ if (args.Length <= 0)
+ return false;
+
+ try
+ {
+ User toSend = GameServer.GetUserByName(args[0]);
+
+ toSend.Teleport(Map.RulesIsleX, Map.RulesIsleY);
+ byte[] studyTheRulesMsg = PacketBuilder.CreateChat(Messages.RulesIsleSentMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ toSend.LoggedinClient.SendPacket(studyTheRulesMsg);
+ }
+ catch (KeyNotFoundException)
+ {
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1))+Messages.FormatRulesCommandMessage(args[0]), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+
+ public static bool Prison(string message, string[] args, User user)
+ {
+ if (!user.Administrator && !user.Moderator)
+ return false;
+
+ if (args.Length <= 0)
+ return false;
+
+ try
+ {
+ User toSend = GameServer.GetUserByName(args[0]);
+
+ toSend.Teleport(Map.PrisonIsleX, Map.PrisonIsleY);
+ byte[] dontDoTheTime = PacketBuilder.CreateChat(Messages.PrisonIsleSentMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ toSend.LoggedinClient.SendPacket(dontDoTheTime);
+ }
+ catch (KeyNotFoundException)
+ {
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)) + Messages.FormatPrisonCommandMessage(args[0]), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+
+ }
+ public static bool Kick(string message, string[] args, User user)
+ {
+ if (!user.Administrator && !user.Moderator)
+ return false;
+
+ if (args.Length <= 0)
+ return false;
+
+ try
+ {
+ User toKick = GameServer.GetUserByName(args[0]);
+
+ if (args.Length >= 2)
+ {
+ string reason = string.Join(" ", args, 1, args.Length - 1);
+ toKick.LoggedinClient.Kick(reason);
+ }
+ else
+ {
+ toKick.LoggedinClient.Kick(Messages.KickReasonKicked);
+ }
+ }
+ catch (KeyNotFoundException)
+ {
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+
+ public static bool Jump(string message, string[] args, User user)
+ {
+ if (args.Length <= 0)
+ return false;
+ if (!user.Administrator)
+ return false;
+
+ if(args.Length < 2)
+ {
+ return false;
+ }
+
+ try
+ {
+ User tp = findNamePartial(args[0]);
+ if (args[1].ToUpper() == "HERE")
+ tp.Teleport(user.X, user.Y);
+ }
+ catch (KeyNotFoundException)
+ {
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+
+ public static bool DelItem(string message, string[] args, User user)
+ {
+ if (args.Length <= 0)
+ return false;
+ if (!user.Administrator)
+ return false;
+
+ int itemId = 0;
+ try
+ {
+ itemId = int.Parse(args[0]);
+ User target = user;
+ if (args.Length > 1)
+ target = findNamePartial(args[1]);
+
+ if (target.Inventory.HasItemId(itemId))
+ {
+ InventoryItem itm = target.Inventory.GetItemByItemId(itemId);
+
+ foreach (ItemInstance instance in itm.ItemInstances)
+ {
+ target.Inventory.Remove(instance);
+ }
+ }
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+ public static bool Goto(string message, string[] args, User user)
+ {
+ if (args.Length <= 0)
+ return false;
+ if (!user.Administrator)
+ return false;
+ if(args[0].ToUpper() == "PLAYER")
+ {
+ if(args.Length < 2)
+ return false;
+ try
+ {
+ User tpTo = findNamePartial(args[1]);
+ user.Teleport(tpTo.X, tpTo.Y);
+ }
+ catch (KeyNotFoundException)
+ {
+ return false;
+ }
+ }
+ else if(args[0].ToUpper() == "AREA")
+ {
+ if (args.Length < 2)
+ return false;
+
+ try
+ {
+ string area = string.Join(" ", args, 1, args.Length - 1);
+ bool teleported = false;
+ foreach(World.Waypoint waypnt in World.Waypoints)
+ {
+ if(waypnt.Name.ToLower().StartsWith(area.ToLower()))
+ {
+ user.Teleport(waypnt.PosX, waypnt.PosY);
+ teleported = true;
+ break;
+ }
+ }
+ if(!teleported)
+ return false;
+ }
+ catch(Exception)
+ {
+ return false;
+ }
+ }
+ else if(args[0].ToUpper() == "NPC")
+ {
+ if (args.Length < 2)
+ return false;
+
+ try
+ {
+ string npcName = string.Join(" ", args, 1, args.Length - 1);
+ bool teleported = false;
+ foreach (Npc.NpcEntry npc in Npc.NpcList)
+ {
+ if (npc.Name.ToLower().StartsWith(npcName.ToLower()))
+ {
+ user.Teleport(npc.X, npc.Y);
+ teleported = true;
+ break;
+ }
+ }
+ if (!teleported)
+ return false;
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+ else if(args[0].Contains(","))
+ {
+ try
+ {
+ string[] xy = args[0].Split(',');
+ int x = int.Parse(xy[0]);
+ int y = int.Parse(xy[1]);
+ user.Teleport(x, y);
+ }
+ catch(FormatException)
+ {
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+
+
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+
+ public static bool ModHorse(string message, string[] args, User user)
+ {
+ if (!user.Administrator)
+ return false;
+
+ if (args.Length < 3)
+ return false;
+
+
+ int id = 0;
+ int amount = 0;
+ try
+ {
+ id = int.Parse(args[0]);
+ if(args[1].ToUpper() != "COLOR")
+ amount = int.Parse(args[2]);
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+
+
+ int i = 0;
+ foreach (HorseInfo.Category category in HorseInfo.HorseCategories)
+ {
+ HorseInstance[] horsesInCategory = user.HorseInventory.GetHorsesInCategory(category).OrderBy(o => o.Name).ToArray();
+ if (horsesInCategory.Length > 0)
+ {
+ foreach (HorseInstance instance in horsesInCategory)
+ {
+ i++;
+
+ if(i == id)
+ {
+ switch (args[1].ToUpper())
+ {
+ case "INTELLIGENCE":
+ instance.AdvancedStats.Inteligence = amount;
+ break;
+ case "PERSONALITY":
+ instance.AdvancedStats.Personality = amount;
+ break;
+ case "HEIGHT":
+ instance.AdvancedStats.Height = amount;
+ break;
+ case "COLOR":
+ instance.Color = args[2].ToLower();
+ break;
+ case "EXPERIENCE":
+ instance.BasicStats.Experience = amount;
+ break;
+ case "SPEED":
+ instance.AdvancedStats.Speed = amount;
+ break;
+ case "STRENGTH":
+ instance.AdvancedStats.Strength = amount;
+ break;
+ case "CONFORMATION":
+ instance.AdvancedStats.Conformation = amount;
+ break;
+ case "ENDURANCE":
+ instance.AdvancedStats.Endurance = amount;
+ break;
+ case "AGILITY":
+ instance.AdvancedStats.Agility = amount;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message.Substring(1)), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+
+ public static bool Warp(string message, string[] args, User user)
+ {
+
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+
+ if (user.CurrentlyRidingHorse == null)
+ goto onlyRiddenUnicorn;
+
+ if (user.CurrentlyRidingHorse.Breed.Type == "unicorn")
+ goto doCommand;
+
+ goto onlyRiddenUnicorn;
+
+ onlyRiddenUnicorn:;
+ formattedmessage = Messages.OnlyUnicornCanWarp;
+ goto sendText;
+
+
+ cantUnderstandCommand:;
+ formattedmessage += Messages.FailedToUnderstandLocation;
+ goto sendText;
+
+
+ doCommand:;
+
+ string areaName = string.Join(" ", args).ToLower();
+ areaName = areaName.Trim();
+ if (args.Length <= 0)
+ areaName = "horse isle";
+ try
+ {
+ User tp = GameServer.GetUserByName(areaName);
+
+ user.Teleport(tp.X, tp.Y);
+ formattedmessage += Messages.SuccessfullyWarpedToPlayer;
+ goto playSwf;
+
+ }
+ catch (KeyNotFoundException)
+ {
+ foreach (World.Waypoint waypoint in World.Waypoints)
+ {
+ if (waypoint.Name.ToLower().StartsWith(areaName))
+ {
+ user.Teleport(waypoint.PosX, waypoint.PosY);
+ formattedmessage += Messages.SuccessfullyWarpedToLocation;
+ goto playSwf;
+ }
+ }
+
+ goto cantUnderstandCommand;
+ }
+
+ playSwf:;
+ byte[] swfPacket = PacketBuilder.CreateSwfModulePacket("warpcutscene", PacketBuilder.PACKET_SWF_CUTSCENE);
+ user.LoggedinClient.SendPacket(swfPacket);
+
+
+ sendText:;
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+
+ public static bool CallHorse(string message, string[] args, User user)
+ {
+ if (!user.Administrator)
+ return false;
+
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+
+ WildHorse horse = WildHorse.WildHorses[GameServer.RandomNumberGenerator.Next(0, WildHorse.WildHorses.Length)];
+ horse.X = user.X;
+ horse.Y = user.Y;
+
+ GameServer.UpdateAreaForAll(user.X, user.Y);
+
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+
+ }
+
+ public static bool AutoReply(string message, string[] args, User user)
+ {
+ string replyMessage = string.Join(" ", args);
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+ replyMessage = replyMessage.Trim();
+
+ if (replyMessage.Length > 1024)
+ {
+ byte[] tooLong = PacketBuilder.CreateChat(Messages.AutoReplyTooLong, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(tooLong);
+
+ return false;
+ }
+
+ Object violationReason = Chat.FilterMessage(replyMessage);
+ if (violationReason != null)
+ {
+ byte[] hasVios = PacketBuilder.CreateChat(Messages.AutoReplyHasViolations, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(hasVios);
+
+ return false;
+ }
+
+ user.AutoReplyText = replyMessage;
+
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+ public static bool Dance(string message, string[] args, User user)
+ {
+ string moves = string.Join(" ", args).ToLower();
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+
+ if (user.ActiveDance != null)
+ user.ActiveDance.Dispose();
+
+ user.ActiveDance = new Dance(user, moves);
+
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+
+ }
+
+ public static bool Quiz(string message, string[] args, User user)
+ {
+ bool quizActive = (GameServer.QuizEvent != null);
+ if(user.InRealTimeQuiz)
+ {
+ byte[] cantEnterRealTimeQuiz = PacketBuilder.CreateChat(Messages.EventAlreadyEnteredRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(cantEnterRealTimeQuiz);
+ return false;
+ }
+ if (quizActive)
+ {
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+
+ RealTimeQuiz.Participent participent = GameServer.QuizEvent.JoinEvent(user);
+
+ if(participent.Quit)
+ {
+ byte[] quizQuit = PacketBuilder.CreateChat(Messages.EventQuitRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(quizQuit);
+
+ return false;
+ }
+
+ participent.UpdateParticipent();
+ byte[] enteredRealTimeQuiz = PacketBuilder.CreateChat(Messages.EventEnteredRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(enteredRealTimeQuiz);
+
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+
+ }
+ else
+ {
+ byte[] quizUnavailable = PacketBuilder.CreateChat(Messages.EventUnavailableRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(quizUnavailable);
+ return false;
+ }
+
+ }
+
+ public static bool Mute(string message, string[] args, User user)
+ {
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+
+ if (args.Length <= 0)
+ {
+ formattedmessage += Messages.MuteHelp;
+ goto leave;
+ }
+
+ string muteType = args[0];
+
+ if (muteType.ToUpper() == "GLOBAL")
+ {
+ user.MuteGlobal = true;
+ } else if (muteType.ToUpper() == "ISLAND")
+ {
+ user.MuteIsland = true;
+ } else if (muteType.ToUpper() == "NEAR")
+ {
+ user.MuteNear = true;
+ } else if (muteType.ToUpper() == "HERE")
+ {
+ user.MuteHere = true;
+ } else if (muteType.ToUpper() == "BUDDY")
+ {
+ user.MuteBuddy = true;
+ } else if (muteType.ToUpper() == "SOCIALS")
+ {
+ user.MuteSocials = true;
+ }
+ else if (muteType.ToUpper() == "PM")
+ {
+ user.MutePrivateMessage = true;
+ }
+ else if (muteType.ToUpper() == "BR")
+ {
+ user.MuteBuddyRequests = true;
+ }
+ else if (muteType.ToUpper() == "LOGINS")
+ {
+ user.MuteLogins = true;
+ }
+ else if (muteType.ToUpper() == "ADS")
+ {
+ user.MuteAds = true;
+ }
+ else if (muteType.ToUpper() == "ALL")
+ {
+ user.MuteAll = true;
+ user.MuteGlobal = true;
+ user.MuteIsland = true;
+ user.MuteNear = true;
+ user.MuteHere = true;
+ user.MuteBuddy = true;
+ user.MuteSocials = true;
+ user.MutePrivateMessage = true;
+ user.MuteBuddyRequests = true;
+ user.MuteLogins = true;
+ }
+ else
+ {
+ formattedmessage += Messages.MuteHelp;
+ goto leave;
+ }
+
+ leave:;
+
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+
+ public static bool UnMute(string message, string[] args, User user)
+ {
+ string formattedmessage = Messages.FormatPlayerCommandCompleteMessage(message.Substring(1));
+
+ if (args.Length <= 0)
+ {
+ formattedmessage += Messages.UnMuteHelp;
+ goto leave;
+ }
+
+ string muteType = args[0];
+
+ if (muteType.ToUpper() == "GLOBAL")
+ {
+ user.MuteGlobal = false;
+ }
+ else if (muteType.ToUpper() == "ISLAND")
+ {
+ user.MuteIsland = false;
+ }
+ else if (muteType.ToUpper() == "ADS")
+ {
+ user.MuteAds = false;
+ }
+ else if (muteType.ToUpper() == "NEAR")
+ {
+ user.MuteNear = false;
+ }
+ else if (muteType.ToUpper() == "HERE")
+ {
+ user.MuteHere = false;
+ }
+ else if (muteType.ToUpper() == "BUDDY")
+ {
+ user.MuteBuddy = false;
+ }
+ else if (muteType.ToUpper() == "SOCIALS")
+ {
+ user.MuteSocials = false;
+ }
+ else if (muteType.ToUpper() == "PM")
+ {
+ user.MutePrivateMessage = false;
+ }
+ else if (muteType.ToUpper() == "BR")
+ {
+ user.MuteBuddyRequests = false;
+ }
+ else if (muteType.ToUpper() == "LOGINS")
+ {
+ user.MuteLogins = false;
+ }
+ else if (muteType.ToUpper() == "ALL")
+ {
+ user.MuteAll = false;
+ user.MuteGlobal = false;
+ user.MuteIsland = false;
+ user.MuteNear = false;
+ user.MuteHere = false;
+ user.MuteBuddy = false;
+ user.MuteSocials = false;
+ user.MutePrivateMessage = false;
+ user.MuteBuddyRequests = false;
+ user.MuteLogins = false;
+ }
+ else
+ {
+ formattedmessage += Messages.UnMuteHelp;
+ goto leave;
+ }
+
+ leave:;
+
+ byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+
+ return true;
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs b/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs
deleted file mode 100755
index 9868011..0000000
--- a/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-using HISP.Player;
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-
-namespace HISP.Game.Chat
-{
- public class CommandRegister
- {
- private static List registeredComamnds = new List();
- public static CommandRegister[] RegisteredCommands
- {
- get
- {
- return registeredComamnds.ToArray();
- }
- }
- private Func commandCallback;
-
- public bool CmdRequiresAdmin;
- public bool CmdRequiresMod;
-
- public char CmdLetter;
- public string CmdName;
- public string CmdUsage;
- public CommandRegister(char cmdLetter, string cmdName, string cmdUsage, Func cmdCallback, bool cmdRequiresAdmin, bool cmdRequiresMod)
- {
- this.CmdLetter = cmdLetter;
- this.CmdName = cmdName.ToUpper(CultureInfo.InvariantCulture).Trim();
- this.CmdUsage = cmdUsage;
-
- this.CmdRequiresMod = cmdRequiresMod;
- this.CmdRequiresAdmin = cmdRequiresAdmin;
-
- this.commandCallback = cmdCallback;
-
- registeredComamnds.Add(this);
- }
-
- public bool HasPermission(User user)
- {
- if (CmdRequiresAdmin && !(user.Administrator))
- return false;
- if (CmdRequiresMod && !(user.Moderator || user.Administrator))
- return false;
-
- return true;
- }
-
- public bool Execute(string message, string[] args, User user)
- {
- if(HasPermission(user))
- return commandCallback(message, args, user);
- return false;
- }
- }
-}
diff --git a/HorseIsleServer/LibHISP/Game/Chat/SocialType.cs b/HorseIsleServer/LibHISP/Game/Chat/SocialType.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Events/IsleCardTradingGame.cs b/HorseIsleServer/LibHISP/Game/Events/IsleCardTradingGame.cs
old mode 100755
new mode 100644
index 2c9812b..288669d
--- a/HorseIsleServer/LibHISP/Game/Events/IsleCardTradingGame.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/IsleCardTradingGame.cs
@@ -54,16 +54,16 @@ namespace HISP.Game.Events
int totalTypes = 0;
foreach (int itemId in Item.TradingCards)
- if (client.User.Inventory.HasItemId(itemId))
- totalCards += client.User.Inventory.GetItemByItemId(itemId).ItemInstances.Length;
+ if (client.LoggedinUser.Inventory.HasItemId(itemId))
+ totalCards += client.LoggedinUser.Inventory.GetItemByItemId(itemId).ItemInstances.Length;
- if (client.User.Inventory.HasItemId(Item.ColtTradingCard))
+ if (client.LoggedinUser.Inventory.HasItemId(Item.ColtTradingCard))
totalTypes++;
- if (client.User.Inventory.HasItemId(Item.FillyTradingCard))
+ if (client.LoggedinUser.Inventory.HasItemId(Item.FillyTradingCard))
totalTypes++;
- if (client.User.Inventory.HasItemId(Item.MareTradingCard))
+ if (client.LoggedinUser.Inventory.HasItemId(Item.MareTradingCard))
totalTypes++;
- if (client.User.Inventory.HasItemId(Item.StallionTradingCard))
+ if (client.LoggedinUser.Inventory.HasItemId(Item.StallionTradingCard))
totalTypes++;
if(totalCards > 4)
@@ -93,12 +93,12 @@ namespace HISP.Game.Events
}
else if (totalTypes == 4)
{
- client.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.IsleCardsGameWin).Count++;
+ client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.IsleCardsGameWin).Count++;
byte[] wonIsleCardGame = PacketBuilder.CreateChat(Messages.EventWonIsleTradingGame, PacketBuilder.CHAT_BOTTOM_RIGHT);
client.SendPacket(wonIsleCardGame);
- client.User.AddMoney(25000);
+ client.LoggedinUser.AddMoney(25000);
}
diff --git a/HorseIsleServer/LibHISP/Game/Events/ModsRevenge.cs b/HorseIsleServer/LibHISP/Game/Events/ModsRevenge.cs
old mode 100755
new mode 100644
index d49c8fd..d541eaa
--- a/HorseIsleServer/LibHISP/Game/Events/ModsRevenge.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/ModsRevenge.cs
@@ -1,7 +1,6 @@
using HISP.Game.Items;
using HISP.Player;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
using System.Threading;
@@ -14,7 +13,7 @@ namespace HISP.Game.Events
public ThrowTracker(User thrower)
{
Thrower = thrower;
- thrownAt = new ThreadSafeList();
+ thrownAt = new List();
}
public void AddThrownAt(User user)
@@ -22,7 +21,7 @@ namespace HISP.Game.Events
thrownAt.Add(user);
}
public User Thrower;
- private ThreadSafeList thrownAt;
+ private List thrownAt;
public User[] ThrownAt
{
get
@@ -34,7 +33,7 @@ namespace HISP.Game.Events
public bool Active = false;
public const int REVENGE_TIMEOUT = 10;
- private ThreadSafeList trackedThrows;
+ private List trackedThrows;
private Timer revengeTimeout;
public ThrowTracker[] TrackedThrows
{
@@ -46,7 +45,7 @@ namespace HISP.Game.Events
public ModsRevenge()
{
- trackedThrows = new ThreadSafeList();
+ trackedThrows = new List();
Active = false;
}
@@ -148,8 +147,8 @@ namespace HISP.Game.Events
thrower.AddMoney(50);
throwAt.AddMoney(500);
- thrower.Client.SendPacket(youEarned);
- throwAt.Client.SendPacket(otherEarned);
+ thrower.LoggedinClient.SendPacket(youEarned);
+ throwAt.LoggedinClient.SendPacket(otherEarned);
throwCounter.AddThrownAt(throwAt);
}
diff --git a/HorseIsleServer/LibHISP/Game/Events/RandomEvent.cs b/HorseIsleServer/LibHISP/Game/Events/RandomEvent.cs
old mode 100755
new mode 100644
index 63a6dee..6807f25
--- a/HorseIsleServer/LibHISP/Game/Events/RandomEvent.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/RandomEvent.cs
@@ -59,7 +59,7 @@ namespace HISP.Game.Events
string msg = Messages.FormatRandomEvent(rngEvent.Text, moneyEarned, horseName);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.RandomEventPrefix + msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return;
}
diff --git a/HorseIsleServer/LibHISP/Game/Events/RealTimeQuiz.cs b/HorseIsleServer/LibHISP/Game/Events/RealTimeQuiz.cs
old mode 100755
new mode 100644
index f172557..15cd3e4
--- a/HorseIsleServer/LibHISP/Game/Events/RealTimeQuiz.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/RealTimeQuiz.cs
@@ -1,6 +1,5 @@
using HISP.Player;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
using System.Threading;
@@ -47,8 +46,8 @@ namespace HISP.Game.Events
if (this.Quit)
return;
- byte[] realTimeQuizQuestion = PacketBuilder.CreateMeta(Meta.BuildRealTimeQuiz(this));
- this.UserInstance.Client.SendPacket(realTimeQuizQuestion);
+ byte[] realTimeQuizQuestion = PacketBuilder.CreateMetaPacket(Meta.BuildRealTimeQuiz(this));
+ this.UserInstance.LoggedinClient.SendPacket(realTimeQuizQuestion);
}
public void CheckAnswer(string answer)
@@ -98,11 +97,11 @@ namespace HISP.Game.Events
return participents.ToArray();
}
}
- private ThreadSafeList participents;
+ private List participents;
public RealTimeQuiz()
{
- participents = new ThreadSafeList();
+ participents = new List();
Questions = new QuizQuestion[8];
for(int i = 0; i < 8; i++)
{
@@ -160,7 +159,7 @@ namespace HISP.Game.Events
Participent partcipent = getParticipent(user.Id);
partcipent.Quit = true;
user.InRealTimeQuiz = false;
- GameServer.UpdateArea(user.Client);
+ GameServer.UpdateArea(user.LoggedinClient);
}
catch (KeyNotFoundException) { };
}
@@ -219,7 +218,7 @@ namespace HISP.Game.Events
participent.UserInstance.InRealTimeQuiz = false;
- GameServer.UpdateArea(participent.UserInstance.Client);
+ GameServer.UpdateArea(participent.UserInstance.LoggedinClient);
int money = 0;
@@ -238,12 +237,12 @@ namespace HISP.Game.Events
if (participent.Won)
{
byte[] wonBonusMessage = PacketBuilder.CreateChat(Messages.FormatEventRealTimeQuizWinBonus(money), PacketBuilder.CHAT_BOTTOM_RIGHT);
- participent.UserInstance.Client.SendPacket(wonBonusMessage);
+ participent.UserInstance.LoggedinClient.SendPacket(wonBonusMessage);
}
else
{
byte[] bonusMessage = PacketBuilder.CreateChat(Messages.FormatEventRealTimeQuizBonus(money), PacketBuilder.CHAT_BOTTOM_RIGHT);
- participent.UserInstance.Client.SendPacket(bonusMessage);
+ participent.UserInstance.LoggedinClient.SendPacket(bonusMessage);
}
participent.UserInstance.AddMoney(money);
diff --git a/HorseIsleServer/LibHISP/Game/Events/RealTimeRiddle.cs b/HorseIsleServer/LibHISP/Game/Events/RealTimeRiddle.cs
old mode 100755
new mode 100644
index 45f82db..0049830
--- a/HorseIsleServer/LibHISP/Game/Events/RealTimeRiddle.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/RealTimeRiddle.cs
@@ -59,7 +59,7 @@ namespace HISP.Game.Events
if (Database.HasPlayerCompletedRealTimeRiddle(RiddleId, winner.Id))
{
byte[] alreadyWonRiddleMessage = PacketBuilder.CreateChat(Messages.EventAlreadySovledRealTimeRiddle, PacketBuilder.CHAT_BOTTOM_RIGHT);
- winner.Client.SendPacket(alreadyWonRiddleMessage);
+ winner.LoggedinClient.SendPacket(alreadyWonRiddleMessage);
return;
}
@@ -81,7 +81,7 @@ namespace HISP.Game.Events
foreach (GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if (client.User.Id != winner.Id)
+ if (client.LoggedinUser.Id != winner.Id)
client.SendPacket(riddleWonMessage);
else
client.SendPacket(riddleYouWonMessage);
diff --git a/HorseIsleServer/LibHISP/Game/Events/TackShopGiveaway.cs b/HorseIsleServer/LibHISP/Game/Events/TackShopGiveaway.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Events/WaterBalloonGame.cs b/HorseIsleServer/LibHISP/Game/Events/WaterBalloonGame.cs
old mode 100755
new mode 100644
index 2d0752e..e6f0765
--- a/HorseIsleServer/LibHISP/Game/Events/WaterBalloonGame.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/WaterBalloonGame.cs
@@ -80,7 +80,7 @@ namespace HISP.Game.Events
{
byte[] youWinMsg = PacketBuilder.CreateChat(Messages.EventWonWaterBallonGame, PacketBuilder.CHAT_BOTTOM_RIGHT);
winner.UserHit.AddMoney(20000);
- winner.UserHit.Client.SendPacket(youWinMsg);
+ winner.UserHit.LoggedinClient.SendPacket(youWinMsg);
winner.UserHit.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WaterbaloonGameWin).Count++;
}
diff --git a/HorseIsleServer/LibHISP/Game/GameExceptions.cs b/HorseIsleServer/LibHISP/Game/GameExceptions.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Horse/HorseInfo.cs b/HorseIsleServer/LibHISP/Game/Horse/HorseInfo.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Horse/HorseInstance.cs b/HorseIsleServer/LibHISP/Game/Horse/HorseInstance.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Horse/Leaser.cs b/HorseIsleServer/LibHISP/Game/Horse/Leaser.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Horse/WildHorse.cs b/HorseIsleServer/LibHISP/Game/Horse/WildHorse.cs
old mode 100755
new mode 100644
index 443676d..8d6ddf2
--- a/HorseIsleServer/LibHISP/Game/Horse/WildHorse.cs
+++ b/HorseIsleServer/LibHISP/Game/Horse/WildHorse.cs
@@ -1,6 +1,5 @@
using HISP.Player;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Game.Horse
{
@@ -182,7 +181,7 @@ namespace HISP.Game.Horse
Despawn(this);
}
- private static ThreadSafeList wildHorses = new ThreadSafeList();
+ private static List wildHorses = new List();
public static WildHorse[] WildHorses
{
get
diff --git a/HorseIsleServer/LibHISP/Game/Inventory/HorseInventory.cs b/HorseIsleServer/LibHISP/Game/Inventory/HorseInventory.cs
old mode 100755
new mode 100644
index 8472f2e..0c56761
--- a/HorseIsleServer/LibHISP/Game/Inventory/HorseInventory.cs
+++ b/HorseIsleServer/LibHISP/Game/Inventory/HorseInventory.cs
@@ -1,7 +1,6 @@
using HISP.Game.Horse;
using HISP.Player;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Game.Inventory
@@ -9,7 +8,7 @@ namespace HISP.Game.Inventory
public class HorseInventory
{
private User baseUser;
- private ThreadSafeList horsesList = new ThreadSafeList();
+ private List horsesList = new List();
public HorseInstance[] HorseList
{
get
diff --git a/HorseIsleServer/LibHISP/Game/Inventory/IInventory.cs b/HorseIsleServer/LibHISP/Game/Inventory/IInventory.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Inventory/InventoryItem.cs b/HorseIsleServer/LibHISP/Game/Inventory/InventoryItem.cs
old mode 100755
new mode 100644
index ace7df3..8f4662f
--- a/HorseIsleServer/LibHISP/Game/Inventory/InventoryItem.cs
+++ b/HorseIsleServer/LibHISP/Game/Inventory/InventoryItem.cs
@@ -1,20 +1,21 @@
-using HISP.Game.Items;
-using HISP.Util;
-
+using System;
+using System.Collections.Generic;
+using HISP.Game.Items;
+
namespace HISP.Game.Inventory
{
public class InventoryItem
{
public InventoryItem()
{
- itemInstances = new ThreadSafeList();
+ itemInstances = new List();
Infinite = false;
ItemId = 0;
}
public int ItemId;
public bool Infinite;
- private ThreadSafeList itemInstances;
+ private List itemInstances;
public void RemoveItem(ItemInstance itm)
{
itemInstances.Remove(itm);
diff --git a/HorseIsleServer/LibHISP/Game/Inventory/PlayerInventory.cs b/HorseIsleServer/LibHISP/Game/Inventory/PlayerInventory.cs
old mode 100755
new mode 100644
index 55a3db8..2bde518
--- a/HorseIsleServer/LibHISP/Game/Inventory/PlayerInventory.cs
+++ b/HorseIsleServer/LibHISP/Game/Inventory/PlayerInventory.cs
@@ -4,20 +4,19 @@ using System.Linq;
using HISP.Player;
using HISP.Server;
using HISP.Game.Items;
-using HISP.Util;
-
+
namespace HISP.Game.Inventory
-{
-
+{
+
public class PlayerInventory : IInventory
{
public User BaseUser;
- private ThreadSafeList inventoryItems;
+ private List inventoryItems;
public PlayerInventory(User forUser)
{
- inventoryItems = new ThreadSafeList();
+ inventoryItems = new List();
BaseUser = forUser;
ItemInstance[] instances = Database.GetPlayerInventory(BaseUser.Id).ToArray();
diff --git a/HorseIsleServer/LibHISP/Game/Inventory/ShopInventory.cs b/HorseIsleServer/LibHISP/Game/Inventory/ShopInventory.cs
old mode 100755
new mode 100644
index 2a25915..3869ea2
--- a/HorseIsleServer/LibHISP/Game/Inventory/ShopInventory.cs
+++ b/HorseIsleServer/LibHISP/Game/Inventory/ShopInventory.cs
@@ -4,14 +4,13 @@ using HISP.Game.Items;
using System.Collections.Generic;
using System.Linq;
-using HISP.Util;
-
+
namespace HISP.Game.Inventory
{
public class ShopInventory : IInventory
{
private Shop baseShop;
- private ThreadSafeList inventoryItems;
+ private List inventoryItems;
public int Count
{
get
@@ -22,7 +21,7 @@ namespace HISP.Game.Inventory
public ShopInventory(Shop shopkeeper)
{
baseShop = shopkeeper;
- inventoryItems = new ThreadSafeList();
+ inventoryItems = new List();
}
private void addItem(ItemInstance item, bool addToDatabase)
diff --git a/HorseIsleServer/LibHISP/Game/Items/DroppedItems.cs b/HorseIsleServer/LibHISP/Game/Items/DroppedItems.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Items/Item.cs b/HorseIsleServer/LibHISP/Game/Items/Item.cs
old mode 100755
new mode 100644
index 12dc35f..771c2e6
--- a/HorseIsleServer/LibHISP/Game/Items/Item.cs
+++ b/HorseIsleServer/LibHISP/Game/Items/Item.cs
@@ -150,7 +150,7 @@ namespace HISP.Game.Items
if (isle.Name == "Prison Isle")
{
byte[] dontWorkHere = PacketBuilder.CreateChat(Messages.RanchDorothyShoesPrisonIsleMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(dontWorkHere);
+ user.LoggedinClient.SendPacket(dontWorkHere);
return;
}
}
@@ -162,14 +162,14 @@ namespace HISP.Game.Items
return;
}
byte[] noPlaceLIke127001 = PacketBuilder.CreateChat(Messages.RanchDorothyShoesMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(noPlaceLIke127001);
+ user.LoggedinClient.SendPacket(noPlaceLIke127001);
user.Teleport(user.OwnedRanch.X, user.OwnedRanch.Y);
}
else if (itm.ItemId == Item.Telescope)
{
byte[] birdMap = PacketBuilder.CreateBirdMap(user.X, user.Y);
- user.Client.SendPacket(birdMap);
+ user.LoggedinClient.SendPacket(birdMap);
}
else
{
diff --git a/HorseIsleServer/LibHISP/Game/Items/ItemInstance.cs b/HorseIsleServer/LibHISP/Game/Items/ItemInstance.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Items/Tack.cs b/HorseIsleServer/LibHISP/Game/Items/Tack.cs
old mode 100755
new mode 100644
index bb479ad..b368c56
--- a/HorseIsleServer/LibHISP/Game/Items/Tack.cs
+++ b/HorseIsleServer/LibHISP/Game/Items/Tack.cs
@@ -4,8 +4,7 @@ using System.Collections.Generic;
using System.Text;
using HISP.Server;
-using HISP.Util;
-
+
namespace HISP.Game.Items
{
public class Tack
@@ -123,13 +122,13 @@ namespace HISP.Game.Items
try
{
- TackSet set = GetSetByName(Helper.CapitalizeFirstLetter(itemInfo.EmbedSwf));
+ TackSet set = GetSetByName(Util.CapitalizeFirstLetter(itemInfo.EmbedSwf));
set.Add(itemInfo);
}
catch(KeyNotFoundException)
{
TackSet tackSet = new TackSet();
- tackSet.SetName = Helper.CapitalizeFirstLetter(itemInfo.EmbedSwf);
+ tackSet.SetName = Util.CapitalizeFirstLetter(itemInfo.EmbedSwf);
tackSet.Add(itemInfo);
tackSets.Add(tackSet);
}
diff --git a/HorseIsleServer/LibHISP/Game/Map.cs b/HorseIsleServer/LibHISP/Game/Map.cs
old mode 100755
new mode 100644
index 8d3b926..25ddf74
--- a/HorseIsleServer/LibHISP/Game/Map.cs
+++ b/HorseIsleServer/LibHISP/Game/Map.cs
@@ -12,14 +12,7 @@ namespace HISP.Game
public string Type;
}
- public struct TileDepth
- {
- public bool ShowPlayer;
- public bool Passable;
- }
-
- public static TileDepth[] OverlayTileDepth;
- public static TerrainTile[] TerrainTiles;
+ public static int[] OverlayTileDepth;
public static int Width;
public static int Height;
@@ -27,6 +20,8 @@ namespace HISP.Game
public static byte[] MapData;
public static byte[] oMapData;
+ public static TerrainTile[] TerrainTiles;
+
public static int NewUserStartX;
public static int NewUserStartY;
@@ -80,9 +75,19 @@ namespace HISP.Game
if (World.InIsle(x, y))
tileset = World.GetIsle(x, y).Tileset;
otileId = otileId + 64 * tileset;
- }
-
- bool overlayPassable = OverlayTileDepth[otileId].Passable;
+ }
+
+
+ int tileDepth = OverlayTileDepth[otileId];
+ bool overlayPassable = false;
+ if (tileDepth == 0)
+ overlayPassable = false;
+ if (tileDepth == 1)
+ overlayPassable = false;
+ if (tileDepth == 2)
+ overlayPassable = true;
+ if (tileDepth == 3)
+ overlayPassable = true;
if ((!terrainPassable && overlayPassable) && otileId == 0)
return false;
diff --git a/HorseIsleServer/LibHISP/Game/Messages.cs b/HorseIsleServer/LibHISP/Game/Messages.cs
old mode 100755
new mode 100644
index 1b93c88..9e823ef
--- a/HorseIsleServer/LibHISP/Game/Messages.cs
+++ b/HorseIsleServer/LibHISP/Game/Messages.cs
@@ -1,3051 +1,3027 @@
-using System;
-using System.Drawing;
-using System.Globalization;
-
-using HISP.Security;
-using HISP.Server;
-using HISP.Util;
-using HISP.Game.Chat;
-
-namespace HISP.Game
-{
- public class Messages
- {
- // HISP specific
- public static string HISPHelpCommandUsageFormat;
-
- // extended config
- public static int RequiredChatViolations;
-
- // Message Queue
- public static string MessageQueueHeader;
-
- // Timed Messages
- public static string PlaytimeMessageFormat;
- public static string[] RngMessages;
-
- // Prison Isle
- public static string PrisonIsleSentMessage;
- public static string PrisonIsleCommandMessageFormat;
-
- // Rules Isle
- public static string RulesIsleSentMessage;
- public static string RulesIsleCommandMessageFormat;
-
- // Mod
- public static string ModIsleMessage;
- public static string ModSplatterballEarnedYouFormat;
- public static string ModSplatterballEarnedOtherFormat;
-
- // Add Buddy
- public static string AddBuddyPending;
- public static string AddBuddyOtherPendingFormat;
- public static string AddBuddyYourNowBuddiesFormat;
- public static string AddBuddyDeleteBuddyFormat;
-
- // Mute Command
- public static string NowMutingPlayerFormat;
- public static string StoppedMutingPlayerFormat;
-
- public static string PlayerIgnoringYourPrivateMessagesFormat;
- public static string PlayerIgnoringYourBuddyRequests;
- public static string PlayerIgnoringYourSocials;
-
- public static string PlayerIgnoringAllPrivateMessagesFormat;
- public static string PlayerIgnoringAllBuddyRequests;
- public static string PlayerIgnoringAllSocials;
-
- public static string CantSendInMutedChannel;
- public static string CantSendPrivateMessageWhileMuted;
- public static string CantSendBuddyRequestWhileMuted;
-
- public static string CantSendPrivateMessagePlayerMutedFormat;
-
- // Chat Errors
- public static string CantFindPlayerToPrivateMessage;
- public static string AdsOnlyOncePerMinute;
- public static string GlobalChatLimited;
- public static string GlobalChatTooLong;
- public static string AdsChatTooLong;
-
-
- // Auto Sell
- public static string AutoSellNotStandingInSamePlace;
- public static string AutoSellSuccessFormat;
- public static string HorseAutoSellValueTooHigh;
- public static string AutoSellInsufficentFunds;
- public static string AutoSellTooManyHorses;
- public static string AutoSellYouSoldHorseFormat;
- public static string AutoSellYouSoldHorseOfflineFormat;
-
- // Tag
- public static string TagYourItFormat;
- public static string TagOtherBuddiesOnlineFormat;
-
- // Socials
- public static string SocialButton;
- public static string SocialMessageFormat;
- public static string SocialTypeFormat;
- public static string SocialPlayerNoLongerNearby;
-
- // Random Event
- public static string RandomEventPrefix;
-
- // Events : Mods Revenge
- public static string EventStartModsRevenge;
- public static string EventEndModsRevenge;
-
- // Events : Isle Cards Trading Game
- public static string EventStartIsleTradingGame;
- public static string EventDisqualifiedIsleTradingGame;
- public static string EventOnlyOneTypeIsleTradingGame;
- public static string EventOnlyTwoTypeIsleTradingGame;
- public static string EventOnlyThreeTypeIsleTradingGame;
- public static string EventNoneIsleTradingGame;
- public static string EventWonIsleTradingGame;
-
- // Events : Water Balloon Game
- public static string EventStartWaterBallonGame;
- public static string EventWonWaterBallonGame;
- public static string EventEndWaterBalloonGame;
- public static string EventWinnerWaterBalloonGameFormat;
-
- // Events : Real Time Quiz
- public static string EventMetaRealTimeQuizFormat;
- public static string EventStartRealTimeQuiz;
- public static string EventEndRealTimeQuiz;
- public static string EventBonusRealTimeQuizFormat;
- public static string EventWinBonusRealTimeQuizFormat;
- public static string EventWinRealTimeQuizFormat;
- public static string EventUnavailableRealTimeQuiz;
- public static string EventEnteredRealTimeQuiz;
- public static string EventAlreadyEnteredRealTimeQuiz;
- public static string EventQuitRealTimeQuiz;
-
- // Events : Real Time Riddles
- public static string EventStartRealTimeRiddleFormat;
- public static string EventEndRealTimeRiddle;
- public static string EventWonRealTimeRiddleForOthersFormat;
- public static string EventWonRealTimeRiddleForYouFormat;
- public static string EventAlreadySovledRealTimeRiddle;
-
- // Events : Tack Shop Giveaway
- public static string EventStartTackShopGiveawayFormat;
- public static string Event1MinTackShopGiveawayFormat;
- public static string EventWonTackShopGiveawayFormat;
- public static string EventEndTackShopGiveawayFormat;
-
- // MultiHorses
- public static string OtherPlayersHere;
- public static string MultiHorseSelectOneToJoinWith;
- public static string MultiHorseFormat;
-
- // 2Player
- public static string TwoPlayerOtherPlayer;
- public static string TwoPlayerPlayerFormat;
- public static string TwoPlayerInviteButton;
- public static string TwoPlayerAcceptButton;
- public static string TwoPlayerSentInvite;
- public static string TwoPlayerPlayingWithFormat;
-
- public static string TwoPlayerGameInProgressFormat;
-
- public static string TwoPlayerYourInvitedFormat;
- public static string TwoPlayerInvitedFormat;
- public static string TwoPlayerStartingUpGameFormat;
-
- public static string TwoPlayerGameClosed;
- public static string TwoPlayerGameClosedOther;
-
- public static string TwoPlayerRecordedWinFormat;
- public static string TwoPlayerRecordedLossFormat;
-
- // Trading
- public static string TradeWithPlayerFormat;
-
- public static string TradeWaitingForOtherDone;
- public static string TradeOtherPlayerIsDone;
- public static string TradeFinalReview;
-
- public static string TradeYourOfferingFormat;
-
- public static string TradeAddItems;
- public static string TradeOtherOfferingFormat;
-
- public static string TradeWhenDoneClick;
- public static string TradeCancelAnytime;
- public static string TradeAcceptTrade;
-
- public static string TradeOfferingNothing;
- public static string TradeOfferingMoneyFormat;
- public static string TradeOfferingItemFormat;
- public static string TradeOfferingHorseFormat;
-
- // Trading : What to Offer (menu)
-
- public static string TradeWhatToOfferFormat;
- public static string TradeOfferMoney;
-
- public static string TradeOfferHorse;
- public static string TradeOfferHorseFormat;
- public static string TradeOfferHorseTacked;
-
- public static string TradeOfferItem;
- public static string TradeOfferItemFormat;
- public static string TradeOfferItemOtherPlayerInvFull;
-
- // Trading : Offer Submenu
-
- public static string TradeMoneyOfferSubmenuFormat;
- public static string TradeItemOfferSubmenuFormat;
-
- // Trading : Messages
-
- public static string TradeWaitingForOthersToAcceptMessage;
-
- public static string TradeRequiresBothPlayersMessage;
- public static string TradeCanceledBecuasePlayerMovedMessage;
-
- public static string TradeItemOfferAtleast1;
- public static string TradeItemOfferTooMuchFormat;
- public static string TradeMoneyOfferTooMuch;
-
- public static string TradeOtherPlayerHasNegativeMoney;
- public static string TradeYouHaveNegativeMoney;
-
- public static string TradeAcceptedMessage;
- public static string TradeCanceledByYouMessage;
- public static string TradeCanceledByOtherPlayerFormat;
- public static string TradeCanceledInterupted;
-
- public static string TradeYouCantHandleMoreHorses;
- public static string TradeOtherPlayerCantHandleMoreHorsesFormat;
-
- public static string TradeYouSpentMoneyMessageFormat;
- public static string TradeYouReceivedMoneyMessageFormat;
-
- public static string TradeRiddenHorse;
-
- public static string TradeYouCantCarryMoreItems;
- public static string TradeOtherCantCarryMoreItems;
-
- public static string TradeNotAllowedWhileBidding;
- public static string TradeNotAllowedWhileOtherBidding;
-
- public static string TradeWillGiveYouTooMuchMoney;
- public static string TradeWillGiveOtherTooMuchMoney;
-
- // Player Interaction
- public static string PlayerHereMenuFormat;
-
- public static string PlayerHereProfileButton;
- public static string PlayerHereSocialButton;
- public static string PlayerHereTradeButton;
- public static string PlayerHereAddBuddyButton;
- public static string PlayerHereTagButton;
-
- public static string PmButton;
-
- // Auction House
- public static string AuctionsRunning;
- public static string AuctionHorseEntryFormat;
- public static string AuctionPlayersHereFormat;
-
- public static string AuctionAHorse;
- public static string AuctionListHorse;
-
- public static string AuctionHorseListEntryFormat;
- public static string AuctionHorseViewButton;
- public static string AuctionHorseIsTacked;
-
- public static string AuctionBidMax;
- public static string AuctionBidRaisedFormat;
- public static string AuctionTopBid;
- public static string AuctionExistingBidHigher;
-
- public static string AuctionYouveBeenOutbidFormat;
- public static string AuctionCantAffordBid;
- public static string AuctionCantAffordAuctionFee;
- public static string AuctionOneHorsePerPlayer;
-
- public static string AuctionYouHaveTooManyHorses;
- public static string AuctionOnlyOneWinningBidAllowed;
-
- public static string AuctionYouBroughtAHorseFormat;
- public static string AuctionNoHorseBrought;
-
- public static string AuctionHorseSoldFormat;
-
- public static string AuctionSoldToFormat;
- public static string AuctionNotSold;
- public static string AuctionGoingToFormat;
-
- public static string AuctionNoOtherTransactionAllowed;
-
- // Warp Command
- public static string SuccessfullyWarpedToLocation;
- public static string SuccessfullyWarpedToPlayer;
- public static string OnlyUnicornCanWarp;
- public static string FailedToUnderstandLocation;
-
- // Click
- public static string ClickPlayerHereFormat;
-
- // Hammock
- public static string HammockText;
-
- // Horse Leaser
- public static string HorseLeaserCantAffordMessage;
- public static string HorseLeaserTemporaryHorseAdded;
- public static string HorseLeaserHorsesFull;
-
- public static string HorseLeaserReturnedToUniterPegasus;
-
- public static string HorseLeaserReturnedToUniterFormat;
- public static string HorseLeaserReturnedToOwnerFormat;
-
- // Horse Games
- public static string HorseGamesSelectHorse;
- public static string HorseGamesHorseEntryFormat;
-
- // Competitions
- public static string ArenaResultsMessage;
- public static string ArenaPlacingFormat;
-
- public static string ArenaFirstPlace;
- public static string ArenaSecondPlace;
- public static string ArenaThirdPlace;
- public static string ArenaFourthPlace;
- public static string ArenaFifthPlace;
- public static string ArenaSixthPlace;
-
- public static string ArenaEnteredInto;
-
- public static string ArenaAlreadyEntered;
- public static string ArenaCantAfford;
-
- public static string ArenaYourScoreFormat;
-
- public static string ArenaJumpingStartup;
- public static string ArenaDraftStartup;
- public static string ArenaRacingStartup;
- public static string ArenaConformationStartup;
-
- public static string ArenaYouWinFormat;
- public static string ArenaOnlyWinnerWins;
-
- public static string ArenaTooHungry;
- public static string ArenaTooThirsty;
- public static string ArenaNeedsFarrier;
- public static string ArenaTooTired;
- public static string ArenaNeedsVet;
-
- public static string ArenaEventNameFormat;
- public static string ArenaFullErrorMessage;
-
- public static string ArenaCurrentlyTakingEntriesFormat;
- public static string ArenaCompetitionInProgress;
- public static string ArenaYouHaveHorseEntered;
- public static string ArenaCompetitionFull;
-
- public static string ArenaEnterHorseFormat;
- public static string ArenaCurrentCompetitors;
- public static string ArenaCompetingHorseFormat;
-
-
- // City Hall
- public static string CityHallMenu;
- public static string CityHallMailSendMeta;
- public static string CityHallSentMessageFormat;
- public static string CityHallCantAffordPostageMessage;
- public static string CityHallCantFindPlayerMessageFormat;
-
- // City Hall : Auto Sell
- public static string CityHallCheapestAutoSells;
- public static string CityHallCheapestAutoSellHorseEntryFormat;
- public static string CityHallMostExpAutoSells;
- public static string CityHallMostExpAutoSellHorseEntryFormat;
-
- // City Hall : Ranch Investment
- public static string CityHallTop25Ranches;
- public static string CityHallRanchEntryFormat;
-
- // City Hall : Richest Players
- public static string CityHallTop25Players;
- public static string CityHallRichPlayerFormat;
-
- // City Hall : Spoiled Horses
- public static string CityHallTop100SpoiledHorses;
- public static string CityHallSpoiledHorseEntryFormat;
-
- // City Hall : Most Adventurous Players
- public static string CityHallTop25AdventurousPlayers;
- public static string CityHallAdventurousPlayerEntryFormat;
-
- // City Hall : Most Experienced Players
- public static string CityHallTop25ExperiencedPlayers;
- public static string CityHallExperiencePlayerEntryFormat;
-
- // City Hall : Most Played Minigames
- public static string CityHallTop25MinigamePlayers;
- public static string CityHallMinigamePlayerEntryFormat;
-
- // City Hall : Most Experienced Horses
- public static string CityHallTop25ExperiencedHorses;
- public static string CityHallExperiencedHorseEntryFormat;
-
-
- // Mail Messages
- public static string MailReceivedMessage;
- public static string MailSe;
- public static string MailSelectFromFollowing;
-
- public static string MailEntryFormat;
- public static string MailReadMetaFormat;
- public static string MailRippedMessage;
-
- // Ranch
- public static string RanchUnownedRanchFormat;
- public static string RanchYouCouldPurchaseThisRanch;
- public static string RanchYouAllreadyOwnARanch;
- public static string RanchSubscribersOnly;
- public static string RanchDescriptionOthersFormat;
- public static string RanchUnownedRanchClicked;
- public static string RanchClickMessageFormat;
-
- public static string RanchNoDorothyShoesMessage;
- public static string RanchDorothyShoesMessage;
- public static string RanchDorothyShoesPrisonIsleMessage;
-
- public static string RanchCantAffordRanch;
- public static string RanchRanchBroughtMessageFormat;
- public static string RanchForcefullySoldFormat;
- public static string RanchSavedRanchDescripton;
- public static string RanchSavedTitleTooLongError;
- public static string RanchSavedDescrptionTooLongError;
- public static string RanchSavedTitleViolationsError;
- public static string RanchSavedDescrptionViolationsErrorFormat;
-
-
- public static string RanchDefaultRanchTitle;
-
- public static string RanchEditDescriptionMetaFormat;
- public static string RanchTitleFormat;
- public static string RanchYourDescriptionFormat;
-
- public static string RanchSellAreYouSure;
- public static string RanchSoldFormat;
-
- // Ranch: Build.
- public static string RanchCanBuildOneOfTheFollowingInThisSpot;
- public static string RanchBuildingEntryFormat;
- public static string RanchCantAffordThisBuilding;
- public static string RanchBuildingInformationFormat;
- public static string RanchBuildingComplete;
- public static string RanchBuildingAlreadyHere;
- public static string RanchTornDownRanchBuildingFormat;
- public static string RanchViewBuildingFormat;
- public static string RanchBarnHorsesFormat;
-
- // Ranch: Upgrade
- public static string UpgradedMessage;
- public static string UpgradeCannotAfford;
- public static string UpgradeCurrentUpgradeFormat;
- public static string UpgradeNextUpgradeFormat;
-
- // Ranch: Special
- public static string BuildingRestHere;
- public static string BuildingGrainSilo;
- public static string BuildingBarnFormat;
- public static string BuildingBigBarnFormat;
- public static string BuildingGoldBarnFormat;
- public static string BuildingWaterWell;
- public static string BuildingWindmillFormat;
- public static string BuildingWagon;
- public static string BuildingTrainingPen;
- public static string BuildingVegatableGarden;
-
- public static string RanchTrainAllAttempt;
- public static string RanchTrainSuccessFormat;
- public static string RanchTrainBadMoodFormat;
- public static string RanchTrainCantTrainFormat;
- public static string RanchHorsesFullyRested;
- public static string RanchWagonDroppedYouOff;
-
- // Training Pen
- public static string TrainedInStatFormat;
- public static string TrainerHeaderFormat;
- public static string TrainerHorseEntryFormat;
- public static string TrainerHorseFullyTrainedFormat;
- public static string TrainerCantTrainAgainInFormat;
- public static string TrainerCantAfford;
-
- // Santa
- public static string SantaHiddenText; // Text that claims that it costs $10 to wrap a present thats sent to the client but never displayed for some reason. also wrapping is free on pinto so IDEK.
- public static string SantaWrapItemFormat;
- public static string SantaWrappedObjectMessage;
- public static string SantaCantWrapInvFull;
- public static string SantaCantOpenNothingInside;
- public static string SantaItemOpenedFormat;
- public static string SantaItemCantOpenInvFull;
-
- // Tools
- public static string BinocularsNothing;
- public static string MagnifyNothing;
- public static string RakeNothing;
- public static string ShovelNothing;
-
- // Pronouns
- public static string PronounMaleHe;
- public static string PronounMaleHis;
-
- public static string PronounFemaleShe;
- public static string PronounFemaleHer;
-
- public static string PronounNeutralYour;
-
- public static string PronounNeutralThey;
- public static string PronounNeutralTheir;
- // Stats Page
- public static string StatsBarFormat;
- public static string StatsAreaFormat;
- public static string StatsMoneyFormat;
- public static string StatsFreeTimeFormat;
- public static string StatsDescriptionFormat;
- public static string StatsExpFormat;
- public static string StatsQuestpointsFormat;
- public static string StatsHungerFormat;
- public static string StatsThirstFormat;
- public static string StatsTiredFormat;
- public static string StatsGenderFormat;
- public static string StatsJewelFormat;
- public static string StatsCompetitionGearFormat;
-
- public static string JewelrySlot1Format;
- public static string JewelrySlot2Format;
- public static string JewelrySlot3Format;
- public static string JewelrySlot4Format;
-
- public static string JewelryRemoveSlot1Button;
- public static string JewelryRemoveSlot2Button;
- public static string JewelryRemoveSlot3Button;
- public static string JewelryRemoveSlot4Button;
-
- public static string CompetitionGearHeadFormat;
- public static string CompetitionGearBodyFormat;
- public static string CompetitionGearLegsFormat;
- public static string CompetitionGearFeetFormat;
-
- public static string CompetitionGearRemoveHeadButton;
- public static string CompetitionGearRemoveBodyButton;
- public static string CompetitionGearRemoveLegsButton;
- public static string CompetitionGearRemoveFeetButton;
-
- public static string StatsPrivateNotesButton;
- public static string StatsQuestsButton;
- public static string StatsMinigameRankingButton;
- public static string StatsAwardsButton;
- public static string StatsMiscButton;
-
- public static string NoJewerlyEquipped;
- public static string NoJewerlyEquippedOther;
-
- public static string NoCompetitionGear;
- public static string NoCompetitionGearOther;
-
- public static string JewelrySelected;
- public static string JewelrySelectedOther;
-
- public static string CompetitionGearSelected;
- public static string CompetitionGearSelectedOther;
-
- public static string StatHunger;
- public static string StatThirst;
- public static string StatTired;
-
- public static string StatsOtherHorses;
-
- public static string[] StatPlayerFormats;
-
- public static string StatThirstDizzy;
- public static string StatHungerStumble;
-
-
- // Misc Stats
-
- public static string StatMiscHeader;
- public static string StatMiscNoneRecorded;
- public static string StatMiscEntryFormat;
-
- // Quests Completed Page
- public static string QuestLogHeader;
- public static string QuestFormat;
-
- public static string QuestNotCompleted;
- public static string QuestNotAvalible;
- public static string QuestCompleted;
-
- public static string QuestFooterFormat;
-
- // Announcements
- public static string NewUserMessage;
- public static string WelcomeFormat;
- public static string MotdFormat;
- public static string IdleWarningFormat;
- public static string LoginMessageFormat;
- public static string LogoutMessageFormat;
-
- // Libary
- public static string LibaryMainMenu;
- public static string LibaryFindNpc;
- public static string LibaryFindNpcSearchResultsHeader;
- public static string LibaryFindNpcSearchResultFormat;
- public static string LibaryFindNpcSearchNoResults;
- public static string LibaryFindNpcLimit5;
-
- public static string LibaryFindRanch;
- public static string LibaryFindRanchResultsHeader;
- public static string LibaryFindRanchResultFormat;
- public static string LibaryFindRanchResultsNoResults;
-
-
- public static string HorseBreedFormat;
- public static string HorseRelativeFormat;
- public static string BreedViewerFormat;
-
-
- // Records
-
- public static string PrivateNotesSavedMessage;
- public static string PrivateNotesMetaFormat;
-
- // Profile
-
- public static string ProfileSavedMessage;
- public static string ProfileTooLongMessage;
- public static string ProfileSaveBlockedFormat;
-
- public static string ProfileViolationFormat;
- // Hay Pile
-
- public static string HasPitchforkMeta;
- public static string NoPitchforkMeta;
-
- // Chat
-
- public static string GlobalChatFormat;
- public static string AdsChatFormat;
- public static string BuddyChatFormat;
- public static string NearChatFormat;
- public static string IsleChatFormat;
- public static string HereChatFormat;
- public static string DirectChatFormat;
- public static string ModChatFormat;
- public static string AdminChatFormat;
-
- public static string YouWereSentToPrisionIsle;
-
- public static string AdminCommandFormat;
- public static string PlayerCommandFormat;
-
- public static string MuteHelp;
- public static string UnMuteHelp;
-
- public static string GlobalChatFormatForModerators;
- public static string DirectChatFormatForModerators;
-
- public static string IsleChatFormatForSender;
- public static string NearChatFormatForSender;
- public static string HereChatFormatForSender;
- public static string AdsChatFormatForSender;
- public static string BuddyChatFormatForSender;
- public static string DirectChatFormatForSender;
- public static string AdminChatFormatForSender;
- public static string ModChatFormatForSender;
-
- public static string ServerAnnoucementFormat;
-
- public static string DmModBadge;
- public static string DmAutoResponse;
-
- public static string ChatViolationMessageFormat;
- public static string PasswordNotice;
- public static string CapsNotice;
- public static string RandomMovement;
-
- // AutoReply
- public static string AutoReplyTooLong;
- public static string AutoReplyHasViolations;
-
- // Transport
-
- public static string CantAffordTransport;
- public static string WelcomeToAreaFormat;
- public static string TransportFormat;
- public static string TransportCostFormat;
- public static string TransportWagonFree;
-
- //Dropped Items
-
- public static string NothingMessage;
- public static string ItemsOnGroundMessage;
- public static string GrabItemFormat;
- public static string GrabAllItemsButton;
- public static string GrabAllItemsMessage;
- public static string GrabbedItemMessage;
- public static string GrabbedItemButInventoryFull;
- public static string GrabbedAllItemsButInventoryFull;
- public static string GrabbedAllItemsMessage;
- public static string DroppedAnItemMessage;
- public static string DroppedItemTileIsFull;
- public static string DroppedItemCouldntPickup;
- public static string ItemInformationFormat;
-
- // Pond
- public static string PondHeader;
- public static string PondGoFishing;
- public static string PondNoFishingPole;
- public static string PondNoEarthWorms;
- public static string PondDrinkHereIfSafe;
- public static string PondHorseDrinkFormat;
-
- public static string PondNotThirstyFormat;
- public static string PondDrinkFullFormat;
- public static string PondCantDrinkHpLowFormat;
- public static string PondDrinkOhNoesFormat;
-
- // Mud Hole
-
- public static string MudHoleNoHorses;
- public static string MudHoleRuinedGroomFormat;
-
- // Competition Gear
-
- public static string EquipCompetitionGearFormat;
- public static string RemoveCompetitionGear;
-
- // Jewelry
- public static string EquipJewelryFormat;
- public static string MaxJewelryMessage;
- public static string RemoveJewelry;
-
- // Books (Libary)
- public static string BooksOfHorseIsle;
- public static string BookEntryFormat;
- public static string BookReadFormat;
-
- // Awards (Libary)
- public static string AwardsAvalible;
- public static string AwardEntryFormat;
-
- // Locations (Libary)
- public static string LocationKnownIslands;
- public static string LocationKnownTowns;
- public static string LocationIslandFormat;
- public static string LocationTownFormat;
- public static string LocationDescriptionFormat;
-
- // Minigames (Libary)
- public static string MinigameSingleplayer;
- public static string MinigameTwoplayer;
- public static string MinigameMultiplayer;
- public static string MinigameCompetitions;
- public static string MinigameEntryFormat;
-
- // Companion (Libary)
- public static string CompanionViewFormat;
- public static string CompanionEntryFormat;
-
- // Tack (Libary)
- public static string TackViewSetFormat;
- public static string TackSetPeiceFormat;
-
- // Workshop
- public static string WorkshopCraftEntryFormat;
- public static string WorkshopRequiresFormat;
- public static string WorkshopRequireEntryFormat;
- public static string WorkshopAnd;
-
- public static string WorkshopNoRoomInInventory;
- public static string WorkshopMissingRequiredItem;
- public static string WorkshopCraftingSuccess;
- public static string WorkshopCannotAfford;
-
- // Horse
- public static string BreedViewerMaximumStats;
- public static string AdvancedStatFormat;
- public static string BasicStatFormat;
- public static string HorsesHere;
- public static string WildHorseFormat;
- public static string HorseCaptureTimer;
- public static string YouCapturedTheHorse;
- public static string HorseEvadedCapture;
- public static string HorseEscapedAnyway;
- public static string TooManyHorses;
- public static string HorsesMenuHeader;
- public static string UpdateHorseCategory;
- public static string HorseEntryFormat;
- public static string ViewBaiscStats;
- public static string ViewAdvancedStats;
- public static string HorseBuckedYou;
- public static string HorseLlamaBuckedYou;
- public static string HorseCamelBuckedYou;
-
- public static string HorseRidingMessageFormat;
- public static string HorseNameYoursFormat;
- public static string HorseNameOthersFormat;
- public static string HorseDescriptionFormat;
- public static string HorseHandsHeightFormat;
- public static string HorseExperienceEarnedFormat;
-
- public static string HorseTrainableInFormat;
- public static string HorseIsTrainable;
-
- public static string HorseLeasedRemainingTimeFormat;
-
- public static string HorseCannotMountUntilTackedMessage;
- public static string HorseDismountedBecauseNotTackedMessageFormat;
- public static string HorseMountButtonFormat;
- public static string HorseDisMountButtonFormat;
- public static string HorseFeedButtonFormat;
- public static string HorseTackButtonFormat;
- public static string HorsePetButtonFormat;
- public static string HorseProfileButtonFormat;
-
- public static string HorseNoAutoSell;
- public static string HorseAutoSellOthersFormat;
- public static string HorseAutoSellFormat;
- public static string HorseAutoSellPriceFormat;
- public static string HorseCantAutoSellTacked;
- public static string HorseCurrentlyCategoryFormat;
- public static string HorseMarkAsCategory;
- public static string HorseStats;
- public static string HorseTacked;
- public static string HorseTackFormat;
- public static string HorseCompanion;
- public static string HorseCompanionFormat;
- public static string HorseNoCompanion;
-
- public static string HorseAdvancedStatsFormat;
- public static string HorseBreedDetailsFormat;
- public static string HorseHeightRangeFormat;
- public static string HorsePossibleColorsFormat;
- public static string HorseReleaseButton;
- public static string HorseOthers;
-
- public static string HorseDescriptionEditFormat;
-
- public static string HorseSavedProfileMessageFormat;
- public static string HorseProfileMessageTooLongError;
- public static string HorseNameTooLongError;
- public static string HorseNameViolationsError;
- public static string HorseProfileMessageProfileError;
-
-
- public static string HorseCatchTooManyHorsesMessage;
- public static string HorseEquipTackMessageFormat;
- public static string HorseUnEquipTackMessageFormat;
- public static string HorseStopRidingMessage;
-
- public static string HorsePetMessageFormat;
- public static string HorsePetTooHappy;
- public static string HorsePetTooTired;
- public static string HorseSetNewCategoryMessageFormat;
-
- public static string HorseAutoSellMenuFormat;
- public static string HorseIsAutoSell;
- public static string HorseAutoSellConfirmedFormat;
- public static string HorseAutoSellRemoved;
-
- public static string HorseChangeAutoSell;
- public static string HorseSetAutoSell;
- public static string HorseCompanionChangeButton;
-
- public static string HorseTackFailAutoSell;
- public static string HorseAreYouSureYouWantToReleaseFormat;
- public static string HorseCantReleaseTheHorseYourRidingOn;
- public static string HorseReleasedMeta;
- public static string HorseReleasedBy;
-
- // All Stats (basic)
- public static string HorseAllBasicStats;
- public static string HorseBasicStatEntryFormat;
-
- // All Stats (all)
-
- public static string HorseAllStatsHeader;
- public static string HorseNameEntryFormat;
- public static string HorseBasicStatsCompactedFormat;
- public static string HorseAdvancedStatsCompactedFormat;
- public static string HorseAllStatsLegend;
-
- // Horse compainion menu
- public static string HorseCompanionMenuHeaderFormat;
- public static string HorseCompnaionMenuCurrentCompanionFormat;
- public static string HorseCompanionEntryFormat;
- public static string HorseCompanionEquipMessageFormat;
- public static string HorseCompanionRemoveMessageFormat;
- public static string HorseCompanionMenuCurrentlyAvalibleCompanions;
-
- // Horse Feed Menu
- public static string HorseCurrentStatusFormat;
- public static string HorseHoldingHorseFeed;
- public static string HorsefeedFormat;
- public static string HorseNeighsThanks;
- public static string HorseCouldNotFinish;
-
- public static string HorseFeedPersonalityIncreased;
- public static string HorseFeedInteligenceIncreased;
- public static string HorseFeedMagicBeanFormat;
- public static string HorseFeedMagicDropletFormat;
-
- // Tack horse menu
- public static string HorseTackedAsFollowsFormat;
- public static string HorseUnEquipSaddleFormat;
- public static string HorseUnEquipSaddlePadFormat;
- public static string HorseUnEquipBridleFormat;
- public static string HorseTackInInventory;
- public static string HorseLlamaTackInInventory;
- public static string HorseCamelTackInInventory;
- public static string HorseEquipFormat;
- public static string BackToHorse;
-
- // Treasure
- public static string PirateTreasureFormat;
- public static string PotOfGoldFormat;
-
- // Farrier
- public static string FarrierCurrentShoesFormat;
- public static string FarrierApplyIronShoesFormat;
- public static string FarrierApplySteelShoesFormat;
- public static string FarrierShoeAllFormat;
-
- public static string FarrierPutOnSteelShoesMessageFormat;
- public static string FarrierPutOnIronShoesMessageFormat;
- public static string FarrierPutOnSteelShoesAllMesssageFormat;
- public static string FarrierShoesCantAffordMessage;
-
- // Groomer
-
- public static string GroomerBestToHisAbilitiesFormat;
- public static string GroomerCannotAffordMessage;
- public static string GroomerBestToHisAbilitiesALL;
- public static string GroomerDontNeed;
-
- public static string GroomerHorseCurrentlyAtFormat;
- public static string GroomerApplyServiceFormat;
- public static string GroomerApplyServiceForAllFormat;
- public static string GroomerCannotImprove;
-
- // Vet
- public static string VetServiceHorseFormat;
- public static string VetSerivcesNotNeeded;
- public static string VetApplyServicesFormat;
-
- public static string VetApplyServicesForAllFormat;
- public static string VetFullHealthRecoveredMessageFormat;
-
- public static string VetServicesNotNeededAll;
- public static string VetAllFullHealthRecoveredMessage;
- public static string VetCannotAffordMessage;
-
- // Barn
- public static string BarnHorseFullyFedFormat;
- public static string BarnCantAffordService;
- public static string BarnAllHorsesFullyFed;
- public static string BarnServiceNotNeeded;
-
- public static string BarnHorseStatusFormat;
- public static string BarnHorseMaxed;
- public static string BarnLetHorseRelaxFormat;
- public static string BarnLetAllHorsesReleaxFormat;
-
- // Horse Whisperer
-
- public static string WhispererHorseLocateButtonFormat;
- public static string WhispererServiceCostYouFormat;
-
- public static string WhispererServiceCannotAfford;
- public static string WhispererSearchingAmoungHorses;
- public static string WhispererNoneFound;
- public static string WhispererHorsesFoundFormat;
-
- // Consume
-
- public static string ConsumeItemFormat;
- public static string ConsumedButMaxReached;
-
- // Inventory
- public static string InventoryItemFormat;
- public static string InventoryHeaderFormat;
-
- public static string ItemDropButton;
- public static string ItemInformationButton;
- public static string ItemInformationByIdButton;
- public static string ItemConsumeButton;
- public static string ItemThrowButton;
- public static string ItemOpenButton;
- public static string ItemUseButton;
- public static string ItemWearButton;
- public static string ItemReadButton;
-
- public static string ShopEntryFormat;
- public static string ShopBuyButton;
- public static string ShopBuy5Button;
- public static string ShopBuy25Button;
-
- public static string SellButton;
- public static string SellAllButton;
-
- // Highscore List
- public static string HighscoreHeaderMeta;
- public static string HighscoreFormat;
- public static string BestTimeFormat;
-
- public static string GameBestTimeFormat;
- public static string GameBestTimeHeaderFormat;
- public static string GameHighScoreHeaderFormat;
- public static string GameHighScoreFormat;
- public static string GameWinLooseHeaderFormat;
- public static string GameWinLooseFormat;
-
- // Awards
-
- public static string AwardOthersFormat;
- public static string AwardHeader;
- public static string NoAwards;
- public static string AwardFormat;
-
- // Wishing Well
-
- public static string NoWishingCoins;
- public static string WishingWellMeta;
- public static string YouHaveWishingCoinsFormat;
-
- public static string TossedCoin;
- public static string WishItemsFormat;
- public static string WishMoneyFormat;
- public static string WishWorldPeaceFormat;
- public static string WorldPeaceOnlySoDeep;
-
-
- // Shop
- public static string ThingsIAmSelling;
- public static string ThingsYouSellMe;
- public static string InfinitySign;
- public static string CantAfford1;
- public static string CantAfford5;
- public static string CantAfford25;
- public static string Brought1Format;
- public static string Brought1ButInventoryFull;
- public static string Brought5ButInventoryFull;
- public static string Brought25ButInventoryFull;
- public static string Brought5Format;
- public static string Brought25Format;
- public static string Sold1Format;
- public static string SoldAllFormat;
- public static string CannotSellYoudGetTooMuchMoney;
-
- // Bank
- public static string BankMadeInIntrestFormat;
- public static string BankCarryingFormat;
- public static string BankWhatToDo;
- public static string BankOptionsFormat;
-
- public static string BankWithdrewMoneyFormat;
- public static string BankDepositedMoneyFormat;
-
- public static string BankCantHoldThisMuch;
- public static string BankYouCantHoldThisMuch;
-
- // Npc
- public static string NpcStartChatFormat;
- public static string NpcNoChatpoints;
- public static string NpcChatpointFormat;
- public static string NpcReplyFormat;
- public static string NpcInformationButton;
- public static string NpcTalkButton;
- public static string NpcInformationFormat;
-
- // Sec Codes
- public static string InvalidSecCodeError;
- public static string YouEarnedAnItemFormat;
- public static string YouEarnedAnItemButInventoryWasFullFormat;
- public static string YouLostAnItemFormat;
- public static string YouEarnedMoneyFormat;
- public static string BeatHighscoreFormat;
- public static string BeatBestHighscore;
- public static string BeatBestTimeFormat;
-
- // Abuse Report
- public static string AbuseReportMetaFormat;
- public static string AbuseReportReasonFormat;
- public static string AbuseReportPlayerNotFoundFormat;
- public static string AbuseReportFiled;
- public static string AbuseReportProvideValidReason;
-
- // Player List
- public static string PlayerListAbuseReport;
- public static string PlayerListHeader;
- public static string PlayerListSelectFromFollowing;
- public static string PlayerListOfBuddiesFormat;
- public static string PlayerListOfNearby;
- public static string PlayerListOfPlayersFormat;
- public static string PlayerListOfPlayersAlphabetically;
- public static string PlayerListMapAllBuddiesForamt;
- public static string PlayerListMapAllPlayersFormat;
-
- public static string MuteButton;
- public static string HearButton;
-
- public static int ThreeMonthSubscripitionIcon;
- public static int YearSubscriptionIcon;
- public static int NewUserIcon;
- public static int MonthSubscriptionIcon;
- public static int AdminIcon;
- public static int ModeratorIcon;
-
- public static string BuddyListHeader;
- public static string BuddyListOnlineBuddyEntryFormat;
- public static string BuddyListOfflineBuddys;
- public static string BuddyListOfflineBuddyEntryFormat;
-
- public static string NearbyPlayersListHeader;
- public static string PlayerListEntryFormat;
-
- public static string PlayerListAllHeader;
- public static string PlayerListAllAlphabeticalHeader;
-
- public static string PlayerListIdle;
- public static string PlayerListIconFormat;
- public static string PlayerListIconInformation;
-
-
-
- // Meta
- public static string IsleFormat;
- public static string TownFormat;
- public static string AreaFormat;
- public static string LocationFormat;
- public static string PlayersHere;
- public static string NearbyPlayers;
- public static string North;
- public static string East;
- public static string South;
- public static string West;
-
- public static string TileFormat;
- public static string Seperator;
- public static string VenusFlyTrapFormat;
- public static string PasswordEntry;
-
- public static string ExitThisPlace;
- public static string BackToMap;
- public static string BackToMapHorse;
- public static string LongFullLine;
- public static string MetaTerminator;
- public static string R1;
-
- // Pawneer
- public static string PawneerUntackedHorsesICanBuy;
- public static string PawneerHorseFormat;
- public static string PawneerOrderMeta;
- public static string PawneerHorseConfirmationFormat;
- public static string PawneerHorseSoldMessagesFormat;
- public static string PawneerHorseNotFound;
-
- public static string PawneerOrderSelectBreed;
- public static string PawneerOrderBreedEntryFormat;
-
- public static string PawneerOrderSelectColorFormat;
- public static string PawneerOrderColorEntryFormat;
-
- public static string PawneerOrderSelectGenderFormat;
- public static string PawneerOrderGenderEntryFormat;
-
- public static string PawneerOrderHorseFoundFormat;
-
- // Shortcuts
- public static string NoTelescope;
-
- // Drawing room
- public static string DrawingLastToDrawFormat;
- public static string DrawingContentsSavedInSlotFormat;
- public static string DrawingContentsLoadedFromSlotFormat;
- public static string DrawingPlzClearLoad;
- public static string DrawingPlzClearDraw;
- public static string DrawingNotSentNotSubscribed;
- public static string DrawingCannotLoadNotSubscribed;
-
- // Birckpoet
- public static string LastPoetFormat;
-
- // Multiroom
- public static string MultiroomPlayersParticipating;
- public static string MultiroomParticipentFormat;
-
- // Inn
- public static string InnBuyMeal;
- public static string InnBuyRest;
- public static string InnItemEntryFormat;
- public static string InnEnjoyedServiceFormat;
- public static string InnFullyRested;
- public static string InnCannotAffordService;
-
- // Fountain
- public static string FountainMeta;
- public static string FountainDrankYourFull;
- public static string FountainDroppedMoneyFormat;
-
- // Login Fail messages
- public static string LoginFailedReasonBanned;
- public static string LoginFailedReasonBannedIpFormat;
-
- // Disconnect Messages
- public static string KickReasonBanned;
- public static string KickReasonKicked;
- public static string KickReasonDuplicateLogin;
- public static string KickReasonIdleFormat;
- public static string KickReasonNoTime;
-
- // Riddler
- public static string RiddlerEnterAnswerFormat;
- public static string RiddlerCorrectAnswerFormat;
- public static string RiddlerIncorrectAnswer;
- public static string RiddlerAnsweredAll;
-
- // Password
- public static string IncorrectPasswordMessage;
-
- // Swf
- public static string BoatCutscene;
- public static string WagonCutscene;
- public static string BallonCutscene;
-
- // Click
- public static string NothingInterestingHere;
-
- // HISP Help Command
- public static string FormatHispHelpUsage(char commandPrefix, string commandName, string commandUsage)
- {
- return HISPHelpCommandUsageFormat.Replace("%PREFIX%", commandPrefix.ToString()).Replace("%COMMANDNAME%", commandName).Replace("%USAGE%", ChatMsg.EscapeMessage(commandUsage));
- }
-
- // Violations
- public static string FormatProfileSavedBlocked(string reasons)
- {
- return ProfileViolationFormat.Replace("%REASON%", reasons);
- }
- public static string FormatRanchDesriptionBlocked(string reasons)
- {
- return RanchSavedDescrptionViolationsErrorFormat.Replace("%REASON%", reasons);
- }
- public static string FormatHorseProfileBlocked(string reasons)
- {
- return HorseProfileMessageProfileError.Replace("%REASON%", reasons);
- }
-
- // Throwables
- public static string FormatModSplatterBallAwardedOther(string username)
- {
- return ModSplatterballEarnedOtherFormat.Replace("%USERNAME%", username);
- }
- public static string FormatModSplatterBallAwardedYou(string username)
- {
- return ModSplatterballEarnedYouFormat.Replace("%USERNAME%", username);
- }
- public static string FormatThrownItemMessage(string itemFormat, string username)
- {
- return itemFormat.Replace("%USERNAME%", username);
- }
-
- // Random Events
- public static string FormatRandomEvent(string txt, int moneyEarned, string horseName)
- {
- return txt.Replace("%HORSENAME%", horseName).Replace("%MONEYEARNED%", "$" + moneyEarned.ToString("N0", CultureInfo.InvariantCulture).Replace("-", ""));
- }
-
- // Event : Water Ballon Game
- public static string FormatWaterBalloonGameWinner(string username, int timesHit)
- {
- return EventWinnerWaterBalloonGameFormat.Replace("%USERNAME%", username).Replace("%AMOUNT%", timesHit.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- // Event : Real Time Quiz
- public static string FormatEventRealTimeQuizMeta(int questionNo, int totalMistakes, string category, string question)
- {
- return EventMetaRealTimeQuizFormat.Replace("%QUESTIONNUMBER%", questionNo.ToString()).Replace("%MISTAKES%", totalMistakes.ToString()).Replace("%CATEGORY%", category).Replace("%QUESTIONTEXT%", question);
- }
- public static string FormatEventRealTimeQuizBonus(int bonusMoney)
- {
- return EventBonusRealTimeQuizFormat.Replace("%MONEY%", bonusMoney.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatEventRealTimeQuizWinBonus(int bonusMoney)
- {
- return EventWinBonusRealTimeQuizFormat.Replace("%MONEY%", bonusMoney.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatEventRealTimeQuizWin(string winner)
- {
- return EventWinRealTimeQuizFormat.Replace("%USERNAME%", winner);
- }
-
-
- // Event : Tack Shop Giveaway
- public static string FormatEventTackShopGiveawayEnd(string shopName, string townName)
- {
- return EventEndTackShopGiveawayFormat.Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName);
- }
- public static string FormatEventTackShopGiveawayWon(string playerName, string breed, string shopName, string townName, int totalPlayersAt)
- {
- return EventWonTackShopGiveawayFormat.Replace("%PLAYERNAME%", playerName).Replace("%BREED%", breed).Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName).Replace("%PLAYERCOUNT%", totalPlayersAt.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatEventTackShopGiveaway1Min(string color, string breed, string gender, string shopName, string townName)
- {
- return Event1MinTackShopGiveawayFormat.Replace("%COLOR%", color).Replace("%BREED%", breed).Replace("%GENDER%", gender).Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName);
- }
- public static string FormatEventTackShopGiveawayStart(string color, string breed, string gender, string shopName, string townName)
- {
- return EventStartTackShopGiveawayFormat.Replace("%COLOR%", color).Replace("%BREED%", breed).Replace("%GENDER%", gender).Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName);
- }
-
- // Event : Real Time Riddle
- public static string FormatEventRealTimeRiddleStart(string riddleText)
- {
- return EventStartRealTimeRiddleFormat.Replace("%RIDDLETEXT%", riddleText);
- }
- public static string FormatEventRealTimeRiddleWonForOthers(string winnerUserName)
- {
- return EventWonRealTimeRiddleForOthersFormat.Replace("%PLAYERNAME%", winnerUserName);
- }
- public static string FormatEventRealTimeRiddleWonForYou(int prize)
- {
- return EventWonRealTimeRiddleForYouFormat.Replace("%PRIZE%", prize.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- // Prison Command
- public static string FormatPrisonCommandMessage(string username)
- {
- return PrisonIsleCommandMessageFormat.Replace("%USERNAME%", username.ToUpper());
- }
-
- // Rules Command
- public static string FormatRulesCommandMessage(string username)
- {
- return RulesIsleCommandMessageFormat.Replace("%USERNAME%", username.ToUpper());
- }
-
- // Mute Command
- public static string FormatStoppedMutingPlayer(string username)
- {
- return StoppedMutingPlayerFormat.Replace("%USERNAME%", username);
- }
- public static string FormatNowMutingPlayer(string username)
- {
- return NowMutingPlayerFormat.Replace("%USERNAME%", username);
- }
- public static string FormatCantSendYourIgnoringPlayer(string username)
- {
- return CantSendPrivateMessagePlayerMutedFormat.Replace("%USERNAME%", username);
- }
- public static string FormatPlayerIgnoringAllPms(string username)
- {
- return PlayerIgnoringAllPrivateMessagesFormat.Replace("%USERNAME%", username);
- }
- public static string FormatPlayerIgnoringYourPms(string username)
- {
- return PlayerIgnoringYourPrivateMessagesFormat.Replace("%USERNAME%", username);
- }
-
-
- // AUTO SELL
-
- public static string FormatAutoSellSoldOffline(string horseName, int price, string toUsername)
- {
- return AutoSellYouSoldHorseOfflineFormat.Replace("%HORSE%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", toUsername);
- }
-
- public static string FormatAutoSellSold(string horseName, int price, string toUsername)
- {
- return AutoSellYouSoldHorseFormat.Replace("%HORSE%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", toUsername);
- }
-
- public static string FormatAutoSellSuccess(string horseName)
- {
- return AutoSellSuccessFormat.Replace("%HORSENAME%", horseName);
- }
-
- // MULTIHORSES
- public static string FormatMultiHorses(int placing, string horseName, string horseBreed, string swf)
- {
- return MultiHorseFormat.Replace("%NUMBER%", placing.ToString()).Replace("%HORSENAME%", horseName).Replace("%BREED%", horseBreed).Replace("%SWF%", swf);
- }
-
- // 2PLAYER
- public static string Format2PlayerRecordLose(string gameTitle)
- {
- return TwoPlayerRecordedLossFormat.Replace("%GAMETITLE%", gameTitle);
- }
- public static string Format2PlayerRecordWin(string gameTitle)
- {
- return TwoPlayerRecordedWinFormat.Replace("%GAMETITLE%", gameTitle);
- }
- public static string Format2PlayerStartingGame(string playerName)
- {
- return TwoPlayerStartingUpGameFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string Format2PlayerYouInvited(string playerName)
- {
- return TwoPlayerYourInvitedFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string Format2PlayerYourInvited(string playerName)
- {
- return TwoPlayerYourInvitedFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string Format2PlayerGameInProgress(string playerName)
- {
- return TwoPlayerGameInProgressFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string Format2PlayerPlayingWith(string playerName)
- {
- return TwoPlayerPlayingWithFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string Format2PlayerAcceptButton(int playerId)
- {
- return TwoPlayerAcceptButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string Format2PlayerInviteButton(int playerId)
- {
- return TwoPlayerInviteButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string Format2PlayerPlayerName(string playerName)
- {
- return TwoPlayerPlayerFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatAddBuddyRemoveBuddy(string buddyName)
- {
- return AddBuddyDeleteBuddyFormat.Replace("%PLAYERNAME%", buddyName);
- }
-
-
- public static string FormatTagTotalBuddies(int count)
- {
- return TagOtherBuddiesOnlineFormat.Replace("%TOTALBUDDIESON%", count.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTagYourIt(string taggedPlayer, string tagger)
- {
- return TagYourItFormat.Replace("%PLAYERNAME%", taggedPlayer).Replace("%USERNAME%", tagger);
- }
- public static string FormatAddBuddyConfirmed(string playername)
- {
- return AddBuddyYourNowBuddiesFormat.Replace("%PLAYERNAME%", playername);
- }
- public static string FormatAddBuddyPendingOther(string playername)
- {
- return AddBuddyOtherPendingFormat.Replace("%PLAYERNAME%", playername);
- }
- public static string FormatOtherNoCompetitionGear(string pronoun)
- {
- return NoCompetitionGearOther.Replace("%PRONOUN%", pronoun);
- }
- public static string FormatOtherCompetitionGear(string pronoun)
- {
- return CompetitionGearSelectedOther.Replace("%PRONOUN%", pronoun);
- }
- public static string FormatOtherJewelerySelected(string pronoun)
- {
- return JewelrySelectedOther.Replace("%PRONOUN%", pronoun);
- }
- public static string FormatOtherNoJewelery(string pronoun)
- {
- return NoJewerlyEquippedOther.Replace("%PRONOUN%", pronoun);
- }
- public static string FormatOtherHorsesMeta(string pronoun)
- {
- return StatsOtherHorses.Replace("%PRONOUN%", pronoun);
- }
-
- // Socials
- public static string FormatSocialButton(int socialId, string buttonName)
- {
- string id = "" + Convert.ToChar(0x21 + socialId);
- return SocialButton.Replace("%ID%", id).Replace("%SOCIALNAME%", buttonName);
- }
- public static string FormatSocialMessage(string socialMsg, string targetName, string senderName)
- {
- return SocialMessageFormat.Replace("%SOCIALMSG%", socialMsg.Replace("%TARGETNAME%", targetName).Replace("%SENDERNAME%", senderName));
- }
- public static string FormatSocialMenuType(string type)
- {
- return SocialTypeFormat.Replace("%TYPE%", Helper.CapitalizeFirstLetter(type.ToLower()));
- }
-
- // Trading
-
- public static string FormatTradeYouReceived(int money)
- {
- return TradeYouReceivedMoneyMessageFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTradeYouSpent(int money)
- {
- return TradeYouSpentMoneyMessageFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTradePlayerCantHandleMoreHorses(string playerName)
- {
- return TradeOtherPlayerCantHandleMoreHorsesFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatTradeCanceledByPlayer(string playerName)
- {
- return TradeCanceledByOtherPlayerFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatTradeItemOfferTooMuch(int quantity, int enteredAmount)
- {
- return TradeItemOfferTooMuchFormat.Replace("%QUANTITY%", quantity.ToString()).Replace("%ENTEREDAMOUNT%", enteredAmount.ToString());
- }
- public static string FormatTradeOfferMoneySubmenu(int currentOffer)
- {
- return TradeMoneyOfferSubmenuFormat.Replace("%CURRENTMONEYOFFER%", currentOffer.ToString());
- }
- public static string FormatTradeOfferItemSubmenu(int quantity)
- {
- return TradeItemOfferSubmenuFormat.Replace("%QUANTITY%", quantity.ToString());
- }
- public static string FormatTradeOfferItem(int itemIconId, string itemName, int itemCount, int itemId)
- {
- return TradeOfferItemFormat.Replace("%ICONID%", itemIconId.ToString()).Replace("%ITEMNAME%", itemName).Replace("%ITEMCOUNT%", itemCount.ToString()).Replace("%ITEMID%", itemId.ToString());
- }
- public static string FormatTradeOfferHorse(string horseName, bool tacked, int horseRandomId)
- {
- return TradeOfferHorseFormat.Replace("%HORSENAME%", horseName).Replace("%ISTACKED%", tacked ? Messages.TradeOfferHorseTacked : "").Replace("%HORSERANDOMID%", horseRandomId.ToString());
- }
- public static string FormatTradeWhatToOffer(string playerName)
- {
- return TradeWhatToOfferFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatTradeHorseOffer(string horseName, int horseRandomId)
- {
- return TradeOfferingHorseFormat.Replace("%HORSENAME%", horseName).Replace("%HORSERANDOMID%", horseRandomId.ToString());
- }
- public static string FormatTradeItemOffer(int iconId, int quantity, string item)
- {
- return TradeOfferingItemFormat.Replace("%ICONID%", iconId.ToString()).Replace("%TOTAL%", quantity.ToString()).Replace("%ITEM%", item);
- }
- public static string FormatTradeMoneyOffer(int amount)
- {
- return TradeOfferingMoneyFormat.Replace("%MONEY%", amount.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTradeOtherOffering(string playerName)
- {
- return TradeOtherOfferingFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatTradeYourOffering(string playerName)
- {
- return TradeYourOfferingFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatTradeWithPlayer(string playerName)
- {
- return TradeWithPlayerFormat.Replace("%PLAYERNAME%", playerName);
- }
-
- // Player Interactions
- public static string FormatPmButton(string playerName)
- {
- return PmButton.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatPlayerHereTagButton(int playerId)
- {
- return PlayerHereTagButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string FormatPlayerHereBuddyButton(int playerId)
- {
- return PlayerHereAddBuddyButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string FormatPlayerHereTradeButton(int playerId)
- {
- return PlayerHereTradeButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string FormatPlayerHereSocialButtton(int playerId)
- {
- return PlayerHereSocialButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string FormatPlayerHereProfileButton(int playerId)
- {
- return PlayerHereProfileButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string FormatPlayerHereMenu(int playerIcon, string playerName, string button)
- {
- string vstr = "^I" + playerIcon.ToString();
- if (playerIcon == -1)
- vstr = "";
- return PlayerHereMenuFormat.Replace("%PLAYERICON%", vstr).Replace("%PLAYERNAME%", playerName).Replace("%BUTTONS%", button);
- }
-
- // Auctions
- public static string FormatAuctionSoldTo(string playerName, int money)
- {
- return AuctionSoldToFormat.Replace("%PLAYERNAME%", playerName).Replace("%PRICE%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAuctionGoingTo(int timeRemaining, string winningPlayer, int winningBid, int auctionRandomId)
- {
- return AuctionGoingToFormat.Replace("%TIME%", timeRemaining.ToString()).Replace("%WINNINGPLAYER%", winningPlayer).Replace("%WINNINGBID%", winningBid.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AUCTIONRANDOMID%", auctionRandomId.ToString());
- }
- public static string FormatAuctionHorseSold(int money)
- {
- return AuctionHorseSoldFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAuctionBroughtHorse(int money)
- {
- return AuctionYouBroughtAHorseFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAuctionYourOutbidBy(string username, int amount)
- {
- return AuctionYouveBeenOutbidFormat.Replace("%USERNAME%", username).Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAuctionBidRaised(int prevAmount, int newAmount)
- {
- return AuctionBidRaisedFormat.Replace("%AMOUNT%", prevAmount.ToString("N0", CultureInfo.InvariantCulture)).Replace("%NEWAMOUNT%", newAmount.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAuctionHorseListEntry(string horseName, bool tacked, int randomId)
- {
- return AuctionHorseListEntryFormat.Replace("%HORSENAME%", horseName).Replace("%TACKEDORNO%", tacked ? Messages.AuctionHorseIsTacked : "").Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatAuctionHorseEntry(string username, string color, string breedName, string gender, int experience, string lookButton)
- {
- return AuctionHorseEntryFormat.Replace("%USERNAME%", username).Replace("%COLOR%", color).Replace("%BREED%", breedName).Replace("%GENDER%", gender).Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture)).Replace("%LOOKBUTTON%", lookButton);
-
- }
- public static string FormatAuctionViewHorseButton(int randomId)
- {
- return AuctionHorseViewButton.Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatAuctionPlayersHere(string usernames)
- {
- return AuctionPlayersHereFormat.Replace("%USERNAMES%", usernames);
- }
-
-
- public static string FormatHorseReturnedToOwner(string horseName)
- {
- return HorseLeaserReturnedToOwnerFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatHorseReturnedToUniter(string horseName)
- {
- return HorseLeaserReturnedToUniterFormat.Replace("%HORSENAME%", horseName);
- }
-
- public static string FormatArenaCompetingHorseEntry(string userName, string horseName, int horseRandomId)
- {
- return ArenaCompetingHorseFormat.Replace("%USERNAME%", userName).Replace("%HORSENAME%", horseName).Replace("%HORSERANDOMID%", horseRandomId.ToString());
- }
- public static string FormatArenaEnterHorseButton(string horseName, int entryCost, int horseRandomId)
- {
- return ArenaEnterHorseFormat.Replace("%HORSENAME%", horseName).Replace("%ENTRYCOST%", entryCost.ToString("N0", CultureInfo.InvariantCulture)).Replace("%HORSERANDOMID%", horseRandomId.ToString());
- }
- public static string FormatArenaCurrentlyTakingEntries(int hour, int minute, string amOrPm, int timeUntil)
- {
- return ArenaCurrentlyTakingEntriesFormat.Replace("%HOUR%", hour.ToString()).Replace("%MINUTE%", minute.ToString("00")).Replace("%AMORPM%", amOrPm).Replace("%TIMEUNTIL%", timeUntil.ToString());
- }
- public static string FormatArenaEventName(string eventName)
- {
- return ArenaEventNameFormat.Replace("%EVENTNAME%", eventName);
- }
- public static string FormatArenaOnlyWinnerWinsMessage(int experience)
- {
- return ArenaOnlyWinnerWins.Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatArenaYouWinMessage(int prizeMoney, int experience)
- {
- return ArenaYouWinFormat.Replace("%PRIZE%", prizeMoney.ToString("N0", CultureInfo.InvariantCulture)).Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatRanchForcefullySoldMessage(int amount)
- {
- return RanchForcefullySoldFormat.Replace("%AMOUNT%", amount.ToString());
- }
- public static string FormatArenaYourScore(int score)
- {
- return ArenaYourScoreFormat.Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatArenaPlacing(string place, string playerName, int score)
- {
- return ArenaPlacingFormat.Replace("%PLACE%", place).Replace("%USERNAME%", playerName).Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatHorseGamesEntry(int placing, string horseName, string Swf)
- {
- return HorseGamesHorseEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%HORSENAME%", horseName).Replace("%SWF%", Swf);
- }
- public static string FormatCityHallCantFindPlayerMessage(string playerName)
- {
- return CityHallCantFindPlayerMessageFormat.Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatCityHallTopExperiencedHorses(int placing, int experiencePoints, string playerName, string horseName)
- {
- return CityHallExperiencedHorseEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%EXP%", experiencePoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName);
- }
- public static string FormatCityHallTopMinigamePlayers(int placing, int gamesPlayed, string playerName)
- {
- return CityHallMinigamePlayerEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%GAMESPLAYED%", gamesPlayed.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatCityHallTopExperiencedPlayersEntry(int placing, int experiencePoints, string playerName)
- {
- return CityHallExperiencePlayerEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%EXP%", experiencePoints.ToString()).Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatCityHallTopAdventurousPlayersEntry(int placing, int questPoints, string playerName)
- {
- return CityHallAdventurousPlayerEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%QUESTPOINTS%", questPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatCityHallTopSpoiledHorseEntry(int spoiled, string playerName, string horseName)
- {
- return CityHallSpoiledHorseEntryFormat.Replace("%SPOILED%", spoiled.ToString()).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName);
- }
- public static string FormatCityHallTopPlayerEntry(int placing, double money, string playerName)
- {
- return CityHallRichPlayerFormat.Replace("%PLACING%", placing.ToString()).Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName);
- }
- public static string FormatCityHallTopRanchEntry(int placing, string playerName, int value, string mapxy)
- {
- return CityHallRanchEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%PLAYERNAME%", playerName).Replace("%VALUE%", value.ToString("N0", CultureInfo.InvariantCulture)).Replace("%MAPXY%", mapxy);
- }
- public static string FormatCityHallBestExpAutoSellEntry(int exp, string playerName, string horseName, int price, string color, string breed)
- {
- return CityHallMostExpAutoSellHorseEntryFormat.Replace("%EXP%", exp.ToString()).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%COLOR%", color).Replace("%BREED%", breed);
- }
- public static string FormatCityHallCheapAutoSellEntry(int price, string playerName, string horseName, string color, string breed, int exp)
- {
- return CityHallCheapestAutoSellHorseEntryFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName).Replace("%COLOR%", color).Replace("%BREED%", breed).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatCityHallSendMailMessage(string playerName)
- {
- return CityHallSentMessageFormat.Replace("%PLAYERNAME%", playerName);
- }
-
-
-
- public static string FormatMailReadMessage(string fromUser, string date, string subject, string message, int randomId)
- {
- return MailReadMetaFormat.Replace("%PLAYERNAME%", fromUser).Replace("%DATE%", date).Replace("%SUBJECT%", subject).Replace("%MESSAGE%", message).Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatMailEntry(string subject, string fromUser, int randomId)
- {
- return MailEntryFormat.Replace("%SUBJECT%", subject).Replace("%PLAYERNAME%", fromUser).Replace("%RANDOMID%", randomId.ToString());
- }
-
- public static string FormatTrainerCantTrainAgainIn(int time)
- {
- return TrainerCantTrainAgainInFormat.Replace("%TIME%", time.ToString());
- }
- public static string FormatTrainerFullyTrained(string horseName, int curStat)
- {
- return TrainerHorseFullyTrainedFormat.Replace("%HORSENAME%", horseName).Replace("%STAT%", curStat.ToString());
- }
- public static string FormatTrainerTrainInEntry(string horseName, int curStat, int maxStat, int randomId)
- {
- return TrainerHorseEntryFormat.Replace("%HORSENAME%", horseName).Replace("%CURSTAT%", curStat.ToString()).Replace("%MAXSTAT%", maxStat.ToString()).Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatTrainerHeaderFormat(string stat, int price, int amountInStat, int expamount)
- {
- return TrainerHeaderFormat.Replace("%STAT%", stat).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", amountInStat.ToString("N0", CultureInfo.InvariantCulture)).Replace("%EXPAMOUNT%", expamount.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTrainedInStatFormat(string horseName, string stat)
- {
- return TrainedInStatFormat.Replace("%HORSENAME%", horseName).Replace("%STAT%", stat);
- }
- public static string FormatHorseFeedMagicDropletUsed(string oldColor, string newColor)
- {
- return HorseFeedMagicDropletFormat.Replace("%PREVCOLOR%", oldColor).Replace("%NEWCOLOR%", newColor);
- }
- public static string FormatHorseFeedMagicBeanUsed(double oldH, double newH)
- {
- return HorseFeedMagicBeanFormat.Replace("%PREVHANDS%", oldH.ToString(CultureInfo.InvariantCulture)).Replace("%NEWHANDS%", newH.ToString(CultureInfo.InvariantCulture));
- }
- public static string FormatSantaOpenPresent(string itemName)
- {
- return SantaItemOpenedFormat.Replace("%ITEM%", itemName);
- }
- public static string FormatSantaItemEntry(int iconId, string itemName, int randomId)
- {
- return SantaWrapItemFormat.Replace("%ICONID%", iconId.ToString()).Replace("%NAME%", itemName).Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatPawneerOrderHorseFound(string breedName, string color, string gender, int height, int personality, int inteligence)
- {
- return PawneerOrderHorseFoundFormat.Replace("%BREEDNAME%", breedName).Replace("%COLOR%", color).Replace("%GENDER%", gender).Replace("%HEIGHT%", height.ToString()).Replace("%PERSONALITY%", personality.ToString()).Replace("%INTELIGENCE%", inteligence.ToString());
- }
- public static string FormatPawneerOrderGenderEntry(string genderName, string genderInternal)
- {
- return PawneerOrderGenderEntryFormat.Replace("%GENDERNAME%", genderName).Replace("%GENDERINTERNAL%", genderInternal);
- }
- public static string FormatPawneerOrderSelectGender(string color, string breedName)
- {
- return PawneerOrderSelectGenderFormat.Replace("%BREEDNAME%", breedName).Replace("%COLOR%", color);
- }
-
- public static string FormatPawneerOrderColorEntry(string color)
- {
- return PawneerOrderColorEntryFormat.Replace("%COLOR%", color);
- }
- public static string FormatPawneerOrderSelectColor(string breedName)
- {
- return PawneerOrderSelectColorFormat.Replace("%BREEDNAME%", breedName);
- }
- public static string FormatPawneerOrderBreedEntry(string breedName, int breedId)
- {
- return PawneerOrderBreedEntryFormat.Replace("%BREEDNAME%", breedName).Replace("%BREEDID%", breedId.ToString());
- }
- public static string FormatPawneerHorseEntry(string horseName, int price, int randomId)
- {
- return PawneerHorseFormat.Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatPawneerConfirmPawn(string breedName, int randomId)
- {
- return PawneerHorseConfirmationFormat.Replace("%BREEDNAME%", breedName).Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatPawneerSold(string horseName, int price)
- {
- return PawneerHorseSoldMessagesFormat.Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
-
-
- public static string FormatPlayerHereMessage(string playerName)
- {
- return ClickPlayerHereFormat.Replace("%USERNAME%", playerName);
- }
-
- // Barn Formats
- public static string FormatBarnLetAllHorsesReleax(int price)
- {
- return BarnLetAllHorsesReleaxFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBarnLetHorseRelax(int price, int randomId)
- {
- return BarnLetHorseRelaxFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatBarnHorseStatus(string horseName, int tiredness, int hunger, int thirst)
- {
- return BarnHorseStatusFormat.Replace("%HORSENAME%", horseName).Replace("%TIREDNESS%", tiredness.ToString()).Replace("%HUNGER%", hunger.ToString()).Replace("%THIRST%", thirst.ToString());
- }
- public static string FormatBarnHorseFullyFed(string horseName)
- {
- return BarnHorseFullyFedFormat.Replace("%HORSENAME%", horseName);
- }
- // Farrier Formats
- public static string FormatFarrierPutOnSteelShoesAllMesssage(int curShoes, int maxShoes)
- {
- return FarrierPutOnSteelShoesAllMesssageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
- }
- public static string FormatFarrierPutOnIronShoesMessage(int curShoes, int maxShoes)
- {
- return FarrierPutOnIronShoesMessageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
- }
- public static string FormatFarrierPutOnSteelShoesMessage(int curShoes, int maxShoes)
- {
- return FarrierPutOnSteelShoesMessageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
- }
- public static string FormatFarrierApplySteelToAll(int price, int incBy)
- {
- return FarrierShoeAllFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%INCBY%", incBy.ToString());
- }
- public static string FormatFarrierApplySteel(int price, int incBy, int horseRandomid)
- {
- return FarrierApplySteelShoesFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%INCBY%", incBy.ToString()).Replace("%HORSERANDOMID%", horseRandomid.ToString());
- }
- public static string FormatFarrierApplyIron(int price, int incBy, int horseRandomid)
- {
- return FarrierApplyIronShoesFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%INCBY%", incBy.ToString()).Replace("%HORSERANDOMID%", horseRandomid.ToString());
- }
- public static string FormatFarrierCurrentShoes(string horseName, int curShoes, int maxShoes)
- {
- return FarrierCurrentShoesFormat.Replace("%HORSENAME%", horseName).Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
- }
-
-
- // Ranch Formats
-
- public static string FormatRanchTrainFail(string horseName, int timeout)
- {
- return RanchTrainCantTrainFormat.Replace("%HORSENAME%", horseName).Replace("%TIME%", timeout.ToString());
- }
- public static string FormatRanchTrainBadMood(string horseName)
- {
- return RanchTrainBadMoodFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatRanchTrain(string horseName, int speed, int strength, int conformation, int agility, int endurance, int exp)
- {
- return RanchTrainSuccessFormat.Replace("%HORSENAME%", horseName).Replace("%SPEED%", speed.ToString("N0", CultureInfo.InvariantCulture)).Replace("%STRENGTH%", strength.ToString("N0", CultureInfo.InvariantCulture)).Replace("%CONFORMATION%", conformation.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AGILITY%", agility.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ENDURANCE%", endurance.ToString("N0", CultureInfo.InvariantCulture)).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatRanchDescOthers(string description)
- {
- return RanchDescriptionOthersFormat.Replace("%DESCRIPTION%", BBCode.EncodeBBCodeToMeta(description));
- }
- public static string FormatRanchSoldMessage(int price)
- {
- return RanchSoldFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatRanchUnownedMeta(int price)
- {
- return RanchUnownedRanchFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatRanchClickMessage(string owner, string title)
- {
- return RanchClickMessageFormat.Replace("%USERNAME%", owner).Replace("%TITLE%", title);
- }
- public static string FormatRanchBroughtMessage(int price)
- {
- return RanchRanchBroughtMessageFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatRanchEditDescriptonMeta(string curTitle, string curDesc)
- {
- return RanchEditDescriptionMetaFormat.Replace("%RANCHTITLE%", curTitle).Replace("%RANCHDESC%", curDesc);
- }
- public static string FormatRanchTitle(string username, string title)
- {
- return RanchTitleFormat.Replace("%USERNAME%", username).Replace("%TITLE%", title);
- }
- public static string FormatRanchYoursDescription(string description)
- {
- return RanchYourDescriptionFormat.Replace("%DESCRIPTION%", BBCode.EncodeBBCodeToMeta(description));
- }
- public static string FormatBuildingEntry(string name, int price, int buildingId)
- {
- return RanchBuildingEntryFormat.Replace("%BUILDINGNAME%", name).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%BUILDINGID%", buildingId.ToString());
- }
- public static string FormatBuildingInformaton(string name, string description)
- {
- return RanchBuildingInformationFormat.Replace("%BUILDINGNAME%", name).Replace("%BUILINGDESCRIPTION%", description);
- }
- public static string FormatBuildingAlreadyPlaced(string name, int buildingId, int price)
- {
- return RanchBuildingAlreadyHere.Replace("%BUILDINGNAME%", name).Replace("%BUILDINGID%", buildingId.ToString()).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuildingTornDown(int price)
- {
- return RanchTornDownRanchBuildingFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatViewBuilding(string name, string description)
- {
- return RanchViewBuildingFormat.Replace("%BUILDINGNAME%", name).Replace("%BUILDINGDESC%", description);
- }
- public static string FormatBarn(string horseList)
- {
- return RanchBarnHorsesFormat.Replace("%HORSELIST%", horseList);
- }
- public static string FormatCurrentUpgrade(string curUpgradeName, string curUpgradeDesc, string YouCouldUpgrade, int ranchSellPrice)
- {
- return UpgradeCurrentUpgradeFormat.Replace("%UPGRADENAME%", curUpgradeName).Replace("%UPGRADEDESC%", curUpgradeDesc).Replace("%YOUCOULDUPGRADE%", YouCouldUpgrade).Replace("%SELLPRICE%", ranchSellPrice.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatNextUpgrade(string nextUpgrade, int cost)
- {
- return UpgradeNextUpgradeFormat.Replace("%NEXTUPGRADE%", nextUpgrade).Replace("%COST%", cost.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuildingBarn(int numbBarns, int numbHorses)
- {
- return BuildingBarnFormat.Replace("%COUNT%", numbBarns.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", numbHorses.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuildingBigBarn(int numbBarns, int numbHorses)
- {
- return BuildingBigBarnFormat.Replace("%COUNT%", numbBarns.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", numbHorses.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuildingGoldBarn(int numbBarns, int numbHorses)
- {
- return BuildingGoldBarnFormat.Replace("%COUNT%", numbBarns.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", numbHorses.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuildingWindmill(int numbWindmills, int moneyEarns)
- {
- return BuildingWindmillFormat.Replace("%COUNT%", numbWindmills.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", moneyEarns.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTrainSuccess(string horseName)
- {
- return RanchTrainSuccessFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatCantTrain(string horseName)
- {
- return RanchTrainCantTrainFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatRiddlerRiddle(string riddle)
- {
- return RiddlerEnterAnswerFormat.Replace("%RIDDLE%", riddle);
- }
- public static string FormatRiddlerAnswerCorrect(string reason)
- {
- return RiddlerCorrectAnswerFormat.Replace("%REASON%", reason);
- }
- public static string FormatPirateTreasure(int prize)
- {
- return PirateTreasureFormat.Replace("%PRIZE%", prize.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatPotOfGold(int prize)
- {
- return PotOfGoldFormat.Replace("%PRIZE%", prize.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatWorkshopCraftEntry(int iconId, string itemName, int price, int itemId, int craftId)
- {
- return WorkshopCraftEntryFormat.Replace("%ICONID%", iconId.ToString()).Replace("%ITEMNAME%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ITEMID%", itemId.ToString()).Replace("%CRAFTID%", craftId.ToString());
- }
- public static string FormatWorkshopRequirements(string requiresTxt)
- {
- return WorkshopRequiresFormat.Replace("%REQUIRES%", requiresTxt);
- }
- public static string FormatWorkshopRequireEntry(int requiredCount, string itemNamePlural)
- {
- return WorkshopRequireEntryFormat.Replace("%REQCOUNT%", requiredCount.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ITEMNAME%", itemNamePlural);
- }
-
- public static string FormatDrawingRoomSaved(int slot)
- {
- return DrawingContentsSavedInSlotFormat.Replace("%SLOT%", slot.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatDrawingRoomLoaded(int slot)
- {
- return DrawingContentsLoadedFromSlotFormat.Replace("%SLOT%", slot.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatLastToDraw(string username)
- {
- return DrawingLastToDrawFormat.Replace("%USERNAME%", username);
- }
- public static string FormatGroomerApplyAllService(int count, int price)
- {
- return GroomerApplyServiceForAllFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%COUNT%", count.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatGroomerApplyService(int price, int randomid)
- {
- return GroomerApplyServiceFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%RANDOMID%", randomid.ToString());
- }
- public static string FormatHorseGroomCurrentlyAt(string horseName, int currentGroom, int maxGroom)
- {
- return GroomerHorseCurrentlyAtFormat.Replace("%HORSENAME%", horseName).Replace("%TOTAL%", currentGroom.ToString()).Replace("%MAX%", maxGroom.ToString());
- }
- public static string FormatHorseGroomedToBestAbilities(string horseName)
- {
- return GroomerBestToHisAbilitiesFormat.Replace("%HORSENAME%", horseName);
- }
-
- public static string FormatBookReadMeta(string author, string title, string bookText)
- {
- return BookReadFormat.Replace("%AUTHOR%", author).Replace("%TITLE%", title).Replace("%TEXT%", bookText);
- }
- public static string FormatBookEntry(string title, string author, int id)
- {
- return BookEntryFormat.Replace("%TITLE%", title).Replace("%AUTHOR%", author).Replace("%ID%", id.ToString());
- }
- public static string FormatIpBannedMessage(string Ip)
- {
- return LoginFailedReasonBannedIpFormat.Replace("%IP%", Ip);
- }
- public static string FormatAwardEntry(int iconId, string awardName, int bonusMoney, string description)
- {
- return AwardEntryFormat.Replace("%ICONID%", iconId.ToString()).Replace("%AWARDNAME%", awardName).Replace("%BONUSMONEY%", bonusMoney.ToString("N0", CultureInfo.InvariantCulture)).Replace("%DESCRIPTION%", description);
- }
-
- public static string FormatLocationDescription(string description)
- {
- return LocationDescriptionFormat.Replace("%AREADESC%", description);
- }
- public static string FormatIslandLocation(string isleName, string mapXy)
- {
- return LocationIslandFormat.Replace("%ISLENAME%", isleName).Replace("%MAPXY%", mapXy);
- }
- public static string FormatTownLocation(string townName, string mapXy)
- {
- return LocationTownFormat.Replace("%TOWNNAME%", townName).Replace("%MAPXY%", mapXy);
- }
- public static string FormatMinigameEntry(string gameName, string mapXy)
- {
- return MinigameEntryFormat.Replace("%GAMENAME%", gameName).Replace("%MAPXY%", mapXy);
- }
- public static string FormatCompanionEntry(string itemDescription)
- {
- return CompanionEntryFormat.Replace("%COMPANIONDESC%", itemDescription);
- }
- public static string FormatCompanionViewButton(int iconid, string itemName, string swf)
- {
- return CompanionViewFormat.Replace("%ICONID%", iconid.ToString()).Replace("%COMPANIONNAME%", itemName).Replace("%SWF%", swf);
- }
- public static string FormatTackSetPeice(string itemName, string itemDescription)
- {
- return TackSetPeiceFormat.Replace("%ITEMNAME%", itemName).Replace("%ITEMDESC%", itemDescription);
- }
-
- public static string FormatTackSetView(int iconId, string tackSetName, string swf)
- {
- return TackViewSetFormat.Replace("%ICONID%", iconId.ToString()).Replace("%SETNAME%", tackSetName).Replace("%SWF%", swf);
- }
-
- public static string FormatWhispererHorseFoundMeta(string mapXys)
- {
- return WhispererHorsesFoundFormat.Replace("%MAPXYS%", mapXys);
- }
-
- public static string FormatWhispererPrice(int price)
- {
- return WhispererServiceCostYouFormat.Replace("%MONEY%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatWhispererHorseBreedButton(string breedName, int breedId)
- {
- return WhispererHorseLocateButtonFormat.Replace("%BREEDNAME%", breedName).Replace("%BREEDID%", breedId.ToString());
- }
-
- public static string FormatVetServiceHorseMeta(string horseName, int currentHealth, int maxHealth)
- {
- return VetServiceHorseFormat.Replace("%HORSENAME%", horseName).Replace("%CURHEALTH%", currentHealth.ToString()).Replace("%MAXHEALTH%", maxHealth.ToString());
- }
-
- public static string FormatVetApplyServiceMeta(int price, int randomId)
- {
- return VetApplyServicesFormat.Replace("%PRICE%", price.ToString()).Replace("%RANDOMID%", randomId.ToString());
- }
-
- public static string FormatVetApplyAllServiceMeta(int price)
- {
- return VetApplyServicesForAllFormat.Replace("%PRICE%", price.ToString());
- }
-
- public static string FormatVetHorseAtFullHealthMessage(string horseName)
- {
- return VetFullHealthRecoveredMessageFormat.Replace("%HORSENAME%", horseName);
- }
-
-
- public static string FormatPondNotThirsty(string horseName)
- {
- return PondNotThirstyFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatPondDrinkOhNoes(string horseName)
- {
- return PondDrinkOhNoesFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatPondDrinkFull(string horseName)
- {
- return PondDrinkFullFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatPondHpLowMessage(string horseName)
- {
- return PondCantDrinkHpLowFormat.Replace("%HORSENAME%", horseName);
- }
-
- public static string FormatPondDrinkHorseFormat(string horseName, int thirst, int maxThirst, int randomId)
- {
- return PondHorseDrinkFormat.Replace("%HORSENAME%", horseName).Replace("%THIRST%", thirst.ToString()).Replace("%MAXTHIRST%", maxThirst.ToString()).Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatMudHoleGroomDestroyed(string horseName)
- {
- return MudHoleRuinedGroomFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatMiscStatsEntry(string statName, int value)
- {
- return StatMiscEntryFormat.Replace("%STAT%", statName).Replace("%COUNT%", value.ToString());
- }
- public static string FormatCompactedAdvancedStats(int speed, int strength, int conformation, int agility, int endurance, int inteligence, int personality)
- {
- return HorseAdvancedStatsCompactedFormat.Replace("%SPEED%", speed.ToString()).Replace("%STRENGTH%", strength.ToString()).Replace("%CONFORMATION%", conformation.ToString()).Replace("%AGILITY%", agility.ToString()).Replace("%ENDURANCE%", endurance.ToString()).Replace("%INTELIGENCE%", inteligence.ToString()).Replace("%PERSONALITY%", personality.ToString());
- }
- public static string FormatCompactedBasicStats(int health, int hunger, int thirst, int mood, int tiredness, int groom, int shoes)
- {
- int healthPercentage = Convert.ToInt32(Math.Floor((((double)health / 1000.0) * 100.0)));
- int hungerPercentage = Convert.ToInt32(Math.Floor((((double)hunger / 1000.0) * 100.0)));
- int thirstPercentage = Convert.ToInt32(Math.Floor((((double)thirst / 1000.0) * 100.0)));
- int moodPercentage = Convert.ToInt32(Math.Floor((((double)mood / 1000.0) * 100.0)));
- int tirednessPercentage = Convert.ToInt32(Math.Floor((((double)tiredness / 1000.0) * 100.0)));
- int groomPercentage = Convert.ToInt32(Math.Floor((((double)groom / 1000.0) * 100.0)));
- int shoesPercentage = Convert.ToInt32(Math.Floor((((double)shoes / 1000.0) * 100.0)));
-
- return HorseBasicStatsCompactedFormat.Replace("%HEALTH%", healthPercentage.ToString()).Replace("%HUNGER%", hungerPercentage.ToString()).Replace("%THIRST%", thirstPercentage.ToString()).Replace("%MOOD%", moodPercentage.ToString()).Replace("%TIREDNESS%", tirednessPercentage.ToString()).Replace("%GROOM%", groomPercentage.ToString()).Replace("%SHOES%", shoesPercentage.ToString());
- }
- public static string FormatAllStatsEntry(string horseName, string color, string breedName, string sex, int exp)
- {
- return HorseNameEntryFormat.Replace("%HORSENAME%", horseName).Replace("%COLOR%", color).Replace("%BREEDNAME%", breedName).Replace("%SEX%", sex).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormaHorseAllBasicStatsEntry(string horseName, string color, string breedName, string sex, int exp)
- {
- return HorseBasicStatEntryFormat.Replace("%HORSENAME%", horseName).Replace("%COLOR%", color).Replace("%BREEDNAME%", breedName).Replace("%SEX%", sex).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatHorseReleasedBy(string username)
- {
- return HorseReleasedBy.Replace("%USERNAME%", username);
- }
- public static string FormatHorseAreYouSureMessage(int randomId)
- {
- return HorseAreYouSureYouWantToReleaseFormat.Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatHorseCompanionRemoveMessage(string horseName)
- {
- return HorseCompanionRemoveMessageFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatHorseCompanionEquipMessage(string horseName, string itemName)
- {
- return HorseCompanionEquipMessageFormat.Replace("%HORSENAME%", horseName).Replace("%ITEM%", itemName);
- }
- public static string FormatPlaytimeMessage(int hours)
- {
- return PlaytimeMessageFormat.Replace("%TOTALHOURS%", hours.ToString());
- }
- public static string FormatHorseCompanionSelected(int icon, string name)
- {
- return HorseCompnaionMenuCurrentCompanionFormat.Replace("%ICONID%", icon.ToString()).Replace("%NAME%", name);
- }
- public static string FormatHorseCompanionMenuHeader(string horseName)
- {
- return HorseCompanionMenuHeaderFormat.Replace("%HORSENAME%", horseName);
- }
- public static string FormatHorseCompanionOption(int icon, int count, string name, int id)
- {
- return HorseCompanionEntryFormat.Replace("%ICONID%", icon.ToString()).Replace("%COUNT%", count.ToString("N0", CultureInfo.InvariantCulture)).Replace("%NAME%", name).Replace("%ID%", id.ToString());
- }
- public static string FormatHorseDismountedBecauseTackedMessage(string horsename)
- {
- return HorseDismountedBecauseNotTackedMessageFormat.Replace("%HORSENAME%", horsename);
- }
- public static string FormatAutoSellConfirmedMessage(int money)
- {
- return HorseAutoSellConfirmedFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAutoSellMenu(int currentAutoSellPrice)
- {
- return HorseAutoSellMenuFormat.Replace("%AUTOSELL%", currentAutoSellPrice.ToString());
- }
- public static string FormatHorseSetToNewCategory(string category)
- {
- return HorseSetNewCategoryMessageFormat.Replace("%CATEGORY%", category);
- }
- public static string FormatHorseSavedProfileMessage(string horsename)
- {
- return HorseSavedProfileMessageFormat.Replace("%HORSENAME%", horsename);
- }
- public static string FormatDescriptionEditMeta(string username, string description)
- {
- return HorseDescriptionEditFormat.Replace("%HORSENAME%", username).Replace("%DESCRIPTION%", description);
- }
- public static string FormatHorsePetMessage(string messages, int mood, int tiredness)
- {
- return HorsePetMessageFormat.Replace("%MESSAGES%", messages).Replace("%MOOD%", mood.ToString()).Replace("%TIREDNESS%", tiredness.ToString());
- }
- public static string FormatHorseCurrentStatus(string name)
- {
- return HorseCurrentStatusFormat.Replace("%HORSENAME%", name);
- }
-
- public static string FormatHorseFeedEntry(int icon, int count, string name, int randomId)
- {
- return HorsefeedFormat.Replace("%ICONID%", icon.ToString()).Replace("%COUNT%", count.ToString("N0", CultureInfo.InvariantCulture)).Replace("%NAME%", name).Replace("%RANDOMID%", randomId.ToString());
- }
-
- public static string FormatHorseRidingMessage(string name)
- {
- return HorseRidingMessageFormat.Replace("%HORSENAME%", name);
- }
- public static string FormatEquipTackMessage(string itemName, string horseName)
- {
- return HorseEquipTackMessageFormat.Replace("%NAME%", itemName).Replace("%HORSENAME%", horseName);
- }
- public static string FormatUnEquipTackMessage(string horseName)
- {
- return HorseUnEquipTackMessageFormat.Replace("%HORSENAME%", horseName);
- }
-
- public static string FormatTackedAsFollowedMessage(string name)
- {
- return HorseTackedAsFollowsFormat.Replace("%NAME%", name);
- }
- public static string FormatUnEquipSaddle(int iconId, string name)
- {
- return HorseUnEquipSaddleFormat.Replace("%NAME%", name).Replace("%ICONID%", iconId.ToString());
- }
- public static string FormatUnEquipSaddlePad(int iconId, string name)
- {
- return HorseUnEquipSaddlePadFormat.Replace("%NAME%", name).Replace("%ICONID%", iconId.ToString());
- }
- public static string FormatUnEquipBridle(int iconId, string name)
- {
- return HorseUnEquipBridleFormat.Replace("%NAME%", name).Replace("%ICONID%", iconId.ToString());
- }
- public static string FormatHorseEquip(int iconId, int count, string name, int id)
- {
- return HorseEquipFormat.Replace("%ICONID%", iconId.ToString()).Replace("%COUNT%", count.ToString()).Replace("%NAME%", name).Replace("%ID%", id.ToString());
- }
-
-
-
- public static string FormatHorseNameYours(string name)
- {
- return HorseNameYoursFormat.Replace("%NAME%", name);
- }
- public static string FormatHorseNameOthers(string name, string username)
- {
- return HorseNameOthersFormat.Replace("%NAME%", name).Replace("%USERNAME%", username);
- }
- public static string FormatHorseDescription(string Description)
- {
- return HorseDescriptionFormat.Replace("%DESCRIPTION%", BBCode.EncodeBBCodeToMeta(Description));
- }
- public static string FormatHorseHandsHigh(string color, string breed,string sex, double handsHigh)
- {
- return HorseHandsHeightFormat.Replace("%COLOR%", color).Replace("%SEX%", sex).Replace("%HANDS%", handsHigh.ToString(CultureInfo.InvariantCulture)).Replace("%BREED%", breed);
- }
- public static string FormatHorseExperience(int experience)
- {
- return HorseExperienceEarnedFormat.Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTrainableIn(int minutes)
- {
- return HorseTrainableInFormat.Replace("%TIME%", minutes.ToString());
- }
- public static string FormatHorseIsLeased(int minutes)
- {
- return HorseLeasedRemainingTimeFormat.Replace("%TIME%", minutes.ToString());
- }
-
- public static string FormatDisMountButton(int randomId)
- {
- return HorseDisMountButtonFormat.Replace("%ID%", randomId.ToString());
- }
- public static string FormatMountButton(int randomId)
- {
- return HorseMountButtonFormat.Replace("%ID%", randomId.ToString());
- }
- public static string FormatFeedButton(int randomId)
- {
- return HorseFeedButtonFormat.Replace("%ID%", randomId.ToString());
- }
- public static string FormatTackButton(int randomId)
- {
- return HorseTackButtonFormat.Replace("%ID%", randomId.ToString());
- }
- public static string FormatPetButton(int randomId)
- {
- return HorsePetButtonFormat.Replace("%ID%", randomId.ToString());
- }
- public static string FormatProfileButton(int randomId)
- {
- return HorseProfileButtonFormat.Replace("%ID%", randomId.ToString());
- }
-
- public static string FormatAutoSellPrice(int money)
- {
- return HorseAutoSellPriceFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAutoSellOthers(int price)
- {
- return HorseAutoSellOthersFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAutoSell(string autoSellStr)
- {
- return HorseAutoSellFormat.Replace("%AUTOSELL%", autoSellStr);
- }
-
- public static string FormatHorseCategory(string category, string markAsCategoryButtons)
- {
- return HorseCurrentlyCategoryFormat.Replace("%CATEGORY%", category).Replace("%MARKOPTIONS%", markAsCategoryButtons);
- }
- public static string FormatHorseTackEntry(int iconId, string name, int itemId)
- {
- return HorseTackFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", name).Replace("%ITEMID%", itemId.ToString());
- }
- public static string FormatHorseCompanionEntry(int iconId, string name, string companionChangeButton, int itemId)
- {
- return HorseCompanionFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", name).Replace("%ITEMID%", itemId.ToString()).Replace("%COMPANIONCHANGEBUTTON%", companionChangeButton);
- }
-
- public static string FormatHorseAdvancedStats(int spoiled, int magicUsed)
- {
- return HorseAdvancedStatsFormat.Replace("%SPOILED%", spoiled.ToString()).Replace("%MAGICUSED%", magicUsed.ToString());
- }
- public static string FormatHorseBreedDetails(string breedName, string description)
- {
- return HorseBreedDetailsFormat.Replace("%BREED%", breedName).Replace("%DESCRIPTION%", description);
- }
- public static string FormatHorseHeight(double minHeight, double maxHeight)
- {
- return HorseHeightRangeFormat.Replace("%MIN%", minHeight.ToString()).Replace("%MAX%", maxHeight.ToString());
- }
- public static string FormatHorseReleaseButton(string type)
- {
- return HorseReleaseButton.Replace("%TYPE%", type);
- }
- public static string FormatPossibleColors(string[] colors)
- {
- return HorsePossibleColorsFormat.Replace("%COLORS%", String.Join(",", colors));
- }
-
- public static string FormatHorseCategoryChangedMessage(string newCategory)
- {
- return UpdateHorseCategory.Replace("%CATEGORY%", newCategory);
- }
- public static string FormatHorseEntry(int numb, string horseName, string breedName, int randomId, bool hasAutoSell)
- {
- return HorseEntryFormat.Replace("%NUMB%", numb.ToString()).Replace("%NAME%", horseName).Replace("%BREED%", breedName).Replace("%ID%", randomId.ToString()).Replace("%ISAUTOSELL%", hasAutoSell ? HorseIsAutoSell : "");
- }
- public static string FormatHorseHeader(int maxHorses, int numHorses)
- {
- return HorsesMenuHeader.Replace("%MAXHORSE%", maxHorses.ToString()).Replace("%TOTALHORSE%", numHorses.ToString());
- }
-
-
- public static string FormatWildHorse(string name, string breed, int randomId, bool vowel)
- {
- return WildHorseFormat.Replace("%NAME%", name).Replace("%BREED%", breed).Replace("%RANDOMID%", randomId.ToString()).Replace("%N%", vowel ? "n" : "");
- }
- public static string FormatHorseBreedPreview(string name, string description)
- {
- return BreedViewerFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", description);
- }
- public static string FormatHorseAdvancedStat(int baseStat, int companionBoost, int tackBoost, int maxStat)
- {
- return AdvancedStatFormat.Replace("%BASE%", baseStat.ToString()).Replace("%COMPAINON%", companionBoost.ToString()).Replace("%TACK%", tackBoost.ToString()).Replace("%MAX%", maxStat.ToString());
- }
- public static string FormatHorseBasicStat(int health, int hunger, int thirst, int mood, int energy, int groom, int shoes)
- {
- return BasicStatFormat.Replace("%HEALTH%", health.ToString()).Replace("%HUNGER%", hunger.ToString()).Replace("%THIRST%", thirst.ToString()).Replace("%MOOD%", mood.ToString()).Replace("%ENERGY%", energy.ToString()).Replace("%GROOM%", groom.ToString()).Replace("%SHOES%", shoes.ToString());
- }
-
- public static string FormatHorseRelative(string name, int id)
- {
- return HorseRelativeFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString());
- }
- public static string FormatHorseBreed(string name, int id)
- {
- return HorseBreedFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString());
- }
- public static string FormatRanchSearchResult(string name, int x, int y)
- {
- string mapXy = FormatMapLocation(x, y);
- return LibaryFindRanchResultFormat.Replace("%USERNAME%", name).Replace("%MAPXY%", mapXy);
- }
- public static string FormatNpcSearchResult(string name, string desc,int x, int y)
- {
- string mapXy = FormatMapLocation(x, y);
- return LibaryFindNpcSearchResultFormat.Replace("%NPCNAME%", name).Replace("%MAPXY%", mapXy).Replace("%NPCDESC%", desc);
- }
- public static string FormatLastPoet(string name)
- {
- return LastPoetFormat.Replace("%USERNAME%", name);
- }
- public static string FormatMultiroomParticipent(string name)
- {
- return MultiroomParticipentFormat.Replace("%USERNAME%", name);
- }
- public static string FormatVenusFlyTrapMeta(int money)
- {
- return VenusFlyTrapFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBankIntrestMadeMeta(UInt64 intrestMade)
- {
- return BankMadeInIntrestFormat.Replace("%MONEY%", intrestMade.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBankCarryingMeta(int money, UInt64 bankMoney)
- {
- return BankCarryingFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%BANKMONEY%", bankMoney.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBankOptionsMeta(int money, UInt64 bankMoney)
- {
- return BankOptionsFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%BANKMONEY%", bankMoney.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatDepositedMoneyMessage(int money)
- {
- return BankDepositedMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatWithdrawMoneyMessage(int money)
- {
- return BankWithdrewMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatNumberOfWishingCoins(int amount)
- {
- return YouHaveWishingCoinsFormat.Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatWishThingsMessage(string item1, string item2)
- {
- return WishItemsFormat.Replace("%ITEM%", item1).Replace("%ITEM2%", item2);
- }
- public static string FormatWishMoneyMessage(int money)
- {
- return WishMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatWishWorldPeaceMessage(int money, string item)
- {
- return WishWorldPeaceFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ITEM%", item);
- }
-
-
-
- public static string FormatInnEnjoyedServiceMessage(string item, int price)
- {
- return InnEnjoyedServiceFormat.Replace("%ITEM%", item).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatInnItemEntry(int iconId, string itemName, int price, int itemId)
- {
- return InnItemEntryFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ID%", itemId.ToString());
- }
- public static string FormatDroppedMoneyMessage(int amount)
- {
- return FountainDroppedMoneyFormat.Replace("%MONEY%", amount.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatAbuseReportPlayerNotFound(string username)
- {
- return AbuseReportPlayerNotFoundFormat.Replace("%USERNAME%", username);
- }
- public static string FormatAbuseReportMetaPage(string reasonsMeta)
- {
- return AbuseReportMetaFormat.Replace("%REASONS%", reasonsMeta);
- }
-
- public static string FormatAbuseReportReason(string id, string name)
- {
- return AbuseReportReasonFormat.Replace("%ID%", id).Replace("%NAME%", name);
- }
- public static string FormatIconFormat(int iconId)
- {
- return PlayerListIconFormat.Replace("%ICON%", iconId.ToString());
- }
-
- public static string FormatMuteButton(int playerId)
- {
- return MuteButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string FormatHearButton(int playerId)
- {
- return HearButton.Replace("%PLAYERID%", playerId.ToString());
- }
- public static string FormatPlayerEntry(string iconFormat, string username, int userId, int time, int x, int y, bool idle, bool muteOrHear, bool isYou)
- {
- string xy = FormatMapLocation(x, y);
- string muteButton = FormatMuteButton(userId);
- string hearButton = FormatHearButton(userId);
- string pmButton = FormatPmButton(username);
- string msg = PlayerListEntryFormat.Replace("%ICONFORMAT%", iconFormat).Replace("%USERNAME%", username).Replace("%PLAYERID%", userId.ToString()).Replace("%TIME%", time.ToString("N0", CultureInfo.InvariantCulture)).Replace("%MAPXY%", xy).Replace("%IDLE%", idle ? PlayerListIdle : "");
- if (isYou)
- msg = msg.Replace("%MUTEORHEAR%", "").Replace("%PMBUTTON%", "");
- else
- msg = msg.Replace("%MUTEORHEAR%", muteOrHear ? hearButton : muteButton).Replace("%PMBUTTON%", pmButton);
- return msg;
- }
- public static string FormatOnlineBuddyEntry(string iconFormat, string username, int userId, int time, int x, int y)
- {
- string xy = FormatMapLocation(x, y);
- return BuddyListOnlineBuddyEntryFormat.Replace("%ICONFORMAT%", iconFormat).Replace("%USERNAME%", username).Replace("%TIME%", time.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERID%", userId.ToString()).Replace("%MAPXY%", xy);
- }
- public static string FormatOfflineBuddyEntry(string username, int userId, int time)
- {
- return BuddyListOfflineBuddyEntryFormat.Replace("%USERNAME%", username).Replace("%TIME%", time.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERID%", userId.ToString());
- }
- public static string FormatConsumeItemMessaege(string itemName)
- {
- return ConsumeItemFormat.Replace("%ITEM%", itemName);
- }
- public static string FormatAwardHeaderOthers(string username)
- {
- return AwardOthersFormat.Replace("%USERNAME%", username);
- }
- public static string FormatAwardEntry(int iconId, string title, int moneyBonus)
- {
- return AwardFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", title).Replace("%BONUS%", moneyBonus.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatBestTimeHeader(string gameName)
- {
- return GameBestTimeHeaderFormat.Replace("%GAMETITLE%", gameName);
- }
- public static string FormatBestTimeListEntry(int ranking, int score, string username, int totalplays)
- {
- return GameBestTimeFormat.Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString().Insert(score.ToString().Length - 2, ".")).Replace("%USERNAME%", username).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatWinlooseHeader(string gameName)
- {
- return GameWinLooseHeaderFormat.Replace("%GAMETITLE%", gameName);
- }
- public static string FormatWinlooseListEntry(int ranking, int wins, int loose, string username, int totalplays)
- {
- return GameWinLooseFormat.Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%WINS%", wins.ToString("N0", CultureInfo.InvariantCulture)).Replace("%LOSES%", loose.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", username).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatHighscoreHeader(string gameName)
- {
- return GameHighScoreHeaderFormat.Replace("%GAMETITLE%", gameName);
- }
- public static string FormatHighscoreListEntry(int ranking, int score, string username, int totalplays)
- {
- return GameHighScoreFormat.Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", username).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatHighscoreStat(string gameTitle, int ranking, int score, int totalplays)
- {
- return HighscoreFormat.Replace("%GAMETITLE%", gameTitle).Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture)).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBestTimeStat(string gameTitle, int ranking, int score, int totalplays)
- {
- return BestTimeFormat.Replace("%GAMETITLE%", gameTitle).Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString()).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatMoneyEarnedMessage(int money)
- {
- return YouEarnedMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTimeBeatenMessage(int time)
- {
- return BeatBestTimeFormat.Replace("%TIME%", time.ToString());
- }
- public static string FormatHighscoreBeatenMessage(int score)
- {
- return BeatHighscoreFormat.Replace("%SCORE%", score.ToString());
- }
- public static string FormatQuestFooter(int totalQuestsComplete, int totalQuests, int questPoints, int totalQuestPoints)
- {
- int questsComplete = Convert.ToInt32(Math.Floor(((decimal)totalQuestsComplete / (decimal)totalQuests) * (decimal)100.0));
- int questPointsComplete = Convert.ToInt32(Math.Floor(((decimal)questPoints / (decimal)totalQuestPoints) * (decimal)100.0));
- return QuestFooterFormat.Replace("%TOTALCOMPLETED%", totalQuestsComplete.ToString("N0", CultureInfo.InvariantCulture)).Replace("%TOTALQUESTS%", totalQuests.ToString("N0", CultureInfo.InvariantCulture)).Replace("%TOTALPERCENT%", questsComplete.ToString()).Replace("%YOURQP%", questPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%YOURQP%", totalQuestPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%QPERCENT%", questPointsComplete.ToString()).Replace("%MAXQP%", totalQuestPoints.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatQuestLogQuest(string questTitle, int questPoints, string difficulty, string completionStatus)
- {
- return QuestFormat.Replace("%TITLE%", questTitle).Replace("%QUESTPOINTS%", questPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%DIFFICULTY%", difficulty).Replace("%COMPLETION%", completionStatus);
- }
-
- public static string FormatPrivateNotes(string privateNotes)
- {
- return PrivateNotesMetaFormat.Replace("%PRIVATENOTES%", privateNotes);
- }
- public static string FormatRandomMovementMessage(string statName, string message)
- {
- return RandomMovement.Replace("%STAT%", statName).Replace("%MSG%", message);
- }
-
- public static string FormatJewerlyEquipMessage(string itemName)
- {
- return EquipJewelryFormat.Replace("%ITEM%", itemName);
- }
- public static string FormatEquipCompetitionGearMessage(string name)
- {
- return EquipCompetitionGearFormat.Replace("%ITEM%", name);
- }
-
- public static string FormatPlayerStat(string statFormat, string statName)
- {
- return statFormat.Replace("%STAT%", statName);
- }
- public static string FormatJewelrySlot1(string itemName, int icon, bool other)
- {
- return JewelrySlot1Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot1Button);
- }
- public static string FormatJewelrySlot2(string itemName, int icon, bool other)
- {
- return JewelrySlot2Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot2Button);
- }
- public static string FormatJewelrySlot3(string itemName, int icon, bool other)
- {
- return JewelrySlot3Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot3Button);
- }
- public static string FormatJewelrySlot4(string itemName, int icon, bool other)
- {
- return JewelrySlot4Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot4Button);
- }
-
- public static string FormatCompetitionGearHead(string itemName, string pronoun, int icon, bool other)
- {
- return CompetitionGearHeadFormat.Replace("%ITEM%", itemName).Replace("%ICON%",icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveHeadButton);
- }
- public static string FormatCompetitionGearBody(string itemName, string pronoun, int icon, bool other)
- {
- return CompetitionGearBodyFormat.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveBodyButton); ;
- }
- public static string FormatCompetitionGearLegs(string itemName, string pronoun, int icon, bool other)
- {
- return CompetitionGearLegsFormat.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveLegsButton);
- }
- public static string FormatCompetitionGearFeet(string itemName, string pronoun, int icon, bool other)
- {
- return CompetitionGearFeetFormat.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveFeetButton );
- }
- public static string FormatStatsBar(string username)
- {
- return StatsBarFormat.Replace("%USERNAME%", username);
- }
- public static string FormatStatsArea(string area)
- {
- return StatsAreaFormat.Replace("%AREA%", area);
- }
- public static string FormatMoneyStat(int money)
- {
- return StatsMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatFreeTime(int freeMinutes)
- {
- return StatsFreeTimeFormat.Replace("%FREEMINUTES%", freeMinutes.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatPlayerDescriptionForStatsMenu(string description)
- {
- return StatsDescriptionFormat.Replace("%PLAYERDESC%", BBCode.EncodeBBCodeToMeta(description));
- }
-
- public static string FormatExperience(int expPoints)
- {
- return StatsExpFormat.Replace("%EXPPOINTS%", expPoints.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatQuestPoints(int questPoints)
- {
- return StatsQuestpointsFormat.Replace("%QUESTPOINTS%", questPoints.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatHungryStat(string status)
- {
- return StatsHungerFormat.Replace("%HUNGER%", status);
- }
- public static string FormatThirstStat(string status)
- {
- return StatsThirstFormat.Replace("%THIRST%", status);
- }
- public static string FormatTiredStat(string status)
- {
- return StatsTiredFormat.Replace("%TIRED%", status);
- }
- public static string FormatGenderStat(string gender)
- {
- return StatsGenderFormat.Replace("%GENDER%", gender);
- }
- public static string FormatJewelryStat(string jewelformat)
- {
- return StatsJewelFormat.Replace("%JEWELFORMAT%", jewelformat);
- }
- public static string FormatCompetitionGearStat(string competitonGearFormat)
- {
- return StatsCompetitionGearFormat.Replace("%GEARFORMAT%", competitonGearFormat);
- }
- public static string FormatAdminCommandCompleteMessage(string command)
- {
- return AdminCommandFormat.Replace("%COMMAND%", command);
- }
-
- public static string FormatPlayerCommandCompleteMessage(string command)
- {
- return PlayerCommandFormat.Replace("%COMMAND%", command);
- }
-
- public static string FormatYouLostAnItemMessage(string itemName)
- {
- return YouLostAnItemFormat.Replace("%ITEM%", itemName);
- }
- public static string FormatYouEarnedAnItemButInventoryFullMessage(string itemName)
- {
- return YouEarnedAnItemButInventoryWasFullFormat.Replace("%ITEM%", itemName);
- }
- public static string FormatYouEarnedAnItemMessage(string itemName)
- {
- return YouEarnedAnItemFormat.Replace("%ITEM%", itemName);
- }
- public static string FormatSellMessage(string itemName, UInt64 price)
- {
- return Sold1Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatSellAllMessage(string itemName, UInt64 price, int sellAmount)
- {
- return SoldAllFormat.Replace("%AMOUNT%",sellAmount.ToString()).Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuy25Message(string itemName, UInt64 price)
- {
- return Brought25Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuy5Message(string itemName, UInt64 price)
- {
- return Brought5Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatBuyMessage(string itemName, UInt64 price)
- {
- return Brought1Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatShopEntry(int iconid, string count, string name, UInt64 price)
- {
- return ShopEntryFormat.Replace("%ICONID%", iconid.ToString()).Replace("%COUNT%", count).Replace("%TITLE%", name).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatWearButton(int randomId)
- {
- return ItemWearButton.Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatItemInformationByIdButton(int itemId)
- {
- return ItemInformationByIdButton.Replace("%ITEMID%", itemId.ToString());
- }
- public static string FormatBuyItemButton(int itemId)
- {
- return ShopBuyButton.Replace("%ITEMID%", itemId.ToString());
- }
- public static string FormatBuy5ItemButton(int itemId)
- {
- return ShopBuy5Button.Replace("%ITEMID%", itemId.ToString());
- }
- public static string FormatBuy25ItemButton(int itemId)
- {
- return ShopBuy25Button.Replace("%ITEMID%", itemId.ToString());
- }
- public static string FormatSellButton(int randomId)
- {
- return SellButton.Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatSellAllButton(int itemId)
- {
- return SellAllButton.Replace("%ITEMID%", itemId.ToString());
- }
-
- public static string FormatNpcInformation(string name, string description)
- {
- return NpcInformationFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", description);
- }
- public static string FormatItemInformation(string name, string description)
- {
- return ItemInformationFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", description);
- }
- public static string FormatNpcChatpoint(string name, string shortDescription, string chatText)
- {
- return NpcChatpointFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", shortDescription).Replace("%TEXT%", chatText);
- }
-
- public static string FormatNpcTalkButton(int npcId)
- {
- return NpcTalkButton.Replace("%ID%", npcId.ToString());
- }
- public static string FormatNpcInformationButton(int npcId)
- {
- return NpcInformationButton.Replace("%ID%", npcId.ToString());
- }
-
- public static string FormatNpcReply(string replyText, int replyId)
- {
- return NpcReplyFormat.Replace("%TEXT%", replyText).Replace("%ID%", replyId.ToString());
- }
-
- public static string FormatNpcStartChatMessage(int iconId, string name, string shortDescription, int npcId)
- {
- return NpcStartChatFormat.Replace("%ICONID%", iconId.ToString()).Replace("%NAME%", name).Replace("%DESCRIPTION%", shortDescription).Replace("%ID%", npcId.ToString());
- }
-
- public static string FormatGlobalChatViolationMessage(Chat.ChatMsg.Reason violationReason)
- {
- return ChatViolationMessageFormat.Replace("%AMOUNT%", RequiredChatViolations.ToString()).Replace("%REASON%", violationReason.Message);
- }
-
- public static string FormatPlayerInventoryHeaderMeta(int itemCount, int maxItems)
- {
- return InventoryHeaderFormat.Replace("%ITEMCOUNT%", itemCount.ToString()).Replace("%MAXITEMS%", maxItems.ToString());
- }
-
- public static string FormatPlayerInventoryItemMeta(int iconid, int count, string name)
- {
- return InventoryItemFormat.Replace("%ICONID%", iconid.ToString()).Replace("%COUNT%", count.ToString()).Replace("%TITLE%", name);
- }
-
- public static string FormatItemThrowButton(int itemId)
- {
- return ItemThrowButton.Replace("%ITEMID%", itemId.ToString());
- }
- public static string FormatItemConsumeButton(int randomid)
- {
- return ItemConsumeButton.Replace("%RANDOMID%", randomid.ToString());
- }
- public static string FormatItemInformationButton(int randomid)
- {
- return ItemInformationButton.Replace("%RANDOMID%", randomid.ToString());
- }
-
- public static string FormatItemDropButton(int randomid)
- {
- return ItemDropButton.Replace("%RANDOMID%", randomid.ToString());
- }
- public static string FormatItemOpenButton(int randomId)
- {
- return ItemOpenButton.Replace("%RANDOMID%", randomId.ToString());
- }
- public static string FormatItemUseButton(int randomid)
- {
- return ItemUseButton.Replace("%RANDOMID%", randomid.ToString());
- }
- public static string FormatItemReadButton(int randomid)
- {
- return ItemReadButton.Replace("%ITEMID%", randomid.ToString());
- }
-
- // Meta
- public static string FormatTileName(string name)
- {
- return Messages.TileFormat.Replace("%TILENAME%", name);
- }
- public static string FormatGrabItemMessage(string name, int randomid, int iconid)
- {
- return GrabItemFormat.Replace("%ICONID%",iconid.ToString()).Replace("%ITEMNAME%", name).Replace("%RANDOMID%", randomid.ToString());
- }
-
- public static string FormatPlayerBuddyList(int amount)
- {
- return PlayerListOfBuddiesFormat.Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatPlayerList(int amount)
- {
- return PlayerListOfPlayersFormat.Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatMapAllBuddiesList(string buddyxys)
- {
- return PlayerListMapAllBuddiesForamt.Replace("%BUDDYXYLIST%", buddyxys);
- }
-
- public static string FormatMapAllPlayersList(string playerxys)
- {
- return PlayerListMapAllPlayersFormat.Replace("%ALLXYLIST%", playerxys);
- }
-
- public static string FormatMapLocations(Point[] xys)
- {
- string allXys = "";
- foreach(Point xy in xys)
- {
- allXys += FormatMapLocation(xy.X, xy.Y);
- }
- return allXys;
- }
- public static string FormatMapLocation(int x, int y)
- {
- string xy = "";
- xy += (char)(((x - 4) / 64) + 20);
- xy += (char)(((x - 4) % 64) + 20);
-
- xy += (char)(((y - 1) / 64) + 20);
- xy += (char)(((y - 1) % 64) + 20);
- return xy;
- }
-
- public static string FormatTransportCost(int cost)
- {
- return TransportCostFormat.Replace("%COST%", cost.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatTransportMessage(string method, string place, string costFormat, int id, int x, int y)
- {
- string xy = FormatMapLocation(x, y);
-
- int iconId = 253;
- if(method == "WAGON")
- iconId = 254;
- return TransportFormat.Replace("%METHOD%", method).Replace("%PLACE%", place).Replace("%COSTFORMAT%", costFormat).Replace("%ID%", id.ToString()).Replace("%ICON%",iconId.ToString()).Replace("%XY%", xy);
- }
- // For all
- public static string FormatGlobalChatMessage(string username, string message)
- {
- return GlobalChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
- public static string FormatBuddyChatMessage(string username, string message)
- {
- return BuddyChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
- public static string FormatIsleChatMessage(string username, string message)
- {
- return IsleChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
- public static string FormatNearbyChatMessage(string username, string message)
- {
- return NearChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
- public static string FormatHereChatMessage(string username, string message)
- {
- return HereChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
- public static string FormatDirectMessage(string username, string message, string formatPart)
- {
- return DirectChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%FORMATPART%", formatPart);
- }
-
- public static string FormatGlobalChatMessageForMod(string username, string message)
- {
- return GlobalChatFormatForModerators.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
- public static string FormatAdsChatMessage(string username, string message)
- {
- return AdsChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
- public static string FormatModChatMessage(string username, string message)
- {
- return ModChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
- // NOTE: i dont have the correct format for this, im just guessing
- public static string FormatAdminChatMessage(string username, string message)
- {
- return AdminChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
- }
-
-
- // For Sender
- public static string FormatBuddyChatMessageForSender(int numbBuddies, string username, string message)
- {
- return BuddyChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbBuddies.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatHereChatMessageForSender(int numbHere, string username, string message)
- {
- return HereChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbHere.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatNearChatMessageForSender(int numbNear, string username, string message)
- {
- return NearChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbNear.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatIsleChatMessageForSender(int numbIsle, string username, string message)
- {
- return IsleChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbIsle.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatAdminChatForSender(int numbAdmins, string username, string message)
- {
- return AdminChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbAdmins.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatAdsChatForSender(int numbListening, string username, string message)
- {
- return AdsChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbListening.ToString("N0", CultureInfo.InvariantCulture));
- }
-
- public static string FormatModChatForSender(int numbMods, string username, string message)
- {
- return ModChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbMods.ToString("N0", CultureInfo.InvariantCulture));
- }
- public static string FormatDirectChatMessageForSender(string username,string toUsername, string message, string formatPart)
- {
- return DirectChatFormatForSender.Replace("%FROMUSER%", username).Replace("%TOUSER%", toUsername).Replace("%MESSAGE%", message).Replace("%FORMATPART%", formatPart);
- }
- public static string FormatIdleWarningMessage()
- {
- return IdleWarningFormat.Replace("%WARN%", GameServer.IdleWarning.ToString()).Replace("%KICK%", GameServer.IdleTimeout.ToString());
- }
-
- public static string FormatLoginMessage(string username)
- {
- return LoginMessageFormat.Replace("%USERNAME%", username);
- }
-
- public static string FormatLogoutMessage(string username)
- {
- return LogoutMessageFormat.Replace("%USERNAME%", username);
- }
-
- public static string FormatMotd(string Motd)
- {
- return MotdFormat.Replace("%MOTD%", Motd);
- }
- public static string FormatWelcomeMessage(string username)
- {
- return WelcomeFormat.Replace("%USERNAME%", username);
- }
-
- // NOTE: i dont have the correct format for this, im just guessing
- public static string FormatServerAnnoucement(string message)
- {
- return ServerAnnoucementFormat.Replace("%MESSAGE%", message);
- }
-
- // Transport
- public static string FormatWelcomeToAreaMessage(string placeName)
- {
- return WelcomeToAreaFormat.Replace("%PLACE%", placeName);
- }
-
- // Disconnect
- public static string FormatIdleKickMessage()
- {
- return KickReasonIdleFormat.Replace("%KICK%", GameServer.IdleTimeout.ToString());
- }
-
- }
-}
+using HISP.Security;
+using HISP.Server;
+using System;
+using System.Drawing;
+using System.Globalization;
+
+namespace HISP.Game
+{
+ public class Messages
+ {
+ public static int RequiredChatViolations;
+
+ // Message Queue
+ public static string MessageQueueHeader;
+
+ // Timed Messages
+ public static string PlaytimeMessageFormat;
+ public static string[] RngMessages;
+
+ // Prision Isle
+ public static string PrisonIsleSentMessage;
+ public static string PrisonIsleCommandMessageFormat;
+
+ // Rules Isle
+ public static string RulesIsleSentMessage;
+ public static string RulesIsleCommandMessageFormat;
+
+ // Mod
+ public static string ModIsleMessage;
+ public static string ModSplatterballEarnedYouFormat;
+ public static string ModSplatterballEarnedOtherFormat;
+
+ // Add Buddy
+ public static string AddBuddyPending;
+ public static string AddBuddyOtherPendingFormat;
+ public static string AddBuddyYourNowBuddiesFormat;
+ public static string AddBuddyDeleteBuddyFormat;
+
+ // Mute Command
+ public static string NowMutingPlayerFormat;
+ public static string StoppedMutingPlayerFormat;
+
+ public static string PlayerIgnoringYourPrivateMessagesFormat;
+ public static string PlayerIgnoringYourBuddyRequests;
+ public static string PlayerIgnoringYourSocials;
+
+ public static string PlayerIgnoringAllPrivateMessagesFormat;
+ public static string PlayerIgnoringAllBuddyRequests;
+ public static string PlayerIgnoringAllSocials;
+
+ public static string CantSendInMutedChannel;
+ public static string CantSendPrivateMessageWhileMuted;
+ public static string CantSendBuddyRequestWhileMuted;
+
+ public static string CantSendPrivateMessagePlayerMutedFormat;
+
+ // Chat Errors
+ public static string CantFindPlayerToPrivateMessage;
+ public static string AdsOnlyOncePerMinute;
+ public static string GlobalChatLimited;
+ public static string GlobalChatTooLong;
+ public static string AdsChatTooLong;
+
+
+ // Auto Sell
+ public static string AutoSellNotStandingInSamePlace;
+ public static string AutoSellSuccessFormat;
+ public static string HorseAutoSellValueTooHigh;
+ public static string AutoSellInsufficentFunds;
+ public static string AutoSellTooManyHorses;
+ public static string AutoSellYouSoldHorseFormat;
+ public static string AutoSellYouSoldHorseOfflineFormat;
+
+ // Tag
+ public static string TagYourItFormat;
+ public static string TagOtherBuddiesOnlineFormat;
+
+ // Socials
+ public static string SocialButton;
+ public static string SocialMessageFormat;
+ public static string SocialTypeFormat;
+ public static string SocialPlayerNoLongerNearby;
+
+ // Random Event
+ public static string RandomEventPrefix;
+
+ // Events : Mods Revenge
+ public static string EventStartModsRevenge;
+ public static string EventEndModsRevenge;
+
+ // Events : Isle Cards Trading Game
+ public static string EventStartIsleTradingGame;
+ public static string EventDisqualifiedIsleTradingGame;
+ public static string EventOnlyOneTypeIsleTradingGame;
+ public static string EventOnlyTwoTypeIsleTradingGame;
+ public static string EventOnlyThreeTypeIsleTradingGame;
+ public static string EventNoneIsleTradingGame;
+ public static string EventWonIsleTradingGame;
+
+ // Events : Water Balloon Game
+ public static string EventStartWaterBallonGame;
+ public static string EventWonWaterBallonGame;
+ public static string EventEndWaterBalloonGame;
+ public static string EventWinnerWaterBalloonGameFormat;
+
+ // Events : Real Time Quiz
+ public static string EventMetaRealTimeQuizFormat;
+ public static string EventStartRealTimeQuiz;
+ public static string EventEndRealTimeQuiz;
+ public static string EventBonusRealTimeQuizFormat;
+ public static string EventWinBonusRealTimeQuizFormat;
+ public static string EventWinRealTimeQuizFormat;
+ public static string EventUnavailableRealTimeQuiz;
+ public static string EventEnteredRealTimeQuiz;
+ public static string EventAlreadyEnteredRealTimeQuiz;
+ public static string EventQuitRealTimeQuiz;
+
+ // Events : Real Time Riddles
+ public static string EventStartRealTimeRiddleFormat;
+ public static string EventEndRealTimeRiddle;
+ public static string EventWonRealTimeRiddleForOthersFormat;
+ public static string EventWonRealTimeRiddleForYouFormat;
+ public static string EventAlreadySovledRealTimeRiddle;
+
+ // Events : Tack Shop Giveaway
+ public static string EventStartTackShopGiveawayFormat;
+ public static string Event1MinTackShopGiveawayFormat;
+ public static string EventWonTackShopGiveawayFormat;
+ public static string EventEndTackShopGiveawayFormat;
+
+ // MultiHorses
+ public static string OtherPlayersHere;
+ public static string MultiHorseSelectOneToJoinWith;
+ public static string MultiHorseFormat;
+
+ // 2Player
+ public static string TwoPlayerOtherPlayer;
+ public static string TwoPlayerPlayerFormat;
+ public static string TwoPlayerInviteButton;
+ public static string TwoPlayerAcceptButton;
+ public static string TwoPlayerSentInvite;
+ public static string TwoPlayerPlayingWithFormat;
+
+ public static string TwoPlayerGameInProgressFormat;
+
+ public static string TwoPlayerYourInvitedFormat;
+ public static string TwoPlayerInvitedFormat;
+ public static string TwoPlayerStartingUpGameFormat;
+
+ public static string TwoPlayerGameClosed;
+ public static string TwoPlayerGameClosedOther;
+
+ public static string TwoPlayerRecordedWinFormat;
+ public static string TwoPlayerRecordedLossFormat;
+
+ // Trading
+ public static string TradeWithPlayerFormat;
+
+ public static string TradeWaitingForOtherDone;
+ public static string TradeOtherPlayerIsDone;
+ public static string TradeFinalReview;
+
+ public static string TradeYourOfferingFormat;
+
+ public static string TradeAddItems;
+ public static string TradeOtherOfferingFormat;
+
+ public static string TradeWhenDoneClick;
+ public static string TradeCancelAnytime;
+ public static string TradeAcceptTrade;
+
+ public static string TradeOfferingNothing;
+ public static string TradeOfferingMoneyFormat;
+ public static string TradeOfferingItemFormat;
+ public static string TradeOfferingHorseFormat;
+
+ // Trading : What to Offer (menu)
+
+ public static string TradeWhatToOfferFormat;
+ public static string TradeOfferMoney;
+
+ public static string TradeOfferHorse;
+ public static string TradeOfferHorseFormat;
+ public static string TradeOfferHorseTacked;
+
+ public static string TradeOfferItem;
+ public static string TradeOfferItemFormat;
+ public static string TradeOfferItemOtherPlayerInvFull;
+
+ // Trading : Offer Submenu
+
+ public static string TradeMoneyOfferSubmenuFormat;
+ public static string TradeItemOfferSubmenuFormat;
+
+ // Trading : Messages
+
+ public static string TradeWaitingForOthersToAcceptMessage;
+
+ public static string TradeRequiresBothPlayersMessage;
+ public static string TradeCanceledBecuasePlayerMovedMessage;
+
+ public static string TradeItemOfferAtleast1;
+ public static string TradeItemOfferTooMuchFormat;
+ public static string TradeMoneyOfferTooMuch;
+
+ public static string TradeOtherPlayerHasNegativeMoney;
+ public static string TradeYouHaveNegativeMoney;
+
+ public static string TradeAcceptedMessage;
+ public static string TradeCanceledByYouMessage;
+ public static string TradeCanceledByOtherPlayerFormat;
+ public static string TradeCanceledInterupted;
+
+ public static string TradeYouCantHandleMoreHorses;
+ public static string TradeOtherPlayerCantHandleMoreHorsesFormat;
+
+ public static string TradeYouSpentMoneyMessageFormat;
+ public static string TradeYouReceivedMoneyMessageFormat;
+
+ public static string TradeRiddenHorse;
+
+ public static string TradeYouCantCarryMoreItems;
+ public static string TradeOtherCantCarryMoreItems;
+
+ public static string TradeNotAllowedWhileBidding;
+ public static string TradeNotAllowedWhileOtherBidding;
+
+ public static string TradeWillGiveYouTooMuchMoney;
+ public static string TradeWillGiveOtherTooMuchMoney;
+
+ // Player Interaction
+ public static string PlayerHereMenuFormat;
+
+ public static string PlayerHereProfileButton;
+ public static string PlayerHereSocialButton;
+ public static string PlayerHereTradeButton;
+ public static string PlayerHereAddBuddyButton;
+ public static string PlayerHereTagButton;
+
+ public static string PmButton;
+
+ // Auction House
+ public static string AuctionsRunning;
+ public static string AuctionHorseEntryFormat;
+ public static string AuctionPlayersHereFormat;
+
+ public static string AuctionAHorse;
+ public static string AuctionListHorse;
+
+ public static string AuctionHorseListEntryFormat;
+ public static string AuctionHorseViewButton;
+ public static string AuctionHorseIsTacked;
+
+ public static string AuctionBidMax;
+ public static string AuctionBidRaisedFormat;
+ public static string AuctionTopBid;
+ public static string AuctionExistingBidHigher;
+
+ public static string AuctionYouveBeenOutbidFormat;
+ public static string AuctionCantAffordBid;
+ public static string AuctionCantAffordAuctionFee;
+ public static string AuctionOneHorsePerPlayer;
+
+ public static string AuctionYouHaveTooManyHorses;
+ public static string AuctionOnlyOneWinningBidAllowed;
+
+ public static string AuctionYouBroughtAHorseFormat;
+ public static string AuctionNoHorseBrought;
+
+ public static string AuctionHorseSoldFormat;
+
+ public static string AuctionSoldToFormat;
+ public static string AuctionNotSold;
+ public static string AuctionGoingToFormat;
+
+ public static string AuctionNoOtherTransactionAllowed;
+
+ // Warp Command
+ public static string SuccessfullyWarpedToLocation;
+ public static string SuccessfullyWarpedToPlayer;
+ public static string OnlyUnicornCanWarp;
+ public static string FailedToUnderstandLocation;
+
+ // Click
+ public static string ClickPlayerHereFormat;
+
+ // Hammock
+ public static string HammockText;
+
+ // Horse Leaser
+ public static string HorseLeaserCantAffordMessage;
+ public static string HorseLeaserTemporaryHorseAdded;
+ public static string HorseLeaserHorsesFull;
+
+ public static string HorseLeaserReturnedToUniterPegasus;
+
+ public static string HorseLeaserReturnedToUniterFormat;
+ public static string HorseLeaserReturnedToOwnerFormat;
+
+ // Horse Games
+ public static string HorseGamesSelectHorse;
+ public static string HorseGamesHorseEntryFormat;
+
+ // Competitions
+ public static string ArenaResultsMessage;
+ public static string ArenaPlacingFormat;
+
+ public static string ArenaFirstPlace;
+ public static string ArenaSecondPlace;
+ public static string ArenaThirdPlace;
+ public static string ArenaFourthPlace;
+ public static string ArenaFifthPlace;
+ public static string ArenaSixthPlace;
+
+ public static string ArenaEnteredInto;
+
+ public static string ArenaAlreadyEntered;
+ public static string ArenaCantAfford;
+
+ public static string ArenaYourScoreFormat;
+
+ public static string ArenaJumpingStartup;
+ public static string ArenaDraftStartup;
+ public static string ArenaRacingStartup;
+ public static string ArenaConformationStartup;
+
+ public static string ArenaYouWinFormat;
+ public static string ArenaOnlyWinnerWins;
+
+ public static string ArenaTooHungry;
+ public static string ArenaTooThirsty;
+ public static string ArenaNeedsFarrier;
+ public static string ArenaTooTired;
+ public static string ArenaNeedsVet;
+
+ public static string ArenaEventNameFormat;
+ public static string ArenaFullErrorMessage;
+
+ public static string ArenaCurrentlyTakingEntriesFormat;
+ public static string ArenaCompetitionInProgress;
+ public static string ArenaYouHaveHorseEntered;
+ public static string ArenaCompetitionFull;
+
+ public static string ArenaEnterHorseFormat;
+ public static string ArenaCurrentCompetitors;
+ public static string ArenaCompetingHorseFormat;
+
+
+ // City Hall
+ public static string CityHallMenu;
+ public static string CityHallMailSendMeta;
+ public static string CityHallSentMessageFormat;
+ public static string CityHallCantAffordPostageMessage;
+ public static string CityHallCantFindPlayerMessageFormat;
+
+ // City Hall : Auto Sell
+ public static string CityHallCheapestAutoSells;
+ public static string CityHallCheapestAutoSellHorseEntryFormat;
+ public static string CityHallMostExpAutoSells;
+ public static string CityHallMostExpAutoSellHorseEntryFormat;
+
+ // City Hall : Ranch Investment
+ public static string CityHallTop25Ranches;
+ public static string CityHallRanchEntryFormat;
+
+ // City Hall : Richest Players
+ public static string CityHallTop25Players;
+ public static string CityHallRichPlayerFormat;
+
+ // City Hall : Spoiled Horses
+ public static string CityHallTop100SpoiledHorses;
+ public static string CityHallSpoiledHorseEntryFormat;
+
+ // City Hall : Most Adventurous Players
+ public static string CityHallTop25AdventurousPlayers;
+ public static string CityHallAdventurousPlayerEntryFormat;
+
+ // City Hall : Most Experienced Players
+ public static string CityHallTop25ExperiencedPlayers;
+ public static string CityHallExperiencePlayerEntryFormat;
+
+ // City Hall : Most Played Minigames
+ public static string CityHallTop25MinigamePlayers;
+ public static string CityHallMinigamePlayerEntryFormat;
+
+ // City Hall : Most Experienced Horses
+ public static string CityHallTop25ExperiencedHorses;
+ public static string CityHallExperiencedHorseEntryFormat;
+
+
+ // Mail Messages
+ public static string MailReceivedMessage;
+ public static string MailSe;
+ public static string MailSelectFromFollowing;
+
+ public static string MailEntryFormat;
+ public static string MailReadMetaFormat;
+ public static string MailRippedMessage;
+
+ // Ranch
+ public static string RanchUnownedRanchFormat;
+ public static string RanchYouCouldPurchaseThisRanch;
+ public static string RanchYouAllreadyOwnARanch;
+ public static string RanchSubscribersOnly;
+ public static string RanchDescriptionOthersFormat;
+ public static string RanchUnownedRanchClicked;
+ public static string RanchClickMessageFormat;
+
+ public static string RanchNoDorothyShoesMessage;
+ public static string RanchDorothyShoesMessage;
+ public static string RanchDorothyShoesPrisonIsleMessage;
+
+ public static string RanchCantAffordRanch;
+ public static string RanchRanchBroughtMessageFormat;
+ public static string RanchForcefullySoldFormat;
+ public static string RanchSavedRanchDescripton;
+ public static string RanchSavedTitleTooLongError;
+ public static string RanchSavedDescrptionTooLongError;
+ public static string RanchSavedTitleViolationsError;
+ public static string RanchSavedDescrptionViolationsErrorFormat;
+
+
+ public static string RanchDefaultRanchTitle;
+
+ public static string RanchEditDescriptionMetaFormat;
+ public static string RanchTitleFormat;
+ public static string RanchYourDescriptionFormat;
+
+ public static string RanchSellAreYouSure;
+ public static string RanchSoldFormat;
+
+ // Ranch: Build.
+ public static string RanchCanBuildOneOfTheFollowingInThisSpot;
+ public static string RanchBuildingEntryFormat;
+ public static string RanchCantAffordThisBuilding;
+ public static string RanchBuildingInformationFormat;
+ public static string RanchBuildingComplete;
+ public static string RanchBuildingAlreadyHere;
+ public static string RanchTornDownRanchBuildingFormat;
+ public static string RanchViewBuildingFormat;
+ public static string RanchBarnHorsesFormat;
+
+ // Ranch: Upgrade
+ public static string UpgradedMessage;
+ public static string UpgradeCannotAfford;
+ public static string UpgradeCurrentUpgradeFormat;
+ public static string UpgradeNextUpgradeFormat;
+
+ // Ranch: Special
+ public static string BuildingRestHere;
+ public static string BuildingGrainSilo;
+ public static string BuildingBarnFormat;
+ public static string BuildingBigBarnFormat;
+ public static string BuildingGoldBarnFormat;
+ public static string BuildingWaterWell;
+ public static string BuildingWindmillFormat;
+ public static string BuildingWagon;
+ public static string BuildingTrainingPen;
+ public static string BuildingVegatableGarden;
+
+ public static string RanchTrainAllAttempt;
+ public static string RanchTrainSuccessFormat;
+ public static string RanchTrainBadMoodFormat;
+ public static string RanchTrainCantTrainFormat;
+ public static string RanchHorsesFullyRested;
+ public static string RanchWagonDroppedYouOff;
+
+ // Training Pen
+ public static string TrainedInStatFormat;
+ public static string TrainerHeaderFormat;
+ public static string TrainerHorseEntryFormat;
+ public static string TrainerHorseFullyTrainedFormat;
+ public static string TrainerCantTrainAgainInFormat;
+ public static string TrainerCantAfford;
+
+ // Santa
+ public static string SantaHiddenText; // Text that claims that it costs $10 to wrap a present thats sent to the client but never displayed for some reason. also wrapping is free on pinto so IDEK.
+ public static string SantaWrapItemFormat;
+ public static string SantaWrappedObjectMessage;
+ public static string SantaCantWrapInvFull;
+ public static string SantaCantOpenNothingInside;
+ public static string SantaItemOpenedFormat;
+ public static string SantaItemCantOpenInvFull;
+
+ // Tools
+ public static string BinocularsNothing;
+ public static string MagnifyNothing;
+ public static string RakeNothing;
+ public static string ShovelNothing;
+
+ // Pronouns
+ public static string PronounMaleHe;
+ public static string PronounMaleHis;
+
+ public static string PronounFemaleShe;
+ public static string PronounFemaleHer;
+
+ public static string PronounYouYour;
+
+ // Stats Page
+ public static string StatsBarFormat;
+ public static string StatsAreaFormat;
+ public static string StatsMoneyFormat;
+ public static string StatsFreeTimeFormat;
+ public static string StatsDescriptionFormat;
+ public static string StatsExpFormat;
+ public static string StatsQuestpointsFormat;
+ public static string StatsHungerFormat;
+ public static string StatsThirstFormat;
+ public static string StatsTiredFormat;
+ public static string StatsGenderFormat;
+ public static string StatsJewelFormat;
+ public static string StatsCompetitionGearFormat;
+
+ public static string JewelrySlot1Format;
+ public static string JewelrySlot2Format;
+ public static string JewelrySlot3Format;
+ public static string JewelrySlot4Format;
+
+ public static string JewelryRemoveSlot1Button;
+ public static string JewelryRemoveSlot2Button;
+ public static string JewelryRemoveSlot3Button;
+ public static string JewelryRemoveSlot4Button;
+
+ public static string CompetitionGearHeadFormat;
+ public static string CompetitionGearBodyFormat;
+ public static string CompetitionGearLegsFormat;
+ public static string CompetitionGearFeetFormat;
+
+ public static string CompetitionGearRemoveHeadButton;
+ public static string CompetitionGearRemoveBodyButton;
+ public static string CompetitionGearRemoveLegsButton;
+ public static string CompetitionGearRemoveFeetButton;
+
+ public static string StatsPrivateNotesButton;
+ public static string StatsQuestsButton;
+ public static string StatsMinigameRankingButton;
+ public static string StatsAwardsButton;
+ public static string StatsMiscButton;
+
+ public static string NoJewerlyEquipped;
+ public static string NoJewerlyEquippedOther;
+
+ public static string NoCompetitionGear;
+ public static string NoCompetitionGearOther;
+
+ public static string JewelrySelected;
+ public static string JewelrySelectedOther;
+
+ public static string CompetitionGearSelected;
+ public static string CompetitionGearSelectedOther;
+
+ public static string StatHunger;
+ public static string StatThirst;
+ public static string StatTired;
+
+ public static string StatsOtherHorses;
+
+ public static string[] StatPlayerFormats;
+
+ public static string StatThirstDizzy;
+ public static string StatHungerStumble;
+
+
+ // Misc Stats
+
+ public static string StatMiscHeader;
+ public static string StatMiscNoneRecorded;
+ public static string StatMiscEntryFormat;
+
+ // Quests Completed Page
+ public static string QuestLogHeader;
+ public static string QuestFormat;
+
+ public static string QuestNotCompleted;
+ public static string QuestNotAvalible;
+ public static string QuestCompleted;
+
+ public static string QuestFooterFormat;
+
+ // Announcements
+ public static string NewUserMessage;
+ public static string WelcomeFormat;
+ public static string MotdFormat;
+ public static string IdleWarningFormat;
+ public static string LoginMessageFormat;
+ public static string LogoutMessageFormat;
+
+ // Libary
+ public static string LibaryMainMenu;
+ public static string LibaryFindNpc;
+ public static string LibaryFindNpcSearchResultsHeader;
+ public static string LibaryFindNpcSearchResultFormat;
+ public static string LibaryFindNpcSearchNoResults;
+ public static string LibaryFindNpcLimit5;
+
+ public static string LibaryFindRanch;
+ public static string LibaryFindRanchResultsHeader;
+ public static string LibaryFindRanchResultFormat;
+ public static string LibaryFindRanchResultsNoResults;
+
+
+ public static string HorseBreedFormat;
+ public static string HorseRelativeFormat;
+ public static string BreedViewerFormat;
+
+
+ // Records
+
+ public static string PrivateNotesSavedMessage;
+ public static string PrivateNotesMetaFormat;
+
+ // Profile
+
+ public static string ProfileSavedMessage;
+ public static string ProfileTooLongMessage;
+ public static string ProfileSaveBlockedFormat;
+
+ public static string ProfileViolationFormat;
+ // Hay Pile
+
+ public static string HasPitchforkMeta;
+ public static string NoPitchforkMeta;
+
+ // Chat
+
+ public static string GlobalChatFormat;
+ public static string AdsChatFormat;
+ public static string BuddyChatFormat;
+ public static string NearChatFormat;
+ public static string IsleChatFormat;
+ public static string HereChatFormat;
+ public static string DirectChatFormat;
+ public static string ModChatFormat;
+ public static string AdminChatFormat;
+
+ public static string YouWereSentToPrisionIsle;
+
+ public static string AdminCommandFormat;
+ public static string PlayerCommandFormat;
+
+ public static string MuteHelp;
+ public static string UnMuteHelp;
+
+ public static string GlobalChatFormatForModerators;
+ public static string DirectChatFormatForModerators;
+
+ public static string IsleChatFormatForSender;
+ public static string NearChatFormatForSender;
+ public static string HereChatFormatForSender;
+ public static string AdsChatFormatForSender;
+ public static string BuddyChatFormatForSender;
+ public static string DirectChatFormatForSender;
+ public static string AdminChatFormatForSender;
+ public static string ModChatFormatForSender;
+
+ public static string DmModBadge;
+ public static string DmAutoResponse;
+
+ public static string ChatViolationMessageFormat;
+ public static string PasswordNotice;
+ public static string CapsNotice;
+ public static string RandomMovement;
+
+ // AutoReply
+ public static string AutoReplyTooLong;
+ public static string AutoReplyHasViolations;
+
+ // Transport
+
+ public static string CantAffordTransport;
+ public static string WelcomeToAreaFormat;
+ public static string TransportFormat;
+ public static string TransportCostFormat;
+ public static string TransportWagonFree;
+
+ //Dropped Items
+
+ public static string NothingMessage;
+ public static string ItemsOnGroundMessage;
+ public static string GrabItemFormat;
+ public static string GrabAllItemsButton;
+ public static string GrabAllItemsMessage;
+ public static string GrabbedItemMessage;
+ public static string GrabbedItemButInventoryFull;
+ public static string GrabbedAllItemsButInventoryFull;
+ public static string GrabbedAllItemsMessage;
+ public static string DroppedAnItemMessage;
+ public static string DroppedItemTileIsFull;
+ public static string DroppedItemCouldntPickup;
+ public static string ItemInformationFormat;
+
+ // Pond
+ public static string PondHeader;
+ public static string PondGoFishing;
+ public static string PondNoFishingPole;
+ public static string PondNoEarthWorms;
+ public static string PondDrinkHereIfSafe;
+ public static string PondHorseDrinkFormat;
+
+ public static string PondNotThirstyFormat;
+ public static string PondDrinkFullFormat;
+ public static string PondCantDrinkHpLowFormat;
+ public static string PondDrinkOhNoesFormat;
+
+ // Mud Hole
+
+ public static string MudHoleNoHorses;
+ public static string MudHoleRuinedGroomFormat;
+
+ // Competition Gear
+
+ public static string EquipCompetitionGearFormat;
+ public static string RemoveCompetitionGear;
+
+ // Jewelry
+ public static string EquipJewelryFormat;
+ public static string MaxJewelryMessage;
+ public static string RemoveJewelry;
+
+ // Books (Libary)
+ public static string BooksOfHorseIsle;
+ public static string BookEntryFormat;
+ public static string BookReadFormat;
+
+ // Awards (Libary)
+ public static string AwardsAvalible;
+ public static string AwardEntryFormat;
+
+ // Locations (Libary)
+ public static string LocationKnownIslands;
+ public static string LocationKnownTowns;
+ public static string LocationIslandFormat;
+ public static string LocationTownFormat;
+ public static string LocationDescriptionFormat;
+
+ // Minigames (Libary)
+ public static string MinigameSingleplayer;
+ public static string MinigameTwoplayer;
+ public static string MinigameMultiplayer;
+ public static string MinigameCompetitions;
+ public static string MinigameEntryFormat;
+
+ // Companion (Libary)
+ public static string CompanionViewFormat;
+ public static string CompanionEntryFormat;
+
+ // Tack (Libary)
+ public static string TackViewSetFormat;
+ public static string TackSetPeiceFormat;
+
+ // Workshop
+ public static string WorkshopCraftEntryFormat;
+ public static string WorkshopRequiresFormat;
+ public static string WorkshopRequireEntryFormat;
+ public static string WorkshopAnd;
+
+ public static string WorkshopNoRoomInInventory;
+ public static string WorkshopMissingRequiredItem;
+ public static string WorkshopCraftingSuccess;
+ public static string WorkshopCannotAfford;
+
+ // Horse
+ public static string BreedViewerMaximumStats;
+ public static string AdvancedStatFormat;
+ public static string BasicStatFormat;
+ public static string HorsesHere;
+ public static string WildHorseFormat;
+ public static string HorseCaptureTimer;
+ public static string YouCapturedTheHorse;
+ public static string HorseEvadedCapture;
+ public static string HorseEscapedAnyway;
+ public static string TooManyHorses;
+ public static string HorsesMenuHeader;
+ public static string UpdateHorseCategory;
+ public static string HorseEntryFormat;
+ public static string ViewBaiscStats;
+ public static string ViewAdvancedStats;
+ public static string HorseBuckedYou;
+ public static string HorseLlamaBuckedYou;
+ public static string HorseCamelBuckedYou;
+
+ public static string HorseRidingMessageFormat;
+ public static string HorseNameYoursFormat;
+ public static string HorseNameOthersFormat;
+ public static string HorseDescriptionFormat;
+ public static string HorseHandsHeightFormat;
+ public static string HorseExperienceEarnedFormat;
+
+ public static string HorseTrainableInFormat;
+ public static string HorseIsTrainable;
+
+ public static string HorseLeasedRemainingTimeFormat;
+
+ public static string HorseCannotMountUntilTackedMessage;
+ public static string HorseDismountedBecauseNotTackedMessageFormat;
+ public static string HorseMountButtonFormat;
+ public static string HorseDisMountButtonFormat;
+ public static string HorseFeedButtonFormat;
+ public static string HorseTackButtonFormat;
+ public static string HorsePetButtonFormat;
+ public static string HorseProfileButtonFormat;
+
+ public static string HorseNoAutoSell;
+ public static string HorseAutoSellOthersFormat;
+ public static string HorseAutoSellFormat;
+ public static string HorseAutoSellPriceFormat;
+ public static string HorseCantAutoSellTacked;
+ public static string HorseCurrentlyCategoryFormat;
+ public static string HorseMarkAsCategory;
+ public static string HorseStats;
+ public static string HorseTacked;
+ public static string HorseTackFormat;
+ public static string HorseCompanion;
+ public static string HorseCompanionFormat;
+ public static string HorseNoCompanion;
+
+ public static string HorseAdvancedStatsFormat;
+ public static string HorseBreedDetailsFormat;
+ public static string HorseHeightRangeFormat;
+ public static string HorsePossibleColorsFormat;
+ public static string HorseReleaseButton;
+ public static string HorseOthers;
+
+ public static string HorseDescriptionEditFormat;
+
+ public static string HorseSavedProfileMessageFormat;
+ public static string HorseProfileMessageTooLongError;
+ public static string HorseNameTooLongError;
+ public static string HorseNameViolationsError;
+ public static string HorseProfileMessageProfileError;
+
+
+ public static string HorseCatchTooManyHorsesMessage;
+ public static string HorseEquipTackMessageFormat;
+ public static string HorseUnEquipTackMessageFormat;
+ public static string HorseStopRidingMessage;
+
+ public static string HorsePetMessageFormat;
+ public static string HorsePetTooHappy;
+ public static string HorsePetTooTired;
+ public static string HorseSetNewCategoryMessageFormat;
+
+ public static string HorseAutoSellMenuFormat;
+ public static string HorseIsAutoSell;
+ public static string HorseAutoSellConfirmedFormat;
+ public static string HorseAutoSellRemoved;
+
+ public static string HorseChangeAutoSell;
+ public static string HorseSetAutoSell;
+ public static string HorseCompanionChangeButton;
+
+ public static string HorseTackFailAutoSell;
+ public static string HorseAreYouSureYouWantToReleaseFormat;
+ public static string HorseCantReleaseTheHorseYourRidingOn;
+ public static string HorseReleasedMeta;
+ public static string HorseReleasedBy;
+
+ // All Stats (basic)
+ public static string HorseAllBasicStats;
+ public static string HorseBasicStatEntryFormat;
+
+ // All Stats (all)
+
+ public static string HorseAllStatsHeader;
+ public static string HorseNameEntryFormat;
+ public static string HorseBasicStatsCompactedFormat;
+ public static string HorseAdvancedStatsCompactedFormat;
+ public static string HorseAllStatsLegend;
+
+ // Horse compainion menu
+ public static string HorseCompanionMenuHeaderFormat;
+ public static string HorseCompnaionMenuCurrentCompanionFormat;
+ public static string HorseCompanionEntryFormat;
+ public static string HorseCompanionEquipMessageFormat;
+ public static string HorseCompanionRemoveMessageFormat;
+ public static string HorseCompanionMenuCurrentlyAvalibleCompanions;
+
+ // Horse Feed Menu
+ public static string HorseCurrentStatusFormat;
+ public static string HorseHoldingHorseFeed;
+ public static string HorsefeedFormat;
+ public static string HorseNeighsThanks;
+ public static string HorseCouldNotFinish;
+
+ public static string HorseFeedPersonalityIncreased;
+ public static string HorseFeedInteligenceIncreased;
+ public static string HorseFeedMagicBeanFormat;
+ public static string HorseFeedMagicDropletFormat;
+
+ // Tack horse menu
+ public static string HorseTackedAsFollowsFormat;
+ public static string HorseUnEquipSaddleFormat;
+ public static string HorseUnEquipSaddlePadFormat;
+ public static string HorseUnEquipBridleFormat;
+ public static string HorseTackInInventory;
+ public static string HorseLlamaTackInInventory;
+ public static string HorseCamelTackInInventory;
+ public static string HorseEquipFormat;
+ public static string BackToHorse;
+
+ // Treasure
+ public static string PirateTreasureFormat;
+ public static string PotOfGoldFormat;
+
+ // Farrier
+ public static string FarrierCurrentShoesFormat;
+ public static string FarrierApplyIronShoesFormat;
+ public static string FarrierApplySteelShoesFormat;
+ public static string FarrierShoeAllFormat;
+
+ public static string FarrierPutOnSteelShoesMessageFormat;
+ public static string FarrierPutOnIronShoesMessageFormat;
+ public static string FarrierPutOnSteelShoesAllMesssageFormat;
+ public static string FarrierShoesCantAffordMessage;
+
+ // Groomer
+
+ public static string GroomerBestToHisAbilitiesFormat;
+ public static string GroomerCannotAffordMessage;
+ public static string GroomerBestToHisAbilitiesALL;
+ public static string GroomerDontNeed;
+
+ public static string GroomerHorseCurrentlyAtFormat;
+ public static string GroomerApplyServiceFormat;
+ public static string GroomerApplyServiceForAllFormat;
+ public static string GroomerCannotImprove;
+
+ // Vet
+ public static string VetServiceHorseFormat;
+ public static string VetSerivcesNotNeeded;
+ public static string VetApplyServicesFormat;
+
+ public static string VetApplyServicesForAllFormat;
+ public static string VetFullHealthRecoveredMessageFormat;
+
+ public static string VetServicesNotNeededAll;
+ public static string VetAllFullHealthRecoveredMessage;
+ public static string VetCannotAffordMessage;
+
+ // Barn
+ public static string BarnHorseFullyFedFormat;
+ public static string BarnCantAffordService;
+ public static string BarnAllHorsesFullyFed;
+ public static string BarnServiceNotNeeded;
+
+ public static string BarnHorseStatusFormat;
+ public static string BarnHorseMaxed;
+ public static string BarnLetHorseRelaxFormat;
+ public static string BarnLetAllHorsesReleaxFormat;
+
+ // Horse Whisperer
+
+ public static string WhispererHorseLocateButtonFormat;
+ public static string WhispererServiceCostYouFormat;
+
+ public static string WhispererServiceCannotAfford;
+ public static string WhispererSearchingAmoungHorses;
+ public static string WhispererNoneFound;
+ public static string WhispererHorsesFoundFormat;
+
+ // Consume
+
+ public static string ConsumeItemFormat;
+ public static string ConsumedButMaxReached;
+
+ // Inventory
+ public static string InventoryItemFormat;
+ public static string InventoryHeaderFormat;
+
+ public static string ItemDropButton;
+ public static string ItemInformationButton;
+ public static string ItemInformationByIdButton;
+ public static string ItemConsumeButton;
+ public static string ItemThrowButton;
+ public static string ItemOpenButton;
+ public static string ItemUseButton;
+ public static string ItemWearButton;
+ public static string ItemReadButton;
+
+ public static string ShopEntryFormat;
+ public static string ShopBuyButton;
+ public static string ShopBuy5Button;
+ public static string ShopBuy25Button;
+
+ public static string SellButton;
+ public static string SellAllButton;
+
+ // Highscore List
+ public static string HighscoreHeaderMeta;
+ public static string HighscoreFormat;
+ public static string BestTimeFormat;
+
+ public static string GameBestTimeFormat;
+ public static string GameBestTimeHeaderFormat;
+ public static string GameHighScoreHeaderFormat;
+ public static string GameHighScoreFormat;
+ public static string GameWinLooseHeaderFormat;
+ public static string GameWinLooseFormat;
+
+ // Awards
+
+ public static string AwardOthersFormat;
+ public static string AwardHeader;
+ public static string NoAwards;
+ public static string AwardFormat;
+
+ // Wishing Well
+
+ public static string NoWishingCoins;
+ public static string WishingWellMeta;
+ public static string YouHaveWishingCoinsFormat;
+
+ public static string TossedCoin;
+ public static string WishItemsFormat;
+ public static string WishMoneyFormat;
+ public static string WishWorldPeaceFormat;
+ public static string WorldPeaceOnlySoDeep;
+
+
+ // Shop
+ public static string ThingsIAmSelling;
+ public static string ThingsYouSellMe;
+ public static string InfinitySign;
+ public static string CantAfford1;
+ public static string CantAfford5;
+ public static string CantAfford25;
+ public static string Brought1Format;
+ public static string Brought1ButInventoryFull;
+ public static string Brought5ButInventoryFull;
+ public static string Brought25ButInventoryFull;
+ public static string Brought5Format;
+ public static string Brought25Format;
+ public static string Sold1Format;
+ public static string SoldAllFormat;
+ public static string CannotSellYoudGetTooMuchMoney;
+
+ // Bank
+ public static string BankMadeInIntrestFormat;
+ public static string BankCarryingFormat;
+ public static string BankWhatToDo;
+ public static string BankOptionsFormat;
+
+ public static string BankWithdrewMoneyFormat;
+ public static string BankDepositedMoneyFormat;
+
+ public static string BankCantHoldThisMuch;
+ public static string BankYouCantHoldThisMuch;
+
+ // Npc
+ public static string NpcStartChatFormat;
+ public static string NpcNoChatpoints;
+ public static string NpcChatpointFormat;
+ public static string NpcReplyFormat;
+ public static string NpcInformationButton;
+ public static string NpcTalkButton;
+ public static string NpcInformationFormat;
+
+ // Sec Codes
+ public static string InvalidSecCodeError;
+ public static string YouEarnedAnItemFormat;
+ public static string YouEarnedAnItemButInventoryWasFullFormat;
+ public static string YouLostAnItemFormat;
+ public static string YouEarnedMoneyFormat;
+ public static string BeatHighscoreFormat;
+ public static string BeatBestHighscore;
+ public static string BeatBestTimeFormat;
+
+ // Abuse Report
+ public static string AbuseReportMetaFormat;
+ public static string AbuseReportReasonFormat;
+ public static string AbuseReportPlayerNotFoundFormat;
+ public static string AbuseReportFiled;
+ public static string AbuseReportProvideValidReason;
+
+ // Player List
+ public static string PlayerListAbuseReport;
+ public static string PlayerListHeader;
+ public static string PlayerListSelectFromFollowing;
+ public static string PlayerListOfBuddiesFormat;
+ public static string PlayerListOfNearby;
+ public static string PlayerListOfPlayersFormat;
+ public static string PlayerListOfPlayersAlphabetically;
+ public static string PlayerListMapAllBuddiesForamt;
+ public static string PlayerListMapAllPlayersFormat;
+
+ public static string MuteButton;
+ public static string HearButton;
+
+ public static int ThreeMonthSubscripitionIcon;
+ public static int YearSubscriptionIcon;
+ public static int NewUserIcon;
+ public static int MonthSubscriptionIcon;
+ public static int AdminIcon;
+ public static int ModeratorIcon;
+
+ public static string BuddyListHeader;
+ public static string BuddyListOnlineBuddyEntryFormat;
+ public static string BuddyListOfflineBuddys;
+ public static string BuddyListOfflineBuddyEntryFormat;
+
+ public static string NearbyPlayersListHeader;
+ public static string PlayerListEntryFormat;
+
+ public static string PlayerListAllHeader;
+ public static string PlayerListAllAlphabeticalHeader;
+
+ public static string PlayerListIdle;
+ public static string PlayerListIconFormat;
+ public static string PlayerListIconInformation;
+
+
+
+ // Meta
+ public static string IsleFormat;
+ public static string TownFormat;
+ public static string AreaFormat;
+ public static string LocationFormat;
+ public static string PlayersHere;
+ public static string NearbyPlayers;
+ public static string North;
+ public static string East;
+ public static string South;
+ public static string West;
+
+ public static string TileFormat;
+ public static string Seperator;
+ public static string VenusFlyTrapFormat;
+ public static string PasswordEntry;
+
+ public static string ExitThisPlace;
+ public static string BackToMap;
+ public static string BackToMapHorse;
+ public static string LongFullLine;
+ public static string MetaTerminator;
+ public static string R1;
+
+ // Pawneer
+ public static string PawneerUntackedHorsesICanBuy;
+ public static string PawneerHorseFormat;
+ public static string PawneerOrderMeta;
+ public static string PawneerHorseConfirmationFormat;
+ public static string PawneerHorseSoldMessagesFormat;
+ public static string PawneerHorseNotFound;
+
+ public static string PawneerOrderSelectBreed;
+ public static string PawneerOrderBreedEntryFormat;
+
+ public static string PawneerOrderSelectColorFormat;
+ public static string PawneerOrderColorEntryFormat;
+
+ public static string PawneerOrderSelectGenderFormat;
+ public static string PawneerOrderGenderEntryFormat;
+
+ public static string PawneerOrderHorseFoundFormat;
+
+ // Shortcuts
+ public static string NoTelescope;
+
+ // Drawing room
+ public static string DrawingLastToDrawFormat;
+ public static string DrawingContentsSavedInSlotFormat;
+ public static string DrawingContentsLoadedFromSlotFormat;
+ public static string DrawingPlzClearLoad;
+ public static string DrawingPlzClearDraw;
+ public static string DrawingNotSentNotSubscribed;
+ public static string DrawingCannotLoadNotSubscribed;
+
+ // Birckpoet
+ public static string LastPoetFormat;
+
+ // Multiroom
+ public static string MultiroomPlayersParticipating;
+ public static string MultiroomParticipentFormat;
+
+ // Inn
+ public static string InnBuyMeal;
+ public static string InnBuyRest;
+ public static string InnItemEntryFormat;
+ public static string InnEnjoyedServiceFormat;
+ public static string InnFullyRested;
+ public static string InnCannotAffordService;
+
+ // Fountain
+ public static string FountainMeta;
+ public static string FountainDrankYourFull;
+ public static string FountainDroppedMoneyFormat;
+
+ // Login Fail messages
+ public static string LoginFailedReasonBanned;
+ public static string LoginFailedReasonBannedIpFormat;
+
+ // Disconnect Messages
+ public static string KickReasonBanned;
+ public static string KickReasonKicked;
+ public static string KickReasonDuplicateLogin;
+ public static string KickReasonIdleFormat;
+ public static string KickReasonNoTime;
+
+ // Riddler
+ public static string RiddlerEnterAnswerFormat;
+ public static string RiddlerCorrectAnswerFormat;
+ public static string RiddlerIncorrectAnswer;
+ public static string RiddlerAnsweredAll;
+
+ // Password
+ public static string IncorrectPasswordMessage;
+
+ // Swf
+ public static string BoatCutscene;
+ public static string WagonCutscene;
+ public static string BallonCutscene;
+
+ // Click
+ public static string NothingInterestingHere;
+
+ // Violations
+ public static string FormatProfileSavedBlocked(string reasons)
+ {
+ return ProfileViolationFormat.Replace("%REASON%", reasons);
+ }
+ public static string FormatRanchDesriptionBlocked(string reasons)
+ {
+ return RanchSavedDescrptionViolationsErrorFormat.Replace("%REASON%", reasons);
+ }
+ public static string FormatHorseProfileBlocked(string reasons)
+ {
+ return HorseProfileMessageProfileError.Replace("%REASON%", reasons);
+ }
+
+ // Throwables
+ public static string FormatModSplatterBallAwardedOther(string username)
+ {
+ return ModSplatterballEarnedOtherFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatModSplatterBallAwardedYou(string username)
+ {
+ return ModSplatterballEarnedYouFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatThrownItemMessage(string itemFormat, string username)
+ {
+ return itemFormat.Replace("%USERNAME%", username);
+ }
+
+ // Random Events
+ public static string FormatRandomEvent(string txt, int moneyEarned, string horseName)
+ {
+ return txt.Replace("%HORSENAME%", horseName).Replace("%MONEYEARNED%", "$" + moneyEarned.ToString("N0", CultureInfo.InvariantCulture).Replace("-", ""));
+ }
+
+ // Event : Water Ballon Game
+ public static string FormatWaterBalloonGameWinner(string username, int timesHit)
+ {
+ return EventWinnerWaterBalloonGameFormat.Replace("%USERNAME%", username).Replace("%AMOUNT%", timesHit.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ // Event : Real Time Quiz
+ public static string FormatEventRealTimeQuizMeta(int questionNo, int totalMistakes, string category, string question)
+ {
+ return EventMetaRealTimeQuizFormat.Replace("%QUESTIONNUMBER%", questionNo.ToString()).Replace("%MISTAKES%", totalMistakes.ToString()).Replace("%CATEGORY%", category).Replace("%QUESTIONTEXT%", question);
+ }
+ public static string FormatEventRealTimeQuizBonus(int bonusMoney)
+ {
+ return EventBonusRealTimeQuizFormat.Replace("%MONEY%", bonusMoney.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatEventRealTimeQuizWinBonus(int bonusMoney)
+ {
+ return EventWinBonusRealTimeQuizFormat.Replace("%MONEY%", bonusMoney.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatEventRealTimeQuizWin(string winner)
+ {
+ return EventWinRealTimeQuizFormat.Replace("%USERNAME%", winner);
+ }
+
+
+ // Event : Tack Shop Giveaway
+ public static string FormatEventTackShopGiveawayEnd(string shopName, string townName)
+ {
+ return EventEndTackShopGiveawayFormat.Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName);
+ }
+ public static string FormatEventTackShopGiveawayWon(string playerName, string breed, string shopName, string townName, int totalPlayersAt)
+ {
+ return EventWonTackShopGiveawayFormat.Replace("%PLAYERNAME%", playerName).Replace("%BREED%", breed).Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName).Replace("%PLAYERCOUNT%", totalPlayersAt.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatEventTackShopGiveaway1Min(string color, string breed, string gender, string shopName, string townName)
+ {
+ return Event1MinTackShopGiveawayFormat.Replace("%COLOR%", color).Replace("%BREED%", breed).Replace("%GENDER%", gender).Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName);
+ }
+ public static string FormatEventTackShopGiveawayStart(string color, string breed, string gender, string shopName, string townName)
+ {
+ return EventStartTackShopGiveawayFormat.Replace("%COLOR%", color).Replace("%BREED%", breed).Replace("%GENDER%", gender).Replace("%SHOPNAME%", shopName).Replace("%TOWN%", townName);
+ }
+
+ // Event : Real Time Riddle
+ public static string FormatEventRealTimeRiddleStart(string riddleText)
+ {
+ return EventStartRealTimeRiddleFormat.Replace("%RIDDLETEXT%", riddleText);
+ }
+ public static string FormatEventRealTimeRiddleWonForOthers(string winnerUserName)
+ {
+ return EventWonRealTimeRiddleForOthersFormat.Replace("%PLAYERNAME%", winnerUserName);
+ }
+ public static string FormatEventRealTimeRiddleWonForYou(int prize)
+ {
+ return EventWonRealTimeRiddleForYouFormat.Replace("%PRIZE%", prize.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ // Prison Command
+ public static string FormatPrisonCommandMessage(string username)
+ {
+ return PrisonIsleCommandMessageFormat.Replace("%USERNAME%", username.ToUpper());
+ }
+
+ // Rules Command
+ public static string FormatRulesCommandMessage(string username)
+ {
+ return RulesIsleCommandMessageFormat.Replace("%USERNAME%", username.ToUpper());
+ }
+
+ // Mute Command
+ public static string FormatStoppedMutingPlayer(string username)
+ {
+ return StoppedMutingPlayerFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatNowMutingPlayer(string username)
+ {
+ return NowMutingPlayerFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatCantSendYourIgnoringPlayer(string username)
+ {
+ return CantSendPrivateMessagePlayerMutedFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatPlayerIgnoringAllPms(string username)
+ {
+ return PlayerIgnoringAllPrivateMessagesFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatPlayerIgnoringYourPms(string username)
+ {
+ return PlayerIgnoringYourPrivateMessagesFormat.Replace("%USERNAME%", username);
+ }
+
+ // AUTO SELL
+
+ public static string FormatAutoSellSoldOffline(string horseName, int price, string toUsername)
+ {
+ return AutoSellYouSoldHorseOfflineFormat.Replace("%HORSE%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", toUsername);
+ }
+
+ public static string FormatAutoSellSold(string horseName, int price, string toUsername)
+ {
+ return AutoSellYouSoldHorseFormat.Replace("%HORSE%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", toUsername);
+ }
+
+ public static string FormatAutoSellSuccess(string horseName)
+ {
+ return AutoSellSuccessFormat.Replace("%HORSENAME%", horseName);
+ }
+
+ // MULTIHORSES
+ public static string FormatMultiHorses(int placing, string horseName, string horseBreed, string swf)
+ {
+ return MultiHorseFormat.Replace("%NUMBER%", placing.ToString()).Replace("%HORSENAME%", horseName).Replace("%BREED%", horseBreed).Replace("%SWF%", swf);
+ }
+
+ // 2PLAYER
+ public static string Format2PlayerRecordLose(string gameTitle)
+ {
+ return TwoPlayerRecordedLossFormat.Replace("%GAMETITLE%", gameTitle);
+ }
+ public static string Format2PlayerRecordWin(string gameTitle)
+ {
+ return TwoPlayerRecordedWinFormat.Replace("%GAMETITLE%", gameTitle);
+ }
+ public static string Format2PlayerStartingGame(string playerName)
+ {
+ return TwoPlayerStartingUpGameFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string Format2PlayerYouInvited(string playerName)
+ {
+ return TwoPlayerYourInvitedFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string Format2PlayerYourInvited(string playerName)
+ {
+ return TwoPlayerYourInvitedFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string Format2PlayerGameInProgress(string playerName)
+ {
+ return TwoPlayerGameInProgressFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string Format2PlayerPlayingWith(string playerName)
+ {
+ return TwoPlayerPlayingWithFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string Format2PlayerAcceptButton(int playerId)
+ {
+ return TwoPlayerAcceptButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string Format2PlayerInviteButton(int playerId)
+ {
+ return TwoPlayerInviteButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string Format2PlayerPlayerName(string playerName)
+ {
+ return TwoPlayerPlayerFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatAddBuddyRemoveBuddy(string buddyName)
+ {
+ return AddBuddyDeleteBuddyFormat.Replace("%PLAYERNAME%", buddyName);
+ }
+
+
+ public static string FormatTagTotalBuddies(int count)
+ {
+ return TagOtherBuddiesOnlineFormat.Replace("%TOTALBUDDIESON%", count.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTagYourIt(string taggedPlayer, string tagger)
+ {
+ return TagYourItFormat.Replace("%PLAYERNAME%", taggedPlayer).Replace("%USERNAME%", tagger);
+ }
+ public static string FormatAddBuddyConfirmed(string playername)
+ {
+ return AddBuddyYourNowBuddiesFormat.Replace("%PLAYERNAME%", playername);
+ }
+ public static string FormatAddBuddyPendingOther(string playername)
+ {
+ return AddBuddyOtherPendingFormat.Replace("%PLAYERNAME%", playername);
+ }
+ public static string FormatOtherNoCompetitionGear(string pronoun)
+ {
+ return NoCompetitionGearOther.Replace("%PRONOUN%", pronoun);
+ }
+ public static string FormatOtherCompetitionGear(string pronoun)
+ {
+ return CompetitionGearSelectedOther.Replace("%PRONOUN%", pronoun);
+ }
+ public static string FormatOtherJewelerySelected(string pronoun)
+ {
+ return JewelrySelectedOther.Replace("%PRONOUN%", pronoun);
+ }
+ public static string FormatOtherNoJewelery(string pronoun)
+ {
+ return NoJewerlyEquippedOther.Replace("%PRONOUN%", pronoun);
+ }
+ public static string FormatOtherHorsesMeta(string pronoun)
+ {
+ return StatsOtherHorses.Replace("%PRONOUN%", pronoun);
+ }
+
+ // Socials
+ public static string FormatSocialButton(int socialId, string buttonName)
+ {
+ string id = "" + Convert.ToChar(0x21 + socialId);
+ return SocialButton.Replace("%ID%", id).Replace("%SOCIALNAME%", buttonName);
+ }
+ public static string FormatSocialMessage(string socialMsg, string targetName, string senderName)
+ {
+ return SocialMessageFormat.Replace("%SOCIALMSG%", socialMsg.Replace("%TARGETNAME%", targetName).Replace("%SENDERNAME%", senderName));
+ }
+ public static string FormatSocialMenuType(string type)
+ {
+ return SocialTypeFormat.Replace("%TYPE%", Util.CapitalizeFirstLetter(type.ToLower()));
+ }
+
+ // Trading
+
+ public static string FormatTradeYouReceived(int money)
+ {
+ return TradeYouReceivedMoneyMessageFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTradeYouSpent(int money)
+ {
+ return TradeYouSpentMoneyMessageFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTradePlayerCantHandleMoreHorses(string playerName)
+ {
+ return TradeOtherPlayerCantHandleMoreHorsesFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatTradeCanceledByPlayer(string playerName)
+ {
+ return TradeCanceledByOtherPlayerFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatTradeItemOfferTooMuch(int quantity, int enteredAmount)
+ {
+ return TradeItemOfferTooMuchFormat.Replace("%QUANTITY%", quantity.ToString()).Replace("%ENTEREDAMOUNT%", enteredAmount.ToString());
+ }
+ public static string FormatTradeOfferMoneySubmenu(int currentOffer)
+ {
+ return TradeMoneyOfferSubmenuFormat.Replace("%CURRENTMONEYOFFER%", currentOffer.ToString());
+ }
+ public static string FormatTradeOfferItemSubmenu(int quantity)
+ {
+ return TradeItemOfferSubmenuFormat.Replace("%QUANTITY%", quantity.ToString());
+ }
+ public static string FormatTradeOfferItem(int itemIconId, string itemName, int itemCount, int itemId)
+ {
+ return TradeOfferItemFormat.Replace("%ICONID%", itemIconId.ToString()).Replace("%ITEMNAME%", itemName).Replace("%ITEMCOUNT%", itemCount.ToString()).Replace("%ITEMID%", itemId.ToString());
+ }
+ public static string FormatTradeOfferHorse(string horseName, bool tacked, int horseRandomId)
+ {
+ return TradeOfferHorseFormat.Replace("%HORSENAME%", horseName).Replace("%ISTACKED%", tacked ? Messages.TradeOfferHorseTacked : "").Replace("%HORSERANDOMID%", horseRandomId.ToString());
+ }
+ public static string FormatTradeWhatToOffer(string playerName)
+ {
+ return TradeWhatToOfferFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatTradeHorseOffer(string horseName, int horseRandomId)
+ {
+ return TradeOfferingHorseFormat.Replace("%HORSENAME%", horseName).Replace("%HORSERANDOMID%", horseRandomId.ToString());
+ }
+ public static string FormatTradeItemOffer(int iconId, int quantity, string item)
+ {
+ return TradeOfferingItemFormat.Replace("%ICONID%", iconId.ToString()).Replace("%TOTAL%", quantity.ToString()).Replace("%ITEM%", item);
+ }
+ public static string FormatTradeMoneyOffer(int amount)
+ {
+ return TradeOfferingMoneyFormat.Replace("%MONEY%", amount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTradeOtherOffering(string playerName)
+ {
+ return TradeOtherOfferingFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatTradeYourOffering(string playerName)
+ {
+ return TradeYourOfferingFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatTradeWithPlayer(string playerName)
+ {
+ return TradeWithPlayerFormat.Replace("%PLAYERNAME%", playerName);
+ }
+
+ // Player Interactions
+ public static string FormatPmButton(string playerName)
+ {
+ return PmButton.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatPlayerHereTagButton(int playerId)
+ {
+ return PlayerHereTagButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string FormatPlayerHereBuddyButton(int playerId)
+ {
+ return PlayerHereAddBuddyButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string FormatPlayerHereTradeButton(int playerId)
+ {
+ return PlayerHereTradeButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string FormatPlayerHereSocialButtton(int playerId)
+ {
+ return PlayerHereSocialButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string FormatPlayerHereProfileButton(int playerId)
+ {
+ return PlayerHereProfileButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string FormatPlayerHereMenu(int playerIcon, string playerName, string button)
+ {
+ string vstr = "^I" + playerIcon.ToString();
+ if (playerIcon == -1)
+ vstr = "";
+ return PlayerHereMenuFormat.Replace("%PLAYERICON%", vstr).Replace("%PLAYERNAME%", playerName).Replace("%BUTTONS%", button);
+ }
+
+ // Auctions
+ public static string FormatAuctionSoldTo(string playerName, int money)
+ {
+ return AuctionSoldToFormat.Replace("%PLAYERNAME%", playerName).Replace("%PRICE%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAuctionGoingTo(int timeRemaining, string winningPlayer, int winningBid, int auctionRandomId)
+ {
+ return AuctionGoingToFormat.Replace("%TIME%", timeRemaining.ToString()).Replace("%WINNINGPLAYER%", winningPlayer).Replace("%WINNINGBID%", winningBid.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AUCTIONRANDOMID%", auctionRandomId.ToString());
+ }
+ public static string FormatAuctionHorseSold(int money)
+ {
+ return AuctionHorseSoldFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAuctionBroughtHorse(int money)
+ {
+ return AuctionYouBroughtAHorseFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAuctionYourOutbidBy(string username, int amount)
+ {
+ return AuctionYouveBeenOutbidFormat.Replace("%USERNAME%", username).Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAuctionBidRaised(int prevAmount, int newAmount)
+ {
+ return AuctionBidRaisedFormat.Replace("%AMOUNT%", prevAmount.ToString("N0", CultureInfo.InvariantCulture)).Replace("%NEWAMOUNT%", newAmount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAuctionHorseListEntry(string horseName, bool tacked, int randomId)
+ {
+ return AuctionHorseListEntryFormat.Replace("%HORSENAME%", horseName).Replace("%TACKEDORNO%", tacked ? Messages.AuctionHorseIsTacked : "").Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatAuctionHorseEntry(string username, string color, string breedName, string gender, int experience, string lookButton)
+ {
+ return AuctionHorseEntryFormat.Replace("%USERNAME%", username).Replace("%COLOR%", color).Replace("%BREED%", breedName).Replace("%GENDER%", gender).Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture)).Replace("%LOOKBUTTON%", lookButton);
+
+ }
+ public static string FormatAuctionViewHorseButton(int randomId)
+ {
+ return AuctionHorseViewButton.Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatAuctionPlayersHere(string usernames)
+ {
+ return AuctionPlayersHereFormat.Replace("%USERNAMES%", usernames);
+ }
+
+
+ public static string FormatHorseReturnedToOwner(string horseName)
+ {
+ return HorseLeaserReturnedToOwnerFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatHorseReturnedToUniter(string horseName)
+ {
+ return HorseLeaserReturnedToUniterFormat.Replace("%HORSENAME%", horseName);
+ }
+
+ public static string FormatArenaCompetingHorseEntry(string userName, string horseName, int horseRandomId)
+ {
+ return ArenaCompetingHorseFormat.Replace("%USERNAME%", userName).Replace("%HORSENAME%", horseName).Replace("%HORSERANDOMID%", horseRandomId.ToString());
+ }
+ public static string FormatArenaEnterHorseButton(string horseName, int entryCost, int horseRandomId)
+ {
+ return ArenaEnterHorseFormat.Replace("%HORSENAME%", horseName).Replace("%ENTRYCOST%", entryCost.ToString("N0", CultureInfo.InvariantCulture)).Replace("%HORSERANDOMID%", horseRandomId.ToString());
+ }
+ public static string FormatArenaCurrentlyTakingEntries(int hour, int minute, string amOrPm, int timeUntil)
+ {
+ return ArenaCurrentlyTakingEntriesFormat.Replace("%HOUR%", hour.ToString()).Replace("%MINUTE%", minute.ToString("00")).Replace("%AMORPM%", amOrPm).Replace("%TIMEUNTIL%", timeUntil.ToString());
+ }
+ public static string FormatArenaEventName(string eventName)
+ {
+ return ArenaEventNameFormat.Replace("%EVENTNAME%", eventName);
+ }
+ public static string FormatArenaOnlyWinnerWinsMessage(int experience)
+ {
+ return ArenaOnlyWinnerWins.Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatArenaYouWinMessage(int prizeMoney, int experience)
+ {
+ return ArenaYouWinFormat.Replace("%PRIZE%", prizeMoney.ToString("N0", CultureInfo.InvariantCulture)).Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatRanchForcefullySoldMessage(int amount)
+ {
+ return RanchForcefullySoldFormat.Replace("%AMOUNT%", amount.ToString());
+ }
+ public static string FormatArenaYourScore(int score)
+ {
+ return ArenaYourScoreFormat.Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatArenaPlacing(string place, string playerName, int score)
+ {
+ return ArenaPlacingFormat.Replace("%PLACE%", place).Replace("%USERNAME%", playerName).Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatHorseGamesEntry(int placing, string horseName, string Swf)
+ {
+ return HorseGamesHorseEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%HORSENAME%", horseName).Replace("%SWF%", Swf);
+ }
+ public static string FormatCityHallCantFindPlayerMessage(string playerName)
+ {
+ return CityHallCantFindPlayerMessageFormat.Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatCityHallTopExperiencedHorses(int placing, int experiencePoints, string playerName, string horseName)
+ {
+ return CityHallExperiencedHorseEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%EXP%", experiencePoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatCityHallTopMinigamePlayers(int placing, int gamesPlayed, string playerName)
+ {
+ return CityHallMinigamePlayerEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%GAMESPLAYED%", gamesPlayed.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatCityHallTopExperiencedPlayersEntry(int placing, int experiencePoints, string playerName)
+ {
+ return CityHallExperiencePlayerEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%EXP%", experiencePoints.ToString()).Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatCityHallTopAdventurousPlayersEntry(int placing, int questPoints, string playerName)
+ {
+ return CityHallAdventurousPlayerEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%QUESTPOINTS%", questPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatCityHallTopSpoiledHorseEntry(int spoiled, string playerName, string horseName)
+ {
+ return CityHallSpoiledHorseEntryFormat.Replace("%SPOILED%", spoiled.ToString()).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatCityHallTopPlayerEntry(int placing, double money, string playerName)
+ {
+ return CityHallRichPlayerFormat.Replace("%PLACING%", placing.ToString()).Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName);
+ }
+ public static string FormatCityHallTopRanchEntry(int placing, string playerName, int value, string mapxy)
+ {
+ return CityHallRanchEntryFormat.Replace("%PLACING%", placing.ToString()).Replace("%PLAYERNAME%", playerName).Replace("%VALUE%", value.ToString("N0", CultureInfo.InvariantCulture)).Replace("%MAPXY%", mapxy);
+ }
+ public static string FormatCityHallBestExpAutoSellEntry(int exp, string playerName, string horseName, int price, string color, string breed)
+ {
+ return CityHallMostExpAutoSellHorseEntryFormat.Replace("%EXP%", exp.ToString()).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%COLOR%", color).Replace("%BREED%", breed);
+ }
+ public static string FormatCityHallCheapAutoSellEntry(int price, string playerName, string horseName, string color, string breed, int exp)
+ {
+ return CityHallCheapestAutoSellHorseEntryFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERNAME%", playerName).Replace("%HORSENAME%", horseName).Replace("%COLOR%", color).Replace("%BREED%", breed).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatCityHallSendMailMessage(string playerName)
+ {
+ return CityHallSentMessageFormat.Replace("%PLAYERNAME%", playerName);
+ }
+
+
+
+ public static string FormatMailReadMessage(string fromUser, string date, string subject, string message, int randomId)
+ {
+ return MailReadMetaFormat.Replace("%PLAYERNAME%", fromUser).Replace("%DATE%", date).Replace("%SUBJECT%", subject).Replace("%MESSAGE%", message).Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatMailEntry(string subject, string fromUser, int randomId)
+ {
+ return MailEntryFormat.Replace("%SUBJECT%", subject).Replace("%PLAYERNAME%", fromUser).Replace("%RANDOMID%", randomId.ToString());
+ }
+
+ public static string FormatTrainerCantTrainAgainIn(int time)
+ {
+ return TrainerCantTrainAgainInFormat.Replace("%TIME%", time.ToString());
+ }
+ public static string FormatTrainerFullyTrained(string horseName, int curStat)
+ {
+ return TrainerHorseFullyTrainedFormat.Replace("%HORSENAME%", horseName).Replace("%STAT%", curStat.ToString());
+ }
+ public static string FormatTrainerTrainInEntry(string horseName, int curStat, int maxStat, int randomId)
+ {
+ return TrainerHorseEntryFormat.Replace("%HORSENAME%", horseName).Replace("%CURSTAT%", curStat.ToString()).Replace("%MAXSTAT%", maxStat.ToString()).Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatTrainerHeaderFormat(string stat, int price, int amountInStat, int expamount)
+ {
+ return TrainerHeaderFormat.Replace("%STAT%", stat).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", amountInStat.ToString("N0", CultureInfo.InvariantCulture)).Replace("%EXPAMOUNT%", expamount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTrainedInStatFormat(string horseName, string stat)
+ {
+ return TrainedInStatFormat.Replace("%HORSENAME%", horseName).Replace("%STAT%", stat);
+ }
+ public static string FormatHorseFeedMagicDropletUsed(string oldColor, string newColor)
+ {
+ return HorseFeedMagicDropletFormat.Replace("%PREVCOLOR%", oldColor).Replace("%NEWCOLOR%", newColor);
+ }
+ public static string FormatHorseFeedMagicBeanUsed(double oldH, double newH)
+ {
+ return HorseFeedMagicBeanFormat.Replace("%PREVHANDS%", oldH.ToString(CultureInfo.InvariantCulture)).Replace("%NEWHANDS%", newH.ToString(CultureInfo.InvariantCulture));
+ }
+ public static string FormatSantaOpenPresent(string itemName)
+ {
+ return SantaItemOpenedFormat.Replace("%ITEM%", itemName);
+ }
+ public static string FormatSantaItemEntry(int iconId, string itemName, int randomId)
+ {
+ return SantaWrapItemFormat.Replace("%ICONID%", iconId.ToString()).Replace("%NAME%", itemName).Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatPawneerOrderHorseFound(string breedName, string color, string gender, int height, int personality, int inteligence)
+ {
+ return PawneerOrderHorseFoundFormat.Replace("%BREEDNAME%", breedName).Replace("%COLOR%", color).Replace("%GENDER%", gender).Replace("%HEIGHT%", height.ToString()).Replace("%PERSONALITY%", personality.ToString()).Replace("%INTELIGENCE%", inteligence.ToString());
+ }
+ public static string FormatPawneerOrderGenderEntry(string genderName, string genderInternal)
+ {
+ return PawneerOrderGenderEntryFormat.Replace("%GENDERNAME%", genderName).Replace("%GENDERINTERNAL%", genderInternal);
+ }
+ public static string FormatPawneerOrderSelectGender(string color, string breedName)
+ {
+ return PawneerOrderSelectGenderFormat.Replace("%BREEDNAME%", breedName).Replace("%COLOR%", color);
+ }
+
+ public static string FormatPawneerOrderColorEntry(string color)
+ {
+ return PawneerOrderColorEntryFormat.Replace("%COLOR%", color);
+ }
+ public static string FormatPawneerOrderSelectColor(string breedName)
+ {
+ return PawneerOrderSelectColorFormat.Replace("%BREEDNAME%", breedName);
+ }
+ public static string FormatPawneerOrderBreedEntry(string breedName, int breedId)
+ {
+ return PawneerOrderBreedEntryFormat.Replace("%BREEDNAME%", breedName).Replace("%BREEDID%", breedId.ToString());
+ }
+ public static string FormatPawneerHorseEntry(string horseName, int price, int randomId)
+ {
+ return PawneerHorseFormat.Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatPawneerConfirmPawn(string breedName, int randomId)
+ {
+ return PawneerHorseConfirmationFormat.Replace("%BREEDNAME%", breedName).Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatPawneerSold(string horseName, int price)
+ {
+ return PawneerHorseSoldMessagesFormat.Replace("%HORSENAME%", horseName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+
+ public static string FormatPlayerHereMessage(string playerName)
+ {
+ return ClickPlayerHereFormat.Replace("%USERNAME%", playerName);
+ }
+
+ // Barn Formats
+ public static string FormatBarnLetAllHorsesReleax(int price)
+ {
+ return BarnLetAllHorsesReleaxFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBarnLetHorseRelax(int price, int randomId)
+ {
+ return BarnLetHorseRelaxFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatBarnHorseStatus(string horseName, int tiredness, int hunger, int thirst)
+ {
+ return BarnHorseStatusFormat.Replace("%HORSENAME%", horseName).Replace("%TIREDNESS%", tiredness.ToString()).Replace("%HUNGER%", hunger.ToString()).Replace("%THIRST%", thirst.ToString());
+ }
+ public static string FormatBarnHorseFullyFed(string horseName)
+ {
+ return BarnHorseFullyFedFormat.Replace("%HORSENAME%", horseName);
+ }
+ // Farrier Formats
+ public static string FormatFarrierPutOnSteelShoesAllMesssage(int curShoes, int maxShoes)
+ {
+ return FarrierPutOnSteelShoesAllMesssageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
+ }
+ public static string FormatFarrierPutOnIronShoesMessage(int curShoes, int maxShoes)
+ {
+ return FarrierPutOnIronShoesMessageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
+ }
+ public static string FormatFarrierPutOnSteelShoesMessage(int curShoes, int maxShoes)
+ {
+ return FarrierPutOnSteelShoesMessageFormat.Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
+ }
+ public static string FormatFarrierApplySteelToAll(int price, int incBy)
+ {
+ return FarrierShoeAllFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%INCBY%", incBy.ToString());
+ }
+ public static string FormatFarrierApplySteel(int price, int incBy, int horseRandomid)
+ {
+ return FarrierApplySteelShoesFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%INCBY%", incBy.ToString()).Replace("%HORSERANDOMID%", horseRandomid.ToString());
+ }
+ public static string FormatFarrierApplyIron(int price, int incBy, int horseRandomid)
+ {
+ return FarrierApplyIronShoesFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%INCBY%", incBy.ToString()).Replace("%HORSERANDOMID%", horseRandomid.ToString());
+ }
+ public static string FormatFarrierCurrentShoes(string horseName, int curShoes, int maxShoes)
+ {
+ return FarrierCurrentShoesFormat.Replace("%HORSENAME%", horseName).Replace("%TOTAL%", curShoes.ToString()).Replace("%MAX%", maxShoes.ToString());
+ }
+
+
+ // Ranch Formats
+
+ public static string FormatRanchTrainFail(string horseName, int timeout)
+ {
+ return RanchTrainCantTrainFormat.Replace("%HORSENAME%", horseName).Replace("%TIME%", timeout.ToString());
+ }
+ public static string FormatRanchTrainBadMood(string horseName)
+ {
+ return RanchTrainBadMoodFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatRanchTrain(string horseName, int speed, int strength, int conformation, int agility, int endurance, int exp)
+ {
+ return RanchTrainSuccessFormat.Replace("%HORSENAME%", horseName).Replace("%SPEED%", speed.ToString("N0", CultureInfo.InvariantCulture)).Replace("%STRENGTH%", strength.ToString("N0", CultureInfo.InvariantCulture)).Replace("%CONFORMATION%", conformation.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AGILITY%", agility.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ENDURANCE%", endurance.ToString("N0", CultureInfo.InvariantCulture)).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatRanchDescOthers(string description)
+ {
+ return RanchDescriptionOthersFormat.Replace("%DESCRIPTION%", BBCode.EncodeBBCodeToMeta(description));
+ }
+ public static string FormatRanchSoldMessage(int price)
+ {
+ return RanchSoldFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatRanchUnownedMeta(int price)
+ {
+ return RanchUnownedRanchFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatRanchClickMessage(string owner, string title)
+ {
+ return RanchClickMessageFormat.Replace("%USERNAME%", owner).Replace("%TITLE%", title);
+ }
+ public static string FormatRanchBroughtMessage(int price)
+ {
+ return RanchRanchBroughtMessageFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatRanchEditDescriptonMeta(string curTitle, string curDesc)
+ {
+ return RanchEditDescriptionMetaFormat.Replace("%RANCHTITLE%", curTitle).Replace("%RANCHDESC%", curDesc);
+ }
+ public static string FormatRanchTitle(string username, string title)
+ {
+ return RanchTitleFormat.Replace("%USERNAME%", username).Replace("%TITLE%", title);
+ }
+ public static string FormatRanchYoursDescription(string description)
+ {
+ return RanchYourDescriptionFormat.Replace("%DESCRIPTION%", BBCode.EncodeBBCodeToMeta(description));
+ }
+ public static string FormatBuildingEntry(string name, int price, int buildingId)
+ {
+ return RanchBuildingEntryFormat.Replace("%BUILDINGNAME%", name).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%BUILDINGID%", buildingId.ToString());
+ }
+ public static string FormatBuildingInformaton(string name, string description)
+ {
+ return RanchBuildingInformationFormat.Replace("%BUILDINGNAME%", name).Replace("%BUILINGDESCRIPTION%", description);
+ }
+ public static string FormatBuildingAlreadyPlaced(string name, int buildingId, int price)
+ {
+ return RanchBuildingAlreadyHere.Replace("%BUILDINGNAME%", name).Replace("%BUILDINGID%", buildingId.ToString()).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuildingTornDown(int price)
+ {
+ return RanchTornDownRanchBuildingFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatViewBuilding(string name, string description)
+ {
+ return RanchViewBuildingFormat.Replace("%BUILDINGNAME%", name).Replace("%BUILDINGDESC%", description);
+ }
+ public static string FormatBarn(string horseList)
+ {
+ return RanchBarnHorsesFormat.Replace("%HORSELIST%", horseList);
+ }
+ public static string FormatCurrentUpgrade(string curUpgradeName, string curUpgradeDesc, string YouCouldUpgrade, int ranchSellPrice)
+ {
+ return UpgradeCurrentUpgradeFormat.Replace("%UPGRADENAME%", curUpgradeName).Replace("%UPGRADEDESC%", curUpgradeDesc).Replace("%YOUCOULDUPGRADE%", YouCouldUpgrade).Replace("%SELLPRICE%", ranchSellPrice.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatNextUpgrade(string nextUpgrade, int cost)
+ {
+ return UpgradeNextUpgradeFormat.Replace("%NEXTUPGRADE%", nextUpgrade).Replace("%COST%", cost.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuildingBarn(int numbBarns, int numbHorses)
+ {
+ return BuildingBarnFormat.Replace("%COUNT%", numbBarns.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", numbHorses.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuildingBigBarn(int numbBarns, int numbHorses)
+ {
+ return BuildingBigBarnFormat.Replace("%COUNT%", numbBarns.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", numbHorses.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuildingGoldBarn(int numbBarns, int numbHorses)
+ {
+ return BuildingGoldBarnFormat.Replace("%COUNT%", numbBarns.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", numbHorses.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuildingWindmill(int numbWindmills, int moneyEarns)
+ {
+ return BuildingWindmillFormat.Replace("%COUNT%", numbWindmills.ToString("N0", CultureInfo.InvariantCulture)).Replace("%AMOUNT%", moneyEarns.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTrainSuccess(string horseName)
+ {
+ return RanchTrainSuccessFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatCantTrain(string horseName)
+ {
+ return RanchTrainCantTrainFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatRiddlerRiddle(string riddle)
+ {
+ return RiddlerEnterAnswerFormat.Replace("%RIDDLE%", riddle);
+ }
+ public static string FormatRiddlerAnswerCorrect(string reason)
+ {
+ return RiddlerCorrectAnswerFormat.Replace("%REASON%", reason);
+ }
+ public static string FormatPirateTreasure(int prize)
+ {
+ return PirateTreasureFormat.Replace("%PRIZE%", prize.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatPotOfGold(int prize)
+ {
+ return PotOfGoldFormat.Replace("%PRIZE%", prize.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatWorkshopCraftEntry(int iconId, string itemName, int price, int itemId, int craftId)
+ {
+ return WorkshopCraftEntryFormat.Replace("%ICONID%", iconId.ToString()).Replace("%ITEMNAME%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ITEMID%", itemId.ToString()).Replace("%CRAFTID%", craftId.ToString());
+ }
+ public static string FormatWorkshopRequirements(string requiresTxt)
+ {
+ return WorkshopRequiresFormat.Replace("%REQUIRES%", requiresTxt);
+ }
+ public static string FormatWorkshopRequireEntry(int requiredCount, string itemNamePlural)
+ {
+ return WorkshopRequireEntryFormat.Replace("%REQCOUNT%", requiredCount.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ITEMNAME%", itemNamePlural);
+ }
+
+ public static string FormatDrawingRoomSaved(int slot)
+ {
+ return DrawingContentsSavedInSlotFormat.Replace("%SLOT%", slot.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatDrawingRoomLoaded(int slot)
+ {
+ return DrawingContentsLoadedFromSlotFormat.Replace("%SLOT%", slot.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatLastToDraw(string username)
+ {
+ return DrawingLastToDrawFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatGroomerApplyAllService(int count, int price)
+ {
+ return GroomerApplyServiceForAllFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%COUNT%", count.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatGroomerApplyService(int price, int randomid)
+ {
+ return GroomerApplyServiceFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%RANDOMID%", randomid.ToString());
+ }
+ public static string FormatHorseGroomCurrentlyAt(string horseName, int currentGroom, int maxGroom)
+ {
+ return GroomerHorseCurrentlyAtFormat.Replace("%HORSENAME%", horseName).Replace("%TOTAL%", currentGroom.ToString()).Replace("%MAX%", maxGroom.ToString());
+ }
+ public static string FormatHorseGroomedToBestAbilities(string horseName)
+ {
+ return GroomerBestToHisAbilitiesFormat.Replace("%HORSENAME%", horseName);
+ }
+
+ public static string FormatBookReadMeta(string author, string title, string bookText)
+ {
+ return BookReadFormat.Replace("%AUTHOR%", author).Replace("%TITLE%", title).Replace("%TEXT%", bookText);
+ }
+ public static string FormatBookEntry(string title, string author, int id)
+ {
+ return BookEntryFormat.Replace("%TITLE%", title).Replace("%AUTHOR%", author).Replace("%ID%", id.ToString());
+ }
+ public static string FormatIpBannedMessage(string Ip)
+ {
+ return LoginFailedReasonBannedIpFormat.Replace("%IP%", Ip);
+ }
+ public static string FormatAwardEntry(int iconId, string awardName, int bonusMoney, string description)
+ {
+ return AwardEntryFormat.Replace("%ICONID%", iconId.ToString()).Replace("%AWARDNAME%", awardName).Replace("%BONUSMONEY%", bonusMoney.ToString("N0", CultureInfo.InvariantCulture)).Replace("%DESCRIPTION%", description);
+ }
+
+ public static string FormatLocationDescription(string description)
+ {
+ return LocationDescriptionFormat.Replace("%AREADESC%", description);
+ }
+ public static string FormatIslandLocation(string isleName, string mapXy)
+ {
+ return LocationIslandFormat.Replace("%ISLENAME%", isleName).Replace("%MAPXY%", mapXy);
+ }
+ public static string FormatTownLocation(string townName, string mapXy)
+ {
+ return LocationTownFormat.Replace("%TOWNNAME%", townName).Replace("%MAPXY%", mapXy);
+ }
+ public static string FormatMinigameEntry(string gameName, string mapXy)
+ {
+ return MinigameEntryFormat.Replace("%GAMENAME%", gameName).Replace("%MAPXY%", mapXy);
+ }
+ public static string FormatCompanionEntry(string itemDescription)
+ {
+ return CompanionEntryFormat.Replace("%COMPANIONDESC%", itemDescription);
+ }
+ public static string FormatCompanionViewButton(int iconid, string itemName, string swf)
+ {
+ return CompanionViewFormat.Replace("%ICONID%", iconid.ToString()).Replace("%COMPANIONNAME%", itemName).Replace("%SWF%", swf);
+ }
+ public static string FormatTackSetPeice(string itemName, string itemDescription)
+ {
+ return TackSetPeiceFormat.Replace("%ITEMNAME%", itemName).Replace("%ITEMDESC%", itemDescription);
+ }
+
+ public static string FormatTackSetView(int iconId, string tackSetName, string swf)
+ {
+ return TackViewSetFormat.Replace("%ICONID%", iconId.ToString()).Replace("%SETNAME%", tackSetName).Replace("%SWF%", swf);
+ }
+
+ public static string FormatWhispererHorseFoundMeta(string mapXys)
+ {
+ return WhispererHorsesFoundFormat.Replace("%MAPXYS%", mapXys);
+ }
+
+ public static string FormatWhispererPrice(int price)
+ {
+ return WhispererServiceCostYouFormat.Replace("%MONEY%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatWhispererHorseBreedButton(string breedName, int breedId)
+ {
+ return WhispererHorseLocateButtonFormat.Replace("%BREEDNAME%", breedName).Replace("%BREEDID%", breedId.ToString());
+ }
+
+ public static string FormatVetServiceHorseMeta(string horseName, int currentHealth, int maxHealth)
+ {
+ return VetServiceHorseFormat.Replace("%HORSENAME%", horseName).Replace("%CURHEALTH%", currentHealth.ToString()).Replace("%MAXHEALTH%", maxHealth.ToString());
+ }
+
+ public static string FormatVetApplyServiceMeta(int price, int randomId)
+ {
+ return VetApplyServicesFormat.Replace("%PRICE%", price.ToString()).Replace("%RANDOMID%", randomId.ToString());
+ }
+
+ public static string FormatVetApplyAllServiceMeta(int price)
+ {
+ return VetApplyServicesForAllFormat.Replace("%PRICE%", price.ToString());
+ }
+
+ public static string FormatVetHorseAtFullHealthMessage(string horseName)
+ {
+ return VetFullHealthRecoveredMessageFormat.Replace("%HORSENAME%", horseName);
+ }
+
+
+ public static string FormatPondNotThirsty(string horseName)
+ {
+ return PondNotThirstyFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatPondDrinkOhNoes(string horseName)
+ {
+ return PondDrinkOhNoesFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatPondDrinkFull(string horseName)
+ {
+ return PondDrinkFullFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatPondHpLowMessage(string horseName)
+ {
+ return PondCantDrinkHpLowFormat.Replace("%HORSENAME%", horseName);
+ }
+
+ public static string FormatPondDrinkHorseFormat(string horseName, int thirst, int maxThirst, int randomId)
+ {
+ return PondHorseDrinkFormat.Replace("%HORSENAME%", horseName).Replace("%THIRST%", thirst.ToString()).Replace("%MAXTHIRST%", maxThirst.ToString()).Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatMudHoleGroomDestroyed(string horseName)
+ {
+ return MudHoleRuinedGroomFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatMiscStatsEntry(string statName, int value)
+ {
+ return StatMiscEntryFormat.Replace("%STAT%", statName).Replace("%COUNT%", value.ToString());
+ }
+ public static string FormatCompactedAdvancedStats(int speed, int strength, int conformation, int agility, int endurance, int inteligence, int personality)
+ {
+ return HorseAdvancedStatsCompactedFormat.Replace("%SPEED%", speed.ToString()).Replace("%STRENGTH%", strength.ToString()).Replace("%CONFORMATION%", conformation.ToString()).Replace("%AGILITY%", agility.ToString()).Replace("%ENDURANCE%", endurance.ToString()).Replace("%INTELIGENCE%", inteligence.ToString()).Replace("%PERSONALITY%", personality.ToString());
+ }
+ public static string FormatCompactedBasicStats(int health, int hunger, int thirst, int mood, int tiredness, int groom, int shoes)
+ {
+ int healthPercentage = Convert.ToInt32(Math.Floor((((double)health / 1000.0) * 100.0)));
+ int hungerPercentage = Convert.ToInt32(Math.Floor((((double)hunger / 1000.0) * 100.0)));
+ int thirstPercentage = Convert.ToInt32(Math.Floor((((double)thirst / 1000.0) * 100.0)));
+ int moodPercentage = Convert.ToInt32(Math.Floor((((double)mood / 1000.0) * 100.0)));
+ int tirednessPercentage = Convert.ToInt32(Math.Floor((((double)tiredness / 1000.0) * 100.0)));
+ int groomPercentage = Convert.ToInt32(Math.Floor((((double)groom / 1000.0) * 100.0)));
+ int shoesPercentage = Convert.ToInt32(Math.Floor((((double)shoes / 1000.0) * 100.0)));
+
+ return HorseBasicStatsCompactedFormat.Replace("%HEALTH%", healthPercentage.ToString()).Replace("%HUNGER%", hungerPercentage.ToString()).Replace("%THIRST%", thirstPercentage.ToString()).Replace("%MOOD%", moodPercentage.ToString()).Replace("%TIREDNESS%", tirednessPercentage.ToString()).Replace("%GROOM%", groomPercentage.ToString()).Replace("%SHOES%", shoesPercentage.ToString());
+ }
+ public static string FormatAllStatsEntry(string horseName, string color, string breedName, string sex, int exp)
+ {
+ return HorseNameEntryFormat.Replace("%HORSENAME%", horseName).Replace("%COLOR%", color).Replace("%BREEDNAME%", breedName).Replace("%SEX%", sex).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormaHorseAllBasicStatsEntry(string horseName, string color, string breedName, string sex, int exp)
+ {
+ return HorseBasicStatEntryFormat.Replace("%HORSENAME%", horseName).Replace("%COLOR%", color).Replace("%BREEDNAME%", breedName).Replace("%SEX%", sex).Replace("%EXP%", exp.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatHorseReleasedBy(string username)
+ {
+ return HorseReleasedBy.Replace("%USERNAME%", username);
+ }
+ public static string FormatHorseAreYouSureMessage(int randomId)
+ {
+ return HorseAreYouSureYouWantToReleaseFormat.Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatHorseCompanionRemoveMessage(string horseName)
+ {
+ return HorseCompanionRemoveMessageFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatHorseCompanionEquipMessage(string horseName, string itemName)
+ {
+ return HorseCompanionEquipMessageFormat.Replace("%HORSENAME%", horseName).Replace("%ITEM%", itemName);
+ }
+ public static string FormatPlaytimeMessage(int hours)
+ {
+ return PlaytimeMessageFormat.Replace("%TOTALHOURS%", hours.ToString());
+ }
+ public static string FormatHorseCompanionSelected(int icon, string name)
+ {
+ return HorseCompnaionMenuCurrentCompanionFormat.Replace("%ICONID%", icon.ToString()).Replace("%NAME%", name);
+ }
+ public static string FormatHorseCompanionMenuHeader(string horseName)
+ {
+ return HorseCompanionMenuHeaderFormat.Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatHorseCompanionOption(int icon, int count, string name, int id)
+ {
+ return HorseCompanionEntryFormat.Replace("%ICONID%", icon.ToString()).Replace("%COUNT%", count.ToString("N0", CultureInfo.InvariantCulture)).Replace("%NAME%", name).Replace("%ID%", id.ToString());
+ }
+ public static string FormatHorseDismountedBecauseTackedMessage(string horsename)
+ {
+ return HorseDismountedBecauseNotTackedMessageFormat.Replace("%HORSENAME%", horsename);
+ }
+ public static string FormatAutoSellConfirmedMessage(int money)
+ {
+ return HorseAutoSellConfirmedFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAutoSellMenu(int currentAutoSellPrice)
+ {
+ return HorseAutoSellMenuFormat.Replace("%AUTOSELL%", currentAutoSellPrice.ToString());
+ }
+ public static string FormatHorseSetToNewCategory(string category)
+ {
+ return HorseSetNewCategoryMessageFormat.Replace("%CATEGORY%", category);
+ }
+ public static string FormatHorseSavedProfileMessage(string horsename)
+ {
+ return HorseSavedProfileMessageFormat.Replace("%HORSENAME%", horsename);
+ }
+ public static string FormatDescriptionEditMeta(string username, string description)
+ {
+ return HorseDescriptionEditFormat.Replace("%HORSENAME%", username).Replace("%DESCRIPTION%", description);
+ }
+ public static string FormatHorsePetMessage(string messages, int mood, int tiredness)
+ {
+ return HorsePetMessageFormat.Replace("%MESSAGES%", messages).Replace("%MOOD%", mood.ToString()).Replace("%TIREDNESS%", tiredness.ToString());
+ }
+ public static string FormatHorseCurrentStatus(string name)
+ {
+ return HorseCurrentStatusFormat.Replace("%HORSENAME%", name);
+ }
+
+ public static string FormatHorseFeedEntry(int icon, int count, string name, int randomId)
+ {
+ return HorsefeedFormat.Replace("%ICONID%", icon.ToString()).Replace("%COUNT%", count.ToString("N0", CultureInfo.InvariantCulture)).Replace("%NAME%", name).Replace("%RANDOMID%", randomId.ToString());
+ }
+
+ public static string FormatHorseRidingMessage(string name)
+ {
+ return HorseRidingMessageFormat.Replace("%HORSENAME%", name);
+ }
+ public static string FormatEquipTackMessage(string itemName, string horseName)
+ {
+ return HorseEquipTackMessageFormat.Replace("%NAME%", itemName).Replace("%HORSENAME%", horseName);
+ }
+ public static string FormatUnEquipTackMessage(string horseName)
+ {
+ return HorseUnEquipTackMessageFormat.Replace("%HORSENAME%", horseName);
+ }
+
+ public static string FormatTackedAsFollowedMessage(string name)
+ {
+ return HorseTackedAsFollowsFormat.Replace("%NAME%", name);
+ }
+ public static string FormatUnEquipSaddle(int iconId, string name)
+ {
+ return HorseUnEquipSaddleFormat.Replace("%NAME%", name).Replace("%ICONID%", iconId.ToString());
+ }
+ public static string FormatUnEquipSaddlePad(int iconId, string name)
+ {
+ return HorseUnEquipSaddlePadFormat.Replace("%NAME%", name).Replace("%ICONID%", iconId.ToString());
+ }
+ public static string FormatUnEquipBridle(int iconId, string name)
+ {
+ return HorseUnEquipBridleFormat.Replace("%NAME%", name).Replace("%ICONID%", iconId.ToString());
+ }
+ public static string FormatHorseEquip(int iconId, int count, string name, int id)
+ {
+ return HorseEquipFormat.Replace("%ICONID%", iconId.ToString()).Replace("%COUNT%", count.ToString()).Replace("%NAME%", name).Replace("%ID%", id.ToString());
+ }
+
+
+
+ public static string FormatHorseNameYours(string name)
+ {
+ return HorseNameYoursFormat.Replace("%NAME%", name);
+ }
+ public static string FormatHorseNameOthers(string name, string username)
+ {
+ return HorseNameOthersFormat.Replace("%NAME%", name).Replace("%USERNAME%", username);
+ }
+ public static string FormatHorseDescription(string Description)
+ {
+ return HorseDescriptionFormat.Replace("%DESCRIPTION%", BBCode.EncodeBBCodeToMeta(Description));
+ }
+ public static string FormatHorseHandsHigh(string color, string breed,string sex, double handsHigh)
+ {
+ return HorseHandsHeightFormat.Replace("%COLOR%", color).Replace("%SEX%", sex).Replace("%HANDS%", handsHigh.ToString(CultureInfo.InvariantCulture)).Replace("%BREED%", breed);
+ }
+ public static string FormatHorseExperience(int experience)
+ {
+ return HorseExperienceEarnedFormat.Replace("%EXP%", experience.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTrainableIn(int minutes)
+ {
+ return HorseTrainableInFormat.Replace("%TIME%", minutes.ToString());
+ }
+ public static string FormatHorseIsLeased(int minutes)
+ {
+ return HorseLeasedRemainingTimeFormat.Replace("%TIME%", minutes.ToString());
+ }
+
+ public static string FormatDisMountButton(int randomId)
+ {
+ return HorseDisMountButtonFormat.Replace("%ID%", randomId.ToString());
+ }
+ public static string FormatMountButton(int randomId)
+ {
+ return HorseMountButtonFormat.Replace("%ID%", randomId.ToString());
+ }
+ public static string FormatFeedButton(int randomId)
+ {
+ return HorseFeedButtonFormat.Replace("%ID%", randomId.ToString());
+ }
+ public static string FormatTackButton(int randomId)
+ {
+ return HorseTackButtonFormat.Replace("%ID%", randomId.ToString());
+ }
+ public static string FormatPetButton(int randomId)
+ {
+ return HorsePetButtonFormat.Replace("%ID%", randomId.ToString());
+ }
+ public static string FormatProfileButton(int randomId)
+ {
+ return HorseProfileButtonFormat.Replace("%ID%", randomId.ToString());
+ }
+
+ public static string FormatAutoSellPrice(int money)
+ {
+ return HorseAutoSellPriceFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAutoSellOthers(int price)
+ {
+ return HorseAutoSellOthersFormat.Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAutoSell(string autoSellStr)
+ {
+ return HorseAutoSellFormat.Replace("%AUTOSELL%", autoSellStr);
+ }
+
+ public static string FormatHorseCategory(string category, string markAsCategoryButtons)
+ {
+ return HorseCurrentlyCategoryFormat.Replace("%CATEGORY%", category).Replace("%MARKOPTIONS%", markAsCategoryButtons);
+ }
+ public static string FormatHorseTackEntry(int iconId, string name, int itemId)
+ {
+ return HorseTackFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", name).Replace("%ITEMID%", itemId.ToString());
+ }
+ public static string FormatHorseCompanionEntry(int iconId, string name, string companionChangeButton, int itemId)
+ {
+ return HorseCompanionFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", name).Replace("%ITEMID%", itemId.ToString()).Replace("%COMPANIONCHANGEBUTTON%", companionChangeButton);
+ }
+
+ public static string FormatHorseAdvancedStats(int spoiled, int magicUsed)
+ {
+ return HorseAdvancedStatsFormat.Replace("%SPOILED%", spoiled.ToString()).Replace("%MAGICUSED%", magicUsed.ToString());
+ }
+ public static string FormatHorseBreedDetails(string breedName, string description)
+ {
+ return HorseBreedDetailsFormat.Replace("%BREED%", breedName).Replace("%DESCRIPTION%", description);
+ }
+ public static string FormatHorseHeight(double minHeight, double maxHeight)
+ {
+ return HorseHeightRangeFormat.Replace("%MIN%", minHeight.ToString()).Replace("%MAX%", maxHeight.ToString());
+ }
+ public static string FormatHorseReleaseButton(string type)
+ {
+ return HorseReleaseButton.Replace("%TYPE%", type);
+ }
+ public static string FormatPossibleColors(string[] colors)
+ {
+ return HorsePossibleColorsFormat.Replace("%COLORS%", String.Join(",", colors));
+ }
+
+ public static string FormatHorseCategoryChangedMessage(string newCategory)
+ {
+ return UpdateHorseCategory.Replace("%CATEGORY%", newCategory);
+ }
+ public static string FormatHorseEntry(int numb, string horseName, string breedName, int randomId, bool hasAutoSell)
+ {
+ return HorseEntryFormat.Replace("%NUMB%", numb.ToString()).Replace("%NAME%", horseName).Replace("%BREED%", breedName).Replace("%ID%", randomId.ToString()).Replace("%ISAUTOSELL%", hasAutoSell ? HorseIsAutoSell : "");
+ }
+ public static string FormatHorseHeader(int maxHorses, int numHorses)
+ {
+ return HorsesMenuHeader.Replace("%MAXHORSE%", maxHorses.ToString()).Replace("%TOTALHORSE%", numHorses.ToString());
+ }
+
+
+ public static string FormatWildHorse(string name, string breed, int randomId, bool vowel)
+ {
+ return WildHorseFormat.Replace("%NAME%", name).Replace("%BREED%", breed).Replace("%RANDOMID%", randomId.ToString()).Replace("%N%", vowel ? "n" : "");
+ }
+ public static string FormatHorseBreedPreview(string name, string description)
+ {
+ return BreedViewerFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", description);
+ }
+ public static string FormatHorseAdvancedStat(int baseStat, int companionBoost, int tackBoost, int maxStat)
+ {
+ return AdvancedStatFormat.Replace("%BASE%", baseStat.ToString()).Replace("%COMPAINON%", companionBoost.ToString()).Replace("%TACK%", tackBoost.ToString()).Replace("%MAX%", maxStat.ToString());
+ }
+ public static string FormatHorseBasicStat(int health, int hunger, int thirst, int mood, int energy, int groom, int shoes)
+ {
+ return BasicStatFormat.Replace("%HEALTH%", health.ToString()).Replace("%HUNGER%", hunger.ToString()).Replace("%THIRST%", thirst.ToString()).Replace("%MOOD%", mood.ToString()).Replace("%ENERGY%", energy.ToString()).Replace("%GROOM%", groom.ToString()).Replace("%SHOES%", shoes.ToString());
+ }
+
+ public static string FormatHorseRelative(string name, int id)
+ {
+ return HorseRelativeFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString());
+ }
+ public static string FormatHorseBreed(string name, int id)
+ {
+ return HorseBreedFormat.Replace("%NAME%", name).Replace("%ID%", id.ToString());
+ }
+ public static string FormatRanchSearchResult(string name, int x, int y)
+ {
+ string mapXy = FormatMapLocation(x, y);
+ return LibaryFindRanchResultFormat.Replace("%USERNAME%", name).Replace("%MAPXY%", mapXy);
+ }
+ public static string FormatNpcSearchResult(string name, string desc,int x, int y)
+ {
+ string mapXy = FormatMapLocation(x, y);
+ return LibaryFindNpcSearchResultFormat.Replace("%NPCNAME%", name).Replace("%MAPXY%", mapXy).Replace("%NPCDESC%", desc);
+ }
+ public static string FormatLastPoet(string name)
+ {
+ return LastPoetFormat.Replace("%USERNAME%", name);
+ }
+ public static string FormatMultiroomParticipent(string name)
+ {
+ return MultiroomParticipentFormat.Replace("%USERNAME%", name);
+ }
+ public static string FormatVenusFlyTrapMeta(int money)
+ {
+ return VenusFlyTrapFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBankIntrestMadeMeta(UInt64 intrestMade)
+ {
+ return BankMadeInIntrestFormat.Replace("%MONEY%", intrestMade.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBankCarryingMeta(int money, UInt64 bankMoney)
+ {
+ return BankCarryingFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%BANKMONEY%", bankMoney.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBankOptionsMeta(int money, UInt64 bankMoney)
+ {
+ return BankOptionsFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%BANKMONEY%", bankMoney.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatDepositedMoneyMessage(int money)
+ {
+ return BankDepositedMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatWithdrawMoneyMessage(int money)
+ {
+ return BankWithdrewMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatNumberOfWishingCoins(int amount)
+ {
+ return YouHaveWishingCoinsFormat.Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatWishThingsMessage(string item1, string item2)
+ {
+ return WishItemsFormat.Replace("%ITEM%", item1).Replace("%ITEM2%", item2);
+ }
+ public static string FormatWishMoneyMessage(int money)
+ {
+ return WishMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatWishWorldPeaceMessage(int money, string item)
+ {
+ return WishWorldPeaceFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ITEM%", item);
+ }
+
+
+
+ public static string FormatInnEnjoyedServiceMessage(string item, int price)
+ {
+ return InnEnjoyedServiceFormat.Replace("%ITEM%", item).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatInnItemEntry(int iconId, string itemName, int price, int itemId)
+ {
+ return InnItemEntryFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture)).Replace("%ID%", itemId.ToString());
+ }
+ public static string FormatDroppedMoneyMessage(int amount)
+ {
+ return FountainDroppedMoneyFormat.Replace("%MONEY%", amount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatAbuseReportPlayerNotFound(string username)
+ {
+ return AbuseReportPlayerNotFoundFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatAbuseReportMetaPage(string reasonsMeta)
+ {
+ return AbuseReportMetaFormat.Replace("%REASONS%", reasonsMeta);
+ }
+
+ public static string FormatAbuseReportReason(string id, string name)
+ {
+ return AbuseReportReasonFormat.Replace("%ID%", id).Replace("%NAME%", name);
+ }
+ public static string FormatIconFormat(int iconId)
+ {
+ return PlayerListIconFormat.Replace("%ICON%", iconId.ToString());
+ }
+
+ public static string FormatMuteButton(int playerId)
+ {
+ return MuteButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string FormatHearButton(int playerId)
+ {
+ return HearButton.Replace("%PLAYERID%", playerId.ToString());
+ }
+ public static string FormatPlayerEntry(string iconFormat, string username, int userId, int time, int x, int y, bool idle, bool muteOrHear, bool isYou)
+ {
+ string xy = FormatMapLocation(x, y);
+ string muteButton = FormatMuteButton(userId);
+ string hearButton = FormatHearButton(userId);
+ string pmButton = FormatPmButton(username);
+ string msg = PlayerListEntryFormat.Replace("%ICONFORMAT%", iconFormat).Replace("%USERNAME%", username).Replace("%PLAYERID%", userId.ToString()).Replace("%TIME%", time.ToString("N0", CultureInfo.InvariantCulture)).Replace("%MAPXY%", xy).Replace("%IDLE%", idle ? PlayerListIdle : "");
+ if (isYou)
+ msg = msg.Replace("%MUTEORHEAR%", "").Replace("%PMBUTTON%", "");
+ else
+ msg = msg.Replace("%MUTEORHEAR%", muteOrHear ? hearButton : muteButton).Replace("%PMBUTTON%", pmButton);
+ return msg;
+ }
+ public static string FormatOnlineBuddyEntry(string iconFormat, string username, int userId, int time, int x, int y)
+ {
+ string xy = FormatMapLocation(x, y);
+ return BuddyListOnlineBuddyEntryFormat.Replace("%ICONFORMAT%", iconFormat).Replace("%USERNAME%", username).Replace("%TIME%", time.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERID%", userId.ToString()).Replace("%MAPXY%", xy);
+ }
+ public static string FormatOfflineBuddyEntry(string username, int userId, int time)
+ {
+ return BuddyListOfflineBuddyEntryFormat.Replace("%USERNAME%", username).Replace("%TIME%", time.ToString("N0", CultureInfo.InvariantCulture)).Replace("%PLAYERID%", userId.ToString());
+ }
+ public static string FormatConsumeItemMessaege(string itemName)
+ {
+ return ConsumeItemFormat.Replace("%ITEM%", itemName);
+ }
+ public static string FormatAwardHeaderOthers(string username)
+ {
+ return AwardOthersFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatAwardEntry(int iconId, string title, int moneyBonus)
+ {
+ return AwardFormat.Replace("%ICON%", iconId.ToString()).Replace("%NAME%", title).Replace("%BONUS%", moneyBonus.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatBestTimeHeader(string gameName)
+ {
+ return GameBestTimeHeaderFormat.Replace("%GAMETITLE%", gameName);
+ }
+ public static string FormatBestTimeListEntry(int ranking, int score, string username, int totalplays)
+ {
+ return GameBestTimeFormat.Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString().Insert(score.ToString().Length - 2, ".")).Replace("%USERNAME%", username).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatWinlooseHeader(string gameName)
+ {
+ return GameWinLooseHeaderFormat.Replace("%GAMETITLE%", gameName);
+ }
+ public static string FormatWinlooseListEntry(int ranking, int wins, int loose, string username, int totalplays)
+ {
+ return GameWinLooseFormat.Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%WINS%", wins.ToString("N0", CultureInfo.InvariantCulture)).Replace("%LOSES%", loose.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", username).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatHighscoreHeader(string gameName)
+ {
+ return GameHighScoreHeaderFormat.Replace("%GAMETITLE%", gameName);
+ }
+ public static string FormatHighscoreListEntry(int ranking, int score, string username, int totalplays)
+ {
+ return GameHighScoreFormat.Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture)).Replace("%USERNAME%", username).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatHighscoreStat(string gameTitle, int ranking, int score, int totalplays)
+ {
+ return HighscoreFormat.Replace("%GAMETITLE%", gameTitle).Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString("N0", CultureInfo.InvariantCulture)).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBestTimeStat(string gameTitle, int ranking, int score, int totalplays)
+ {
+ return BestTimeFormat.Replace("%GAMETITLE%", gameTitle).Replace("%RANKING%", ranking.ToString("N0", CultureInfo.InvariantCulture)).Replace("%SCORE%", score.ToString()).Replace("%TOTALPLAYS%", totalplays.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatMoneyEarnedMessage(int money)
+ {
+ return YouEarnedMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTimeBeatenMessage(int time)
+ {
+ return BeatBestTimeFormat.Replace("%TIME%", time.ToString());
+ }
+ public static string FormatHighscoreBeatenMessage(int score)
+ {
+ return BeatHighscoreFormat.Replace("%SCORE%", score.ToString());
+ }
+ public static string FormatQuestFooter(int totalQuestsComplete, int totalQuests, int questPoints, int totalQuestPoints)
+ {
+ int questsComplete = Convert.ToInt32(Math.Floor(((decimal)totalQuestsComplete / (decimal)totalQuests) * (decimal)100.0));
+ int questPointsComplete = Convert.ToInt32(Math.Floor(((decimal)questPoints / (decimal)totalQuestPoints) * (decimal)100.0));
+ return QuestFooterFormat.Replace("%TOTALCOMPLETED%", totalQuestsComplete.ToString("N0", CultureInfo.InvariantCulture)).Replace("%TOTALQUESTS%", totalQuests.ToString("N0", CultureInfo.InvariantCulture)).Replace("%TOTALPERCENT%", questsComplete.ToString()).Replace("%YOURQP%", questPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%YOURQP%", totalQuestPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%QPERCENT%", questPointsComplete.ToString()).Replace("%MAXQP%", totalQuestPoints.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatQuestLogQuest(string questTitle, int questPoints, string difficulty, string completionStatus)
+ {
+ return QuestFormat.Replace("%TITLE%", questTitle).Replace("%QUESTPOINTS%", questPoints.ToString("N0", CultureInfo.InvariantCulture)).Replace("%DIFFICULTY%", difficulty).Replace("%COMPLETION%", completionStatus);
+ }
+
+ public static string FormatPrivateNotes(string privateNotes)
+ {
+ return PrivateNotesMetaFormat.Replace("%PRIVATENOTES%", privateNotes);
+ }
+ public static string FormatRandomMovementMessage(string statName, string message)
+ {
+ return RandomMovement.Replace("%STAT%", statName).Replace("%MSG%", message);
+ }
+
+ public static string FormatJewerlyEquipMessage(string itemName)
+ {
+ return EquipJewelryFormat.Replace("%ITEM%", itemName);
+ }
+ public static string FormatEquipCompetitionGearMessage(string name)
+ {
+ return EquipCompetitionGearFormat.Replace("%ITEM%", name);
+ }
+
+ public static string FormatPlayerStat(string statFormat, string statName)
+ {
+ return statFormat.Replace("%STAT%", statName);
+ }
+ public static string FormatJewelrySlot1(string itemName, int icon, bool other)
+ {
+ return JewelrySlot1Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot1Button);
+ }
+ public static string FormatJewelrySlot2(string itemName, int icon, bool other)
+ {
+ return JewelrySlot2Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot2Button);
+ }
+ public static string FormatJewelrySlot3(string itemName, int icon, bool other)
+ {
+ return JewelrySlot3Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot3Button);
+ }
+ public static string FormatJewelrySlot4(string itemName, int icon, bool other)
+ {
+ return JewelrySlot4Format.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%BUTTON%", other ? "" : Messages.JewelryRemoveSlot4Button);
+ }
+
+ public static string FormatCompetitionGearHead(string itemName, string pronoun, int icon, bool other)
+ {
+ return CompetitionGearHeadFormat.Replace("%ITEM%", itemName).Replace("%ICON%",icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveHeadButton);
+ }
+ public static string FormatCompetitionGearBody(string itemName, string pronoun, int icon, bool other)
+ {
+ return CompetitionGearBodyFormat.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveBodyButton); ;
+ }
+ public static string FormatCompetitionGearLegs(string itemName, string pronoun, int icon, bool other)
+ {
+ return CompetitionGearLegsFormat.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveLegsButton);
+ }
+ public static string FormatCompetitionGearFeet(string itemName, string pronoun, int icon, bool other)
+ {
+ return CompetitionGearFeetFormat.Replace("%ITEM%", itemName).Replace("%ICON%", icon.ToString()).Replace("%PRONOUN%", pronoun) + (other ? "" : Messages.CompetitionGearRemoveFeetButton );
+ }
+ public static string FormatStatsBar(string username)
+ {
+ return StatsBarFormat.Replace("%USERNAME%", username);
+ }
+ public static string FormatStatsArea(string area)
+ {
+ return StatsAreaFormat.Replace("%AREA%", area);
+ }
+ public static string FormatMoneyStat(int money)
+ {
+ return StatsMoneyFormat.Replace("%MONEY%", money.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatFreeTime(int freeMinutes)
+ {
+ return StatsFreeTimeFormat.Replace("%FREEMINUTES%", freeMinutes.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatPlayerDescriptionForStatsMenu(string description)
+ {
+ return StatsDescriptionFormat.Replace("%PLAYERDESC%", BBCode.EncodeBBCodeToMeta(description));
+ }
+
+ public static string FormatExperience(int expPoints)
+ {
+ return StatsExpFormat.Replace("%EXPPOINTS%", expPoints.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatQuestPoints(int questPoints)
+ {
+ return StatsQuestpointsFormat.Replace("%QUESTPOINTS%", questPoints.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatHungryStat(string status)
+ {
+ return StatsHungerFormat.Replace("%HUNGER%", status);
+ }
+ public static string FormatThirstStat(string status)
+ {
+ return StatsThirstFormat.Replace("%THIRST%", status);
+ }
+ public static string FormatTiredStat(string status)
+ {
+ return StatsTiredFormat.Replace("%TIRED%", status);
+ }
+ public static string FormatGenderStat(string gender)
+ {
+ return StatsGenderFormat.Replace("%GENDER%", gender);
+ }
+ public static string FormatJewelryStat(string jewelformat)
+ {
+ return StatsJewelFormat.Replace("%JEWELFORMAT%", jewelformat);
+ }
+ public static string FormatCompetitionGearStat(string competitonGearFormat)
+ {
+ return StatsCompetitionGearFormat.Replace("%GEARFORMAT%", competitonGearFormat);
+ }
+ public static string FormatAdminCommandCompleteMessage(string command)
+ {
+ return AdminCommandFormat.Replace("%COMMAND%", command);
+ }
+
+ public static string FormatPlayerCommandCompleteMessage(string command)
+ {
+ return PlayerCommandFormat.Replace("%COMMAND%", command);
+ }
+
+ public static string FormatYouLostAnItemMessage(string itemName)
+ {
+ return YouLostAnItemFormat.Replace("%ITEM%", itemName);
+ }
+ public static string FormatYouEarnedAnItemButInventoryFullMessage(string itemName)
+ {
+ return YouEarnedAnItemButInventoryWasFullFormat.Replace("%ITEM%", itemName);
+ }
+ public static string FormatYouEarnedAnItemMessage(string itemName)
+ {
+ return YouEarnedAnItemFormat.Replace("%ITEM%", itemName);
+ }
+ public static string FormatSellMessage(string itemName, UInt64 price)
+ {
+ return Sold1Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatSellAllMessage(string itemName, UInt64 price, int sellAmount)
+ {
+ return SoldAllFormat.Replace("%AMOUNT%",sellAmount.ToString()).Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuy25Message(string itemName, UInt64 price)
+ {
+ return Brought25Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuy5Message(string itemName, UInt64 price)
+ {
+ return Brought5Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatBuyMessage(string itemName, UInt64 price)
+ {
+ return Brought1Format.Replace("%ITEM%", itemName).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatShopEntry(int iconid, string count, string name, UInt64 price)
+ {
+ return ShopEntryFormat.Replace("%ICONID%", iconid.ToString()).Replace("%COUNT%", count).Replace("%TITLE%", name).Replace("%PRICE%", price.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatWearButton(int randomId)
+ {
+ return ItemWearButton.Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatItemInformationByIdButton(int itemId)
+ {
+ return ItemInformationByIdButton.Replace("%ITEMID%", itemId.ToString());
+ }
+ public static string FormatBuyItemButton(int itemId)
+ {
+ return ShopBuyButton.Replace("%ITEMID%", itemId.ToString());
+ }
+ public static string FormatBuy5ItemButton(int itemId)
+ {
+ return ShopBuy5Button.Replace("%ITEMID%", itemId.ToString());
+ }
+ public static string FormatBuy25ItemButton(int itemId)
+ {
+ return ShopBuy25Button.Replace("%ITEMID%", itemId.ToString());
+ }
+ public static string FormatSellButton(int randomId)
+ {
+ return SellButton.Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatSellAllButton(int itemId)
+ {
+ return SellAllButton.Replace("%ITEMID%", itemId.ToString());
+ }
+
+ public static string FormatNpcInformation(string name, string description)
+ {
+ return NpcInformationFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", description);
+ }
+ public static string FormatItemInformation(string name, string description)
+ {
+ return ItemInformationFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", description);
+ }
+ public static string FormatNpcChatpoint(string name, string shortDescription, string chatText)
+ {
+ return NpcChatpointFormat.Replace("%NAME%", name).Replace("%DESCRIPTION%", shortDescription).Replace("%TEXT%", chatText);
+ }
+
+ public static string FormatNpcTalkButton(int npcId)
+ {
+ return NpcTalkButton.Replace("%ID%", npcId.ToString());
+ }
+ public static string FormatNpcInformationButton(int npcId)
+ {
+ return NpcInformationButton.Replace("%ID%", npcId.ToString());
+ }
+
+ public static string FormatNpcReply(string replyText, int replyId)
+ {
+ return NpcReplyFormat.Replace("%TEXT%", replyText).Replace("%ID%", replyId.ToString());
+ }
+
+ public static string FormatNpcStartChatMessage(int iconId, string name, string shortDescription, int npcId)
+ {
+ return NpcStartChatFormat.Replace("%ICONID%", iconId.ToString()).Replace("%NAME%", name).Replace("%DESCRIPTION%", shortDescription).Replace("%ID%", npcId.ToString());
+ }
+
+ public static string FormatGlobalChatViolationMessage(Chat.Chat.Reason violationReason)
+ {
+ return ChatViolationMessageFormat.Replace("%AMOUNT%", RequiredChatViolations.ToString()).Replace("%REASON%", violationReason.Message);
+ }
+
+ public static string FormatPlayerInventoryHeaderMeta(int itemCount, int maxItems)
+ {
+ return InventoryHeaderFormat.Replace("%ITEMCOUNT%", itemCount.ToString()).Replace("%MAXITEMS%", maxItems.ToString());
+ }
+
+ public static string FormatPlayerInventoryItemMeta(int iconid, int count, string name)
+ {
+ return InventoryItemFormat.Replace("%ICONID%", iconid.ToString()).Replace("%COUNT%", count.ToString()).Replace("%TITLE%", name);
+ }
+
+ public static string FormatItemThrowButton(int itemId)
+ {
+ return ItemThrowButton.Replace("%ITEMID%", itemId.ToString());
+ }
+ public static string FormatItemConsumeButton(int randomid)
+ {
+ return ItemConsumeButton.Replace("%RANDOMID%", randomid.ToString());
+ }
+ public static string FormatItemInformationButton(int randomid)
+ {
+ return ItemInformationButton.Replace("%RANDOMID%", randomid.ToString());
+ }
+
+ public static string FormatItemDropButton(int randomid)
+ {
+ return ItemDropButton.Replace("%RANDOMID%", randomid.ToString());
+ }
+ public static string FormatItemOpenButton(int randomId)
+ {
+ return ItemOpenButton.Replace("%RANDOMID%", randomId.ToString());
+ }
+ public static string FormatItemUseButton(int randomid)
+ {
+ return ItemUseButton.Replace("%RANDOMID%", randomid.ToString());
+ }
+ public static string FormatItemReadButton(int randomid)
+ {
+ return ItemReadButton.Replace("%ITEMID%", randomid.ToString());
+ }
+
+ // Meta
+ public static string FormatTileName(string name)
+ {
+ return Messages.TileFormat.Replace("%TILENAME%", name);
+ }
+ public static string FormatGrabItemMessage(string name, int randomid, int iconid)
+ {
+ return GrabItemFormat.Replace("%ICONID%",iconid.ToString()).Replace("%ITEMNAME%", name).Replace("%RANDOMID%", randomid.ToString());
+ }
+
+ public static string FormatPlayerBuddyList(int amount)
+ {
+ return PlayerListOfBuddiesFormat.Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatPlayerList(int amount)
+ {
+ return PlayerListOfPlayersFormat.Replace("%AMOUNT%", amount.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatMapAllBuddiesList(string buddyxys)
+ {
+ return PlayerListMapAllBuddiesForamt.Replace("%BUDDYXYLIST%", buddyxys);
+ }
+
+ public static string FormatMapAllPlayersList(string playerxys)
+ {
+ return PlayerListMapAllPlayersFormat.Replace("%ALLXYLIST%", playerxys);
+ }
+
+ public static string FormatMapLocations(Point[] xys)
+ {
+ string allXys = "";
+ foreach(Point xy in xys)
+ {
+ allXys += FormatMapLocation(xy.X, xy.Y);
+ }
+ return allXys;
+ }
+ public static string FormatMapLocation(int x, int y)
+ {
+ string xy = "";
+ xy += (char)(((x - 4) / 64) + 20);
+ xy += (char)(((x - 4) % 64) + 20);
+
+ xy += (char)(((y - 1) / 64) + 20);
+ xy += (char)(((y - 1) % 64) + 20);
+ return xy;
+ }
+
+ public static string FormatTransportCost(int cost)
+ {
+ return TransportCostFormat.Replace("%COST%", cost.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatTransportMessage(string method, string place, string costFormat, int id, int x, int y)
+ {
+ string xy = FormatMapLocation(x, y);
+
+ int iconId = 253;
+ if(method == "WAGON")
+ iconId = 254;
+ return TransportFormat.Replace("%METHOD%", method).Replace("%PLACE%", place).Replace("%COSTFORMAT%", costFormat).Replace("%ID%", id.ToString()).Replace("%ICON%",iconId.ToString()).Replace("%XY%", xy);
+ }
+ // For all
+ public static string FormatGlobalChatMessage(string username, string message)
+ {
+ return GlobalChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatBuddyChatMessage(string username, string message)
+ {
+ return BuddyChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatIsleChatMessage(string username, string message)
+ {
+ return IsleChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatNearbyChatMessage(string username, string message)
+ {
+ return NearChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatHereChatMessage(string username, string message)
+ {
+ return HereChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatDirectMessage(string username, string message, string formatPart)
+ {
+ return DirectChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%FORMATPART%", formatPart);
+ }
+
+ public static string FormatGlobalChatMessageForMod(string username, string message)
+ {
+ return GlobalChatFormatForModerators.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatAdsChatMessage(string username, string message)
+ {
+ return AdsChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatModChatMessage(string username, string message)
+ {
+ return ModChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+ public static string FormatAdminChatMessage(string username, string message)
+ {
+ return AdminChatFormat.Replace("%USERNAME%", username).Replace("%MESSAGE%", message);
+ }
+
+
+ // For Sender
+ public static string FormatBuddyChatMessageForSender(int numbBuddies, string username, string message)
+ {
+ return BuddyChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbBuddies.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatHereChatMessageForSender(int numbHere, string username, string message)
+ {
+ return HereChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbHere.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatNearChatMessageForSender(int numbNear, string username, string message)
+ {
+ return NearChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbNear.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatIsleChatMessageForSender(int numbIsle, string username, string message)
+ {
+ return IsleChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbIsle.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatAdminChatForSender(int numbAdmins, string username, string message)
+ {
+ return AdminChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbAdmins.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatAdsChatForSender(int numbListening, string username, string message)
+ {
+ return AdsChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbListening.ToString("N0", CultureInfo.InvariantCulture));
+ }
+
+ public static string FormatModChatForSender(int numbMods, string username, string message)
+ {
+ return ModChatFormatForSender.Replace("%USERNAME%", username).Replace("%MESSAGE%", message).Replace("%AMOUNT%", numbMods.ToString("N0", CultureInfo.InvariantCulture));
+ }
+ public static string FormatDirectChatMessageForSender(string username,string toUsername, string message, string formatPart)
+ {
+ return DirectChatFormatForSender.Replace("%FROMUSER%", username).Replace("%TOUSER%", toUsername).Replace("%MESSAGE%", message).Replace("%FORMATPART%", formatPart);
+ }
+ public static string FormatIdleWarningMessage()
+ {
+ return IdleWarningFormat.Replace("%WARN%", GameServer.IdleWarning.ToString()).Replace("%KICK%", GameServer.IdleTimeout.ToString());
+ }
+
+ public static string FormatLoginMessage(string username)
+ {
+ return LoginMessageFormat.Replace("%USERNAME%", username);
+ }
+
+ public static string FormatLogoutMessage(string username)
+ {
+ return LogoutMessageFormat.Replace("%USERNAME%", username);
+ }
+
+ public static string FormatMOTD()
+ {
+ return MotdFormat.Replace("%MOTD%", ConfigReader.Motd);
+ }
+ public static string FormatWelcomeMessage(string username)
+ {
+ return WelcomeFormat.Replace("%USERNAME%", username);
+ }
+
+ // Transport
+ public static string FormatWelcomeToAreaMessage(string placeName)
+ {
+ return WelcomeToAreaFormat.Replace("%PLACE%", placeName);
+ }
+
+ // Disconnect
+ public static string FormatIdleKickMessage()
+ {
+ return KickReasonIdleFormat.Replace("%KICK%", GameServer.IdleTimeout.ToString());
+ }
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Game/Meta.cs b/HorseIsleServer/LibHISP/Game/Meta.cs
old mode 100755
new mode 100644
index dcd0d4d..7fade56
--- a/HorseIsleServer/LibHISP/Game/Meta.cs
+++ b/HorseIsleServer/LibHISP/Game/Meta.cs
@@ -1,3054 +1,3090 @@
-using HISP.Game.Horse;
-using HISP.Game.Inventory;
-using HISP.Game.Services;
-using HISP.Player;
-using HISP.Server;
-using HISP.Game.Items;
-using HISP.Game.Chat;
-using HISP.Game.Events;
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Drawing;
-using HISP.Util;
-
-namespace HISP.Game
-{
- public class Meta
- {
- private static bool overwrite = false;
-
- private static string buildLocationString(int x, int y)
- {
- string areaString = buildAreaString(x, y);
- if (areaString != "")
- areaString = Messages.LocationFormat.Replace("%META%", areaString);
- return areaString;
- }
- private static string buildAreaString(int x, int y)
- {
- string locationString = "";
-
- if (World.InArea(x, y))
- locationString += Messages.AreaFormat.Replace("%AREA%", World.GetArea(x, y).Name);
- if (World.InTown(x, y))
- locationString += Messages.TownFormat.Replace("%TOWN%", World.GetTown(x, y).Name);
- if (World.InIsle(x, y))
- locationString += Messages.IsleFormat.Replace("%ISLE%", World.GetIsle(x, y).Name);
- return locationString;
- }
-
- private static string buildPlayersHere(User fromUser, int x, int y)
- {
- string playersHere = "";
- User[] playersAt = GameServer.GetUsersAt(x, y, true, true);
- if(playersAt.Length > 1)
- {
- playersHere += Messages.PlayersHere;
- int count = 0;
- foreach(User playerAt in playersAt)
- {
- if (playerAt.Id == fromUser.Id)
- continue;
- string buttons = "";
- buttons += Messages.FormatPlayerHereProfileButton(playerAt.Id);
- buttons += Messages.FormatPlayerHereSocialButtton(playerAt.Id);
- buttons += Messages.FormatPlayerHereTradeButton(playerAt.Id);
- if (fromUser.Friends.IsFriend(playerAt.Id))
- buttons += Messages.FormatPlayerHereTagButton(playerAt.Id);
- else
- buttons += Messages.FormatPlayerHereBuddyButton(playerAt.Id);
- buttons += Messages.FormatPmButton(playerAt.Username);
-
- playersHere += Messages.FormatPlayerHereMenu(playerAt.GetPlayerListIcon(), playerAt.Username,buttons);
- count++;
- }
-
- if(count >= 2)
- {
- SocialType stype = SocialType.GetSocialType("GROUP");
- foreach(SocialType.Social social in stype.Socials)
- {
- playersHere += Messages.FormatSocialButton(social.Id, social.ButtonName);
- }
- playersHere += Messages.R1;
- }
-
- if (count <= 0)
- return "";
- }
-
- return playersHere;
- }
-
- private static string buildNearbyString(int x, int y, bool showNearbyPlayersHeader=true)
- {
- string playersNearby = "";
-
- User[] nearbyUsers = GameServer.GetNearbyUsers(x, y, true, true);
- int count = 0;
- if (nearbyUsers.Length > 1)
- {
- if(showNearbyPlayersHeader)
- {
- playersNearby += Messages.NearbyPlayers;
- }
-
- string usersWest = "";
- string usersNorth = "";
- string usersEast = "";
- string usersSouth = "";
-
- foreach (User nearbyUser in nearbyUsers)
- {
- if (nearbyUser.X == x && nearbyUser.Y == y) // not yourself
- continue;
-
- int xDiff = x - nearbyUser.X;
- int yDiff = y - nearbyUser.Y;
- double angle = (Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI);
- angle -= 45;
- angle = (angle % 360 + 360) % 360;
-
- if (angle >= 270 && angle <= 360 )
- usersWest += nearbyUser.Username + " ";
- else if (angle >= 90 && angle <= 180)
- usersEast += nearbyUser.Username + " ";
- else if (angle >= 180 && angle <= 270)
- usersSouth += nearbyUser.Username + " ";
- else if (angle >= 0 && angle <= 90)
- usersNorth += nearbyUser.Username + " ";
-
-
- count++;
- }
-
- if (usersEast != "")
- playersNearby += " " + Messages.East + usersEast + Messages.Seperator;
- if (usersWest != "")
- playersNearby += " " + Messages.West + usersWest + Messages.Seperator;
- if (usersSouth != "")
- playersNearby += " " + Messages.South + usersSouth + Messages.Seperator;
- if (usersNorth != "")
- playersNearby += " " + Messages.North + usersNorth + Messages.Seperator;
-
-
-
- }
- if(count <= 0)
- {
- return "";
- }
- return playersNearby;
-
- }
- private static string buildShopInfo(Shop shop, IInventory shopperInventory)
- {
- string message = "";
- InventoryItem[] itemList = shop.Inventory.GetItemList();
-
- // Get shops stock
- message += Messages.ThingsIAmSelling;
- foreach (InventoryItem item in itemList)
- {
- message += Messages.R1;
- Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
-
- int count = item.ItemInstances.Length;
- string countStr = count.ToString();
- if (item.Infinite)
- countStr = Messages.InfinitySign;
-
-
- message += Messages.FormatShopEntry(itemInfo.IconId, countStr, itemInfo.Name, shop.CalculateBuyCost(itemInfo));
-
- message += Messages.FormatBuyItemButton(itemInfo.Id);
- if (count >= 5)
- message += Messages.FormatBuy5ItemButton(itemInfo.Id);
- if (count >= 25)
- message += Messages.FormatBuy25ItemButton(itemInfo.Id);
-
- message += Messages.FormatItemInformationByIdButton(itemInfo.Id);
-
- }
-
- // Check whats avalilble to be sold
- message += Messages.R1 + Messages.ThingsYouSellMe;
- InventoryItem[] shopperItemList = shopperInventory.GetItemList();
-
- foreach (InventoryItem shopperitem in shopperItemList)
- {
- Item.ItemInformation itemInfo = Item.GetItemById(shopperitem.ItemId);
-
- // Prevent items that cannot be sold to this shopkeeper.
- if (!shop.CanSell(itemInfo))
- continue;
-
-
- int count = shopperitem.ItemInstances.Length;
- string countStr = count.ToString();
-
-
- message += Messages.R1;
- message += Messages.FormatShopEntry(itemInfo.IconId, countStr, itemInfo.Name, shop.CalculateSellCost(itemInfo));
- message += Messages.FormatSellButton(shopperitem.ItemInstances[0].RandomId);
- message += Messages.FormatSellAllButton(itemInfo.Id);
- message += Messages.FormatItemInformationButton(shopperitem.ItemInstances[0].RandomId);
- }
-
- message += Messages.R1 + Messages.ExitThisPlace;
- return message;
- }
-
-
- private static string buildWishingWell(User user)
- {
- string message = "";
- bool hasCoins = user.Inventory.HasItemId(Item.WishingCoin);
- if (!hasCoins)
- {
- message += Messages.NoWishingCoins;
- }
- else
- {
- InventoryItem wishingCoins = user.Inventory.GetItemByItemId(Item.WishingCoin);
- int totalCoins = wishingCoins.ItemInstances.Length;
- message += Messages.FormatNumberOfWishingCoins(totalCoins);
- message += Messages.WishingWellMeta;
- }
-
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
-
-
- }
-
- private static string buildCommonInfo(User user, int x, int y)
- {
- user.HorseWindowOpen = false;
- string message = "";
- message += buildPlayersHere(user, x, y);
- bool playersHere = (GameServer.GetUsersAt(x, y, true, true).Length >= 1);
- message += buildNearbyString(x, y, playersHere);
-
- // Dropped Items
- DroppedItems.DroppedItem[] Items = DroppedItems.GetItemsAt(x, y);
- if (Items.Length == 0)
- message += Messages.NothingMessage;
- else
- {
- message += Messages.ItemsOnGroundMessage;
- foreach (DroppedItems.DroppedItem item in Items)
- {
- Item.ItemInformation itemInfo = item.Instance.GetItemInfo();
- message += Messages.FormatGrabItemMessage(itemInfo.Name, item.Instance.RandomId, itemInfo.IconId);
- }
- if (Items.Length > 1)
- message += Messages.GrabAllItemsButton;
- }
- return message;
- }
-
- private static string buildWornJewelery(User user, bool other)
- {
- string message = "";
- string pronoun = "";
-
- if (other)
- pronoun = user.GetPronouns(false);
-
- if (!other)
- message += Messages.JewelrySelected;
- else
- message += Messages.FormatOtherJewelerySelected(pronoun);
-
- bool hasMsg = false;
-
- if (user.EquipedJewelry.Slot1 != null)
- {
- message += Messages.FormatJewelrySlot1(user.EquipedJewelry.Slot1.Name, user.EquipedJewelry.Slot1.IconId, other);
- hasMsg = true;
- }
- if (user.EquipedJewelry.Slot2 != null)
- {
- message += Messages.FormatJewelrySlot2(user.EquipedJewelry.Slot2.Name, user.EquipedJewelry.Slot2.IconId, other);
- hasMsg = true;
- }
- if (user.EquipedJewelry.Slot3 != null)
- {
- message += Messages.FormatJewelrySlot3(user.EquipedJewelry.Slot3.Name, user.EquipedJewelry.Slot3.IconId, other);
- hasMsg = true;
- }
- if (user.EquipedJewelry.Slot4 != null)
- {
- message += Messages.FormatJewelrySlot4(user.EquipedJewelry.Slot4.Name, user.EquipedJewelry.Slot4.IconId, other);
- hasMsg = true;
- }
-
- if (!hasMsg)
- {
- if (!other)
- message = Messages.NoJewerlyEquipped;
- else
- message = Messages.FormatOtherNoJewelery(pronoun);
- }
-
-
-
- return message;
- }
-
- private static string buildMultiroom(string id, User user)
- {
-
- string message = Messages.MultiroomPlayersParticipating;
-
- Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
- room.Join(user);
-
- foreach (User userOnTile in room.JoinedUsers)
- {
- if (userOnTile.Id == user.Id)
- continue;
-
- message += Messages.FormatMultiroomParticipent(userOnTile.Username);
- }
-
- message += Messages.R1;
-
- if(id == null) // Generic
- {
- // Do nothing
- }
- else if (id[0] == 'P') // Poet
- {
- int lastPoet = Database.GetLastPlayer(id);
- string username = "";
- if (lastPoet != -1)
- username = Database.GetUsername(lastPoet);
-
- message += Messages.FormatLastPoet(username);
- }
- else if (id[0] == 'D') // Drawning room
- {
- int lastDraw = Database.GetLastPlayer(id);
- string username = "";
- if (lastDraw != -1)
- username = Database.GetUsername(lastDraw);
-
- message += Messages.FormatLastToDraw(username);
- }
-
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildEquippedCompetitionGear(User user, bool other = false)
- {
- string message = "";
-
- if (!other)
- message = Messages.CompetitionGearSelected;
-
- string pronoun = Messages.PronounNeutralYour;
- string possessivePronoun = Messages.PronounNeutralYour;
- if (other)
- {
- pronoun = user.GetPronouns(false);
- possessivePronoun = user.GetPronouns(true);
-
- message = Messages.FormatOtherCompetitionGear(pronoun);
- }
-
- bool hasMsg = false;
-
- if (user.EquipedCompetitionGear.Head != null)
- {
- message += Messages.FormatCompetitionGearHead(user.EquipedCompetitionGear.Head.Name, possessivePronoun, user.EquipedCompetitionGear.Head.IconId, other);
- hasMsg = true;
- }
- if (user.EquipedCompetitionGear.Body != null)
- {
- message += Messages.FormatCompetitionGearBody(user.EquipedCompetitionGear.Body.Name, possessivePronoun, user.EquipedCompetitionGear.Body.IconId, other);
- hasMsg = true;
- }
- if (user.EquipedCompetitionGear.Legs != null)
- {
- message += Messages.FormatCompetitionGearLegs(user.EquipedCompetitionGear.Legs.Name, possessivePronoun, user.EquipedCompetitionGear.Legs.IconId, other);
- hasMsg = true;
- }
- if (user.EquipedCompetitionGear.Feet != null)
- {
- message += Messages.FormatCompetitionGearFeet(user.EquipedCompetitionGear.Feet.Name, possessivePronoun, user.EquipedCompetitionGear.Feet.IconId, other);
- hasMsg = true;
- }
-
- if (!hasMsg)
- {
- if (!other)
- message = Messages.NoCompetitionGear;
- else
- message = Messages.FormatOtherNoCompetitionGear(pronoun);
- }
-
- return message;
-
- }
-
- private static string buildHorseListIndependantlyOfUserInstance(int userId)
- {
- string message = "";
- int i = 1;
-
-
- foreach (HorseInfo.Category category in HorseInfo.HorseCategories)
- {
- HorseInstance[] horsesInCategory = Database.GetPlayerHorsesInCategory(userId, category.Name).OrderBy(o => o.Name).ToArray();
- if (horsesInCategory.Length > 0)
- {
- message += category.MetaOthers;
- foreach (HorseInstance instance in horsesInCategory)
- {
- message += Messages.FormatHorseEntry(i, instance.Name, instance.Breed.Name, instance.RandomId, instance.AutoSell > 0);
- i++;
- }
- }
- }
-
- return message;
-
- }
- public static string buildLibary()
- {
- return Messages.LibaryMainMenu + Messages.ExitThisPlace + Messages.MetaTerminator;
- }
- private static string buildNpc(User user, int x, int y)
- {
- string message = "";
- Npc.NpcEntry[] entries = Npc.GetNpcByXAndY(x, y);
- foreach (Npc.NpcEntry ent in entries)
- {
- if (ent.AdminOnly && !user.Administrator)
- continue;
-
- if (ent.RequiresQuestIdCompleted != 0)
- if (user.Quests.GetTrackedQuestAmount(ent.RequiresQuestIdCompleted) <= 0)
- continue;
-
- if (ent.RequiresQuestIdNotCompleted != 0)
- if (user.Quests.GetTrackedQuestAmount(ent.RequiresQuestIdNotCompleted) >= 1)
- continue;
-
- message += Messages.FormatNpcStartChatMessage(ent.IconId, ent.Name, ent.ShortDescription, ent.Id);
- if(ent.Chatpoints.Length > 0)
- {
- if (ent.LongDescription != "")
- message += Messages.FormatNpcInformationButton(ent.Id);
- message += Messages.FormatNpcTalkButton(ent.Id);
- }
- else
- {
- message += Messages.NpcNoChatpoints;
- }
- message += Messages.R1;
- }
- return message;
- }
- public static string buildVenusFlyTrap(User user)
- {
- int moneyLost = GameServer.RandomNumberGenerator.Next(0, 100);
- if (moneyLost > user.Money)
- moneyLost = user.Money;
- user.TakeMoney(moneyLost);
- return Messages.FormatVenusFlyTrapMeta(moneyLost);
- }
- public static string buildInn(Inn inn)
- {
- string message = Messages.InnBuyMeal;
- foreach (Item.ItemInformation item in inn.MealsOffered)
- {
- message += Messages.FormatInnItemEntry(item.IconId, item.Name, inn.CalculateBuyCost(item), item.Id);
- }
- message += Messages.InnBuyRest;
- foreach (Item.ItemInformation item in inn.RestsOffered)
- {
- message += Messages.FormatInnItemEntry(item.IconId, item.Name, inn.CalculateBuyCost(item), item.Id);
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string SelectPlayerStatFormat(int statValue)
- {
- int curValue = 1000;
- int devisibleBy = Convert.ToInt32(Math.Floor((decimal)curValue / Messages.StatPlayerFormats.Length));
-
- for (int i = 0; i < Messages.StatPlayerFormats.Length; i++)
- {
- curValue -= devisibleBy;
- if (statValue >= curValue)
- return Messages.StatPlayerFormats[i];
-
- }
- throw new Exception("A mathematically impossible error occured. please check wether the laws of physics still apply.");
- }
-
- public static string BuildTradeAdd(Trade trade)
- {
- string message = Messages.FormatTradeWhatToOffer(trade.OtherTrade.Trader.Username);
- message += Messages.TradeOfferMoney;
- message += Messages.TradeOfferHorse;
- foreach(HorseInstance horse in trade.Trader.HorseInventory.HorseList.OrderBy(o => o.Name))
- {
- if (horse.Leaser > 0)
- continue;
-
- if (horse.Category != "TRADING")
- continue;
-
- bool tacked = (horse.Equipment.Saddle != null || horse.Equipment.SaddlePad != null || horse.Equipment.Bridle != null || horse.Equipment.Companion != null);
- message += Messages.FormatTradeOfferHorse(horse.Name, tacked, horse.RandomId);
- }
-
- if(trade.OtherTrade.Trader.Inventory.Count >= trade.OtherTrade.Trader.MaxItems)
- {
- message += Messages.TradeOfferItemOtherPlayerInvFull;
- }
- else
- {
- message += Messages.TradeOfferItem;
- foreach(InventoryItem item in trade.Trader.Inventory.GetItemList())
- {
- Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
- if (itemInfo.Type == "QUEST" || itemInfo.Type == "TEXT" || itemInfo.Id == Item.DorothyShoes)
- continue;
- message += Messages.FormatTradeOfferItem(itemInfo.IconId, itemInfo.Name, item.ItemInstances.Length, item.ItemId);
- }
- }
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
-
- }
- public static string BuildSocialMenu(bool onHorse)
- {
- string message = "";
- foreach(SocialType sType in SocialType.SocialTypes)
- {
- if (sType.Type == "GROUP")
- continue;
- if (sType.Type == "HORSE")
- if (!onHorse)
- continue;
-
- message += Messages.FormatSocialMenuType(sType.Type);
- foreach(SocialType.Social social in sType.Socials)
- {
- message += Messages.FormatSocialButton(social.Id, social.ButtonName);
- }
- message += Messages.R1;
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildTradeAddItem(int totalItems)
- {
- string message = "";
- message += Messages.FormatTradeOfferItemSubmenu(totalItems);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildTradeAddMoney(int curMoney)
- {
- string message = "";
- message += Messages.FormatTradeOfferMoneySubmenu(curMoney);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildTrade(Trade trade)
- {
-
- string message = "";
- message += Messages.FormatTradeWithPlayer(trade.OtherTrade.Trader.Username);
-
-
-
- if (trade.Stage == "DONE" && trade.OtherTrade.Stage == "DONE")
- message += Messages.TradeFinalReview;
- else if (trade.Stage == "DONE")
- message += Messages.TradeWaitingForOtherDone;
- else if (trade.OtherTrade.Stage == "DONE")
- message += Messages.TradeOtherPlayerIsDone;
-
-
- message += Messages.FormatTradeYourOffering(trade.OtherTrade.Trader.Username);
- if (trade.MoneyOffered == 0 && trade.ItemsOffered.Length == 0 && trade.HorsesOffered.Length == 0)
- message += Messages.TradeOfferingNothing;
- if (trade.MoneyOffered > 0)
- message += Messages.FormatTradeMoneyOffer(trade.MoneyOffered);
- if(trade.HorsesOffered.Length > 0)
- foreach(HorseInstance horse in trade.HorsesOffered)
- message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
- if(trade.ItemsOffered.Length > 0)
- foreach(ItemInstance[] item in trade.ItemsOffered)
- {
- Item.ItemInformation itemInfo = item[0].GetItemInfo();
- string name = itemInfo.Name;
- if (item.Length > 1)
- name = itemInfo.PluralName;
-
- message += Messages.FormatTradeItemOffer(itemInfo.IconId, item.Length, name);
- }
-
- if(trade.Stage == "OPEN")
- message += Messages.TradeAddItems;
-
- message += Messages.FormatTradeOtherOffering(trade.OtherTrade.Trader.Username);
- if (trade.OtherTrade.MoneyOffered == 0 && trade.OtherTrade.ItemsOffered.Length == 0 && trade.OtherTrade.HorsesOffered.Length == 0)
- message += Messages.TradeOfferingNothing;
- if (trade.OtherTrade.MoneyOffered > 0)
- message += Messages.FormatTradeMoneyOffer(trade.OtherTrade.MoneyOffered);
- if (trade.OtherTrade.HorsesOffered.Length > 0)
- foreach (HorseInstance horse in trade.OtherTrade.HorsesOffered)
- message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
- if (trade.OtherTrade.ItemsOffered.Length > 0)
- foreach (ItemInstance[] item in trade.OtherTrade.ItemsOffered)
- {
- Item.ItemInformation itemInfo = item[0].GetItemInfo();
- string name = itemInfo.Name;
- if (item.Length > 1)
- name = itemInfo.PluralName;
-
- message += Messages.FormatTradeItemOffer(itemInfo.IconId, item.Length, name);
- }
-
- if (trade.Stage == "OPEN")
- message += Messages.TradeWhenDoneClick;
- if (((trade.Stage == "DONE" || trade.Stage == "ACCEPTED") && (trade.OtherTrade.Stage == "DONE" || trade.Stage == "ACCEPTED")) )
- message += Messages.TradeAcceptTrade;
-
- message += Messages.TradeCancelAnytime;
-
- return message;
- }
-
- public static string buildTackPeiceLibary(Item.ItemInformation item)
- {
- string message = "";
- message += Messages.FormatTackSetPeice(item.Name, item.Description);
- return message;
- }
-
- public static string BuildTackLibary()
- {
- string message = "";
-
- foreach (Tack.TackSet set in Tack.TackSets.OrderBy(o => o.SortPosition()).ToArray())
- {
- string[] setSwfs = set.GetSwfNames();
- string swf = "breedviewer.swf?terrain=book2&breed=tackonly";
- if (setSwfs.Length >= 1)
- swf += "&saddle=" + setSwfs[0];
- if (setSwfs.Length >= 2)
- swf += "&saddlepad=" + setSwfs[1];
- if (setSwfs.Length >= 3)
- swf += "&bridle=" + setSwfs[2];
- swf += "&j=";
-
- message += Messages.FormatTackSetView(set.IconId, set.SetName, swf);
-
- // Write all peices
- try
- {
- message += buildTackPeiceLibary(set.GetSaddle());
- message += buildTackPeiceLibary(set.GetSaddlePad());
- message += buildTackPeiceLibary(set.GetBridle());
- }
- catch (Exception e)
- {
- Logger.ErrorPrint(e.Message);
- }
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildMinigamesLibary()
- {
- string message = "";
- message += Messages.MinigameSingleplayer;
- foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
- {
- if (tile.TypeFlag == "1PLAYER")
- {
- string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
- message += Messages.FormatMinigameEntry(tile.Title, mapXy);
- }
- }
- message += Messages.MinigameTwoplayer;
- foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
- {
- if (tile.TypeFlag == "2PLAYER")
- {
- string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
- message += Messages.FormatMinigameEntry(tile.Title, mapXy);
- }
- }
- message += Messages.MinigameMultiplayer;
- foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
- {
- if (tile.TypeFlag == "MULTIPLAYER")
- {
- string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
- message += Messages.FormatMinigameEntry(tile.Title, mapXy);
- }
- }
- message += Messages.MinigameCompetitions;
- foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
- {
- if (tile.TypeFlag == "ARENA")
- {
- string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
- message += Messages.FormatMinigameEntry(tile.Title, mapXy);
- }
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildRealTimeQuiz(RealTimeQuiz.Participent participent)
- {
- // Uber Priority xD
- participent.UserInstance.MinorPriority = true;
- participent.UserInstance.MajorPriority = true;
- return Messages.FormatEventRealTimeQuizMeta(participent.CorrectAnswers, participent.MistakenAnswers, participent.OnQuestion.BaseCategory.Name, participent.OnQuestion.Question);
- }
- public static string BuildCompanionLibary()
- {
- string message = "";
- foreach (Item.ItemInformation itm in Item.Items.OrderBy(o => o.GetMiscFlag(0)).ToArray())
- {
- if (itm.Type == "COMPANION" && itm.EmbedSwf != null)
- {
- string swf = "breedviewer.swf?terrain=book2&breed=tackonly&companion=" + itm.EmbedSwf + "&j=";
- message += Messages.FormatCompanionViewButton(itm.IconId, itm.Name, swf);
- message += Messages.FormatCompanionEntry(itm.Description);
- }
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildLocationsLibary()
- {
- string message = "";
- message += Messages.LocationKnownIslands;
- foreach (World.Waypoint waypoint in World.Waypoints.OrderBy(o => o.Name).ToArray())
- {
- if (waypoint.Type == "ISLE")
- {
- string mapxy = Messages.FormatMapLocation(waypoint.PosX, waypoint.PosY);
- message += Messages.FormatIslandLocation(waypoint.Name, mapxy);
- message += Messages.FormatLocationDescription(waypoint.Description);
- }
- }
- message += Messages.LocationKnownTowns;
- foreach (World.Waypoint waypoint in World.Waypoints.OrderBy(o => o.Name).ToArray())
- {
- if (waypoint.Type == "TOWN")
- {
- string mapxy = Messages.FormatMapLocation(waypoint.PosX, waypoint.PosY);
- message += Messages.FormatTownLocation(waypoint.Name, mapxy);
- message += Messages.FormatLocationDescription(waypoint.Description);
- }
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildRanchSearchResults(string search)
- {
- string message = "";
- message += Messages.LibaryFindRanchResultsHeader;
- int totalResults = 0;
- foreach(Ranch ranch in Ranch.Ranches)
- {
- if(ranch.OwnerId != -1)
- {
- string ranchOwnerName = Database.GetUsername(ranch.OwnerId);
- if(ranchOwnerName.ToLower().Contains(search.ToLower()))
- {
- message += Messages.FormatRanchSearchResult(ranchOwnerName, ranch.X, ranch.Y);
- totalResults++;
- }
- }
- if (totalResults >= 10)
- break;
- }
- if (totalResults == 0)
- message += Messages.LibaryFindRanchResultsNoResults;
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildRanchSearchLibary()
- {
- string message = "";
- message += Messages.LibaryFindRanch;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildAwardsLibary()
- {
- string message = "";
- message += Messages.AwardsAvalible;
- foreach (Award.AwardEntry award in Award.GlobalAwardList.OrderBy(o => o.Sort).ToArray())
- {
- message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus, award.Description);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildBookReadLibary(Book book)
- {
- string message = "";
- message = Messages.FormatBookReadMeta(book.Author, book.Title, book.Text);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildBooksLibary()
- {
- string message = "";
- message += Messages.BooksOfHorseIsle;
- foreach (Book libaryBook in Book.LibaryBooks.OrderBy(o => o.Title).ToArray())
- {
- message += Messages.FormatBookEntry(libaryBook.Title, libaryBook.Author, libaryBook.Id);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildHorseReleased()
- {
- string message = "";
- message += Messages.HorseReleasedMeta;
- message += Messages.BackToMapHorse;
- message += Messages.MetaTerminator;
- return message;
-
- }
-
- public static string BuildTopHighscores(string gameName)
- {
- Highscore.HighscoreTableEntry[] scores = Database.GetTopScores(gameName, 20);
- if (scores.Length <= 0)
- return "ERROR: No scores recorded." + Messages.BackToMap + Messages.MetaTerminator;
- string message = "";
-
- message += Messages.FormatHighscoreHeader(gameName);
-
- for (int i = 0; i < scores.Length; i++)
- {
- message += Messages.FormatHighscoreListEntry(i + 1, scores[i].Score, Database.GetUsername(scores[i].UserId), scores[i].TimesPlayed);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildTopWinners(string gameName)
- {
- Highscore.HighscoreTableEntry[] scores = Database.GetTopWinners(gameName, 20);
- if (scores.Length <= 0)
- return "ERROR: No wins recorded." + Messages.BackToMap + Messages.MetaTerminator;
- string message = "";
-
- message += Messages.FormatWinlooseHeader(gameName);
-
- for (int i = 0; i < scores.Length; i++)
- {
- message += Messages.FormatWinlooseListEntry(i + 1, scores[i].Wins, scores[i].Looses, Database.GetUsername(scores[i].UserId), scores[i].TimesPlayed);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildTopTimes(string gameName)
- {
- Highscore.HighscoreTableEntry[] scores = Database.GetTopScores(gameName, 20, false);
- if (scores.Length <= 0)
- return "ERROR: No times recorded. "+Messages.BackToMap+Messages.MetaTerminator;
- string message = "";
-
- message += Messages.FormatBestTimeHeader(gameName);
-
- for (int i = 0; i < scores.Length; i++)
- {
- message += Messages.FormatBestTimeListEntry(i + 1, scores[i].Score, Database.GetUsername(scores[i].UserId), scores[i].TimesPlayed);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildMinigameRankingsForUser(User user)
- {
- string message = Messages.HighscoreHeaderMeta;
- foreach (Highscore.HighscoreTableEntry highscore in user.Highscores.HighscoreList)
- {
- if (highscore.Type == "SCORE")
- message += Messages.FormatHighscoreStat(highscore.GameName, Database.GetRanking(highscore.Score, highscore.GameName), highscore.Score, highscore.TimesPlayed);
- else if (highscore.Type == "TIME")
- message += Messages.FormatBestTimeStat(highscore.GameName, Database.GetRanking(highscore.Score, highscore.GameName, true), highscore.Score, highscore.TimesPlayed);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildPrivateNotes(User user)
- {
- string message = "";
- message += Messages.FormatPrivateNotes(user.PrivateNotes);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildNpcInfo(Npc.NpcEntry npcInfo)
- {
- string message = "";
- message += Messages.FormatNpcInformation(npcInfo.Name, npcInfo.LongDescription);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildItemInfo(Item.ItemInformation itemInfo)
- {
- string message = "";
- message += Messages.FormatItemInformation(itemInfo.Name, itemInfo.Description);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildRanchTraining(User user)
- {
- string message = "";
- message += Messages.RanchTrainAllAttempt;
- int horsesTrained = 0;
- foreach(HorseInstance horse in user.HorseInventory.HorseList)
- {
- if(horse.BasicStats.Mood < 200)
- {
- message += Messages.FormatRanchTrainBadMood(horse.Name);
- }
- if(horse.TrainTimer == 0)
- {
- horse.AdvancedStats.Speed += 1;
- horse.AdvancedStats.Strength += 1;
- horse.AdvancedStats.Conformation += 1;
- horse.AdvancedStats.Agility += 1;
- horse.AdvancedStats.Endurance += 1;
- horse.BasicStats.Experience += 1;
- horse.TrainTimer = 720;
- horsesTrained++;
- message += Messages.FormatRanchTrain(horse.Name, 1, 1, 1, 1, 1, 1);
- }
- else
- {
- message += Messages.FormatRanchTrainFail(horse.Name, horse.TrainTimer);
- }
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildTransportInfo(User user, Transport.TransportPoint transportPoint)
- {
- string message = "";
- // Build list of locations
- for (int i = 0; i < transportPoint.Locations.Length; i++)
- {
- int transportLocationId = transportPoint.Locations[i];
- Transport.TransportLocation transportLocation = Transport.GetTransportLocation(transportLocationId);
- string costFormat = Messages.FormatTransportCost(transportLocation.Cost);
- if(transportLocation.Type == "WAGON")
- {
- if (user.OwnedRanch != null)
- {
- if (user.OwnedRanch.GetBuildingCount(7) > 0) // Wagon
- {
- costFormat = Messages.TransportWagonFree;
- }
- }
- }
-
-
- message += Messages.FormatTransportMessage(transportLocation.Type, transportLocation.LocationTitle, costFormat, transportLocation.Id, transportLocation.GotoX, transportLocation.GotoY);
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildStatsMenu(User user, bool other=false)
- {
- string message = Messages.FormatStatsBar(user.Username);
-
- string areaString = buildAreaString(user.X, user.Y);
- if (areaString != "")
- message += Messages.FormatStatsArea(areaString);
- if(!other)
- message += Messages.FormatMoneyStat(user.Money);
- if (!user.Subscribed)
- message += Messages.FormatFreeTime(user.FreeMinutes);
- message += Messages.FormatPlayerDescriptionForStatsMenu(user.ProfilePage);
- message += Messages.FormatExperience(user.Experience);
- message += Messages.FormatHungryStat(Messages.FormatPlayerStat(SelectPlayerStatFormat(user.Hunger), Messages.StatHunger));
- message += Messages.FormatThirstStat(Messages.FormatPlayerStat(SelectPlayerStatFormat(user.Thirst), Messages.StatThirst));
- message += Messages.FormatTiredStat(Messages.FormatPlayerStat(SelectPlayerStatFormat(user.Tiredness), Messages.StatTired));
- message += Messages.FormatGenderStat(user.Gender);
- message += Messages.FormatJewelryStat(buildWornJewelery(user, other));
- message += Messages.FormatCompetitionGearStat(buildEquippedCompetitionGear(user, other));
-
- if(!other)
- {
- message += Messages.StatsPrivateNotesButton;
- message += Messages.StatsQuestsButton;
- message += Messages.StatsMinigameRankingButton;
- message += Messages.StatsAwardsButton;
- message += Messages.StatsMiscButton;
- }
- else
- {
- string pronoun = user.GetPronouns(true);
- message += Messages.FormatOtherHorsesMeta(pronoun);
- message += buildHorseList(user, false);
-
- message += Messages.FormatAwardHeaderOthers(user.Username);
- foreach (Award.AwardEntry award in user.Awards.AwardsEarned)
- message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus);
-
- }
-
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
-
- return message;
- }
-
- public static string BuildWildHorseList(User user)
- {
- string message = "";
- WildHorse[] horses = WildHorse.GetHorsesAt(user.X, user.Y);
- if (horses.Length > 0)
- {
- message = Messages.HorsesHere;
- foreach (WildHorse horse in horses)
- {
- bool vowel = (horse.Instance.Breed.Name[0].ToString().ToLower() == "a" || horse.Instance.Breed.Name[0].ToString().ToLower() == "i" || horse.Instance.Breed.Name[0].ToString().ToLower() == "u" || horse.Instance.Breed.Name[0].ToString().ToLower() == "e" || horse.Instance.Breed.Name[0].ToString().ToLower() == "o");
- message += Messages.FormatWildHorse(horse.Instance.Name, horse.Instance.Breed.Name, horse.Instance.RandomId, vowel);
- }
- }
- return message;
- }
- public static string BuildAwardList(User user)
- {
- string message = Messages.AwardHeader;
- if (user.Awards.AwardsEarned.Length <= 0)
- message += Messages.NoAwards;
- else
- foreach (Award.AwardEntry award in user.Awards.AwardsEarned)
- message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus);
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildQuestLog(User user)
- {
- string message = "";
- message += Messages.QuestLogHeader;
- Quest.QuestEntry[] questList = Quest.GetPublicQuestList();
- foreach (Quest.QuestEntry quest in questList)
- {
- string fmsg = "";
- if (user.Quests.GetTrackedQuestAmount(quest.Id) > 0)
- fmsg = Messages.QuestCompleted;
- else
- fmsg = Messages.QuestNotCompleted;
-
- foreach (int questId in quest.RequiresQuestIdCompleteStatsMenu)
- {
- if (user.Quests.GetTrackedQuestAmount(questId) > 0)
- continue;
- fmsg = Messages.QuestNotAvalible;
- break;
- }
-
- message += Messages.FormatQuestLogQuest(quest.Title, quest.QuestPointsEarned, quest.Difficulty, fmsg);
- }
-
- int totalComplete = Quest.GetTotalQuestsComplete(user);
- int totalQuestPoints = Quest.GetTotalQuestPoints();
-
- message += Messages.FormatQuestFooter(totalComplete, questList.Length, user.QuestPoints, totalQuestPoints);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
-
- return message;
- }
-
-
-
- public static string BuildNearbyList(User currentUser)
- {
- string message = "";
- message += Messages.NearbyPlayersListHeader;
- User[] nearbyUsers = GameServer.GetNearbyUsers(currentUser.X, currentUser.Y, false, true);
- foreach (User nearbyUser in nearbyUsers)
- {
- if (nearbyUser.Stealth)
- continue;
-
- if (nearbyUser.Id == currentUser.Id)
- continue;
-
-
- bool isYou = (nearbyUser.Id == currentUser.Id);
-
- int icon = nearbyUser.GetPlayerListIcon();
- string iconFormat = "";
- if (icon != -1)
- iconFormat = Messages.FormatIconFormat(icon);
-
- message += Messages.FormatPlayerEntry(iconFormat, nearbyUser.Username, nearbyUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - nearbyUser.LoginTime).TotalMinutes)), nearbyUser.X, nearbyUser.Y, nearbyUser.Idle, currentUser.MutePlayer.IsUserMuted(nearbyUser), isYou);
- }
-
- message += Messages.PlayerListIconInformation;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
-
- return message;
- }
-
- public static string BuildPlayerListAlphabetical(User currentUser)
- {
- string message = Messages.PlayerListAllAlphabeticalHeader;
- GameClient[] clients = GameClient.ConnectedClients;
- List onlineUsers = new List();
-
- foreach (GameClient client in clients)
- {
- if (client.LoggedIn)
- {
- if (client.User.Stealth)
- continue;
- onlineUsers.Add(client.User);
- }
- }
-
- onlineUsers = onlineUsers.OrderBy(o => o.Username).ToList();
-
- foreach (User onlineUser in onlineUsers)
- {
-
- bool isYou = (onlineUser.Id == currentUser.Id);
- int icon = onlineUser.GetPlayerListIcon();
- string iconFormat = "";
- if (icon != -1)
- iconFormat = Messages.FormatIconFormat(icon);
-
- message += Messages.FormatPlayerEntry(iconFormat, onlineUser.Username, onlineUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - onlineUser.LoginTime).TotalMinutes)), onlineUser.X, onlineUser.Y, onlineUser.Idle, currentUser.MutePlayer.IsUserMuted(onlineUser), isYou);
- }
-
- message += Messages.PlayerListIconInformation;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
-
- return message;
- }
-
- public static string BuildPlayerList(User currentUser)
- {
- string message = Messages.PlayerListAllHeader;
- GameClient[] clients = GameClient.ConnectedClients;
- foreach (GameClient client in clients)
- {
- if (client.LoggedIn)
- {
- if (client.User.Stealth)
- continue;
-
- bool isYou = (client.User.Id == currentUser.Id);
-
- int icon = client.User.GetPlayerListIcon();
- string iconFormat = "";
- if (icon != -1)
- iconFormat = Messages.FormatIconFormat(icon);
-
- message += Messages.FormatPlayerEntry(iconFormat, client.User.Username, client.User.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - client.User.LoginTime).TotalMinutes)), client.User.X, client.User.Y, client.User.Idle, currentUser.MutePlayer.IsUserMuted(client.User), isYou);
- }
- }
-
- message += Messages.PlayerListIconInformation;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
-
- return message;
- }
-
- public static string BuildBuddyList(User user)
- {
- string message = Messages.BuddyListHeader;
- foreach (int id in user.Friends.List.ToArray())
- {
- try
- {
- User friend = GameServer.GetUserById(id);
- if (friend.Stealth)
- continue;
-
- int icon = friend.GetPlayerListIcon();
- string iconFormat = "";
- if (icon != -1)
- iconFormat = Messages.FormatIconFormat(icon);
-
- message += Messages.FormatOnlineBuddyEntry(iconFormat, friend.Username, friend.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - friend.LoginTime).TotalMinutes)), friend.X, friend.Y);
-
- }
- catch (KeyNotFoundException) { }
-
- }
- message += Messages.BuddyListOfflineBuddys;
-
-
- foreach (int id in user.Friends.List.ToArray())
- {
- if (GameServer.IsUserOnline(id))
- continue;
-
- string username = Database.GetUsername(id);
- int minutes = Convert.ToInt32(Math.Round(DateTime.UtcNow.Subtract(Helper.UnixTimeStampToDateTime(Database.GetPlayerLastLogin(id))).TotalMinutes));
-
- message += Messages.FormatOfflineBuddyEntry(username, id, minutes);
- }
-
- message += Messages.PlayerListIconInformation;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
-
- return message;
- }
-
- public static string BuildBreedViewerLibary(HorseInfo.Breed breed)
- {
- string message = Messages.FormatHorseBreedPreview(breed.Name, breed.Description);
- message += Messages.BreedViewerMaximumStats;
- message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Speed * 2, 0, 0, breed.BaseStats.Speed * 2);
- message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Strength * 2, 0, 0, breed.BaseStats.Strength * 2);
- message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Conformation * 2, 0, 0, breed.BaseStats.Conformation * 2);
- message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Agility * 2, 0, 0, breed.BaseStats.Agility * 2);
- message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Endurance * 2, 0, 0, breed.BaseStats.Endurance * 2);
- message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Inteligence * 2, 0, 0, breed.BaseStats.Inteligence * 2);
- message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Personality * 2, 0, 0, breed.BaseStats.Personality * 2);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildHorseBreedListLibary()
- {
- string message = "";
- foreach (HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
- {
- if (breed.Swf == "")
- continue;
- if (breed.Type == "horse")
- message += Messages.FormatHorseBreed(breed.Name, breed.Id);
- else
- message += Messages.FormatHorseRelative(breed.Name, breed.Id);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildNpcSearch(string search)
- {
- List foundNpcs = new List();
- foreach (Npc.NpcEntry npc in Npc.NpcList)
- {
- if (npc.Name.ToLower().Contains(search.ToLower()))
- {
- if (npc.LibarySearchable)
- {
- if (foundNpcs.Count >= 5)
- break;
- foundNpcs.Add(npc);
- }
- else
- {
- continue;
- }
- }
- else
- {
- continue;
- }
- }
- string message = Messages.LibaryFindNpcSearchNoResults;
- if (foundNpcs.Count >= 1)
- {
- message = Messages.LibaryFindNpcSearchResultsHeader;
- foreach (Npc.NpcEntry npc in foundNpcs)
- {
- string searchResult = Messages.FormatNpcSearchResult(npc.Name, npc.ShortDescription, npc.X, npc.Y);
- Logger.DebugPrint(searchResult);
- message += searchResult;
- }
- }
- if (foundNpcs.Count >= 5)
- {
- message += Messages.LibaryFindNpcLimit5;
- }
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
-
- }
-
- public static string BuildFindNpcMenu()
- {
- string message = Messages.LibaryFindNpc;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildWhisperSearchResults(WildHorse[] results)
- {
- string message = Messages.WhispererSearchingAmoungHorses;
- if (results.Length <= 0)
- {
- message = Messages.WhispererNoneFound;
- }
- else
- {
- List locations = new List();
- foreach (WildHorse result in results)
- {
- Point location = new Point();
- location.X = result.X;
- location.Y = result.Y;
- locations.Add(location);
- }
- string mapxys = Messages.FormatMapLocations(locations.ToArray());
- message += Messages.FormatWhispererHorseFoundMeta(mapxys);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- private static string buildFountain()
- {
- return Messages.FountainMeta;
- }
- private static string buildPond(User user)
- {
- string message = Messages.PondHeader;
- if (!user.Inventory.HasItemId(Item.FishingPole))
- {
- message += Messages.PondNoFishingPole;
- }
- else if (!user.Inventory.HasItemId(Item.Earthworm))
- {
- message += Messages.PondNoEarthWorms;
- }
- else
- {
- message += Messages.PondGoFishing;
- }
- message += Messages.PondDrinkHereIfSafe;
- foreach (HorseInstance horse in user.HorseInventory.HorseList)
- {
- message += Messages.FormatPondDrinkHorseFormat(horse.Name, horse.BasicStats.Thirst, 1000, horse.RandomId);
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildMudHole(User user)
- {
- string message = "";
- if (user.HorseInventory.HorseList.Length > 0)
- {
- int rngHorseIndex = GameServer.RandomNumberGenerator.Next(0, user.HorseInventory.HorseList.Length);
- HorseInstance horse = user.HorseInventory.HorseList[rngHorseIndex];
- horse.BasicStats.Groom = 0;
- message += Messages.FormatMudHoleGroomDestroyed(horse.Name);
- }
- else
- {
- message += Messages.MudHoleNoHorses;
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildPassword()
- {
- return Messages.PasswordEntry + Messages.ExitThisPlace + Messages.MetaTerminator;
- }
-
- private static string buildHorseWhisperer()
- {
- string message = "";
- foreach (HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
- {
- if (breed.Swf == "")
- continue;
- if (breed.SpawnInArea == "none")
- continue;
- message += Messages.FormatWhispererHorseBreedButton(breed.Name, breed.Id);
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
-
- private static string buildBank(User user)
- {
- double moneyMade = 0;
- if (user.BankInterest > user.BankMoney)
- {
- moneyMade = user.BankInterest - user.BankMoney;
- if (moneyMade > 100000000)
- moneyMade = 100000000;
- user.BankMoney += moneyMade;
-
- }
-
- string message = "";
- moneyMade = Math.Floor(moneyMade);
- if (moneyMade > 0)
- message += Messages.FormatBankIntrestMadeMeta(Convert.ToUInt64(moneyMade));
-
- message += Messages.FormatBankCarryingMeta(user.Money, Convert.ToUInt64(Math.Floor(user.BankMoney)));
- message += Messages.BankWhatToDo;
- message += Messages.FormatBankOptionsMeta(user.Money, Convert.ToUInt64(Math.Floor(user.BankMoney)));
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
-
-
- return message;
- }
- public static string BuildMinigamePlayers()
- {
- string message = Messages.CityHallTop25MinigamePlayers;
- int placing = 1;
- foreach (int userId in Database.GetMinigamePlayers())
- {
- string username = Database.GetUsername(userId);
- int totalMinigames = Database.GetPlayerTotalMinigamesPlayed(userId);
-
- message += Messages.FormatCityHallTopMinigamePlayers(placing, totalMinigames, username);
- placing++;
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildMostExperienedHoses()
- {
- string message = Messages.CityHallTop25ExperiencedHorses;
-
- int placing = 1;
- foreach (HorseInstance horse in Database.GetMostExperiencedHorses())
- {
- message += Messages.FormatCityHallTopExperiencedHorses(placing, horse.BasicStats.Experience, Database.GetUsername(horse.Owner), horse.Name);
- placing++;
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildExperiencedPlayers()
- {
- string message = Messages.CityHallTop25ExperiencedPlayers;
- int placing = 1;
- foreach (int userId in Database.GetExperiencedPlayers())
- {
- string username = Database.GetUsername(userId);
- int exp = Database.GetExperience(userId);
-
- message += Messages.FormatCityHallTopExperiencedPlayersEntry(placing, exp, username);
- placing++;
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildAdventurousPlayers()
- {
- string message = Messages.CityHallTop25AdventurousPlayers;
- int placing = 1;
- foreach (int userId in Database.GetAdventurousPlayers())
- {
- string username = Database.GetUsername(userId);
- int questPoints = Database.GetPlayerQuestPoints(userId);
-
- message += Messages.FormatCityHallTopAdventurousPlayersEntry(placing, questPoints, username);
- placing++;
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildMostSpoiledHorses()
- {
- string message = Messages.CityHallTop100SpoiledHorses;
- foreach(HorseInstance horse in Database.GetMostSpoiledHorses())
- {
- message += Messages.FormatCityHallTopSpoiledHorseEntry(horse.Spoiled, Database.GetUsername(horse.Owner), horse.Name);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildRichestPlayers()
- {
- string message = Messages.CityHallTop25Players;
- int placing = 1;
- foreach(int userId in Database.GetRichestPlayers())
- {
- string username = Database.GetUsername(userId);
- double totalMoney = Math.Floor(Database.GetPlayerMoney(userId) + Database.GetPlayerBankMoney(userId));
-
- message += Messages.FormatCityHallTopPlayerEntry(placing, totalMoney, username);
- placing++;
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildMultiHorses(User user, string swf)
- {
- string message = Messages.OtherPlayersHere;
- Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
- room.Join(user);
-
- foreach (User userOnTile in room.JoinedUsers)
- {
- if (userOnTile.Id == user.Id)
- continue;
-
- message += Messages.FormatMultiroomParticipent(userOnTile.Username);
- }
-
- message += Messages.R1;
-
- message += Messages.MultiHorseSelectOneToJoinWith;
- int placing = 1;
- foreach (HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToArray())
- {
- if (horse.Leaser > 0)
- continue;
-
- HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED, user);
- HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH, user);
- HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION, user);
- HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY, user);
- HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE, user);
- HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE, user);
- HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY, user);
-
- message += Messages.FormatMultiHorses(placing, horse.Name, horse.Breed.Name, swf + ".swf?ID=" + horse.RandomId + "&PL=" + user.Username + "&SP=" + speedStat.Total + "&ST=" + strengthStat.Total + "&CO=" + conformationStat.Total + "&AG=" + agilityStat.Total + "&EN=" + enduranceStat.Total + "&IN=" + inteligenceStat.Total + "&PE=" + personalityStat.Total + "&");
- }
-
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
-
- }
- private static string buildHorseGame(User user, string swf)
- {
- string message = Messages.HorseGamesSelectHorse;
- int placing = 1;
- foreach(HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToArray())
- {
- if (horse.Leaser > 0)
- continue;
-
-
- HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED, user);
- HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH, user);
- HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION, user);
- HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY, user);
- HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE, user);
- HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE, user);
- HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY, user);
-
-
- message += Messages.FormatHorseGamesEntry(placing, horse.Name, swf + ".swf?ID=" + horse.RandomId + "&SP=" + speedStat.Total + "&ST=" + strengthStat.Total + "&CO=" + conformationStat.Total + "&AG=" + agilityStat.Total + "&EN=" + enduranceStat.Total + "&IN=" + inteligenceStat.Total + "&PE=" + personalityStat.Total + "&");
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildMostValuedRanches()
- {
- string message = Messages.CityHallTop25Ranches;
- int total = 1;
-
- foreach(Ranch ranch in Ranch.Ranches.OrderByDescending(o => o.InvestedMoney).ToList())
- {
- if (ranch.OwnerId == -1)
- continue;
-
-
- message += Messages.FormatCityHallTopRanchEntry(total, Database.GetUsername(ranch.OwnerId), ranch.InvestedMoney, Messages.FormatMapLocation(ranch.X, ranch.Y));
-
- if (total > 26)
- break;
-
- total++;
- }
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildTopAutoSellHorses()
- {
- string message = Messages.CityHallCheapestAutoSells;
- HorseInstance[] horses = Database.GetCheapestHorseAutoSell();
- foreach(HorseInstance horse in horses)
- {
- message += Messages.FormatCityHallCheapAutoSellEntry(horse.AutoSell, Database.GetUsername(horse.Owner), horse.Name, horse.Color, horse.Breed.Name, horse.BasicStats.Experience);
- }
- message += Messages.CityHallMostExpAutoSells;
- HorseInstance[] horsesExp = Database.GetBiggestExpAutoSell();
- foreach (HorseInstance horse in horsesExp)
- {
- message += Messages.FormatCityHallBestExpAutoSellEntry(horse.BasicStats.Experience, Database.GetUsername(horse.Owner), horse.Name, horse.AutoSell, horse.Color, horse.Breed.Name);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildRanchEdit(Ranch ranch)
- {
- return Messages.FormatRanchEditDescriptonMeta(ranch.Title, ranch.Description) + Messages.BackToMap + Messages.MetaTerminator;
- }
- public static string BuildRanchSellConfirmation()
- {
- return Messages.RanchSellAreYouSure + Messages.BackToMap + Messages.MetaTerminator;
- }
- public static string BuildRanchUpgrade(Ranch ranch)
- {
- string message = "";
- Ranch.RanchUpgrade currentUpgrade = ranch.GetRanchUpgrade();
- bool canUpgrade = Ranch.RanchUpgrade.RanchUpgradeExists(currentUpgrade.Id + 1);
-
- string upgrade = "";
- if(canUpgrade)
- {
- Ranch.RanchUpgrade nextUpgrade = Ranch.RanchUpgrade.GetRanchUpgradeById(currentUpgrade.Id + 1);
- upgrade = Messages.FormatNextUpgrade(nextUpgrade.Title, nextUpgrade.Cost);
- }
- message += Messages.FormatCurrentUpgrade(currentUpgrade.Title, currentUpgrade.Description, upgrade, ranch.GetSellPrice());
- message += Messages.BackToMap;
- return message;
- }
- public static string BuildRanchBuildingsAvalible(Ranch ranch, int slot)
- {
- string message = "";
- if(ranch.GetBuilding(slot-1) != null)
- {
- Ranch.RanchBuilding building = ranch.GetBuilding(slot - 1);
- message += Messages.FormatBuildingAlreadyPlaced(building.Title, building.Id, building.GetTeardownPrice());
- }
- else
- {
- message += Messages.RanchCanBuildOneOfTheFollowingInThisSpot;
- foreach (Ranch.RanchBuilding building in Ranch.RanchBuilding.RanchBuildings)
- {
- message += Messages.FormatBuildingEntry(building.Title, building.Cost, building.Id);
- }
- }
-
- message += Messages.BackToMap;
- return message;
- }
- public static string BuildRanchBuilding(Ranch ranch, Ranch.RanchUpgrade upgrade)
- {
- string message = "";
- message += Messages.FormatViewBuilding(upgrade.Title, upgrade.Description);
-
- message += Messages.BackToMap;
- return message;
- }
- public static string BuildRanchBuilding(Ranch ranch, Ranch.RanchBuilding building)
- {
- string message = "";
- message += Messages.FormatViewBuilding(building.Title, building.Description);
- if(building.Id == 1 || building.Id == 10 || building.Id == 11) // Barn, Big Barn, Gold Barn
- {
- int ranchOwner = ranch.OwnerId; // TOCTOU BAD
-
- if (ranchOwner != -1)
- {
- string horsesList = buildHorseListIndependantlyOfUserInstance(ranchOwner);
- message += Messages.FormatBarn(horsesList);
- }
- }
- message += Messages.BackToMap;
- return message;
- }
- private static string buildRanch(User user, int ranchId)
- {
-
- string message = "";
-
- if(!Ranch.RanchExists(ranchId)) // Ghost ranchs exist.. apparently?
- {
- user.MajorPriority = false;
- return BuildMetaInfo(user, user.X, user.Y);
- }
-
- Ranch ranch = Ranch.GetRanchById(ranchId);
- bool mine = (ranch.OwnerId == user.Id);
- string swfModule = ranch.GetSwf(mine);
-
- byte[] moduleSwf = PacketBuilder.CreateSwfModule(swfModule, PacketBuilder.PACKET_SWF_MODULE_FORCE);
- user.Client.SendPacket(moduleSwf);
-
- if (mine) // This is My DS.
- {
- GameServer.CheckMail(user);
- user.DoRanchActions();
-
- string title = ranch.Title;
- if (title == "" || title == null)
- title = Messages.RanchDefaultRanchTitle;
- message += Messages.FormatRanchTitle(Database.GetUsername(ranch.OwnerId), title);
- message += Messages.BuildingRestHere;
-
- int numbBarns = ranch.GetBuildingCount(1);
- int numbWaterWell = ranch.GetBuildingCount(2);
- int numbGrainSilo = ranch.GetBuildingCount(3);
- int numbTrainingPen = ranch.GetBuildingCount(6);
- int numbWagon = ranch.GetBuildingCount(7);
- int numbWindmill = ranch.GetBuildingCount(8);
- int numbGarden = ranch.GetBuildingCount(9);
- int numbBigBarn = ranch.GetBuildingCount(10);
- int numbGoldBarn = ranch.GetBuildingCount(11);
-
-
- if (numbBarns > 0)
- message += Messages.FormatBuildingBarn(numbBarns, numbBarns * 4);
- if (numbBigBarn > 0)
- message += Messages.FormatBuildingBarn(numbBigBarn, numbBigBarn * 8);
- if (numbGoldBarn > 0)
- message += Messages.FormatBuildingBarn(numbGoldBarn, numbGoldBarn * 12);
- if (numbBarns > 0 || numbBigBarn > 0 || numbGoldBarn > 0)
- message += Messages.RanchHorsesFullyRested;
- if (numbWaterWell > 0)
- message += Messages.BuildingWaterWell;
- if (numbGrainSilo > 0)
- message += Messages.BuildingGrainSilo;
- if (numbWindmill > 0)
- message += Messages.FormatBuildingWindmill(numbWindmill, 5000 * numbWindmill);
- if (numbGarden > 0)
- message += Messages.BuildingVegatableGarden;
- if (numbWagon > 0)
- message += Messages.BuildingWagon;
- if (numbTrainingPen > 0)
- message += Messages.BuildingTrainingPen;
-
- message += Messages.FormatRanchYoursDescription(ranch.Description);
- }
- else if(ranch.OwnerId == -1) // No mans sky
- {
-
- message += Messages.FormatRanchUnownedMeta(ranch.Value);
- if (user.OwnedRanch == null)
- {
- if (user.Subscribed)
- message += Messages.RanchYouCouldPurchaseThisRanch;
- else
- message += Messages.RanchSubscribersOnly;
- }
- else
- {
- message += Messages.RanchYouAllreadyOwnARanch;
- }
- }
- else
- {
- string title = ranch.Title;
- if (title == "" || title == null)
- title = Messages.RanchDefaultRanchTitle;
-
- message += Messages.FormatRanchTitle(Database.GetUsername(ranch.OwnerId), title);
- message += Messages.FormatRanchDescOthers(ranch.Description);
- }
-
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
-
- return message;
- }
- public static string BuildAuctionHorseList(User user)
- {
- string message = Messages.AuctionListHorse;
- foreach(HorseInstance horse in user.HorseInventory.HorseList)
- {
- if (horse.Leaser > 0)
- continue;
- if (horse.Category != "TRADING")
- continue;
-
- bool tacked = (horse.Equipment.Saddle != null || horse.Equipment.SaddlePad != null || horse.Equipment.Bridle != null || horse.Equipment.Companion != null);
-
- message += Messages.FormatAuctionHorseListEntry(horse.Name, tacked, horse.RandomId);
- }
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildAuction(User user, Auction auction)
- {
- Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
- room.Join(user);
-
- string message = "";
- message += Messages.AuctionsRunning;
- foreach(Auction.AuctionEntry entry in auction.AuctionEntries.ToArray())
- {
- message += Messages.FormatAuctionHorseEntry(Database.GetUsername(entry.OwnerId), entry.Horse.Color, entry.Horse.Breed.Name, entry.Horse.Gender, entry.Horse.BasicStats.Experience, entry.Completed ? "" : Messages.FormatAuctionViewHorseButton(entry.Horse.RandomId));
- if (!entry.Completed)
- message += Messages.FormatAuctionGoingTo(entry.TimeRemaining, Database.GetUsername(entry.HighestBidder), entry.HighestBid, entry.RandomId);
- else
- {
- if (entry.HighestBidder == entry.OwnerId)
- message += Messages.AuctionNotSold;
- else
- message += Messages.FormatAuctionSoldTo(Database.GetUsername(entry.HighestBidder), entry.HighestBid);
- }
- }
- User[] users = room.JoinedUsers.ToArray();
- List usernames = new List();
- foreach(User userInst in users)
- {
- usernames.Add(userInst.Username);
- }
- message += Messages.FormatAuctionPlayersHere(string.Join(", ", usernames.ToArray()));
- message += Messages.AuctionAHorse;
-
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildWorkshop(User user)
- {
- Workshop shop = Workshop.GetWorkshopAt(user.X, user.Y);
- string message = "";
- foreach (Workshop.CraftableItem craft in shop.CraftableItems)
- {
- Item.ItemInformation itmInfo = Item.GetItemById(craft.GiveItemId);
- message += Messages.FormatWorkshopCraftEntry(itmInfo.IconId, itmInfo.Name, craft.MoneyCost, itmInfo.Id, craft.Id);
- // Get requirements
- List Requirements = new List();
- foreach (Workshop.RequiredItem reqItem in craft.RequiredItems)
- {
-
- Item.ItemInformation requiredItemInfo = Item.GetItemById(reqItem.RequiredItemId);
- string requirementTxt;
- if (reqItem.RequiredItemCount <= 1)
- requirementTxt = Messages.FormatWorkshopRequireEntry(reqItem.RequiredItemCount, requiredItemInfo.Name);
- else
- requirementTxt = Messages.FormatWorkshopRequireEntry(reqItem.RequiredItemCount, requiredItemInfo.PluralName);
- Requirements.Add(requirementTxt);
- }
- message += Messages.FormatWorkshopRequirements(string.Join(Messages.WorkshopAnd, Requirements.ToArray()));
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildGroomer(User User, Groomer groomer)
- {
- string message = "";
- int totalPrice = 0;
- int count = 0;
- foreach(HorseInstance horse in User.HorseInventory.HorseList)
- {
- message += Messages.FormatHorseGroomCurrentlyAt(horse.Name, horse.BasicStats.Groom, 1000);
- if(horse.BasicStats.Groom < groomer.Max)
- {
- int price = groomer.CalculatePrice(horse.BasicStats.Groom);
- totalPrice += price;
- count++;
- message += Messages.FormatGroomerApplyService(price, horse.RandomId);
- }
- }
- message += Messages.FormatGroomerApplyAllService(count, totalPrice);
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildVet(User user, Vet vet)
- {
- string message = "";
- int totalPrice = 0;
-
-
- foreach (HorseInstance horse in user.HorseInventory.HorseList)
- {
- message += Messages.FormatVetServiceHorseMeta(horse.Name, horse.BasicStats.Health, 1000);
-
- if (horse.BasicStats.Health >= 1000)
- message += Messages.VetSerivcesNotNeeded;
- else
- {
- int price = vet.CalculatePrice(horse.BasicStats.Health);
- totalPrice += price;
-
- message += Messages.FormatVetApplyServiceMeta(price, horse.RandomId);
- }
-
- }
- if (user.HorseInventory.HorseList.Length > 0)
- message += Messages.FormatVetApplyAllServiceMeta(totalPrice);
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildBarn(User user, Barn barn)
- {
- string message = "";
- int totalPrice = 0;
- foreach (HorseInstance horse in user.HorseInventory.HorseList)
- {
- message += Messages.FormatBarnHorseStatus(horse.Name, horse.BasicStats.Tiredness, horse.BasicStats.Hunger, horse.BasicStats.Thirst);
-
- int price = barn.CalculatePrice(horse.BasicStats.Tiredness, horse.BasicStats.Hunger, horse.BasicStats.Thirst);
- if(price > 0)
- {
- totalPrice += price;
- message += Messages.FormatBarnLetHorseRelax(price, horse.RandomId);
- }
- else
- {
- message += Messages.BarnHorseMaxed;
- }
-
- }
- message += Messages.FormatBarnLetAllHorsesReleax(totalPrice);
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildFarrier(User user, Farrier farrier)
- {
- string message = "";
- int totalPrice = 0;
- int maxShoes = 1000;
- foreach (HorseInstance horse in user.HorseInventory.HorseList)
- {
- message += Messages.FormatFarrierCurrentShoes(horse.Name, horse.BasicStats.Shoes, maxShoes);
- if (horse.BasicStats.Shoes < farrier.IronShoesAmount)
- message += Messages.FormatFarrierApplyIron(farrier.IronCost, farrier.IronShoesAmount, horse.RandomId);
-
- if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
- {
- totalPrice += farrier.SteelCost;
- message += Messages.FormatFarrierApplySteel(farrier.SteelCost, farrier.SteelShoesAmount, horse.RandomId);
- }
-
- }
- if(totalPrice > 0)
- message += Messages.FormatFarrierApplySteelToAll(totalPrice, farrier.SteelShoesAmount);
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildRiddlerRiddle(User user)
- {
- string message = "";
- if (Riddler.HasCompletedAllRiddles(user)) {
- message = Messages.RiddlerAnsweredAll;
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- else
- {
- Riddler riddle = Riddler.GetRandomRiddle(user);
- user.LastRiddle = riddle;
-
- message += Messages.FormatRiddlerRiddle(riddle.Riddle);
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- }
-
-
- public static string BuildHorseEscapedMessage()
- {
- string message = Messages.HorseEvadedCapture;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildHorseEscapedAnyway()
- {
- string message = Messages.HorseEscapedAnyway;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildHorseCaughtMessage()
- {
- string message = Messages.YouCapturedTheHorse;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildAbuseReportPage()
- {
- string reportReasons = "";
- foreach(AbuseReport.ReportReason reason in AbuseReport.ReportReasons)
- {
- reportReasons += Messages.FormatAbuseReportReason(reason.Id, reason.Name);
- }
- return Messages.FormatAbuseReportMetaPage(reportReasons);
- }
- private static string buildHorseList(User user, bool youView=true)
- {
- string message = "";
- int i = 1;
- foreach (HorseInfo.Category category in HorseInfo.HorseCategories)
- {
- HorseInstance[] horsesInCategory = user.HorseInventory.GetHorsesInCategory(category).OrderBy(o => o.Name).ToArray();
- if (horsesInCategory.Length > 0)
- {
- if (youView)
- message += category.Meta;
- else
- message += category.MetaOthers;
- foreach (HorseInstance instance in horsesInCategory)
- {
- message += Messages.FormatHorseEntry(i, instance.Name, instance.Breed.Name, instance.RandomId, instance.AutoSell > 0);
- i++;
- }
- }
- }
- return message;
-
- }
- public static string BuildHorseInventory(User user)
- {
- string message = Messages.FormatHorseHeader(user.MaxHorses, user.HorseInventory.HorseList.Length);
-
- message += buildHorseList(user);
- message += Messages.ViewBaiscStats;
- message += Messages.ViewAdvancedStats;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildPlayerListMenu(User user)
- {
- string message = "";
-
- int friendsOnline = 0;
- foreach(int friendId in user.Friends.List)
- {
- if (GameServer.IsUserOnline(friendId))
- friendsOnline++;
- }
-
- message += Messages.PlayerListHeader;
- message += Messages.PlayerListSelectFromFollowing;
- message += Messages.FormatPlayerBuddyList(friendsOnline);
- message += Messages.PlayerListOfNearby;
- message += Messages.FormatPlayerList(GameServer.GetNumberOfPlayers() - 1);
- message += Messages.PlayerListOfPlayersAlphabetically;
-
- message += Messages.FormatMapAllBuddiesList(Messages.FormatMapLocations(GameServer.GetAllBuddyLocations(user)));
- message += Messages.FormatMapAllPlayersList(Messages.FormatMapLocations(GameServer.GetAllPlayerLocations(user)));
-
- message += Messages.PlayerListAbuseReport;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
-
- return message;
- }
- public static string BuildMailLetter(Mailbox.Mail mailMessage, int itemRandomId)
- {
- DateTime time = Helper.UnixTimeStampToDateTime(mailMessage.Timestamp);
- string amOrPm = "am";
- string[] months = new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
- string minutes = time.Minute.ToString();
- if (minutes.Length <= 1)
- minutes = "0" + minutes;
- int hours = time.Hour;
- if (hours == 0)
- {
- amOrPm = "am";
- hours = 12;
- }
- if (hours > 12)
- {
- hours -= 12;
- amOrPm = "pm";
- }
-
-
- string date = months[time.Month-1] + " " + time.Day + ", " + time.Year + " " + hours + ":" + minutes + amOrPm;
- string message = Messages.FormatMailReadMessage(Database.GetUsername(mailMessage.FromUser), date, mailMessage.Subject, mailMessage.Message, itemRandomId);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildMailList(User user, InventoryItem mailMessageForPlayer)
- {
- string message = Messages.MailSelectFromFollowing;
- foreach(ItemInstance inst in mailMessageForPlayer.ItemInstances)
- {
- Mailbox.Mail mail = user.MailBox.GetMessageByRandomId(inst.Data);
- message += Messages.FormatMailEntry(mail.Subject, Database.GetUsername(mail.FromUser), inst.RandomId);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildInventoryInfo(PlayerInventory inv)
- {
- string message = "";
- message += Messages.FormatPlayerInventoryHeaderMeta(inv.Count, inv.BaseUser.MaxItems);
- InventoryItem[] items = inv.GetItemList();
- foreach(InventoryItem item in items)
- {
- Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
- string title = itemInfo.Name;
- if (item.ItemInstances.Length > 1 && itemInfo.PluralName != "")
- title = itemInfo.PluralName;
-
-
- message += Messages.FormatPlayerInventoryItemMeta(itemInfo.IconId, item.ItemInstances.Length, title);
-
- int randomId = item.ItemInstances[0].RandomId;
- if (itemInfo.Type != "QUEST" && itemInfo.Type != "TEXT" && !(itemInfo.Id == Item.DorothyShoes || itemInfo.Id == Item.Telescope) && World.CanDropItems(inv.BaseUser.X, inv.BaseUser.Y))
- message += Messages.FormatItemDropButton(randomId);
-
- if (itemInfo.Id == Item.DorothyShoes || itemInfo.Id == Item.Telescope)
- message += Messages.FormatItemUseButton(randomId);
-
- if (itemInfo.Id == Item.Present)
- message += Messages.FormatItemOpenButton(randomId);
-
- if (itemInfo.Type == "CLOTHES" || itemInfo.Type == "JEWELRY")
- message += Messages.FormatWearButton(randomId);
-
- if (itemInfo.Type == "TEXT")
- message += Messages.FormatItemReadButton(item.ItemId);
-
- if (itemInfo.Type == "PLAYERFOOD")
- message += Messages.FormatItemConsumeButton(randomId);
-
- if (Item.IsThrowable(itemInfo.Id))
- message += Messages.FormatItemThrowButton(itemInfo.Id);
-
- message += Messages.FormatItemInformationButton(randomId);
- message += Messages.R1;
- }
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildHorseFeedMenu(HorseInstance horse, User user)
- {
- string message = "";
- message += Messages.FormatHorseCurrentStatus(horse.Name);
- message += Messages.FormatHorseBasicStat(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
- message += Messages.HorseHoldingHorseFeed;
- foreach(InventoryItem item in user.Inventory.GetItemList())
- {
- Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo();
- bool isHorseFood = false;
- if (itemInfo.Effects.Length >= 2)
- isHorseFood = (itemInfo.Effects[1].EffectsWhat == "MOOD" && itemInfo.Effects[0].EffectsWhat == "HUNGER");
- if (itemInfo.Type == "HORSEFOOD" || isHorseFood)
- {
- message += Messages.FormatHorseFeedEntry(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, item.ItemInstances[0].RandomId);
- }
-
- }
- message += Messages.BackToHorse;
- return message;
- }
-
- public static string BuildAutoSellMenu(HorseInstance horse)
- {
- string message = "";
- message += Messages.FormatAutoSellMenu(horse.AutoSell);
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
-
-
- public static string BuildHorseReleaseConfirmationMessage(HorseInstance horse)
- {
- string message = Messages.FormatHorseAreYouSureMessage(horse.RandomId);
- message += Messages.BackToMapHorse;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildHorseCompanionEquipMenu(HorseInstance horse, User user)
- {
- string message = "";
- message += Messages.FormatHorseCompanionMenuHeader(horse.Name);
- if (horse.Equipment.Companion != null)
- message += Messages.FormatHorseCompanionSelected(horse.Equipment.Companion.IconId, horse.Equipment.Companion.Name);
- message += Messages.HorseCompanionMenuCurrentlyAvalibleCompanions;
- foreach (InventoryItem item in user.Inventory.GetItemList())
- {
- Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo();
- if(itemInfo.Type == "COMPANION")
- {
- message += Messages.FormatHorseCompanionOption(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, item.ItemId);
- }
- }
- message += Messages.BackToHorse;
- return message;
- }
-
- public static string BuildAllBasicStats(User user)
- {
- string message = Messages.HorseAllBasicStats;
- foreach(HorseInstance horse in user.HorseInventory.HorseList)
- {
- message += Messages.FormaHorseAllBasicStatsEntry(horse.Name, horse.Color, horse.Breed.Name, horse.Gender, horse.BasicStats.Experience);
- message += Messages.FormatHorseBasicStat(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildHorseDescriptionEditMeta(HorseInstance horse)
- {
- string message = Messages.FormatDescriptionEditMeta(horse.Name, horse.Description);
- message += Messages.BackToHorse;
- return message;
- }
- public static string BuildHorseInformation(HorseInstance horse, User user)
- {
- bool isMyHorse = horse.Owner == user.Id;
- user.HorseWindowOpen = true;
-
- string message = "";
- if (isMyHorse)
- message += Messages.FormatHorseNameYours(horse.Name);
- else
- message += Messages.FormatHorseNameOthers(horse.Name, Database.GetUsername(horse.Owner));
-
- message += Messages.FormatHorseDescription(horse.Description);
- message += Messages.FormatHorseHandsHigh(horse.Color, horse.Breed.Name, horse.Gender, HorseInfo.CalculateHands(horse.AdvancedStats.Height, false));
- message += Messages.FormatHorseExperience(horse.BasicStats.Experience);
-
-
- if (horse.TrainTimer > 0)
- message += Messages.FormatTrainableIn(horse.TrainTimer);
- else
- message += Messages.HorseIsTrainable;
-
- if(horse.Leaser != 0)
- {
- message += Messages.FormatHorseIsLeased(horse.LeaseTime);
- }
-
- if (isMyHorse)
- {
- if (user.CurrentlyRidingHorse == null)
- message += Messages.FormatMountButton(horse.RandomId);
- else
- message += Messages.FormatDisMountButton(horse.RandomId);
-
-
- message += Messages.FormatFeedButton(horse.RandomId);
- if (horse.Leaser == 0)
- {
- message += Messages.FormatTackButton(horse.RandomId);
- }
- message += Messages.FormatPetButton(horse.RandomId);
- if (horse.Leaser == 0)
- {
- message += Messages.FormatProfileButton(horse.RandomId);
-
- if (horse.Equipment.Saddle == null && horse.Equipment.SaddlePad == null && horse.Equipment.Bridle == null && horse.Equipment.Companion == null)
- {
- string autoSellMessage = Messages.HorseNoAutoSell;
- if (horse.AutoSell > 0)
- autoSellMessage = Messages.FormatAutoSellPrice(horse.AutoSell);
- message += Messages.FormatAutoSell(autoSellMessage);
- if (horse.AutoSell > 0)
- message += Messages.HorseChangeAutoSell;
- else
- message += Messages.HorseSetAutoSell;
- }
- else
- {
- message += Messages.HorseCantAutoSellTacked;
- }
- }
- else
- {
- message += Messages.R1;
- }
- }
- else
- {
- if (horse.AutoSell > 0)
- message += Messages.FormatAutoSellOthers(horse.AutoSell);
- }
-
-
- if (horse.Leaser == 0)
- {
-
- if (isMyHorse)
- message += Messages.FormatHorseCategory(horse.Category, Messages.HorseMarkAsCategory);
- else
- message += Messages.FormatHorseCategory(horse.Category, "");
- }
-
- message += Messages.HorseStats;
-
- // Energy == Tiredness
- message += Messages.FormatHorseBasicStat(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
- message += Messages.HorseTacked;
-
- if (horse.Equipment.Saddle != null)
- message += Messages.FormatHorseTackEntry(horse.Equipment.Saddle.IconId, horse.Equipment.Saddle.Name, horse.Equipment.Saddle.Id);
-
- if (horse.Equipment.SaddlePad != null)
- message += Messages.FormatHorseTackEntry(horse.Equipment.SaddlePad.IconId, horse.Equipment.SaddlePad.Name, horse.Equipment.SaddlePad.Id);
- if (horse.Equipment.Bridle != null)
- message += Messages.FormatHorseTackEntry(horse.Equipment.Bridle.IconId, horse.Equipment.Bridle.Name, horse.Equipment.Bridle.Id);
-
- if(horse.Leaser == 0)
- {
- message += Messages.HorseCompanion;
- if (horse.Equipment.Companion != null)
- if (isMyHorse)
- message += Messages.FormatHorseCompanionEntry(horse.Equipment.Companion.IconId, horse.Equipment.Companion.Name, Messages.HorseCompanionChangeButton, horse.Equipment.Companion.Id);
- else
- message += Messages.FormatHorseCompanionEntry(horse.Equipment.Companion.IconId, horse.Equipment.Companion.Name, "", horse.Equipment.Companion.Id);
- else
- if (isMyHorse)
- message += Messages.HorseNoCompanion;
- }
-
- message += Messages.FormatHorseAdvancedStats(horse.Spoiled, horse.MagicUsed);
-
- HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED);
- HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH);
- HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION);
- HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY);
- HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE);
- HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE);
- HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY);
-
- message += Messages.FormatHorseAdvancedStat(speedStat.BreedValue, speedStat.CompanionOffset, speedStat.TackOffset, speedStat.MaxValue);
- message += Messages.FormatHorseAdvancedStat(strengthStat.BreedValue, strengthStat.CompanionOffset, strengthStat.TackOffset, strengthStat.MaxValue);
- message += Messages.FormatHorseAdvancedStat(conformationStat.BreedValue, conformationStat.CompanionOffset, conformationStat.TackOffset, conformationStat.MaxValue);
- message += Messages.FormatHorseAdvancedStat(agilityStat.BreedValue, agilityStat.CompanionOffset, agilityStat.TackOffset, agilityStat.MaxValue);
- message += Messages.FormatHorseAdvancedStat(enduranceStat.BreedValue, enduranceStat.CompanionOffset, enduranceStat.TackOffset, enduranceStat.MaxValue);
- message += Messages.FormatHorseAdvancedStat(inteligenceStat.BreedValue, inteligenceStat.CompanionOffset, inteligenceStat.TackOffset, inteligenceStat.MaxValue);
- message += Messages.FormatHorseAdvancedStat(personalityStat.BreedValue, personalityStat.CompanionOffset, personalityStat.TackOffset, personalityStat.MaxValue);
-
- message += Messages.FormatHorseBreedDetails(horse.Breed.Name, horse.Breed.Description);
- message += Messages.FormatHorseHeight(HorseInfo.CalculateHands(horse.Breed.BaseStats.MinHeight, false), HorseInfo.CalculateHands(horse.Breed.BaseStats.MaxHeight, false));
-
- message += Messages.FormatPossibleColors(horse.Breed.Colors);
- if (horse.Leaser == 0)
- {
- if (isMyHorse)
- {
- bool canRelease = true;
- if (World.InTown(user.X, user.Y))
- canRelease = false;
-
-
- if (World.InSpecialTile(user.X, user.Y))
- {
- World.SpecialTile tile = World.GetSpecialTile(user.X, user.Y);
- if (tile.Code != null)
- canRelease = false;
- }
-
- if (canRelease)
- message += Messages.FormatHorseReleaseButton(horse.Breed.Type.ToUpper());
- }
- }
-
-
- message += Messages.HorseOthers;
- if (isMyHorse)
- message += buildHorseList(user);
- else
- message += buildHorseListIndependantlyOfUserInstance(horse.Owner);
-
- message += Messages.BackToMapHorse;
- message += Messages.MetaTerminator;
-
- return message;
-
- }
-
- public static string BuildAllStats(User user)
- {
- string message = Messages.HorseAllStatsHeader;
- foreach(HorseInstance horse in user.HorseInventory.HorseList)
- {
- HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED);
- HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH);
- HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION);
- HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY);
- HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE);
- HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE);
- HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY);
-
- message += Messages.FormatAllStatsEntry(horse.Name, horse.Color, horse.Breed.Name, horse.Gender, horse.BasicStats.Experience);
- message += Messages.FormatCompactedBasicStats(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
- message += Messages.FormatCompactedAdvancedStats(speedStat.Total, strengthStat.Total, conformationStat.Total, agilityStat.Total, enduranceStat.Total, inteligenceStat.Total, personalityStat.Total);
- }
- message += Messages.HorseAllStatsLegend;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildMiscStats(User user)
- {
- string message = Messages.StatMiscHeader;
- if (user.TrackedItems.TrackingItems.Length <= 0)
- message += Messages.StatMiscNoneRecorded;
- foreach(Tracking.TrackedItem trackedItem in user.TrackedItems.TrackingItems.OrderBy(o => Tracking.GetTrackedItemsStatsMenuName(o.What)))
- {
- try
- {
- message += Messages.FormatMiscStatsEntry(Tracking.GetTrackedItemsStatsMenuName(trackedItem.What), trackedItem.Count);
- }
- catch(KeyNotFoundException)
- {
- Logger.ErrorPrint(user.Username + " Has tracked items in db that dont have a value associated.");
- continue;
- }
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
-
-
- public static string BuildTackMenu(HorseInstance horse, User user)
- {
- string message = Messages.FormatTackedAsFollowedMessage(horse.Name);
- if(horse.Equipment.Saddle != null)
- message += Messages.FormatUnEquipSaddle(horse.Equipment.Saddle.IconId, horse.Equipment.Saddle.Name);
- if (horse.Equipment.SaddlePad != null)
- message += Messages.FormatUnEquipSaddlePad(horse.Equipment.SaddlePad.IconId, horse.Equipment.SaddlePad.Name);
- if (horse.Equipment.Bridle != null)
- message += Messages.FormatUnEquipBridle(horse.Equipment.Bridle.IconId, horse.Equipment.Bridle.Name);
- if (horse.Breed.Type == "llama")
- message += Messages.HorseLlamaTackInInventory;
- else if (horse.Breed.Type == "camel")
- message += Messages.HorseCamelTackInInventory;
- else
- message += Messages.HorseTackInInventory;
-
- foreach(InventoryItem item in user.Inventory.GetItemList())
- {
- Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
- if (itemInfo.Type == "TACK")
- {
- if (horse.Breed.Type == "camel" && itemInfo.GetMiscFlag(1) != 1)
- continue;
- else if (horse.Breed.Type == "llama" && itemInfo.GetMiscFlag(1) != 2)
- continue;
- else if (!(horse.Breed.Type == "llama" || horse.Breed.Type == "camel") && itemInfo.GetMiscFlag(1) != 0)
- continue;
- message += Messages.FormatHorseEquip(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, itemInfo.Id);
- }
- }
-
- message += Messages.BackToHorse;
- return message;
- }
- public static string BuildNpcChatpoint(User user, Npc.NpcEntry npc, Npc.NpcChat chatpoint)
- {
- bool hideReplys = false;
- if (chatpoint.ActivateQuestId != 0)
- {
- Quest.QuestEntry quest = Quest.GetQuestById(chatpoint.ActivateQuestId);
- user.MajorPriority = true;
-
- Quest.QuestResult result = Quest.ActivateQuest(user, quest, true);
- if (result.QuestCompleted)
- {
- if (result.SetChatpoint != -1)
- Npc.SetDefaultChatpoint(user, npc, result.SetChatpoint);
-
- if (result.GotoChatpoint != -1)
- chatpoint = Npc.GetNpcChatpoint(npc, result.GotoChatpoint);
-
- if (result.NpcChat != null && result.NpcChat.Trim() != "")
- chatpoint.ChatText = result.NpcChat;
- }
- else
- {
- if (result.GotoChatpoint != -1)
- chatpoint = Npc.GetNpcChatpoint(npc, result.GotoChatpoint);
-
- if (result.NpcChat != null && result.NpcChat.Trim() != "")
- chatpoint.ChatText = result.NpcChat;
-
- if (result.HideRepliesOnFail)
- hideReplys = true;
- }
- }
-
-
- string message = "";
- message += Messages.FormatNpcChatpoint(npc.Name, npc.ShortDescription, chatpoint.ChatText);
- foreach(Npc.NpcReply reply in chatpoint.Replies)
- {
- if(reply.RequiresQuestIdCompleted != 0)
- if (user.Quests.GetTrackedQuestAmount(reply.RequiresQuestIdCompleted) <= 0)
- continue;
- if (reply.RequiresQuestIdNotCompleted != 0)
- if (user.Quests.GetTrackedQuestAmount(reply.RequiresQuestIdNotCompleted) >= 1)
- continue;
- if (hideReplys)
- continue;
- message += Messages.FormatNpcReply(reply.ReplyText, reply.Id);
- }
- message += Messages.BackToMap + Messages.MetaTerminator;
- return message;
- }
-
- public static string BuildMetaInfo(User user, int x, int y)
- {
- string message = "";
- message += buildLocationString(x, y);
- message += BuildWildHorseList(user);
- message += buildNpc(user, x, y);
-
- message += buildCommonInfo(user, x, y);
- return message;
- }
- public static string BuildPawneerOrderFound(HorseInstance instance)
- {
- string message = Messages.FormatPawneerOrderHorseFound(instance.Breed.Name, instance.Color, instance.Gender, instance.AdvancedStats.Height, instance.AdvancedStats.Personality, instance.AdvancedStats.Inteligence);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildPawneerOrderGenderList(HorseInfo.Breed breed, string color)
- {
- string message = Messages.FormatPawneerOrderSelectGender(color, breed.Name);
- foreach (string gender in breed.GenderTypes())
- message += Messages.FormatPawneerOrderGenderEntry(Helper.CapitalizeFirstLetter(gender), gender);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildPawneerOrderColorList(HorseInfo.Breed breed)
- {
- string message = Messages.FormatPawneerOrderSelectColor(breed.Name);
- foreach (string color in breed.Colors)
- message += Messages.FormatPawneerOrderColorEntry(color);
-
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
-
- }
- public static string BuildPawneerOrderBreedList()
- {
- string message = Messages.PawneerOrderSelectBreed;
- foreach (HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
- {
- if (breed.Swf == "")
- continue;
- if (breed.SpawnInArea == "none")
- continue;
- message += Messages.FormatPawneerOrderBreedEntry(breed.Name, breed.Id);
- }
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildPawneerConfimation(HorseInstance horse)
- {
- string message = "";
- message += Messages.FormatPawneerConfirmPawn(horse.Breed.Name, horse.RandomId);
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildSanta(User user)
- {
- string message = Messages.SantaHiddenText;
- InventoryItem[] items = user.Inventory.GetItemList();
- foreach (InventoryItem item in items)
- {
- Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
- int randomId = item.ItemInstances[0].RandomId;
- if (itemInfo.Type != "QUEST" && itemInfo.Type != "TEXT" && itemInfo.Type != "COMPANION" && itemInfo.Id != Item.Present)
- message += Messages.FormatSantaItemEntry(itemInfo.IconId, itemInfo.Name, randomId);
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildTrainer(User user, Trainer trainer)
- {
- string message = "";
- message += Messages.FormatTrainerHeaderFormat(trainer.ImprovesStat, trainer.MoneyCost, trainer.ImprovesAmount, trainer.ExperienceGained);
-
-
- foreach (HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToList())
- {
- HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED);
- HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH);
- HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION);
- HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY);
- HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE);
-
- HorseInfo.StatCalculator statCalculator;
- switch (trainer.ImprovesStat.ToUpper())
- {
- case "SPEED":
- statCalculator = speedStat;
- break;
- case "STRENGTH":
- statCalculator = strengthStat;
- break;
- case "AGILITY":
- statCalculator = agilityStat;
- break;
- case "ENDURANCE":
- statCalculator = enduranceStat;
- break;
- case "CONFORMATION":
- statCalculator = conformationStat;
- break;
- default:
- statCalculator = speedStat;
- break;
- }
-
- bool allowed = false;
-
- /*
- * Pinto bug: If you try to train a horse, but doing so would go over the maximum amount
- * Then it just says its maxed trained, and u have to use a ranch.
- */
-
- if (ConfigReader.FixOfficalBugs)
- allowed = (statCalculator.BreedValue < statCalculator.MaxValue);
- else
- allowed = ((statCalculator.BreedValue + trainer.ImprovesAmount) < statCalculator.MaxValue);
-
- if(allowed)
- message += Messages.FormatTrainerTrainInEntry(horse.Name, statCalculator.BreedValue, statCalculator.MaxValue, horse.RandomId);
- else
- message += Messages.FormatTrainerFullyTrained(horse.Name, statCalculator.BreedValue);
-
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildPawneer(User user)
- {
- string message = "";
- if (user.Inventory.HasItemId(Item.PawneerOrder) && (user.HorseInventory.HorseList.Length < user.MaxHorses))
- message += Messages.PawneerOrderMeta;
- message += Messages.PawneerUntackedHorsesICanBuy;
- foreach(HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToList())
- {
- if(horse.Category == "TRADING" && horse.Equipment.Bridle == null && horse.Equipment.Saddle == null && horse.Equipment.SaddlePad == null && horse.Equipment.Companion == null)
- {
- message += Messages.FormatPawneerHorseEntry(horse.Name, Pawneer.CalculateTotalPrice(horse), horse.RandomId);
- }
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildLeaserOnLeaseInfo(Leaser leaser)
- {
- string mesasge = "";
- mesasge += leaser.OnLeaseText;
- mesasge += Messages.BackToMap;
- mesasge += Messages.MetaTerminator;
- return mesasge;
- }
- private static string buildLeaser(User user, Leaser[] leasers)
- {
- string message = "";
- foreach(Leaser leaser in leasers)
- {
- message += leaser.Info;
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string build2PlayerGame(User user, string swf)
- {
- Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
- room.Join(user);
-
- if (TwoPlayer.IsPlayerInGame(user))
- {
- string username = "";
- TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(user);
- if (twoPlayerGame.Invitee.Id == user.Id)
- username = twoPlayerGame.Invitee.Username;
- else
- username = twoPlayerGame.Inviting.Username;
- overwrite = true;
-
- return Messages.Format2PlayerGameInProgress(username);
- }
-
- string message = Messages.TwoPlayerOtherPlayer;
- foreach(User userAt in room.JoinedUsers.ToArray())
- {
- if (userAt.Id == user.Id)
- continue;
-
- message += Messages.Format2PlayerPlayerName(userAt.Username);
-
- if(!TwoPlayer.IsPlayerInGame(userAt))
- {
- if (TwoPlayer.IsPlayerInvitingPlayer(user, userAt))
- message += Messages.TwoPlayerSentInvite;
- else
- message += Messages.Format2PlayerInviteButton(userAt.Id);
- if (TwoPlayer.IsPlayerInvitingPlayer(userAt, user))
- message += Messages.Format2PlayerAcceptButton(userAt.Id);
-
- }
- else
- {
- string username = "";
- TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(userAt);
- if (twoPlayerGame.Invitee.Id == userAt.Id)
- username = twoPlayerGame.Invitee.Username;
- else
- username = twoPlayerGame.Inviting.Username;
-
- message += Messages.Format2PlayerPlayingWith(username);
- }
-
- message += Messages.R1;
- }
- message += Messages.ExitThisPlace;
- return message;
- }
- public static string BuildComposeMailMenu()
- {
- string message = Messages.CityHallMailSendMeta;
- message += Messages.BackToMap;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildTownHall(User user)
- {
- GameServer.CheckMail(user);
-
- string message = Messages.CityHallMenu;
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- private static string buildArena(User user, Arena arena)
- {
- string message = Messages.FormatArenaEventName(arena.Type);
- if(arena.Mode == "TAKINGENTRIES")
- {
- int minutes = World.ServerTime.Minutes % 60;
-
- int lastMinutes = minutes - (minutes % arena.RaceEvery);
- int lastHours = (lastMinutes / 60);
-
- string amOrPm = "am";
- if (lastHours == 0)
- {
- amOrPm = "am";
- lastHours = 12;
- }
- if (lastHours > 12)
- {
- lastHours -= 12;
- amOrPm = "pm";
- }
-
- message += Messages.FormatArenaCurrentlyTakingEntries(lastHours, lastMinutes, amOrPm, arena.RaceEvery - minutes);
- if (arena.Entries.Length + 1 > arena.Slots)
- {
- message += Messages.ArenaCompetitionFull;
- }
- else if (!arena.UserHasHorseEntered(user))
- {
-
- foreach(HorseInstance horseInstance in user.HorseInventory.HorseList)
- {
- if (horseInstance.Leaser > 0)
- continue;
-
- if(horseInstance.Equipment.Saddle != null && horseInstance.Equipment.SaddlePad != null && horseInstance.Equipment.Bridle != null)
- message += Messages.FormatArenaEnterHorseButton(horseInstance.Name, arena.EntryCost, horseInstance.RandomId);
- }
- }
- else
- {
- message += Messages.ArenaYouHaveHorseEntered;
- }
-
- }
- else if(arena.Mode == "COMPETING")
- {
- message += Messages.ArenaCompetitionInProgress;
- }
-
- message += Messages.ArenaCurrentCompetitors;
- foreach(Arena.ArenaEntry entries in arena.Entries)
- {
- message += Messages.FormatArenaCompetingHorseEntry(entries.EnteredUser.Username, entries.EnteredHorse.Name, entries.EnteredHorse.RandomId);
- }
- message += Messages.ExitThisPlace;
- message += Messages.MetaTerminator;
- return message;
- }
- public static string BuildSpecialTileInfo(User user, World.SpecialTile specialTile)
- {
- string message = "";
-
- if (specialTile.Code == null)
- message += buildLocationString(specialTile.X, specialTile.Y);
-
-
- if (specialTile.Title != null && specialTile.Title != "")
- message += Messages.FormatTileName(specialTile.Title);
-
-
- if (specialTile.Description != null && specialTile.Description != "")
- {
- message += specialTile.Description;
- message += Messages.Seperator; //
- }
-
-
- string npc = buildNpc(user, specialTile.X, specialTile.Y);
- message += npc;
-
- if (specialTile.Code == null || specialTile.Code == "")
- message += buildCommonInfo(user, specialTile.X, specialTile.Y);
- else
- {
-
- user.MinorPriority = true;
-
- string TileCode = specialTile.Code;
-
- string TileArg = "";
- if (TileCode.Contains("-"))
- {
- TileArg = TileCode.Split('-')[1];
- TileCode = TileCode.Split('-')[0];
- }
- if (TileCode == "EXITABLE")
- message += Messages.ExitThisPlace;
-
- if (TileCode == "TRANSPORT")
- {
- Transport.TransportPoint point = Transport.GetTransportPoint(specialTile.X, specialTile.Y);
- message += Meta.BuildTransportInfo(user, point);
- }
-
- if (TileCode == "STRAWPILE")
- {
- if (user.Inventory.HasItemId(Item.Pitchfork))
- message += Messages.HasPitchforkMeta + Messages.ExitThisPlace + Messages.MetaTerminator;
- else
- message += Messages.NoPitchforkMeta + Messages.ExitThisPlace + Messages.MetaTerminator;
- }
-
- if (TileCode == "STORE")
- {
- int ShopID = int.Parse(TileArg);
- Shop shop = Shop.GetShopById(ShopID);
- user.LastShoppedAt = shop;
- message += buildShopInfo(shop, user.Inventory);
-
- }
- if(TileCode == "TOWNHALL")
- {
- message += buildTownHall(user);
- }
- if (TileCode == "VET")
- {
- message += buildVet(user, Vet.GetVetById(int.Parse(TileArg)));
- }
- if(TileCode == "GROOMER")
- {
- message += buildGroomer(user, Groomer.GetGroomerById(int.Parse(TileArg)));
- }
- if (TileCode == "FARRIER")
- {
- message += buildFarrier(user, Farrier.GetFarrierById(int.Parse(TileArg)));
- }
- if(TileCode == "BARN")
- {
- message += buildBarn(user, Barn.GetBarnById(int.Parse(TileArg)));
- }
- if (TileCode == "BANK")
- {
- message += buildBank(user);
- }
- if (TileCode == "WISHINGWELL")
- {
- message += buildWishingWell(user);
- }
- if(TileCode == "HORSEPAWNEER")
- {
- message += buildPawneer(user);
- }
- if (TileCode == "VENUSFLYTRAP")
- {
- message += buildVenusFlyTrap(user);
- }
- if (TileCode == "RIDDLER")
- {
- message += buildRiddlerRiddle(user);
- }
- if(TileCode == "ARENA")
- {
- message += buildArena(user, Arena.GetAreaById(int.Parse(TileArg)));
- }
- if(TileCode == "AUCTION")
- {
- message += buildAuction(user, Auction.GetAuctionRoomById(int.Parse(TileArg)));
- }
- if(TileCode == "TRAINER")
- {
- message += buildTrainer(user, Trainer.GetTrainerById(int.Parse(TileArg)));
- }
- if(TileCode == "HORSELEASER")
- {
- message += buildLeaser(user, Leaser.GetLeasersById(int.Parse(TileArg)));
- }
- if (TileCode == "LIBRARY")
- {
- message += buildLibary();
- }
- if(TileCode == "MULTIHORSES")
- {
- message += buildMultiHorses(user, TileArg);
- }
- if (TileCode == "POND")
- {
- message += buildPond(user);
- }
- if(TileCode == "2PLAYER")
- {
- string msg = build2PlayerGame(user, TileArg);
- if (!overwrite)
- message += msg;
- else
- message = msg;
-
- overwrite = false;
- }
- if(TileCode == "HORSES")
- {
- message += buildHorseGame(user, TileArg);
- }
- if (TileCode == "WORKSHOP")
- {
- message += buildWorkshop(user);
- }
- if (TileCode == "MUDHOLE")
- {
- message += buildMudHole(user);
- }
- if (TileCode == "RANCH")
- {
- message += buildRanch(user, int.Parse(TileArg));
- }
- if(TileCode == "SANTA")
- {
- message += buildSanta(user);
- }
- if (TileCode == "MULTIROOM")
- {
- message += buildMultiroom(TileArg != "" ? TileArg : null, user);
- }
- if (TileCode == "PASSWORD")
- {
- message += buildPassword();
- }
- if (TileCode == "HORSEWHISPERER")
- {
- message += buildHorseWhisperer();
- }
- if (TileCode == "INN")
- {
- int InnID = int.Parse(TileArg);
- Inn inn = Inn.GetInnById(InnID);
- user.LastVisitedInn = inn;
- message += buildInn(inn);
- }
- if (TileCode == "FOUNTAIN")
- {
- message += buildFountain();
-
- }
- }
-
-
-
- return message;
- }
-
-
- }
-}
+using HISP.Game.Horse;
+using HISP.Game.Inventory;
+using HISP.Game.Services;
+using HISP.Player;
+using HISP.Server;
+using HISP.Game.Items;
+using HISP.Game.Chat;
+using HISP.Game.Events;
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Drawing;
+
+namespace HISP.Game
+{
+ public class Meta
+ {
+ private static bool overwrite = false;
+
+ private static string buildLocationString(int x, int y)
+ {
+ string areaString = buildAreaString(x, y);
+ if (areaString != "")
+ areaString = Messages.LocationFormat.Replace("%META%", areaString);
+ return areaString;
+ }
+ private static string buildAreaString(int x, int y)
+ {
+ string locationString = "";
+
+ if (World.InArea(x, y))
+ locationString += Messages.AreaFormat.Replace("%AREA%", World.GetArea(x, y).Name);
+ if (World.InTown(x, y))
+ locationString += Messages.TownFormat.Replace("%TOWN%", World.GetTown(x, y).Name);
+ if (World.InIsle(x, y))
+ locationString += Messages.IsleFormat.Replace("%ISLE%", World.GetIsle(x, y).Name);
+ return locationString;
+ }
+
+ private static string buildPlayersHere(User fromUser, int x, int y)
+ {
+ string playersHere = "";
+ User[] playersAt = GameServer.GetUsersAt(x, y, true, true);
+ if(playersAt.Length > 1)
+ {
+ playersHere += Messages.PlayersHere;
+ int count = 0;
+ foreach(User playerAt in playersAt)
+ {
+ if (playerAt.Id == fromUser.Id)
+ continue;
+ string buttons = "";
+ buttons += Messages.FormatPlayerHereProfileButton(playerAt.Id);
+ buttons += Messages.FormatPlayerHereSocialButtton(playerAt.Id);
+ buttons += Messages.FormatPlayerHereTradeButton(playerAt.Id);
+ if (fromUser.Friends.IsFriend(playerAt.Id))
+ buttons += Messages.FormatPlayerHereTagButton(playerAt.Id);
+ else
+ buttons += Messages.FormatPlayerHereBuddyButton(playerAt.Id);
+ buttons += Messages.FormatPmButton(playerAt.Username);
+
+ playersHere += Messages.FormatPlayerHereMenu(playerAt.GetPlayerListIcon(), playerAt.Username,buttons);
+ count++;
+ }
+
+ if(count >= 2)
+ {
+ SocialType stype = SocialType.GetSocialType("GROUP");
+ foreach(SocialType.Social social in stype.Socials)
+ {
+ playersHere += Messages.FormatSocialButton(social.Id, social.ButtonName);
+ }
+ playersHere += Messages.R1;
+ }
+
+ if (count <= 0)
+ return "";
+ }
+
+ return playersHere;
+ }
+
+ private static string buildNearbyString(int x, int y, bool showNearbyPlayersHeader=true)
+ {
+ string playersNearby = "";
+
+ User[] nearbyUsers = GameServer.GetNearbyUsers(x, y, true, true);
+ int count = 0;
+ if (nearbyUsers.Length > 1)
+ {
+ if(showNearbyPlayersHeader)
+ {
+ playersNearby += Messages.NearbyPlayers;
+ }
+
+ string usersWest = "";
+ string usersNorth = "";
+ string usersEast = "";
+ string usersSouth = "";
+
+ foreach (User nearbyUser in nearbyUsers)
+ {
+ if (nearbyUser.X == x && nearbyUser.Y == y) // not yourself
+ continue;
+
+ int xDiff = x - nearbyUser.X;
+ int yDiff = y - nearbyUser.Y;
+ double angle = (Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI);
+ angle -= 45;
+ angle = (angle % 360 + 360) % 360;
+
+ if (angle >= 270 && angle <= 360 )
+ usersWest += nearbyUser.Username + " ";
+ else if (angle >= 90 && angle <= 180)
+ usersEast += nearbyUser.Username + " ";
+ else if (angle >= 180 && angle <= 270)
+ usersSouth += nearbyUser.Username + " ";
+ else if (angle >= 0 && angle <= 90)
+ usersNorth += nearbyUser.Username + " ";
+
+
+ count++;
+ }
+
+ if (usersEast != "")
+ playersNearby += " " + Messages.East + usersEast + Messages.Seperator;
+ if (usersWest != "")
+ playersNearby += " " + Messages.West + usersWest + Messages.Seperator;
+ if (usersSouth != "")
+ playersNearby += " " + Messages.South + usersSouth + Messages.Seperator;
+ if (usersNorth != "")
+ playersNearby += " " + Messages.North + usersNorth + Messages.Seperator;
+
+
+
+ }
+ if(count <= 0)
+ {
+ return "";
+ }
+ return playersNearby;
+
+ }
+ private static string buildShopInfo(Shop shop, IInventory shopperInventory)
+ {
+ string message = "";
+ InventoryItem[] itemList = shop.Inventory.GetItemList();
+
+ // Get shops stock
+ message += Messages.ThingsIAmSelling;
+ foreach (InventoryItem item in itemList)
+ {
+ message += Messages.R1;
+ Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
+
+ int count = item.ItemInstances.Length;
+ string countStr = count.ToString();
+ if (item.Infinite)
+ countStr = Messages.InfinitySign;
+
+
+ message += Messages.FormatShopEntry(itemInfo.IconId, countStr, itemInfo.Name, shop.CalculateBuyCost(itemInfo));
+
+ message += Messages.FormatBuyItemButton(itemInfo.Id);
+ if (count >= 5)
+ message += Messages.FormatBuy5ItemButton(itemInfo.Id);
+ if (count >= 25)
+ message += Messages.FormatBuy25ItemButton(itemInfo.Id);
+
+ message += Messages.FormatItemInformationByIdButton(itemInfo.Id);
+
+ }
+
+ // Check whats avalilble to be sold
+ message += Messages.R1 + Messages.ThingsYouSellMe;
+ InventoryItem[] shopperItemList = shopperInventory.GetItemList();
+
+ foreach (InventoryItem shopperitem in shopperItemList)
+ {
+ Item.ItemInformation itemInfo = Item.GetItemById(shopperitem.ItemId);
+
+ // Prevent items that cannot be sold to this shopkeeper.
+ if (!shop.CanSell(itemInfo))
+ continue;
+
+
+ int count = shopperitem.ItemInstances.Length;
+ string countStr = count.ToString();
+
+
+ message += Messages.R1;
+ message += Messages.FormatShopEntry(itemInfo.IconId, countStr, itemInfo.Name, shop.CalculateSellCost(itemInfo));
+ message += Messages.FormatSellButton(shopperitem.ItemInstances[0].RandomId);
+ message += Messages.FormatSellAllButton(itemInfo.Id);
+ message += Messages.FormatItemInformationButton(shopperitem.ItemInstances[0].RandomId);
+ }
+
+ message += Messages.R1 + Messages.ExitThisPlace;
+ return message;
+ }
+
+
+ private static string buildWishingWell(User user)
+ {
+ string message = "";
+ bool hasCoins = user.Inventory.HasItemId(Item.WishingCoin);
+ if (!hasCoins)
+ {
+ message += Messages.NoWishingCoins;
+ }
+ else
+ {
+ InventoryItem wishingCoins = user.Inventory.GetItemByItemId(Item.WishingCoin);
+ int totalCoins = wishingCoins.ItemInstances.Length;
+ message += Messages.FormatNumberOfWishingCoins(totalCoins);
+ message += Messages.WishingWellMeta;
+ }
+
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+
+
+ }
+
+ private static string buildCommonInfo(User user, int x, int y)
+ {
+ user.HorseWindowOpen = false;
+ string message = "";
+ message += buildPlayersHere(user, x, y);
+ bool playersHere = (GameServer.GetUsersAt(x, y, true, true).Length >= 1);
+ message += buildNearbyString(x, y, playersHere);
+
+ // Dropped Items
+ DroppedItems.DroppedItem[] Items = DroppedItems.GetItemsAt(x, y);
+ if (Items.Length == 0)
+ message += Messages.NothingMessage;
+ else
+ {
+ message += Messages.ItemsOnGroundMessage;
+ foreach (DroppedItems.DroppedItem item in Items)
+ {
+ Item.ItemInformation itemInfo = item.Instance.GetItemInfo();
+ message += Messages.FormatGrabItemMessage(itemInfo.Name, item.Instance.RandomId, itemInfo.IconId);
+ }
+ if (Items.Length > 1)
+ message += Messages.GrabAllItemsButton;
+ }
+ return message;
+ }
+
+ private static string buildWornJewelery(User user, bool other)
+ {
+ string message = "";
+
+ // Insert LGBT Patch here
+
+ string pronoun = "";
+
+ if (other)
+ {
+ if (user.Gender == "FEMALE")
+ {
+ pronoun = Messages.PronounFemaleShe;
+ }
+
+ if (user.Gender == "MALE")
+ {
+ pronoun = Messages.PronounMaleHe;
+ }
+ }
+
+ if (!other)
+ message += Messages.JewelrySelected;
+ else
+ message += Messages.FormatOtherJewelerySelected(pronoun);
+
+ bool hasMsg = false;
+
+ if (user.EquipedJewelry.Slot1 != null)
+ {
+ message += Messages.FormatJewelrySlot1(user.EquipedJewelry.Slot1.Name, user.EquipedJewelry.Slot1.IconId, other);
+ hasMsg = true;
+ }
+ if (user.EquipedJewelry.Slot2 != null)
+ {
+ message += Messages.FormatJewelrySlot2(user.EquipedJewelry.Slot2.Name, user.EquipedJewelry.Slot2.IconId, other);
+ hasMsg = true;
+ }
+ if (user.EquipedJewelry.Slot3 != null)
+ {
+ message += Messages.FormatJewelrySlot3(user.EquipedJewelry.Slot3.Name, user.EquipedJewelry.Slot3.IconId, other);
+ hasMsg = true;
+ }
+ if (user.EquipedJewelry.Slot4 != null)
+ {
+ message += Messages.FormatJewelrySlot4(user.EquipedJewelry.Slot4.Name, user.EquipedJewelry.Slot4.IconId, other);
+ hasMsg = true;
+ }
+
+ if (!hasMsg)
+ {
+ if (!other)
+ message = Messages.NoJewerlyEquipped;
+ else
+ message = Messages.FormatOtherNoJewelery(pronoun);
+ }
+
+
+
+ return message;
+ }
+
+ private static string buildMultiroom(string id, User user)
+ {
+
+ string message = Messages.MultiroomPlayersParticipating;
+
+ Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
+ room.Join(user);
+
+ foreach (User userOnTile in room.JoinedUsers)
+ {
+ if (userOnTile.Id == user.Id)
+ continue;
+
+ message += Messages.FormatMultiroomParticipent(userOnTile.Username);
+ }
+
+ message += Messages.R1;
+
+ if(id == null) // Generic
+ {
+ // Do nothing
+ }
+ else if (id[0] == 'P') // Poet
+ {
+ int lastPoet = Database.GetLastPlayer(id);
+ string username = "";
+ if (lastPoet != -1)
+ username = Database.GetUsername(lastPoet);
+
+ message += Messages.FormatLastPoet(username);
+ }
+ else if (id[0] == 'D') // Drawning room
+ {
+ int lastDraw = Database.GetLastPlayer(id);
+ string username = "";
+ if (lastDraw != -1)
+ username = Database.GetUsername(lastDraw);
+
+ message += Messages.FormatLastToDraw(username);
+ }
+
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildEquippedCompetitionGear(User user, bool other = false)
+ {
+ string message = "";
+
+ if (!other)
+ message = Messages.CompetitionGearSelected;
+
+ // Insert LGBT Patch Here
+
+ string pronoun = Messages.PronounYouYour;
+ string pronoun2 = Messages.PronounYouYour;
+ if (other)
+ {
+ if (user.Gender == "FEMALE")
+ {
+ pronoun = Messages.PronounFemaleShe;
+ pronoun2 = Messages.PronounFemaleHer;
+ }
+ else if (user.Gender == "MALE")
+ {
+ pronoun = Messages.PronounMaleHe;
+ pronoun2 = Messages.PronounMaleHis;
+ }
+
+ message = Messages.FormatOtherCompetitionGear(pronoun);
+ }
+
+ bool hasMsg = false;
+
+ if (user.EquipedCompetitionGear.Head != null)
+ {
+ message += Messages.FormatCompetitionGearHead(user.EquipedCompetitionGear.Head.Name, pronoun2, user.EquipedCompetitionGear.Head.IconId, other);
+ hasMsg = true;
+ }
+ if (user.EquipedCompetitionGear.Body != null)
+ {
+ message += Messages.FormatCompetitionGearBody(user.EquipedCompetitionGear.Body.Name, pronoun2, user.EquipedCompetitionGear.Body.IconId, other);
+ hasMsg = true;
+ }
+ if (user.EquipedCompetitionGear.Legs != null)
+ {
+ message += Messages.FormatCompetitionGearLegs(user.EquipedCompetitionGear.Legs.Name, pronoun2, user.EquipedCompetitionGear.Legs.IconId, other);
+ hasMsg = true;
+ }
+ if (user.EquipedCompetitionGear.Feet != null)
+ {
+ message += Messages.FormatCompetitionGearFeet(user.EquipedCompetitionGear.Feet.Name, pronoun2, user.EquipedCompetitionGear.Feet.IconId, other);
+ hasMsg = true;
+ }
+
+ if (!hasMsg)
+ {
+ if (!other)
+ message = Messages.NoCompetitionGear;
+ else
+ message = Messages.FormatOtherNoCompetitionGear(pronoun);
+ }
+
+ return message;
+
+ }
+
+ private static string buildHorseListIndependantlyOfUserInstance(int userId)
+ {
+ string message = "";
+ int i = 1;
+
+
+ foreach (HorseInfo.Category category in HorseInfo.HorseCategories)
+ {
+ HorseInstance[] horsesInCategory = Database.GetPlayerHorsesInCategory(userId, category.Name).OrderBy(o => o.Name).ToArray();
+ if (horsesInCategory.Length > 0)
+ {
+ message += category.MetaOthers;
+ foreach (HorseInstance instance in horsesInCategory)
+ {
+ message += Messages.FormatHorseEntry(i, instance.Name, instance.Breed.Name, instance.RandomId, instance.AutoSell > 0);
+ i++;
+ }
+ }
+ }
+
+ return message;
+
+ }
+ public static string buildLibary()
+ {
+ return Messages.LibaryMainMenu + Messages.ExitThisPlace + Messages.MetaTerminator;
+ }
+ private static string buildNpc(User user, int x, int y)
+ {
+ string message = "";
+ Npc.NpcEntry[] entries = Npc.GetNpcByXAndY(x, y);
+ foreach (Npc.NpcEntry ent in entries)
+ {
+ if (ent.AdminOnly && !user.Administrator)
+ continue;
+
+ if (ent.RequiresQuestIdCompleted != 0)
+ if (user.Quests.GetTrackedQuestAmount(ent.RequiresQuestIdCompleted) <= 0)
+ continue;
+
+ if (ent.RequiresQuestIdNotCompleted != 0)
+ if (user.Quests.GetTrackedQuestAmount(ent.RequiresQuestIdNotCompleted) >= 1)
+ continue;
+
+ message += Messages.FormatNpcStartChatMessage(ent.IconId, ent.Name, ent.ShortDescription, ent.Id);
+ if(ent.Chatpoints.Length > 0)
+ {
+ if (ent.LongDescription != "")
+ message += Messages.FormatNpcInformationButton(ent.Id);
+ message += Messages.FormatNpcTalkButton(ent.Id);
+ }
+ else
+ {
+ message += Messages.NpcNoChatpoints;
+ }
+ message += Messages.R1;
+ }
+ return message;
+ }
+ public static string buildVenusFlyTrap(User user)
+ {
+ int moneyLost = GameServer.RandomNumberGenerator.Next(0, 100);
+ if (moneyLost > user.Money)
+ moneyLost = user.Money;
+ user.TakeMoney(moneyLost);
+ return Messages.FormatVenusFlyTrapMeta(moneyLost);
+ }
+ public static string buildInn(Inn inn)
+ {
+ string message = Messages.InnBuyMeal;
+ foreach (Item.ItemInformation item in inn.MealsOffered)
+ {
+ message += Messages.FormatInnItemEntry(item.IconId, item.Name, inn.CalculateBuyCost(item), item.Id);
+ }
+ message += Messages.InnBuyRest;
+ foreach (Item.ItemInformation item in inn.RestsOffered)
+ {
+ message += Messages.FormatInnItemEntry(item.IconId, item.Name, inn.CalculateBuyCost(item), item.Id);
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string SelectPlayerStatFormat(int statValue)
+ {
+ int curValue = 1000;
+ int devisibleBy = Convert.ToInt32(Math.Floor((decimal)curValue / Messages.StatPlayerFormats.Length));
+
+ for (int i = 0; i < Messages.StatPlayerFormats.Length; i++)
+ {
+ curValue -= devisibleBy;
+ if (statValue >= curValue)
+ return Messages.StatPlayerFormats[i];
+
+ }
+ throw new Exception("A mathematically impossible error occured. please check wether the laws of physics still apply.");
+ }
+
+ public static string BuildTradeAdd(Trade trade)
+ {
+ string message = Messages.FormatTradeWhatToOffer(trade.OtherTrade.Trader.Username);
+ message += Messages.TradeOfferMoney;
+ message += Messages.TradeOfferHorse;
+ foreach(HorseInstance horse in trade.Trader.HorseInventory.HorseList.OrderBy(o => o.Name))
+ {
+ if (horse.Leaser > 0)
+ continue;
+
+ if (horse.Category != "TRADING")
+ continue;
+
+ bool tacked = (horse.Equipment.Saddle != null || horse.Equipment.SaddlePad != null || horse.Equipment.Bridle != null || horse.Equipment.Companion != null);
+ message += Messages.FormatTradeOfferHorse(horse.Name, tacked, horse.RandomId);
+ }
+
+ if(trade.OtherTrade.Trader.Inventory.Count >= trade.OtherTrade.Trader.MaxItems)
+ {
+ message += Messages.TradeOfferItemOtherPlayerInvFull;
+ }
+ else
+ {
+ message += Messages.TradeOfferItem;
+ foreach(InventoryItem item in trade.Trader.Inventory.GetItemList())
+ {
+ Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
+ if (itemInfo.Type == "QUEST" || itemInfo.Type == "TEXT" || itemInfo.Id == Item.DorothyShoes)
+ continue;
+ message += Messages.FormatTradeOfferItem(itemInfo.IconId, itemInfo.Name, item.ItemInstances.Length, item.ItemId);
+ }
+ }
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+
+ }
+ public static string BuildSocialMenu(bool onHorse)
+ {
+ string message = "";
+ foreach(SocialType sType in SocialType.SocialTypes)
+ {
+ if (sType.Type == "GROUP")
+ continue;
+ if (sType.Type == "HORSE")
+ if (!onHorse)
+ continue;
+
+ message += Messages.FormatSocialMenuType(sType.Type);
+ foreach(SocialType.Social social in sType.Socials)
+ {
+ message += Messages.FormatSocialButton(social.Id, social.ButtonName);
+ }
+ message += Messages.R1;
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildTradeAddItem(int totalItems)
+ {
+ string message = "";
+ message += Messages.FormatTradeOfferItemSubmenu(totalItems);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildTradeAddMoney(int curMoney)
+ {
+ string message = "";
+ message += Messages.FormatTradeOfferMoneySubmenu(curMoney);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildTrade(Trade trade)
+ {
+
+ string message = "";
+ message += Messages.FormatTradeWithPlayer(trade.OtherTrade.Trader.Username);
+
+
+
+ if (trade.Stage == "DONE" && trade.OtherTrade.Stage == "DONE")
+ message += Messages.TradeFinalReview;
+ else if (trade.Stage == "DONE")
+ message += Messages.TradeWaitingForOtherDone;
+ else if (trade.OtherTrade.Stage == "DONE")
+ message += Messages.TradeOtherPlayerIsDone;
+
+
+ message += Messages.FormatTradeYourOffering(trade.OtherTrade.Trader.Username);
+ if (trade.MoneyOffered == 0 && trade.ItemsOffered.Length == 0 && trade.HorsesOffered.Length == 0)
+ message += Messages.TradeOfferingNothing;
+ if (trade.MoneyOffered > 0)
+ message += Messages.FormatTradeMoneyOffer(trade.MoneyOffered);
+ if(trade.HorsesOffered.Length > 0)
+ foreach(HorseInstance horse in trade.HorsesOffered)
+ message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
+ if(trade.ItemsOffered.Length > 0)
+ foreach(ItemInstance[] item in trade.ItemsOffered)
+ {
+ Item.ItemInformation itemInfo = item[0].GetItemInfo();
+ string name = itemInfo.Name;
+ if (item.Length > 1)
+ name = itemInfo.PluralName;
+
+ message += Messages.FormatTradeItemOffer(itemInfo.IconId, item.Length, name);
+ }
+
+ if(trade.Stage == "OPEN")
+ message += Messages.TradeAddItems;
+
+ message += Messages.FormatTradeOtherOffering(trade.OtherTrade.Trader.Username);
+ if (trade.OtherTrade.MoneyOffered == 0 && trade.OtherTrade.ItemsOffered.Length == 0 && trade.OtherTrade.HorsesOffered.Length == 0)
+ message += Messages.TradeOfferingNothing;
+ if (trade.OtherTrade.MoneyOffered > 0)
+ message += Messages.FormatTradeMoneyOffer(trade.OtherTrade.MoneyOffered);
+ if (trade.OtherTrade.HorsesOffered.Length > 0)
+ foreach (HorseInstance horse in trade.OtherTrade.HorsesOffered)
+ message += Messages.FormatTradeHorseOffer(horse.Name, horse.RandomId);
+ if (trade.OtherTrade.ItemsOffered.Length > 0)
+ foreach (ItemInstance[] item in trade.OtherTrade.ItemsOffered)
+ {
+ Item.ItemInformation itemInfo = item[0].GetItemInfo();
+ string name = itemInfo.Name;
+ if (item.Length > 1)
+ name = itemInfo.PluralName;
+
+ message += Messages.FormatTradeItemOffer(itemInfo.IconId, item.Length, name);
+ }
+
+ if (trade.Stage == "OPEN")
+ message += Messages.TradeWhenDoneClick;
+ if (((trade.Stage == "DONE" || trade.Stage == "ACCEPTED") && (trade.OtherTrade.Stage == "DONE" || trade.Stage == "ACCEPTED")) )
+ message += Messages.TradeAcceptTrade;
+
+ message += Messages.TradeCancelAnytime;
+
+ return message;
+ }
+
+ public static string buildTackPeiceLibary(Item.ItemInformation item)
+ {
+ string message = "";
+ message += Messages.FormatTackSetPeice(item.Name, item.Description);
+ return message;
+ }
+
+ public static string BuildTackLibary()
+ {
+ string message = "";
+
+ foreach (Tack.TackSet set in Tack.TackSets.OrderBy(o => o.SortPosition()).ToArray())
+ {
+ string[] setSwfs = set.GetSwfNames();
+ string swf = "breedviewer.swf?terrain=book2&breed=tackonly";
+ if (setSwfs.Length >= 1)
+ swf += "&saddle=" + setSwfs[0];
+ if (setSwfs.Length >= 2)
+ swf += "&saddlepad=" + setSwfs[1];
+ if (setSwfs.Length >= 3)
+ swf += "&bridle=" + setSwfs[2];
+ swf += "&j=";
+
+ message += Messages.FormatTackSetView(set.IconId, set.SetName, swf);
+
+ // Write all peices
+ try
+ {
+ message += buildTackPeiceLibary(set.GetSaddle());
+ message += buildTackPeiceLibary(set.GetSaddlePad());
+ message += buildTackPeiceLibary(set.GetBridle());
+ }
+ catch (Exception e)
+ {
+ Logger.ErrorPrint(e.Message);
+ }
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildMinigamesLibary()
+ {
+ string message = "";
+ message += Messages.MinigameSingleplayer;
+ foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
+ {
+ if (tile.TypeFlag == "1PLAYER")
+ {
+ string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
+ message += Messages.FormatMinigameEntry(tile.Title, mapXy);
+ }
+ }
+ message += Messages.MinigameTwoplayer;
+ foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
+ {
+ if (tile.TypeFlag == "2PLAYER")
+ {
+ string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
+ message += Messages.FormatMinigameEntry(tile.Title, mapXy);
+ }
+ }
+ message += Messages.MinigameMultiplayer;
+ foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
+ {
+ if (tile.TypeFlag == "MULTIPLAYER")
+ {
+ string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
+ message += Messages.FormatMinigameEntry(tile.Title, mapXy);
+ }
+ }
+ message += Messages.MinigameCompetitions;
+ foreach (World.SpecialTile tile in World.SpecialTiles.OrderBy(o => o.Title))
+ {
+ if (tile.TypeFlag == "ARENA")
+ {
+ string mapXy = Messages.FormatMapLocation(tile.X, tile.Y);
+ message += Messages.FormatMinigameEntry(tile.Title, mapXy);
+ }
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildRealTimeQuiz(RealTimeQuiz.Participent participent)
+ {
+ // Uber Priority xD
+ participent.UserInstance.MinorPriority = true;
+ participent.UserInstance.MajorPriority = true;
+ return Messages.FormatEventRealTimeQuizMeta(participent.CorrectAnswers, participent.MistakenAnswers, participent.OnQuestion.BaseCategory.Name, participent.OnQuestion.Question);
+ }
+ public static string BuildCompanionLibary()
+ {
+ string message = "";
+ foreach (Item.ItemInformation itm in Item.Items.OrderBy(o => o.GetMiscFlag(0)).ToArray())
+ {
+ if (itm.Type == "COMPANION" && itm.EmbedSwf != null)
+ {
+ string swf = "breedviewer.swf?terrain=book2&breed=tackonly&companion=" + itm.EmbedSwf + "&j=";
+ message += Messages.FormatCompanionViewButton(itm.IconId, itm.Name, swf);
+ message += Messages.FormatCompanionEntry(itm.Description);
+ }
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildLocationsLibary()
+ {
+ string message = "";
+ message += Messages.LocationKnownIslands;
+ foreach (World.Waypoint waypoint in World.Waypoints.OrderBy(o => o.Name).ToArray())
+ {
+ if (waypoint.Type == "ISLE")
+ {
+ string mapxy = Messages.FormatMapLocation(waypoint.PosX, waypoint.PosY);
+ message += Messages.FormatIslandLocation(waypoint.Name, mapxy);
+ message += Messages.FormatLocationDescription(waypoint.Description);
+ }
+ }
+ message += Messages.LocationKnownTowns;
+ foreach (World.Waypoint waypoint in World.Waypoints.OrderBy(o => o.Name).ToArray())
+ {
+ if (waypoint.Type == "TOWN")
+ {
+ string mapxy = Messages.FormatMapLocation(waypoint.PosX, waypoint.PosY);
+ message += Messages.FormatTownLocation(waypoint.Name, mapxy);
+ message += Messages.FormatLocationDescription(waypoint.Description);
+ }
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildRanchSearchResults(string search)
+ {
+ string message = "";
+ message += Messages.LibaryFindRanchResultsHeader;
+ int totalResults = 0;
+ foreach(Ranch ranch in Ranch.Ranches)
+ {
+ if(ranch.OwnerId != -1)
+ {
+ string ranchOwnerName = Database.GetUsername(ranch.OwnerId);
+ if(ranchOwnerName.ToLower().Contains(search.ToLower()))
+ {
+ message += Messages.FormatRanchSearchResult(ranchOwnerName, ranch.X, ranch.Y);
+ totalResults++;
+ }
+ }
+ if (totalResults >= 10)
+ break;
+ }
+ if (totalResults == 0)
+ message += Messages.LibaryFindRanchResultsNoResults;
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildRanchSearchLibary()
+ {
+ string message = "";
+ message += Messages.LibaryFindRanch;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildAwardsLibary()
+ {
+ string message = "";
+ message += Messages.AwardsAvalible;
+ foreach (Award.AwardEntry award in Award.GlobalAwardList.OrderBy(o => o.Sort).ToArray())
+ {
+ message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus, award.Description);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildBookReadLibary(Book book)
+ {
+ string message = "";
+ message = Messages.FormatBookReadMeta(book.Author, book.Title, book.Text);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildBooksLibary()
+ {
+ string message = "";
+ message += Messages.BooksOfHorseIsle;
+ foreach (Book libaryBook in Book.LibaryBooks.OrderBy(o => o.Title).ToArray())
+ {
+ message += Messages.FormatBookEntry(libaryBook.Title, libaryBook.Author, libaryBook.Id);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildHorseReleased()
+ {
+ string message = "";
+ message += Messages.HorseReleasedMeta;
+ message += Messages.BackToMapHorse;
+ message += Messages.MetaTerminator;
+ return message;
+
+ }
+
+ public static string BuildTopHighscores(string gameName)
+ {
+ Highscore.HighscoreTableEntry[] scores = Database.GetTopScores(gameName, 20);
+ if (scores.Length <= 0)
+ return "ERROR: No scores recorded." + Messages.BackToMap + Messages.MetaTerminator;
+ string message = "";
+
+ message += Messages.FormatHighscoreHeader(gameName);
+
+ for (int i = 0; i < scores.Length; i++)
+ {
+ message += Messages.FormatHighscoreListEntry(i + 1, scores[i].Score, Database.GetUsername(scores[i].UserId), scores[i].TimesPlayed);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildTopWinners(string gameName)
+ {
+ Highscore.HighscoreTableEntry[] scores = Database.GetTopWinners(gameName, 20);
+ if (scores.Length <= 0)
+ return "ERROR: No wins recorded." + Messages.BackToMap + Messages.MetaTerminator;
+ string message = "";
+
+ message += Messages.FormatWinlooseHeader(gameName);
+
+ for (int i = 0; i < scores.Length; i++)
+ {
+ message += Messages.FormatWinlooseListEntry(i + 1, scores[i].Wins, scores[i].Looses, Database.GetUsername(scores[i].UserId), scores[i].TimesPlayed);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildTopTimes(string gameName)
+ {
+ Highscore.HighscoreTableEntry[] scores = Database.GetTopScores(gameName, 20, false);
+ if (scores.Length <= 0)
+ return "ERROR: No times recorded. "+Messages.BackToMap+Messages.MetaTerminator;
+ string message = "";
+
+ message += Messages.FormatBestTimeHeader(gameName);
+
+ for (int i = 0; i < scores.Length; i++)
+ {
+ message += Messages.FormatBestTimeListEntry(i + 1, scores[i].Score, Database.GetUsername(scores[i].UserId), scores[i].TimesPlayed);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildMinigameRankingsForUser(User user)
+ {
+ string message = Messages.HighscoreHeaderMeta;
+ foreach (Highscore.HighscoreTableEntry highscore in user.Highscores.HighscoreList)
+ {
+ if (highscore.Type == "SCORE")
+ message += Messages.FormatHighscoreStat(highscore.GameName, Database.GetRanking(highscore.Score, highscore.GameName), highscore.Score, highscore.TimesPlayed);
+ else if (highscore.Type == "TIME")
+ message += Messages.FormatBestTimeStat(highscore.GameName, Database.GetRanking(highscore.Score, highscore.GameName, true), highscore.Score, highscore.TimesPlayed);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildPrivateNotes(User user)
+ {
+ string message = "";
+ message += Messages.FormatPrivateNotes(user.PrivateNotes);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildNpcInfo(Npc.NpcEntry npcInfo)
+ {
+ string message = "";
+ message += Messages.FormatNpcInformation(npcInfo.Name, npcInfo.LongDescription);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildItemInfo(Item.ItemInformation itemInfo)
+ {
+ string message = "";
+ message += Messages.FormatItemInformation(itemInfo.Name, itemInfo.Description);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildRanchTraining(User user)
+ {
+ string message = "";
+ message += Messages.RanchTrainAllAttempt;
+ int horsesTrained = 0;
+ foreach(HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ if(horse.BasicStats.Mood < 200)
+ {
+ message += Messages.FormatRanchTrainBadMood(horse.Name);
+ }
+ if(horse.TrainTimer == 0)
+ {
+ horse.AdvancedStats.Speed += 1;
+ horse.AdvancedStats.Strength += 1;
+ horse.AdvancedStats.Conformation += 1;
+ horse.AdvancedStats.Agility += 1;
+ horse.AdvancedStats.Endurance += 1;
+ horse.BasicStats.Experience += 1;
+ horse.TrainTimer = 720;
+ horsesTrained++;
+ message += Messages.FormatRanchTrain(horse.Name, 1, 1, 1, 1, 1, 1);
+ }
+ else
+ {
+ message += Messages.FormatRanchTrainFail(horse.Name, horse.TrainTimer);
+ }
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildTransportInfo(User user, Transport.TransportPoint transportPoint)
+ {
+ string message = "";
+ // Build list of locations
+ for (int i = 0; i < transportPoint.Locations.Length; i++)
+ {
+ int transportLocationId = transportPoint.Locations[i];
+ Transport.TransportLocation transportLocation = Transport.GetTransportLocation(transportLocationId);
+ string costFormat = Messages.FormatTransportCost(transportLocation.Cost);
+ if(transportLocation.Type == "WAGON")
+ {
+ if (user.OwnedRanch != null)
+ {
+ if (user.OwnedRanch.GetBuildingCount(7) > 0) // Wagon
+ {
+ costFormat = Messages.TransportWagonFree;
+ }
+ }
+ }
+
+
+ message += Messages.FormatTransportMessage(transportLocation.Type, transportLocation.LocationTitle, costFormat, transportLocation.Id, transportLocation.GotoX, transportLocation.GotoY);
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildStatsMenu(User user, bool other=false)
+ {
+ string message = Messages.FormatStatsBar(user.Username);
+
+ string areaString = buildAreaString(user.X, user.Y);
+ if (areaString != "")
+ message += Messages.FormatStatsArea(areaString);
+ if(!other)
+ message += Messages.FormatMoneyStat(user.Money);
+ if (!user.Subscribed)
+ message += Messages.FormatFreeTime(user.FreeMinutes);
+ message += Messages.FormatPlayerDescriptionForStatsMenu(user.ProfilePage);
+ message += Messages.FormatExperience(user.Experience);
+ message += Messages.FormatHungryStat(Messages.FormatPlayerStat(SelectPlayerStatFormat(user.Hunger), Messages.StatHunger));
+ message += Messages.FormatThirstStat(Messages.FormatPlayerStat(SelectPlayerStatFormat(user.Thirst), Messages.StatThirst));
+ message += Messages.FormatTiredStat(Messages.FormatPlayerStat(SelectPlayerStatFormat(user.Tiredness), Messages.StatTired));
+ message += Messages.FormatGenderStat(user.Gender);
+ message += Messages.FormatJewelryStat(buildWornJewelery(user, other));
+ message += Messages.FormatCompetitionGearStat(buildEquippedCompetitionGear(user, other));
+
+ if(!other)
+ {
+ message += Messages.StatsPrivateNotesButton;
+ message += Messages.StatsQuestsButton;
+ message += Messages.StatsMinigameRankingButton;
+ message += Messages.StatsAwardsButton;
+ message += Messages.StatsMiscButton;
+ }
+ else
+ {
+ // Insert LGBT Patch here
+
+ string pronoun = "";
+ if (other)
+ {
+ if (user.Gender == "FEMALE")
+ pronoun = Messages.PronounFemaleHer;
+
+ if (user.Gender == "MALE")
+ pronoun = Messages.PronounMaleHis;
+ }
+
+ message += Messages.FormatOtherHorsesMeta(pronoun);
+
+ message += buildHorseList(user, false);
+
+ message += Messages.FormatAwardHeaderOthers(user.Username);
+ foreach (Award.AwardEntry award in user.Awards.AwardsEarned)
+ message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus);
+
+ }
+
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+
+ public static string BuildWildHorseList(User user)
+ {
+ string message = "";
+ WildHorse[] horses = WildHorse.GetHorsesAt(user.X, user.Y);
+ if (horses.Length > 0)
+ {
+ message = Messages.HorsesHere;
+ foreach (WildHorse horse in horses)
+ {
+ bool vowel = (horse.Instance.Breed.Name[0].ToString().ToLower() == "a" || horse.Instance.Breed.Name[0].ToString().ToLower() == "i" || horse.Instance.Breed.Name[0].ToString().ToLower() == "u" || horse.Instance.Breed.Name[0].ToString().ToLower() == "e" || horse.Instance.Breed.Name[0].ToString().ToLower() == "o");
+ message += Messages.FormatWildHorse(horse.Instance.Name, horse.Instance.Breed.Name, horse.Instance.RandomId, vowel);
+ }
+ }
+ return message;
+ }
+ public static string BuildAwardList(User user)
+ {
+ string message = Messages.AwardHeader;
+ if (user.Awards.AwardsEarned.Length <= 0)
+ message += Messages.NoAwards;
+ else
+ foreach (Award.AwardEntry award in user.Awards.AwardsEarned)
+ message += Messages.FormatAwardEntry(award.IconId, award.Title, award.MoneyBonus);
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildQuestLog(User user)
+ {
+ string message = "";
+ message += Messages.QuestLogHeader;
+ Quest.QuestEntry[] questList = Quest.GetPublicQuestList();
+ foreach (Quest.QuestEntry quest in questList)
+ {
+ string fmsg = "";
+ if (user.Quests.GetTrackedQuestAmount(quest.Id) > 0)
+ fmsg = Messages.QuestCompleted;
+ else
+ fmsg = Messages.QuestNotCompleted;
+
+ foreach (int questId in quest.RequiresQuestIdCompleteStatsMenu)
+ {
+ if (user.Quests.GetTrackedQuestAmount(questId) > 0)
+ continue;
+ fmsg = Messages.QuestNotAvalible;
+ break;
+ }
+
+ message += Messages.FormatQuestLogQuest(quest.Title, quest.QuestPointsEarned, quest.Difficulty, fmsg);
+ }
+
+ int totalComplete = Quest.GetTotalQuestsComplete(user);
+ int totalQuestPoints = Quest.GetTotalQuestPoints();
+
+ message += Messages.FormatQuestFooter(totalComplete, questList.Length, user.QuestPoints, totalQuestPoints);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+
+
+
+ public static string BuildNearbyList(User currentUser)
+ {
+ string message = "";
+ message += Messages.NearbyPlayersListHeader;
+ User[] nearbyUsers = GameServer.GetNearbyUsers(currentUser.X, currentUser.Y, false, true);
+ foreach (User nearbyUser in nearbyUsers)
+ {
+ if (nearbyUser.Stealth)
+ continue;
+
+ if (nearbyUser.Id == currentUser.Id)
+ continue;
+
+
+ bool isYou = (nearbyUser.Id == currentUser.Id);
+
+ int icon = nearbyUser.GetPlayerListIcon();
+ string iconFormat = "";
+ if (icon != -1)
+ iconFormat = Messages.FormatIconFormat(icon);
+
+ message += Messages.FormatPlayerEntry(iconFormat, nearbyUser.Username, nearbyUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - nearbyUser.LoginTime).TotalMinutes)), nearbyUser.X, nearbyUser.Y, nearbyUser.Idle, currentUser.MutePlayer.IsUserMuted(nearbyUser), isYou);
+ }
+
+ message += Messages.PlayerListIconInformation;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+
+ public static string BuildPlayerListAlphabetical(User currentUser)
+ {
+ string message = Messages.PlayerListAllAlphabeticalHeader;
+ GameClient[] clients = GameClient.ConnectedClients;
+ List onlineUsers = new List();
+
+ foreach (GameClient client in clients)
+ {
+ if (client.LoggedIn)
+ {
+ if (client.LoggedinUser.Stealth)
+ continue;
+ onlineUsers.Add(client.LoggedinUser);
+ }
+ }
+
+ onlineUsers = onlineUsers.OrderBy(o => o.Username).ToList();
+
+ foreach (User onlineUser in onlineUsers)
+ {
+
+ bool isYou = (onlineUser.Id == currentUser.Id);
+ int icon = onlineUser.GetPlayerListIcon();
+ string iconFormat = "";
+ if (icon != -1)
+ iconFormat = Messages.FormatIconFormat(icon);
+
+ message += Messages.FormatPlayerEntry(iconFormat, onlineUser.Username, onlineUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - onlineUser.LoginTime).TotalMinutes)), onlineUser.X, onlineUser.Y, onlineUser.Idle, currentUser.MutePlayer.IsUserMuted(onlineUser), isYou);
+ }
+
+ message += Messages.PlayerListIconInformation;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+
+ public static string BuildPlayerList(User currentUser)
+ {
+ string message = Messages.PlayerListAllHeader;
+ GameClient[] clients = GameClient.ConnectedClients;
+ foreach (GameClient client in clients)
+ {
+ if (client.LoggedIn)
+ {
+ if (client.LoggedinUser.Stealth)
+ continue;
+
+ bool isYou = (client.LoggedinUser.Id == currentUser.Id);
+
+ int icon = client.LoggedinUser.GetPlayerListIcon();
+ string iconFormat = "";
+ if (icon != -1)
+ iconFormat = Messages.FormatIconFormat(icon);
+
+ message += Messages.FormatPlayerEntry(iconFormat, client.LoggedinUser.Username, client.LoggedinUser.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - client.LoggedinUser.LoginTime).TotalMinutes)), client.LoggedinUser.X, client.LoggedinUser.Y, client.LoggedinUser.Idle, currentUser.MutePlayer.IsUserMuted(client.LoggedinUser), isYou);
+ }
+ }
+
+ message += Messages.PlayerListIconInformation;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+
+ public static string BuildBuddyList(User user)
+ {
+ string message = Messages.BuddyListHeader;
+ foreach (int id in user.Friends.List.ToArray())
+ {
+ try
+ {
+ User friend = GameServer.GetUserById(id);
+ if (friend.Stealth)
+ continue;
+
+ int icon = friend.GetPlayerListIcon();
+ string iconFormat = "";
+ if (icon != -1)
+ iconFormat = Messages.FormatIconFormat(icon);
+
+ message += Messages.FormatOnlineBuddyEntry(iconFormat, friend.Username, friend.Id, Convert.ToInt32(Math.Round((DateTime.UtcNow - friend.LoginTime).TotalMinutes)), friend.X, friend.Y);
+
+ }
+ catch (KeyNotFoundException) { }
+
+ }
+ message += Messages.BuddyListOfflineBuddys;
+
+
+ foreach (int id in user.Friends.List.ToArray())
+ {
+ if (GameServer.IsUserOnline(id))
+ continue;
+
+ string username = Database.GetUsername(id);
+ int minutes = Convert.ToInt32(Math.Round(DateTime.UtcNow.Subtract(Util.UnixTimeStampToDateTime(Database.GetPlayerLastLogin(id))).TotalMinutes));
+
+ message += Messages.FormatOfflineBuddyEntry(username, id, minutes);
+ }
+
+ message += Messages.PlayerListIconInformation;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+
+ public static string BuildBreedViewerLibary(HorseInfo.Breed breed)
+ {
+ string message = Messages.FormatHorseBreedPreview(breed.Name, breed.Description);
+ message += Messages.BreedViewerMaximumStats;
+ message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Speed * 2, 0, 0, breed.BaseStats.Speed * 2);
+ message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Strength * 2, 0, 0, breed.BaseStats.Strength * 2);
+ message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Conformation * 2, 0, 0, breed.BaseStats.Conformation * 2);
+ message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Agility * 2, 0, 0, breed.BaseStats.Agility * 2);
+ message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Endurance * 2, 0, 0, breed.BaseStats.Endurance * 2);
+ message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Inteligence * 2, 0, 0, breed.BaseStats.Inteligence * 2);
+ message += Messages.FormatHorseAdvancedStat(breed.BaseStats.Personality * 2, 0, 0, breed.BaseStats.Personality * 2);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildHorseBreedListLibary()
+ {
+ string message = "";
+ foreach (HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
+ {
+ if (breed.Swf == "")
+ continue;
+ if (breed.Type == "horse")
+ message += Messages.FormatHorseBreed(breed.Name, breed.Id);
+ else
+ message += Messages.FormatHorseRelative(breed.Name, breed.Id);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildNpcSearch(string search)
+ {
+ List foundNpcs = new List();
+ foreach (Npc.NpcEntry npc in Npc.NpcList)
+ {
+ if (npc.Name.ToLower().Contains(search.ToLower()))
+ {
+ if (npc.LibarySearchable)
+ {
+ if (foundNpcs.Count >= 5)
+ break;
+ foundNpcs.Add(npc);
+ }
+ else
+ {
+ continue;
+ }
+ }
+ else
+ {
+ continue;
+ }
+ }
+ string message = Messages.LibaryFindNpcSearchNoResults;
+ if (foundNpcs.Count >= 1)
+ {
+ message = Messages.LibaryFindNpcSearchResultsHeader;
+ foreach (Npc.NpcEntry npc in foundNpcs)
+ {
+ string searchResult = Messages.FormatNpcSearchResult(npc.Name, npc.ShortDescription, npc.X, npc.Y);
+ Logger.DebugPrint(searchResult);
+ message += searchResult;
+ }
+ }
+ if (foundNpcs.Count >= 5)
+ {
+ message += Messages.LibaryFindNpcLimit5;
+ }
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+
+ }
+
+ public static string BuildFindNpcMenu()
+ {
+ string message = Messages.LibaryFindNpc;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildWhisperSearchResults(WildHorse[] results)
+ {
+ string message = Messages.WhispererSearchingAmoungHorses;
+ if (results.Length <= 0)
+ {
+ message = Messages.WhispererNoneFound;
+ }
+ else
+ {
+ List locations = new List();
+ foreach (WildHorse result in results)
+ {
+ Point location = new Point();
+ location.X = result.X;
+ location.Y = result.Y;
+ locations.Add(location);
+ }
+ string mapxys = Messages.FormatMapLocations(locations.ToArray());
+ message += Messages.FormatWhispererHorseFoundMeta(mapxys);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ private static string buildFountain()
+ {
+ return Messages.FountainMeta;
+ }
+ private static string buildPond(User user)
+ {
+ string message = Messages.PondHeader;
+ if (!user.Inventory.HasItemId(Item.FishingPole))
+ {
+ message += Messages.PondNoFishingPole;
+ }
+ else if (!user.Inventory.HasItemId(Item.Earthworm))
+ {
+ message += Messages.PondNoEarthWorms;
+ }
+ else
+ {
+ message += Messages.PondGoFishing;
+ }
+ message += Messages.PondDrinkHereIfSafe;
+ foreach (HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ message += Messages.FormatPondDrinkHorseFormat(horse.Name, horse.BasicStats.Thirst, 1000, horse.RandomId);
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildMudHole(User user)
+ {
+ string message = "";
+ if (user.HorseInventory.HorseList.Length > 0)
+ {
+ int rngHorseIndex = GameServer.RandomNumberGenerator.Next(0, user.HorseInventory.HorseList.Length);
+ HorseInstance horse = user.HorseInventory.HorseList[rngHorseIndex];
+ horse.BasicStats.Groom = 0;
+ message += Messages.FormatMudHoleGroomDestroyed(horse.Name);
+ }
+ else
+ {
+ message += Messages.MudHoleNoHorses;
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildPassword()
+ {
+ return Messages.PasswordEntry + Messages.ExitThisPlace + Messages.MetaTerminator;
+ }
+
+ private static string buildHorseWhisperer()
+ {
+ string message = "";
+ foreach (HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
+ {
+ if (breed.Swf == "")
+ continue;
+ if (breed.SpawnInArea == "none")
+ continue;
+ message += Messages.FormatWhispererHorseBreedButton(breed.Name, breed.Id);
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ private static string buildBank(User user)
+ {
+ double moneyMade = 0;
+ if (user.BankInterest > user.BankMoney)
+ {
+ moneyMade = user.BankInterest - user.BankMoney;
+ if (moneyMade > 100000000)
+ moneyMade = 100000000;
+ user.BankMoney += moneyMade;
+
+ }
+
+ string message = "";
+ moneyMade = Math.Floor(moneyMade);
+ if (moneyMade > 0)
+ message += Messages.FormatBankIntrestMadeMeta(Convert.ToUInt64(moneyMade));
+
+ message += Messages.FormatBankCarryingMeta(user.Money, Convert.ToUInt64(Math.Floor(user.BankMoney)));
+ message += Messages.BankWhatToDo;
+ message += Messages.FormatBankOptionsMeta(user.Money, Convert.ToUInt64(Math.Floor(user.BankMoney)));
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+
+
+ return message;
+ }
+ public static string BuildMinigamePlayers()
+ {
+ string message = Messages.CityHallTop25MinigamePlayers;
+ int placing = 1;
+ foreach (int userId in Database.GetMinigamePlayers())
+ {
+ string username = Database.GetUsername(userId);
+ int totalMinigames = Database.GetPlayerTotalMinigamesPlayed(userId);
+
+ message += Messages.FormatCityHallTopMinigamePlayers(placing, totalMinigames, username);
+ placing++;
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildMostExperienedHoses()
+ {
+ string message = Messages.CityHallTop25ExperiencedHorses;
+
+ int placing = 1;
+ foreach (HorseInstance horse in Database.GetMostExperiencedHorses())
+ {
+ message += Messages.FormatCityHallTopExperiencedHorses(placing, horse.BasicStats.Experience, Database.GetUsername(horse.Owner), horse.Name);
+ placing++;
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildExperiencedPlayers()
+ {
+ string message = Messages.CityHallTop25ExperiencedPlayers;
+ int placing = 1;
+ foreach (int userId in Database.GetExperiencedPlayers())
+ {
+ string username = Database.GetUsername(userId);
+ int exp = Database.GetExperience(userId);
+
+ message += Messages.FormatCityHallTopExperiencedPlayersEntry(placing, exp, username);
+ placing++;
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildAdventurousPlayers()
+ {
+ string message = Messages.CityHallTop25AdventurousPlayers;
+ int placing = 1;
+ foreach (int userId in Database.GetAdventurousPlayers())
+ {
+ string username = Database.GetUsername(userId);
+ int questPoints = Database.GetPlayerQuestPoints(userId);
+
+ message += Messages.FormatCityHallTopAdventurousPlayersEntry(placing, questPoints, username);
+ placing++;
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildMostSpoiledHorses()
+ {
+ string message = Messages.CityHallTop100SpoiledHorses;
+ foreach(HorseInstance horse in Database.GetMostSpoiledHorses())
+ {
+ message += Messages.FormatCityHallTopSpoiledHorseEntry(horse.Spoiled, Database.GetUsername(horse.Owner), horse.Name);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildRichestPlayers()
+ {
+ string message = Messages.CityHallTop25Players;
+ int placing = 1;
+ foreach(int userId in Database.GetRichestPlayers())
+ {
+ string username = Database.GetUsername(userId);
+ double totalMoney = Math.Floor(Database.GetPlayerMoney(userId) + Database.GetPlayerBankMoney(userId));
+
+ message += Messages.FormatCityHallTopPlayerEntry(placing, totalMoney, username);
+ placing++;
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildMultiHorses(User user, string swf)
+ {
+ string message = Messages.OtherPlayersHere;
+ Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
+ room.Join(user);
+
+ foreach (User userOnTile in room.JoinedUsers)
+ {
+ if (userOnTile.Id == user.Id)
+ continue;
+
+ message += Messages.FormatMultiroomParticipent(userOnTile.Username);
+ }
+
+ message += Messages.R1;
+
+ message += Messages.MultiHorseSelectOneToJoinWith;
+ int placing = 1;
+ foreach (HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToArray())
+ {
+ if (horse.Leaser > 0)
+ continue;
+
+ HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED, user);
+ HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH, user);
+ HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION, user);
+ HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY, user);
+ HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE, user);
+ HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE, user);
+ HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY, user);
+
+ message += Messages.FormatMultiHorses(placing, horse.Name, horse.Breed.Name, swf + ".swf?ID=" + horse.RandomId + "&PL=" + user.Username + "&SP=" + speedStat.Total + "&ST=" + strengthStat.Total + "&CO=" + conformationStat.Total + "&AG=" + agilityStat.Total + "&EN=" + enduranceStat.Total + "&IN=" + inteligenceStat.Total + "&PE=" + personalityStat.Total + "&");
+ }
+
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+
+ }
+ private static string buildHorseGame(User user, string swf)
+ {
+ string message = Messages.HorseGamesSelectHorse;
+ int placing = 1;
+ foreach(HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToArray())
+ {
+ if (horse.Leaser > 0)
+ continue;
+
+
+ HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED, user);
+ HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH, user);
+ HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION, user);
+ HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY, user);
+ HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE, user);
+ HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE, user);
+ HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY, user);
+
+
+ message += Messages.FormatHorseGamesEntry(placing, horse.Name, swf + ".swf?ID=" + horse.RandomId + "&SP=" + speedStat.Total + "&ST=" + strengthStat.Total + "&CO=" + conformationStat.Total + "&AG=" + agilityStat.Total + "&EN=" + enduranceStat.Total + "&IN=" + inteligenceStat.Total + "&PE=" + personalityStat.Total + "&");
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildMostValuedRanches()
+ {
+ string message = Messages.CityHallTop25Ranches;
+ int total = 1;
+
+ foreach(Ranch ranch in Ranch.Ranches.OrderByDescending(o => o.InvestedMoney).ToList())
+ {
+ if (ranch.OwnerId == -1)
+ continue;
+
+
+ message += Messages.FormatCityHallTopRanchEntry(total, Database.GetUsername(ranch.OwnerId), ranch.InvestedMoney, Messages.FormatMapLocation(ranch.X, ranch.Y));
+
+ if (total > 26)
+ break;
+
+ total++;
+ }
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildTopAutoSellHorses()
+ {
+ string message = Messages.CityHallCheapestAutoSells;
+ HorseInstance[] horses = Database.GetCheapestHorseAutoSell();
+ foreach(HorseInstance horse in horses)
+ {
+ message += Messages.FormatCityHallCheapAutoSellEntry(horse.AutoSell, Database.GetUsername(horse.Owner), horse.Name, horse.Color, horse.Breed.Name, horse.BasicStats.Experience);
+ }
+ message += Messages.CityHallMostExpAutoSells;
+ HorseInstance[] horsesExp = Database.GetBiggestExpAutoSell();
+ foreach (HorseInstance horse in horsesExp)
+ {
+ message += Messages.FormatCityHallBestExpAutoSellEntry(horse.BasicStats.Experience, Database.GetUsername(horse.Owner), horse.Name, horse.AutoSell, horse.Color, horse.Breed.Name);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildRanchEdit(Ranch ranch)
+ {
+ return Messages.FormatRanchEditDescriptonMeta(ranch.Title, ranch.Description) + Messages.BackToMap + Messages.MetaTerminator;
+ }
+ public static string BuildRanchSellConfirmation()
+ {
+ return Messages.RanchSellAreYouSure + Messages.BackToMap + Messages.MetaTerminator;
+ }
+ public static string BuildRanchUpgrade(Ranch ranch)
+ {
+ string message = "";
+ Ranch.RanchUpgrade currentUpgrade = ranch.GetRanchUpgrade();
+ bool canUpgrade = Ranch.RanchUpgrade.RanchUpgradeExists(currentUpgrade.Id + 1);
+
+ string upgrade = "";
+ if(canUpgrade)
+ {
+ Ranch.RanchUpgrade nextUpgrade = Ranch.RanchUpgrade.GetRanchUpgradeById(currentUpgrade.Id + 1);
+ upgrade = Messages.FormatNextUpgrade(nextUpgrade.Title, nextUpgrade.Cost);
+ }
+ message += Messages.FormatCurrentUpgrade(currentUpgrade.Title, currentUpgrade.Description, upgrade, ranch.GetSellPrice());
+ message += Messages.BackToMap;
+ return message;
+ }
+ public static string BuildRanchBuildingsAvalible(Ranch ranch, int slot)
+ {
+ string message = "";
+ if(ranch.GetBuilding(slot-1) != null)
+ {
+ Ranch.RanchBuilding building = ranch.GetBuilding(slot - 1);
+ message += Messages.FormatBuildingAlreadyPlaced(building.Title, building.Id, building.GetTeardownPrice());
+ }
+ else
+ {
+ message += Messages.RanchCanBuildOneOfTheFollowingInThisSpot;
+ foreach (Ranch.RanchBuilding building in Ranch.RanchBuilding.RanchBuildings)
+ {
+ message += Messages.FormatBuildingEntry(building.Title, building.Cost, building.Id);
+ }
+ }
+
+ message += Messages.BackToMap;
+ return message;
+ }
+ public static string BuildRanchBuilding(Ranch ranch, Ranch.RanchUpgrade upgrade)
+ {
+ string message = "";
+ message += Messages.FormatViewBuilding(upgrade.Title, upgrade.Description);
+
+ message += Messages.BackToMap;
+ return message;
+ }
+ public static string BuildRanchBuilding(Ranch ranch, Ranch.RanchBuilding building)
+ {
+ string message = "";
+ message += Messages.FormatViewBuilding(building.Title, building.Description);
+ if(building.Id == 1 || building.Id == 10 || building.Id == 11) // Barn, Big Barn, Gold Barn
+ {
+ int ranchOwner = ranch.OwnerId; // TOCTOU BAD
+
+ if (ranchOwner != -1)
+ {
+ string horsesList = buildHorseListIndependantlyOfUserInstance(ranchOwner);
+ message += Messages.FormatBarn(horsesList);
+ }
+ }
+ message += Messages.BackToMap;
+ return message;
+ }
+ private static string buildRanch(User user, int ranchId)
+ {
+
+ string message = "";
+
+ if(!Ranch.RanchExists(ranchId)) // Ghost ranchs exist.. apparently?
+ {
+ user.MajorPriority = false;
+ return BuildMetaInfo(user, user.X, user.Y);
+ }
+
+ Ranch ranch = Ranch.GetRanchById(ranchId);
+ bool mine = (ranch.OwnerId == user.Id);
+ string swfModule = ranch.GetSwf(mine);
+
+ byte[] moduleSwf = PacketBuilder.CreateSwfModulePacket(swfModule, PacketBuilder.PACKET_SWF_MODULE_FORCE);
+ user.LoggedinClient.SendPacket(moduleSwf);
+
+ if (mine) // This is My DS.
+ {
+ GameServer.CheckMail(user);
+ user.DoRanchActions();
+
+ string title = ranch.Title;
+ if (title == "" || title == null)
+ title = Messages.RanchDefaultRanchTitle;
+ message += Messages.FormatRanchTitle(Database.GetUsername(ranch.OwnerId), title);
+ message += Messages.BuildingRestHere;
+
+ int numbBarns = ranch.GetBuildingCount(1);
+ int numbWaterWell = ranch.GetBuildingCount(2);
+ int numbGrainSilo = ranch.GetBuildingCount(3);
+ int numbTrainingPen = ranch.GetBuildingCount(6);
+ int numbWagon = ranch.GetBuildingCount(7);
+ int numbWindmill = ranch.GetBuildingCount(8);
+ int numbGarden = ranch.GetBuildingCount(9);
+ int numbBigBarn = ranch.GetBuildingCount(10);
+ int numbGoldBarn = ranch.GetBuildingCount(11);
+
+
+ if (numbBarns > 0)
+ message += Messages.FormatBuildingBarn(numbBarns, numbBarns * 4);
+ if (numbBigBarn > 0)
+ message += Messages.FormatBuildingBarn(numbBigBarn, numbBigBarn * 8);
+ if (numbGoldBarn > 0)
+ message += Messages.FormatBuildingBarn(numbGoldBarn, numbGoldBarn * 12);
+ if (numbBarns > 0 || numbBigBarn > 0 || numbGoldBarn > 0)
+ message += Messages.RanchHorsesFullyRested;
+ if (numbWaterWell > 0)
+ message += Messages.BuildingWaterWell;
+ if (numbGrainSilo > 0)
+ message += Messages.BuildingGrainSilo;
+ if (numbWindmill > 0)
+ message += Messages.FormatBuildingWindmill(numbWindmill, 5000 * numbWindmill);
+ if (numbGarden > 0)
+ message += Messages.BuildingVegatableGarden;
+ if (numbWagon > 0)
+ message += Messages.BuildingWagon;
+ if (numbTrainingPen > 0)
+ message += Messages.BuildingTrainingPen;
+
+ message += Messages.FormatRanchYoursDescription(ranch.Description);
+ }
+ else if(ranch.OwnerId == -1) // No mans sky
+ {
+
+ message += Messages.FormatRanchUnownedMeta(ranch.Value);
+ if (user.OwnedRanch == null)
+ {
+ if (user.Subscribed)
+ message += Messages.RanchYouCouldPurchaseThisRanch;
+ else
+ message += Messages.RanchSubscribersOnly;
+ }
+ else
+ {
+ message += Messages.RanchYouAllreadyOwnARanch;
+ }
+ }
+ else
+ {
+ string title = ranch.Title;
+ if (title == "" || title == null)
+ title = Messages.RanchDefaultRanchTitle;
+
+ message += Messages.FormatRanchTitle(Database.GetUsername(ranch.OwnerId), title);
+ message += Messages.FormatRanchDescOthers(ranch.Description);
+ }
+
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+ public static string BuildAuctionHorseList(User user)
+ {
+ string message = Messages.AuctionListHorse;
+ foreach(HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ if (horse.Leaser > 0)
+ continue;
+ if (horse.Category != "TRADING")
+ continue;
+
+ bool tacked = (horse.Equipment.Saddle != null || horse.Equipment.SaddlePad != null || horse.Equipment.Bridle != null || horse.Equipment.Companion != null);
+
+ message += Messages.FormatAuctionHorseListEntry(horse.Name, tacked, horse.RandomId);
+ }
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildAuction(User user, Auction auction)
+ {
+ Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
+ room.Join(user);
+
+ string message = "";
+ message += Messages.AuctionsRunning;
+ foreach(Auction.AuctionEntry entry in auction.AuctionEntries.ToArray())
+ {
+ message += Messages.FormatAuctionHorseEntry(Database.GetUsername(entry.OwnerId), entry.Horse.Color, entry.Horse.Breed.Name, entry.Horse.Gender, entry.Horse.BasicStats.Experience, entry.Completed ? "" : Messages.FormatAuctionViewHorseButton(entry.Horse.RandomId));
+ if (!entry.Completed)
+ message += Messages.FormatAuctionGoingTo(entry.TimeRemaining, Database.GetUsername(entry.HighestBidder), entry.HighestBid, entry.RandomId);
+ else
+ {
+ if (entry.HighestBidder == entry.OwnerId)
+ message += Messages.AuctionNotSold;
+ else
+ message += Messages.FormatAuctionSoldTo(Database.GetUsername(entry.HighestBidder), entry.HighestBid);
+ }
+ }
+ User[] users = room.JoinedUsers.ToArray();
+ List usernames = new List();
+ foreach(User userInst in users)
+ {
+ usernames.Add(userInst.Username);
+ }
+ message += Messages.FormatAuctionPlayersHere(string.Join(", ", usernames.ToArray()));
+ message += Messages.AuctionAHorse;
+
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildWorkshop(User user)
+ {
+ Workshop shop = Workshop.GetWorkshopAt(user.X, user.Y);
+ string message = "";
+ foreach (Workshop.CraftableItem craft in shop.CraftableItems)
+ {
+ Item.ItemInformation itmInfo = Item.GetItemById(craft.GiveItemId);
+ message += Messages.FormatWorkshopCraftEntry(itmInfo.IconId, itmInfo.Name, craft.MoneyCost, itmInfo.Id, craft.Id);
+ // Get requirements
+ List Requirements = new List();
+ foreach (Workshop.RequiredItem reqItem in craft.RequiredItems)
+ {
+
+ Item.ItemInformation requiredItemInfo = Item.GetItemById(reqItem.RequiredItemId);
+ string requirementTxt;
+ if (reqItem.RequiredItemCount <= 1)
+ requirementTxt = Messages.FormatWorkshopRequireEntry(reqItem.RequiredItemCount, requiredItemInfo.Name);
+ else
+ requirementTxt = Messages.FormatWorkshopRequireEntry(reqItem.RequiredItemCount, requiredItemInfo.PluralName);
+ Requirements.Add(requirementTxt);
+ }
+ message += Messages.FormatWorkshopRequirements(string.Join(Messages.WorkshopAnd, Requirements.ToArray()));
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildGroomer(User User, Groomer groomer)
+ {
+ string message = "";
+ int totalPrice = 0;
+ int count = 0;
+ foreach(HorseInstance horse in User.HorseInventory.HorseList)
+ {
+ message += Messages.FormatHorseGroomCurrentlyAt(horse.Name, horse.BasicStats.Groom, 1000);
+ if(horse.BasicStats.Groom < groomer.Max)
+ {
+ int price = groomer.CalculatePrice(horse.BasicStats.Groom);
+ totalPrice += price;
+ count++;
+ message += Messages.FormatGroomerApplyService(price, horse.RandomId);
+ }
+ }
+ message += Messages.FormatGroomerApplyAllService(count, totalPrice);
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildVet(User user, Vet vet)
+ {
+ string message = "";
+ int totalPrice = 0;
+
+
+ foreach (HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ message += Messages.FormatVetServiceHorseMeta(horse.Name, horse.BasicStats.Health, 1000);
+
+ if (horse.BasicStats.Health >= 1000)
+ message += Messages.VetSerivcesNotNeeded;
+ else
+ {
+ int price = vet.CalculatePrice(horse.BasicStats.Health);
+ totalPrice += price;
+
+ message += Messages.FormatVetApplyServiceMeta(price, horse.RandomId);
+ }
+
+ }
+ if (user.HorseInventory.HorseList.Length > 0)
+ message += Messages.FormatVetApplyAllServiceMeta(totalPrice);
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildBarn(User user, Barn barn)
+ {
+ string message = "";
+ int totalPrice = 0;
+ foreach (HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ message += Messages.FormatBarnHorseStatus(horse.Name, horse.BasicStats.Tiredness, horse.BasicStats.Hunger, horse.BasicStats.Thirst);
+
+ int price = barn.CalculatePrice(horse.BasicStats.Tiredness, horse.BasicStats.Hunger, horse.BasicStats.Thirst);
+ if(price > 0)
+ {
+ totalPrice += price;
+ message += Messages.FormatBarnLetHorseRelax(price, horse.RandomId);
+ }
+ else
+ {
+ message += Messages.BarnHorseMaxed;
+ }
+
+ }
+ message += Messages.FormatBarnLetAllHorsesReleax(totalPrice);
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildFarrier(User user, Farrier farrier)
+ {
+ string message = "";
+ int totalPrice = 0;
+ int maxShoes = 1000;
+ foreach (HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ message += Messages.FormatFarrierCurrentShoes(horse.Name, horse.BasicStats.Shoes, maxShoes);
+ if (horse.BasicStats.Shoes < farrier.IronShoesAmount)
+ message += Messages.FormatFarrierApplyIron(farrier.IronCost, farrier.IronShoesAmount, horse.RandomId);
+
+ if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
+ {
+ totalPrice += farrier.SteelCost;
+ message += Messages.FormatFarrierApplySteel(farrier.SteelCost, farrier.SteelShoesAmount, horse.RandomId);
+ }
+
+ }
+ if(totalPrice > 0)
+ message += Messages.FormatFarrierApplySteelToAll(totalPrice, farrier.SteelShoesAmount);
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildRiddlerRiddle(User user)
+ {
+ string message = "";
+ if (Riddler.HasCompletedAllRiddles(user)) {
+ message = Messages.RiddlerAnsweredAll;
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ else
+ {
+ Riddler riddle = Riddler.GetRandomRiddle(user);
+ user.LastRiddle = riddle;
+
+ message += Messages.FormatRiddlerRiddle(riddle.Riddle);
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ }
+
+
+ public static string BuildHorseEscapedMessage()
+ {
+ string message = Messages.HorseEvadedCapture;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildHorseEscapedAnyway()
+ {
+ string message = Messages.HorseEscapedAnyway;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildHorseCaughtMessage()
+ {
+ string message = Messages.YouCapturedTheHorse;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildAbuseReportPage()
+ {
+ string reportReasons = "";
+ foreach(AbuseReport.ReportReason reason in AbuseReport.ReportReasons)
+ {
+ reportReasons += Messages.FormatAbuseReportReason(reason.Id, reason.Name);
+ }
+ return Messages.FormatAbuseReportMetaPage(reportReasons);
+ }
+ private static string buildHorseList(User user, bool youView=true)
+ {
+ string message = "";
+ int i = 1;
+ foreach (HorseInfo.Category category in HorseInfo.HorseCategories)
+ {
+ HorseInstance[] horsesInCategory = user.HorseInventory.GetHorsesInCategory(category).OrderBy(o => o.Name).ToArray();
+ if (horsesInCategory.Length > 0)
+ {
+ if (youView)
+ message += category.Meta;
+ else
+ message += category.MetaOthers;
+ foreach (HorseInstance instance in horsesInCategory)
+ {
+ message += Messages.FormatHorseEntry(i, instance.Name, instance.Breed.Name, instance.RandomId, instance.AutoSell > 0);
+ i++;
+ }
+ }
+ }
+ return message;
+
+ }
+ public static string BuildHorseInventory(User user)
+ {
+ string message = Messages.FormatHorseHeader(user.MaxHorses, user.HorseInventory.HorseList.Length);
+
+ message += buildHorseList(user);
+ message += Messages.ViewBaiscStats;
+ message += Messages.ViewAdvancedStats;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildPlayerListMenu(User user)
+ {
+ string message = "";
+
+ int friendsOnline = 0;
+ foreach(int friendId in user.Friends.List)
+ {
+ if (GameServer.IsUserOnline(friendId))
+ friendsOnline++;
+ }
+
+ message += Messages.PlayerListHeader;
+ message += Messages.PlayerListSelectFromFollowing;
+ message += Messages.FormatPlayerBuddyList(friendsOnline);
+ message += Messages.PlayerListOfNearby;
+ message += Messages.FormatPlayerList(GameServer.GetNumberOfPlayers() - 1);
+ message += Messages.PlayerListOfPlayersAlphabetically;
+
+ message += Messages.FormatMapAllBuddiesList(Messages.FormatMapLocations(GameServer.GetAllBuddyLocations(user)));
+ message += Messages.FormatMapAllPlayersList(Messages.FormatMapLocations(GameServer.GetAllPlayerLocations(user)));
+
+ message += Messages.PlayerListAbuseReport;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+
+ return message;
+ }
+ public static string BuildMailLetter(Mailbox.Mail mailMessage, int itemRandomId)
+ {
+ DateTime time = Util.UnixTimeStampToDateTime(mailMessage.Timestamp);
+ string amOrPm = "am";
+ string[] months = new string[] { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+ string minutes = time.Minute.ToString();
+ if (minutes.Length <= 1)
+ minutes = "0" + minutes;
+ int hours = time.Hour;
+ if (hours == 0)
+ {
+ amOrPm = "am";
+ hours = 12;
+ }
+ if (hours > 12)
+ {
+ hours -= 12;
+ amOrPm = "pm";
+ }
+
+
+ string date = months[time.Month-1] + " " + time.Day + ", " + time.Year + " " + hours + ":" + minutes + amOrPm;
+ string message = Messages.FormatMailReadMessage(Database.GetUsername(mailMessage.FromUser), date, mailMessage.Subject, mailMessage.Message, itemRandomId);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildMailList(User user, InventoryItem mailMessageForPlayer)
+ {
+ string message = Messages.MailSelectFromFollowing;
+ foreach(ItemInstance inst in mailMessageForPlayer.ItemInstances)
+ {
+ Mailbox.Mail mail = user.MailBox.GetMessageByRandomId(inst.Data);
+ message += Messages.FormatMailEntry(mail.Subject, Database.GetUsername(mail.FromUser), inst.RandomId);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildInventoryInfo(PlayerInventory inv)
+ {
+ string message = "";
+ message += Messages.FormatPlayerInventoryHeaderMeta(inv.Count, inv.BaseUser.MaxItems);
+ InventoryItem[] items = inv.GetItemList();
+ foreach(InventoryItem item in items)
+ {
+ Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
+ string title = itemInfo.Name;
+ if (item.ItemInstances.Length > 1 && itemInfo.PluralName != "")
+ title = itemInfo.PluralName;
+
+
+ message += Messages.FormatPlayerInventoryItemMeta(itemInfo.IconId, item.ItemInstances.Length, title);
+
+ int randomId = item.ItemInstances[0].RandomId;
+ if (itemInfo.Type != "QUEST" && itemInfo.Type != "TEXT" && !(itemInfo.Id == Item.DorothyShoes || itemInfo.Id == Item.Telescope) && World.CanDropItems(inv.BaseUser.X, inv.BaseUser.Y))
+ message += Messages.FormatItemDropButton(randomId);
+
+ if (itemInfo.Id == Item.DorothyShoes || itemInfo.Id == Item.Telescope)
+ message += Messages.FormatItemUseButton(randomId);
+
+ if (itemInfo.Id == Item.Present)
+ message += Messages.FormatItemOpenButton(randomId);
+
+ if (itemInfo.Type == "CLOTHES" || itemInfo.Type == "JEWELRY")
+ message += Messages.FormatWearButton(randomId);
+
+ if (itemInfo.Type == "TEXT")
+ message += Messages.FormatItemReadButton(item.ItemId);
+
+ if (itemInfo.Type == "PLAYERFOOD")
+ message += Messages.FormatItemConsumeButton(randomId);
+
+ if (Item.IsThrowable(itemInfo.Id))
+ message += Messages.FormatItemThrowButton(itemInfo.Id);
+
+ message += Messages.FormatItemInformationButton(randomId);
+ message += Messages.R1;
+ }
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildHorseFeedMenu(HorseInstance horse, User user)
+ {
+ string message = "";
+ message += Messages.FormatHorseCurrentStatus(horse.Name);
+ message += Messages.FormatHorseBasicStat(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
+ message += Messages.HorseHoldingHorseFeed;
+ foreach(InventoryItem item in user.Inventory.GetItemList())
+ {
+ Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo();
+ bool isHorseFood = false;
+ if (itemInfo.Effects.Length >= 2)
+ isHorseFood = (itemInfo.Effects[1].EffectsWhat == "MOOD" && itemInfo.Effects[0].EffectsWhat == "HUNGER");
+ if (itemInfo.Type == "HORSEFOOD" || isHorseFood)
+ {
+ message += Messages.FormatHorseFeedEntry(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, item.ItemInstances[0].RandomId);
+ }
+
+ }
+ message += Messages.BackToHorse;
+ return message;
+ }
+
+ public static string BuildAutoSellMenu(HorseInstance horse)
+ {
+ string message = "";
+ message += Messages.FormatAutoSellMenu(horse.AutoSell);
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+
+ public static string BuildHorseReleaseConfirmationMessage(HorseInstance horse)
+ {
+ string message = Messages.FormatHorseAreYouSureMessage(horse.RandomId);
+ message += Messages.BackToMapHorse;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildHorseCompanionEquipMenu(HorseInstance horse, User user)
+ {
+ string message = "";
+ message += Messages.FormatHorseCompanionMenuHeader(horse.Name);
+ if (horse.Equipment.Companion != null)
+ message += Messages.FormatHorseCompanionSelected(horse.Equipment.Companion.IconId, horse.Equipment.Companion.Name);
+ message += Messages.HorseCompanionMenuCurrentlyAvalibleCompanions;
+ foreach (InventoryItem item in user.Inventory.GetItemList())
+ {
+ Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo();
+ if(itemInfo.Type == "COMPANION")
+ {
+ message += Messages.FormatHorseCompanionOption(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, item.ItemId);
+ }
+ }
+ message += Messages.BackToHorse;
+ return message;
+ }
+
+ public static string BuildAllBasicStats(User user)
+ {
+ string message = Messages.HorseAllBasicStats;
+ foreach(HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ message += Messages.FormaHorseAllBasicStatsEntry(horse.Name, horse.Color, horse.Breed.Name, horse.Gender, horse.BasicStats.Experience);
+ message += Messages.FormatHorseBasicStat(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildHorseDescriptionEditMeta(HorseInstance horse)
+ {
+ string message = Messages.FormatDescriptionEditMeta(horse.Name, horse.Description);
+ message += Messages.BackToHorse;
+ return message;
+ }
+ public static string BuildHorseInformation(HorseInstance horse, User user)
+ {
+ bool isMyHorse = horse.Owner == user.Id;
+ user.HorseWindowOpen = true;
+
+ string message = "";
+ if (isMyHorse)
+ message += Messages.FormatHorseNameYours(horse.Name);
+ else
+ message += Messages.FormatHorseNameOthers(horse.Name, Database.GetUsername(horse.Owner));
+
+ message += Messages.FormatHorseDescription(horse.Description);
+ message += Messages.FormatHorseHandsHigh(horse.Color, horse.Breed.Name, horse.Gender, HorseInfo.CalculateHands(horse.AdvancedStats.Height, false));
+ message += Messages.FormatHorseExperience(horse.BasicStats.Experience);
+
+
+ if (horse.TrainTimer > 0)
+ message += Messages.FormatTrainableIn(horse.TrainTimer);
+ else
+ message += Messages.HorseIsTrainable;
+
+ if(horse.Leaser != 0)
+ {
+ message += Messages.FormatHorseIsLeased(horse.LeaseTime);
+ }
+
+ if (isMyHorse)
+ {
+ if (user.CurrentlyRidingHorse == null)
+ message += Messages.FormatMountButton(horse.RandomId);
+ else
+ message += Messages.FormatDisMountButton(horse.RandomId);
+
+
+ message += Messages.FormatFeedButton(horse.RandomId);
+ if (horse.Leaser == 0)
+ {
+ message += Messages.FormatTackButton(horse.RandomId);
+ }
+ message += Messages.FormatPetButton(horse.RandomId);
+ if (horse.Leaser == 0)
+ {
+ message += Messages.FormatProfileButton(horse.RandomId);
+
+ if (horse.Equipment.Saddle == null && horse.Equipment.SaddlePad == null && horse.Equipment.Bridle == null && horse.Equipment.Companion == null)
+ {
+ string autoSellMessage = Messages.HorseNoAutoSell;
+ if (horse.AutoSell > 0)
+ autoSellMessage = Messages.FormatAutoSellPrice(horse.AutoSell);
+ message += Messages.FormatAutoSell(autoSellMessage);
+ if (horse.AutoSell > 0)
+ message += Messages.HorseChangeAutoSell;
+ else
+ message += Messages.HorseSetAutoSell;
+ }
+ else
+ {
+ message += Messages.HorseCantAutoSellTacked;
+ }
+ }
+ else
+ {
+ message += Messages.R1;
+ }
+ }
+ else
+ {
+ if (horse.AutoSell > 0)
+ message += Messages.FormatAutoSellOthers(horse.AutoSell);
+ }
+
+
+ if (horse.Leaser == 0)
+ {
+
+ if (isMyHorse)
+ message += Messages.FormatHorseCategory(horse.Category, Messages.HorseMarkAsCategory);
+ else
+ message += Messages.FormatHorseCategory(horse.Category, "");
+ }
+
+ message += Messages.HorseStats;
+
+ // Energy == Tiredness
+ message += Messages.FormatHorseBasicStat(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
+ message += Messages.HorseTacked;
+
+ if (horse.Equipment.Saddle != null)
+ message += Messages.FormatHorseTackEntry(horse.Equipment.Saddle.IconId, horse.Equipment.Saddle.Name, horse.Equipment.Saddle.Id);
+
+ if (horse.Equipment.SaddlePad != null)
+ message += Messages.FormatHorseTackEntry(horse.Equipment.SaddlePad.IconId, horse.Equipment.SaddlePad.Name, horse.Equipment.SaddlePad.Id);
+ if (horse.Equipment.Bridle != null)
+ message += Messages.FormatHorseTackEntry(horse.Equipment.Bridle.IconId, horse.Equipment.Bridle.Name, horse.Equipment.Bridle.Id);
+
+ if(horse.Leaser == 0)
+ {
+ message += Messages.HorseCompanion;
+ if (horse.Equipment.Companion != null)
+ if (isMyHorse)
+ message += Messages.FormatHorseCompanionEntry(horse.Equipment.Companion.IconId, horse.Equipment.Companion.Name, Messages.HorseCompanionChangeButton, horse.Equipment.Companion.Id);
+ else
+ message += Messages.FormatHorseCompanionEntry(horse.Equipment.Companion.IconId, horse.Equipment.Companion.Name, "", horse.Equipment.Companion.Id);
+ else
+ if (isMyHorse)
+ message += Messages.HorseNoCompanion;
+ }
+
+ message += Messages.FormatHorseAdvancedStats(horse.Spoiled, horse.MagicUsed);
+
+ HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED);
+ HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH);
+ HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION);
+ HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY);
+ HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE);
+ HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE);
+ HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY);
+
+ message += Messages.FormatHorseAdvancedStat(speedStat.BreedValue, speedStat.CompanionOffset, speedStat.TackOffset, speedStat.MaxValue);
+ message += Messages.FormatHorseAdvancedStat(strengthStat.BreedValue, strengthStat.CompanionOffset, strengthStat.TackOffset, strengthStat.MaxValue);
+ message += Messages.FormatHorseAdvancedStat(conformationStat.BreedValue, conformationStat.CompanionOffset, conformationStat.TackOffset, conformationStat.MaxValue);
+ message += Messages.FormatHorseAdvancedStat(agilityStat.BreedValue, agilityStat.CompanionOffset, agilityStat.TackOffset, agilityStat.MaxValue);
+ message += Messages.FormatHorseAdvancedStat(enduranceStat.BreedValue, enduranceStat.CompanionOffset, enduranceStat.TackOffset, enduranceStat.MaxValue);
+ message += Messages.FormatHorseAdvancedStat(inteligenceStat.BreedValue, inteligenceStat.CompanionOffset, inteligenceStat.TackOffset, inteligenceStat.MaxValue);
+ message += Messages.FormatHorseAdvancedStat(personalityStat.BreedValue, personalityStat.CompanionOffset, personalityStat.TackOffset, personalityStat.MaxValue);
+
+ message += Messages.FormatHorseBreedDetails(horse.Breed.Name, horse.Breed.Description);
+ message += Messages.FormatHorseHeight(HorseInfo.CalculateHands(horse.Breed.BaseStats.MinHeight, false), HorseInfo.CalculateHands(horse.Breed.BaseStats.MaxHeight, false));
+
+ message += Messages.FormatPossibleColors(horse.Breed.Colors);
+ if (horse.Leaser == 0)
+ {
+ if (isMyHorse)
+ {
+ bool canRelease = true;
+ if (World.InTown(user.X, user.Y))
+ canRelease = false;
+
+
+ if (World.InSpecialTile(user.X, user.Y))
+ {
+ World.SpecialTile tile = World.GetSpecialTile(user.X, user.Y);
+ if (tile.Code != null)
+ canRelease = false;
+ }
+
+ if (canRelease)
+ message += Messages.FormatHorseReleaseButton(horse.Breed.Type.ToUpper());
+ }
+ }
+
+
+ message += Messages.HorseOthers;
+ if (isMyHorse)
+ message += buildHorseList(user);
+ else
+ message += buildHorseListIndependantlyOfUserInstance(horse.Owner);
+
+ message += Messages.BackToMapHorse;
+ message += Messages.MetaTerminator;
+
+ return message;
+
+ }
+
+ public static string BuildAllStats(User user)
+ {
+ string message = Messages.HorseAllStatsHeader;
+ foreach(HorseInstance horse in user.HorseInventory.HorseList)
+ {
+ HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED);
+ HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH);
+ HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION);
+ HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY);
+ HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE);
+ HorseInfo.StatCalculator inteligenceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.INTELIGENCE);
+ HorseInfo.StatCalculator personalityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.PERSONALITY);
+
+ message += Messages.FormatAllStatsEntry(horse.Name, horse.Color, horse.Breed.Name, horse.Gender, horse.BasicStats.Experience);
+ message += Messages.FormatCompactedBasicStats(horse.BasicStats.Health, horse.BasicStats.Hunger, horse.BasicStats.Thirst, horse.BasicStats.Mood, horse.BasicStats.Tiredness, horse.BasicStats.Groom, horse.BasicStats.Shoes);
+ message += Messages.FormatCompactedAdvancedStats(speedStat.Total, strengthStat.Total, conformationStat.Total, agilityStat.Total, enduranceStat.Total, inteligenceStat.Total, personalityStat.Total);
+ }
+ message += Messages.HorseAllStatsLegend;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildMiscStats(User user)
+ {
+ string message = Messages.StatMiscHeader;
+ if (user.TrackedItems.TrackingItems.Length <= 0)
+ message += Messages.StatMiscNoneRecorded;
+ foreach(Tracking.TrackedItem trackedItem in user.TrackedItems.TrackingItems.OrderBy(o => Tracking.GetTrackedItemsStatsMenuName(o.What)))
+ {
+ try
+ {
+ message += Messages.FormatMiscStatsEntry(Tracking.GetTrackedItemsStatsMenuName(trackedItem.What), trackedItem.Count);
+ }
+ catch(KeyNotFoundException)
+ {
+ Logger.ErrorPrint(user.Username + " Has tracked items in db that dont have a value associated.");
+ continue;
+ }
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+
+
+ public static string BuildTackMenu(HorseInstance horse, User user)
+ {
+ string message = Messages.FormatTackedAsFollowedMessage(horse.Name);
+ if(horse.Equipment.Saddle != null)
+ message += Messages.FormatUnEquipSaddle(horse.Equipment.Saddle.IconId, horse.Equipment.Saddle.Name);
+ if (horse.Equipment.SaddlePad != null)
+ message += Messages.FormatUnEquipSaddlePad(horse.Equipment.SaddlePad.IconId, horse.Equipment.SaddlePad.Name);
+ if (horse.Equipment.Bridle != null)
+ message += Messages.FormatUnEquipBridle(horse.Equipment.Bridle.IconId, horse.Equipment.Bridle.Name);
+ if (horse.Breed.Type == "llama")
+ message += Messages.HorseLlamaTackInInventory;
+ else if (horse.Breed.Type == "camel")
+ message += Messages.HorseCamelTackInInventory;
+ else
+ message += Messages.HorseTackInInventory;
+
+ foreach(InventoryItem item in user.Inventory.GetItemList())
+ {
+ Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
+ if (itemInfo.Type == "TACK")
+ {
+ if (horse.Breed.Type == "camel" && itemInfo.GetMiscFlag(1) != 1)
+ continue;
+ else if (horse.Breed.Type == "llama" && itemInfo.GetMiscFlag(1) != 2)
+ continue;
+ else if (!(horse.Breed.Type == "llama" || horse.Breed.Type == "camel") && itemInfo.GetMiscFlag(1) != 0)
+ continue;
+ message += Messages.FormatHorseEquip(itemInfo.IconId, item.ItemInstances.Length, itemInfo.Name, itemInfo.Id);
+ }
+ }
+
+ message += Messages.BackToHorse;
+ return message;
+ }
+ public static string BuildNpcChatpoint(User user, Npc.NpcEntry npc, Npc.NpcChat chatpoint)
+ {
+ bool hideReplys = false;
+ if (chatpoint.ActivateQuestId != 0)
+ {
+ Quest.QuestEntry quest = Quest.GetQuestById(chatpoint.ActivateQuestId);
+ user.MajorPriority = true;
+
+ Quest.QuestResult result = Quest.ActivateQuest(user, quest, true);
+ if (result.QuestCompleted)
+ {
+ if (result.SetChatpoint != -1)
+ Npc.SetDefaultChatpoint(user, npc, result.SetChatpoint);
+
+ if (result.GotoChatpoint != -1)
+ chatpoint = Npc.GetNpcChatpoint(npc, result.GotoChatpoint);
+
+ if (chatpoint.ChatText.Trim() == "")
+ if (result.NpcChat != null)
+ if(result.NpcChat.Trim() != "")
+ chatpoint.ChatText = result.NpcChat;
+ }
+ else
+ {
+ if (result.GotoChatpoint != -1)
+ chatpoint = Npc.GetNpcChatpoint(npc, result.GotoChatpoint);
+
+ if (result.NpcChat != null)
+ chatpoint.ChatText = result.NpcChat;
+
+ if (result.HideRepliesOnFail)
+ hideReplys = true;
+ }
+ }
+
+
+ string message = "";
+ message += Messages.FormatNpcChatpoint(npc.Name, npc.ShortDescription, chatpoint.ChatText);
+ foreach(Npc.NpcReply reply in chatpoint.Replies)
+ {
+ if(reply.RequiresQuestIdCompleted != 0)
+ if (user.Quests.GetTrackedQuestAmount(reply.RequiresQuestIdCompleted) <= 0)
+ continue;
+ if (reply.RequiresQuestIdNotCompleted != 0)
+ if (user.Quests.GetTrackedQuestAmount(reply.RequiresQuestIdNotCompleted) >= 1)
+ continue;
+ if (hideReplys)
+ continue;
+ message += Messages.FormatNpcReply(reply.ReplyText, reply.Id);
+ }
+ message += Messages.BackToMap + Messages.MetaTerminator;
+ return message;
+ }
+
+ public static string BuildMetaInfo(User user, int x, int y)
+ {
+ string message = "";
+ message += buildLocationString(x, y);
+ message += BuildWildHorseList(user);
+ message += buildNpc(user, x, y);
+
+ message += buildCommonInfo(user, x, y);
+ return message;
+ }
+ public static string BuildPawneerOrderFound(HorseInstance instance)
+ {
+ string message = Messages.FormatPawneerOrderHorseFound(instance.Breed.Name, instance.Color, instance.Gender, instance.AdvancedStats.Height, instance.AdvancedStats.Personality, instance.AdvancedStats.Inteligence);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildPawneerOrderGenderList(HorseInfo.Breed breed, string color)
+ {
+ string message = Messages.FormatPawneerOrderSelectGender(color, breed.Name);
+ foreach (string gender in breed.GenderTypes())
+ message += Messages.FormatPawneerOrderGenderEntry(Util.CapitalizeFirstLetter(gender), gender);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildPawneerOrderColorList(HorseInfo.Breed breed)
+ {
+ string message = Messages.FormatPawneerOrderSelectColor(breed.Name);
+ foreach (string color in breed.Colors)
+ message += Messages.FormatPawneerOrderColorEntry(color);
+
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+
+ }
+ public static string BuildPawneerOrderBreedList()
+ {
+ string message = Messages.PawneerOrderSelectBreed;
+ foreach (HorseInfo.Breed breed in HorseInfo.Breeds.OrderBy(o => o.Name).ToList())
+ {
+ if (breed.Swf == "")
+ continue;
+ if (breed.SpawnInArea == "none")
+ continue;
+ message += Messages.FormatPawneerOrderBreedEntry(breed.Name, breed.Id);
+ }
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildPawneerConfimation(HorseInstance horse)
+ {
+ string message = "";
+ message += Messages.FormatPawneerConfirmPawn(horse.Breed.Name, horse.RandomId);
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildSanta(User user)
+ {
+ string message = Messages.SantaHiddenText;
+ InventoryItem[] items = user.Inventory.GetItemList();
+ foreach (InventoryItem item in items)
+ {
+ Item.ItemInformation itemInfo = Item.GetItemById(item.ItemId);
+ int randomId = item.ItemInstances[0].RandomId;
+ if (itemInfo.Type != "QUEST" && itemInfo.Type != "TEXT" && itemInfo.Type != "COMPANION" && itemInfo.Id != Item.Present)
+ message += Messages.FormatSantaItemEntry(itemInfo.IconId, itemInfo.Name, randomId);
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildTrainer(User user, Trainer trainer)
+ {
+ string message = "";
+ message += Messages.FormatTrainerHeaderFormat(trainer.ImprovesStat, trainer.MoneyCost, trainer.ImprovesAmount, trainer.ExperienceGained);
+
+
+ foreach (HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToList())
+ {
+ HorseInfo.StatCalculator speedStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.SPEED);
+ HorseInfo.StatCalculator strengthStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.STRENGTH);
+ HorseInfo.StatCalculator conformationStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.CONFORMATION);
+ HorseInfo.StatCalculator agilityStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.AGILITY);
+ HorseInfo.StatCalculator enduranceStat = new HorseInfo.StatCalculator(horse, HorseInfo.StatType.ENDURANCE);
+
+ HorseInfo.StatCalculator statCalculator;
+ switch (trainer.ImprovesStat.ToUpper())
+ {
+ case "SPEED":
+ statCalculator = speedStat;
+ break;
+ case "STRENGTH":
+ statCalculator = strengthStat;
+ break;
+ case "AGILITY":
+ statCalculator = agilityStat;
+ break;
+ case "ENDURANCE":
+ statCalculator = enduranceStat;
+ break;
+ case "CONFORMATION":
+ statCalculator = conformationStat;
+ break;
+ default:
+ statCalculator = speedStat;
+ break;
+ }
+
+ bool allowed = false;
+
+ /*
+ * Pinto bug: If you try to train a horse, but doing so would go over the maximum amount
+ * Then it just says its maxed trained, and u have to use a ranch.
+ */
+
+ if (ConfigReader.FixOfficalBugs)
+ allowed = (statCalculator.BreedValue < statCalculator.MaxValue);
+ else
+ allowed = ((statCalculator.BreedValue + trainer.ImprovesAmount) < statCalculator.MaxValue);
+
+ if(allowed)
+ message += Messages.FormatTrainerTrainInEntry(horse.Name, statCalculator.BreedValue, statCalculator.MaxValue, horse.RandomId);
+ else
+ message += Messages.FormatTrainerFullyTrained(horse.Name, statCalculator.BreedValue);
+
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildPawneer(User user)
+ {
+ string message = "";
+ if (user.Inventory.HasItemId(Item.PawneerOrder) && (user.HorseInventory.HorseList.Length < user.MaxHorses))
+ message += Messages.PawneerOrderMeta;
+ message += Messages.PawneerUntackedHorsesICanBuy;
+ foreach(HorseInstance horse in user.HorseInventory.HorseList.OrderBy(o => o.Name).ToList())
+ {
+ if(horse.Category == "TRADING" && horse.Equipment.Bridle == null && horse.Equipment.Saddle == null && horse.Equipment.SaddlePad == null && horse.Equipment.Companion == null)
+ {
+ message += Messages.FormatPawneerHorseEntry(horse.Name, Pawneer.CalculateTotalPrice(horse), horse.RandomId);
+ }
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildLeaserOnLeaseInfo(Leaser leaser)
+ {
+ string mesasge = "";
+ mesasge += leaser.OnLeaseText;
+ mesasge += Messages.BackToMap;
+ mesasge += Messages.MetaTerminator;
+ return mesasge;
+ }
+ private static string buildLeaser(User user, Leaser[] leasers)
+ {
+ string message = "";
+ foreach(Leaser leaser in leasers)
+ {
+ message += leaser.Info;
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string build2PlayerGame(User user, string swf)
+ {
+ Multiroom room = Multiroom.GetMultiroom(user.X, user.Y);
+ room.Join(user);
+
+ if (TwoPlayer.IsPlayerInGame(user))
+ {
+ string username = "";
+ TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(user);
+ if (twoPlayerGame.Invitee.Id == user.Id)
+ username = twoPlayerGame.Invitee.Username;
+ else
+ username = twoPlayerGame.Inviting.Username;
+ overwrite = true;
+
+ return Messages.Format2PlayerGameInProgress(username);
+ }
+
+ string message = Messages.TwoPlayerOtherPlayer;
+ foreach(User userAt in room.JoinedUsers.ToArray())
+ {
+ if (userAt.Id == user.Id)
+ continue;
+
+ message += Messages.Format2PlayerPlayerName(userAt.Username);
+
+ if(!TwoPlayer.IsPlayerInGame(userAt))
+ {
+ if (TwoPlayer.IsPlayerInvitingPlayer(user, userAt))
+ message += Messages.TwoPlayerSentInvite;
+ else
+ message += Messages.Format2PlayerInviteButton(userAt.Id);
+ if (TwoPlayer.IsPlayerInvitingPlayer(userAt, user))
+ message += Messages.Format2PlayerAcceptButton(userAt.Id);
+
+ }
+ else
+ {
+ string username = "";
+ TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(userAt);
+ if (twoPlayerGame.Invitee.Id == userAt.Id)
+ username = twoPlayerGame.Invitee.Username;
+ else
+ username = twoPlayerGame.Inviting.Username;
+
+ message += Messages.Format2PlayerPlayingWith(username);
+ }
+
+ message += Messages.R1;
+ }
+ message += Messages.ExitThisPlace;
+ return message;
+ }
+ public static string BuildComposeMailMenu()
+ {
+ string message = Messages.CityHallMailSendMeta;
+ message += Messages.BackToMap;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildTownHall(User user)
+ {
+ GameServer.CheckMail(user);
+
+ string message = Messages.CityHallMenu;
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ private static string buildArena(User user, Arena arena)
+ {
+ string message = Messages.FormatArenaEventName(arena.Type);
+ if(arena.Mode == "TAKINGENTRIES")
+ {
+ int minutes = World.ServerTime.Minutes % 60;
+
+ int lastMinutes = minutes - (minutes % arena.RaceEvery);
+ int lastHours = (lastMinutes / 60);
+
+ string amOrPm = "am";
+ if (lastHours == 0)
+ {
+ amOrPm = "am";
+ lastHours = 12;
+ }
+ if (lastHours > 12)
+ {
+ lastHours -= 12;
+ amOrPm = "pm";
+ }
+
+ message += Messages.FormatArenaCurrentlyTakingEntries(lastHours, lastMinutes, amOrPm, arena.RaceEvery - minutes);
+ if (arena.Entries.Length + 1 > arena.Slots)
+ {
+ message += Messages.ArenaCompetitionFull;
+ }
+ else if (!arena.UserHasHorseEntered(user))
+ {
+
+ foreach(HorseInstance horseInstance in user.HorseInventory.HorseList)
+ {
+ if (horseInstance.Leaser > 0)
+ continue;
+
+ if(horseInstance.Equipment.Saddle != null && horseInstance.Equipment.SaddlePad != null && horseInstance.Equipment.Bridle != null)
+ message += Messages.FormatArenaEnterHorseButton(horseInstance.Name, arena.EntryCost, horseInstance.RandomId);
+ }
+ }
+ else
+ {
+ message += Messages.ArenaYouHaveHorseEntered;
+ }
+
+ }
+ else if(arena.Mode == "COMPETING")
+ {
+ message += Messages.ArenaCompetitionInProgress;
+ }
+
+ message += Messages.ArenaCurrentCompetitors;
+ foreach(Arena.ArenaEntry entries in arena.Entries)
+ {
+ message += Messages.FormatArenaCompetingHorseEntry(entries.EnteredUser.Username, entries.EnteredHorse.Name, entries.EnteredHorse.RandomId);
+ }
+ message += Messages.ExitThisPlace;
+ message += Messages.MetaTerminator;
+ return message;
+ }
+ public static string BuildSpecialTileInfo(User user, World.SpecialTile specialTile)
+ {
+ string message = "";
+
+ if (specialTile.Code == null)
+ message += buildLocationString(specialTile.X, specialTile.Y);
+
+
+ if (specialTile.Title != null && specialTile.Title != "")
+ message += Messages.FormatTileName(specialTile.Title);
+
+
+ if (specialTile.Description != null && specialTile.Description != "")
+ {
+ message += specialTile.Description;
+ message += Messages.Seperator; //
+ }
+
+
+ string npc = buildNpc(user, specialTile.X, specialTile.Y);
+ message += npc;
+
+ if (specialTile.Code == null || specialTile.Code == "")
+ message += buildCommonInfo(user, specialTile.X, specialTile.Y);
+ else
+ {
+
+ user.MinorPriority = true;
+
+ string TileCode = specialTile.Code;
+
+ string TileArg = "";
+ if (TileCode.Contains("-"))
+ {
+ TileArg = TileCode.Split('-')[1];
+ TileCode = TileCode.Split('-')[0];
+ }
+ if (TileCode == "EXITABLE")
+ message += Messages.ExitThisPlace;
+
+ if (TileCode == "TRANSPORT")
+ {
+ Transport.TransportPoint point = Transport.GetTransportPoint(specialTile.X, specialTile.Y);
+ message += Meta.BuildTransportInfo(user, point);
+ }
+
+ if (TileCode == "STRAWPILE")
+ {
+ if (user.Inventory.HasItemId(Item.Pitchfork))
+ message += Messages.HasPitchforkMeta + Messages.ExitThisPlace + Messages.MetaTerminator;
+ else
+ message += Messages.NoPitchforkMeta + Messages.ExitThisPlace + Messages.MetaTerminator;
+ }
+
+ if (TileCode == "STORE")
+ {
+ int ShopID = int.Parse(TileArg);
+ Shop shop = Shop.GetShopById(ShopID);
+ user.LastShoppedAt = shop;
+ message += buildShopInfo(shop, user.Inventory);
+
+ }
+ if(TileCode == "TOWNHALL")
+ {
+ message += buildTownHall(user);
+ }
+ if (TileCode == "VET")
+ {
+ message += buildVet(user, Vet.GetVetById(int.Parse(TileArg)));
+ }
+ if(TileCode == "GROOMER")
+ {
+ message += buildGroomer(user, Groomer.GetGroomerById(int.Parse(TileArg)));
+ }
+ if (TileCode == "FARRIER")
+ {
+ message += buildFarrier(user, Farrier.GetFarrierById(int.Parse(TileArg)));
+ }
+ if(TileCode == "BARN")
+ {
+ message += buildBarn(user, Barn.GetBarnById(int.Parse(TileArg)));
+ }
+ if (TileCode == "BANK")
+ {
+ message += buildBank(user);
+ }
+ if (TileCode == "WISHINGWELL")
+ {
+ message += buildWishingWell(user);
+ }
+ if(TileCode == "HORSEPAWNEER")
+ {
+ message += buildPawneer(user);
+ }
+ if (TileCode == "VENUSFLYTRAP")
+ {
+ message += buildVenusFlyTrap(user);
+ }
+ if (TileCode == "RIDDLER")
+ {
+ message += buildRiddlerRiddle(user);
+ }
+ if(TileCode == "ARENA")
+ {
+ message += buildArena(user, Arena.GetAreaById(int.Parse(TileArg)));
+ }
+ if(TileCode == "AUCTION")
+ {
+ message += buildAuction(user, Auction.GetAuctionRoomById(int.Parse(TileArg)));
+ }
+ if(TileCode == "TRAINER")
+ {
+ message += buildTrainer(user, Trainer.GetTrainerById(int.Parse(TileArg)));
+ }
+ if(TileCode == "HORSELEASER")
+ {
+ message += buildLeaser(user, Leaser.GetLeasersById(int.Parse(TileArg)));
+ }
+ if (TileCode == "LIBRARY")
+ {
+ message += buildLibary();
+ }
+ if(TileCode == "MULTIHORSES")
+ {
+ message += buildMultiHorses(user, TileArg);
+ }
+ if (TileCode == "POND")
+ {
+ message += buildPond(user);
+ }
+ if(TileCode == "2PLAYER")
+ {
+ string msg = build2PlayerGame(user, TileArg);
+ if (!overwrite)
+ message += msg;
+ else
+ message = msg;
+
+ overwrite = false;
+ }
+ if(TileCode == "HORSES")
+ {
+ message += buildHorseGame(user, TileArg);
+ }
+ if (TileCode == "WORKSHOP")
+ {
+ message += buildWorkshop(user);
+ }
+ if (TileCode == "MUDHOLE")
+ {
+ message += buildMudHole(user);
+ }
+ if (TileCode == "RANCH")
+ {
+ message += buildRanch(user, int.Parse(TileArg));
+ }
+ if(TileCode == "SANTA")
+ {
+ message += buildSanta(user);
+ }
+ if (TileCode == "MULTIROOM")
+ {
+ message += buildMultiroom(TileArg != "" ? TileArg : null, user);
+ }
+ if (TileCode == "PASSWORD")
+ {
+ message += buildPassword();
+ }
+ if (TileCode == "HORSEWHISPERER")
+ {
+ message += buildHorseWhisperer();
+ }
+ if (TileCode == "INN")
+ {
+ int InnID = int.Parse(TileArg);
+ Inn inn = Inn.GetInnById(InnID);
+ user.LastVisitedInn = inn;
+ message += buildInn(inn);
+ }
+ if (TileCode == "FOUNTAIN")
+ {
+ message += buildFountain();
+
+ }
+ }
+
+
+
+ return message;
+ }
+
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Game/Multiroom.cs b/HorseIsleServer/LibHISP/Game/Multiroom.cs
old mode 100755
new mode 100644
index 085138a..effc7b3
--- a/HorseIsleServer/LibHISP/Game/Multiroom.cs
+++ b/HorseIsleServer/LibHISP/Game/Multiroom.cs
@@ -1,6 +1,5 @@
using HISP.Player;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
using System.Linq;
@@ -9,7 +8,7 @@ namespace HISP.Game
public class Multiroom
{
private static List multirooms = new List();
- private ThreadSafeList joinedUsers = new ThreadSafeList();
+ private List joinedUsers = new List();
public int x;
public int y;
@@ -84,7 +83,7 @@ namespace HISP.Game
if (joinedUser.Id != user.Id)
if(!TwoPlayer.IsPlayerInGame(joinedUser))
if(!joinedUser.MajorPriority)
- GameServer.UpdateArea(joinedUser.Client);
+ GameServer.UpdateArea(joinedUser.LoggedinClient);
}
}
@@ -101,7 +100,7 @@ namespace HISP.Game
foreach (User joinedUser in JoinedUsers)
if (!TwoPlayer.IsPlayerInGame(joinedUser))
if (!joinedUser.MajorPriority)
- GameServer.UpdateArea(joinedUser.Client);
+ GameServer.UpdateArea(joinedUser.LoggedinClient);
}
}
diff --git a/HorseIsleServer/LibHISP/Game/Npc.cs b/HorseIsleServer/LibHISP/Game/Npc.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Quest.cs b/HorseIsleServer/LibHISP/Game/Quest.cs
old mode 100755
new mode 100644
index 4d2ad55..66d8d7d
--- a/HorseIsleServer/LibHISP/Game/Quest.cs
+++ b/HorseIsleServer/LibHISP/Game/Quest.cs
@@ -15,7 +15,7 @@ namespace HISP.Game
public const string Binoculars = "BINOCS";
public const string Rake = "RAKE";
public const string MagnifyingGlass = "MAGNIFY";
- public const int CloudIslesQuest = 1373;
+
public struct QuestItemInfo
{
public int ItemId;
@@ -219,7 +219,7 @@ namespace HISP.Game
res.QuestCompleted = true;
if (npcActivation)
{
- if (quest.SuccessNpcChat != null && quest.SuccessNpcChat.Trim() != "")
+ if (quest.SuccessNpcChat != null && quest.SuccessNpcChat != "")
res.NpcChat = quest.SuccessNpcChat;
if(quest.SetNpcChatpoint != -1)
@@ -238,7 +238,7 @@ namespace HISP.Game
if (quest.SuccessMessage != null)
{
byte[] ChatPacket = PacketBuilder.CreateChat(quest.SuccessMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(ChatPacket);
+ user.LoggedinClient.SendPacket(ChatPacket);
}
if (quest.SuccessNpcChat != null)
@@ -246,7 +246,7 @@ namespace HISP.Game
if (!npcActivation)
{
byte[] ChatPacket = PacketBuilder.CreateChat(quest.SuccessNpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(ChatPacket);
+ user.LoggedinClient.SendPacket(ChatPacket);
}
}
@@ -262,10 +262,10 @@ namespace HISP.Game
user.Awards.AddAward(Award.GetAwardById(4)); // 100% Quest Completion Award.
// Is cloud isles quest?
- if (quest.Id == CloudIslesQuest)
+ if (quest.Id == 1373)
{
- byte[] swfLoadPacket = PacketBuilder.CreateSwfModule("ballooncutscene", PacketBuilder.PACKET_SWF_MODULE_CUTSCENE);
- user.Client.SendPacket(swfLoadPacket);
+ byte[] swfLoadPacket = PacketBuilder.CreateSwfModulePacket("ballooncutscene", PacketBuilder.PACKET_SWF_CUTSCENE);
+ user.LoggedinClient.SendPacket(swfLoadPacket);
}
return res;
@@ -290,7 +290,7 @@ namespace HISP.Game
if (!npcActivation)
{
byte[] ChatPacket = PacketBuilder.CreateChat(quest.FailNpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(ChatPacket);
+ user.LoggedinClient.SendPacket(ChatPacket);
}
else
{
@@ -371,7 +371,7 @@ namespace HISP.Game
if(result.NpcChat != null)
{
byte[] ChatPacket = PacketBuilder.CreateChat(result.NpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(ChatPacket);
+ user.LoggedinClient.SendPacket(ChatPacket);
}
return true;
}
@@ -383,7 +383,7 @@ namespace HISP.Game
if (result.NpcChat != null)
{
byte[] ChatPacket = PacketBuilder.CreateChat(result.NpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(ChatPacket);
+ user.LoggedinClient.SendPacket(ChatPacket);
}
return true;
}
diff --git a/HorseIsleServer/LibHISP/Game/Ranch.cs b/HorseIsleServer/LibHISP/Game/Ranch.cs
old mode 100755
new mode 100644
index 372acf7..2ae9177
--- a/HorseIsleServer/LibHISP/Game/Ranch.cs
+++ b/HorseIsleServer/LibHISP/Game/Ranch.cs
@@ -1,500 +1,488 @@
-using HISP.Game.Inventory;
-using HISP.Game.Items;
-using HISP.Player;
-using HISP.Server;
-using HISP.Util;
-using System;
-using System.Collections.Generic;
-
-namespace HISP.Game
-{
- public class Ranch
- {
- public class RanchUpgrade
- {
- public static List RanchUpgrades = new List();
- public int Id;
- public int Cost;
- public string Title;
- public string Description;
- public int Limit;
-
- public static bool RanchUpgradeExists(int id)
- {
- foreach (RanchUpgrade rachUpgrade in RanchUpgrades)
- {
- if (rachUpgrade.Id == id)
- return true;
- }
- return false;
- }
- public static RanchUpgrade GetRanchUpgradeById(int id)
- {
- foreach (RanchUpgrade ranchUpgrade in RanchUpgrades)
- {
- if (ranchUpgrade.Id == id)
- return ranchUpgrade;
- }
- throw new KeyNotFoundException("No ranch found.");
- }
- }
- public class RanchBuilding
- {
- public static List RanchBuildings = new List();
- public int Id;
- public int Cost;
- public string Title;
- public string Description;
-
- public static bool RanchBuildingExists(int id)
- {
- foreach (RanchBuilding ranchBuilding in RanchBuildings)
- {
- if (ranchBuilding.Id == id)
- return true;
- }
- return false;
- }
- public static RanchBuilding GetRanchBuildingById(int id)
- {
- foreach(RanchBuilding ranchBuilding in RanchBuildings)
- {
- if (ranchBuilding.Id == id)
- return ranchBuilding;
- }
- throw new KeyNotFoundException("No ranch found.");
- }
-
- public int GetTeardownPrice()
- {
- return Convert.ToInt32(Math.Round((float)this.Cost / (100 / 35.0)));
- }
- }
- public static List Ranches = new List();
-
- public int X;
- public int Y;
- public int Id;
- public int Value;
-
- private int ownerId;
- private int upgradedLevel;
- private int investedMoney;
- private string title;
- private string description;
-
- public int GetSellPrice()
- {
- return Convert.ToInt32(Math.Round((double)this.InvestedMoney / (100 / 75.0)));
- }
- private void removeDorothyShoes(int Id)
- {
- if (Id == -1)
- return;
-
- if(GameServer.IsUserOnline(Id))
- {
- User user = GameServer.GetUserById(Id);
- user.OwnedRanch = null;
- InventoryItem items = user.Inventory.GetItemByItemId(Item.DorothyShoes);
- foreach (ItemInstance itm in items.ItemInstances)
- {
- user.Inventory.Remove(itm);
- }
- }
- else
- {
- Database.RemoveAllItemTypesFromPlayerInventory(this.Id, Item.DorothyShoes);
- }
-
- }
-
- private void deleteRanch()
- {
- Database.DeleteRanchOwner(this.Id);
- removeDorothyShoes(this.ownerId);
- resetRanch();
- }
- private void resetRanch()
- {
- title = "";
- description = "";
- investedMoney = 0;
- upgradedLevel = 0;
- ownerId = -1;
- for (int i = 0; i < 16; i++)
- buildings[i] = null;
- }
- public int OwnerId
- {
- get
- {
- if(ownerId != -1)
- {
- if (ConfigReader.AllUsersSubbed || Database.GetUserAdmin(ownerId))
- return ownerId;
-
- int subExp = Database.GetUserSubscriptionExpireDate(ownerId);
- DateTime expTime = Helper.UnixTimeStampToDateTime(subExp);
- if ((DateTime.UtcNow.Date - expTime.Date).Days >= 30)
- {
- int price = GetSellPrice();
- try
- {
- checked
- {
- Database.SetPlayerMoney(Database.GetPlayerMoney(ownerId) + price, ownerId);
- }
- }
- catch (OverflowException)
- {
- Database.SetPlayerMoney(2147483647, ownerId);;
- }
-
- Database.AddMessageToQueue(ownerId, Messages.FormatRanchForcefullySoldMessage(price));
- deleteRanch();
- return -1;
- }
-
- }
- return ownerId;
-
- }
- set
- {
- if (value == -1)
- {
- deleteRanch();
- }
- else
- {
- if (Database.IsRanchOwned(this.Id))
- {
- Database.SetRanchOwner(this.Id, ownerId);
- removeDorothyShoes(ownerId);
- }
- else
- {
- resetRanch();
- Database.AddRanch(this.Id, value, "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
- }
- }
-
- if (GameServer.IsUserOnline(value))
- {
- User user = GameServer.GetUserById(value);
- user.OwnedRanch = this;
- user.Inventory.AddIgnoringFull(new ItemInstance(Item.DorothyShoes));
- }
- else
- {
- Database.AddItemToInventory(value, new ItemInstance(Item.DorothyShoes));
- }
-
- ownerId = value;
- }
- }
-
- public int UpgradedLevel
- {
- get
- {
- return upgradedLevel;
- }
- set
- {
- upgradedLevel = value;
- Database.SetRanchUpgradeLevel(Id, value);
- }
- }
- public int InvestedMoney
- {
- get
- {
- return investedMoney;
- }
- set
- {
- investedMoney = value;
- Database.SetRanchInvestment(Id, value);
- }
- }
- public string Title
- {
- get
- {
- return title;
- }
- set
- {
- title = value.Trim();
- Database.SetRanchTitle(Id, title);
- }
- }
- public string Description
- {
- get
- {
- return description;
- }
- set
- {
- description = value.Trim();
- Database.SetRanchDescription(Id, value);
- }
- }
-
-
- private RanchBuilding[] buildings = new RanchBuilding[16];
- public int GetBuildingCount(int buildingId)
- {
- int count = 0;
- foreach(RanchBuilding building in buildings)
- {
- if(building != null)
- if (building.Id == buildingId)
- count++;
- }
- return count;
- }
- private void updateBuildings()
- {
- if (buildings[0] != null)
- Database.SetRanchBuilding1(this.Id, buildings[0].Id);
- else
- Database.SetRanchBuilding1(this.Id, 0);
- if (buildings[1] != null)
- Database.SetRanchBuilding2(this.Id, buildings[1].Id);
- else
- Database.SetRanchBuilding2(this.Id, 0);
- if (buildings[2] != null)
- Database.SetRanchBuilding3(this.Id, buildings[2].Id);
- else
- Database.SetRanchBuilding3(this.Id, 0);
- if (buildings[3] != null)
- Database.SetRanchBuilding4(this.Id, buildings[3].Id);
- else
- Database.SetRanchBuilding4(this.Id, 0);
- if (buildings[4] != null)
- Database.SetRanchBuilding5(this.Id, buildings[4].Id);
- else
- Database.SetRanchBuilding5(this.Id, 0);
- if (buildings[5] != null)
- Database.SetRanchBuilding6(this.Id, buildings[5].Id);
- else
- Database.SetRanchBuilding6(this.Id, 0);
- if (buildings[6] != null)
- Database.SetRanchBuilding7(this.Id, buildings[6].Id);
- else
- Database.SetRanchBuilding7(this.Id, 0);
- if (buildings[7] != null)
- Database.SetRanchBuilding8(this.Id, buildings[7].Id);
- else
- Database.SetRanchBuilding8(this.Id, 0);
- if (buildings[8] != null)
- Database.SetRanchBuilding9(this.Id, buildings[8].Id);
- else
- Database.SetRanchBuilding9(this.Id, 0);
- if (buildings[9] != null)
- Database.SetRanchBuilding10(this.Id, buildings[9].Id);
- else
- Database.SetRanchBuilding10(this.Id, 0);
- if (buildings[10] != null)
- Database.SetRanchBuilding11(this.Id, buildings[10].Id);
- else
- Database.SetRanchBuilding11(this.Id, 0);
- if (buildings[11] != null)
- Database.SetRanchBuilding12(this.Id, buildings[11].Id);
- else
- Database.SetRanchBuilding12(this.Id, 0);
- if (buildings[12] != null)
- Database.SetRanchBuilding13(this.Id, buildings[12].Id);
- else
- Database.SetRanchBuilding13(this.Id, 0);
- if (buildings[13] != null)
- Database.SetRanchBuilding14(this.Id, buildings[13].Id);
- else
- Database.SetRanchBuilding14(this.Id, 0);
- if (buildings[14] != null)
- Database.SetRanchBuilding15(this.Id, buildings[14].Id);
- else
- Database.SetRanchBuilding15(this.Id, 0);
- if (buildings[15] != null)
- Database.SetRanchBuilding16(this.Id, buildings[15].Id);
- else
- Database.SetRanchBuilding16(this.Id, 0);
- }
- public RanchBuilding GetBuilding(int buildingId)
- {
- if (buildingId < 0)
- return null;
-
- if (buildingId >= buildings.Length)
- return null;
-
- return buildings[buildingId];
- }
- public void SetBuilding(int buildingId, RanchBuilding value)
- {
- buildings[buildingId] = value;
- updateBuildings();
- }
-
-
- public string GetSwf(bool mine)
- {
- string swf = "ranchviewer.swf?H=" + (upgradedLevel+1).ToString();
- for(int i = 0; i < buildings.Length; i++)
- {
- swf += "&B" + (i+1).ToString() + "=";
- if (buildings[i] != null)
- {
- swf += buildings[i].Id.ToString();
- }
- }
- if (mine)
- swf += "&MINE=1";
- return swf;
- }
-
-
- public Ranch(int x, int y, int id, int value)
- {
- X = x;
- Y = y;
- Id = id;
- Value = value;
- title = "";
- description = "";
- upgradedLevel = 0;
- ownerId = -1;
- investedMoney = 0;
- for (int i = 0; i < 16; i++)
- buildings[i] = null;
- bool owned = Database.IsRanchOwned(id);
- if (owned)
- {
- upgradedLevel = Database.GetRanchUpgradeLevel(id);
- title = Database.GetRanchTitle(id);
- description = Database.GetRanchDescription(id);
- ownerId = Database.GetRanchOwner(id);
- int b1 = Database.GetRanchBuilding1(id);
- int b2 = Database.GetRanchBuilding2(id);
- int b3 = Database.GetRanchBuilding3(id);
- int b4 = Database.GetRanchBuilding4(id);
- int b5 = Database.GetRanchBuilding5(id);
- int b6 = Database.GetRanchBuilding6(id);
- int b7 = Database.GetRanchBuilding7(id);
- int b8 = Database.GetRanchBuilding8(id);
- int b9 = Database.GetRanchBuilding9(id);
- int b10 = Database.GetRanchBuilding10(id);
- int b11 = Database.GetRanchBuilding11(id);
- int b12 = Database.GetRanchBuilding12(id);
- int b13 = Database.GetRanchBuilding13(id);
- int b14 = Database.GetRanchBuilding14(id);
- int b15 = Database.GetRanchBuilding15(id);
- int b16 = Database.GetRanchBuilding16(id);
-
- if (RanchBuilding.RanchBuildingExists(b1))
- buildings[0] = RanchBuilding.GetRanchBuildingById(b1);
- if (RanchBuilding.RanchBuildingExists(b2))
- buildings[1] = RanchBuilding.GetRanchBuildingById(b2);
- if (RanchBuilding.RanchBuildingExists(b3))
- buildings[2] = RanchBuilding.GetRanchBuildingById(b3);
- if (RanchBuilding.RanchBuildingExists(b4))
- buildings[3] = RanchBuilding.GetRanchBuildingById(b4);
- if (RanchBuilding.RanchBuildingExists(b5))
- buildings[4] = RanchBuilding.GetRanchBuildingById(b5);
- if (RanchBuilding.RanchBuildingExists(b6))
- buildings[5] = RanchBuilding.GetRanchBuildingById(b6);
- if (RanchBuilding.RanchBuildingExists(b7))
- buildings[6] = RanchBuilding.GetRanchBuildingById(b7);
- if (RanchBuilding.RanchBuildingExists(b8))
- buildings[7] = RanchBuilding.GetRanchBuildingById(b8);
- if (RanchBuilding.RanchBuildingExists(b9))
- buildings[8] = RanchBuilding.GetRanchBuildingById(b9);
- if (RanchBuilding.RanchBuildingExists(b10))
- buildings[9] = RanchBuilding.GetRanchBuildingById(b10);
- if (RanchBuilding.RanchBuildingExists(b11))
- buildings[10] = RanchBuilding.GetRanchBuildingById(b11);
- if (RanchBuilding.RanchBuildingExists(b12))
- buildings[11] = RanchBuilding.GetRanchBuildingById(b12);
- if (RanchBuilding.RanchBuildingExists(b13))
- buildings[12] = RanchBuilding.GetRanchBuildingById(b13);
- if (RanchBuilding.RanchBuildingExists(b14))
- buildings[13] = RanchBuilding.GetRanchBuildingById(b14);
- if (RanchBuilding.RanchBuildingExists(b15))
- buildings[14] = RanchBuilding.GetRanchBuildingById(b15);
- if (RanchBuilding.RanchBuildingExists(b16))
- buildings[15] = RanchBuilding.GetRanchBuildingById(b16);
-
-
- InvestedMoney = Database.GetRanchInvestment(id);
- }
- }
-
- public RanchUpgrade GetRanchUpgrade()
- {
- return RanchUpgrade.GetRanchUpgradeById(this.upgradedLevel + 1);
- }
- public static bool IsRanchHere(int x, int y)
- {
- foreach (Ranch ranch in Ranches)
- {
- if (ranch.X == x && ranch.Y == y)
- return true;
- }
- return false;
- }
- public static bool RanchExists(int ranchId)
- {
- foreach (Ranch ranch in Ranches)
- {
- if (ranch.Id == ranchId)
- return true;
- }
- return false;
- }
- public static Ranch GetRanchById(int ranchId)
- {
- foreach (Ranch ranch in Ranches)
- {
- if (ranch.Id == ranchId)
- return ranch;
- }
- throw new KeyNotFoundException("No Ranch with id " + ranchId);
- }
- public static Ranch GetRanchAt(int x, int y)
- {
- foreach(Ranch ranch in Ranches)
- {
- if (ranch.X == x && ranch.Y == y)
- return ranch;
- }
- throw new KeyNotFoundException("No Ranch found at x" + x + " y" + y);
- }
-
- public static bool GetOwnedRanch(int playerId)
- {
- foreach (Ranch ranch in Ranches)
- {
- if (ranch.OwnerId == playerId)
- {
- return true;
- }
- }
- return false;
- }
- public static Ranch GetRanchOwnedBy(int playerId)
- {
- foreach(Ranch ranch in Ranches)
- {
- if(ranch.OwnerId == playerId)
- {
- return ranch;
- }
- }
- throw new KeyNotFoundException("Player " + playerId + " does not own a ranch.");
- }
- }
-}
+using HISP.Game.Inventory;
+using HISP.Game.Items;
+using HISP.Player;
+using HISP.Server;
+using System;
+using System.Collections.Generic;
+
+namespace HISP.Game
+{
+ public class Ranch
+ {
+ public class RanchUpgrade
+ {
+ public static List RanchUpgrades = new List();
+ public int Id;
+ public int Cost;
+ public string Title;
+ public string Description;
+ public int Limit;
+
+ public static bool RanchUpgradeExists(int id)
+ {
+ foreach (RanchUpgrade rachUpgrade in RanchUpgrades)
+ {
+ if (rachUpgrade.Id == id)
+ return true;
+ }
+ return false;
+ }
+ public static RanchUpgrade GetRanchUpgradeById(int id)
+ {
+ foreach (RanchUpgrade rachUpgrade in RanchUpgrades)
+ {
+ if (rachUpgrade.Id == id)
+ return rachUpgrade;
+ }
+ throw new KeyNotFoundException("No ranch found.");
+ }
+ }
+ public class RanchBuilding
+ {
+ public static List RanchBuildings = new List();
+ public int Id;
+ public int Cost;
+ public string Title;
+ public string Description;
+
+ public static bool RanchBuildingExists(int id)
+ {
+ foreach (RanchBuilding ranchBuilding in RanchBuildings)
+ {
+ if (ranchBuilding.Id == id)
+ return true;
+ }
+ return false;
+ }
+ public static RanchBuilding GetRanchBuildingById(int id)
+ {
+ foreach(RanchBuilding ranchBuilding in RanchBuildings)
+ {
+ if (ranchBuilding.Id == id)
+ return ranchBuilding;
+ }
+ throw new KeyNotFoundException("No ranch found.");
+ }
+
+ public int GetTeardownPrice()
+ {
+ return Convert.ToInt32(Math.Round((float)this.Cost / (100 / 35.0)));
+ }
+ }
+ public static List Ranches = new List();
+
+ public int X;
+ public int Y;
+ public int Id;
+ public int Value;
+
+ private int ownerId;
+ private int upgradedLevel;
+ private int investedMoney;
+ private string title;
+ private string description;
+
+ public int GetSellPrice()
+ {
+ return Convert.ToInt32(Math.Round((double)this.InvestedMoney / (100 / 75.0)));
+ }
+ private void removeDorothyShoes(int Id)
+ {
+ if (Id == -1)
+ return;
+
+ if(GameServer.IsUserOnline(Id))
+ {
+ User user = GameServer.GetUserById(Id);
+ user.OwnedRanch = null;
+ InventoryItem items = user.Inventory.GetItemByItemId(Item.DorothyShoes);
+ foreach (ItemInstance itm in items.ItemInstances)
+ {
+ user.Inventory.Remove(itm);
+ }
+ }
+ else
+ {
+ Database.RemoveAllItemTypesFromPlayerInventory(this.Id, Item.DorothyShoes);
+ }
+
+ }
+
+ private void deleteRanch()
+ {
+ Database.DeleteRanchOwner(this.Id);
+ removeDorothyShoes(this.ownerId);
+ resetRanch();
+ }
+ private void resetRanch()
+ {
+ title = "";
+ description = "";
+ investedMoney = 0;
+ upgradedLevel = 0;
+ ownerId = -1;
+ for (int i = 0; i < 16; i++)
+ buildings[i] = null;
+ }
+ public int OwnerId
+ {
+ get
+ {
+ if(ownerId != -1)
+ {
+ if (ConfigReader.AllUsersSubbed || Database.IsUserAdmin(ownerId))
+ return ownerId;
+
+ int subExp = Database.GetUserSubscriptionExpireDate(ownerId);
+ DateTime expTime = Util.UnixTimeStampToDateTime(subExp);
+ if ((DateTime.UtcNow.Date - expTime.Date).Days >= 30)
+ {
+ int price = GetSellPrice();
+ try
+ {
+ checked
+ {
+ Database.SetPlayerMoney(Database.GetPlayerMoney(ownerId) + price, ownerId);
+ }
+ }
+ catch (OverflowException)
+ {
+ Database.SetPlayerMoney(2147483647, ownerId);;
+ }
+
+ Database.AddMessageToQueue(ownerId, Messages.FormatRanchForcefullySoldMessage(price));
+ deleteRanch();
+ return -1;
+ }
+
+ }
+ return ownerId;
+
+ }
+ set
+ {
+ if (value == -1)
+ {
+ deleteRanch();
+ }
+ else
+ {
+ if(Database.IsRanchOwned(this.Id))
+ {
+ Database.SetRanchOwner(this.Id, ownerId);
+ removeDorothyShoes(ownerId);
+ }
+ else
+ {
+ resetRanch();
+ Database.AddRanch(this.Id, value, "", "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+ }
+ }
+
+ ownerId = value;
+ }
+ }
+
+ public int UpgradedLevel
+ {
+ get
+ {
+ return upgradedLevel;
+ }
+ set
+ {
+ upgradedLevel = value;
+ Database.SetRanchUpgradeLevel(Id, value);
+ }
+ }
+ public int InvestedMoney
+ {
+ get
+ {
+ return investedMoney;
+ }
+ set
+ {
+ investedMoney = value;
+ Database.SetRanchInvestment(Id, value);
+ }
+ }
+ public string Title
+ {
+ get
+ {
+ return title;
+ }
+ set
+ {
+ title = value.Trim();
+ Database.SetRanchTitle(Id, title);
+ }
+ }
+ public string Description
+ {
+ get
+ {
+ return description;
+ }
+ set
+ {
+ description = value.Trim();
+ Database.SetRanchDescription(Id, value);
+ }
+ }
+
+
+ private RanchBuilding[] buildings = new RanchBuilding[16];
+ public int GetBuildingCount(int buildingId)
+ {
+ int count = 0;
+ foreach(RanchBuilding building in buildings)
+ {
+ if(building != null)
+ if (building.Id == buildingId)
+ count++;
+ }
+ return count;
+ }
+ private void updateBuildings()
+ {
+ if (buildings[0] != null)
+ Database.SetRanchBuilding1(this.Id, buildings[0].Id);
+ else
+ Database.SetRanchBuilding1(this.Id, 0);
+ if (buildings[1] != null)
+ Database.SetRanchBuilding2(this.Id, buildings[1].Id);
+ else
+ Database.SetRanchBuilding2(this.Id, 0);
+ if (buildings[2] != null)
+ Database.SetRanchBuilding3(this.Id, buildings[2].Id);
+ else
+ Database.SetRanchBuilding3(this.Id, 0);
+ if (buildings[3] != null)
+ Database.SetRanchBuilding4(this.Id, buildings[3].Id);
+ else
+ Database.SetRanchBuilding4(this.Id, 0);
+ if (buildings[4] != null)
+ Database.SetRanchBuilding5(this.Id, buildings[4].Id);
+ else
+ Database.SetRanchBuilding5(this.Id, 0);
+ if (buildings[5] != null)
+ Database.SetRanchBuilding6(this.Id, buildings[5].Id);
+ else
+ Database.SetRanchBuilding6(this.Id, 0);
+ if (buildings[6] != null)
+ Database.SetRanchBuilding7(this.Id, buildings[6].Id);
+ else
+ Database.SetRanchBuilding7(this.Id, 0);
+ if (buildings[7] != null)
+ Database.SetRanchBuilding8(this.Id, buildings[7].Id);
+ else
+ Database.SetRanchBuilding8(this.Id, 0);
+ if (buildings[8] != null)
+ Database.SetRanchBuilding9(this.Id, buildings[8].Id);
+ else
+ Database.SetRanchBuilding9(this.Id, 0);
+ if (buildings[9] != null)
+ Database.SetRanchBuilding10(this.Id, buildings[9].Id);
+ else
+ Database.SetRanchBuilding10(this.Id, 0);
+ if (buildings[10] != null)
+ Database.SetRanchBuilding11(this.Id, buildings[10].Id);
+ else
+ Database.SetRanchBuilding11(this.Id, 0);
+ if (buildings[11] != null)
+ Database.SetRanchBuilding12(this.Id, buildings[11].Id);
+ else
+ Database.SetRanchBuilding12(this.Id, 0);
+ if (buildings[12] != null)
+ Database.SetRanchBuilding13(this.Id, buildings[12].Id);
+ else
+ Database.SetRanchBuilding13(this.Id, 0);
+ if (buildings[13] != null)
+ Database.SetRanchBuilding14(this.Id, buildings[13].Id);
+ else
+ Database.SetRanchBuilding14(this.Id, 0);
+ if (buildings[14] != null)
+ Database.SetRanchBuilding15(this.Id, buildings[14].Id);
+ else
+ Database.SetRanchBuilding15(this.Id, 0);
+ if (buildings[15] != null)
+ Database.SetRanchBuilding16(this.Id, buildings[15].Id);
+ else
+ Database.SetRanchBuilding16(this.Id, 0);
+ }
+ public RanchBuilding GetBuilding(int buildingId)
+ {
+ if (buildingId < 0)
+ return null;
+
+ if (buildingId >= buildings.Length)
+ return null;
+
+ return buildings[buildingId];
+ }
+ public void SetBuilding(int buildingId, RanchBuilding value)
+ {
+ buildings[buildingId] = value;
+ updateBuildings();
+ }
+
+
+ public string GetSwf(bool mine)
+ {
+ string swf = "ranchviewer.swf?H=" + (upgradedLevel+1).ToString();
+ for(int i = 0; i < buildings.Length; i++)
+ {
+ swf += "&B" + (i+1).ToString() + "=";
+ if (buildings[i] != null)
+ {
+ swf += buildings[i].Id.ToString();
+ }
+ }
+ if (mine)
+ swf += "&MINE=1";
+ return swf;
+ }
+
+
+ public Ranch(int x, int y, int id, int value)
+ {
+ X = x;
+ Y = y;
+ Id = id;
+ Value = value;
+ title = "";
+ description = "";
+ upgradedLevel = 0;
+ ownerId = -1;
+ investedMoney = 0;
+ for (int i = 0; i < 16; i++)
+ buildings[i] = null;
+ bool owned = Database.IsRanchOwned(id);
+ if (owned)
+ {
+ upgradedLevel = Database.GetRanchUpgradeLevel(id);
+ title = Database.GetRanchTitle(id);
+ description = Database.GetRanchDescription(id);
+ ownerId = Database.GetRanchOwner(id);
+ int b1 = Database.GetRanchBuilding1(id);
+ int b2 = Database.GetRanchBuilding2(id);
+ int b3 = Database.GetRanchBuilding3(id);
+ int b4 = Database.GetRanchBuilding4(id);
+ int b5 = Database.GetRanchBuilding5(id);
+ int b6 = Database.GetRanchBuilding6(id);
+ int b7 = Database.GetRanchBuilding7(id);
+ int b8 = Database.GetRanchBuilding8(id);
+ int b9 = Database.GetRanchBuilding9(id);
+ int b10 = Database.GetRanchBuilding10(id);
+ int b11 = Database.GetRanchBuilding11(id);
+ int b12 = Database.GetRanchBuilding12(id);
+ int b13 = Database.GetRanchBuilding13(id);
+ int b14 = Database.GetRanchBuilding14(id);
+ int b15 = Database.GetRanchBuilding15(id);
+ int b16 = Database.GetRanchBuilding16(id);
+
+ if (RanchBuilding.RanchBuildingExists(b1))
+ buildings[0] = RanchBuilding.GetRanchBuildingById(b1);
+ if (RanchBuilding.RanchBuildingExists(b2))
+ buildings[1] = RanchBuilding.GetRanchBuildingById(b2);
+ if (RanchBuilding.RanchBuildingExists(b3))
+ buildings[2] = RanchBuilding.GetRanchBuildingById(b3);
+ if (RanchBuilding.RanchBuildingExists(b4))
+ buildings[3] = RanchBuilding.GetRanchBuildingById(b4);
+ if (RanchBuilding.RanchBuildingExists(b5))
+ buildings[4] = RanchBuilding.GetRanchBuildingById(b5);
+ if (RanchBuilding.RanchBuildingExists(b6))
+ buildings[5] = RanchBuilding.GetRanchBuildingById(b6);
+ if (RanchBuilding.RanchBuildingExists(b7))
+ buildings[6] = RanchBuilding.GetRanchBuildingById(b7);
+ if (RanchBuilding.RanchBuildingExists(b8))
+ buildings[7] = RanchBuilding.GetRanchBuildingById(b8);
+ if (RanchBuilding.RanchBuildingExists(b9))
+ buildings[8] = RanchBuilding.GetRanchBuildingById(b9);
+ if (RanchBuilding.RanchBuildingExists(b10))
+ buildings[9] = RanchBuilding.GetRanchBuildingById(b10);
+ if (RanchBuilding.RanchBuildingExists(b11))
+ buildings[10] = RanchBuilding.GetRanchBuildingById(b11);
+ if (RanchBuilding.RanchBuildingExists(b12))
+ buildings[11] = RanchBuilding.GetRanchBuildingById(b12);
+ if (RanchBuilding.RanchBuildingExists(b13))
+ buildings[12] = RanchBuilding.GetRanchBuildingById(b13);
+ if (RanchBuilding.RanchBuildingExists(b14))
+ buildings[13] = RanchBuilding.GetRanchBuildingById(b14);
+ if (RanchBuilding.RanchBuildingExists(b15))
+ buildings[14] = RanchBuilding.GetRanchBuildingById(b15);
+ if (RanchBuilding.RanchBuildingExists(b16))
+ buildings[15] = RanchBuilding.GetRanchBuildingById(b16);
+
+
+ InvestedMoney = Database.GetRanchInvestment(id);
+ }
+ }
+
+ public RanchUpgrade GetRanchUpgrade()
+ {
+ return RanchUpgrade.GetRanchUpgradeById(this.upgradedLevel + 1);
+ }
+ public static bool IsRanchHere(int x, int y)
+ {
+ foreach (Ranch ranch in Ranches)
+ {
+ if (ranch.X == x && ranch.Y == y)
+ return true;
+ }
+ return false;
+ }
+ public static bool RanchExists(int ranchId)
+ {
+ foreach (Ranch ranch in Ranches)
+ {
+ if (ranch.Id == ranchId)
+ return true;
+ }
+ return false;
+ }
+ public static Ranch GetRanchById(int ranchId)
+ {
+ foreach (Ranch ranch in Ranches)
+ {
+ if (ranch.Id == ranchId)
+ return ranch;
+ }
+ throw new KeyNotFoundException("No Ranch with id " + ranchId);
+ }
+ public static Ranch GetRanchAt(int x, int y)
+ {
+ foreach(Ranch ranch in Ranches)
+ {
+ if (ranch.X == x && ranch.Y == y)
+ return ranch;
+ }
+ throw new KeyNotFoundException("No Ranch found at x" + x + " y" + y);
+ }
+
+ public static bool IsRanchOwned(int playerId)
+ {
+ foreach (Ranch ranch in Ranches)
+ {
+ if (ranch.OwnerId == playerId)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ public static Ranch GetRanchOwnedBy(int playerId)
+ {
+ foreach(Ranch ranch in Ranches)
+ {
+ if(ranch.OwnerId == playerId)
+ {
+ return ranch;
+ }
+ }
+ throw new KeyNotFoundException("Player " + playerId + " does not own a ranch.");
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Game/Riddler.cs b/HorseIsleServer/LibHISP/Game/Riddler.cs
old mode 100755
new mode 100644
index cc154ed..3bed926
--- a/HorseIsleServer/LibHISP/Game/Riddler.cs
+++ b/HorseIsleServer/LibHISP/Game/Riddler.cs
@@ -32,7 +32,7 @@ namespace HISP.Game
Database.CompleteRiddle(this.Id, user.Id);
byte[] riddleAnswerCorrectPacket = PacketBuilder.CreateChat(Messages.FormatRiddlerAnswerCorrect(this.Reason), PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(riddleAnswerCorrectPacket);
+ user.LoggedinClient.SendPacket(riddleAnswerCorrectPacket);
user.AddMoney(10000);
if(HasCompletedAllRiddles(user))
@@ -42,7 +42,7 @@ namespace HISP.Game
public void AnswerFail(User user)
{
byte[] riddleIncorrect = PacketBuilder.CreateChat(Messages.RiddlerIncorrectAnswer, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(riddleIncorrect);
+ user.LoggedinClient.SendPacket(riddleIncorrect);
}
public bool CheckAnswer(User user, string txt)
diff --git a/HorseIsleServer/LibHISP/Game/Services/Auction.cs b/HorseIsleServer/LibHISP/Game/Services/Auction.cs
old mode 100755
new mode 100644
index a56f712..abbc066
--- a/HorseIsleServer/LibHISP/Game/Services/Auction.cs
+++ b/HorseIsleServer/LibHISP/Game/Services/Auction.cs
@@ -2,14 +2,13 @@
using HISP.Player;
using HISP.Security;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Game.Services
{
public class Auction
{
- private static ThreadSafeList auctionRooms = new ThreadSafeList();
+ private static List auctionRooms = new List();
public static Auction[] AuctionRooms
{
get
@@ -21,7 +20,7 @@ namespace HISP.Game.Services
public Auction(int id)
{
RoomId = id;
- auctionEntries = new ThreadSafeList();
+ auctionEntries = new List();
Database.LoadAuctionRoom(this, RoomId);
}
@@ -38,7 +37,7 @@ namespace HISP.Game.Services
if(BidUser.HorseInventory.HorseList.Length >= BidUser.MaxHorses)
{
byte[] tooManyHorses = PacketBuilder.CreateChat(Messages.AuctionYouHaveTooManyHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
- BidUser.Client.SendPacket(tooManyHorses);
+ BidUser.LoggedinClient.SendPacket(tooManyHorses);
return;
}
@@ -47,7 +46,7 @@ namespace HISP.Game.Services
if(BidAmount >= MAX_BID)
{
byte[] maxBidReached = PacketBuilder.CreateChat(Messages.AuctionBidMax, PacketBuilder.CHAT_BOTTOM_RIGHT);
- BidUser.Client.SendPacket(maxBidReached);
+ BidUser.LoggedinClient.SendPacket(maxBidReached);
return;
}
@@ -56,7 +55,7 @@ namespace HISP.Game.Services
{
byte[] cantAffordBid = PacketBuilder.CreateChat(Messages.AuctionCantAffordBid, PacketBuilder.CHAT_BOTTOM_RIGHT);
- BidUser.Client.SendPacket(cantAffordBid);
+ BidUser.LoggedinClient.SendPacket(cantAffordBid);
return;
}
@@ -78,7 +77,7 @@ namespace HISP.Game.Services
if(entry.RandomId != AuctionItem.RandomId && entry.HighestBidder == BidUser.Id)
{
byte[] cantWinTooMuch = PacketBuilder.CreateChat(Messages.AuctionOnlyOneWinningBidAllowed, PacketBuilder.CHAT_BOTTOM_RIGHT);
- BidUser.Client.SendPacket(cantWinTooMuch);
+ BidUser.LoggedinClient.SendPacket(cantWinTooMuch);
return;
}
}
@@ -92,7 +91,7 @@ namespace HISP.Game.Services
{
User oldBidder = GameServer.GetUserById(AuctionItem.HighestBidder);
byte[] outbidMessage = PacketBuilder.CreateChat(Messages.FormatAuctionYourOutbidBy(BidUser.Username, AuctionItem.HighestBid), PacketBuilder.CHAT_BOTTOM_RIGHT);
- oldBidder.Client.SendPacket(outbidMessage);
+ oldBidder.LoggedinClient.SendPacket(outbidMessage);
}
}
@@ -105,7 +104,7 @@ namespace HISP.Game.Services
}
byte[] bidPlacedMsg = PacketBuilder.CreateChat(yourBidRaisedTo, PacketBuilder.CHAT_BOTTOM_RIGHT);
- BidUser.Client.SendPacket(bidPlacedMsg);
+ BidUser.LoggedinClient.SendPacket(bidPlacedMsg);
}
@@ -123,7 +122,7 @@ namespace HISP.Game.Services
public HorseInstance Horse;
public int OwnerId;
- private ThreadSafeList bidders = new ThreadSafeList();
+ private List bidders = new List();
public AuctionBid[] Bidders
{
get
@@ -152,7 +151,7 @@ namespace HISP.Game.Services
User auctionRunner = GameServer.GetUserById(highestBidder);
auctionRunner.HorseInventory.UnHide(Horse.RandomId);
byte[] notSold = PacketBuilder.CreateChat(Messages.AuctionNoHorseBrought, PacketBuilder.CHAT_BOTTOM_RIGHT);
- auctionRunner.Client.SendPacket(notSold);
+ auctionRunner.LoggedinClient.SendPacket(notSold);
}
return;
}
@@ -162,7 +161,7 @@ namespace HISP.Game.Services
{
User userWon = GameServer.GetUserById(highestBidder);
byte[] wonAuction = PacketBuilder.CreateChat(Messages.FormatAuctionBroughtHorse(highestBid), PacketBuilder.CHAT_BOTTOM_RIGHT);
- userWon.Client.SendPacket(wonAuction);
+ userWon.LoggedinClient.SendPacket(wonAuction);
userWon.TakeMoney(highestBid);
userWon.HorseInventory.AddHorse(Horse, false);
}
@@ -175,7 +174,7 @@ namespace HISP.Game.Services
{
User userSold = GameServer.GetUserById(OwnerId);
byte[] horseSold = PacketBuilder.CreateChat(Messages.FormatAuctionHorseSold(highestBid), PacketBuilder.CHAT_BOTTOM_RIGHT);
- userSold.Client.SendPacket(horseSold);
+ userSold.LoggedinClient.SendPacket(horseSold);
userSold.AddMoney(highestBid);
userSold.HorseInventory.DeleteHorse(Horse, false);
}
@@ -298,7 +297,7 @@ namespace HISP.Game.Services
auctionEntries.Add(entry);
}
- private ThreadSafeList auctionEntries;
+ private List auctionEntries;
public int RoomId;
public AuctionEntry[] AuctionEntries
diff --git a/HorseIsleServer/LibHISP/Game/Services/Barn.cs b/HorseIsleServer/LibHISP/Game/Services/Barn.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Farrier.cs b/HorseIsleServer/LibHISP/Game/Services/Farrier.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Groomer.cs b/HorseIsleServer/LibHISP/Game/Services/Groomer.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Inn.cs b/HorseIsleServer/LibHISP/Game/Services/Inn.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Pawneer.cs b/HorseIsleServer/LibHISP/Game/Services/Pawneer.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Shop.cs b/HorseIsleServer/LibHISP/Game/Services/Shop.cs
old mode 100755
new mode 100644
index a29485a..c8216cd
--- a/HorseIsleServer/LibHISP/Game/Services/Shop.cs
+++ b/HorseIsleServer/LibHISP/Game/Services/Shop.cs
@@ -24,7 +24,7 @@ namespace HISP.Game.Services
if (Item.ItemIdExist(stock))
this.Inventory.AddInfinity(Item.GetItemById(stock));
else
- Logger.WarnPrint("Item ID: " + stock + " doesn't exist, but shop " + id + " stocks it");
+ Logger.WarnPrint("Item ID: " + stock + " Does not exist.");
}
ItemInstance[] instances = Database.GetShopInventory(this.Id);
diff --git a/HorseIsleServer/LibHISP/Game/Services/Trainer.cs b/HorseIsleServer/LibHISP/Game/Services/Trainer.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Transport.cs b/HorseIsleServer/LibHISP/Game/Services/Transport.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Vet.cs b/HorseIsleServer/LibHISP/Game/Services/Vet.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/Services/Workshop.cs b/HorseIsleServer/LibHISP/Game/Services/Workshop.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/SwfModules/Brickpoet.cs b/HorseIsleServer/LibHISP/Game/SwfModules/Brickpoet.cs
old mode 100755
new mode 100644
index a207306..d95c123
--- a/HorseIsleServer/LibHISP/Game/SwfModules/Brickpoet.cs
+++ b/HorseIsleServer/LibHISP/Game/SwfModules/Brickpoet.cs
@@ -156,7 +156,7 @@ namespace HISP.Game.SwfModules
foreach(int room in rooms)
{
- Logger.InfoPrint("Loading Poetry room: " + room.ToString());
+ Logger.InfoPrint("Loading poetry room: " + room.ToString());
poetryRooms.Add(getPoetryRoom(room));
if (!Database.LastPlayerExist("P" + room))
Database.AddLastPlayer("P" + room, -1);
diff --git a/HorseIsleServer/LibHISP/Game/SwfModules/Drawingroom.cs b/HorseIsleServer/LibHISP/Game/SwfModules/Drawingroom.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Game/SwfModules/Dressup.cs b/HorseIsleServer/LibHISP/Game/SwfModules/Dressup.cs
old mode 100755
new mode 100644
index 3713375..aa18b91
--- a/HorseIsleServer/LibHISP/Game/SwfModules/Dressup.cs
+++ b/HorseIsleServer/LibHISP/Game/SwfModules/Dressup.cs
@@ -1,5 +1,4 @@
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Game.SwfModules
@@ -18,7 +17,7 @@ namespace HISP.Game.SwfModules
public class DressupRoom
{
public int RoomId;
- private ThreadSafeList dressupPeices;
+ private List dressupPeices;
public DressupPeice[] DressupPeices
{
get
@@ -29,7 +28,7 @@ namespace HISP.Game.SwfModules
public DressupRoom(int roomId)
{
RoomId = roomId;
- dressupPeices = new ThreadSafeList();
+ dressupPeices = new List();
DressupPeice[] peices = Database.LoadDressupRoom(this);
foreach (DressupPeice peice in peices)
diff --git a/HorseIsleServer/LibHISP/Game/Tracking.cs b/HorseIsleServer/LibHISP/Game/Tracking.cs
old mode 100755
new mode 100644
index ff16f60..18e12ec
--- a/HorseIsleServer/LibHISP/Game/Tracking.cs
+++ b/HorseIsleServer/LibHISP/Game/Tracking.cs
@@ -1,6 +1,5 @@
using HISP.Player;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Game
@@ -58,7 +57,7 @@ namespace HISP.Game
private int count;
private User baseUser;
}
- private ThreadSafeList trackingItems = new ThreadSafeList();
+ private List trackingItems = new List();
private User baseUser;
public TrackedItem[] TrackingItems
{
diff --git a/HorseIsleServer/LibHISP/Game/Treasure.cs b/HorseIsleServer/LibHISP/Game/Treasure.cs
old mode 100755
new mode 100644
index 7035b9f..71ab958
--- a/HorseIsleServer/LibHISP/Game/Treasure.cs
+++ b/HorseIsleServer/LibHISP/Game/Treasure.cs
@@ -139,15 +139,15 @@ namespace HISP.Game
Database.DeleteTreasure(this.RandomId);
GenerateTreasure();
- byte[] MovementPacket = PacketBuilder.CreateMovement(user.X, user.Y, user.CharacterId, user.Facing, PacketBuilder.DIRECTION_TELEPORT, true);
- user.Client.SendPacket(MovementPacket);
+ byte[] MovementPacket = PacketBuilder.CreateMovementPacket(user.X, user.Y, user.CharacterId, user.Facing, PacketBuilder.DIRECTION_TELEPORT, true);
+ user.LoggedinClient.SendPacket(MovementPacket);
user.AddMoney(Value);
if(this.Type == "BURIED")
{
byte[] treasureReceivedPacket = PacketBuilder.CreateChat(Messages.FormatPirateTreasure(this.Value), PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(treasureReceivedPacket);
+ user.LoggedinClient.SendPacket(treasureReceivedPacket);
user.TrackedItems.GetTrackedItem(Tracking.TrackableItem.PirateTreasure).Count++;
if(user.TrackedItems.GetTrackedItem(Tracking.TrackableItem.PirateTreasure).Count >= 10)
@@ -159,7 +159,7 @@ namespace HISP.Game
else if(this.Type == "RAINBOW")
{
byte[] treasureReceivedPacket = PacketBuilder.CreateChat(Messages.FormatPotOfGold(this.Value), PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(treasureReceivedPacket);
+ user.LoggedinClient.SendPacket(treasureReceivedPacket);
user.TrackedItems.GetTrackedItem(Tracking.TrackableItem.PotOfGold).Count++;
diff --git a/HorseIsleServer/LibHISP/Game/TwoPlayer.cs b/HorseIsleServer/LibHISP/Game/TwoPlayer.cs
old mode 100755
new mode 100644
index 6b03254..7eb6afb
--- a/HorseIsleServer/LibHISP/Game/TwoPlayer.cs
+++ b/HorseIsleServer/LibHISP/Game/TwoPlayer.cs
@@ -86,8 +86,8 @@ namespace HISP.Game
byte[] youHaveInvited = PacketBuilder.CreateChat(Messages.Format2PlayerYouInvited(inviting.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
byte[] yourInvited = PacketBuilder.CreateChat(Messages.Format2PlayerYourInvited(invitee.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- Invitee.Client.SendPacket(youHaveInvited);
- Inviting.Client.SendPacket(yourInvited);
+ Invitee.LoggedinClient.SendPacket(youHaveInvited);
+ Inviting.LoggedinClient.SendPacket(yourInvited);
deleteTimer = new Timer(new TimerCallback(deleteTwoPlayer), null, 2 * 60 * 1000, 2 * 60 * 1000);
@@ -119,15 +119,15 @@ namespace HISP.Game
private void update()
{
- GameServer.UpdateArea(Invitee.Client);
- GameServer.UpdateArea(Inviting.Client);
+ GameServer.UpdateArea(Invitee.LoggedinClient);
+ GameServer.UpdateArea(Inviting.LoggedinClient);
}
private void updateOthers()
{
foreach(User user in this.Multiroom.JoinedUsers)
if (IsPlayerInGame(user))
if(user.Id != Invitee.Id && user.Id != Inviting.Id)
- GameServer.UpdateArea(user.Client);
+ GameServer.UpdateArea(user.LoggedinClient);
}
public void UpdateAll()
@@ -182,14 +182,14 @@ namespace HISP.Game
byte[] startingUpGameInvitee = PacketBuilder.CreateChat(Messages.Format2PlayerStartingGame(Inviting.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
byte[] startingUpGameInvited = PacketBuilder.CreateChat(Messages.Format2PlayerStartingGame(Invitee.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- Invitee.Client.SendPacket(startingUpGameInvitee);
- Inviting.Client.SendPacket(startingUpGameInvited);
+ Invitee.LoggedinClient.SendPacket(startingUpGameInvitee);
+ Inviting.LoggedinClient.SendPacket(startingUpGameInvited);
- byte[] loadSwfInvitee = PacketBuilder.CreateSwfModule(buildSwf(2), PacketBuilder.PACKET_SWF_MODULE_FORCE);
- byte[] loadSwfInvited = PacketBuilder.CreateSwfModule(buildSwf(1), PacketBuilder.PACKET_SWF_MODULE_FORCE);
+ byte[] loadSwfInvitee = PacketBuilder.CreateSwfModulePacket(buildSwf(2), PacketBuilder.PACKET_SWF_MODULE_FORCE);
+ byte[] loadSwfInvited = PacketBuilder.CreateSwfModulePacket(buildSwf(1), PacketBuilder.PACKET_SWF_MODULE_FORCE);
- Invitee.Client.SendPacket(loadSwfInvitee);
- Inviting.Client.SendPacket(loadSwfInvited);
+ Invitee.LoggedinClient.SendPacket(loadSwfInvitee);
+ Inviting.LoggedinClient.SendPacket(loadSwfInvited);
}
}
@@ -207,13 +207,13 @@ namespace HISP.Game
if (userWhoClosed.Id == Inviting.Id)
{
- Invitee.Client.SendPacket(gameClosedByOther);
- Inviting.Client.SendPacket(gameClosed);
+ Invitee.LoggedinClient.SendPacket(gameClosedByOther);
+ Inviting.LoggedinClient.SendPacket(gameClosed);
}
else if (userWhoClosed.Id == Invitee.Id)
{
- Invitee.Client.SendPacket(gameClosed);
- Inviting.Client.SendPacket(gameClosedByOther);
+ Invitee.LoggedinClient.SendPacket(gameClosed);
+ Inviting.LoggedinClient.SendPacket(gameClosedByOther);
}
}
diff --git a/HorseIsleServer/LibHISP/Game/World.cs b/HorseIsleServer/LibHISP/Game/World.cs
old mode 100755
new mode 100644
index 60190d3..a52a8d8
--- a/HorseIsleServer/LibHISP/Game/World.cs
+++ b/HorseIsleServer/LibHISP/Game/World.cs
@@ -74,7 +74,7 @@ namespace HISP.Game
Database.SetWeather(Name, value);
foreach(User user in GameServer.GetUsersInIsle(this,true,true))
{
- GameServer.UpdateWorld(user.Client);
+ GameServer.UpdateWorld(user.LoggedinClient);
}
}
}
@@ -127,7 +127,7 @@ namespace HISP.Game
Database.SetWeather(Name, value);
foreach (User user in GameServer.GetUsersInTown(this, true, true))
{
- GameServer.UpdateArea(user.Client);
+ GameServer.UpdateArea(user.LoggedinClient);
}
}
@@ -158,7 +158,14 @@ namespace HISP.Game
public class Time
{
- public int Minutes;
+ public double PreciseMinutes;
+ public int Minutes
+ {
+ get
+ {
+ return Convert.ToInt32(Math.Floor(PreciseMinutes));
+ }
+ }
public int Days;
public int Years;
}
@@ -191,13 +198,13 @@ namespace HISP.Game
public static void TickWorldClock()
{
- ServerTime.Minutes++;
+ ServerTime.PreciseMinutes += 0.1;
if (ServerTime.Minutes > 1440) // 1 day
{
ServerTime.Days += 1;
- ServerTime.Minutes = 0;
+ ServerTime.PreciseMinutes = 0.0;
Database.DoIntrestPayments(ConfigReader.IntrestRate);
}
@@ -212,7 +219,7 @@ namespace HISP.Game
public static void ReadWorldData()
{
Logger.DebugPrint("Reading time from database...");
- ServerTime.Minutes = Database.GetServerTime();
+ ServerTime.PreciseMinutes = Database.GetServerTime();
ServerTime.Days = Database.GetServerDay();
ServerTime.Years = Database.GetServerYear();
StartDate = Database.GetServerStartTime();
diff --git a/HorseIsleServer/LibHISP/LibHISP.csproj b/HorseIsleServer/LibHISP/LibHISP.csproj
old mode 100755
new mode 100644
index fec083e..177893d
--- a/HorseIsleServer/LibHISP/LibHISP.csproj
+++ b/HorseIsleServer/LibHISP/LibHISP.csproj
@@ -1,283 +1,250 @@
-
-
- Library
- HISP
- 10.0
- x64;x86;ARM;ARM64;AnyCPU
- Debug;Windows;Linux;MacOS;Android;iOS
-
-
-
- True
- True
- Resources.resx
-
-
-
-
- PreserveNewest
- PreserveNewest
- gamedata\%(Filename)%(Extension)
-
-
-
-
- PreserveNewest
- PreserveNewest
- HI1.MAP
-
-
-
-
-
-
-
-
-
- PublicResXFileCodeGenerator
-
-
-
- false
- false
-
-
- net8.0
- false
- true
- OnBuildSuccess
- full
- False
- none
- False
- Public Domain, 2022
- https://islehorse.com
- https://github.com/islehorse/HISP
- git
- 3
- 1701;1702;2026;IL2026
-
-
-
- partial
- false
- true
-
-
-
- win-x86
- true
- x86
- OS_WINDOWS;ARCH_X86
- none
-
-
- win-x64
- true
- x64
- OS_WINDOWS;ARCH_X86_64
- none
-
-
- win-arm
- true
- ARM
- OS_WINDOWS;ARCH_ARM
- none
-
-
- win-arm64
- true
- ARM64
- OS_WINDOWS;ARCH_ARM64
- none
-
-
-
- ios-arm
- true
- ARM
- OS_IOS;ARCH_ARM
- none
-
-
- ios-arm64
- none
- ARM64
- OS_IOS;ARCH_ARM64
- none
-
-
-
- android-arm
- true
- ARM
- OS_ANDROID;ARCH_ARM
- none
-
-
- android-arm64
- true
- ARM64
- OS_ANDROID;ARCH_ARM64
- none
-
-
-
-
- linux-x64
- true
- x64
- OS_LINUX;ARCH_X86_64
- none
-
-
- linux-arm
- ARM
- true
- OS_LINUX;ARCH_ARM
- none
-
-
- linux-arm64
- ARM64
- true
- OS_LINUX;ARCH_ARM64
- none
-
-
-
- osx-x64
- true
- x64
- OS_MACOS;ARCH_X86_64
- none
-
-
-
- osx-arm64
- true
- OS_MACOS;ARCH_ARM64
- none
-
-
-
-
- win-x86;win-x64;win-arm;win-arm64;linux-x64;linux-arm;linux-arm64;osx-x64;osx-arm64
- True
- OS_ALL;ARCH_ANYCPU
-
-
-
-
- ARM
- False
- DEBUG;TRACE;OS_DEBUG;ARCH_ARM
- full
-
-
-
-
- ARM64
- False
- DEBUG;TRACE;OS_DEBUG;ARCH_ARM64
- full
-
-
-
-
- False
- DEBUG;TRACE;OS_DEBUG;ARCH_X86_64
- full
-
-
-
-
- False
- DEBUG;TRACE;OS_DEBUG;ARCH_X86
- full
-
-
-
-
- True
- OS_MACOS;ARCH_X86
- none
-
-
-
-
- True
- OS_LINUX;ARCH_X86
- none
-
-
-
-
- False
- OS_LINUX;ARCH_ANYCPU
- none
-
-
-
-
- False
- OS_WINDOWS;ARCH_ANYCPU
- none
-
-
-
-
- False
- OS_MACOS;ARCH_ANYCPU
- none
-
-
-
-
- True
- OS_MACOS;ARCH_ARM
- none
-
-
-
-
- False
- none
-
-
-
-
- none
-
-
-
-
- none
-
-
-
-
- none
-
-
-
-
- none
-
-
-
-
- none
-
-
-
-
- none
-
-
-
-
-
-
-
+
+
+ Library
+ HISP
+ 10.0
+ x64;x86;ARM;ARM64;AnyCPU
+ Debug;Windows;Linux;MacOS;Android
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+ PreserveNewest
+ gamedata.json
+
+
+
+
+ PreserveNewest
+ HI1.MAP
+
+
+
+
+
+
+
+
+
+ PublicResXFileCodeGenerator
+
+
+
+ false
+ false
+
+
+ net6.0
+ false
+ true
+ OnBuildSuccess
+ embedded
+ False
+ none
+ False
+ Public Domain, 2022
+ https://islehorse.com
+ https://github.com/islehorse/HISP
+ git
+
+
+
+ win-x86
+ true
+ x86
+ OS_WINDOWS;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+ win-x64
+ true
+ x64
+ OS_WINDOWS;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+ win-arm
+ true
+ ARM
+ OS_WINDOWS;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+ win-arm64
+ true
+ ARM64
+ OS_WINDOWS;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+ android-arm
+ true
+ ARM
+ OS_ANDROID;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+ android-arm64
+ true
+ ARM64
+ OS_ANDROID;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+
+ linux-x64
+ true
+ x64
+ OS_LINUX;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+ linux-arm
+ ARM
+ true
+ OS_LINUX;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+ linux-arm64
+ ARM64
+ true
+ OS_LINUX;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+ osx-x64
+ true
+ x64
+ OS_MACOS;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+ osx-arm64
+ true
+ OS_MACOS;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+
+ net6.0
+ win-x86;win-x64;win-arm;win-arm64;linux-x64;linux-arm;linux-arm64;osx-x64;osx-arm64
+ True
+ OS_ALL;ARCH_ANYCPU
+
+
+
+
+ ARM
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+
+
+ ARM64
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_ARM64
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86_64
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+
+
+ True
+ OS_MACOS;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+
+
+ True
+ OS_LINUX;ARCH_X86
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ OS_LINUX;ARCH_ANYCPU
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ OS_WINDOWS;ARCH_ANYCPU
+ 3
+ 1701;1702;2026
+
+
+
+
+ False
+ OS_MACOS;ARCH_ANYCPU
+ 3
+ 1701;1702;2026
+
+
+
+
+ True
+ OS_MACOS;ARCH_ARM
+ 3
+ 1701;1702;2026
+
+
+
+
+ 3
+ 1701;1702;2026
+ False
+
+
+
+
+
+
+
diff --git a/HorseIsleServer/LibHISP/Player/Award.cs b/HorseIsleServer/LibHISP/Player/Award.cs
old mode 100755
new mode 100644
index be049de..d0ba64b
--- a/HorseIsleServer/LibHISP/Player/Award.cs
+++ b/HorseIsleServer/LibHISP/Player/Award.cs
@@ -1,100 +1,99 @@
-using HISP.Server;
-using HISP.Util;
-using System;
-using System.Collections.Generic;
-
-namespace HISP.Player
-{
- public class Award
- {
- public struct AwardEntry
- {
- public int Id;
- public int Sort;
- public string Title;
- public int IconId;
- public int MoneyBonus;
- public string CompletionText;
- public string Description;
- }
-
- public static AwardEntry[] GlobalAwardList;
-
- public static AwardEntry GetAwardById(int id)
- {
- //99% fo the time this will work
- try
- {
- AwardEntry award = GlobalAwardList[id - 1];
- if (award.Id == id)
- return award;
- }
- catch (Exception) { };
-
- // Incase it doesnt...
- foreach(AwardEntry award in GlobalAwardList)
- {
- if (award.Id == id)
- return award;
- }
-
- throw new KeyNotFoundException("Award ID " + id + " Does not exist.");
- }
-
-
- private ThreadSafeList awardsEarned;
- private User baseUser;
- public AwardEntry[] AwardsEarned
- {
- get
- {
- return awardsEarned.ToArray();
- }
- }
-
- public bool HasAward(AwardEntry award)
- {
- foreach(AwardEntry awardEntry in AwardsEarned)
- {
- if (awardEntry.Id == award.Id)
- return true;
- }
- return false;
- }
-
- public void AddAward(AwardEntry award,bool addToDatabase=true)
- {
- if (HasAward(award))
- return;
-
- if (addToDatabase)
- {
- Database.AddAward(baseUser.Id, award.Id);
-
- baseUser.AddMoney(award.MoneyBonus);
-
- byte[] chatPacket = PacketBuilder.CreateChat(award.CompletionText, PacketBuilder.CHAT_BOTTOM_RIGHT);
- baseUser.Client.SendPacket(chatPacket);
- }
-
-
- awardsEarned.Add(award);
- }
-
- public Award(User user)
- {
- baseUser = user;
- int[] awards = Database.GetAwards(user.Id);
- awardsEarned = new ThreadSafeList();
-
- foreach (int awardid in awards)
- {
- AddAward(GetAwardById(awardid), false);
- }
-
- }
-
-
-
- }
-}
+using HISP.Server;
+using System;
+using System.Collections.Generic;
+
+namespace HISP.Player
+{
+ public class Award
+ {
+ public struct AwardEntry
+ {
+ public int Id;
+ public int Sort;
+ public string Title;
+ public int IconId;
+ public int MoneyBonus;
+ public string CompletionText;
+ public string Description;
+ }
+
+ public static AwardEntry[] GlobalAwardList;
+
+ public static AwardEntry GetAwardById(int id)
+ {
+ //99% fo the time this will work
+ try
+ {
+ AwardEntry award = GlobalAwardList[id - 1];
+ if (award.Id == id)
+ return award;
+ }
+ catch (Exception) { };
+
+ // Incase it doesnt...
+ foreach(AwardEntry award in GlobalAwardList)
+ {
+ if (award.Id == id)
+ return award;
+ }
+
+ throw new KeyNotFoundException("Award ID " + id + " Does not exist.");
+ }
+
+
+ private List awardsEarned;
+ private User baseUser;
+ public AwardEntry[] AwardsEarned
+ {
+ get
+ {
+ return awardsEarned.ToArray();
+ }
+ }
+
+ public bool HasAward(AwardEntry award)
+ {
+ foreach(AwardEntry awardEntry in AwardsEarned)
+ {
+ if (awardEntry.Id == award.Id)
+ return true;
+ }
+ return false;
+ }
+
+ public void AddAward(AwardEntry award,bool addToDatabase=true)
+ {
+ if (HasAward(award))
+ return;
+
+ if (addToDatabase)
+ {
+ Database.AddAward(baseUser.Id, award.Id);
+
+ baseUser.AddMoney(award.MoneyBonus);
+
+ byte[] chatPacket = PacketBuilder.CreateChat(award.CompletionText, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ baseUser.LoggedinClient.SendPacket(chatPacket);
+ }
+
+
+ awardsEarned.Add(award);
+ }
+
+ public Award(User user)
+ {
+ baseUser = user;
+ int[] awards = Database.GetAwards(user.Id);
+ awardsEarned = new List();
+
+ foreach (int awardid in awards)
+ {
+ AddAward(GetAwardById(awardid), false);
+ }
+
+ }
+
+
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Player/Dance.cs b/HorseIsleServer/LibHISP/Player/Dance.cs
old mode 100755
new mode 100644
index e688ad4..9ce152c
--- a/HorseIsleServer/LibHISP/Player/Dance.cs
+++ b/HorseIsleServer/LibHISP/Player/Dance.cs
@@ -62,8 +62,8 @@ namespace HISP.Player
baseUser.Facing = direction + (onHorse * 5);
- byte[] moveResponse = PacketBuilder.CreateMovement(baseUser.X, baseUser.Y, baseUser.CharacterId, baseUser.Facing, PacketBuilder.DIRECTION_NONE, false);
- baseUser.Client.SendPacket(moveResponse);
+ byte[] moveResponse = PacketBuilder.CreateMovementPacket(baseUser.X, baseUser.Y, baseUser.CharacterId, baseUser.Facing, PacketBuilder.DIRECTION_NONE, false);
+ baseUser.LoggedinClient.SendPacket(moveResponse);
GameServer.UpdateUserFacingAndLocation(baseUser);
diff --git a/HorseIsleServer/LibHISP/Player/Equips/CompetitionGear.cs b/HorseIsleServer/LibHISP/Player/Equips/CompetitionGear.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Player/Equips/Jewelry.cs b/HorseIsleServer/LibHISP/Player/Equips/Jewelry.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Player/Friends.cs b/HorseIsleServer/LibHISP/Player/Friends.cs
old mode 100755
new mode 100644
index bada4a4..7b77d5f
--- a/HorseIsleServer/LibHISP/Player/Friends.cs
+++ b/HorseIsleServer/LibHISP/Player/Friends.cs
@@ -1,14 +1,13 @@
using System.Collections.Generic;
using HISP.Game;
using HISP.Server;
-using HISP.Util;
-
+
namespace HISP.Player
{
public class Friends
{
private User baseUser;
- private ThreadSafeList list;
+ private List list;
public int[] List
{
get
@@ -37,7 +36,7 @@ namespace HISP.Player
public Friends(User user)
{
baseUser = user;
- list = new ThreadSafeList();
+ list = new List();
int[] friends = Database.GetBuddyList(user.Id);
foreach(int friendId in friends)
@@ -77,19 +76,19 @@ namespace HISP.Player
if(baseUser.MuteBuddy)
{
byte[] cantFriend = PacketBuilder.CreateChat(Messages.CantSendBuddyRequestWhileMuted, PacketBuilder.CHAT_BOTTOM_RIGHT);
- baseUser.Client.SendPacket(cantFriend);
+ baseUser.LoggedinClient.SendPacket(cantFriend);
return;
}
else if(userToFriend.MuteBuddyRequests)
{
byte[] cantFriend = PacketBuilder.CreateChat(Messages.PlayerIgnoringAllBuddyRequests, PacketBuilder.CHAT_BOTTOM_RIGHT);
- baseUser.Client.SendPacket(cantFriend);
+ baseUser.LoggedinClient.SendPacket(cantFriend);
return;
}
else if(userToFriend.MutePlayer.IsUserMuted(userToFriend))
{
byte[] cantFriend = PacketBuilder.CreateChat(Messages.PlayerIgnoringYourBuddyRequests, PacketBuilder.CHAT_BOTTOM_RIGHT);
- baseUser.Client.SendPacket(cantFriend);
+ baseUser.LoggedinClient.SendPacket(cantFriend);
return;
}
@@ -102,23 +101,23 @@ namespace HISP.Player
byte[] nowFriendsMsg = PacketBuilder.CreateChat(Messages.FormatAddBuddyConfirmed(userToFriend.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
byte[] nowFriendsOther = PacketBuilder.CreateChat(Messages.FormatAddBuddyConfirmed(baseUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- userToFriend.Client.SendPacket(nowFriendsOther);
- baseUser.Client.SendPacket(nowFriendsMsg);
+ userToFriend.LoggedinClient.SendPacket(nowFriendsOther);
+ baseUser.LoggedinClient.SendPacket(nowFriendsMsg);
if(!baseUser.MajorPriority)
- GameServer.UpdateArea(baseUser.Client);
+ GameServer.UpdateArea(baseUser.LoggedinClient);
if (!userToFriend.MajorPriority)
- GameServer.UpdateArea(userToFriend.Client);
+ GameServer.UpdateArea(userToFriend.LoggedinClient);
}
else
{
baseUser.PendingBuddyRequestTo = userToFriend;
byte[] pendingMsg = PacketBuilder.CreateChat(Messages.AddBuddyPending, PacketBuilder.CHAT_BOTTOM_RIGHT);
byte[] pendingMsgOther = PacketBuilder.CreateChat(Messages.FormatAddBuddyPendingOther(baseUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- baseUser.Client.SendPacket(pendingMsg);
+ baseUser.LoggedinClient.SendPacket(pendingMsg);
if(!userToFriend.MuteBuddyRequests && !userToFriend.MuteAll)
- userToFriend.Client.SendPacket(pendingMsgOther);
+ userToFriend.LoggedinClient.SendPacket(pendingMsgOther);
}
}
diff --git a/HorseIsleServer/LibHISP/Player/Highscore.cs b/HorseIsleServer/LibHISP/Player/Highscore.cs
old mode 100755
new mode 100644
index 138154b..e26c752
--- a/HorseIsleServer/LibHISP/Player/Highscore.cs
+++ b/HorseIsleServer/LibHISP/Player/Highscore.cs
@@ -1,5 +1,4 @@
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Player
@@ -25,7 +24,7 @@ namespace HISP.Player
}
private User baseUser;
- private ThreadSafeList highScoreList = new ThreadSafeList();
+ private List highScoreList = new List();
public Highscore(User user)
{
diff --git a/HorseIsleServer/LibHISP/Player/Mailbox.cs b/HorseIsleServer/LibHISP/Player/Mailbox.cs
old mode 100755
new mode 100644
index 8b6c726..195bf04
--- a/HorseIsleServer/LibHISP/Player/Mailbox.cs
+++ b/HorseIsleServer/LibHISP/Player/Mailbox.cs
@@ -2,7 +2,6 @@
using HISP.Game.Inventory;
using HISP.Game.Items;
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Player
@@ -10,7 +9,7 @@ namespace HISP.Player
public class Mailbox
{
private User baseUser;
- private ThreadSafeList mails = new ThreadSafeList();
+ private List mails = new List();
public int MailCount
{
get
@@ -68,8 +67,8 @@ namespace HISP.Player
}
byte[] rippedUpMessage = PacketBuilder.CreateChat(Messages.MailRippedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- baseUser.Client.SendPacket(rippedUpMessage);
- GameServer.UpdateInventory(baseUser.Client);
+ baseUser.LoggedinClient.SendPacket(rippedUpMessage);
+ GameServer.UpdateInventory(baseUser.LoggedinClient);
}
public void ReadAllMail()
@@ -87,7 +86,7 @@ namespace HISP.Player
mails[i].Read = true;
}
- GameServer.UpdatePlayer(baseUser.Client);
+ GameServer.UpdatePlayer(baseUser.LoggedinClient);
}
public void AddMail(Mail mailMessage)
{
diff --git a/HorseIsleServer/LibHISP/Player/MutedPlayers.cs b/HorseIsleServer/LibHISP/Player/MutedPlayers.cs
old mode 100755
new mode 100644
index 18f1f6b..3ed1cfb
--- a/HorseIsleServer/LibHISP/Player/MutedPlayers.cs
+++ b/HorseIsleServer/LibHISP/Player/MutedPlayers.cs
@@ -1,5 +1,4 @@
using HISP.Server;
-using HISP.Util;
using System.Collections.Generic;
namespace HISP.Player
@@ -7,10 +6,10 @@ namespace HISP.Player
public class MutedPlayers
{
private User baseUser;
- private ThreadSafeList userIds;
+ private List userIds;
public MutedPlayers(User BaseUser)
{
- userIds = new ThreadSafeList();
+ userIds = new List();
baseUser = BaseUser;
int[] userids = Database.GetMutedPlayers(BaseUser.Id);
diff --git a/HorseIsleServer/LibHISP/Player/PlayerQuests.cs b/HorseIsleServer/LibHISP/Player/PlayerQuests.cs
old mode 100755
new mode 100644
index 7882c3d..0238249
--- a/HorseIsleServer/LibHISP/Player/PlayerQuests.cs
+++ b/HorseIsleServer/LibHISP/Player/PlayerQuests.cs
@@ -1,12 +1,11 @@
using System.Collections.Generic;
using HISP.Server;
-using HISP.Util;
-
+
namespace HISP.Player
{
public class PlayerQuests
{
- private ThreadSafeList trackedQuests = new ThreadSafeList();
+ private List trackedQuests = new List();
public User BaseUser;
public TrackedQuest[] QuestList
{
diff --git a/HorseIsleServer/LibHISP/Player/TrackedQuest.cs b/HorseIsleServer/LibHISP/Player/TrackedQuest.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Player/Trade.cs b/HorseIsleServer/LibHISP/Player/Trade.cs
old mode 100755
new mode 100644
index c978364..ec6790e
--- a/HorseIsleServer/LibHISP/Player/Trade.cs
+++ b/HorseIsleServer/LibHISP/Player/Trade.cs
@@ -68,8 +68,8 @@ namespace HISP.Player
OtherTrade.Trader.PendingTradeTo = 0;
OtherTrade.Trader.TradingWith = null;
- GameServer.UpdateArea(Trader.Client);
- GameServer.UpdateArea(OtherTrade.Trader.Client);
+ GameServer.UpdateArea(Trader.LoggedinClient);
+ GameServer.UpdateArea(OtherTrade.Trader.LoggedinClient);
}
public bool Fail = false;
@@ -84,7 +84,7 @@ namespace HISP.Player
if (MoneyOffered > 0 && OtherTrade.Trader.Money < 0)
{
byte[] otherNegativeMoneyNotAllowed = PacketBuilder.CreateChat(Messages.TradeOtherPlayerHasNegativeMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(otherNegativeMoneyNotAllowed);
+ Trader.LoggedinClient.SendPacket(otherNegativeMoneyNotAllowed);
Fail = true;
OtherTrade.Fail = true;
}
@@ -93,7 +93,7 @@ namespace HISP.Player
if (OtherTrade.MoneyOffered > 0 && Trader.Money < 0)
{
byte[] negativeMoneyNotAllowed = PacketBuilder.CreateChat(Messages.TradeYouHaveNegativeMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(negativeMoneyNotAllowed);
+ Trader.LoggedinClient.SendPacket(negativeMoneyNotAllowed);
Fail = true;
OtherTrade.Fail = true;
}
@@ -102,7 +102,7 @@ namespace HISP.Player
if (OtherTrade.Trader.Bids.Length > 0)
{
byte[] tradeNotAllowedWhileOtherBidding = PacketBuilder.CreateChat(Messages.TradeNotAllowedWhileOtherBidding, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeNotAllowedWhileOtherBidding);
+ Trader.LoggedinClient.SendPacket(tradeNotAllowedWhileOtherBidding);
Fail = true;
OtherTrade.Fail = true;
}
@@ -111,7 +111,7 @@ namespace HISP.Player
if (Trader.Bids.Length > 0)
{
byte[] tradeNotAllowedWhileBidding = PacketBuilder.CreateChat(Messages.TradeNotAllowedWhileBidding, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeNotAllowedWhileBidding);
+ Trader.LoggedinClient.SendPacket(tradeNotAllowedWhileBidding);
Fail = true;
OtherTrade.Fail = true;
}
@@ -120,7 +120,7 @@ namespace HISP.Player
if (MoneyOffered > 0 && OtherTrade.Trader.Money + MoneyOffered > 2100000000)
{
byte[] tradeOtherHasTooMuchMoney = PacketBuilder.CreateChat(Messages.TradeWillGiveOtherTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeOtherHasTooMuchMoney);
+ Trader.LoggedinClient.SendPacket(tradeOtherHasTooMuchMoney);
Fail = true;
OtherTrade.Fail = true;
}
@@ -129,7 +129,7 @@ namespace HISP.Player
if (OtherTrade.MoneyOffered > 0 && Trader.Money + OtherTrade.MoneyOffered > 2100000000)
{
byte[] tradeYouHasTooMuchMoney = PacketBuilder.CreateChat(Messages.TradeWillGiveYouTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeYouHasTooMuchMoney);
+ Trader.LoggedinClient.SendPacket(tradeYouHasTooMuchMoney);
Fail = true;
OtherTrade.Fail = true;
}
@@ -143,7 +143,7 @@ namespace HISP.Player
if (HorsesOffered.Length > 0 && OtherTrade.Trader.HorseInventory.HorseList.Length + HorsesOffered.Length > OtherTrade.Trader.MaxHorses)
{
byte[] tradeYouHaveTooManyHorses = PacketBuilder.CreateChat(Messages.TradeYouCantHandleMoreHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeYouHaveTooManyHorses);
+ Trader.LoggedinClient.SendPacket(tradeYouHaveTooManyHorses);
Fail = true;
OtherTrade.Fail = true;
}
@@ -152,7 +152,7 @@ namespace HISP.Player
if (OtherTrade.HorsesOffered.Length > 0 && Trader.HorseInventory.HorseList.Length + OtherTrade.HorsesOffered.Length > Trader.MaxHorses)
{
byte[] tradeYouHaveTooManyHorses = PacketBuilder.CreateChat(Messages.TradeYouCantHandleMoreHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeYouHaveTooManyHorses);
+ Trader.LoggedinClient.SendPacket(tradeYouHaveTooManyHorses);
Fail = true;
OtherTrade.Fail = true;
}
@@ -171,7 +171,7 @@ namespace HISP.Player
if (items.ItemInstances.Length + inst.Length > Item.MAX_STACK)
{
byte[] tradeTooManyItems = PacketBuilder.CreateChat(Messages.TradeYouCantCarryMoreItems, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeTooManyItems);
+ Trader.LoggedinClient.SendPacket(tradeTooManyItems);
Fail = true;
OtherTrade.Fail = true;
}
@@ -189,7 +189,7 @@ namespace HISP.Player
if (items.ItemInstances.Length + inst.Length > Item.MAX_STACK)
{
byte[] tradeTooManyItems = PacketBuilder.CreateChat(Messages.TradeOtherCantCarryMoreItems, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeTooManyItems);
+ Trader.LoggedinClient.SendPacket(tradeTooManyItems);
Fail = true;
OtherTrade.Fail = true;
}
@@ -206,7 +206,7 @@ namespace HISP.Player
acceptTrade:;
byte[] tradeAccepted = PacketBuilder.CreateChat(Messages.TradeAcceptedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeAccepted);
+ Trader.LoggedinClient.SendPacket(tradeAccepted);
// Transfer Money
@@ -214,14 +214,14 @@ namespace HISP.Player
{
Trader.TakeMoney(MoneyOffered);
byte[] tradeSpentMoney = PacketBuilder.CreateChat(Messages.FormatTradeYouSpent(MoneyOffered), PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeSpentMoney);
+ Trader.LoggedinClient.SendPacket(tradeSpentMoney);
}
if(OtherTrade.MoneyOffered > 0)
{
Trader.AddMoney(OtherTrade.MoneyOffered);
byte[] tradeReceivedMoney = PacketBuilder.CreateChat(Messages.FormatTradeYouReceived(OtherTrade.MoneyOffered), PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeReceivedMoney);
+ Trader.LoggedinClient.SendPacket(tradeReceivedMoney);
}
foreach (HorseInstance inst in HorsesOffered) // Transfer Horses
@@ -236,7 +236,7 @@ namespace HISP.Player
byte[] disMounted = PacketBuilder.CreateChat(Messages.TradeRiddenHorse, PacketBuilder.CHAT_BOTTOM_RIGHT);
Trader.Facing %= 5;
Trader.CurrentlyRidingHorse = null;
- Trader.Client.SendPacket(disMounted);
+ Trader.LoggedinClient.SendPacket(disMounted);
}
}
@@ -273,13 +273,13 @@ namespace HISP.Player
public void InteruptTrade()
{
byte[] tradeCanceled = PacketBuilder.CreateChat(Messages.TradeCanceledInterupted, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeCanceled);
+ Trader.LoggedinClient.SendPacket(tradeCanceled);
endTrade();
}
public void AcceptTrade()
{
byte[] waitingForAccept = PacketBuilder.CreateChat(Messages.TradeWaitingForOthersToAcceptMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(waitingForAccept);
+ Trader.LoggedinClient.SendPacket(waitingForAccept);
if (OtherTrade.Stage == "ACCEPTED")
{
@@ -292,18 +292,18 @@ namespace HISP.Player
public void CancelTrade()
{
byte[] tradeCanceled = PacketBuilder.CreateChat(Messages.TradeCanceledByYouMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(tradeCanceled);
+ Trader.LoggedinClient.SendPacket(tradeCanceled);
byte[] tradeCanceledOther = PacketBuilder.CreateChat(Messages.FormatTradeCanceledByPlayer(Trader.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- OtherTrade.Trader.Client.SendPacket(tradeCanceledOther);
+ OtherTrade.Trader.LoggedinClient.SendPacket(tradeCanceledOther);
endTrade();
}
public void CancelTradeMoved()
{
byte[] playerMoved = PacketBuilder.CreateChat(Messages.TradeCanceledBecuasePlayerMovedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- Trader.Client.SendPacket(playerMoved);
- OtherTrade.Trader.Client.SendPacket(playerMoved);
+ Trader.LoggedinClient.SendPacket(playerMoved);
+ OtherTrade.Trader.LoggedinClient.SendPacket(playerMoved);
endTrade();
}
diff --git a/HorseIsleServer/LibHISP/Player/User.cs b/HorseIsleServer/LibHISP/Player/User.cs
old mode 100755
new mode 100644
index 802f76f..74ccb2b
--- a/HorseIsleServer/LibHISP/Player/User.cs
+++ b/HorseIsleServer/LibHISP/Player/User.cs
@@ -1,755 +1,699 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-
-using HISP.Game;
-using HISP.Server;
-using HISP.Player.Equips;
-using HISP.Game.Services;
-using HISP.Game.Inventory;
-using HISP.Game.Horse;
-using HISP.Util;
-
-
-namespace HISP.Player
-{
- public class User
- {
- private ThreadSafeList bids = new ThreadSafeList();
- private ThreadSafeList beingSocializedBy = new ThreadSafeList();
-
- private int chatViolations;
- private int charId;
- private int subscribedUntil;
- private bool subscribed;
- private string profilePage;
- private string privateNotes;
- private int x;
- private bool stealth = false;
- private int y;
- private int questPoints;
- private double bankMoney;
- private int experience;
- private int hunger;
- private int thirst;
- private int tired;
- private bool noClip = false;
- private bool administrator = false;
- private bool moderator = false;
-
- public bool NoClip
- {
- get
- {
- if(CurrentlyRidingHorse != null)
- {
- if(CurrentlyRidingHorse.Breed != null)
- {
- if (CurrentlyRidingHorse.Breed.Type == "pegasus")
- {
- return true;
- }
- if (CurrentlyRidingHorse.Breed.Id == 170)
- {
- return true;
- }
- }
- }
- return this.noClip;
- }
- set
- {
- this.noClip = value;
- }
- }
-
-
- public bool Administrator
- {
- get
- {
- return this.administrator;
- }
- set
- {
- this.administrator = value;
- Database.SetUserAdmin(Id, this.administrator);
- }
- }
-
- public bool Moderator
- {
- get
- {
- if (administrator)
- return true;
- return moderator;
- }
- set
- {
- moderator = value;
- Database.SetUserMod(Id, moderator);
- }
- }
-
- public Trade TradingWith = null;
- public int AttemptingToOfferItem;
- public bool TradeMenuPriority = false;
- public byte[] SecCodeSeeds = new byte[3];
- public int SecCodeInc = 0;
- public int SecCodeCount = 0;
- public int Id;
- public string Username;
- public bool NewPlayer = false;
- public GameClient Client;
- public CompetitionGear EquipedCompetitionGear;
- public Jewelry EquipedJewelry;
- public bool MuteAds = false;
- public bool MuteGlobal = false;
- public bool MuteIsland = false;
- public bool MuteNear = false;
- public bool MuteHere = false;
- public bool MuteBuddy = false;
- public bool MutePrivateMessage = false;
- public bool MuteBuddyRequests = false;
- public bool MuteSocials = false;
- public bool MuteAll = false;
- public bool MuteLogins = false;
- public string Gender;
- public bool UserInfoSend = false;
- public bool MajorPriority = false;
- public bool MinorPriority = false;
- public bool HorseWindowOpen = false;
- public bool Idle;
- public int Facing;
- public HorseInfo.Breed PawneerOrderBreed = null;
- public string PawneerOrderColor = "";
- public string PawneerOrderGender = "";
- public bool InRealTimeQuiz = false;
- public int PendingTradeTo;
- public Mailbox MailBox;
- public Friends Friends;
-
- // For chat filter.
- public string Password;
-
- public PlayerInventory Inventory;
- public Npc.NpcEntry LastTalkedToNpc;
- public Shop LastShoppedAt;
- public Inn LastVisitedInn;
- public HorseInventory HorseInventory;
- public HorseInstance LastViewedHorse;
- public HorseInstance LastViewedHorseOther;
- public int LastRiddenHorse = 0;
- public HorseInstance CurrentlyRidingHorse;
- public Tracking TrackedItems;
- public Ranch OwnedRanch = null;
- public PlayerQuests Quests;
- public Highscore Highscores;
- public MutedPlayers MutePlayer;
- public Riddler LastRiddle;
- public Award Awards;
- public User SocializingWith;
- public User PendingBuddyRequestTo;
- public Dance ActiveDance;
- public bool CanUseAdsChat = true;
- public int CapturingHorseId;
- public DateTime LoginTime;
- public string LastSeenWeather;
- public string AutoReplyText = "";
- public int LastClickedRanchBuilding = 0;
- public int TotalGlobalChatMessages = 1;
- public User[] BeingSocializedBy
- {
- get
- {
- return beingSocializedBy.ToArray();
- }
- }
- public Auction.AuctionBid[] Bids
- {
- get
- {
- return bids.ToArray();
- }
- }
- public int MaxItems
- {
- get
- {
- int baseValue = 40;
- if (Subscribed)
- {
- if (OwnedRanch != null)
- {
- baseValue += (20 * OwnedRanch.GetBuildingCount(4)); // Shed
- if (baseValue > 80) // 2 sheds max!
- baseValue = 80;
- }
- }
- return baseValue;
- }
- }
- public int MaxHorses
- {
- get
- {
- if (Subscribed)
- {
- int baseValue = 11;
- if(OwnedRanch != null)
- {
- baseValue += OwnedRanch.GetBuildingCount(1) * 4; // Barn
- baseValue += OwnedRanch.GetBuildingCount(10) * 8; // Big Barn
- baseValue += OwnedRanch.GetBuildingCount(11) * 12; // Gold Barn
- }
- return baseValue;
- }
-
- return 7;
- }
- }
-
- public void TakeMoney(int amount)
- {
- int money = Money;
- money -= amount;
- Database.SetPlayerMoney(money, Id);
- GameServer.UpdatePlayer(Client);
- }
-
- public void SetMoney(int amount)
- {
- Database.SetPlayerMoney(amount, Id);
- GameServer.UpdatePlayer(Client);
- }
-
- public void AddMoney(int amount)
- {
- int money = Money;
- try
- {
- checked
- {
- money += amount;
- }
- }
- catch(OverflowException)
- {
- money = Int32.MaxValue;
- }
-
- Database.SetPlayerMoney(money, Id);
- GameServer.UpdatePlayer(Client);
- }
- public string GetWeatherSeen()
- {
- string weather = "SUNNY";
- if (World.InTown(this.X, this.Y))
- weather = World.GetTown(this.X, this.Y).Weather;
- if (World.InIsle(this.X, this.Y))
- weather = World.GetIsle(this.X, this.Y).Weather;
- LastSeenWeather = weather;
- return weather;
- }
- public void DoRanchActions()
- {
- if(OwnedRanch != null)
- {
- Tiredness = 1000; // All ranches fully rest you.
-
- if(OwnedRanch.GetBuildingCount(2) > 0)
- {
- Thirst = 1000;
- foreach (HorseInstance horse in HorseInventory.HorseList)
- horse.BasicStats.Thirst = 1000;
- }
-
- if (OwnedRanch.GetBuildingCount(3) > 0)
- {
- foreach (HorseInstance horse in HorseInventory.HorseList)
- horse.BasicStats.Hunger = 1000;
- }
- if(OwnedRanch.GetBuildingCount(9) > 0)
- {
- Hunger = 1000;
- }
- if( (OwnedRanch.GetBuildingCount(1) > 0)|| (OwnedRanch.GetBuildingCount(10) > 0) || (OwnedRanch.GetBuildingCount(11) > 0))
- {
-
- foreach (HorseInstance horse in HorseInventory.HorseList)
- horse.BasicStats.Tiredness = 1000;
- }
-
- }
- }
- public DateTime SubscribedUntil
- {
- get
- {
- return Helper.UnixTimeStampToDateTime(subscribedUntil);
- }
- set
- {
- subscribedUntil = Convert.ToInt32(((DateTimeOffset)value).ToUnixTimeSeconds());
- Database.SetUserSubscriptionStatus(Id, subscribedUntil);
- }
- }
- public int FreeMinutes
- {
- get
- {
- int freeTime = Database.GetFreeTime(Id);
- return freeTime;
- }
- set
- {
- Database.SetFreeTime(Id, value);
- }
- }
- public bool Subscribed
- {
- get
- {
- if (ConfigReader.AllUsersSubbed)
- return true;
-
- if (Administrator)
- return true;
-
- int timestamp = Convert.ToInt32(new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds());
- if(timestamp > subscribedUntil && subscribed) // sub expired.
- {
- Logger.InfoPrint(Username + "'s Subscription expired. (timestamp now: " + timestamp + " exp date: " + subscribedUntil+" )");
- Database.SetUserSubscriptionStatus(this.Id, false);
- subscribed = false;
- }
-
- return subscribed;
- }
- set
- {
- subscribed = value;
- Database.SetUserSubscriptionStatus(this.Id, value);
- }
- }
- public bool Stealth
- {
- get
- {
- return stealth;
- }
- set
- {
- if (value)
- Database.RemoveOnlineUser(this.Id);
- else
- Database.AddOnlineUser(this.Id, this.Administrator, this.Moderator, this.Subscribed, this.NewPlayer);
-
- stealth = value;
- }
- }
- public int ChatViolations
- {
- get
- {
- return chatViolations;
- }
- set
- {
- Database.SetChatViolations(value,Id);
- chatViolations = value;
- }
- }
-
- public string PrivateNotes
- {
- get
- {
- return privateNotes;
- }
- set
- {
-
- privateNotes = value.Trim();
- Database.SetPlayerNotes(Id, privateNotes);
-
- }
- }
- public string ProfilePage {
- get
- {
- return profilePage;
- }
- set
- {
- profilePage = value.TrimEnd();
- Database.SetPlayerProfile(profilePage, Id);
- }
- }
-
- public int Money
- {
- get
- {
- return Database.GetPlayerMoney(Id);
- }
- }
-
-
- public int Experience
- {
- get
- {
- return experience;
- }
- set
- {
- Database.SetExperience(Id, value);
- experience = value;
- }
- }
- public int QuestPoints
- {
- get
- {
- return questPoints;
- }
- set
- {
- Database.SetPlayerQuestPoints(value, Id);
- questPoints = value;
- }
- }
-
- public double BankInterest
- {
- get
- {
- return Database.GetPlayerBankInterest(Id);
- }
- set
- {
- if (value > 9999999999.9999)
- value = 9999999999.9999;
-
- Database.SetPlayerBankInterest(value, Id);
- }
- }
- public double BankMoney
- {
- get
- {
- return bankMoney;
- }
- set
- {
- if (value > 9999999999.9999)
- value = 9999999999.9999;
-
- Database.SetPlayerBankMoney(value, Id);
- bankMoney = value;
- BankInterest = value;
- }
- }
-
- public int X
- {
- get
- {
- return x;
- }
- set
- {
- Database.SetPlayerX(value, Id);
- x = value;
- }
- }
-
- public int Y
- {
- get
- {
- return y;
- }
- set
- {
- Database.SetPlayerY(value, Id);
- y = value;
- }
- }
-
- public int CharacterId
- {
- get
- {
- return charId;
- }
- set
- {
- Database.SetPlayerCharId(value, Id);
- charId = value;
- }
- }
-
-
- public int Hunger
- {
- get
- {
- return hunger;
- }
- set
- {
- if (value >= 1000)
- value = 1000;
- if (value <= 0)
- value = 0;
- Database.SetPlayerHunger(Id, value);
- hunger = value;
- }
- }
-
- public int Thirst
- {
- get
- {
- return thirst;
- }
- set
- {
- if (value >= 1000)
- value = 1000;
- if (value <= 0)
- value = 0;
- Database.SetPlayerThirst(Id, value);
- thirst = value;
- }
- }
-
- public int Tiredness
- {
- get
- {
- return tired;
- }
- set
- {
- if (value >= 1000)
- value = 1000;
- if (value <= 0)
- value = 0;
- Database.SetPlayerTiredness(Id, value);
- tired = value;
- }
- }
- public void ClearSocailizedWith()
- {
- beingSocializedBy.Clear();
- }
- public void RemoveSocailizedWith(User user)
- {
- beingSocializedBy.Remove(user);
- }
- public void AddSocailizedWith(User user)
- {
- beingSocializedBy.Add(user);
- }
- public void AddBid(Auction.AuctionBid bid)
- {
- bids.Add(bid);
- }
-
- public void RemoveBid(Auction.AuctionBid bid)
- {
- bids.Remove(bid);
- }
- public int GetPlayerListIcon()
- {
- int icon = -1;
- if (NewPlayer)
- icon = Messages.NewUserIcon;
- if (Subscribed)
- {
- int months = Helper.GetMonthsBetweenTwoDateTimes(DateTime.UtcNow, SubscribedUntil);
-
- if(months >= 12 + 3)
- icon = Messages.YearSubscriptionIcon;
- else if (months >= 3)
- icon = Messages.ThreeMonthSubscripitionIcon;
- else
- icon = Messages.MonthSubscriptionIcon;
- }
- if (Moderator)
- icon = Messages.ModeratorIcon;
- if (Administrator)
- icon = Messages.AdminIcon;
-
- return icon;
- }
- public void Teleport(int newX, int newY)
- {
- Logger.DebugPrint("Teleporting: " + Username + " to: " + newX.ToString() + "," + newY.ToString());
-
- User[] onScreenBefore = GameServer.GetOnScreenUsers(X, Y, true, true);
- User[] onScreenNow = GameServer.GetOnScreenUsers(newX, newY, true, true);
-
- X = newX;
- Y = newY;
-
- byte[] MovementPacket = PacketBuilder.CreateMovement(X, Y, CharacterId, Facing, PacketBuilder.DIRECTION_TELEPORT, true);
- Client.SendPacket(MovementPacket);
- GameServer.UpdateWeather(Client);
-
-
- User[] goneOffScreen = onScreenBefore.Except(onScreenNow).ToArray();
- User[] goneOnScreen = onScreenNow.Except(onScreenBefore).ToArray();
-
-
- // Players now offscreen tell the client is at 1000,1000.
- foreach (User offScreenUsers in goneOffScreen)
- {
- if (offScreenUsers.Id == this.Id)
- continue;
-
- byte[] playerInfoBytes = PacketBuilder.CreatePlayerInfoUpdateOrCreate(1000 + 4, 1000 + 1, this.Facing, this.CharacterId, this.Username);
- offScreenUsers.Client.SendPacket(playerInfoBytes);
- }
-
- // Tell players now on screen there locations
- foreach (User onScreenUsers in goneOnScreen)
- {
- if (onScreenUsers.Id == this.Id)
- continue;
-
- byte[] playerInfoBytes = PacketBuilder.CreatePlayerInfoUpdateOrCreate(onScreenUsers.X, onScreenUsers.Y, onScreenUsers.Facing, onScreenUsers.CharacterId, onScreenUsers.Username);
- Client.SendPacket(playerInfoBytes);
- }
-
-
- GameServer.Update(Client);
- }
-
- // Insert LGBT Patch here
- public string GetPronouns(bool possessive)
- {
- if (Gender == "FEMALE")
- return possessive ? Messages.PronounFemaleHer : Messages.PronounFemaleShe;
- else if (Gender == "MALE")
- return possessive ? Messages.PronounMaleHis : Messages.PronounMaleHe;
- else
- return possessive ? Messages.PronounNeutralTheir : Messages.PronounNeutralThey;
- }
-
- public byte[] GenerateSecCode()
- {
- SecCodeCount = ((SecCodeCount + 1) % 3);
-
- SecCodeSeeds[SecCodeCount] = (byte)(SecCodeSeeds[SecCodeCount] + SecCodeInc);
- SecCodeSeeds[SecCodeCount] = (byte)(SecCodeSeeds[SecCodeCount] % '\\');
-
- double i = SecCodeSeeds[0] + SecCodeSeeds[1] * SecCodeSeeds[2] - SecCodeSeeds[1];
- i = Math.Abs(i);
- i %= '\\';
-
- byte[] SecCode = new byte[4];
-
- SecCode[0] = (byte)(SecCodeSeeds[0] + '!');
- SecCode[1] = (byte)(SecCodeSeeds[1] + '!');
- SecCode[2] = (byte)(SecCodeSeeds[2] + '!');
- SecCode[3] = (byte)(i + '!');
-
- Logger.DebugPrint("Expecting "+Username+" To send Sec Code: "+BitConverter.ToString(SecCode).Replace("-", " "));
- return SecCode;
- }
-
-
- public User(GameClient baseClient, int UserId)
- {
- if (!Database.CheckUserExist(UserId))
- throw new KeyNotFoundException("User " + UserId + " not found in database!");
-
- if (!Database.CheckUserExtExists(UserId))
- {
- Database.CreateUserExt(UserId);
- NewPlayer = true;
- }
-
- EquipedCompetitionGear = new CompetitionGear(UserId);
- EquipedJewelry = new Jewelry(UserId);
-
- Id = UserId;
- Username = Database.GetUsername(UserId);
-
- administrator = Database.GetUserModerator(Id);
- moderator = Database.GetUserAdmin(Id);
-
- chatViolations = Database.GetChatViolations(UserId);
- x = Database.GetPlayerX(UserId);
- y = Database.GetPlayerY(UserId);
- charId = Database.GetPlayerCharId(UserId);
-
- Facing = PacketBuilder.DIRECTION_DOWN;
- experience = Database.GetExperience(UserId);
-
- bankMoney = Database.GetPlayerBankMoney(UserId);
- questPoints = Database.GetPlayerQuestPoints(UserId);
- subscribed = Database.GetUserSubscribed(UserId);
- subscribedUntil = Database.GetUserSubscriptionExpireDate(UserId);
- profilePage = Database.GetPlayerProfile(UserId);
- privateNotes = Database.GetPlayerNotes(UserId);
- hunger = Database.GetPlayerHunger(UserId);
- thirst = Database.GetPlayerThirst(UserId);
- tired = Database.GetPlayerTiredness(UserId);
-
- if(Ranch.GetOwnedRanch(this.Id))
- OwnedRanch = Ranch.GetRanchOwnedBy(this.Id);
-
- Gender = Database.GetGender(UserId);
- MailBox = new Mailbox(this);
- Highscores = new Highscore(this);
- Awards = new Award(this);
- MutePlayer = new MutedPlayers(this);
- TrackedItems = new Tracking(this);
- HorseInventory = new HorseInventory(this);
-
- // Generate SecCodes
-
-
- SecCodeSeeds[0] = (byte)GameServer.RandomNumberGenerator.Next('!', '\\');
- SecCodeSeeds[1] = (byte)GameServer.RandomNumberGenerator.Next('!', '\\');
- SecCodeSeeds[2] = (byte)GameServer.RandomNumberGenerator.Next('!', '\\');
- SecCodeInc = (byte)GameServer.RandomNumberGenerator.Next('!', '\\');
-
-
- Friends = new Friends(this);
- LoginTime = DateTime.UtcNow;
- Client = baseClient;
- Inventory = new PlayerInventory(this);
- Quests = new PlayerQuests(this);
-
- // Get auctions
- foreach(Auction auction in Auction.AuctionRooms)
- {
- foreach(Auction.AuctionEntry auctionEntry in auction.AuctionEntries)
- {
- if(auctionEntry.HighestBidder == this.Id)
- {
- Auction.AuctionBid bid = new Auction.AuctionBid();
- bid.BidUser = this;
- bid.BidAmount = auctionEntry.HighestBid;
- bid.AuctionItem = auctionEntry;
-
- if(bid.BidAmount > 0)
- {
- bids.Add(bid);
- auctionEntry.AddBid(bid);
- }
-
- }
- }
- }
-
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using HISP.Game;
+using HISP.Server;
+using HISP.Player.Equips;
+using HISP.Game.Services;
+using HISP.Game.Inventory;
+using HISP.Game.Horse;
+
+
+namespace HISP.Player
+{
+ public class User
+ {
+ private List bids = new List();
+ private List beingSocializedBy = new List();
+
+
+ private int chatViolations;
+ private int charId;
+ private int subscribedUntil;
+ private bool subscribed;
+ private string profilePage;
+ private string privateNotes;
+ private int x;
+ private bool stealth = false;
+ private int y;
+ private int questPoints;
+ private double bankMoney;
+ private int experience;
+ private int hunger;
+ private int thirst;
+ private int tired;
+ private bool noClip = false;
+
+ public bool NoClip
+ {
+ get
+ {
+ if(CurrentlyRidingHorse != null)
+ {
+ if(CurrentlyRidingHorse.Breed != null)
+ {
+ if (CurrentlyRidingHorse.Breed.Type == "pegasus")
+ {
+ return true;
+ }
+ if (CurrentlyRidingHorse.Breed.Id == 170)
+ {
+ return true;
+ }
+ }
+ }
+ return noClip;
+ }
+ set
+ {
+ noClip = true;
+ }
+ }
+ public Trade TradingWith = null;
+ public int AttemptingToOfferItem;
+ public bool TradeMenuPriority = false;
+ public byte[] SecCodeSeeds = new byte[3];
+ public int SecCodeInc = 0;
+ public int SecCodeCount = 0;
+ public int Id;
+ public string Username;
+ public bool Administrator = false;
+ public bool Moderator = false;
+ public bool NewPlayer = false;
+ public GameClient LoggedinClient;
+ public CompetitionGear EquipedCompetitionGear;
+ public Jewelry EquipedJewelry;
+ public bool MuteAds = false;
+ public bool MuteGlobal = false;
+ public bool MuteIsland = false;
+ public bool MuteNear = false;
+ public bool MuteHere = false;
+ public bool MuteBuddy = false;
+ public bool MutePrivateMessage = false;
+ public bool MuteBuddyRequests = false;
+ public bool MuteSocials = false;
+ public bool MuteAll = false;
+ public bool MuteLogins = false;
+ public string Gender;
+ public bool UserInfoSend = false;
+ public bool MajorPriority = false;
+ public bool MinorPriority = false;
+ public bool HorseWindowOpen = false;
+ public bool Idle;
+ public int Facing;
+ public HorseInfo.Breed PawneerOrderBreed = null;
+ public string PawneerOrderColor = "";
+ public string PawneerOrderGender = "";
+ public bool InRealTimeQuiz = false;
+ public int PendingTradeTo;
+ public Mailbox MailBox;
+ public Friends Friends;
+ public string Password; // For chat filter.
+ public PlayerInventory Inventory;
+ public Npc.NpcEntry LastTalkedToNpc;
+ public Shop LastShoppedAt;
+ public Inn LastVisitedInn;
+ public HorseInventory HorseInventory;
+ public HorseInstance LastViewedHorse;
+ public HorseInstance LastViewedHorseOther;
+ public int LastRiddenHorse = 0;
+ public HorseInstance CurrentlyRidingHorse;
+ public Tracking TrackedItems;
+ public Ranch OwnedRanch = null;
+ public PlayerQuests Quests;
+ public Highscore Highscores;
+ public MutedPlayers MutePlayer;
+ public Riddler LastRiddle;
+ public Award Awards;
+ public User SocializingWith;
+ public User PendingBuddyRequestTo;
+ public Dance ActiveDance;
+ public bool CanUseAdsChat = true;
+ public int CapturingHorseId;
+ public DateTime LoginTime;
+ public string LastSeenWeather;
+ public string AutoReplyText = "";
+ public int LastClickedRanchBuilding = 0;
+ public int TotalGlobalChatMessages = 1;
+ public User[] BeingSocializedBy
+ {
+ get
+ {
+ return beingSocializedBy.ToArray();
+ }
+ }
+ public Auction.AuctionBid[] Bids
+ {
+ get
+ {
+ return bids.ToArray();
+ }
+ }
+ public int MaxItems
+ {
+ get
+ {
+ int baseValue = 40;
+ if (Subscribed)
+ {
+ if (OwnedRanch != null)
+ {
+ baseValue += 20 * OwnedRanch.GetBuildingCount(4); // Shed
+ if (baseValue > 80) // 2 sheds max!
+ baseValue = 80;
+ }
+ }
+ return baseValue;
+ }
+ }
+ public int MaxHorses
+ {
+ get
+ {
+ if (Subscribed)
+ {
+ int baseValue = 11;
+ if(OwnedRanch != null)
+ {
+ baseValue += OwnedRanch.GetBuildingCount(1) * 4; // Barn
+ baseValue += OwnedRanch.GetBuildingCount(10) * 8; // Big Barn
+ baseValue += OwnedRanch.GetBuildingCount(11) * 12; // Gold Barn
+ }
+ return baseValue;
+ }
+
+ return 7; // will change when ranches are implemented.
+ }
+ }
+
+ public void TakeMoney(int amount)
+ {
+ int money = Money;
+ money -= amount;
+ Database.SetPlayerMoney(money, Id);
+ GameServer.UpdatePlayer(LoggedinClient);
+ }
+
+ public void AddMoney(int amount)
+ {
+ int money = Money;
+ try
+ {
+ checked
+ {
+ money += amount;
+ }
+ }
+ catch(OverflowException)
+ {
+ money = 2147483647;
+ }
+
+ Database.SetPlayerMoney(money, Id);
+ GameServer.UpdatePlayer(LoggedinClient);
+ }
+ public string GetWeatherSeen()
+ {
+ string weather = "SUNNY";
+ if (World.InTown(this.X, this.Y))
+ weather = World.GetTown(this.X, this.Y).Weather;
+ if (World.InIsle(this.X, this.Y))
+ weather = World.GetIsle(this.X, this.Y).Weather;
+ LastSeenWeather = weather;
+ return weather;
+ }
+ public void DoRanchActions()
+ {
+ if(OwnedRanch != null)
+ {
+ Tiredness = 1000; // All ranches fully rest you.
+
+ if(OwnedRanch.GetBuildingCount(2) > 0)
+ {
+ Thirst = 1000;
+ foreach (HorseInstance horse in HorseInventory.HorseList)
+ horse.BasicStats.Thirst = 1000;
+ }
+
+ if (OwnedRanch.GetBuildingCount(3) > 0)
+ {
+ foreach (HorseInstance horse in HorseInventory.HorseList)
+ horse.BasicStats.Hunger = 1000;
+ }
+ if(OwnedRanch.GetBuildingCount(9) > 0)
+ {
+ Hunger = 1000;
+ }
+ if( (OwnedRanch.GetBuildingCount(1) > 0)|| (OwnedRanch.GetBuildingCount(10) > 0) || (OwnedRanch.GetBuildingCount(11) > 0))
+ {
+
+ foreach (HorseInstance horse in HorseInventory.HorseList)
+ horse.BasicStats.Tiredness = 1000;
+ }
+
+ }
+ }
+ public DateTime SubscribedUntil
+ {
+ get
+ {
+ return Util.UnixTimeStampToDateTime(subscribedUntil);
+ }
+ }
+ public int FreeMinutes
+ {
+ get
+ {
+ int freeTime = Database.GetFreeTime(Id);
+ return freeTime;
+ }
+ set
+ {
+ Database.SetFreeTime(Id, value);
+ }
+ }
+ public bool Subscribed
+ {
+ get
+ {
+ if (ConfigReader.AllUsersSubbed)
+ return true;
+
+ if (Administrator)
+ return true;
+
+ int Timestamp = Convert.ToInt32(new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds());
+ if(Timestamp > subscribedUntil && subscribed) // sub expired.
+ {
+ Logger.InfoPrint(Username + "'s Subscription expired. (timestamp now: " + Timestamp + " exp date: " + subscribedUntil+" )");
+ Database.SetUserSubscriptionStatus(this.Id, false);
+ subscribed = false;
+ }
+
+ return subscribed;
+ }
+ set
+ {
+ Database.SetUserSubscriptionStatus(this.Id, value);
+ }
+ }
+ public bool Stealth
+ {
+ get
+ {
+ return stealth;
+ }
+ set
+ {
+ if (value)
+ Database.RemoveOnlineUser(this.Id);
+ else
+ Database.AddOnlineUser(this.Id, this.Administrator, this.Moderator, this.Subscribed, this.NewPlayer);
+
+ stealth = value;
+ }
+ }
+ public int ChatViolations
+ {
+ get
+ {
+ return chatViolations;
+ }
+ set
+ {
+ Database.SetChatViolations(value,Id);
+ chatViolations = value;
+ }
+ }
+
+ public string PrivateNotes
+ {
+ get
+ {
+ return privateNotes;
+ }
+ set
+ {
+
+ privateNotes = value.Trim();
+ Database.SetPlayerNotes(Id, privateNotes);
+
+ }
+ }
+ public string ProfilePage {
+ get
+ {
+ return profilePage;
+ }
+ set
+ {
+ profilePage = value.TrimEnd();
+ Database.SetPlayerProfile(profilePage, Id);
+ }
+ }
+
+ public int Money
+ {
+ get
+ {
+ return Database.GetPlayerMoney(Id);
+ }
+ }
+
+
+ public int Experience
+ {
+ get
+ {
+ return experience;
+ }
+ set
+ {
+ Database.SetExperience(Id, value);
+ experience = value;
+ }
+ }
+ public int QuestPoints
+ {
+ get
+ {
+ return questPoints;
+ }
+ set
+ {
+ Database.SetPlayerQuestPoints(value, Id);
+ questPoints = value;
+ }
+ }
+
+ public double BankInterest
+ {
+ get
+ {
+ return Database.GetPlayerBankInterest(Id);
+ }
+ set
+ {
+ if (value > 9999999999.9999)
+ value = 9999999999.9999;
+
+ Database.SetPlayerBankInterest(value, Id);
+ }
+ }
+ public double BankMoney
+ {
+ get
+ {
+ return bankMoney;
+ }
+ set
+ {
+ if (value > 9999999999.9999)
+ value = 9999999999.9999;
+
+ Database.SetPlayerBankMoney(value, Id);
+ bankMoney = value;
+ BankInterest = value;
+ }
+ }
+
+ public int X
+ {
+ get
+ {
+ return x;
+ }
+ set
+ {
+ Database.SetPlayerX(value, Id);
+ x = value;
+ }
+ }
+
+ public int Y
+ {
+ get
+ {
+ return y;
+ }
+ set
+ {
+ Database.SetPlayerY(value, Id);
+ y = value;
+ }
+ }
+
+ public int CharacterId
+ {
+ get
+ {
+ return charId;
+ }
+ set
+ {
+ Database.SetPlayerCharId(value, Id);
+ charId = value;
+ }
+ }
+
+
+ public int Hunger
+ {
+ get
+ {
+ return hunger;
+ }
+ set
+ {
+ if (value >= 1000)
+ value = 1000;
+ if (value <= 0)
+ value = 0;
+ Database.SetPlayerHunger(Id, value);
+ hunger = value;
+ }
+ }
+
+ public int Thirst
+ {
+ get
+ {
+ return thirst;
+ }
+ set
+ {
+ if (value >= 1000)
+ value = 1000;
+ if (value <= 0)
+ value = 0;
+ Database.SetPlayerThirst(Id, value);
+ thirst = value;
+ }
+ }
+
+ public int Tiredness
+ {
+ get
+ {
+ return tired;
+ }
+ set
+ {
+ if (value >= 1000)
+ value = 1000;
+ if (value <= 0)
+ value = 0;
+ Database.SetPlayerTiredness(Id, value);
+ tired = value;
+ }
+ }
+ public void ClearSocailizedWith()
+ {
+ beingSocializedBy.Clear();
+ }
+ public void RemoveSocailizedWith(User user)
+ {
+ beingSocializedBy.Remove(user);
+ }
+ public void AddSocailizedWith(User user)
+ {
+ beingSocializedBy.Add(user);
+ }
+ public void AddBid(Auction.AuctionBid bid)
+ {
+ bids.Add(bid);
+ }
+
+ public void RemoveBid(Auction.AuctionBid bid)
+ {
+ bids.Remove(bid);
+ }
+ public int GetPlayerListIcon()
+ {
+ int icon = -1;
+ if (NewPlayer)
+ icon = Messages.NewUserIcon;
+ if (Subscribed)
+ {
+ int months = (SubscribedUntil.Month - DateTime.UtcNow.Month) + ((SubscribedUntil.Year - DateTime.UtcNow.Year) * 12);
+ if (months >= 3)
+ icon = Messages.ThreeMonthSubscripitionIcon;
+ else if(months >= (12+3))
+ icon = Messages.YearSubscriptionIcon;
+ else
+ icon = Messages.MonthSubscriptionIcon;
+ }
+ if (Moderator)
+ icon = Messages.ModeratorIcon;
+ if (Administrator)
+ icon = Messages.AdminIcon;
+
+ return icon;
+ }
+ public void Teleport(int newX, int newY)
+ {
+ Logger.DebugPrint("Teleporting: " + Username + " to: " + newX.ToString() + "," + newY.ToString());
+
+ User[] onScreenBefore = GameServer.GetOnScreenUsers(X, Y, true, true);
+ User[] onScreenNow = GameServer.GetOnScreenUsers(newX, newY, true, true);
+
+ X = newX;
+ Y = newY;
+
+ byte[] MovementPacket = PacketBuilder.CreateMovementPacket(X, Y, CharacterId, Facing, PacketBuilder.DIRECTION_TELEPORT, true);
+ LoggedinClient.SendPacket(MovementPacket);
+ GameServer.UpdateWeather(LoggedinClient);
+
+
+ User[] goneOffScreen = onScreenBefore.Except(onScreenNow).ToArray();
+ User[] goneOnScreen = onScreenNow.Except(onScreenBefore).ToArray();
+
+
+ // Players now offscreen tell the client is at 1000,1000.
+ foreach (User offScreenUsers in goneOffScreen)
+ {
+ if (offScreenUsers.Id == this.Id)
+ continue;
+
+ byte[] playerInfoBytes = PacketBuilder.CreatePlayerInfoUpdateOrCreate(1000 + 4, 1000 + 1, this.Facing, this.CharacterId, this.Username);
+ offScreenUsers.LoggedinClient.SendPacket(playerInfoBytes);
+ }
+
+ // Tell players now on screen there locations
+ foreach (User onScreenUsers in goneOnScreen)
+ {
+ if (onScreenUsers.Id == this.Id)
+ continue;
+
+ byte[] playerInfoBytes = PacketBuilder.CreatePlayerInfoUpdateOrCreate(onScreenUsers.X, onScreenUsers.Y, onScreenUsers.Facing, onScreenUsers.CharacterId, onScreenUsers.Username);
+ LoggedinClient.SendPacket(playerInfoBytes);
+ }
+
+
+ GameServer.Update(LoggedinClient);
+ }
+
+ public byte[] GenerateSecCode()
+ {
+ var i = 0;
+ SecCodeCount++;
+ SecCodeSeeds[SecCodeCount % 3] = (byte)(SecCodeSeeds[SecCodeCount % 3] + SecCodeInc);
+ SecCodeSeeds[SecCodeCount % 3] = (byte)(SecCodeSeeds[SecCodeCount % 3] % 92);
+ i = SecCodeSeeds[0] + SecCodeSeeds[1] * SecCodeSeeds[2] - SecCodeSeeds[1];
+ i = Math.Abs(i);
+ i = i % 92;
+
+ byte[] SecCode = new byte[4];
+ SecCode[0] = (byte)(SecCodeSeeds[0] + 33);
+ SecCode[1] = (byte)(SecCodeSeeds[1] + 33);
+ SecCode[2] = (byte)(SecCodeSeeds[2] + 33);
+ SecCode[3] = (byte)(i + 33);
+ Logger.DebugPrint("Expecting "+Username+" To send Sec Code: "+BitConverter.ToString(SecCode).Replace("-", " "));
+ return SecCode;
+ }
+
+
+ public User(GameClient baseClient, int UserId)
+ {
+ if (!Database.CheckUserExist(UserId))
+ throw new KeyNotFoundException("User " + UserId + " not found in database!");
+
+ if (!Database.CheckUserExtExists(UserId))
+ {
+ Database.CreateUserExt(UserId);
+ NewPlayer = true;
+
+ }
+
+
+ EquipedCompetitionGear = new CompetitionGear(UserId);
+ EquipedJewelry = new Jewelry(UserId);
+
+ Id = UserId;
+ Username = Database.GetUsername(UserId);
+
+ Administrator = Database.CheckUserIsAdmin(Username);
+ Moderator = Database.CheckUserIsModerator(Username);
+
+ chatViolations = Database.GetChatViolations(UserId);
+ x = Database.GetPlayerX(UserId);
+ y = Database.GetPlayerY(UserId);
+ charId = Database.GetPlayerCharId(UserId);
+
+ Facing = PacketBuilder.DIRECTION_DOWN;
+ experience = Database.GetExperience(UserId);
+ //money = Database.GetPlayerMoney(UserId);
+ bankMoney = Database.GetPlayerBankMoney(UserId);
+ questPoints = Database.GetPlayerQuestPoints(UserId);
+ subscribed = Database.IsUserSubscribed(UserId);
+ subscribedUntil = Database.GetUserSubscriptionExpireDate(UserId);
+ profilePage = Database.GetPlayerProfile(UserId);
+ privateNotes = Database.GetPlayerNotes(UserId);
+ hunger = Database.GetPlayerHunger(UserId);
+ thirst = Database.GetPlayerThirst(UserId);
+ tired = Database.GetPlayerTiredness(UserId);
+
+ if(Ranch.IsRanchOwned(this.Id))
+ {
+ OwnedRanch = Ranch.GetRanchOwnedBy(this.Id);
+ }
+
+ Gender = Database.GetGender(UserId);
+ MailBox = new Mailbox(this);
+ Highscores = new Highscore(this);
+ Awards = new Award(this);
+ MutePlayer = new MutedPlayers(this);
+ TrackedItems = new Tracking(this);
+ HorseInventory = new HorseInventory(this);
+
+ // Generate SecCodes
+
+
+ SecCodeSeeds[0] = (byte)GameServer.RandomNumberGenerator.Next(40, 60);
+ SecCodeSeeds[1] = (byte)GameServer.RandomNumberGenerator.Next(40, 60);
+ SecCodeSeeds[2] = (byte)GameServer.RandomNumberGenerator.Next(40, 60);
+ SecCodeInc = (byte)GameServer.RandomNumberGenerator.Next(40, 60);
+
+
+ Friends = new Friends(this);
+ LoginTime = DateTime.UtcNow;
+ LoggedinClient = baseClient;
+ Inventory = new PlayerInventory(this);
+ Quests = new PlayerQuests(this);
+
+ // Get auctions
+ foreach(Auction auction in Auction.AuctionRooms)
+ {
+ foreach(Auction.AuctionEntry auctionEntry in auction.AuctionEntries)
+ {
+ if(auctionEntry.HighestBidder == this.Id)
+ {
+ Auction.AuctionBid bid = new Auction.AuctionBid();
+ bid.BidUser = this;
+ bid.BidAmount = auctionEntry.HighestBid;
+ bid.AuctionItem = auctionEntry;
+
+ if(bid.BidAmount > 0)
+ {
+ bids.Add(bid);
+ auctionEntry.AddBid(bid);
+ }
+
+ }
+ }
+ }
+
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs b/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs
old mode 100755
new mode 100644
index cb52358..313aac9
--- a/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs
+++ b/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs
@@ -1,43 +1,35 @@
-using System.Reflection;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("LibHISP")]
-[assembly: AssemblyDescription("Server Emulator for \"Horse Isle\"")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Li")]
-[assembly: AssemblyProduct("HISP")]
-[assembly: AssemblyCopyright("Public Domain © 2022")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("31f0bdf5-f6d1-4aeb-8905-80dbc223c836")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-[assembly: AssemblyVersion("1.8.73.0")]
-[assembly: AssemblyFileVersion("1.8.73.0")]
-
-
-
-
-
-
-
-
-
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HISP")]
+[assembly: AssemblyDescription("Server Emulator for \"Horse Isle\"")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("SilicaAndPina")]
+[assembly: AssemblyProduct("HISP")]
+[assembly: AssemblyCopyright("Public Domain © 2022")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("31f0bdf5-f6d1-4aeb-8905-80dbc223c836")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.3.0.0")]
+[assembly: AssemblyFileVersion("1.3.0.0")]
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM.pubxml
old mode 100755
new mode 100644
index e757f4e..7e3b969
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM.pubxml
+++ b/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Android
ARM
- bin\arm\Android\net8.0\android-arm\publish\
+ bin\arm\Linux\net6.0\android-arm\publish\
FileSystem
- net8.0
+ net6.0
android-arm
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM64.pubxml
old mode 100755
new mode 100644
index a379f96..9f99d74
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM64.pubxml
+++ b/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM64.pubxml
@@ -6,12 +6,12 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
Android
ARM64
- bin\arm64\Android\net8.0\android-arm64\publish\
+ bin\arm\Linux\net6.0\android-arm64\publish\
FileSystem
- net8.0
+ net6.0
android-arm64
True
-
+
True
True
OS_ANDROID;ARCH_ARM64
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Linux64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/Linux64.pubxml
old mode 100755
new mode 100644
index 0a28cea..1115827
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Linux64.pubxml
+++ b/HorseIsleServer/LibHISP/Properties/PublishProfiles/Linux64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.