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;