-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:
parent
9288d3e20b
commit
50ded53db6
41
configure
vendored
41
configure
vendored
@ -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;}
|
||||
###############################################################################
|
||||
|
57
configure.in
57
configure.in
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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_ */
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user