-Upd configure.in / configure

--add --enable-warn=extra to show -Wconversion issues
--move -Wno-switch from prod only to all case 
-Update packet_db thx (TTest)
--fix index typo for itemlistwindowselected(all),cashshopbuy(2010-11-24 => v26-30, 2012-04-10 => v30-34) bugreport:7723
-Add utils::date2version (lookup a version with a date for later usage)
-Fix missing revert part in mmo_send_char bugreport:7734
-Merge little herc change:
--fix possible mapcrash in SCB_MATK with SC_RECOGNIZEDSPELL and change status->matk_min calculation order to speed up thing
--add OFFICIAL_WALKPATH exception for BL_NPC

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17367 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
glighta 2013-06-15 15:53:15 +00:00
parent 9288d3e20b
commit 50ded53db6
8 changed files with 186 additions and 84 deletions

41
configure vendored
View File

@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in Revision: 17181 .
# From configure.in Revision: 17342 .
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69.
#
@ -1325,7 +1325,7 @@ Optional Features:
--enable-debug[=ARG] Compiles extra debug code. (disabled by default)
(available options: yes, no, gdb)
--enable-warn[=ARG] Compiles with warnings. (disabled by default)
(available options: yes, no)
(available options: yes, no, extra)
--enable-buildbot[=ARG] (available options: yes, no)
--enable-rdtsc Uses rdtsc as timing source (disabled by default)
Enable it when you've timing issues. (For example:
@ -3479,6 +3479,7 @@ if test "${enable_warn+set}" = set; then :
case $enableval in
"no");;
"yes");;
"extra");;
*) as_fn_error $? "invalid argument --enable-warn=$enableval... stopping" "$LINENO" 5;;
esac
@ -4958,17 +4959,17 @@ _ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
PROD_WARN="$PROD_WARN -Wno-switch"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
CFLAGS="$OLD_CFLAGS"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$OLD_CFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -fPIC" >&5
$as_echo_n "checking whether $CC supports -fPIC... " >&6; }
@ -5020,6 +5021,31 @@ $as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
#
# check if support conversion check
#
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -Wconversion" >&5
$as_echo_n "checking whether $CC supports -Wconversion... " >&6; }
OLD_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wconversion"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int foo;
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
EXTRA_WARN="-Wconversion"
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$OLD_CFLAGS"
###############################################################################
# Check for libraries and header files.
@ -5177,6 +5203,9 @@ case $enable_warn in
"yes")
CFLAGS="$CFLAGS"
;;
"extra")
CFLAGS="$CFLAGS $EXTRA_WARN"
;;
esac
#
@ -6119,8 +6148,8 @@ else
$as_echo "no" >&6; }
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: PROD_WARN= $PROD_WARN" >&5
$as_echo "$as_me: PROD_WARN= $PROD_WARN" >&6;}
#AC_MSG_NOTICE([PROD_WARN= $PROD_WARN])
#AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN])
{ $as_echo "$as_me:${as_lineno-$LINENO}: Configure finish, CFLAG= $CFLAGS" >&5
$as_echo "$as_me: Configure finish, CFLAG= $CFLAGS" >&6;}
###############################################################################

View File

