diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
old mode 100755
new mode 100644
index e1ee7dd..1a3f8e0
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -8,129 +8,10 @@ defaults:
working-directory: ./HorseIsleServer
jobs:
- build-linux:
- runs-on: ubuntu-latest
- env:
- AUTHENTICATION_TOKEN: ${{ secrets.SILICA_CODES_AUTH }}
- 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
- curl --user $AUTHENTICATION_TOKEN --upload-file debpackage/HISP-Debian-AMD64.deb https://silica.codes/api/packages/islehorse/debian/pool/debian/main/upload
-
-# 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:
@@ -142,153 +23,201 @@ 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: 7.0.x
+ include-prerelease: true
+ - name: Setup WSL
+ uses: Vampire/setup-wsl@v1.2.0
+
- 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 deb package
+ continue-on-error: false
+ shell: wsl-bash -u root {0}
+ run: |
+ apt update
+ apt install -y dos2unix
+ mkdir /mnt/fucking-windows
+ mount -t tmpfs -o size=800M tmpfs /mnt/fucking-windows
+ mkdir /mnt/fucking-windows/Debian64
+ mkdir /mnt/fucking-windows/Debian64/etc
+ mkdir /mnt/fucking-windows/Debian64/usr
+ mkdir /mnt/fucking-windows/Debian64/etc/hisp
+ mkdir /mnt/fucking-windows/Debian64/etc/hisp/gamedata
+ mkdir /mnt/fucking-windows/Debian64/etc/systemd
+ mkdir /mnt/fucking-windows/Debian64/etc/systemd/system
+ mkdir /mnt/fucking-windows/Debian64/usr/bin
+ mkdir /mnt/fucking-windows/Debian64/usr/lib
+ mkdir /mnt/fucking-windows/Debian64/DEBIAN
+ cp LibHISP/Resources/server.properties /mnt/fucking-windows/Debian64/etc/hisp/server.properties
+ cp LibHISP/Resources/default_cross_domain.xml /mnt/fucking-windows/Debian64/etc/hisp/CrossDomainPolicy.xml
+ cp -r HISPd/Resources/DEBIAN/* /mnt/fucking-windows/Debian64/DEBIAN
+ cp -r HISPd/bin/x64/Linux/net7.0/linux-x64/publish/gamedata/* /mnt/fucking-windows/Debian64/etc/hisp/gamedata
+ cp HISPd/bin/x64/Linux/net7.0/linux-x64/publish/libe_sqlite3.so /mnt/fucking-windows/Debian64/usr/lib/libe_sqlite3.so
+ cp HISPd/bin/x64/Linux/net7.0/linux-x64/publish/HI1.MAP /mnt/fucking-windows/Debian64/etc/hisp/HI1.MAP
+ cp HISPd/bin/x64/Linux/net7.0/linux-x64/publish/HISPd /mnt/fucking-windows/Debian64/usr/bin/HISPd
+ cp HISPd/Resources/HISP.service /mnt/fucking-windows/Debian64/etc/systemd/system/HISP.service
+ dos2unix /mnt/fucking-windows/Debian64/DEBIAN/conffiles
+ dos2unix /mnt/fucking-windows/Debian64/DEBIAN/control
+ dos2unix /mnt/fucking-windows/Debian64/DEBIAN/postinst
+ dos2unix /mnt/fucking-windows/Debian64/DEBIAN/postrm
+ dos2unix /mnt/fucking-windows/Debian64/DEBIAN/prerm
+ dos2unix /mnt/fucking-windows/Debian64/etc/systemd/system/HISP.service
+ chmod 755 -R /mnt/fucking-windows/Debian64
+ chmod +x /mnt/fucking-windows/Debian64/usr/bin/HISPd
+ mkdir debpackage
+ dpkg-deb --build /mnt/fucking-windows/Debian64
+ mv /mnt/fucking-windows/Debian64.deb debpackage/HISP-Debian-AMD64.deb
+# - 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.pubxm
+
+ - name: Upload win-x64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Win64
+ path: HorseIsleServer\HISPd\bin\x64\Windows\net7.0\win-x64\publish\
+
+ - name: Upload win-x86
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Win32
+ path: HorseIsleServer\HISPd\bin\x86\Windows\net7.0\win-x86\publish\
+
+ - name: Upload win-arm
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-WinARM
+ path: HorseIsleServer\HISPd\bin\arm\Windows\net7.0\windows-arm\publish\
+
+ - name: Upload win-arm64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-WinARM64
+ path: HorseIsleServer\HISPd\bin\arm64\Windows\net7.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\net7.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\net7.0\win-x64\publish\
+
+ - name: Upload linux-x64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-Linux64
+ path: HorseIsleServer/HISPd/bin/x64/Linux/net7.0/linux-x64/publish/
+
+ - name: Upload linux-arm
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-LinuxARM
+ path: HorseIsleServer/HISPd/bin/ARM/Linux/net7.0/linux-arm/publish/
+
+ - name: Upload linux-arm64
+ uses: actions/upload-artifact@v2
+ with:
+ name: HISP-LinuxARM64
+ path: HorseIsleServer/HISPd/bin/ARM64/Linux/net7.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/HISPd/bin/x64/MacOS/net7.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/HISPd/bin/arm64/MacOS/net7.0/osx-arm64/publish/
- build-web:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
+ - name: Upload deb package
+ uses: actions/upload-artifact@v2
with:
- fetch-depth: 0
-
- - name: Git Submodule update
- run: git submodule update --init --recursive
+ name: HISP-DebianPackage
+ path: HorseIsleServer/debpackage
+
+
+# - name: Upload android-arm
+# uses: actions/upload-artifact@v2
+# with:
+# name: HISP-AndroidARM
+# path: HorseIsleServer/HISPd/bin/arm/Android/net7.0/android-arm/publish/
+
+# - name: Upload android-arm64
+# uses: actions/upload-artifact@v2
+# with:
+# name: HISP-AndroidARM64
+# path: HorseIsleServer/HISPd/bin/arm64/Android/net7.0/android-arm64/publish/
- # UPLOAD WEBSERVER
- 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..8ba0395 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/N00BS/flash.dll.idb
HorseIsleServer/HISPd/obj/*
HorseIsleServer/HISPd/bin/*
-HorseIsleServer/HISPtests/obj/*
-HorseIsleServer/HISPtests/bin/*
-
+HorseIsleServer/Installer/Windows/*
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
diff --git a/.mailmap b/.mailmap
old mode 100755
new mode 100644
diff --git a/HorseIsleData b/HorseIsleData
index e9c09c7..330ad13 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit e9c09c77cd0dd99eb12e16b679478fb0e3742b55
+Subproject commit 330ad13400e4abd52bef118ab10097b3d13bccb3
diff --git a/HorseIsleServer/HISP.sln b/HorseIsleServer/HISP.sln
old mode 100755
new mode 100644
index 1bda296..f53da30
--- a/HorseIsleServer/HISP.sln
+++ b/HorseIsleServer/HISP.sln
@@ -7,9 +7,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibHISP", "LibHISP\LibHISP.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HISPd", "HISPd\HISPd.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
@@ -50,8 +50,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
@@ -77,7 +77,6 @@ Global
{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}.Linux|Any CPU.ActiveCfg = Linux|Any CPU
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Linux|Any CPU.Build.0 = Linux|Any CPU
@@ -107,10 +106,10 @@ Global
{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}.Release|x86.ActiveCfg = Debug|x86
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x86.Build.0 = Debug|x86
+ {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 +118,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
@@ -146,10 +145,9 @@ Global
{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}.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 +166,116 @@ 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|Any CPU.ActiveCfg = Linux|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|Any CPU.Build.0 = Linux|Any CPU
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM.ActiveCfg = Debug|ARM
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM.Build.0 = Debug|ARM
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM64.ActiveCfg = Debug|ARM64
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM64.Build.0 = Debug|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}.Release|x86.ActiveCfg = Debug|x86
+ {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x86.Build.0 = Debug|x86
+ {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|ARM64.ActiveCfg = Debug|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x64.ActiveCfg = Debug|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x64.Build.0 = Debug|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x86.ActiveCfg = Debug|x86
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Debug|x86.Build.0 = Debug|x86
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.iOS|Any CPU.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.iOS|ARM.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.iOS|ARM64.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.iOS|x64.ActiveCfg = Debug|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.iOS|x86.ActiveCfg = Windows|x86
+ {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}.Release|Any CPU.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|Any CPU.Build.0 = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|ARM.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|ARM.Build.0 = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|ARM64.ActiveCfg = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|ARM64.Build.0 = Windows|Any CPU
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|x64.ActiveCfg = Debug|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|x64.Build.0 = Debug|x64
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|x86.ActiveCfg = Debug|x86
+ {6B45A1E8-0F54-4BF7-AF48-41B9FE676570}.Release|x86.Build.0 = Debug|x86
+ {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 = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|ARM.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|ARM64.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|x64.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Debug|x86.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|Any CPU.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|ARM.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|ARM64.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|x64.ActiveCfg = Windows
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.iOS|x86.ActiveCfg = Windows
+ {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}.Release|Any CPU.ActiveCfg = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|Any CPU.Build.0 = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|ARM.ActiveCfg = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|ARM.Build.0 = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|ARM64.ActiveCfg = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|ARM64.Build.0 = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|x64.ActiveCfg = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|x64.Build.0 = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|x86.ActiveCfg = Release
+ {D330A197-67D4-42B0-8906-54264AF95EC1}.Release|x86.Build.0 = Release
+ {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/HISPd/HISPd.csproj
old mode 100755
new mode 100644
index b280073..abf6e16
--- a/HorseIsleServer/HISPd/HISPd.csproj
+++ b/HorseIsleServer/HISPd/HISPd.csproj
@@ -27,7 +27,7 @@
false
- net8.0
+ net7.0
false
true
icon.ico
@@ -41,45 +41,39 @@
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
+ 3
+ 1701;1702;2026
win-x64
true
- x64
x64
OS_WINDOWS;ARCH_X86_64
- none
+ 3
+ 1701;1702;2026
win-arm
true
ARM
OS_WINDOWS;ARCH_ARM
- none
+ 3
+ 1701;1702;2026
win-arm64
true
ARM64
OS_WINDOWS;ARCH_ARM64
- none
+ 3
+ 1701;1702;2026
@@ -89,15 +83,15 @@
ARM
OS_ANDROID;ARCH_ARM
3
-
- none
+ 1701;1702;2026
android-arm64
true
ARM64
OS_ANDROID;ARCH_ARM64
- none
+ 3
+ 1701;1702;2026
@@ -105,21 +99,24 @@
true
x64
OS_LINUX;ARCH_X86_64
- none
+ 3
+ 1701;1702;2026
linux-arm
ARM
true
OS_LINUX;ARCH_ARM
- none
+ 3
+ 1701;1702;2026
linux-arm64
ARM64
true
OS_LINUX;ARCH_ARM64
- none
+ 3
+ 1701;1702;2026
@@ -127,13 +124,15 @@
true
x64
OS_MACOS;ARCH_X86_64
- none
+ 3
+ 1701;1702;2026
osx-arm64
true
OS_MACOS;ARCH_ARM64
- none
+ 3
+ 1701;1702;2026
@@ -141,14 +140,12 @@
true
ARM
OS_IOS;ARCH_ARM
- none
ios-arm64
true
ARM64
OS_IOS;ARCH_ARM64
- none
@@ -158,12 +155,93 @@
-
+
+ ARM
False
- DEBUG;TRACE;OS_DEBUG
- full
+ 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/HISPd/Program.cs b/HorseIsleServer/HISPd/Program.cs
old mode 100755
new mode 100644
index 2f5ca20..176ec53
--- a/HorseIsleServer/HISPd/Program.cs
+++ b/HorseIsleServer/HISPd/Program.cs
@@ -3,6 +3,7 @@ using HISP.Server;
using System;
using System.IO;
using System.Threading;
+using System.Threading.Tasks;
namespace HISP.Cli
{
@@ -11,7 +12,7 @@ namespace HISP.Cli
private static StreamWriter sw = null;
private static FileStream fs = null;
private static string logFile;
- private static EventWaitHandle shutdownHandle = null;
+ private static EventWaitHandle shutdownHandle;
public static bool ShuttingDown = false;
public static string BaseDir;
@@ -44,95 +45,41 @@ namespace HISP.Cli
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();
+ 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();
+ sw.WriteLineAsync(text + sw.NewLine);
}
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) { };
+ if (error)
+ Console.Error.WriteAsync("[" + type + "] " + text + Console.Error.NewLine);
+ else
+ Console.Out.WriteAsync("[" + type + "] " + text + Console.Out.NewLine);
+
}
public static void Main(string[] args)
{
- AppDomain.CurrentDomain.ProcessExit += ProcessQuitHandler;
-
- string baseDir = Directory.GetCurrentDirectory();
+ 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");
+ 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
+ #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
+ #else
LogStdout(true, "ERROR", "Installing as a service unsupported on this platform");
-#endif
+ #endif
break;
default:
if (arg.Contains("="))
@@ -150,8 +97,8 @@ namespace HISP.Cli
Logger.SetCallback(LogToFile);
break;
case "--base-directory":
- baseDir = argu[1];
- Directory.SetCurrentDirectory(baseDir);
+ BaseDir = argu[1];
+ Directory.SetCurrentDirectory(BaseDir);
break;
default:
continue;
@@ -162,36 +109,28 @@ namespace HISP.Cli
}
}
- if (hispConfVar != null)
+ if (HispConfVar != null)
{
- ConfigReader.ConfigurationFileName = hispConfVar;
+ ConfigReader.ConfigurationFileName = HispConfVar;
}
- if (hispLogVar != null)
+ if (HispLogVar != null)
{
- LogFile = hispLogVar;
+ LogFile = HispLogVar;
Logger.SetCallback(LogToFile);
}
- else
+
+ if (HispBaseDir != null)
{
- LogFile = Path.Combine(baseDir, "crash.log");
- }
-
- if (hispBaseDir != null)
- {
- baseDir = hispBaseDir;
- Directory.SetCurrentDirectory(baseDir);
+ BaseDir = HispBaseDir;
+ Directory.SetCurrentDirectory(BaseDir);
}
+ Entry.SetShutdownCallback(OnShutdown);
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
old mode 100755
new mode 100644
index a40e782..94a1006
--- a/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs
+++ b/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs
@@ -1,35 +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("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")]
+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("SilicaAndPina")]
+[assembly: AssemblyProduct("HISPd")]
+[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/HISPd/Properties/PublishProfiles/AndroidARM.pubxml
old mode 100755
new mode 100644
index 4c08f3e..e1eff10
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\android-arm\publish\
FileSystem
- net8.0
+ net7.0
android-arm
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM64.pubxml
old mode 100755
new mode 100644
index e9b3839..59f44f0
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM64.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\android-arm64\publish\
FileSystem
- net8.0
+ net7.0
android-arm64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/Linux64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/Linux64.pubxml
old mode 100755
new mode 100644
index acb8a96..c5f1582
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/Linux64.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\linux-x64\publish\
FileSystem
- net8.0
+ net7.0
linux-x64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM.pubxml
old mode 100755
new mode 100644
index fdccff1..06bcf27
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\linux-arm\publish\
FileSystem
- net8.0
+ net7.0
linux-arm
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM64.pubxml
old mode 100755
new mode 100644
index f387011..b4cdb5b
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/LinuxARM64.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\linux-arm64\publish\
FileSystem
- net8.0
+ net7.0
linux-arm64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/Osx64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/Osx64.pubxml
old mode 100755
new mode 100644
index f6e810f..ced4af4
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/Osx64.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\osx-x64\publish\
FileSystem
- net8.0
+ net7.0
osx-x64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/OsxARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/OsxARM64.pubxml
old mode 100755
new mode 100644
index 6d6a41d..cc18457
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/OsxARM64.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\osx-arm64\publish\
FileSystem
- net8.0
+ net7.0
osx-arm64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/Win32.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/Win32.pubxml
old mode 100755
new mode 100644
index 0608a65..2763365
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/Win32.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\win-x86\publish\
FileSystem
- net8.0
+ net7.0
win-x86
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/Win64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/Win64.pubxml
old mode 100755
new mode 100644
index 79a4c04..f23270c
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/Win64.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\win-x64\publish\
FileSystem
- net8.0
+ net7.0
win-x64
True
- True
True
True
+ True
OS_WINDOWS;ARCH_X86_64
\ No newline at end of file
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM.pubxml
old mode 100755
new mode 100644
index f6cc04e..62e87fe
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\windows-arm\publish\
FileSystem
- net8.0
+ net7.0
win-arm
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM64.pubxml
old mode 100755
new mode 100644
index 10dfe10..45f81bf
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/WinARM64.pubxml
+++ b/HorseIsleServer/HISPd/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\net7.0\windows-arm64\publish\
FileSystem
- net8.0
+ net7.0
win-arm64
True
True
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM.pubxml
old mode 100755
new mode 100644
index 077cfed..3312d3f
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM.pubxml
+++ b/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
iOS
ARM
- bin\arm\iOS\net8.0\ios-arm\publish\
+ bin\arm\iOS\net7.0\ios-arm\publish\
FileSystem
- net8.0
+ net7.0
ios-arm
True
False
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM64.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM64.pubxml
old mode 100755
new mode 100644
index ec7144e..14fe938
--- a/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM64.pubxml
+++ b/HorseIsleServer/HISPd/Properties/PublishProfiles/iOSARM64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
iOS
ARM64
- bin\arm64\iOS\net8.0\ios-arm64\publish\
+ bin\arm64\iOS\net7.0\ios-arm64\publish\
FileSystem
- net8.0
+ net7.0
ios-arm64
True
False
diff --git a/HorseIsleServer/HISPd/Properties/Resources.Designer.cs b/HorseIsleServer/HISPd/Properties/Resources.Designer.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/HISPd/Properties/Resources.resx b/HorseIsleServer/HISPd/Properties/Resources.resx
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/HISPd/Properties/launchSettings.json b/HorseIsleServer/HISPd/Properties/launchSettings.json
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/conffiles b/HorseIsleServer/HISPd/Resources/DEBIAN/conffiles
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/control b/HorseIsleServer/HISPd/Resources/DEBIAN/control
old mode 100755
new mode 100644
index 1350d9e..a816d34
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/control
+++ b/HorseIsleServer/HISPd/Resources/DEBIAN/control
@@ -1,7 +1,7 @@
-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".
+Package: hisp
+Version: 1.6.1
+Depends: coreutils,systemd,mariadb-server,libsqlite3-dev
+Maintainer: Li
+Homepage: https://islehorse.com
+Architecture: amd64
+Description: Open Source Implementation of the flash game "Horse Isle" server.
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/copyright b/HorseIsleServer/HISPd/Resources/DEBIAN/copyright
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/postinst b/HorseIsleServer/HISPd/Resources/DEBIAN/postinst
old mode 100755
new mode 100644
index cb2151d..e8b6656
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/postinst
+++ b/HorseIsleServer/HISPd/Resources/DEBIAN/postinst
@@ -1,10 +1,7 @@
#!/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
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/postrm b/HorseIsleServer/HISPd/Resources/DEBIAN/postrm
old mode 100755
new mode 100644
index 1a24852..d69d749
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/postrm
+++ b/HorseIsleServer/HISPd/Resources/DEBIAN/postrm
@@ -1 +1,2 @@
#!/bin/sh
+userdel horseisle
diff --git a/HorseIsleServer/HISPd/Resources/DEBIAN/prerm b/HorseIsleServer/HISPd/Resources/DEBIAN/prerm
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/HISPd/Resources/HISP.service b/HorseIsleServer/HISPd/Resources/HISP.service
old mode 100755
new mode 100644
index 2292353..a945eac
--- a/HorseIsleServer/HISPd/Resources/HISP.service
+++ b/HorseIsleServer/HISPd/Resources/HISP.service
@@ -16,8 +16,8 @@ Type=simple
ProtectSystem=full
PrivateDevices=true
-StandardError=journal+console
-StandardOutput=journal+console
+StandardError=syslog+console
+StandardOutput=syslog+console
User=horseisle
Group=horseisle
@@ -25,7 +25,7 @@ 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
+Environment=USER=horseisle HOME=/etc/hisp HISP_BASE_DIR=/etc/hisp HISP_CONF_FILE=/etc/hisp/server.properties
[Install]
WantedBy=multi-user.target
diff --git a/HorseIsleServer/HISPd/icon.ico b/HorseIsleServer/HISPd/icon.ico
old mode 100755
new mode 100644
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/AssemblyInfo.cs b/HorseIsleServer/HISPtests/Properties/AssemblyInfo.cs
deleted file mode 100644
index aa433bd..0000000
--- a/HorseIsleServer/HISPtests/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.30.0")]
-[assembly: AssemblyFileVersion("1.8.30.0")]
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/Linux64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/Linux64.pubxml
deleted file mode 100644
index acb8a96..0000000
--- a/HorseIsleServer/HISPtests/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/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/WinARM.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM.pubxml
deleted file mode 100644
index f6cc04e..0000000
--- a/HorseIsleServer/HISPtests/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/HISPtests/Properties/PublishProfiles/WinARM64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM64.pubxml
deleted file mode 100644
index 10dfe10..0000000
--- a/HorseIsleServer/HISPtests/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/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..8e917aa
--- /dev/null
+++ b/HorseIsleServer/Installer/Installer.vdproj
@@ -0,0 +1,748 @@
+"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:_7686E608D62344A3B6FD5C91755693AA"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_C3608492E4D74B8683DE9CB3B3DE5D8A"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ }
+ "Configurations"
+ {
+ "Windows"
+ {
+ "DisplayName" = "8:Windows"
+ "IsDebugOnly" = "11:FALSE"
+ "IsReleaseOnly" = "11:TRUE"
+ "OutputFilename" = "8:Windows\\HISP-N00BS.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:3"
+ "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}:_C3608492E4D74B8683DE9CB3B3DE5D8A"
+ {
+ "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:"
+ }
+ }
+ "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:{99C89A9F-08DD-46A7-93D3-A1097FF01E9D}"
+ "PackageCode" = "8:{150AB74C-78D9-4115-8BD0-ADE380F0C993}"
+ "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.2"
+ "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:_C3608492E4D74B8683DE9CB3B3DE5D8A"
+ "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}:_2D6B5B28608E4FE5BD5E9AE8F9799C42"
+ {
+ "Name" = "8:HISP-N00BS"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_7686E608D62344A3B6FD5C91755693AA"
+ "Folder" = "8:_3B89F894B58B4F149DD0DBE5EC931BA2"
+ "WorkingFolder" = "8:_E3419B32123541589220537FB1154298"
+ "Icon" = "8:_C3608492E4D74B8683DE9CB3B3DE5D8A"
+ "Feature" = "8:"
+ }
+ "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_E1442F9672E44E8ABE7FF8CE91B674A0"
+ {
+ "Name" = "8:HISP-N00BS"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_7686E608D62344A3B6FD5C91755693AA"
+ "Folder" = "8:_2BED5EC5191147F4815904695DFB5319"
+ "WorkingFolder" = "8:_E3419B32123541589220537FB1154298"
+ "Icon" = "8:_C3608492E4D74B8683DE9CB3B3DE5D8A"
+ "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}:_7686E608D62344A3B6FD5C91755693AA"
+ {
+ "SourcePath" = "8:..\\N00BS\\obj\\x86\\Windows\\net7.0-windows\\win-x86\\apphost.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\\Win32.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 89%
rename from HorseIsleServer/LibHISP/Game/Chat/ChatMsg.cs
rename to HorseIsleServer/LibHISP/Game/Chat/Chat.cs
index fecd2a7..59b81a1 100644
--- a/HorseIsleServer/LibHISP/Game/Chat/ChatMsg.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/Chat.cs
@@ -1,94 +1,94 @@
-using System;
-using System.Collections.Generic;
+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)
+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 parsedMessage = message;
- parsedMessage = parsedMessage.Trim();
+ parsedMessage = parsedMessage.Trim();
char cLetter = parsedMessage[0];
parsedMessage = parsedMessage.Substring(1).Trim();
@@ -102,408 +102,408 @@ namespace HISP.Game.Chat
if (parsedMessage.ToUpper(CultureInfo.InvariantCulture).StartsWith(cmd.CmdName))
{
string[] args = parsedMessage.Substring(cmd.CmdName.Length).Trim().Split(' ');
- return cmd.Execute(messageToGive, args, user);
+ return cmd.CmdCallback(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.");
- }
-
- }
-}
+ }
+ 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..df20e55
--- a/HorseIsleServer/LibHISP/Game/Chat/Command.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/Command.cs
@@ -1,1106 +1,1035 @@
-using HISP.Player;
-using HISP.Server;
-using HISP.Game.Items;
-using HISP.Game.Events;
-using HISP.Game.Horse;
-using HISP.Game.Inventory;
+using HISP.Player;
+using HISP.Server;
+using HISP.Game.Items;
+using HISP.Game.Events;
+using HISP.Game.Horse;
+using HISP.Game.Inventory;
+using HISP.Modding;
+
+using System.Linq;
+using System;
+using System.Collections.Generic;
-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");
+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 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);
+ new CommandRegister('%', "GIVE", Command.Give);
+ new CommandRegister('%', "SWF", Command.Swf);
+ new CommandRegister('%', "GOTO", Command.Goto);
+ new CommandRegister('%', "JUMP", Command.Jump);
+ new CommandRegister('%', "KICK", Command.Kick);
+ new CommandRegister('%', "NOCLIP", Command.NoClip);
+ new CommandRegister('%', "MODHORSE", Command.ModHorse);
+ new CommandRegister('%', "DELITEM", Command.DelItem);
+ new CommandRegister('%', "SHUTDOWN", Command.Shutdown);
+ new CommandRegister('%', "RELOAD", Command.Reload);
+ new CommandRegister('%', "CALL", Command.CallHorse);
// 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);
+ new CommandRegister('%', "RULES", Command.Rules);
+ new CommandRegister('%', "PRISON", Command.Prison);
+ new CommandRegister('%', "STEALTH", Command.Stealth);
+ new CommandRegister('%', "BAN", Command.Ban);
+ new CommandRegister('%', "UNBAN", Command.UnBan);
+ new CommandRegister('%', "ESCAPE", Command.Escape);
// 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);
+ new CommandRegister('!', "MUTE", Command.Mute);
+ new CommandRegister('!', "UNMUTE", Command.UnMute);
+ new CommandRegister('!', "HEAR", Command.UnMute);
+ new CommandRegister('!', "AUTOREPLY", Command.AutoReply);
+ new CommandRegister('!', "QUIZ", Command.Quiz);
+ new CommandRegister('!', "WARP", Command.Warp);
+ new CommandRegister('!', "DANCE", Command.Dance);
+ new CommandRegister('!', "VERSION", Command.Version);
}
- 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)
+ public static bool Reload(string message, string[] args, User user)
+ {
+ if (!user.Administrator)
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;
- }
- }
-}
+ ModLoader.ReloadModsFromFilesystem();
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
+ user.LoggedinClient.SendPacket(chatPacket);
+ return true;
+ }
+ public static bool Shutdown(string message, string[] args, User user)
+ {
+ if (!user.Administrator)
+ return false;
+
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), 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), 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), 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), 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), 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), 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) + 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), 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), 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)+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) + 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), 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), 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), 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), 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), 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);
+
+ 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;
+
+ if (args.Length >= 1)
+ if (args[1].ToUpper() != "HORSE")
+ return false;
+
+ string 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);
+
+ 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);
+ 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);
+
+ 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);
+
+ 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);
+
+ 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);
+
+ 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
old mode 100755
new mode 100644
index 9868011..bc5dabe
--- a/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs
@@ -15,43 +15,17 @@ namespace HISP.Game.Chat
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)
+ public Func CmdCallback;
+ public CommandRegister(char cmdLetter, string cmdName, Func cmdCallback)
{
- this.CmdLetter = cmdLetter;
- this.CmdName = cmdName.ToUpper(CultureInfo.InvariantCulture).Trim();
- this.CmdUsage = cmdUsage;
-
- this.CmdRequiresMod = cmdRequiresMod;
- this.CmdRequiresAdmin = cmdRequiresAdmin;
-
- this.commandCallback = cmdCallback;
+ CmdLetter = cmdLetter;
+ CmdName = cmdName.ToUpper(CultureInfo.InvariantCulture);
+ CmdCallback = 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..02e7d53
--- a/HorseIsleServer/LibHISP/Game/Messages.cs
+++ b/HorseIsleServer/LibHISP/Game/Messages.cs
@@ -1,3051 +1,3029 @@
-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 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 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..452c0e8
--- a/HorseIsleServer/LibHISP/Game/Meta.cs
+++ b/HorseIsleServer/LibHISP/Game/Meta.cs
@@ -11,7 +11,6 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
-using HISP.Util;
namespace HISP.Game
{
@@ -1154,9 +1153,9 @@ namespace HISP.Game
{
if (client.LoggedIn)
{
- if (client.User.Stealth)
+ if (client.LoggedinUser.Stealth)
continue;
- onlineUsers.Add(client.User);
+ onlineUsers.Add(client.LoggedinUser);
}
}
@@ -1189,17 +1188,17 @@ namespace HISP.Game
{
if (client.LoggedIn)
{
- if (client.User.Stealth)
+ if (client.LoggedinUser.Stealth)
continue;
- bool isYou = (client.User.Id == currentUser.Id);
+ bool isYou = (client.LoggedinUser.Id == currentUser.Id);
- int icon = client.User.GetPlayerListIcon();
+ int icon = client.LoggedinUser.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.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);
}
}
@@ -1241,7 +1240,7 @@ namespace HISP.Game
continue;
string username = Database.GetUsername(id);
- int minutes = Convert.ToInt32(Math.Round(DateTime.UtcNow.Subtract(Helper.UnixTimeStampToDateTime(Database.GetPlayerLastLogin(id))).TotalMinutes));
+ int minutes = Convert.ToInt32(Math.Round(DateTime.UtcNow.Subtract(Util.UnixTimeStampToDateTime(Database.GetPlayerLastLogin(id))).TotalMinutes));
message += Messages.FormatOfflineBuddyEntry(username, id, minutes);
}
@@ -1734,8 +1733,8 @@ namespace HISP.Game
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);
+ byte[] moduleSwf = PacketBuilder.CreateSwfModulePacket(swfModule, PacketBuilder.PACKET_SWF_MODULE_FORCE);
+ user.LoggedinClient.SendPacket(moduleSwf);
if (mine) // This is My DS.
{
@@ -2105,7 +2104,7 @@ namespace HISP.Game
}
public static string BuildMailLetter(Mailbox.Mail mailMessage, int itemRandomId)
{
- DateTime time = Helper.UnixTimeStampToDateTime(mailMessage.Timestamp);
+ 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();
@@ -2581,7 +2580,7 @@ namespace HISP.Game
{
string message = Messages.FormatPawneerOrderSelectGender(color, breed.Name);
foreach (string gender in breed.GenderTypes())
- message += Messages.FormatPawneerOrderGenderEntry(Helper.CapitalizeFirstLetter(gender), gender);
+ message += Messages.FormatPawneerOrderGenderEntry(Util.CapitalizeFirstLetter(gender), gender);
message += Messages.BackToMap;
message += Messages.MetaTerminator;
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..cbcee7d
--- a/HorseIsleServer/LibHISP/Game/Quest.cs
+++ b/HorseIsleServer/LibHISP/Game/Quest.cs
@@ -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);
}
}
@@ -264,8 +264,8 @@ namespace HISP.Game
// Is cloud isles quest?
if (quest.Id == CloudIslesQuest)
{
- 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..cd783b1
--- 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);
}
}
diff --git a/HorseIsleServer/LibHISP/LibHISP.csproj b/HorseIsleServer/LibHISP/LibHISP.csproj
old mode 100755
new mode 100644
index fec083e..f4b5408
--- a/HorseIsleServer/LibHISP/LibHISP.csproj
+++ b/HorseIsleServer/LibHISP/LibHISP.csproj
@@ -1,283 +1,223 @@
-
-
- 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;iOS
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+ PreserveNewest
+ PreserveNewest
+ gamedata\%(Filename)%(Extension)
+
+
+
+
+ PreserveNewest
+ PreserveNewest
+ HI1.MAP
+
+
+
+
+
+
+
+
+
+ PublicResXFileCodeGenerator
+
+
+
+ false
+ false
+
+
+ net7.0
+ false
+ true
+ OnBuildSuccess
+ embedded
+ False
+ none
+ False
+ Public Domain, 2022
+ https://islehorse.com
+ https://github.com/islehorse/HISP
+ git
+ 3
+ 1701;1702;2026
+
+
+
+ win-x86
+ true
+ x86
+ OS_WINDOWS;ARCH_X86
+
+
+ win-x64
+ true
+ x64
+ OS_WINDOWS;ARCH_X86_64
+
+
+ win-arm
+ true
+ ARM
+ OS_WINDOWS;ARCH_ARM
+
+
+ win-arm64
+ true
+ ARM64
+ OS_WINDOWS;ARCH_ARM64
+
+
+
+ ios-arm
+ true
+ ARM
+ OS_IOS;ARCH_ARM
+
+
+ ios-arm64
+ true
+ ARM64
+ OS_IOS;ARCH_ARM64
+
+
+
+ android-arm
+ true
+ ARM
+ OS_ANDROID;ARCH_ARM
+
+
+ android-arm64
+ true
+ ARM64
+ OS_ANDROID;ARCH_ARM64
+
+
+
+
+ linux-x64
+ true
+ x64
+ OS_LINUX;ARCH_X86_64
+
+
+ linux-arm
+ ARM
+ true
+ OS_LINUX;ARCH_ARM
+
+
+ linux-arm64
+ ARM64
+ true
+ OS_LINUX;ARCH_ARM64
+
+
+
+ osx-x64
+ true
+ x64
+ OS_MACOS;ARCH_X86_64
+
+
+
+ osx-arm64
+ true
+ OS_MACOS;ARCH_ARM64
+
+
+
+
+ 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
+
+
+
+
+ ARM64
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_ARM64
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86_64
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86
+
+
+
+
+ True
+ OS_MACOS;ARCH_X86
+
+
+
+
+ True
+ OS_LINUX;ARCH_X86
+
+
+
+
+ False
+ OS_LINUX;ARCH_ANYCPU
+
+
+
+
+ False
+ OS_WINDOWS;ARCH_ANYCPU
+
+
+
+
+ False
+ OS_MACOS;ARCH_ANYCPU
+
+
+
+
+ True
+ OS_MACOS;ARCH_ARM
+
+
+
+
+ False
+
+
+
+
+
+
+
diff --git a/HorseIsleServer/LibHISP/LibHISP.csproj.user b/HorseIsleServer/LibHISP/LibHISP.csproj.user
new file mode 100644
index 0000000..19a143c
--- /dev/null
+++ b/HorseIsleServer/LibHISP/LibHISP.csproj.user
@@ -0,0 +1,6 @@
+
+
+
+ <_LastSelectedProfileId>C:\Users\User\Documents\git\HISP\HorseIsleServer\LibHISP\Properties\PublishProfiles\iOSARM.pubxml
+
+
\ No newline at end of file
diff --git a/HorseIsleServer/LibHISP/Modding/IMod.cs b/HorseIsleServer/LibHISP/Modding/IMod.cs
new file mode 100644
index 0000000..cd926ec
--- /dev/null
+++ b/HorseIsleServer/LibHISP/Modding/IMod.cs
@@ -0,0 +1,20 @@
+namespace HISP.Modding
+{
+ public interface IMod
+ {
+ public void OnModLoad();
+ public void OnModUnload();
+ public string ModName
+ {
+ get;
+ }
+ public string ModVersion
+ {
+ get;
+ }
+ public string ModId
+ {
+ get;
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Modding/ModLoader.cs b/HorseIsleServer/LibHISP/Modding/ModLoader.cs
new file mode 100644
index 0000000..8b53ba9
--- /dev/null
+++ b/HorseIsleServer/LibHISP/Modding/ModLoader.cs
@@ -0,0 +1,77 @@
+using HISP.Server;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+
+namespace HISP.Modding
+{
+ public class ModLoader
+ {
+ private static List modList = new List();
+ public static IMod[] ModList
+ {
+ get
+ {
+ return modList.ToArray();
+ }
+ }
+ public static void LoadMod(IMod mod)
+ {
+ mod.OnModLoad(); // Call OnModLoad();
+ modList.Add(mod); // add to the list of mods
+ Logger.InfoPrint("Loaded mod: "+mod.ModName + " v" + mod.ModVersion + " SUCCESS.");
+ }
+ public static void UnloadMod(IMod mod)
+ {
+ mod.OnModUnload();
+ modList.Remove(mod);
+ Logger.InfoPrint("Unloading mod: " + mod.ModName);
+ }
+ public static void UnloadAllMods()
+ {
+ foreach (IMod loadedMod in ModList)
+ {
+ UnloadMod(loadedMod);
+ }
+ }
+ public static void LoadModFromFilesystem(string dllfile)
+ {
+ try
+ {
+ Assembly assembly = Assembly.LoadFile(dllfile);
+ Type[] types = assembly.GetTypes();
+ // Search for classes that implement IMod
+ foreach (Type type in types)
+ {
+ if (type.GetInterfaces().Contains(typeof(IMod)))
+ {
+ IMod mod = (IMod)Activator.CreateInstance(type); // Crate an instance of the class
+ LoadMod(mod); // Load it into memory
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ Logger.ErrorPrint("Failed to load mod: " + dllfile + " - [EXCEPTION]" + e.Message + " " + e.InnerException + "\n" + e.StackTrace);
+ }
+ }
+ public static void OnShutdown()
+ {
+ UnloadAllMods();
+ }
+ public static void ReloadModsFromFilesystem()
+ {
+ UnloadAllMods();
+ if (Directory.Exists(ConfigReader.ModsFolder))
+ {
+ string[] filelist = Directory.GetFiles(ConfigReader.ModsFolder, "*.dll", SearchOption.TopDirectoryOnly);
+ foreach (string file in filelist)
+ {
+ LoadModFromFilesystem(file);
+ }
+ }
+ }
+ }
+}
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..c4547e6
--- a/HorseIsleServer/LibHISP/Player/User.cs
+++ b/HorseIsleServer/LibHISP/Player/User.cs
@@ -1,633 +1,587 @@
-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);
+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);
}
// Insert LGBT Patch here
@@ -639,117 +593,118 @@ namespace HISP.Player
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);
- }
-
- }
- }
- }
-
- }
- }
-}
+ }
+
+ 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..d798936
--- 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\Android\net7.0\android-arm\publish\
FileSystem
- net8.0
+ net7.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..9bbd80a
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM64.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\android-arm64\publish\
FileSystem
- net8.0
+ net7.0
android-arm64
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Linux64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/Linux64.pubxml
old mode 100755
new mode 100644
index 0a28cea..d5e9a4b
--- 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.
Linux
x64
- bin\x64\Linux\net8.0\linux-x64\publish\
+ bin\x64\Linux\net7.0\linux-x64\publish\
FileSystem
- net8.0
+ net7.0
linux-x64
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/LinuxARM.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/LinuxARM.pubxml
old mode 100755
new mode 100644
index 3be6fc1..f73fd7d
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/LinuxARM.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\linux-arm\publish\
FileSystem
- net8.0
+ net7.0
linux-arm
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/LinuxARM64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/LinuxARM64.pubxml
old mode 100755
new mode 100644
index 2ebd582..856d1c9
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/LinuxARM64.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\linux-arm64\publish\
FileSystem
- net8.0
+ net7.0
linux-arm64
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Osx64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/Osx64.pubxml
old mode 100755
new mode 100644
index da4bed5..e81e62c
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Osx64.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\osx-x64\publish\
FileSystem
- net8.0
+ net7.0
osx-x64
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/OsxARM64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/OsxARM64.pubxml
old mode 100755
new mode 100644
index 49b7a87..d2dea28
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/OsxARM64.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\osx-arm64\publish\
FileSystem
- net8.0
+ net7.0
osx-arm64
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Win32.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/Win32.pubxml
old mode 100755
new mode 100644
index 400c86c..232eba4
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Win32.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\win-x86\publish\
FileSystem
- net8.0
+ net7.0
win-x86
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Win64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/Win64.pubxml
old mode 100755
new mode 100644
index b1a750a..98a5535
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/Win64.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\win-x64\publish\
FileSystem
- net8.0
+ net7.0
win-x64
True
-
-
+ True
+ True
OS_WINDOWS;ARCH_X86_64
\ No newline at end of file
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/WinARM.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/WinARM.pubxml
old mode 100755
new mode 100644
index 1960b28..adeda92
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/WinARM.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\windows-arm\publish\
FileSystem
- net8.0
+ net7.0
win-arm
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/WinARM64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/WinARM64.pubxml
old mode 100755
new mode 100644
index 8dca620..73f3c47
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/WinARM64.pubxml
+++ b/HorseIsleServer/LibHISP/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\net7.0\windows-arm64\publish\
FileSystem
- net8.0
+ net7.0
win-arm64
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM.pubxml
old mode 100755
new mode 100644
index 0673054..d1b7b51
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM.pubxml
+++ b/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
iOS
ARM
- bin\arm\iOS\net8.0\ios-arm\publish\
+ bin\arm\iOS\net7.0\ios-arm\publish\
FileSystem
- net8.0
+ net7.0
ios-arm
True
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM64.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM64.pubxml
old mode 100755
new mode 100644
index 83b9e1d..6e41855
--- a/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM64.pubxml
+++ b/HorseIsleServer/LibHISP/Properties/PublishProfiles/iOSARM64.pubxml
@@ -6,9 +6,9 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
iOS
ARM64
- bin\arm64\iOS\net8.0\ios-arm64\publish\
+ bin\arm64\iOS\net7.0\ios-arm64\publish\
FileSystem
- net8.0
+ net7.0
ios-arm64
True
diff --git a/HorseIsleServer/LibHISP/Properties/Resources.Designer.cs b/HorseIsleServer/LibHISP/Properties/Resources.Designer.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Properties/Resources.resx b/HorseIsleServer/LibHISP/Properties/Resources.resx
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Properties/launchSettings.json b/HorseIsleServer/LibHISP/Properties/launchSettings.json
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Resources/default_cross_domain.xml b/HorseIsleServer/LibHISP/Resources/default_cross_domain.xml
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Resources/server.properties b/HorseIsleServer/LibHISP/Resources/server.properties
old mode 100755
new mode 100644
index 8797574..978e08f
--- a/HorseIsleServer/LibHISP/Resources/server.properties
+++ b/HorseIsleServer/LibHISP/Resources/server.properties
@@ -2,15 +2,12 @@
# Horse Isle Server Configuration
# =======================
#
-# HISP was Created and Developed by Li / SilicaAndPina
+# Configuration Version 1.3.1
+# HISP was Created and Developed by SilicaAndPina
# However it is NOT COPYRIGHTED! This software is in the Public Domain!
#
-
-# =======================
-# Network
-# =======================
-
# 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 defaults: (on beta.horseisle.com: 12321, on pinto.horseisle.com: 443)
@@ -18,15 +15,6 @@ ip=0.0.0.0
# running on the same port, so i prefer 12321.
port=12321
-# Listen for WebSockets as well as raw Flash XMLSocket Connection
-# If this feature is enabled, players can play Horse Isle
-# on HTML5 and WebAssembly with a fork of the Ruffle Flash Player Emulator
-enable_websocket=true
-
-# =======================
-# Database
-# =======================
-
# MariaDB Database Information
# For best performance, the database should be hosted on the SAME MACHINE as the HISP server.
# Or atleast, on a local network.
@@ -39,6 +27,20 @@ db_port=3306
# Connect to a sqllite database instead of a sql server.
sql_lite=false
+# File that contains the map tile data
+# the default was downloaded from the original server
+map=HI1.MAP
+
+# This folder contains all definitions in the game
+# such as items, horses. and quest data.
+# NOTE: This can be a folder or a file.
+gamedata=gamedata
+
+# Folder containing mod .dll's
+# Mods can extend the server
+# and add custom features.
+mods_folder=mods
+
# =======================
# Security
# =======================
@@ -74,15 +76,6 @@ enable_spam_filter=true
# Misc Settings.
# =======================
-# File that contains the map tile data
-# the default was downloaded from the original server
-map=HI1.MAP
-
-# This folder contains all definitions in the game
-# such as items, horses. and quest data.
-# NOTE: This can be a folder or a file.
-gamedata=gamedata
-
# Should the server consider all users "Subscribers"
# (warning: makes ranches be in use forever.)
all_users_subscribed=false
diff --git a/HorseIsleServer/LibHISP/Security/Authentication.cs b/HorseIsleServer/LibHISP/Security/Authentication.cs
old mode 100755
new mode 100644
index 0fb02bf..b74cce3
--- a/HorseIsleServer/LibHISP/Security/Authentication.cs
+++ b/HorseIsleServer/LibHISP/Security/Authentication.cs
@@ -1,141 +1,88 @@
-
-using System.Security.Cryptography;
-using System.Text;
-using System.Linq;
-
-using HISP.Server;
-using System;
-using HISP.Util;
-
-namespace HISP.Security
-{
- public class Authentication
- {
-
- public const string ROTPOOL = "bl7Jgk61IZdnY mfDN5zjM2XLqTCty4WSEoKR3BFVQsaUhHOAx0rPwp9uc8iGve";
- public const string POSPOOL = "DQc3uxiGsKZatMmOS5qYveN71zoPTk8yU0H2w9VjprBXWn l4FJd6IRbhgACfEL";
-
- public static string EncryptLogin(string plainpass)
- {
- string encrypt = "";
-
- int i = 0;
- while (i < plainpass.Length)
- {
- int rotation = GameServer.RandomNumberGenerator.Next(0, ROTPOOL.Length);
- int position = ROTPOOL.IndexOf(plainpass[i]);
-
- position = position + (rotation + i);
- while (position >= ROTPOOL.Length)
- position -= ROTPOOL.Length;
- encrypt += ROTPOOL[rotation];
- encrypt += POSPOOL[position];
-
- i++;
- }
- return encrypt;
-
- }
- public static string DecryptLogin(string encpass)
- {
- string decrypt = "";
-
- int i = 0;
- int rotationCycle = 0;
- while (i < encpass.Length)
- {
- int rotation = ROTPOOL.IndexOf(encpass[i].ToString());
- int position = POSPOOL.IndexOf(encpass[i + 1].ToString());
- position -= (rotation + rotationCycle);
- if (position < 0)
- {
- position = (position / -1) - 1;
-
- while (position >= ROTPOOL.Length)
- position -= ROTPOOL.Length;
-
- decrypt += Helper.ReverseString(ROTPOOL)[position];
- }
- else
- {
- while (position >= ROTPOOL.Length)
- position -= ROTPOOL.Length;
-
- decrypt += ROTPOOL[position];
- }
-
- i += 2;
- rotationCycle++;
- }
- return decrypt.Replace(" ", "");
- }
-
- public static byte[] Sha1Digest(byte[] message)
- {
- using (SHA1 sha1 = SHA1.Create())
- return sha1.ComputeHash(message);
- }
-
-
- public static byte[] Sha512Digest(byte[] message)
- {
- using (SHA512 sha512 = SHA512.Create())
- return sha512.ComputeHash(message);
- }
-
- public static byte[] XorBytes(byte[] plaintext, byte[] key)
- {
- int length = Math.Min(plaintext.Length, key.Length);
-
- byte[] ciphertext = new byte[length];
- for(int i = 0; i < length; i++)
- ciphertext[i] = Convert.ToByte(plaintext[i] ^ key[i]);
-
- return ciphertext;
- }
-
- public static byte[] HashAndSalt(string plaintext, byte[] salt)
- {
- byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
-
- byte[] hash = Sha512Digest(plaintextBytes);
- byte[] saltedHash = XorBytes(hash, salt);
- byte[] finalHash = Sha512Digest(saltedHash);
-
- return finalHash;
- }
-
- public static bool CheckPassword(string username, string password)
- {
- if(Database.CheckUserExist(username))
- {
- byte[] expectedPassword = Database.GetPasswordHash(username);
- byte[] salt = Database.GetPasswordSalt(username);
- byte[] hashedPassword = HashAndSalt(password, salt);
-
- if (Enumerable.SequenceEqual(expectedPassword, hashedPassword))
- return true;
- }
- return false;
- }
-
- public static int CreateAccount(string username, string password, string gender, bool admin, bool moderator)
- {
- // Get a free user id
- int userId = Database.GetNextFreeUserId();
-
- // Generate salt value
- byte[] salt = new byte[64];
- GameServer.RandomNumberGenerator.NextBytes(salt);
- string saltText = BitConverter.ToString(salt).Replace("-", "");
- string hashsalt = BitConverter.ToString(Authentication.HashAndSalt(password, salt)).Replace("-", "");
-
- // Add user to database
- Database.CreateUser(userId, username, hashsalt, saltText, gender, admin, moderator);
-
- return userId;
- }
-
-
- }
-}
+
+using System.Security.Cryptography;
+using System.Text;
+using System.Linq;
+
+using HISP.Server;
+
+namespace HISP.Security
+{
+ public class Authentication
+ {
+ public static string DecryptLogin(string encpass)
+ {
+ string decrypt = "";
+ string ROTPOOL = "bl7Jgk61IZdnY mfDN5zjM2XLqTCty4WSEoKR3BFVQsaUhHOAx0rPwp9uc8iGve";
+ string POSPOOL = "DQc3uxiGsKZatMmOS5qYveN71zoPTk8yU0H2w9VjprBXWn l4FJd6IRbhgACfEL";
+ string ROTPOOL2 = "evGi8cu9pwPr0xAOHhUasQVFB3RKoESW4ytCTqLX2Mjz5NDfm YndZI16kgJ7lb";
+
+
+ int i = 0;
+ int ii = 0;
+ while (i < encpass.Length)
+ {
+ int ROT = ROTPOOL.IndexOf(encpass[i].ToString());
+ int POS = POSPOOL.IndexOf(encpass[i + 1].ToString());
+ POS -= (ROT + ii);
+ if (POS < 0)
+ {
+ POS = (POS / -1) - 1;
+
+ while (POS >= ROTPOOL.Length)
+ {
+ POS -= ROTPOOL.Length;
+ }
+
+ decrypt += ROTPOOL2[POS];
+ }
+ else
+ {
+ while (POS >= ROTPOOL.Length)
+ {
+ POS -= ROTPOOL.Length;
+ }
+
+ decrypt += ROTPOOL[POS];
+ }
+
+ i += 2;
+ ii += 1;
+ }
+ return decrypt.Replace(" ", "");
+ }
+
+
+
+ public static byte[] HashAndSalt(string plaintext, byte[] salt)
+ {
+ byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext);
+
+ SHA512 sha512 = SHA512.Create();
+ byte[] hash = sha512.ComputeHash(plaintextBytes);
+
+ for (int i = 0; i < hash.Length; i++)
+ {
+ hash[i] ^= salt[i];
+ }
+
+ byte[] finalHash = sha512.ComputeHash(hash);
+
+ return finalHash;
+ }
+
+ public static bool CheckPassword(string username, string password)
+ {
+ if(Database.CheckUserExist(username))
+ {
+ byte[] expectedPassword = Database.GetPasswordHash(username);
+ byte[] salt = Database.GetPasswordSalt(username);
+ byte[] hashedPassword = HashAndSalt(password, salt);
+
+ if (Enumerable.SequenceEqual(expectedPassword, hashedPassword))
+ return true;
+ }
+ return false;
+ }
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Security/BBCode.cs b/HorseIsleServer/LibHISP/Security/BBCode.cs
old mode 100755
new mode 100644
diff --git a/HorseIsleServer/LibHISP/Security/CrossDomainPolicy.cs b/HorseIsleServer/LibHISP/Security/CrossDomainPolicy.cs
old mode 100755
new mode 100644
index 75ab62a..ef84fe1
--- a/HorseIsleServer/LibHISP/Security/CrossDomainPolicy.cs
+++ b/HorseIsleServer/LibHISP/Security/CrossDomainPolicy.cs
@@ -5,14 +5,24 @@ namespace HISP.Security
{
public class CrossDomainPolicy
{
- public static byte[] GetPolicyFile()
+ public static byte[] GetPolicy()
{
if (!File.Exists(ConfigReader.CrossDomainPolicyFile)) {
Logger.InfoPrint("Cross-Domain-Policy file not found, using default");
File.WriteAllText(ConfigReader.CrossDomainPolicyFile, Resources.DefaultCrossDomain);
- }
+ }
+
+
+ MemoryStream ms = new MemoryStream();
byte[] policyFileBytes = File.ReadAllBytes(ConfigReader.CrossDomainPolicyFile);
- return policyFileBytes;
+ ms.Write(policyFileBytes, 0x00, policyFileBytes.Length);
+ ms.WriteByte(0x00);
+
+ ms.Seek(0x00, SeekOrigin.Begin);
+ byte[] policyFileData = ms.ToArray();
+ ms.Close();
+
+ return policyFileData;
}
}
}
diff --git a/HorseIsleServer/LibHISP/Security/RandomID.cs b/HorseIsleServer/LibHISP/Security/RandomID.cs
old mode 100755
new mode 100644
index d64d203..20ec693
--- a/HorseIsleServer/LibHISP/Security/RandomID.cs
+++ b/HorseIsleServer/LibHISP/Security/RandomID.cs
@@ -1,27 +1,21 @@
-using System.Threading;
-
-namespace HISP.Security
-{
- public class RandomID
- {
- private static Mutex rndmIdMutex = new Mutex();
- private static int prevId = 0;
- public static int NextRandomId(int randomId=-1)
- {
- int rndmId = 0;
- rndmIdMutex.WaitOne();
-
- if (randomId == -1)
- rndmId = prevId+1;
- else
- rndmId = randomId;
-
- if (rndmId >= prevId)
- prevId = rndmId;
-
- rndmIdMutex.ReleaseMutex();
-
- return rndmId;
- }
- }
-}
+namespace HISP.Security
+{
+ public class RandomID
+ {
+ private static int prevId = 0;
+ public static int NextRandomId(int randomId=-1)
+ {
+ int rndmId = 0;
+
+ if (randomId == -1)
+ rndmId = prevId+1;
+ else
+ rndmId = randomId;
+
+ if (rndmId >= prevId)
+ prevId = rndmId;
+
+ return rndmId;
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Server/ConfigReader.cs b/HorseIsleServer/LibHISP/Server/ConfigReader.cs
old mode 100755
new mode 100644
index e0cf3fc..a93b3d1
--- a/HorseIsleServer/LibHISP/Server/ConfigReader.cs
+++ b/HorseIsleServer/LibHISP/Server/ConfigReader.cs
@@ -1,142 +1,141 @@
-using HISP.Properties;
-using System.IO;
-
-namespace HISP.Server
-{
-
- public class ConfigReader
- {
- public static int Port = 12321;
- public static string BindIP = "0.0.0.0";
-
- public static string DatabaseIP = "127.0.0.1";
- public static string DatabaseName = "game1";
- public static string DatabaseUsername = "root";
- public static string DatabasePassword = "test123";
-
- public static int DatabasePort = 3306;
- public static int IntrestRate = 3333;
- public static string Motd = "April 11, 2020. New breed, Camarillo White Horse. Two new quests.";
- public static string MapFile = "HI1.MAP";
- public static string GameData = "gamedata.json";
- public static string CrossDomainPolicyFile = "CrossDomainPolicy.xml";
-
- public static int LogLevel = 4;
-
- public static bool SqlLite = false;
- public static bool EnableSpamFilter = true;
- public static bool AllUsersSubbed = false;
- public static bool FixOfficalBugs = false;
- public static bool EnableSwearFilter = true;
- public static bool EnableCorrections = true;
- public static bool EnableNonViolations = true;
-
- public static bool EnableWebSocket = true;
-
- public static string ConfigurationFileName = "server.properties";
- public static void OpenConfig()
- {
- if (!File.Exists(ConfigurationFileName))
- {
- Logger.WarnPrint(ConfigurationFileName+" not found! writing default.");
- File.WriteAllText(ConfigurationFileName, Resources.DefaultServerProperties);
- Logger.WarnPrint("! Its very likely database connection will fail...");
- }
-
- string[] configFile = File.ReadAllLines(ConfigurationFileName);
- foreach (string setting in configFile)
- {
- /*
- * Avoid crashing.
- */
- if (setting.Length < 1)
- continue;
- if (setting[0] == '#')
- continue;
- if (!setting.Contains("="))
- continue;
-
- string[] dataPair = setting.Split('=');
-
- string key = dataPair[0];
- string data = dataPair[1];
- /*
- * Parse configuration file
- */
-
- switch (key)
- {
- case "port":
- Port = int.Parse(data);
+using HISP.Properties;
+using System.IO;
+
+namespace HISP.Server
+{
+
+ public class ConfigReader
+ {
+ public static int Port = 12321;
+ public static string BindIP = "0.0.0.0";
+
+ public static string DatabaseIP = "127.0.0.1";
+ public static string DatabaseName = "game1";
+ public static string DatabaseUsername = "root";
+ public static string DatabasePassword = "test123";
+
+ public static int DatabasePort = 3306;
+ public static int IntrestRate = 3333;
+ public static string Motd = "April 11, 2020. New breed, Camarillo White Horse. Two new quests.";
+ public static string MapFile = "HI1.MAP";
+ public static string GameData = "gamedata.json";
+ public static string CrossDomainPolicyFile = "CrossDomainPolicy.xml";
+
+ public static string ModsFolder = "mods";
+ public static int LogLevel = 4;
+
+ public static bool SqlLite = false;
+ public static bool EnableSpamFilter = true;
+ public static bool AllUsersSubbed = false;
+ public static bool FixOfficalBugs = false;
+ public static bool BadWords = true;
+ public static bool DoCorrections = true;
+ public static bool DoNonViolations = true;
+
+ public static string ConfigurationFileName = "server.properties";
+ public static void OpenConfig()
+ {
+ if (!File.Exists(ConfigurationFileName))
+ {
+ Logger.WarnPrint(ConfigurationFileName+" not found! writing default.");
+ File.WriteAllText(ConfigurationFileName, Resources.DefaultServerProperties);
+ Logger.WarnPrint("! Its very likely database connection will fail...");
+ }
+
+ string[] configFile = File.ReadAllLines(ConfigurationFileName);
+ foreach (string setting in configFile)
+ {
+ /*
+ * Avoid crashing.
+ */
+ if (setting.Length < 1)
+ continue;
+ if (setting[0] == '#')
+ continue;
+ if (!setting.Contains("="))
+ continue;
+
+ string[] dataPair = setting.Split('=');
+
+ string key = dataPair[0];
+ string data = dataPair[1];
+ /*
+ * Parse configuration file
+ */
+
+ switch (key)
+ {
+ case "port":
+ Port = int.Parse(data);
+ break;
+ case "ip":
+ BindIP = data;
+ break;
+ case "db_ip":
+ DatabaseIP = data;
+ break;
+ case "db_username":
+ DatabaseUsername = data;
+ break;
+ case "db_password":
+ DatabasePassword = data;
+ break;
+ case "db_name":
+ DatabaseName = data;
+ break;
+ case "db_port":
+ DatabasePort = int.Parse(data);
+ break;
+ case "map":
+ MapFile = data;
+ break;
+ case "motd":
+ Motd = data;
+ break;
+ case "gamedata":
+ GameData = data;
+ break;
+ case "crossdomain":
+ CrossDomainPolicyFile = data;
+ break;
+ case "all_users_subscribed":
+ AllUsersSubbed = data == "true";
+ break;
+ case "enable_corrections":
+ DoCorrections = data == "true";
+ break;
+ case "sql_lite":
+ SqlLite = data == "true";
+ break;
+ case "enable_non_violation_check":
+ DoNonViolations = data == "true";
+ break;
+ case "enable_spam_filter":
+ EnableSpamFilter = data == "true";
+ break;
+ case "fix_offical_bugs":
+ FixOfficalBugs = data == "true";
+ break;
+ case "enable_word_filter":
+ BadWords = data == "true";
break;
- case "ip":
- BindIP = data;
- break;
- case "db_ip":
- DatabaseIP = data;
- break;
- case "db_username":
- DatabaseUsername = data;
- break;
- case "db_password":
- DatabasePassword = data;
- break;
- case "db_name":
- DatabaseName = data;
- break;
- case "db_port":
- DatabasePort = int.Parse(data);
- break;
- case "map":
- MapFile = data;
- break;
- case "motd":
- Motd = data;
- break;
- case "gamedata":
- GameData = data;
- break;
- case "crossdomain":
- CrossDomainPolicyFile = data;
- break;
- case "all_users_subscribed":
- AllUsersSubbed = (data == "true");
- break;
- case "enable_corrections":
- EnableCorrections = (data == "true");
- break;
- case "sql_lite":
- SqlLite = (data == "true");
- break;
- case "enable_non_violation_check":
- EnableNonViolations = (data == "true");
- break;
- case "enable_spam_filter":
- EnableSpamFilter = (data == "true");
- break;
- case "enable_websocket":
- EnableWebSocket = (data == "true");
- break;
- case "fix_offical_bugs":
- FixOfficalBugs = (data == "true");
- break;
- case "enable_word_filter":
- EnableSwearFilter = (data == "true");
- break;
- case "intrest_rate":
- IntrestRate = int.Parse(data);
- break;
- case "log_level":
- LogLevel = int.Parse(data);
- break;
- }
-
-
-
- }
-
-
- }
-
- }
-}
+ case "mods_folder":
+ ModsFolder = data;
+ break;
+ case "intrest_rate":
+ IntrestRate = int.Parse(data);
+ break;
+ case "log_level":
+ LogLevel = int.Parse(data);
+ break;
+ }
+
+
+
+ }
+
+
+ }
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Server/DataFixerUpper.cs b/HorseIsleServer/LibHISP/Server/DataFixerUpper.cs
deleted file mode 100755
index eae0151..0000000
--- a/HorseIsleServer/LibHISP/Server/DataFixerUpper.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System;
-
-namespace HISP.Server
-{
- static class DataFixerUpper
- {
- private static void fixupVersion1_0()
- {
- // Add total logins column to UserExt
- Database.TryExecuteSqlQuery("ALTER TABLE UserExt ADD COLUMN TotalLogins INT;");
- Database.TryExecuteSqlQuery("UPDATE UserExt SET TotalLogins=0;");
-
- // Add New column to OnlineUsers.
- Database.TryExecuteSqlQuery("ALTER TABLE OnlineUsers ADD COLUMN New TEXT(3);");
- Database.TryExecuteSqlQuery("UPDATE OnlineUsers SET New=\"NO\";");
-
- // Alter sizes
- Database.TryExecuteSqlQuery("ALTER TABLE UserExt CHANGE COLUMN ProfilePage ProfilePage TEXT(4000);");
- Database.TryExecuteSqlQuery("ALTER TABLE UserExt CHANGE COLUMN PrivateNotes PrivateNotes TEXT(65535);");
- Database.TryExecuteSqlQuery("ALTER TABLE MailBox CHANGE COLUMN Subject Subject TEXT(100);");
- Database.TryExecuteSqlQuery("ALTER TABLE MailBox CHANGE COLUMN Message Message TEXT(65535);");
- Database.TryExecuteSqlQuery("ALTER TABLE Horses CHANGE COLUMN description description TEXT(4000);");
- Database.TryExecuteSqlQuery("ALTER TABLE WildHorse CHANGE COLUMN description description TEXT(4000);");
- Database.TryExecuteSqlQuery("ALTER TABLE Ranches CHANGE COLUMN title title TEXT(50);");
- Database.TryExecuteSqlQuery("ALTER TABLE Ranches CHANGE COLUMN description description TEXT(250);");
- }
-
- private static void fixupVersion1_1()
- {
- // Add data column to shop to ShopInventory
- Database.TryExecuteSqlQuery("ALTER TABLE ShopInventory ADD COLUMN Data INT;");
- Database.TryExecuteSqlQuery("UPDATE ShopInventory SET Data=0;");
- }
-
- private static void fixupVersion1_7_20()
- {
- // Add LastLoadedInVersion column to World.
- Database.TryExecuteSqlQuery("ALTER TABLE World ADD COLUMN LastLoadedInVersion TEXT(64)");
- Database.TryExecuteSqlQuery("UPDATE World SET LastLoadedInVersion=\"v1.7.20\";");
- }
-
- public static void FixUpDb()
- {
- string lastVersionStr = Database.GetLastLoadedVersion();
- string currentVersionStr = ServerVersion.GetVersionString();
-
- int lastVersion = Convert.ToInt32(Int32.Parse(lastVersionStr.ToLower().Replace("v", "").Replace(".", "")));
- int currentVersion = Convert.ToInt32(Int32.Parse(currentVersionStr.ToLower().Replace("v", "").Replace(".", "")));
-
- if(currentVersion > lastVersion)
- {
- Logger.WarnPrint("Migrating Database from " + lastVersionStr + " to " + currentVersionStr);
-
- if (lastVersion <= 10) fixupVersion1_0();
- if (lastVersion <= 11) fixupVersion1_1();
- if (lastVersion <= 1720) fixupVersion1_7_20();
-
- Database.SetLastLoadedVersion(ServerVersion.GetVersionString());
- }
- }
- }
-}
diff --git a/HorseIsleServer/LibHISP/Server/Database.cs b/HorseIsleServer/LibHISP/Server/Database.cs
old mode 100755
new mode 100644
index a90d761..8702785
--- a/HorseIsleServer/LibHISP/Server/Database.cs
+++ b/HorseIsleServer/LibHISP/Server/Database.cs
@@ -13,8 +13,6 @@ using HISP.Game.SwfModules;
using MySqlConnector;
using Microsoft.Data.Sqlite;
-using SQLitePCL;
-using HISP.Util;
namespace HISP.Server
{
@@ -44,46 +42,18 @@ namespace HISP.Server
public static void OnShutdown()
{
-
- if(!ConfigReader.SqlLite)
- MySqlConnection.ClearAllPools();
- else
- SqliteConnection.ClearAllPools();
-
+ MySqlConnection.ClearAllPools();
+ SqliteConnection.ClearAllPools();
}
- public static bool TryExecuteSqlQuery(string query)
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = query;
- try
- {
- sqlCommand.ExecuteNonQuery();
- return true;
- }
- catch (Exception)
- {
- return false;
- };
- }
- }
public static void OpenDatabase()
{
if (!ConfigReader.SqlLite)
- {
ConnectionString = "server=" + ConfigReader.DatabaseIP + ";user=" + ConfigReader.DatabaseUsername + ";password=" + ConfigReader.DatabasePassword + ";database=" + ConfigReader.DatabaseName;
-
- }
else
- {
ConnectionString = "Data Source=\"" + ConfigReader.DatabaseName + ".db\";";
- Batteries.Init();
- }
-
+
using (DbConnection db = connectDb())
{
@@ -104,7 +74,7 @@ namespace HISP.Server
string MailTable = "CREATE TABLE IF NOT EXISTS Mailbox(RandomId INT, IdTo INT, IdFrom INT, Subject TEXT(100), Message Text(65535), TimeSent INT, BeenRead TEXT(3))";
string BuddyTable = "CREATE TABLE IF NOT EXISTS BuddyList(Id INT, IdFriend INT)";
string MessageQueue = "CREATE TABLE IF NOT EXISTS MessageQueue(Id INT, Message TEXT(1028))";
- string WorldTable = "CREATE TABLE IF NOT EXISTS World(Time INT, Day INT, Year INT, StartTime INT, LastLoadedInVersion TEXT(64))";
+ string WorldTable = "CREATE TABLE World(Time INT, Day INT, Year INT, StartTime INT)";
string WeatherTable = "CREATE TABLE IF NOT EXISTS Weather(Area TEXT(1028), Weather TEXT(64))";
string InventoryTable = "CREATE TABLE IF NOT EXISTS Inventory(PlayerID INT, RandomID INT, ItemID INT, Data INT)";
string ShopInventory = "CREATE TABLE IF NOT EXISTS ShopInventory(ShopID INT, RandomID INT, ItemID INT, Data INT)";
@@ -580,16 +550,18 @@ namespace HISP.Server
try
{
+
DbCommand sqlCommand = db.CreateCommand();
sqlCommand.CommandText = WorldTable;
sqlCommand.ExecuteNonQuery();
sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "INSERT INTO World VALUES(0,0,0,@startDate,@version)";
- addWithValue(sqlCommand, "@startDate", (UInt32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
- addWithValue(sqlCommand, "@version", ServerVersion.GetVersionString());
+ sqlCommand.CommandText = "INSERT INTO World VALUES(0,0,0,@startDate)";
+ addWithValue(sqlCommand, "@startDate", (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
sqlCommand.Prepare();
sqlCommand.ExecuteNonQuery();
+
+
}
catch (Exception e)
{
@@ -635,7 +607,6 @@ namespace HISP.Server
};
}
- DataFixerUpper.FixUpDb();
}
public static void DeleteRanchOwner(int ranchId)
@@ -2627,80 +2598,6 @@ namespace HISP.Server
}
}
- public static void SetLastLoadedVersion(string version)
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "UPDATE World SET LastLoadedInVersion=@version";
- addWithValue(sqlCommand, "@version", version);
- sqlCommand.Prepare();
- sqlCommand.ExecuteNonQuery();
-
- }
- }
-
- // Tests if the game was previously loaded in 1.0
- public static bool TestFor1_0()
- {
- try
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "SELECT TotalLogins FROM UserExt LIMIT 1;";
- sqlCommand.ExecuteNonQuery();
- }
- return false;
- }
- catch (Exception)
- {
- return true;
- };
- }
- //Tests if game was previously loaded in v1.1
- public static bool TestFor1_1()
- {
- try
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "SELECT Data FROM ShopInventory LIMIT 1;";
- sqlCommand.ExecuteNonQuery();
- }
- return false;
- }
- catch (Exception)
- {
- return true;
- }
- }
-
- public static string GetLastLoadedVersion()
- {
- try
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
- sqlCommand.CommandText = "SELECT LastLoadedInVersion FROM World";
- string lastVersion = sqlCommand.ExecuteScalar().ToString();
-
- return lastVersion;
- }
- }
- catch (Exception) // table not found? must have been before v1.7.20.
- {
- if (TestFor1_0()) return "v1.0";
- if (TestFor1_1()) return "v1.1";
- return "v1.7.20";
- }
- }
public static void SetStartTime(int startTime)
{
@@ -3503,7 +3400,7 @@ namespace HISP.Server
sqlCommand.Prepare();
string expectedHash = sqlCommand.ExecuteScalar().ToString();
- return Helper.StringToByteArray(expectedHash);
+ return Util.StringToByteArray(expectedHash);
}
else
{
@@ -3545,6 +3442,8 @@ namespace HISP.Server
}
}
+
+
public static void SetJewelrySlot1(int playerId, int itemId)
{
using (DbConnection db = connectDb())
@@ -4126,41 +4025,7 @@ namespace HISP.Server
return subscribedUntil;
}
}
-
- public static void SetUserSubscriptionStatus(int playerId, int subscribedUntil)
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
-
- sqlCommand.CommandText = "UPDATE UserExt SET SubscribedUntil=@subscribedUntil WHERE Id=@playerId";
- addWithValue(sqlCommand, "@subscribedUntil", subscribedUntil);
- addWithValue(sqlCommand, "@playerId", playerId);
- sqlCommand.Prepare();
- sqlCommand.ExecuteNonQuery();
-
- }
- }
-
-
- public static bool GetUserModerator(int playerId)
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
-
- sqlCommand.CommandText = "SELECT Moderator FROM Users WHERE Id=@playerId";
- addWithValue(sqlCommand, "@playerId", playerId);
- sqlCommand.Prepare();
- bool admin = sqlCommand.ExecuteScalar().ToString() == "YES";
-
-
- return admin;
- }
- }
- public static bool GetUserAdmin(int playerId)
+ public static bool IsUserAdmin(int playerId)
{
using (DbConnection db = connectDb())
{
@@ -4176,7 +4041,7 @@ namespace HISP.Server
return admin;
}
}
- public static bool GetUserSubscribed(int playerId)
+ public static bool IsUserSubscribed(int playerId)
{
if (ConfigReader.AllUsersSubbed)
return true;
@@ -4471,38 +4336,6 @@ namespace HISP.Server
}
}
- public static void SetUserMod(int playerId, bool moderator)
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
- string yesno = (moderator ? "YES" : "NO");
-
- sqlCommand.CommandText = "UPDATE Users SET Moderator=@moderator WHERE Id=@playerId";
- addWithValue(sqlCommand, "@playerId", playerId);
- addWithValue(sqlCommand, "@moderator", yesno);
- sqlCommand.Prepare();
- sqlCommand.ExecuteNonQuery();
- }
- }
-
- public static void SetUserAdmin(int playerId, bool admin)
- {
- using (DbConnection db = connectDb())
- {
- db.Open();
- DbCommand sqlCommand = db.CreateCommand();
- string yesno = (admin ? "YES" : "NO");
-
- sqlCommand.CommandText = "UPDATE Users SET Admin=@admin WHERE Id=@playerId";
- addWithValue(sqlCommand, "@playerId", playerId);
- addWithValue(sqlCommand, "@admin", yesno);
- sqlCommand.Prepare();
- sqlCommand.ExecuteNonQuery();
- }
- }
-
public static void SetNpcX(int npcId, int x)
{
using (DbConnection db = connectDb())
@@ -4901,7 +4734,7 @@ namespace HISP.Server
}
- public static bool CheckUsernameIsModerator(string username)
+ public static bool CheckUserIsModerator(string username)
{
using (DbConnection db = connectDb())
{
@@ -4925,7 +4758,7 @@ namespace HISP.Server
}
- public static bool CheckUsernameIsAdmin(string username)
+ public static bool CheckUserIsAdmin(string username)
{
using (DbConnection db = connectDb())
{
@@ -6346,7 +6179,7 @@ namespace HISP.Server
string expectedHash = sqlCommand.ExecuteScalar().ToString();
- return Helper.StringToByteArray(expectedHash);
+ return Util.StringToByteArray(expectedHash);
}
else
{
diff --git a/HorseIsleServer/LibHISP/Server/Entry.cs b/HorseIsleServer/LibHISP/Server/Entry.cs
old mode 100755
new mode 100644
index 5f1e530..3e51553
--- a/HorseIsleServer/LibHISP/Server/Entry.cs
+++ b/HorseIsleServer/LibHISP/Server/Entry.cs
@@ -1,90 +1,76 @@
-using HISP.Game;
-using HISP.Game.Horse;
-using HISP.Game.Items;
-using HISP.Game.Services;
-using HISP.Game.SwfModules;
-using HISP.Game.Chat;
-using HISP.Security;
+using HISP.Game;
+using HISP.Game.Horse;
+using HISP.Game.Items;
+using HISP.Game.Services;
+using HISP.Game.SwfModules;
+using HISP.Game.Chat;
+using HISP.Security;
+using System;
+using System.Diagnostics;
+using HISP.Modding;
-using System;
-using System.Diagnostics;
-
-namespace HISP.Server
-{
- public static class Entry
- {
- // "Entry Point"
-
- private static void defaultOnShutdownCallback()
+namespace HISP.Server
+{
+ public static class Entry
+ {
+ // "Entry Point"
+
+ private static void defaultOnShutdownCallback()
+ {
+ Process.GetCurrentProcess().Close();
+ }
+ public static Action OnShutdown = defaultOnShutdownCallback;
+
+
+ public static void SetShutdownCallback(Action callback)
+ {
+ OnShutdown = callback;
+ }
+
+ public static void Start()
{
- Process.GetCurrentProcess().Close();
- }
+#if (!DEBUG)
+ AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
+#endif
- public static Action OnShutdown = defaultOnShutdownCallback;
-
- public static void SetShutdownCallback(Action callback)
- {
- OnShutdown = callback;
- }
-
- public static void RegisterCrashHandler()
- {
-#if (!OS_DEBUG)
- AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(HispCrashHandler);
-#endif
- }
-
- public static void Start()
- {
- RegisterCrashHandler();
- Console.Title = ServerVersion.GetBuildString();
- ConfigReader.OpenConfig();
- CrossDomainPolicy.GetPolicyFile();
- Database.OpenDatabase();
- GameDataJson.ReadGamedata();
-
- Map.OpenMap();
- World.ReadWorldData();
- Treasure.Init();
-
- DroppedItems.Init();
- WildHorse.Init();
-
- Drawingroom.LoadAllDrawingRooms();
- Brickpoet.LoadPoetryRooms();
- Multiroom.CreateMultirooms();
-
- Auction.LoadAllAuctionRooms();
-
- Item.DoSpecialCases();
- Command.RegisterCommands();
-
- GameServer.StartServer();
- }
-
- private static void HispCrashHandler(object sender, UnhandledExceptionEventArgs e)
- {
-
- string[] becauseRustWont = {
- "It was from the artists and poets that the pertinent answers came, and I\r\nknow that panic would have broken loose had they been able to compare notes.\r\nAs it was, lacking their original letters, I half suspected the compiler of\r\nhaving asked leading questions, or of having edited the correspondence in\r\ncorroboration of what he had latently resolved to see.",
- "There are not many persons who know what wonders are opened to them in the\r\nstories and visions of their youth; for when as children we listen and dream,\r\nwe think but half-formed thoughts, and when as men we try to remember, we are\r\ndulled and prosaic with the poison of life. But some of us awake in the night\r\nwith strange phantasms of enchanted hills and gardens, of fountains that sing\r\nin the sun, of golden cliffs overhanging murmuring seas, of plains that stretch\r\ndown to sleeping cities of bronze and stone, and of shadowy companies of heroes\r\nthat ride caparisoned white horses along the edges of thick forests; and then\r\nwe know that we have looked back through the ivory gates into that world of\r\nwonder which was ours before we were wise and unhappy.",
- "Instead of the poems I had hoped for, there came only a shuddering blackness\r\nand ineffable loneliness; and I saw at last a fearful truth which no one had\r\never dared to breathe before — the unwhisperable secret of secrets — The fact\r\nthat this city of stone and stridor is not a sentient perpetuation of Old New\r\nYork as London is of Old London and Paris of Old Paris, but that it is in fact\r\nquite dead, its sprawling body imperfectly embalmed and infested with queer\r\nanimate things which have nothing to do with it as it was in life.",
- "The ocean ate the last of the land and poured into the smoking gulf, thereby\r\ngiving up all it had ever conquered. From the new-flooded lands it flowed\r\nagain, uncovering death and decay; and from its ancient and immemorial bed it\r\ntrickled loathsomely, uncovering nighted secrets of the years when Time was\r\nyoung and the gods unborn. Above the waves rose weedy remembered spires. The\r\nmoon laid pale lilies of light on dead London, and Paris stood up from its damp\r\ngrave to be sanctified with star-dust. Then rose spires and monoliths that were\r\nweedy but not remembered; terrible spires and monoliths of lands that men never\r\nknew were lands...",
- "There was a night when winds from unknown spaces whirled us irresistibly into\r\nlimitless vacuum beyond all thought and entity. Perceptions of the most\r\nmaddeningly untransmissible sort thronged upon us; perceptions of infinity\r\nwhich at the time convulsed us with joy, yet which are now partly lost to my\r\nmemory and partly incapable of presentation to others.",
- "You've met with a terrible fate, haven't you?"
- };
-
- Exception execpt = (Exception)e.ExceptionObject;
-
-
- string crashMsg = becauseRustWont[execpt.GetHashCode() % becauseRustWont.Length] + "\n";
- crashMsg += "HISP HAS CRASHED" + "\n";
- crashMsg += "Build: " + ServerVersion.GetBuildString() + "\n";
- crashMsg += "Unhandled Exception: " + execpt.Message + "\n";
- crashMsg += execpt.StackTrace + "\n";
-
- Logger.CrashPrint(crashMsg);
-
- }
- }
-}
+ ModLoader.ReloadModsFromFilesystem();
+
+ Console.Title = ServerVersion.GetBuildString();
+ ConfigReader.OpenConfig();
+ CrossDomainPolicy.GetPolicy();
+ Database.OpenDatabase();
+ GameDataJson.ReadGamedata();
+
+ Map.OpenMap();
+ World.ReadWorldData();
+ Treasure.Init();
+
+ DroppedItems.Init();
+ WildHorse.Init();
+
+ Drawingroom.LoadAllDrawingRooms();
+ Brickpoet.LoadPoetryRooms();
+ Multiroom.CreateMultirooms();
+
+ Auction.LoadAllAuctionRooms();
+
+ Item.DoSpecialCases();
+ Command.RegisterCommands();
+
+ GameServer.StartServer();
+ }
+
+ private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+ {
+ Exception execpt = (Exception)e.ExceptionObject;
+
+ Logger.ErrorPrint("HISP HAS CRASHED :(");
+ Logger.ErrorPrint("Unhandled Exception: " + execpt.ToString());
+ Logger.ErrorPrint(execpt.Message);
+ Logger.ErrorPrint("");
+ Logger.ErrorPrint(execpt.StackTrace);
+
+ while (true) { /* Allow asyncronous operations to happen. */ };
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Server/GameClient.cs b/HorseIsleServer/LibHISP/Server/GameClient.cs
old mode 100755
new mode 100644
index 749c1c3..e72f295
--- a/HorseIsleServer/LibHISP/Server/GameClient.cs
+++ b/HorseIsleServer/LibHISP/Server/GameClient.cs
@@ -1,566 +1,618 @@
-using System;
-using System.Net.Sockets;
-using System.Threading;
-using HISP.Player;
-using HISP.Game;
-using HISP.Game.Horse;
-using HISP.Game.Events;
-using HISP.Game.Items;
-using HISP.Util;
-using HISP.Server.Network;
-
-namespace HISP.Server
-{
- public class GameClient
- {
- private static ThreadSafeList connectedClients = new ThreadSafeList();
- public static GameClient[] ConnectedClients // Done to prevent Enumerator Changed errors.
- {
- get
- {
- return connectedClients.ToArray();
- }
- }
-
- private ITransport networkTransport;
-
- private bool loggedIn = false;
-
- public string RemoteIp
- {
- get
- {
- return networkTransport.Ip;
- }
- }
- public bool LoggedIn
- {
- get
- {
- bool login = loggedIn;
- if (User == null)
- return false;
- if (User.Client == null)
- return false;
- return login;
- }
- set
- {
- loggedIn = value;
- }
- }
- public User User;
-
- private Timer keepAliveTimer;
- private Timer timeoutTimer;
-
- private Timer warnTimer;
- private Timer kickTimer;
- private Timer minuteTimer;
-
-
- private int timeoutInterval = 95 * 1000;
-
- private int totalMinutesElapsed = 0;
- private int oneMinute = 60 * 1000;
- private int warnInterval = GameServer.IdleWarning * 60 * 1000; // Time before showing a idle warning
- private int kickInterval = GameServer.IdleTimeout * 60 * 1000; // Time before kicking for inactivity
-
-
- public GameClient(Socket clientSocket)
- {
-
- kickTimer = new Timer(new TimerCallback(kickTimerTick), null, kickInterval, kickInterval);
- warnTimer = new Timer(new TimerCallback(warnTimerTick), null, warnInterval, warnInterval);
- minuteTimer = new Timer(new TimerCallback(minuteTimerTick), null, oneMinute, oneMinute);
-
- networkTransport = new Hybrid();
- networkTransport.Accept(clientSocket, parsePackets, disconnectHandler);
- Logger.DebugPrint(networkTransport.Name + " : Client connected @ " + networkTransport.Ip);
-
-
- }
-
- public static void OnShutdown(string reason)
- {
- try
- {
- foreach (GameClient client in ConnectedClients)
- {
-
- if (client.LoggedIn)
- {
- for (int i = 0; i < 2; i++)
- {
- ItemInstance rubyItem = new ItemInstance(Item.Ruby);
- client.User.Inventory.AddIgnoringFull(rubyItem);
- }
-
- client.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++;
- Logger.DebugPrint("Kicking: " + client.User.Username);
- }
- client.Kick("Server shutdown: "+reason);
- }
- }
- catch (Exception) { };
- }
-
- private static bool acceptConnections(SocketAsyncEventArgs e)
- {
- try
- {
- if (e == null) return false;
- if (GameServer.ServerSocket == null) return false;
- return !GameServer.ServerSocket.AcceptAsync(e);
- }
- catch (Exception) { return false; }
- }
- public static void CreateClient(object sender, SocketAsyncEventArgs e)
- {
- do
- {
- Socket clientSocket = e.AcceptSocket;
-
- if (clientSocket == null)
- continue;
- if (clientSocket.RemoteEndPoint == null)
- continue;
-
- connectedClients.Add(new GameClient(clientSocket));
- e.AcceptSocket = null;
-
- } while (acceptConnections(e));
- }
- private void timeoutTimerTick(object state)
- {
- if (this.LoggedIn)
- {
- Disconnect();
- }
- }
-
- private void disconnectHandler()
- {
-
- // Stop Timers
- if (timeoutTimer != null)
- {
- timeoutTimer.Dispose();
- timeoutTimer = null;
- }
- if (keepAliveTimer != null)
- {
- keepAliveTimer.Dispose();
- keepAliveTimer = null;
- }
- if (warnTimer != null)
- {
- warnTimer.Dispose();
- warnTimer = null;
- }
- if (kickTimer != null)
- {
- kickTimer.Dispose();
- kickTimer = null;
- }
-
- // Call OnDisconnect
-
- connectedClients.Remove(this);
- GameServer.OnDisconnect(this);
- LoggedIn = false;
- }
- public void Disconnect()
- {
- if(!networkTransport.Disconnected)
- networkTransport.Disconnect();
- }
-
- private void keepAliveTick(object state)
- {
- Logger.DebugPrint("Sending keep-alive packet to " + User.Username);
- byte[] updatePacket = PacketBuilder.CreateKeepAlive();
- SendPacket(updatePacket);
- keepAliveTimer.Change(oneMinute, oneMinute);
- }
- private void minuteTimerTick(object state)
- {
- totalMinutesElapsed++;
- if (LoggedIn)
- {
-
- GameServer.UpdatePlayer(this);
-
- User.CanUseAdsChat = true;
- User.FreeMinutes -= 1;
-
- GameServer.DoItemPurchases(this);
-
- if (totalMinutesElapsed % 2 == 0)
- {
- User.TotalGlobalChatMessages++;
- }
-
- if (User.FreeMinutes <= 0)
- {
- User.FreeMinutes = 0;
- if (!User.Subscribed && !User.Moderator && !User.Administrator)
- {
- Kick(Messages.KickReasonNoTime);
- return;
- }
-
- }
-
- // Those fun messages when u have been playing for awhile.
- if (totalMinutesElapsed % (2 * 60) == 0)
- {
- string ptMessage = Messages.RngMessages[GameServer.RandomNumberGenerator.Next(0, Messages.RngMessages.Length)];
- byte[] playTimeMessage = PacketBuilder.CreateChat(Messages.FormatPlaytimeMessage(totalMinutesElapsed / 60) + ptMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- SendPacket(playTimeMessage);
- }
-
-
- if (GameServer.RandomNumberGenerator.Next(0, 100) == 59) // RANDOM EVENT HAS OCCURED!
- {
- RandomEvent.ExecuteRandomEvent(User);
- }
-
- bool gotoPrision = false;
- foreach(HorseInstance horse in User.HorseInventory.HorseList)
- {
- if (totalMinutesElapsed % 2 == 0)
- {
- horse.BasicStats.Thirst--;
- horse.BasicStats.Hunger--;
-
- if (horse.BasicStats.Thirst <= 0 && horse.BasicStats.Hunger <= 0)
- {
- horse.BasicStats.Health -= 5;
- if(horse.BasicStats.Hunger <= 0)
- {
- gotoPrision = true; // Goto jail, go directly to jail, do not pass go, do not collect 200$
-
- horse.BasicStats.Health = 10;
- horse.BasicStats.Hunger = 500;
- horse.BasicStats.Thirst = 500;
- }
- }
- }
-
-
- if(horse.Leaser > 0)
- {
- horse.LeaseTime--;
-
- if (horse.LeaseTime <= 0)
- {
- int tpX = 0;
- int tpY = 0;
- if(horse.Breed.Type == "unicorn" || horse.Breed.Type == "pegasus")
- {
- foreach (World.SpecialTile tile in World.SpecialTiles)
- {
- if (tile.Code == null)
- continue;
-
- if (tile.Code.StartsWith("HORSELEASER-"))
- {
- int id = int.Parse(tile.Code.Split("-")[1]);
- if (horse.Leaser == id)
- {
- string msg = Messages.FormatHorseReturnedToUniter(horse.Breed.Name);
- if (horse.Breed.Type == "pegasus")
- msg = Messages.HorseLeaserReturnedToUniterPegasus;
-
- byte[] youWereTeleportedToUniter = PacketBuilder.CreateChat(msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
- SendPacket(youWereTeleportedToUniter);
-
- tpX = tile.X;
- tpY = tile.Y;
-
- if(tile.ExitX != 0 && tile.ExitY != 0)
- {
- tpX = tile.ExitX;
- tpY = tile.ExitY;
- }
- else
- {
- tpY++;
- }
-
- }
- }
- }
-
- }
-
- byte[] horseReturned = PacketBuilder.CreateChat(Messages.FormatHorseReturnedToOwner(horse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
- SendPacket(horseReturned);
-
- if(tpX != 0 && tpY != 0)
- User.Teleport(tpX, tpY);
-
-
- if (User.CurrentlyRidingHorse != null)
- {
- if(User.CurrentlyRidingHorse.RandomId == horse.RandomId)
- {
- GameServer.StopRidingHorse(this);
- }
-
- }
-
- if(User.LastViewedHorse != null)
- {
- if(User.LastViewedHorse.RandomId == horse.RandomId)
- {
- User.LastViewedHorse = null;
- }
- }
-
-
- User.HorseInventory.DeleteHorse(horse);
- }
-
-
- }
-
- }
- if(gotoPrision)
- {
- byte[] sendToPrision = PacketBuilder.CreateChat(Messages.YouWereSentToPrisionIsle, PacketBuilder.CHAT_BOTTOM_RIGHT);
- SendPacket(sendToPrision);
- User.Teleport(45, 35);
- }
-
-
- if (totalMinutesElapsed % 5 == 0)
- User.Thirst--;
-
- if (totalMinutesElapsed % 15 == 0)
- User.Hunger--;
-
- if (totalMinutesElapsed % 15 == 0)
- User.Tiredness--;
- }
-
- minuteTimer.Change(oneMinute, oneMinute);
- }
-
- private void warnTimerTick(object state)
- {
- Logger.DebugPrint("Sending inactivity warning to: " + RemoteIp);
- byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatIdleWarningMessage(), PacketBuilder.CHAT_BOTTOM_RIGHT);
- SendPacket(chatPacket);
- if (LoggedIn)
- User.Idle = true;
- }
-
- private void kickTimerTick(object state)
- {
- Kick(Messages.FormatIdleKickMessage());
- }
-
- public void Login(int id)
- {
- /*
- * Check for duplicate user
- * and disconnect them.
- */
- foreach (GameClient Client in GameClient.ConnectedClients)
- {
- if (Client.LoggedIn)
- {
- if (Client.User.Id == id)
- Client.Kick(Messages.KickReasonDuplicateLogin);
- }
- }
-
- User = new User(this, id);
- LoggedIn = true;
-
- Database.SetIpAddress(id, RemoteIp);
- Database.SetLoginCount(id, Database.GetLoginCount(id) + 1);
-
- keepAliveTimer = new Timer(new TimerCallback(keepAliveTick), null, oneMinute, oneMinute);
- timeoutTimer = new Timer(new TimerCallback(timeoutTimerTick), null, timeoutInterval, timeoutInterval);
- }
-
- private void parsePackets(byte[] packet)
- {
- if (packet.Length < 1)
- {
- Logger.ErrorPrint("Received an invalid packet (size: "+packet.Length+")");
- return;
- }
- byte identifier = packet[0];
-
- /*
- * Every time ive tried to fix this properly by just checking if its null or something
- * it keeps happening, so now im just going to catch the exception
- * and hope it works.
- */
- try
- {
- if (LoggedIn)
- {
- if (timeoutTimer != null)
- timeoutTimer.Change(timeoutInterval, timeoutInterval); // Reset time before timing out
- else
- return;
-
- if (keepAliveTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
- {
- if (LoggedIn)
- User.Idle = false;
- keepAliveTimer.Change(oneMinute, oneMinute);
- }
- else
- {
- return;
- }
- }
-
- if (kickTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
- kickTimer.Change(kickInterval, kickInterval);
- else
- return;
-
- if (warnTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
- warnTimer.Change(warnInterval, warnInterval);
- else
- return;
-
- }
- catch (ObjectDisposedException)
- {
- return;
- }
-
-
- /*
- * Put packet handling in a try/catch
- * this prevents the entire server from crashing
- * if theres an error in handling a particular packet.
- */
- try
- {
- if (!LoggedIn) // Must be either login or policy-file-request
- {
- switch (identifier)
- {
- case PacketBuilder.PACKET_LOGIN:
- GameServer.OnUserLogin(this, packet);
- break;
- }
- }
- else
- {
- switch (identifier)
- {
- case PacketBuilder.PACKET_LOGIN:
- GameServer.OnUserInfoRequest(this, packet);
- break;
- case PacketBuilder.PACKET_MOVE:
- GameServer.OnMovementPacket(this, packet);
- break;
- case PacketBuilder.PACKET_PLAYERINFO:
- GameServer.OnPlayerInfoPacket(this, packet);
- break;
- case PacketBuilder.PACKET_PLAYER:
- GameServer.OnProfilePacket(this, packet);
- break;
- case PacketBuilder.PACKET_CHAT:
- GameServer.OnChatPacket(this, packet);
- break;
- case PacketBuilder.PACKET_CLICK:
- GameServer.OnClickPacket(this, packet);
- break;
- case PacketBuilder.PACKET_KEEP_ALIVE:
- GameServer.OnKeepAlive(this, packet);
- break;
- case PacketBuilder.PACKET_TRANSPORT:
- GameServer.OnTransportUsed(this, packet);
- break;
- case PacketBuilder.PACKET_INVENTORY:
- GameServer.OnInventoryRequested(this, packet);
- break;
- case PacketBuilder.PACKET_DYNAMIC_BUTTON:
- GameServer.OnDynamicButtonPressed(this, packet);
- break;
- case PacketBuilder.PACKET_DYNAMIC_INPUT:
- GameServer.OnDynamicInputReceived(this, packet);
- break;
- case PacketBuilder.PACKET_ITEM_INTERACTION:
- GameServer.OnItemInteraction(this, packet);
- break;
- case PacketBuilder.PACKET_ARENA_SCORE:
- GameServer.OnArenaScored(this, packet);
- break;
- case PacketBuilder.PACKET_QUIT:
- GameServer.OnQuitPacket(this, packet);
- break;
- case PacketBuilder.PACKET_NPC:
- GameServer.OnNpcInteraction(this, packet);
- break;
- case PacketBuilder.PACKET_BIRDMAP:
- GameServer.OnBirdMapRequested(this, packet);
- break;
- case PacketBuilder.PACKET_SWFMODULE:
- GameServer.OnSwfModuleCommunication(this, packet);
- break;
- case PacketBuilder.PACKET_HORSE:
- GameServer.OnHorseInteraction(this, packet);
- break;
- case PacketBuilder.PACKET_WISH:
- GameServer.OnWish(this, packet);
- break;
- case PacketBuilder.PACKET_RANCH:
- GameServer.OnRanchPacket(this, packet);
- break;
- case PacketBuilder.PACKET_AUCTION:
- GameServer.OnAuctionPacket(this, packet);
- break;
- case PacketBuilder.PACKET_PLAYER_INTERACTION:
- GameServer.OnPlayerInteration(this, packet);
- break;
- case PacketBuilder.PACKET_SOCIALS:
- GameServer.OnSocialPacket(this, packet);
- break;
- default:
- Logger.ErrorPrint("Unimplemented packet: " + BitConverter.ToString(packet).Replace('-', ' '));
- break;
- }
- }
- }
- catch(Exception e)
- {
-#if OS_DEBUG
- throw e;
-#else
- Logger.ErrorPrint("Unhandled Exception: " + e.Message + "\n" + e.StackTrace);
- Kick("Unhandled Exception: " + e.Message + "\n" + e.StackTrace);
-#endif
- }
- }
-
- public void Kick(string Reason)
- {
- byte[] kickPacket = PacketBuilder.CreateKickMessage(Reason);
- SendPacket(kickPacket);
- Disconnect();
-
- Logger.InfoPrint("CLIENT: "+RemoteIp+" KICKED for: "+Reason);
- }
-
- public void SendPacket(byte[] packetData)
- {
- if(!networkTransport.Disconnected)
- networkTransport.Send(packetData);
- }
-
- }
-
-
-}
+using System;
+using System.Net.Sockets;
+using System.Threading;
+using System.Collections.Generic;
+using HISP.Player;
+using HISP.Game;
+using HISP.Game.Horse;
+using HISP.Game.Events;
+using HISP.Game.Items;
+
+namespace HISP.Server
+{
+ public class GameClient
+ {
+ private static List connectedClients = new List();
+ public static GameClient[] ConnectedClients // Done to prevent Enumerator Changed errors.
+ {
+ get
+ {
+ return connectedClients.ToArray();
+ }
+ }
+
+ public Socket ClientSocket;
+ public string RemoteIp;
+ private bool loggedIn = false;
+ public bool LoggedIn
+ {
+ get
+ {
+ bool login = loggedIn;
+ if (LoggedinUser == null)
+ return false;
+ if (LoggedinUser.LoggedinClient == null)
+ return false;
+ return login;
+ }
+ set
+ {
+ loggedIn = value;
+ }
+ }
+ public User LoggedinUser;
+
+ private Timer keepAliveTimer;
+ private Timer timeoutTimer;
+
+ private Timer warnTimer;
+ private Timer kickTimer;
+ private Timer minuteTimer;
+
+ private bool isDisconnecting = false;
+
+ private int timeoutInterval = 95 * 1000;
+
+ private int totalMinutesElapsed = 0;
+ private int oneMinute = 60 * 1000;
+ private int warnInterval = GameServer.IdleWarning * 60 * 1000; // Time before showing a idle warning
+ private int kickInterval = GameServer.IdleTimeout * 60 * 1000; // Time before kicking for inactivity
+
+ private List currentPacket = new List();
+ private byte[] workBuffer = new byte[0x8000];
+
+ public GameClient(Socket clientSocket)
+ {
+ clientSocket.SendTimeout = 10 * 1000; // 10sec
+ clientSocket.ReceiveTimeout = 10 * 1000; // 10sec
+
+ ClientSocket = clientSocket;
+ RemoteIp = clientSocket.RemoteEndPoint.ToString();
+
+ if (RemoteIp.Contains(":"))
+ RemoteIp = RemoteIp.Substring(0, RemoteIp.IndexOf(":"));
+
+ Logger.DebugPrint("Client connected @ " + RemoteIp);
+
+ kickTimer = new Timer(new TimerCallback(kickTimerTick), null, kickInterval, kickInterval);
+ warnTimer = new Timer(new TimerCallback(warnTimerTick), null, warnInterval, warnInterval);
+ minuteTimer = new Timer(new TimerCallback(minuteTimerTick), null, oneMinute, oneMinute);
+
+ connectedClients.Add(this);
+
+ SocketAsyncEventArgs evt = new SocketAsyncEventArgs();
+ evt.Completed += receivePackets;
+ evt.SetBuffer(workBuffer, 0, workBuffer.Length);
+ if (!clientSocket.ReceiveAsync(evt))
+ receivePackets(null, evt);
+ }
+
+ public static void OnShutdown()
+ {
+ try
+ {
+ foreach (GameClient client in ConnectedClients)
+ {
+
+ if (client.LoggedIn)
+ {
+ for (int i = 0; i < 2; i++)
+ {
+ ItemInstance rubyItem = new ItemInstance(Item.Ruby);
+ client.LoggedinUser.Inventory.AddIgnoringFull(rubyItem);
+ }
+
+ client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++;
+ }
+
+ client.Kick("Server shutdown.");
+
+ }
+ }
+ catch (Exception) { };
+ }
+ public static void CreateClient(object sender, SocketAsyncEventArgs e)
+ {
+ do
+ {
+ Socket eSocket = e.AcceptSocket;
+ if(eSocket != null)
+ new GameClient(eSocket);
+ e.AcceptSocket = null;
+ } while (!GameServer.ServerSocket.AcceptAsync(e));
+ }
+ private void timeoutTimerTick(object state)
+ {
+ if (this.LoggedIn)
+ {
+ Disconnect();
+ }
+ }
+
+ public void Disconnect()
+ {
+ if (this.isDisconnecting)
+ return;
+ this.isDisconnecting = true;
+
+ // Close Socket
+ if (ClientSocket != null)
+ {
+ ClientSocket.Disconnect(false);
+ ClientSocket.Dispose();
+ ClientSocket = null;
+ }
+
+
+ // Stop Timers
+ if (timeoutTimer != null)
+ {
+ timeoutTimer.Dispose();
+ timeoutTimer = null;
+ }
+ if (keepAliveTimer != null)
+ {
+ keepAliveTimer.Dispose();
+ keepAliveTimer = null;
+ }
+ if (warnTimer != null)
+ {
+ warnTimer.Dispose();
+ warnTimer = null;
+ }
+ if (kickTimer != null)
+ {
+ kickTimer.Dispose();
+ kickTimer = null;
+ }
+
+ // Call OnDisconnect
+
+ connectedClients.Remove(this);
+ GameServer.OnDisconnect(this);
+ LoggedIn = false;
+
+ }
+
+
+ private void receivePackets(object sender, SocketAsyncEventArgs e)
+ {
+ do
+ {
+ // HI1 Packets are terminates by 0x00 so we have to read until we receive that terminator
+
+ if (isDisconnecting ||
+ ClientSocket == null ||
+ e.BytesTransferred <= 0 ||
+ !ClientSocket.Connected ||
+ e.SocketError != SocketError.Success)
+ {
+ Disconnect();
+ return;
+ }
+
+ int availble = e.BytesTransferred;
+ if (availble >= 1) // More than 1 byte transfered..
+ {
+
+ for (int i = 0; i < availble; i++)
+ {
+ currentPacket.Add(e.Buffer[i]);
+ if (e.Buffer[i] == PacketBuilder.PACKET_TERMINATOR) // Read until \0...
+ {
+ parsePackets(currentPacket.ToArray());
+ currentPacket.Clear();
+ }
+ }
+ }
+
+ if (availble == 0)
+ Disconnect();
+
+ if (isDisconnecting || ClientSocket == null)
+ return;
+
+
+ } while (!ClientSocket.ReceiveAsync(e));
+
+ }
+
+ private void keepAliveTick(object state)
+ {
+ Logger.DebugPrint("Sending keep-alive packet to " + LoggedinUser.Username);
+ byte[] updatePacket = PacketBuilder.CreateKeepAlive();
+ SendPacket(updatePacket);
+ if(!isDisconnecting && keepAliveTimer != null) // wtf how is this still a problem?
+ keepAliveTimer.Change(oneMinute, oneMinute);
+ }
+ private void minuteTimerTick(object state)
+ {
+ totalMinutesElapsed++;
+ if (LoggedIn)
+ {
+
+ GameServer.UpdatePlayer(this);
+
+ LoggedinUser.CanUseAdsChat = true;
+ LoggedinUser.FreeMinutes -= 1;
+
+ GameServer.DoItemPurchases(this);
+
+ if (totalMinutesElapsed % 2 == 0)
+ {
+ LoggedinUser.TotalGlobalChatMessages++;
+ }
+
+ if (LoggedinUser.FreeMinutes <= 0)
+ {
+ LoggedinUser.FreeMinutes = 0;
+ if (!LoggedinUser.Subscribed && !LoggedinUser.Moderator && !LoggedinUser.Administrator)
+ {
+ Kick(Messages.KickReasonNoTime);
+ return;
+ }
+
+ }
+
+ // Those fun messages when u have been playing for awhile.
+ if (totalMinutesElapsed % (2 * 60) == 0)
+ {
+ string ptMessage = Messages.RngMessages[GameServer.RandomNumberGenerator.Next(0, Messages.RngMessages.Length)];
+ byte[] playTimeMessage = PacketBuilder.CreateChat(Messages.FormatPlaytimeMessage(totalMinutesElapsed / 60) + ptMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ SendPacket(playTimeMessage);
+ }
+
+
+ if (GameServer.RandomNumberGenerator.Next(0, 100) == 59) // RANDOM EVENT HAS OCCURED!
+ {
+ RandomEvent.ExecuteRandomEvent(LoggedinUser);
+ }
+
+ bool gotoPrision = false;
+ foreach(HorseInstance horse in LoggedinUser.HorseInventory.HorseList)
+ {
+ if (totalMinutesElapsed % 2 == 0)
+ {
+ horse.BasicStats.Thirst--;
+ horse.BasicStats.Hunger--;
+
+ if (horse.BasicStats.Thirst <= 0 && horse.BasicStats.Hunger <= 0)
+ {
+ horse.BasicStats.Health -= 5;
+ if(horse.BasicStats.Hunger <= 0)
+ {
+ gotoPrision = true; // Goto jail, go directly to jail, do not pass go, do not collect 200$
+
+ horse.BasicStats.Health = 10;
+ horse.BasicStats.Hunger = 500;
+ horse.BasicStats.Thirst = 500;
+ }
+ }
+ }
+
+
+ if(horse.Leaser > 0)
+ {
+ horse.LeaseTime--;
+
+ if (horse.LeaseTime <= 0)
+ {
+ int tpX = 0;
+ int tpY = 0;
+ if(horse.Breed.Type == "unicorn" || horse.Breed.Type == "pegasus")
+ {
+ foreach (World.SpecialTile tile in World.SpecialTiles)
+ {
+ if (tile.Code == null)
+ continue;
+
+ if (tile.Code.StartsWith("HORSELEASER-"))
+ {
+ int id = int.Parse(tile.Code.Split("-")[1]);
+ if (horse.Leaser == id)
+ {
+ string msg = Messages.FormatHorseReturnedToUniter(horse.Breed.Name);
+ if (horse.Breed.Type == "pegasus")
+ msg = Messages.HorseLeaserReturnedToUniterPegasus;
+
+ byte[] youWereTeleportedToUniter = PacketBuilder.CreateChat(msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ SendPacket(youWereTeleportedToUniter);
+
+ tpX = tile.X;
+ tpY = tile.Y;
+
+ if(tile.ExitX != 0 && tile.ExitY != 0)
+ {
+ tpX = tile.ExitX;
+ tpY = tile.ExitY;
+ }
+ else
+ {
+ tpY++;
+ }
+
+ }
+ }
+ }
+
+ }
+
+ byte[] horseReturned = PacketBuilder.CreateChat(Messages.FormatHorseReturnedToOwner(horse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ SendPacket(horseReturned);
+
+ if(tpX != 0 && tpY != 0)
+ LoggedinUser.Teleport(tpX, tpY);
+
+
+ if (LoggedinUser.CurrentlyRidingHorse != null)
+ {
+ if(LoggedinUser.CurrentlyRidingHorse.RandomId == horse.RandomId)
+ {
+ GameServer.StopRidingHorse(this);
+ }
+
+ }
+
+ if(LoggedinUser.LastViewedHorse != null)
+ {
+ if(LoggedinUser.LastViewedHorse.RandomId == horse.RandomId)
+ {
+ LoggedinUser.LastViewedHorse = null;
+ }
+ }
+
+
+ LoggedinUser.HorseInventory.DeleteHorse(horse);
+ }
+
+
+ }
+
+ }
+ if(gotoPrision)
+ {
+ byte[] sendToPrision = PacketBuilder.CreateChat(Messages.YouWereSentToPrisionIsle, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ SendPacket(sendToPrision);
+ LoggedinUser.Teleport(45, 35);
+ }
+
+
+ if (totalMinutesElapsed % 5 == 0)
+ LoggedinUser.Thirst--;
+
+ if (totalMinutesElapsed % 15 == 0)
+ LoggedinUser.Hunger--;
+
+ if (totalMinutesElapsed % 15 == 0)
+ LoggedinUser.Tiredness--;
+ }
+
+
+
+
+ if (!isDisconnecting)
+ minuteTimer.Change(oneMinute, oneMinute);
+
+ }
+
+ private void warnTimerTick(object state)
+ {
+ Logger.DebugPrint("Sending inactivity warning to: " + RemoteIp);
+ byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatIdleWarningMessage(), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ SendPacket(chatPacket);
+ if (LoggedIn)
+ LoggedinUser.Idle = true;
+ }
+
+ private void kickTimerTick(object state)
+ {
+ Kick(Messages.FormatIdleKickMessage());
+ }
+
+ public void Login(int id)
+ {
+ /*
+ * Check for duplicate user
+ * and disconnect them.
+ */
+ foreach (GameClient Client in GameClient.ConnectedClients)
+ {
+ if (Client.LoggedIn)
+ {
+ if (Client.LoggedinUser.Id == id)
+ Client.Kick(Messages.KickReasonDuplicateLogin);
+ }
+ }
+
+ LoggedinUser = new User(this, id);
+ LoggedIn = true;
+
+ Database.SetIpAddress(id, RemoteIp);
+ Database.SetLoginCount(id, Database.GetLoginCount(id) + 1);
+
+ keepAliveTimer = new Timer(new TimerCallback(keepAliveTick), null, oneMinute, oneMinute);
+ timeoutTimer = new Timer(new TimerCallback(timeoutTimerTick), null, timeoutInterval, timeoutInterval);
+ }
+
+ private void parsePackets(byte[] Packet)
+ {
+ if (Packet.Length < 1)
+ {
+ Logger.ErrorPrint("Received an invalid packet (size: "+Packet.Length+")");
+ }
+ byte identifier = Packet[0];
+
+ /*
+ * Every time ive tried to fix this properly by just checking if its null or something
+ * it keeps happening, so now im just going to catch the exception
+ * and hope it works.
+ */
+ try
+ {
+ if (LoggedIn)
+ {
+ if (timeoutTimer != null)
+ timeoutTimer.Change(timeoutInterval, timeoutInterval); // Reset time before timing out
+ else
+ return;
+
+ if (keepAliveTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
+ {
+ if (LoggedIn)
+ LoggedinUser.Idle = false;
+ keepAliveTimer.Change(oneMinute, oneMinute);
+ }
+ else
+ {
+ return;
+ }
+ }
+
+ if (kickTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
+ kickTimer.Change(kickInterval, kickInterval);
+ else
+ return;
+
+ if (warnTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
+ warnTimer.Change(warnInterval, warnInterval);
+ else
+ return;
+ }
+ catch (ObjectDisposedException)
+ {
+ return;
+ }
+
+
+ /*
+ * Put packet handling in a try/catch
+ * this prevents the entire server from crashing
+ * if theres an error in handling a particular packet.
+ */
+ try
+ {
+ if (!LoggedIn) // Must be either login or policy-file-request
+ {
+ switch (identifier)
+ {
+ case PacketBuilder.PACKET_FLASH_XML_CROSSDOMAIN:
+ GameServer.OnCrossdomainPolicyRequest(this, Packet);
+ break;
+ case PacketBuilder.PACKET_LOGIN:
+ GameServer.OnLoginRequest(this, Packet);
+ break;
+ }
+ }
+ else
+ {
+ switch (identifier)
+ {
+ case PacketBuilder.PACKET_LOGIN:
+ GameServer.OnUserInfoRequest(this, Packet);
+ break;
+ case PacketBuilder.PACKET_MOVE:
+ GameServer.OnMovementPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_PLAYERINFO:
+ GameServer.OnPlayerInfoPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_PLAYER:
+ GameServer.OnProfilePacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_CHAT:
+ GameServer.OnChatPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_CLICK:
+ GameServer.OnClickPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_KEEP_ALIVE:
+ GameServer.OnKeepAlive(this, Packet);
+ break;
+ case PacketBuilder.PACKET_TRANSPORT:
+ GameServer.OnTransportUsed(this, Packet);
+ break;
+ case PacketBuilder.PACKET_INVENTORY:
+ GameServer.OnInventoryRequested(this, Packet);
+ break;
+ case PacketBuilder.PACKET_DYNAMIC_BUTTON:
+ GameServer.OnDynamicButtonPressed(this, Packet);
+ break;
+ case PacketBuilder.PACKET_DYNAMIC_INPUT:
+ GameServer.OnDynamicInputReceived(this, Packet);
+ break;
+ case PacketBuilder.PACKET_ITEM_INTERACTION:
+ GameServer.OnItemInteraction(this, Packet);
+ break;
+ case PacketBuilder.PACKET_ARENA_SCORE:
+ GameServer.OnArenaScored(this, Packet);
+ break;
+ case PacketBuilder.PACKET_QUIT:
+ GameServer.OnQuitPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_NPC:
+ GameServer.OnNpcInteraction(this, Packet);
+ break;
+ case PacketBuilder.PACKET_BIRDMAP:
+ GameServer.OnBirdMapRequested(this, Packet);
+ break;
+ case PacketBuilder.PACKET_SWFMODULE:
+ GameServer.OnSwfModuleCommunication(this, Packet);
+ break;
+ case PacketBuilder.PACKET_HORSE:
+ GameServer.OnHorseInteraction(this, Packet);
+ break;
+ case PacketBuilder.PACKET_WISH:
+ GameServer.OnWish(this, Packet);
+ break;
+ case PacketBuilder.PACKET_RANCH:
+ GameServer.OnRanchPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_AUCTION:
+ GameServer.OnAuctionPacket(this, Packet);
+ break;
+ case PacketBuilder.PACKET_PLAYER_INTERACTION:
+ GameServer.OnPlayerInteration(this, Packet);
+ break;
+ case PacketBuilder.PACKET_SOCIALS:
+ GameServer.OnSocialPacket(this, Packet);
+ break;
+ default:
+ Logger.ErrorPrint("Unimplemented Packet: " + BitConverter.ToString(Packet).Replace('-', ' '));
+ break;
+ }
+ }
+
+ }
+ catch(Exception e)
+ {
+ Logger.ErrorPrint("Unhandled Exception: " + e.ToString() + "\n" + e.Message + "\n" + e.StackTrace);
+
+ Kick("Unhandled Exception: " + e.ToString());
+ }
+ }
+
+ public void Kick(string Reason)
+ {
+ byte[] kickPacket = PacketBuilder.CreateKickMessage(Reason);
+ SendPacket(kickPacket);
+ Disconnect();
+
+ Logger.InfoPrint("CLIENT: "+RemoteIp+" KICKED for: "+Reason);
+ }
+
+ public void SendPacket(byte[] PacketData)
+ {
+ try
+ {
+ ClientSocket.Send(PacketData);
+ }
+ catch (Exception)
+ {
+ Disconnect();
+ }
+ }
+
+ }
+
+
+}
diff --git a/HorseIsleServer/LibHISP/Server/GameDataJson.cs b/HorseIsleServer/LibHISP/Server/GameDataJson.cs
old mode 100755
new mode 100644
index c03f576..71c810f
--- a/HorseIsleServer/LibHISP/Server/GameDataJson.cs
+++ b/HorseIsleServer/LibHISP/Server/GameDataJson.cs
@@ -1,2325 +1,2165 @@
-using System.Collections.Generic;
-using System.IO;
-using System.Globalization;
-using System;
+using System.Collections.Generic;
+using System.IO;
+using Newtonsoft.Json;
+using HISP.Game;
+using HISP.Game.Chat;
+using HISP.Player;
+using HISP.Game.Services;
+using HISP.Game.SwfModules;
+using HISP.Game.Horse;
+using HISP.Game.Items;
+using System.Globalization;
+using HISP.Security;
+using System;
+using HISP.Game.Events;
using System.Dynamic;
-
-using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
-
-using HISP.Game;
-using HISP.Game.Chat;
-using HISP.Player;
-using HISP.Game.Services;
-using HISP.Game.SwfModules;
-using HISP.Game.Horse;
-using HISP.Game.Items;
-using HISP.Security;
-using HISP.Game.Events;
-
-namespace HISP.Server
-{
- public class GameDataJson
- {
- private static dynamic gameData;
-
- private static void readGamedataFiles()
- {
- Logger.DebugPrint("Reading GAMEDATA");
+namespace HISP.Server
+{
+ public class GameDataJson
+ {
+ public static void ReadGamedata()
+ {
+ dynamic gameData;
if (Directory.Exists(ConfigReader.GameData))
{
- Logger.DebugPrint("Found GAMEDATA DIR ... ");
gameData = new JObject();
string[] files = Directory.GetFiles(ConfigReader.GameData);
- foreach (string file in files)
+ foreach(string file in files)
{
- Logger.DebugPrint("Reading: " + file);
string jsonData = File.ReadAllText(file);
JObject thisData = (JObject)JsonConvert.DeserializeObject(jsonData);
JObject jData = (JObject)gameData;
jData.Merge(thisData);
}
- }
- else if (File.Exists(ConfigReader.GameData))
- {
-
- Logger.DebugPrint("Found GAMEDATA FILE ... ");
+ }
+ else if (File.Exists(ConfigReader.GameData))
+ {
string jsonData = File.ReadAllText(ConfigReader.GameData);
- gameData = JsonConvert.DeserializeObject(jsonData);
- }
+ gameData = JsonConvert.DeserializeObject(jsonData);
+ }
else
{
- Logger.ErrorPrint("Could not find GAMEDATA, configured as; " + ConfigReader.GameData + " But no file or directory exists!");
- GameServer.ShutdownServer("Unable to find GAMEDATA");
+ Logger.ErrorPrint("Game Data : " + ConfigReader.GameData + " Does not exist!");
+ GameServer.ShutdownServer();
return;
- }
- }
-
- private static void registerTowns()
- {
- int totalTowns = gameData.places.towns.Count;
- for (int i = 0; i < totalTowns; i++)
- {
-
- World.Town town = new World.Town();
- town.StartX = gameData.places.towns[i].start_x;
- town.StartY = gameData.places.towns[i].start_y;
- town.EndX = gameData.places.towns[i].end_x;
- town.EndY = gameData.places.towns[i].end_y;
- town.Name = gameData.places.towns[i].name;
-
- Logger.DebugPrint("Registered Town: " + town.Name + " X " + town.StartX + "-" + town.EndX + " Y " + town.StartY + "-" + town.EndY);
- World.Towns.Add(town);
- }
- }
-
- private static void registerZones()
- {
- int totalZones = gameData.places.zones.Count;
- for (int i = 0; i < totalZones; i++)
- {
-
- World.Zone zone = new World.Zone();
- zone.StartX = gameData.places.zones[i].start_x;
- zone.StartY = gameData.places.zones[i].start_y;
- zone.EndX = gameData.places.zones[i].end_x;
- zone.EndY = gameData.places.zones[i].end_y;
- zone.Name = gameData.places.zones[i].name;
-
- Logger.DebugPrint("Registered Zone: " + zone.Name + " X " + zone.StartX + "-" + zone.EndX + " Y " + zone.StartY + "-" + zone.EndY);
- World.Zones.Add(zone);
- }
-
- }
- private static void registerAreas()
- {
- int totalAreas = gameData.places.areas.Count;
- for (int i = 0; i < totalAreas; i++)
- {
-
- World.Area area = new World.Area();
- area.StartX = gameData.places.areas[i].start_x;
- area.StartY = gameData.places.areas[i].start_y;
- area.EndX = gameData.places.areas[i].end_x;
- area.EndY = gameData.places.areas[i].end_y;
- area.Name = gameData.places.areas[i].name;
-
- Logger.DebugPrint("Registered Area: " + area.Name + " X " + area.StartX + "-" + area.EndX + " Y " + area.StartY + "-" + area.EndY);
- World.Areas.Add(area);
- }
- }
- private static void registerIsles()
- {
-
- int totalIsles = gameData.places.isles.Count;
- for (int i = 0; i < totalIsles; i++)
- {
-
- World.Isle isle = new World.Isle();
- isle.StartX = gameData.places.isles[i].start_x;
- isle.StartY = gameData.places.isles[i].start_y;
- isle.EndX = gameData.places.isles[i].end_x;
- isle.EndY = gameData.places.isles[i].end_y;
- isle.Tileset = gameData.places.isles[i].tileset;
- isle.Name = gameData.places.isles[i].name;
-
- Logger.DebugPrint("Registered Isle: " + isle.Name + " X " + isle.StartX + "-" + isle.EndX + " Y " + isle.StartY + "-" + isle.EndY + " tileset: " + isle.Tileset);
- World.Isles.Add(isle);
- }
- }
-
- private static void registerWaypoints()
- {
- int totalWaypoints = gameData.places.waypoints.Count;
- for (int i = 0; i < totalWaypoints; i++)
- {
- World.Waypoint waypoint = new World.Waypoint();
- waypoint.Name = gameData.places.waypoints[i].name;
- waypoint.PosX = gameData.places.waypoints[i].pos_x;
- waypoint.PosY = gameData.places.waypoints[i].pos_y;
- waypoint.Type = gameData.places.waypoints[i].type;
- waypoint.Description = gameData.places.waypoints[i].description;
- waypoint.WeatherTypesAvalible = gameData.places.waypoints[i].weather_avalible.ToObject();
- Logger.DebugPrint("Registered Waypoint: " + waypoint.PosX.ToString() + ", " + waypoint.PosY.ToString() + " TYPE: " + waypoint.Type);
- World.Waypoints.Add(waypoint);
- }
- }
- private static void registerSpecialTiles()
- {
- int totalSpecialTiles = gameData.places.special_tiles.Count;
- for (int i = 0; i < totalSpecialTiles; i++)
- {
-
- World.SpecialTile specialTile = new World.SpecialTile();
- specialTile.X = gameData.places.special_tiles[i].x;
- specialTile.Y = gameData.places.special_tiles[i].y;
- specialTile.Title = gameData.places.special_tiles[i].title;
- specialTile.Description = gameData.places.special_tiles[i].description;
- specialTile.Code = gameData.places.special_tiles[i].code;
- if (gameData.places.special_tiles[i].exit_x != null)
- specialTile.ExitX = gameData.places.special_tiles[i].exit_x;
- if (gameData.places.special_tiles[i].exit_x != null)
- specialTile.ExitY = gameData.places.special_tiles[i].exit_y;
- specialTile.AutoplaySwf = gameData.places.special_tiles[i].autoplay_swf;
- specialTile.TypeFlag = gameData.places.special_tiles[i].type_flag;
-
- Logger.DebugPrint("Registered Special Tile: " + specialTile.Title + " X " + specialTile.X + " Y: " + specialTile.Y);
- World.SpecialTiles.Add(specialTile);
- }
- }
- private static void registerChatWarningReasons()
- {
- int totalReasons = gameData.messages.chat.reason_messages.Count;
- for (int i = 0; i < totalReasons; i++)
- {
- ChatMsg.Reason reason = new ChatMsg.Reason();
- reason.Name = gameData.messages.chat.reason_messages[i].name;
- reason.Message = gameData.messages.chat.reason_messages[i].message;
- ChatMsg.AddReason(reason);
-
- Logger.DebugPrint("Registered Chat Warning Reason: " + reason.Name + " (Message: " + reason.Message + ")");
- }
-
- }
- private static void registerFilteredWords()
- {
- int totalFilters = gameData.messages.chat.filter.Count;
- for (int i = 0; i < totalFilters; i++)
- {
- ChatMsg.Filter filter = new ChatMsg.Filter();
- filter.FilteredWord = gameData.messages.chat.filter[i].word;
- filter.MatchAll = gameData.messages.chat.filter[i].match_all;
- filter.Reason = ChatMsg.GetReason((string)gameData.messages.chat.filter[i].reason_type);
- ChatMsg.AddFilter(filter);
-
- Logger.DebugPrint("Registered Filtered Word: " + filter.FilteredWord + " With reason: " + filter.Reason.Name + " (Matching all: " + filter.MatchAll + ")");
- }
- }
- private static void registerWordCorrections()
- {
- int totalCorrections = gameData.messages.chat.correct.Count;
- for (int i = 0; i < totalCorrections; i++)
- {
- ChatMsg.Correction correction = new ChatMsg.Correction();
- correction.FilteredWord = gameData.messages.chat.correct[i].word;
- correction.ReplacedWord = gameData.messages.chat.correct[i].new_word;
- ChatMsg.AddCorrection(correction);
-
- Logger.DebugPrint("Registered Word Correction: " + correction.FilteredWord + " to " + correction.ReplacedWord);
- }
- }
- private static void registerTransportPoints()
- {
- int totalTransportPoints = gameData.transport.transport_points.Count;
- for (int i = 0; i < totalTransportPoints; i++)
- {
- Transport.TransportPoint transportPoint = new Transport.TransportPoint();
- transportPoint.X = gameData.transport.transport_points[i].x;
- transportPoint.Y = gameData.transport.transport_points[i].y;
- transportPoint.Locations = gameData.transport.transport_points[i].places.ToObject();
- Transport.TransportPoints.Add(transportPoint);
-
- Logger.DebugPrint("Registered Transport Point: At X: " + transportPoint.X + " Y: " + transportPoint.Y);
- }
- }
-
- private static void registerTransportLocations()
- {
- int totalTransportPlaces = gameData.transport.transport_places.Count;
- for (int i = 0; i < totalTransportPlaces; i++)
- {
- Transport.TransportLocation transportPlace = new Transport.TransportLocation();
- transportPlace.Id = gameData.transport.transport_places[i].id;
- transportPlace.Cost = gameData.transport.transport_places[i].cost;
- transportPlace.GotoX = gameData.transport.transport_places[i].goto_x;
- transportPlace.GotoY = gameData.transport.transport_places[i].goto_y;
- transportPlace.Type = gameData.transport.transport_places[i].type;
- transportPlace.LocationTitle = gameData.transport.transport_places[i].place_title;
- Transport.TransportLocations.Add(transportPlace);
-
- Logger.DebugPrint("Registered Transport Location: " + transportPlace.LocationTitle + " To Goto X: " + transportPlace.GotoX + " Y: " + transportPlace.GotoY);
- }
- }
- private static void registerItems()
- {
- int totalItems = gameData.item.item_list.Count;
- for (int i = 0; i < totalItems; i++)
- {
- Item.ItemInformation item = new Item.ItemInformation();
- item.Id = gameData.item.item_list[i].id;
- item.Name = gameData.item.item_list[i].name;
- item.PluralName = gameData.item.item_list[i].plural_name;
- item.Description = gameData.item.item_list[i].description;
- item.IconId = gameData.item.item_list[i].icon_id;
- item.SortBy = gameData.item.item_list[i].sort_by;
- item.SellPrice = gameData.item.item_list[i].sell_price;
- item.EmbedSwf = gameData.item.item_list[i].embed_swf;
- item.WishingWell = gameData.item.item_list[i].wishing_well;
- item.Type = gameData.item.item_list[i].type;
- item.MiscFlags = gameData.item.item_list[i].misc_flags.ToObject();
- int effectsCount = gameData.item.item_list[i].effects.Count;
-
- Item.Effects[] effectsList = new Item.Effects[effectsCount];
- for (int ii = 0; ii < effectsCount; ii++)
- {
- effectsList[ii] = new Item.Effects();
- effectsList[ii].EffectsWhat = gameData.item.item_list[i].effects[ii].effect_what;
- effectsList[ii].EffectAmount = gameData.item.item_list[i].effects[ii].effect_amount;
- }
-
- item.Effects = effectsList;
- item.SpawnParamaters = new Item.SpawnRules();
- item.SpawnParamaters.SpawnCap = gameData.item.item_list[i].spawn_parameters.spawn_cap;
- item.SpawnParamaters.SpawnInZone = gameData.item.item_list[i].spawn_parameters.spawn_in_area;
- item.SpawnParamaters.SpawnOnTileType = gameData.item.item_list[i].spawn_parameters.spawn_on_tile_type;
- item.SpawnParamaters.SpawnOnSpecialTile = gameData.item.item_list[i].spawn_parameters.spawn_on_special_tile;
- item.SpawnParamaters.SpawnNearSpecialTile = gameData.item.item_list[i].spawn_parameters.spawn_near_special_tile;
-
- Logger.DebugPrint("Registered Item ID: " + item.Id + " Name: " + item.Name + " spawns on: " + item.SpawnParamaters.SpawnOnTileType);
- Item.AddItemInfo(item);
- }
- }
- private static void registerThrowables()
- {
- int totalThrowable = gameData.item.throwable.Count;
- for (int i = 0; i < totalThrowable; i++)
- {
- Item.ThrowableItem throwableItem = new Item.ThrowableItem();
- throwableItem.Id = gameData.item.throwable[i].id;
- throwableItem.HitMessage = gameData.item.throwable[i].message_hit;
- throwableItem.ThrowMessage = gameData.item.throwable[i].message_throw;
- throwableItem.HitYourselfMessage = gameData.item.throwable[i].message_hit_yourself;
- Item.AddThrowableItem(throwableItem);
- }
- }
-
- private static void registerNpcs()
- {
- Logger.DebugPrint("Registering NPCS: ");
- int totalNpcs = gameData.npc_list.Count;
- for (int i = 0; i < totalNpcs; i++)
- {
- int id = gameData.npc_list[i].id;
- int x = gameData.npc_list[i].x;
- int y = gameData.npc_list[i].y;
- bool moves = gameData.npc_list[i].moves;
-
- int udlrStartX = 0;
- int udlrStartY = 0;
-
- if (gameData.npc_list[i].udlr_start_x != null)
- udlrStartX = gameData.npc_list[i].udlr_start_x;
- if (gameData.npc_list[i].udlr_start_y != null)
- udlrStartY = gameData.npc_list[i].udlr_start_y;
-
- Npc.NpcEntry npcEntry = new Npc.NpcEntry(id, x, y, moves, udlrStartX, udlrStartY);
-
- npcEntry.Name = gameData.npc_list[i].name;
- npcEntry.AdminDescription = gameData.npc_list[i].admin_description;
- npcEntry.ShortDescription = gameData.npc_list[i].short_description;
- npcEntry.LongDescription = gameData.npc_list[i].long_description;
-
-
- if (gameData.npc_list[i].stay_on != null)
- npcEntry.StayOn = gameData.npc_list[i].stay_on;
- if (gameData.npc_list[i].requires_questid_completed != null)
- npcEntry.RequiresQuestIdCompleted = gameData.npc_list[i].requires_questid_completed;
- if (gameData.npc_list[i].requires_questid_not_completed != null)
- npcEntry.RequiresQuestIdNotCompleted = gameData.npc_list[i].requires_questid_not_completed;
- if (gameData.npc_list[i].udlr_script != null)
- npcEntry.UDLRScript = gameData.npc_list[i].udlr_script;
-
- npcEntry.AdminOnly = gameData.npc_list[i].admin_only;
- npcEntry.LibarySearchable = gameData.npc_list[i].libary_searchable;
- npcEntry.IconId = gameData.npc_list[i].icon_id;
-
- Logger.DebugPrint("NPC ID:" + npcEntry.Id.ToString() + " NAME: " + npcEntry.Name);
- List chats = new List();
- int totalNpcChat = gameData.npc_list[i].chatpoints.Count;
- for (int ii = 0; ii < totalNpcChat; ii++)
- {
- Npc.NpcChat npcChat = new Npc.NpcChat();
- npcChat.Id = gameData.npc_list[i].chatpoints[ii].chatpoint_id;
- npcChat.ChatText = gameData.npc_list[i].chatpoints[ii].chat_text;
- npcChat.ActivateQuestId = gameData.npc_list[i].chatpoints[ii].activate_questid;
-
- Logger.DebugPrint("CHATPOINT ID: " + npcChat.Id.ToString() + " TEXT: " + npcChat.ChatText);
- int totalNpcReply = gameData.npc_list[i].chatpoints[ii].replies.Count;
- List replys = new List();
- for (int iii = 0; iii < totalNpcReply; iii++)
- {
- Npc.NpcReply npcReply = new Npc.NpcReply();
- npcReply.Id = gameData.npc_list[i].chatpoints[ii].replies[iii].reply_id;
- npcReply.ReplyText = gameData.npc_list[i].chatpoints[ii].replies[iii].reply_text;
- npcReply.GotoChatpoint = gameData.npc_list[i].chatpoints[ii].replies[iii].goto_chatpoint;
-
- if (gameData.npc_list[i].chatpoints[ii].replies[iii].requires_questid_completed != null)
- npcReply.RequiresQuestIdCompleted = gameData.npc_list[i].chatpoints[ii].replies[iii].requires_questid_completed;
-
- if (gameData.npc_list[i].chatpoints[ii].replies[iii].requires_questid_not_completed != null)
- npcReply.RequiresQuestIdNotCompleted = gameData.npc_list[i].chatpoints[ii].replies[iii].requires_questid_not_completed;
-
- Logger.DebugPrint("REPLY ID: " + npcReply.Id.ToString() + " TEXT: " + npcReply.ReplyText);
- replys.Add(npcReply);
-
- }
- npcChat.Replies = replys.ToArray();
- chats.Add(npcChat);
- }
- npcEntry.Chatpoints = chats.ToArray();
- Npc.AddNpc(npcEntry);
- }
- }
-
- private static void registerQuests()
- {
- Logger.DebugPrint("Registering Quests: ");
- int totalQuests = gameData.quest_list.Count;
- for (int i = 0; i < totalQuests; i++)
- {
- Quest.QuestEntry quest = new Quest.QuestEntry();
- quest.Id = gameData.quest_list[i].id;
- quest.Notes = gameData.quest_list[i].notes;
- if (gameData.quest_list[i].title != null)
- quest.Title = gameData.quest_list[i].title;
- quest.RequiresQuestIdCompleteStatsMenu = gameData.quest_list[i].requires_questid_statsmenu.ToObject();
- if (gameData.quest_list[i].alt_activation != null)
- {
- quest.AltActivation = new Quest.QuestAltActivation();
- quest.AltActivation.Type = gameData.quest_list[i].alt_activation.type;
- quest.AltActivation.ActivateX = gameData.quest_list[i].alt_activation.x;
- quest.AltActivation.ActivateY = gameData.quest_list[i].alt_activation.y;
- }
- quest.Tracked = gameData.quest_list[i].tracked;
- quest.MaxRepeats = gameData.quest_list[i].max_repeats;
- quest.MoneyCost = gameData.quest_list[i].money_cost;
- int itemsRequiredCount = gameData.quest_list[i].items_required.Count;
-
- List itmInfo = new List();
- for (int ii = 0; ii < itemsRequiredCount; ii++)
- {
- Quest.QuestItemInfo itemInfo = new Quest.QuestItemInfo();
- itemInfo.ItemId = gameData.quest_list[i].items_required[ii].item_id;
- itemInfo.Quantity = gameData.quest_list[i].items_required[ii].quantity;
- itmInfo.Add(itemInfo);
- }
- quest.ItemsRequired = itmInfo.ToArray();
- if (gameData.quest_list[i].fail_npc_chat != null)
- quest.FailNpcChat = gameData.quest_list[i].fail_npc_chat;
- quest.MoneyEarned = gameData.quest_list[i].money_gained;
-
- int itemsGainedCount = gameData.quest_list[i].items_gained.Count;
- itmInfo = new List();
- for (int ii = 0; ii < itemsGainedCount; ii++)
- {
- Quest.QuestItemInfo itemInfo = new Quest.QuestItemInfo();
- itemInfo.ItemId = gameData.quest_list[i].items_gained[ii].item_id;
- itemInfo.Quantity = gameData.quest_list[i].items_gained[ii].quantity;
- itmInfo.Add(itemInfo);
- }
- quest.ItemsEarned = itmInfo.ToArray();
-
- quest.QuestPointsEarned = gameData.quest_list[i].quest_points;
- quest.SetNpcChatpoint = gameData.quest_list[i].set_npc_chatpoint;
- quest.GotoNpcChatpoint = gameData.quest_list[i].goto_npc_chatpoint;
- if (gameData.quest_list[i].warp_x != null)
- quest.WarpX = gameData.quest_list[i].warp_x;
- if (gameData.quest_list[i].warp_y != null)
- quest.WarpY = gameData.quest_list[i].warp_y;
- if (gameData.quest_list[i].success_message != null)
- quest.SuccessMessage = gameData.quest_list[i].success_message;
- if (gameData.quest_list[i].success_npc_chat != null)
- quest.SuccessNpcChat = gameData.quest_list[i].success_npc_chat;
- if (gameData.quest_list[i].requires_awardid != null)
- quest.AwardRequired = gameData.quest_list[i].requires_awardid;
- quest.RequiresQuestIdCompleted = gameData.quest_list[i].requires_questid_completed.ToObject();
- quest.RequiresQuestIdNotCompleted = gameData.quest_list[i].requires_questid_not_completed.ToObject