diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index e1ee7dd..65ccdc2 100755
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,8 +10,6 @@ defaults:
jobs:
build-linux:
runs-on: ubuntu-latest
- env:
- AUTHENTICATION_TOKEN: ${{ secrets.SILICA_CODES_AUTH }}
steps:
- uses: actions/checkout@v2
with:
@@ -23,8 +21,8 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 8.0.x
- include-prerelease: false
+ dotnet-version: 7.0.100-preview.5.22307.18
+ include-prerelease: true
- name: Install utils
run: |
sudo apt update
@@ -35,7 +33,7 @@ jobs:
run: |
dotnet restore LibHISP
dotnet restore HISPd
-# linux x64
+# nativeaot linux x54
- name: Build linux-x64
continue-on-error: false
run: |
@@ -46,14 +44,27 @@ jobs:
dotnet publish -p:PublishProfile=Linux64.pubxml
cd ..
-# linux arm
+# Currently broken ...
+
+# dotnet add HISPd package Microsoft.DotNet.ILCompiler --prerelease
+# cd HISPd
+# dotnet publish -r linux-x64 -c Linux /p:Platform=x64 --self-contained
+# cd ..
+# mkdir -p HISPd/bin/x64/Linux/net7.0/linux-x64/native/gamedata
+# cp -r HISPd/bin/x64/Linux/net7.0/linux-x64/gamedata/* HISPd/bin/x64/Linux/net7.0/linux-x64/native/gamedata
+# cp HISPd/bin/x64/Linux/net7.0/linux-x64/HI1.MAP HISPd/bin/x64/Linux/net7.0/linux-x64/native/HI1.MAP
+# cp HISPd/bin/x64/Linux/net7.0/linux-x64/publish/libe_sqlite3.so HISPd/bin/x64/Linux/net7.0/linux-x64/native/libe_sqlite3.so
+# rm -f HISPd/bin/x64/Linux/net7.0/linux-x64/native/HISPd.dbg
+# dotnet remove HISPd package Microsoft.DotNet.ILCompiler
+
+
- name: Build linux-arm
continue-on-error: false
run: |
cd HISPd
dotnet publish -p:PublishProfile=LinuxARM.pubxml
cd ..
-# linux arm64
+# nativeaot linux arm64
- name: Build linux-arm64
continue-on-error: false
run: |
@@ -61,6 +72,18 @@ jobs:
dotnet publish -p:PublishProfile=LinuxARM64.pubxml
cd ..
+# dotnet add HISPd package Microsoft.DotNet.ILCompiler --prerelease
+# dotnet add HISPd package runtime.linux-x64.Microsoft.DotNet.ILCompiler --prerelease
+# cd HISPd
+# dotnet publish -r linux-arm64 -c Linux /p:Platform=ARM64 --self-contained
+# cd ..
+# mkdir -p HISPd/bin/ARM64/Linux/net7.0/linux-arm64/native/gamedata
+# cp -r HISPd/bin/ARM64/Linux/net7.0/linux-arm64/gamedata/* HISPd/bin/ARM64/Linux/net7.0/linux-arm64/native/gamedata
+# cp HISPd/bin/ARM64/Linux/net7.0/linux-arm64/HI1.MAP HISPd/bin/ARM64/Linux/net7.0/linux-arm64/native/HI1.MAP
+# cp HISPd/bin/ARM64/Linux/net7.0/linux-arm64/publish/libe_sqlite3.so HISPd/bin/ARM64/Linux/net7.0/linux-arm64/native/libe_sqlite3.so
+# rm -f HISPd/bin/ARM64/Linux/net7.0/linux-arm64/native/HISPd.dbg
+# dotnet remove HISPd package Microsoft.DotNet.ILCompiler
+# dotnet remove HISPd package runtime.linux-x64.Microsoft.DotNet.ILCompiler
- name: Build deb package
continue-on-error: false
@@ -79,10 +102,10 @@ jobs:
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 -r HISPd/bin/x64/Linux/net7.0/linux-x64/publish/gamedata/* /tmp/debpkg/Debian64/etc/hisp/gamedata
+ cp HISPd/bin/x64/Linux/net7.0/linux-x64/publish/libe_sqlite3.so /tmp/debpkg/Debian64/usr/lib/libe_sqlite3.so
+ cp HISPd/bin/x64/Linux/net7.0/linux-x64/publish/HI1.MAP /tmp/debpkg/Debian64/etc/hisp/HI1.MAP
+ cp HISPd/bin/x64/Linux/net7.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
@@ -96,35 +119,61 @@ jobs:
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
+
+#android .. maybe someday
+
+# - name: Build android-arm
+# continue-on-error: false
+# run: |
+# dotnet publish -p:PublishProfile=AndroidARM.pubxml
+
+# - name: Build android-arm64
+# continue-on-error: false
+# run: |
+# dotnet publish -p:PublishProfile=AndroidARM64.pubxml
+
+
+# - name: Upload 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 LINUX
- name: Upload linux-x64
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Linux64
- path: HorseIsleServer/HISPd/bin/x64/Linux/net8.0/linux-x64/publish/
+ path: HorseIsleServer/HISPd/bin/x64/Linux/net7.0/linux-x64/publish/
- name: Upload linux-x64-noobs
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Linux64-Noobs
- path: HorseIsleServer/MPN00BS/bin/x64/Linux/net8.0/linux-x64/publish/
+ path: HorseIsleServer/MPN00BS/bin/x64/Linux/net7.0/linux-x64/publish/
- name: Upload linux-arm
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-LinuxARM
- path: HorseIsleServer/HISPd/bin/ARM/Linux/net8.0/linux-arm/publish/
+ path: HorseIsleServer/HISPd/bin/ARM/Linux/net7.0/linux-arm/publish/
- name: Upload linux-arm64
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-LinuxARM64
- path: HorseIsleServer/HISPd/bin/ARM64/Linux/net8.0/linux-arm64/publish/
+ path: HorseIsleServer/HISPd/bin/ARM64/Linux/net7.0/linux-arm64/publish/
- name: Upload deb package
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-DebianPackage
path: HorseIsleServer/debpackage
@@ -142,8 +191,8 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 8.0.x
- include-prerelease: false
+ dotnet-version: 7.0.100-preview.5.22307.18
+ include-prerelease: true
- name: Install utils
run: dotnet tool install -g dotnet-script
@@ -151,7 +200,7 @@ jobs:
- name: Restore dependencies
run: dotnet restore
-# x64 build
+#nativeaot x64 build
- name: Build win-x64
continue-on-error: false
run: |
@@ -162,6 +211,21 @@ jobs:
dotnet publish -p:PublishProfile=Win64.pubxml
cd ..
+# dotnet add HISPd package Microsoft.DotNet.ILCompiler --prerelease
+# cd HISPd
+# dotnet publish -r win-x64 -c Windows /p:Platform=x64 --self-contained
+# cd ..
+# mkdir "HISPd\bin\x64\Windows\net7.0\win-x64\native\gamedata"
+# copy "..\HorseIsleData\gamedata\*" "HISPd\bin\x64\Windows\net7.0\win-x64\native\gamedata"
+# copy "..\HorseIsleData\HI1.MAP" "HISPd\bin\x64\Windows\net7.0\win-x64\native\HI1.MAP"
+# copy "HISPd\bin\x64\Windows\net7.0\win-x64\publish\e_sqlite3.dll" "HISPd\bin\x64\Windows\net7.0\win-x64\native\e_sqlite3.dll"
+# del "HISPd\bin\x64\Windows\net7.0\win-x64\native\HISPd.pdb"
+# del "HISPd\bin\x64\Windows\net7.0\win-x64\native\HISPd.lib"
+# del "HISPd\bin\x64\Windows\net7.0\win-x64\native\HISPd.exp"
+# dotnet remove HISPd package Microsoft.DotNet.ILCompiler
+# cd N00BS
+# dotnet publish -p:PublishProfile=Win64.pubxml
+# cd ..
- name: Build win-x86
continue-on-error: false
run: |
@@ -171,46 +235,72 @@ jobs:
cd MPN00BS
dotnet publish -p:PublishProfile=Win32.pubxml
cd ..
-
-# arm64 build
+ - name: Build win-arm
+ continue-on-error: false
+ run: |
+ cd HISPd
+ dotnet publish -p:PublishProfile=WinARM.pubxml
+ cd ..
+#nativeaot arm64 build
- name: Build win-arm64
continue-on-error: false
run: |
cd HISPd
dotnet publish -p:PublishProfile=WinARM64.pubxml
cd ..
+# dotnet add HISPd package Microsoft.DotNet.ILCompiler --prerelease
+# dotnet add HISPd package runtime.win-x64.Microsoft.DotNet.ILCompiler --prerelease
+# cd HISPd
+# dotnet publish -r win-arm64 -c Windows /p:Platform=ARM64 --self-contained
+# cd ..
+# mkdir "HISPd\bin\ARM64\Windows\net7.0\win-arm64\native\gamedata"
+# copy "..\HorseIsleData\gamedata\*" "HISPd\bin\ARM64\Windows\net7.0\win-arm64\native\gamedata"
+# copy "..\HorseIsleData\HI1.MAP" "HISPd\bin\ARM64\Windows\net7.0\win-arm64\native\HI1.MAP"
+# copy "HISPd\bin\ARM64\Windows\net7.0\win-arm64\publish\e_sqlite3.dll" "HISPd\bin\ARM64\Windows\net7.0\win-arm64\native\e_sqlite3.dll"
+# del "HISPd\bin\ARM64\Windows\net7.0\win-arm64\native\HISPd.pdb"
+# del "HISPd\bin\ARM64\Windows\net7.0\win-arm64\native\HISPd.lib"
+# del "HISPd\bin\ARM64\Windows\net7.0\win-arm64\native\HISPd.exp"
+# dotnet remove HISPd package Microsoft.DotNet.ILCompiler
+# dotnet remove HISPd package runtime.win-x64.Microsoft.DotNet.ILCompiler
+
# Upload WINDOWS
- name: Upload win-x64
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Win64
- path: HorseIsleServer/HISPd/bin/x64/Windows/net8.0/win-x64/publish/
+ path: HorseIsleServer/HISPd/bin/x64/Windows/net7.0/win-x64/publish/
- name: Upload win-x86
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Win32
- path: HorseIsleServer/HISPd/bin/x86/Windows/net8.0/win-x86/publish/
+ 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/win-arm/publish/
+
- name: Upload win-arm64
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-WinARM64
- path: HorseIsleServer/HISPd/bin/arm64/Windows/net8.0/win-arm64/publish/
+ path: HorseIsleServer/HISPd/bin/arm64/Windows/net7.0/win-arm64/publish/
- name: Upload win-x86-noobs
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Win32-Noobs
- path: HorseIsleServer/MPN00BS/bin/x86/Windows/net8.0/win-x86/publish/
+ path: HorseIsleServer/MPN00BS/bin/x86/Windows/net7.0/win-x86/publish/
- name: Upload win-x64-noobs
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Win64-Noobs
- path: HorseIsleServer/MPN00BS/bin/x64/Windows/net8.0/win-x64/publish/
+ path: HorseIsleServer/MPN00BS/bin/x64/Windows/net7.0/win-x64/publish/
build-mac:
runs-on: ubuntu-latest
@@ -225,8 +315,8 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v1
with:
- dotnet-version: 8.0.x
- include-prerelease: false
+ dotnet-version: 7.0.100-preview.5.22307.18
+ include-prerelease: true
- name: Install utils
run: dotnet tool install -g dotnet-script
@@ -242,9 +332,6 @@ jobs:
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: |
@@ -252,23 +339,17 @@ jobs:
dotnet publish -p:PublishProfile=OsxARM64.pubxml
cd ..
- 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/
+ path: HorseIsleServer/HISPd/bin/arm64/MacOS/net7.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/
-
build-web:
runs-on: ubuntu-latest
steps:
@@ -279,16 +360,16 @@ jobs:
- name: Git Submodule update
run: git submodule update --init --recursive
- # UPLOAD WEBSERVER
+ # UPLOAD WEB
- name: Upload Website (master)
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Web-Master
path: HorseIsleWeb/master-site
- name: Upload Website (game)
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v2
with:
name: HISP-Web-Game
path: HorseIsleWeb/game-site
diff --git a/.gitignore b/.gitignore
index 61ba3f3..7124db1 100755
--- a/.gitignore
+++ b/.gitignore
@@ -4,12 +4,6 @@
*.log
*.suo
*.csproj.user
-*.pubxml.user
-*.user
-*.idb
-
-*Thumbs.db
-*.DS_Store
HorseIsleServer/N00BS/obj/*
HorseIsleServer/N00BS/bin/*
@@ -20,15 +14,10 @@ HorseIsleServer/MPN00BS/bin/*
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/*
diff --git a/HorseIsleData b/HorseIsleData
index e9c09c7..0afb592 160000
--- a/HorseIsleData
+++ b/HorseIsleData
@@ -1 +1 @@
-Subproject commit e9c09c77cd0dd99eb12e16b679478fb0e3742b55
+Subproject commit 0afb5924fd3d0b83e6a1369789b1b98255374183
diff --git a/HorseIsleServer/HISP.sln b/HorseIsleServer/HISP.sln
index 1bda296..075fa0c 100755
--- a/HorseIsleServer/HISP.sln
+++ b/HorseIsleServer/HISP.sln
@@ -8,8 +8,9 @@ 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}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HISPtests", "HISPtests\HISPtests.csproj", "{689FB972-1612-440E-817D-BE290F655AA8}"
+ ProjectSection(ProjectDependencies) = postProject
+ {C48CBD82-AB30-494A-8FFA-4DE7069B5827} = {C48CBD82-AB30-494A-8FFA-4DE7069B5827}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -38,11 +39,6 @@ Global
MacOS|ARM64 = MacOS|ARM64
MacOS|x64 = MacOS|x64
MacOS|x86 = MacOS|x86
- Release|Any CPU = Release|Any CPU
- Release|ARM = Release|ARM
- Release|ARM64 = Release|ARM64
- Release|x64 = Release|x64
- Release|x86 = Release|x86
Windows|Any CPU = Windows|Any CPU
Windows|ARM = Windows|ARM
Windows|ARM64 = Windows|ARM64
@@ -99,16 +95,6 @@ Global
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x64.Build.0 = MacOS|x64
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x86.ActiveCfg = MacOS|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.MacOS|x86.Build.0 = MacOS|x86
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|Any CPU.ActiveCfg = Windows|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|Any CPU.Build.0 = Windows|Any CPU
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM.ActiveCfg = Windows|ARM
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM.Build.0 = Windows|ARM
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM64.ActiveCfg = Windows|ARM64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|ARM64.Build.0 = Windows|ARM64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x64.ActiveCfg = Windows|x64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x64.Build.0 = Windows|x64
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x86.ActiveCfg = Windows|x86
- {C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Release|x86.Build.0 = Windows|x86
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|Any CPU.ActiveCfg = Windows|Any CPU
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|Any CPU.Build.0 = Windows|Any CPU
{C48CBD82-AB30-494A-8FFA-4DE7069B5827}.Windows|ARM.ActiveCfg = Windows|ARM
@@ -168,16 +154,6 @@ Global
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.MacOS|x64.Build.0 = MacOS|x64
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.MacOS|x86.ActiveCfg = MacOS|x86
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.MacOS|x86.Build.0 = MacOS|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|Any CPU.ActiveCfg = Windows|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|Any CPU.Build.0 = Windows|Any CPU
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM.ActiveCfg = Windows|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM.Build.0 = Windows|ARM
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM64.ActiveCfg = Windows|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|ARM64.Build.0 = Windows|ARM64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x64.ActiveCfg = Windows|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x64.Build.0 = Windows|x64
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x86.ActiveCfg = Windows|x86
- {DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Release|x86.Build.0 = Windows|x86
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|Any CPU.ActiveCfg = Windows|Any CPU
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|Any CPU.Build.0 = Windows|Any CPU
{DEAD5CB0-C6B6-4B63-B1FB-A9F649CA1D27}.Windows|ARM.ActiveCfg = Windows|ARM
@@ -238,16 +214,6 @@ Global
{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
@@ -258,76 +224,6 @@ Global
{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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/HorseIsleServer/HISPd/HISPd.csproj b/HorseIsleServer/HISPd/HISPd.csproj
index b280073..57d1e0d 100755
--- a/HorseIsleServer/HISPd/HISPd.csproj
+++ b/HorseIsleServer/HISPd/HISPd.csproj
@@ -27,7 +27,7 @@
false
- net8.0
+ net7.0
false
true
icon.ico
@@ -44,13 +44,7 @@
3
1701;1702;2026;IL2026
-
-
- partial
- false
- true
-
-
+
win-x86
true
@@ -158,12 +152,112 @@
-
+
+ ARM
False
- DEBUG;TRACE;OS_DEBUG
- full
+ DEBUG;TRACE;OS_DEBUG;ARCH_ARM
+ none
+
+ ARM64
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_ARM64
+ none
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86_64
+ none
+
+
+
+
+ False
+ DEBUG;TRACE;OS_DEBUG;ARCH_X86
+ none
+
+
+
+
+ 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
+
+
+
+
+ 3
+ none
+
+
+
+
+ none
+
+
+
+
+ none
+
+
+
+
+ none
+
+
+
+
+ none
+
+
+
+
+ none
+
+
+
+
+ none
+
+
diff --git a/HorseIsleServer/HISPd/Program.cs b/HorseIsleServer/HISPd/Program.cs
index 2f5ca20..fb7e67b 100755
--- a/HorseIsleServer/HISPd/Program.cs
+++ b/HorseIsleServer/HISPd/Program.cs
@@ -11,7 +11,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 +44,46 @@ 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(DateTime.Now.ToString("MM-dd-YYYY HH:mm:dd") + ": [" + type + "] " + 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(DateTime.Now.ToString("MM-dd-YYYY HH:mm:dd")+": [" + type + "] " + text + Console.Error.NewLine);
+ else
+ Console.Out.WriteAsync(DateTime.Now.ToString("MM-dd-YYYY HH:mm:dd") + ": [" + 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 +101,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,27 +113,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
{
- LogFile = Path.Combine(baseDir, "crash.log");
+ LogFile = Path.Combine(BaseDir, "crash.log");
}
- if (hispBaseDir != null)
+ if (HispBaseDir != null)
{
- baseDir = hispBaseDir;
- Directory.SetCurrentDirectory(baseDir);
+ BaseDir = HispBaseDir;
+ Directory.SetCurrentDirectory(BaseDir);
}
+ Entry.SetShutdownCallback(OnShutdown);
Entry.Start();
shutdownHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
@@ -191,7 +143,7 @@ namespace HISP.Cli
private static void ProcessQuitHandler(object sender, EventArgs e)
{
- GameServer.ShutdownServer("HISPd process quitting.");
+ GameServer.ShutdownServer();
}
}
}
diff --git a/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs b/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs
index a40e782..b81aecc 100755
--- a/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs
+++ b/HorseIsleServer/HISPd/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// 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")]
+[assembly: AssemblyVersion("1.7.140.0")]
+[assembly: AssemblyFileVersion("1.7.140.0")]
diff --git a/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM.pubxml b/HorseIsleServer/HISPd/Properties/PublishProfiles/AndroidARM.pubxml
index 4c08f3e..e1eff10 100755
--- 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
index e9b3839..59f44f0 100755
--- 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
index acb8a96..c5f1582 100755
--- 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
index fdccff1..06bcf27 100755
--- 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
index f387011..b4cdb5b 100755
--- 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
index f6e810f..ced4af4 100755
--- 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
index 6d6a41d..cc18457 100755
--- 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
index 0608a65..2763365 100755
--- 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
index 79a4c04..f23270c 100755
--- 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
index f6cc04e..a64c8c0 100755
--- 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\win-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
index 10dfe10..0ce204c 100755
--- 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\win-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
index 077cfed..3312d3f 100755
--- 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
index ec7144e..14fe938 100755
--- 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/Resources/DEBIAN/control b/HorseIsleServer/HISPd/Resources/DEBIAN/control
index 1350d9e..84d6c1d 100755
--- a/HorseIsleServer/HISPd/Resources/DEBIAN/control
+++ b/HorseIsleServer/HISPd/Resources/DEBIAN/control
@@ -1,5 +1,5 @@
Package: hisp
-Version: 1.8.73
+Version: 1.7.140
Depends: coreutils,systemd,mariadb-server,libsqlite3-dev,zlib1g-dev,libicu-dev,libkrb5-dev
Maintainer: Li
Homepage: https://islehorse.com
diff --git a/HorseIsleServer/HISPd/Resources/HISP.service b/HorseIsleServer/HISPd/Resources/HISP.service
index 2292353..360db4f 100755
--- 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
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/Win32.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/Win32.pubxml
deleted file mode 100644
index 0608a65..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Win32.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Windows
- x86
- bin\x86\Windows\net8.0\win-x86\publish\
- FileSystem
- net8.0
- win-x86
- True
- True
- True
- True
- OS_WINDOWS;ARCH_X86
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Win64.pubxml b/HorseIsleServer/HISPtests/Properties/PublishProfiles/Win64.pubxml
deleted file mode 100644
index 79a4c04..0000000
--- a/HorseIsleServer/HISPtests/Properties/PublishProfiles/Win64.pubxml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Windows
- x64
- bin\x64\Windows\net8.0\win-x64\publish\
- FileSystem
- net8.0
- win-x64
- True
- True
- True
- True
- OS_WINDOWS;ARCH_X86_64
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/PublishProfiles/WinARM.pubxml b/HorseIsleServer/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/Properties/Resources.resx b/HorseIsleServer/HISPtests/Properties/Resources.resx
deleted file mode 100644
index 6e82436..0000000
--- a/HorseIsleServer/HISPtests/Properties/Resources.resx
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- text/microsoft-resx
-
-
- 2.0
-
-
- System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
-
- ..\Resources\PacketTestDataSet.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252
-
-
\ No newline at end of file
diff --git a/HorseIsleServer/HISPtests/Properties/launchSettings.json b/HorseIsleServer/HISPtests/Properties/launchSettings.json
deleted file mode 100644
index 6cef0b0..0000000
--- a/HorseIsleServer/HISPtests/Properties/launchSettings.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "profiles": {
- "HISPtests": {
- "commandName": "Project"
- }
- }
-}
\ No newline at end of file
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/HISPtests/icon.ico b/HorseIsleServer/HISPtests/icon.ico
deleted file mode 100644
index 1c3ca8d..0000000
Binary files a/HorseIsleServer/HISPtests/icon.ico and /dev/null differ
diff --git a/HorseIsleServer/LibHISP/Game/Arena.cs b/HorseIsleServer/LibHISP/Game/Arena.cs
index 8b5acc0..3a22eff 100755
--- a/HorseIsleServer/LibHISP/Game/Arena.cs
+++ b/HorseIsleServer/LibHISP/Game/Arena.cs
@@ -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.CreateSwfModule(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/Chat/ChatMsg.cs b/HorseIsleServer/LibHISP/Game/Chat/Chat.cs
old mode 100644
new mode 100755
similarity index 89%
rename from HorseIsleServer/LibHISP/Game/Chat/ChatMsg.cs
rename to HorseIsleServer/LibHISP/Game/Chat/Chat.cs
index fecd2a7..69d6579
--- a/HorseIsleServer/LibHISP/Game/Chat/ChatMsg.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/Chat.cs
@@ -8,7 +8,7 @@ using HISP.Server;
namespace HISP.Game.Chat
{
- public class ChatMsg
+ public class Chat
{
public struct Correction
{
@@ -102,7 +102,7 @@ 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);
}
}
}
@@ -197,9 +197,9 @@ namespace HISP.Game.Chat
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))
+ 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();
@@ -211,9 +211,9 @@ namespace HISP.Game.Chat
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))
+ 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();
@@ -225,10 +225,10 @@ namespace HISP.Game.Chat
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))
+ 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();
@@ -245,7 +245,7 @@ namespace HISP.Game.Chat
if (user.Id != userInIsle.Id)
if(!userInIsle.MuteAll && !userInIsle.MuteIsland)
if(!userInIsle.MutePlayer.IsUserMuted(user))
- recipiants.Add(userInIsle.Client);
+ recipiants.Add(userInIsle.LoggedinClient);
}
return recipiants.ToArray();
}
@@ -265,7 +265,7 @@ namespace HISP.Game.Chat
if (user.Id != userHere.Id)
if (!userHere.MuteAll && !userHere.MuteHere)
if (!userHere.MutePlayer.IsUserMuted(user))
- recipiants.Add(userHere.Client);
+ recipiants.Add(userHere.LoggedinClient);
}
return recipiants.ToArray();
}
@@ -279,7 +279,7 @@ namespace HISP.Game.Chat
if (user.Id != nearbyUser.Id)
if (!nearbyUser.MuteAll && !nearbyUser.MuteNear)
if (!nearbyUser.MutePlayer.IsUserMuted(user))
- recipiants.Add(nearbyUser.Client);
+ recipiants.Add(nearbyUser.LoggedinClient);
}
return recipiants.ToArray();
}
@@ -296,8 +296,8 @@ namespace HISP.Game.Chat
foreach (GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if (client.User.Moderator)
- if (client.User.Id != user.Id)
+ if (client.LoggedinUser.Moderator)
+ if (client.LoggedinUser.Id != user.Id)
recipiants.Add(client);
}
return recipiants.ToArray();
@@ -316,8 +316,8 @@ namespace HISP.Game.Chat
foreach (GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if (client.User.Administrator)
- if (client.User.Id != user.Id)
+ if (client.LoggedinUser.Administrator)
+ if (client.LoggedinUser.Id != user.Id)
recipiants.Add(client);
}
return recipiants.ToArray();
@@ -332,9 +332,9 @@ namespace HISP.Game.Chat
{
if (client.LoggedIn)
{
- if (!client.User.MutePrivateMessage && !client.User.MuteAll)
+ if (!client.LoggedinUser.MutePrivateMessage && !client.LoggedinUser.MuteAll)
{
- if (client.User.Username.ToLower().StartsWith(to.ToLower()))
+ if (client.LoggedinUser.Username.ToLower().StartsWith(to.ToLower()))
{
recipiants.Add(client);
break;
diff --git a/HorseIsleServer/LibHISP/Game/Chat/Command.cs b/HorseIsleServer/LibHISP/Game/Chat/Command.cs
index 463696b..32ecdc6 100755
--- a/HorseIsleServer/LibHISP/Game/Chat/Command.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/Command.cs
@@ -8,7 +8,6 @@ using HISP.Game.Inventory;
using System.Linq;
using System;
using System.Collections.Generic;
-using Newtonsoft.Json.Linq;
namespace HISP.Game.Chat
{
@@ -22,9 +21,9 @@ namespace HISP.Game.Chat
continue;
if (client.LoggedIn)
{
- if (client.User.Username.ToLower().StartsWith(name.ToLower()))
+ if (client.LoggedinUser.Username.ToLower().StartsWith(name.ToLower()))
{
- return client.User;
+ return client.LoggedinUser;
}
}
}
@@ -34,124 +33,41 @@ namespace HISP.Game.Chat
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", "OBJECT [username / ALL]\nMONEY [username]\nHORSE [username]\nQUEST [FORCE]\nAWARD [username]", Command.Give);
+ new CommandRegister('%', "SWF", " [username / ALL]", Command.Swf);
+ new CommandRegister('%', "GOTO", ",\nPLAYER \nAREA \nNPC ", Command.Goto);
+ new CommandRegister('%', "JUMP", " HERE", Command.Jump);
+ new CommandRegister('%', "KICK" , " [reason]", Command.Kick);
+ new CommandRegister('%', "NOCLIP", "", Command.NoClip);
+ new CommandRegister('%', "MODHORSE", " ", Command.ModHorse);
+ new CommandRegister('%', "DELITEM", "
- [username]", Command.DelItem);
+ new CommandRegister('%', "SHUTDOWN", "", Command.Shutdown);
+ new CommandRegister('%', "CALL", "HORSE", Command.CallHorse);
+ new CommandRegister('%', "MESSAGE", "", Command.Message);
// 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", " [reason]", 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);
- }
-
- 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;
+ new CommandRegister('!', "MUTE", "ALL\nGLOBAL\nISLAND\nNEAR\nHERE\nBUDDY\nPM\nBR\nSOCIALS\nLOGINS", Command.Mute);
+ new CommandRegister('!', "UNMUTE", "ALL\nGLOBAL\nISLAND\nNEAR\nHERE\nBUDDY\nPM\nBR\nSOCIALS\nLOGINS", Command.UnMute);
+ new CommandRegister('!', "HEAR", "ALL\nGLOBAL\nISLAND\nNEAR\nHERE\nBUDDY\nPM\nBR\nSOCIALS\nLOGINS", Command.UnMute);
+ new CommandRegister('!', "AUTOREPLY", "[message]", 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 Message(string message, string[] args, User user)
{
+ if (!user.Administrator)
+ return false;
string serverAnnoucement = String.Join(" ", args);
@@ -170,12 +86,13 @@ namespace HISP.Game.Chat
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.Client.SendPacket(chatPacket);
-
- GameServer.ShutdownServer("Administrator initiated");
+ user.LoggedinClient.SendPacket(chatPacket);
+ GameServer.ShutdownServer();
return true;
}
@@ -183,6 +100,8 @@ namespace HISP.Game.Chat
{
if (args.Length <= 0)
return false;
+ if (!user.Administrator)
+ return false;
if(args[0].ToUpper() == "OBJECT")
{
int itemId = 0;
@@ -217,7 +136,7 @@ namespace HISP.Game.Chat
if (itemId == Item.Present)
itmInstance.Data = Item.GetRandomItem().Id;
- client.User.Inventory.AddIgnoringFull(itmInstance);
+ client.LoggedinUser.Inventory.AddIgnoringFull(itmInstance);
}
}
}
@@ -326,7 +245,7 @@ namespace HISP.Game.Chat
}
msg:;
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -335,6 +254,8 @@ namespace HISP.Game.Chat
if (args.Length <= 0)
return false;
+ if (!user.Administrator && !user.Moderator)
+ return false;
try
{
@@ -355,7 +276,7 @@ namespace HISP.Game.Chat
else
{
User player = findNamePartial(swfUser);
- player.Client.SendPacket(packetBytes);
+ player.LoggedinClient.SendPacket(packetBytes);
}
}
catch (Exception)
@@ -364,7 +285,7 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -373,6 +294,8 @@ namespace HISP.Game.Chat
{
if(args.Length <= 0)
return false;
+ if(!user.Administrator && !user.Moderator)
+ return false;
try{
string userName = args[0];
@@ -386,7 +309,7 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -395,17 +318,18 @@ namespace HISP.Game.Chat
{
// Get current version and send to client
byte[] versionPacket = PacketBuilder.CreateChat(ServerVersion.GetBuildString(), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(versionPacket);
+ user.LoggedinClient.SendPacket(versionPacket);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatPlayerCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
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];
@@ -425,43 +349,53 @@ namespace HISP.Game.Chat
}
try{
User bannedUser = GameServer.GetUserByName(args[0]);
- bannedUser.Client.Kick(Messages.KickReasonBanned);
+ bannedUser.LoggedinClient.Kick(Messages.KickReasonBanned);
}
catch(KeyNotFoundException){};
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ 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.Client.SendPacket(chatPacket);
+ 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.Client.SendPacket(chatPacket);
+ 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.Client.SendPacket(chatPacket);
+ 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;
@@ -471,7 +405,7 @@ namespace HISP.Game.Chat
toSend.Teleport(Map.RulesIsleX, Map.RulesIsleY);
byte[] studyTheRulesMsg = PacketBuilder.CreateChat(Messages.RulesIsleSentMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- toSend.Client.SendPacket(studyTheRulesMsg);
+ toSend.LoggedinClient.SendPacket(studyTheRulesMsg);
}
catch (KeyNotFoundException)
{
@@ -479,12 +413,14 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message)+Messages.FormatRulesCommandMessage(args[0]), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ 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;
@@ -495,7 +431,7 @@ namespace HISP.Game.Chat
toSend.Teleport(Map.PrisonIsleX, Map.PrisonIsleY);
byte[] dontDoTheTime = PacketBuilder.CreateChat(Messages.PrisonIsleSentMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- toSend.Client.SendPacket(dontDoTheTime);
+ toSend.LoggedinClient.SendPacket(dontDoTheTime);
}
catch (KeyNotFoundException)
{
@@ -503,12 +439,14 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message) + Messages.FormatPrisonCommandMessage(args[0]), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ 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;
@@ -520,11 +458,11 @@ namespace HISP.Game.Chat
if (args.Length >= 2)
{
string reason = string.Join(" ", args, 1, args.Length - 1);
- toKick.Client.Kick(reason);
+ toKick.LoggedinClient.Kick(reason);
}
else
{
- toKick.Client.Kick(Messages.KickReasonKicked);
+ toKick.LoggedinClient.Kick(Messages.KickReasonKicked);
}
}
catch (KeyNotFoundException)
@@ -533,13 +471,15 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
public static bool Jump(string message, string[] args, User user)
{
- if (args.Length < 2)
+ if (args.Length <= 2)
+ return false;
+ if (!user.Administrator)
return false;
@@ -555,7 +495,7 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -563,6 +503,8 @@ namespace HISP.Game.Chat
{
if (args.Length <= 0)
return false;
+ if (!user.Administrator)
+ return false;
int itemId = 0;
try
@@ -588,7 +530,7 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -596,6 +538,8 @@ namespace HISP.Game.Chat
{
if (args.Length <= 0)
return false;
+ if (!user.Administrator)
+ return false;
if(args[0].ToUpper() == "PLAYER")
{
if(args.Length < 2)
@@ -684,13 +628,16 @@ namespace HISP.Game.Chat
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ 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;
@@ -761,7 +708,7 @@ namespace HISP.Game.Chat
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatAdminCommandCompleteMessage(message), PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -819,19 +766,21 @@ namespace HISP.Game.Chat
}
playSwf:;
- byte[] swfPacket = PacketBuilder.CreateSwfModule("warpcutscene", PacketBuilder.PACKET_SWF_MODULE_CUTSCENE);
- user.Client.SendPacket(swfPacket);
+ byte[] swfPacket = PacketBuilder.CreateSwfModule("warpcutscene", PacketBuilder.PACKET_SWF_CUTSCENE);
+ user.LoggedinClient.SendPacket(swfPacket);
sendText:;
byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
public static bool CallHorse(string message, string[] args, User user)
{
+ if (!user.Administrator)
+ return false;
if (args.Length <= 0)
return false;
@@ -856,7 +805,7 @@ namespace HISP.Game.Chat
byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -870,16 +819,16 @@ namespace HISP.Game.Chat
if (replyMessage.Length > 1024)
{
byte[] tooLong = PacketBuilder.CreateChat(Messages.AutoReplyTooLong, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(tooLong);
+ user.LoggedinClient.SendPacket(tooLong);
return false;
}
- Object violationReason = ChatMsg.FilterMessage(replyMessage);
+ Object violationReason = Chat.FilterMessage(replyMessage);
if (violationReason != null)
{
byte[] hasVios = PacketBuilder.CreateChat(Messages.AutoReplyHasViolations, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(hasVios);
+ user.LoggedinClient.SendPacket(hasVios);
return false;
}
@@ -887,7 +836,7 @@ namespace HISP.Game.Chat
user.AutoReplyText = replyMessage;
byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
public static bool Dance(string message, string[] args, User user)
@@ -901,7 +850,7 @@ namespace HISP.Game.Chat
user.ActiveDance = new Dance(user, moves);
byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -912,7 +861,7 @@ namespace HISP.Game.Chat
if(user.InRealTimeQuiz)
{
byte[] cantEnterRealTimeQuiz = PacketBuilder.CreateChat(Messages.EventAlreadyEnteredRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(cantEnterRealTimeQuiz);
+ user.LoggedinClient.SendPacket(cantEnterRealTimeQuiz);
return false;
}
if (quizActive)
@@ -924,24 +873,24 @@ namespace HISP.Game.Chat
if(participent.Quit)
{
byte[] quizQuit = PacketBuilder.CreateChat(Messages.EventQuitRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(quizQuit);
+ user.LoggedinClient.SendPacket(quizQuit);
return false;
}
participent.UpdateParticipent();
byte[] enteredRealTimeQuiz = PacketBuilder.CreateChat(Messages.EventEnteredRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(enteredRealTimeQuiz);
+ user.LoggedinClient.SendPacket(enteredRealTimeQuiz);
byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
else
{
byte[] quizUnavailable = PacketBuilder.CreateChat(Messages.EventUnavailableRealTimeQuiz, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(quizUnavailable);
+ user.LoggedinClient.SendPacket(quizUnavailable);
return false;
}
@@ -1020,7 +969,7 @@ namespace HISP.Game.Chat
}
byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
@@ -1098,7 +1047,7 @@ namespace HISP.Game.Chat
byte[] chatPacket = PacketBuilder.CreateChat(formattedmessage, PacketBuilder.CHAT_BOTTOM_LEFT);
- user.Client.SendPacket(chatPacket);
+ user.LoggedinClient.SendPacket(chatPacket);
return true;
}
diff --git a/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs b/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs
index 9868011..d92496f 100755
--- a/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs
+++ b/HorseIsleServer/LibHISP/Game/Chat/CommandRegister.cs
@@ -15,43 +15,19 @@ 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, string cmdUsage, 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;
+ CmdUsage = cmdUsage;
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/Events/IsleCardTradingGame.cs b/HorseIsleServer/LibHISP/Game/Events/IsleCardTradingGame.cs
index 2c9812b..288669d 100755
--- 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
index d49c8fd..71819a2 100755
--- a/HorseIsleServer/LibHISP/Game/Events/ModsRevenge.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/ModsRevenge.cs
@@ -148,8 +148,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
index 63a6dee..6807f25 100755
--- 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
index f172557..6dd2a86 100755
--- a/HorseIsleServer/LibHISP/Game/Events/RealTimeQuiz.cs
+++ b/HorseIsleServer/LibHISP/Game/Events/RealTimeQuiz.cs
@@ -48,7 +48,7 @@ namespace HISP.Game.Events
return;
byte[] realTimeQuizQuestion = PacketBuilder.CreateMeta(Meta.BuildRealTimeQuiz(this));
- this.UserInstance.Client.SendPacket(realTimeQuizQuestion);
+ this.UserInstance.LoggedinClient.SendPacket(realTimeQuizQuestion);
}
public void CheckAnswer(string answer)
@@ -160,7 +160,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 +219,7 @@ namespace HISP.Game.Events
participent.UserInstance.InRealTimeQuiz = false;
- GameServer.UpdateArea(participent.UserInstance.Client);
+ GameServer.UpdateArea(participent.UserInstance.LoggedinClient);
int money = 0;
@@ -238,12 +238,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
index 45f82db..0049830 100755
--- 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/WaterBalloonGame.cs b/HorseIsleServer/LibHISP/Game/Events/WaterBalloonGame.cs
index 2d0752e..e6f0765 100755
--- 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/Items/Item.cs b/HorseIsleServer/LibHISP/Game/Items/Item.cs
index 12dc35f..771c2e6 100755
--- 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/Map.cs b/HorseIsleServer/LibHISP/Game/Map.cs
index 8d3b926..25ddf74 100755
--- 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
index 1b93c88..c00f83a 100755
--- a/HorseIsleServer/LibHISP/Game/Messages.cs
+++ b/HorseIsleServer/LibHISP/Game/Messages.cs
@@ -1,3051 +1,3039 @@
-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
+using System;
+using System.Drawing;
+using System.Globalization;
+
+using HISP.Security;
+using HISP.Server;
+using HISP.Util;
+
+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;
+
+ // 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;
+
+ // 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.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);
+ }
+ // 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()
+ {
+ return MotdFormat.Replace("%MOTD%", ConfigReader.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());
- }
-
- }
-}
+ }
+
+ // 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
index dcd0d4d..7039ea6 100755
--- a/HorseIsleServer/LibHISP/Game/Meta.cs
+++ b/HorseIsleServer/LibHISP/Game/Meta.cs
@@ -1154,9 +1154,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 +1189,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);
}
}
@@ -1735,7 +1735,7 @@ namespace HISP.Game
string swfModule = ranch.GetSwf(mine);
byte[] moduleSwf = PacketBuilder.CreateSwfModule(swfModule, PacketBuilder.PACKET_SWF_MODULE_FORCE);
- user.Client.SendPacket(moduleSwf);
+ user.LoggedinClient.SendPacket(moduleSwf);
if (mine) // This is My DS.
{
diff --git a/HorseIsleServer/LibHISP/Game/Multiroom.cs b/HorseIsleServer/LibHISP/Game/Multiroom.cs
index 085138a..b4937db 100755
--- a/HorseIsleServer/LibHISP/Game/Multiroom.cs
+++ b/HorseIsleServer/LibHISP/Game/Multiroom.cs
@@ -84,7 +84,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 +101,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/Quest.cs b/HorseIsleServer/LibHISP/Game/Quest.cs
index 4d2ad55..9104f6f 100755
--- 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.CreateSwfModule("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
index 372acf7..5a768a9 100755
--- a/HorseIsleServer/LibHISP/Game/Ranch.cs
+++ b/HorseIsleServer/LibHISP/Game/Ranch.cs
@@ -1,500 +1,489 @@
-using HISP.Game.Inventory;
-using HISP.Game.Items;
-using HISP.Player;
-using HISP.Server;
+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 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 = 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);
+ }
+ }
+
+ 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
index cc154ed..3bed926 100755
--- 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
index a56f712..f008fb4 100755
--- a/HorseIsleServer/LibHISP/Game/Services/Auction.cs
+++ b/HorseIsleServer/LibHISP/Game/Services/Auction.cs
@@ -38,7 +38,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 +47,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 +56,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 +78,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 +92,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 +105,7 @@ namespace HISP.Game.Services
}
byte[] bidPlacedMsg = PacketBuilder.CreateChat(yourBidRaisedTo, PacketBuilder.CHAT_BOTTOM_RIGHT);
- BidUser.Client.SendPacket(bidPlacedMsg);
+ BidUser.LoggedinClient.SendPacket(bidPlacedMsg);
}
@@ -152,7 +152,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 +162,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 +175,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);
}
diff --git a/HorseIsleServer/LibHISP/Game/Services/Shop.cs b/HorseIsleServer/LibHISP/Game/Services/Shop.cs
index a29485a..c8216cd 100755
--- 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/SwfModules/Brickpoet.cs b/HorseIsleServer/LibHISP/Game/SwfModules/Brickpoet.cs
index a207306..d95c123 100755
--- 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/Treasure.cs b/HorseIsleServer/LibHISP/Game/Treasure.cs
index 7035b9f..71ab958 100755
--- 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
index 6b03254..c8705b1 100755
--- 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);
- 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
index 60190d3..cd783b1 100755
--- 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
index fec083e..0d9798f 100755
--- a/HorseIsleServer/LibHISP/LibHISP.csproj
+++ b/HorseIsleServer/LibHISP/LibHISP.csproj
@@ -28,9 +28,9 @@
-
-
-
+
+
+
@@ -42,7 +42,7 @@
false
- net8.0
+ net7.0
false
true
OnBuildSuccess
@@ -57,13 +57,7 @@
3
1701;1702;2026;IL2026
-
-
- partial
- false
- true
-
-
+
win-x86
true
diff --git a/HorseIsleServer/LibHISP/Player/Award.cs b/HorseIsleServer/LibHISP/Player/Award.cs
index be049de..cc6e32e 100755
--- a/HorseIsleServer/LibHISP/Player/Award.cs
+++ b/HorseIsleServer/LibHISP/Player/Award.cs
@@ -1,100 +1,100 @@
-using HISP.Server;
+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 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.LoggedinClient.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);
+ }
+
+ }
+
+
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Player/Dance.cs b/HorseIsleServer/LibHISP/Player/Dance.cs
index e688ad4..9ce152c 100755
--- 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/Friends.cs b/HorseIsleServer/LibHISP/Player/Friends.cs
index bada4a4..d6abe2c 100755
--- a/HorseIsleServer/LibHISP/Player/Friends.cs
+++ b/HorseIsleServer/LibHISP/Player/Friends.cs
@@ -77,19 +77,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 +102,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/Mailbox.cs b/HorseIsleServer/LibHISP/Player/Mailbox.cs
index 8b6c726..377172e 100755
--- a/HorseIsleServer/LibHISP/Player/Mailbox.cs
+++ b/HorseIsleServer/LibHISP/Player/Mailbox.cs
@@ -68,8 +68,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 +87,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/Trade.cs b/HorseIsleServer/LibHISP/Player/Trade.cs
index c978364..ec6790e 100755
--- 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
index 802f76f..2471f49 100755
--- 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;
+using HISP.Util;
+
+
+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 Helper.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
index cb52358..3cdb542 100755
--- a/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs
+++ b/HorseIsleServer/LibHISP/Properties/AssemblyInfo.cs
@@ -30,8 +30,8 @@ using System.Runtime.InteropServices;
//
// 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")]
+[assembly: AssemblyVersion("1.7.140.0")]
+[assembly: AssemblyFileVersion("1.7.140.0")]
diff --git a/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM.pubxml b/HorseIsleServer/LibHISP/Properties/PublishProfiles/AndroidARM.pubxml
index e757f4e..d798936 100755
--- 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
index a379f96..9bbd80a 100755
--- 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
index 0a28cea..d5e9a4b 100755
--- 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
index 3be6fc1..f73fd7d 100755
--- 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
index 2ebd582..856d1c9 100755
--- 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
index da4bed5..e81e62c 100755
--- 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
index 49b7a87..d2dea28 100755
--- 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
index 400c86c..232eba4 100755
--- 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
index b1a750a..98a5535 100755
--- 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
index 1960b28..da50e60 100755
--- 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\win-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
index 8dca620..92a8fd5 100755
--- 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\win-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
index 0673054..d1b7b51 100755
--- 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
index 83b9e1d..6e41855 100755
--- 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/Resources/server.properties b/HorseIsleServer/LibHISP/Resources/server.properties
index 8797574..b7a6ff6 100755
--- a/HorseIsleServer/LibHISP/Resources/server.properties
+++ b/HorseIsleServer/LibHISP/Resources/server.properties
@@ -2,15 +2,11 @@
# Horse Isle Server Configuration
# =======================
#
-# HISP was Created and Developed by Li / SilicaAndPina
+# 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 +14,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 +26,16 @@ 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
+
+
# =======================
# Security
# =======================
@@ -74,15 +71,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
index 0fb02bf..b74cce3 100755
--- 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/CrossDomainPolicy.cs b/HorseIsleServer/LibHISP/Security/CrossDomainPolicy.cs
index 75ab62a..ef84fe1 100755
--- 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
index d64d203..20e1da5 100755
--- a/HorseIsleServer/LibHISP/Security/RandomID.cs
+++ b/HorseIsleServer/LibHISP/Security/RandomID.cs
@@ -1,27 +1,27 @@
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)
+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;
- }
- }
-}
+ rndmIdMutex.ReleaseMutex();
+
+ return rndmId;
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Server/ConfigReader.cs b/HorseIsleServer/LibHISP/Server/ConfigReader.cs
index e0cf3fc..224377e 100755
--- 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 EnableSwearFilter = true;
+ public static bool EnableCorrections = true;
+ public static bool EnableNonViolations = 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":
+ 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 "fix_offical_bugs":
+ FixOfficalBugs = data == "true";
+ break;
+ case "enable_word_filter":
+ EnableSwearFilter = 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
index eae0151..c2d73a3 100755
--- a/HorseIsleServer/LibHISP/Server/DataFixerUpper.cs
+++ b/HorseIsleServer/LibHISP/Server/DataFixerUpper.cs
@@ -39,6 +39,7 @@ namespace HISP.Server
Database.TryExecuteSqlQuery("UPDATE World SET LastLoadedInVersion=\"v1.7.20\";");
}
+
public static void FixUpDb()
{
string lastVersionStr = Database.GetLastLoadedVersion();
diff --git a/HorseIsleServer/LibHISP/Server/Database.cs b/HorseIsleServer/LibHISP/Server/Database.cs
index a90d761..f038bc1 100755
--- a/HorseIsleServer/LibHISP/Server/Database.cs
+++ b/HorseIsleServer/LibHISP/Server/Database.cs
@@ -3545,6 +3545,8 @@ namespace HISP.Server
}
}
+
+
public static void SetJewelrySlot1(int playerId, int itemId)
{
using (DbConnection db = connectDb())
@@ -4126,41 +4128,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 +4144,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 +4439,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 +4837,7 @@ namespace HISP.Server
}
- public static bool CheckUsernameIsModerator(string username)
+ public static bool CheckUserIsModerator(string username)
{
using (DbConnection db = connectDb())
{
@@ -4925,7 +4861,7 @@ namespace HISP.Server
}
- public static bool CheckUsernameIsAdmin(string username)
+ public static bool CheckUserIsAdmin(string username)
{
using (DbConnection db = connectDb())
{
diff --git a/HorseIsleServer/LibHISP/Server/Entry.cs b/HorseIsleServer/LibHISP/Server/Entry.cs
index 5f1e530..9d73d60 100755
--- a/HorseIsleServer/LibHISP/Server/Entry.cs
+++ b/HorseIsleServer/LibHISP/Server/Entry.cs
@@ -29,7 +29,7 @@ namespace HISP.Server
public static void RegisterCrashHandler()
{
-#if (!OS_DEBUG)
+#if (!DEBUG)
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(HispCrashHandler);
#endif
}
@@ -39,7 +39,7 @@ namespace HISP.Server
RegisterCrashHandler();
Console.Title = ServerVersion.GetBuildString();
ConfigReader.OpenConfig();
- CrossDomainPolicy.GetPolicyFile();
+ CrossDomainPolicy.GetPolicy();
Database.OpenDatabase();
GameDataJson.ReadGamedata();
@@ -77,14 +77,14 @@ namespace HISP.Server
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";
+ string crashMsg = becauseRustWont[execpt.GetHashCode() % becauseRustWont.Length] + "\r\n";
+ crashMsg += "HISP HAS CRASHED" + "\r\n";
+ crashMsg += "Build: " + ServerVersion.GetBuildString() + "\r\n";
+ crashMsg += "Unhandled Exception: " + execpt.Message + "\r\n";
+ crashMsg += execpt.StackTrace + "\r\n";
Logger.CrashPrint(crashMsg);
-
+
}
}
}
diff --git a/HorseIsleServer/LibHISP/Server/GameClient.cs b/HorseIsleServer/LibHISP/Server/GameClient.cs
index 749c1c3..581b62a 100755
--- a/HorseIsleServer/LibHISP/Server/GameClient.cs
+++ b/HorseIsleServer/LibHISP/Server/GameClient.cs
@@ -1,13 +1,13 @@
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;
using HISP.Util;
-using HISP.Server.Network;
namespace HISP.Server
{
@@ -22,25 +22,17 @@ namespace HISP.Server
}
}
- private ITransport networkTransport;
-
+ public Socket ClientSocket;
+ public string RemoteIp;
private bool loggedIn = false;
-
- public string RemoteIp
- {
- get
- {
- return networkTransport.Ip;
- }
- }
public bool LoggedIn
{
get
{
bool login = loggedIn;
- if (User == null)
+ if (LoggedinUser == null)
return false;
- if (User.Client == null)
+ if (LoggedinUser.LoggedinClient == null)
return false;
return login;
}
@@ -49,7 +41,7 @@ namespace HISP.Server
loggedIn = value;
}
}
- public User User;
+ public User LoggedinUser;
private Timer keepAliveTimer;
private Timer timeoutTimer;
@@ -58,7 +50,7 @@ namespace HISP.Server
private Timer kickTimer;
private Timer minuteTimer;
-
+ private bool isDisconnecting = false;
private int timeoutInterval = 95 * 1000;
private int totalMinutesElapsed = 0;
@@ -66,22 +58,36 @@ namespace HISP.Server
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);
- networkTransport = new Hybrid();
- networkTransport.Accept(clientSocket, parsePackets, disconnectHandler);
- Logger.DebugPrint(networkTransport.Name + " : Client connected @ " + networkTransport.Ip);
-
+ 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(string reason)
+ public static void OnShutdown()
{
try
{
@@ -93,43 +99,32 @@ namespace HISP.Server
for (int i = 0; i < 2; i++)
{
ItemInstance rubyItem = new ItemInstance(Item.Ruby);
- client.User.Inventory.AddIgnoringFull(rubyItem);
+ client.LoggedinUser.Inventory.AddIgnoringFull(rubyItem);
}
- client.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++;
- Logger.DebugPrint("Kicking: " + client.User.Username);
+ client.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.GameUpdates).Count++;
+ Logger.DebugPrint("Kicking: " + client.LoggedinUser.Username);
}
- client.Kick("Server shutdown: "+reason);
+ client.Kick("Server shutdown.");
+
}
}
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));
+ try{
+ do
+ {
+ Socket eSocket = e.AcceptSocket;
+ if(eSocket != null)
+ new GameClient(eSocket);
+ e.AcceptSocket = null;
+
+ if(GameServer.ServerSocket == null)
+ return;
+ } while (!GameServer.ServerSocket.AcceptAsync(e));
+ }catch(ObjectDisposedException) {} // server shutdown
}
private void timeoutTimerTick(object state)
{
@@ -139,8 +134,20 @@ namespace HISP.Server
}
}
- private void disconnectHandler()
+ 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)
@@ -165,23 +172,63 @@ namespace HISP.Server
}
// Call OnDisconnect
-
+
connectedClients.Remove(this);
GameServer.OnDisconnect(this);
LoggedIn = false;
+
}
- public void Disconnect()
+
+
+ private void receivePackets(object sender, SocketAsyncEventArgs e)
{
- if(!networkTransport.Disconnected)
- networkTransport.Disconnect();
+ 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 " + User.Username);
+ Logger.DebugPrint("Sending keep-alive packet to " + LoggedinUser.Username);
byte[] updatePacket = PacketBuilder.CreateKeepAlive();
SendPacket(updatePacket);
- keepAliveTimer.Change(oneMinute, oneMinute);
+ if(!isDisconnecting && keepAliveTimer != null) // wtf how is this still a problem?
+ keepAliveTimer.Change(oneMinute, oneMinute);
}
private void minuteTimerTick(object state)
{
@@ -191,20 +238,20 @@ namespace HISP.Server
GameServer.UpdatePlayer(this);
- User.CanUseAdsChat = true;
- User.FreeMinutes -= 1;
+ LoggedinUser.CanUseAdsChat = true;
+ LoggedinUser.FreeMinutes -= 1;
GameServer.DoItemPurchases(this);
if (totalMinutesElapsed % 2 == 0)
{
- User.TotalGlobalChatMessages++;
+ LoggedinUser.TotalGlobalChatMessages++;
}
- if (User.FreeMinutes <= 0)
+ if (LoggedinUser.FreeMinutes <= 0)
{
- User.FreeMinutes = 0;
- if (!User.Subscribed && !User.Moderator && !User.Administrator)
+ LoggedinUser.FreeMinutes = 0;
+ if (!LoggedinUser.Subscribed && !LoggedinUser.Moderator && !LoggedinUser.Administrator)
{
Kick(Messages.KickReasonNoTime);
return;
@@ -223,11 +270,11 @@ namespace HISP.Server
if (GameServer.RandomNumberGenerator.Next(0, 100) == 59) // RANDOM EVENT HAS OCCURED!
{
- RandomEvent.ExecuteRandomEvent(User);
+ RandomEvent.ExecuteRandomEvent(LoggedinUser);
}
bool gotoPrision = false;
- foreach(HorseInstance horse in User.HorseInventory.HorseList)
+ foreach(HorseInstance horse in LoggedinUser.HorseInventory.HorseList)
{
if (totalMinutesElapsed % 2 == 0)
{
@@ -299,28 +346,28 @@ namespace HISP.Server
SendPacket(horseReturned);
if(tpX != 0 && tpY != 0)
- User.Teleport(tpX, tpY);
+ LoggedinUser.Teleport(tpX, tpY);
- if (User.CurrentlyRidingHorse != null)
+ if (LoggedinUser.CurrentlyRidingHorse != null)
{
- if(User.CurrentlyRidingHorse.RandomId == horse.RandomId)
+ if(LoggedinUser.CurrentlyRidingHorse.RandomId == horse.RandomId)
{
GameServer.StopRidingHorse(this);
}
}
- if(User.LastViewedHorse != null)
+ if(LoggedinUser.LastViewedHorse != null)
{
- if(User.LastViewedHorse.RandomId == horse.RandomId)
+ if(LoggedinUser.LastViewedHorse.RandomId == horse.RandomId)
{
- User.LastViewedHorse = null;
+ LoggedinUser.LastViewedHorse = null;
}
}
- User.HorseInventory.DeleteHorse(horse);
+ LoggedinUser.HorseInventory.DeleteHorse(horse);
}
@@ -331,21 +378,26 @@ namespace HISP.Server
{
byte[] sendToPrision = PacketBuilder.CreateChat(Messages.YouWereSentToPrisionIsle, PacketBuilder.CHAT_BOTTOM_RIGHT);
SendPacket(sendToPrision);
- User.Teleport(45, 35);
+ LoggedinUser.Teleport(45, 35);
}
if (totalMinutesElapsed % 5 == 0)
- User.Thirst--;
+ LoggedinUser.Thirst--;
if (totalMinutesElapsed % 15 == 0)
- User.Hunger--;
+ LoggedinUser.Hunger--;
if (totalMinutesElapsed % 15 == 0)
- User.Tiredness--;
+ LoggedinUser.Tiredness--;
}
- minuteTimer.Change(oneMinute, oneMinute);
+
+
+
+ if (!isDisconnecting)
+ minuteTimer.Change(oneMinute, oneMinute);
+
}
private void warnTimerTick(object state)
@@ -354,7 +406,7 @@ namespace HISP.Server
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatIdleWarningMessage(), PacketBuilder.CHAT_BOTTOM_RIGHT);
SendPacket(chatPacket);
if (LoggedIn)
- User.Idle = true;
+ LoggedinUser.Idle = true;
}
private void kickTimerTick(object state)
@@ -372,12 +424,12 @@ namespace HISP.Server
{
if (Client.LoggedIn)
{
- if (Client.User.Id == id)
+ if (Client.LoggedinUser.Id == id)
Client.Kick(Messages.KickReasonDuplicateLogin);
}
}
- User = new User(this, id);
+ LoggedinUser = new User(this, id);
LoggedIn = true;
Database.SetIpAddress(id, RemoteIp);
@@ -387,14 +439,13 @@ namespace HISP.Server
timeoutTimer = new Timer(new TimerCallback(timeoutTimerTick), null, timeoutInterval, timeoutInterval);
}
- private void parsePackets(byte[] packet)
+ private void parsePackets(byte[] Packet)
{
- if (packet.Length < 1)
+ if (Packet.Length < 1)
{
- Logger.ErrorPrint("Received an invalid packet (size: "+packet.Length+")");
- return;
+ Logger.ErrorPrint("Received an invalid packet (size: "+Packet.Length+")");
}
- byte identifier = packet[0];
+ byte identifier = Packet[0];
/*
* Every time ive tried to fix this properly by just checking if its null or something
@@ -413,7 +464,7 @@ namespace HISP.Server
if (keepAliveTimer != null && identifier != PacketBuilder.PACKET_KEEP_ALIVE)
{
if (LoggedIn)
- User.Idle = false;
+ LoggedinUser.Idle = false;
keepAliveTimer.Change(oneMinute, oneMinute);
}
else
@@ -444,14 +495,19 @@ namespace HISP.Server
* this prevents the entire server from crashing
* if theres an error in handling a particular packet.
*/
+#if (!DEBUG)
try
{
+#endif
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.OnUserLogin(this, packet);
+ GameServer.OnLoginRequest(this, Packet);
break;
}
}
@@ -460,89 +516,87 @@ namespace HISP.Server
switch (identifier)
{
case PacketBuilder.PACKET_LOGIN:
- GameServer.OnUserInfoRequest(this, packet);
+ GameServer.OnUserInfoRequest(this, Packet);
break;
case PacketBuilder.PACKET_MOVE:
- GameServer.OnMovementPacket(this, packet);
+ GameServer.OnMovementPacket(this, Packet);
break;
case PacketBuilder.PACKET_PLAYERINFO:
- GameServer.OnPlayerInfoPacket(this, packet);
+ GameServer.OnPlayerInfoPacket(this, Packet);
break;
case PacketBuilder.PACKET_PLAYER:
- GameServer.OnProfilePacket(this, packet);
+ GameServer.OnProfilePacket(this, Packet);
break;
case PacketBuilder.PACKET_CHAT:
- GameServer.OnChatPacket(this, packet);
+ GameServer.OnChatPacket(this, Packet);
break;
case PacketBuilder.PACKET_CLICK:
- GameServer.OnClickPacket(this, packet);
+ GameServer.OnClickPacket(this, Packet);
break;
case PacketBuilder.PACKET_KEEP_ALIVE:
- GameServer.OnKeepAlive(this, packet);
+ GameServer.OnKeepAlive(this, Packet);
break;
case PacketBuilder.PACKET_TRANSPORT:
- GameServer.OnTransportUsed(this, packet);
+ GameServer.OnTransportUsed(this, Packet);
break;
case PacketBuilder.PACKET_INVENTORY:
- GameServer.OnInventoryRequested(this, packet);
+ GameServer.OnInventoryRequested(this, Packet);
break;
case PacketBuilder.PACKET_DYNAMIC_BUTTON:
- GameServer.OnDynamicButtonPressed(this, packet);
+ GameServer.OnDynamicButtonPressed(this, Packet);
break;
case PacketBuilder.PACKET_DYNAMIC_INPUT:
- GameServer.OnDynamicInputReceived(this, packet);
+ GameServer.OnDynamicInputReceived(this, Packet);
break;
case PacketBuilder.PACKET_ITEM_INTERACTION:
- GameServer.OnItemInteraction(this, packet);
+ GameServer.OnItemInteraction(this, Packet);
break;
case PacketBuilder.PACKET_ARENA_SCORE:
- GameServer.OnArenaScored(this, packet);
+ GameServer.OnArenaScored(this, Packet);
break;
case PacketBuilder.PACKET_QUIT:
- GameServer.OnQuitPacket(this, packet);
+ GameServer.OnQuitPacket(this, Packet);
break;
case PacketBuilder.PACKET_NPC:
- GameServer.OnNpcInteraction(this, packet);
+ GameServer.OnNpcInteraction(this, Packet);
break;
case PacketBuilder.PACKET_BIRDMAP:
- GameServer.OnBirdMapRequested(this, packet);
+ GameServer.OnBirdMapRequested(this, Packet);
break;
case PacketBuilder.PACKET_SWFMODULE:
- GameServer.OnSwfModuleCommunication(this, packet);
+ GameServer.OnSwfModuleCommunication(this, Packet);
break;
case PacketBuilder.PACKET_HORSE:
- GameServer.OnHorseInteraction(this, packet);
+ GameServer.OnHorseInteraction(this, Packet);
break;
case PacketBuilder.PACKET_WISH:
- GameServer.OnWish(this, packet);
+ GameServer.OnWish(this, Packet);
break;
case PacketBuilder.PACKET_RANCH:
- GameServer.OnRanchPacket(this, packet);
+ GameServer.OnRanchPacket(this, Packet);
break;
case PacketBuilder.PACKET_AUCTION:
- GameServer.OnAuctionPacket(this, packet);
+ GameServer.OnAuctionPacket(this, Packet);
break;
case PacketBuilder.PACKET_PLAYER_INTERACTION:
- GameServer.OnPlayerInteration(this, packet);
+ GameServer.OnPlayerInteration(this, Packet);
break;
case PacketBuilder.PACKET_SOCIALS:
- GameServer.OnSocialPacket(this, packet);
+ GameServer.OnSocialPacket(this, Packet);
break;
default:
- Logger.ErrorPrint("Unimplemented packet: " + BitConverter.ToString(packet).Replace('-', ' '));
+ Logger.ErrorPrint("Unimplemented Packet: " + BitConverter.ToString(Packet).Replace('-', ' '));
break;
}
}
+#if (!DEBUG)
}
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
+ Logger.ErrorPrint("Unhandled Exception: " + e.ToString() + "\n" + e.Message + "\n" + e.StackTrace);
+ Kick("Unhandled Exception: " + e.ToString());
}
+#endif
}
public void Kick(string Reason)
@@ -554,10 +608,16 @@ namespace HISP.Server
Logger.InfoPrint("CLIENT: "+RemoteIp+" KICKED for: "+Reason);
}
- public void SendPacket(byte[] packetData)
+ public void SendPacket(byte[] PacketData)
{
- if(!networkTransport.Disconnected)
- networkTransport.Send(packetData);
+ try
+ {
+ ClientSocket.Send(PacketData);
+ }
+ catch (Exception)
+ {
+ Disconnect();
+ }
}
}
diff --git a/HorseIsleServer/LibHISP/Server/GameDataJson.cs b/HorseIsleServer/LibHISP/Server/GameDataJson.cs
index c03f576..b2630a2 100755
--- a/HorseIsleServer/LibHISP/Server/GameDataJson.cs
+++ b/HorseIsleServer/LibHISP/Server/GameDataJson.cs
@@ -1,13 +1,6 @@
using System.Collections.Generic;
using System.IO;
-using System.Globalization;
-using System;
-using System.Dynamic;
-
using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-
-
using HISP.Game;
using HISP.Game.Chat;
using HISP.Player;
@@ -15,26 +8,29 @@ 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.Linq;
namespace HISP.Server
{
public class GameDataJson
{
- private static dynamic gameData;
-
- private static void readGamedataFiles()
+ public static void ReadGamedata()
{
+ dynamic gameData;
Logger.DebugPrint("Reading 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);
+ Logger.DebugPrint("Reading: "+file);
string jsonData = File.ReadAllText(file);
JObject thisData = (JObject)JsonConvert.DeserializeObject(jsonData);
JObject jData = (JObject)gameData;
@@ -52,13 +48,12 @@ namespace HISP.Server
else
{
Logger.ErrorPrint("Could not find GAMEDATA, configured as; " + ConfigReader.GameData + " But no file or directory exists!");
- GameServer.ShutdownServer("Unable to find GAMEDATA");
+ GameServer.ShutdownServer();
return;
}
- }
+
- private static void registerTowns()
- {
+ // Register Towns
int totalTowns = gameData.places.towns.Count;
for (int i = 0; i < totalTowns; i++)
{
@@ -73,10 +68,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered Town: " + town.Name + " X " + town.StartX + "-" + town.EndX + " Y " + town.StartY + "-" + town.EndY);
World.Towns.Add(town);
}
- }
- private static void registerZones()
- {
+ // Register Zones
int totalZones = gameData.places.zones.Count;
for (int i = 0; i < totalZones; i++)
{
@@ -92,9 +85,7 @@ namespace HISP.Server
World.Zones.Add(zone);
}
- }
- private static void registerAreas()
- {
+ // Register Areas
int totalAreas = gameData.places.areas.Count;
for (int i = 0; i < totalAreas; i++)
{
@@ -109,10 +100,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered Area: " + area.Name + " X " + area.StartX + "-" + area.EndX + " Y " + area.StartY + "-" + area.EndY);
World.Areas.Add(area);
}
- }
- private static void registerIsles()
- {
+ // Register Isles
int totalIsles = gameData.places.isles.Count;
for (int i = 0; i < totalIsles; i++)
{
@@ -128,10 +117,7 @@ namespace HISP.Server
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++)
{
@@ -145,9 +131,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered Waypoint: " + waypoint.PosX.ToString() + ", " + waypoint.PosY.ToString() + " TYPE: " + waypoint.Type);
World.Waypoints.Add(waypoint);
}
- }
- private static void registerSpecialTiles()
- {
+
+ // Register Special Tiles
int totalSpecialTiles = gameData.places.special_tiles.Count;
for (int i = 0; i < totalSpecialTiles; i++)
{
@@ -168,50 +153,46 @@ namespace HISP.Server
Logger.DebugPrint("Registered Special Tile: " + specialTile.Title + " X " + specialTile.X + " Y: " + specialTile.Y);
World.SpecialTiles.Add(specialTile);
}
- }
- private static void registerChatWarningReasons()
- {
+
+ // Register Filter Reasons
int totalReasons = gameData.messages.chat.reason_messages.Count;
for (int i = 0; i < totalReasons; i++)
{
- ChatMsg.Reason reason = new ChatMsg.Reason();
+ Chat.Reason reason = new Chat.Reason();
reason.Name = gameData.messages.chat.reason_messages[i].name;
reason.Message = gameData.messages.chat.reason_messages[i].message;
- ChatMsg.AddReason(reason);
+ Chat.AddReason(reason);
Logger.DebugPrint("Registered Chat Warning Reason: " + reason.Name + " (Message: " + reason.Message + ")");
}
+ // Register Filters
- }
- private static void registerFilteredWords()
- {
int totalFilters = gameData.messages.chat.filter.Count;
for (int i = 0; i < totalFilters; i++)
{
- ChatMsg.Filter filter = new ChatMsg.Filter();
+ Chat.Filter filter = new Chat.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);
+ filter.Reason = Chat.GetReason((string)gameData.messages.chat.filter[i].reason_type);
+ Chat.AddFilter(filter);
Logger.DebugPrint("Registered Filtered Word: " + filter.FilteredWord + " With reason: " + filter.Reason.Name + " (Matching all: " + filter.MatchAll + ")");
}
- }
- private static void registerWordCorrections()
- {
+
+ // Register Corrections
int totalCorrections = gameData.messages.chat.correct.Count;
for (int i = 0; i < totalCorrections; i++)
{
- ChatMsg.Correction correction = new ChatMsg.Correction();
+ Chat.Correction correction = new Chat.Correction();
correction.FilteredWord = gameData.messages.chat.correct[i].word;
correction.ReplacedWord = gameData.messages.chat.correct[i].new_word;
- ChatMsg.AddCorrection(correction);
+ Chat.AddCorrection(correction);
Logger.DebugPrint("Registered Word Correction: " + correction.FilteredWord + " to " + correction.ReplacedWord);
}
- }
- private static void registerTransportPoints()
- {
+
+ // Register Transports
+
int totalTransportPoints = gameData.transport.transport_points.Count;
for (int i = 0; i < totalTransportPoints; i++)
{
@@ -223,10 +204,7 @@ namespace HISP.Server
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++)
{
@@ -241,9 +219,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered Transport Location: " + transportPlace.LocationTitle + " To Goto X: " + transportPlace.GotoX + " Y: " + transportPlace.GotoY);
}
- }
- private static void registerItems()
- {
+
+ // Register Items
int totalItems = gameData.item.item_list.Count;
for (int i = 0; i < totalItems; i++)
{
@@ -280,9 +257,7 @@ namespace HISP.Server
Logger.DebugPrint("Registered Item ID: " + item.Id + " Name: " + item.Name + " spawns on: " + item.SpawnParamaters.SpawnOnTileType);
Item.AddItemInfo(item);
}
- }
- private static void registerThrowables()
- {
+ // Register Throwables
int totalThrowable = gameData.item.throwable.Count;
for (int i = 0; i < totalThrowable; i++)
{
@@ -293,10 +268,8 @@ namespace HISP.Server
throwableItem.HitYourselfMessage = gameData.item.throwable[i].message_hit_yourself;
Item.AddThrowableItem(throwableItem);
}
- }
- private static void registerNpcs()
- {
+ // Register NPCs
Logger.DebugPrint("Registering NPCS: ");
int totalNpcs = gameData.npc_list.Count;
for (int i = 0; i < totalNpcs; i++)
@@ -371,10 +344,9 @@ namespace HISP.Server
npcEntry.Chatpoints = chats.ToArray();
Npc.AddNpc(npcEntry);
}
- }
- private static void registerQuests()
- {
+ // Register Quests
+
Logger.DebugPrint("Registering Quests: ");
int totalQuests = gameData.quest_list.Count;
for (int i = 0; i < totalQuests; i++)
@@ -444,14 +416,9 @@ namespace HISP.Server
if (gameData.quest_list[i].chained_questid != null)
quest.ChainedQuestId = gameData.quest_list[i].chained_questid;
quest.Minigame = gameData.quest_list[i].minigame;
-
- Logger.DebugPrint("Registered Quest: " + quest.Id);
+ Logger.DebugPrint("Registered Quest: " + quest.Id + " - " + quest.Title);
Quest.AddQuestEntry(quest);
}
- }
-
- private static void registerShops()
- {
int totalShops = gameData.shop_list.Count;
for (int i = 0; i < totalShops; i++)
@@ -465,10 +432,9 @@ namespace HISP.Server
Logger.DebugPrint("Registered Shop ID: " + shop.Id + " Selling items at " + shop.SellPricePercentage + "% and buying at " + shop.BuyPricePercentage);
}
- }
- private static void registerAwards()
- {
+ // Register awards
+
int totalAwards = gameData.award_list.Count;
Award.GlobalAwardList = new Award.AwardEntry[totalAwards];
for (int i = 0; i < totalAwards; i++)
@@ -487,9 +453,9 @@ namespace HISP.Server
Logger.DebugPrint("Registered Award ID: " + award.Id + " - " + award.Title);
}
- }
- private static void registerAbuseReportReasons()
- {
+
+ // Register Abuse Report Reasons
+
int totalAbuseReportReasons = gameData.messages.meta.abuse_report.reasons.Count;
for (int i = 0; i < totalAbuseReportReasons; i++)
{
@@ -500,23 +466,11 @@ namespace HISP.Server
AbuseReport.AddReason(reason);
Logger.DebugPrint("Registered Abuse Report Reason: " + reason.Name);
}
- }
- private static void registerOverlayTileDepth()
- {
- List overlayTilesDepth = new List();
- int totalOverlayTileDepth = gameData.tile_paramaters.overlay_tiles.Count;
- for (int i = 0; i < totalOverlayTileDepth; i++)
- {
- Map.TileDepth tileDepth = new Map.TileDepth();
- tileDepth.Passable = gameData.tile_paramaters.overlay_tiles[i].passable;
- tileDepth.ShowPlayer = gameData.tile_paramaters.overlay_tiles[i].show_player;
- Logger.DebugPrint("Registered Overlay Tile: " + i + " Depth; Passable: " + tileDepth.Passable + " ShowPlayer: " + tileDepth.ShowPlayer);
- overlayTilesDepth.Add(tileDepth);
- }
- Map.OverlayTileDepth = overlayTilesDepth.ToArray();
- }
- private static void registerTerrianTileTypes()
- {
+
+ // Map Data
+
+ Map.OverlayTileDepth = gameData.tile_paramaters.overlay_tiles.tile_depth.ToObject();
+
List terrainTiles = new List();
int totalTerrainTiles = gameData.tile_paramaters.terrain_tiles.Count;
for (int i = 0; i < totalTerrainTiles; i++)
@@ -524,13 +478,13 @@ namespace HISP.Server
Map.TerrainTile tile = new Map.TerrainTile();
tile.Passable = gameData.tile_paramaters.terrain_tiles[i].passable;
tile.Type = gameData.tile_paramaters.terrain_tiles[i].tile_type;
- Logger.DebugPrint("Registered Tile Information: " + i + " Passable: " + tile.Passable + " Type: " + tile.Type);
+ Logger.DebugPrint("Registered Tile: " + i + " Passable: " + tile.Passable + " Type: " + tile.Type);
terrainTiles.Add(tile);
}
Map.TerrainTiles = terrainTiles.ToArray();
- }
- private static void registerInns()
- {
+
+ // Register Abuse Report Reasons
+
int totalInns = gameData.inns.Count;
for (int i = 0; i < totalInns; i++)
{
@@ -542,10 +496,7 @@ namespace HISP.Server
Logger.DebugPrint("Registered Inn: " + inn.Id + " Buying at: " + inn.BuyPercentage.ToString() + "%!");
}
- }
- private static void registerPoets()
- {
int totalPoets = gameData.poetry.Count;
for (int i = 0; i < totalPoets; i++)
{
@@ -557,10 +508,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered poet: " + entry.Id.ToString() + " word: " + entry.Word + " in room " + entry.Room.ToString());
}
- }
- private static void registerBreeds()
- {
+ // Register Horse Breeds
int totalBreeds = gameData.horses.breeds.Count;
for (int i = 0; i < totalBreeds; i++)
{
@@ -591,10 +540,7 @@ namespace HISP.Server
HorseInfo.AddBreed(horseBreed);
Logger.DebugPrint("Registered Horse Breed: #" + horseBreed.Id + ": " + horseBreed.Name);
}
- }
-
- private static void registerBreedPricesPawneerOrder()
- {
+ // Register Breed Prices @ Pawneer Order
int totalBreedPrices = gameData.horses.pawneer_base_price.Count;
for (int i = 0; i < totalBreedPrices; i++)
{
@@ -604,10 +550,7 @@ namespace HISP.Server
Pawneer.AddPawneerPriceModel(pawneerPricing);
Logger.DebugPrint("Registered Pawneer Base Price " + pawneerPricing.BreedId + " for $" + pawneerPricing.BasePrice.ToString("N0", CultureInfo.InvariantCulture));
}
- }
- private static void registerHorseCategorys()
- {
int totalCategories = gameData.horses.categorys.Count;
for (int i = 0; i < totalCategories; i++)
{
@@ -618,11 +561,6 @@ namespace HISP.Server
HorseInfo.AddHorseCategory(category);
Logger.DebugPrint("Registered horse category type: " + category.Name);
}
- }
-
- private static void registerTrackedItems()
- {
-
int totalTrackedItems = gameData.messages.meta.misc_stats.tracked_items.Count;
for (int i = 0; i < totalTrackedItems; i++)
{
@@ -632,9 +570,8 @@ namespace HISP.Server
Tracking.TrackedItemsStatsMenu.Add(trackedItem);
Logger.DebugPrint("Registered Tracked Item: " + trackedItem.What + " value: " + trackedItem.Value);
}
- }
- private static void registerVets()
- {
+ // Register Services
+
int totalVets = gameData.services.vet.price_multipliers.Count;
for (int i = 0; i < totalVets; i++)
{
@@ -643,10 +580,7 @@ namespace HISP.Server
Vet vet = new Vet(id, cost);
Logger.DebugPrint("Registered Vet: " + vet.Id + " selling at: " + vet.PriceMultiplier.ToString(CultureInfo.InvariantCulture));
}
- }
- private static void registerGroomers()
- {
int totalGroomers = gameData.services.groomer.price_multipliers.Count;
for (int i = 0; i < totalGroomers; i++)
{
@@ -657,10 +591,6 @@ namespace HISP.Server
Logger.DebugPrint("Registered Groomer: " + groomer.Id + " selling at: " + groomer.PriceMultiplier.ToString(CultureInfo.InvariantCulture));
}
- }
-
- private static void registerFarriers()
- {
int totalFarriers = gameData.services.farrier.price_multipliers.Count;
for (int i = 0; i < totalFarriers; i++)
{
@@ -673,10 +603,7 @@ namespace HISP.Server
Farrier farrier = new Farrier(id, steel, steelcost, iron, ironcost);
Logger.DebugPrint("Registered Farrier: " + farrier.Id);
}
- }
- private static void registerBarns()
- {
int totalBarns = gameData.services.barn.price_multipliers.Count;
for (int i = 0; i < totalBarns; i++)
{
@@ -689,10 +616,9 @@ namespace HISP.Server
Barn barn = new Barn(id, tired_cost, hunger_cost, thirst_cost);
Logger.DebugPrint("Registered Barn: " + barn.Id);
}
- }
- private static void registerLibaryBooks()
- {
+
+ // Register Libary Books
int totalBooks = gameData.books.Count;
for (int i = 0; i < totalBooks; i++)
{
@@ -701,12 +627,11 @@ namespace HISP.Server
string title = gameData.books[i].title;
string text = gameData.books[i].text;
Book book = new Book(id, title, author, text);
- Logger.DebugPrint("Registered Library Book: " + book.Id + " " + book.Title + " by " + book.Author);
- }
- }
+ Logger.DebugPrint("Registered Libary Book: " + book.Id + " " + book.Title + " by " + book.Author);
- private static void registerCrafts()
- {
+ }
+
+ // Register Crafts
int totalWorkshops = gameData.workshop.Count;
for (int i = 0; i < totalWorkshops; i++)
{
@@ -735,10 +660,7 @@ namespace HISP.Server
Logger.DebugPrint("Registered Workshop at X: " + wkShop.X + " Y: " + wkShop.Y);
}
- }
-
- private static void registerRanchBuildings()
- {
+ // Register Ranch Buildings
int totalRanchBuildings = gameData.ranch.ranch_buildings.buildings.Count;
for (int i = 0; i < totalRanchBuildings; i++)
{
@@ -758,10 +680,7 @@ namespace HISP.Server
Logger.DebugPrint("Registered Ranch Building: " + building.Title);
}
- }
-
- private static void registerRanchUpgrades()
- {
+ // Register Ranch Upgrades
int totalRanchUpgrades = gameData.ranch.ranch_buildings.upgrades.Count;
for (int i = 0; i < totalRanchUpgrades; i++)
{
@@ -783,10 +702,7 @@ namespace HISP.Server
Logger.DebugPrint("Registered Ranch Upgrade: " + upgrade.Title);
}
- }
-
- private static void registerRanchs()
- {
+ // Register Ranches
int totalRanchLocations = gameData.ranch.ranch_locations.Count;
for (int i = 0; i < totalRanchLocations; i++)
{
@@ -799,10 +715,7 @@ namespace HISP.Server
Logger.DebugPrint("Registered Ranch id " + id + " at X: " + ranch.X + " Y: " + ranch.Y);
}
- }
-
- private static void registerRiddlerRiddles()
- {
+ // Register Riddles
int totalRiddles = gameData.riddle_room.Count;
for (int i = 0; i < totalRiddles; i++)
{
@@ -814,9 +727,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered Riddler Riddle: " + riddlerRiddle.Riddle);
}
- }
- private static void registerBBCodes()
- {
+
+ // Register BBCODE
int totalBBocdes = gameData.bbcode.Count;
for (int i = 0; i < totalBBocdes; i++)
{
@@ -825,9 +737,8 @@ namespace HISP.Server
BBCode code = new BBCode(tag, meta);
Logger.DebugPrint("Registered BBCODE: " + code.Tag + " to " + code.MetaTranslation);
}
- }
- private static void registerTrainingPens()
- {
+
+ // Register Training Pens
int totalTrainingPens = gameData.training_pens.Count;
for (int i = 0; i < totalTrainingPens; i++)
{
@@ -844,10 +755,7 @@ namespace HISP.Server
Logger.DebugPrint("Registered Training Pen: " + trainer.Id + " for " + trainer.ImprovesStat);
}
- }
-
- private static void registerArenas()
- {
+ // Register Arenas
int totalArenas = gameData.arena.arena_list.Count;
for (int i = 0; i < totalArenas; i++)
{
@@ -862,10 +770,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered Arena: " + arena.Id.ToString() + " as " + arena.Type);
}
Arena.ExpRewards = gameData.arena.arena_exp.ToObject();
- }
- private static void registerLeasers()
- {
+ // Register Leaser
int totalLeasers = gameData.leaser.Count;
for (int i = 0; i < totalLeasers; i++)
{
@@ -917,10 +823,8 @@ namespace HISP.Server
Leaser.AddHorseLeaser(leaser);
Logger.DebugPrint("Registered Leaser: " + leaser.LeaseId.ToString() + " For a " + leaser.HorseName);
}
- }
- private static void registerSocials()
- {
+ // Register Socials
int totalSocials = gameData.social_types.Count;
for (int i = 0; i < totalSocials; i++)
{
@@ -941,10 +845,8 @@ namespace HISP.Server
Logger.DebugPrint("Registered Social: " + social.ButtonName);
}
}
- }
- private static void registerRealTimeRiddleEvents()
- {
+ // Register Events : Real Time Riddle
int totalRealTimeRiddles = gameData.events.real_time_riddle.Count;
for (int i = 0; i < totalRealTimeRiddles; i++)
{
@@ -954,13 +856,11 @@ namespace HISP.Server
int reward = gameData.events.real_time_riddle[i].money_reward;
RealTimeRiddle riddle = new RealTimeRiddle(id, riddleText, riddleAnswers, reward);
-
+
Logger.DebugPrint("Registered Riddle #" + riddle.RiddleId.ToString());
}
- }
- private static void registerRealTimeQuizEvents()
- {
+ // Register Events : Real Time Quiz
int totalRealTimeQuizCategories = gameData.events.real_time_quiz.Count;
RealTimeQuiz.Categories = new RealTimeQuiz.QuizCategory[totalRealTimeQuizCategories]; // initalize array
for (int i = 0; i < totalRealTimeQuizCategories; i++)
@@ -972,7 +872,7 @@ namespace HISP.Server
quizCategory.Name = name;
quizCategory.Questions = new RealTimeQuiz.QuizQuestion[totalQuestions];
- for (int ii = 0; ii < totalQuestions; ii++)
+ for(int ii = 0; ii < totalQuestions; ii++)
{
quizCategory.Questions[ii] = new RealTimeQuiz.QuizQuestion(quizCategory);
quizCategory.Questions[ii].Question = gameData.events.real_time_quiz[i].questons[ii].question;
@@ -984,9 +884,9 @@ namespace HISP.Server
Logger.DebugPrint("Registered Real Time Quiz Category: " + name);
}
- }
- private static void registerRandomEvents()
- {
+
+ // Register Random Event
+
int totalRandomEvent = gameData.events.random_events.Count;
for (int i = 0; i < totalRandomEvent; i++)
{
@@ -998,69 +898,19 @@ namespace HISP.Server
int id = gameData.events.random_events[i].id;
string txt = gameData.events.random_events[i].text;
- if (gameData.events.random_events[i].min_money != null)
+ if(gameData.events.random_events[i].min_money != null)
minmoney = gameData.events.random_events[i].min_money;
- if (gameData.events.random_events[i].max_money != null)
+ if(gameData.events.random_events[i].max_money != null)
maxmoney = gameData.events.random_events[i].max_money;
- if (gameData.events.random_events[i].lower_horse_health != null)
+ if(gameData.events.random_events[i].lower_horse_health != null)
lowerHorseHealth = gameData.events.random_events[i].lower_horse_health;
- if (gameData.events.random_events[i].give_object != null)
+ if(gameData.events.random_events[i].give_object != null)
giveObj = gameData.events.random_events[i].give_object;
new RandomEvent(id, txt, minmoney, maxmoney, lowerHorseHealth, giveObj);
Logger.DebugPrint("Registered Random Event: " + txt);
}
- }
- public static void ReadGamedata()
- {
- readGamedataFiles();
- registerTowns();
- registerZones();
- registerAreas();
- registerIsles();
- registerWaypoints();
- registerSpecialTiles();
- registerChatWarningReasons();
- registerFilteredWords();
- registerWordCorrections();
- registerTransportPoints();
- registerTransportLocations();
- registerItems();
- registerThrowables();
- registerNpcs();
- registerQuests();
- registerShops();
- registerAwards();
- registerAbuseReportReasons();
- registerOverlayTileDepth();
- registerTerrianTileTypes();
- registerInns();
- registerPoets();
- registerBreeds();
- registerBreedPricesPawneerOrder();
- registerHorseCategorys();
- registerTrackedItems();
- registerVets();
- registerGroomers();
- registerFarriers();
- registerBarns();
- registerLibaryBooks();
- registerCrafts();
- registerRanchBuildings();
- registerRanchUpgrades();
- registerRanchs();
- registerRiddlerRiddles();
- registerBBCodes();
- registerTrainingPens();
- registerArenas();
- registerLeasers();
- registerSocials();
- registerRealTimeRiddleEvents();
- registerRealTimeQuizEvents();
- registerRandomEvents();
-
- // the rest is easier;
HorseInfo.HorseNames = gameData.horses.names.ToObject();
@@ -1088,10 +938,7 @@ namespace HISP.Server
GameServer.IdleWarning = Convert.ToInt32(gameData.messages.disconnect.client_timeout.warn_after);
GameServer.IdleTimeout = Convert.ToInt32(gameData.messages.disconnect.client_timeout.kick_after);
- ChatMsg.PrivateMessageSound = gameData.messages.chat.pm_sound;
-
- // HISP Specific ...
- Messages.HISPHelpCommandUsageFormat = gameData.hisp_specific.HISP_help_command_usage_format;
+ Chat.PrivateMessageSound = gameData.messages.chat.pm_sound;
// New Users
@@ -2022,7 +1869,7 @@ namespace HISP.Server
Messages.RequiredChatViolations = gameData.messages.chat.violation_points_required;
Messages.GlobalChatFormatForModerators = gameData.messages.chat.for_others.global_format_moderator;
- Messages.DirectChatFormatForModerators = gameData.messages.chat.for_others.dm_format_moderator;
+ // Messages.DirectChatFormatForModerators = gameData.messages.chat.for_others.dm_format_moderator;
Messages.YouWereSentToPrisionIsle = gameData.messages.starved_horse;
diff --git a/HorseIsleServer/LibHISP/Server/GameServer.cs b/HorseIsleServer/LibHISP/Server/GameServer.cs
index 267c413..3ee3812 100755
--- a/HorseIsleServer/LibHISP/Server/GameServer.cs
+++ b/HorseIsleServer/LibHISP/Server/GameServer.cs
@@ -24,8 +24,8 @@ namespace HISP.Server
{
public class GameServer
{
- public static Socket ServerSocket;
+ public static Socket ServerSocket;
public static int IdleTimeout;
public static int IdleWarning;
@@ -206,10 +206,10 @@ namespace HISP.Server
if (client.LoggedIn)
{
- if (!client.User.MajorPriority && !client.User.MinorPriority)
- UpdateArea(client);
-
- byte[] BaseStatsPacketData = PacketBuilder.CreateMoneyPlayerCountAndMail(client.User.Money, GameServer.GetNumberOfPlayers(), client.User.MailBox.UnreadMailCount);
+ if (!client.LoggedinUser.MajorPriority)
+ if(!client.LoggedinUser.MinorPriority)
+ UpdateArea(client);
+ byte[] BaseStatsPacketData = PacketBuilder.CreateMoneyPlayerCountAndMail(client.LoggedinUser.Money, GameServer.GetNumberOfPlayers(), client.LoggedinUser.MailBox.UnreadMailCount);
client.SendPacket(BaseStatsPacketData);
UpdateWorld(client);
@@ -255,7 +255,17 @@ namespace HISP.Server
* eg: OnMovementPacket is whenever the server receies a movement request from the client.
*/
- // HI1 Protocol
+
+ public static void OnCrossdomainPolicyRequest(GameClient sender, byte[] packet)
+ {
+ if (Encoding.UTF8.GetString(packet).StartsWith(""))
+ {
+ Logger.DebugPrint("Cross-Domain-Policy request received from: " + sender.RemoteIp);
+ byte[] crossDomainPolicyResponse = CrossDomainPolicy.GetPolicy();
+ sender.SendPacket(crossDomainPolicyResponse);
+
+ }
+ }
public static void OnPlayerInteration(GameClient sender, byte[] packet)
{
@@ -264,304 +274,301 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Requested Bird Map when not logged in.");
return;
}
- if(packet.Length >= 2)
+ byte method = packet[1];
+ switch(method)
{
- byte method = packet[1];
- switch (method)
- {
- case PacketBuilder.PLAYER_INTERACTION_TRADE_REJECT:
- if (sender.User.TradingWith != null)
- sender.User.TradingWith.CancelTrade();
+ case PacketBuilder.PLAYER_INTERACTION_TRADE_REJECT:
+ if (sender.LoggedinUser.TradingWith != null)
+ sender.LoggedinUser.TradingWith.CancelTrade();
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_ACCEPT:
+ if (sender.LoggedinUser.TradingWith != null)
+ sender.LoggedinUser.TradingWith.AcceptTrade();
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_PROFILE:
+ string packetStr = Encoding.UTF8.GetString(packet);
+ string playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
+ int playerId = -1;
+ try
+ {
+ playerId = int.Parse(playerIdStr);
+ }
+ catch (FormatException)
+ {
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to view profile of User ID NaN.");
break;
- case PacketBuilder.PLAYER_INTERACTION_ACCEPT:
- if (sender.User.TradingWith != null)
- sender.User.TradingWith.AcceptTrade();
+ }
+
+ if(IsUserOnline(playerId))
+ {
+ User user = GetUserById(playerId);
+ sender.LoggedinUser.MajorPriority = true;
+
+ byte[] metaTag = PacketBuilder.CreateMeta(Meta.BuildStatsMenu(user, true));
+ sender.SendPacket(metaTag);
+ }
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_MUTE:
+ packetStr = Encoding.UTF8.GetString(packet);
+ playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
+ playerId = -1;
+ try
+ {
+ playerId = int.Parse(playerIdStr);
+ }
+ catch (FormatException)
+ {
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to MUTE User ID NaN.");
break;
- case PacketBuilder.PLAYER_INTERACTION_PROFILE:
- string packetStr = Encoding.UTF8.GetString(packet);
- string playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- int playerId = -1;
- try
- {
- playerId = int.Parse(playerIdStr);
- }
- catch (FormatException)
- {
- Logger.ErrorPrint(sender.User.Username + " tried to view profile of User ID NaN.");
- break;
- }
+ }
- if (IsUserOnline(playerId))
- {
- User user = GetUserById(playerId);
- sender.User.MajorPriority = true;
+ if (IsUserOnline(playerId))
+ {
+ User user = GetUserById(playerId);
+ if(!sender.LoggedinUser.MutePlayer.IsUserMuted(user))
+ sender.LoggedinUser.MutePlayer.MuteUser(user);
- byte[] metaTag = PacketBuilder.CreateMeta(Meta.BuildStatsMenu(user, true));
- sender.SendPacket(metaTag);
- }
+ byte[] nowMuting = PacketBuilder.CreateChat(Messages.FormatNowMutingPlayer(user.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(nowMuting);
+
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.LoggedinUser));
+ sender.SendPacket(metaPacket);
+ }
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_UNMUTE:
+ packetStr = Encoding.UTF8.GetString(packet);
+ playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
+ playerId = -1;
+ try
+ {
+ playerId = int.Parse(playerIdStr);
+ }
+ catch (FormatException)
+ {
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to UNMUTE User ID NaN.");
break;
- case PacketBuilder.PLAYER_INTERACTION_MUTE:
- packetStr = Encoding.UTF8.GetString(packet);
- playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- playerId = -1;
- try
- {
- playerId = int.Parse(playerIdStr);
- }
- catch (FormatException)
- {
- Logger.ErrorPrint(sender.User.Username + " tried to MUTE User ID NaN.");
- break;
- }
+ }
- if (IsUserOnline(playerId))
- {
- User user = GetUserById(playerId);
- if (!sender.User.MutePlayer.IsUserMuted(user))
- sender.User.MutePlayer.MuteUser(user);
+ if (IsUserOnline(playerId))
+ {
+ User user = GetUserById(playerId);
+ if (sender.LoggedinUser.MutePlayer.IsUserMuted(user))
+ sender.LoggedinUser.MutePlayer.UnmuteUser(user);
- byte[] nowMuting = PacketBuilder.CreateChat(Messages.FormatNowMutingPlayer(user.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.SendPacket(nowMuting);
+ byte[] stoppedMuting = PacketBuilder.CreateChat(Messages.FormatStoppedMutingPlayer(user.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(stoppedMuting);
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.User));
- sender.SendPacket(metaPacket);
- }
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.LoggedinUser));
+ sender.SendPacket(metaPacket);
+ }
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_REMOVE_BUDDY:
+ packetStr = Encoding.UTF8.GetString(packet);
+ playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
+ playerId = -1;
+ try
+ {
+ playerId = int.Parse(playerIdStr);
+ }
+ catch (FormatException)
+ {
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to remove User ID NaN as a buddy.");
break;
- case PacketBuilder.PLAYER_INTERACTION_UNMUTE:
- packetStr = Encoding.UTF8.GetString(packet);
- playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- playerId = -1;
- try
- {
- playerId = int.Parse(playerIdStr);
- }
- catch (FormatException)
- {
- Logger.ErrorPrint(sender.User.Username + " tried to UNMUTE User ID NaN.");
- break;
- }
+ }
- if (IsUserOnline(playerId))
- {
- User user = GetUserById(playerId);
- if (sender.User.MutePlayer.IsUserMuted(user))
- sender.User.MutePlayer.UnmuteUser(user);
- byte[] stoppedMuting = PacketBuilder.CreateChat(Messages.FormatStoppedMutingPlayer(user.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.SendPacket(stoppedMuting);
+ if(sender.LoggedinUser.Friends.IsFriend(playerId))
+ {
+ sender.LoggedinUser.Friends.RemoveFriend(playerId);
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.User));
- sender.SendPacket(metaPacket);
- }
+ byte[] friendRemoved = PacketBuilder.CreateChat(Messages.FormatAddBuddyRemoveBuddy(Database.GetUsername(playerId)), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(friendRemoved);
+
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.LoggedinUser));
+ sender.SendPacket(metaPacket);
+ }
+
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_TAG:
+ packetStr = Encoding.UTF8.GetString(packet);
+ playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
+ playerId = -1;
+ try
+ {
+ playerId = int.Parse(playerIdStr);
+ }
+ catch (FormatException)
+ {
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to trade with User ID NaN.");
break;
- case PacketBuilder.PLAYER_INTERACTION_REMOVE_BUDDY:
- packetStr = Encoding.UTF8.GetString(packet);
- playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- playerId = -1;
- try
- {
- playerId = int.Parse(playerIdStr);
- }
- catch (FormatException)
- {
- Logger.ErrorPrint(sender.User.Username + " tried to remove User ID NaN as a buddy.");
- break;
- }
+ }
-
- if (sender.User.Friends.IsFriend(playerId))
+ if (IsUserOnline(playerId))
+ {
+ User user = GetUserById(playerId);;
+ string TAGYourIT = Messages.FormatTagYourIt(user.Username, sender.LoggedinUser.Username);
+ int totalBuds = 0;
+ foreach(int friendId in sender.LoggedinUser.Friends.List)
{
- sender.User.Friends.RemoveFriend(playerId);
+ if (friendId == sender.LoggedinUser.Id)
+ continue;
- byte[] friendRemoved = PacketBuilder.CreateChat(Messages.FormatAddBuddyRemoveBuddy(Database.GetUsername(playerId)), PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.SendPacket(friendRemoved);
-
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.User));
- sender.SendPacket(metaPacket);
- }
-
- break;
- case PacketBuilder.PLAYER_INTERACTION_TAG:
- packetStr = Encoding.UTF8.GetString(packet);
- playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- playerId = -1;
- try
- {
- playerId = int.Parse(playerIdStr);
- }
- catch (FormatException)
- {
- Logger.ErrorPrint(sender.User.Username + " tried to trade with User ID NaN.");
- break;
- }
-
- if (IsUserOnline(playerId))
- {
- User user = GetUserById(playerId); ;
- string TAGYourIT = Messages.FormatTagYourIt(user.Username, sender.User.Username);
- int totalBuds = 0;
- foreach (int friendId in sender.User.Friends.List)
+ if(IsUserOnline(friendId))
{
- if (friendId == sender.User.Id)
- continue;
-
- if (IsUserOnline(friendId))
- {
- User buddy = GetUserById(friendId);
- byte[] tagYourItPacket = PacketBuilder.CreateChat(TAGYourIT, PacketBuilder.CHAT_BOTTOM_RIGHT);
- buddy.Client.SendPacket(tagYourItPacket);
- totalBuds++;
- }
+ User buddy = GetUserById(friendId);
+ byte[] tagYourItPacket = PacketBuilder.CreateChat(TAGYourIT, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ buddy.LoggedinClient.SendPacket(tagYourItPacket);
+ totalBuds++;
}
- string budStr = Messages.FormatTagTotalBuddies(totalBuds);
-
- byte[] tagYouItPacket = PacketBuilder.CreateChat(TAGYourIT + budStr, PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.SendPacket(tagYouItPacket);
-
}
+ string budStr = Messages.FormatTagTotalBuddies(totalBuds);
+
+ byte[] tagYouItPacket = PacketBuilder.CreateChat(TAGYourIT + budStr, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(tagYouItPacket);
+
+ }
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_ADD_BUDDY:
+ packetStr = Encoding.UTF8.GetString(packet);
+ playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
+ playerId = -1;
+ try
+ {
+ playerId = int.Parse(playerIdStr);
+ }
+ catch (FormatException)
+ {
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to add friend with User ID NaN.");
break;
- case PacketBuilder.PLAYER_INTERACTION_ADD_BUDDY:
- packetStr = Encoding.UTF8.GetString(packet);
- playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- playerId = -1;
- try
- {
- playerId = int.Parse(playerIdStr);
- }
- catch (FormatException)
- {
- Logger.ErrorPrint(sender.User.Username + " tried to add friend with User ID NaN.");
- break;
- }
- if (IsUserOnline(playerId))
- {
- User userToAdd = GetUserById(playerId);
- sender.User.Friends.AddFriend(userToAdd);
- }
+ }
+ if (IsUserOnline(playerId))
+ {
+ User userToAdd = GetUserById(playerId);
+ sender.LoggedinUser.Friends.AddFriend(userToAdd);
+ }
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_ADD_ITEM:
+ if (sender.LoggedinUser.TradingWith == null)
break;
- case PacketBuilder.PLAYER_INTERACTION_ADD_ITEM:
- if (sender.User.TradingWith == null)
- break;
- if (packet.Length < 5)
- break;
-
- packetStr = Encoding.UTF8.GetString(packet);
- string idStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- char firstChar = idStr[0];
- switch (firstChar)
- {
- case '3': // Trade Money
-
- if (sender.User.Bids.Length > 0)
- {
- byte[] cantBuyWhileAuctioning = PacketBuilder.CreateChat(Messages.AuctionNoOtherTransactionAllowed, PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.SendPacket(cantBuyWhileAuctioning);
- break;
- }
-
- sender.User.TradeMenuPriority = true;
- sender.User.AttemptingToOfferItem = -1;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTradeAddMoney(sender.User.TradingWith.MoneyOffered));
- sender.SendPacket(metaPacket);
-
- break;
- case '2': // Trade Horse
- string horseRandomIdStr = idStr.Substring(1);
- int horseRandomId = -1;
- try
- {
- horseRandomId = int.Parse(horseRandomIdStr);
- }
- catch (FormatException)
- {
- break;
- }
-
- if (!sender.User.HorseInventory.HorseIdExist(horseRandomId))
- break;
-
- HorseInstance horse = sender.User.HorseInventory.GetHorseById(horseRandomId);
- if (!sender.User.TradingWith.HorsesOffered.Contains(horse))
- sender.User.TradingWith.OfferHorse(horse);
-
- UpdateArea(sender);
-
- if (sender.User.TradingWith != null)
- if (!sender.User.TradingWith.OtherTrade.Trader.TradeMenuPriority)
- UpdateArea(sender.User.TradingWith.OtherTrade.Trader.Client);
-
- break;
- case '1': // Trade Item
- string itemIdStr = idStr.Substring(1);
- int itemId = -1;
- try
- {
- itemId = int.Parse(itemIdStr);
- }
- catch (FormatException)
- {
- break;
- }
-
- if (!sender.User.Inventory.HasItemId(itemId))
- break;
-
- sender.User.TradeMenuPriority = true;
- sender.User.AttemptingToOfferItem = itemId;
- InventoryItem item = sender.User.Inventory.GetItemByItemId(itemId);
- byte[] addItemPacket = PacketBuilder.CreateMeta(Meta.BuildTradeAddItem(item.ItemInstances.Length));
- sender.SendPacket(addItemPacket);
- break;
-
- }
+ if (packet.Length < 5)
break;
- case PacketBuilder.PLAYER_INTERACTION_TRADE:
- packetStr = Encoding.UTF8.GetString(packet);
- playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- playerId = -1;
- try
- {
- playerId = int.Parse(playerIdStr);
- }
- catch (FormatException)
- {
- Logger.ErrorPrint(sender.User.Username + " tried to trade with User ID NaN.");
- break;
- }
- if (IsUserOnline(playerId))
- {
- User user = GetUserById(playerId);
- byte[] tradeMsg = PacketBuilder.CreateChat(Messages.TradeRequiresBothPlayersMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.SendPacket(tradeMsg);
- sender.User.PendingTradeTo = user.Id;
+ packetStr = Encoding.UTF8.GetString(packet);
+ string idStr = packetStr.Substring(2, packetStr.Length - 4);
+ char firstChar = idStr[0];
+ switch(firstChar)
+ {
+ case '3': // Trade Money
- if (user.PendingTradeTo == sender.User.Id)
+ if (sender.LoggedinUser.Bids.Length > 0)
{
- // Start Trade
- Trade tradeWithYou = new Trade(sender.User);
- Trade tradeWithOther = new Trade(user);
- tradeWithYou.OtherTrade = tradeWithOther;
- tradeWithOther.OtherTrade = tradeWithYou;
-
- sender.User.TradingWith = tradeWithYou;
- user.TradingWith = tradeWithOther;
-
- UpdateArea(sender);
- UpdateArea(user.Client);
+ byte[] cantBuyWhileAuctioning = PacketBuilder.CreateChat(Messages.AuctionNoOtherTransactionAllowed, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(cantBuyWhileAuctioning);
+ break;
}
+ sender.LoggedinUser.TradeMenuPriority = true;
+ sender.LoggedinUser.AttemptingToOfferItem = -1;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTradeAddMoney(sender.LoggedinUser.TradingWith.MoneyOffered));
+ sender.SendPacket(metaPacket);
+
+ break;
+ case '2': // Trade Horse
+ string horseRandomIdStr = idStr.Substring(1);
+ int horseRandomId = -1;
+ try
+ {
+ horseRandomId = int.Parse(horseRandomIdStr);
+ }
+ catch (FormatException)
+ {
+ break;
+ }
+
+ if (!sender.LoggedinUser.HorseInventory.HorseIdExist(horseRandomId))
+ break;
+
+ HorseInstance horse = sender.LoggedinUser.HorseInventory.GetHorseById(horseRandomId);
+ if(!sender.LoggedinUser.TradingWith.HorsesOffered.Contains(horse))
+ sender.LoggedinUser.TradingWith.OfferHorse(horse);
+
+ UpdateArea(sender);
+
+ if (sender.LoggedinUser.TradingWith != null)
+ if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
+ UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
+
+ break;
+ case '1': // Trade Item
+ string itemIdStr = idStr.Substring(1);
+ int itemId = -1;
+ try
+ {
+ itemId = int.Parse(itemIdStr);
+ }
+ catch(FormatException)
+ {
+ break;
+ }
+
+ if (!sender.LoggedinUser.Inventory.HasItemId(itemId))
+ break;
+
+ sender.LoggedinUser.TradeMenuPriority = true;
+ sender.LoggedinUser.AttemptingToOfferItem = itemId;
+ InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
+ byte[] addItemPacket = PacketBuilder.CreateMeta(Meta.BuildTradeAddItem(item.ItemInstances.Length));
+ sender.SendPacket(addItemPacket);
+ break;
+
+ }
+ break;
+ case PacketBuilder.PLAYER_INTERACTION_TRADE:
+ packetStr = Encoding.UTF8.GetString(packet);
+ playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
+ playerId = -1;
+ try
+ {
+ playerId = int.Parse(playerIdStr);
+ }
+ catch(FormatException)
+ {
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to trade with User ID NaN.");
+ break;
+ }
+ if(IsUserOnline(playerId))
+ {
+ User user = GetUserById(playerId);
+ byte[] tradeMsg = PacketBuilder.CreateChat(Messages.TradeRequiresBothPlayersMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.SendPacket(tradeMsg);
+
+ sender.LoggedinUser.PendingTradeTo = user.Id;
+
+ if (user.PendingTradeTo == sender.LoggedinUser.Id)
+ {
+ // Start Trade
+ Trade tradeWithYou = new Trade(sender.LoggedinUser);
+ Trade tradeWithOther = new Trade(user);
+ tradeWithYou.OtherTrade = tradeWithOther;
+ tradeWithOther.OtherTrade = tradeWithYou;
+
+ sender.LoggedinUser.TradingWith = tradeWithYou;
+ user.TradingWith = tradeWithOther;
+
+ UpdateArea(sender);
+ UpdateArea(user.LoggedinClient);
}
- break;
- default:
- Logger.DebugPrint("Unknown Player interaction Method: 0x" + method.ToString("X") + " Packet: " + BitConverter.ToString(packet).Replace("-", " "));
- break;
- }
- return;
+
+ }
+ break;
+ default:
+ Logger.DebugPrint("Unknown Player interaction Method: 0x" + method.ToString("X") + " Packet: "+BitConverter.ToString(packet).Replace("-", " "));
+ break;
}
+ return;
}
public static void OnSocialPacket(GameClient sender, byte[] packet)
{
@@ -576,7 +583,7 @@ namespace HISP.Server
{
case PacketBuilder.SOCIALS_MENU:
string packetStr = Encoding.UTF8.GetString(packet);
- string playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
int playerId = -1;
try
{
@@ -584,22 +591,22 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to socialize with User ID NaN.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to socialize with User ID NaN.");
break;
}
if(IsUserOnline(playerId))
{
- sender.User.SocializingWith = GetUserById(playerId);
+ sender.LoggedinUser.SocializingWith = GetUserById(playerId);
- sender.User.SocializingWith.AddSocailizedWith(sender.User);
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildSocialMenu(sender.User.CurrentlyRidingHorse != null));
+ sender.LoggedinUser.SocializingWith.AddSocailizedWith(sender.LoggedinUser);
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildSocialMenu(sender.LoggedinUser.CurrentlyRidingHorse != null));
sender.SendPacket(metaPacket);
}
else
{
- Logger.ErrorPrint(sender.User.Username + " tried to socialize with User #"+playerId.ToString()+" but there not online.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to socialize with User #"+playerId.ToString()+" but there not online.");
}
break;
case PacketBuilder.SOCIALS_USE:
@@ -609,23 +616,23 @@ namespace HISP.Server
* Check if player being socialed with
* is actually on this tile, not muted, etc
*/
- if (sender.User.SocializingWith != null && social.BaseSocialType.Type != "GROUP")
+ if (sender.LoggedinUser.SocializingWith != null && social.BaseSocialType.Type != "GROUP")
{
- if (sender.User.SocializingWith.MuteAll || sender.User.SocializingWith.MuteSocials)
+ if (sender.LoggedinUser.SocializingWith.MuteAll || sender.LoggedinUser.SocializingWith.MuteSocials)
{
byte[] cantSocialize = PacketBuilder.CreateChat(Messages.PlayerIgnoringAllSocials, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantSocialize);
break;
}
- if (sender.User.SocializingWith.MutePlayer.IsUserMuted(sender.User))
+ if (sender.LoggedinUser.SocializingWith.MutePlayer.IsUserMuted(sender.LoggedinUser))
{
byte[] cantSocialize = PacketBuilder.CreateChat(Messages.PlayerIgnoringYourSocials, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantSocialize);
break;
}
- if(sender.User.SocializingWith.X != sender.User.X && sender.User.SocializingWith.Y != sender.User.Y)
+ if(sender.LoggedinUser.SocializingWith.X != sender.LoggedinUser.X && sender.LoggedinUser.SocializingWith.Y != sender.LoggedinUser.Y)
{
byte[] playerNotNearby = PacketBuilder.CreateChat(Messages.SocialPlayerNoLongerNearby, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(playerNotNearby);
@@ -636,43 +643,43 @@ namespace HISP.Server
if(social.ForEveryone != null)
{
- foreach (User user in GetUsersAt(sender.User.X, sender.User.Y, true, true))
+ foreach (User user in GetUsersAt(sender.LoggedinUser.X, sender.LoggedinUser.Y, true, true))
{
if (social.BaseSocialType.Type != "GROUP")
- if (user.Id == sender.User.SocializingWith.Id)
+ if (user.Id == sender.LoggedinUser.SocializingWith.Id)
continue;
- if (user.Id == sender.User.Id)
+ if (user.Id == sender.LoggedinUser.Id)
continue;
if (user.MuteAll || user.MuteSocials)
continue;
string socialTarget = "";
- if(sender.User.SocializingWith != null)
- socialTarget = sender.User.SocializingWith.Username;
- byte[] msgEveryone = PacketBuilder.CreateChat(Messages.FormatSocialMessage(social.ForEveryone, socialTarget, sender.User.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(msgEveryone);
+ if(sender.LoggedinUser.SocializingWith != null)
+ socialTarget = sender.LoggedinUser.SocializingWith.Username;
+ byte[] msgEveryone = PacketBuilder.CreateChat(Messages.FormatSocialMessage(social.ForEveryone, socialTarget, sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ user.LoggedinClient.SendPacket(msgEveryone);
}
}
if(social.ForTarget != null)
{
- if(sender.User.SocializingWith != null)
+ if(sender.LoggedinUser.SocializingWith != null)
{
if (social.BaseSocialType.Type != "GROUP")
{
- byte[] msgTarget = PacketBuilder.CreateChat(Messages.FormatSocialMessage(social.ForTarget, sender.User.SocializingWith.Username, sender.User.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.User.SocializingWith.Client.SendPacket(msgTarget);
+ byte[] msgTarget = PacketBuilder.CreateChat(Messages.FormatSocialMessage(social.ForTarget, sender.LoggedinUser.SocializingWith.Username, sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.LoggedinUser.SocializingWith.LoggedinClient.SendPacket(msgTarget);
}
}
}
if(social.ForSender != null)
{
string socialTarget = "";
- if (sender.User.SocializingWith != null)
- socialTarget = sender.User.SocializingWith.Username;
+ if (sender.LoggedinUser.SocializingWith != null)
+ socialTarget = sender.LoggedinUser.SocializingWith.Username;
- byte[] msgSender = PacketBuilder.CreateChat(Messages.FormatSocialMessage(social.ForSender, socialTarget, sender.User.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ byte[] msgSender = PacketBuilder.CreateChat(Messages.FormatSocialMessage(social.ForSender, socialTarget, sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(msgSender);
@@ -680,20 +687,20 @@ namespace HISP.Server
if (social.SoundEffect != null)
{
- foreach (User user in GetUsersAt(sender.User.X, sender.User.Y, true, true))
+ foreach (User user in GetUsersAt(sender.LoggedinUser.X, sender.LoggedinUser.Y, true, true))
{
if (user.MuteAll || user.MuteSocials)
continue;
- byte[] soundEffect = PacketBuilder.CreatePlaySound(social.SoundEffect);
- user.Client.SendPacket(soundEffect);
+ byte[] soundEffect = PacketBuilder.CreatePlaysoundPacket(social.SoundEffect);
+ user.LoggedinClient.SendPacket(soundEffect);
}
}
break;
default:
- Logger.ErrorPrint(sender.User.Username + " unknown social: " + method.ToString("X") + " packet dump: " + BitConverter.ToString(packet).Replace("-", " "));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " unknown social: " + method.ToString("X") + " packet dump: " + BitConverter.ToString(packet).Replace("-", " "));
break;
}
@@ -706,9 +713,9 @@ namespace HISP.Server
return;
}
- if(sender.User.Inventory.HasItemId(Item.Telescope))
+ if(sender.LoggedinUser.Inventory.HasItemId(Item.Telescope))
{
- byte[] birdMapPacket = PacketBuilder.CreateBirdMap(sender.User.X, sender.User.Y);
+ byte[] birdMapPacket = PacketBuilder.CreateBirdMap(sender.LoggedinUser.X, sender.LoggedinUser.Y);
sender.SendPacket(birdMapPacket);
}
else
@@ -725,9 +732,9 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Sent auction packet when not logged in.");
return;
}
- if (packet.Length < 3)
+ if (packet.Length < 4)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid sized auction packet: " + BitConverter.ToString(packet).Replace("-", " "));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid sized auction packet: " + BitConverter.ToString(packet).Replace("-", " "));
return;
}
byte method = packet[1];
@@ -755,9 +762,9 @@ namespace HISP.Server
case PacketBuilder.AUCITON_BID_100M:
bidAmount = 100000000;
doBids:;
- if(World.InSpecialTile(sender.User.X, sender.User.Y))
+ if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if(tile.Code.StartsWith("AUCTION-"))
@@ -765,7 +772,7 @@ namespace HISP.Server
Auction auctionRoom = Auction.GetAuctionRoomById(int.Parse(tile.Code.Split('-')[1]));
int auctionEntryId = -1;
string packetStr = Encoding.UTF8.GetString(packet);
- string auctionEntryStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string auctionEntryStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
auctionEntryId = int.Parse(auctionEntryStr);
@@ -779,7 +786,7 @@ namespace HISP.Server
break;
Auction.AuctionEntry entry = auctionRoom.GetAuctionEntry(auctionEntryId);
- entry.Bid(sender.User, bidAmount);
+ entry.Bid(sender.LoggedinUser, bidAmount);
UpdateAreaForAll(tile.X, tile.Y, true, null);
}
@@ -801,9 +808,9 @@ namespace HISP.Server
return;
}
- if(packet.Length < 2)
+ if(packet.Length < 3)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid sized horse interaction packet: " + BitConverter.ToString(packet).Replace("-", " "));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid sized horse interaction packet: " + BitConverter.ToString(packet).Replace("-", " "));
return;
}
@@ -811,23 +818,23 @@ namespace HISP.Server
switch(method)
{
case PacketBuilder.HORSE_LIST:
- sender.User.MajorPriority = true;
- byte[] metaTags = PacketBuilder.CreateMeta(Meta.BuildHorseInventory(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaTags = PacketBuilder.CreateMeta(Meta.BuildHorseInventory(sender.LoggedinUser));
sender.SendPacket(metaTags);
break;
case PacketBuilder.HORSE_PROFILE:
byte methodProfileEdit = packet[2];
if(methodProfileEdit == PacketBuilder.HORSE_PROFILE_EDIT)
{
- if (sender.User.LastViewedHorse != null)
+ if (sender.LoggedinUser.LastViewedHorse != null)
{
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseDescriptionEditMeta(sender.User.LastViewedHorse));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseDescriptionEditMeta(sender.LoggedinUser.LastViewedHorse));
sender.SendPacket(metaPacket);
}
else
{
- Logger.ErrorPrint(sender.User.Username + "Trying to edit description of no horse");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + "Trying to edit description of no horse");
}
}
else
@@ -838,7 +845,7 @@ namespace HISP.Server
case PacketBuilder.HORSE_FEED:
int randomId = 0;
string packetStr = Encoding.UTF8.GetString(packet);
- string randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -846,28 +853,28 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance horseFeedInst = sender.User.HorseInventory.GetHorseById(randomId);
+ HorseInstance horseFeedInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = horseFeedInst;
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseFeedMenu(horseFeedInst, sender.User));
+ sender.LoggedinUser.LastViewedHorse = horseFeedInst;
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseFeedMenu(horseFeedInst, sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to feed at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to feed at a non existant horse.");
break;
}
case PacketBuilder.HORSE_PET:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -875,16 +882,18 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance horsePetInst = sender.User.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = horsePetInst;
+ HorseInstance horsePetInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ sender.LoggedinUser.LastViewedHorse = horsePetInst;
int randMoodAddition = RandomNumberGenerator.Next(1, 20);
int randTiredMinus = RandomNumberGenerator.Next(1, 10);
+
+
string msgs = "";
if (horsePetInst.BasicStats.Mood + randMoodAddition >= 1000)
{
@@ -906,14 +915,14 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to feed at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to feed at a non existant horse.");
break;
}
case PacketBuilder.HORSE_VET_SERVICE_ALL:
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("VET-"))
@@ -923,7 +932,7 @@ namespace HISP.Server
Vet vet = Vet.GetVetById(vetId);
int price = 0;
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
price += vet.CalculatePrice(horse.BasicStats.Health);
if (price == 0)
{
@@ -931,15 +940,15 @@ namespace HISP.Server
sender.SendPacket(notNeededMessagePacket);
break;
}
- else if (sender.User.Money >= price)
+ else if (sender.LoggedinUser.Money >= price)
{
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
horse.BasicStats.Health = 1000;
byte[] healedMessagePacket = PacketBuilder.CreateChat(Messages.VetAllFullHealthRecoveredMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(healedMessagePacket);
- sender.User.TakeMoney(price);
+ sender.LoggedinUser.TakeMoney(price);
}
else
@@ -957,7 +966,7 @@ namespace HISP.Server
case PacketBuilder.HORSE_VET_SERVICE:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
if (randomIdStr == "NaN")
break;
@@ -968,17 +977,17 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance horseVetServiceInst = sender.User.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = horseVetServiceInst;
+ HorseInstance horseVetServiceInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ sender.LoggedinUser.LastViewedHorse = horseVetServiceInst;
- if(World.InSpecialTile(sender.User.X, sender.User.Y))
+ if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("VET-"))
@@ -988,10 +997,10 @@ namespace HISP.Server
Vet vet = Vet.GetVetById(vetId);
int price = vet.CalculatePrice(horseVetServiceInst.BasicStats.Health);
- if (sender.User.Money >= price)
+ if (sender.LoggedinUser.Money >= price)
{
horseVetServiceInst.BasicStats.Health = 1000;
- sender.User.TakeMoney(price);
+ sender.LoggedinUser.TakeMoney(price);
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatVetHorseAtFullHealthMessage(horseVetServiceInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(messagePacket);
@@ -1011,14 +1020,14 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to use vet services on a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use vet services on a non existant horse.");
break;
}
case PacketBuilder.HORSE_SHOE_STEEL:
case PacketBuilder.HORSE_SHOE_IRON:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
if (randomIdStr == "NaN")
break;
@@ -1029,17 +1038,17 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance horseFarrierServiceInst = sender.User.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = horseFarrierServiceInst;
+ HorseInstance horseFarrierServiceInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ sender.LoggedinUser.LastViewedHorse = horseFarrierServiceInst;
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("FARRIER-"))
@@ -1065,10 +1074,10 @@ namespace HISP.Server
msg = Messages.FormatFarrierPutOnIronShoesMessage(incAmount, 1000);
}
- if (sender.User.Money >= price)
+ if (sender.LoggedinUser.Money >= price)
{
horseFarrierServiceInst.BasicStats.Shoes = incAmount;
- sender.User.TakeMoney(price);
+ sender.LoggedinUser.TakeMoney(price);
byte[] messagePacket = PacketBuilder.CreateChat(msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(messagePacket);
@@ -1088,13 +1097,13 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to use farrier services on a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use farrier services on a non existant horse.");
break;
}
case PacketBuilder.HORSE_SHOE_ALL:
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("FARRIER-"))
@@ -1105,7 +1114,7 @@ namespace HISP.Server
Farrier farrier = Farrier.GetFarrierById(farrierId);
int totalPrice = 0;
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
{
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
{
@@ -1113,16 +1122,16 @@ namespace HISP.Server
}
}
- if (sender.User.Money >= totalPrice)
+ if (sender.LoggedinUser.Money >= totalPrice)
{
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
{
if (horse.BasicStats.Shoes < farrier.SteelShoesAmount)
{
horse.BasicStats.Shoes = farrier.SteelShoesAmount;
}
}
- sender.User.TakeMoney(totalPrice);
+ sender.LoggedinUser.TakeMoney(totalPrice);
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatFarrierPutOnSteelShoesAllMesssage(farrier.SteelShoesAmount, 1000), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(messagePacket);
@@ -1142,7 +1151,7 @@ namespace HISP.Server
case PacketBuilder.HORSE_GROOM_SERVICE:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
if (randomIdStr == "NaN")
break;
@@ -1153,17 +1162,17 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance groomHorseInst = sender.User.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = groomHorseInst;
+ HorseInstance groomHorseInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ sender.LoggedinUser.LastViewedHorse = groomHorseInst;
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("GROOMER-"))
@@ -1175,10 +1184,10 @@ namespace HISP.Server
int price = groomer.CalculatePrice(groomHorseInst.BasicStats.Groom);
- if (sender.User.Money >= price)
+ if (sender.LoggedinUser.Money >= price)
{
groomHorseInst.BasicStats.Groom = groomer.Max;
- sender.User.TakeMoney(price);
+ sender.LoggedinUser.TakeMoney(price);
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatHorseGroomedToBestAbilities(groomHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(messagePacket);
@@ -1198,13 +1207,13 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to use groomer services on a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use groomer services on a non existant horse.");
break;
}
case PacketBuilder.HORSE_GROOM_SERVICE_ALL:
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("GROOMER-"))
@@ -1215,7 +1224,7 @@ namespace HISP.Server
int price = 0;
int count = 0;
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
{
if (horse.BasicStats.Groom < groomer.Max)
{
@@ -1229,16 +1238,16 @@ namespace HISP.Server
sender.SendPacket(notNeededMessagePacket);
break;
}
- else if (sender.User.Money >= price)
+ else if (sender.LoggedinUser.Money >= price)
{
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
if (horse.BasicStats.Groom < groomer.Max)
horse.BasicStats.Groom = groomer.Max;
byte[] groomedAllHorsesPacket = PacketBuilder.CreateChat(Messages.GroomerBestToHisAbilitiesALL, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(groomedAllHorsesPacket);
- sender.User.TakeMoney(price);
+ sender.LoggedinUser.TakeMoney(price);
}
else
@@ -1256,7 +1265,7 @@ namespace HISP.Server
case PacketBuilder.HORSE_BARN_SERVICE:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
if (randomIdStr == "NaN")
break;
@@ -1267,17 +1276,17 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance barnHorseInst = sender.User.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = barnHorseInst;
+ HorseInstance barnHorseInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ sender.LoggedinUser.LastViewedHorse = barnHorseInst;
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if (tile.Code != null)
{
if (tile.Code.StartsWith("BARN-"))
@@ -1289,12 +1298,12 @@ namespace HISP.Server
int price = barn.CalculatePrice(barnHorseInst.BasicStats.Tiredness, barnHorseInst.BasicStats.Hunger, barnHorseInst.BasicStats.Thirst); ;
- if (sender.User.Money >= price)
+ if (sender.LoggedinUser.Money >= price)
{
barnHorseInst.BasicStats.Tiredness = 1000;
barnHorseInst.BasicStats.Hunger = 1000;
barnHorseInst.BasicStats.Thirst = 1000;
- sender.User.TakeMoney(price);
+ sender.LoggedinUser.TakeMoney(price);
byte[] messagePacket = PacketBuilder.CreateChat(Messages.FormatBarnHorseFullyFed(barnHorseInst.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(messagePacket);
@@ -1314,13 +1323,13 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to use groomer services on a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use groomer services on a non existant horse.");
break;
}
case PacketBuilder.HORSE_BARN_SERVICE_ALL:
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("BARN-"))
@@ -1330,7 +1339,7 @@ namespace HISP.Server
Barn barn = Barn.GetBarnById(barnId);
int totalPrice = 0;
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
{
int price = barn.CalculatePrice(horse.BasicStats.Tiredness, horse.BasicStats.Hunger, horse.BasicStats.Thirst);
if (price > 0)
@@ -1342,9 +1351,9 @@ namespace HISP.Server
sender.SendPacket(notNeededMessagePacket);
break;
}
- else if (sender.User.Money >= totalPrice)
+ else if (sender.LoggedinUser.Money >= totalPrice)
{
- foreach (HorseInstance horse in sender.User.HorseInventory.HorseList)
+ foreach (HorseInstance horse in sender.LoggedinUser.HorseInventory.HorseList)
{
horse.BasicStats.Tiredness = 1000;
horse.BasicStats.Thirst = 1000;
@@ -1354,7 +1363,7 @@ namespace HISP.Server
byte[] barnedAllHorsesPacket = PacketBuilder.CreateChat(Messages.BarnAllHorsesFullyFed, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(barnedAllHorsesPacket);
- sender.User.TakeMoney(totalPrice);
+ sender.LoggedinUser.TakeMoney(totalPrice);
}
else
@@ -1372,7 +1381,7 @@ namespace HISP.Server
case PacketBuilder.HORSE_TRAIN:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
if (randomIdStr == "NaN")
break;
@@ -1383,17 +1392,17 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance trainHorseInst = sender.User.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = trainHorseInst;
+ HorseInstance trainHorseInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ sender.LoggedinUser.LastViewedHorse = trainHorseInst;
- if (World.InSpecialTile(sender.User.X, sender.User.Y))
+ if (World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if (tile.Code != null)
{
if (tile.Code.StartsWith("TRAINER-"))
@@ -1409,9 +1418,9 @@ namespace HISP.Server
Trainer trainer = Trainer.GetTrainerById(trainerId);
- if (sender.User.Money >= trainer.MoneyCost)
+ if (sender.LoggedinUser.Money >= trainer.MoneyCost)
{
- sender.User.TakeMoney(trainer.MoneyCost);
+ sender.LoggedinUser.TakeMoney(trainer.MoneyCost);
trainHorseInst.BasicStats.Mood -= trainer.MoodCost;
trainHorseInst.BasicStats.Thirst -= trainer.ThirstCost;
trainHorseInst.BasicStats.Hunger -= trainer.HungerCost;
@@ -1439,7 +1448,7 @@ namespace HISP.Server
break;
}
trainHorseInst.BasicStats.Experience += trainer.ExperienceGained;
- if (!sender.User.Subscribed)
+ if (!sender.LoggedinUser.Subscribed)
trainHorseInst.TrainTimer = 1440;
else
trainHorseInst.TrainTimer = 720;
@@ -1448,12 +1457,12 @@ namespace HISP.Server
sender.SendPacket(trainSuccessfulMessage);
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count++;
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count++;
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count >= 1000)
- sender.User.Awards.AddAward(Award.GetAwardById(26)); // Pro Trainer
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count >= 10000)
- sender.User.Awards.AddAward(Award.GetAwardById(53)); // Top Trainer
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count >= 1000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(26)); // Pro Trainer
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Training).Count >= 10000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(53)); // Top Trainer
UpdateArea(sender);
}
@@ -1471,13 +1480,13 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to use trauber services on a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use trauber services on a non existant horse.");
break;
}
case PacketBuilder.HORSE_GIVE_FEED:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -1485,19 +1494,19 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if(sender.User.LastViewedHorse == null)
+ if(sender.LoggedinUser.LastViewedHorse == null)
{
- Logger.InfoPrint(sender.User.Username + " Tried to feed a non existant horse.");
+ Logger.InfoPrint(sender.LoggedinUser.Username + " Tried to feed a non existant horse.");
break;
}
- if (sender.User.Inventory.HasItem(randomId))
+ if (sender.LoggedinUser.Inventory.HasItem(randomId))
{
- InventoryItem item = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem item = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
Item.ItemInformation itemInfo = item.ItemInstances[0].GetItemInfo();
- HorseInstance horseInstance = sender.User.LastViewedHorse;
+ HorseInstance horseInstance = sender.LoggedinUser.LastViewedHorse;
bool tooMuch = false;
bool changePersonality = false;
bool changeInteligence = false;
@@ -1555,7 +1564,7 @@ namespace HISP.Server
break;
}
}
- sender.User.Inventory.Remove(item.ItemInstances[0]);
+ sender.LoggedinUser.Inventory.Remove(item.ItemInstances[0]);
if(changePersonality)
{
@@ -1602,8 +1611,8 @@ namespace HISP.Server
sender.SendPacket(horseCouldntFinishItAll);
}
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseFeedMenu(sender.User.LastViewedHorse, sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseFeedMenu(sender.LoggedinUser.LastViewedHorse, sender.LoggedinUser));
sender.SendPacket(metaPacket);
@@ -1611,13 +1620,13 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to feed a non existant item to a horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to feed a non existant item to a horse.");
break;
}
case PacketBuilder.HORSE_ENTER_ARENA:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -1625,15 +1634,15 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance horseInstance = sender.User.HorseInventory.GetHorseById(randomId);
- if(World.InSpecialTile(sender.User.X, sender.User.Y))
+ HorseInstance horseInstance = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("ARENA-"))
@@ -1641,7 +1650,7 @@ namespace HISP.Server
string[] arenaInfo = tile.Code.Split('-');
int arenaId = int.Parse(arenaInfo[1]);
Arena arena = Arena.GetAreaById(arenaId);
- if (!Arena.UserHasEnteredHorseInAnyArena(sender.User))
+ if (!Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser))
{
if (horseInstance.BasicStats.Thirst <= 200)
{
@@ -1676,9 +1685,9 @@ namespace HISP.Server
- if (sender.User.Money >= arena.EntryCost)
+ if (sender.LoggedinUser.Money >= arena.EntryCost)
{
- arena.AddEntry(sender.User, horseInstance);
+ arena.AddEntry(sender.LoggedinUser, horseInstance);
break;
}
else
@@ -1700,14 +1709,14 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to enter a non existant horse into a competition.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to enter a non existant horse into a competition.");
break;
}
break;
case PacketBuilder.HORSE_RELEASE:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -1715,22 +1724,22 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- if(World.InTown(sender.User.X, sender.User.Y))
+ if(World.InTown(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- Logger.HackerPrint(sender.User.Username + " Tried to reelease a horse while inside a town....");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to reelease a horse while inside a town....");
break;
}
- HorseInstance horseReleaseInst = sender.User.HorseInventory.GetHorseById(randomId);
- if(sender.User.CurrentlyRidingHorse != null)
+ HorseInstance horseReleaseInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
+ if(sender.LoggedinUser.CurrentlyRidingHorse != null)
{
- if(horseReleaseInst.RandomId == sender.User.CurrentlyRidingHorse.RandomId)
+ if(horseReleaseInst.RandomId == sender.LoggedinUser.CurrentlyRidingHorse.RandomId)
{
byte[] errorChatPacket = PacketBuilder.CreateChat(Messages.HorseCantReleaseTheHorseYourRidingOn, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(errorChatPacket);
@@ -1740,28 +1749,28 @@ namespace HISP.Server
}
if (horseReleaseInst.Description == "")
- horseReleaseInst.Description += Messages.FormatHorseReleasedBy(sender.User.Username);
+ horseReleaseInst.Description += Messages.FormatHorseReleasedBy(sender.LoggedinUser.Username);
- Logger.InfoPrint(sender.User.Username + " RELEASED HORSE: " + horseReleaseInst.Name + " (a " + horseReleaseInst.Breed.Name + ").");
+ Logger.InfoPrint(sender.LoggedinUser.Username + " RELEASED HORSE: " + horseReleaseInst.Name + " (a " + horseReleaseInst.Breed.Name + ").");
- sender.User.HorseInventory.DeleteHorse(horseReleaseInst);
- new WildHorse(horseReleaseInst, sender.User.X, sender.User.Y, 60, true);
+ sender.LoggedinUser.HorseInventory.DeleteHorse(horseReleaseInst);
+ new WildHorse(horseReleaseInst, sender.LoggedinUser.X, sender.LoggedinUser.Y, 60, true);
- sender.User.LastViewedHorse = horseReleaseInst;
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.LastViewedHorse = horseReleaseInst;
+ sender.LoggedinUser.MajorPriority = true;
byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseReleased());
sender.SendPacket(metaPacket);
break;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to release at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to release at a non existant horse.");
break;
}
case PacketBuilder.HORSE_TACK:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -1769,38 +1778,38 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance horseTackInst = sender.User.HorseInventory.GetHorseById(randomId);
+ HorseInstance horseTackInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
- sender.User.LastViewedHorse = horseTackInst;
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTackMenu(horseTackInst, sender.User));
+ sender.LoggedinUser.LastViewedHorse = horseTackInst;
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTackMenu(horseTackInst, sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to tack at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to tack at a non existant horse.");
break;
}
case PacketBuilder.HORSE_DRINK:
- if(World.InSpecialTile(sender.User.X, sender.User.Y))
+ if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != "POND")
{
- Logger.HackerPrint(sender.User.Username + " Tried to drink from a pond when not on one.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to drink from a pond when not on one.");
break;
}
}
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -1808,12 +1817,12 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- HorseInstance horseDrinkInst = sender.User.HorseInventory.GetHorseById(randomId);
+ HorseInstance horseDrinkInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
if(horseDrinkInst.BasicStats.Health < 200)
{
@@ -1847,35 +1856,35 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to tack at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to tack at a non existant horse.");
break;
}
case PacketBuilder.HORSE_TACK_EQUIP:
int itemId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- string itemIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string itemIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
itemId = int.Parse(itemIdStr);
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
if(Item.ItemIdExist(itemId))
{
- if(sender.User.LastViewedHorse != null)
+ if(sender.LoggedinUser.LastViewedHorse != null)
{
- if(sender.User.LastViewedHorse.AutoSell > 0)
+ if(sender.LoggedinUser.LastViewedHorse.AutoSell > 0)
{
byte[] failMessagePacket = PacketBuilder.CreateChat(Messages.HorseTackFailAutoSell, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(failMessagePacket);
break;
}
- if(sender.User.Inventory.HasItemId(itemId))
+ if(sender.LoggedinUser.Inventory.HasItemId(itemId))
{
Item.ItemInformation itemInfo = Item.GetItemById(itemId);
if (itemInfo.Type == "TACK")
@@ -1883,151 +1892,151 @@ namespace HISP.Server
switch (itemInfo.GetMiscFlag(0))
{
case 1: // Saddle
- if(sender.User.LastViewedHorse.Equipment.Saddle != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.Saddle.Id));
- Database.SetSaddle(sender.User.LastViewedHorse.RandomId, itemInfo.Id);
- sender.User.LastViewedHorse.Equipment.Saddle = itemInfo;
+ if(sender.LoggedinUser.LastViewedHorse.Equipment.Saddle != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.Saddle.Id));
+ Database.SetSaddle(sender.LoggedinUser.LastViewedHorse.RandomId, itemInfo.Id);
+ sender.LoggedinUser.LastViewedHorse.Equipment.Saddle = itemInfo;
break;
case 2: // Saddle Pad
- if (sender.User.LastViewedHorse.Equipment.SaddlePad != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.SaddlePad.Id));
- Database.SetSaddlePad(sender.User.LastViewedHorse.RandomId, itemInfo.Id);
- sender.User.LastViewedHorse.Equipment.SaddlePad = itemInfo;
+ if (sender.LoggedinUser.LastViewedHorse.Equipment.SaddlePad != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.SaddlePad.Id));
+ Database.SetSaddlePad(sender.LoggedinUser.LastViewedHorse.RandomId, itemInfo.Id);
+ sender.LoggedinUser.LastViewedHorse.Equipment.SaddlePad = itemInfo;
break;
case 3: // Bridle
- if (sender.User.LastViewedHorse.Equipment.Bridle != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.Bridle.Id));
- Database.SetBridle(sender.User.LastViewedHorse.RandomId, itemInfo.Id);
- sender.User.LastViewedHorse.Equipment.Bridle = itemInfo;
+ if (sender.LoggedinUser.LastViewedHorse.Equipment.Bridle != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.Bridle.Id));
+ Database.SetBridle(sender.LoggedinUser.LastViewedHorse.RandomId, itemInfo.Id);
+ sender.LoggedinUser.LastViewedHorse.Equipment.Bridle = itemInfo;
break;
}
- sender.User.Inventory.Remove(sender.User.Inventory.GetItemByItemId(itemId).ItemInstances[0]); // Remove item from inventory.
+ sender.LoggedinUser.Inventory.Remove(sender.LoggedinUser.Inventory.GetItemByItemId(itemId).ItemInstances[0]); // Remove item from inventory.
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTackMenu(sender.User.LastViewedHorse, sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTackMenu(sender.LoggedinUser.LastViewedHorse, sender.LoggedinUser));
sender.SendPacket(metaPacket);
- byte[] equipMsgPacket = PacketBuilder.CreateChat(Messages.FormatEquipTackMessage(itemInfo.Name, sender.User.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ byte[] equipMsgPacket = PacketBuilder.CreateChat(Messages.FormatEquipTackMessage(itemInfo.Name, sender.LoggedinUser.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(equipMsgPacket);
}
else if(itemInfo.Type == "COMPANION")
{
- if (sender.User.LastViewedHorse.Equipment.Companion != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.Companion.Id));
- Database.SetCompanion(sender.User.LastViewedHorse.RandomId, itemInfo.Id);
- sender.User.LastViewedHorse.Equipment.Companion = itemInfo;
+ if (sender.LoggedinUser.LastViewedHorse.Equipment.Companion != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.Companion.Id));
+ Database.SetCompanion(sender.LoggedinUser.LastViewedHorse.RandomId, itemInfo.Id);
+ sender.LoggedinUser.LastViewedHorse.Equipment.Companion = itemInfo;
- sender.User.Inventory.Remove(sender.User.Inventory.GetItemByItemId(itemId).ItemInstances[0]); // Remove item from inventory.
+ sender.LoggedinUser.Inventory.Remove(sender.LoggedinUser.Inventory.GetItemByItemId(itemId).ItemInstances[0]); // Remove item from inventory.
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseCompanionEquipMenu(sender.User.LastViewedHorse, sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseCompanionEquipMenu(sender.LoggedinUser.LastViewedHorse, sender.LoggedinUser));
sender.SendPacket(metaPacket);
- byte[] equipMsgPacket = PacketBuilder.CreateChat(Messages.FormatHorseCompanionEquipMessage(sender.User.LastViewedHorse.Name, itemInfo.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ byte[] equipMsgPacket = PacketBuilder.CreateChat(Messages.FormatHorseCompanionEquipMessage(sender.LoggedinUser.LastViewedHorse.Name, itemInfo.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(equipMsgPacket);
}
else
{
- Logger.ErrorPrint(sender.User.Username + " tried to equip a tack item to a hrose but that item was not of type \"TACK\".");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to equip a tack item to a hrose but that item was not of type \"TACK\".");
}
}
else
{
- Logger.HackerPrint(sender.User.Username + " tried to equip tack he doesnt have");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " tried to equip tack he doesnt have");
break;
}
}
else
{
- Logger.ErrorPrint(sender.User.Username + " tried to equip tack to a horse when not viewing one.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to equip tack to a horse when not viewing one.");
break;
}
}
else
{
- Logger.HackerPrint(sender.User.Username + " tried to equip tack he doesnt exist");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " tried to equip tack he doesnt exist");
break;
}
break;
case PacketBuilder.HORSE_TACK_UNEQUIP:
- if (sender.User.LastViewedHorse != null)
+ if (sender.LoggedinUser.LastViewedHorse != null)
{
byte equipSlot = packet[2];
switch(equipSlot)
{
case 0x31: // Saddle
- if (sender.User.LastViewedHorse.Equipment.Saddle != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.Saddle.Id));
- Database.ClearSaddle(sender.User.LastViewedHorse.RandomId);
- sender.User.LastViewedHorse.Equipment.Saddle = null;
+ if (sender.LoggedinUser.LastViewedHorse.Equipment.Saddle != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.Saddle.Id));
+ Database.ClearSaddle(sender.LoggedinUser.LastViewedHorse.RandomId);
+ sender.LoggedinUser.LastViewedHorse.Equipment.Saddle = null;
break;
case 0x32: // Saddle Pad
- if (sender.User.LastViewedHorse.Equipment.SaddlePad != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.SaddlePad.Id));
- Database.ClearSaddlePad(sender.User.LastViewedHorse.RandomId);
- sender.User.LastViewedHorse.Equipment.SaddlePad = null;
+ if (sender.LoggedinUser.LastViewedHorse.Equipment.SaddlePad != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.SaddlePad.Id));
+ Database.ClearSaddlePad(sender.LoggedinUser.LastViewedHorse.RandomId);
+ sender.LoggedinUser.LastViewedHorse.Equipment.SaddlePad = null;
break;
case 0x33: // Bridle
- if (sender.User.LastViewedHorse.Equipment.Bridle != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.Bridle.Id));
- Database.ClearBridle(sender.User.LastViewedHorse.RandomId);
- sender.User.LastViewedHorse.Equipment.Bridle = null;
+ if (sender.LoggedinUser.LastViewedHorse.Equipment.Bridle != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.Bridle.Id));
+ Database.ClearBridle(sender.LoggedinUser.LastViewedHorse.RandomId);
+ sender.LoggedinUser.LastViewedHorse.Equipment.Bridle = null;
break;
case 0x34: // Companion
- if (sender.User.LastViewedHorse.Equipment.Companion != null)
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(sender.User.LastViewedHorse.Equipment.Companion.Id));
- Database.ClearCompanion(sender.User.LastViewedHorse.RandomId);
- sender.User.LastViewedHorse.Equipment.Companion = null;
+ if (sender.LoggedinUser.LastViewedHorse.Equipment.Companion != null)
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(sender.LoggedinUser.LastViewedHorse.Equipment.Companion.Id));
+ Database.ClearCompanion(sender.LoggedinUser.LastViewedHorse.RandomId);
+ sender.LoggedinUser.LastViewedHorse.Equipment.Companion = null;
goto companionRemove;
default:
Logger.ErrorPrint("Unknown equip slot: " + equipSlot.ToString("X"));
break;
}
- byte[] itemUnequipedMessage = PacketBuilder.CreateChat(Messages.FormatUnEquipTackMessage(sender.User.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ byte[] itemUnequipedMessage = PacketBuilder.CreateChat(Messages.FormatUnEquipTackMessage(sender.LoggedinUser.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(itemUnequipedMessage);
- if(sender.User.CurrentlyRidingHorse != null)
+ if(sender.LoggedinUser.CurrentlyRidingHorse != null)
{
- if(sender.User.CurrentlyRidingHorse.RandomId == sender.User.LastViewedHorse.RandomId)
+ if(sender.LoggedinUser.CurrentlyRidingHorse.RandomId == sender.LoggedinUser.LastViewedHorse.RandomId)
{
- byte[] disMounted = PacketBuilder.CreateChat(Messages.FormatHorseDismountedBecauseTackedMessage(sender.User.CurrentlyRidingHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.User.Facing %= 5;
- sender.User.CurrentlyRidingHorse = null;
+ byte[] disMounted = PacketBuilder.CreateChat(Messages.FormatHorseDismountedBecauseTackedMessage(sender.LoggedinUser.CurrentlyRidingHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.LoggedinUser.Facing %= 5;
+ sender.LoggedinUser.CurrentlyRidingHorse = null;
sender.SendPacket(disMounted);
}
}
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTackMenu(sender.User.LastViewedHorse, sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildTackMenu(sender.LoggedinUser.LastViewedHorse, sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
companionRemove:;
- itemUnequipedMessage = PacketBuilder.CreateChat(Messages.FormatHorseCompanionRemoveMessage(sender.User.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ itemUnequipedMessage = PacketBuilder.CreateChat(Messages.FormatHorseCompanionRemoveMessage(sender.LoggedinUser.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(itemUnequipedMessage);
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseCompanionEquipMenu(sender.User.LastViewedHorse, sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseCompanionEquipMenu(sender.LoggedinUser.LastViewedHorse, sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to unequip items from non existnat horse");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to unequip items from non existnat horse");
}
break;
case PacketBuilder.HORSE_DISMOUNT:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
if(randomIdStr == "") // F7 Shortcut
{
- if(sender.User.CurrentlyRidingHorse != null)
+ if(sender.LoggedinUser.CurrentlyRidingHorse != null)
{
byte[] stopRidingHorseMessagePacket = PacketBuilder.CreateChat(Messages.HorseStopRidingMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -2037,8 +2046,8 @@ namespace HISP.Server
}
else
{
- if(sender.User.HorseInventory.HorseIdExist(sender.User.LastRiddenHorse))
- StartRidingHorse(sender, sender.User.LastRiddenHorse);
+ if(sender.LoggedinUser.HorseInventory.HorseIdExist(sender.LoggedinUser.LastRiddenHorse))
+ StartRidingHorse(sender, sender.LoggedinUser.LastRiddenHorse);
}
break;
}
@@ -2050,10 +2059,10 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
byte[] stopRidingHorseMessagePacket = PacketBuilder.CreateChat(Messages.HorseStopRidingMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -2063,14 +2072,14 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to dismount at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to dismount at a non existant horse.");
break;
}
break;
case PacketBuilder.HORSE_MOUNT:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -2078,23 +2087,23 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(randomId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
StartRidingHorse(sender, randomId);
break;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to mount at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to mount at a non existant horse.");
break;
}
case PacketBuilder.HORSE_LOOK:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
HorseInstance horseInst;
try
{
@@ -2103,12 +2112,12 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
return;
}
- if(sender.User.HorseInventory.HorseIdExist(randomId))
+ if(sender.LoggedinUser.HorseInventory.HorseIdExist(randomId))
{
- horseInst = sender.User.HorseInventory.GetHorseById(randomId);
+ horseInst = sender.LoggedinUser.HorseInventory.GetHorseById(randomId);
UpdateHorseMenu(sender, horseInst);
}
else
@@ -2121,40 +2130,40 @@ namespace HISP.Server
}
catch(Exception)
{
- Logger.HackerPrint(sender.User.Username + " Tried to look at a non existant horse.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to look at a non existant horse.");
break;
}
}
break;
case PacketBuilder.HORSE_ESCAPE:
- if(WildHorse.DoesHorseExist(sender.User.CapturingHorseId))
+ if(WildHorse.DoesHorseExist(sender.LoggedinUser.CapturingHorseId))
{
- WildHorse capturing = WildHorse.GetHorseById(sender.User.CapturingHorseId);
- sender.User.CapturingHorseId = 0;
+ WildHorse capturing = WildHorse.GetHorseById(sender.LoggedinUser.CapturingHorseId);
+ sender.LoggedinUser.CapturingHorseId = 0;
- if (capturing.X == sender.User.X && capturing.Y == sender.User.Y)
+ if (capturing.X == sender.LoggedinUser.X && capturing.Y == sender.LoggedinUser.Y)
{
capturing.Escape();
- Logger.InfoPrint(sender.User.Username + " Failed to capture: " + capturing.Instance.Breed.Name + " new location: " + capturing.X + ", " + capturing.Y);
+ Logger.InfoPrint(sender.LoggedinUser.Username + " Failed to capture: " + capturing.Instance.Breed.Name + " new location: " + capturing.X + ", " + capturing.Y);
}
}
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
byte[] hoseEscaped = PacketBuilder.CreateMeta(Meta.BuildHorseEscapedMessage());
sender.SendPacket(hoseEscaped);
break;
case PacketBuilder.HORSE_CAUGHT:
- if (WildHorse.DoesHorseExist(sender.User.CapturingHorseId))
+ if (WildHorse.DoesHorseExist(sender.LoggedinUser.CapturingHorseId))
{
- WildHorse capturing = WildHorse.GetHorseById(sender.User.CapturingHorseId);
- sender.User.CapturingHorseId = 0;
+ WildHorse capturing = WildHorse.GetHorseById(sender.LoggedinUser.CapturingHorseId);
+ sender.LoggedinUser.CapturingHorseId = 0;
- if (capturing.X == sender.User.X && capturing.Y == sender.User.Y)
+ if (capturing.X == sender.LoggedinUser.X && capturing.Y == sender.LoggedinUser.Y)
{
try
{
- capturing.Capture(sender.User);
+ capturing.Capture(sender.LoggedinUser);
}
catch (InventoryFullException)
{
@@ -2163,30 +2172,30 @@ namespace HISP.Server
break;
}
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count++;
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count++;
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 100)
- sender.User.Awards.AddAward(Award.GetAwardById(24)); // Wrangler
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 1000)
- sender.User.Awards.AddAward(Award.GetAwardById(25)); // Pro Wrangler
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 100)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(24)); // Wrangler
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorseCapture).Count >= 1000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(25)); // Pro Wrangler
- Logger.InfoPrint(sender.User.Username + " Captured a: " + capturing.Instance.Breed.Name);
+ Logger.InfoPrint(sender.LoggedinUser.Username + " Captured a: " + capturing.Instance.Breed.Name);
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
byte[] horseCaught = PacketBuilder.CreateMeta(Meta.BuildHorseCaughtMessage());
sender.SendPacket(horseCaught);
break;
}
}
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
byte[] horseAllreadyCaught = PacketBuilder.CreateMeta(Meta.BuildHorseEscapedAnyway());
sender.SendPacket(horseAllreadyCaught);
break;
case PacketBuilder.HORSE_TRY_CAPTURE:
randomId = 0;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packetStr.Length - 4);
try
{
randomId = int.Parse(randomIdStr);
@@ -2194,23 +2203,23 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid randomid to horse interaction packet ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid randomid to horse interaction packet ");
return;
}
if (!WildHorse.DoesHorseExist(randomId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to catch a horse that doesnt exist.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to catch a horse that doesnt exist.");
return;
}
- if(sender.User.HorseInventory.HorseList.Length >= sender.User.MaxHorses)
+ if(sender.LoggedinUser.HorseInventory.HorseList.Length >= sender.LoggedinUser.MaxHorses)
{
byte[] caughtTooManyHorses = PacketBuilder.CreateChat(Messages.HorseCatchTooManyHorsesMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(caughtTooManyHorses);
return;
}
- sender.User.CapturingHorseId = randomId;
+ sender.LoggedinUser.CapturingHorseId = randomId;
byte[] chatPacket = PacketBuilder.CreateChat(Messages.HorseCaptureTimer, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
byte[] swfModulePacket = PacketBuilder.CreateSwfModule("catchhorse", PacketBuilder.PACKET_SWF_MODULE_FORCE);
@@ -2231,7 +2240,7 @@ namespace HISP.Server
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string dynamicInputStr = packetStr.Substring(1, (packetStr.Length - 1) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string dynamicInputStr = packetStr.Substring(1, packetStr.Length - 3);
if(dynamicInputStr.Contains("|"))
{
string[] dynamicInput = dynamicInputStr.Split('|');
@@ -2244,14 +2253,14 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input ");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input ");
return;
}
switch(inputId)
{
case 1: // Bank
- if (dynamicInput.Length >= 3)
+ if (dynamicInput.Length >= 2)
{
Int64 moneyDeposited = 0;
Int64 moneyWithdrawn = 0;
@@ -2262,14 +2271,14 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.ErrorPrint(sender.User.Username + " tried to deposit/witthdraw NaN money....");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to deposit/witthdraw NaN money....");
UpdateArea(sender);
break;
}
// Check if trying to deposit more than can be held in the bank.
- if (Convert.ToInt64(sender.User.BankMoney) + moneyDeposited > 9999999999)
+ if (Convert.ToInt64(sender.LoggedinUser.BankMoney) + moneyDeposited > 9999999999)
{
byte[] chatPacket = PacketBuilder.CreateChat(Messages.BankCantHoldThisMuch, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
@@ -2287,20 +2296,21 @@ namespace HISP.Server
break;
}
+
- if((moneyDeposited <= sender.User.Money) && moneyDeposited != 0)
+ if((moneyDeposited <= sender.LoggedinUser.Money) && moneyDeposited != 0)
{
- sender.User.TakeMoney(Convert.ToInt32(moneyDeposited));
- sender.User.BankMoney += moneyDeposited;
+ sender.LoggedinUser.TakeMoney(Convert.ToInt32(moneyDeposited));
+ sender.LoggedinUser.BankMoney += moneyDeposited;
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatDepositedMoneyMessage(Convert.ToInt32(moneyDeposited)), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
}
- if ((moneyWithdrawn <= sender.User.BankMoney) && moneyWithdrawn != 0)
+ if ((moneyWithdrawn <= sender.LoggedinUser.BankMoney) && moneyWithdrawn != 0)
{
- sender.User.BankMoney -= moneyWithdrawn;
- sender.User.AddMoney(Convert.ToInt32(moneyWithdrawn));
+ sender.LoggedinUser.BankMoney -= moneyWithdrawn;
+ sender.LoggedinUser.AddMoney(Convert.ToInt32(moneyWithdrawn));
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatWithdrawMoneyMessage(Convert.ToInt32(moneyWithdrawn)), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
@@ -2311,7 +2321,7 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
break;
}
case 2: // Send Mail
@@ -2321,16 +2331,16 @@ namespace HISP.Server
string subject = dynamicInput[2];
string message = dynamicInput[3];
- if(sender.User.Money >= 3)
+ if(sender.LoggedinUser.Money >= 3)
{
if(Database.CheckUserExist(to))
{
int playerId = Database.GetUserid(to);
- sender.User.TakeMoney(3);
+ sender.LoggedinUser.TakeMoney(3);
Mailbox.Mail mailMessage = new Mailbox.Mail();
mailMessage.RandomId = RandomID.NextRandomId();
- mailMessage.FromUser = sender.User.Id;
+ mailMessage.FromUser = sender.LoggedinUser.Id;
mailMessage.ToUser = playerId;
mailMessage.Timestamp = Convert.ToInt32((DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
mailMessage.Read = false;
@@ -2343,7 +2353,7 @@ namespace HISP.Server
user.MailBox.AddMail(mailMessage);
byte[] BaseStatsPacketData = PacketBuilder.CreateMoneyPlayerCountAndMail(user.Money, GameServer.GetNumberOfPlayers(), user.MailBox.UnreadMailCount);
- user.Client.SendPacket(BaseStatsPacketData);
+ user.LoggedinClient.SendPacket(BaseStatsPacketData);
}
else
{
@@ -2368,7 +2378,7 @@ namespace HISP.Server
{
if (dynamicInput.Length >= 2)
{
- if(sender.User.AttemptingToOfferItem == -1) // Money
+ if(sender.LoggedinUser.AttemptingToOfferItem == -1) // Money
{
string answer = dynamicInput[1];
int amountMoney = -1;
@@ -2384,27 +2394,27 @@ namespace HISP.Server
}
if(amountMoney < 0)
{
- Logger.ErrorPrint(sender.User.Username + " tried to trade less than 0$");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to trade less than 0$");
}
- if(amountMoney >= sender.User.Money)
+ if(amountMoney >= sender.LoggedinUser.Money)
{
byte[] tooMuchMoney = PacketBuilder.CreateChat(Messages.TradeMoneyOfferTooMuch, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(tooMuchMoney);
break;
}
- sender.User.TradingWith.MoneyOffered = amountMoney;
+ sender.LoggedinUser.TradingWith.MoneyOffered = amountMoney;
UpdateArea(sender);
- if(sender.User.TradingWith != null)
- if (!sender.User.TradingWith.OtherTrade.Trader.TradeMenuPriority)
- UpdateArea(sender.User.TradingWith.OtherTrade.Trader.Client);
+ if(sender.LoggedinUser.TradingWith != null)
+ if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
+ UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
break;
}
- if (Item.ItemIdExist(sender.User.AttemptingToOfferItem))
+ if (Item.ItemIdExist(sender.LoggedinUser.AttemptingToOfferItem))
{
string answer = dynamicInput[1];
int itemCount = -1;
@@ -2414,10 +2424,10 @@ namespace HISP.Server
}
catch(FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (Item TRADE, id is NaN)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (Item TRADE, id is NaN)");
}
- InventoryItem item = sender.User.Inventory.GetItemByItemId(sender.User.AttemptingToOfferItem);
+ InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(sender.LoggedinUser.AttemptingToOfferItem);
if (itemCount <= 0)
{
@@ -2432,11 +2442,11 @@ namespace HISP.Server
break;
}
- foreach(ItemInstance[] existingItems in sender.User.TradingWith.ItemsOffered)
+ foreach(ItemInstance[] existingItems in sender.LoggedinUser.TradingWith.ItemsOffered)
{
- if(existingItems[0].ItemId == sender.User.AttemptingToOfferItem)
+ if(existingItems[0].ItemId == sender.LoggedinUser.AttemptingToOfferItem)
{
- sender.User.TradingWith.RemoveOfferedItems(existingItems);
+ sender.LoggedinUser.TradingWith.RemoveOfferedItems(existingItems);
break;
}
}
@@ -2448,42 +2458,42 @@ namespace HISP.Server
{
items[i] = item.ItemInstances[i];
}
- sender.User.TradingWith.OfferItems(items);
+ sender.LoggedinUser.TradingWith.OfferItems(items);
UpdateArea(sender);
- if (sender.User.TradingWith != null)
- if (!sender.User.TradingWith.OtherTrade.Trader.TradeMenuPriority)
- UpdateArea(sender.User.TradingWith.OtherTrade.Trader.Client);
+ if (sender.LoggedinUser.TradingWith != null)
+ if (!sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority)
+ UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
}
break;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (Item TRADE, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (Item TRADE, wrong size)");
break;
}
}
case 6: // Riddle Room
if (dynamicInput.Length >= 2)
{
- if (sender.User.LastRiddle != null)
+ if (sender.LoggedinUser.LastRiddle != null)
{
string answer = dynamicInput[1];
- if(sender.User.LastRiddle.CheckAnswer(sender.User, answer))
- sender.User.LastRiddle = null;
+ if(sender.LoggedinUser.LastRiddle.CheckAnswer(sender.LoggedinUser, answer))
+ sender.LoggedinUser.LastRiddle = null;
UpdateArea(sender);
}
break;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (LastRiddle, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (LastRiddle, wrong size)");
break;
}
case 5: // Horse Description
if (dynamicInput.Length >= 3)
{
- if(sender.User.LastViewedHorse != null)
+ if(sender.LoggedinUser.LastViewedHorse != null)
{
string desc = dynamicInput[2];
string name = dynamicInput[1];
@@ -2504,7 +2514,7 @@ namespace HISP.Server
break;
}
- object filterReason = ChatMsg.FilterMessage(name);
+ object filterReason = Chat.FilterMessage(name);
if (filterReason != null)
{
byte[] msg = PacketBuilder.CreateChat(Messages.HorseNameViolationsError, PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -2512,33 +2522,33 @@ namespace HISP.Server
return;
}
- filterReason = ChatMsg.FilterMessage(desc);
+ filterReason = Chat.FilterMessage(desc);
if (filterReason != null)
{
- ChatMsg.Reason reason = (ChatMsg.Reason)filterReason;
+ Chat.Reason reason = (Chat.Reason)filterReason;
byte[] msg = PacketBuilder.CreateChat(Messages.FormatHorseProfileBlocked(reason.Message), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(msg);
return;
}
- sender.User.MajorPriority = true;
- sender.User.LastViewedHorse.Name = dynamicInput[1];
- sender.User.LastViewedHorse.Description = dynamicInput[2];
- byte[] horseProfileSavedPacket = PacketBuilder.CreateChat(Messages.FormatHorseSavedProfileMessage(sender.User.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ sender.LoggedinUser.MajorPriority = true;
+ sender.LoggedinUser.LastViewedHorse.Name = dynamicInput[1];
+ sender.LoggedinUser.LastViewedHorse.Description = dynamicInput[2];
+ byte[] horseProfileSavedPacket = PacketBuilder.CreateChat(Messages.FormatHorseSavedProfileMessage(sender.LoggedinUser.LastViewedHorse.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(horseProfileSavedPacket);
- UpdateHorseMenu(sender, sender.User.LastViewedHorse);
+ UpdateHorseMenu(sender, sender.LoggedinUser.LastViewedHorse);
}
break;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (NPC Search, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (NPC Search, wrong size)");
break;
}
case 4: // NPC Search
if(dynamicInput.Length >= 2)
{
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
string metaWindow = Meta.BuildNpcSearch(dynamicInput[1]);
byte[] metaPacket = PacketBuilder.CreateMeta(metaWindow);
sender.SendPacket(metaPacket);
@@ -2546,13 +2556,13 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (NPC Search, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (NPC Search, wrong size)");
break;
}
case 7: // Private Notes
if (dynamicInput.Length >= 2)
{
- sender.User.PrivateNotes = dynamicInput[1];
+ sender.LoggedinUser.PrivateNotes = dynamicInput[1];
UpdateStats(sender);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.PrivateNotesSavedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
@@ -2560,16 +2570,16 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
break;
}
case 10: // Change auto sell price
if (dynamicInput.Length >= 2)
{
- if (sender.User.LastViewedHorse != null)
+ if (sender.LoggedinUser.LastViewedHorse != null)
{
- sender.User.MajorPriority = true;
- HorseInstance horseInstance = sender.User.LastViewedHorse;
+ sender.LoggedinUser.MajorPriority = true;
+ HorseInstance horseInstance = sender.LoggedinUser.LastViewedHorse;
int newSellPrice = 0;
try
{
@@ -2594,12 +2604,12 @@ namespace HISP.Server
sender.SendPacket(sellPricePacket);
horseInstance.AutoSell = newSellPrice;
- UpdateHorseMenu(sender, sender.User.LastViewedHorse);
+ UpdateHorseMenu(sender, sender.LoggedinUser.LastViewedHorse);
}
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (autosell, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (autosell, wrong size)");
break;
}
break;
@@ -2608,7 +2618,7 @@ namespace HISP.Server
{
string title = dynamicInput[1];
string desc = dynamicInput[2];
- if(sender.User.OwnedRanch != null)
+ if(sender.LoggedinUser.OwnedRanch != null)
{
title.Trim();
desc.Trim();
@@ -2625,7 +2635,7 @@ namespace HISP.Server
break;
}
- object filterReason = ChatMsg.FilterMessage(title);
+ object filterReason = Chat.FilterMessage(title);
if (filterReason != null)
{
byte[] msg = PacketBuilder.CreateChat(Messages.RanchSavedTitleViolationsError, PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -2633,18 +2643,18 @@ namespace HISP.Server
return;
}
- filterReason = ChatMsg.FilterMessage(desc);
+ filterReason = Chat.FilterMessage(desc);
if (filterReason != null)
{
- ChatMsg.Reason reason = (ChatMsg.Reason)filterReason;
+ Chat.Reason reason = (Chat.Reason)filterReason;
byte[] msg = PacketBuilder.CreateChat(Messages.FormatRanchDesriptionBlocked(reason.Message), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(msg);
return;
}
- sender.User.OwnedRanch.Title = title;
- sender.User.OwnedRanch.Description = desc;
+ sender.LoggedinUser.OwnedRanch.Title = title;
+ sender.LoggedinUser.OwnedRanch.Description = desc;
}
byte[] descriptionEditedMessage = PacketBuilder.CreateChat(Messages.RanchSavedRanchDescripton, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(descriptionEditedMessage);
@@ -2661,7 +2671,7 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (ranch description, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (ranch description, wrong size)");
break;
}
break;
@@ -2679,7 +2689,7 @@ namespace HISP.Server
break;
}
- Database.AddReport(sender.User.Username, userName, reason);
+ Database.AddReport(sender.LoggedinUser.Username, userName, reason);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.AbuseReportFiled, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
UpdateArea(sender);
@@ -2694,21 +2704,21 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
break;
}
case 13: // Libary Ranch Search
if (dynamicInput.Length >= 2)
{
string searchQuery = dynamicInput[1];
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
byte[] serachResponse = PacketBuilder.CreateMeta(Meta.BuildRanchSearchResults(searchQuery));
sender.SendPacket(serachResponse);
break;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (private notes, wrong size)");
break;
}
case 14:
@@ -2716,9 +2726,9 @@ namespace HISP.Server
{
string password = dynamicInput[1];
// Get current tile
- if(World.InSpecialTile(sender.User.X, sender.User.Y))
+ if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code != null)
{
if (tile.Code.StartsWith("PASSWORD-"))
@@ -2730,11 +2740,11 @@ namespace HISP.Server
int questId = int.Parse(args[2]);
if (password.ToLower() == expectedPassword.ToLower())
{
- Quest.CompleteQuest(sender.User, Quest.GetQuestById(questId), false);
+ Quest.CompleteQuest(sender.LoggedinUser, Quest.GetQuestById(questId), false);
}
else
{
- Quest.QuestResult result = Quest.FailQuest(sender.User, Quest.GetQuestById(questId), true);
+ Quest.QuestResult result = Quest.FailQuest(sender.LoggedinUser, Quest.GetQuestById(questId), true);
if (result.NpcChat == null || result.NpcChat == "")
result.NpcChat = Messages.IncorrectPasswordMessage;
byte[] ChatPacket = PacketBuilder.CreateChat(result.NpcChat, PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -2743,26 +2753,26 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Send invalid password input request. (Too few arguments!)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Send invalid password input request. (Too few arguments!)");
break;
}
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Send password input request. (Not on password tile!)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Send password input request. (Not on password tile!)");
break;
}
}
}
else
{
- Logger.HackerPrint(sender.User.Username + " Sent a password while not in a special tile.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent a password while not in a special tile.");
break;
}
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid password request, (wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid password request, (wrong size)");
break;
}
@@ -2772,9 +2782,9 @@ namespace HISP.Server
{
if(QuizEvent != null)
{
- if (sender.User.InRealTimeQuiz)
+ if (sender.LoggedinUser.InRealTimeQuiz)
{
- RealTimeQuiz.Participent participent = QuizEvent.JoinEvent(sender.User);
+ RealTimeQuiz.Participent participent = QuizEvent.JoinEvent(sender.LoggedinUser);
string answer = dynamicInput[1];
participent.CheckAnswer(answer);
}
@@ -2783,7 +2793,7 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (RealTimeQuiz, wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (RealTimeQuiz, wrong size)");
break;
}
default:
@@ -2795,7 +2805,7 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to send a invalid dynamic input (wrong size)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to send a invalid dynamic input (wrong size)");
return;
}
}
@@ -2810,17 +2820,17 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Requests player info when not logged in.");
return;
}
- if(packet.Length < 2)
+ if(packet.Length < 3)
{
- Logger.ErrorPrint(sender.User.Username + " Sent playerinfo packet of wrong size");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent playerinfo packet of wrong size");
}
byte method = packet[1];
switch(method)
{
case PacketBuilder.PLAYERINFO_PLAYER_LIST:
- sender.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListMenu(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
}
@@ -2830,55 +2840,55 @@ namespace HISP.Server
{
if (!sender.LoggedIn)
{
- Logger.ErrorPrint(sender.RemoteIp + " Clicked dynamic button when not logged in.");
+ Logger.ErrorPrint(sender.RemoteIp + " Clicked dyamic button when not logged in.");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string buttonIdStr = packetStr.Substring(1, (packetStr.Length - 1) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string buttonIdStr = packetStr.Substring(1, packetStr.Length - 3);
switch(buttonIdStr)
{
case "2": // Compose Mail
- if(sender.User.Money <= 3)
+ if(sender.LoggedinUser.Money <= 3)
{
byte[] cantAffordPostage = PacketBuilder.CreateChat(Messages.CityHallCantAffordPostageMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantAffordPostage);
break;
}
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildComposeMailMenu());
sender.SendPacket(metaPacket);
break;
case "3": // Quest Log
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildQuestLog(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildQuestLog(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "4": // View Horse Breeds
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseBreedListLibary());
sender.SendPacket(metaPacket);
break;
case "5": // Back to horse
- if (sender.User.LastViewedHorse != null)
- UpdateHorseMenu(sender, sender.User.LastViewedHorse);
+ if (sender.LoggedinUser.LastViewedHorse != null)
+ UpdateHorseMenu(sender, sender.LoggedinUser.LastViewedHorse);
break;
case "6": // Equip companion
- if (sender.User.LastViewedHorse != null)
+ if (sender.LoggedinUser.LastViewedHorse != null)
{
- sender.User.MajorPriority = true;
- HorseInstance horseInstance = sender.User.LastViewedHorse;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseCompanionEquipMenu(horseInstance,sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ HorseInstance horseInstance = sender.LoggedinUser.LastViewedHorse;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseCompanionEquipMenu(horseInstance,sender.LoggedinUser));
sender.SendPacket(metaPacket);
}
break;
case "7": // TP To nearest wagon (ranch)
- if(sender.User.OwnedRanch != null)
+ if(sender.LoggedinUser.OwnedRanch != null)
{
- if(sender.User.OwnedRanch.GetBuildingCount(7) > 0) // Wagon
+ if(sender.LoggedinUser.OwnedRanch.GetBuildingCount(7) > 0) // Wagon
{
- int ranchX = sender.User.OwnedRanch.X;
- int ranchY = sender.User.OwnedRanch.Y;
+ int ranchX = sender.LoggedinUser.OwnedRanch.X;
+ int ranchY = sender.LoggedinUser.OwnedRanch.Y;
double smallestDistance = Double.PositiveInfinity;
int smalestTransportPointId = 0;
@@ -2912,115 +2922,115 @@ namespace HISP.Server
byte[] transported = PacketBuilder.CreateChat(Messages.RanchWagonDroppedYouOff, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(transported);
- sender.User.Teleport(newX, newY);
+ sender.LoggedinUser.Teleport(newX, newY);
}
}
break;
case "8":
- if(sender.User.LastViewedHorse != null)
+ if(sender.LoggedinUser.LastViewedHorse != null)
{
- sender.User.MajorPriority = true;
- HorseInstance horseInstance = sender.User.LastViewedHorse;
+ sender.LoggedinUser.MajorPriority = true;
+ HorseInstance horseInstance = sender.LoggedinUser.LastViewedHorse;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseReleaseConfirmationMessage(horseInstance));
sender.SendPacket(metaPacket);
}
break;
case "9": // View Tack (Libary)
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildTackLibary());
sender.SendPacket(metaPacket);
break;
case "10": // View Companions (Libary)
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildCompanionLibary());
sender.SendPacket(metaPacket);
break;
case "11": // Randomize horse name
- if (sender.User.LastViewedHorse != null)
+ if (sender.LoggedinUser.LastViewedHorse != null)
{
- sender.User.MajorPriority = true;
- HorseInstance horseInstance = sender.User.LastViewedHorse;
+ sender.LoggedinUser.MajorPriority = true;
+ HorseInstance horseInstance = sender.LoggedinUser.LastViewedHorse;
horseInstance.ChangeNameWithoutUpdatingDatabase(HorseInfo.GenerateHorseName());
metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseDescriptionEditMeta(horseInstance));
sender.SendPacket(metaPacket);
}
break;
case "12": // View Minigames (Libary)
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildMinigamesLibary());
sender.SendPacket(metaPacket);
break;
case "13": // Train All (Ranch)
- if (sender.User.OwnedRanch != null)
+ if (sender.LoggedinUser.OwnedRanch != null)
{
- if(sender.User.OwnedRanch.GetBuildingCount(6) > 0) // Training Pen
+ if(sender.LoggedinUser.OwnedRanch.GetBuildingCount(6) > 0) // Training Pen
{
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildRanchTraining(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildRanchTraining(sender.LoggedinUser));
sender.SendPacket(metaPacket);
}
}
break;
case "14": // Most Valued Ranches
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildMostValuedRanches());
sender.SendPacket(metaPacket);
break;
case "15": // Most Richest Players
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildRichestPlayers());
sender.SendPacket(metaPacket);
break;
case "16": // Most Adventurous Players
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildAdventurousPlayers());
sender.SendPacket(metaPacket);
break;
case "17": // Most Experienced Players
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildExperiencedPlayers());
sender.SendPacket(metaPacket);
break;
case "18": // Best Minigame Players
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildMinigamePlayers());
sender.SendPacket(metaPacket);
break;
case "19": // Most Experienced Horses
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildMostExperienedHoses());
sender.SendPacket(metaPacket);
break;
case "20": // Minigame Rankings
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildMinigameRankingsForUser(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildMinigameRankingsForUser(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "21": // Private Notes
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildPrivateNotes(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildPrivateNotes(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "22": // View Locations (Libary)
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildLocationsLibary());
sender.SendPacket(metaPacket);
break;
case "23": // View Awards (Libary)
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildAwardsLibary());
sender.SendPacket(metaPacket);
break;
case "26": // Buy Horse (Auto Sell)
- if(sender.User.LastViewedHorseOther != null)
+ if(sender.LoggedinUser.LastViewedHorseOther != null)
{
bool isOnRanch = false;
bool isOnPlayer = false;
- HorseInstance horseToSell = sender.User.LastViewedHorseOther;
- if (Ranch.GetOwnedRanch(horseToSell.Owner))
+ HorseInstance horseToSell = sender.LoggedinUser.LastViewedHorseOther;
+ if (Ranch.IsRanchOwned(horseToSell.Owner))
{
Ranch ranch = Ranch.GetRanchOwnedBy(horseToSell.Owner);
- if(sender.User.X == ranch.X && sender.User.Y == ranch.Y)
+ if(sender.LoggedinUser.X == ranch.X && sender.LoggedinUser.Y == ranch.Y)
{
isOnRanch = true;
}
@@ -3029,7 +3039,7 @@ namespace HISP.Server
if(GameServer.IsUserOnline(horseToSell.Owner))
{
User user = GameServer.GetUserById(horseToSell.Owner);
- if (user.X == sender.User.X && user.Y == sender.User.Y)
+ if (user.X == sender.LoggedinUser.X && user.Y == sender.LoggedinUser.Y)
{
isOnPlayer = true;
}
@@ -3040,16 +3050,16 @@ namespace HISP.Server
if (horseToSell.AutoSell == 0)
break;
- if(sender.User.Money >= horseToSell.AutoSell)
+ if(sender.LoggedinUser.Money >= horseToSell.AutoSell)
{
- if (sender.User.HorseInventory.HorseList.Length + 1 > sender.User.MaxHorses)
+ if (sender.LoggedinUser.HorseInventory.HorseList.Length + 1 > sender.LoggedinUser.MaxHorses)
{
byte[] tooManyHorses = PacketBuilder.CreateChat(Messages.AutoSellTooManyHorses, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(tooManyHorses);
break;
}
- sender.User.TakeMoney(horseToSell.AutoSell);
+ sender.LoggedinUser.TakeMoney(horseToSell.AutoSell);
if (IsUserOnline(horseToSell.Owner))
{
@@ -3057,12 +3067,12 @@ namespace HISP.Server
seller.HorseInventory.DeleteHorse(horseToSell, false);
seller.AddMoney(horseToSell.AutoSell);
- byte[] horseBrought = PacketBuilder.CreateChat(Messages.FormatAutoSellSold(horseToSell.Name, horseToSell.AutoSell, sender.User.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- seller.Client.SendPacket(horseBrought);
+ byte[] horseBrought = PacketBuilder.CreateChat(Messages.FormatAutoSellSold(horseToSell.Name, horseToSell.AutoSell, sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ seller.LoggedinClient.SendPacket(horseBrought);
}
else
{
- Database.AddMessageToQueue(horseToSell.Owner, Messages.FormatAutoSellSoldOffline(horseToSell.Name, horseToSell.AutoSell, sender.User.Username));
+ Database.AddMessageToQueue(horseToSell.Owner, Messages.FormatAutoSellSoldOffline(horseToSell.Name, horseToSell.AutoSell, sender.LoggedinUser.Username));
try
{
Database.SetPlayerMoney((Database.GetPlayerMoney(horseToSell.Owner) + horseToSell.AutoSell), horseToSell.Owner);
@@ -3073,9 +3083,9 @@ namespace HISP.Server
}
}
- horseToSell.Owner = sender.User.Id;
+ horseToSell.Owner = sender.LoggedinUser.Id;
horseToSell.AutoSell = 0;
- sender.User.HorseInventory.AddHorse(horseToSell, false);
+ sender.LoggedinUser.HorseInventory.AddHorse(horseToSell, false);
byte[] success = PacketBuilder.CreateChat(Messages.FormatAutoSellSuccess(horseToSell.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(success);
@@ -3102,124 +3112,124 @@ namespace HISP.Server
}
break;
case "24": // Award List
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildAwardList(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildAwardList(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "27": // Ranch Edit
- if(sender.User.OwnedRanch != null)
+ if(sender.LoggedinUser.OwnedRanch != null)
{
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildRanchEdit(sender.User.OwnedRanch));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildRanchEdit(sender.LoggedinUser.OwnedRanch));
sender.SendPacket(metaPacket);
}
break;
case "29": // Auto Sell Horses
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildTopAutoSellHorses());
sender.SendPacket(metaPacket);
break;
case "31":
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildRanchSearchLibary());
sender.SendPacket(metaPacket);
break;
case "35": // Buddy List
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildBuddyList(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildBuddyList(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "36": // Nearby list
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildNearbyList(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildNearbyList(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "37": // All Players List
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerList(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerList(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "40": // All Players Alphabetical
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListAlphabetical(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildPlayerListAlphabetical(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "30": // Find NPC
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildFindNpcMenu());
sender.SendPacket(metaPacket);
break;
case "25": // Set auto sell price
- if (sender.User.LastViewedHorse != null)
+ if (sender.LoggedinUser.LastViewedHorse != null)
{
- sender.User.MajorPriority = true;
- HorseInstance horseInstance = sender.User.LastViewedHorse;
+ sender.LoggedinUser.MajorPriority = true;
+ HorseInstance horseInstance = sender.LoggedinUser.LastViewedHorse;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildAutoSellMenu(horseInstance));
sender.SendPacket(metaPacket);
}
break;
case "33": // View All stats (Horse)
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildAllBasicStats(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildAllBasicStats(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "34": // View Basic stats (Horse)
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildAllStats(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildAllStats(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "38": // Read Books
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildBooksLibary());
sender.SendPacket(metaPacket);
break;
case "41": // Put horse into auction
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildAuctionHorseList(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildAuctionHorseList(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "47":
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildPawneerOrderBreedList());
sender.SendPacket(metaPacket);
break;
case "53": // Misc Stats / Tracked Items
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildMiscStats(sender.User));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildMiscStats(sender.LoggedinUser));
sender.SendPacket(metaPacket);
break;
case "58": // Add new item to trade
- if(sender.User.TradingWith != null)
+ if(sender.LoggedinUser.TradingWith != null)
{
- sender.User.TradeMenuPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildTradeAdd(sender.User.TradingWith));
+ sender.LoggedinUser.TradeMenuPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildTradeAdd(sender.LoggedinUser.TradingWith));
sender.SendPacket(metaPacket);
}
break;
case "59": // Done
- if (sender.User.TradingWith != null)
+ if (sender.LoggedinUser.TradingWith != null)
{
- sender.User.TradingWith.Stage = "DONE";
+ sender.LoggedinUser.TradingWith.Stage = "DONE";
- if (sender.User.TradingWith != null)
- if (sender.User.TradingWith.OtherTrade.Trader.TradeMenuPriority == false)
- UpdateArea(sender.User.TradingWith.OtherTrade.Trader.Client);
+ if (sender.LoggedinUser.TradingWith != null)
+ if (sender.LoggedinUser.TradingWith.OtherTrade.Trader.TradeMenuPriority == false)
+ UpdateArea(sender.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient);
UpdateArea(sender);
}
break;
case "60": // Ranch Sell
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildRanchSellConfirmation());
sender.SendPacket(metaPacket);
break;
case "61": // Most Spoiled Horse
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildMostSpoiledHorses());
sender.SendPacket(metaPacket);
break;
case "28c1": // Abuse Report
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildAbuseReportPage());
sender.SendPacket(metaPacket);
break;
@@ -3236,14 +3246,14 @@ namespace HISP.Server
category = "RETIRED";
goto setCategory;
setCategory:;
- if (sender.User.LastViewedHorse != null)
+ if (sender.LoggedinUser.LastViewedHorse != null)
{
- sender.User.LastViewedHorse.Category = category;
+ sender.LoggedinUser.LastViewedHorse.Category = category;
byte[] categoryChangedPacket = PacketBuilder.CreateChat(Messages.FormatHorseSetToNewCategory(category), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(categoryChangedPacket);
- sender.User.MajorPriority = true;
- UpdateHorseMenu(sender, sender.User.LastViewedHorse);
+ sender.LoggedinUser.MajorPriority = true;
+ UpdateHorseMenu(sender, sender.LoggedinUser.LastViewedHorse);
}
break;
@@ -3258,20 +3268,20 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.DebugPrint(sender.User.Username + " Tried to read a book of id NaN");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to read a book of id NaN");
break;
};
if(Book.BookExists(bookId))
{
Book book = Book.GetBookById(bookId);
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildBookReadLibary(book));
sender.SendPacket(metaPacket);
}
else
{
- Logger.HackerPrint(sender.User.Username + "Tried to read a book that doesnt exist.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + "Tried to read a book that doesnt exist.");
}
break;
}
@@ -3285,11 +3295,11 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.DebugPrint(sender.User.Username + " Tried to whisper a horse with BreedId NaN.");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to whisper a horse with BreedId NaN.");
break;
};
- if (sender.User.Money < 50000)
+ if (sender.LoggedinUser.Money < 50000)
{
byte[] cannotAffordMessage = PacketBuilder.CreateChat(Messages.WhispererServiceCannotAfford, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cannotAffordMessage);
@@ -3313,7 +3323,7 @@ namespace HISP.Server
{
cost = 10000;
}
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
byte[] pricingMessage = PacketBuilder.CreateChat(Messages.FormatWhispererPrice(cost), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(pricingMessage);
@@ -3321,7 +3331,7 @@ namespace HISP.Server
byte[] serachResultMeta = PacketBuilder.CreateMeta(Meta.BuildWhisperSearchResults(horsesFound.ToArray()));
sender.SendPacket(serachResultMeta);
- sender.User.TakeMoney(cost);
+ sender.LoggedinUser.TakeMoney(cost);
break;
}
else if (buttonIdStr.StartsWith("4c")) // Libary Breed Search
@@ -3336,10 +3346,10 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.DebugPrint(sender.User.Username + " Sent invalid libary breed viewer request.");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Sent invalid libary breed viewer request.");
break;
};
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
string metaTag = Meta.BuildBreedViewerLibary(horseBreed);
metaPacket = PacketBuilder.CreateMeta(metaTag);
sender.SendPacket(metaPacket);
@@ -3354,48 +3364,48 @@ namespace HISP.Server
else if (buttonIdStr.StartsWith("50c"))
{
string gender = buttonIdStr.Substring(3);
- if (sender.User.PawneerOrderBreed != null)
+ if (sender.LoggedinUser.PawneerOrderBreed != null)
{
- if (sender.User.PawneerOrderBreed.GenderTypes().Contains(gender))
+ if (sender.LoggedinUser.PawneerOrderBreed.GenderTypes().Contains(gender))
{
- if (sender.User.Inventory.HasItemId(Item.PawneerOrder))
+ if (sender.LoggedinUser.Inventory.HasItemId(Item.PawneerOrder))
{
- sender.User.PawneerOrderGender = gender;
+ sender.LoggedinUser.PawneerOrderGender = gender;
- HorseInstance horseInstance = new HorseInstance(sender.User.PawneerOrderBreed);
- horseInstance.Color = sender.User.PawneerOrderColor;
- horseInstance.Gender = sender.User.PawneerOrderGender;
+ HorseInstance horseInstance = new HorseInstance(sender.LoggedinUser.PawneerOrderBreed);
+ horseInstance.Color = sender.LoggedinUser.PawneerOrderColor;
+ horseInstance.Gender = sender.LoggedinUser.PawneerOrderGender;
horseInstance.Name = "Pawneer Order";
- sender.User.Inventory.Remove(sender.User.Inventory.GetItemByItemId(Item.PawneerOrder).ItemInstances[0]);
- sender.User.HorseInventory.AddHorse(horseInstance, true, true);
+ sender.LoggedinUser.Inventory.Remove(sender.LoggedinUser.Inventory.GetItemByItemId(Item.PawneerOrder).ItemInstances[0]);
+ sender.LoggedinUser.HorseInventory.AddHorse(horseInstance, true, true);
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildPawneerOrderFound(horseInstance));
sender.SendPacket(metaPacket);
break;
}
}
}
- Logger.ErrorPrint(sender.User.Username + " Error occured when doing a Pawneer Order.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Error occured when doing a Pawneer Order.");
break;
}
else if (buttonIdStr.StartsWith("49c"))
{
string color = buttonIdStr.Substring(3);
- if (sender.User.PawneerOrderBreed != null)
+ if (sender.LoggedinUser.PawneerOrderBreed != null)
{
- if (sender.User.PawneerOrderBreed.Colors.Contains(color))
+ if (sender.LoggedinUser.PawneerOrderBreed.Colors.Contains(color))
{
- sender.User.PawneerOrderColor = color;
+ sender.LoggedinUser.PawneerOrderColor = color;
- sender.User.MajorPriority = true;
- metaPacket = PacketBuilder.CreateMeta(Meta.BuildPawneerOrderGenderList(sender.User.PawneerOrderBreed, color));
+ sender.LoggedinUser.MajorPriority = true;
+ metaPacket = PacketBuilder.CreateMeta(Meta.BuildPawneerOrderGenderList(sender.LoggedinUser.PawneerOrderBreed, color));
sender.SendPacket(metaPacket);
break;
}
}
- Logger.ErrorPrint(sender.User.Username + " Asked for a horse of an unknown color " + color);
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Asked for a horse of an unknown color " + color);
break;
}
else if (buttonIdStr.StartsWith("48c")) // Pawneer Order Breed Select
@@ -3410,12 +3420,12 @@ namespace HISP.Server
}
catch (Exception)
{
- Logger.DebugPrint(sender.User.Username + " Tried to pawner order a horse with id NaN.");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to pawner order a horse with id NaN.");
break;
}
- sender.User.PawneerOrderBreed = breed;
+ sender.LoggedinUser.PawneerOrderBreed = breed;
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(Meta.BuildPawneerOrderColorList(breed));
sender.SendPacket(metaPacket);
break;
@@ -3430,30 +3440,30 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.DebugPrint(sender.User.Username + " Tried to pawn a horse with id NaN.");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to pawn a horse with id NaN.");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(horseId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(horseId))
{
- HorseInstance inst = sender.User.HorseInventory.GetHorseById(horseId);
+ HorseInstance inst = sender.LoggedinUser.HorseInventory.GetHorseById(horseId);
int price = Pawneer.CalculateTotalPrice(inst);
string name = inst.Name;
- sender.User.HorseInventory.DeleteHorse(inst); // 1000% a "distant land.."
- sender.User.LastViewedHorse = null;
+ sender.LoggedinUser.HorseInventory.DeleteHorse(inst); // 1000% a "distant land.."
+ sender.LoggedinUser.LastViewedHorse = null;
- sender.User.AddMoney(price);
+ sender.LoggedinUser.AddMoney(price);
byte[] soldHorseMessage = PacketBuilder.CreateChat(Messages.FormatPawneerSold(name, price), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(soldHorseMessage);
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count++;
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count >= 100)
- sender.User.Awards.AddAward(Award.GetAwardById(44)); // Vendor
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count >= 1000)
- sender.User.Awards.AddAward(Award.GetAwardById(45)); // Pro Vendor
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count >= 10000)
- sender.User.Awards.AddAward(Award.GetAwardById(52)); // Top Vendor
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count++;
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count >= 100)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(44)); // Vendor
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count >= 1000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(45)); // Pro Vendor
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.HorsePawn).Count >= 10000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(52)); // Top Vendor
UpdateArea(sender);
@@ -3476,15 +3486,15 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.DebugPrint(sender.User.Username + " Tried to pawn a horse with id NaN.");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to pawn a horse with id NaN.");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(horseId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(horseId))
{
- HorseInstance inst = sender.User.HorseInventory.GetHorseById(horseId);
+ HorseInstance inst = sender.LoggedinUser.HorseInventory.GetHorseById(horseId);
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
byte[] confirmScreen = PacketBuilder.CreateMeta(Meta.BuildPawneerConfimation(inst));
sender.SendPacket(confirmScreen);
break;
@@ -3506,39 +3516,39 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.DebugPrint(sender.User.Username + " Tried to auction a horse with id NaN.");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Tried to auction a horse with id NaN.");
break;
}
- if (sender.User.HorseInventory.HorseIdExist(horseId))
+ if (sender.LoggedinUser.HorseInventory.HorseIdExist(horseId))
{
- HorseInstance inst = sender.User.HorseInventory.GetHorseById(horseId);
+ HorseInstance inst = sender.LoggedinUser.HorseInventory.GetHorseById(horseId);
- if(World.InSpecialTile(sender.User.X, sender.User.Y))
+ if(World.InSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(sender.User.X, sender.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(sender.LoggedinUser.X, sender.LoggedinUser.Y);
if(tile.Code == null || !tile.Code.StartsWith("AUCTION-"))
{
- Logger.ErrorPrint("Cant find auction room that " + sender.User.Username + " Is trying to place a horse in.");
+ Logger.ErrorPrint("Cant find auction room that " + sender.LoggedinUser.Username + " Is trying to place a horse in.");
return;
}
Auction auctionRoom = Auction.GetAuctionRoomById(int.Parse(tile.Code.Split('-')[1]));
- if(auctionRoom.HasUserPlacedAuctionAllready(sender.User))
+ if(auctionRoom.HasUserPlacedAuctionAllready(sender.LoggedinUser))
{
byte[] cantPlaceAuction = PacketBuilder.CreateChat(Messages.AuctionOneHorsePerPlayer, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantPlaceAuction);
break;
}
- if (sender.User.Money >= 1000)
+ if (sender.LoggedinUser.Money >= 1000)
{
- sender.User.TakeMoney(1000);
- Auction.AuctionEntry entry = new Auction.AuctionEntry(8, 0, sender.User.Id);
+ sender.LoggedinUser.TakeMoney(1000);
+ Auction.AuctionEntry entry = new Auction.AuctionEntry(8, 0, sender.LoggedinUser.Id);
entry.Horse = inst;
- entry.OwnerId = sender.User.Id;
+ entry.OwnerId = sender.LoggedinUser.Id;
entry.Completed = false;
inst.Hidden = true;
auctionRoom.AddEntry(entry);
UpdateArea(sender);
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
break;
}
else
@@ -3550,7 +3560,7 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to auction a horse they did not have.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to auction a horse they did not have.");
break;
}
}
@@ -3558,9 +3568,9 @@ namespace HISP.Server
{
Leaser horseLeaser = Leaser.GetLeaserByButtonId(buttonIdStr);
- if(sender.User.Money >= horseLeaser.Price)
+ if(sender.LoggedinUser.Money >= horseLeaser.Price)
{
- if(sender.User.HorseInventory.HorseList.Length + 1 > sender.User.MaxHorses)
+ if(sender.LoggedinUser.HorseInventory.HorseList.Length + 1 > sender.LoggedinUser.MaxHorses)
{
byte[] cantManageHorses = PacketBuilder.CreateChat(Messages.HorseLeaserHorsesFull, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantManageHorses);
@@ -3568,31 +3578,31 @@ namespace HISP.Server
}
else
{
- sender.User.MajorPriority = true;
- sender.User.TakeMoney(horseLeaser.Price);
+ sender.LoggedinUser.MajorPriority = true;
+ sender.LoggedinUser.TakeMoney(horseLeaser.Price);
HorseInstance leaseHorse = horseLeaser.GenerateLeaseHorse();
if(leaseHorse.Breed.Id == 170) // UniPeg
{
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnipegTeamup).Count++;
- if(sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnipegTeamup).Count >= 5)
- sender.User.Awards.AddAward(Award.GetAwardById(55)); // UniPeg Friend
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnipegTeamup).Count++;
+ if(sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnipegTeamup).Count >= 5)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(55)); // UniPeg Friend
}
else if(leaseHorse.Breed.Type == "unicorn")
{
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnicornTeamup).Count++;
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnicornTeamup).Count >= 5)
- sender.User.Awards.AddAward(Award.GetAwardById(42)); // Unicorn Friend
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnicornTeamup).Count++;
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.UnicornTeamup).Count >= 5)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(42)); // Unicorn Friend
}
else if(leaseHorse.Breed.Type == "pegasus")
{
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.PegasusTeamup).Count++;
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.PegasusTeamup).Count >= 5)
- sender.User.Awards.AddAward(Award.GetAwardById(43)); // Pegasus Friend
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.PegasusTeamup).Count++;
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.PegasusTeamup).Count >= 5)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(43)); // Pegasus Friend
}
- sender.User.HorseInventory.AddHorse(leaseHorse);
+ sender.LoggedinUser.HorseInventory.AddHorse(leaseHorse);
byte[] addedHorseMeta = PacketBuilder.CreateMeta(Meta.BuildLeaserOnLeaseInfo(horseLeaser));
sender.SendPacket(addedHorseMeta);
@@ -3613,7 +3623,7 @@ namespace HISP.Server
}
if(AbuseReport.DoesReasonExist(buttonIdStr))
{
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
metaPacket = PacketBuilder.CreateMeta(AbuseReport.GetReasonById(buttonIdStr).Meta);
sender.SendPacket(metaPacket);
break;
@@ -3630,13 +3640,13 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Requested user information when not logged in.");
return;
}
- if(packet.Length <= 2)
+ if(packet.Length <= 3)
{
- Logger.ErrorPrint(sender.User.Username + "Sent invalid Arena Scored Packet.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + "Sent invalid Arena Scored Packet.");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string scoreStr = packetStr.Substring(1, (packet.Length - 1) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string scoreStr = packetStr.Substring(1, packet.Length - 3);
int score = -1;
try
{
@@ -3644,21 +3654,21 @@ namespace HISP.Server
}
catch(FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Scored NAN in an arena.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Scored NAN in an arena.");
return;
}
- if(Arena.UserHasEnteredHorseInAnyArena(sender.User))
+ if(Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser))
{
byte[] waitingOnResults = PacketBuilder.CreateChat(Messages.FormatArenaYourScore(score), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(waitingOnResults);
- Arena enteredArena = Arena.GetArenaUserEnteredIn(sender.User);
- enteredArena.SubmitScore(sender.User, score);
+ Arena enteredArena = Arena.GetArenaUserEnteredIn(sender.LoggedinUser);
+ enteredArena.SubmitScore(sender.LoggedinUser, score);
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Scored in an arena while not in one");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Scored in an arena while not in one");
}
return;
@@ -3672,19 +3682,19 @@ namespace HISP.Server
}
// Prevent duplicate requests.
- if (sender.User.UserInfoSend)
+ if (sender.LoggedinUser.UserInfoSend)
return;
- sender.User.UserInfoSend = true;
+ sender.LoggedinUser.UserInfoSend = true;
// This allows the website to view that the player is online.
- Database.AddOnlineUser(sender.User.Id, sender.User.Administrator, sender.User.Moderator, sender.User.Subscribed, sender.User.NewPlayer);
+ Database.AddOnlineUser(sender.LoggedinUser.Id, sender.LoggedinUser.Administrator, sender.LoggedinUser.Moderator, sender.LoggedinUser.Subscribed, sender.LoggedinUser.NewPlayer);
- Logger.DebugPrint(sender.User.Username + " Requested user information.");
- User user = sender.User;
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Requested user information.");
+ User user = sender.LoggedinUser;
// Send player current location & map data
- byte[] MovementPacket = PacketBuilder.CreateMovement(user.X, user.Y, user.CharacterId, user.Facing, PacketBuilder.DIRECTION_TELEPORT, true);
+ byte[] MovementPacket = PacketBuilder.CreateMovementPacket(user.X, user.Y, user.CharacterId, user.Facing, PacketBuilder.DIRECTION_TELEPORT, true);
sender.SendPacket(MovementPacket);
// Send "Welcome to the Secret Land of Horses" message.
@@ -3692,11 +3702,11 @@ namespace HISP.Server
sender.SendPacket(WelcomeMessage);
// Send weather effects, and current server time.
- byte[] WorldData = PacketBuilder.CreateTimeAndWeatherUpdate(World.ServerTime.Minutes, World.ServerTime.Days, World.ServerTime.Years, sender.User.GetWeatherSeen());
+ byte[] WorldData = PacketBuilder.CreateTimeAndWeatherUpdate(World.ServerTime.Minutes, World.ServerTime.Days, World.ServerTime.Years, sender.LoggedinUser.GetWeatherSeen());
sender.SendPacket(WorldData);
// if the player is logging in for the first time, send Welcome newest rider of Horse Isle message.
- if (sender.User.NewPlayer)
+ if (sender.LoggedinUser.NewPlayer)
{
byte[] NewUserMessage = PacketBuilder.CreateChat(Messages.NewUserMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(NewUserMessage);
@@ -3721,16 +3731,16 @@ namespace HISP.Server
{
if (client.LoggedIn)
{
- if (client.User.Id != user.Id)
+ if (client.LoggedinUser.Id != user.Id)
{
- if(IsOnScreen(client.User.X, client.User.Y, sender.User.X, sender.User.Y))
+ if(IsOnScreen(client.LoggedinUser.X, client.LoggedinUser.Y, sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- byte[] PlayerInfo = PacketBuilder.CreatePlayerInfoUpdateOrCreate(client.User.X, client.User.Y, client.User.Facing, client.User.CharacterId, client.User.Username);
+ byte[] PlayerInfo = PacketBuilder.CreatePlayerInfoUpdateOrCreate(client.LoggedinUser.X, client.LoggedinUser.Y, client.LoggedinUser.Facing, client.LoggedinUser.CharacterId, client.LoggedinUser.Username);
sender.SendPacket(PlayerInfo);
}
else
{
- byte[] PlayerInfo = PacketBuilder.CreatePlayerInfoUpdateOrCreate(1000+4, 1000+1, client.User.Facing, client.User.CharacterId, client.User.Username);
+ byte[] PlayerInfo = PacketBuilder.CreatePlayerInfoUpdateOrCreate(1000+4, 1000+1, client.LoggedinUser.Facing, client.LoggedinUser.CharacterId, client.LoggedinUser.Username);
sender.SendPacket(PlayerInfo);
}
}
@@ -3741,11 +3751,11 @@ namespace HISP.Server
* Update all nearby users
* that the new player logged in.
*/
- foreach (User nearbyUser in GameServer.GetNearbyUsers(sender.User.X, sender.User.Y, false, false))
- if (nearbyUser.Id != sender.User.Id)
+ foreach (User nearbyUser in GameServer.GetNearbyUsers(sender.LoggedinUser.X, sender.LoggedinUser.Y, false, false))
+ if (nearbyUser.Id != sender.LoggedinUser.Id)
if(!nearbyUser.MajorPriority)
if(!nearbyUser.MinorPriority)
- UpdateArea(nearbyUser.Client);
+ UpdateArea(nearbyUser.LoggedinClient);
/*
* Send a list of isles, towns and areas to the player
@@ -3760,7 +3770,7 @@ namespace HISP.Server
sender.SendPacket(TileFlags);
// Send Todays Note:
- byte[] MotdData = PacketBuilder.CreateMotd(Messages.FormatMotd(ConfigReader.Motd));
+ byte[] MotdData = PacketBuilder.CreateAnnouncement(Messages.FormatMOTD());
sender.SendPacket(MotdData);
// Send riddle annoucement
@@ -3776,20 +3786,20 @@ namespace HISP.Server
DoItemPurchases(sender);
// Send Queued Messages
- string[] queuedMessages = Database.GetMessageQueue(sender.User.Id);
+ string[] queuedMessages = Database.GetMessageQueue(sender.LoggedinUser.Id);
foreach(string queuedMessage in queuedMessages)
{
byte[] msg = PacketBuilder.CreateChat(Messages.MessageQueueHeader+queuedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(msg);
}
- Database.ClearMessageQueue(sender.User.Id);
+ Database.ClearMessageQueue(sender.LoggedinUser.Id);
// Send "Playername Logged in" message
- byte[] loginMessageBytes = PacketBuilder.CreateChat(Messages.FormatLoginMessage(sender.User.Username), PacketBuilder.CHAT_BOTTOM_LEFT);
+ byte[] loginMessageBytes = PacketBuilder.CreateChat(Messages.FormatLoginMessage(sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_LEFT);
foreach (GameClient client in GameClient.ConnectedClients)
if (client.LoggedIn)
- if (!client.User.MuteLogins && !client.User.MuteAll)
- if (client.User.Id != sender.User.Id)
+ if (!client.LoggedinUser.MuteLogins && !client.LoggedinUser.MuteAll)
+ if (client.LoggedinUser.Id != sender.LoggedinUser.Id)
client.SendPacket(loginMessageBytes);
@@ -3797,16 +3807,16 @@ namespace HISP.Server
* Send players nearby to you
* your position, otherwise just send 1000,1000
*/
- byte[] yourPlayerInfo = PacketBuilder.CreatePlayerInfoUpdateOrCreate(sender.User.X, sender.User.Y, sender.User.Facing, sender.User.CharacterId, sender.User.Username);
- byte[] yourPlayerInfoOffscreen = PacketBuilder.CreatePlayerInfoUpdateOrCreate(1000 + 4, 1000 + 1, sender.User.Facing, sender.User.CharacterId, sender.User.Username);
+ byte[] yourPlayerInfo = PacketBuilder.CreatePlayerInfoUpdateOrCreate(sender.LoggedinUser.X, sender.LoggedinUser.Y, sender.LoggedinUser.Facing, sender.LoggedinUser.CharacterId, sender.LoggedinUser.Username);
+ byte[] yourPlayerInfoOffscreen = PacketBuilder.CreatePlayerInfoUpdateOrCreate(1000 + 4, 1000 + 1, sender.LoggedinUser.Facing, sender.LoggedinUser.CharacterId, sender.LoggedinUser.Username);
foreach (GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
{
- if (client.User.Id != sender.User.Id)
+ if (client.LoggedinUser.Id != sender.LoggedinUser.Id)
{
- if (IsOnScreen(client.User.X, client.User.Y, sender.User.X, sender.User.Y))
+ if (IsOnScreen(client.LoggedinUser.X, client.LoggedinUser.Y, sender.LoggedinUser.X, sender.LoggedinUser.Y))
client.SendPacket(yourPlayerInfo);
else
client.SendPacket(yourPlayerInfoOffscreen);
@@ -3814,6 +3824,8 @@ namespace HISP.Server
}
}
+
+
}
public static void OnSwfModuleCommunication(GameClient sender, byte[] packet)
@@ -3823,9 +3835,9 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " tried to send swf communication when not logged in.");
return;
}
- if (packet.Length < 3)
+ if (packet.Length < 4)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid swf commmunication Packet");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid swf commmunication Packet");
return;
}
@@ -3834,13 +3846,13 @@ namespace HISP.Server
switch(module)
{
case PacketBuilder.SWFMODULE_INVITE:
- if(packet.Length < 3)
+ if(packet.Length < 4)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid 2PLAYER INVITE Packet (WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid 2PLAYER INVITE Packet (WRONG SIZE)");
break;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
int playerId = -1;
try
{
@@ -3851,17 +3863,17 @@ namespace HISP.Server
if(IsUserOnline(playerId))
{
User toInvite = GetUserById(playerId);
- TwoPlayer twoPlayerGame = new TwoPlayer(toInvite, sender.User, false);
+ TwoPlayer twoPlayerGame = new TwoPlayer(toInvite, sender.LoggedinUser, false);
}
break;
case PacketBuilder.SWFMODULE_ACCEPT:
- if (packet.Length < 3)
+ if (packet.Length < 4)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid 2PLAYER ACCEPT Packet (WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid 2PLAYER ACCEPT Packet (WRONG SIZE)");
break;
}
packetStr = Encoding.UTF8.GetString(packet);
- playerIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ playerIdStr = packetStr.Substring(2, packetStr.Length - 4);
playerId = -1;
try
{
@@ -3872,24 +3884,24 @@ namespace HISP.Server
if (IsUserOnline(playerId))
{
User toAccept = GetUserById(playerId);
- if(TwoPlayer.IsPlayerInvitingPlayer(toAccept, sender.User))
+ if(TwoPlayer.IsPlayerInvitingPlayer(toAccept, sender.LoggedinUser))
{
- TwoPlayer twoPlayerGame = TwoPlayer.GetGameInvitingPlayer(toAccept, sender.User);
- twoPlayerGame.Accept(sender.User);
+ TwoPlayer twoPlayerGame = TwoPlayer.GetGameInvitingPlayer(toAccept, sender.LoggedinUser);
+ twoPlayerGame.Accept(sender.LoggedinUser);
}
}
break;
case PacketBuilder.SWFMODULE_DRAWINGROOM:
if(packet.Length < 3)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRAWINGROOM packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRAWINGROOM packet (swf communication, WRONG SIZE)");
break;
}
if(packet[2] == PacketBuilder.DRAWINGROOM_GET_DRAWING)
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
break;
}
int roomId = packet[3] - 40;
@@ -3900,22 +3912,22 @@ namespace HISP.Server
}
catch(KeyNotFoundException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to load an invalid drawing room: " + roomId);
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to load an invalid drawing room: " + roomId);
break;
}
if(room.Drawing != "")
{
- byte[] drawingPacket = PacketBuilder.CreateDrawingUpdate(room.Drawing);
+ byte[] drawingPacket = PacketBuilder.CreateDrawingUpdatePacket(room.Drawing);
sender.SendPacket(drawingPacket);
}
}
else if(packet[2] == PacketBuilder.DRAWINGROOM_SAVE)
{
- if (packet.Length < 4)
+ if (packet.Length < 5)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
break;
}
@@ -3933,27 +3945,27 @@ namespace HISP.Server
}
catch (KeyNotFoundException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to load an invalid drawing room: " + roomId);
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to load an invalid drawing room: " + roomId);
break;
}
- if (!Database.SavedDrawingsExist(sender.User.Id))
- Database.CreateSavedDrawings(sender.User.Id);
+ if (!Database.SavedDrawingsExist(sender.LoggedinUser.Id))
+ Database.CreateSavedDrawings(sender.LoggedinUser.Id);
int slotNo = 0;
byte slot = packet[4];
switch (slot)
{
case 0x29: // Slot 1
- Database.SaveDrawingSlot1(sender.User.Id, room.Drawing);
+ Database.SaveDrawingSlot1(sender.LoggedinUser.Id, room.Drawing);
slotNo = 1;
break;
case 0x2A: // Slot 2
- Database.SaveDrawingSlot2(sender.User.Id, room.Drawing);
+ Database.SaveDrawingSlot2(sender.LoggedinUser.Id, room.Drawing);
slotNo = 2;
break;
case 0x2B: // Slot 3
- Database.SaveDrawingSlot3(sender.User.Id, room.Drawing);
+ Database.SaveDrawingSlot3(sender.LoggedinUser.Id, room.Drawing);
slotNo = 3;
break;
}
@@ -3965,13 +3977,13 @@ namespace HISP.Server
}
else if (packet[2] == PacketBuilder.DRAWINGROOM_LOAD)
{
- if (packet.Length < 4)
+ if (packet.Length < 5)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
break;
}
- if(!sender.User.Subscribed)
+ if(!sender.LoggedinUser.Subscribed)
{
byte[] notSubscribedCantLoad = PacketBuilder.CreateChat(Messages.DrawingCannotLoadNotSubscribed, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(notSubscribedCantLoad);
@@ -3984,12 +3996,12 @@ namespace HISP.Server
room = Drawingroom.GetDrawingRoomById(roomId);
}
catch (KeyNotFoundException){
- Logger.ErrorPrint(sender.User.Username + " tried to load an invalid drawing room: " + roomId);
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to load an invalid drawing room: " + roomId);
break;
}
- if (!Database.SavedDrawingsExist(sender.User.Id))
- Database.CreateSavedDrawings(sender.User.Id);
+ if (!Database.SavedDrawingsExist(sender.LoggedinUser.Id))
+ Database.CreateSavedDrawings(sender.LoggedinUser.Id);
int slotNo = 0;
byte slot = packet[4];
@@ -3997,15 +4009,15 @@ namespace HISP.Server
switch (slot)
{
case 0x29: // Slot 1
- drawingToAdd = Database.LoadDrawingSlot1(sender.User.Id);
+ drawingToAdd = Database.LoadDrawingSlot1(sender.LoggedinUser.Id);
slotNo = 1;
break;
case 0x2A: // Slot 2
- drawingToAdd = Database.LoadDrawingSlot2(sender.User.Id);
+ drawingToAdd = Database.LoadDrawingSlot2(sender.LoggedinUser.Id);
slotNo = 2;
break;
case 0x2B: // Slot 3
- drawingToAdd = Database.LoadDrawingSlot3(sender.User.Id);
+ drawingToAdd = Database.LoadDrawingSlot3(sender.LoggedinUser.Id);
slotNo = 3;
break;
}
@@ -4019,7 +4031,7 @@ namespace HISP.Server
break;
}
- Database.SetLastPlayer("D" + room.Id.ToString(), sender.User.Id);
+ Database.SetLastPlayer("D" + room.Id.ToString(), sender.LoggedinUser.Id);
UpdateDrawingForAll("D" + room.Id, sender, drawingToAdd, true);
byte[] loadedDrawingMessage = PacketBuilder.CreateChat(Messages.FormatDrawingRoomLoaded(slotNo), PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -4029,15 +4041,15 @@ namespace HISP.Server
}
else // Default action- draw line
{
- if (packet.Length < 4)
+ if (packet.Length < 5)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRAWINGROOM GET DRAWING packet (swf communication, WRONG SIZE)");
break;
}
- if(!sender.User.Subscribed)
+ if(!sender.LoggedinUser.Subscribed)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to draw while not subscribed.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to draw while not subscribed.");
byte[] notSubscribedMessage = PacketBuilder.CreateChat(Messages.DrawingNotSentNotSubscribed, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(notSubscribedMessage);
break;
@@ -4051,13 +4063,13 @@ namespace HISP.Server
}
catch (KeyNotFoundException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to load an invalid drawing room: " + roomId);
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to load an invalid drawing room: " + roomId);
break;
}
packetStr = Encoding.UTF8.GetString(packet);
- string drawing = packetStr.Substring(3, (packetStr.Length - 3) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string drawing = packetStr.Substring(3, packetStr.Length - 5);
if (drawing.Contains("X!")) // Clear byte
{
room.Drawing = "";
@@ -4074,22 +4086,22 @@ namespace HISP.Server
break;
}
update:;
- Database.SetLastPlayer("D" + room.Id.ToString(), sender.User.Id);
+ Database.SetLastPlayer("D" + room.Id.ToString(), sender.LoggedinUser.Id);
UpdateDrawingForAll("D" + room.Id, sender, drawing, false);
}
break;
case PacketBuilder.SWFMODULE_BRICKPOET:
- if(packet.Length < 4)
+ if(packet.Length < 5)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid BRICKPOET packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid BRICKPOET packet (swf communication, WRONG SIZE)");
break;
}
if(packet[2] == PacketBuilder.BRICKPOET_LIST_ALL)
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid BRICKPOET LIST ALL packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid BRICKPOET LIST ALL packet (swf communication, WRONG SIZE)");
break;
}
@@ -4101,31 +4113,31 @@ namespace HISP.Server
}
catch(KeyNotFoundException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to load an invalid brickpoet room: " + roomId);
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to load an invalid brickpoet room: " + roomId);
break;
}
// Send list of peices
- byte[] poetPacket = PacketBuilder.CreateBrickPoetList(room);
+ byte[] poetPacket = PacketBuilder.CreateBrickPoetListPacket(room);
sender.SendPacket(poetPacket);
}
else if(packet[3] == PacketBuilder.BRICKPOET_MOVE)
{
- if (packet.Length < 0xA)
+ if (packet.Length < 0xB)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid BRICKPOET MOVE packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid BRICKPOET MOVE packet (swf communication, WRONG SIZE)");
break;
}
packetStr = Encoding.UTF8.GetString(packet);
if(!packetStr.Contains('|'))
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid BRICKPOET MOVE packet (swf communication, NO | SEPERATOR)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid BRICKPOET MOVE packet (swf communication, NO | SEPERATOR)");
break;
}
string[] args = packetStr.Split('|');
if(args.Length < 5)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid BRICKPOET MOVE Packet (swf communication, NOT ENOUGH | SEPERATORS.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid BRICKPOET MOVE Packet (swf communication, NOT ENOUGH | SEPERATORS.");
break;
}
@@ -4149,7 +4161,7 @@ namespace HISP.Server
}
catch (Exception e)
{
- Logger.ErrorPrint(sender.User.Username + " brickpoet - "+e.ToString());
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " brickpoet - "+e.ToString());
break;
}
// Change location in Database
@@ -4158,18 +4170,18 @@ namespace HISP.Server
foreach(User user in GetUsersOnSpecialTileCode("MULTIROOM-" + "P" + roomId.ToString())) // Send to each user!
{
- if (user.Id == sender.User.Id)
+ if (user.Id == sender.LoggedinUser.Id)
continue;
- byte[] updatePoetRoomPacket = PacketBuilder.CreateBrickPoetMove(peice);
- user.Client.SendPacket(updatePoetRoomPacket);
+ byte[] updatePoetRoomPacket = PacketBuilder.CreateBrickPoetMovePacket(peice);
+ user.LoggedinClient.SendPacket(updatePoetRoomPacket);
}
- if (Database.GetLastPlayer("P" + roomId) != sender.User.Id)
+ if (Database.GetLastPlayer("P" + roomId) != sender.LoggedinUser.Id)
{
- Database.SetLastPlayer("P" + roomId, sender.User.Id);
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ Database.SetLastPlayer("P" + roomId, sender.LoggedinUser.Id);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
}
break;
@@ -4182,9 +4194,9 @@ namespace HISP.Server
break;
case PacketBuilder.SWFMODULE_DRESSUPROOM:
- if ( packet.Length < 5 )
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRESSUPROOM packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRESSUPROOM packet (swf communication, WRONG SIZE)");
break;
}
if (packet[2] == PacketBuilder.DRESSUPROOM_LIST_ALL)
@@ -4194,35 +4206,35 @@ namespace HISP.Server
if (room.DressupPeices.Length > 0)
{
- byte[] allDressupsResponse = PacketBuilder.CreateDressupRoomPeiceLoad(room.DressupPeices);
+ byte[] allDressupsResponse = PacketBuilder.CreateDressupRoomPeiceLoad(room.DressupPeices.ToArray());
sender.SendPacket(allDressupsResponse);
}
}
else // Move
{
- if (packet.Length < 8)
+ if (packet.Length < 9)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, WRONG SIZE)");
break;
}
int roomId = packet[2] - 40;
if (roomId <= 0)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, INVALID ROOM)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, INVALID ROOM)");
break;
}
Dressup.DressupRoom room = Dressup.GetDressupRoom(roomId);
packetStr = Encoding.UTF8.GetString(packet);
- string moveStr = packetStr.Substring(3, (packetStr.Length - 3) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string moveStr = packetStr.Substring(3, packetStr.Length - 5);
string[] moves = moveStr.Split('|');
if(moves.Length < 3)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, MOVES WRONG SIZE)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, MOVES WRONG SIZE)");
break;
}
@@ -4247,7 +4259,7 @@ namespace HISP.Server
}
catch(FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, INVALID LOCATION)");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent invalid DRESSUPROOM MOVE packet (swf communication, INVALID LOCATION)");
break;
}
@@ -4259,68 +4271,68 @@ namespace HISP.Server
// Forward to other users
byte[] movePeicePacket = PacketBuilder.CreateDressupRoomPeiceMove(peice.PeiceId, moveToX, moveToY, peice.Active);
- User[] users = GetUsersAt(sender.User.X, sender.User.Y, true, true);
+ User[] users = GetUsersAt(sender.LoggedinUser.X, sender.LoggedinUser.Y, true, true);
foreach(User user in users)
{
- if (user.Id != sender.User.Id)
- user.Client.SendPacket(movePeicePacket);
+ if (user.Id != sender.LoggedinUser.Id)
+ user.LoggedinClient.SendPacket(movePeicePacket);
}
}
break;
- case PacketBuilder.SWFMODULE_BROADCAST:
- byte[] response = PacketBuilder.CreateForwardedSwfModule(packet);
- foreach (User user in GetUsersAt(sender.User.X, sender.User.Y))
+ case PacketBuilder.SWFMODULE_BANDHALL:
+ byte[] response = PacketBuilder.CreateForwardedSwfRequest(packet);
+ foreach (User user in GetUsersAt(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- if (user.Id == sender.User.Id)
+ if (user.Id == sender.LoggedinUser.Id)
continue;
- user.Client.SendPacket(response);
+ user.LoggedinClient.SendPacket(response);
}
break;
- case PacketBuilder.SWFMODULE_OPPONENT:
- if(TwoPlayer.IsPlayerInGame(sender.User))
+ case PacketBuilder.SWFMODULE_2PLAYER:
+ if(TwoPlayer.IsPlayerInGame(sender.LoggedinUser))
{
- TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(sender.User);
+ TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(sender.LoggedinUser);
User otherUser = null;
- if (twoPlayerGame.Invitee.Id == sender.User.Id)
+ if (twoPlayerGame.Invitee.Id == sender.LoggedinUser.Id)
otherUser = twoPlayerGame.Inviting;
- else if (twoPlayerGame.Inviting.Id == sender.User.Id)
+ else if (twoPlayerGame.Inviting.Id == sender.LoggedinUser.Id)
otherUser = twoPlayerGame.Invitee;
- response = PacketBuilder.CreateForwardedSwfModule(packet);
- otherUser.Client.SendPacket(response);
+ response = PacketBuilder.CreateForwardedSwfRequest(packet);
+ otherUser.LoggedinClient.SendPacket(response);
}
break;
case PacketBuilder.SWFMODULE_CLOSE:
- if (TwoPlayer.IsPlayerInGame(sender.User))
+ if (TwoPlayer.IsPlayerInGame(sender.LoggedinUser))
{
- TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(sender.User);
+ TwoPlayer twoPlayerGame = TwoPlayer.GetTwoPlayerGameInProgress(sender.LoggedinUser);
User otherUser = null;
- if (twoPlayerGame.Invitee.Id == sender.User.Id)
+ if (twoPlayerGame.Invitee.Id == sender.LoggedinUser.Id)
otherUser = twoPlayerGame.Inviting;
- else if (twoPlayerGame.Inviting.Id == sender.User.Id)
+ else if (twoPlayerGame.Inviting.Id == sender.LoggedinUser.Id)
otherUser = twoPlayerGame.Invitee;
response = PacketBuilder.Create2PlayerClose();
- otherUser.Client.SendPacket(response);
+ otherUser.LoggedinClient.SendPacket(response);
- twoPlayerGame.CloseGame(sender.User);
+ twoPlayerGame.CloseGame(sender.LoggedinUser);
}
break;
case PacketBuilder.SWFMODULE_ARENA:
- if (Arena.UserHasEnteredHorseInAnyArena(sender.User))
+ if (Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser))
{
- Arena arena = Arena.GetArenaUserEnteredIn(sender.User);
- response = PacketBuilder.CreateForwardedSwfModule(packet);
+ Arena arena = Arena.GetArenaUserEnteredIn(sender.LoggedinUser);
+ response = PacketBuilder.CreateForwardedSwfRequest(packet);
foreach (Arena.ArenaEntry entry in arena.Entries.ToArray())
{
- if (entry.EnteredUser.Id == sender.User.Id)
+ if (entry.EnteredUser.Id == sender.LoggedinUser.Id)
continue;
- if(entry.EnteredUser.Client.LoggedIn)
- entry.EnteredUser.Client.SendPacket(response);
+ if(entry.EnteredUser.LoggedinClient.LoggedIn)
+ entry.EnteredUser.LoggedinClient.SendPacket(response);
}
}
@@ -4341,19 +4353,19 @@ namespace HISP.Server
return;
}
- if(packet.Length < 3)
+ if(packet.Length < 4)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid wish Packet");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid wish Packet");
return;
}
- if (!sender.User.Inventory.HasItemId(Item.WishingCoin))
+ if (!sender.LoggedinUser.Inventory.HasItemId(Item.WishingCoin))
{
- Logger.HackerPrint(sender.User.Username + " Tried to use a wishing well while having 0 coins.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use a wishing well while having 0 coins.");
return;
}
- InventoryItem wishingCoinInvItems = sender.User.Inventory.GetItemByItemId(Item.WishingCoin);
+ InventoryItem wishingCoinInvItems = sender.LoggedinUser.Inventory.GetItemByItemId(Item.WishingCoin);
byte wishType = packet[1];
string message = "";
@@ -4364,7 +4376,7 @@ namespace HISP.Server
{
case PacketBuilder.WISH_MONEY:
int gainMoney = RandomNumberGenerator.Next(500, 1000);
- sender.User.AddMoney(gainMoney);
+ sender.LoggedinUser.AddMoney(gainMoney);
message = Messages.FormatWishMoneyMessage(gainMoney);
break;
case PacketBuilder.WISH_ITEMS:
@@ -4374,8 +4386,8 @@ namespace HISP.Server
item = RandomNumberGenerator.Next(0, wishableItmes.Length);
Item.ItemInformation itm2 = wishableItmes[item];
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(itm.Id));
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(itm2.Id));
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(itm.Id));
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(itm2.Id));
message = Messages.FormatWishThingsMessage(itm.Name, itm2.Name);
break;
@@ -4389,8 +4401,8 @@ namespace HISP.Server
itm = wishableItmes[item];
- sender.User.AddMoney(earnMoney);
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(itm.Id));
+ sender.LoggedinUser.AddMoney(earnMoney);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(itm.Id));
message = Messages.FormatWishWorldPeaceMessage(earnMoney, itm.Name);
break;
@@ -4398,34 +4410,34 @@ namespace HISP.Server
Logger.ErrorPrint("Unknnown Wish type: " + wishType.ToString("X"));
break;
}
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count++;
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count++;
- if(sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count >= 100)
- sender.User.Awards.AddAward(Award.GetAwardById(30)); // Well Wisher
+ if(sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count >= 100)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(30)); // Well Wisher
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count >= 1000)
- sender.User.Awards.AddAward(Award.GetAwardById(31)); // Star Wisher
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count >= 1000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(31)); // Star Wisher
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count >= 10000)
- sender.User.Awards.AddAward(Award.GetAwardById(51)); // Extraordanary Wisher
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.WishingWell).Count >= 10000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(51)); // Extraordanary Wisher
byte[] msg = PacketBuilder.CreateChat(message, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(msg);
- sender.User.Inventory.Remove(wishingCoinInvItems.ItemInstances[0]);
+ sender.LoggedinUser.Inventory.Remove(wishingCoinInvItems.ItemInstances[0]);
UpdateArea(sender);
}
public static void OnKeepAlive(GameClient sender, byte[] packet)
{
if (packet.Length < 2)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid update Packet");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid update Packet");
return;
}
if (packet[1] == PacketBuilder.PACKET_CLIENT_TERMINATOR)
{
- Logger.DebugPrint("Received KEEP_ALIVE from: " + sender.User.Username);
+ Logger.DebugPrint("Received KEEP_ALIVE from: " + sender.LoggedinUser.Username);
return;
}
}
@@ -4436,9 +4448,9 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Requested stats when not logged in.");
return;
}
- if(packet.Length < 2)
+ if(packet.Length < 3)
{
- Logger.ErrorPrint(sender.User.Username + "Sent an invalid Stats Packet");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + "Sent an invalid Stats Packet");
return;
}
@@ -4453,7 +4465,7 @@ namespace HISP.Server
}
if (packet.Length < 2)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid Profile Packet");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid Profile Packet");
return;
}
@@ -4464,8 +4476,8 @@ namespace HISP.Server
}
if (method == PacketBuilder.VIEW_PROFILE)
{
- sender.User.MajorPriority = true;
- string profilePage = sender.User.ProfilePage;
+ sender.LoggedinUser.MajorPriority = true;
+ string profilePage = sender.LoggedinUser.ProfilePage;
byte[] profilePacket = PacketBuilder.CreateProfilePage(profilePage);
sender.SendPacket(profilePacket);
}
@@ -4473,17 +4485,19 @@ namespace HISP.Server
{
string packetStr = Encoding.UTF8.GetString(packet);
- if (packet.Length <= 3 || !packetStr.Contains('|'))
+ if (packet.Length < 3 || !packetStr.Contains('|'))
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid Profile SAVE Packet");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid Profile SAVE Packet");
return;
}
int characterId = (packet[2] - 20) * 64 + (packet[3] - 20);
string profilePage = packetStr.Split('|')[1];
- profilePage = profilePage.Substring(0, profilePage.Length - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
- sender.User.CharacterId = characterId;
+ profilePage = profilePage.Substring(0, profilePage.Length - 2);
+ sender.LoggedinUser.CharacterId = characterId;
+
+
if (profilePage.Length > 4000)
{
@@ -4492,41 +4506,41 @@ namespace HISP.Server
return;
}
- object filterReason = ChatMsg.FilterMessage(profilePage);
+ object filterReason = Chat.FilterMessage(profilePage);
if(filterReason != null)
{
- ChatMsg.Reason reason = (ChatMsg.Reason)filterReason;
+ Chat.Reason reason = (Chat.Reason)filterReason;
byte[] msg = PacketBuilder.CreateChat(Messages.FormatProfileSavedBlocked(reason.Message), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(msg);
return;
}
- sender.User.ProfilePage = profilePage;
+ sender.LoggedinUser.ProfilePage = profilePage;
- Logger.DebugPrint(sender.User.Username + " Changed to character id: " + characterId + " and set there Profile Description to '" + profilePage + "'");
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Changed to character id: " + characterId + " and set there Profile Description to '" + profilePage + "'");
byte[] chatPacket = PacketBuilder.CreateChat(Messages.ProfileSavedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
UpdateArea(sender);
- UpdateUserFacingAndLocation(sender.User);
+ UpdateUserFacingAndLocation(sender.LoggedinUser);
}
else if (method == PacketBuilder.SECCODE_AWARD)
{
- byte[] ExpectedSecCode = sender.User.GenerateSecCode();
+ byte[] ExpectedSecCode = sender.LoggedinUser.GenerateSecCode();
byte[] GotSecCode = new byte[4];
Array.ConstrainedCopy(packet, 2, GotSecCode, 0, GotSecCode.Length);
- Logger.DebugPrint(sender.User.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
if (ExpectedSecCode.SequenceEqual(GotSecCode))
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a seccode AWARD request with invalid size");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a seccode AWARD request with invalid size");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string awardIdStr = packetStr.Substring(6, (packetStr.Length - 6) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string awardIdStr = packetStr.Substring(6, packetStr.Length - 6 - 2);
int value = -1;
try
@@ -4535,18 +4549,18 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent correct sec code, but invalid awardid value");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent correct sec code, but invalid awardid value");
return;
}
- sender.User.Awards.AddAward(Award.GetAwardById(value));
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(value));
return;
}
else
{
byte[] errorMessage = PacketBuilder.CreateChat(Messages.InvalidSecCodeError, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(errorMessage);
- Logger.HackerPrint(sender.User.Username + " Sent invalid sec code");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent invalid sec code");
return;
}
}
@@ -4555,49 +4569,49 @@ namespace HISP.Server
bool time = (method == PacketBuilder.SECCODE_TIME);
bool winloose = (method == PacketBuilder.SECCODE_WINLOOSE);
- byte[] ExpectedSecCode = sender.User.GenerateSecCode();
+ byte[] ExpectedSecCode = sender.LoggedinUser.GenerateSecCode();
byte[] GotSecCode = new byte[4];
Array.ConstrainedCopy(packet, 2, GotSecCode, 0, GotSecCode.Length);
- Logger.DebugPrint(sender.User.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
if (ExpectedSecCode.SequenceEqual(GotSecCode))
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a seccode score/time/winloose request with invalid size");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a seccode score/time/winloose request with invalid size");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string gameInfoStr = packetStr.Substring(6, (packetStr.Length - 6) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string gameInfoStr = packetStr.Substring(6, packetStr.Length - 6 - 2);
if (winloose)
{
string gameTitle = gameInfoStr.Substring(1);
byte pmethod = packet[6];
if(pmethod == PacketBuilder.WINLOOSE_WIN)
{
- sender.User.Highscores.Win(gameTitle);
+ sender.LoggedinUser.Highscores.Win(gameTitle);
byte[] winMsg = PacketBuilder.CreateChat(Messages.Format2PlayerRecordWin(gameTitle), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(winMsg);
}
else if(pmethod == PacketBuilder.WINLOOSE_LOOSE)
{
- sender.User.Highscores.Loose(gameTitle);
+ sender.LoggedinUser.Highscores.Loose(gameTitle);
byte[] looseMsg = PacketBuilder.CreateChat(Messages.Format2PlayerRecordLose(gameTitle), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(looseMsg);
}
- if (sender.User.Highscores.HighscoreList.Length >= 30)
- sender.User.Awards.AddAward(Award.GetAwardById(12)); // Minigame Player
+ if (sender.LoggedinUser.Highscores.HighscoreList.Length >= 30)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(12)); // Minigame Player
- if (sender.User.Highscores.HighscoreList.Length >= 60)
- sender.User.Awards.AddAward(Award.GetAwardById(13)); // Minigame Master
+ if (sender.LoggedinUser.Highscores.HighscoreList.Length >= 60)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(13)); // Minigame Master
- if (Database.GetPlayerTotalMinigamesPlayed(sender.User.Id) >= 1000)
- sender.User.Awards.AddAward(Award.GetAwardById(14)); // Minigame Nut
+ if (Database.GetPlayerTotalMinigamesPlayed(sender.LoggedinUser.Id) >= 1000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(14)); // Minigame Nut
- if (Database.GetPlayerTotalMinigamesPlayed(sender.User.Id) >= 10000)
- sender.User.Awards.AddAward(Award.GetAwardById(15)); // Minigame Crazy
+ if (Database.GetPlayerTotalMinigamesPlayed(sender.LoggedinUser.Id) >= 10000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(15)); // Minigame Crazy
return;
}
if (gameInfoStr.Contains("|"))
@@ -4605,7 +4619,7 @@ namespace HISP.Server
string[] gameInfo = gameInfoStr.Split('|');
if (gameInfo.Length < 2)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a invalid seccode score request");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a invalid seccode score request");
return;
}
@@ -4619,7 +4633,7 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent correct sec code, but invalid score value");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent correct sec code, but invalid score value");
return;
}
Highscore.HighscoreTableEntry[] scores = Database.GetTopScores(gameTitle, 5, !time);
@@ -4627,12 +4641,12 @@ namespace HISP.Server
if (scores.Length >= 1)
bestScoreEver = scores[0].Score <= value;
- bool newHighscore = sender.User.Highscores.UpdateHighscore(gameTitle, value, time);
+ bool newHighscore = sender.LoggedinUser.Highscores.UpdateHighscore(gameTitle, value, time);
if(bestScoreEver && !time)
{
byte[] bestScoreBeaten = PacketBuilder.CreateChat(Messages.BeatBestHighscore, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(bestScoreBeaten);
- sender.User.AddMoney(2500);
+ sender.LoggedinUser.AddMoney(2500);
}
else if (newHighscore)
{
@@ -4649,22 +4663,22 @@ namespace HISP.Server
}
- if(sender.User.Highscores.HighscoreList.Length >= 30)
- sender.User.Awards.AddAward(Award.GetAwardById(12)); // Minigame Player
+ if(sender.LoggedinUser.Highscores.HighscoreList.Length >= 30)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(12)); // Minigame Player
- if (sender.User.Highscores.HighscoreList.Length >= 60)
- sender.User.Awards.AddAward(Award.GetAwardById(13)); // Minigame Master
+ if (sender.LoggedinUser.Highscores.HighscoreList.Length >= 60)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(13)); // Minigame Master
- if (Database.GetPlayerTotalMinigamesPlayed(sender.User.Id) >= 1000)
- sender.User.Awards.AddAward(Award.GetAwardById(14)); // Minigame Nut
+ if (Database.GetPlayerTotalMinigamesPlayed(sender.LoggedinUser.Id) >= 1000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(14)); // Minigame Nut
- if (Database.GetPlayerTotalMinigamesPlayed(sender.User.Id) >= 10000)
- sender.User.Awards.AddAward(Award.GetAwardById(15)); // Minigame Crazy
+ if (Database.GetPlayerTotalMinigamesPlayed(sender.LoggedinUser.Id) >= 10000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(15)); // Minigame Crazy
}
else
{
- Logger.ErrorPrint(sender.User.Username + " didnt send a game name AND a score.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " didnt send a game name AND a score.");
return;
}
@@ -4673,33 +4687,33 @@ namespace HISP.Server
{
byte[] errorMessage = PacketBuilder.CreateChat(Messages.InvalidSecCodeError, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(errorMessage);
- Logger.HackerPrint(sender.User.Username + " Sent invalid sec code");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent invalid sec code");
return;
}
}
else if (method == PacketBuilder.SECCODE_MONEY)
{
- byte[] ExpectedSecCode = sender.User.GenerateSecCode();
+ byte[] ExpectedSecCode = sender.LoggedinUser.GenerateSecCode();
byte[] GotSecCode = new byte[4];
Array.ConstrainedCopy(packet, 2, GotSecCode, 0, GotSecCode.Length);
- Logger.DebugPrint(sender.User.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
if (ExpectedSecCode.SequenceEqual(GotSecCode))
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a seccode money request with invalid size");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a seccode money request with invalid size");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string gameInfoStr = packetStr.Substring(6, (packetStr.Length - 6) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string gameInfoStr = packetStr.Substring(6, packetStr.Length - 6 - 2);
if (gameInfoStr.Contains("|"))
{
string[] moneyInfo = gameInfoStr.Split('|');
if (moneyInfo.Length < 2)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a invalid money score request");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a invalid money score request");
return;
}
@@ -4713,21 +4727,21 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent correct sec code, but invalid money value");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent correct sec code, but invalid money value");
return;
}
int moneyEarned = value * 10;
- Logger.InfoPrint(sender.User.Username + " Earned $" + moneyEarned + " In: " + id);
+ Logger.InfoPrint(sender.LoggedinUser.Username + " Earned $" + moneyEarned + " In: " + id);
- sender.User.AddMoney(moneyEarned);
+ sender.LoggedinUser.AddMoney(moneyEarned);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatMoneyEarnedMessage(moneyEarned), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
}
else
{
- Logger.ErrorPrint(sender.User.Username + " didnt send a game name AND a score.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " didnt send a game name AND a score.");
return;
}
@@ -4735,19 +4749,19 @@ namespace HISP.Server
}
else if (method == PacketBuilder.SECCODE_GIVE_ITEM)
{
- byte[] ExpectedSecCode = sender.User.GenerateSecCode();
+ byte[] ExpectedSecCode = sender.LoggedinUser.GenerateSecCode();
byte[] GotSecCode = new byte[4];
Array.ConstrainedCopy(packet, 2, GotSecCode, 0, GotSecCode.Length);
- Logger.DebugPrint(sender.User.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
if (ExpectedSecCode.SequenceEqual(GotSecCode))
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a seccode item request with invalid size");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a seccode item request with invalid size");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string intStr = packetStr.Substring(6, (packetStr.Length - 6) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string intStr = packetStr.Substring(6, packetStr.Length - 6 - 2);
int value = -1;
try
{
@@ -4755,7 +4769,7 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent correct sec code, but invalid value");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent correct sec code, but invalid value");
return;
}
@@ -4768,7 +4782,7 @@ namespace HISP.Server
string messageToSend = Messages.FormatYouEarnedAnItemMessage(itemInfo.Name);
try
{
- sender.User.Inventory.Add(itm);
+ sender.LoggedinUser.Inventory.Add(itm);
}
catch(InventoryException)
{
@@ -4780,7 +4794,7 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Sent correct sec code, but tried to give an non existant item");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent correct sec code, but tried to give an non existant item");
return;
}
@@ -4789,25 +4803,25 @@ namespace HISP.Server
{
byte[] errorMessage = PacketBuilder.CreateChat(Messages.InvalidSecCodeError, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(errorMessage);
- Logger.HackerPrint(sender.User.Username + " Sent invalid sec code");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent invalid sec code");
return;
}
}
else if (method == PacketBuilder.SECCODE_DELETE_ITEM)
{
- byte[] ExpectedSecCode = sender.User.GenerateSecCode();
+ byte[] ExpectedSecCode = sender.LoggedinUser.GenerateSecCode();
byte[] GotSecCode = new byte[4];
Array.ConstrainedCopy(packet, 2, GotSecCode, 0, GotSecCode.Length);
- Logger.DebugPrint(sender.User.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
if (ExpectedSecCode.SequenceEqual(GotSecCode))
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a seccode item request with invalid size");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a seccode item request with invalid size");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string intStr = packetStr.Substring(6, (packetStr.Length - 6) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string intStr = packetStr.Substring(6, packetStr.Length - 6 - 2);
int value = -1;
try
{
@@ -4815,15 +4829,15 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent correct sec code, but invalid value");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent correct sec code, but invalid value");
return;
}
- if (sender.User.Inventory.HasItemId(value))
+ if (sender.LoggedinUser.Inventory.HasItemId(value))
{
- InventoryItem item = sender.User.Inventory.GetItemByItemId(value);
- sender.User.Inventory.Remove(item.ItemInstances[0]);
+ InventoryItem item = sender.LoggedinUser.Inventory.GetItemByItemId(value);
+ sender.LoggedinUser.Inventory.Remove(item.ItemInstances[0]);
Item.ItemInformation itemInfo = Item.GetItemById(value);
byte[] lostItemMessage = PacketBuilder.CreateChat(Messages.FormatYouLostAnItemMessage(itemInfo.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -4833,7 +4847,7 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Sent correct sec code, but tried to delete an non existant item");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent correct sec code, but tried to delete an non existant item");
return;
}
@@ -4842,25 +4856,25 @@ namespace HISP.Server
{
byte[] errorMessage = PacketBuilder.CreateChat(Messages.InvalidSecCodeError, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(errorMessage);
- Logger.HackerPrint(sender.User.Username + " Sent invalid sec code");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent invalid sec code");
return;
}
}
else if (method == PacketBuilder.SECCODE_QUEST)
{
- byte[] ExpectedSecCode = sender.User.GenerateSecCode();
+ byte[] ExpectedSecCode = sender.LoggedinUser.GenerateSecCode();
byte[] GotSecCode = new byte[4];
Array.ConstrainedCopy(packet, 2, GotSecCode, 0, GotSecCode.Length);
- Logger.DebugPrint(sender.User.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Sent sec code: " + BitConverter.ToString(GotSecCode).Replace("-", " "));
if (ExpectedSecCode.SequenceEqual(GotSecCode))
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a seccode quest request with invalid size");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a seccode quest request with invalid size");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
- string intStr = packetStr.Substring(6, (packetStr.Length - 6) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string intStr = packetStr.Substring(6, packetStr.Length - 6 - 2);
int value = -1;
try
{
@@ -4868,7 +4882,7 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.HackerPrint(sender.User.Username + " Sent correct sec code, but invalid value");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent correct sec code, but invalid value");
return;
}
@@ -4876,11 +4890,11 @@ namespace HISP.Server
if (Quest.DoesQuestExist(value))
{
Quest.QuestEntry questEntry = Quest.GetQuestById(value);
- Quest.ActivateQuest(sender.User, questEntry);
+ Quest.ActivateQuest(sender.LoggedinUser, questEntry);
}
else
{
- Logger.HackerPrint(sender.User.Username + " Sent correct sec code, but tried to activate a non existant quest");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent correct sec code, but tried to activate a non existant quest");
return;
}
@@ -4890,31 +4904,31 @@ namespace HISP.Server
{
byte[] errorMessage = PacketBuilder.CreateChat(Messages.InvalidSecCodeError, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(errorMessage);
- Logger.HackerPrint(sender.User.Username + " Sent invalid sec code");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Sent invalid sec code");
return;
}
}
else if (method == PacketBuilder.PROFILE_HIGHSCORES_LIST)
{
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
string packetStr = Encoding.UTF8.GetString(packet);
- string gameName = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string gameName = packetStr.Substring(2, packetStr.Length - 4);
byte[] metaTag = PacketBuilder.CreateMeta(Meta.BuildTopHighscores(gameName));
sender.SendPacket(metaTag);
}
else if (method == PacketBuilder.PROFILE_BESTTIMES_LIST)
{
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
string packetStr = Encoding.UTF8.GetString(packet);
- string gameName = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string gameName = packetStr.Substring(2, packetStr.Length - 4);
byte[] metaTag = PacketBuilder.CreateMeta(Meta.BuildTopTimes(gameName));
sender.SendPacket(metaTag);
}
else if (method == PacketBuilder.PROFILE_WINLOOSE_LIST)
{
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
string packetStr = Encoding.UTF8.GetString(packet);
- string gameName = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string gameName = packetStr.Substring(2, packetStr.Length - 4);
byte[] metaTag = PacketBuilder.CreateMeta(Meta.BuildTopWinners(gameName));
sender.SendPacket(metaTag);
}
@@ -4932,7 +4946,7 @@ namespace HISP.Server
}
- User loggedInUser = sender.User;
+ User loggedInUser = sender.LoggedinUser;
/*
* Player stuff
@@ -4948,7 +4962,7 @@ namespace HISP.Server
// Close Social Windows
foreach (User sUser in loggedInUser.BeingSocializedBy)
- UpdateArea(sUser.Client);
+ UpdateArea(sUser.LoggedinClient);
loggedInUser.ClearSocailizedWith();
@@ -4956,7 +4970,7 @@ namespace HISP.Server
{
if(loggedInUser.CurrentlyRidingHorse.BasicStats.Experience < 25)
{
- if(GameServer.RandomNumberGenerator.Next(0, 100) == 97)
+ if(GameServer.RandomNumberGenerator.Next(0, 100) >= 97 || sender.LoggedinUser.Username.ToLower() == "dream")
{
loggedInUser.CurrentlyRidingHorse.BasicStats.Experience++;
byte[] horseBuckedMessage;
@@ -4967,8 +4981,8 @@ namespace HISP.Server
else
horseBuckedMessage = PacketBuilder.CreateChat(Messages.HorseBuckedYou, PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.User.CurrentlyRidingHorse = null;
- sender.User.Facing %= 5;
+ sender.LoggedinUser.CurrentlyRidingHorse = null;
+ sender.LoggedinUser.Facing %= 5;
sender.SendPacket(horseBuckedMessage);
}
}
@@ -5017,7 +5031,7 @@ namespace HISP.Server
int onHorse = 0;
- int facing = sender.User.Facing;
+ int facing = sender.LoggedinUser.Facing;
while (facing >= 5)
{
facing -= 5;
@@ -5074,7 +5088,7 @@ namespace HISP.Server
loggedInUser.Facing = Direction + (onHorse * 5);
Logger.DebugPrint("Exiting player: " + loggedInUser.Username + " to: " + loggedInUser.X + "," + loggedInUser.Y);
- byte[] moveResponse = PacketBuilder.CreateMovement(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, Direction, true);
+ byte[] moveResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, Direction, true);
sender.SendPacket(moveResponse);
goto Complete;
}
@@ -5163,12 +5177,12 @@ namespace HISP.Server
}
}
- byte[] moveResponse = PacketBuilder.CreateMovement(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, direction, true);
+ byte[] moveResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, direction, true);
sender.SendPacket(moveResponse);
}
else
{
- byte[] moveResponse = PacketBuilder.CreateMovement(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_NONE, false);
+ byte[] moveResponse = PacketBuilder.CreateMovementPacket(loggedInUser.X, loggedInUser.Y, loggedInUser.CharacterId, loggedInUser.Facing, PacketBuilder.DIRECTION_NONE, false);
sender.SendPacket(moveResponse);
}
Complete:;
@@ -5200,7 +5214,7 @@ namespace HISP.Server
continue;
byte[] playerInfoBytes = PacketBuilder.CreatePlayerInfoUpdateOrCreate(1000 + 4, 1000 + 1, loggedInUser.Facing, loggedInUser.CharacterId, loggedInUser.Username);
- offScreenUsers.Client.SendPacket(playerInfoBytes);
+ offScreenUsers.LoggedinClient.SendPacket(playerInfoBytes);
}
foreach (User onScreenUsers in goneOnScreen)
@@ -5209,7 +5223,7 @@ namespace HISP.Server
continue;
byte[] playerInfoBytes = PacketBuilder.CreatePlayerInfoUpdateOrCreate(onScreenUsers.X, onScreenUsers.Y, onScreenUsers.Facing, onScreenUsers.CharacterId, onScreenUsers.Username);
- loggedInUser.Client.SendPacket(playerInfoBytes);
+ loggedInUser.LoggedinClient.SendPacket(playerInfoBytes);
}
Update(sender);
@@ -5222,7 +5236,7 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Sent quit packet when not logged in.");
return;
}
- Logger.InfoPrint(sender.User.Username + " Clicked \"Quit Game\".. Disconnecting");
+ Logger.InfoPrint(sender.LoggedinUser.Username + " Clicked \"Quit Game\".. Disconnecting");
sender.Disconnect();
}
public static void OnNpcInteraction(GameClient sender, byte[] packet)
@@ -5232,7 +5246,7 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Sent npc interaction packet when not logged in.");
return;
}
- if (packet.Length < 2)
+ if (packet.Length < 3)
{
Logger.ErrorPrint(sender.RemoteIp + " Sent an invalid npc interaction packet.");
return;
@@ -5242,7 +5256,7 @@ namespace HISP.Server
{
string packetStr = Encoding.UTF8.GetString(packet);
- string number = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string number = packetStr.Substring(2, packetStr.Length - 4);
int chatId = 0;
try
@@ -5251,36 +5265,36 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to start talking to an NPC with id that is NaN.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to start talking to an NPC with id that is NaN.");
return;
}
if(!Npc.NpcExists(chatId))
{
- Logger.ErrorPrint(sender.User.Username + " Tried to start talking to an NPC that doesnt exist.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to start talking to an NPC that doesnt exist.");
return;
}
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
Npc.NpcEntry entry = Npc.GetNpcById(chatId);
if(entry.Chatpoints.Length <= 0)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to start talking to an NPC with no chatpoints.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to start talking to an NPC with no chatpoints.");
return;
}
- int defaultChatpointId = Npc.GetDefaultChatpoint(sender.User, entry);
+ int defaultChatpointId = Npc.GetDefaultChatpoint(sender.LoggedinUser, entry);
Npc.NpcChat startingChatpoint = Npc.GetNpcChatpoint(entry, defaultChatpointId);
- string metaInfo = Meta.BuildNpcChatpoint(sender.User, entry, startingChatpoint);
+ string metaInfo = Meta.BuildNpcChatpoint(sender.LoggedinUser, entry, startingChatpoint);
byte[] metaPacket = PacketBuilder.CreateMeta(metaInfo);
sender.SendPacket(metaPacket);
- sender.User.LastTalkedToNpc = entry;
+ sender.LoggedinUser.LastTalkedToNpc = entry;
}
else if (action == PacketBuilder.NPC_CONTINUE_CHAT)
{
string packetStr = Encoding.UTF8.GetString(packet);
- string number = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string number = packetStr.Substring(2, packetStr.Length - 4);
int replyId = 0;
try
{
@@ -5288,11 +5302,11 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to reply to an NPC with replyid that is NaN.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to reply to an NPC with replyid that is NaN.");
return;
}
- Npc.NpcEntry lastNpc = sender.User.LastTalkedToNpc;
+ Npc.NpcEntry lastNpc = sender.LoggedinUser.LastTalkedToNpc;
Npc.NpcReply reply;
try
{
@@ -5300,7 +5314,7 @@ namespace HISP.Server
}
catch(KeyNotFoundException)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to reply with replyid that does not exist.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to reply with replyid that does not exist.");
return;
}
@@ -5309,8 +5323,8 @@ namespace HISP.Server
UpdateArea(sender);
return;
}
- sender.User.MajorPriority = true;
- string metaInfo = Meta.BuildNpcChatpoint(sender.User, lastNpc, Npc.GetNpcChatpoint(lastNpc, reply.GotoChatpoint));
+ sender.LoggedinUser.MajorPriority = true;
+ string metaInfo = Meta.BuildNpcChatpoint(sender.LoggedinUser, lastNpc, Npc.GetNpcChatpoint(lastNpc, reply.GotoChatpoint));
byte[] metaPacket = PacketBuilder.CreateMeta(metaInfo);
sender.SendPacket(metaPacket);
return;
@@ -5323,7 +5337,7 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Sent transport packet when not logged in.");
return;
}
- if (packet.Length < 2)
+ if (packet.Length < 3)
{
Logger.ErrorPrint(sender.RemoteIp + " Sent an invalid transport packet.");
return;
@@ -5331,7 +5345,7 @@ namespace HISP.Server
string packetStr = Encoding.UTF8.GetString(packet);
- string number = packetStr.Substring(1, (packetStr.Length - 1) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string number = packetStr.Substring(1, packetStr.Length - 3);
int transportid;
try
@@ -5340,15 +5354,15 @@ namespace HISP.Server
}
catch(FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Tried to use a transport with id that is NaN.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to use a transport with id that is NaN.");
return;
}
try
{
- Transport.TransportPoint transportPoint = Transport.GetTransportPoint(sender.User.X, sender.User.Y);
- if (transportPoint.X != sender.User.X && transportPoint.Y != sender.User.Y)
+ Transport.TransportPoint transportPoint = Transport.GetTransportPoint(sender.LoggedinUser.X, sender.LoggedinUser.Y);
+ if (transportPoint.X != sender.LoggedinUser.X && transportPoint.Y != sender.LoggedinUser.Y)
{
- Logger.HackerPrint(sender.User.Username + " Tried to use transport id: " + transportid.ToString() + " while not the correct transport point!");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use transport id: " + transportid.ToString() + " while not the correct transport point!");
return;
}
@@ -5357,16 +5371,16 @@ namespace HISP.Server
if (transportLocation.Type == "WAGON")
{
- if(sender.User.OwnedRanch != null)
+ if(sender.LoggedinUser.OwnedRanch != null)
{
- if(sender.User.OwnedRanch.GetBuildingCount(7) > 0) // Wagon
+ if(sender.LoggedinUser.OwnedRanch.GetBuildingCount(7) > 0) // Wagon
{
cost = 0;
}
}
}
- if (sender.User.Bids.Length > 0)
+ if (sender.LoggedinUser.Bids.Length > 0)
{
byte[] cantBuyWhileAuctioning = PacketBuilder.CreateChat(Messages.AuctionNoOtherTransactionAllowed, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantBuyWhileAuctioning);
@@ -5374,7 +5388,7 @@ namespace HISP.Server
}
- if (sender.User.Money >= cost)
+ if (sender.LoggedinUser.Money >= cost)
{
string swfToLoad = Messages.BoatCutscene;
if (transportLocation.Type == "WAGON")
@@ -5382,24 +5396,24 @@ namespace HISP.Server
if (transportLocation.Type != "ROWBOAT")
{
- byte[] swfModulePacket = PacketBuilder.CreateSwfModule(swfToLoad, PacketBuilder.PACKET_SWF_MODULE_CUTSCENE);
+ byte[] swfModulePacket = PacketBuilder.CreateSwfModule(swfToLoad, PacketBuilder.PACKET_SWF_CUTSCENE);
sender.SendPacket(swfModulePacket);
}
- sender.User.Teleport(transportLocation.GotoX, transportLocation.GotoY);
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Transport).Count++;
+ sender.LoggedinUser.Teleport(transportLocation.GotoX, transportLocation.GotoY);
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Transport).Count++;
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Transport).Count >= 500)
- sender.User.Awards.AddAward(Award.GetAwardById(27)); // Traveller
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Transport).Count >= 5000)
- sender.User.Awards.AddAward(Award.GetAwardById(28)); // Globetrotter
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Transport).Count >= 500)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(27)); // Traveller
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Transport).Count >= 5000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(28)); // Globetrotter
byte[] welcomeToIslePacket = PacketBuilder.CreateChat(Messages.FormatWelcomeToAreaMessage(transportLocation.LocationTitle), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(welcomeToIslePacket);
if(cost > 0)
- sender.User.TakeMoney(cost);
+ sender.LoggedinUser.TakeMoney(cost);
}
else
{
@@ -5409,7 +5423,7 @@ namespace HISP.Server
}
catch (KeyNotFoundException)
{
- Logger.HackerPrint(sender.User.Username + " Tried to use transport id: " + transportid.ToString() + " while not on a transport point!");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to use transport id: " + transportid.ToString() + " while not on a transport point!");
}
@@ -5421,9 +5435,9 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Sent ranch packet when not logged in.");
return;
}
- if (packet.Length < 3)
+ if (packet.Length < 4)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid ranch packet.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid ranch packet.");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
@@ -5431,7 +5445,7 @@ namespace HISP.Server
if (method == PacketBuilder.RANCH_INFO)
{
- string buildingIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string buildingIdStr = packetStr.Substring(2, packetStr.Length - 4);
int buildingId = 0;
try
{
@@ -5439,7 +5453,7 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to get info for building id NaN");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to get info for building id NaN");
return;
}
if (Ranch.RanchBuilding.RanchBuildingExists(buildingId))
@@ -5453,74 +5467,74 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " tried to get info for building id that didnt exist.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to get info for building id that didnt exist.");
return;
}
}
else if (method == PacketBuilder.RANCH_SELL)
{
- string NanSTR = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string NanSTR = packetStr.Substring(2, packetStr.Length - 4);
if (NanSTR == "NaN")
{
- if (sender.User.OwnedRanch == null)
+ if (sender.LoggedinUser.OwnedRanch == null)
{
- Logger.HackerPrint(sender.User.Username + " Tried to sell there ranch when they didnt own one.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to sell there ranch when they didnt own one.");
return;
}
- int sellPrice = sender.User.OwnedRanch.GetSellPrice();
- sender.User.AddMoney(sellPrice);
+ int sellPrice = sender.LoggedinUser.OwnedRanch.GetSellPrice();
+ sender.LoggedinUser.AddMoney(sellPrice);
byte[] sellPacket = PacketBuilder.CreateChat(Messages.FormatRanchSoldMessage(sellPrice), PacketBuilder.CHAT_BOTTOM_RIGHT);
- sender.User.OwnedRanch.OwnerId = -1;
+ sender.LoggedinUser.OwnedRanch.OwnerId = -1;
sender.SendPacket(sellPacket);
// Change map sprite.
- User[] users = GetUsersAt(sender.User.X, sender.User.Y, true, true);
+ User[] users = GetUsersAt(sender.LoggedinUser.X, sender.LoggedinUser.Y, true, true);
foreach (User user in users)
{
- 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);
}
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to sell there ranch without sending NaN.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to sell there ranch without sending NaN.");
return;
}
}
else if (method == PacketBuilder.RANCH_UPGRADE)
{
- string NanSTR = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string NanSTR = packetStr.Substring(2, packetStr.Length - 4);
if (NanSTR == "NaN")
{
- if (sender.User.OwnedRanch != null)
+ if (sender.LoggedinUser.OwnedRanch != null)
{
- Ranch.RanchUpgrade currentUpgrade = sender.User.OwnedRanch.GetRanchUpgrade();
+ Ranch.RanchUpgrade currentUpgrade = sender.LoggedinUser.OwnedRanch.GetRanchUpgrade();
if (!Ranch.RanchUpgrade.RanchUpgradeExists(currentUpgrade.Id + 1))
{
- Logger.ErrorPrint(sender.User.Username + " Tried to upgrade there ranch when it was max upgrade.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to upgrade there ranch when it was max upgrade.");
return;
}
Ranch.RanchUpgrade nextUpgrade = Ranch.RanchUpgrade.GetRanchUpgradeById(currentUpgrade.Id + 1);
- if (sender.User.Money >= nextUpgrade.Cost)
+ if (sender.LoggedinUser.Money >= nextUpgrade.Cost)
{
- sender.User.TakeMoney(nextUpgrade.Cost);
- sender.User.OwnedRanch.InvestedMoney += nextUpgrade.Cost;
- sender.User.OwnedRanch.UpgradedLevel++;
+ sender.LoggedinUser.TakeMoney(nextUpgrade.Cost);
+ sender.LoggedinUser.OwnedRanch.InvestedMoney += nextUpgrade.Cost;
+ sender.LoggedinUser.OwnedRanch.UpgradedLevel++;
byte[] upgraded = PacketBuilder.CreateChat(Messages.UpgradedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(upgraded);
// Change map sprite.
- User[] users = GetUsersAt(sender.User.X, sender.User.Y, true, true);
+ User[] users = GetUsersAt(sender.LoggedinUser.X, sender.LoggedinUser.Y, true, true);
foreach (User user in users)
{
- 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);
}
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
}
else
{
@@ -5530,18 +5544,18 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to upgrade there ranch when they didnt own one.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to upgrade there ranch when they didnt own one.");
}
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to upgrade there ranch without sending NaN.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to upgrade there ranch without sending NaN.");
return;
}
}
else if (method == PacketBuilder.RANCH_REMOVE)
{
- string buildingIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string buildingIdStr = packetStr.Substring(2, packetStr.Length - 4);
int buildingId = 0;
try
{
@@ -5549,57 +5563,57 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to get info for building id NaN");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to get info for building id NaN");
return;
}
if (Ranch.RanchBuilding.RanchBuildingExists(buildingId))
{
Ranch.RanchBuilding building = Ranch.RanchBuilding.GetRanchBuildingById(buildingId);
- int ranchBuild = sender.User.LastClickedRanchBuilding;
+ int ranchBuild = sender.LoggedinUser.LastClickedRanchBuilding;
if (ranchBuild <= 0)
return;
- if (sender.User.OwnedRanch != null)
+ if (sender.LoggedinUser.OwnedRanch != null)
{
- if (ranchBuild > sender.User.OwnedRanch.GetRanchUpgrade().Limit)
+ if (ranchBuild > sender.LoggedinUser.OwnedRanch.GetRanchUpgrade().Limit)
{
- Logger.HackerPrint(sender.User.Username + " Tried to remove more buildings than the limit.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to remove more buildings than the limit.");
return;
}
- Ranch.RanchBuilding ranchBuilding = sender.User.OwnedRanch.GetBuilding(ranchBuild - 1);
+ Ranch.RanchBuilding ranchBuilding = sender.LoggedinUser.OwnedRanch.GetBuilding(ranchBuild - 1);
if (ranchBuilding == null)
return;
if (ranchBuilding.Id == buildingId)
{
- sender.User.OwnedRanch.SetBuilding(ranchBuild - 1, null);
- sender.User.AddMoney(ranchBuilding.GetTeardownPrice());
- sender.User.OwnedRanch.InvestedMoney -= building.Cost;
+ sender.LoggedinUser.OwnedRanch.SetBuilding(ranchBuild - 1, null);
+ sender.LoggedinUser.AddMoney(ranchBuilding.GetTeardownPrice());
+ sender.LoggedinUser.OwnedRanch.InvestedMoney -= building.Cost;
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatBuildingTornDown(ranchBuilding.GetTeardownPrice()), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
return;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to remove bulidingid: " + buildingId + " from building slot " + ranchBuild + " but the building was not found there.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to remove bulidingid: " + buildingId + " from building slot " + ranchBuild + " but the building was not found there.");
}
}
- Logger.HackerPrint(sender.User.Username + " Tried to remove in a ranch when they dont own one.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to remove in a ranch when they dont own one.");
return;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " tried to get info for building id that didnt exist.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to get info for building id that didnt exist.");
return;
}
}
else if (method == PacketBuilder.RANCH_BUILD)
{
- string buildingIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string buildingIdStr = packetStr.Substring(2, packetStr.Length - 4);
int buildingId = 0;
try
{
@@ -5607,31 +5621,31 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to get info for building id NaN");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to get info for building id NaN");
return;
}
if (Ranch.RanchBuilding.RanchBuildingExists(buildingId))
{
Ranch.RanchBuilding building = Ranch.RanchBuilding.GetRanchBuildingById(buildingId);
- int ranchBuild = sender.User.LastClickedRanchBuilding;
+ int ranchBuild = sender.LoggedinUser.LastClickedRanchBuilding;
if (ranchBuild == 0)
return;
- if (sender.User.OwnedRanch != null)
+ if (sender.LoggedinUser.OwnedRanch != null)
{
- if (ranchBuild > sender.User.OwnedRanch.GetRanchUpgrade().Limit)
+ if (ranchBuild > sender.LoggedinUser.OwnedRanch.GetRanchUpgrade().Limit)
{
- Logger.HackerPrint(sender.User.Username + " Tried to build more buildings than the limit.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to build more buildings than the limit.");
return;
}
- if (sender.User.Money >= building.Cost)
+ if (sender.LoggedinUser.Money >= building.Cost)
{
- sender.User.OwnedRanch.SetBuilding(ranchBuild - 1, building);
- sender.User.OwnedRanch.InvestedMoney += building.Cost;
- sender.User.TakeMoney(building.Cost);
+ sender.LoggedinUser.OwnedRanch.SetBuilding(ranchBuild - 1, building);
+ sender.LoggedinUser.OwnedRanch.InvestedMoney += building.Cost;
+ sender.LoggedinUser.TakeMoney(building.Cost);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.RanchBuildingComplete, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
return;
}
@@ -5642,31 +5656,33 @@ namespace HISP.Server
return;
}
}
- Logger.HackerPrint(sender.User.Username + " Tried to build in a ranch when they dont own one.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to build in a ranch when they dont own one.");
return;
}
else
{
- Logger.ErrorPrint(sender.User.Username + " tried to get info for building id that didnt exist.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to get info for building id that didnt exist.");
return;
}
}
else if (method == PacketBuilder.RANCH_BUY)
{
- string nan = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string nan = packetStr.Substring(2, packetStr.Length - 4);
if (nan == "NaN")
{
- if (Ranch.IsRanchHere(sender.User.X, sender.User.Y))
+ if (Ranch.IsRanchHere(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- Ranch ranch = Ranch.GetRanchAt(sender.User.X, sender.User.Y);
- if (sender.User.Money >= ranch.Value)
+ Ranch ranch = Ranch.GetRanchAt(sender.LoggedinUser.X, sender.LoggedinUser.Y);
+ if (sender.LoggedinUser.Money >= ranch.Value)
{
byte[] broughtRanch = PacketBuilder.CreateChat(Messages.FormatRanchBroughtMessage(ranch.Value), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(broughtRanch);
- sender.User.TakeMoney(ranch.Value);
- ranch.OwnerId = sender.User.Id;
+ sender.LoggedinUser.TakeMoney(ranch.Value);
+ ranch.OwnerId = sender.LoggedinUser.Id;
ranch.InvestedMoney += ranch.Value;
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ sender.LoggedinUser.OwnedRanch = ranch;
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(Item.DorothyShoes));
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
}
else
@@ -5677,36 +5693,36 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Tried to buy a non existant ranch.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to buy a non existant ranch.");
return;
}
}
else
{
- Logger.ErrorPrint(sender.User.Username + " Sent RANCH_BUY without \"NaN\".");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent RANCH_BUY without \"NaN\".");
return;
}
}
else if (method == PacketBuilder.RANCH_CLICK)
{
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid ranch click packet.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid ranch click packet.");
return;
}
byte action = packet[2];
if (action == PacketBuilder.RANCH_CLICK_BUILD)
{
- if (Ranch.IsRanchHere(sender.User.X, sender.User.Y))
+ if (Ranch.IsRanchHere(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- Ranch ranch = Ranch.GetRanchAt(sender.User.X, sender.User.Y);
- if (sender.User.OwnedRanch != null)
+ Ranch ranch = Ranch.GetRanchAt(sender.LoggedinUser.X, sender.LoggedinUser.Y);
+ if (sender.LoggedinUser.OwnedRanch != null)
{
- if (sender.User.OwnedRanch.Id == ranch.Id)
+ if (sender.LoggedinUser.OwnedRanch.Id == ranch.Id)
{
int buildSlot = packet[3] - 40;
- sender.User.LastClickedRanchBuilding = buildSlot;
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.LastClickedRanchBuilding = buildSlot;
+ sender.LoggedinUser.MajorPriority = true;
if (buildSlot == 0)
{
@@ -5726,16 +5742,16 @@ namespace HISP.Server
}
}
- Logger.HackerPrint(sender.User.Username + " Tried to build in a ranch they didnt own.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to build in a ranch they didnt own.");
return;
}
else if (action == PacketBuilder.RANCH_CLICK_NORM)
{
- if (Ranch.IsRanchHere(sender.User.X, sender.User.Y))
+ if (Ranch.IsRanchHere(sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
- Ranch ranch = Ranch.GetRanchAt(sender.User.X, sender.User.Y);
+ Ranch ranch = Ranch.GetRanchAt(sender.LoggedinUser.X, sender.LoggedinUser.Y);
int buildSlot = packet[3] - 40;
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
if (buildSlot == 0) // Main Building
{
@@ -5751,13 +5767,13 @@ namespace HISP.Server
}
else
{
- Logger.ErrorPrint(sender.User.Username + " sent an Unknown ranch packet " + BitConverter.ToString(packet).Replace("-", " "));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " sent an Unknown ranch packet " + BitConverter.ToString(packet).Replace("-", " "));
}
}
}
else
{
- Logger.ErrorPrint(sender.User.Username + " sent an Unknown ranch packet " + BitConverter.ToString(packet).Replace("-", " "));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " sent an Unknown ranch packet " + BitConverter.ToString(packet).Replace("-", " "));
}
}
public static void OnChatPacket(GameClient sender, byte[] packet)
@@ -5768,7 +5784,7 @@ namespace HISP.Server
return;
}
- if (packet.Length < 3)
+ if (packet.Length < 4)
{
Logger.ErrorPrint(sender.RemoteIp + " Sent an invalid chat packet.");
return;
@@ -5777,16 +5793,16 @@ namespace HISP.Server
string packetStr = Encoding.UTF8.GetString(packet);
- ChatMsg.ChatChannel channel = (ChatMsg.ChatChannel)packet[1];
- string message = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ Chat.ChatChannel channel = (Chat.ChatChannel)packet[1];
+ string message = packetStr.Substring(2, packetStr.Length - 4);
- Logger.DebugPrint(sender.User.Username + " Attempting to say '" + message + "' in channel: " + channel.ToString());
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Attempting to say '" + message + "' in channel: " + channel.ToString());
string nameTo = null;
- if (channel == ChatMsg.ChatChannel.Dm)
+ if (channel == Chat.ChatChannel.Dm)
{
- nameTo = ChatMsg.GetDmRecipiant(message);
- message = ChatMsg.GetDmMessage(message);
+ nameTo = Chat.GetDmRecipiant(message);
+ message = Chat.GetDmMessage(message);
}
if (message == "")
@@ -5805,112 +5821,112 @@ namespace HISP.Server
{
case "/$":
case "/ads":
- channel = ChatMsg.ChatChannel.Ads;
+ channel = Chat.ChatChannel.Ads;
break;
case "/a":
case "/all":
- channel = ChatMsg.ChatChannel.All;
+ channel = Chat.ChatChannel.All;
break;
case "/h":
case "/here":
- channel = ChatMsg.ChatChannel.Here;
+ channel = Chat.ChatChannel.Here;
break;
case "/n":
case "/near":
- channel = ChatMsg.ChatChannel.Near;
+ channel = Chat.ChatChannel.Near;
break;
case "/b":
case "/buddy":
- channel = ChatMsg.ChatChannel.Buddies;
+ channel = Chat.ChatChannel.Buddies;
break;
case "/i":
case "/island":
- channel = ChatMsg.ChatChannel.Isle;
+ channel = Chat.ChatChannel.Isle;
break;
case "/admin":
- if (sender.User.Administrator)
- channel = ChatMsg.ChatChannel.Admin;
+ if (sender.LoggedinUser.Administrator)
+ channel = Chat.ChatChannel.Admin;
else
return;
break;
case "/mod":
- if (sender.User.Moderator)
- channel = ChatMsg.ChatChannel.Mod;
+ if (sender.LoggedinUser.Moderator)
+ channel = Chat.ChatChannel.Mod;
else
return;
break;
default:
- channel = ChatMsg.ChatChannel.Dm;
+ channel = Chat.ChatChannel.Dm;
nameTo = channelString.Substring(1).Trim();
break;
}
if (message == "") // this is how pinto does it, im serious.
{
- channel = ChatMsg.ChatChannel.Dm;
+ channel = Chat.ChatChannel.Dm;
nameTo = "";
}
}
message = message.Trim();
- if (channel == ChatMsg.ChatChannel.All && message.Length > 150)
+ if (channel == Chat.ChatChannel.All && message.Length > 150)
{
byte[] tooLong = PacketBuilder.CreateChat(Messages.GlobalChatTooLong, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(tooLong);
return;
}
- if (channel == ChatMsg.ChatChannel.Ads && message.Length > 150)
+ if (channel == Chat.ChatChannel.Ads && message.Length > 150)
{
byte[] tooLong = PacketBuilder.CreateChat(Messages.AdsChatTooLong, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(tooLong);
return;
}
- if (ChatMsg.ProcessCommand(sender.User, message))
+ if (Chat.ProcessCommand(sender.LoggedinUser, message))
{
- Logger.DebugPrint(sender.User.Username + " Attempting to run command '" + message + "' in channel: " + channel.ToString());
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Attempting to run command '" + message + "' in channel: " + channel.ToString());
return;
}
// Check events
if (RiddleEvent.Active)
if(RiddleEvent.CheckRiddle(message))
- RiddleEvent.Win(sender.User);
+ RiddleEvent.Win(sender.LoggedinUser);
// Check if player is muting channel
- if( (sender.User.MuteGlobal && channel == ChatMsg.ChatChannel.All) || (sender.User.MuteAds && channel == ChatMsg.ChatChannel.Ads) || (sender.User.MuteHere && channel == ChatMsg.ChatChannel.Here) && (sender.User.MuteBuddy && channel == ChatMsg.ChatChannel.Buddies) && (sender.User.MuteNear && channel == ChatMsg.ChatChannel.Near) && (sender.User.MuteIsland && channel == ChatMsg.ChatChannel.Isle))
+ if( (sender.LoggedinUser.MuteGlobal && channel == Chat.ChatChannel.All) || (sender.LoggedinUser.MuteAds && channel == Chat.ChatChannel.Ads) || (sender.LoggedinUser.MuteHere && channel == Chat.ChatChannel.Here) && (sender.LoggedinUser.MuteBuddy && channel == Chat.ChatChannel.Buddies) && (sender.LoggedinUser.MuteNear && channel == Chat.ChatChannel.Near) && (sender.LoggedinUser.MuteIsland && channel == Chat.ChatChannel.Isle))
{
byte[] cantSendMessage = PacketBuilder.CreateChat(Messages.CantSendInMutedChannel, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantSendMessage);
return;
}
- if(sender.User.MutePrivateMessage && channel == ChatMsg.ChatChannel.Dm)
+ if(sender.LoggedinUser.MutePrivateMessage && channel == Chat.ChatChannel.Dm)
{
byte[] cantSendDmMessage = PacketBuilder.CreateChat(Messages.CantSendPrivateMessageWhileMuted, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantSendDmMessage);
return;
}
- Object violationReason = ChatMsg.FilterMessage(message);
+ Object violationReason = Chat.FilterMessage(message);
if (violationReason != null)
{
- sender.User.ChatViolations += 1;
- string chatViolationMessage = Messages.FormatGlobalChatViolationMessage((ChatMsg.Reason)violationReason);
+ sender.LoggedinUser.ChatViolations += 1;
+ string chatViolationMessage = Messages.FormatGlobalChatViolationMessage((Chat.Reason)violationReason);
byte[] chatViolationPacket = PacketBuilder.CreateChat(chatViolationMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatViolationPacket);
return;
}
- byte chatSide = ChatMsg.GetSide(channel);
- message = ChatMsg.DoCorrections(message);
- message = ChatMsg.EscapeMessage(message);
+ byte chatSide = Chat.GetSide(channel);
+ message = Chat.DoCorrections(message);
+ message = Chat.EscapeMessage(message);
- string failedReason = ChatMsg.NonViolationChecks(sender.User, message);
+ string failedReason = Chat.NonViolationChecks(sender.LoggedinUser, message);
if (failedReason != null)
{
byte[] failedMessage = PacketBuilder.CreateChat(failedReason, PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -5918,10 +5934,10 @@ namespace HISP.Server
return;
}
- GameClient[] recipiants = ChatMsg.GetRecipiants(sender.User, channel, nameTo);
+ GameClient[] recipiants = Chat.GetRecipiants(sender.LoggedinUser, channel, nameTo);
- if(channel == ChatMsg.ChatChannel.Dm)
+ if(channel == Chat.ChatChannel.Dm)
{
if(recipiants.Length <= 0)
{
@@ -5932,45 +5948,45 @@ namespace HISP.Server
}
else
{
- nameTo = recipiants[0].User.Username;
+ nameTo = recipiants[0].LoggedinUser.Username;
}
}
// Spam filter
if(ConfigReader.EnableSpamFilter)
{
- if (channel == ChatMsg.ChatChannel.Ads)
+ if (channel == Chat.ChatChannel.Ads)
{
- if (!sender.User.CanUseAdsChat && !sender.User.Administrator)
+ if (!sender.LoggedinUser.CanUseAdsChat && !sender.LoggedinUser.Administrator)
{
byte[] cantSendInAds = PacketBuilder.CreateChat(Messages.AdsOnlyOncePerMinute, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantSendInAds);
return;
}
- sender.User.CanUseAdsChat = false;
+ sender.LoggedinUser.CanUseAdsChat = false;
}
- else if (channel == ChatMsg.ChatChannel.All)
+ else if (channel == Chat.ChatChannel.All)
{
- if (sender.User.TotalGlobalChatMessages <= 0 && !sender.User.Administrator)
+ if (sender.LoggedinUser.TotalGlobalChatMessages <= 0 && !sender.LoggedinUser.Administrator)
{
byte[] globalLimited = PacketBuilder.CreateChat(Messages.GlobalChatLimited, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(globalLimited);
return;
}
- sender.User.TotalGlobalChatMessages--;
+ sender.LoggedinUser.TotalGlobalChatMessages--;
}
}
// Muted user checks
- if(channel == ChatMsg.ChatChannel.Dm)
+ if(channel == Chat.ChatChannel.Dm)
{
try
{
User userTo = GetUserByNameStartswith(nameTo);
- if (sender.User.MutePlayer.IsUserMuted(userTo))
+ if (sender.LoggedinUser.MutePlayer.IsUserMuted(userTo))
{
byte[] dmWasBlocked = PacketBuilder.CreateChat(Messages.FormatCantSendYourIgnoringPlayer(userTo.Username), PacketBuilder.CHAT_DM_RIGHT);
sender.SendPacket(dmWasBlocked);
@@ -5982,7 +5998,7 @@ namespace HISP.Server
sender.SendPacket(dmWasBlocked);
return;
}
- else if (userTo.MutePlayer.IsUserMuted(sender.User))
+ else if (userTo.MutePlayer.IsUserMuted(sender.LoggedinUser))
{
byte[] dmWasBlocked = PacketBuilder.CreateChat(Messages.FormatPlayerIgnoringYourPms(userTo.Username), PacketBuilder.CHAT_DM_RIGHT);
sender.SendPacket(dmWasBlocked);
@@ -5995,20 +6011,20 @@ namespace HISP.Server
}
}
// Finally send chat message.
- string formattedMessage = ChatMsg.FormatChatForOthers(sender.User, channel, message);
- string formattedMessageSender = ChatMsg.FormatChatForSender(sender.User, channel, message, nameTo);
+ string formattedMessage = Chat.FormatChatForOthers(sender.LoggedinUser, channel, message);
+ string formattedMessageSender = Chat.FormatChatForSender(sender.LoggedinUser, channel, message, nameTo);
byte[] chatPacketOthers = PacketBuilder.CreateChat(formattedMessage, chatSide);
byte[] chatPacketSender = PacketBuilder.CreateChat(formattedMessageSender, chatSide);
- byte[] playDmSound = PacketBuilder.CreatePlaySound(ChatMsg.PrivateMessageSound);
+ byte[] playDmSound = PacketBuilder.CreatePlaysoundPacket(Chat.PrivateMessageSound);
// Send to clients ...
foreach (GameClient recipiant in recipiants)
{
recipiant.SendPacket(chatPacketOthers);
- if (channel == ChatMsg.ChatChannel.Dm)
+ if (channel == Chat.ChatChannel.Dm)
recipiant.SendPacket(playDmSound);
}
@@ -6016,14 +6032,14 @@ namespace HISP.Server
sender.SendPacket(chatPacketSender);
// AutoReply
- if (channel == ChatMsg.ChatChannel.Dm)
+ if (channel == Chat.ChatChannel.Dm)
{
foreach (GameClient recipiant in recipiants)
{
- if (recipiant.User.AutoReplyText != "")
+ if (recipiant.LoggedinUser.AutoReplyText != "")
{
- string formattedMessageAuto = ChatMsg.FormatChatForOthers(recipiant.User, channel, recipiant.User.AutoReplyText, true);
- string formattedMessageSenderAuto = ChatMsg.FormatChatForSender(recipiant.User, channel, recipiant.User.AutoReplyText, nameTo, true);
+ string formattedMessageAuto = Chat.FormatChatForOthers(recipiant.LoggedinUser, channel, recipiant.LoggedinUser.AutoReplyText, true);
+ string formattedMessageSenderAuto = Chat.FormatChatForSender(recipiant.LoggedinUser, channel, recipiant.LoggedinUser.AutoReplyText, nameTo, true);
byte[] chatPacketAutoOthers = PacketBuilder.CreateChat(formattedMessageAuto, chatSide);
sender.SendPacket(chatPacketAutoOthers);
@@ -6044,16 +6060,16 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Send click packet when not logged in.");
return;
}
- if (packet.Length < 5)
+ if (packet.Length < 6)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid Click Packet");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid Click Packet");
return;
}
string packetStr = Encoding.UTF8.GetString(packet);
if(packetStr.Contains("|"))
{
- string packetContents = packetStr.Substring(1, (packetStr.Length - 1) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string packetContents = packetStr.Substring(1, packetStr.Length - 3);
string[] xy = packetContents.Split('|');
int x = 0;
int y = 0;
@@ -6065,11 +6081,11 @@ namespace HISP.Server
}
catch(FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent a click packet with non-string xy value.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent a click packet with non-string xy value.");
return;
}
- Logger.DebugPrint(sender.User.Username + " Clicked on tile: " + Map.GetTileId(x, y, false).ToString() + "(overlay: " + Map.GetTileId(x, y, true).ToString() + ") at " + x.ToString() + "," + y.ToString());
+ Logger.DebugPrint(sender.LoggedinUser.Username + " Clicked on tile: " + Map.GetTileId(x, y, false).ToString() + "(overlay: " + Map.GetTileId(x, y, true).ToString() + ") at " + x.ToString() + "," + y.ToString());
// Get description of tile
@@ -6109,9 +6125,8 @@ namespace HISP.Server
returnedMsg = Messages.FormatPlayerHereMessage(usernameStr);
}
+
byte[] tileInfoPacket = PacketBuilder.CreateTileClickInfo(returnedMsg);
- // Debug tile id information
- //byte[] tileInfoPacket = PacketBuilder.CreateTileClickInfo("ground: " + (Map.GetTileId(x, y, false)-1).ToString() + ", overlay: " + (Map.GetTileId(x, y, true)-1).ToString());
sender.SendPacket(tileInfoPacket);
}
}
@@ -6122,9 +6137,9 @@ namespace HISP.Server
Logger.ErrorPrint(sender.RemoteIp + " Sent object interaction packet when not logged in.");
return;
}
- if (packet.Length < 2)
+ if (packet.Length < 3)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
@@ -6133,13 +6148,13 @@ namespace HISP.Server
{
case PacketBuilder.ITEM_PICKUP_ALL:
string chatMsg = Messages.GrabAllItemsMessage;
- DroppedItems.DroppedItem[] droppedItems = DroppedItems.GetItemsAt(sender.User.X, sender.User.Y);
+ DroppedItems.DroppedItem[] droppedItems = DroppedItems.GetItemsAt(sender.LoggedinUser.X, sender.LoggedinUser.Y);
foreach (DroppedItems.DroppedItem item in droppedItems)
{
try
{
- sender.User.Inventory.Add(item.Instance);
+ sender.LoggedinUser.Inventory.Add(item.Instance);
DroppedItems.RemoveDroppedItem(item);
}
catch (InventoryException)
@@ -6148,7 +6163,7 @@ namespace HISP.Server
}
}
- UpdateAreaForAll(sender.User.X, sender.User.Y);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y);
byte[] chatMessage = PacketBuilder.CreateChat(chatMsg, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatMessage);
@@ -6156,7 +6171,7 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_PICKUP:
string packetStr = Encoding.UTF8.GetString(packet);
- string randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string randomIdStr = packetStr.Substring(2, packet.Length - 4);
int randomId = 0;
try
@@ -6165,7 +6180,7 @@ namespace HISP.Server
}
catch(FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
@@ -6174,7 +6189,7 @@ namespace HISP.Server
DroppedItems.DroppedItem item = DroppedItems.GetDroppedItemById(randomId);
try
{
- sender.User.Inventory.Add(item.Instance);
+ sender.LoggedinUser.Inventory.Add(item.Instance);
}
catch (InventoryException)
{
@@ -6186,7 +6201,7 @@ namespace HISP.Server
DroppedItems.RemoveDroppedItem(item);
- UpdateAreaForAll(sender.User.X, sender.User.Y);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y);
chatMessage = PacketBuilder.CreateChat(Messages.GrabbedItemMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatMessage);
@@ -6196,7 +6211,7 @@ namespace HISP.Server
byte[] pickedUp = PacketBuilder.CreateChat(Messages.DroppedItemCouldntPickup, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(pickedUp);
- Logger.HackerPrint(sender.User.Username + " Tried to grab a non existing object.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to grab a non existing object.");
return;
}
@@ -6206,103 +6221,103 @@ namespace HISP.Server
switch(toRemove)
{
case '1':
- if(sender.User.EquipedCompetitionGear.Head != null)
+ if(sender.LoggedinUser.EquipedCompetitionGear.Head != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Head.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Head = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Head.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Head = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove competition gear when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove competition gear when none was equipped.");
}
break;
case '2':
- if (sender.User.EquipedCompetitionGear.Body != null)
+ if (sender.LoggedinUser.EquipedCompetitionGear.Body != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Body.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Body = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Body.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Body = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove competition gear when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove competition gear when none was equipped.");
}
break;
case '3':
- if (sender.User.EquipedCompetitionGear.Legs != null)
+ if (sender.LoggedinUser.EquipedCompetitionGear.Legs != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Legs.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Legs = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Legs.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Legs = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove competition gear when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove competition gear when none was equipped.");
}
break;
case '4':
- if (sender.User.EquipedCompetitionGear.Feet != null)
+ if (sender.LoggedinUser.EquipedCompetitionGear.Feet != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Feet.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Feet = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Feet.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Feet = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove competition gear when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove competition gear when none was equipped.");
}
break;
case '5':
- if (sender.User.EquipedJewelry.Slot1 != null)
+ if (sender.LoggedinUser.EquipedJewelry.Slot1 != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedJewelry.Slot1.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedJewelry.Slot1 = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedJewelry.Slot1.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedJewelry.Slot1 = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove jewery when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove jewery when none was equipped.");
}
break;
case '6':
- if (sender.User.EquipedJewelry.Slot2 != null)
+ if (sender.LoggedinUser.EquipedJewelry.Slot2 != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedJewelry.Slot2.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedJewelry.Slot2 = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedJewelry.Slot2.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedJewelry.Slot2 = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove jewery when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove jewery when none was equipped.");
}
break;
case '7':
- if (sender.User.EquipedJewelry.Slot3 != null)
+ if (sender.LoggedinUser.EquipedJewelry.Slot3 != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedJewelry.Slot3.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedJewelry.Slot3 = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedJewelry.Slot3.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedJewelry.Slot3 = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove jewery when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove jewery when none was equipped.");
}
break;
case '8':
- if (sender.User.EquipedJewelry.Slot4 != null)
+ if (sender.LoggedinUser.EquipedJewelry.Slot4 != null)
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedJewelry.Slot4.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedJewelry.Slot4 = null;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedJewelry.Slot4.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedJewelry.Slot4 = null;
}
else
{
- Logger.HackerPrint(sender.User.Username + " Attempted to remove jewery when none was equipped.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Attempted to remove jewery when none was equipped.");
}
break;
default:
- Logger.InfoPrint(sender.User.Username + "Unimplemented \"remove worn item\" ItemInteraction packet: " + BitConverter.ToString(packet).Replace("-", " "));
+ Logger.InfoPrint(sender.LoggedinUser.Username + "Unimplemented \"remove worn item\" ItemInteraction packet: " + BitConverter.ToString(packet).Replace("-", " "));
break;
}
@@ -6321,7 +6336,7 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_THROW:
packetStr = Encoding.UTF8.GetString(packet);
- string itemidStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string itemidStr = packetStr.Substring(2, packet.Length - 2);
int itemId = 0;
try
@@ -6330,31 +6345,31 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. (THROW) " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. (THROW) " + BitConverter.ToString(packet));
return;
}
- if (sender.User.Inventory.HasItemId(itemId))
+ if (sender.LoggedinUser.Inventory.HasItemId(itemId))
{
if (!Item.IsThrowable(itemId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to throw an item that isnt throwable.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to throw an item that isnt throwable.");
return;
}
- ItemInstance curItem = sender.User.Inventory.GetItemByItemId(itemId).ItemInstances[0];
- User[] userAt = GetReallyNearbyUsers(sender.User.X, sender.User.Y);
+ ItemInstance curItem = sender.LoggedinUser.Inventory.GetItemByItemId(itemId).ItemInstances[0];
+ User[] userAt = GetReallyNearbyUsers(sender.LoggedinUser.X, sender.LoggedinUser.Y);
while (true)
{
int userIndx = RandomNumberGenerator.Next(0, userAt.Length);
if (userAt.Length > 1)
- if (userAt[userIndx].Id == sender.User.Id)
+ if (userAt[userIndx].Id == sender.LoggedinUser.Id)
continue;
Item.ThrowableItem throwableItem = Item.GetThrowableItem(curItem.ItemId);
- if (userAt[userIndx].Id == sender.User.Id)
+ if (userAt[userIndx].Id == sender.LoggedinUser.Id)
{
byte[] thrownHitYourself = PacketBuilder.CreateChat(throwableItem.HitYourselfMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(thrownHitYourself);
@@ -6368,26 +6383,26 @@ namespace HISP.Server
}
if(itemId == Item.ModSplatterball)
{
- ModsRevengeEvent.Payout(sender.User, userAt[userIndx]);
+ ModsRevengeEvent.Payout(sender.LoggedinUser, userAt[userIndx]);
}
byte[] thrownForYou = PacketBuilder.CreateChat(Messages.FormatThrownItemMessage(throwableItem.ThrowMessage, userAt[userIndx].Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
- byte[] thrownForOthers = PacketBuilder.CreateChat(Messages.FormatThrownItemMessage(throwableItem.HitMessage, sender.User.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
+ byte[] thrownForOthers = PacketBuilder.CreateChat(Messages.FormatThrownItemMessage(throwableItem.HitMessage, sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(thrownForYou);
- userAt[userIndx].Client.SendPacket(thrownForOthers);
+ userAt[userIndx].LoggedinClient.SendPacket(thrownForOthers);
break;
}
- sender.User.Inventory.Remove(curItem);
+ sender.LoggedinUser.Inventory.Remove(curItem);
UpdateInventory(sender);
}
break;
case PacketBuilder.ITEM_WRAP:
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 2);
randomId = 0;
try
@@ -6396,18 +6411,18 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
- if (sender.User.Inventory.HasItem(randomId))
+ if (sender.LoggedinUser.Inventory.HasItem(randomId))
{
- ItemInstance curItem = sender.User.Inventory.GetItemByRandomid(randomId).ItemInstances[0];
+ ItemInstance curItem = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId).ItemInstances[0];
ItemInstance wrappedItem = new ItemInstance(Item.Present, -1, curItem.ItemId);
try
{
- sender.User.Inventory.Add(wrappedItem);
- sender.User.Inventory.Remove(curItem);
+ sender.LoggedinUser.Inventory.Add(wrappedItem);
+ sender.LoggedinUser.Inventory.Remove(curItem);
}
catch(InventoryException)
{
@@ -6423,7 +6438,7 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_OPEN:
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packet.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 2);
randomId = 0;
try
@@ -6432,16 +6447,16 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
- if (sender.User.Inventory.HasItem(randomId))
+ if (sender.LoggedinUser.Inventory.HasItem(randomId))
{
- InventoryItem item = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem item = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
int newItem = item.ItemInstances[0].Data;
if(newItem == 0)
{
- sender.User.Inventory.Remove(item.ItemInstances[0]);
+ sender.LoggedinUser.Inventory.Remove(item.ItemInstances[0]);
byte[] itemOpenFailedNothingInside = PacketBuilder.CreateChat(Messages.SantaCantOpenNothingInside, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(itemOpenFailedNothingInside);
@@ -6453,8 +6468,8 @@ namespace HISP.Server
try
{
- sender.User.Inventory.Add(new ItemInstance(newItem));
- sender.User.Inventory.Remove(item.ItemInstances[0]);
+ sender.LoggedinUser.Inventory.Add(new ItemInstance(newItem));
+ sender.LoggedinUser.Inventory.Remove(item.ItemInstances[0]);
}
catch(InventoryException)
{
@@ -6469,14 +6484,14 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_USE:
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 4);
if(randomIdStr == "") // f12 ranch shortcut
{
- if (sender.User.Inventory.HasItemId(Item.DorothyShoes))
+ if (sender.LoggedinUser.Inventory.HasItemId(Item.DorothyShoes))
{
- InventoryItem itm = sender.User.Inventory.GetItemByItemId(Item.DorothyShoes);
- Item.UseItem(sender.User, itm.ItemInstances[0]);
+ InventoryItem itm = sender.LoggedinUser.Inventory.GetItemByItemId(Item.DorothyShoes);
+ Item.UseItem(sender.LoggedinUser, itm.ItemInstances[0]);
return;
}
else
@@ -6495,18 +6510,18 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
- if (sender.User.Inventory.HasItem(randomId))
+ if (sender.LoggedinUser.Inventory.HasItem(randomId))
{
- InventoryItem itm = sender.User.Inventory.GetItemByRandomid(randomId);
- Item.UseItem(sender.User, itm.ItemInstances[0]);
+ InventoryItem itm = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
+ Item.UseItem(sender.LoggedinUser, itm.ItemInstances[0]);
}
break;
case PacketBuilder.ITEM_WEAR:
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 2);
randomId = 0;
try
@@ -6515,12 +6530,12 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
- if (sender.User.Inventory.HasItem(randomId))
+ if (sender.LoggedinUser.Inventory.HasItem(randomId))
{
- InventoryItem itm = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem itm = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
ItemInstance instance = itm.ItemInstances[0];
Item.ItemInformation itemInf = instance.GetItemInfo();
@@ -6529,80 +6544,80 @@ namespace HISP.Server
switch (itemInf.GetMiscFlag(0))
{
case CompetitionGear.MISC_FLAG_HEAD:
- if (sender.User.EquipedCompetitionGear.Head == null)
- sender.User.EquipedCompetitionGear.Head = itemInf;
+ if (sender.LoggedinUser.EquipedCompetitionGear.Head == null)
+ sender.LoggedinUser.EquipedCompetitionGear.Head = itemInf;
else
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Head.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Head = itemInf;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Head.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Head = itemInf;
}
break;
case CompetitionGear.MISC_FLAG_BODY:
- if (sender.User.EquipedCompetitionGear.Body == null)
- sender.User.EquipedCompetitionGear.Body = itemInf;
+ if (sender.LoggedinUser.EquipedCompetitionGear.Body == null)
+ sender.LoggedinUser.EquipedCompetitionGear.Body = itemInf;
else
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Body.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Body = itemInf;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Body.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Body = itemInf;
}
break;
case CompetitionGear.MISC_FLAG_LEGS:
- if (sender.User.EquipedCompetitionGear.Legs == null)
- sender.User.EquipedCompetitionGear.Legs = itemInf;
+ if (sender.LoggedinUser.EquipedCompetitionGear.Legs == null)
+ sender.LoggedinUser.EquipedCompetitionGear.Legs = itemInf;
else
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Legs.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Legs = itemInf;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Legs.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Legs = itemInf;
}
break;
case CompetitionGear.MISC_FLAG_FEET:
- if (sender.User.EquipedCompetitionGear.Feet == null)
- sender.User.EquipedCompetitionGear.Feet = itemInf;
+ if (sender.LoggedinUser.EquipedCompetitionGear.Feet == null)
+ sender.LoggedinUser.EquipedCompetitionGear.Feet = itemInf;
else
{
- ItemInstance itemInstance = new ItemInstance(sender.User.EquipedCompetitionGear.Feet.Id);
- sender.User.Inventory.AddIgnoringFull(itemInstance);
- sender.User.EquipedCompetitionGear.Feet = itemInf;
+ ItemInstance itemInstance = new ItemInstance(sender.LoggedinUser.EquipedCompetitionGear.Feet.Id);
+ sender.LoggedinUser.Inventory.AddIgnoringFull(itemInstance);
+ sender.LoggedinUser.EquipedCompetitionGear.Feet = itemInf;
}
break;
default:
Logger.ErrorPrint(itemInf.Name + " Has unknown misc flags.");
return;
}
- sender.User.Inventory.Remove(instance);
+ sender.LoggedinUser.Inventory.Remove(instance);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatEquipCompetitionGearMessage(itemInf.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
}
else if(itemInf.Type == "JEWELRY")
{
bool addedJewelry = false;
- if (sender.User.EquipedJewelry.Slot1 == null)
+ if (sender.LoggedinUser.EquipedJewelry.Slot1 == null)
{
- sender.User.EquipedJewelry.Slot1 = itemInf;
+ sender.LoggedinUser.EquipedJewelry.Slot1 = itemInf;
addedJewelry = true;
}
- else if (sender.User.EquipedJewelry.Slot2 == null)
+ else if (sender.LoggedinUser.EquipedJewelry.Slot2 == null)
{
- sender.User.EquipedJewelry.Slot2 = itemInf;
+ sender.LoggedinUser.EquipedJewelry.Slot2 = itemInf;
addedJewelry = true;
}
- else if (sender.User.EquipedJewelry.Slot3 == null)
+ else if (sender.LoggedinUser.EquipedJewelry.Slot3 == null)
{
- sender.User.EquipedJewelry.Slot3 = itemInf;
+ sender.LoggedinUser.EquipedJewelry.Slot3 = itemInf;
addedJewelry = true;
}
- else if (sender.User.EquipedJewelry.Slot4 == null)
+ else if (sender.LoggedinUser.EquipedJewelry.Slot4 == null)
{
- sender.User.EquipedJewelry.Slot4 = itemInf;
+ sender.LoggedinUser.EquipedJewelry.Slot4 = itemInf;
addedJewelry = true;
}
if(addedJewelry)
{
- sender.User.Inventory.Remove(instance);
+ sender.LoggedinUser.Inventory.Remove(instance);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatJewerlyEquipMessage(itemInf.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
}
@@ -6617,12 +6632,12 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to wear an item they did not have.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to wear an item they did not have.");
}
break;
case PacketBuilder.ITEM_DRINK:
packetStr = Encoding.UTF8.GetString(packet);
- string idStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string idStr = packetStr.Substring(2, packet.Length - 4);
if(idStr == "NaN") // Fountain
{
string msg = Messages.FountainDrankYourFull;
@@ -6630,24 +6645,24 @@ namespace HISP.Server
if(looseMoney)
{
int looseAmount = RandomNumberGenerator.Next(0, 100);
- if (looseAmount > sender.User.Money)
- looseAmount = sender.User.Money;
- sender.User.TakeMoney(looseAmount);
+ if (looseAmount > sender.LoggedinUser.Money)
+ looseAmount = sender.LoggedinUser.Money;
+ sender.LoggedinUser.TakeMoney(looseAmount);
msg = Messages.FormatDroppedMoneyMessage(looseAmount);
}
- sender.User.Thirst = 1000;
+ sender.LoggedinUser.Thirst = 1000;
byte[] drankFromFountainMessage = PacketBuilder.CreateChat(msg, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(drankFromFountainMessage);
}
else
{
- Logger.ErrorPrint(sender.User.Username + "Sent unknown ITEM_DRINK command id: " + idStr);
+ Logger.ErrorPrint(sender.LoggedinUser.Username + "Sent unknown ITEM_DRINK command id: " + idStr);
}
break;
case PacketBuilder.ITEM_CONSUME:
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 3);
randomId = 0;
try
@@ -6656,17 +6671,17 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
- if (sender.User.Inventory.HasItem(randomId))
+ if (sender.LoggedinUser.Inventory.HasItem(randomId))
{
- InventoryItem itm = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem itm = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
ItemInstance instance = itm.ItemInstances[0];
- sender.User.Inventory.Remove(instance);
+ sender.LoggedinUser.Inventory.Remove(instance);
Item.ItemInformation itmInfo = instance.GetItemInfo();
- bool toMuch = Item.ConsumeItem(sender.User, itmInfo);
+ bool toMuch = Item.ConsumeItem(sender.LoggedinUser, itmInfo);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.FormatConsumeItemMessaege(itmInfo.Name), PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
@@ -6680,12 +6695,12 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to consume an item they did not have.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to consume an item they did not have.");
}
break;
case PacketBuilder.ITEM_DROP:
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 2);
randomId = 0;
try
@@ -6694,37 +6709,37 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. (drop)"+BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. (drop)"+BitConverter.ToString(packet));
return;
}
- if(sender.User.Inventory.HasItem(randomId))
+ if(sender.LoggedinUser.Inventory.HasItem(randomId))
{
- InventoryItem itm = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem itm = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
ItemInstance instance = itm.ItemInstances[0];
- if(DroppedItems.GetItemsAt(sender.User.X, sender.User.Y).Length > 25)
+ if(DroppedItems.GetItemsAt(sender.LoggedinUser.X, sender.LoggedinUser.Y).Length > 25)
{
byte[] tileIsFullPacket = PacketBuilder.CreateChat(Messages.DroppedItemTileIsFull, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(tileIsFullPacket);
break;
}
- DroppedItems.AddItem(instance, sender.User.X, sender.User.Y);
- sender.User.Inventory.Remove(instance);
+ DroppedItems.AddItem(instance, sender.LoggedinUser.X, sender.LoggedinUser.Y);
+ sender.LoggedinUser.Inventory.Remove(instance);
byte[] chatPacket = PacketBuilder.CreateChat(Messages.DroppedAnItemMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(chatPacket);
UpdateInventory(sender);
- UpdateAreaForAll(sender.User.X, sender.User.Y, false, sender.User);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, false, sender.LoggedinUser);
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to drop an item they did not have.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to drop an item they did not have.");
}
break;
case PacketBuilder.ITEM_SHOVEL:
if (packet[2] != 0x14)
- Logger.HackerPrint(sender.User.Username + " Used ITEM_SHOVEL with 3rd byte not 0x14.");
- if (!Quest.UseTool(sender.User, Quest.Shovel, sender.User.X, sender.User.Y))
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Used ITEM_SHOVEL with 3rd byte not 0x14.");
+ if (!Quest.UseTool(sender.LoggedinUser, Quest.Shovel, sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
byte[] ChatPacket = PacketBuilder.CreateChat(Messages.ShovelNothing, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(ChatPacket);
@@ -6732,8 +6747,8 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_RAKE:
if (packet[2] != 0x14)
- Logger.HackerPrint(sender.User.Username + " Used ITEM_RAKE with 3rd byte not 0x14.");
- if (!Quest.UseTool(sender.User, Quest.Rake, sender.User.X, sender.User.Y))
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Used ITEM_RAKE with 3rd byte not 0x14.");
+ if (!Quest.UseTool(sender.LoggedinUser, Quest.Rake, sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
byte[] ChatPacket = PacketBuilder.CreateChat(Messages.RakeNothing, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(ChatPacket);
@@ -6741,8 +6756,8 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_MAGNIFYING:
if (packet[2] != 0x14)
- Logger.HackerPrint(sender.User.Username + " Used ITEM_MAGNIFYING with 3rd byte not 0x14.");
- if (!Quest.UseTool(sender.User, Quest.MagnifyingGlass, sender.User.X, sender.User.Y))
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Used ITEM_MAGNIFYING with 3rd byte not 0x14.");
+ if (!Quest.UseTool(sender.LoggedinUser, Quest.MagnifyingGlass, sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
byte[] ChatPacket = PacketBuilder.CreateChat(Messages.MagnifyNothing, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(ChatPacket);
@@ -6750,8 +6765,8 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_BINOCULARS:
if (packet[2] != 0x14)
- Logger.HackerPrint(sender.User.Username + " Used ITEM_BINOCULARS with 3rd byte not 0x14.");
- if(!Quest.UseTool(sender.User, Quest.Binoculars, sender.User.X, sender.User.Y))
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Used ITEM_BINOCULARS with 3rd byte not 0x14.");
+ if(!Quest.UseTool(sender.LoggedinUser, Quest.Binoculars, sender.LoggedinUser.X, sender.LoggedinUser.Y))
{
byte[] ChatPacket = PacketBuilder.CreateChat(Messages.BinocularsNothing, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(ChatPacket);
@@ -6759,7 +6774,7 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_CRAFT:
packetStr = Encoding.UTF8.GetString(packet);
- string craftIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string craftIdStr = packetStr.Substring(2, packet.Length - 2);
int craftId = 0;
// Prevent crashing on non-int string.
try
@@ -6768,19 +6783,19 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " tried to craft using craft id NaN.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " tried to craft using craft id NaN.");
return;
}
if(Workshop.CraftIdExists(craftId))
{
Workshop.CraftableItem itm = Workshop.GetCraftId(craftId);
- if(itm.MoneyCost <= sender.User.Money) // Check money
+ if(itm.MoneyCost <= sender.LoggedinUser.Money) // Check money
{
foreach(Workshop.RequiredItem reqItem in itm.RequiredItems)
{
- if (sender.User.Inventory.HasItemId(reqItem.RequiredItemId))
+ if (sender.LoggedinUser.Inventory.HasItemId(reqItem.RequiredItemId))
{
- if (sender.User.Inventory.GetItemByItemId(reqItem.RequiredItemId).ItemInstances.Length < reqItem.RequiredItemCount)
+ if (sender.LoggedinUser.Inventory.GetItemByItemId(reqItem.RequiredItemId).ItemInstances.Length < reqItem.RequiredItemCount)
goto failMissingItem;
}
else
@@ -6790,7 +6805,7 @@ namespace HISP.Server
// Finally create the items
try
{
- sender.User.Inventory.Add(new ItemInstance(itm.GiveItemId));
+ sender.LoggedinUser.Inventory.Add(new ItemInstance(itm.GiveItemId));
}
catch(InventoryException)
{
@@ -6798,19 +6813,19 @@ namespace HISP.Server
sender.SendPacket(inventoryFullMessage);
break;
}
- sender.User.TakeMoney(itm.MoneyCost);
+ sender.LoggedinUser.TakeMoney(itm.MoneyCost);
// Remove the required items..
foreach(Workshop.RequiredItem reqItem in itm.RequiredItems)
for(int i = 0; i < reqItem.RequiredItemCount; i++)
- sender.User.Inventory.Remove(sender.User.Inventory.GetItemByItemId(reqItem.RequiredItemId).ItemInstances[0]);
+ sender.LoggedinUser.Inventory.Remove(sender.LoggedinUser.Inventory.GetItemByItemId(reqItem.RequiredItemId).ItemInstances[0]);
- sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Crafting).Count++;
+ sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Crafting).Count++;
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Crafting).Count >= 100)
- sender.User.Awards.AddAward(Award.GetAwardById(22)); // Craftiness
- if (sender.User.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Crafting).Count >= 1000)
- sender.User.Awards.AddAward(Award.GetAwardById(23)); // Workmanship
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Crafting).Count >= 100)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(22)); // Craftiness
+ if (sender.LoggedinUser.TrackedItems.GetTrackedItem(Tracking.TrackableItem.Crafting).Count >= 1000)
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(23)); // Workmanship
byte[] itemCraftSuccess = PacketBuilder.CreateChat(Messages.WorkshopCraftingSuccess, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(itemCraftSuccess);
@@ -6838,7 +6853,7 @@ namespace HISP.Server
int message = 1;
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 2);
randomId = 0;
// Prevent crashing on non-int string.
try
@@ -6847,22 +6862,22 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object sell packet.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object sell packet.");
return;
}
- if (!sender.User.Inventory.HasItem(randomId))
+ if (!sender.LoggedinUser.Inventory.HasItem(randomId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to sell a item that they doesnt have in there inventory");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to sell a item that they doesnt have in there inventory");
return;
}
- InventoryItem invItem = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem invItem = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
itemId = invItem.ItemId;
goto doSell;
case PacketBuilder.ITEM_SELL_ALL:
packetStr = Encoding.UTF8.GetString(packet);
- string itemIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string itemIdStr = packetStr.Substring(2, packet.Length - 2);
itemId = 0;
// Prevent crashing on non-int string.
try
@@ -6871,16 +6886,16 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object sell packet.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object sell packet.");
return;
}
- if (!sender.User.Inventory.HasItemId(itemId))
+ if (!sender.LoggedinUser.Inventory.HasItemId(itemId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to sell a item that they doesnt have in there inventory");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to sell a item that they doesnt have in there inventory");
return;
}
- invItem = sender.User.Inventory.GetItemByItemId(itemId);
+ invItem = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
totalSold = invItem.ItemInstances.Length;
message = 2;
@@ -6888,14 +6903,14 @@ namespace HISP.Server
doSell:;
Item.ItemInformation itemInfo = Item.GetItemById(itemId);
- Shop shop = sender.User.LastShoppedAt;
+ Shop shop = sender.LoggedinUser.LastShoppedAt;
if (shop != null)
{
UInt64 sellPrice = Convert.ToUInt64(shop.CalculateSellCost(itemInfo) * Convert.ToUInt64(totalSold));
if (shop.CanSell(itemInfo))
{
// Check if goes over 2.1b
- if (Convert.ToUInt64(sender.User.Money) + sellPrice > 2100000000)
+ if (Convert.ToUInt64(sender.LoggedinUser.Money) + sellPrice > 2100000000)
{
byte[] cantSellMoneyCapCheck = PacketBuilder.CreateChat(Messages.CannotSellYoudGetTooMuchMoney, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantSellMoneyCapCheck);
@@ -6906,14 +6921,14 @@ namespace HISP.Server
for (int i = 0; i < totalSold; i++)
{
ItemInstance itemInstance = invItem.ItemInstances[0];
- sender.User.Inventory.Remove(itemInstance);
+ sender.LoggedinUser.Inventory.Remove(itemInstance);
shop.Inventory.Add(itemInstance);
}
if (sellPrice < 2147483647) // Sanity Check (yes i checked it earlier)
- sender.User.AddMoney(Convert.ToInt32(sellPrice));
+ sender.LoggedinUser.AddMoney(Convert.ToInt32(sellPrice));
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
if(message == 1)
{
byte[] soldItemMessage = PacketBuilder.CreateChat(Messages.FormatSellMessage(itemInfo.Name, sellPrice), PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -6933,14 +6948,14 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to sell a item that was not avalible to be sold.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to sell a item that was not avalible to be sold.");
}
}
break;
case PacketBuilder.ITEM_BUY_AND_CONSUME:
packetStr = Encoding.UTF8.GetString(packet);
- itemIdStr = packetStr.Substring(2, (packetStr.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ itemIdStr = packetStr.Substring(2, packet.Length - 3);
itemId = 0;
// Prevent crashing on non-int string.
try
@@ -6949,26 +6964,26 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object buy and consume packet.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object buy and consume packet.");
return;
}
if (!Item.ItemIdExist(itemId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to buy an itemid that doesnt even exist.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy an itemid that doesnt even exist.");
break;
}
- Inn lastInn = sender.User.LastVisitedInn;
+ Inn lastInn = sender.LoggedinUser.LastVisitedInn;
if (lastInn != null)
{
try
{
itemInfo = lastInn.GetStockedItem(itemId);
int price = lastInn.CalculateBuyCost(itemInfo);
- if(sender.User.Money >= price)
+ if(sender.LoggedinUser.Money >= price)
{
- sender.User.TakeMoney(price);
- bool toMuch = Item.ConsumeItem(sender.User, itemInfo);
+ sender.LoggedinUser.TakeMoney(price);
+ bool toMuch = Item.ConsumeItem(sender.LoggedinUser, itemInfo);
string tooMuchMessage = Messages.ConsumedButMaxReached;
if (itemInfo.Effects.Length > 0)
@@ -6997,12 +7012,12 @@ namespace HISP.Server
}
catch(KeyNotFoundException)
{
- Logger.HackerPrint(sender.User.Username + " Tried to buy and consume an item not stocked by the inn there standing on.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy and consume an item not stocked by the inn there standing on.");
}
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to buy and consume item while not in a inn.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy and consume item while not in a inn.");
}
break;
@@ -7019,7 +7034,7 @@ namespace HISP.Server
count = 25;
doPurchase:;
packetStr = Encoding.UTF8.GetString(packet);
- itemIdStr = packetStr.Substring(2, (packet.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ itemIdStr = packetStr.Substring(2, packet.Length - 3);
itemId = 0;
// Prevent crashing on non-int string.
try
@@ -7028,29 +7043,29 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object buy packet.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object buy packet.");
return;
}
if(!Item.ItemIdExist(itemId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to buy an itemid that doesnt even exist.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy an itemid that doesnt even exist.");
break;
}
itemInfo = Item.GetItemById(itemId);
- shop = sender.User.LastShoppedAt;
+ shop = sender.LoggedinUser.LastShoppedAt;
if (shop != null)
{
UInt64 buyCost = Convert.ToUInt64(shop.CalculateBuyCost(itemInfo) * Convert.ToUInt64(count));
- if (sender.User.Bids.Length > 0)
+ if (sender.LoggedinUser.Bids.Length > 0)
{
byte[] cantBuyWhileAuctioning = PacketBuilder.CreateChat(Messages.AuctionNoOtherTransactionAllowed, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantBuyWhileAuctioning);
return;
}
- if (Convert.ToUInt64(sender.User.Money) < buyCost)
+ if (Convert.ToUInt64(sender.LoggedinUser.Money) < buyCost)
{
byte[] cantAffordMessage = PacketBuilder.CreateChat(Messages.CantAfford1, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(cantAffordMessage);
@@ -7060,22 +7075,22 @@ namespace HISP.Server
{
if (shop.Inventory.GetItemByItemId(itemId).ItemInstances.Length < count)
{
- Logger.HackerPrint(sender.User.Username + " Tried to buy more of an item than is in stock.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy more of an item than is in stock.");
break;
}
// Check we wont overflow the inventory
- if (sender.User.Inventory.HasItemId(itemId))
+ if (sender.LoggedinUser.Inventory.HasItemId(itemId))
{
- InventoryItem items = sender.User.Inventory.GetItemByItemId(itemId);
+ InventoryItem items = sender.LoggedinUser.Inventory.GetItemByItemId(itemId);
if (items.ItemInstances.Length + count > Item.MAX_STACK)
{
goto showError;
}
}
- else if(sender.User.Inventory.Count + 1 > sender.User.MaxItems)
+ else if(sender.LoggedinUser.Inventory.Count + 1 > sender.LoggedinUser.MaxItems)
{
goto showError;
}
@@ -7085,22 +7100,22 @@ namespace HISP.Server
ItemInstance itemInstance = shop.Inventory.GetItemByItemId(itemId).ItemInstances[0];
try
{
- sender.User.Inventory.Add(itemInstance);
+ sender.LoggedinUser.Inventory.Add(itemInstance);
}
catch (InventoryException)
{
- Logger.ErrorPrint("Failed to add: " + itemInfo.Name + " to " + sender.User.Username + " inventory.");
+ Logger.ErrorPrint("Failed to add: " + itemInfo.Name + " to " + sender.LoggedinUser.Username + " inventory.");
break;
}
shop.Inventory.Remove(itemInstance);
}
if(buyCost < 2147483647) // Sanity Check (yes i checked it earlier)
- sender.User.TakeMoney(Convert.ToInt32(buyCost));
+ sender.LoggedinUser.TakeMoney(Convert.ToInt32(buyCost));
// Send chat message to client.
- UpdateAreaForAll(sender.User.X, sender.User.Y, true);
+ UpdateAreaForAll(sender.LoggedinUser.X, sender.LoggedinUser.Y, true);
if (message == 1)
{
byte[] broughtItemMessage = PacketBuilder.CreateChat(Messages.FormatBuyMessage(itemInfo.Name, buyCost), PacketBuilder.CHAT_BOTTOM_RIGHT);
@@ -7119,12 +7134,12 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to buy a item that was not for sale.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy a item that was not for sale.");
}
}
else
{
- Logger.HackerPrint(sender.User.Username + " Tried to buy an item while not in a store.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to buy an item while not in a store.");
}
@@ -7151,7 +7166,7 @@ namespace HISP.Server
break;
case PacketBuilder.ITEM_RIP:
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(2, (packet.Length - 2) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(2, packet.Length - 2);
randomId = 0;
try
{
@@ -7159,24 +7174,24 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
- if (!sender.User.Inventory.HasItem(randomId))
+ if (!sender.LoggedinUser.Inventory.HasItem(randomId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to rip someone elses mail. " + randomId.ToString());
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to rip someone elses mail. " + randomId.ToString());
return;
}
- InventoryItem ripItems = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem ripItems = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
foreach (ItemInstance item in ripItems.ItemInstances)
{
if (item.RandomId == randomId)
{
if (item.Data == 0)
continue;
- sender.User.MailBox.RipUpMessage(sender.User.MailBox.GetMessageByRandomId(item.Data));
+ sender.LoggedinUser.MailBox.RipUpMessage(sender.LoggedinUser.MailBox.GetMessageByRandomId(item.Data));
break;
}
}
@@ -7186,7 +7201,7 @@ namespace HISP.Server
if (method == PacketBuilder.ITEM_LOOK)
{
packetStr = Encoding.UTF8.GetString(packet);
- itemIdStr = packetStr.Substring(3, (packetStr.Length - 3) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ itemIdStr = packetStr.Substring(3, packet.Length - 3);
itemId = 0;
try
{
@@ -7194,20 +7209,20 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
if (itemId == Item.MailMessage)
{
- if (!sender.User.Inventory.HasItemId(Item.MailMessage))
+ if (!sender.LoggedinUser.Inventory.HasItemId(Item.MailMessage))
{
- Logger.ErrorPrint(sender.User.Username + " Tried to view a mail message when they didnt have one.");
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Tried to view a mail message when they didnt have one.");
return;
}
- sender.User.MajorPriority = true;
- byte[] mailList = PacketBuilder.CreateMeta(Meta.BuildMailList(sender.User, sender.User.Inventory.GetItemByItemId(Item.MailMessage)));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] mailList = PacketBuilder.CreateMeta(Meta.BuildMailList(sender.LoggedinUser, sender.LoggedinUser.Inventory.GetItemByItemId(Item.MailMessage)));
sender.SendPacket(mailList);
break;
}
@@ -7215,7 +7230,7 @@ namespace HISP.Server
else if(method == PacketBuilder.ITEM_READ)
{
packetStr = Encoding.UTF8.GetString(packet);
- randomIdStr = packetStr.Substring(3, (packetStr.Length - 3) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ randomIdStr = packetStr.Substring(3, packet.Length - 3);
randomId = 0;
try
{
@@ -7223,17 +7238,17 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. " + BitConverter.ToString(packet));
return;
}
- if (!sender.User.Inventory.HasItem(randomId))
+ if (!sender.LoggedinUser.Inventory.HasItem(randomId))
{
- Logger.HackerPrint(sender.User.Username + " Tried to view someone elses mail. " + randomId.ToString());
+ Logger.HackerPrint(sender.LoggedinUser.Username + " Tried to view someone elses mail. " + randomId.ToString());
return;
}
- InventoryItem items = sender.User.Inventory.GetItemByRandomid(randomId);
+ InventoryItem items = sender.LoggedinUser.Inventory.GetItemByRandomid(randomId);
foreach (ItemInstance item in items.ItemInstances)
{
if (item.RandomId == randomId)
@@ -7241,8 +7256,8 @@ namespace HISP.Server
if (item.Data == 0)
continue;
- sender.User.MajorPriority = true;
- byte[] readMail = PacketBuilder.CreateMeta(Meta.BuildMailLetter(sender.User.MailBox.GetMessageByRandomId(item.Data), randomId));
+ sender.LoggedinUser.MajorPriority = true;
+ byte[] readMail = PacketBuilder.CreateMeta(Meta.BuildMailLetter(sender.LoggedinUser.MailBox.GetMessageByRandomId(item.Data), randomId));
sender.SendPacket(readMail);
break;
}
@@ -7252,11 +7267,11 @@ namespace HISP.Server
}
- Logger.ErrorPrint(sender.User.Username + " Unknown Method- " + method.ToString("X") + " " + BitConverter.ToString(packet).Replace("-", " "));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Unknown Method- " + method.ToString("X") + " " + BitConverter.ToString(packet).Replace("-", " "));
break;
case PacketBuilder.PACKET_INFORMATION:
packetStr = Encoding.UTF8.GetString(packet);
- string valueStr = packetStr.Substring(3, (packetStr.Length - 3) - PacketBuilder.PACKET_CLIENT_TERMINATOR_LENGTH);
+ string valueStr = packetStr.Substring(3, packet.Length - 3);
int value = 0;
try
{
@@ -7264,22 +7279,22 @@ namespace HISP.Server
}
catch (FormatException)
{
- Logger.ErrorPrint(sender.User.Username + " Sent an invalid object interaction packet. "+BitConverter.ToString(packet));
+ Logger.ErrorPrint(sender.LoggedinUser.Username + " Sent an invalid object interaction packet. "+BitConverter.ToString(packet));
return;
}
if (packet[2] == PacketBuilder.ITEM_INFORMATON)
{
itemId = -1;
- if (sender.User.Inventory.HasItem(value))
- itemId = sender.User.Inventory.GetItemByRandomid(value).ItemId;
+ if (sender.LoggedinUser.Inventory.HasItem(value))
+ itemId = sender.LoggedinUser.Inventory.GetItemByRandomid(value).ItemId;
else if (DroppedItems.IsDroppedItemExist(value))
itemId = DroppedItems.GetDroppedItemById(value).Instance.ItemId;
if (itemId == -1)
{
- Logger.HackerPrint(sender.User.Username + " asked for details of non existiant item.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " asked for details of non existiant item.");
return;
}
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
Item.ItemInformation info = Item.GetItemById(itemId);
string infoMessage = Meta.BuildItemInfo(info);
byte[] metaPacket = PacketBuilder.CreateMeta(infoMessage);
@@ -7287,10 +7302,10 @@ namespace HISP.Server
}
if (packet[2] == PacketBuilder.ITEM_INFORMATON_ID)
{
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
if (!Item.ItemIdExist(value))
{
- Logger.HackerPrint(sender.User.Username + " asked for details of non existiant item.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " asked for details of non existiant item.");
return;
}
@@ -7303,7 +7318,7 @@ namespace HISP.Server
{
if(Npc.NpcExists(value))
{
- sender.User.MajorPriority = true;
+ sender.LoggedinUser.MajorPriority = true;
Npc.NpcEntry npc = Npc.GetNpcById(value);
string infoMessage = Meta.BuildNpcInfo(npc);
byte[] metaPacket = PacketBuilder.CreateMeta(infoMessage);
@@ -7311,14 +7326,14 @@ namespace HISP.Server
}
else
{
- Logger.HackerPrint(sender.User.Username + " asked for details of non existiant npc.");
+ Logger.HackerPrint(sender.LoggedinUser.Username + " asked for details of non existiant npc.");
return;
}
}
break;
default:
- Logger.WarnPrint(sender.User.Username + " Sent an unknown Item Interaction Packet type: " + action.ToString() + ", Packet Dump: " + BitConverter.ToString(packet).Replace('-', ' '));
+ Logger.WarnPrint(sender.LoggedinUser.Username + " Sent an unknown Item Interaction Packet type: " + action.ToString() + ", Packet Dump: " + BitConverter.ToString(packet).Replace('-', ' '));
break;
}
@@ -7331,7 +7346,7 @@ namespace HISP.Server
return;
}
- if (packet.Length < 1)
+ if (packet.Length < 2)
{
Logger.ErrorPrint(sender.RemoteIp + " Sent an invalid inventory request packet.");
return;
@@ -7339,13 +7354,13 @@ namespace HISP.Server
UpdateInventory(sender);
}
- public static void OnUserLogin(GameClient sender, byte[] packet)
+ public static void OnLoginRequest(GameClient sender, byte[] packet)
{
Logger.DebugPrint("Login request received from: " + sender.RemoteIp);
string loginRequestString = Encoding.UTF8.GetString(packet).Substring(1);
- if (!loginRequestString.Contains('|') || packet.Length < 2)
+ if (!loginRequestString.Contains('|') || packet.Length < 3)
{
Logger.ErrorPrint(sender.RemoteIp + " Sent an invalid login request");
return;
@@ -7374,7 +7389,7 @@ namespace HISP.Server
if(Database.IsUserBanned(userId))
{
Logger.DebugPrint(sender.RemoteIp + " Tried to login to : " + username + " but, the account was banned.");
- byte[] userBannedPacket = PacketBuilder.CreateLogin(false, Messages.LoginFailedReasonBanned);
+ byte[] userBannedPacket = PacketBuilder.CreateLoginPacket(false, Messages.LoginFailedReasonBanned);
sender.SendPacket(userBannedPacket);
return;
}
@@ -7382,24 +7397,27 @@ namespace HISP.Server
if(Database.IsIpBanned(sender.RemoteIp))
{
Logger.DebugPrint(sender.RemoteIp + " Tried to login to : " + username + " but, the IP was banned.");
- byte[] ipBannedPacket = PacketBuilder.CreateLogin(false, Messages.FormatIpBannedMessage(sender.RemoteIp));
+ byte[] ipBannedPacket = PacketBuilder.CreateLoginPacket(false, Messages.FormatIpBannedMessage(sender.RemoteIp));
sender.SendPacket(ipBannedPacket);
return;
}
- sender.Login(userId);
- sender.User.Password = password;
- byte[] ResponsePacket = PacketBuilder.CreateLogin(true);
+
+
+ sender.Login(userId);
+ sender.LoggedinUser.Password = password;
+
+ byte[] ResponsePacket = PacketBuilder.CreateLoginPacket(true);
sender.SendPacket(ResponsePacket);
- Logger.DebugPrint(sender.RemoteIp + " Logged into : " + sender.User.Username + " (ADMIN: " + sender.User.Administrator + " MOD: " + sender.User.Moderator + ")");
+ Logger.DebugPrint(sender.RemoteIp + " Logged into : " + sender.LoggedinUser.Username + " (ADMIN: " + sender.LoggedinUser.Administrator + " MOD: " + sender.LoggedinUser.Moderator + ")");
}
else
{
Logger.WarnPrint(sender.RemoteIp + " Attempted to login to: " + username + " with incorrect password ");
- byte[] ResponsePacket = PacketBuilder.CreateLogin(false);
+ byte[] ResponsePacket = PacketBuilder.CreateLoginPacket(false);
sender.SendPacket(ResponsePacket);
}
}
@@ -7410,49 +7428,49 @@ namespace HISP.Server
{
if (sender.LoggedIn)
{
- Database.SetPlayerLastLogin(Convert.ToInt32(new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds()), sender.User.Id); // Set last login date
- Database.RemoveOnlineUser(sender.User.Id);
+ Database.SetPlayerLastLogin(Convert.ToInt32(new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds()), sender.LoggedinUser.Id); // Set last login date
+ Database.RemoveOnlineUser(sender.LoggedinUser.Id);
// Leave multirooms
- Multiroom.LeaveAllMultirooms(sender.User);
- TwoPlayer.TwoPlayerRemove(sender.User);
+ Multiroom.LeaveAllMultirooms(sender.LoggedinUser);
+ TwoPlayer.TwoPlayerRemove(sender.LoggedinUser);
// Remove Trade Reference
- sender.User.TradingWith = null;
- sender.User.PendingTradeTo = 0;
+ sender.LoggedinUser.TradingWith = null;
+ sender.LoggedinUser.PendingTradeTo = 0;
// Leave open water balloon game
if (WaterBalloonEvent != null)
if(WaterBalloonEvent.Active)
- WaterBalloonEvent.LeaveEvent(sender.User);
+ WaterBalloonEvent.LeaveEvent(sender.LoggedinUser);
// Leave open quiz.
if (QuizEvent != null)
- QuizEvent.LeaveEvent(sender.User);
+ QuizEvent.LeaveEvent(sender.LoggedinUser);
- ModsRevengeEvent.LeaveEvent(sender.User);
+ ModsRevengeEvent.LeaveEvent(sender.LoggedinUser);
// Delete Arena Entries
- if (Arena.UserHasEnteredHorseInAnyArena(sender.User))
+ if (Arena.UserHasEnteredHorseInAnyArena(sender.LoggedinUser))
{
- Arena arena = Arena.GetArenaUserEnteredIn(sender.User);
- arena.DeleteEntry(sender.User);
+ Arena arena = Arena.GetArenaUserEnteredIn(sender.LoggedinUser);
+ arena.DeleteEntry(sender.LoggedinUser);
}
// Send disconnect message
- byte[] logoutMessageBytes = PacketBuilder.CreateChat(Messages.FormatLogoutMessage(sender.User.Username), PacketBuilder.CHAT_BOTTOM_LEFT);
+ byte[] logoutMessageBytes = PacketBuilder.CreateChat(Messages.FormatLogoutMessage(sender.LoggedinUser.Username), PacketBuilder.CHAT_BOTTOM_LEFT);
foreach (GameClient client in GameClient.ConnectedClients)
if (client.LoggedIn)
- if (!client.User.MuteLogins && !client.User.MuteAll)
- if (client.User.Id != sender.User.Id)
+ if (!client.LoggedinUser.MuteLogins && !client.LoggedinUser.MuteAll)
+ if (client.LoggedinUser.Id != sender.LoggedinUser.Id)
client.SendPacket(logoutMessageBytes);
// Tell clients of diconnect (remove from chat)
- byte[] playerRemovePacket = PacketBuilder.CreatePlayerLeave(sender.User.Username);
+ byte[] playerRemovePacket = PacketBuilder.CreatePlayerLeavePacket(sender.LoggedinUser.Username);
foreach (GameClient client in GameClient.ConnectedClients)
if (client.LoggedIn)
- if (client.User.Id != sender.User.Id)
+ if (client.LoggedinUser.Id != sender.LoggedinUser.Id)
client.SendPacket(playerRemovePacket);
}
@@ -7482,13 +7500,13 @@ namespace HISP.Server
foreach (GameClient client in GameClient.ConnectedClients)
if (client.LoggedIn)
{
- if (!includeStealth && client.User.Stealth)
+ if (!includeStealth && client.LoggedinUser.Stealth)
continue;
- if (!includeMuted && client.User.MuteIsland)
+ if (!includeMuted && client.LoggedinUser.MuteIsland)
continue;
- if (World.InTown(client.User.X, client.User.Y))
- if (World.GetIsle(client.User.X, client.User.Y).Name == town.Name)
- usersInTown.Add(client.User);
+ if (World.InTown(client.LoggedinUser.X, client.LoggedinUser.Y))
+ if (World.GetIsle(client.LoggedinUser.X, client.LoggedinUser.Y).Name == town.Name)
+ usersInTown.Add(client.LoggedinUser);
}
return usersInTown.ToArray();
@@ -7499,13 +7517,13 @@ namespace HISP.Server
foreach (GameClient client in GameClient.ConnectedClients)
if (client.LoggedIn)
{
- if (!includeStealth && client.User.Stealth)
+ if (!includeStealth && client.LoggedinUser.Stealth)
continue;
- if (!includeMuted && client.User.MuteIsland)
+ if (!includeMuted && client.LoggedinUser.MuteIsland)
continue;
- if (World.InIsle(client.User.X, client.User.Y))
- if (World.GetIsle(client.User.X, client.User.Y).Name == isle.Name)
- usersInIsle.Add(client.User);
+ if (World.InIsle(client.LoggedinUser.X, client.LoggedinUser.Y))
+ if (World.GetIsle(client.LoggedinUser.X, client.LoggedinUser.Y).Name == isle.Name)
+ usersInIsle.Add(client.LoggedinUser);
}
return usersInIsle.ToArray();
@@ -7520,13 +7538,13 @@ namespace HISP.Server
if (client.LoggedIn)
{
- if (World.InSpecialTile(client.User.X, client.User.Y))
+ if (World.InSpecialTile(client.LoggedinUser.X, client.LoggedinUser.Y))
{
- World.SpecialTile tile = World.GetSpecialTile(client.User.X, client.User.Y);
+ World.SpecialTile tile = World.GetSpecialTile(client.LoggedinUser.X, client.LoggedinUser.Y);
if (tile.Code == code)
{
- userList.Add(client.User);
+ userList.Add(client.LoggedinUser);
}
}
}
@@ -7540,12 +7558,12 @@ namespace HISP.Server
{
if(client.LoggedIn)
{
- if (!includeStealth && client.User.Stealth)
+ if (!includeStealth && client.LoggedinUser.Stealth)
continue;
- if (!includeMuted && client.User.MuteNear)
+ if (!includeMuted && client.LoggedinUser.MuteNear)
continue;
- if (client.User.X == x && client.User.Y == y)
- usersHere.Add(client.User);
+ if (client.LoggedinUser.X == x && client.LoggedinUser.Y == y)
+ usersHere.Add(client.LoggedinUser);
}
}
return usersHere.ToArray();
@@ -7556,8 +7574,8 @@ namespace HISP.Server
{
if (client.LoggedIn)
{
- if (client.User.Username.ToLower().StartsWith(username.ToLower()))
- return client.User;
+ if (client.LoggedinUser.Username.ToLower().StartsWith(username.ToLower()))
+ return client.LoggedinUser;
}
}
throw new KeyNotFoundException("User was not found.");
@@ -7569,8 +7587,8 @@ namespace HISP.Server
{
if(client.LoggedIn)
{
- if (client.User.Username.ToLower() == username.ToLower())
- return client.User;
+ if (client.LoggedinUser.Username.ToLower() == username.ToLower())
+ return client.LoggedinUser;
}
}
throw new KeyNotFoundException("User was not found.");
@@ -7581,8 +7599,8 @@ namespace HISP.Server
foreach(GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if (client.User.Id == id)
- return client.User;
+ if (client.LoggedinUser.Id == id)
+ return client.LoggedinUser;
}
throw new KeyNotFoundException("User not found (not online?)");
@@ -7600,8 +7618,8 @@ namespace HISP.Server
{
if (client.LoggedIn)
{
- if (startX <= client.User.X && endX >= client.User.X && startY <= client.User.Y && endY >= client.User.Y)
- usersNearby.Add(client.User);
+ if (startX <= client.LoggedinUser.X && endX >= client.LoggedinUser.X && startY <= client.LoggedinUser.Y && endY >= client.LoggedinUser.Y)
+ usersNearby.Add(client.LoggedinUser);
}
}
@@ -7628,12 +7646,12 @@ namespace HISP.Server
foreach (GameClient client in GameClient.ConnectedClients)
if (client.LoggedIn)
{
- if (!includeStealth && client.User.Stealth)
+ if (!includeStealth && client.LoggedinUser.Stealth)
continue;
- if (!includeMuted && client.User.MuteNear)
+ if (!includeMuted && client.LoggedinUser.MuteNear)
continue;
- if (IsOnScreen(x,y,client.User.X, client.User.Y))
- usersOnScreen.Add(client.User);
+ if (IsOnScreen(x,y,client.LoggedinUser.X, client.LoggedinUser.Y))
+ usersOnScreen.Add(client.LoggedinUser);
}
return usersOnScreen.ToArray();
@@ -7651,12 +7669,12 @@ namespace HISP.Server
{
if (client.LoggedIn)
{
- if (!includeStealth && client.User.Stealth)
+ if (!includeStealth && client.LoggedinUser.Stealth)
continue;
- if (!includeMuted && client.User.MuteNear)
+ if (!includeMuted && client.LoggedinUser.MuteNear)
continue;
- if (startX <= client.User.X && endX >= client.User.X && startY <= client.User.Y && endY >= client.User.Y)
- usersNearby.Add(client.User);
+ if (startX <= client.LoggedinUser.X && endX >= client.LoggedinUser.X && startY <= client.LoggedinUser.Y && endY >= client.LoggedinUser.Y)
+ usersNearby.Add(client.LoggedinUser);
}
}
@@ -7668,9 +7686,9 @@ namespace HISP.Server
foreach(GameClient client in GameClient.ConnectedClients)
if (client.LoggedIn)
{
- if (!includeStealth && client.User.Stealth)
+ if (!includeStealth && client.LoggedinUser.Stealth)
continue;
- if (!client.User.Stealth)
+ if (!client.LoggedinUser.Stealth)
count++;
}
@@ -7686,12 +7704,12 @@ namespace HISP.Server
if (client.LoggedIn)
{
- if (!caller.Friends.List.Contains(client.User.Id))
+ if (!caller.Friends.List.Contains(client.LoggedinUser.Id))
continue;
- if (!client.User.Stealth)
- allLocations.Add(new Point(client.User.X, client.User.Y));
+ if (!client.LoggedinUser.Stealth)
+ allLocations.Add(new Point(client.LoggedinUser.X, client.LoggedinUser.Y));
}
}
@@ -7708,11 +7726,11 @@ namespace HISP.Server
if (client.LoggedIn)
{
- if (client.User.Id == caller.Id)
+ if (client.LoggedinUser.Id == caller.Id)
continue;
- if (!client.User.Stealth)
- allLocations.Add(new Point(client.User.X, client.User.Y));
+ if (!client.LoggedinUser.Stealth)
+ allLocations.Add(new Point(client.LoggedinUser.X, client.LoggedinUser.Y));
}
@@ -7726,7 +7744,7 @@ namespace HISP.Server
foreach (GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if (!client.User.MuteAds)
+ if (!client.LoggedinUser.MuteAds)
count++;
}
return count;
@@ -7737,11 +7755,11 @@ namespace HISP.Server
if (user.MailBox.UnreadMailCount > 0)
{
- byte[] RipOffAOLSound = PacketBuilder.CreatePlaySound(Messages.MailSe);
- user.Client.SendPacket(RipOffAOLSound);
+ byte[] RipOffAOLSound = PacketBuilder.CreatePlaysoundPacket(Messages.MailSe);
+ user.LoggedinClient.SendPacket(RipOffAOLSound);
byte[] mailReceivedText = PacketBuilder.CreateChat(Messages.MailReceivedMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
- user.Client.SendPacket(mailReceivedText);
+ user.LoggedinClient.SendPacket(mailReceivedText);
user.MailBox.ReadAllMail();
}
@@ -7752,7 +7770,7 @@ namespace HISP.Server
foreach (GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if(client.User.Moderator)
+ if(client.LoggedinUser.Moderator)
count++;
}
return count;
@@ -7777,7 +7795,7 @@ namespace HISP.Server
foreach (GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if (client.User.Administrator)
+ if (client.LoggedinUser.Administrator)
count++;
}
return count;
@@ -7790,13 +7808,13 @@ namespace HISP.Server
public static void Update(GameClient client)
{
UpdateArea(client);
- foreach (User nearbyUser in GameServer.GetNearbyUsers(client.User.X, client.User.Y, false, false))
- if (nearbyUser.Id != client.User.Id)
+ foreach (User nearbyUser in GameServer.GetNearbyUsers(client.LoggedinUser.X, client.LoggedinUser.Y, false, false))
+ if (nearbyUser.Id != client.LoggedinUser.Id)
if(!nearbyUser.MajorPriority)
if(!nearbyUser.MinorPriority)
- UpdateArea(nearbyUser.Client);
+ UpdateArea(nearbyUser.LoggedinClient);
- UpdateUserFacingAndLocation(client.User);
+ UpdateUserFacingAndLocation(client.LoggedinUser);
}
public static void UpdateDrawingForAll(string id, GameClient sender, string drawing, bool includingSender=false)
@@ -7809,28 +7827,28 @@ namespace HISP.Server
foreach (User user in usersHere)
{
if (!includingSender)
- if (user.Id == sender.User.Id)
+ if (user.Id == sender.LoggedinUser.Id)
continue;
- byte[] patchDrawing = PacketBuilder.CreateDrawingUpdate(drawing);
- user.Client.SendPacket(patchDrawing);
+ byte[] patchDrawing = PacketBuilder.CreateDrawingUpdatePacket(drawing);
+ user.LoggedinClient.SendPacket(patchDrawing);
}
}
}
public static void UpdateHorseMenu(GameClient forClient, HorseInstance horseInst)
{
- forClient.User.MajorPriority = true;
+ forClient.LoggedinUser.MajorPriority = true;
- int TileID = Map.GetTileId(forClient.User.X, forClient.User.Y, false);
+ int TileID = Map.GetTileId(forClient.LoggedinUser.X, forClient.LoggedinUser.Y, false);
string type = Map.TerrainTiles[TileID - 1].Type;
- if (horseInst.Owner == forClient.User.Id)
- forClient.User.LastViewedHorse = horseInst;
+ if (horseInst.Owner == forClient.LoggedinUser.Id)
+ forClient.LoggedinUser.LastViewedHorse = horseInst;
else
- forClient.User.LastViewedHorseOther = horseInst;
+ forClient.LoggedinUser.LastViewedHorseOther = horseInst;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseInformation(horseInst, forClient.User));
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildHorseInformation(horseInst, forClient.LoggedinUser));
forClient.SendPacket(metaPacket);
string loadSwf = HorseInfo.BreedViewerSwf(horseInst, type);
@@ -7841,8 +7859,8 @@ namespace HISP.Server
{
if (!forClient.LoggedIn)
return;
- forClient.User.MajorPriority = true;
- byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildInventoryInfo(forClient.User.Inventory));
+ forClient.LoggedinUser.MajorPriority = true;
+ byte[] metaPacket = PacketBuilder.CreateMeta(Meta.BuildInventoryInfo(forClient.LoggedinUser.Inventory));
forClient.SendPacket(metaPacket);
}
@@ -7854,11 +7872,11 @@ namespace HISP.Server
return;
}
- string lastWeather = forClient.User.LastSeenWeather;
- string weather = forClient.User.GetWeatherSeen();
+ string lastWeather = forClient.LoggedinUser.LastSeenWeather;
+ string weather = forClient.LoggedinUser.GetWeatherSeen();
if (lastWeather != weather)
{
- byte[] WeatherUpdate = PacketBuilder.CreateWeatherUpdate(weather);
+ byte[] WeatherUpdate = PacketBuilder.CreateWeatherUpdatePacket(weather);
forClient.SendPacket(WeatherUpdate);
}
}
@@ -7870,7 +7888,7 @@ namespace HISP.Server
return;
}
- byte[] WorldData = PacketBuilder.CreateTimeAndWeatherUpdate(World.ServerTime.Minutes, World.ServerTime.Days, World.ServerTime.Years, forClient.User.GetWeatherSeen());
+ byte[] WorldData = PacketBuilder.CreateTimeAndWeatherUpdate(World.ServerTime.Minutes, World.ServerTime.Days, World.ServerTime.Years, forClient.LoggedinUser.GetWeatherSeen());
forClient.SendPacket(WorldData);
}
public static void UpdatePlayer(GameClient forClient)
@@ -7880,7 +7898,7 @@ namespace HISP.Server
Logger.ErrorPrint(forClient.RemoteIp + "tried to update player information when not logged in.");
return;
}
- byte[] PlayerData = PacketBuilder.CreateMoneyPlayerCountAndMail(forClient.User.Money, GameServer.GetNumberOfPlayers(), forClient.User.MailBox.UnreadMailCount);
+ byte[] PlayerData = PacketBuilder.CreateMoneyPlayerCountAndMail(forClient.LoggedinUser.Money, GameServer.GetNumberOfPlayers(), forClient.LoggedinUser.MailBox.UnreadMailCount);
forClient.SendPacket(PlayerData);
}
@@ -7890,17 +7908,17 @@ namespace HISP.Server
foreach (User onScreenUser in GetOnScreenUsers(user.X, user.Y, true, true))
if (onScreenUser.Id != user.Id)
- onScreenUser.Client.SendPacket(playerInfoBytes);
+ onScreenUser.LoggedinClient.SendPacket(playerInfoBytes);
}
public static void UpdateAreaForAll(int x, int y, bool ignoreMetaPrio=false, User exceptMe=null)
{
foreach(GameClient client in GameClient.ConnectedClients)
{
if (client.LoggedIn)
- if (client.User.X == x && client.User.Y == y)
- if(!client.User.MinorPriority || ignoreMetaPrio)
- if(!client.User.MajorPriority)
- if(client.User != exceptMe)
+ if (client.LoggedinUser.X == x && client.LoggedinUser.Y == y)
+ if(!client.LoggedinUser.MinorPriority || ignoreMetaPrio)
+ if(!client.LoggedinUser.MajorPriority)
+ if(client.LoggedinUser != exceptMe)
UpdateArea(client);
}
}
@@ -7918,39 +7936,38 @@ namespace HISP.Server
return;
}
- if(forClient.User.TradingWith != null)
+ if(forClient.LoggedinUser.TradingWith != null)
{
- if (!forClient.User.TradingWith.OtherTrade.Trader.Client.LoggedIn)
+ if (!forClient.LoggedinUser.TradingWith.OtherTrade.Trader.LoggedinClient.LoggedIn)
{
- forClient.User.TradingWith.InteruptTrade();
+ forClient.LoggedinUser.TradingWith.InteruptTrade();
return;
}
- if (forClient.User.TradingWith.OtherTrade.Trader.TradingWith == null)
+ if (forClient.LoggedinUser.TradingWith.OtherTrade.Trader.TradingWith == null)
{
- forClient.User.TradingWith.InteruptTrade();
+ forClient.LoggedinUser.TradingWith.InteruptTrade();
return;
}
- forClient.User.MajorPriority = true;
- forClient.User.TradeMenuPriority = false;
- byte[] tradeMeta = PacketBuilder.CreateMeta(Meta.BuildTrade(forClient.User.TradingWith));
+ forClient.LoggedinUser.MajorPriority = true;
+ forClient.LoggedinUser.TradeMenuPriority = false;
+ byte[] tradeMeta = PacketBuilder.CreateMeta(Meta.BuildTrade(forClient.LoggedinUser.TradingWith));
forClient.SendPacket(tradeMeta);
return;
}
- forClient.User.MajorPriority = false;
- forClient.User.MinorPriority = false;
+ forClient.LoggedinUser.MajorPriority = false;
+ forClient.LoggedinUser.MinorPriority = false;
- string locationStr;
-
- int tileX = forClient.User.X;
- int tileY = forClient.User.Y;
+ string LocationStr = "";
+ int tileX = forClient.LoggedinUser.X;
+ int tileY = forClient.LoggedinUser.Y;
if (!World.InSpecialTile(tileX, tileY))
{
- if (forClient.User.InRealTimeQuiz)
+ if (forClient.LoggedinUser.InRealTimeQuiz)
return;
- locationStr = Meta.BuildMetaInfo(forClient.User, tileX, tileY);
+ LocationStr = Meta.BuildMetaInfo(forClient.LoggedinUser, tileX, tileY);
}
else
{
@@ -7961,21 +7978,21 @@ namespace HISP.Server
forClient.SendPacket(swfModulePacket);
}
- if (forClient.User.InRealTimeQuiz && QuizEvent != null)
+ if (forClient.LoggedinUser.InRealTimeQuiz && QuizEvent != null)
{
- QuizEvent.JoinEvent(forClient.User).UpdateParticipent();
+ QuizEvent.JoinEvent(forClient.LoggedinUser).UpdateParticipent();
return;
}
if (specialTile.Code != null)
if (!ProcessMapCodeWithArg(forClient, specialTile))
return;
- locationStr = Meta.BuildSpecialTileInfo(forClient.User, specialTile);
+ LocationStr = Meta.BuildSpecialTileInfo(forClient.LoggedinUser, specialTile);
}
- byte[] areaMessage = PacketBuilder.CreateMeta(locationStr);
- forClient.SendPacket(areaMessage);
+ byte[] AreaMessage = PacketBuilder.CreateMeta(LocationStr);
+ forClient.SendPacket(AreaMessage);
}
public static void UpdateStats(GameClient client)
@@ -7983,8 +8000,8 @@ namespace HISP.Server
if (!client.LoggedIn)
return;
- client.User.MajorPriority = true;
- string metaWind = Meta.BuildStatsMenu(client.User);
+ client.LoggedinUser.MajorPriority = true;
+ string metaWind = Meta.BuildStatsMenu(client.LoggedinUser);
byte[] statsPacket = PacketBuilder.CreateMeta(metaWind);
client.SendPacket(statsPacket);
@@ -8018,11 +8035,11 @@ namespace HISP.Server
{
if (connectedClient.LoggedIn)
{
- if (connectedClient.User.Inventory.HasItemId(id))
+ if (connectedClient.LoggedinUser.Inventory.HasItemId(id))
{
- InventoryItem invItm = connectedClient.User.Inventory.GetItemByItemId(id);
+ InventoryItem invItm = connectedClient.LoggedinUser.Inventory.GetItemByItemId(id);
foreach (ItemInstance itm in invItm.ItemInstances.ToArray())
- connectedClient.User.Inventory.Remove(itm);
+ connectedClient.LoggedinUser.Inventory.Remove(itm);
}
}
}
@@ -8044,7 +8061,7 @@ namespace HISP.Server
public static void StartRidingHorse(GameClient sender, int horseRandomId)
{
- HorseInstance horseMountInst = sender.User.HorseInventory.GetHorseById(horseRandomId);
+ HorseInstance horseMountInst = sender.LoggedinUser.HorseInventory.GetHorseById(horseRandomId);
if (horseMountInst.Breed.Type != "unicorn" && horseMountInst.Breed.Type != "pegasus")
{
@@ -8061,7 +8078,7 @@ namespace HISP.Server
byte[] ridingHorseMessagePacket = PacketBuilder.CreateChat(ridingHorseMessage, PacketBuilder.CHAT_BOTTOM_RIGHT);
sender.SendPacket(ridingHorseMessagePacket);
- sender.User.CurrentlyRidingHorse = horseMountInst;
+ sender.LoggedinUser.CurrentlyRidingHorse = horseMountInst;
// Determine what sprite to use;
int incBy = 0;
@@ -8112,13 +8129,13 @@ namespace HISP.Server
}
if (horseMountInst.Breed.Type == "camel")
{
- sender.User.Awards.AddAward(Award.GetAwardById(40)); // Camel Rider
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(40)); // Camel Rider
incBy = 13;
}
if(horseMountInst.Breed.Type == "llama")
{
- sender.User.Awards.AddAward(Award.GetAwardById(41)); // Llama Rider
+ sender.LoggedinUser.Awards.AddAward(Award.GetAwardById(41)); // Llama Rider
incBy = 14;
}
@@ -8136,16 +8153,16 @@ namespace HISP.Server
}
incBy *= 5;
- sender.User.Facing %= 5;
- sender.User.Facing += incBy;
- sender.User.LastRiddenHorse = horseRandomId;
+ sender.LoggedinUser.Facing %= 5;
+ sender.LoggedinUser.Facing += incBy;
+ sender.LoggedinUser.LastRiddenHorse = horseRandomId;
- UpdateUserFacingAndLocation(sender.User);
+ UpdateUserFacingAndLocation(sender.LoggedinUser);
- byte[] updatePlayer = PacketBuilder.CreateMovement(sender.User.X, sender.User.Y, sender.User.CharacterId, sender.User.Facing, PacketBuilder.DIRECTION_NONE, true);
+ byte[] updatePlayer = PacketBuilder.CreateMovementPacket(sender.LoggedinUser.X, sender.LoggedinUser.Y, sender.LoggedinUser.CharacterId, sender.LoggedinUser.Facing, PacketBuilder.DIRECTION_NONE, true);
sender.SendPacket(updatePlayer);
- if (sender.User.HorseWindowOpen)
+ if (sender.LoggedinUser.HorseWindowOpen)
UpdateArea(sender);
}
public static void DoItemPurchases(GameClient sender)
@@ -8153,28 +8170,28 @@ namespace HISP.Server
if (!sender.LoggedIn)
return;
- Item.ItemPurchaseQueueItem[] queueItems = Database.GetItemPurchaseQueue(sender.User.Id);
+ Item.ItemPurchaseQueueItem[] queueItems = Database.GetItemPurchaseQueue(sender.LoggedinUser.Id);
foreach (Item.ItemPurchaseQueueItem queueItem in queueItems)
{
for (int i = 0; i < queueItem.ItemCount; i++)
{
- sender.User.Inventory.AddIgnoringFull(new ItemInstance(queueItem.ItemId));
+ sender.LoggedinUser.Inventory.AddIgnoringFull(new ItemInstance(queueItem.ItemId));
}
}
- Database.ClearItemPurchaseQueue(sender.User.Id);
+ Database.ClearItemPurchaseQueue(sender.LoggedinUser.Id);
}
public static void StopRidingHorse(GameClient sender)
{
- sender.User.CurrentlyRidingHorse = null;
+ sender.LoggedinUser.CurrentlyRidingHorse = null;
- sender.User.Facing %= 5;
- UpdateUserFacingAndLocation(sender.User);
+ sender.LoggedinUser.Facing %= 5;
+ UpdateUserFacingAndLocation(sender.LoggedinUser);
- byte[] updatePlayer = PacketBuilder.CreateMovement(sender.User.X, sender.User.Y, sender.User.CharacterId, sender.User.Facing, PacketBuilder.DIRECTION_NONE, true);
+ byte[] updatePlayer = PacketBuilder.CreateMovementPacket(sender.LoggedinUser.X, sender.LoggedinUser.Y, sender.LoggedinUser.CharacterId, sender.LoggedinUser.Facing, PacketBuilder.DIRECTION_NONE, true);
sender.SendPacket(updatePlayer);
- if (sender.User.HorseWindowOpen)
+ if (sender.LoggedinUser.HorseWindowOpen)
UpdateArea(sender);
}
public static bool ProcessMapCodeWithArg(GameClient forClient, World.SpecialTile tile)
@@ -8197,7 +8214,7 @@ namespace HISP.Server
{
int newX = int.Parse(args[0]);
int newY = int.Parse(args[1]);
- forClient.User.Teleport(newX, newY);
+ forClient.LoggedinUser.Teleport(newX, newY);
if (World.InIsle(tile.X, tile.Y))
{
World.Isle isle = World.GetIsle(tile.X, tile.Y);
@@ -8205,7 +8222,7 @@ namespace HISP.Server
int overlay = Map.GetTileId(tile.X, tile.Y, true);
if (tileset == 6 && overlay == 249) // warp point
{
- byte[] swfPacket = PacketBuilder.CreateSwfModule("warpcutscene", PacketBuilder.PACKET_SWF_MODULE_CUTSCENE);
+ byte[] swfPacket = PacketBuilder.CreateSwfModule("warpcutscene", PacketBuilder.PACKET_SWF_CUTSCENE);
forClient.SendPacket(swfPacket);
}
}
@@ -8223,8 +8240,8 @@ namespace HISP.Server
byte[] hammockText = PacketBuilder.CreateChat(Messages.HammockText, PacketBuilder.CHAT_BOTTOM_RIGHT);
forClient.SendPacket(hammockText);
- forClient.User.Tiredness = 1000;
- foreach(HorseInstance horse in forClient.User.HorseInventory.HorseList)
+ forClient.LoggedinUser.Tiredness = 1000;
+ foreach(HorseInstance horse in forClient.LoggedinUser.HorseInventory.HorseList)
{
horse.BasicStats.Tiredness = 1000;
}
@@ -8240,12 +8257,12 @@ namespace HISP.Server
if (minuteTimer != null)
minuteTimer.Dispose();
}
- public static void ShutdownServer(string shutdownReason = "No reason provided.")
+ public static void ShutdownServer()
{
- Logger.InfoPrint("Server shutting down; " + shutdownReason);
+ Logger.InfoPrint("Server shutting down.");
try
{
- GameClient.OnShutdown(shutdownReason);
+ GameClient.OnShutdown();
GameServer.OnShutdown();
Database.OnShutdown();
}
@@ -8254,14 +8271,13 @@ namespace HISP.Server
Entry.OnShutdown();
}
-
public static void StartServer()
{
ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress hostIP = IPAddress.Parse(ConfigReader.BindIP);
IPEndPoint ep = new IPEndPoint(hostIP, ConfigReader.Port);
ServerSocket.Bind(ep);
- ServerSocket.Listen(0xFFFF);
+ ServerSocket.Listen(0x7fffffff);
gameTimer = new Timer(new TimerCallback(onGameTick), null, gameTickSpeed, gameTickSpeed);
minuteTimer = new Timer(new TimerCallback(onMinuteTick), null, oneMinute, oneMinute);
Logger.InfoPrint("Binding to ip: " + ConfigReader.BindIP + " On port: " + ConfigReader.Port.ToString());
diff --git a/HorseIsleServer/LibHISP/Server/Logger.cs b/HorseIsleServer/LibHISP/Server/Logger.cs
index 8f13c38..f173776 100755
--- a/HorseIsleServer/LibHISP/Server/Logger.cs
+++ b/HorseIsleServer/LibHISP/Server/Logger.cs
@@ -1,58 +1,50 @@
-using System;
-
-namespace HISP.Server
-{
- public class Logger
- {
- private static void defaultCallbackFunc(bool error, string type, string text)
- {
- return;
+using System;
+
+namespace HISP.Server
+{
+ public class Logger
+ {
+ private static void defaultCallbackFunc(bool error, string type, string text)
+ {
+ return;
+ }
+
+ private static Action logFunction = defaultCallbackFunc;
+
+
+ public static void SetCallback(Action callback)
+ {
+ logFunction = callback;
+ }
+
+ public static void ErrorPrint(string text)
+ {
+ if (ConfigReader.LogLevel >= 1)
+ logFunction(true, "ERROR", text);
+ }
+ public static void WarnPrint(string text)
+ {
+ if (ConfigReader.LogLevel >= 2)
+ logFunction(false, "WARN", text);
+ }
+ public static void HackerPrint(string text)
+ {
+ if (ConfigReader.LogLevel >= 3)
+ logFunction(false, "HACK", text);
+ }
+ public static void InfoPrint(string text)
+ {
+ if (ConfigReader.LogLevel >= 4)
+ logFunction(false, "INFO", text);
+ }
+ public static void DebugPrint(string text)
+ {
+ if (ConfigReader.LogLevel >= 5)
+ logFunction(false, "DEBUG", text);
}
-
- private static Action logFunction = defaultCallbackFunc;
-
- private static void log(bool error, string type, string text)
- {
- string[] msgs = text.Replace("\r", "").Split("\n");
- foreach(string msg in msgs)
- {
- logFunction(error, type, msg);
- }
- }
-
- public static void SetCallback(Action callback)
- {
- logFunction = callback;
- }
-
- public static void ErrorPrint(string text)
- {
- if (ConfigReader.LogLevel >= 1)
- log(true, "ERROR", text);
- }
- public static void WarnPrint(string text)
- {
- if (ConfigReader.LogLevel >= 2)
- log(false, "WARN", text);
- }
- public static void HackerPrint(string text)
- {
- if (ConfigReader.LogLevel >= 3)
- log(false, "HACK", text);
- }
- public static void InfoPrint(string text)
- {
- if (ConfigReader.LogLevel >= 4)
- log(false, "INFO", text);
- }
- public static void DebugPrint(string text)
- {
- if (ConfigReader.LogLevel >= 5)
- log(false, "DEBUG", text);
- }
- public static void CrashPrint(string text)
- {
- log(true, "CRASH", text);
- }
- }
-}
+ public static void CrashPrint(string text)
+ {
+ logFunction(true, "CRASH", text);
+ }
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Server/Network/Hybrid.cs b/HorseIsleServer/LibHISP/Server/Network/Hybrid.cs
deleted file mode 100644
index f700be2..0000000
--- a/HorseIsleServer/LibHISP/Server/Network/Hybrid.cs
+++ /dev/null
@@ -1,104 +0,0 @@
-using System;
-using System.Net.Sockets;
-
-namespace HISP.Server.Network
-{
- public class Hybrid : Transport
- {
- Transport actualTransport = null;
-
-
- public override string Name
- {
- get
- {
- if(actualTransport == null)
- return "Hybrid";
- else
- return actualTransport.Name;
- }
- }
-
-
- public override bool Disconnected
- {
- get
- {
- if (actualTransport == null)
- return base.Disconnected;
- else
- return actualTransport.Disconnected;
- }
- }
-
- public override string Ip
- {
- get
- {
- if (actualTransport == null)
- return base.Ip;
- else
- return actualTransport.Ip;
- }
- }
-
-
- public override void Disconnect()
- {
- if (actualTransport == null)
- {
- base.Disconnect();
- }
- else
- {
- actualTransport.Disconnect();
- }
- }
-
- public override void ProcessReceivedPackets(int available, byte[] buffer)
- {
-
- if (ConfigReader.EnableWebSocket && WebSocket.IsStartOfHandshake(buffer))
- {
- Logger.DebugPrint(this.Ip + " Switching to WebSocket");
- actualTransport = new WebSocket();
-
- actualTransport.passObjects(this.socket, this.onReceiveCallback, this.onDisconnectCallback);
- actualTransport.ProcessReceivedPackets(available, buffer);
- actualTransport.Accept(base.socket, base.onReceiveCallback, base.onDisconnectCallback);
- }
- else
- {
- Logger.DebugPrint(this.Ip + " Switching to XmlSocket");
- actualTransport = new XmlSocket();
-
- actualTransport.passObjects(this.socket, this.onReceiveCallback, this.onDisconnectCallback);
- actualTransport.ProcessReceivedPackets(available, buffer);
- actualTransport.Accept(base.socket, base.onReceiveCallback, base.onDisconnectCallback);
- }
- }
-
- internal override void receivePackets(object sender, SocketAsyncEventArgs e)
- {
- try
- {
- if(base.checkForError(e)) return;
- ProcessReceivedPackets(e.BytesTransferred, e.Buffer);
- if (base.checkForError(e)) return;
- }
- catch (Exception ex)
- {
- Logger.ErrorPrint(ex.StackTrace);
- try { this.Disconnect(); } catch (Exception) { };
- };
- }
-
- public override void Send(byte[] data)
- {
- if(actualTransport == null)
- base.Send(data);
- else
- actualTransport.Send(data);
- }
- }
-}
diff --git a/HorseIsleServer/LibHISP/Server/Network/ITransport.cs b/HorseIsleServer/LibHISP/Server/Network/ITransport.cs
deleted file mode 100644
index 0326b10..0000000
--- a/HorseIsleServer/LibHISP/Server/Network/ITransport.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System;
-using System.Net.Sockets;
-
-namespace HISP.Server.Network
-{
- public interface ITransport
- {
- public string Name { get; }
- public bool Disconnected { get; }
- public string Ip { get; }
-
- public void Accept(Socket socket, Action onReceive, Action onDisconnect);
- public void Send(byte[] data);
- public void Disconnect();
- }
-}
diff --git a/HorseIsleServer/LibHISP/Server/Network/NullSocket.cs b/HorseIsleServer/LibHISP/Server/Network/NullSocket.cs
deleted file mode 100644
index 04a7982..0000000
--- a/HorseIsleServer/LibHISP/Server/Network/NullSocket.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-// A transport that does absolutely nothing.
-// only use this for testing.
-
-using System;
-using System.Net;
-using System.Net.Sockets;
-
-namespace HISP.Server.Network
-{
- public class NullSocket : ITransport
- {
- private bool disconnected = false;
- public string Name
- {
- get
- {
- return "NullSocket";
- }
- }
- public bool Disconnected
- {
- get
- {
- return disconnected;
- }
- set
- {
- disconnected = value;
- }
- }
-
- public string Ip
- {
- get
- {
- return IPAddress.Loopback.MapToIPv4().ToString();
- }
- }
- public void Accept(Socket socket, Action onReceive, Action onDisconnect)
- {
- return;
- }
-
- public void Disconnect()
- {
- disconnected = true;
- return;
- }
-
- public void Send(byte[] data)
- {
- return;
- }
- }
-}
diff --git a/HorseIsleServer/LibHISP/Server/Network/Transport.cs b/HorseIsleServer/LibHISP/Server/Network/Transport.cs
deleted file mode 100644
index 9302341..0000000
--- a/HorseIsleServer/LibHISP/Server/Network/Transport.cs
+++ /dev/null
@@ -1,132 +0,0 @@
-using HISP.Util;
-using System;
-using System.Collections.Generic;
-using System.Net.Sockets;
-
-namespace HISP.Server.Network
-{
- public abstract class Transport : ITransport
- {
- internal Socket socket;
- internal string remoteIp;
-
- internal Action onReceiveCallback;
- internal Action onDisconnectCallback;
-
- internal byte[] workBuffer = new byte[0xFFFF];
-
- internal bool isDisconnecting = false;
-
- public abstract void ProcessReceivedPackets(int available, byte[] buffer);
- public abstract string Name { get; }
-
- internal virtual bool checkForError(SocketAsyncEventArgs e)
- {
- if (isDisconnecting || socket == null || e.BytesTransferred <= 0 || !socket.Connected || e.SocketError != SocketError.Success)
- {
- Disconnect();
- return true;
- }
- else
- {
- return false;
- }
- }
- internal virtual void receivePackets(object sender, SocketAsyncEventArgs e)
- {
- try
- {
- do
- {
- if (checkForError(e)) break;
- ProcessReceivedPackets(e.BytesTransferred, e.Buffer);
- if (checkForError(e)) break;
-
- } while (!socket.ReceiveAsync(e));
- }
- catch (Exception ex) {
- Logger.ErrorPrint(ex.StackTrace);
- try { this.Disconnect(); } catch (Exception) { };
- };
-
- }
-
- public virtual string Ip
- {
- get
- {
- return this.remoteIp;
- }
- }
-
- public virtual bool Disconnected
- {
- get
- {
- return this.isDisconnecting;
- }
- }
-
- internal virtual void passObjects(Socket socket, Action onReceive, Action onDisconnect)
- {
- socket.SendTimeout = 10 * 1000; // 10sec
- socket.ReceiveTimeout = 10 * 1000; // 10sec
-
- this.socket = socket;
- this.onReceiveCallback = onReceive;
- this.onDisconnectCallback = onDisconnect;
- this.remoteIp = Helper.GetIp(socket.RemoteEndPoint);
- }
-
- public virtual void Accept(Socket socket, Action onReceive, Action onDisconnect)
- {
- passObjects(socket, onReceive, onDisconnect);
-
- SocketAsyncEventArgs e = new SocketAsyncEventArgs();
- e.Completed += receivePackets;
- e.SetBuffer(workBuffer, 0, workBuffer.Length);
- if (!socket.ReceiveAsync(e))
- receivePackets(null, e);
- }
-
- public virtual void Disconnect()
- {
- if (this.isDisconnecting)
- return;
- this.isDisconnecting = true;
-
- // Close Socket
- if (socket != null)
- {
- try
- {
- socket.Disconnect(false);
- socket.Dispose();
- socket = null;
-
- }
- catch (SocketException) { }
- catch (ObjectDisposedException) { };
- }
-
- onDisconnectCallback();
- }
-
- public virtual void Send(byte[] data)
- {
- if (Disconnected) return;
- if (data == null) return;
-
- try
- {
- socket.Send(data);
- }
- catch (ObjectDisposedException)
- {
- if (!Disconnected)
- Disconnect();
- }
- }
- }
-}
-
diff --git a/HorseIsleServer/LibHISP/Server/Network/WebSocket.cs b/HorseIsleServer/LibHISP/Server/Network/WebSocket.cs
deleted file mode 100644
index 8a41178..0000000
--- a/HorseIsleServer/LibHISP/Server/Network/WebSocket.cs
+++ /dev/null
@@ -1,417 +0,0 @@
-#define WEBSOCKET_DEBUG
-using HISP.Security;
-using HISP.Util;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace HISP.Server.Network
-{
- public class WebSocket : Transport
- {
- private const string WEBSOCKET_SEED = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
-
- private const byte WEBSOCKET_CONTINUE = 0x0;
- private const byte WEBSOCKET_TEXT = 0x1;
- private const byte WEBSOCKET_BINARY = 0x2;
- private const byte WEBSOCKET_CLOSE = 0x8;
-
- private const byte WEBSOCKET_PING = 0x9;
- private const byte WEBSOCKET_PONG = 0xA;
-
- private const byte WEBSOCKET_LENGTH_INT16 = 0x7E;
- private const byte WEBSOCKET_LENGTH_INT64 = 0x7F;
-
- private const int WEBSOCKET_EXPECTED_SIZE_SET = 0;
- private const int WEBSOCKET_EXPECTED_SIZE_UNSET = -1;
-
- private byte[] currentMessage = new byte[0];
- private byte[] currentPacket = new byte[0];
-
- private byte lastOpcode;
- private Int64 expectedLength = -1;
- private bool handshakeDone = false;
- private void webSocketLog(string msg)
- {
-#if WEBSOCKET_DEBUG
- foreach(string str in msg.Replace("\r", "").Split("\n"))
- Logger.InfoPrint("[WEBSOCKET] " + str);
-#endif
- }
-
- private Dictionary parseHttpHeaders(string httpResponse)
- {
- Dictionary httpHeaders = new Dictionary();
- string[] parts = httpResponse.Replace("\r", "").Split("\n");
- foreach (string part in parts)
- {
- if (part.StartsWith("GET")) continue;
-
- if (part.Contains(":"))
- {
- string[] keyValuePairs = part.Split(":");
- if (keyValuePairs.Length >= 2)
- httpHeaders.Add(keyValuePairs[0].Trim().ToLower(), keyValuePairs[1].Trim());
- }
- else
- {
- continue;
- }
- }
-
- return httpHeaders;
- }
-
- private string deriveWebsocketSecKey(string webSocketKey)
- {
- byte[] derivedKey = Authentication.Sha1Digest(Encoding.UTF8.GetBytes(webSocketKey.Trim() + WEBSOCKET_SEED.Trim()));
- return Convert.ToBase64String(derivedKey);
- }
- private byte[] createHandshakeResponse(string secWebsocketKey)
- {
- string msg = String.Join("\r\n", new string[] {
- "HTTP/1.1 101 Switching Protocols",
- "Connection: Upgrade",
- "Upgrade: websocket",
- "Sec-WebSocket-Accept: " + secWebsocketKey,
- "",
- ""
- });
- webSocketLog(msg);
- return Encoding.UTF8.GetBytes(msg);
- }
-
- private byte[] parseHandshake(string handshakeResponse)
- {
- webSocketLog(handshakeResponse);
- Dictionary headers = parseHttpHeaders(handshakeResponse);
-
- string webSocketKey = null;
- headers.TryGetValue("sec-websocket-key", out webSocketKey);
-
- if (webSocketKey != null)
- {
- string secWebsocketKey = deriveWebsocketSecKey(webSocketKey);
- return createHandshakeResponse(secWebsocketKey);
- }
-
- return createHandshakeResponse("");
- }
-
- public static bool IsStartOfHandshake(byte[] data)
- {
- return Helper.ByteArrayStartsWith(data, Encoding.UTF8.GetBytes("GET"));
- }
-
- public static bool IsEndOfHandshake(byte[] data)
- {
- return Helper.ByteArrayEndsWith(data, Encoding.UTF8.GetBytes("\r\n\r\n"));
- }
-
- private bool isExpectedSizeSet()
- {
- return (this.expectedLength > WEBSOCKET_EXPECTED_SIZE_SET);
- }
- private void setUnknownExpectedLength()
- {
- this.expectedLength = WEBSOCKET_EXPECTED_SIZE_UNSET;
- }
-
- private bool isCurrentPacketLengthLessThanExpectedLength()
- {
- if (!isExpectedSizeSet()) return false;
- return (currentPacket.LongCount() < this.expectedLength);
- }
-
- public override void ProcessReceivedPackets(int available, byte[] buffer)
- {
- // add to current packet
- // if current packet is less than size of an expected incoming message
- // then keep receiving until full message received.
- int oldLength = currentPacket.Length;
- Array.Resize(ref currentPacket, oldLength + available);
- Array.ConstrainedCopy(buffer, 0, currentPacket, oldLength, available);
-
- if (isCurrentPacketLengthLessThanExpectedLength())
- return;
- else
- setUnknownExpectedLength();
-
- //byte[] webSocketMsg = currentPacket.ToArray();
-
- if (!handshakeDone)
- {
-
- if (IsStartOfHandshake(currentPacket) && IsEndOfHandshake(currentPacket))
- {
- string httpHandshake = Encoding.UTF8.GetString(currentPacket);
- byte[] handshakeResponse = parseHandshake(httpHandshake);
- base.Send(handshakeResponse);
-
- Array.Resize(ref currentPacket, 0);
- handshakeDone = true;
- }
- }
- else if(currentPacket.Length > 2) // else, begin parsing websocket message
- {
-
- byte[] unmaskKey = new byte[4];
-
- bool finished = (currentPacket[0] & 0b10000000) != 0;
-
- bool rsv1 = (currentPacket[0] & 0b01000000) != 0;
- bool rsv2 = (currentPacket[0] & 0b00100000) != 0;
- bool rsv3 = (currentPacket[0] & 0b00010000) != 0;
-
- byte opcode = Convert.ToByte(currentPacket[0] & 0b00001111);
-
- bool mask = (currentPacket[1] & 0b10000000) != 0;
- Int64 messageLength = Convert.ToInt64(currentPacket[1] & 0b01111111);
-
- int offset = 2;
-
-
- if (messageLength == WEBSOCKET_LENGTH_INT16)
- {
- if (currentPacket.LongLength >= offset + 2)
- {
- byte[] uint16Bytes = new byte[2];
- Array.ConstrainedCopy(currentPacket, offset, uint16Bytes, 0, uint16Bytes.Length);
- uint16Bytes = uint16Bytes.Reverse().ToArray();
- messageLength = BitConverter.ToUInt16(uint16Bytes);
-
- offset += uint16Bytes.Length;
- }
- }
- else if (messageLength == WEBSOCKET_LENGTH_INT64)
- {
- if (currentPacket.LongLength >= offset + 8)
- {
- byte[] int64Bytes = new byte[8];
- Array.ConstrainedCopy(currentPacket, offset, int64Bytes, 0, int64Bytes.Length);
- int64Bytes = int64Bytes.Reverse().ToArray();
- messageLength = BitConverter.ToInt64(int64Bytes);
-
- offset += int64Bytes.Length;
- }
- }
-
- if (mask)
- {
- Array.ConstrainedCopy(currentPacket, offset, unmaskKey, 0, unmaskKey.Length);
- offset += unmaskKey.Length;
- }
-
- // Handle tcp fragmentation
-
- Int64 actualLength = (currentPacket.LongLength - offset);
-
- // check if full message received, if not then set expected length
- // and return, thus entering the loop at the beginning
- if (actualLength < messageLength)
- {
- expectedLength = messageLength + offset; // set expected length and return
- webSocketLog("Partial websocket frame received, expected size: " + messageLength + " got size: " + actualLength);
- return;
- }
-
- // clone current packet array
- byte[] currentPacketCopy = currentPacket.ToArray();
-
- // set current packet array size back to 0
- setUnknownExpectedLength();
- Array.Resize(ref currentPacket, 0);
-
- // dont care about extensions
- if (rsv1 || rsv2 || rsv3) return;
-
- webSocketLog("Finished: " + finished + "\nRsv1: " + rsv1 + "\nRsv2: " + rsv2 + "\nRsv3: " + rsv3 + "\nOpcode: " + opcode + "\nMask: " + mask + "\nMesssageLength: " + messageLength);
-
- if (opcode != WEBSOCKET_CONTINUE)
- lastOpcode = opcode;
-
- // do the thing the websocket frame says to do
- switch (opcode)
- {
- case WEBSOCKET_CONTINUE:
- case WEBSOCKET_BINARY:
- case WEBSOCKET_TEXT:
- case WEBSOCKET_PING:
- oldLength = currentMessage.Length;
- Array.Resize(ref currentMessage, oldLength + Convert.ToInt32(messageLength));
- if (mask)
- {
- for (int i = 0; i < Convert.ToInt32(messageLength); i++)
- currentMessage[oldLength + i] = Convert.ToByte(currentPacketCopy[offset + i] ^ unmaskKey[i % unmaskKey.Length]);
- }
- else
- {
- Array.ConstrainedCopy(currentPacketCopy, offset, currentMessage, oldLength, Convert.ToInt32(messageLength));
- }
- break;
- case WEBSOCKET_CLOSE:
- this.Disconnect();
- return;
- }
-
- // handle end of websocket message.
- if (finished)
- {
-
- if (lastOpcode != WEBSOCKET_PING && currentMessage.LongLength > 0)
- onReceiveCallback(currentMessage);
- else
- Send(currentMessage);
-
- Array.Resize(ref currentMessage, 0);
- Array.Resize(ref currentPacket, 0);
- }
-
-
- // is there another frame after this one?
- // buffer remaining data back to ProcessReceivedPackets
- if(actualLength > messageLength)
- {
- Int64 left = (actualLength - messageLength);
-
- Int64 loc = messageLength + offset;
- int total = buffer.Length;
-
- for (Int64 totalSent = left; totalSent > 0; totalSent -= total)
- {
- if (totalSent <= total)
- total = Convert.ToInt32(totalSent);
-
-
- Array.ConstrainedCopy(currentPacketCopy, Convert.ToInt32(loc), buffer, 0, total);
-
- webSocketLog("Found another frame at the end of this one, processing!");
- ProcessReceivedPackets(total, buffer);
-
- loc += total;
- }
- }
-
- }
-
-
- }
-
- // specify transport name is "WebSocket"
- public override string Name
- {
- get
- {
- return "WebSocket";
- }
- }
-
-
-
- // encode data into websocket frames and send over network
- public override void Send(byte[] data)
- {
- if(this.Disconnected) return;
- if (data == null) return;
-
- // apparently you cant mask responses? chrome gets mad when i do it,
- // so dont set this to true.
- bool mask = false;
-
- int maxLength = this.workBuffer.Length;
- int toSend = maxLength;
-
- byte opcode = ((lastOpcode == WEBSOCKET_PING) ? WEBSOCKET_PONG : WEBSOCKET_BINARY);
-
- Int64 totalData = data.LongLength;
-
- bool finish = false;
-
- // despite its name, this has nothing to do with graphics
- // rather this is for WebSocket frames
- List frameHeader = new List();
-
- for (Int64 remain = totalData; remain > 0; remain -= toSend)
- {
- // Is this the first frame?
- // if so; send opcode binary
- // otherwise, were continuing out last one
- if (remain != totalData)
- opcode = WEBSOCKET_CONTINUE;
-
- if(remain <= maxLength)
- {
- toSend = Convert.ToInt32(remain);
- finish = true;
- }
-
- frameHeader.Add(Convert.ToByte((0x00) | (finish ? 0b10000000 : 0b00000000) | opcode));
-
- // do special length encoding
- byte maskAndLength = Convert.ToByte((0x00) | (mask ? 0b10000000 : 0b00000000));
- byte[] additionalLengthData = new byte[0];
- if (toSend >= WEBSOCKET_LENGTH_INT16)
- {
- if(toSend < UInt16.MaxValue)
- {
- maskAndLength |= WEBSOCKET_LENGTH_INT16;
- additionalLengthData = BitConverter.GetBytes(Convert.ToUInt16(toSend)).Reverse().ToArray();
-
- }
- else if(Convert.ToInt64(toSend) < Int64.MaxValue)
- {
- maskAndLength |= WEBSOCKET_LENGTH_INT64;
- additionalLengthData = BitConverter.GetBytes(Convert.ToInt64(toSend)).Reverse().ToArray();
- }
-
- }
- else
- {
- maskAndLength |= Convert.ToByte(toSend);
- }
-
- // Add to buffer
- frameHeader.Add(maskAndLength);
- Helper.ByteArrayToByteList(additionalLengthData, frameHeader);
-
- // Generate masking key;
- byte[] maskingKey = new byte[4];
-
- if (mask)
- {
- GameServer.RandomNumberGenerator.NextBytes(maskingKey);
- Helper.ByteArrayToByteList(maskingKey, frameHeader);
- }
-
- int headerSize = frameHeader.Count;
-
- byte[] frame = new byte[toSend + headerSize];
- Array.Copy(frameHeader.ToArray(), frame, headerSize);
- frameHeader.Clear();
-
- Int64 totalSent = (totalData - remain);
-
- if (mask) // are we masking this response?
- {
- // Mask data using key.
- for (int i = 0; i < toSend; i++)
- frame[i + headerSize] = Convert.ToByte(data[i + totalSent] ^ maskingKey[i % maskingKey.Length]);
- }
- else if(data.LongLength < Int32.MaxValue) // is out packet *really* bigger than 32 max int??
- {
- Array.ConstrainedCopy(data, Convert.ToInt32(totalSent), frame, headerSize, toSend);
- }
-
- // Finally send complete frame over the network
- base.Send(frame);
-
- if (this.Disconnected) return; // are we still here?
- }
-
-
- }
-
-
- }
-}
diff --git a/HorseIsleServer/LibHISP/Server/Network/XmlSocket.cs b/HorseIsleServer/LibHISP/Server/Network/XmlSocket.cs
deleted file mode 100644
index bb44959..0000000
--- a/HorseIsleServer/LibHISP/Server/Network/XmlSocket.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-using HISP.Security;
-using HISP.Util;
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace HISP.Server.Network
-{
- public class XmlSocket : Transport
- {
- private List currentPacket = new List();
- private const byte XMLSOCKET_PACKET_TERMINATOR = 0x00;
- private static byte[] XMLSOCKET_POLICY_FILE = Encoding.UTF8.GetBytes("");
- public override void ProcessReceivedPackets(int available, byte[] buffer)
- {
- // In XmlSocket Packets are terminates by 0x00 so we have to read until we receive that terminator
-
- for (int i = 0; i < available; i++)
- {
- if (buffer[i] == XMLSOCKET_PACKET_TERMINATOR) // Read until \0...
- {
- byte[] packet = currentPacket.ToArray();
-
- if (Helper.ByteArrayStartsWith(packet, XMLSOCKET_POLICY_FILE))
- this.Send(CrossDomainPolicy.GetPolicyFile());
- else
- onReceiveCallback(packet);
-
-
- currentPacket.Clear();
- continue;
- }
- currentPacket.Add(buffer[i]);
- }
-
- }
-
- public override string Name
- {
- get
- {
- return "XmlSocket";
- }
- }
-
- public override void Send(byte[] data)
- {
- int oldLength = data.Length;
-
- // Resize the array to be 1 extra byte in size;
- Array.Resize(ref data, oldLength + 1);
-
- // add \0 to the end of the buffer
- data[oldLength] = XMLSOCKET_PACKET_TERMINATOR;
-
- // send to the server
- base.Send(data);
- }
-
- }
-}
diff --git a/HorseIsleServer/LibHISP/Server/PacketBuilder.cs b/HorseIsleServer/LibHISP/Server/PacketBuilder.cs
index 5cacf18..5d89314 100755
--- a/HorseIsleServer/LibHISP/Server/PacketBuilder.cs
+++ b/HorseIsleServer/LibHISP/Server/PacketBuilder.cs
@@ -1,232 +1,233 @@
-using System;
-using System.Collections.Generic;
-using System.Globalization;
-using System.Text;
-
-using HISP.Game;
-using HISP.Game.SwfModules;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Text;
+
+using HISP.Game;
+using HISP.Game.SwfModules;
using HISP.Util;
-namespace HISP.Server
-{
- public class PacketBuilder
- {
- public const int PACKET_CLIENT_TERMINATOR_LENGTH = 1;
- public const byte PACKET_CLIENT_TERMINATOR = 0x0A;
- // hi1 packets
- public const byte PACKET_LOGIN = 0x7F;
- public const byte PACKET_CHAT = 0x14;
- public const byte PACKET_MOVE = 0x15;
- public const byte PACKET_CLICK = 0x77;
- public const byte PACKET_SEC_CODE = 0x81;
- public const byte PACKET_WORLD = 0x7A;
- public const byte PACKET_BASE_STATS = 0x7B;
- public const byte PACKET_RANCH = 0x23;
- public const byte PACKET_SWF_MODULE_CUTSCENE = 0x29;
- public const byte PACKET_SWF_MODULE_FORCE = 0x28;
- public const byte PACKET_SWF_MODULE_GENTLE = 0x2A;
- public const byte PACKET_META = 0x1E;
- public const byte PACKET_BIRDMAP = 0x76;
- public const byte PACKET_HORSE = 0x19;
- public const byte PACKET_AREA_DEFS = 0x79;
- public const byte PACKET_ITEM_INTERACTION = 0x1E;
- public const byte PACKET_ANNOUNCEMENT = 0x7E;
- public const byte PACKET_TILE_FLAGS = 0x75;
- public const byte PACKET_PLAYSOUND = 0x23;
- public const byte PACKET_KEEP_ALIVE = 0x7C;
- public const byte PACKET_DYNAMIC_BUTTON = 0x45;
- public const byte PACKET_DYNAMIC_INPUT = 0x46;
- public const byte PACKET_ARENA_SCORE = 0x2D;
- public const byte PACKET_PLAYER = 0x18;
- public const byte PACKET_INVENTORY = 0x17;
- public const byte PACKET_TRANSPORT = 0x29;
- public const byte PACKET_KICK = 0x80;
- public const byte PACKET_LEAVE = 0x7D;
- public const byte PACKET_NPC = 0x28;
- public const byte PACKET_QUIT = 0x7D;
- public const byte PACKET_PLAYERINFO = 0x16;
- public const byte PACKET_INFORMATION = 0x28;
- public const byte PACKET_WISH = 0x2C;
- public const byte PACKET_SWFMODULE = 0x50;
- public const byte PACKET_AUCTION = 0x24;
- public const byte PACKET_PLAYER_INTERACTION = 0x2A;
- public const byte PACKET_SOCIALS = 0x5A;
-
- public const byte SOCIALS_MENU = 0x14;
- public const byte SOCIALS_USE = 0x15;
-
- public const byte PLAYER_INTERACTION_PROFILE = 0x14;
- public const byte PLAYER_INTERACTION_TAG = 0x23;
- public const byte PLAYER_INTERACTION_TRADE = 0x28;
- public const byte PLAYER_INTERACTION_ADD_ITEM = 0x29;
- public const byte PLAYER_INTERACTION_ACCEPT = 0x2A;
- public const byte PLAYER_INTERACTION_TRADE_REJECT = 0x2B;
- public const byte PLAYER_INTERACTION_ADD_BUDDY = 0x1E;
- public const byte PLAYER_INTERACTION_REMOVE_BUDDY = 0x1F;
- public const byte PLAYER_INTERACTION_MUTE = 0x32;
- public const byte PLAYER_INTERACTION_UNMUTE = 0x33;
-
- public const byte AUCTION_BID_100 = 0x29;
- public const byte AUCTION_BID_1K = 0x2A;
- public const byte AUCTION_BID_10K = 0x2B;
- public const byte AUCTION_BID_100K = 0x2C;
- public const byte AUCTION_BID_1M = 0x2D;
- public const byte AUCTION_BID_10M = 0x2E;
- public const byte AUCITON_BID_100M = 0x2F;
-
- public const byte RANCH_BUY = 0x14;
- public const byte RANCH_INFO = 0x16;
- public const byte RANCH_CLICK = 0x17;
- public const byte RANCH_UPGRADE = 0x18;
- public const byte RANCH_SELL = 0x15;
- public const byte RANCH_BUILD = 0x19;
- public const byte RANCH_REMOVE = 0x1A;
- public const byte RANCH_CLICK_NORM = 0x14;
- public const byte RANCH_CLICK_BUILD = 0x15;
-
- public const byte HORSE_LIST = 0x0A;
- public const byte HORSE_LOOK = 0x14;
- public const byte HORSE_FEED = 0x15;
- public const byte HORSE_ENTER_ARENA = 0x2D;
- public const byte HORSE_PET = 0x18;
- public const byte HORSE_PROFILE = 0x2C;
- public const byte HORSE_PROFILE_EDIT = 0x14;
- public const byte HORSE_TRY_CAPTURE = 0x1C;
- public const byte HORSE_RELEASE = 0x19;
- public const byte HORSE_TACK = 0x16;
- public const byte HORSE_DRINK = 0x2B;
- public const byte HORSE_GIVE_FEED = 0x1B;
- public const byte HORSE_TACK_EQUIP = 0x3C;
- public const byte HORSE_TACK_UNEQUIP = 0x3D;
- public const byte HORSE_VET_SERVICE = 0x2A;
- public const byte HORSE_VET_SERVICE_ALL = 0x2F;
- public const byte HORSE_GROOM_SERVICE_ALL = 0x33;
- public const byte HORSE_GROOM_SERVICE = 0x32;
- public const byte HORSE_BARN_SERVICE = 0x37;
- public const byte HORSE_BARN_SERVICE_ALL = 0x38;
- public const byte HORSE_SHOE_IRON = 0x28;
- public const byte HORSE_SHOE_STEEL = 0x29;
- public const byte HORSE_SHOE_ALL = 0x2E;
- public const byte HORSE_TRAIN = 0x1A;
- public const byte HORSE_MOUNT = 0x46;
- public const byte HORSE_DISMOUNT = 0x47;
- public const byte HORSE_ESCAPE = 0x1E;
- public const byte HORSE_CAUGHT = 0x1D;
-
- public const byte SWFMODULE_INVITE = 0x14;
- public const byte SWFMODULE_ACCEPT = 0x15;
- public const byte SWFMODULE_CLOSE = 0x16;
-
- public const byte SWFMODULE_2PLAYER_CLOSED = 0x58;
- public const byte SWFMODULE_OPPONENT = 0x50;
- public const byte SWFMODULE_ARENA = 0x52;
- public const byte SWFMODULE_BRICKPOET = 0x5A;
- public const byte SWFMODULE_DRAWINGROOM = 0x5B;
- public const byte SWFMODULE_DRESSUPROOM = 0x5C;
- public const byte SWFMODULE_BROADCAST = 0x51;
-
- public const byte DRAWINGROOM_GET_DRAWING = 0x14;
- public const byte DRAWINGROOM_SAVE = 0x15;
- public const byte DRAWINGROOM_LOAD = 0x16;
-
- public const byte BRICKPOET_LIST_ALL = 0x14;
- public const byte BRICKPOET_MOVE = 0x55;
-
- public const byte DRESSUPROOM_LIST_ALL = 0x14;
-
- public const byte WISH_MONEY = 0x31;
- public const byte WISH_ITEMS = 0x32;
- public const byte WISH_WORLDPEACE = 0x33;
-
- public const byte SECCODE_QUEST = 0x32;
- public const byte SECCODE_GIVE_ITEM = 0x28;
- public const byte SECCODE_DELETE_ITEM = 0x29;
- public const byte SECCODE_SCORE = 0x3D;
- public const byte SECCODE_WINLOOSE = 0x3C;
- public const byte SECCODE_TIME = 0x3E;
- public const byte SECCODE_MONEY = 0x1E;
- public const byte SECCODE_AWARD = 0x33;
-
- public const byte WINLOOSE_WIN = 0x14;
- public const byte WINLOOSE_LOOSE = 0x15;
-
- public const byte NPC_START_CHAT = 0x14;
- public const byte NPC_CONTINUE_CHAT = 0x15;
-
- public const byte PLAYERINFO_LEAVE = 0x16;
- public const byte PLAYERINFO_UPDATE_OR_CREATE = 0x15;
- public const byte PLAYERINFO_PLAYER_LIST = 0x14;
-
- public const byte PROFILE_WINLOOSE_LIST = 0x50;
- public const byte PROFILE_HIGHSCORES_LIST = 0x51;
- public const byte PROFILE_BESTTIMES_LIST = 0x52;
-
- public const byte VIEW_PROFILE = 0x14;
- public const byte SAVE_PROFILE = 0x15;
-
- public const byte AREA_SEPERATOR = 0x5E;
- public const byte AREA_TOWN = 0x54;
- public const byte AREA_AREA = 0x41;
- public const byte AREA_ISLE = 0x49;
-
- public const byte MOVE_UP = 0x14;
- public const byte MOVE_DOWN = 0x15;
- public const byte MOVE_RIGHT = 0x16;
- public const byte MOVE_LEFT = 0x17;
- public const byte MOVE_ESCAPE = 0x18;
- public const byte MOVE_UPDATE = 0x0A;
-
-
- public const byte CHAT_BOTTOM_LEFT = 0x14;
- public const byte CHAT_BOTTOM_RIGHT = 0x15;
- public const byte CHAT_DM_RIGHT = 0x16;
-
- public const byte ITEM_INFORMATON = 0x14;
- public const byte ITEM_INFORMATON_ID = 0x15;
- public const byte NPC_INFORMATION = 0x16;
-
- public const byte ITEM_DROP = 0x1E;
- public const byte ITEM_PICKUP = 0x14;
- public const byte ITEM_PICKUP_ALL = 0x15;
- public const byte ITEM_BUY = 0x33;
- public const byte ITEM_BUY_AND_CONSUME = 0x34;
- public const byte ITEM_BUY_5 = 0x35;
- public const byte ITEM_BUY_25 = 0x37;
- public const byte ITEM_SELL = 0x3C;
- public const byte ITEM_WRAP = 0x17;
- public const byte ITEM_SELL_ALL = 0x3D;
- public const byte ITEM_VIEW = 0x2A;
- public const byte ITEM_LOOK = 0x4C;
- public const byte ITEM_READ = 0x52;
- public const byte ITEM_RIP = 0x2B;
- public const byte ITEM_OPEN = 0x16;
- public const byte ITEM_WEAR = 0x46;
- public const byte ITEM_REMOVE = 0x47;
- public const byte ITEM_CONSUME = 0x51;
- public const byte ITEM_DRINK = 0x52;
- public const byte ITEM_BINOCULARS = 0x5C;
- public const byte ITEM_THROW = 0x1F;
- public const byte ITEM_MAGNIFYING = 0x5D;
- public const byte ITEM_CRAFT = 0x64;
- public const byte ITEM_USE = 0x5F;
- public const byte ITEM_RAKE = 0x5B;
- public const byte ITEM_SHOVEL = 0x5A;
-
- public const byte LOGIN_INVALID_USER_PASS = 0x15;
- public const byte LOGIN_CUSTOM_MESSAGE = 0x16;
- public const byte LOGIN_SUCCESS = 0x14;
-
- public const byte WEATHER_UPDATE = 0x13;
-
- public const byte DIRECTION_UP = 0;
- public const byte DIRECTION_RIGHT = 1;
- public const byte DIRECTION_DOWN = 2;
- public const byte DIRECTION_LEFT = 3;
- public const byte DIRECTION_TELEPORT = 4;
- public const byte DIRECTION_NONE = 10;
-
- // Helper function for packets that return map data, (eg CreateMovement or CreateBirdMap)
- // To encode tile data and add it to a given packet represented as a List.
+namespace HISP.Server
+{
+ public class PacketBuilder
+ {
+ public const byte PACKET_TERMINATOR = 0x00;
+ public const byte PACKET_CLIENT_TERMINATOR = 0x0A;
+ public const byte PACKET_FLASH_XML_CROSSDOMAIN = 0x3C;
+
+ public const byte PACKET_LOGIN = 0x7F;
+ public const byte PACKET_CHAT = 0x14;
+ public const byte PACKET_MOVE = 0x15;
+ public const byte PACKET_CLICK = 0x77;
+ public const byte PACKET_SEC_CODE = 0x81;
+ public const byte PACKET_WORLD = 0x7A;
+ public const byte PACKET_BASE_STATS = 0x7B;
+ public const byte PACKET_RANCH = 0x23;
+ public const byte PACKET_SWF_CUTSCENE = 0x29;
+ public const byte PACKET_SWF_MODULE_FORCE = 0x28;
+ public const byte PACKET_SWF_MODULE_GENTLE = 0x2A;
+ public const byte PACKET_META = 0x1E;
+ public const byte PACKET_BIRDMAP = 0x76;
+ public const byte PACKET_HORSE = 0x19;
+ public const byte PACKET_AREA_DEFS = 0x79;
+ public const byte PACKET_ITEM_INTERACTION = 0x1E;
+ public const byte PACKET_ANNOUNCEMENT = 0x7E;
+ public const byte PACKET_TILE_FLAGS = 0x75;
+ public const byte PACKET_PLAYSOUND = 0x23;
+ public const byte PACKET_KEEP_ALIVE = 0x7C;
+ public const byte PACKET_DYNAMIC_BUTTON = 0x45;
+ public const byte PACKET_DYNAMIC_INPUT = 0x46;
+ public const byte PACKET_ARENA_SCORE = 0x2D;
+ public const byte PACKET_PLAYER = 0x18;
+ public const byte PACKET_INVENTORY = 0x17;
+ public const byte PACKET_TRANSPORT = 0x29;
+ public const byte PACKET_KICK = 0x80;
+ public const byte PACKET_LEAVE = 0x7D;
+ public const byte PACKET_NPC = 0x28;
+ public const byte PACKET_QUIT = 0x7D;
+ public const byte PACKET_PLAYERINFO = 0x16;
+ public const byte PACKET_INFORMATION = 0x28;
+ public const byte PACKET_WISH = 0x2C;
+ public const byte PACKET_SWFMODULE = 0x50;
+ public const byte PACKET_AUCTION = 0x24;
+ public const byte PACKET_PLAYER_INTERACTION = 0x2A;
+ public const byte PACKET_SOCIALS = 0x5A;
+
+ public const byte SOCIALS_MENU = 0x14;
+ public const byte SOCIALS_USE = 0x15;
+
+ public const byte PLAYER_INTERACTION_PROFILE = 0x14;
+ public const byte PLAYER_INTERACTION_TAG = 0x23;
+ public const byte PLAYER_INTERACTION_TRADE = 0x28;
+ public const byte PLAYER_INTERACTION_ADD_ITEM = 0x29;
+ public const byte PLAYER_INTERACTION_ACCEPT = 0x2A;
+ public const byte PLAYER_INTERACTION_TRADE_REJECT = 0x2B;
+ public const byte PLAYER_INTERACTION_ADD_BUDDY = 0x1E;
+ public const byte PLAYER_INTERACTION_REMOVE_BUDDY = 0x1F;
+ public const byte PLAYER_INTERACTION_MUTE = 0x32;
+ public const byte PLAYER_INTERACTION_UNMUTE = 0x33;
+
+ public const byte AUCTION_BID_100 = 0x29;
+ public const byte AUCTION_BID_1K = 0x2A;
+ public const byte AUCTION_BID_10K = 0x2B;
+ public const byte AUCTION_BID_100K = 0x2C;
+ public const byte AUCTION_BID_1M = 0x2D;
+ public const byte AUCTION_BID_10M = 0x2E;
+ public const byte AUCITON_BID_100M = 0x2F;
+
+ public const byte RANCH_BUY = 0x14;
+ public const byte RANCH_INFO = 0x16;
+ public const byte RANCH_CLICK = 0x17;
+ public const byte RANCH_UPGRADE = 0x18;
+ public const byte RANCH_SELL = 0x15;
+ public const byte RANCH_BUILD = 0x19;
+ public const byte RANCH_REMOVE = 0x1A;
+ public const byte RANCH_CLICK_NORM = 0x14;
+ public const byte RANCH_CLICK_BUILD = 0x15;
+
+ public const byte HORSE_LIST = 0x0A;
+ public const byte HORSE_LOOK = 0x14;
+ public const byte HORSE_FEED = 0x15;
+ public const byte HORSE_ENTER_ARENA = 0x2D;
+ public const byte HORSE_PET = 0x18;
+ public const byte HORSE_PROFILE = 0x2C;
+ public const byte HORSE_PROFILE_EDIT = 0x14;
+ public const byte HORSE_TRY_CAPTURE = 0x1C;
+ public const byte HORSE_RELEASE = 0x19;
+ public const byte HORSE_TACK = 0x16;
+ public const byte HORSE_DRINK = 0x2B;
+ public const byte HORSE_GIVE_FEED = 0x1B;
+ public const byte HORSE_TACK_EQUIP = 0x3C;
+ public const byte HORSE_TACK_UNEQUIP = 0x3D;
+ public const byte HORSE_VET_SERVICE = 0x2A;
+ public const byte HORSE_VET_SERVICE_ALL = 0x2F;
+ public const byte HORSE_GROOM_SERVICE_ALL = 0x33;
+ public const byte HORSE_GROOM_SERVICE = 0x32;
+ public const byte HORSE_BARN_SERVICE = 0x37;
+ public const byte HORSE_BARN_SERVICE_ALL = 0x38;
+ public const byte HORSE_SHOE_IRON = 0x28;
+ public const byte HORSE_SHOE_STEEL = 0x29;
+ public const byte HORSE_SHOE_ALL = 0x2E;
+ public const byte HORSE_TRAIN = 0x1A;
+ public const byte HORSE_MOUNT = 0x46;
+ public const byte HORSE_DISMOUNT = 0x47;
+ public const byte HORSE_ESCAPE = 0x1E;
+ public const byte HORSE_CAUGHT = 0x1D;
+
+ public const byte SWFMODULE_INVITE = 0x14;
+ public const byte SWFMODULE_ACCEPT = 0x15;
+ public const byte SWFMODULE_CLOSE = 0x16;
+
+ public const byte SWFMODULE_2PLAYER_CLOSED = 0x58;
+ public const byte SWFMODULE_2PLAYER = 0x50;
+ public const byte SWFMODULE_ARENA = 0x52;
+ public const byte SWFMODULE_BRICKPOET = 0x5A;
+ public const byte SWFMODULE_DRAWINGROOM = 0x5B;
+ public const byte SWFMODULE_DRESSUPROOM = 0x5C;
+ public const byte SWFMODULE_BANDHALL = 0x51;
+
+ public const byte DRAWINGROOM_GET_DRAWING = 0x14;
+ public const byte DRAWINGROOM_SAVE = 0x15;
+ public const byte DRAWINGROOM_LOAD = 0x16;
+
+ public const byte BRICKPOET_LIST_ALL = 0x14;
+ public const byte BRICKPOET_MOVE = 0x55;
+
+ public const byte DRESSUPROOM_LIST_ALL = 0x14;
+
+ public const byte WISH_MONEY = 0x31;
+ public const byte WISH_ITEMS = 0x32;
+ public const byte WISH_WORLDPEACE = 0x33;
+
+ public const byte SECCODE_QUEST = 0x32;
+ public const byte SECCODE_GIVE_ITEM = 0x28;
+ public const byte SECCODE_DELETE_ITEM = 0x29;
+ public const byte SECCODE_SCORE = 0x3D;
+ public const byte SECCODE_WINLOOSE = 0x3C;
+ public const byte SECCODE_TIME = 0x3E;
+ public const byte SECCODE_MONEY = 0x1E;
+ public const byte SECCODE_AWARD = 0x33;
+
+ public const byte WINLOOSE_WIN = 0x14;
+ public const byte WINLOOSE_LOOSE = 0x15;
+
+ public const byte NPC_START_CHAT = 0x14;
+ public const byte NPC_CONTINUE_CHAT = 0x15;
+
+ public const byte PLAYERINFO_LEAVE = 0x16;
+ public const byte PLAYERINFO_UPDATE_OR_CREATE = 0x15;
+ public const byte PLAYERINFO_PLAYER_LIST = 0x14;
+
+ public const byte PROFILE_WINLOOSE_LIST = 0x50;
+ public const byte PROFILE_HIGHSCORES_LIST = 0x51;
+ public const byte PROFILE_BESTTIMES_LIST = 0x52;
+
+ public const byte VIEW_PROFILE = 0x14;
+ public const byte SAVE_PROFILE = 0x15;
+
+ public const byte AREA_SEPERATOR = 0x5E;
+ public const byte AREA_TOWN = 0x54;
+ public const byte AREA_AREA = 0x41;
+ public const byte AREA_ISLE = 0x49;
+
+ public const byte MOVE_UP = 0x14;
+ public const byte MOVE_DOWN = 0x15;
+ public const byte MOVE_RIGHT = 0x16;
+ public const byte MOVE_LEFT = 0x17;
+ public const byte MOVE_ESCAPE = 0x18;
+ public const byte MOVE_UPDATE = 0x0A;
+
+
+ public const byte CHAT_BOTTOM_LEFT = 0x14;
+ public const byte CHAT_BOTTOM_RIGHT = 0x15;
+ public const byte CHAT_DM_RIGHT = 0x16;
+
+ public const byte ITEM_INFORMATON = 0x14;
+ public const byte ITEM_INFORMATON_ID = 0x15;
+ public const byte NPC_INFORMATION = 0x16;
+
+ public const byte ITEM_DROP = 0x1E;
+ public const byte ITEM_PICKUP = 0x14;
+ public const byte ITEM_PICKUP_ALL = 0x15;
+ public const byte ITEM_BUY = 0x33;
+ public const byte ITEM_BUY_AND_CONSUME = 0x34;
+ public const byte ITEM_BUY_5 = 0x35;
+ public const byte ITEM_BUY_25 = 0x37;
+ public const byte ITEM_SELL = 0x3C;
+ public const byte ITEM_WRAP = 0x17;
+ public const byte ITEM_SELL_ALL = 0x3D;
+ public const byte ITEM_VIEW = 0x2A;
+ public const byte ITEM_LOOK = 0x4C;
+ public const byte ITEM_READ = 0x52;
+ public const byte ITEM_RIP = 0x2B;
+ public const byte ITEM_OPEN = 0x16;
+ public const byte ITEM_WEAR = 0x46;
+ public const byte ITEM_REMOVE = 0x47;
+ public const byte ITEM_CONSUME = 0x51;
+ public const byte ITEM_DRINK = 0x52;
+ public const byte ITEM_BINOCULARS = 0x5C;
+ public const byte ITEM_THROW = 0x1F;
+ public const byte ITEM_MAGNIFYING = 0x5D;
+ public const byte ITEM_CRAFT = 0x64;
+ public const byte ITEM_USE = 0x5F;
+ public const byte ITEM_RAKE = 0x5B;
+ public const byte ITEM_SHOVEL = 0x5A;
+
+ public const byte LOGIN_INVALID_USER_PASS = 0x15;
+ public const byte LOGIN_CUSTOM_MESSAGE = 0x16;
+ public const byte LOGIN_SUCCESS = 0x14;
+
+ public const byte WEATHER_UPDATE = 0x13;
+
+ public const byte DIRECTION_UP = 0;
+ public const byte DIRECTION_RIGHT = 1;
+ public const byte DIRECTION_DOWN = 2;
+ public const byte DIRECTION_LEFT = 3;
+ public const byte DIRECTION_TELEPORT = 4;
+ public const byte DIRECTION_NONE = 10;
+
+ // Helper function for packets that return map data, (eg CreateMovementPacket or CreateBirdMap)
+ // To encode tile data and add it to a given packet represented as a List.
private static void encodeTileDataAndAddToPacket(List packet, int tileId, int otileId)
{
if (tileId >= 190)
@@ -242,658 +243,677 @@ namespace HISP.Server
otileId -= 100;
}
packet.Add((byte)otileId);
- }
-
- // Creates a byte array of a packet to inform the client that Player 2 in the current 2Player game
- // has actually left / quit the game.
- public static byte[] Create2PlayerClose()
- {
- byte[] packet = new byte[2];
- packet[0] = PACKET_SWFMODULE;
- packet[1] = SWFMODULE_2PLAYER_CLOSED;
-
- return packet;
- }
-
- // Creates a byte array of a packet to inform the client that a peice in a dressup room
- // was moved to another location.
- public static byte[] CreateDressupRoomPeiceMove(int peiceId, double x, double y, bool active)
- {
- string peiceMoveStr = "";
- peiceMoveStr += peiceId.ToString() + "|";
- if (active)
- {
- peiceMoveStr += x.ToString() + "|";
- peiceMoveStr += y.ToString() + "|";
- }
- else
- {
- peiceMoveStr += "D|D|";
- }
- peiceMoveStr += "^";
+ }
+
+ // Creates a byte array of a packet to inform the client that Player 2 in the current 2Player game
+ // has actually left / quit the game.
+ public static byte[] Create2PlayerClose()
+ {
+ byte[] packet = new byte[3];
+ packet[0] = PACKET_SWFMODULE;
+ packet[1] = SWFMODULE_2PLAYER_CLOSED;
+ packet[2] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+
+ // Creates a byte array of a packet to inform the client that a peice in a dressup room
+ // was moved to another location.
+ public static byte[] CreateDressupRoomPeiceMove(int peiceId, double x, double y, bool active)
+ {
+ string peiceMoveStr = "";
+ peiceMoveStr += peiceId.ToString() + "|";
+ if (active)
+ {
+ peiceMoveStr += x.ToString() + "|";
+ peiceMoveStr += y.ToString() + "|";
+ }
+ else
+ {
+ peiceMoveStr += "D|D|";
+ }
+ peiceMoveStr += "^";
byte[] peiceMoveBytes = Encoding.UTF8.GetBytes(peiceMoveStr);
- byte[] packet = new byte[1 + peiceMoveBytes.Length];
+ byte[] packet = new byte[(1 * 2) + peiceMoveBytes.Length];
+
+ packet[0] = PACKET_SWFMODULE;
+ Array.Copy(peiceMoveBytes, 0, packet, 1, peiceMoveBytes.Length);
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet to inform the client of all the peices
+ // in a given dressup room.
+ public static byte[] CreateDressupRoomPeiceLoad(Dressup.DressupPeice[] dressupPeices)
+ {
+ string peiceLoadStr = "";
+ foreach(Dressup.DressupPeice peice in dressupPeices)
+ {
+ if (!peice.Active)
+ continue;
+
+ peiceLoadStr += peice.PeiceId.ToString() + "|";
+ peiceLoadStr += peice.X.ToString() + "|";
+ peiceLoadStr += peice.Y.ToString() + "|";
+ peiceLoadStr += "^";
+ }
+
+ byte[] peiceLoadBytes = Encoding.UTF8.GetBytes(peiceLoadStr);
+ byte[] packet = new byte[(1 * 2) + peiceLoadBytes.Length];
- packet[0] = PACKET_SWFMODULE;
- Array.Copy(peiceMoveBytes, 0, packet, 1, peiceMoveBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a packet to inform the client of all the peices
- // in a given dressup room.
- public static byte[] CreateDressupRoomPeiceLoad(Dressup.DressupPeice[] dressupPeices)
- {
- string peiceLoadStr = "";
- foreach(Dressup.DressupPeice peice in dressupPeices)
- {
- if (!peice.Active)
- continue;
+ packet[0] = PACKET_SWFMODULE;
+ Array.Copy(peiceLoadBytes, 0, packet, 1, peiceLoadBytes.Length);
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
- peiceLoadStr += peice.PeiceId.ToString() + "|";
- peiceLoadStr += peice.X.ToString() + "|";
- peiceLoadStr += peice.Y.ToString() + "|";
- peiceLoadStr += "^";
- }
-
- byte[] peiceLoadBytes = Encoding.UTF8.GetBytes(peiceLoadStr);
- byte[] packet = new byte[1 + peiceLoadBytes.Length];
-
- packet[0] = PACKET_SWFMODULE;
- Array.Copy(peiceLoadBytes, 0, packet, 1, peiceLoadBytes.Length);
-
- return packet;
- }
- // Creates a byte array that contains the contents of a request byte array
- // as the response, it basically just forwards it onwards
- // this is used for *most* SwfModule
- public static byte[] CreateForwardedSwfModule(byte[] request)
- {
- byte[] packet = new byte[1 + (request.Length-3)];
- packet[0] = PACKET_SWFMODULE;
- Array.Copy(request, 2, packet, 1, (request.Length-3));
- return packet;
- }
- // Creates a byte array that contains "Bird Map" data
+ return packet;
+ }
+ // Creates a byte array that contains the contents of a request byte array
+ // as the response, it basically just forwards it onwards
+ // this is used for *most* SwfModule
+ public static byte[] CreateForwardedSwfRequest(byte[] request)
+ {
+ byte[] packet = new byte[(1 * 2) + request.Length];
+ packet[0] = PACKET_SWFMODULE;
+ Array.Copy(request, 0, packet, 1, request.Length);
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+ return packet;
+ }
+ // Creates a byte array that contains "Bird Map" data
// From a given X/Y Position, this is primarily used to handle
- // using the telescope item in game
- public static byte[] CreateBirdMap(int X, int Y)
- {
- // The size is always fixed in this case, but i still have to use a List because
- // encodeTileDataAndAddToPacket expects packet as a List.
- List packet = new List();
-
- // Calculate top left corner of BirdMap viewport
- // from given X/Y position.
- int startX = X - 24;
- int startY = Y - 15;
-
- packet.Add(PACKET_BIRDMAP);
-
- for (int rely = 0; rely <= 30; rely++)
- {
- for (int relx = 0; relx <= 48; relx++)
- {
- int tileId = Map.GetTileId(startX + relx, startY + rely, false);
- int otileId = Map.GetTileId(startX + relx, startY + rely, true);
- encodeTileDataAndAddToPacket(packet, tileId, otileId);
- }
- }
-
- return packet.ToArray();
- }
- // Creates a byte array for a packet to inform the client that the image in a drawing room has changed.
- public static byte[] CreateDrawingUpdate(string Drawing)
- {
- byte[] drawingBytes = Encoding.UTF8.GetBytes(Drawing);
- byte[] packet = new byte[1 + drawingBytes.Length];
-
- packet[0] = PACKET_SWFMODULE;
- Array.Copy(drawingBytes, 0, packet, 1, drawingBytes.Length);
-
- return packet;
- }
- // Creates a byte array for a packet to inform the client that a poetry peice in a brick poet room has moved.
- public static byte[] CreateBrickPoetMove(Brickpoet.PoetryPeice peice)
- {
- string peiceUpdateStr = "|";
- peiceUpdateStr += peice.Id + "|";
- peiceUpdateStr += peice.X + "|";
- peiceUpdateStr += peice.Y + "|";
- peiceUpdateStr += "^";
-
- byte[] infoBytes = Encoding.UTF8.GetBytes(peiceUpdateStr);
- byte[] packet = new byte[(1 * 2) + infoBytes.Length];
-
- packet[0] = PACKET_SWFMODULE;
- packet[1] = BRICKPOET_MOVE;
-
- Array.Copy(infoBytes, 0, packet, 2, infoBytes.Length);
-
-
- return packet;
- }
- // Creates a byte array for a packet to inform the client of all all Poetry Peices in a Brick Poet room
- public static byte[] CreateBrickPoetList(Brickpoet.PoetryPeice[] room)
- {
- string peicesStr = "";
- foreach(Brickpoet.PoetryPeice peice in room)
- {
- peicesStr += "A";
- peicesStr += "|";
- peicesStr += peice.Id;
- peicesStr += "|";
- peicesStr += peice.Word.ToUpper();
- peicesStr += "|";
- peicesStr += peice.X;
- peicesStr += "|";
- peicesStr += peice.Y;
- peicesStr += "|";
- peicesStr += "^";
- }
- byte[] peicesBytes = Encoding.UTF8.GetBytes(peicesStr);
- byte[] packet = new byte[1 + peicesBytes.Length];
-
- packet[0] = PACKET_SWFMODULE;
-
- Array.Copy(peicesBytes, 0, packet, 1, peicesBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a packet requesting the client to play a sound effect.
- public static byte[] CreatePlaySound(string sound)
- {
- byte[] soundBytes = Encoding.UTF8.GetBytes(sound);
- byte[] packet = new byte[1 + soundBytes.Length];
-
- packet[0] = PACKET_PLAYSOUND;
-
- Array.Copy(soundBytes, 0, packet, 1, soundBytes.Length);
-
-
- return packet;
- }
- // Creates a byte array of a packet informing the client that a given user has left the game
- // So they can be removed from the chat list
- public static byte[] CreatePlayerLeave(string username)
- {
- byte[] userBytes = Encoding.UTF8.GetBytes(username);
- byte[] packet = new byte[(1 * 2) + userBytes.Length];
-
- packet[0] = PACKET_PLAYERINFO;
- packet[1] = PLAYERINFO_LEAVE;
-
- Array.Copy(userBytes, 0, packet, 2, userBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a packet informing the client that a given player has changed position,
- // changed direction, or changed character sprites
- public static byte[] CreatePlayerInfoUpdateOrCreate(int x, int y, int facing, int charId, string username)
- {
- byte[] userBytes = Encoding.UTF8.GetBytes(username);
- byte[] packet = new byte[(1 * 9) + userBytes.Length];
-
- packet[0] = PACKET_PLAYERINFO;
- packet[1] = PLAYERINFO_UPDATE_OR_CREATE;
-
- packet[2] = (byte)(((x - 4) / 64) + 20);
- packet[3] = (byte)(((x - 4) % 64) + 20);
-
- packet[4] = (byte)(((y - 1) / 64) + 20);
- packet[5] = (byte)(((y - 1) % 64) + 20);
-
- packet[6] = (byte)(facing + 20);
-
- packet[7] = (byte)((charId / 64) + 20);
- packet[8] = (byte)((charId % 64) + 20);
-
- Array.Copy(userBytes, 0, packet, 9, userBytes.Length);
-
-
- return packet;
- }
- // Creates a byte array of a packet to inform the client
- // if a given Login Attempt was successful or not
- public static byte[] CreateLogin(bool Success, string ErrorMessage="")
- {
- byte[] loginFailMessage = Encoding.UTF8.GetBytes(ErrorMessage);
- byte[] packet = new byte[(1 * 2) + loginFailMessage.Length];
-
- packet[0] = PACKET_LOGIN;
- if (ErrorMessage != "")
- packet[1] = LOGIN_CUSTOM_MESSAGE;
- else if (Success)
- packet[1] = LOGIN_SUCCESS;
- else
- packet[1] = LOGIN_INVALID_USER_PASS;
-
- Array.Copy(loginFailMessage, 0, packet, 2, loginFailMessage.Length);
-
- return packet;
- }
- // Creates a byte array of a packet to inform the client of
- // the users current profile page, or "about me"
- // This is for the the "Profile" button
- public static byte[] CreateProfilePage(string userProfile)
- {
- byte[] profileBytes = Encoding.UTF8.GetBytes(userProfile);
- byte[] packet = new byte[1 + profileBytes.Length];
-
- packet[0] = PACKET_PLAYER;
- Array.Copy(profileBytes, 0, packet, 1, profileBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a packet to inform the client of the players
- // new X/Y position, there character id, facing direction, and Tile Data for their position in the map.
- public static byte[] CreateMovement(int x, int y, int charId, int facing, int direction, bool walk)
+ // using the telescope item in game
+ public static byte[] CreateBirdMap(int X, int Y)
+ {
+ // The size is always fixed in this case, but i still have to use a List because
+ // encodeTileDataAndAddToPacket expects packet as a List.
+ List packet = new List();
+
+ // Calculate top left corner of BirdMap viewport
+ // from given X/Y position.
+ int startX = X - 24;
+ int startY = Y - 15;
+
+ packet.Add(PACKET_BIRDMAP);
+
+ for (int rely = 0; rely <= 30; rely++)
+ {
+ for (int relx = 0; relx <= 48; relx++)
+ {
+ int tileId = Map.GetTileId(startX + relx, startY + rely, false);
+ int otileId = Map.GetTileId(startX + relx, startY + rely, true);
+ encodeTileDataAndAddToPacket(packet, tileId, otileId);
+ }
+ }
+
+ packet.Add(PACKET_TERMINATOR);
+
+ return packet.ToArray();
+ }
+ // Creates a byte array for a packet to inform the client that the image in a drawing room has changed.
+ public static byte[] CreateDrawingUpdatePacket(string Drawing)
+ {
+ byte[] drawingBytes = Encoding.UTF8.GetBytes(Drawing);
+ byte[] packet = new byte[(1 * 2) + drawingBytes.Length];
+
+ packet[0] = PACKET_SWFMODULE;
+ Array.Copy(drawingBytes, 0, packet, 1, drawingBytes.Length);
+ packet[packet.Length-1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array for a packet to inform the client that a poetry peice in a brick poet room has moved.
+ public static byte[] CreateBrickPoetMovePacket(Brickpoet.PoetryPeice peice)
+ {
+ string peiceUpdateStr = "|";
+ peiceUpdateStr += peice.Id + "|";
+ peiceUpdateStr += peice.X + "|";
+ peiceUpdateStr += peice.Y + "|";
+ peiceUpdateStr += "^";
+
+ byte[] infoBytes = Encoding.UTF8.GetBytes(peiceUpdateStr);
+ byte[] packet = new byte[(1 * 3) + infoBytes.Length];
+
+ packet[0] = PACKET_SWFMODULE;
+ packet[1] = BRICKPOET_MOVE;
+
+ Array.Copy(infoBytes, 0, packet, 2, infoBytes.Length);
+
+ packet[packet.Length-1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array for a packet to inform the client of all all Poetry Peices in a Brick Poet room
+ public static byte[] CreateBrickPoetListPacket(Brickpoet.PoetryPeice[] room)
+ {
+ string peicesStr = "";
+ foreach(Brickpoet.PoetryPeice peice in room)
+ {
+ peicesStr += "A";
+ peicesStr += "|";
+ peicesStr += peice.Id;
+ peicesStr += "|";
+ peicesStr += peice.Word.ToUpper();
+ peicesStr += "|";
+ peicesStr += peice.X;
+ peicesStr += "|";
+ peicesStr += peice.Y;
+ peicesStr += "|";
+ peicesStr += "^";
+ }
+ byte[] peicesBytes = Encoding.UTF8.GetBytes(peicesStr);
+ byte[] packet = new byte[(1 * 2) + peicesBytes.Length];
+
+ packet[0] = PACKET_SWFMODULE;
+
+ Array.Copy(peicesBytes, 0, packet, 1, peicesBytes.Length);
+
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet requesting the client to play a sound effect.
+ public static byte[] CreatePlaysoundPacket(string sound)
+ {
+ byte[] soundBytes = Encoding.UTF8.GetBytes(sound);
+ byte[] packet = new byte[(1 * 2) + soundBytes.Length];
+
+ packet[0] = PACKET_PLAYSOUND;
+
+ Array.Copy(soundBytes, 0, packet, 1, soundBytes.Length);
+
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet informing the client that a given user has left the game
+ // So they can be removed from the chat list
+ public static byte[] CreatePlayerLeavePacket(string username)
+ {
+ byte[] userBytes = Encoding.UTF8.GetBytes(username);
+ byte[] packet = new byte[(1 * 3) + userBytes.Length];
+
+ packet[0] = PACKET_PLAYERINFO;
+ packet[1] = PLAYERINFO_LEAVE;
+
+ Array.Copy(userBytes, 0, packet, 2, userBytes.Length);
+
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet informing the client that a given player has changed position,
+ // changed direction, or changed character sprites
+ public static byte[] CreatePlayerInfoUpdateOrCreate(int x, int y, int facing, int charId, string username)
+ {
+ byte[] userBytes = Encoding.UTF8.GetBytes(username);
+ byte[] packet = new byte[(1 * 10) + userBytes.Length];
+
+ packet[0] = PACKET_PLAYERINFO;
+ packet[1] = PLAYERINFO_UPDATE_OR_CREATE;
+
+ packet[2] = (byte)(((x - 4) / 64) + 20);
+ packet[3] = (byte)(((x - 4) % 64) + 20);
+
+ packet[4] = (byte)(((y - 1) / 64) + 20);
+ packet[5] = (byte)(((y - 1) % 64) + 20);
+
+ packet[6] = (byte)(facing + 20);
+
+ packet[7] = (byte)((charId / 64) + 20);
+ packet[8] = (byte)((charId % 64) + 20);
+
+ Array.Copy(userBytes, 0, packet, 9, userBytes.Length);
+
+ packet[packet.Length-1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet to inform the client
+ // if a given Login Attempt was successful or not
+ public static byte[] CreateLoginPacket(bool Success, string ErrorMessage="")
+ {
+ byte[] loginFailMessage = Encoding.UTF8.GetBytes(ErrorMessage);
+ byte[] packet = new byte[(1 * 3) + loginFailMessage.Length];
+
+ packet[0] = PACKET_LOGIN;
+ if (ErrorMessage != "")
+ packet[1] = LOGIN_CUSTOM_MESSAGE;
+ else if (Success)
+ packet[1] = LOGIN_SUCCESS;
+ else
+ packet[1] = LOGIN_INVALID_USER_PASS;
+
+ Array.Copy(loginFailMessage, 0, packet, 2, loginFailMessage.Length);
+
+ packet[packet.Length-1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet to inform the client of
+ // the users current profile page, or "about me"
+ // This is for the the "Profile" button
+ public static byte[] CreateProfilePage(string userProfile)
+ {
+ byte[] profileBytes = Encoding.UTF8.GetBytes(userProfile);
+ byte[] packet = new byte[(1 * 2) + profileBytes.Length];
+
+ packet[0] = PACKET_PLAYER;
+ Array.Copy(profileBytes, 0, packet, 1, profileBytes.Length);
+ packet[packet.Length-1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet to inform the client of the players
+ // new X/Y position, there character id, facing direction, and Tile Data for their position in the map.
+ public static byte[] CreateMovementPacket(int x, int y, int charId, int facing, int direction, bool walk)
{
/* Packet HEADER */
// Packet size varries too much and so using a dynamically sized list of bytes instead of a byte[]
- List packet = new List();
-
- packet.Add(PACKET_MOVE); // 0x0
-
- packet.Add((byte)(((x-4) / 64) + 20)); //0x1
- packet.Add((byte)(((x-4) % 64) + 20)); //0x2
-
- packet.Add((byte)(((y-1) / 64) + 20)); //0x3
- packet.Add((byte)(((y-1) % 64) + 20)); //0x4
-
- packet.Add((byte)(facing + 20)); //0x5
-
- packet.Add((byte)((charId / 64) + 20)); //0x6
- packet.Add((byte)((charId % 64) + 20)); //0x7
- packet.Add((byte)(direction + 20)); //0x8
- packet.Add((byte)(Convert.ToInt32(walk) + 20)); //0x9
-
- /* Packet PAYLOAD */
- bool moveTwo = false;
- if(direction >= 20) // is the player riding a horse?
- {
- direction -= 20;
- moveTwo = true;
- }
-
-
- // Calculate start of the client's viewport start offset from top-left origin
- int startY = y - 4;
- int startX = x - 6;
- int endX = startX + 12;
- int endY = startY + 9;
-
- // This giant if case logic essentially
- // Pulls the missing tile data portion from map file
- // And encodes it into packet data
- if (direction == DIRECTION_UP)
- {
- int totalY = 0;
- if (moveTwo)
- {
- startY++;
- totalY = 1;
- }
-
- for (int curY = startY; curY >= startY - totalY; curY--)
- {
- for (int curX = startX; curX <= endX; curX++)
- {
- int tileId = Map.GetTileId(curX, curY, false);
- int otileId = Map.GetTileId(curX, curY, true);
- encodeTileDataAndAddToPacket(packet, tileId, otileId);
- }
- }
- }
- else if (direction == DIRECTION_LEFT)
- {
- int totalX = 0;
- if (moveTwo)
- {
- startX++;
- totalX = 1;
- }
-
- for (int curX = startX; curX >= startX - totalX; curX--)
- {
- for (int curY = startY; curY <= endY; curY++)
- {
- int tileId = Map.GetTileId(curX, curY, false);
- int otileId = Map.GetTileId(curX, curY, true);
- encodeTileDataAndAddToPacket(packet, tileId, otileId);
- }
- }
- }
- else if (direction == DIRECTION_RIGHT)
- {
- int totalX = 0;
- if (moveTwo)
- {
- endX--;
- totalX = 1;
- }
-
- for (int curX = endX; curX <= endX + totalX; curX++)
- {
-
- for (int curY = startY; curY <= endY; curY++)
- {
- int tileId = Map.GetTileId(curX, curY, false);
- int otileId = Map.GetTileId(curX, curY, true);
- encodeTileDataAndAddToPacket(packet, tileId, otileId);
-
- }
- }
- }
- else if (direction == DIRECTION_DOWN)
- {
- int totalY = 0;
- if (moveTwo)
- {
- endY--;
- totalY = 1;
- }
-
- for (int curY = endY; curY <= endY + totalY; curY++)
- {
-
- for (int curX = startX; curX <= endX; curX++)
- {
- int tileId = Map.GetTileId(curX, curY, false);
- int otileId = Map.GetTileId(curX, curY, true);
- encodeTileDataAndAddToPacket(packet, tileId, otileId);
- }
- }
-
- }
- else if (direction == DIRECTION_TELEPORT)
- {
- for(int rely = 0; rely <= 9; rely++)
- {
- for (int relx = 0; relx <= 12; relx++)
- {
- int tileId = Map.GetTileId(startX + relx, startY + rely, false);
- int otileId = Map.GetTileId(startX + relx, startY + rely, true);
- encodeTileDataAndAddToPacket(packet, tileId, otileId);
- }
- }
-
- }
-
- return packet.ToArray();
- }
- // Creates a byte array of a packet containing Information about a specific tile
- // used when you click on a tile in the client, it gives you some extra info about it.
- public static byte[] CreateTileClickInfo(string text)
- {
- byte[] strBytes = Encoding.UTF8.GetBytes(text);
- byte[] packet = new byte[1 + strBytes.Length];
- packet[0] = PACKET_CLICK;
- Array.Copy(strBytes, 0, packet, 1, strBytes.Length);
- return packet;
- }
-
- // Creates a byte array of a packet containing information to be displayed in the "Meta" window
- // (Thats the one on the top-right corner of the screent hat contains buttons and other widgets)
- public static byte[] CreateMeta(string formattedText)
- {
- byte[] formattedBytes = Encoding.UTF8.GetBytes(formattedText);
- byte[] packet = new byte[1 + formattedBytes.Length];
-
- packet[0] = PACKET_META;
- Array.Copy(formattedBytes, 0, packet, 1, formattedBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a packet informing the client to display a chat message
- // And which of the two chat windows to include it in.
- public static byte[] CreateChat(string formattedText, byte chatWindow)
- {
- byte[] formattedBytes = Encoding.UTF8.GetBytes(formattedText);
- byte[] packet = new byte[(1 * 2) + formattedBytes.Length];
- packet[0] = PACKET_CHAT;
- packet[1] = chatWindow;
- Array.Copy(formattedBytes, 0, packet, 2, formattedBytes.Length);
- return packet;
- }
-
- // Creates a byte array of a packet informing the client to change the current Weather Effect.
- public static byte[] CreateWeatherUpdate(string newWeather)
- {
- byte[] weatherBytes = Encoding.UTF8.GetBytes(newWeather);
- byte[] packet = new byte[(1 * 2) + weatherBytes.Length];
- packet[0] = PACKET_WORLD;
- packet[1] = WEATHER_UPDATE;
+ List packet = new List();
+
+ packet.Add(PACKET_MOVE); // 0x0
+
+ packet.Add((byte)(((x-4) / 64) + 20)); //0x1
+ packet.Add((byte)(((x-4) % 64) + 20)); //0x2
+
+ packet.Add((byte)(((y-1) / 64) + 20)); //0x3
+ packet.Add((byte)(((y-1) % 64) + 20)); //0x4
+
+ packet.Add((byte)(facing + 20)); //0x5
+
+ packet.Add((byte)((charId / 64) + 20)); //0x6
+ packet.Add((byte)((charId % 64) + 20)); //0x7
+ packet.Add((byte)(direction + 20)); //0x8
+ packet.Add((byte)(Convert.ToInt32(walk) + 20)); //0x9
+
+ /* Packet PAYLOAD */
+ bool moveTwo = false;
+ if(direction >= 20) // is the player riding a horse?
+ {
+ direction -= 20;
+ moveTwo = true;
+ }
+
+
+ // Calculate start of the client's viewport start offset from top-left origin
+ int startY = y - 4;
+ int startX = x - 6;
+ int endX = startX + 12;
+ int endY = startY + 9;
+
+ // This giant if case logic essentially
+ // Pulls the missing tile data portion from map file
+ // And encodes it into packet data
+ if (direction == DIRECTION_UP)
+ {
+ int totalY = 0;
+ if (moveTwo)
+ {
+ startY++;
+ totalY = 1;
+ }
+
+ for (int curY = startY; curY >= startY - totalY; curY--)
+ {
+ for (int curX = startX; curX <= endX; curX++)
+ {
+ int tileId = Map.GetTileId(curX, curY, false);
+ int otileId = Map.GetTileId(curX, curY, true);
+ encodeTileDataAndAddToPacket(packet, tileId, otileId);
+ }
+ }
+ }
+ else if (direction == DIRECTION_LEFT)
+ {
+ int totalX = 0;
+ if (moveTwo)
+ {
+ startX++;
+ totalX = 1;
+ }
+
+ for (int curX = startX; curX >= startX - totalX; curX--)
+ {
+ for (int curY = startY; curY <= endY; curY++)
+ {
+ int tileId = Map.GetTileId(curX, curY, false);
+ int otileId = Map.GetTileId(curX, curY, true);
+ encodeTileDataAndAddToPacket(packet, tileId, otileId);
+ }
+ }
+ }
+ else if (direction == DIRECTION_RIGHT)
+ {
+ int totalX = 0;
+ if (moveTwo)
+ {
+ endX--;
+ totalX = 1;
+ }
+
+ for (int curX = endX; curX <= endX + totalX; curX++)
+ {
+
+ for (int curY = startY; curY <= endY; curY++)
+ {
+ int tileId = Map.GetTileId(curX, curY, false);
+ int otileId = Map.GetTileId(curX, curY, true);
+ encodeTileDataAndAddToPacket(packet, tileId, otileId);
+
+ }
+ }
+ }
+ else if (direction == DIRECTION_DOWN)
+ {
+ int totalY = 0;
+ if (moveTwo)
+ {
+ endY--;
+ totalY = 1;
+ }
+
+ for (int curY = endY; curY <= endY + totalY; curY++)
+ {
+
+ for (int curX = startX; curX <= endX; curX++)
+ {
+ int tileId = Map.GetTileId(curX, curY, false);
+ int otileId = Map.GetTileId(curX, curY, true);
+ encodeTileDataAndAddToPacket(packet, tileId, otileId);
+ }
+ }
+
+ }
+ else if (direction == DIRECTION_TELEPORT)
+ {
+ for(int rely = 0; rely <= 9; rely++)
+ {
+ for (int relx = 0; relx <= 12; relx++)
+ {
+ int tileId = Map.GetTileId(startX + relx, startY + rely, false);
+ int otileId = Map.GetTileId(startX + relx, startY + rely, true);
+ encodeTileDataAndAddToPacket(packet, tileId, otileId);
+ }
+ }
+
+ }
+ packet.Add(PACKET_TERMINATOR);
+
+ return packet.ToArray();
+ }
+ // Creates a byte array of a packet containing Information about a specific tile
+ // used when you click on a tile in the client, it gives you some extra info about it.
+ public static byte[] CreateTileClickInfo(string text)
+ {
+ byte[] strBytes = Encoding.UTF8.GetBytes(text);
+ byte[] packet = new byte[(1 * 2) + strBytes.Length];
+ packet[0] = PACKET_CLICK;
+ Array.Copy(strBytes, 0, packet, 1, strBytes.Length);
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+ return packet;
+ }
+
+ // Creates a byte array of a packet containing information to be displayed in the "Meta" window
+ // (Thats the one on the top-right corner of the screent hat contains buttons and other widgets)
+ public static byte[] CreateMeta(string formattedText)
+ {
+ byte[] formattedBytes = Encoding.UTF8.GetBytes(formattedText);
+ byte[] packet = new byte[(1 * 2) + formattedBytes.Length];
+
+ packet[0] = PACKET_META;
+ Array.Copy(formattedBytes, 0, packet, 1, formattedBytes.Length);
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet informing the client to display a chat message
+ // And which of the two chat windows to include it in.
+ public static byte[] CreateChat(string formattedText, byte chatWindow)
+ {
+ byte[] formattedBytes = Encoding.UTF8.GetBytes(formattedText);
+ byte[] packet = new byte[(1 * 3) + formattedBytes.Length];
+ packet[0] = PACKET_CHAT;
+ packet[1] = chatWindow;
+ Array.Copy(formattedBytes, 0, packet, 2, formattedBytes.Length);
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+ return packet;
+ }
+
+ // Creates a byte array of a packet informing the client to change the current Weather Effect.
+ public static byte[] CreateWeatherUpdatePacket(string newWeather)
+ {
+ byte[] weatherBytes = Encoding.UTF8.GetBytes(newWeather);
+ byte[] packet = new byte[(1 * 3) + weatherBytes.Length];
+ packet[0] = PACKET_WORLD;
+ packet[1] = WEATHER_UPDATE;
Array.Copy(weatherBytes, 0, packet, 2, weatherBytes.Length);
- return packet;
- }
- // Creates a byte array of a packet informing the client of the current game time, and weather effect.
- public static byte[] CreateTimeAndWeatherUpdate(int gameTime, int gameDay, int gameYear, string weather)
- {
- byte[] weatherBytes = Encoding.UTF8.GetBytes(weather);
-
- byte[] packet = new byte[(1 * 7) + weatherBytes.Length];
-
- packet[0] = PACKET_WORLD;
- // Encode current time
- packet[1] = (byte)((gameTime / 64) + 20);
- packet[2] = (byte)((gameTime % 64) + 20);
- // Encode current day
- packet[3] = (byte)((gameDay / 64) + 20);
- packet[4] = (byte)((gameDay % 64) + 20);
- // Encode current year
- packet[5] = (byte)((gameYear / 64) + 20);
- packet[6] = (byte)((gameYear % 64) + 20);
-
- // Copy weather information to packet
- Array.Copy(weatherBytes, 0, packet, 7, weatherBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a "keep alive" packet, to check if the client is still connected
- // and to inform the client the server is still here too and has not crashed / disconnected the client.
- public static byte[] CreateKeepAlive()
- {
- byte[] packet = new byte[1];
- packet[0] = PACKET_KEEP_ALIVE;
- return packet;
- }
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+ return packet;
+ }
+ // Creates a byte array of a packet informing the client of the current game time, and weather effect.
+ public static byte[] CreateTimeAndWeatherUpdate(int gameTime, int gameDay, int gameYear, string weather)
+ {
+ byte[] weatherBytes = Encoding.UTF8.GetBytes(weather);
+
+ byte[] packet = new byte[(1 * 7) + weatherBytes.Length];
+
+ packet[0] = PACKET_WORLD;
+ // Encode current time
+ packet[1] = (byte)((gameTime / 64) + 20);
+ packet[2] = (byte)((gameTime % 64) + 20);
+ // Encode current day
+ packet[3] = (byte)((gameDay / 64) + 20);
+ packet[4] = (byte)((gameDay % 64) + 20);
+ // Encode current year
+ packet[5] = (byte)((gameYear / 64) + 20);
+ packet[6] = (byte)((gameYear % 64) + 20);
+
+ // Copy weather information to packet
+ Array.Copy(weatherBytes, 0, packet, 7, weatherBytes.Length);
+
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a "keep alive" packet, to check if the client is still connected
+ // and to inform the client the server is still here too and has not crashed / disconnected the client.
+ public static byte[] CreateKeepAlive()
+ {
+ byte[] packet = new byte[2];
+ packet[0] = PACKET_KEEP_ALIVE;
+ packet[1] = PACKET_TERMINATOR;
+ return packet;
+ }
// Creates a byte array of a packet to inform the client of all "Places" that exist in the world
- // (as defined by gamedata json) This is used in the map view when you hover over certain areas
- public static byte[] CreatePlaceData(World.Isle[] isles, World.Town[] towns, World.Area[] areas)
- {
- // As this information is defined by gamedata.json file
- // the size of it can vary alot, so im using a List instead of a byte[] here.
- List packet = new List();
- packet.Add(PACKET_AREA_DEFS);
-
- // Encode Towns
-
- foreach (World.Town town in towns)
- {
- byte[] townBytes = Encoding.UTF8.GetBytes(town.Name);
-
- packet.Add(AREA_SEPERATOR);
- packet.Add(AREA_TOWN);
-
- packet.Add((byte)(((town.StartX - 4) / 64) + 20));
- packet.Add((byte)(((town.StartX - 4) % 64) + 20));
-
- packet.Add((byte)(((town.EndX - 4) / 64) + 20));
- packet.Add((byte)(((town.EndX - 4) % 64) + 20));
-
- packet.Add((byte)(((town.StartY - 1) / 64) + 20));
- packet.Add((byte)(((town.StartY - 1) % 64) + 20));
-
- packet.Add((byte)(((town.EndY - 1) / 64) + 20));
- packet.Add((byte)(((town.EndY - 1) % 64) + 20));
-
-
- Helper.ByteArrayToByteList(townBytes, packet);
- }
-
- // Encode Areas
-
- foreach (World.Area area in areas)
- {
- byte[] areaBytes = Encoding.UTF8.GetBytes(area.Name);
-
- packet.Add(AREA_SEPERATOR);
- packet.Add(AREA_AREA);
-
- packet.Add((byte)(((area.StartX - 4) / 64) + 20));
- packet.Add((byte)(((area.StartX - 4) % 64) + 20));
-
- packet.Add((byte)(((area.EndX - 4) / 64) + 20));
- packet.Add((byte)(((area.EndX - 4) % 64) + 20));
-
- packet.Add((byte)(((area.StartY - 1) / 64) + 20));
- packet.Add((byte)(((area.StartY - 1) % 64) + 20));
-
- packet.Add((byte)(((area.EndY - 1) / 64) + 20));
- packet.Add((byte)(((area.EndY - 1) % 64) + 20));
-
-
- Helper.ByteArrayToByteList(areaBytes, packet);
- }
-
- // Encode Isles
-
- foreach (World.Isle isle in isles)
- {
- byte[] isleBytes = Encoding.UTF8.GetBytes(isle.Name);
-
- packet.Add(AREA_SEPERATOR);
- packet.Add(AREA_ISLE);
-
- packet.Add((byte)(((isle.StartX - 4) / 64) + 20));
- packet.Add((byte)(((isle.StartX - 4) % 64) + 20));
-
- packet.Add((byte)(((isle.EndX - 4) / 64) + 20));
- packet.Add((byte)(((isle.EndX - 4) % 64) + 20));
-
- packet.Add((byte)(((isle.StartY - 1) / 64) + 20));
- packet.Add((byte)(((isle.StartY - 1) % 64) + 20));
-
- packet.Add((byte)(((isle.EndY - 1) / 64) + 20));
- packet.Add((byte)(((isle.EndY - 1) % 64) + 20));
-
- packet.Add((byte)isle.Tileset.ToString()[0]);
-
- Helper.ByteArrayToByteList(isleBytes, packet);
- }
-
- return packet.ToArray();
- }
- // Creates a byte array of a packet informing the client of the players money, total player count and,
- // how many mail messages they have.
- public static byte[] CreateMoneyPlayerCountAndMail(int money, int playerCount, int mail)
- {
- byte[] playerDataBytes = Encoding.UTF8.GetBytes(money.ToString("N0", CultureInfo.InvariantCulture) + "|" +
- playerCount.ToString("N0", CultureInfo.InvariantCulture) + "|" +
- mail.ToString("N0", CultureInfo.InvariantCulture) + "|");
- byte[] packet = new byte[1 + playerDataBytes.Length];
- packet[0] = PACKET_BASE_STATS;
- Array.Copy(playerDataBytes, 0, packet, 1, playerDataBytes.Length);
- return packet;
- }
- // Creates a byte array of a packet informing the client of Tile Overlay flags
- // these tell the client what tiles are and are not passable, which ones the player
- // should appear ontop of or under, and stuff like that.
- public static byte[] CreateTileOverlayFlags(Map.TileDepth[] tileDepthFlags)
- {
- byte[] packet = new byte[1 + tileDepthFlags.Length];
- packet[0] = PACKET_TILE_FLAGS;
-
- for(int i = 0; i < tileDepthFlags.Length; i++)
- {
- int flag;
-
- if (!tileDepthFlags[i].ShowPlayer && !tileDepthFlags[i].Passable)
- flag = 0;
- else if (tileDepthFlags[i].ShowPlayer && !tileDepthFlags[i].Passable)
- flag = 1;
- else if (!tileDepthFlags[i].ShowPlayer && tileDepthFlags[i].Passable)
- flag = 2;
- else if (tileDepthFlags[i].ShowPlayer && tileDepthFlags[i].Passable)
- flag = 3;
- else
- throw new Exception("Somehow, showplayers was not true or false, and passable was not true or false, this should be impossible");
-
- packet[1 + i] = Convert.ToByte(flag.ToString()[0]);
- }
-
- return packet;
- }
+ // (as defined by gamedata json) This is used in the map view when you hover over certain areas
+ public static byte[] CreatePlaceData(World.Isle[] isles, World.Town[] towns, World.Area[] areas)
+ {
+ // As this information is defined by gamedata.json file
+ // the size of it can vary alot, so im using a List instead of a byte[] here.
+ List packet = new List();
+ packet.Add(PACKET_AREA_DEFS);
+
+ // Encode Towns
+
+ foreach (World.Town town in towns)
+ {
+ byte[] townBytes = Encoding.UTF8.GetBytes(town.Name);
+
+ packet.Add(AREA_SEPERATOR);
+ packet.Add(AREA_TOWN);
+
+ packet.Add((byte)(((town.StartX - 4) / 64) + 20));
+ packet.Add((byte)(((town.StartX - 4) % 64) + 20));
+
+ packet.Add((byte)(((town.EndX - 4) / 64) + 20));
+ packet.Add((byte)(((town.EndX - 4) % 64) + 20));
+
+ packet.Add((byte)(((town.StartY - 1) / 64) + 20));
+ packet.Add((byte)(((town.StartY - 1) % 64) + 20));
+
+ packet.Add((byte)(((town.EndY - 1) / 64) + 20));
+ packet.Add((byte)(((town.EndY - 1) % 64) + 20));
+
+
+ Helper.ByteArrayToByteList(townBytes, packet);
+ }
+
+ // Encode Areas
+
+ foreach (World.Area area in areas)
+ {
+ byte[] areaBytes = Encoding.UTF8.GetBytes(area.Name);
+
+ packet.Add(AREA_SEPERATOR);
+ packet.Add(AREA_AREA);
+
+ packet.Add((byte)(((area.StartX - 4) / 64) + 20));
+ packet.Add((byte)(((area.StartX - 4) % 64) + 20));
+
+ packet.Add((byte)(((area.EndX - 4) / 64) + 20));
+ packet.Add((byte)(((area.EndX - 4) % 64) + 20));
+
+ packet.Add((byte)(((area.StartY - 1) / 64) + 20));
+ packet.Add((byte)(((area.StartY - 1) % 64) + 20));
+
+ packet.Add((byte)(((area.EndY - 1) / 64) + 20));
+ packet.Add((byte)(((area.EndY - 1) % 64) + 20));
+
+
+ Helper.ByteArrayToByteList(areaBytes, packet);
+ }
+
+ // Encode Isles
+
+ foreach (World.Isle isle in isles)
+ {
+ byte[] isleBytes = Encoding.UTF8.GetBytes(isle.Name);
+
+ packet.Add(AREA_SEPERATOR);
+ packet.Add(AREA_ISLE);
+
+ packet.Add((byte)(((isle.StartX - 4) / 64) + 20));
+ packet.Add((byte)(((isle.StartX - 4) % 64) + 20));
+
+ packet.Add((byte)(((isle.EndX - 4) / 64) + 20));
+ packet.Add((byte)(((isle.EndX - 4) % 64) + 20));
+
+ packet.Add((byte)(((isle.StartY - 1) / 64) + 20));
+ packet.Add((byte)(((isle.StartY - 1) % 64) + 20));
+
+ packet.Add((byte)(((isle.EndY - 1) / 64) + 20));
+ packet.Add((byte)(((isle.EndY - 1) % 64) + 20));
+
+ packet.Add((byte)isle.Tileset.ToString()[0]);
+
+ Helper.ByteArrayToByteList(isleBytes, packet);
+ }
+ packet.Add(PACKET_TERMINATOR);
+
+ return packet.ToArray();
+ }
+ // Creates a byte array of a packet informing the client of the players money, total player count and,
+ // how many mail messages they have.
+ public static byte[] CreateMoneyPlayerCountAndMail(int money, int playerCount, int mail)
+ {
+ byte[] playerDataBytes = Encoding.UTF8.GetBytes(money.ToString("N0", CultureInfo.InvariantCulture) + "|" +
+ playerCount.ToString("N0", CultureInfo.InvariantCulture) + "|" +
+ mail.ToString("N0", CultureInfo.InvariantCulture) + "|");
+
+
+ byte[] packet = new byte[(1*2) + playerDataBytes.Length];
+ packet[0] = PACKET_BASE_STATS;
+ Array.Copy(playerDataBytes, 0, packet, 1, playerDataBytes.Length);
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+ return packet;
+ }
+ // Creates a byte array of a packet informing the client of Tile Overlay flags
+ // these tell the client what tiles are and are not passable, which ones the player
+ // should appear ontop of or under, and stuff like that.
+ public static byte[] CreateTileOverlayFlags(int[] tileDepthFlags)
+ {
+ byte[] packet = new byte[(1 * 2) + tileDepthFlags.Length];
+ packet[0] = PACKET_TILE_FLAGS;
+
+ for(int i = 0; i < tileDepthFlags.Length; i++)
+ packet[1 + i] = (byte)(tileDepthFlags[i].ToString()[0]);
+
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+ return packet;
+ }
// Creates a byte array of a packet informing the client of its current Sec Code seed and Inc values,
- // Some client packets (eg minigame rewards) require this special Message Authentication Code to validate them
- // Its not at all secure, you can easily just forge these packets by just implementing sec codes, but i didnt make it --
- public static byte[] CreateSecCode(byte[] SecCodeSeed, int SecCodeInc, bool Admin, bool Moderator)
+ // Some client packets (eg minigame rewards) require this special Message Authentication Code to validate them
+ // Its not at all secure, you can easily just forge these packets by just implementing sec codes, but i didnt make it --
+ public static byte[] CreateSecCode(byte[] SecCodeSeed, int SecCodeInc, bool Admin, bool Moderator)
{
- char userType = 'N'; // Normal?
-
- if (Moderator)
- userType = 'M'; // Moderator
-
- if (Admin)
- userType = 'A'; // Admin
-
- byte[] packet = new byte[6];
-
- packet[0] = PACKET_SEC_CODE;
-
- packet[1] = (byte)(SecCodeSeed[0] + '!');
- packet[2] = (byte)(SecCodeSeed[1] + '!');
- packet[3] = (byte)(SecCodeSeed[2] + '!');
- packet[4] = (byte)(SecCodeInc + '!');
-
-
- packet[5] = (byte)userType;
-
- return packet;
- }
- // Creates a byte array of a packet to tell the client to please GET
+ char userType = 'N'; // Normal?
+
+ if (Moderator)
+ userType = 'M'; // Moderator
+
+ if (Admin)
+ userType = 'A'; // Admin
+
+ byte[] packet = new byte[7];
+
+ packet[0] = PACKET_SEC_CODE;
+
+ packet[1] = (byte)(SecCodeSeed[0] + 33);
+ packet[2] = (byte)(SecCodeSeed[1] + 33);
+ packet[3] = (byte)(SecCodeSeed[2] + 33);
+ packet[4] = (byte)(SecCodeInc + 33);
+
+
+ packet[5] = (byte)userType;
+ packet[6] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet to tell the client to please GET
// a certain SWF in the mod/ directory on web, and then load it as a MovieClip
- // into the actual game client.
- public static byte[] CreateSwfModule(string swf,byte headerByte)
- {
- byte[] swfBytes = Encoding.UTF8.GetBytes(swf);
- byte[] packet = new byte[1 + swfBytes.Length];
-
- packet[0] = headerByte;
+ // into the actual game client.
+ public static byte[] CreateSwfModule(string swf,byte headerByte)
+ {
+ byte[] swfBytes = Encoding.UTF8.GetBytes(swf);
+ byte[] packet = new byte[(1 * 2) + swfBytes.Length];
+
+ packet[0] = headerByte;
Array.Copy(swfBytes, 0, packet, 1, swfBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a packet to show the client an "Annoucement" message
- // This has the exact same effect as CreateChat with CHAT_BOTTOM_RIGHT but for some reason
- // the header byte is different,
- // This is basically only used for MOTD.
- public static byte[] CreateMotd(string announcement)
- {
- byte[] annouceBytes = Encoding.UTF8.GetBytes(announcement);
- byte[] packet = new byte[1 + annouceBytes.Length];
-
- packet[0] = PACKET_ANNOUNCEMENT;
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet to show the client an "Annoucement" message
+ // This has the exact same effect as CreateChat with CHAT_BOTTOM_RIGHT but for some reason
+ // the header byte is different,
+ // This is basically only used for MOTD.
+ public static byte[] CreateAnnouncement(string announcement)
+ {
+ byte[] annouceBytes = Encoding.UTF8.GetBytes(announcement);
+ byte[] packet = new byte[(1 * 2) + annouceBytes.Length];
+
+ packet[0] = PACKET_ANNOUNCEMENT;
Array.Copy(annouceBytes, 0, packet, 1, annouceBytes.Length);
-
- return packet;
- }
- // Creates a byte array of a packet informing the clent that they have been kicked from the server
- // and includes a reason for them being kicked,
- public static byte[] CreateKickMessage(string reason)
- {
- byte[] kickMsgBytes = Encoding.UTF8.GetBytes(reason);
- byte[] packet = new byte[1 + kickMsgBytes.Length];
-
- packet[0] = PACKET_KICK;
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+ // Creates a byte array of a packet informing the clent that they have been kicked from the server
+ // and includes a reason for them being kicked,
+ public static byte[] CreateKickMessage(string reason)
+ {
+ byte[] kickMsgBytes = Encoding.UTF8.GetBytes(reason);
+ byte[] packet = new byte[(1 * 2) + kickMsgBytes.Length];
+
+ packet[0] = PACKET_KICK;
Array.Copy(kickMsgBytes, 0, packet, 1, kickMsgBytes.Length);
-
- return packet;
- }
-
- }
-}
+ packet[packet.Length - 1] = PACKET_TERMINATOR;
+
+ return packet;
+ }
+
+ }
+}
diff --git a/HorseIsleServer/LibHISP/Server/ServerVersion.cs b/HorseIsleServer/LibHISP/Server/ServerVersion.cs
index 305affc..5efadbe 100755
--- a/HorseIsleServer/LibHISP/Server/ServerVersion.cs
+++ b/HorseIsleServer/LibHISP/Server/ServerVersion.cs
@@ -40,7 +40,7 @@ namespace HISP.Server
#elif OS_MACOS
return "MACOS";
#else
- return "UNKNWON";
+ return "UNK_PLATFORM";
#endif
}
diff --git a/HorseIsleServer/LibHISP/Util/Helper.cs b/HorseIsleServer/LibHISP/Util/Helper.cs
index a3a49a9..1c0b0d1 100644
--- a/HorseIsleServer/LibHISP/Util/Helper.cs
+++ b/HorseIsleServer/LibHISP/Util/Helper.cs
@@ -1,108 +1,52 @@
-using HISP.Server;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Net.Sockets;
-
-namespace HISP.Util
-{
- public class Helper
- {
- // Thanks Stackoverflow (https://stackoverflow.com/questions/321370/how-can-i-convert-a-hex-string-to-a-byte-array)
- private static int getHexVal(char hex)
- {
- int val = (int)hex;
- return val - (val < 58 ? 48 : (val < 97 ? 55 : 87));
- }
- public static byte[] StringToByteArray(string hex)
- {
- if (hex.Length % 2 == 1)
- throw new ArgumentException("The binary key cannot have an odd number of digits");
-
- byte[] arr = new byte[hex.Length >> 1];
-
- for (int i = 0; i < hex.Length >> 1; ++i)
- {
- arr[i] = (byte)((getHexVal(hex[i << 1]) << 4) + (getHexVal(hex[(i << 1) + 1])));
- }
-
- return arr;
- }
-
- public static double PointsToDistance(int x1, int y1, int x2, int y2)
- {
- return Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2));
- }
- public static string CapitalizeFirstLetter(string str)
- {
- char firstChar = char.ToUpper(str[0]);
- return firstChar + str.Substring(1);
- }
- public static int GetMonthsBetweenTwoDateTimes(DateTime from, DateTime to)
- {
- if (from > to) return GetMonthsBetweenTwoDateTimes(to, from);
- int monthDiff = Math.Abs((to.Year * 12 + (to.Month)) - (from.Year * 12 + (from.Month)));
- return monthDiff;
-
- }
- public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
- {
- // Unix timestamp is seconds past epoch
- DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
- dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToUniversalTime();
- return dtDateTime;
- }
-
- public static bool ByteArrayStartsWith(byte[] byteArray, byte[] searchValue)
- {
- if (byteArray.Length < searchValue.Length) return false;
-
- byte[] buffer = new byte[searchValue.Length];
- Array.ConstrainedCopy(byteArray, 0, buffer, 0, searchValue.Length);
-
- return buffer.SequenceEqual(searchValue);
- }
-
- public static bool ByteArrayEndsWith(byte[] byteArray, byte[] searchValue)
- {
- if (searchValue.Length > byteArray.Length) return false;
-
- byte[] buffer = new byte[searchValue.Length];
- Array.ConstrainedCopy(byteArray, (byteArray.Length - searchValue.Length), buffer, 0, searchValue.Length);
-
- return buffer.SequenceEqual(searchValue);
- }
-
- public static void ByteArrayToByteList(byte[] byteArray, List byteList)
- {
- byteList.AddRange(byteArray.ToList());
- }
-
- public static string RandomString(string allowedCharacters)
- {
- int length = GameServer.RandomNumberGenerator.Next(7, 16);
- string str = "";
- for (int i = 0; i < length; i++)
- str += allowedCharacters[GameServer.RandomNumberGenerator.Next(0, allowedCharacters.Length - 1)];
-
- return str;
- }
- public static string ReverseString(string str)
- {
- char[] charArray = str.ToCharArray();
- Array.Reverse(charArray);
- string newStr = new string(charArray);
-
- return newStr;
- }
-
- public static string GetIp(EndPoint ep)
- {
- string endPointIp = ep.ToString();
- if (endPointIp.Contains(":"))
- endPointIp = endPointIp.Substring(0, endPointIp.IndexOf(":"));
- return endPointIp;
- }
- }
-}
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace HISP.Util
+{
+ public class Helper
+ {
+ // Thanks Stackoverflow (https://stackoverflow.com/questions/321370/how-can-i-convert-a-hex-string-to-a-byte-array)
+ private static int getHexVal(char hex)
+ {
+ int val = (int)hex;
+ return val - (val < 58 ? 48 : (val < 97 ? 55 : 87));
+ }
+ public static byte[] StringToByteArray(string hex)
+ {
+ if (hex.Length % 2 == 1)
+ throw new ArgumentException("The binary key cannot have an odd number of digits");
+
+ byte[] arr = new byte[hex.Length >> 1];
+
+ for (int i = 0; i < hex.Length >> 1; ++i)
+ {
+ arr[i] = (byte)((getHexVal(hex[i << 1]) << 4) + (getHexVal(hex[(i << 1) + 1])));
+ }
+
+ return arr;
+ }
+
+ public static double PointsToDistance(int x1, int y1, int x2, int y2)
+ {
+ return Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2));
+ }
+ public static string CapitalizeFirstLetter(string str)
+ {
+ char firstChar = char.ToUpper(str[0]);
+ return firstChar + str.Substring(1);
+ }
+ public static DateTime UnixTimeStampToDateTime(double unixTimeStamp)
+ {
+ // Unix timestamp is seconds past epoch
+ System.DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
+ dtDateTime = dtDateTime.AddSeconds(unixTimeStamp).ToUniversalTime();
+ return dtDateTime;
+ }
+
+ public static void ByteArrayToByteList(byte[] byteArray, List byteList)
+ {
+ byteList.AddRange(byteArray.ToList());
+ }
+ }
+}
diff --git a/HorseIsleServer/MPN00BS/HTTP/ContentServer.cs b/HorseIsleServer/MPN00BS/HTTP/ContentServer.cs
index caeec6d..bf9a6e4 100755
--- a/HorseIsleServer/MPN00BS/HTTP/ContentServer.cs
+++ b/HorseIsleServer/MPN00BS/HTTP/ContentServer.cs
@@ -277,11 +277,8 @@ namespace HTTP
public void Shutdown() {
shutdownServer = true;
- if(ServerSocket != null)
- {
- ServerSocket.Dispose();
- ServerSocket = null;
- }
+ ServerSocket.Dispose();
+ ServerSocket = null;
}
private bool shutdownServer = false;
public string ipaddr;
diff --git a/HorseIsleServer/MPN00BS/MPN00BS.csproj b/HorseIsleServer/MPN00BS/MPN00BS.csproj
index c6fc819..139a513 100755
--- a/HorseIsleServer/MPN00BS/MPN00BS.csproj
+++ b/HorseIsleServer/MPN00BS/MPN00BS.csproj
@@ -10,13 +10,7 @@
1701;1702;2026;IL2026
icon.ico
-
-
- partial
- false
- true
-
-
+
win-x86
true
@@ -67,7 +61,7 @@
- net8.0
+ net7.0
false
true
OnBuildSuccess
@@ -227,9 +221,9 @@
-
-
-
+
+
+
@@ -250,12 +244,4 @@
-
-
- PreserveNewest
- flashplayer\MACOS\%(RecursiveDir)%(Filename)%(Extension)
-
-
-
-
diff --git a/HorseIsleServer/MPN00BS/Properties/AssemblyInfo.cs b/HorseIsleServer/MPN00BS/Properties/AssemblyInfo.cs
index dc7b03a..547540b 100755
--- a/HorseIsleServer/MPN00BS/Properties/AssemblyInfo.cs
+++ b/HorseIsleServer/MPN00BS/Properties/AssemblyInfo.cs
@@ -30,8 +30,8 @@ using System.Runtime.InteropServices;
//
// 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")]
+[assembly: AssemblyVersion("1.7.140.0")]
+[assembly: AssemblyFileVersion("1.7.140.0")]
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM.pubxml
index 4c08f3e..e1eff10 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM.pubxml
+++ b/HorseIsleServer/MPN00BS/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/MPN00BS/Properties/PublishProfiles/AndroidARM64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM64.pubxml
index e9b3839..59f44f0 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/AndroidARM64.pubxml
+++ b/HorseIsleServer/MPN00BS/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/MPN00BS/Properties/PublishProfiles/Linux64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Linux64.pubxml
index 2a7977d..c5f1582 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Linux64.pubxml
+++ b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Linux64.pubxml
@@ -6,14 +6,14 @@ 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
True
- False
+ True
OS_LINUX;ARCH_X86_64
\ No newline at end of file
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM.pubxml
index fdccff1..06bcf27 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM.pubxml
+++ b/HorseIsleServer/MPN00BS/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/MPN00BS/Properties/PublishProfiles/LinuxARM64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM64.pubxml
index f387011..b4cdb5b 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/LinuxARM64.pubxml
+++ b/HorseIsleServer/MPN00BS/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/MPN00BS/Properties/PublishProfiles/Osx64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Osx64.pubxml
index 2e55913..ced4af4 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Osx64.pubxml
+++ b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Osx64.pubxml
@@ -6,14 +6,14 @@ 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
True
- False
+ True
OS_MACOS;ARCH_X86_64
\ No newline at end of file
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/OsxARM64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/OsxARM64.pubxml
index 6d6a41d..cc18457 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/OsxARM64.pubxml
+++ b/HorseIsleServer/MPN00BS/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/MPN00BS/Properties/PublishProfiles/Win32.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win32.pubxml
index afb5f8d..2763365 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win32.pubxml
+++ b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win32.pubxml
@@ -6,14 +6,14 @@ 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
True
- False
+ True
OS_WINDOWS;ARCH_X86
\ No newline at end of file
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win64.pubxml
index a07a6ae..f23270c 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win64.pubxml
+++ b/HorseIsleServer/MPN00BS/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
- False
+ True
OS_WINDOWS;ARCH_X86_64
\ No newline at end of file
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win64.pubxml.user b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win64.pubxml.user
new file mode 100755
index 0000000..09db105
--- /dev/null
+++ b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/Win64.pubxml.user
@@ -0,0 +1,9 @@
+
+
+
+
+ True|2022-07-20T07:28:37.2663216Z;True|2022-07-20T18:43:12.6339464+12:00;
+
+
\ No newline at end of file
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/WinARM.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/WinARM.pubxml
index f6cc04e..a64c8c0 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/WinARM.pubxml
+++ b/HorseIsleServer/MPN00BS/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\win-arm\publish\
FileSystem
- net8.0
+ net7.0
win-arm
True
True
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/WinARM64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/WinARM64.pubxml
index 10dfe10..0ce204c 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/WinARM64.pubxml
+++ b/HorseIsleServer/MPN00BS/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\win-arm64\publish\
FileSystem
- net8.0
+ net7.0
win-arm64
True
True
diff --git a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/iOSARM.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/iOSARM.pubxml
index 077cfed..3312d3f 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/iOSARM.pubxml
+++ b/HorseIsleServer/MPN00BS/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/MPN00BS/Properties/PublishProfiles/iOSARM64.pubxml b/HorseIsleServer/MPN00BS/Properties/PublishProfiles/iOSARM64.pubxml
index ec7144e..14fe938 100755
--- a/HorseIsleServer/MPN00BS/Properties/PublishProfiles/iOSARM64.pubxml
+++ b/HorseIsleServer/MPN00BS/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/MPN00BS/RegisterWindow.axaml.cs b/HorseIsleServer/MPN00BS/RegisterWindow.axaml.cs
index 670f462..31ffd04 100755
--- a/HorseIsleServer/MPN00BS/RegisterWindow.axaml.cs
+++ b/HorseIsleServer/MPN00BS/RegisterWindow.axaml.cs
@@ -127,19 +127,20 @@ namespace MPN00BS
private void CreateAccount(object sender, RoutedEventArgs e)
{
-
+ int newUserId = Database.GetNextFreeUserId();
+
+ // Generate random salt
+ byte[] salt = new byte[64];
+ new Random(Guid.NewGuid().GetHashCode()).NextBytes(salt);
+
+ // Hash password
+ string saltText = BitConverter.ToString(salt).Replace("-", "");
+ string hashsalt = BitConverter.ToString(Authentication.HashAndSalt(passwordBox.Text, salt)).Replace("-", "");
+
// GENDer? I hardly knew THEM!
string gender = ((ComboBoxItem)genderSelectionBox.SelectedItem).Content.ToString();
-
- // Permissions
- bool admin = (bool)adminCheckbox.IsChecked;
- bool mod = (bool)modCheckbox.IsChecked;
-
- // Credentials
- string password = passwordBox.Text;
- string username = usernameBox.Text;
- Authentication.CreateAccount(username, password, gender, admin, mod);
+ Database.CreateUser(newUserId, usernameBox.Text, hashsalt, saltText, gender, (bool)adminCheckbox.IsChecked, (bool)modCheckbox.IsChecked);
this.Close();
}
diff --git a/HorseIsleServer/MPN00BS/ServerStarter.cs b/HorseIsleServer/MPN00BS/ServerStarter.cs
index 2024025..5399df2 100755
--- a/HorseIsleServer/MPN00BS/ServerStarter.cs
+++ b/HorseIsleServer/MPN00BS/ServerStarter.cs
@@ -1,4 +1,4 @@
-using HISP.Game.Chat;
+using HISP.Game.Chat;
using HISP.Game.Horse;
using HISP.Game.Items;
using HISP.Game.Services;
@@ -60,12 +60,10 @@ namespace MPN00BS
clientProcess = new Process();
-#if OS_WINDOWS || DEBUG
+#if OS_WINDOWS
string executable = Path.Combine(Directory.GetCurrentDirectory(), "flashplayer", "WINDOWS", "flash.exe");
#elif OS_LINUX
string executable = Path.Combine(Directory.GetCurrentDirectory(), "flashplayer", "LINUX", "flash.elf");
-#elif OS_MACOS
- string executable = Path.Combine(Directory.GetCurrentDirectory(), "flashplayer", "MACOS", "flash.app", "Contents", "MacOS", "Flash Player");
#else
MessageBox.Show(null,"ERROR: No path for flash projector specified on this platform", "Porting error", MessageBoxButtons.Ok);
string executable = Path.Combine(Directory.GetCurrentDirectory(), "flashplayer", "WINDOWS", "flash.exe");
@@ -78,7 +76,7 @@ namespace MPN00BS
clientProcess.StartInfo.FileName = executable;
-#if OS_LINUX || OS_MACOS
+#if OS_LINUX
clientProcess.StartInfo.Arguments = "http://"+cs.ipaddr+":"+cs.portnum+"/horseisle_mapfix.swf?SERVER=" + serverIp + "&PORT=" + serverPort.ToString();
#else
clientProcess.StartInfo.Arguments = "http://"+cs.ipaddr+":"+cs.portnum+"/horseisle.swf?SERVER=" + serverIp + "&PORT=" + serverPort.ToString();
@@ -122,6 +120,11 @@ namespace MPN00BS
ProgressCallback();
+ if (Database.GetUsers().Length <= 0)
+ {
+ UserCreationCallback();
+ }
+
// Start HI1 Server
ProgressCallback();
@@ -129,7 +132,7 @@ namespace MPN00BS
Entry.SetShutdownCallback(OnShutdown);
ProgressCallback();
- CrossDomainPolicy.GetPolicyFile();
+ CrossDomainPolicy.GetPolicy();
ProgressCallback();
GameDataJson.ReadGamedata();
@@ -179,11 +182,6 @@ namespace MPN00BS
ProgressCallback();
HasServerStarted = true;
ServerStartedCallback();
-
-
-
- if (Database.GetUsers().Length <= 0)
- UserCreationCallback();
}
public static void ModifyConfig(string okey, string value)
@@ -215,14 +213,14 @@ namespace MPN00BS
public static void SetBaseDir()
{
-#if OS_WINDOWS || DEBUG
+#if OS_WINDOWS
string hispFolder = Environment.GetEnvironmentVariable("APPDATA");
if (hispFolder == null)
return;
BaseDir = Path.Combine(hispFolder, "HISP", "N00BS");
Directory.CreateDirectory(BaseDir);
-#elif OS_LINUX || OS_MACOS
+#elif OS_LINUX
string hispFolder = Environment.GetEnvironmentVariable("HOME");
if (hispFolder == null)
return;
@@ -237,7 +235,7 @@ namespace MPN00BS
try
{
-#if OS_LINUX || OS_MACOS
+#if OS_LINUX
cs = new ContentServer("127.0.0.1", 12322);
#else
cs = new ContentServer("127.0.0.1", 80);
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/CodeResources b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/CodeResources
deleted file mode 100644
index 055a706..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/CodeResources and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Info.plist b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Info.plist
deleted file mode 100644
index f9b4e00..0000000
--- a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Info.plist
+++ /dev/null
@@ -1,165 +0,0 @@
-
-
-
-
- BuildMachineOSBuild
- 16G2136
- CFBundleDevelopmentRegion
- en-US
- CFBundleDocumentTypes
-
-
- CFBundleTypeExtensions
-
- swf
- spl
-
- CFBundleTypeIconFile
- document_swf.icns
- CFBundleTypeName
- Shockwave Flash Movie
- CFBundleTypeOSTypes
-
- SWFL
-
- CFBundleTypeRole
- Viewer
-
-
- CFBundleTypeExtensions
-
- flv
-
- CFBundleTypeIconFile
- document_flv.icns
- CFBundleTypeName
- Macromedia Flash Video
- CFBundleTypeOSTypes
-
- MFLV
-
- CFBundleTypeRole
- None
-
-
- CFBundleTypeExtensions
-
- f4v
-
- CFBundleTypeIconFile
- document_f4v.icns
- CFBundleTypeMIMETypes
-
- video/mp4
-
- CFBundleTypeName
- Video for Adobe Flash Player
- CFBundleTypeOSTypes
-
- F4V
-
- CFBundleTypeRole
- None
-
-
- CFBundleTypeExtensions
-
- f4p
-
- CFBundleTypeIconFile
- document_f4p.icns
- CFBundleTypeMIMETypes
-
- video/mp4
-
- CFBundleTypeName
- Protected Media for Adobe Flash Player
- CFBundleTypeOSTypes
-
- F4P
-
- CFBundleTypeRole
- Viewer
-
-
- CFBundleTypeExtensions
-
- f4a
-
- CFBundleTypeIconFile
- document_f4a.icns
- CFBundleTypeMIMETypes
-
- audio/mp4
-
- CFBundleTypeName
- Audio for Adobe Flash Player
- CFBundleTypeOSTypes
-
- F4A
-
- CFBundleTypeRole
- Viewer
-
-
- CFBundleExecutable
- Flash Player
- CFBundleGetInfoString
- Adobe Flash Player 32.0 r0 Copyright 1996-2020 Adobe and its licensors. All rights reserved.
- CFBundleIconFile
- FlashPlayer.icns
- CFBundleIdentifier
- com.macromedia.Flash Player.app
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleLongVersionString
- Adobe Flash Player 32.0 r0
- CFBundleName
- Flash Player
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 32.0.0.465
- CFBundleSignature
- SWF2
- CFBundleSupportedPlatforms
-
- MacOSX
-
- CFBundleVersion
- 32.0.0.465
- CSResourcesFileMapped
-
- DTCompiler
- com.apple.compilers.llvm.clang.1_0
- DTPlatformBuild
- 8B62
- DTPlatformVersion
- GM
- DTSDKBuild
- 16B2649
- DTSDKName
- macosx10.12
- DTXcode
- 0810
- DTXcodeBuild
- 8B62
- LSPrefersCarbon
- YES
- NSAppTransportSecurity
-
- NSAllowsArbitraryLoads
-
-
- NSAppleScriptEnabled
- YES
- NSHighResolutionCapable
-
- NSHumanReadableCopyright
- Copyright ?? 1996-2020 Adobe and its licensors. All Rights Reserved.
- NSMainNibFile
- MainMenu
- NSPrincipalClass
- NSApplication
-
-
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/MacOS/Flash Player b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/MacOS/Flash Player
deleted file mode 100755
index 9c4689d..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/MacOS/Flash Player and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/PkgInfo b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/PkgInfo
deleted file mode 100644
index 2d69ac5..0000000
--- a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/PkgInfo
+++ /dev/null
@@ -1 +0,0 @@
-APPLSWF2
\ No newline at end of file
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/Flash Player.rsrc b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/Flash Player.rsrc
deleted file mode 100644
index b1494eb..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/Flash Player.rsrc and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/FlashPlayer.icns b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/FlashPlayer.icns
deleted file mode 100644
index 4a0c8e4..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/FlashPlayer.icns and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/MainMenu.nib
deleted file mode 100644
index 62225a4..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index c1eeb48..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 5ee008f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/cs.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/MainMenu.nib
deleted file mode 100644
index 4f46d9c..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index baf8133..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index da853fe..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/de.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4a.icns b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4a.icns
deleted file mode 100755
index 28e1c7d..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4a.icns and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4p.icns b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4p.icns
deleted file mode 100755
index b40ebd2..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4p.icns and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4v.icns b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4v.icns
deleted file mode 100644
index 26e01f1..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_f4v.icns and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_flv.icns b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_flv.icns
deleted file mode 100755
index 8b55208..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_flv.icns and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_swf.icns b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_swf.icns
deleted file mode 100644
index 157f439..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/document_swf.icns and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/MainMenu.nib
deleted file mode 100644
index af4eb0c..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 8968e35..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 5dfd350..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/en.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/MainMenu.nib
deleted file mode 100644
index 3fb581b..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index fb67ce1..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index f3cdae7..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/es.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/MainMenu.nib
deleted file mode 100644
index 24717c4..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index e5fe360..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 956e50a..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/fr.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/MainMenu.nib
deleted file mode 100644
index a5035fd..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index d4721d1..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 53d2429..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/it.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/MainMenu.nib
deleted file mode 100644
index 72885ff..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 927e338..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index ab2099e..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ja.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/MainMenu.nib
deleted file mode 100644
index 9fd97f6..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index b72724a..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 128a86a..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ko.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/MainMenu.nib
deleted file mode 100644
index 2dc142b..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 83201a2..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 19f4732..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/nl.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/MainMenu.nib
deleted file mode 100644
index 51e2b8b..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 173e59b..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 5998dcc..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pl.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/MainMenu.nib
deleted file mode 100644
index a83f4b2..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 837d875..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index f31a4f9..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/pt.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/MainMenu.nib
deleted file mode 100644
index 0fff661..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 2dc84c6..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 060af0a..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/ru.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/MainMenu.nib
deleted file mode 100644
index 9c28d7b..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 26ca20f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index ced9751..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/sv.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/MainMenu.nib
deleted file mode 100644
index cf3a1a8..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index ab83361..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 31d6ee3..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/tr.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/MainMenu.nib
deleted file mode 100644
index e76a2b4..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index eec73d2..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 09c4ac1..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hans.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/InfoPlist.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/InfoPlist.strings
deleted file mode 100644
index 9b30b9f..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/InfoPlist.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/MainMenu.nib b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/MainMenu.nib
deleted file mode 100644
index 45f77be..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/MainMenu.nib and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/PlayerUILocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/PlayerUILocalizable.strings
deleted file mode 100644
index 868bb3b..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/PlayerUILocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/StandalonePlayerLocalizable.strings b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/StandalonePlayerLocalizable.strings
deleted file mode 100644
index 203dfee..0000000
Binary files a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/Resources/zh_Hant.lproj/StandalonePlayerLocalizable.strings and /dev/null differ
diff --git a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/_CodeSignature/CodeResources b/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/_CodeSignature/CodeResources
deleted file mode 100644
index ffb9d15..0000000
--- a/HorseIsleServer/MPN00BS/flashplayer/MACOS/flash.app/Contents/_CodeSignature/CodeResources
+++ /dev/null
@@ -1,1630 +0,0 @@
-
-
-
-
- files
-
- Resources/Flash Player.rsrc
-
- pvaoxAmCeX2xYmqprk5Wp0Izs2A=
-
- Resources/FlashPlayer.icns
-
- /Xn+VD3pothrOBKT8BKFgUBpXU8=
-
- Resources/cs.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/cs.lproj/MainMenu.nib
-
- hash
-
- xsqOjALId3WoFOmDhar8VJi3/qw=
-
- optional
-
-
- Resources/cs.lproj/PlayerUILocalizable.strings
-
- hash
-
- BpmJ+9D9VFmHt8l86FrRYRve+VY=
-
- optional
-
-
- Resources/cs.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- R5M+oYoi+62962XIdcCbsR6M4N4=
-
- optional
-
-
- Resources/de.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/de.lproj/MainMenu.nib
-
- hash
-
- CJm9WXue3gBRrkPFw/yjRAU41Xg=
-
- optional
-
-
- Resources/de.lproj/PlayerUILocalizable.strings
-
- hash
-
- MUJj+tQRrZkZy22RABnWKtZGOYk=
-
- optional
-
-
- Resources/de.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- p6Bzkb8Kgun7e5W3It8GRJDoO3o=
-
- optional
-
-
- Resources/document_f4a.icns
-
- NF+iPglsC8QiNTaSEWE5VMgBKfQ=
-
- Resources/document_f4p.icns
-
- SJKz4nnY/fPUhBvWoj/JbYwuWio=
-
- Resources/document_f4v.icns
-
- EJsaVBu2jX3g4acELuPpnvhxD8Y=
-
- Resources/document_flv.icns
-
- 4AnNDv11jgt0QvZTvjvZ+o9u01Y=
-
- Resources/document_swf.icns
-
- sw1C9KSCzrfFq4omzJnbeSlS67I=
-
- Resources/en.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/en.lproj/MainMenu.nib
-
- hash
-
- cA2HoQMzeG77hpx3B+DDyppZrCQ=
-
- optional
-
-
- Resources/en.lproj/PlayerUILocalizable.strings
-
- hash
-
- mttbOiFFtyOKbcpN/CKGUHAhmHw=
-
- optional
-
-
- Resources/en.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- QnCOzYW8W7iBvF8ocmkiQpEGts0=
-
- optional
-
-
- Resources/es.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/es.lproj/MainMenu.nib
-
- hash
-
- IXP0UIUGAy/B3B7p+pWAVj8Mhp0=
-
- optional
-
-
- Resources/es.lproj/PlayerUILocalizable.strings
-
- hash
-
- QH9+cSjlKR9VwioLAmeXuCrDEeM=
-
- optional
-
-
- Resources/es.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- cJana3prz+poMLnWePHZDJAA23E=
-
- optional
-
-
- Resources/fr.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/fr.lproj/MainMenu.nib
-
- hash
-
- KxtV0UTaMgUu4J6ubTQOz5bzkYE=
-
- optional
-
-
- Resources/fr.lproj/PlayerUILocalizable.strings
-
- hash
-
- hAR7cvkDYrSbyXq3nNrSwnJ3Rko=
-
- optional
-
-
- Resources/fr.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- zgL+fGyad5EKwj6Yib/4ciUkvNI=
-
- optional
-
-
- Resources/it.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/it.lproj/MainMenu.nib
-
- hash
-
- M4T8zn1CsC9KvzCYHaFAdUXzBy0=
-
- optional
-
-
- Resources/it.lproj/PlayerUILocalizable.strings
-
- hash
-
- n/3g5Z022GCHSTmibO7DUQ93gJY=
-
- optional
-
-
- Resources/it.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- t8OnJOGpWRy1iSKKBF+T8JmOZlc=
-
- optional
-
-
- Resources/ja.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/ja.lproj/MainMenu.nib
-
- hash
-
- 7aGWUz+2DAPYLKQH0ekVgWU1juY=
-
- optional
-
-
- Resources/ja.lproj/PlayerUILocalizable.strings
-
- hash
-
- epE4rZEWFMnb+Z5sU8nPtUseqVs=
-
- optional
-
-
- Resources/ja.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- WdnOxo8RkOeQ72rGFcEkzTUc99Y=
-
- optional
-
-
- Resources/ko.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/ko.lproj/MainMenu.nib
-
- hash
-
- OFMzXfz+GCA1UffqwBltYslMUAY=
-
- optional
-
-
- Resources/ko.lproj/PlayerUILocalizable.strings
-
- hash
-
- uAz/1Q1BXm3CGzj2g/vLLG0+Mnc=
-
- optional
-
-
- Resources/ko.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- PDW5p6TTQQ0bOOcIZtY73nBpL8E=
-
- optional
-
-
- Resources/nl.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/nl.lproj/MainMenu.nib
-
- hash
-
- YmIFWE6Ap3yx7NdN7pATUKb2GV8=
-
- optional
-
-
- Resources/nl.lproj/PlayerUILocalizable.strings
-
- hash
-
- Wq/KjiAOeFxasTWndGbaeYzAkSg=
-
- optional
-
-
- Resources/nl.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- 2mOKDtmf33ppZZdz9KWuKjV0MCg=
-
- optional
-
-
- Resources/pl.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/pl.lproj/MainMenu.nib
-
- hash
-
- ELDo+lSUPFB7uCrsppdYUZQJ4Ls=
-
- optional
-
-
- Resources/pl.lproj/PlayerUILocalizable.strings
-
- hash
-
- v/SKpWU+WCDtgQBntQ3RbrcoOBo=
-
- optional
-
-
- Resources/pl.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- KurPjtb6vtchyvlgjJqLk1W7T/I=
-
- optional
-
-
- Resources/pt.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/pt.lproj/MainMenu.nib
-
- hash
-
- 7oB50y6/eW8fCHouf2FyHIetkhQ=
-
- optional
-
-
- Resources/pt.lproj/PlayerUILocalizable.strings
-
- hash
-
- 0XI2uXU8cASHdiGkxaSAmB6KJF8=
-
- optional
-
-
- Resources/pt.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- ipnLxb9osseytQqNrWebmG1Zt0U=
-
- optional
-
-
- Resources/ru.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/ru.lproj/MainMenu.nib
-
- hash
-
- GfwOWHOF/agzSm6qhv15eFhoJAQ=
-
- optional
-
-
- Resources/ru.lproj/PlayerUILocalizable.strings
-
- hash
-
- U//VxPa224u1EOBmb+ef5HPF5z8=
-
- optional
-
-
- Resources/ru.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- nS2Ei6hlaEq4yjOz24xBKNSUNAE=
-
- optional
-
-
- Resources/sv.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/sv.lproj/MainMenu.nib
-
- hash
-
- p2S0CT+MjMDBAA1PsoscinQH+D0=
-
- optional
-
-
- Resources/sv.lproj/PlayerUILocalizable.strings
-
- hash
-
- 6Ng6Cc8qTXZBAfvVO6oKHxeicS0=
-
- optional
-
-
- Resources/sv.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- X843wzr99oR1l7akQozGHt044No=
-
- optional
-
-
- Resources/tr.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/tr.lproj/MainMenu.nib
-
- hash
-
- 2WxpduLUo7fx/wbq8BVxgdDzCmw=
-
- optional
-
-
- Resources/tr.lproj/PlayerUILocalizable.strings
-
- hash
-
- 9vLIPyxJPs1WPyEYGMrmary4GGU=
-
- optional
-
-
- Resources/tr.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- K67p+bRCo6ykr5kgFp9jjaBnfPo=
-
- optional
-
-
- Resources/zh_Hans.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/zh_Hans.lproj/MainMenu.nib
-
- hash
-
- wPojbwKTp8JOaVAfh+kXxx7A1nU=
-
- optional
-
-
- Resources/zh_Hans.lproj/PlayerUILocalizable.strings
-
- hash
-
- trNb3nwxiOes0Z9penT+q6DNBIA=
-
- optional
-
-
- Resources/zh_Hans.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- tdwerkYWytL/7me6VlurOW32psw=
-
- optional
-
-
- Resources/zh_Hant.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- optional
-
-
- Resources/zh_Hant.lproj/MainMenu.nib
-
- hash
-
- 45tcDxAV8jUbSWDxYpvdQNTf6Hg=
-
- optional
-
-
- Resources/zh_Hant.lproj/PlayerUILocalizable.strings
-
- hash
-
- M8phM9+v+t0/bSDv1Mpoo9lRdXE=
-
- optional
-
-
- Resources/zh_Hant.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- JSBPDMbuIDFZ4MHLO0TdlWI5w2k=
-
- optional
-
-
-
- files2
-
- Resources/Flash Player.rsrc
-
- hash
-
- pvaoxAmCeX2xYmqprk5Wp0Izs2A=
-
- hash2
-
- SYd91ZoMWBb7rqxG1gv20wFeOO0c2C8AvrCsnZp03/w=
-
-
- Resources/FlashPlayer.icns
-
- hash
-
- /Xn+VD3pothrOBKT8BKFgUBpXU8=
-
- hash2
-
- 5L7KsiG6190fOOtN8knSWcjOGd+pm64jIYmxMFofaEo=
-
-
- Resources/cs.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/cs.lproj/MainMenu.nib
-
- hash
-
- xsqOjALId3WoFOmDhar8VJi3/qw=
-
- hash2
-
- NWIC34GHfZf8DyRkCvxN5k1sPPBy8af5k5DOlt0JQV0=
-
- optional
-
-
- Resources/cs.lproj/PlayerUILocalizable.strings
-
- hash
-
- BpmJ+9D9VFmHt8l86FrRYRve+VY=
-
- hash2
-
- hihqezzwv5230npzedXLqS2YZyWn5sdvpcxnnfJSss8=
-
- optional
-
-
- Resources/cs.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- R5M+oYoi+62962XIdcCbsR6M4N4=
-
- hash2
-
- 18KAhv+hy9bAe8d8+gYsE6fjOMiMUTdfoZDnzgoMZYc=
-
- optional
-
-
- Resources/de.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/de.lproj/MainMenu.nib
-
- hash
-
- CJm9WXue3gBRrkPFw/yjRAU41Xg=
-
- hash2
-
- TPitNy3+ZQVU7IAE+hFnpe1URpZi1/2b6oWUjIERZPs=
-
- optional
-
-
- Resources/de.lproj/PlayerUILocalizable.strings
-
- hash
-
- MUJj+tQRrZkZy22RABnWKtZGOYk=
-
- hash2
-
- olzfOvpYh/Nl4WmUoEvRY9I+PaduCg+Zp7HW0JQkpvs=
-
- optional
-
-
- Resources/de.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- p6Bzkb8Kgun7e5W3It8GRJDoO3o=
-
- hash2
-
- ODYvv19PiKX18dcAsxOZuJ1Ax2kqQG6ScQlNmuKCv+A=
-
- optional
-
-
- Resources/document_f4a.icns
-
- hash
-
- NF+iPglsC8QiNTaSEWE5VMgBKfQ=
-
- hash2
-
- Cy/N9I6eL/v8z5qhKg04+KPXg2MmzZ7TujkQb46r+6s=
-
-
- Resources/document_f4p.icns
-
- hash
-
- SJKz4nnY/fPUhBvWoj/JbYwuWio=
-
- hash2
-
- GpXEe6JCZyDHlQcbs2IMXWjA14vyagVEW76wHQ/eloI=
-
-
- Resources/document_f4v.icns
-
- hash
-
- EJsaVBu2jX3g4acELuPpnvhxD8Y=
-
- hash2
-
- AP2KMQyjAUbgifkGvEqBxqEHRlSHvZpu8AoKx8dxkSE=
-
-
- Resources/document_flv.icns
-
- hash
-
- 4AnNDv11jgt0QvZTvjvZ+o9u01Y=
-
- hash2
-
- 1AG9FUNJ7qLfvLE85aktwJt+3lZ9xyeAjeuXMnrpYrI=
-
-
- Resources/document_swf.icns
-
- hash
-
- sw1C9KSCzrfFq4omzJnbeSlS67I=
-
- hash2
-
- 3zDwyAj3of87NgsmYZxfGOVn9mPCZN02IbN+HQ5eNcU=
-
-
- Resources/en.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/en.lproj/MainMenu.nib
-
- hash
-
- cA2HoQMzeG77hpx3B+DDyppZrCQ=
-
- hash2
-
- E6S7BvzO6OVytE5pY26GWjCxxZJK8l543sQDDvz89WQ=
-
- optional
-
-
- Resources/en.lproj/PlayerUILocalizable.strings
-
- hash
-
- mttbOiFFtyOKbcpN/CKGUHAhmHw=
-
- hash2
-
- PfhFZll6ZfzeHSZ87ore6kaSV4xK8YqoaVow+7TUSfg=
-
- optional
-
-
- Resources/en.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- QnCOzYW8W7iBvF8ocmkiQpEGts0=
-
- hash2
-
- bR9HeUIUdbLABV6WV6vB/nrt4jhBhI+s1a+UoD09qcE=
-
- optional
-
-
- Resources/es.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/es.lproj/MainMenu.nib
-
- hash
-
- IXP0UIUGAy/B3B7p+pWAVj8Mhp0=
-
- hash2
-
- 7/l4BCjeIKHisZqWJzH+rm/Wb7Sotoh7I+aghJo5KGs=
-
- optional
-
-
- Resources/es.lproj/PlayerUILocalizable.strings
-
- hash
-
- QH9+cSjlKR9VwioLAmeXuCrDEeM=
-
- hash2
-
- VizyNoDvpWcYtzEeTmyr7CYilpFNsxJIFXMeClcrx3g=
-
- optional
-
-
- Resources/es.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- cJana3prz+poMLnWePHZDJAA23E=
-
- hash2
-
- 62ne7P7V5bUyWUAAfRm5WFjqSCbUSzLtWMIpXRKieQY=
-
- optional
-
-
- Resources/fr.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/fr.lproj/MainMenu.nib
-
- hash
-
- KxtV0UTaMgUu4J6ubTQOz5bzkYE=
-
- hash2
-
- egptpboxYJXIr8m3KkHvMU3dM52B/+GV6L2+WvT2DpQ=
-
- optional
-
-
- Resources/fr.lproj/PlayerUILocalizable.strings
-
- hash
-
- hAR7cvkDYrSbyXq3nNrSwnJ3Rko=
-
- hash2
-
- wsPWsV+974wgBHiS+idsx6rqSJ/lqb9IF172JnTNyXk=
-
- optional
-
-
- Resources/fr.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- zgL+fGyad5EKwj6Yib/4ciUkvNI=
-
- hash2
-
- ubVdt1ewv3z9tnq6d/QpL+YgEnbzjDUE4SxMflAHKMk=
-
- optional
-
-
- Resources/it.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/it.lproj/MainMenu.nib
-
- hash
-
- M4T8zn1CsC9KvzCYHaFAdUXzBy0=
-
- hash2
-
- rbGW3ZP0eR8py5m7Xg0SHcVeTLgO5jCVDfLhokywENg=
-
- optional
-
-
- Resources/it.lproj/PlayerUILocalizable.strings
-
- hash
-
- n/3g5Z022GCHSTmibO7DUQ93gJY=
-
- hash2
-
- NWZUmirYDRYXghbBUZs7UDHCVWGpiuUibmcKlqbKHQ0=
-
- optional
-
-
- Resources/it.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- t8OnJOGpWRy1iSKKBF+T8JmOZlc=
-
- hash2
-
- Ql242hzai7Te07aCEAVFlAMn3Ud9HqHJ3HMf89DIKno=
-
- optional
-
-
- Resources/ja.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/ja.lproj/MainMenu.nib
-
- hash
-
- 7aGWUz+2DAPYLKQH0ekVgWU1juY=
-
- hash2
-
- sdRdC7+burU7WKpImc2FESOJIaGHF/hkSrMSTJ+Zmzw=
-
- optional
-
-
- Resources/ja.lproj/PlayerUILocalizable.strings
-
- hash
-
- epE4rZEWFMnb+Z5sU8nPtUseqVs=
-
- hash2
-
- aCfHGxRBa/iS5yJTD2XqZs764VNLRlaRjXWvU+DhHjs=
-
- optional
-
-
- Resources/ja.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- WdnOxo8RkOeQ72rGFcEkzTUc99Y=
-
- hash2
-
- M7iXyIwclSs2xwzz0LvWM3p/ILAyNER84nEekyJm99I=
-
- optional
-
-
- Resources/ko.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/ko.lproj/MainMenu.nib
-
- hash
-
- OFMzXfz+GCA1UffqwBltYslMUAY=
-
- hash2
-
- BpTKwt/G8WC/MUEbi7p5aGm+gsdNFrxeR/GDCgZCRQU=
-
- optional
-
-
- Resources/ko.lproj/PlayerUILocalizable.strings
-
- hash
-
- uAz/1Q1BXm3CGzj2g/vLLG0+Mnc=
-
- hash2
-
- nKclksc+KEkc/OmwmJ2vxyYdxHhJlCsJeE5WD5SxI88=
-
- optional
-
-
- Resources/ko.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- PDW5p6TTQQ0bOOcIZtY73nBpL8E=
-
- hash2
-
- zO4TXeVZtFHEy4n8vfbqN37EI6Cjmd64afH+lC+aTTA=
-
- optional
-
-
- Resources/nl.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/nl.lproj/MainMenu.nib
-
- hash
-
- YmIFWE6Ap3yx7NdN7pATUKb2GV8=
-
- hash2
-
- /YufeFohCsTubJnCC1d9tb/7d2wwpnxiv3Wx+5J5Jbs=
-
- optional
-
-
- Resources/nl.lproj/PlayerUILocalizable.strings
-
- hash
-
- Wq/KjiAOeFxasTWndGbaeYzAkSg=
-
- hash2
-
- PVIMRDZZjD7GtT7BoKC5oMO2IQFPYZun1alruK1DIIQ=
-
- optional
-
-
- Resources/nl.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- 2mOKDtmf33ppZZdz9KWuKjV0MCg=
-
- hash2
-
- cKns3ssgMZygRe8sEzVTCctKAcNPf2ByL1y6zuGuJYg=
-
- optional
-
-
- Resources/pl.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/pl.lproj/MainMenu.nib
-
- hash
-
- ELDo+lSUPFB7uCrsppdYUZQJ4Ls=
-
- hash2
-
- h9/CdIsUZCVFUkHAaGkCJ80J1kBYMYr4v7StYyxcGaY=
-
- optional
-
-
- Resources/pl.lproj/PlayerUILocalizable.strings
-
- hash
-
- v/SKpWU+WCDtgQBntQ3RbrcoOBo=
-
- hash2
-
- iki83KpxgLanxLCOIRmlOXovUEtvOg7G3+iAktc/y80=
-
- optional
-
-
- Resources/pl.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- KurPjtb6vtchyvlgjJqLk1W7T/I=
-
- hash2
-
- lxc9llOCzng12lEhGf1HzEz2tz0bQCh3RECxzpvonsg=
-
- optional
-
-
- Resources/pt.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/pt.lproj/MainMenu.nib
-
- hash
-
- 7oB50y6/eW8fCHouf2FyHIetkhQ=
-
- hash2
-
- HyyA/RXWH7ubiFU2j+7t4AQ30H9cNtmPgetwYpUyJv4=
-
- optional
-
-
- Resources/pt.lproj/PlayerUILocalizable.strings
-
- hash
-
- 0XI2uXU8cASHdiGkxaSAmB6KJF8=
-
- hash2
-
- bScoFlCXpACmO8GjnymV67WkEssh67DepwEHUoo6PyQ=
-
- optional
-
-
- Resources/pt.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- ipnLxb9osseytQqNrWebmG1Zt0U=
-
- hash2
-
- NSUDLV6HxUus3QB92j8tzrEjIoZwRPQZlC9uRBQkUfs=
-
- optional
-
-
- Resources/ru.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/ru.lproj/MainMenu.nib
-
- hash
-
- GfwOWHOF/agzSm6qhv15eFhoJAQ=
-
- hash2
-
- ALeHTj/bQ/7RTtCt837HrCrHcVbmdpgO8/OjGEQiDQI=
-
- optional
-
-
- Resources/ru.lproj/PlayerUILocalizable.strings
-
- hash
-
- U//VxPa224u1EOBmb+ef5HPF5z8=
-
- hash2
-
- 59LoCB7bvXPDKFz7iGYn8NCOBoeoOC5GfMbhZykaRNI=
-
- optional
-
-
- Resources/ru.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- nS2Ei6hlaEq4yjOz24xBKNSUNAE=
-
- hash2
-
- 0EfqX08W3HCUeB7zGgiWK0SbU9XRis25ytlqgIacBn4=
-
- optional
-
-
- Resources/sv.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/sv.lproj/MainMenu.nib
-
- hash
-
- p2S0CT+MjMDBAA1PsoscinQH+D0=
-
- hash2
-
- HGkMuMRMEOFaDqLvinBBNZbndbeV03/zIrOCxDuggQI=
-
- optional
-
-
- Resources/sv.lproj/PlayerUILocalizable.strings
-
- hash
-
- 6Ng6Cc8qTXZBAfvVO6oKHxeicS0=
-
- hash2
-
- dn94zv9NF7Kwbcv+nbR4ch/LUhXKW/5rywbw548Mf80=
-
- optional
-
-
- Resources/sv.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- X843wzr99oR1l7akQozGHt044No=
-
- hash2
-
- +vSWaEKWOmUFKuZZ6QHQ8AdFRlgkxV+viqGs5uwwEgQ=
-
- optional
-
-
- Resources/tr.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/tr.lproj/MainMenu.nib
-
- hash
-
- 2WxpduLUo7fx/wbq8BVxgdDzCmw=
-
- hash2
-
- tmqOSIP0G6j4Bc/HqIJTX6vMRSluOfQ2HGKS4mDeRCs=
-
- optional
-
-
- Resources/tr.lproj/PlayerUILocalizable.strings
-
- hash
-
- 9vLIPyxJPs1WPyEYGMrmary4GGU=
-
- hash2
-
- HKwc5E1yYvArRimKmw72iJ79SyRLcVULDetCcPDq8TY=
-
- optional
-
-
- Resources/tr.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- K67p+bRCo6ykr5kgFp9jjaBnfPo=
-
- hash2
-
- eEQU+eHoNDDoFGLuEUeHmFfUF/2rLQzf/KLO778MOU8=
-
- optional
-
-
- Resources/zh_Hans.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/zh_Hans.lproj/MainMenu.nib
-
- hash
-
- wPojbwKTp8JOaVAfh+kXxx7A1nU=
-
- hash2
-
- b19cEng9XMO9CpiPoXGdsdKZC+qYBjQRbEqQw1FbG1k=
-
- optional
-
-
- Resources/zh_Hans.lproj/PlayerUILocalizable.strings
-
- hash
-
- trNb3nwxiOes0Z9penT+q6DNBIA=
-
- hash2
-
- NlcxiVJ7bzXItYlOOYULgshvvjTTT6MU/ahuW9KkO/M=
-
- optional
-
-
- Resources/zh_Hans.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- tdwerkYWytL/7me6VlurOW32psw=
-
- hash2
-
- oZHFO9mNe0frUhlVyZcY6eCBP4hIAhQx/0tA5ix5lZA=
-
- optional
-
-
- Resources/zh_Hant.lproj/InfoPlist.strings
-
- hash
-
- vhUTIvtAXah9gOxHz1L8TGZfTtc=
-
- hash2
-
- Yez7HyzJhp3oe1tpd3a1zHB9XkcxK9h2jp8IMSlPdwE=
-
- optional
-
-
- Resources/zh_Hant.lproj/MainMenu.nib
-
- hash
-
- 45tcDxAV8jUbSWDxYpvdQNTf6Hg=
-
- hash2
-
- YUbe47oNFMZpIT1RlTpAnYdTJLAoGnReU65LcYXSLt8=
-
- optional
-
-
- Resources/zh_Hant.lproj/PlayerUILocalizable.strings
-
- hash
-
- M8phM9+v+t0/bSDv1Mpoo9lRdXE=
-
- hash2
-
- 3FT0kpW6HNWwpOk0CDjbNoeqSOaV8iNalDrAArul1eE=
-
- optional
-
-
- Resources/zh_Hant.lproj/StandalonePlayerLocalizable.strings
-
- hash
-
- JSBPDMbuIDFZ4MHLO0TdlWI5w2k=
-
- hash2
-
- 3Y6krqaiAi38nFE4cYcHVeIAOu9MjZC55As6wxEzGaM=
-
- optional
-
-
-
- rules
-
- ^Resources/
-
- ^Resources/.*\.lproj/
-
- optional
-
- weight
- 1000
-
- ^Resources/.*\.lproj/locversion.plist$
-
- omit
-
- weight
- 1100
-
- ^Resources/Base\.lproj/
-
- weight
- 1010
-
- ^version.plist$
-
-
- rules2
-
- .*\.dSYM($|/)
-
- weight
- 11
-
- ^(.*/)?\.DS_Store$
-
- omit
-
- weight
- 2000
-
- ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/
-
- nested
-
- weight
- 10
-
- ^.*
-
- ^Info\.plist$
-
- omit
-
- weight
- 20
-
- ^PkgInfo$
-
- omit
-
- weight
- 20
-
- ^Resources/
-
- weight
- 20
-
- ^Resources/.*\.lproj/
-
- optional
-
- weight
- 1000
-
- ^Resources/.*\.lproj/locversion.plist$
-
- omit
-
- weight
- 1100
-
- ^Resources/Base\.lproj/
-
- weight
- 1010
-
- ^[^/]+$
-
- nested
-
- weight
- 10
-
- ^embedded\.provisionprofile$
-
- weight
- 20
-
- ^version\.plist$
-
- weight
- 20
-
-
-
-
diff --git a/HorseIsleServer/MPN00BS/flashplayer/WINDOWS/flash.exe b/HorseIsleServer/MPN00BS/flashplayer/WINDOWS/flash.exe
index 3cec515..6e7210d 100755
Binary files a/HorseIsleServer/MPN00BS/flashplayer/WINDOWS/flash.exe and b/HorseIsleServer/MPN00BS/flashplayer/WINDOWS/flash.exe differ
diff --git a/README.md b/README.md
index 992dedb..09a9ec6 100755
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# HISP - HorseIsleServer Program
+
+
[](https://github.com/islehorse/HISP/actions?query=workflow%3Abuild)
HISP is a "Server Emulator" for Horse Isle 1
@@ -10,55 +12,29 @@ well they essentailly run off "Server Emulators".
**tl;dr, think "Club Penguin Rewritten" but with Horse Isle.**
-
# Installation:
-Understand that there are differnet verisons of the HISP package;
+- Linux:
-HISPd - reimplementation of the Horse Isle 1.0 Server Software
-
-N00BS - a launcher for joining Multiplayer or running a local server for offline singleplayer play (deprecated)
-
-MPN00BS - Same as N00BS but multiplatform
-
-Game relies on a SQL Server, any should work, but i have only tested it with MariaDB,
-(and i guess SQLLite for the one used in the launcher version)
-
-- APT:
-
-Install on Ubuntu or Debian via APT:
+Install on Ubuntu via APT:
```
-sudo curl https://silica.codes/api/packages/islehorse/debian/repository.key -o /etc/apt/keyrings/forgejo-islehorse.asc
-echo "deb [signed-by=/etc/apt/keyrings/forgejo-islehorse.asc] https://silica.codes/api/packages/islehorse/debian debian main" | sudo tee -a /etc/apt/sources.list.d/hisp.list
+sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 34F644BC70C746CE48139C595129317F33AE659C
+sudo add-apt-repository 'deb http://deb.silica.codes debian main'
sudo apt update
+sudo apt install hisp
+```
+
+Install on Debian via APT:
+```
+sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 34F644BC70C746CE48139C595129317F33AE659C
+sudo bash -c 'echo "deb http://deb.silica.codes debian main">>/etc/apt/sources.list'
+sudo apt update
+sudo apt install hisp
```
Then simply edit /etc/hisp/server.properties & change to correct database credentials
and start the server using ``systemctl start hisp``
-- Manual Install:
-
-If you do not want to use APT, or are on Windows or MacOS, then you can simply download the latest HISPd binary:
-here https://islehorse.com/download/
-
-Run it and edit server.properties in the same folder as HISPd
-
-- Websites:
-
-Website is built in PHP 8.0 and based on the original Horse Isle Game Website
-requires the following PHP modules to be loaded; "intl", "mysqli" and "mysqlnd" on Ubuntu
-
-you must edit config.php and server.php to configure before it'll work properly.
-and is required to sign-up to the private server
-
-the master-site (equivilent to master.horseisle.com) can be found here:
-consists of sign up page, and server list,
-https://server.islehorse.com/binaries/download/HISP-Web-Master.zip
-
-and the game-site:
-contains the actual game client .SWFs themselves
-https://server.islehorse.com/binaries/download/HISP-Web-Game.zip
-
# Commands
(legend: <> Required, [] Optional)
```
@@ -121,19 +97,22 @@ https://server.islehorse.com/binaries/download/HISP-Web-Game.zip
!DANCE
```
+
+# Depends
+ HISP Depends on a SQL Server,
+ its been tested and known to work specifically with MariaDB, https://mariadb.org/
+ Set its information into server.properties or the server will just crash on first run /-/
# Building
- Building the server from source requires Microsoft .NET Core SDK, targetting version 8.0 https://dotnet.microsoft.com/download/dotnet-core
+ Building the server from source requires Microsoft .NET Core SDK, targetting version 7.0 https://dotnet.microsoft.com/download/dotnet-core
use ``dotnet build`` to build a debug build, (requires .NET Core Runtime) quickly or one of our publishing XML's
ex:
``dotnet publish -p:PublishProfile=Linux64.pubxml`` to to build it standalone.
+ NOTE: At this current time, building projects targeting .NET Core 7.0 inside Visual Studio requires Visual Studio 2022 PREVIEW and does not work in the stable build
- # Credits
-
-Li (They/Them)
-
-Supertiger (He/Him)
-
-Olebeck (They/Them)
+# Web Server
+ Theres a bunch of saved files from the Horse Isle 1.0 website, as well as some basic functionality to make it work
+ like the original site, the files are in the "HorseIsleWeb" folder, it requires PHP 8.0, with the modules "intl" and "mysqli"
+ - Li