@ -85,7 +85,7 @@ AC_ARG_ENABLE(
[--enable-warn@<:@=ARG@:>@],
[
Compiles with warnings. (disabled by default)
(available options: yes, no)
(available options: yes, no, extra)
]
),
[
@ -93,6 +93,7 @@ AC_ARG_ENABLE(
case $enableval in
"no");;
"yes");;
"extra");;
*) AC_MSG_ERROR([[invalid argument --enable-warn=$enableval... stopping]]);;
esac
],
@ -120,7 +121,7 @@ AC_ARG_ENABLE(
)
#
# RDTSC as Tick Source
# RDTSC as Tick Source
#
AC_ARG_ENABLE(
[rdtsc],
@ -131,7 +132,7 @@ AC_ARG_ENABLE(
Enable it when you've timing issues.
(For example: in conjunction with XEN or Other Virtualization mechanisms)
Note:
Please ensure that you've disabled dynamic CPU-Frequencys, such as power saving options.
(On the most modern Dedicated Servers cpufreq is preconfigured, see your distribution's manual
@ -223,9 +224,9 @@ AC_ARG_WITH(
),
[
if test "$withval" == "no"; then
CFLAGS="$CFLAGS -DMAXCONN=16384"
CFLAGS="$CFLAGS -DMAXCONN=16384"
else
if ! test "$withval" -ge 0 -o "$withval" -lt 0 2>&- ; then
AC_MSG_ERROR([Invalid argument --with-maxconn=$withval ... stopping])
else
@ -389,7 +390,7 @@ if test "$enable_64bit" = "no" ; then
fi
#
#
# check if we're producing 32bit code - so well produce binarys for at least i686 (speedup: cmovs, and cmpchg8 support)
#
AC_MSG_CHECKING([whether $CC produces 32bit code])
@ -414,10 +415,10 @@ AC_RUN_IFELSE(
)
#
# Check if CC supports __thread attribute (Thread Local Storage)
#
# Check if CC supports __thread attribute (Thread Local Storage)
# (Usually our OSX friends 're lacking support of it in older llvm versions ..)
#
#
AC_MSG_CHECKING([whether $CC supports __thread specifier (TLS)])
AC_RUN_IFELSE(
[
@ -425,7 +426,7 @@ AC_RUN_IFELSE(
int main(int argc, char **argv){
g_Test = 0;
return g_Test;
return g_Test;
}
],
[
@ -509,7 +510,7 @@ AC_COMPILE_IFELSE(
)
],
[
AC_MSG_RESULT([no])
AC_MSG_RESULT([no])
]
)
CFLAGS="$OLD_CFLAGS"
@ -521,13 +522,13 @@ CFLAGS="$CFLAGS -Wno-switch"
AC_COMPILE_IFELSE(
[int foo;],
[ AC_MSG_RESULT([yes])
PROD_WARN="$PROD_WARN -Wno-switch"
],
[
AC_MSG_RESULT([no])
CFLAGS="$OLD_CFLAGS"
]
)
CFLAGS="$OLD_CFLAGS"
AC_MSG_CHECKING([whether $CC supports -fPIC])
OLD_CFLAGS="$CFLAGS"
@ -561,6 +562,22 @@ AC_COMPILE_IFELSE(
]
)
#
# check if support conversion check
#
AC_MSG_CHECKING([whether $CC supports -Wconversion])
OLD_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Wconversion"
AC_COMPILE_IFELSE(
[int foo;],
[
AC_MSG_RESULT([yes])
EXTRA_WARN="-Wconversion"
],
[AC_MSG_RESULT([no])]
)
CFLAGS="$OLD_CFLAGS"
###############################################################################
# Check for libraries and header files.
@ -648,7 +665,10 @@ case $enable_warn in
"yes")
CFLAGS="$CFLAGS"
;;
esac
"extra")
CFLAGS="$CFLAGS $EXTRA_WARN"
;;
esac
#
# Buildbot
@ -727,7 +747,7 @@ if test "$ac_cv_search_clock_gettime" != "no" ; then
#include <sys/time.h>
#include <time.h>
#include <unistd.h>
int main(int argc, char** argv)
{
struct timespec tval;
@ -807,7 +827,7 @@ AC_SUBST([MYSQL_LIBS])
#
# PCRE library (optional)
#
#
PCRE_LIBS=""
PCRE_CFLAGS=""
@ -815,7 +835,7 @@ if test "$want_pcre" = "no" ; then
AC_MSG_NOTICE([ignoring PCRE (optional)])
else
host_os="`uname`"
if test "$host_os" = "FreeBSD" ; then
if test "$host_os" = "FreeBSD" ; then
if test -z "$PCRE_HOME" ; then PCRE_HOME="/usr/local"; fi
fi
if test -z "$PCRE_HOME" ; then
@ -895,7 +915,8 @@ else
AC_MSG_RESULT([no])
fi
AC_MSG_NOTICE([PROD_WARN= $PROD_WARN])
#AC_MSG_NOTICE([PROD_WARN= $PROD_WARN])
#AC_MSG_NOTICE([EXTRA_WARN= $EXTRA_WARN])
AC_MSG_NOTICE([Configure finish, CFLAG= $CFLAGS])
###############################################################################
AC_OUTPUT

View File

@ -1416,7 +1416,7 @@ packet_ver: 25
//2009-08-18aRagexeRE
0x07e3,6
0x07e4,-1,itemlistwindowselected,2:4:8
0x07e4,-1,itemlistwindowselected,2:4:8:12
0x07e6,8
//2009-08-25aRagexeRE
@ -1612,7 +1612,7 @@ packet_ver: 25
//2010-11-24aRagexeRE
packet_ver: 26
0x0288,-1,cashshopbuy,2:4:8:10
0x0288,-1,cashshopbuy,2:4:6:10
0x0436,19,wanttoconnection,2:6:10:14:18
0x035f,5,walktoxy,2
0x0360,6,ticksend,2
@ -1658,7 +1658,7 @@ packet_ver: 28
0x083c,19,wanttoconnection,2:6:10:14:18
0x08aa,7,actionrequest,2:6
0x02c4,10,useskilltoid,2:4:6
0x0811,-1,itemlistwindowselected,2:4:8
0x0811,-1,itemlistwindowselected,2:4:8:12
0x890,8
0x08a5,18,bookingregreq,2:4:6
0x0835,-1,reqopenbuyingstore,2:4:8:9:89
@ -1689,7 +1689,7 @@ packet_ver:29
0x0929,26,partyinvite2,2
0x0885,7,actionrequest,2:6
0x0889,10,useskilltoid,2:4:6
0x0870,-1,itemlistwindowselected,2:4:8
0x0870,-1,itemlistwindowselected,2:4:8:12
//0x0926,18,bookingregreq,2:4:6
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0817,2,reqclosebuyingstore,0
@ -1707,13 +1707,13 @@ packet_ver: 30
0x089c,26,friendslistadd,2
0x0885,5,hommenu,2:4
0x0961,36,storagepassword,2:4:20
0x0288,-1,cashshopbuy,2:4:8:10
0x0288,-1,cashshopbuy,2:4:6:10
0x091c,26,partyinvite2,2
0x094b,19,wanttoconnection,2:6:10:14:18
0x0369,7,actionrequest,2:6
0x083c,10,useskilltoid,2:4:6
0x0439,8,useitem,2:4
0x0945,-1,itemlistwindowselected,2:4:8
0x0945,-1,itemlistwindowselected,2:4:8:12
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0817,2,reqclosebuyingstore,0
0x0360,6,reqclickbuyingstore,2
@ -1769,7 +1769,7 @@ packet_ver:31
0x08A8,36,storagepassword,2:4:20
0x0802,26,partyinvite2,2
0x022D,19,wanttoconnection,2:6:10:14:18
0x0281,-1,itemlistwindowselected,2:4:8
0x0281,-1,itemlistwindowselected,2:4:8:12
0x035F,6,ticksend,2
0x0202,5,changedir,2:4
0x07E4,6,takeitem,2
@ -1808,7 +1808,7 @@ packet_ver: 33
packet_ver: 34
0x014f,6,guildrequestinfo,2
0x01fd,15,repairitem,2:4:6:7:9:11:13
//0x0281,-1,itemlistwindowselected,2:4:8
//0x0281,-1,itemlistwindowselected,2:4:8:12
0x035f,6,reqclickbuyingstore,2
0x0363,6,ticksend,2
0x0365,12,searchstoreinfolistitemclick,2:6:10
@ -1821,7 +1821,7 @@ packet_ver: 34
0x084b,19 //fallitem4
0x085a,90,useskilltoposinfo,2:4:6:8:10
0x085d,18,bookingregreq,2:4:6
0x0868,-1,itemlistwindowselected,2:4:8
0x0868,-1,itemlistwindowselected,2:4:8:12
0x086d,26,partyinvite2,2
0x086f,26,friendslistadd,2
0x0874,8,movefromkafra,2:4
@ -1891,7 +1891,7 @@ packet_ver: 35
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x092D,18,bookingregreq,2:4:6
//0x08AA,8 CZ_JOIN_BATTLE_FIELD
0x0963,-1,itemlistwindowselected,2:4:8
0x0963,-1,itemlistwindowselected,2:4:8:12
0x0943,19,wanttoconnection,2:6:10:14:18
0x0947,26,partyinvite2,2
//0x0862,4 CZ_GANGSI_RANK
@ -1923,7 +1923,7 @@ packet_ver: 36
0x0874,-1,reqopenbuyingstore,2:4:8:9:89
0x089B,18,bookingregreq,2:4:6
//0x0965,8 CZ_JOIN_BATTLE_FIELD
0x086A,-1,itemlistwindowselected,2:4:8
0x086A,-1,itemlistwindowselected,2:4:8:12
0x08A9,19,wanttoconnection,2:6:10:14:18
0x0950,26,partyinvite2,2
//0x08AC,4 CZ_GANGSI_RANK
@ -1955,7 +1955,7 @@ packet_ver: 37
0x0869,-1,reqopenbuyingstore,2:4:8:9:89
0x0874,41,bookingregreq,2,4:6
// 0x088E,8); // CZ_JOIN_BATTLE_FIELD
0x0958,-1,itemlistwindowselected,2:4:8
0x0958,-1,itemlistwindowselected,2:4:8:12
0x0919,19,wanttoconnection,2:6:10:14:18
0x08A8,26,partyinvite2,2
// 0x0888,4); // CZ_GANGSI_RANK
@ -1987,7 +1987,7 @@ packet_ver: 38
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0365,41,bookingregreq,2:4:6
// 0x0363,8 // CZ_JOIN_BATTLE_FIELD
0x0281,-1,itemlistwindowselected,2:4:8
0x0281,-1,itemlistwindowselected,2:4:8:12
0x022D,19,wanttoconnection,2:6:10:14:18
0x0802,26,partyinvite2,2
// 0x0436,4 // CZ_GANGSI_RANK
@ -2019,7 +2019,7 @@ packet_ver: 39
0x0815,-1,reqopenbuyingstore,2:4:8:9:89
0x0365,18,bookingregreq,2:4:6
// 0x0363,8 CZ_JOIN_BATTLE_FIELD
0x0281,-1,itemlistwindowselected,2:4:8
0x0281,-1,itemlistwindowselected,2:4:8:12
0x0919,19,wanttoconnection,2:6:10:14:18
0x0802,26,partyinvite2,2
// 0x0436,4 CZ_GANGSI_RANK

View File

@ -1960,19 +1960,24 @@ void char_parse_req_charlist(int fd, struct char_session_data* sd){
//----------------------------------------
int mmo_char_send006b(int fd, struct char_session_data* sd){
int j, offset = 0;
if(sd->version > 25) //20100413
//bool newvers = (sd->version >= date2version(20100413) );
#if PACKETVER >= 20100413
//if(newvers) //20100413
offset += 3;
#endif
if (save_log)
ShowInfo("Loading Char Data ("CL_BOLD"%d"CL_RESET")\n",sd->account_id);
j = 24 + offset; // offset
WFIFOHEAD(fd,j + MAX_CHARS*MAX_CHAR_BUF);
WFIFOW(fd,0) = 0x6b;
if(sd->version > 25){ //20100413
#if PACKETVER >= 20100413
// if(newvers){ //20100413
WFIFOB(fd,4) = MAX_CHARS; // Max slots.
WFIFOB(fd,5) = sd->char_slots; // Available slots. (PremiumStartSlot)
WFIFOB(fd,6) = MAX_CHARS; // Premium slots. (Any existent chars past sd->char_slots but within MAX_CHARS will show a 'Premium Service' in red)
}
// }
#endif
memset(WFIFOP(fd,4 + offset), 0, 20); // unknown bytes
j+=mmo_chars_fromsql(sd, WFIFOP(fd,j));
WFIFOW(fd,2) = j; // packet len
@ -2000,12 +2005,14 @@ void mmo_char_send082d(int fd, struct char_session_data* sd) {
}
void mmo_char_send(int fd, struct char_session_data* sd){
ShowInfo("sd->version = %d\n",sd->version);
//ShowInfo("sd->version = %d\n",sd->version);
#if PACKETVER >= 20130000
//if(sd->version > date2version(20130000) ){
mmo_char_send082d(fd,sd);
char_charlist_notify(fd,sd);
char_block_character(fd,sd);
#endif
//}
//@FIXME dump from kro doesn't show 6b transmission
mmo_char_send006b(fd,sd);
}

View File

@ -109,16 +109,16 @@ void findfile(const char *p, const char *pat, void (func)(const char*))
WIN32_FIND_DATAA FindFileData;
HANDLE hFind;
char tmppath[MAX_PATH+1];
const char *path = (p ==NULL)? "." : p;
const char *pattern = (pat==NULL)? "" : pat;
checkpath(tmppath,path);
if( PATHSEP != tmppath[strlen(tmppath)-1])
strcat(tmppath, "\\*");
else
strcat(tmppath, "*");
hFind = FindFirstFileA(tmppath, &FindFileData);
if (hFind != INVALID_HANDLE_VALUE)
{
@ -259,6 +259,46 @@ uint32 MakeDWord(uint16 word0, uint16 word1)
( (uint32)(word1 << 0x10) );
}
int date2version(int date){
if(date < 20040906) return 5;
else if(date < 20040920) return 10;
else if(date < 20041005) return 11;
else if(date < 20041025) return 12;
else if(date < 20041129) return 13;
else if(date < 20050110) return 14;
else if(date < 20050509) return 15;
else if(date < 20050628) return 16;
else if(date < 20050718) return 17;
else if(date < 20050719) return 18;
else if(date < 20060327) return 19;
else if(date < 20070108) return 20;
else if(date < 20070212) return 21;
//wtf @FIXME
else if(date < 20080910) return 22;
else if(date < 20080827) return 23;
else if(date < 20080910) return 24;
//unable to solve from date
else if(date < 20101124) return 25;
else if(date < 20111005) return 26;
else if(date < 20111102) return 27;
else if(date < 20120307) return 28;
else if(date < 20120410) return 29;
else if(date < 20120418) return 30;
else if(date < 20120618) return 31;
else if(date < 20120702) return 32;
else if(date < 20130320) return 33;
else if(date < 20130515) return 34;
else if(date < 20130522) return 35;
else if(date < 20130529) return 36;
else if(date < 20130605) return 37;
else if(date < 20130612) return 38;
else if(date >= 20130612) return 39;
// else if(date < 20040920) return 40;
// else if(date < 20040920) return 41;
// else if(date < 20040920) return 42;
// else if(date < 20040920) return 43;
else return 30; //default
}
/// calculates the value of A / B, in percent (rounded down)
unsigned int get_percentage(const unsigned int A, const unsigned int B)

View File

@ -29,4 +29,6 @@ extern uint16 GetWord(uint32 val, int idx);
extern uint16 MakeWord(uint8 byte0, uint8 byte1);
extern uint32 MakeDWord(uint16 word0, uint16 word1);
int date2version(int date);
#endif /* _UTILS_H_ */

View File

@ -3950,8 +3950,8 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
status->matk_max += sd->bonus.ematk;
status->matk_min += sd->bonus.ematk;
}
status->matk_min = status_calc_ematk(bl, sc, status->matk_min);
status->matk_max = status_calc_ematk(bl, sc, status->matk_max);
status->matk_min = status_calc_ematk(bl, sc, status->matk_min);
status->matk_max = status_calc_ematk(bl, sc, status->matk_max);
//This is the only portion in MATK that varies depending on the weapon level and refinement rate.
if( status->rhw.matk > 0 ){
int wMatk = status->rhw.matk;
@ -3961,17 +3961,19 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
}
}
#endif
if (bl->type&BL_PC && sd->matk_rate != 100) {
if (bl->type&BL_PC && sd->matk_rate != 100) {
status->matk_max = status->matk_max * sd->matk_rate/100;
status->matk_min = status->matk_min * sd->matk_rate/100;
}
status->matk_min = status_calc_matk(bl, sc, status->matk_min);
status->matk_max = status_calc_matk(bl, sc, status->matk_max);
if ((bl->type&BL_HOM && battle_config.hom_setting&0x20) //Hom Min Matk is always the same as Max Matk
|| sc->data[SC_RECOGNIZEDSPELL])
status->matk_min = status->matk_max;
if ((bl->type&BL_HOM && battle_config.hom_setting&0x20) //Hom Min Matk is always the same as Max Matk
|| (sc && sc->data[SC_RECOGNIZEDSPELL]))
status->matk_min = status->matk_max;
else
status->matk_min = status_calc_matk(bl, sc, status->matk_min);
#ifdef RENEWAL
if( sd && sd->right_weapon.overrefine > 0){
@ -4741,37 +4743,37 @@ static unsigned short status_calc_matk(struct block_list *bl, struct status_chan
return cap_value(matk,0,USHRT_MAX);
#ifndef RENEWAL
// take note fixed value first before % modifiers
if (sc->data[SC_MATKPOTION])
matk += sc->data[SC_MATKPOTION]->val1;
if (sc->data[SC_MATKFOOD])
matk += sc->data[SC_MATKFOOD]->val1;
if (sc->data[SC_MANA_PLUS])
matk += sc->data[SC_MANA_PLUS]->val1;
if (sc->data[SC_AQUAPLAY_OPTION])
matk += sc->data[SC_AQUAPLAY_OPTION]->val2;
if (sc->data[SC_CHILLY_AIR_OPTION])
matk += sc->data[SC_CHILLY_AIR_OPTION]->val2;
if (sc->data[SC_WATER_BARRIER])
matk -= sc->data[SC_WATER_BARRIER]->val3;
if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3)
matk += 50;
if (sc->data[SC_ODINS_POWER])
matk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1; //70 lvl1, 100lvl2
if (sc->data[SC_IZAYOI])
matk += 50 * sc->data[SC_IZAYOI]->val1;
if (sc->data[SC_MATKPOTION])
matk += sc->data[SC_MATKPOTION]->val1;
if (sc->data[SC_MATKFOOD])
matk += sc->data[SC_MATKFOOD]->val1;
if (sc->data[SC_MANA_PLUS])
matk += sc->data[SC_MANA_PLUS]->val1;
if (sc->data[SC_AQUAPLAY_OPTION])
matk += sc->data[SC_AQUAPLAY_OPTION]->val2;
if (sc->data[SC_CHILLY_AIR_OPTION])
matk += sc->data[SC_CHILLY_AIR_OPTION]->val2;
if (sc->data[SC_WATER_BARRIER])
matk -= sc->data[SC_WATER_BARRIER]->val3;
if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3)
matk += 50;
if (sc->data[SC_ODINS_POWER])
matk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1; //70 lvl1, 100lvl2
if (sc->data[SC_IZAYOI])
matk += 50 * sc->data[SC_IZAYOI]->val1;
#endif
if (sc->data[SC_MAGICPOWER] && sc->data[SC_MAGICPOWER]->val4)
matk += matk * sc->data[SC_MAGICPOWER]->val3/100;
if (sc->data[SC_MINDBREAKER])
matk += matk * sc->data[SC_MINDBREAKER]->val2/100;
if (sc->data[SC_INCMATKRATE])
matk += matk * sc->data[SC_INCMATKRATE]->val1/100;
if (sc->data[SC_MOONLITSERENADE])
matk += matk * sc->data[SC_MOONLITSERENADE]->val2/100;
if (sc->data[SC_MELODYOFSINK])
matk += matk * sc->data[SC_MELODYOFSINK]->val3/100;
if (sc->data[SC_BEYONDOFWARCRY])
matk -= matk * sc->data[SC_BEYONDOFWARCRY]->val3/100;
if (sc->data[SC_MAGICPOWER] && sc->data[SC_MAGICPOWER]->val4)
matk += matk * sc->data[SC_MAGICPOWER]->val3/100;
if (sc->data[SC_MINDBREAKER])
matk += matk * sc->data[SC_MINDBREAKER]->val2/100;
if (sc->data[SC_INCMATKRATE])
matk += matk * sc->data[SC_INCMATKRATE]->val1/100;
if (sc->data[SC_MOONLITSERENADE])
matk += matk * sc->data[SC_MOONLITSERENADE]->val2/100;
if (sc->data[SC_MELODYOFSINK])
matk += matk * sc->data[SC_MELODYOFSINK]->val3/100;
if (sc->data[SC_BEYONDOFWARCRY])
matk -= matk * sc->data[SC_BEYONDOFWARCRY]->val3/100;
if( sc->data[SC_ZANGETSU] )
matk += matk * sc->data[SC_ZANGETSU]->val2 / 100;

View File

@ -384,8 +384,9 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
path_search(&wpd, bl->m, bl->x, bl->y, x, y, flag&1, CELL_CHKNOPASS); // Count walk path cells
#ifdef OFFICIAL_WALKPATH
if( !path_search_long(NULL, bl->m, bl->x, bl->y, x, y, CELL_CHKNOPASS) // Check if there is an obstacle between
&& wpd.path_len > 14 ) // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
return 0;
&& wpd.path_len > 14 // Official number of walkable cells is 14 if and only if there is an obstacle between. [malufett]
&& (bl->type != BL_NPC) ) // If type is a NPC, please disregard.
return 0;
#endif
if( (battle_config.max_walk_path < wpd.path_len) && (bl->type != BL_NPC) )
return 0;