diff --git a/.files b/.files
new file mode 100644
index 0000000..b036e29
Binary files /dev/null and b/.files differ
diff --git a/.meta b/.meta
new file mode 100644
index 0000000..3081d5b
--- /dev/null
+++ b/.meta
@@ -0,0 +1,19 @@
+
+ Seven Kingdoms: Ancient Adversaries
+ Seven Kingdoms made departures from the traditional real-time strategy models
+of "gather resources, build a base and army, and attack". The economic model
+bears more resemblance to a turn-based strategy game. It features an espionage
+system that allows players to train and control spies individually, who each
+have a spying skill that increases over time. The player is also responsible
+for catching spies in their own kingdom. Inns built within the game allow
+players to hire mercenaries of various occupations, skill levels, and races.
+Skilled spies of enemy races are essential to a well-conducted espionage
+program, and the player can bolster his forces by grabbing a skilled fighter
+or give ones own factories, mines, and towers of science, a boost by hiring a
+skilled professional.
+
+Enlight Software decided to release the game to the Open Source community
+in August 2009. At that time everything, but the music, was released under
+the GPL v2.
+
+
diff --git a/.rev b/.rev
new file mode 100644
index 0000000..617ab23
--- /dev/null
+++ b/.rev
@@ -0,0 +1,99 @@
+
+
+ f7647922163b74e6ed6bf07a59476a41
+ 2.14.4
+
+ dimstar_suse
+ -------------------------------------------------------------------
+Fri Nov 7 17:04:26 UTC 2014 - nemysis@gmx.ch
+
+- Use for Recommends:%{name}-music Recommends: instead of
+ Requires:%{name}-music, with dimstar help
+
+-------------------------------------------------------------------
+Tue Oct 14 06:30:23 UTC 2014 - nemysis@gmx.ch
+
+- Change Web URL
+
+-------------------------------------------------------------------
+Mon Oct 13 22:26:42 UTC 2014 - nemysis@gmx.ch
+
+- Binary file '7kaa-source-2.14.4.tar.bz2' has changed.
+
+-------------------------------------------------------------------
+Mon Oct 13 21:53:03 UTC 2014 - nemysis@gmx.ch
+
+- Change Source0 to use proper Web URL
+- Use check for openSUSE %if 0%{?suse_version}
+- Use for BuildRequires pkgconfig(SDL_net), pkgconfig(sdl)
+ instead of libSDL_net-devel, SDL-devel
+- Remove BuildRequires for pkgconfig
+
+-------------------------------------------------------------------
+Sat Oct 4 21:02:03 UTC 2014 - nemysis@gmx.ch
+
+- Change %fdupes
+
+-------------------------------------------------------------------
+Mon Sep 29 21:54:09 UTC 2014 - nemysis@gmx.ch
+
+- Initial package creation
+ 260266
+
+
+ 10740ccca3dc49afb1c6598444c0a0e2
+ 2.14.5
+
+ dimstar_suse
+ Fixed the last submission with a proper patch (reported upstream) in the same ticket as the other one.
+ 334824
+
+
+ 45089bda8b7f2a6be3ca4051920807d4
+ 2.14.5
+
+ dimstar_suse
+ 1
+ 402814
+
+
+ c293766aaee27eb7d5f38ab707844c91
+ 2.14.6
+
+ dimstar_suse
+ 1
+ 424877
+
+
+ 7a3bf078ae8cdf59efb896fb8c1e9872
+ 2.14.7
+
+ dimstar_suse
+
+ 539085
+
+
+ efd14513d6e7221b7fe8c1ced459b538
+ 2.15.1
+
+ coolo
+
+ 677701
+
+
+ 0af470961ccc4db12513c5ce1389811d
+ 2.15.3
+
+ dimstar_suse
+
+ 789825
+
+
+ de446ef94582ddc3b77ebe7dfc5c7c7d
+ 2.15.4p1
+
+ dimstar_suse
+
+ 821419
+
+
diff --git a/7kaa-2.15.4p1.tar.xz b/7kaa-2.15.4p1.tar.xz
new file mode 120000
index 0000000..08c22fe
--- /dev/null
+++ b/7kaa-2.15.4p1.tar.xz
@@ -0,0 +1 @@
+/ipfs/bafybeict4khfq5xag5bqbzauzmcwm76x2rqrwyrwlsqpdobgitj6cigo6e
\ No newline at end of file
diff --git a/7kaa-no-return-in-nonvoid-function.patch b/7kaa-no-return-in-nonvoid-function.patch
new file mode 100644
index 0000000..5a94269
--- /dev/null
+++ b/7kaa-no-return-in-nonvoid-function.patch
@@ -0,0 +1,12 @@
+diff -Nur 7kaa-2.15.4p1/include/OFIRM.h new/include/OFIRM.h
+--- 7kaa-2.15.4p1/include/OFIRM.h 2020-07-11 04:47:28.000000000 +0200
++++ new/include/OFIRM.h 2020-07-13 17:12:35.540867933 +0200
+@@ -322,7 +322,7 @@
+ void detect_info_both();
+
+ virtual void put_info(int refreshFlag) {;}
+- virtual int detect_info() {;}
++ virtual int detect_info() {return 0;}
+ void sort_worker();
+
+ void process_animation();
diff --git a/7kaa.changes b/7kaa.changes
new file mode 100644
index 0000000..38678be
--- /dev/null
+++ b/7kaa.changes
@@ -0,0 +1,193 @@
+-------------------------------------------------------------------
+Sun Jul 12 15:49:42 UTC 2020 - Carsten Ziepke
+
+- Update to 2.15.4p1
+ * This is a patch release to fix a few issues with 2.15.4.
+ All users should upgrade.
+- Update to 2.15.4
+ * Fixed a problem in multiplayer that halted the game play.
+ * Added option to play with the original seven kingdoms, and
+ enabled on original scenarios.
+ * Apply the leadership bonus when the general is in fort for
+ defending soldiers in range.
+ * Fixed the mobile general range calculation for the leadership
+ bonus to not apply to the troop anywhere on the map.
+ * Apply the leadership bonus when the general is on a ship for
+ defending soldiers in range.
+ * Updated translations.
+ * Added hotkeys for managing the build menu in the War Factory,
+ Harbor, and Town.
+ * Restored support for real full screen resolution that requires
+ a screen mode change.
+ * Improved dynamic UI button and text layout.
+ * Added Polish translation.
+ * Added trade locations to the trade report.
+ * Sort and filter trade locations based on the map selected
+ caravan.
+ * Allow setting stops using the trade report.
+ * Allow copying trade routes using the trade report.
+- Add 7kaa-no-return-in-nonvoid-function.patch
+- Clean with spec-cleaner
+
+-------------------------------------------------------------------
+Fri Mar 27 09:34:45 UTC 2020 - Christophe Giboudeaux
+
+- Update to 2.15.3. Changes since 2.15.2:
+ * Fixed corrupt characters and fields in various in game messages.
+ * Improved translation support.
+ * Updated translations.
+ * Added some UI improvements.
+ * Fixed some crashing issues related to spies.
+ * Standardized on FPU code generation for better cross-platform
+ compatibility.
+ * Added more advanced config options.
+ * Improved manual.
+ * Added key binding support.
+ * Prevented chat keystrokes registering as a hotkey too.
+ * Fixed sometimes hiring wrong unit in the inn.
+ * Added scenario advanced config presets to restore default
+ scenario game play to original game design parameters.
+ * Ensure screen redraw when dropping spy identity.
+ * Improved alternate font set.
+ * Added scroll button for long tutor messages.
+ * Removed gong sound for unsent AI diplomatic messages.
+ * Re-enabled AI ability to request direct military aid;
+ expect allied AI to work together on defending now.
+ * Removed uninitialized parameter in Caravan CRC check.
+ * Removed improper variable-size cast, causing incorrect
+ action processing on 64-bit platforms.
+ * Correct replay initialization for weather sync.
+
+-------------------------------------------------------------------
+Tue Feb 19 20:32:22 UTC 2019 - Matthias Eliasson
+
+- Update to 2.15.1
+ * Fixed desync on mobilizing workers.
+ * Fixed desync on troop sortie, by making troop sorting deterministic.
+ * Fixed desync on AI attack planning, by making AI fort sorting deterministic.
+ * Fixed error that caused multiplayer save files appear out of sync.
+ * Changed the Button class to not block on holding down the mouse button,
+ smoothing multiplayer games when alot of clicking may be happening.
+ * Prevent mobilizing foreign workers from your Firms, however they may be
+ fired back to their home town.
+ * Only enable mobilize worker button when the firm is staffed with non-foreign
+ workers.
+ * Prefer IPv4 addressing for 7kfans.com match-making.
+ * Fixed ambiguity in some translations.
+ * Repack structures for Crc checking due to pointer sizing.
+ * Improved cross-compilation and platform support.
+ * Uppercased the data and user files, as they are supported in the code,
+ maintaining consistency and without needing to guess case.
+ * Fixed missing Fryhtan encyclopedia picture on some systems.
+ * Fixed observation mode visibility when playing a replay.
+ * Added support for center and right paragraph justification.
+ * Packagers please note that the music files must be in upper-case now, see
+ the latest download for the music.
+- Clean with spec-cleaner
+- Make sure we recommend new 7kaa-music version
+
+-------------------------------------------------------------------
+Sat Nov 4 19:40:35 UTC 2017 - aavindraa@gmail.com
+
+- Update to 2.14.7
+ * improving usability of the 7K multiplayer service at 7kfans.com
+ * added NAT punch-through support when using 7kfans.com, which will
+ make online play easier and more reliable.
+ * Game balancing changes and fixes, making the game more challenging
+ + The Fryhtans can attack more often.
+ + Spies are more stealthy.
+ + Greater being mana exploit has been fixed.
+ + Harder to brutally capture towns.
+- File under correct Group
+- Lint .spec file
+- Rebase gcc6_char_cast.patch
+
+-------------------------------------------------------------------
+Mon Sep 5 17:54:01 UTC 2016 - nemysis@openSUSE.org
+
+- Update to 2.14.6, announce message:
+
+ * Added support for 7kfans.com match-making.
+ * Added LAN game browsing support.
+ * Added Mobilize Worker button on firms. (sraboy/Microvirus)
+ * Improvements to mouse acceleration.
+ * Fixes to mouse movement in fullscreen mode.
+ * Fixed a bug with 64-bit multiplayer matches.
+ * Begun translation work. (toaster)
+ * Fix character encoding with accented characters. (MicroVirus)
+ * Bugfixes…
+
+- Remove obsolete patches 7kaa-2.14.5.patch and 7kaa-2.14.5_overflow.patch,
+ changed by Upstream
+- Add description for patch gcc6_char_cast.patch
+- Remove check %if 0%{?suse_version}, because is only for openSUSE
+
+-------------------------------------------------------------------
+Thu Jun 16 14:03:33 UTC 2016 - normand@linux.vnet.ibm.com
+
+- new gcc6_char_cast.patch proposal for upstream issue
+ https://github.com/the3dfxdude/7kaa/issues/63
+
+-------------------------------------------------------------------
+Tue Sep 29 15:06:37 UTC 2015 - opensuse@dstoecker.de
+
+- patch buffer overflow (7kaa-2.14.5_overflow.patch)
+
+-------------------------------------------------------------------
+Fri Sep 25 18:32:04 UTC 2015 - nemysis@openSUSE.org
+
+- Update to 2.14.5, announce message:
+
+ * Switched to using SDL2.
+ * Gained support for full-screen stretching.
+ * Gained support for MacOS.
+ * Switched to using enet, replacing SDL_net.
+ * Audio code improvements.
+ * The multiplayer connection code has stablized.
+ * New game hotkeys.
+ * Migrate population across extended town networks.
+ * Added ability to migrate 10 people at a time across between towns.
+ * Gettext translation support.
+ * Several bug fixes.
+
+- Add patch 7kaa-2.14.5.patch, - fix build
+- Remove BuildRequires for desktop-file-utils
+- Add BuildRequires, changed by Upstream for enet-devel and sdl2
+- Remove BuildRequires, changed by Upstream for SDL_net and sdl
+- Fix build with gcc5, add CXXFLAGS="%{optflags} -fno-strict-aliasing"
+
+-------------------------------------------------------------------
+Fri Nov 7 17:04:26 UTC 2014 - nemysis@gmx.ch
+
+- Use for Recommends:%{name}-music Recommends: instead of
+ Requires:%{name}-music, with dimstar help
+
+-------------------------------------------------------------------
+Tue Oct 14 06:30:23 UTC 2014 - nemysis@gmx.ch
+
+- Change Web URL
+
+-------------------------------------------------------------------
+Mon Oct 13 22:26:42 UTC 2014 - nemysis@gmx.ch
+
+- Binary file '7kaa-source-2.14.4.tar.bz2' has changed.
+
+-------------------------------------------------------------------
+Mon Oct 13 21:53:03 UTC 2014 - nemysis@gmx.ch
+
+- Change Source0 to use proper Web URL
+- Use check for openSUSE %if 0%{?suse_version}
+- Use for BuildRequires pkgconfig(SDL_net), pkgconfig(sdl)
+ instead of libSDL_net-devel, SDL-devel
+- Remove BuildRequires for pkgconfig
+
+-------------------------------------------------------------------
+Sat Oct 4 21:02:03 UTC 2014 - nemysis@gmx.ch
+
+- Change %fdupes
+
+-------------------------------------------------------------------
+Mon Sep 29 21:54:09 UTC 2014 - nemysis@gmx.ch
+
+- Initial package creation
+
diff --git a/7kaa.desktop b/7kaa.desktop
new file mode 100644
index 0000000..f0c2d8b
--- /dev/null
+++ b/7kaa.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=Seven Kingdoms
+GenericName=Seven Kingdoms
+Comment=Seven Kingdoms: Ancient Adversaries
+Type=Application
+Exec=7kaa
+Icon=7kaa
+Categories=Game;StrategyGame;
+StartupNotify=false
\ No newline at end of file
diff --git a/7kaa.png b/7kaa.png
new file mode 100644
index 0000000..988108c
Binary files /dev/null and b/7kaa.png differ
diff --git a/7kaa.spec b/7kaa.spec
new file mode 100644
index 0000000..961928a
--- /dev/null
+++ b/7kaa.spec
@@ -0,0 +1,94 @@
+#
+# spec file for package 7kaa
+#
+# Copyright (c) 2020 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+
+Name: 7kaa
+Version: 2.15.4p1
+Release: 0
+Summary: Seven Kingdoms: Ancient Adversaries
+License: GPL-2.0-only
+Group: Amusements/Games/Strategy/Real Time
+URL: https://7kfans.com/
+Source0: https://github.com/the3dfxdude/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.xz
+Source1: %{name}.png
+Source2: %{name}.desktop
+# PATCH-FIX-UPSTREAM - gcc6_char_cast.patch -- https://github.com/the3dfxdude/7kaa/issues/63
+Patch0: gcc6_char_cast.patch
+# PATCH-FIX-UPSTREAM - 7kaa-no-return-in-nonvoid-function.patch -- gh#the3dfxdude/7kaa#192
+Patch1: 7kaa-no-return-in-nonvoid-function.patch
+BuildRequires: curl-devel
+BuildRequires: fdupes
+BuildRequires: gcc-c++
+BuildRequires: pkgconfig
+BuildRequires: update-desktop-files
+BuildRequires: pkgconfig(libenet)
+BuildRequires: pkgconfig(openal)
+BuildRequires: pkgconfig(sdl2)
+Recommends: %{name}-music >= 20181228
+
+%description
+Seven Kingdoms made departures from the traditional real-time strategy models
+of "gather resources, build a base and army, and attack". The economic model
+bears more resemblance to a turn-based strategy game. It features an espionage
+system that allows players to train and control spies individually, who each
+have a spying skill that increases over time. The player is also responsible
+for catching spies in their own kingdom. Inns built within the game allow
+players to hire mercenaries of various occupations, skill levels, and races.
+Skilled spies of enemy races are essential to a well-conducted espionage
+program, and the player can bolster his forces by grabbing a skilled fighter
+or give ones own factories, mines, and towers of science, a boost by hiring a
+skilled professional.
+
+Enlight Software decided to release the game to the Open Source community
+in August 2009. At that time everything, but the music, was released under
+the GPL v2.
+
+%prep
+%setup -q
+%patch0 -p1
+%patch1 -p1
+
+%build
+export CXXFLAGS="%{optflags} -fno-strict-aliasing"
+%configure --docdir=%{_docdir}/%{name}
+%make_build
+
+%install
+%make_install
+
+# install icon
+install -Dm 0644 %{SOURCE1} %{buildroot}%{_datadir}/pixmaps/%{name}.png
+
+# install Desktop file
+install -Dm 0644 %{SOURCE2} %{buildroot}%{_datadir}/applications/%{name}.desktop
+
+%suse_update_desktop_file %{name}
+%fdupes -s %{buildroot}%{_prefix}
+%find_lang %{name}
+
+# remove duplicate COPYING file
+rm -f %{buildroot}%{_docdir}/7kaa/COPYING
+
+%files -f %{name}.lang
+%license COPYING
+%doc README
+%{_bindir}/%{name}
+%{_datadir}/applications/%{name}.desktop
+%{_datadir}/pixmaps/%{name}.png
+%{_datadir}/%{name}
+
+%changelog
diff --git a/gcc6_char_cast.patch b/gcc6_char_cast.patch
new file mode 100644
index 0000000..d522c10
--- /dev/null
+++ b/gcc6_char_cast.patch
@@ -0,0 +1,646 @@
+---
+ src/OBULLET.cpp | 4
+ src/OGAMMAIN.cpp | 2
+ src/OUNITAAT.cpp | 12 -
+ src/OUNITATB.cpp | 512 ++++++++++++++++++++++++------------------------
+ src/OU_MARI.cpp | 6
+ 5 files changed, 268 insertions(+), 268 deletions(-)
+
+Index: a/src/OBULLET.cpp
+===================================================================
+--- a/src/OBULLET.cpp
++++ b/src/OBULLET.cpp
+@@ -38,9 +38,9 @@ const int SCAN_RANGE = SCAN_RADIUS * 2 +
+
+ // from the closet to the far
+ static char spiral_x[SCAN_RANGE*SCAN_RANGE] =
+- { 0, 0,-1, 0, 1,-1,-1, 1, 1, 0,-2, 0, 2, -1,-2,-2,-1, 1, 2, 2, 1,-2,-2, 2, 2};
++ { 0, 0,(char)-1, 0, 1,(char)-1,(char)-1, 1, 1, 0,(char)-2, 0, 2, (char)-1,(char)-2,(char)-2,(char)-1, 1, 2, 2, 1,(char)-2,(char)-2, 2, 2};
+ static char spiral_y[SCAN_RANGE*SCAN_RANGE] =
+- { 0,-1, 0, 1, 0,-1, 1, 1,-1,-2, 0, 2, 0, -2,-1, 1, 2, 2, 1,-1,-2,-2, 2, 2,-2};
++ { 0,(char)-1, 0, 1, 0,(char)-1, 1, 1,(char)-1,(char)-2, 0, 2, 0, (char)-2,(char)-1, 1, 2, 2, 1,(char)-1,(char)-2,(char)-2, 2, 2,(char)-2};
+
+ //--------- Begin of function Bullet::Bullet -------//
+
+Index: a/src/OGAMMAIN.cpp
+===================================================================
+--- a/src/OGAMMAIN.cpp
++++ b/src/OGAMMAIN.cpp
+@@ -671,7 +671,7 @@ void Game::multi_player_menu(int lobbied
+
+ static char multi_player_option_flag[MULTI_PLAYER_OPTION_COUNT] =
+ {
+- -1, 1, 1, -1, 1,
++ (char)-1, 1, 1, (char)-1, 1,
+ };
+
+ game_mode = GAME_MULTI_PLAYER;
+Index: a/src/OUNITAAT.cpp
+===================================================================
+--- a/src/OUNITAAT.cpp
++++ b/src/OUNITAAT.cpp
+@@ -1513,8 +1513,8 @@ void UnitArray::arrange_units_in_group(i
+ //
+ int UnitArray::analyse_surround_location(int targetXLoc, int targetYLoc, int targetWidth, int targetHeight, char mobileType)
+ {
+- static char xIncreTable[4] = { 1, 0, -1, 0};
+- static char yIncreTable[4] = { 0, 1, 0, -1};
++ static char xIncreTable[4] = { 1, 0, (char)-1, 0};
++ static char yIncreTable[4] = { 0, 1, 0, (char)-1};
+
+ err_when(targetWidth<1 || targetWidth>4);
+ Location *locPtr;
+@@ -1581,10 +1581,10 @@ void UnitArray::check_nearby_location(in
+ #endif
+ debug_result_check(analyseResult, targetWidth, targetHeight);
+
+- static char leftXIncreTable[4] = { 1, 0, -1, 0};
+- static char leftYIncreTable[4] = { 0, 1, 0, -1};
+- static char rightXIncreTable[4] = { -1, 0, 1, 0};
+- static char rightYIncreTable[4] = { 0, 1, 0, -1};
++ static char leftXIncreTable[4] = { 1, 0, (char)-1, 0};
++ static char leftYIncreTable[4] = { 0, 1, 0, (char)-1};
++ static char rightXIncreTable[4] = { (char)-1, 0, 1, 0};
++ static char rightYIncreTable[4] = { 0, 1, 0, (char)-1};
+
+ err_when(targetWidth<1 || targetWidth>4);
+ Location *locPtr;
+Index: a/src/OUNITATB.cpp
+===================================================================
+--- a/src/OUNITATB.cpp
++++ b/src/OUNITATB.cpp
+@@ -45,294 +45,294 @@
+ //------------------------------------------------------------------------------//
+
+ static char attack_x_offset11[ATTACK_DIR][8] // target size 1x1
+-= { { -1, -1, -1, 0, 0, 1, 1, 1},
+- { -1, 0, -1, 1, -1, 1, 0, 1},
+- { 0, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 0, 0, -1, -1, -1},
+- { 1, 0, 1, -1, 1, -1, 0, -1},
+- { 0, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, 0, 1, 1}};
++= { { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 1, 0, 1},
++ { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 1, 0, 1, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, 0, 1, 1}};
+ static char attack_x_offset12[ATTACK_DIR][10] // target size 1x2
+-= { { -1, -1, -1, -1, 0, 0, 1, 1, 1, 1},
+- { -1, -1, 0, -1, 1, -1, 1, 0, 1, 1},
+- { 0, 1, -1, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 1, 1, 0, 1, -1, 1, -1, 0, -1, -1},
+- { 0, -1, 1, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 1, 0, 1, 1}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, 0, 1, 1},
++ { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, 0, 1, 1}};
+ static char attack_x_offset13[ATTACK_DIR][12] // target size 1x3
+-= { { -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 1, 1},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, 0, 1, 1},
+- { 0, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 0, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, 0, 1, 1}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1, 1, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, 1},
++ { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, 1}};
+ static char attack_x_offset14[ATTACK_DIR][14] // target size 1x4
+-= { { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 1, 0, 1, 1},
+- { 0, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 0, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 1, 0, 1, 1}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1, 1, 1, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, 1},
++ { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, 1}};
+ static char attack_x_offset21[ATTACK_DIR][10] // target size 2x1
+-= { { -1, -1, -1, 0, 0, 1, 1, 2, 2, 2},
+- { -1, 0, -1, 1, -1, 2, 0, 2, 1, 2},
+- { 0, 1, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 1, 2, 0, 2, -1, 1, -1, 0, -1},
+- { 2, 2, 2, 1, 1, 0, 0, -1, -1, -1},
+- { 2, 1, 2, 0, 2, -1, 1, -1, 0, -1},
+- { 0, 1, -1, 2, -1, 2, -1, 2, 0, 1},
+- { -1, 0, -1, 1, -1, 2, 0, 2, 1, 2}};
++= { { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 2, 1, 2},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 1, 2, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 2, 1, 2, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 2, 1, 2}};
+ static char attack_x_offset22[ATTACK_DIR][12] // target size 2x2
+-= { { -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 2, 2},
+- { -1, 0, -1, 1, -1, 2, -1, 2, 0, 2, 1, 2},
+- { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 2, 1, 2, 0, 2, -1, 1, -1, 0, -1, -1},
+- { 2, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 2, 1, 2, 0, 2, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 2, -1, 2, -1, 2, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 2, 0, 2, 1, 2, 2}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 2, 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 2, 1, 2, 2}};
+ static char attack_x_offset23[ATTACK_DIR][14] // target size 2x3
+-= { { -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 2, 2, 2},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, 0, 2, 1, 2, 2},
+- { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 2, 2, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, 0, 2, 1, 2, 2}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2, 2, 2},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 2, 2, 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2}};
+ static char attack_x_offset24[ATTACK_DIR][16] // target size 2x4
+-= { { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, -1, 2, 0, 2, 1, 2, 2},
+- { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, -1, 2, 0, 2, 1, 2, 2}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2}};
+ static char attack_x_offset31[ATTACK_DIR][12] // target size 3x1
+-= { { -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 3, 2, 3},
+- { 1, 2, 0, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 2, 3, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1},
+- { 3, 2, 3, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 3, 2, 3}};
++= { { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 3, 2, 3},
++ { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 2, 3, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 3, 2, 3, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 3, 2, 3}};
+ static char attack_x_offset32[ATTACK_DIR][14] // target size 3x2
+-= { { -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 3, 1, 3, 2, 3},
+- { 1, 2, 0, 3, -1, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 2, 3, 1, 3, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 3, 2, 3, 1, 3, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 3, 1, 3, 2, 3}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 3, 1, 3, 2, 3},
++ { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 2, 3, 1, 3, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 3, 2, 3, 1, 3, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 3, 1, 3, 2, 3}};
+ static char attack_x_offset33[ATTACK_DIR][16] // target size 3x3
+-= { { -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 3, 0, 3, 1, 3, 2, 3},
+- { 1, 2, 0, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 3, 2, 3, 1, 3, 0, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 3, 2, 3, 1, 3, 0, 3, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, 0, 3, 1, 3, 2, 3, 3}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 3, 0, 3, 1, 3, 2, 3},
++ { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 3, 2, 3, 1, 3, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 3, 2, 3, 1, 3, 0, 3, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 3, 1, 3, 2, 3, 3}};
+ static char attack_x_offset34[ATTACK_DIR][18] // target size 3x4
+-= { { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3},
+- { 1, 2, 0, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 3, 2, 3, 1, 3, 0, 3, -1, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 3, 3, 2, 3, 1, 3, 0, 3, -1, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 3, 0, 3, 1, 3, 2, 3, 3},
++ { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 3, 2, 3, 1, 3, 0, 3, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 3, 3, 2, 3, 1, 3, 0, 3, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 3, 0, 3, 1, 3, 2, 3, 3}};
+ static char attack_x_offset41[ATTACK_DIR][14] // target size 4x1
+-= { { -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 4, 2, 4, 3, 4},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 3, 4, 2, 4, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 4, 2, 4, 3, 4}};
++= { { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 4, 2, 4, 3, 4},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 3, 4, 2, 4, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 4, 2, 4, 3, 4}};
+ static char attack_x_offset42[ATTACK_DIR][16] // target size 4x2
+-= { { -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 4, 1, 4, 2, 4, 3, 4},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 4, 1, 4, 2, 4, 3, 4}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 4, 1, 4, 2, 4, 3, 4},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 4, 1, 4, 2, 4, 3, 4}};
+ static char attack_x_offset43[ATTACK_DIR][18] // target size 4x3
+-= { { -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4}};
+ static char attack_x_offset44[ATTACK_DIR][20] // target size 4x4
+-= { { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 2, 1, 3, 0, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, 3, 0, 2, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4}};
++= { { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 2, 1, 3, 0, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 3, 0, 2, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4}};
+
+ static char attack_y_offset11[ATTACK_DIR][8] // target size 1x1
+-= { { 0, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 0, 0, -1, -1, -1},
+- { 1, 0, 1, -1, 1, -1, 0, -1},
+- { 0, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, 0, 1, 1},
+- { -1, -1, -1, 0, 0, 1, 1, 1},
+- { -1, 0, -1, 1, -1, 1, 0, 1}};
++= { { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 1, 0, 1, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, 0, 1, 1},
++ { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 1, 0, 1}};
+ static char attack_y_offset12[ATTACK_DIR][10] // target size 1x2
+-= { { 0, 1, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 1, 2, 0, 2, -1, 1, -1, 0, -1},
+- { 2, 2, 2, 1, 1, 0, 0, -1, -1, -1},
+- { 2, 1, 2, 0, 2, -1, 1, -1, 0, -1},
+- { 0, 1, -1, 2, -1, 2, -1, 2, 0, 1},
+- { -1, 0, -1, 1, -1, 2, 0, 2, 1, 2},
+- { -1, -1, -1, 0, 0, 1, 1, 2, 2, 2},
+- { -1, 0, -1, 1, -1, 2, 0, 2, 1, 2}};
++= { { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 1, 2, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 2, 1, 2, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 2, 1, 2},
++ { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 2, 1, 2}};
+ static char attack_y_offset13[ATTACK_DIR][12] // target size 1x3
+-= { { 1, 2, 0, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 2, 3, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1},
+- { 3, 2, 3, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 3, 2, 3},
+- { -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 3, 2, 3}};
++= { { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 2, 3, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 3, 2, 3, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 3, 2, 3},
++ { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 3, 2, 3}};
+ static char attack_y_offset14[ATTACK_DIR][14] // target size 1x4
+-= { { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 3, 4, 2, 4, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 3, 0, 2, -1, 1, -1, 0, -1},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 4, 2, 4, 3, 4},
+- { -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, 0, 3, 1, 4, 2, 4, 3, 4}};
++= { { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 3, 4, 2, 4, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 3, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 4, 2, 4, 3, 4},
++ { (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 3, 1, 4, 2, 4, 3, 4}};
+ static char attack_y_offset21[ATTACK_DIR][10] // target size 2x1
+-= { { 0, 1, -1, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 1, 1, 0, 1, -1, 1, -1, 0, -1, -1},
+- { 0, -1, 1, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 1, 0, 1, 1},
+- { -1, -1, -1, -1, 0, 0, 1, 1, 1, 1},
+- { -1, -1, 0, -1, 1, -1, 1, 0, 1, 1}};
++= { { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, 0, 1, 1},
++ { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, 0, 1, 1}};
+ static char attack_y_offset22[ATTACK_DIR][12] // target size 2x2
+-= { { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 2, 1, 2, 0, 2, -1, 1, -1, 0, -1, -1},
+- { 2, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 2, 1, 2, 0, 2, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 2, -1, 2, -1, 2, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 2, 0, 2, 1, 2, 2},
+- { -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 2, 2},
+- { -1, 0, -1, 1, -1, 2, -1, 2, 0, 2, 1, 2}};
++= { { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 2, 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, 0, 2, 1, 2, 2},
++ { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2}};
+ static char attack_y_offset23[ATTACK_DIR][14] // target size 2x3
+-= { { 1, 2, 0, 3, -1, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 2, 3, 1, 3, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 3, 2, 3, 1, 3, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 3, 1, 3, 2, 3},
+- { -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 3, 1, 3, 2, 3}};
++= { { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 2, 3, 1, 3, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 3, 2, 3, 1, 3, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 3, 1, 3, 2, 3},
++ { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 3, 1, 3, 2, 3}};
+ static char attack_y_offset24[ATTACK_DIR][16] // target size 2x4
+-= { { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 4, 1, 4, 2, 4, 3, 4},
+- { -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, -1, 3, 0, 4, 1, 4, 2, 4, 3, 4}};
++= { { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 4, 1, 4, 2, 4, 3, 4},
++ { (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 4, 1, 4, 2, 4, 3, 4}};
+ static char attack_y_offset31[ATTACK_DIR][12] // target size 3x1
+-= { { 0, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 0, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, 0, 1, 1},
+- { -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 1, 1},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, 0, 1, 1}};
++= { { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, 1},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1, 1, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, 1}};
+ static char attack_y_offset32[ATTACK_DIR][14] // target size 3x2
+-= { { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 2, 2, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, 0, 2, 1, 2, 2},
+- { -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 2, 2, 2},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, 0, 2, 1, 2, 2}};
++= { { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 2, 2, 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2, 2, 2},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2}};
+ static char attack_y_offset33[ATTACK_DIR][16] // target size 3x3
+-= { { 1, 2, 0, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 3, 2, 3, 1, 3, 0, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 3, 2, 3, 1, 3, 0, 3, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, 0, 3, 1, 3, 2, 3, 3},
+- { -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 3, 0, 3, 1, 3, 2, 3}};
++= { { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 3, 2, 3, 1, 3, 0, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 3, 2, 3, 1, 3, 0, 3, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, 0, 3, 1, 3, 2, 3, 3},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 3, 0, 3, 1, 3, 2, 3}};
+ static char attack_y_offset34[ATTACK_DIR][18] // target size 3x4
+-= { { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4},
+- { -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4}};
++= { { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4}};
+ static char attack_y_offset41[ATTACK_DIR][14] // target size 4x1
+-= { { 0, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 0},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 1, 1, 0, 1, -1, 1, -1, 1, -1, 1, -1, 0, -1, -1},
+- { 0, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, 0},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 1, 0, 1, -1},
+- { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1},
+- { -1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 1, 0, 1, 1}};
++= { { 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 1, 1, 1, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 1, 1, 0, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, (char)-1},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 1, 1, 1, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 1, (char)-1, 1, (char)-1, 1, 0, 1, 1}};
+ static char attack_y_offset42[ATTACK_DIR][16] // target size 4x2
+-= { { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 2, 2, 1, 2, 0, 2, -1, 2, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 0, 1, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, -1, 2, 0, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, -1, 2, 0, 2, 1, 2, 2},
+- { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 2, -1, 2, 0, 2, 1, 2, 2}};
++= { { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 2, 2, 1, 2, 0, 2, (char)-1, 2, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 0, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 2, (char)-1, 2, 0, 2, 1, 2, 2}};
+ static char attack_y_offset43[ATTACK_DIR][18] // target size 4x3
+-= { { 1, 2, 0, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 2, 0, 1},
+- { 3, 3, 2, 3, 1, 3, 0, 3, -1, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 3, 3, 2, 3, 1, 3, 0, 3, -1, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 1, 0, 2, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, -1, 3, 0, 2, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3},
+- { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3}};
++= { { 1, 2, 0, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 2, 0, 1},
++ { 3, 3, 2, 3, 1, 3, 0, 3, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 3, 3, 2, 3, 1, 3, 0, 3, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 1, 0, 2, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, (char)-1, 3, 0, 2, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 3, 0, 3, 1, 3, 2, 3, 3},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 3, 0, 3, 1, 3, 2, 3, 3}};
+ static char attack_y_offset44[ATTACK_DIR][20] // target size 4x4
+-= { { 1, 2, 0, 3, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, 0, 3, 1, 2},
+- { 4, 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1, -1},
+- { 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1},
+- { 4, 3, 4, 2, 4, 1, 4, 0, 4, -1, 4, -1, 3, -1, 2, -1, 1, -1, 0, -1},
+- { 2, 1, 3, 0, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, 3, 0, 2, 1},
+- { -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4},
+- { -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4},
+- { -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4}};
++= { { 1, 2, 0, 3, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, 0, 3, 1, 2},
++ { 4, 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1, (char)-1},
++ { 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, 0, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1},
++ { 4, 3, 4, 2, 4, 1, 4, 0, 4, (char)-1, 4, (char)-1, 3, (char)-1, 2, (char)-1, 1, (char)-1, 0, (char)-1},
++ { 2, 1, 3, 0, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 4, (char)-1, 3, 0, 2, 1},
++ { (char)-1, (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4},
++ { (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, (char)-1, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4},
++ { (char)-1, 0, (char)-1, 1, (char)-1, 2, (char)-1, 3, (char)-1, 4, (char)-1, 4, 0, 4, 1, 4, 2, 4, 3, 4}};
+
+ //--------- Begin of function UnitArray::get_target_x_offset ---------//
+ // return x offset
+Index: a/src/OU_MARI.cpp
+===================================================================
+--- a/src/OU_MARI.cpp
++++ b/src/OU_MARI.cpp
+@@ -552,7 +552,7 @@ int UnitMarine::is_on_coast()
+ //--------- Begin of function UnitMarine::extra_move ---------//
+ void UnitMarine::extra_move()
+ {
+- static char offset[3] = {0, 1, -1};
++ static char offset[3] = {0, 1, (char)-1};
+
+ int curXLoc = next_x_loc();
+ int curYLoc = next_y_loc();
+@@ -619,8 +619,8 @@ void UnitMarine::extra_move()
+
+ void UnitMarine::process_extra_move()
+ {
+- static short vector_x_array[] = { 0, 1, 1, 1, 0, -1, -1, -1}; // default vectors, temporary only
+- static short vector_y_array[] = {-1, -1, 0, 1, 1, 1, 0, -1};
++ static short vector_x_array[] = { 0, 1, 1, 1, 0, (char)-1, (char)-1, (char)-1}; // default vectors, temporary only
++ static short vector_y_array[] = {(char)-1, (char)-1, 0, 1, 1, 1, 0, (char)-1};
+
+ if(!match_dir()) // process turning
+ return;