diff options
author | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2008-11-24 15:15:27 +0100 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2008-11-24 15:15:27 +0100 |
commit | ee547337e2a5ae97dc52b3e67b4481247470eaf6 (patch) | |
tree | 38f8d199a30287f0b3afc88b8406095b771aaa6f | |
parent | 8e6a5d1e2c433741025f855a3621532219e254f3 (diff) | |
download | tmwa-ee547337e2a5ae97dc52b3e67b4481247470eaf6.tar.gz tmwa-ee547337e2a5ae97dc52b3e67b4481247470eaf6.tar.bz2 tmwa-ee547337e2a5ae97dc52b3e67b4481247470eaf6.tar.xz tmwa-ee547337e2a5ae97dc52b3e67b4481247470eaf6.zip |
Converted some DOS newlines to UNIX
50 files changed, 26131 insertions, 26131 deletions
@@ -1,130 +1,130 @@ -# $Id$
-
-ifeq ($(shell uname -m), x86_64)
-M32=-m32
-endif
-
-CC = gcc ${M32} -pipe
-PACKETDEF = -DPACKETVER=5 -DNEW_006b
-#PACKETDEF = -DPACKETVER=4 -DNEW_006b
-#PACKETDEF = -DPACKETVER=3 -DNEW_006b
-#PACKETDEF = -DPACKETVER=2 -DNEW_006b
-#PACKETDEF = -DPACKETVER=1 -DNEW_006b
-
-PLATFORM = $(shell uname)
-
-ifeq ($(findstring FreeBSD,$(PLATFORM)), FreeBSD)
-MAKE = gmake
-else
-MAKE = make
-endif
-
-OPT = -g -O2 ${M32}
-
-ifeq ($(findstring CYGWIN,$(PLATFORM)), CYGWIN)
-OS_TYPE = -DCYGWIN
-CFLAGS = $(OPT) -Wall -DFD_SETSIZE=4096 -I../common $(PACKETDEF) $(OS_TYPE)
-else
-OS_TYPE =
-CFLAGS = $(OPT) -Wall -I../common $(PACKETDEF) $(OS_TYPE)
-endif
-
-MYSQLFLAG_INCLUDE_DEFAULT = /usr/local/include/mysql
-
-ifdef SQLFLAG
-MYSQLFLAG_CONFIG = $(shell which mysql_config)
-ifeq ($(findstring /,$(MYSQLFLAG_CONFIG)), /)
-MYSQLFLAG_VERSION = $(shell $(MYSQLFLAG_CONFIG) --version | sed s:\\..*::)
-endif
-
-ifeq ($(findstring 5,$(MYSQLFLAG_VERSION)), 5)
-MYSQLFLAG_CONFIG_ARGUMENT = --include
-endif
-ifeq ($(findstring 4,$(MYSQLFLAG_VERSION)), 4)
-MYSQLFLAG_CONFIG_ARGUMENT = --include
-endif
-ifndef MYSQLFLAG_CONFIG_ARGUMENT
-MYSQLFLAG_CONFIG_ARGUMENT = --cflags
-endif
-
-ifeq ($(findstring /,$(MYSQLFLAG_CONFIG)), /)
-MYSQLFLAG_INCLUDE = $(shell $(MYSQLFLAG_CONFIG) $(MYSQLFLAG_CONFIG_ARGUMENT))
-else
-MYSQLFLAG_INCLUDE = -I$(MYSQLFLAG_INCLUDE_DEFAULT)
-endif
-
-LIB_S_DEFAULT = -L/usr/local/lib/mysql -lmysqlclient -lz
-MYSQLFLAG_CONFIG = $(shell which mysql_config)
-ifeq ($(findstring /,$(MYSQLFLAG_CONFIG)), /)
-LIB_S = $(shell $(MYSQLFLAG_CONFIG) --libs)
-else
-LIB_S = $(LIB_S_DEFAULT)
-endif
-
-MYLIB = CC="$(CC)" CFLAGS="$(CFLAGS) $(MYSQLFLAG_INCLUDE)" LIB_S="$(LIB_S)"
-
-endif
-
-MKDEF = CC="$(CC)" CFLAGS="$(CFLAGS)"
-
-all: conf txt
-
-conf:
- cp -r conf-tmpl conf
- rm -rf conf/.svn conf/*/.svn
-
-txt : src/common/GNUmakefile src/login/GNUmakefile src/char/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile conf
- cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd login ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd char ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd map ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd ..
-
-
-ifdef SQLFLAG
-sql: src/common/GNUmakefile src/login_sql/GNUmakefile src/char_sql/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile src/txt-converter/login/GNUmakefile src/txt-converter/char/GNUmakefile conf
- cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd login_sql ; $(MAKE) $(MYLIB) $@ ; cd ..
- cd src ; cd char_sql ; $(MAKE) $(MYLIB) $@ ; cd ..
- cd src ; cd map ; $(MAKE) $(MYLIB) $@ ; cd ..
- cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd txt-converter ; cd login ; $(MAKE) $(MYLIB) $@ ; cd ..
- cd src ; cd txt-converter ; cd char ; $(MAKE) $(MYLIB) $@ ; cd ..
-else
-sql:
- $(MAKE) CC="$(CC)" OPT="$(OPT)" SQLFLAG=1 $@
-endif
-
-clean: src/common/GNUmakefile src/login/GNUmakefile src/char/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile src/txt-converter/login/GNUmakefile src/txt-converter/char/GNUmakefile
- cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd login ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd login_sql ; $(MAKE) $(MKLIB) $@ ; cd ..
- cd src ; cd char ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd char_sql ; $(MAKE) $(MKLIB) $@ ; cd ..
- cd src ; cd map ; $(MAKE) $(MKLIB) $@ ; cd ..
- cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd txt-converter ; cd login ; $(MAKE) $(MKLIB) $@ ; cd ..
- cd src ; cd txt-converter ; cd char ; $(MAKE) $(MKLIB) $@ ; cd ..
-
-tools:
- cd tool && $(MAKE) $(MKDEF) && cd ..
- $(CC) -o setupwizard setupwizard.c
-
-src/common/GNUmakefile: src/common/Makefile
- sed -e 's/$$>/$$^/' src/common/Makefile > src/common/GNUmakefile
-src/login/GNUmakefile: src/login/Makefile
- sed -e 's/$$>/$$^/' src/login/Makefile > src/login/GNUmakefile
-src/login_sql/GNUmakefile: src/login_sql/Makefile
- sed -e 's/$$>/$$^/' src/login_sql/Makefile > src/login_sql/GNUmakefile
-src/char/GNUmakefile: src/char/Makefile
- sed -e 's/$$>/$$^/' src/char/Makefile > src/char/GNUmakefile
-src/char_sql/GNUmakefile: src/char_sql/Makefile
- sed -e 's/$$>/$$^/' src/char_sql/Makefile > src/char_sql/GNUmakefile
-src/map/GNUmakefile: src/map/Makefile
- sed -e 's/$$>/$$^/' src/map/Makefile > src/map/GNUmakefile
-src/ladmin/GNUmakefile: src/ladmin/Makefile
- sed -e 's/$$>/$$^/' src/ladmin/Makefile > src/ladmin/GNUmakefile
-src/txt-converter/login/GNUmakefile: src/txt-converter/login/Makefile
- sed -e 's/$$>/$$^/' src/txt-converter/login/Makefile > src/txt-converter/login/GNUmakefile
-src/txt-converter/char/GNUmakefile: src/txt-converter/char/Makefile
- sed -e 's/$$>/$$^/' src/txt-converter/char/Makefile > src/txt-converter/char/GNUmakefile
+# $Id$ + +ifeq ($(shell uname -m), x86_64) +M32=-m32 +endif + +CC = gcc ${M32} -pipe +PACKETDEF = -DPACKETVER=5 -DNEW_006b +#PACKETDEF = -DPACKETVER=4 -DNEW_006b +#PACKETDEF = -DPACKETVER=3 -DNEW_006b +#PACKETDEF = -DPACKETVER=2 -DNEW_006b +#PACKETDEF = -DPACKETVER=1 -DNEW_006b + +PLATFORM = $(shell uname) + +ifeq ($(findstring FreeBSD,$(PLATFORM)), FreeBSD) +MAKE = gmake +else +MAKE = make +endif + +OPT = -g -O2 ${M32} + +ifeq ($(findstring CYGWIN,$(PLATFORM)), CYGWIN) +OS_TYPE = -DCYGWIN +CFLAGS = $(OPT) -Wall -DFD_SETSIZE=4096 -I../common $(PACKETDEF) $(OS_TYPE) +else +OS_TYPE = +CFLAGS = $(OPT) -Wall -I../common $(PACKETDEF) $(OS_TYPE) +endif + +MYSQLFLAG_INCLUDE_DEFAULT = /usr/local/include/mysql + +ifdef SQLFLAG +MYSQLFLAG_CONFIG = $(shell which mysql_config) +ifeq ($(findstring /,$(MYSQLFLAG_CONFIG)), /) +MYSQLFLAG_VERSION = $(shell $(MYSQLFLAG_CONFIG) --version | sed s:\\..*::) +endif + +ifeq ($(findstring 5,$(MYSQLFLAG_VERSION)), 5) +MYSQLFLAG_CONFIG_ARGUMENT = --include +endif +ifeq ($(findstring 4,$(MYSQLFLAG_VERSION)), 4) +MYSQLFLAG_CONFIG_ARGUMENT = --include +endif +ifndef MYSQLFLAG_CONFIG_ARGUMENT +MYSQLFLAG_CONFIG_ARGUMENT = --cflags +endif + +ifeq ($(findstring /,$(MYSQLFLAG_CONFIG)), /) +MYSQLFLAG_INCLUDE = $(shell $(MYSQLFLAG_CONFIG) $(MYSQLFLAG_CONFIG_ARGUMENT)) +else +MYSQLFLAG_INCLUDE = -I$(MYSQLFLAG_INCLUDE_DEFAULT) +endif + +LIB_S_DEFAULT = -L/usr/local/lib/mysql -lmysqlclient -lz +MYSQLFLAG_CONFIG = $(shell which mysql_config) +ifeq ($(findstring /,$(MYSQLFLAG_CONFIG)), /) +LIB_S = $(shell $(MYSQLFLAG_CONFIG) --libs) +else +LIB_S = $(LIB_S_DEFAULT) +endif + +MYLIB = CC="$(CC)" CFLAGS="$(CFLAGS) $(MYSQLFLAG_INCLUDE)" LIB_S="$(LIB_S)" + +endif + +MKDEF = CC="$(CC)" CFLAGS="$(CFLAGS)" + +all: conf txt + +conf: + cp -r conf-tmpl conf + rm -rf conf/.svn conf/*/.svn + +txt : src/common/GNUmakefile src/login/GNUmakefile src/char/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile conf + cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd login ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd char ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd map ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd .. + + +ifdef SQLFLAG +sql: src/common/GNUmakefile src/login_sql/GNUmakefile src/char_sql/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile src/txt-converter/login/GNUmakefile src/txt-converter/char/GNUmakefile conf + cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd login_sql ; $(MAKE) $(MYLIB) $@ ; cd .. + cd src ; cd char_sql ; $(MAKE) $(MYLIB) $@ ; cd .. + cd src ; cd map ; $(MAKE) $(MYLIB) $@ ; cd .. + cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd txt-converter ; cd login ; $(MAKE) $(MYLIB) $@ ; cd .. + cd src ; cd txt-converter ; cd char ; $(MAKE) $(MYLIB) $@ ; cd .. +else +sql: + $(MAKE) CC="$(CC)" OPT="$(OPT)" SQLFLAG=1 $@ +endif + +clean: src/common/GNUmakefile src/login/GNUmakefile src/char/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile src/txt-converter/login/GNUmakefile src/txt-converter/char/GNUmakefile + cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd login ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd login_sql ; $(MAKE) $(MKLIB) $@ ; cd .. + cd src ; cd char ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd char_sql ; $(MAKE) $(MKLIB) $@ ; cd .. + cd src ; cd map ; $(MAKE) $(MKLIB) $@ ; cd .. + cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd txt-converter ; cd login ; $(MAKE) $(MKLIB) $@ ; cd .. + cd src ; cd txt-converter ; cd char ; $(MAKE) $(MKLIB) $@ ; cd .. + +tools: + cd tool && $(MAKE) $(MKDEF) && cd .. + $(CC) -o setupwizard setupwizard.c + +src/common/GNUmakefile: src/common/Makefile + sed -e 's/$$>/$$^/' src/common/Makefile > src/common/GNUmakefile +src/login/GNUmakefile: src/login/Makefile + sed -e 's/$$>/$$^/' src/login/Makefile > src/login/GNUmakefile +src/login_sql/GNUmakefile: src/login_sql/Makefile + sed -e 's/$$>/$$^/' src/login_sql/Makefile > src/login_sql/GNUmakefile +src/char/GNUmakefile: src/char/Makefile + sed -e 's/$$>/$$^/' src/char/Makefile > src/char/GNUmakefile +src/char_sql/GNUmakefile: src/char_sql/Makefile + sed -e 's/$$>/$$^/' src/char_sql/Makefile > src/char_sql/GNUmakefile +src/map/GNUmakefile: src/map/Makefile + sed -e 's/$$>/$$^/' src/map/Makefile > src/map/GNUmakefile +src/ladmin/GNUmakefile: src/ladmin/Makefile + sed -e 's/$$>/$$^/' src/ladmin/Makefile > src/ladmin/GNUmakefile +src/txt-converter/login/GNUmakefile: src/txt-converter/login/Makefile + sed -e 's/$$>/$$^/' src/txt-converter/login/Makefile > src/txt-converter/login/GNUmakefile +src/txt-converter/char/GNUmakefile: src/txt-converter/char/Makefile + sed -e 's/$$>/$$^/' src/txt-converter/char/Makefile > src/txt-converter/char/GNUmakefile diff --git a/Makefile-optimized b/Makefile-optimized index ea64de2..ab5a7c5 100644 --- a/Makefile-optimized +++ b/Makefile-optimized @@ -1,49 +1,49 @@ -# $Id$
-
-CC = gcc -pipe
-PACKETDEF = -DPACKETVER=5 -DNEW_006b
-#PACKETDEF = -DPACKETVER=4 -DNEW_006b
-#PACKETDEF = -DPACKETVER=3 -DNEW_006b
-#PACKETDEF = -DPACKETVER=2 -DNEW_006b
-#PACKETDEF = -DPACKETVER=1 -DNEW_006b
-
-PLATFORM = $(shell uname)
-
-ifeq ($(findstring FreeBSD,$(PLATFORM)), FreeBSD)
-MAKE = gmake
-else
-MAKE = make
-endif
-
-ifeq ($(findstring CYGWIN,$(PLATFORM)), CYGWIN)
-OS_TYPE = -DCYGWIN
-CFLAGS = -O2 -Wall -DFD_SETSIZE=4096 -I../common $(PACKETDEF) $(OS_TYPE)
-else
-OS_TYPE =
-CFLAGS = -O2 -Wall -I../common $(PACKETDEF) $(OS_TYPE)
-endif
-
-MKDEF = CC="$(CC)" CFLAGS="$(CFLAGS)"
-
-
-all clean: src/common/GNUmakefile src/login/GNUmakefile src/char_unblocked/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile
- cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd login ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd char_unblocked ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd map ; $(MAKE) $(MKDEF) $@ ; cd ..
- cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd ..
-
-tools:
- cd tool && $(MAKE) $(MKDEF) && cd ..
- $(CC) -o setupwizard setupwizard.c
-
-src/common/GNUmakefile: src/common/Makefile
- sed -e 's/$$>/$$^/' src/common/Makefile > src/common/GNUmakefile
-src/login/GNUmakefile: src/login/Makefile
- sed -e 's/$$>/$$^/' src/login/Makefile > src/login/GNUmakefile
-src/char_unblocked/GNUmakefile: src/char_unblocked/Makefile
- sed -e 's/$$>/$$^/' src/char_unblocked/Makefile > src/char_unblocked/GNUmakefile
-src/map/GNUmakefile: src/map/Makefile
- sed -e 's/$$>/$$^/' src/map/Makefile > src/map/GNUmakefile
-src/ladmin/GNUmakefile: src/ladmin/Makefile
- sed -e 's/$$>/$$^/' src/ladmin/Makefile > src/ladmin/GNUmakefile
+# $Id$ + +CC = gcc -pipe +PACKETDEF = -DPACKETVER=5 -DNEW_006b +#PACKETDEF = -DPACKETVER=4 -DNEW_006b +#PACKETDEF = -DPACKETVER=3 -DNEW_006b +#PACKETDEF = -DPACKETVER=2 -DNEW_006b +#PACKETDEF = -DPACKETVER=1 -DNEW_006b + +PLATFORM = $(shell uname) + +ifeq ($(findstring FreeBSD,$(PLATFORM)), FreeBSD) +MAKE = gmake +else +MAKE = make +endif + +ifeq ($(findstring CYGWIN,$(PLATFORM)), CYGWIN) +OS_TYPE = -DCYGWIN +CFLAGS = -O2 -Wall -DFD_SETSIZE=4096 -I../common $(PACKETDEF) $(OS_TYPE) +else +OS_TYPE = +CFLAGS = -O2 -Wall -I../common $(PACKETDEF) $(OS_TYPE) +endif + +MKDEF = CC="$(CC)" CFLAGS="$(CFLAGS)" + + +all clean: src/common/GNUmakefile src/login/GNUmakefile src/char_unblocked/GNUmakefile src/map/GNUmakefile src/ladmin/GNUmakefile + cd src ; cd common ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd login ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd char_unblocked ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd map ; $(MAKE) $(MKDEF) $@ ; cd .. + cd src ; cd ladmin ; $(MAKE) $(MKDEF) $@ ; cd .. + +tools: + cd tool && $(MAKE) $(MKDEF) && cd .. + $(CC) -o setupwizard setupwizard.c + +src/common/GNUmakefile: src/common/Makefile + sed -e 's/$$>/$$^/' src/common/Makefile > src/common/GNUmakefile +src/login/GNUmakefile: src/login/Makefile + sed -e 's/$$>/$$^/' src/login/Makefile > src/login/GNUmakefile +src/char_unblocked/GNUmakefile: src/char_unblocked/Makefile + sed -e 's/$$>/$$^/' src/char_unblocked/Makefile > src/char_unblocked/GNUmakefile +src/map/GNUmakefile: src/map/Makefile + sed -e 's/$$>/$$^/' src/map/Makefile > src/map/GNUmakefile +src/ladmin/GNUmakefile: src/ladmin/Makefile + sed -e 's/$$>/$$^/' src/ladmin/Makefile > src/ladmin/GNUmakefile diff --git a/db/card_labels.txt b/db/card_labels.txt index 1177f0e..361572c 100644 --- a/db/card_labels.txt +++ b/db/card_labels.txt @@ -1 +1 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
+// File created using Spamrat's Athena Database Editor v1.4.4 diff --git a/db/const.txt b/db/const.txt index 53bc1ba..76095b9 100644 --- a/db/const.txt +++ b/db/const.txt @@ -1,231 +1,231 @@ -Job_Novice 0
-Job_Swordman 1
-Job_Mage 2
-Job_Archer 3
-Job_Acolyte 4
-Job_Merchant 5
-Job_Thief 6
-Job_Knight 7
-Job_Priest 8
-Job_Wizard 9
-Job_Blacksmith 10
-Job_Hunter 11
-Job_Assassin 12
-Job_Knight2 13
-Job_Crusader 14
-Job_Monk 15
-Job_Sage 16
-Job_Rogue 17
-Job_Alchem 18
-Job_Bard 19
-Job_Dancer 20
-Job_Crusader2 21
-Job_SuperNovice 23
-Job_Novice_High 24
-Job_Swordman_High 25
-Job_Mage_High 26
-Job_Archer_High 27
-Job_Acolyte_High 28
-Job_Merchant_High 29
-Job_Thief_High 30
-Job_Lord_Knight 31
-Job_High_Priest 32
-Job_High_Wizard 33
-Job_Whitesmith 34
-Job_Sniper 35
-Job_Assassin_Cross 36
-Job_Lord_Knight2 37
-Job_Paladin 38
-Job_Champion 39
-Job_Professor 40
-Job_Stalker 41
-Job_Creator 42
-Job_Clown 43
-Job_Gypsy 44
-Job_Paladin2 45
-Job_Baby 46
-Job_Baby_Swordman 47
-Job_Baby_Mage 48
-Job_Baby_Archer 49
-Job_Baby_Acolyte 50
-Job_Baby_Merchant 51
-Job_Baby_Thief 52
-Job_Baby_Knight 53
-Job_Baby_Priest 54
-Job_Baby_Wizard 55
-Job_Baby_Blacksmith 56
-Job_Baby_Hunter 57
-Job_Baby_Assassin 58
-Job_Baby_Knight2 59
-Job_Baby_Crusader 60
-Job_Baby_Monk 61
-Job_Baby_Sage 62
-Job_Baby_Rogue 63
-Job_Baby_Alchem 64
-Job_Baby_Bard 65
-Job_Baby_Dancer 66
-Job_Baby_Crusader2 67
-Job_Super_Baby 68
-
-
-
-mf_nomemo 0
-mf_noteleport 1
-mf_nosave 2
-mf_nobranch 3
-mf_nopenalty 4
-mf_pvp 5
-mf_pvp_noparty 6
-mf_pvp_noguild 7
-mf_gvg 8
-mf_gvg_noparty 9
-mf_nozenypenalty 10
-
-StatusPoint 9 1
-BaseLevel 11 1
-SkillPoint 12 1
-Class 19 1
-Upper 56 1
-Zeny 20 1
-Sex 21 1
-Weight 24 1
-MaxWeight 25 1
-JobLevel 55 1
-BaseExp 1 1
-JobExp 2 1
-NextBaseExp 22 1
-NextJobExp 23 1
-Hp 5 1
-MaxHp 6 1
-Sp 7 1
-MaxSp 8 1
-
-bMaxHP 6
-bMaxSP 8
-bStr 13
-bAgi 14
-bVit 15
-bInt 16
-bDex 17
-bLuk 18
-bAtk 41
-bAtk2 42
-bMatk1 43
-bMatk2 44
-bDef 45
-bMdef 47
-bMdef2 48
-bHit 49
-bFlee 50
-bFlee2 51
-bCritical 52
-bAspd 53
-
-bAtkRange 1000
-bAtkEle 1001
-bDefEle 1002
-bCastrate 1003
-bMaxHPrate 1004
-bMaxSPrate 1005
-bUseSPrate 1006
-bAddEle 1007
-bAddRace 1008
-bAddSize 1009
-bSubEle 1010
-bSubRace 1011
-bAddEff 1012
-bResEff 1013
-bBaseAtk 1014
-bAspdRate 1015
-bHPrecovRate 1016
-bSPrecovRate 1017
-bSpeedRate 1018
-bCriticalDef 1019
-bNearAtkDef 1020
-bLongAtkDef 1021
-bDoubleRate 1022
-bDoubleAddRate 1023
-bMatk 1024
-bMatkRate 1025
-bIgnoreDefEle 1026
-bIgnoreDefRace 1027
-bAtkRate 1028
-bSpeedAddRate 1029
-bAspdAddRate 1030
-bMagicAtkDef 1031
-bMiscAtkDef 1032
-bIgnoreMdefEle 1033
-bIgnoreMdefRace 1034
-bMagicAddEle 1035
-bMagicAddRace 1036
-bMagicSubRace 1037
-bPerfectHitRate 1038
-bPerfectHitAddRate 1039
-bCriticalRate 1040
-bGetZenyNum 1041
-bAddGetZenyNum 1042
-bAddDamageClass 1043
-bAddMagicDamageClass 1044
-bAddDefClass 1045
-bAddMdefClass 1046
-bAddMonsterDropItem 1047
-bDefRatioAtkEle 1048
-bDefRatioAtkRace 1049
-bAddSpeed 1050
-bHitRate 1051
-bFleeRate 1052
-bFlee2Rate 1053
-bDefRate 1054
-bDef2Rate 1055
-bMdefRate 1056
-bMdef2Rate 1057
-bSplashRange 1058
-bSplashAddRange 1059
-bAutoSpell 1060
-bHPDrainRate 1061
-bSPDrainRate 1062
-bShortWeaponDamageReturn 1063
-bLongWeaponDamageReturn 1064
-bWeaponComaEle 1065
-bWeaponComaRace 1066
-bAddEff2 1067
-bMagicDamageReturn 1068
-bRandomAttackIncrease 1069
-bAllStats 1070
-bAgiVit 1071
-bAgiDexStr 1072
-bPerfectHide 1073
-
-bRestartFullRecover 2000
-bNoCastCancel 2001
-bNoSizeFix 2002
-bNoMagicDamage 2003
-bNoWeaponDamage 2004
-bNoGemStone 2005
-bNoCastCancel2 2006
-bInfiniteEndure 2007
-
-Eff_Stone 0
-Eff_Freeze 1
-Eff_Stan 2
-Eff_Sleep 3
-Eff_Poison 4
-Eff_Curse 5
-Eff_Silence 6
-Eff_Confusion 7
-Eff_Blind 8
-
-SC_Stone 128
-SC_Freeze 129
-SC_Stan 130
-SC_Sleep 131
-SC_Poison 132
-SC_Curse 133
-SC_Silence 134
-SC_Confusion 135
-SC_Blind 136
-SC_SpeedPot0 37
-SC_SpeedPot1 38
-SC_SpeedPot2 39
-SC_ATKPot 185
-SC_MATKPot 186
+Job_Novice 0 +Job_Swordman 1 +Job_Mage 2 +Job_Archer 3 +Job_Acolyte 4 +Job_Merchant 5 +Job_Thief 6 +Job_Knight 7 +Job_Priest 8 +Job_Wizard 9 +Job_Blacksmith 10 +Job_Hunter 11 +Job_Assassin 12 +Job_Knight2 13 +Job_Crusader 14 +Job_Monk 15 +Job_Sage 16 +Job_Rogue 17 +Job_Alchem 18 +Job_Bard 19 +Job_Dancer 20 +Job_Crusader2 21 +Job_SuperNovice 23 +Job_Novice_High 24 +Job_Swordman_High 25 +Job_Mage_High 26 +Job_Archer_High 27 +Job_Acolyte_High 28 +Job_Merchant_High 29 +Job_Thief_High 30 +Job_Lord_Knight 31 +Job_High_Priest 32 +Job_High_Wizard 33 +Job_Whitesmith 34 +Job_Sniper 35 +Job_Assassin_Cross 36 +Job_Lord_Knight2 37 +Job_Paladin 38 +Job_Champion 39 +Job_Professor 40 +Job_Stalker 41 +Job_Creator 42 +Job_Clown 43 +Job_Gypsy 44 +Job_Paladin2 45 +Job_Baby 46 +Job_Baby_Swordman 47 +Job_Baby_Mage 48 +Job_Baby_Archer 49 +Job_Baby_Acolyte 50 +Job_Baby_Merchant 51 +Job_Baby_Thief 52 +Job_Baby_Knight 53 +Job_Baby_Priest 54 +Job_Baby_Wizard 55 +Job_Baby_Blacksmith 56 +Job_Baby_Hunter 57 +Job_Baby_Assassin 58 +Job_Baby_Knight2 59 +Job_Baby_Crusader 60 +Job_Baby_Monk 61 +Job_Baby_Sage 62 +Job_Baby_Rogue 63 +Job_Baby_Alchem 64 +Job_Baby_Bard 65 +Job_Baby_Dancer 66 +Job_Baby_Crusader2 67 +Job_Super_Baby 68 + + + +mf_nomemo 0 +mf_noteleport 1 +mf_nosave 2 +mf_nobranch 3 +mf_nopenalty 4 +mf_pvp 5 +mf_pvp_noparty 6 +mf_pvp_noguild 7 +mf_gvg 8 +mf_gvg_noparty 9 +mf_nozenypenalty 10 + +StatusPoint 9 1 +BaseLevel 11 1 +SkillPoint 12 1 +Class 19 1 +Upper 56 1 +Zeny 20 1 +Sex 21 1 +Weight 24 1 +MaxWeight 25 1 +JobLevel 55 1 +BaseExp 1 1 +JobExp 2 1 +NextBaseExp 22 1 +NextJobExp 23 1 +Hp 5 1 +MaxHp 6 1 +Sp 7 1 +MaxSp 8 1 + +bMaxHP 6 +bMaxSP 8 +bStr 13 +bAgi 14 +bVit 15 +bInt 16 +bDex 17 +bLuk 18 +bAtk 41 +bAtk2 42 +bMatk1 43 +bMatk2 44 +bDef 45 +bMdef 47 +bMdef2 48 +bHit 49 +bFlee 50 +bFlee2 51 +bCritical 52 +bAspd 53 + +bAtkRange 1000 +bAtkEle 1001 +bDefEle 1002 +bCastrate 1003 +bMaxHPrate 1004 +bMaxSPrate 1005 +bUseSPrate 1006 +bAddEle 1007 +bAddRace 1008 +bAddSize 1009 +bSubEle 1010 +bSubRace 1011 +bAddEff 1012 +bResEff 1013 +bBaseAtk 1014 +bAspdRate 1015 +bHPrecovRate 1016 +bSPrecovRate 1017 +bSpeedRate 1018 +bCriticalDef 1019 +bNearAtkDef 1020 +bLongAtkDef 1021 +bDoubleRate 1022 +bDoubleAddRate 1023 +bMatk 1024 +bMatkRate 1025 +bIgnoreDefEle 1026 +bIgnoreDefRace 1027 +bAtkRate 1028 +bSpeedAddRate 1029 +bAspdAddRate 1030 +bMagicAtkDef 1031 +bMiscAtkDef 1032 +bIgnoreMdefEle 1033 +bIgnoreMdefRace 1034 +bMagicAddEle 1035 +bMagicAddRace 1036 +bMagicSubRace 1037 +bPerfectHitRate 1038 +bPerfectHitAddRate 1039 +bCriticalRate 1040 +bGetZenyNum 1041 +bAddGetZenyNum 1042 +bAddDamageClass 1043 +bAddMagicDamageClass 1044 +bAddDefClass 1045 +bAddMdefClass 1046 +bAddMonsterDropItem 1047 +bDefRatioAtkEle 1048 +bDefRatioAtkRace 1049 +bAddSpeed 1050 +bHitRate 1051 +bFleeRate 1052 +bFlee2Rate 1053 +bDefRate 1054 +bDef2Rate 1055 +bMdefRate 1056 +bMdef2Rate 1057 +bSplashRange 1058 +bSplashAddRange 1059 +bAutoSpell 1060 +bHPDrainRate 1061 +bSPDrainRate 1062 +bShortWeaponDamageReturn 1063 +bLongWeaponDamageReturn 1064 +bWeaponComaEle 1065 +bWeaponComaRace 1066 +bAddEff2 1067 +bMagicDamageReturn 1068 +bRandomAttackIncrease 1069 +bAllStats 1070 +bAgiVit 1071 +bAgiDexStr 1072 +bPerfectHide 1073 + +bRestartFullRecover 2000 +bNoCastCancel 2001 +bNoSizeFix 2002 +bNoMagicDamage 2003 +bNoWeaponDamage 2004 +bNoGemStone 2005 +bNoCastCancel2 2006 +bInfiniteEndure 2007 + +Eff_Stone 0 +Eff_Freeze 1 +Eff_Stan 2 +Eff_Sleep 3 +Eff_Poison 4 +Eff_Curse 5 +Eff_Silence 6 +Eff_Confusion 7 +Eff_Blind 8 + +SC_Stone 128 +SC_Freeze 129 +SC_Stan 130 +SC_Sleep 131 +SC_Poison 132 +SC_Curse 133 +SC_Silence 134 +SC_Confusion 135 +SC_Blind 136 +SC_SpeedPot0 37 +SC_SpeedPot1 38 +SC_SpeedPot2 39 +SC_ATKPot 185 +SC_MATKPot 186 @@ -1,99 +1,99 @@ -9,9,9,9,10,10,10,10,30,144,30,11,60,288
-16,16,16,16,18,18,18,18,43,184,43,20,86,368
-25,25,25,25,28,28,28,28,58,284,58,31,116,568
-36,36,36,36,40,40,40,40,76,348,76,44,152,696
-77,77,77,77,85,85,85,91,116,603,116,100,232,1206
-112,112,112,112,123,123,123,151,180,887,180,166,360,1774
-153,153,153,153,168,168,168,205,220,1096,220,226,440,2192
-200,200,200,200,220,220,220,268,272,1598,272,295,544,3196
-253,253,253,253,278,278,278,340,336,2540,336,374,672,5080
-320,320,320,320,400,400,400,0,520,3676,520,0,1040,7352
-385,385,385,385,41,41,41,0,604,4290,604,0,1208,8580
-490,490,490,490,613,613,613,0,699,4946,699,0,1398,9892
-585,585,585,585,731,731,731,0,802,6679,802,0,1604,13358
-700,700,700,700,875,875,875,0,948,9492,948,0,1896,18984
-830,830,830,830,1038,1038,1038,0,1125,12770,1125,0,2250,31925
-970,970,970,970,1213,1213,1213,0,1668,14344,1668,0,3336,35860
-1120,1120,1120,1120,1400,1400,1400,0,1937,16005,1937,0,3874,40013
-1260,1260,1260,1260,1575,1575,1575,0,2226,20642,2226,0,4452,51605
-1420,1420,1420,1420,1775,1775,1775,0,3040,27434,3040,0,6080,68585
-1620,1620,1620,1620,2268,2268,2268,0,3988,35108,3988,0,7976,87770
-1860,1860,1860,1860,2604,2604,2604,0,5564,38577,5564,0,11128,96443
-1990,1990,1990,1990,2786,2786,2786,0,6272,42206,6272,0,12544,105515
-2240,2240,2240,2240,3136,3136,3136,0,7021,52708,7021,0,14042,131770
-2504,2504,2504,2504,3506,3506,3506,0,9114,66971,9114,0,18228,167428
-2950,2950,2950,2950,4130,4130,4130,0,11473,82688,11473,0,28683,206720
-3426,3426,3426,3426,4796,4796,4796,0,15290,89544,15290,0,38225,223860
-3934,3934,3934,3934,5508,5508,5508,0,16891,96669,16891,0,42228,241673
-4474,4474,4474,4474,6264,6264,6264,0,18570,117821,18570,0,46425,294553
-6889,6889,6889,6889,9645,9645,9645,0,23229,144921,23229,0,58073,362303
-7995,7995,7995,7995,12392,12392,12392,0,28359,174201,28359,0,70898,479053
-9174,9174,9174,9174,14220,14220,14220,0,36478,186677,36478,0,91195,513362
-10425,10425,10425,10425,16159,16159,16159,0,39716,199584,39716,0,99290,548856
-11748,11748,11748,11748,18209,18209,18209,0,43088,238617,43088,0,107720,656197
-13967,13967,13967,13967,21649,21649,21649,0,52417,286366,52417,0,131043,787507
-15775,15775,15775,15775,24451,24451,24451,0,62495,337147,62495,0,156238,927154
-17678,17678,17678,17678,27401,27401,27401,0,78160,358435,78160,0,195408,985696
-19677,19677,19677,19677,30499,30499,30499,0,84175,380376,84175,0,210430,1046034
-21773,21773,21773,21773,33748,33748,33748,0,90404,447685,90404,0,226010,1231134
-30543,30543,30543,30543,47342,47342,47342,0,107611,526989,107611,0,269028,1449220
-34212,34212,34212,34212,58160,58160,58160,0,125915,610246,125915,0,314788,1678177
-38065,38065,38065,38065,64711,64711,64711,0,153941,644736,153941,0,384853,1773024
-42102,42102,42102,42102,71573,71573,71573,0,191781,793535,191781,0,479453,2182221
-46323,46323,46323,46323,78749,78749,78749,0,204351,921810,204351,0,510878,2534978
-53026,53026,53026,53026,90144,90144,90144,0,248352,1106758,248352,0,620880,3043585
-58419,58419,58419,58419,99312,99312,99312,0,286212,1260955,286212,0,715530,3782865
-64041,64041,64041,64041,108870,108870,108870,0,386371,1487304,386371,0,965928,4461912
-69892,69892,69892,69892,118816,118816,118816,0,409795,1557657,409795,0,1024488,4672971
-75973,75973,75973,75973,129154,129154,129154,0,482092,1990632,482092,0,1205230,5971896
-102468,102468,102468,102468,174196,174196,174196,0,509596,2083386,509596,0,1273990,6250158
-115254,115254,115254,115254,213220,213220,213220,0,0,0,982092,0,0,6875174
-128692,128692,128692,128692,238080,238080,238080,0,0,0,992092,0,0,7562691
-142784,142784,142784,142784,264150,264150,264150,0,0,0,1002092,0,0,8318960
-157528,157528,157528,157528,291427,291427,291427,0,0,0,1012092,0,0,9150856
-178184,178184,178184,178184,329640,329640,329640,0,0,0,1022092,0,0,10065942
-196300,196300,196300,196300,363155,363155,363155,0,0,0,1032092,0,0,11877812
-215198,215198,215198,215198,398116,398116,398116,0,0,0,1042092,0,0,14015818
-234879,234879,234879,234879,434526,434526,434526,0,0,0,1052092,0,0,16538655
-255341,255341,255341,255341,472381,472381,472381,0,0,0,1062092,0,0,19515624
-330188,330188,330188,330188,610848,610848,610848,0,0,0,1072092,0,0,23028437
-365914,365914,365914,365914,731828,731828,731828,0,0,0,1082092,0,0,28094693
-403224,403224,403224,403224,806448,806448,806448,0,0,0,1092092,0,0,34275525
-442116,442116,442116,442116,884232,884232,884232,0,0,0,1102092,0,0,41816141
-482590,482590,482590,482590,965180,965180,965180,0,0,0,1112092,0,0,51015692
-536948,536948,536948,536948,1073896,1073896,1073896,0,0,0,1122092,0,0,62239144
-585191,585191,585191,585191,1170382,1170382,1170382,0,0,0,1132092,0,0,79666104
-635278,635278,635278,635278,1270556,1270556,1270556,0,0,0,1142092,0,0,101972614
-687211,687211,687211,687211,1374422,1374422,1374422,0,0,0,1152092,0,0,130524946
-740988,740988,740988,740988,1481976,1481976,1481976,0,0,0,1162092,0,0,167071930
-925400,925400,925400,925400,1850800,1850800,1850800,0,0,0,1172092,0,0,213852071
-1473746,1473746,1473746,1473746,3389616,3389616,3389616,0,0,0,0,0,0,0
-1594058,1594058,1594058,1594058,3666333,3666333,3666333,0,0,0,0,0,0,0
-1718928,1718928,1718928,1718928,3953534,3953534,3953534,0,0,0,0,0,0,0
-1848355,1848355,1848355,1848355,4251217,4251217,4251217,0,0,0,0,0,0,0
-1982340,1982340,1982340,1982340,4559382,4559382,4559382,0,0,0,0,0,0,0
-2230113,2230113,2230113,2230113,5129260,5129260,5129260,0,0,0,0,0,0,0
-2386162,2386162,2386162,2386162,5488173,5488173,5488173,0,0,0,0,0,0,0
-2547417,2547417,2547417,2547417,5859059,5859059,5859059,0,0,0,0,0,0,0
-2713878,2713878,2713878,2713878,6241919,6241919,6241919,0,0,0,0,0,0,0
-3206160,3206160,3206160,3206160,7374168,7374168,7374168,0,0,0,0,0,0,0
-3681024,3681024,3681024,3681024,9570662,9570662,9570662,0,0,0,0,0,0,0
-4022472,4022472,4022472,4022472,10458427,10458427,10458427,0,0,0,0,0,0,0
-4377024,4377024,4377024,4377024,11380262,11380262,11380262,0,0,0,0,0,0,0
-4744680,4744680,4744680,4744680,12336168,12336168,12336168,0,0,0,0,0,0,0
-5125440,5125440,5125440,5125440,13326144,13326144,13326144,0,0,0,0,0,0,0
-5767272,5767272,5767272,5767272,14994907,14994907,14994907,0,0,0,0,0,0,0
-6204000,6204000,6204000,6204000,16130400,16130400,16130400,0,0,0,0,0,0,0
-6655464,6655464,6655464,6655464,17304200,17304200,17304200,0,0,0,0,0,0,0
-7121664,7121664,7121664,7121664,18516326,18516326,18516326,0,0,0,0,0,0,0
-7602600,7602600,7602600,7602600,19766760,19766760,19766760,0,0,0,0,0,0,0
-9738720,9738720,9738720,9738720,29216160,29216160,29216160,0,0,0,0,0,0,0
-11649960,11649960,11649960,11649960,34949880,34949880,34949880,0,0,0,0,0,0,0
-13643520,13643520,13643520,13643520,40930560,40930560,40930560,0,0,0,0,0,0,0
-18339300,18339300,18339300,18339300,55017900,55017900,55017900,0,0,0,0,0,0,0
-23836800,23836800,23836800,23836800,71510400,71510400,71510400,0,0,0,0,0,0,0
-35658000,35658000,35658000,35658000,106974000,106974000,106974000,0,0,0,0,0,0,0
-48687000,48687000,48687000,48687000,146061000,146061000,146061000,0,0,0,0,0,0,0
-58135000,58135000,58135000,58135000,174405000,174405000,174405000,0,0,0,0,0,0,0
-99999999,99999999,99999999,99999999,200000000,200000000,200000000,0,0,0,0,0,0,0
-0,0,0,0,0,0,0,0,0,0,0,0,0,0
+9,9,9,9,10,10,10,10,30,144,30,11,60,288 +16,16,16,16,18,18,18,18,43,184,43,20,86,368 +25,25,25,25,28,28,28,28,58,284,58,31,116,568 +36,36,36,36,40,40,40,40,76,348,76,44,152,696 +77,77,77,77,85,85,85,91,116,603,116,100,232,1206 +112,112,112,112,123,123,123,151,180,887,180,166,360,1774 +153,153,153,153,168,168,168,205,220,1096,220,226,440,2192 +200,200,200,200,220,220,220,268,272,1598,272,295,544,3196 +253,253,253,253,278,278,278,340,336,2540,336,374,672,5080 +320,320,320,320,400,400,400,0,520,3676,520,0,1040,7352 +385,385,385,385,41,41,41,0,604,4290,604,0,1208,8580 +490,490,490,490,613,613,613,0,699,4946,699,0,1398,9892 +585,585,585,585,731,731,731,0,802,6679,802,0,1604,13358 +700,700,700,700,875,875,875,0,948,9492,948,0,1896,18984 +830,830,830,830,1038,1038,1038,0,1125,12770,1125,0,2250,31925 +970,970,970,970,1213,1213,1213,0,1668,14344,1668,0,3336,35860 +1120,1120,1120,1120,1400,1400,1400,0,1937,16005,1937,0,3874,40013 +1260,1260,1260,1260,1575,1575,1575,0,2226,20642,2226,0,4452,51605 +1420,1420,1420,1420,1775,1775,1775,0,3040,27434,3040,0,6080,68585 +1620,1620,1620,1620,2268,2268,2268,0,3988,35108,3988,0,7976,87770 +1860,1860,1860,1860,2604,2604,2604,0,5564,38577,5564,0,11128,96443 +1990,1990,1990,1990,2786,2786,2786,0,6272,42206,6272,0,12544,105515 +2240,2240,2240,2240,3136,3136,3136,0,7021,52708,7021,0,14042,131770 +2504,2504,2504,2504,3506,3506,3506,0,9114,66971,9114,0,18228,167428 +2950,2950,2950,2950,4130,4130,4130,0,11473,82688,11473,0,28683,206720 +3426,3426,3426,3426,4796,4796,4796,0,15290,89544,15290,0,38225,223860 +3934,3934,3934,3934,5508,5508,5508,0,16891,96669,16891,0,42228,241673 +4474,4474,4474,4474,6264,6264,6264,0,18570,117821,18570,0,46425,294553 +6889,6889,6889,6889,9645,9645,9645,0,23229,144921,23229,0,58073,362303 +7995,7995,7995,7995,12392,12392,12392,0,28359,174201,28359,0,70898,479053 +9174,9174,9174,9174,14220,14220,14220,0,36478,186677,36478,0,91195,513362 +10425,10425,10425,10425,16159,16159,16159,0,39716,199584,39716,0,99290,548856 +11748,11748,11748,11748,18209,18209,18209,0,43088,238617,43088,0,107720,656197 +13967,13967,13967,13967,21649,21649,21649,0,52417,286366,52417,0,131043,787507 +15775,15775,15775,15775,24451,24451,24451,0,62495,337147,62495,0,156238,927154 +17678,17678,17678,17678,27401,27401,27401,0,78160,358435,78160,0,195408,985696 +19677,19677,19677,19677,30499,30499,30499,0,84175,380376,84175,0,210430,1046034 +21773,21773,21773,21773,33748,33748,33748,0,90404,447685,90404,0,226010,1231134 +30543,30543,30543,30543,47342,47342,47342,0,107611,526989,107611,0,269028,1449220 +34212,34212,34212,34212,58160,58160,58160,0,125915,610246,125915,0,314788,1678177 +38065,38065,38065,38065,64711,64711,64711,0,153941,644736,153941,0,384853,1773024 +42102,42102,42102,42102,71573,71573,71573,0,191781,793535,191781,0,479453,2182221 +46323,46323,46323,46323,78749,78749,78749,0,204351,921810,204351,0,510878,2534978 +53026,53026,53026,53026,90144,90144,90144,0,248352,1106758,248352,0,620880,3043585 +58419,58419,58419,58419,99312,99312,99312,0,286212,1260955,286212,0,715530,3782865 +64041,64041,64041,64041,108870,108870,108870,0,386371,1487304,386371,0,965928,4461912 +69892,69892,69892,69892,118816,118816,118816,0,409795,1557657,409795,0,1024488,4672971 +75973,75973,75973,75973,129154,129154,129154,0,482092,1990632,482092,0,1205230,5971896 +102468,102468,102468,102468,174196,174196,174196,0,509596,2083386,509596,0,1273990,6250158 +115254,115254,115254,115254,213220,213220,213220,0,0,0,982092,0,0,6875174 +128692,128692,128692,128692,238080,238080,238080,0,0,0,992092,0,0,7562691 +142784,142784,142784,142784,264150,264150,264150,0,0,0,1002092,0,0,8318960 +157528,157528,157528,157528,291427,291427,291427,0,0,0,1012092,0,0,9150856 +178184,178184,178184,178184,329640,329640,329640,0,0,0,1022092,0,0,10065942 +196300,196300,196300,196300,363155,363155,363155,0,0,0,1032092,0,0,11877812 +215198,215198,215198,215198,398116,398116,398116,0,0,0,1042092,0,0,14015818 +234879,234879,234879,234879,434526,434526,434526,0,0,0,1052092,0,0,16538655 +255341,255341,255341,255341,472381,472381,472381,0,0,0,1062092,0,0,19515624 +330188,330188,330188,330188,610848,610848,610848,0,0,0,1072092,0,0,23028437 +365914,365914,365914,365914,731828,731828,731828,0,0,0,1082092,0,0,28094693 +403224,403224,403224,403224,806448,806448,806448,0,0,0,1092092,0,0,34275525 +442116,442116,442116,442116,884232,884232,884232,0,0,0,1102092,0,0,41816141 +482590,482590,482590,482590,965180,965180,965180,0,0,0,1112092,0,0,51015692 +536948,536948,536948,536948,1073896,1073896,1073896,0,0,0,1122092,0,0,62239144 +585191,585191,585191,585191,1170382,1170382,1170382,0,0,0,1132092,0,0,79666104 +635278,635278,635278,635278,1270556,1270556,1270556,0,0,0,1142092,0,0,101972614 +687211,687211,687211,687211,1374422,1374422,1374422,0,0,0,1152092,0,0,130524946 +740988,740988,740988,740988,1481976,1481976,1481976,0,0,0,1162092,0,0,167071930 +925400,925400,925400,925400,1850800,1850800,1850800,0,0,0,1172092,0,0,213852071 +1473746,1473746,1473746,1473746,3389616,3389616,3389616,0,0,0,0,0,0,0 +1594058,1594058,1594058,1594058,3666333,3666333,3666333,0,0,0,0,0,0,0 +1718928,1718928,1718928,1718928,3953534,3953534,3953534,0,0,0,0,0,0,0 +1848355,1848355,1848355,1848355,4251217,4251217,4251217,0,0,0,0,0,0,0 +1982340,1982340,1982340,1982340,4559382,4559382,4559382,0,0,0,0,0,0,0 +2230113,2230113,2230113,2230113,5129260,5129260,5129260,0,0,0,0,0,0,0 +2386162,2386162,2386162,2386162,5488173,5488173,5488173,0,0,0,0,0,0,0 +2547417,2547417,2547417,2547417,5859059,5859059,5859059,0,0,0,0,0,0,0 +2713878,2713878,2713878,2713878,6241919,6241919,6241919,0,0,0,0,0,0,0 +3206160,3206160,3206160,3206160,7374168,7374168,7374168,0,0,0,0,0,0,0 +3681024,3681024,3681024,3681024,9570662,9570662,9570662,0,0,0,0,0,0,0 +4022472,4022472,4022472,4022472,10458427,10458427,10458427,0,0,0,0,0,0,0 +4377024,4377024,4377024,4377024,11380262,11380262,11380262,0,0,0,0,0,0,0 +4744680,4744680,4744680,4744680,12336168,12336168,12336168,0,0,0,0,0,0,0 +5125440,5125440,5125440,5125440,13326144,13326144,13326144,0,0,0,0,0,0,0 +5767272,5767272,5767272,5767272,14994907,14994907,14994907,0,0,0,0,0,0,0 +6204000,6204000,6204000,6204000,16130400,16130400,16130400,0,0,0,0,0,0,0 +6655464,6655464,6655464,6655464,17304200,17304200,17304200,0,0,0,0,0,0,0 +7121664,7121664,7121664,7121664,18516326,18516326,18516326,0,0,0,0,0,0,0 +7602600,7602600,7602600,7602600,19766760,19766760,19766760,0,0,0,0,0,0,0 +9738720,9738720,9738720,9738720,29216160,29216160,29216160,0,0,0,0,0,0,0 +11649960,11649960,11649960,11649960,34949880,34949880,34949880,0,0,0,0,0,0,0 +13643520,13643520,13643520,13643520,40930560,40930560,40930560,0,0,0,0,0,0,0 +18339300,18339300,18339300,18339300,55017900,55017900,55017900,0,0,0,0,0,0,0 +23836800,23836800,23836800,23836800,71510400,71510400,71510400,0,0,0,0,0,0,0 +35658000,35658000,35658000,35658000,106974000,106974000,106974000,0,0,0,0,0,0,0 +48687000,48687000,48687000,48687000,146061000,146061000,146061000,0,0,0,0,0,0,0 +58135000,58135000,58135000,58135000,174405000,174405000,174405000,0,0,0,0,0,0,0 +99999999,99999999,99999999,99999999,200000000,200000000,200000000,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/db/exp2.txt b/db/exp2.txt index 0c81931..b9cbfeb 100644 --- a/db/exp2.txt +++ b/db/exp2.txt @@ -1,99 +1,99 @@ -10,9,9,11,60,288,144
-18,16,16,20,86,368,184
-28,25,25,31,116,568,284
-40,36,36,44,152,696,348
-85,77,77,100,232,1206,603
-123,112,112,166,360,1774,887
-168,153,153,226,440,2192,1096
-220,200,200,295,544,3196,1598
-278,253,253,374,672,5080,2540
-400,320,320,0,1040,7352,3676
-481,385,385,0,1208,8580,4290
-613,490,490,0,1398,9892,4946
-731,585,585,0,1604,13358,6679
-875,700,700,0,1896,18984,9492
-1038,830,830,0,2250,31925,12770
-1213,970,970,0,3336,35860,14344
-1400,1120,1120,0,3874,40013,16005
-1575,1260,1260,0,4452,51605,20642
-1775,1420,1420,0,6080,68585,27434
-2268,1620,1620,0,7976,87770,35108
-2604,1860,1860,0,11128,96443,38577
-2786,1990,1990,0,12544,105515,42206
-3136,2240,2240,0,14042,131770,52708
-3506,2504,2504,0,18228,167428,66971
-4136,2950,2950,0,28683,206720,82688
-4796,3426,3426,0,38225,223860,89544
-5508,3934,3934,0,42228,241673,96669
-6264,4474,4474,0,46425,294553,117821
-9645,6889,6889,0,58073,362303,144921
-12392,7995,7995,0,70898,479053,174201
-14220,9174,9174,0,91195,548856,186677
-16159,10425,10425,0,99290,656197,199584
-18209,11748,11748,0,107720,787507,238617
-21649,13967,13967,0,131043,927154,286366
-24451,15775,15775,0,156238,985696,337147
-27401,17678,17678,0,195400,1046034,358435
-30499,19677,19677,0,210438,1231134,380376
-33748,21773,21773,0,226010,1449220,447685
-47342,30543,30543,0,269028,1678177,526989
-58160,34212,34212,0,314788,1773024,610246
-64711,38065,38065,0,384853,2182221,644736
-71573,42102,42102,0,479453,2534978,793535
-78749,46323,46323,0,510878,3043585,921810
-90144,53026,53026,0,620880,3782865,1106758
-99312,58419,58419,0,715530,4461912,1260955
-108870,64041,64041,0,965928,4672971,1487304
-118816,69892,69892,0,1024488,5971896,1557657
-129154,75973,75973,0,1205230,6250158,1990632
-174196,102468,102468,0,1273990,6875174,2083386
-213220,115254,115254,0,0,7562691,0
-238080,128692,128692,0,0,8318960,0
-264150,142784,142784,0,0,9150856,0
-291427,157528,157528,0,0,10065942,0
-329640,178184,178184,0,0,11877812,0
-363155,196300,196300,0,0,14015818,0
-398116,215198,215198,0,0,16538665,0
-434526,234879,234879,0,0,19515624,0
-472381,255341,255341,0,0,23028437,0
-610848,330188,330188,0,0,28094693,0
-741828,365914,365914,0,0,34275525,0
-806448,403224,403224,0,0,41816141,0
-884232,442116,442116,0,0,51015692,0
-965180,482590,482590,0,0,62239144,0
-1073896,536948,536948,0,0,79666104,0
-1170382,585191,585191,0,0,101972614,0
-1270556,635278,635278,0,0,130624946,0
-1374422,687211,687211,0,0,167071930,0
-1481976,740988,740988,0,0,213852071,0
-1850800,925400,925400,0,0,213852071,0
-3389616,1473746,1473746,0,0,0,0
-3666333,1594058,1594058,0,0,0,0
-3953534,1718928,1718928,0,0,0,0
-4251217,1848355,1848355,0,0,0,0
-4559382,1982340,1982340,0,0,0,0
-5129260,2230113,2230113,0,0,0,0
-5488173,2386162,2386162,0,0,0,0
-5859059,2547417,2547417,0,0,0,0
-6241919,2713878,2713878,0,0,0,0
-7374168,3206160,3206160,0,0,0,0
-9570622,3681024,3681024,0,0,0,0
-10458427,4022472,4022472,0,0,0,0
-11380262,4377024,4377024,0,0,0,0
-12336168,4744680,4744680,0,0,0,0
-13326144,5125440,5125440,0,0,0,0
-14994907,5767272,5767272,0,0,0,0
-16130400,6204000,6204000,0,0,0,0
-17304206,6655464,6655464,0,0,0,0
-18586326,7121664,7121664,0,0,0,0
-19766760,7602600,7602600,0,0,0,0
-29216160,9738720,9738720,0,0,0,0
-34949880,11649960,11649960,0,0,0,0
-40930560,13643520,13643520,0,0,0,0
-55017900,18339300,18339300,0,0,0,0
-71510400,23836800,23836800,0,0,0,0
-106974000,35658000,35658000,0,0,0,0
-146061000,48687000,48687000,0,0,0,0
-174405000,58135000,58135000,0,0,0,0
-299999999,99999999,99999999,0,0,0,0
-0,0,0,0,0,0,0,0
+10,9,9,11,60,288,144 +18,16,16,20,86,368,184 +28,25,25,31,116,568,284 +40,36,36,44,152,696,348 +85,77,77,100,232,1206,603 +123,112,112,166,360,1774,887 +168,153,153,226,440,2192,1096 +220,200,200,295,544,3196,1598 +278,253,253,374,672,5080,2540 +400,320,320,0,1040,7352,3676 +481,385,385,0,1208,8580,4290 +613,490,490,0,1398,9892,4946 +731,585,585,0,1604,13358,6679 +875,700,700,0,1896,18984,9492 +1038,830,830,0,2250,31925,12770 +1213,970,970,0,3336,35860,14344 +1400,1120,1120,0,3874,40013,16005 +1575,1260,1260,0,4452,51605,20642 +1775,1420,1420,0,6080,68585,27434 +2268,1620,1620,0,7976,87770,35108 +2604,1860,1860,0,11128,96443,38577 +2786,1990,1990,0,12544,105515,42206 +3136,2240,2240,0,14042,131770,52708 +3506,2504,2504,0,18228,167428,66971 +4136,2950,2950,0,28683,206720,82688 +4796,3426,3426,0,38225,223860,89544 +5508,3934,3934,0,42228,241673,96669 +6264,4474,4474,0,46425,294553,117821 +9645,6889,6889,0,58073,362303,144921 +12392,7995,7995,0,70898,479053,174201 +14220,9174,9174,0,91195,548856,186677 +16159,10425,10425,0,99290,656197,199584 +18209,11748,11748,0,107720,787507,238617 +21649,13967,13967,0,131043,927154,286366 +24451,15775,15775,0,156238,985696,337147 +27401,17678,17678,0,195400,1046034,358435 +30499,19677,19677,0,210438,1231134,380376 +33748,21773,21773,0,226010,1449220,447685 +47342,30543,30543,0,269028,1678177,526989 +58160,34212,34212,0,314788,1773024,610246 +64711,38065,38065,0,384853,2182221,644736 +71573,42102,42102,0,479453,2534978,793535 +78749,46323,46323,0,510878,3043585,921810 +90144,53026,53026,0,620880,3782865,1106758 +99312,58419,58419,0,715530,4461912,1260955 +108870,64041,64041,0,965928,4672971,1487304 +118816,69892,69892,0,1024488,5971896,1557657 +129154,75973,75973,0,1205230,6250158,1990632 +174196,102468,102468,0,1273990,6875174,2083386 +213220,115254,115254,0,0,7562691,0 +238080,128692,128692,0,0,8318960,0 +264150,142784,142784,0,0,9150856,0 +291427,157528,157528,0,0,10065942,0 +329640,178184,178184,0,0,11877812,0 +363155,196300,196300,0,0,14015818,0 +398116,215198,215198,0,0,16538665,0 +434526,234879,234879,0,0,19515624,0 +472381,255341,255341,0,0,23028437,0 +610848,330188,330188,0,0,28094693,0 +741828,365914,365914,0,0,34275525,0 +806448,403224,403224,0,0,41816141,0 +884232,442116,442116,0,0,51015692,0 +965180,482590,482590,0,0,62239144,0 +1073896,536948,536948,0,0,79666104,0 +1170382,585191,585191,0,0,101972614,0 +1270556,635278,635278,0,0,130624946,0 +1374422,687211,687211,0,0,167071930,0 +1481976,740988,740988,0,0,213852071,0 +1850800,925400,925400,0,0,213852071,0 +3389616,1473746,1473746,0,0,0,0 +3666333,1594058,1594058,0,0,0,0 +3953534,1718928,1718928,0,0,0,0 +4251217,1848355,1848355,0,0,0,0 +4559382,1982340,1982340,0,0,0,0 +5129260,2230113,2230113,0,0,0,0 +5488173,2386162,2386162,0,0,0,0 +5859059,2547417,2547417,0,0,0,0 +6241919,2713878,2713878,0,0,0,0 +7374168,3206160,3206160,0,0,0,0 +9570622,3681024,3681024,0,0,0,0 +10458427,4022472,4022472,0,0,0,0 +11380262,4377024,4377024,0,0,0,0 +12336168,4744680,4744680,0,0,0,0 +13326144,5125440,5125440,0,0,0,0 +14994907,5767272,5767272,0,0,0,0 +16130400,6204000,6204000,0,0,0,0 +17304206,6655464,6655464,0,0,0,0 +18586326,7121664,7121664,0,0,0,0 +19766760,7602600,7602600,0,0,0,0 +29216160,9738720,9738720,0,0,0,0 +34949880,11649960,11649960,0,0,0,0 +40930560,13643520,13643520,0,0,0,0 +55017900,18339300,18339300,0,0,0,0 +71510400,23836800,23836800,0,0,0,0 +106974000,35658000,35658000,0,0,0,0 +146061000,48687000,48687000,0,0,0,0 +174405000,58135000,58135000,0,0,0,0 +299999999,99999999,99999999,0,0,0,0 +0,0,0,0,0,0,0,0 diff --git a/db/item_bluebox.txt b/db/item_bluebox.txt index d43f043..0932696 100644 --- a/db/item_bluebox.txt +++ b/db/item_bluebox.txt @@ -1,7 +1,7 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
-//
-// ŒÃ‚‚¢” ‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB
-// ItemID, ItemName(Dummy), Rate
-// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B)
-// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B)
-//
+// File created using Spamrat's Athena Database Editor v1.4.4 +// +// ŒÃ‚‚¢” ‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB +// ItemID, ItemName(Dummy), Rate +// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B) +// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B) +// diff --git a/db/item_cardalbum.txt b/db/item_cardalbum.txt index 1f13a86..4472147 100644 --- a/db/item_cardalbum.txt +++ b/db/item_cardalbum.txt @@ -1,7 +1,7 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
-//
-// ŒÃ‚¢ƒJ[ƒh’Ÿ‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB
-// ItemID, ItemName(Dummy), Rate
-// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B)
-// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B)
-//
+// File created using Spamrat's Athena Database Editor v1.4.4 +// +// ŒÃ‚¢ƒJ[ƒh’Ÿ‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB +// ItemID, ItemName(Dummy), Rate +// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B) +// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B) +// diff --git a/db/item_db2.txt b/db/item_db2.txt index 08f5fd0..f9d7151 100644 --- a/db/item_db2.txt +++ b/db/item_db2.txt @@ -1,4 +1,4 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
-//
-//ID,Name,Jname,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Gender,Loc,wLV,eLV,View,{UseScript},{EquipScript}
-//
+// File created using Spamrat's Athena Database Editor v1.4.4 +// +//ID,Name,Jname,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Gender,Loc,wLV,eLV,View,{UseScript},{EquipScript} +// diff --git a/db/item_descriptions.txt b/db/item_descriptions.txt index 88d20e4..14d2ed2 100644 --- a/db/item_descriptions.txt +++ b/db/item_descriptions.txt @@ -1,105 +1,105 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
-501#»
-502#»
-503#»
-504#»
-505#»
-506#»
-507#»
-508#»
-509#»
-510#»
-511#»
-512#»
-513#»
-514#»
-515#»
+// File created using Spamrat's Athena Database Editor v1.4.4 +501#» +502#» +503#» +504#» +505#» +506#» +507#» +508#» +509#» +510#» +511#» +512#» +513#» +514#» +515#» 516#» -
+ 517#» -
+ 518#» -
+ 519#» -
+ 520#» -
+ 521#» -
+ 522#» -
+ 523#» -
-524#»A fancy hat
-525#»A miner hat
+ +524#»A fancy hat +525#»A miner hat 526#» -
+ 527#» -
-528#»Boots
+ +528#»Boots 529#» -
+ 530#» -
+ 531#» -Boots
+Boots 532#» -Boots
-533#»
-534#»
-535#»
+Boots +533#» +534#» +535#» 536#» -
+ 537#» -
-538#»
-539#»
-540#»
-541#»
-542#»
-543#»
-544#»
-545#»
-546#»
-547#» A spear
-548#» A pickaxe
-549#»An axe
-550#»An axe usually used by blacksmiths
-551#»An hint
-552#»An hint
-553#»An hint
-554#»An hint
-555#»An hint
-556#»An hint
-557#»An hint
-558#»An hint
-559#»An hint
-560#»An hint
-561#»Sabre sword
-562#»A chicken leg
+ +538#» +539#» +540#» +541#» +542#» +543#» +544#» +545#» +546#» +547#» A spear +548#» A pickaxe +549#»An axe +550#»An axe usually used by blacksmiths +551#»An hint +552#»An hint +553#»An hint +554#»An hint +555#»An hint +556#»An hint +557#»An hint +558#»An hint +559#»An hint +560#»An hint +561#»Sabre sword +562#»A chicken leg 563#» -Boots
+Boots 564#» -
+ 565#» -A chicken leg
-566#»
+A chicken leg +566#» 567#» -
-568#»»
-1199#»
-1200#»
-1201#»
-1202#»
+ +568#»» +1199#» +1200#» +1201#» +1202#» diff --git a/db/item_giftbox.txt b/db/item_giftbox.txt index 32088cd..92ed47f 100644 --- a/db/item_giftbox.txt +++ b/db/item_giftbox.txt @@ -1,7 +1,7 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
-//
-// ƒvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒX‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB
-// ItemID, ItemName(Dummy), Rate
-// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B)
-// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B)
-//
+// File created using Spamrat's Athena Database Editor v1.4.4 +// +// ƒvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒX‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB +// ItemID, ItemName(Dummy), Rate +// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B) +// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B) +// diff --git a/db/item_noequip.txt b/db/item_noequip.txt index 5b62c4f..5eb3697 100644 --- a/db/item_noequip.txt +++ b/db/item_noequip.txt @@ -1,4 +1,4 @@ -// The equipment restriction file
-// here equipment at PvP and GvG
-// where it is possible to restrict, the prescribed form: < ItemID> < Mode>
-// mode = 1- So with PvP restriction, 2- GvG restriction, 3- PvP and GvG which restriction
+// The equipment restriction file +// here equipment at PvP and GvG +// where it is possible to restrict, the prescribed form: < ItemID> < Mode> +// mode = 1- So with PvP restriction, 2- GvG restriction, 3- PvP and GvG which restriction diff --git a/db/item_scroll.txt b/db/item_scroll.txt index 7a473ff..00b5038 100644 --- a/db/item_scroll.txt +++ b/db/item_scroll.txt @@ -1,5 +1,5 @@ -// ŒÃ‚¢Šª•¨‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB
-// nameid, item_name(dummy), rate
-// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B)
-// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B)
-0,Jellopy,909
+// ŒÃ‚¢Šª•¨‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB +// nameid, item_name(dummy), rate +// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B) +// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B) +0,Jellopy,909 diff --git a/db/item_violetbox.txt b/db/item_violetbox.txt index d0efecd..88bde98 100644 --- a/db/item_violetbox.txt +++ b/db/item_violetbox.txt @@ -1,7 +1,7 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
-//
-// ŒÃ‚¢Ž‡F‚Ì” ‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB
-// ItemID, ItemName(Dummy), Rate
-// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B)
-// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B)
-//
+// File created using Spamrat's Athena Database Editor v1.4.4 +// +// ŒÃ‚¢Ž‡F‚Ì” ‚©‚瓾‚ç‚ê‚éƒAƒCƒeƒ€‚ðÝ’èB +// ItemID, ItemName(Dummy), Rate +// ƒAƒCƒeƒ€IDAƒAƒCƒeƒ€‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B) +// ƒAƒCƒeƒ€ID‚ª0‚Ìꇊm—¦‚ðƒAƒCƒeƒ€‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É“¾‚ç‚ê‚éƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B) +// diff --git a/db/job_db1.txt b/db/job_db1.txt index e07029b..060d7f3 100644 --- a/db/job_db1.txt +++ b/db/job_db1.txt @@ -1,70 +1,70 @@ -//weight,hp,hp2,sp,aspd*17(‘fŽè,’ZŒ•,•ÐŽèŒ•,—¼ŽèŒ•,•ÐŽè‘„,—¼Žè‘„,•ÐŽè•€,—¼Žè•€,•ÐŽè“ÝŠí,—¼Žè“ÝŠí,ñ,‹|,’Ü,ŠyŠí,•Ú,–{,ƒJƒ^[ƒ‹)
-//x NOV,SWO,MAG,ARC,ACO,MER,THI,KNI,PRI,WIZ,BLA,HUN,ASS,KNIp,CRU,MON,SAG,ROG,ALC,BAR,DAN,CRUp,WED,SNV
-20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000
-28000, 70,500,200, 400, 500, 550, 600, 650, 700, 700, 750, 650, 700,2000,2000,2000,2000,2000,2000,2000
-22000, 30,500,600, 500, 600,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000,2000
-26000, 50,500,200, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000
-24000, 40,500,500, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000,2000,2000
-28000, 40,500,300, 400, 600, 700,2000,2000,2000, 700, 750, 700, 700,2000,2000,2000,2000,2000,2000,2000
-24000, 50,500,200, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000, 800,2000,2000,2000,2000,2000
-28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-26000, 75,500,800, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000, 600,2000
-24000, 55,500,900, 500, 575,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000,2000,2000
-30000, 90,500,400, 400, 600, 650,2000,2000,2000, 650, 650, 675, 675,2000,2000,2000,2000,2000,2000,2000
-27000, 85,500,400, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 600,2000,2000,2000,2000,2000
-24000,110,500,400, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000,2000,2000,2000,2000,2000, 500
-28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-28000,110,700,470, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-26000, 90,650,470, 400,2000,2000,2000,2000,2000,2000,2000, 575, 575, 575,2000, 475,2000,2000,2000,2000
-24000, 75,500,700, 450, 525,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000, 550,2000
-24000, 85,500,500, 400, 500, 550,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000,2000,2000,2000
-30000, 90,500,400, 400, 550, 575,2000,2000,2000, 675, 700, 650, 650,2000,2000,2000,2000,2000,2000,2000
-27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000, 575,2000,2000,2000
-27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000, 575,2000,2000
-28000,110,700,470, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-20000, 0,500,100,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000
-20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000
-20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000
-28000, 70,500,200, 400, 500, 550, 600, 650, 700, 700, 750, 650, 700,2000,2000,2000,2000,2000,2000,2000
-22000, 30,500,600, 500, 600,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000,2000
-26000, 50,500,200, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000
-24000, 40,500,500, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000,2000,2000
-28000, 40,500,300, 400, 600, 700,2000,2000,2000, 700, 750, 700, 700,2000,2000,2000,2000,2000,2000,2000
-24000, 50,500,200, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000, 800,2000,2000,2000,2000,2000
-28000,195,500,390, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-26000,97.5,500,1040, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000, 600,2000
-24000,71.5,500,1170, 500, 575,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000,2000,2000
-30000,117,500,520, 400, 600, 650,2000,2000,2000, 650, 650, 675, 675,2000,2000,2000,2000,2000,2000,2000
-27000,110.5,500,520, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 600,2000,2000,2000,2000,2000
-24000,143,500,520, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000,2000,2000,2000,2000,2000, 500
-28000,195,500,390, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-28000,143,700,611, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-26000,117,650,611, 400,2000,2000,2000,2000,2000,2000,2000, 575, 575, 575,2000, 475,2000,2000,2000,2000
-24000,97.5,500,910, 450, 525,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000, 550,2000
-24000,110.5,500,650, 400, 500, 550,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000,2000,2000,2000
-30000,117,500,520, 400, 550, 575,2000,2000,2000, 675, 700, 650, 650,2000,2000,2000,2000,2000,2000,2000
-27000,97.5,300,780, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000, 575,2000,2000,2000
-27000,97.5,300,780, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000, 575,2000,2000
-28000,143,700,611, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000
-28000, 70,500,200, 400, 500, 550, 600, 650, 700, 700, 750, 650, 700,2000,2000,2000,2000,2000,2000,2000
-22000, 30,500,600, 500, 600,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000,2000
-26000, 50,500,200, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000
-24000, 40,500,500, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000,2000,2000
-28000, 40,500,300, 400, 600, 700,2000,2000,2000, 700, 750, 700, 700,2000,2000,2000,2000,2000,2000,2000
-24000, 50,500,200, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000, 800,2000,2000,2000,2000,2000
-28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-26000, 75,500,800, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000, 600,2000
-24000, 55,500,900, 500, 575,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000,2000,2000
-30000, 90,500,400, 400, 600, 650,2000,2000,2000, 650, 650, 675, 675,2000,2000,2000,2000,2000,2000,2000
-27000, 85,500,400, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 600,2000,2000,2000,2000,2000
-24000,110,500,400, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000,2000,2000,2000,2000,2000, 500
-28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-28000,110,700,470, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
-26000, 90,650,470, 400,2000,2000,2000,2000,2000,2000,2000, 575, 575, 575,2000, 475,2000,2000,2000,2000
-24000, 75,500,700, 450, 525,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000, 550,2000
-24000, 85,500,500, 400, 500, 550,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000,2000,2000,2000
-30000, 90,500,400, 400, 550, 575,2000,2000,2000, 675, 700, 650, 650,2000,2000,2000,2000,2000,2000,2000
-27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000, 575,2000,2000,2000
-27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000, 575,2000,2000
+//weight,hp,hp2,sp,aspd*17(‘fŽè,’ZŒ•,•ÐŽèŒ•,—¼ŽèŒ•,•ÐŽè‘„,—¼Žè‘„,•ÐŽè•€,—¼Žè•€,•ÐŽè“ÝŠí,—¼Žè“ÝŠí,ñ,‹|,’Ü,ŠyŠí,•Ú,–{,ƒJƒ^[ƒ‹) +//x NOV,SWO,MAG,ARC,ACO,MER,THI,KNI,PRI,WIZ,BLA,HUN,ASS,KNIp,CRU,MON,SAG,ROG,ALC,BAR,DAN,CRUp,WED,SNV +20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000 +28000, 70,500,200, 400, 500, 550, 600, 650, 700, 700, 750, 650, 700,2000,2000,2000,2000,2000,2000,2000 +22000, 30,500,600, 500, 600,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000,2000 +26000, 50,500,200, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000 +24000, 40,500,500, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000,2000,2000 +28000, 40,500,300, 400, 600, 700,2000,2000,2000, 700, 750, 700, 700,2000,2000,2000,2000,2000,2000,2000 +24000, 50,500,200, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000, 800,2000,2000,2000,2000,2000 +28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +26000, 75,500,800, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000, 600,2000 +24000, 55,500,900, 500, 575,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000,2000,2000 +30000, 90,500,400, 400, 600, 650,2000,2000,2000, 650, 650, 675, 675,2000,2000,2000,2000,2000,2000,2000 +27000, 85,500,400, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 600,2000,2000,2000,2000,2000 +24000,110,500,400, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000,2000,2000,2000,2000,2000, 500 +28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +28000,110,700,470, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +26000, 90,650,470, 400,2000,2000,2000,2000,2000,2000,2000, 575, 575, 575,2000, 475,2000,2000,2000,2000 +24000, 75,500,700, 450, 525,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000, 550,2000 +24000, 85,500,500, 400, 500, 550,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000,2000,2000,2000 +30000, 90,500,400, 400, 550, 575,2000,2000,2000, 675, 700, 650, 650,2000,2000,2000,2000,2000,2000,2000 +27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000, 575,2000,2000,2000 +27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000, 575,2000,2000 +28000,110,700,470, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +20000, 0,500,100,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000,2000 +20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000 +20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000 +28000, 70,500,200, 400, 500, 550, 600, 650, 700, 700, 750, 650, 700,2000,2000,2000,2000,2000,2000,2000 +22000, 30,500,600, 500, 600,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000,2000 +26000, 50,500,200, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000 +24000, 40,500,500, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000,2000,2000 +28000, 40,500,300, 400, 600, 700,2000,2000,2000, 700, 750, 700, 700,2000,2000,2000,2000,2000,2000,2000 +24000, 50,500,200, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000, 800,2000,2000,2000,2000,2000 +28000,195,500,390, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +26000,97.5,500,1040, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000, 600,2000 +24000,71.5,500,1170, 500, 575,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000,2000,2000 +30000,117,500,520, 400, 600, 650,2000,2000,2000, 650, 650, 675, 675,2000,2000,2000,2000,2000,2000,2000 +27000,110.5,500,520, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 600,2000,2000,2000,2000,2000 +24000,143,500,520, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000,2000,2000,2000,2000,2000, 500 +28000,195,500,390, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +28000,143,700,611, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +26000,117,650,611, 400,2000,2000,2000,2000,2000,2000,2000, 575, 575, 575,2000, 475,2000,2000,2000,2000 +24000,97.5,500,910, 450, 525,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000, 550,2000 +24000,110.5,500,650, 400, 500, 550,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000,2000,2000,2000 +30000,117,500,520, 400, 550, 575,2000,2000,2000, 675, 700, 650, 650,2000,2000,2000,2000,2000,2000,2000 +27000,97.5,300,780, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000, 575,2000,2000,2000 +27000,97.5,300,780, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000, 575,2000,2000 +28000,143,700,611, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +20000, 0,500,100, 500, 650, 700,2000,2000,2000, 800,2000, 700, 700, 650,2000,2000,2000,2000,2000,2000 +28000, 70,500,200, 400, 500, 550, 600, 650, 700, 700, 750, 650, 700,2000,2000,2000,2000,2000,2000,2000 +22000, 30,500,600, 500, 600,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000,2000 +26000, 50,500,200, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 700,2000,2000,2000,2000,2000 +24000, 40,500,500, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000,2000,2000 +28000, 40,500,300, 400, 600, 700,2000,2000,2000, 700, 750, 700, 700,2000,2000,2000,2000,2000,2000,2000 +24000, 50,500,200, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000, 800,2000,2000,2000,2000,2000 +28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +26000, 75,500,800, 400,2000,2000,2000,2000,2000,2000,2000, 600, 600, 600,2000,2000,2000,2000, 600,2000 +24000, 55,500,900, 500, 575,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000,2000,2000 +30000, 90,500,400, 400, 600, 650,2000,2000,2000, 650, 650, 675, 675,2000,2000,2000,2000,2000,2000,2000 +27000, 85,500,400, 400, 600,2000,2000,2000,2000,2000,2000,2000,2000,2000, 600,2000,2000,2000,2000,2000 +24000,110,500,400, 400, 500, 650,2000,2000,2000, 800,2000,2000,2000,2000,2000,2000,2000,2000,2000, 500 +28000,150,500,300, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +28000,110,700,470, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000 +26000, 90,650,470, 400,2000,2000,2000,2000,2000,2000,2000, 575, 575, 575,2000, 475,2000,2000,2000,2000 +24000, 75,500,700, 450, 525,2000,2000,2000,2000,2000,2000,2000,2000, 625,2000,2000,2000,2000, 550,2000 +24000, 85,500,500, 400, 500, 550,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000,2000,2000,2000 +30000, 90,500,400, 400, 550, 575,2000,2000,2000, 675, 700, 650, 650,2000,2000,2000,2000,2000,2000,2000 +27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000, 575,2000,2000,2000 +27000, 75,300,600, 400, 550,2000,2000,2000,2000,2000,2000,2000,2000,2000, 650,2000,2000, 575,2000,2000 28000,110,700,470, 400, 500, 500, 550, 600, 600, 700, 700, 650, 700,2000,2000,2000,2000,2000,2000,2000
\ No newline at end of file diff --git a/db/job_db2-2.txt b/db/job_db2-2.txt index 4fc13c6..629e4e2 100644 --- a/db/job_db2-2.txt +++ b/db/job_db2-2.txt @@ -1,26 +1,26 @@ -// job_bonus 0-non 1-str 2-agi 3-vit 4-int 5-dex 6-luk
-//x NV,SW,MG,AC,AL,MC,TF,KN,PR,WZ,BS,HT,AS,KNp,CR,MO,SA,RG,AM,BA,DC,CRp
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1
-0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4
-0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5
-0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6
-0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5
-0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2
-1,2,6,5,3,1,1,1,0,2,5,3,4,2,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1
-4,0,2,3,1,0,4,2,0,0,4,1,5,0,0,5,0,0,2,4,1,3,4,4,0,5,0,5,2,3,1,0,0,4,0,0,5,1,0,6,0,2,5,0,1,5,4,0,6,3,3,0,0,0,2,5,4,3,0,1,4,5,0,0,2,4,3,2,0,4
-4,5,3,0,4,0,0,2,5,4,0,6,0,4,0,0,5,2,4,1,0,5,5,4,0,2,0,4,3,0,5,4,0,2,0,0,4,4,4,1,6,0,5,0,0,4,3,0,4,2,0,0,3,0,4,2,6,0,4,1,5,4,0,0,2,3,5,0,2,4
-5,1,1,4,0,5,2,6,3,0,0,5,3,0,4,6,1,0,2,2,0,4,5,0,0,1,0,6,3,0,2,0,1,4,0,2,0,5,6,0,5,0,0,6,6,0,5,3,0,4,0,1,0,0,0,5,5,2,0,3,4,5,0,2,3,6,6,0,0,5
-5,2,5,5,4,2,0,1,0,2,2,3,0,6,0,5,5,0,0,4,2,5,0,1,6,5,0,2,0,5,6,3,2,0,5,6,0,2,0,5,0,4,2,0,1,5,0,2,0,6,5,0,0,4,3,0,6,2,0,5,1,6,0,0,4,0,0,0,5,6
-2,1,6,2,2,0,1,6,3,5,0,1,0,0,2,6,0,6,0,2,1,0,5,2,2,6,0,0,1,0,2,2,2,6,0,0,5,1,5,0,0,2,5,0,0,2,3,6,0,1,2,0,5,1,0,2,5,0,0,0,5,2,0,5,6,1,0,0,3,5
-1,2,6,5,3,1,1,1,0,2,5,3,4,3,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1
-3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,5,1,0,0,3,0,5,2,0,1,0,0,4,3,0,0,1,0,0,5,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,4,2
-1,4,3,2,0,5,0,0,1,0,4,2,6,0,3,5,1,0,0,2,2,5,0,3,0,0,1,0,2,5,0,0,4,6,0,0,1,5,3,0,0,3,0,5,2,6,4,1,0,5,0,2,5,0,0,4,0,3,1,5,0,2,0,4,1,1,5,3,4,2
-4,4,2,0,1,0,3,5,0,0,4,2,0,4,0,5,0,1,0,5,6,4,2,3,0,5,1,0,5,4,0,2,0,5,0,1,5,4,3,0,4,0,2,0,1,5,0,0,4,2,0,5,0,2,5,1,4,0,0,2,0,5,3,4,0,6,0,4,2,4
-1,2,0,6,4,3,0,0,2,5,1,2,0,0,3,5,5,0,0,6,2,1,0,6,0,5,2,0,5,0,6,1,0,2,0,0,5,5,0,0,2,3,1,4,2,0,1,0,5,6,0,5,1,0,0,5,4,2,6,5,0,1,3,2,0,5,1,0,0,2
-5,0,6,0,2,1,4,6,3,5,0,0,4,0,5,0,0,2,0,6,0,4,5,0,6,0,2,0,0,4,1,0,3,6,5,0,0,2,0,0,5,5,5,0,6,4,5,0,5,0,6,6,1,2,0,5,5,0,4,6,3,0,5,6,0,1,2,4,6,5
-2,5,0,2,1,0,5,4,2,1,6,0,2,0,5,3,0,6,1,0,4,0,5,2,0,6,0,4,0,5,0,2,1,0,0,2,0,0,5,5,4,0,5,0,1,0,6,0,2,5,0,0,2,1,0,5,5,2,3,0,5,1,5,0,2,5,0,2,4,1
-5,1,0,2,0,1,0,4,5,0,2,2,2,5,5,0,3,5,0,1,0,5,5,0,2,4,6,5,0,0,2,0,5,0,1,0,0,2,4,0,5,0,5,0,5,0,2,0,5,1,0,2,4,3,0,0,2,5,0,4,2,2,6,0,5,1,2,0,5,2
-3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,5,1,0,0,3,0,5,2,0,1,0,0,4,3,0,0,1,0,0,5,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,4,2
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+// job_bonus 0-non 1-str 2-agi 3-vit 4-int 5-dex 6-luk +//x NV,SW,MG,AC,AL,MC,TF,KN,PR,WZ,BS,HT,AS,KNp,CR,MO,SA,RG,AM,BA,DC,CRp +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1 +0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4 +0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5 +0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6 +0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5 +0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2 +1,2,6,5,3,1,1,1,0,2,5,3,4,2,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1 +4,0,2,3,1,0,4,2,0,0,4,1,5,0,0,5,0,0,2,4,1,3,4,4,0,5,0,5,2,3,1,0,0,4,0,0,5,1,0,6,0,2,5,0,1,5,4,0,6,3,3,0,0,0,2,5,4,3,0,1,4,5,0,0,2,4,3,2,0,4 +4,5,3,0,4,0,0,2,5,4,0,6,0,4,0,0,5,2,4,1,0,5,5,4,0,2,0,4,3,0,5,4,0,2,0,0,4,4,4,1,6,0,5,0,0,4,3,0,4,2,0,0,3,0,4,2,6,0,4,1,5,4,0,0,2,3,5,0,2,4 +5,1,1,4,0,5,2,6,3,0,0,5,3,0,4,6,1,0,2,2,0,4,5,0,0,1,0,6,3,0,2,0,1,4,0,2,0,5,6,0,5,0,0,6,6,0,5,3,0,4,0,1,0,0,0,5,5,2,0,3,4,5,0,2,3,6,6,0,0,5 +5,2,5,5,4,2,0,1,0,2,2,3,0,6,0,5,5,0,0,4,2,5,0,1,6,5,0,2,0,5,6,3,2,0,5,6,0,2,0,5,0,4,2,0,1,5,0,2,0,6,5,0,0,4,3,0,6,2,0,5,1,6,0,0,4,0,0,0,5,6 +2,1,6,2,2,0,1,6,3,5,0,1,0,0,2,6,0,6,0,2,1,0,5,2,2,6,0,0,1,0,2,2,2,6,0,0,5,1,5,0,0,2,5,0,0,2,3,6,0,1,2,0,5,1,0,2,5,0,0,0,5,2,0,5,6,1,0,0,3,5 +1,2,6,5,3,1,1,1,0,2,5,3,4,3,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1 +3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,5,1,0,0,3,0,5,2,0,1,0,0,4,3,0,0,1,0,0,5,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,4,2 +1,4,3,2,0,5,0,0,1,0,4,2,6,0,3,5,1,0,0,2,2,5,0,3,0,0,1,0,2,5,0,0,4,6,0,0,1,5,3,0,0,3,0,5,2,6,4,1,0,5,0,2,5,0,0,4,0,3,1,5,0,2,0,4,1,1,5,3,4,2 +4,4,2,0,1,0,3,5,0,0,4,2,0,4,0,5,0,1,0,5,6,4,2,3,0,5,1,0,5,4,0,2,0,5,0,1,5,4,3,0,4,0,2,0,1,5,0,0,4,2,0,5,0,2,5,1,4,0,0,2,0,5,3,4,0,6,0,4,2,4 +1,2,0,6,4,3,0,0,2,5,1,2,0,0,3,5,5,0,0,6,2,1,0,6,0,5,2,0,5,0,6,1,0,2,0,0,5,5,0,0,2,3,1,4,2,0,1,0,5,6,0,5,1,0,0,5,4,2,6,5,0,1,3,2,0,5,1,0,0,2 +5,0,6,0,2,1,4,6,3,5,0,0,4,0,5,0,0,2,0,6,0,4,5,0,6,0,2,0,0,4,1,0,3,6,5,0,0,2,0,0,5,5,5,0,6,4,5,0,5,0,6,6,1,2,0,5,5,0,4,6,3,0,5,6,0,1,2,4,6,5 +2,5,0,2,1,0,5,4,2,1,6,0,2,0,5,3,0,6,1,0,4,0,5,2,0,6,0,4,0,5,0,2,1,0,0,2,0,0,5,5,4,0,5,0,1,0,6,0,2,5,0,0,2,1,0,5,5,2,3,0,5,1,5,0,2,5,0,2,4,1 +5,1,0,2,0,1,0,4,5,0,2,2,2,5,5,0,3,5,0,1,0,5,5,0,2,4,6,5,0,0,2,0,5,0,1,0,0,2,4,0,5,0,5,0,5,0,2,0,5,1,0,2,4,3,0,0,2,5,0,4,2,2,6,0,5,1,2,0,5,2 +3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,5,1,0,0,3,0,5,2,0,1,0,0,4,3,0,0,1,0,0,5,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,4,2 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/db/job_db2.txt b/db/job_db2.txt index e5baf62..f7e7d80 100644 --- a/db/job_db2.txt +++ b/db/job_db2.txt @@ -1,71 +1,71 @@ -// job_bonus 0-non 1-str 2-agi 3-vit 4-int 5-dex 6-luk
-//x NV,SW,MG,AC,AL,MC,TF,KN,PR,WZ,BS,HT,AS,KNp,CR,MO,SA,RG,AM,BA,DC,CRp
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1
-0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4
-0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5
-0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6
-0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5
-0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2
-3,0,3,1,6,0,0,3,0,1,5,3,2,0,1,0,3,3,5,6,1,0,3,0,0,0,1,6,3,0,5,0,1,0,0,3,6,2,0,5,0,0,3,0,0,1,1,5,5,0
-6,0,6,1,0,2,3,4,4,6,1,0,0,3,0,5,1,0,0,5,6,4,0,0,5,0,1,0,2,0,6,5,0,3,1,3,2,0,6,0,0,4,4,0,3,0,0,2,0,6
-4,5,0,4,5,2,0,0,4,2,0,1,5,0,6,0,0,4,0,0,0,4,0,2,0,5,0,0,4,0,4,5,4,2,0,6,0,3,5,4,2,0,2,0,4,2,2,4,0,4
-5,0,1,5,5,0,3,1,5,0,6,5,3,0,0,1,0,0,5,3,4,0,1,0,0,5,0,5,2,0,1,3,0,4,0,5,3,2,5,5,0,0,0,1,0,6,5,0,3,0
-5,0,4,5,6,1,0,5,0,1,1,2,0,5,6,0,3,0,2,2,5,0,3,0,0,0,5,0,6,0,2,0,5,4,0,0,0,5,2,0,4,6,5,1,0,4,2,0,5,0
-2,2,2,4,0,3,0,3,5,0,1,0,0,4,2,2,2,2,2,2,2,0,0,5,1,0,1,0,0,5,5,1,0,0,0,0,0,4,0,5,5,4,0,0,1,5,0,1,0,5
-3,0,3,1,6,0,0,3,0,1,5,3,2,0,1,0,3,3,5,6,1,0,3,0,0,0,1,6,3,0,5,0,1,0,0,3,6,2,0,5,0,0,3,0,0,1,1,5,5,0
-6,6,6,6,6,0,1,0,4,0,1,3,0,5,3,0,1,0,0,4,4,3,1,0,1,0,0,5,0,2,0,1,0,5,0,2,0,4,0,3,3,0,0,4,0,3,0,1,0,3
-1,1,0,5,0,2,3,0,0,2,0,1,1,6,0,4,0,2,0,3,0,5,2,0,3,1,1,0,0,5,0,6,3,0,2,0,0,4,0,6,3,0,5,2,0,3,0,0,1,1
-4,0,2,3,0,2,0,4,0,0,3,0,2,0,4,0,6,3,0,5,0,2,0,4,5,0,5,0,0,4,0,5,2,0,6,0,4,0,5,6,0,1,0,1,4,1,1,1,0,4
-2,3,5,0,1,3,2,0,3,0,5,0,0,3,3,2,0,5,0,5,0,0,2,0,1,0,1,0,2,1,0,0,5,5,0,1,0,4,2,0,0,1,4,0,2,0,4,0,4,5
-4,5,5,0,0,1,0,5,4,0,2,0,5,2,1,0,4,0,5,3,5,0,4,4,5,1,0,5,4,0,3,0,0,1,0,3,0,4,0,2,0,0,1,0,2,0,0,0,2,2
-5,2,1,0,4,6,5,0,6,2,2,0,4,0,5,0,3,0,5,6,4,0,0,2,0,0,0,1,0,2,0,5,3,0,2,0,0,5,0,4,6,0,3,0,0,5,4,2,0,5
-6,2,1,0,4,5,6,0,5,2,2,0,4,0,6,0,3,0,6,5,4,0,0,2,0,0,0,1,0,2,0,6,3,0,2,0,0,6,0,4,5,0,3,0,0,6,4,2,0,6
-6,6,6,6,6,0,1,0,4,0,1,3,0,5,3,0,1,0,0,4,4,3,1,0,1,0,0,5,0,2,0,1,0,5,0,2,0,4,0,3,3,0,0,4,0,3,0,1,0,3
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,6,5,0,2,3,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1
-0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4
-0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5
-0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6
-0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5
-0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2
-1,2,6,5,3,1,1,1,0,2,5,3,4,2,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1
-4,0,2,3,1,0,4,2,0,0,1,5,0,0,5,0,0,2,4,1,3,4,4,0,5,0,5,5,2,3,1,0,0,4,0,0,5,1,0,6,0,2,5,0,1,5,4,0,6,3,3,0,0,0,2,5,4,3,0,1,4,5,0,0,2,4,3,2,0,4
-4,5,3,0,4,0,0,2,5,4,0,6,0,4,0,0,5,2,4,1,0,5,5,4,0,2,0,4,3,0,5,4,0,2,0,0,4,4,4,1,6,0,5,0,0,,4,3,0,4,2,0,0,3,0,4,2,6,0,4,1,5,4,0,0,2,3,5,0,2,4
-5,1,1,4,0,5,2,6,3,0,0,5,3,0,4,6,1,0,2,2,0,4,5,0,0,1,0,6,3,0,2,5,1,4,0,2,0,5,6,0,5,0,0,6,6,0,5,3,0,4,0,1,0,0,0,5,0,0,0,3,4,5,0,2,0,6,6,0,0,5
-5,2,5,5,4,2,0,1,0,2,2,3,0,6,0,5,5,0,0,4,2,5,0,1,6,5,0,2,0,5,6,3,2,0,5,6,0,2,0,5,0,4,2,0,1,5,0,2,0,5,4,0,0,4,3,0,6,2,0,5,1,6,0,0,4,0,0,0,5,6
-2,1,6,2,2,0,1,6,3,5,0,1,0,0,2,6,0,6,0,2,1,0,5,2,2,6,0,0,5,0,2,2,2,6,0,0,5,1,5,0,0,2,5,0,0,2,3,6,0,1,2,0,5,1,0,2,5,0,0,0,5,2,0,5,6,1,0,0,3,6
-1,2,6,5,3,1,1,1,0,2,5,3,4,2,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1
-3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,6,1,0,0,3,0,6,2,0,1,0,0,5,4,0,0,1,0,0,6,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,3,2
-1,4,3,2,0,5,0,0,1,0,4,2,6,0,3,5,1,0,0,2,2,5,0,3,0,0,1,0,2,5,0,0,4,6,0,0,1,5,3,0,0,3,0,4,2,6,4,1,0,5,0,2,5,0,0,4,0,3,1,5,0,2,0,4,1,1,5,3,4,2
-4,4,2,0,1,0,3,5,0,0,4,2,0,4,0,5,0,1,0,5,6,4,2,3,0,5,1,0,5,4,0,2,0,5,0,1,5,4,3,0,4,0,2,0,1,5,0,0,4,2,0,5,0,2,5,1,4,0,0,2,0,5,3,4,0,6,0,4,2,4
-1,2,0,6,4,3,0,0,2,5,1,2,0,0,3,5,5,0,0,6,2,1,0,6,0,5,2,0,5,0,6,1,0,2,0,0,5,5,0,0,2,3,1,4,2,0,1,0,5,6,0,5,1,0,0,5,4,2,6,5,0,1,3,2,0,5,1,0,0,2
-5,0,6,0,2,1,4,6,3,5,0,0,4,0,5,0,0,2,0,6,0,4,5,0,6,0,2,0,0,4,1,0,3,6,5,0,0,2,0,0,5,5,5,0,6,4,5,0,5,0,6,6,1,2,0,5,5,0,4,6,3,0,5,6,0,1,2,4,6,5
-2,5,0,2,1,0,5,4,2,1,6,0,2,0,5,3,0,6,1,0,4,0,5,2,0,6,0,4,0,5,0,2,1,0,0,2,0,0,5,5,4,0,5,0,1,0,6,0,2,5,0,0,2,1,0,5,5,2,3,0,5,1,5,0,2,4,0,2,4,1
-5,1,0,2,0,1,0,4,5,0,2,2,2,5,5,0,3,5,0,1,0,5,5,0,2,4,6,5,0,0,2,0,5,0,1,0,0,2,4,0,5,0,5,0,5,0,2,0,5,1,0,2,4,3,0,0,2,5,0,4,2,2,6,0,5,1,2,0,5,2
-3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,6,1,0,0,3,0,6,2,0,1,0,0,5,4,0,0,1,0,0,6,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,3,2
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1
-0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4
-0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5
-0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6
-0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5
-0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2
-3,0,3,1,6,0,0,3,0,1,5,3,2,0,1,0,3,3,5,6,1,0,3,0,0,0,1,6,3,0,5,0,1,0,0,3,6,2,0,5,0,0,3,0,0,1,1,5,5,0
-6,0,6,1,0,2,3,4,4,6,1,0,0,3,0,5,1,0,0,5,6,4,0,0,5,0,1,0,2,0,6,5,0,3,1,3,2,0,6,0,0,4,4,0,3,0,0,2,0,6
-4,5,0,4,5,2,0,0,4,2,0,1,5,0,6,0,0,4,0,0,0,4,0,2,0,5,0,0,4,0,4,5,4,2,0,6,0,3,5,4,2,0,2,0,4,2,2,4,0,4
-5,0,1,5,5,0,3,1,5,0,6,5,3,0,0,1,0,0,5,3,4,0,1,0,0,5,0,5,2,0,1,3,0,4,0,5,3,2,5,5,0,0,0,1,0,6,5,0,3,0
-5,0,4,5,6,1,0,5,0,1,1,2,0,5,6,0,3,0,2,2,5,0,3,0,0,0,5,0,6,0,2,0,5,4,0,0,0,5,2,0,4,6,5,1,0,4,2,0,5,0
-2,2,2,4,0,3,0,3,5,0,1,0,0,4,2,2,2,2,2,2,2,0,0,5,1,0,1,0,0,5,5,1,0,0,0,0,0,4,0,5,5,4,0,0,1,5,0,1,0,5
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-6,6,6,6,6,0,1,0,4,0,1,3,0,5,3,0,1,0,0,4,4,3,1,0,1,0,0,5,0,2,0,1,0,5,0,2,0,4,0,3,3,0,0,4,0,3,0,1,0,3
-1,1,0,5,0,2,3,0,0,2,0,1,1,6,0,4,0,2,0,3,0,5,2,0,3,1,1,0,0,5,0,6,3,0,2,0,0,4,0,6,3,0,5,2,0,3,0,0,1,1
-4,0,2,3,0,2,0,4,0,0,3,0,2,0,4,0,6,3,0,5,0,2,0,4,5,0,5,0,0,4,0,5,2,0,6,0,4,0,5,6,0,1,0,1,4,1,1,1,0,4
-2,3,5,0,1,3,2,0,3,0,5,0,0,3,3,2,0,5,0,5,0,0,2,0,1,0,1,0,2,1,0,0,5,5,0,1,0,4,2,0,0,1,4,0,2,0,4,0,4,5
-4,5,5,0,0,1,0,5,4,0,2,0,5,2,1,0,4,0,5,3,5,0,4,4,5,1,0,5,4,0,3,0,0,1,0,3,0,4,0,2,0,0,1,0,2,0,0,0,2,2
-5,2,1,0,4,6,5,0,6,2,2,0,4,0,5,0,3,0,5,6,4,0,0,2,0,0,0,1,0,2,0,5,3,0,2,0,0,5,0,4,6,0,3,0,0,5,4,2,0,5
-6,2,1,0,4,5,6,0,5,2,2,0,4,0,6,0,3,0,6,5,4,0,0,2,0,0,0,1,0,2,0,6,3,0,2,0,0,6,0,4,5,0,3,0,0,6,4,2,0,6
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+// job_bonus 0-non 1-str 2-agi 3-vit 4-int 5-dex 6-luk +//x NV,SW,MG,AC,AL,MC,TF,KN,PR,WZ,BS,HT,AS,KNp,CR,MO,SA,RG,AM,BA,DC,CRp +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1 +0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4 +0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5 +0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6 +0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5 +0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2 +3,0,3,1,6,0,0,3,0,1,5,3,2,0,1,0,3,3,5,6,1,0,3,0,0,0,1,6,3,0,5,0,1,0,0,3,6,2,0,5,0,0,3,0,0,1,1,5,5,0 +6,0,6,1,0,2,3,4,4,6,1,0,0,3,0,5,1,0,0,5,6,4,0,0,5,0,1,0,2,0,6,5,0,3,1,3,2,0,6,0,0,4,4,0,3,0,0,2,0,6 +4,5,0,4,5,2,0,0,4,2,0,1,5,0,6,0,0,4,0,0,0,4,0,2,0,5,0,0,4,0,4,5,4,2,0,6,0,3,5,4,2,0,2,0,4,2,2,4,0,4 +5,0,1,5,5,0,3,1,5,0,6,5,3,0,0,1,0,0,5,3,4,0,1,0,0,5,0,5,2,0,1,3,0,4,0,5,3,2,5,5,0,0,0,1,0,6,5,0,3,0 +5,0,4,5,6,1,0,5,0,1,1,2,0,5,6,0,3,0,2,2,5,0,3,0,0,0,5,0,6,0,2,0,5,4,0,0,0,5,2,0,4,6,5,1,0,4,2,0,5,0 +2,2,2,4,0,3,0,3,5,0,1,0,0,4,2,2,2,2,2,2,2,0,0,5,1,0,1,0,0,5,5,1,0,0,0,0,0,4,0,5,5,4,0,0,1,5,0,1,0,5 +3,0,3,1,6,0,0,3,0,1,5,3,2,0,1,0,3,3,5,6,1,0,3,0,0,0,1,6,3,0,5,0,1,0,0,3,6,2,0,5,0,0,3,0,0,1,1,5,5,0 +6,6,6,6,6,0,1,0,4,0,1,3,0,5,3,0,1,0,0,4,4,3,1,0,1,0,0,5,0,2,0,1,0,5,0,2,0,4,0,3,3,0,0,4,0,3,0,1,0,3 +1,1,0,5,0,2,3,0,0,2,0,1,1,6,0,4,0,2,0,3,0,5,2,0,3,1,1,0,0,5,0,6,3,0,2,0,0,4,0,6,3,0,5,2,0,3,0,0,1,1 +4,0,2,3,0,2,0,4,0,0,3,0,2,0,4,0,6,3,0,5,0,2,0,4,5,0,5,0,0,4,0,5,2,0,6,0,4,0,5,6,0,1,0,1,4,1,1,1,0,4 +2,3,5,0,1,3,2,0,3,0,5,0,0,3,3,2,0,5,0,5,0,0,2,0,1,0,1,0,2,1,0,0,5,5,0,1,0,4,2,0,0,1,4,0,2,0,4,0,4,5 +4,5,5,0,0,1,0,5,4,0,2,0,5,2,1,0,4,0,5,3,5,0,4,4,5,1,0,5,4,0,3,0,0,1,0,3,0,4,0,2,0,0,1,0,2,0,0,0,2,2 +5,2,1,0,4,6,5,0,6,2,2,0,4,0,5,0,3,0,5,6,4,0,0,2,0,0,0,1,0,2,0,5,3,0,2,0,0,5,0,4,6,0,3,0,0,5,4,2,0,5 +6,2,1,0,4,5,6,0,5,2,2,0,4,0,6,0,3,0,6,5,4,0,0,2,0,0,0,1,0,2,0,6,3,0,2,0,0,6,0,4,5,0,3,0,0,6,4,2,0,6 +6,6,6,6,6,0,1,0,4,0,1,3,0,5,3,0,1,0,0,4,4,3,1,0,1,0,0,5,0,2,0,1,0,5,0,2,0,4,0,3,3,0,0,4,0,3,0,1,0,3 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,6,5,0,2,3,0,1,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1 +0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4 +0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5 +0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6 +0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5 +0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2 +1,2,6,5,3,1,1,1,0,2,5,3,4,2,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1 +4,0,2,3,1,0,4,2,0,0,1,5,0,0,5,0,0,2,4,1,3,4,4,0,5,0,5,5,2,3,1,0,0,4,0,0,5,1,0,6,0,2,5,0,1,5,4,0,6,3,3,0,0,0,2,5,4,3,0,1,4,5,0,0,2,4,3,2,0,4 +4,5,3,0,4,0,0,2,5,4,0,6,0,4,0,0,5,2,4,1,0,5,5,4,0,2,0,4,3,0,5,4,0,2,0,0,4,4,4,1,6,0,5,0,0,,4,3,0,4,2,0,0,3,0,4,2,6,0,4,1,5,4,0,0,2,3,5,0,2,4 +5,1,1,4,0,5,2,6,3,0,0,5,3,0,4,6,1,0,2,2,0,4,5,0,0,1,0,6,3,0,2,5,1,4,0,2,0,5,6,0,5,0,0,6,6,0,5,3,0,4,0,1,0,0,0,5,0,0,0,3,4,5,0,2,0,6,6,0,0,5 +5,2,5,5,4,2,0,1,0,2,2,3,0,6,0,5,5,0,0,4,2,5,0,1,6,5,0,2,0,5,6,3,2,0,5,6,0,2,0,5,0,4,2,0,1,5,0,2,0,5,4,0,0,4,3,0,6,2,0,5,1,6,0,0,4,0,0,0,5,6 +2,1,6,2,2,0,1,6,3,5,0,1,0,0,2,6,0,6,0,2,1,0,5,2,2,6,0,0,5,0,2,2,2,6,0,0,5,1,5,0,0,2,5,0,0,2,3,6,0,1,2,0,5,1,0,2,5,0,0,0,5,2,0,5,6,1,0,0,3,6 +1,2,6,5,3,1,1,1,0,2,5,3,4,2,0,5,2,0,1,0,0,3,0,0,1,0,6,5,3,0,5,0,1,0,0,5,2,6,0,3,1,0,3,5,0,1,1,0,5,0,0,1,2,0,0,1,1,3,0,2,0,5,0,1,2,0,4,3,0,1 +3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,6,1,0,0,3,0,6,2,0,1,0,0,5,4,0,0,1,0,0,6,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,3,2 +1,4,3,2,0,5,0,0,1,0,4,2,6,0,3,5,1,0,0,2,2,5,0,3,0,0,1,0,2,5,0,0,4,6,0,0,1,5,3,0,0,3,0,4,2,6,4,1,0,5,0,2,5,0,0,4,0,3,1,5,0,2,0,4,1,1,5,3,4,2 +4,4,2,0,1,0,3,5,0,0,4,2,0,4,0,5,0,1,0,5,6,4,2,3,0,5,1,0,5,4,0,2,0,5,0,1,5,4,3,0,4,0,2,0,1,5,0,0,4,2,0,5,0,2,5,1,4,0,0,2,0,5,3,4,0,6,0,4,2,4 +1,2,0,6,4,3,0,0,2,5,1,2,0,0,3,5,5,0,0,6,2,1,0,6,0,5,2,0,5,0,6,1,0,2,0,0,5,5,0,0,2,3,1,4,2,0,1,0,5,6,0,5,1,0,0,5,4,2,6,5,0,1,3,2,0,5,1,0,0,2 +5,0,6,0,2,1,4,6,3,5,0,0,4,0,5,0,0,2,0,6,0,4,5,0,6,0,2,0,0,4,1,0,3,6,5,0,0,2,0,0,5,5,5,0,6,4,5,0,5,0,6,6,1,2,0,5,5,0,4,6,3,0,5,6,0,1,2,4,6,5 +2,5,0,2,1,0,5,4,2,1,6,0,2,0,5,3,0,6,1,0,4,0,5,2,0,6,0,4,0,5,0,2,1,0,0,2,0,0,5,5,4,0,5,0,1,0,6,0,2,5,0,0,2,1,0,5,5,2,3,0,5,1,5,0,2,4,0,2,4,1 +5,1,0,2,0,1,0,4,5,0,2,2,2,5,5,0,3,5,0,1,0,5,5,0,2,4,6,5,0,0,2,0,5,0,1,0,0,2,4,0,5,0,5,0,5,0,2,0,5,1,0,2,4,3,0,0,2,5,0,4,2,2,6,0,5,1,2,0,5,2 +3,1,2,0,0,5,4,2,3,1,0,5,0,4,3,2,6,1,0,0,3,0,6,2,0,1,0,0,5,4,0,0,1,0,0,6,2,0,6,1,0,3,4,0,5,0,0,1,3,0,0,2,3,4,1,0,5,0,6,2,4,0,3,1,4,0,6,5,3,2 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,1,0,0,0,3,0,0,0,5,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,2,0,0,1,0,0,5,0,3,0,1,0,3,0,6,0,2,1,0,1,1 +0,4,0,0,0,5,0,0,0,5,0,0,0,4,0,0,0,2,0,0,0,4,0,0,0,2,0,0,0,6,0,0,4,0,0,5,0,4,0,2,0,6,0,4,0,4,2,0,6,4 +0,5,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,5,0,0,2,0,0,5,0,1,0,1,0,5,0,6,0,3,4,0,2,5 +0,6,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,2,0,0,0,1,0,0,0,3,0,0,4,0,0,5,0,6,0,2,0,1,0,3,0,4,5,0,1,6 +0,3,0,0,0,5,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,3,0,0,2,0,0,6,0,5,0,1,0,5,0,1,0,6,3,0,1,5 +0,2,0,0,0,1,0,0,0,5,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,2,0,0,2,0,1,0,6,0,5,0,3,0,6,1,0,5,2 +3,0,3,1,6,0,0,3,0,1,5,3,2,0,1,0,3,3,5,6,1,0,3,0,0,0,1,6,3,0,5,0,1,0,0,3,6,2,0,5,0,0,3,0,0,1,1,5,5,0 +6,0,6,1,0,2,3,4,4,6,1,0,0,3,0,5,1,0,0,5,6,4,0,0,5,0,1,0,2,0,6,5,0,3,1,3,2,0,6,0,0,4,4,0,3,0,0,2,0,6 +4,5,0,4,5,2,0,0,4,2,0,1,5,0,6,0,0,4,0,0,0,4,0,2,0,5,0,0,4,0,4,5,4,2,0,6,0,3,5,4,2,0,2,0,4,2,2,4,0,4 +5,0,1,5,5,0,3,1,5,0,6,5,3,0,0,1,0,0,5,3,4,0,1,0,0,5,0,5,2,0,1,3,0,4,0,5,3,2,5,5,0,0,0,1,0,6,5,0,3,0 +5,0,4,5,6,1,0,5,0,1,1,2,0,5,6,0,3,0,2,2,5,0,3,0,0,0,5,0,6,0,2,0,5,4,0,0,0,5,2,0,4,6,5,1,0,4,2,0,5,0 +2,2,2,4,0,3,0,3,5,0,1,0,0,4,2,2,2,2,2,2,2,0,0,5,1,0,1,0,0,5,5,1,0,0,0,0,0,4,0,5,5,4,0,0,1,5,0,1,0,5 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +6,6,6,6,6,0,1,0,4,0,1,3,0,5,3,0,1,0,0,4,4,3,1,0,1,0,0,5,0,2,0,1,0,5,0,2,0,4,0,3,3,0,0,4,0,3,0,1,0,3 +1,1,0,5,0,2,3,0,0,2,0,1,1,6,0,4,0,2,0,3,0,5,2,0,3,1,1,0,0,5,0,6,3,0,2,0,0,4,0,6,3,0,5,2,0,3,0,0,1,1 +4,0,2,3,0,2,0,4,0,0,3,0,2,0,4,0,6,3,0,5,0,2,0,4,5,0,5,0,0,4,0,5,2,0,6,0,4,0,5,6,0,1,0,1,4,1,1,1,0,4 +2,3,5,0,1,3,2,0,3,0,5,0,0,3,3,2,0,5,0,5,0,0,2,0,1,0,1,0,2,1,0,0,5,5,0,1,0,4,2,0,0,1,4,0,2,0,4,0,4,5 +4,5,5,0,0,1,0,5,4,0,2,0,5,2,1,0,4,0,5,3,5,0,4,4,5,1,0,5,4,0,3,0,0,1,0,3,0,4,0,2,0,0,1,0,2,0,0,0,2,2 +5,2,1,0,4,6,5,0,6,2,2,0,4,0,5,0,3,0,5,6,4,0,0,2,0,0,0,1,0,2,0,5,3,0,2,0,0,5,0,4,6,0,3,0,0,5,4,2,0,5 +6,2,1,0,4,5,6,0,5,2,2,0,4,0,6,0,3,0,6,5,4,0,0,2,0,0,0,1,0,2,0,6,3,0,2,0,0,6,0,4,5,0,3,0,0,6,4,2,0,6 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/db/mob_branch.txt b/db/mob_branch.txt index 78811b7..8a24428 100644 --- a/db/mob_branch.txt +++ b/db/mob_branch.txt @@ -1,9 +1,9 @@ -// File created using Spamrat's Athena Database Editor v1.4.4
-//
-// ŒÃ–Ø‚ÌŽ}‚Å¢Š«‚Å‚«‚郂ƒ“ƒXƒ^[‚ðÝ’è
-// MobID, MobName(Dummy), Rate
-// ƒ‚ƒ“ƒXƒ^[IDAƒ‚ƒ“ƒXƒ^[‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B)
-// ƒ‚ƒ“ƒXƒ^[ID‚ª0‚Ìꇊm—¦‚ðƒ‚ƒ“ƒXƒ^[‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É¢ŠÒ‚³‚ê‚郂ƒ“ƒXƒ^[‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B)
-// ƒNƒ‰ƒCƒAƒ“ƒg‘¤‚Å–¢ŽÀ‘•‚Ì‚à‚̂𑂂ƃNƒ‰ƒCƒAƒ“ƒg‚ªd—̓Gƒ‰[
-// ‚»‚µ‚Ä‚»‚Ì“G‚ªƒLƒƒƒ‰ƒNƒ^[‚Ì•t‹ß‚É‚¢‚éŠÔƒƒOƒCƒ“‚Å‚«‚È‚¢‚Ì‚Å’ˆÓB
-//
+// File created using Spamrat's Athena Database Editor v1.4.4 +// +// ŒÃ–Ø‚ÌŽ}‚Å¢Š«‚Å‚«‚郂ƒ“ƒXƒ^[‚ðÝ’è +// MobID, MobName(Dummy), Rate +// ƒ‚ƒ“ƒXƒ^[IDAƒ‚ƒ“ƒXƒ^[‚Ì–¼‘O(ƒ_ƒ~[)AŠm—¦(*10000)‚ð‚µ‚½•¨‚Å‚·B500000‚È‚ç50%‚Å1000000‚È‚ç100%‚Å‚·B) +// ƒ‚ƒ“ƒXƒ^[ID‚ª0‚Ìꇊm—¦‚ðƒ‚ƒ“ƒXƒ^[‚Ì‘I‘ð‚ÉŽ¸”s‚µ‚½Žž‚É¢ŠÒ‚³‚ê‚郂ƒ“ƒXƒ^[‚ÌID‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·B(•¡”‚Å‚ ‚éê‡ÅŒã‚Ì•¨‚¾‚¯—LŒø‚Å‚·B) +// ƒNƒ‰ƒCƒAƒ“ƒg‘¤‚Å–¢ŽÀ‘•‚Ì‚à‚̂𑂂ƃNƒ‰ƒCƒAƒ“ƒg‚ªd—̓Gƒ‰[ +// ‚»‚µ‚Ä‚»‚Ì“G‚ªƒLƒƒƒ‰ƒNƒ^[‚Ì•t‹ß‚É‚¢‚éŠÔƒƒOƒCƒ“‚Å‚«‚È‚¢‚Ì‚Å’ˆÓB +// diff --git a/doc/LICENCE b/doc/LICENCE index 45645b4..5b6e7c6 100644 --- a/doc/LICENCE +++ b/doc/LICENCE @@ -1,340 +1,340 @@ - GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+ GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/doc/LICENCE_JA b/doc/LICENCE_JA index 0888c67..d630607 100644 --- a/doc/LICENCE_JA +++ b/doc/LICENCE_JA @@ -1,416 +1,416 @@ - GNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘
- ƒo[ƒWƒ‡ƒ“2A1991”N6ŒŽ
- “ú–{Œê–óA2002”N5ŒŽ20“ú
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- ‚±‚Ì—˜—p‹–‘øŒ_–ñ‘‚ðAˆêŽšˆê‹å‚»‚Ì‚Ü‚Ü‚É•¡»‚µ”Еz‚·‚邱‚Æ‚Í‹–‰Â‚·‚éB
- ‚µ‚©‚µ•ÏX‚Í”F‚ß‚È‚¢B
-
- This is an unofficial translation of the GNU General Public License
- into Japanese. It was not published by the Free Software Foundation,
- and does not legally state the distribution terms for software that
- uses the GNU GPL--only the original English text of the GNU GPL does
- that. However, we hope that this translation will help Japanese
- speakers understand the GNU GPL better.
-
- (–ó: ˆÈ‰º‚ÍGNU General Public License‚Ì”ñŒöŽ®‚È“ú–{Œê–ó‚Å‚·B‚±‚ê‚̓t
- ƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c(the Free Software Foundataion)‚É‚æ‚Á‚Ä”•\‚³‚ꂽ
- ‚à‚Ì‚Å‚Í‚È‚AGNU GPL‚ð“K—p‚µ‚½ƒ\ƒtƒgƒEƒFƒA‚̔ЕzðŒ‚ð–@“I‚É—LŒø‚ÈŒ`
- ‚Åq‚ׂ½‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB”ЕzðŒ‚Æ‚µ‚Ä‚ÍGNU GPL‚̉pŒê”ŃeƒLƒXƒg‚Å
- Žw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚Ì‚Ý‚ª—LŒø‚Å‚·B‚µ‚©‚µ‚È‚ª‚çAŽ„‚½‚¿‚Í‚±‚Ì–|–ó‚ªA
- “ú–{Œê‚ðŽg—p‚·‚élX‚É‚Æ‚Á‚ÄGNU GPL‚ð‚æ‚è—Ç‚—‰ð‚·‚é•‚¯‚ƂȂ邱‚Æ‚ð
- –]‚ñ‚Å‚¢‚Ü‚·B)
-
- –|–ó‚Í ”ª“c^s<mhatta@gnu.org>‚ªs‚Á‚½BŒ´•¶‚Í
- http://www.gnu.org/licenses/gpl.txt‚Å‚ ‚éBŒë–ó‚ÌŽw“E‚â‰ü‘PˆÄ‚ðŠ½Œ}‚·
- ‚éB
- ‚Í‚¶‚ß‚É
-
-ƒ\ƒtƒgƒEƒFƒAŒü‚¯ƒ‰ƒCƒZƒ“ƒX‚̑唼‚ÍA‚ ‚È‚½‚ª‚»‚̃\ƒtƒgƒEƒFƒA‚ð‹¤—L‚µ‚½
-‚è•ÏX‚µ‚½‚è‚·‚鎩—R‚ð’D‚¤‚悤‚ÉÝŒv‚³‚ê‚Ä‚¢‚Ü‚·B‘ÎÆ“I‚ÉAGNU ˆê”ÊŒö
-O—˜—p‹–‘øŒ_–ñ‘‚ÍA‚ ‚È‚½‚ªƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚ð‹¤—L‚µ‚½‚è•ÏX‚µ‚½‚è‚·
-‚鎩—R‚ð•ÛØ‚·‚é--‚·‚È‚í‚¿Aƒ\ƒtƒgƒEƒFƒA‚ª‚»‚̃†[ƒU‚·‚ׂĂɂƂÁ‚ătƒŠ[
-‚Å‚ ‚邱‚Æ‚ð•ÛØ‚·‚邱‚Æ‚ð–Ú“I‚Æ‚µ‚Ä‚¢‚Ü‚·B‚±‚̈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘
-‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚̃\ƒtƒgƒEƒFƒA‚Ì‚Ù‚Æ‚ñ‚Ç‚É“K—p‚³‚ê‚Ä‚¨‚èA‚Ü‚½
-GNU GPL‚ð“K—p‚·‚é‚ÆŒˆ‚ß‚½ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’cˆÈŠO‚ÌìŽÒ‚É‚æ‚éƒvƒƒO
-ƒ‰ƒ€‚É‚à“K—p‚³‚ê‚Ä‚¢‚Ü‚·(‚¢‚‚‚©‚̃tƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚̃\ƒtƒgƒEƒF
-ƒA‚É‚ÍAGNU GPL‚Å‚Í‚È‚GNU ƒ‰ƒCƒuƒ‰ƒŠˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚ª“K—p‚³‚ê
-‚Ä‚¢‚邱‚Æ‚à‚ ‚è‚Ü‚·)B‚ ‚È‚½‚à‚Ü‚½A‚²Ž©•ª‚̃vƒƒOƒ‰ƒ€‚ÉGNU GPL‚ð“K—p
-‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B
-
-Ž„‚½‚¿‚ªƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚ÆŒ¾‚¤‚Æ‚«A‚»‚ê‚Í—˜—p‚ÌŽ©—R‚ɂ‚¢‚ÄŒ¾‹y‚µ‚Ä
-‚¢‚é‚Ì‚Å‚ ‚Á‚ÄA‰¿Ši‚Í–â‘è‚É‚µ‚Ä‚¢‚Ü‚¹‚ñBŽ„‚½‚¿‚̈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ
-‘‚ÍA‚ ‚È‚½‚ªƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Ì•¡»•¨‚ð”Еz‚·‚鎩—R‚ð•ÛØ‚·‚é‚悤Ý
-Œv‚³‚ê‚Ä‚¢‚Ü‚·(Šó–]‚ɉž‚¶‚Ä‚»‚ÌŽí‚̃T[ƒrƒX‚ÉŽè”—¿‚ð‰Û‚·Ž©—R‚à•ÛØ‚³
-‚ê‚Ü‚·)B‚Ü‚½A‚ ‚È‚½‚ªƒ\[ƒXƒR[ƒh‚ðŽó‚¯Žæ‚é‚©A‚ ‚é‚¢‚Í–]‚߂΂»‚ê‚ð
-“üŽè‚·‚邱‚Æ‚ª‰Â”\‚Å‚ ‚é‚Æ‚¢‚¤‚±‚ÆA‚ ‚È‚½‚ªƒ\ƒtƒgƒEƒFƒA‚ð•ÏX‚µA‚»‚Ì
-ˆê•”‚ðV‚½‚ȃtƒŠ[‚̃vƒƒOƒ‰ƒ€‚Å—˜—p‚Å‚«‚é‚Æ‚¢‚¤‚±‚ÆA‚»‚µ‚ÄAˆÈã‚Åq
-‚ׂ½‚悤‚È‚±‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚ª‚ ‚È‚½‚É’m‚炳‚ê‚é‚Æ‚¢‚¤‚±‚Æ‚à•ÛØ‚³
-‚ê‚Ü‚·B
-
-‚ ‚È‚½‚ÌŒ —˜‚ðŽç‚邽‚ßAŽ„‚½‚¿‚Í’N‚©‚ª‚ ‚È‚½‚Ì—L‚·‚邱‚ê‚ç‚ÌŒ —˜‚ð”Û’è
-‚·‚邱‚Æ‚âA‚±‚ê‚ç‚ÌŒ —˜‚ð•úŠü‚·‚é‚悤—v‹‚·‚邱‚Æ‚ð‹ÖŽ~‚·‚é‚Æ‚¢‚¤§ŒÀ
-‚ð‰Á‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B‚æ‚Á‚ÄA‚ ‚È‚½‚ªƒ\ƒtƒgƒEƒFƒA‚Ì•¡»•¨‚ð”Еz‚µ‚½
-‚è‚»‚ê‚ð•ÏX‚µ‚½‚è‚·‚éꇂɂÍA‚±‚ê‚ç‚̧ŒÀ‚Ì‚½‚ß‚É‚ ‚È‚½‚É‚ ‚éŽí‚ÌÓ
-”C‚ª”¶‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B
-
-—Ⴆ‚ÎA‚ ‚È‚½‚ªƒtƒŠ[‚ȃvƒƒOƒ‰ƒ€‚Ì•¡»•¨‚ð”Еz‚·‚éê‡A—L—¿‚©–³—¿‚É
-ŠÖ‚í‚炸A‚ ‚È‚½‚ÍŽ©•ª‚ª—L‚·‚éŒ —˜‚ð‘S‚ÄŽó—ÌŽÒ‚É—^‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-‚Ü‚½A‚ ‚È‚½‚͔ނç‚àƒ\[ƒXƒR[ƒh‚ðŽó‚¯Žæ‚é‚©Žè‚É“ü‚ê‚邱‚Æ‚ª‚Å‚«‚é‚悤
-•ÛØ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚»‚µ‚ÄA‚ ‚È‚½‚͔ނç‚ɑ΂µ‚Ĉȉº‚Åq‚ׂéðŒ
-‚ðŽ¦‚µA”Þ‚ç‚ÉŽ©‚ç‚ÌŽ‚ÂŒ —˜‚ɂ‚¢‚Ä’m‚炵‚ß‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹
-‚ñB
-
-Ž„‚½‚¿‚Í‚ ‚È‚½‚ÌŒ —˜‚ð“ñ’iŠK‚̎臂𓥂ñ‚ŕی삵‚Ü‚·B(1) ‚Ü‚¸ƒ\ƒtƒgƒEƒF
-ƒA‚ɑ΂µ‚Ä’˜ìŒ ‚ðŽå’£‚µA‚»‚µ‚Ä (2) ‚ ‚È‚½‚ɑ΂µ‚ÄAƒ\ƒtƒgƒEƒFƒA‚Ì•¡
-»‚â”Еz‚Ü‚½‚͉ü•Ï‚ɂ‚¢‚Ä‚Ì–@“I‚È‹–‰Â‚ð—^‚¦‚邱‚ÌŒ_–ñ‘‚ð’ñŽ¦‚µ‚Ü‚·B
-
-‚Ü‚½AŠeìŽÒ‚⎄‚½‚¿‚ð•ÛŒì‚·‚邽‚ßAŽ„‚½‚¿‚Í‚±‚̃tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚É‚Í
-‰½‚Ì•ÛØ‚à–³‚¢‚Æ‚¢‚¤‚±‚Æ‚ð’N‚à‚ªŠmŽÀ‚É—‰ð‚·‚é‚悤‚É‚µA‚Ü‚½ƒ\ƒtƒgƒEƒF
-ƒA‚ª’N‚©‘¼l‚É‚æ‚Á‚ĉü•Ï‚³‚êA‚»‚ꂪŽŸX‚ƔЕz‚³‚ê‚Ä‚¢‚Á‚½‚Æ‚µ‚Ä‚àA‚»
-‚ÌŽó—̎҂͔ނ炪Žè‚É“ü‚ꂽƒ\ƒtƒgƒEƒFƒA‚ªƒIƒŠƒWƒiƒ‹‚̃o[ƒWƒ‡ƒ“‚Å‚Í–³‚¢
-‚±‚ÆA‚»‚µ‚ÄŒ´ìŽÒ‚Ì–¼º‚Í‘¼l‚É‚æ‚Á‚ÄŽ‚¿ž‚܂ꂽ‰Â”\«‚Ì‚ ‚é–â‘è‚É‚æ‚Á
-‚ĉe‹¿‚³‚ê‚邱‚Æ‚ª‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚ðŽü’m‚³‚¹‚½‚¢‚ÆŽv‚¢‚Ü‚·B
-
-ÅŒã‚ÉAƒ\ƒtƒgƒEƒFƒA“Á‹–‚ª‚¢‚©‚È‚éƒtƒŠ[‚̃vƒƒOƒ‰ƒ€‚Ì‘¶Ý‚É‚à•s’f‚Ì‹º
-ˆÐ‚ð“Š‚°‚©‚¯‚Ä‚¢‚Ü‚·‚ªAŽ„‚½‚¿‚ÍAƒtƒŠ[‚ȃvƒƒOƒ‰ƒ€‚ÌĔЕzŽÒ‚ªŒÂX‚É
-“Á‹–ƒ‰ƒCƒZƒ“ƒX‚ðŽæ“¾‚·‚邱‚Æ‚É‚æ‚Á‚ÄAŽ–ŽÀãƒvƒƒOƒ‰ƒ€‚ð“Æè“I‚É‚µ‚Ä‚µ
-‚Ü‚¤‚Æ‚¢‚¤ŠëŒ¯‚ð”ð‚¯‚½‚¢‚ÆŽv‚¢‚Ü‚·B‚±‚¤‚¢‚Á‚½Ž–‘Ô‚ð—\–h‚·‚邽‚ßAŽ„‚½
-‚¿‚Í‚¢‚©‚È‚é“Á‹–‚à’N‚à‚ªŽ©—R‚É—˜—p‚Å‚«‚é‚悤ƒ‰ƒCƒZƒ“ƒX‚³‚ê‚é‚©A‘S‚ƒ‰
-ƒCƒZƒ“ƒX‚³‚ê‚È‚¢‚©‚Ì‚Ç‚¿‚ç‚©‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢‚±‚Ƃ𖾊m‚É‚µ‚Ü‚µ‚½B
-
-(–ó’: –{Œ_–ñ‘‚Åu“Æè“I(proprietary)v‚Æ‚ÍAƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚âÄ”Ð
-•zA‰ü•Ï‚ª‹ÖŽ~‚³‚ê‚Ä‚¢‚é‚©A‹–‰Â‚𓾂邱‚Æ‚ª•K—v‚Æ‚³‚ê‚Ä‚¢‚é‚©A‚ ‚é‚¢
-‚ÍŒµ‚µ‚¢§ŒÀ‚ª‰Û‚¹‚ç‚ê‚Ä‚¢‚ÄŽ©—R‚É‚»‚¤‚·‚邱‚Æ‚ªŽ–ŽÀã‚Å‚«‚È‚‚È‚Á‚Ä‚¢
-‚éó‘Ô‚Ì‚±‚Æ‚ðŽw‚·BÚ‚µ‚‚Í
-http://www.gnu.org/philosophy/categories.ja.html#ProprietarySoftware‚ð
-ŽQÆ‚¹‚æB)
-
-•¡»‚â”ЕzA‰ü•Ï‚ɂ‚¢‚Ă̳Šm‚ÈðŒ‚Ƨ–ñ‚ðˆÈ‰º‚Åq‚ׂĂ¢‚«‚Ü‚·B
-
- GNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘
- •¡»A”ЕzA‰ü•Ï‚ÉŠÖ‚·‚éðŒ‚Ƨ–ñ
-
-0. ‚±‚Ì—˜—p‹–‘øŒ_–ñ‘‚ÍA‚»‚̃vƒƒOƒ‰ƒ€(‚Ü‚½‚Í‚»‚Ì‘¼‚Ì’˜ì•¨)‚ð‚±‚Ìˆê
-”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚Ì’è‚ß‚éðŒ‚̉º‚ŔЕz‚Å‚«‚é‚Æ‚¢‚¤’m‚ª’˜ìŒ ŽÒ‚É
-‚æ‚Á‚Ä‹LÚ‚³‚ꂽƒvƒƒOƒ‰ƒ€‚Ü‚½‚Í‚»‚Ì‘¼‚Ì’˜ì•¨‘S”Ê‚É“K—p‚³‚ê‚éBˆÈ‰º‚Å
-‚ÍAuwƒvƒƒOƒ‰ƒ€xv‚Æ‚Í‚»‚̂悤‚É‚µ‚Ä‚±‚ÌŒ_–ñ‘‚ª“K—p‚³‚ꂽƒvƒƒOƒ‰
-ƒ€‚⒘앨‘S”Ê‚ðˆÓ–¡‚µA‚Ü‚½uwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨v‚Æ‚Íwƒv
-ƒƒOƒ‰ƒ€x‚â‚»‚Ì‘¼’˜ìŒ –@‚̉º‚Å”h¶•¨‚ÆŒ©‚È‚³‚ê‚é‚à‚Ì‘S”Ê‚ðŽw‚·B‚·‚È
-‚í‚¿AwƒvƒƒOƒ‰ƒ€x‚©‚»‚̈ꕔ‚ðA‘S‚“¯ˆê‚Ì‚Ü‚Ü‚©A‰ü•Ï‚ð‰Á‚¦‚½‚©A‚
-‚é‚¢‚Í‘¼‚ÌŒ¾Œê‚É–|–󂳂ꂽŒ`‚ÅŠÜ‚Þ’˜ì•¨‚Ì‚±‚Æ‚Å‚ ‚é(u‰ü•Ïv‚Æ‚¢‚¤Œê
-‚Ì–{—ˆ‚̈Ӗ¡‚©‚ç‚Í‚¸‚ê‚邪AˆÈ‰º‚Å‚Í–|–ó‚à‰ü•Ï‚̈êŽí‚ÆŒ©‚È‚·)B‚»‚ꂼ
-‚ê‚ÌŒ_–ñŽÒ‚Íu‚ ‚È‚½v‚Æ•\Œ»‚³‚ê‚éB
-
-•¡»‚â”ЕzA‰ü•ÏˆÈŠO‚ÌŠˆ“®‚Í‚±‚ÌŒ_–ñ‘‚ł̓Jƒo[‚³‚ê‚È‚¢B‚»‚ê‚ç‚Í‚±‚Ì
-Œ_–ñ‘‚Ì‘ÎÛŠO‚Å‚ ‚éBwƒvƒƒOƒ‰ƒ€x‚ðŽÀs‚·‚ésˆ×Ž©‘̂ɧŒÀ‚Í‚È‚¢B‚Ü
-‚½A‚»‚̂悤‚ÈwƒvƒƒOƒ‰ƒ€x‚Ìo—ÍŒ‹‰Ê‚ÍA‚»‚Ì“à—e‚ªwƒvƒƒOƒ‰ƒ€x‚ðŠî
-‚É‚µ‚½’˜ì•¨‚ð\¬‚·‚éꇂ݂̂±‚ÌŒ_–ñ‘‚É‚æ‚Á‚ĕی삳‚ê‚é(wƒvƒƒOƒ‰
-ƒ€x‚ðŽÀs‚µ‚½‚±‚Æ‚É‚æ‚Á‚Ä쬂³‚ꂽ‚Æ‚¢‚¤‚±‚Æ‚Æ‚Í–³ŠÖŒW‚Å‚ ‚é)B‚±‚Ì
-‚悤‚Èüˆø‚«‚̑Ó–«‚ÍAwƒvƒƒOƒ‰ƒ€x‚ª‰½‚ð‚·‚é‚Ì‚©‚Ɉˑ¶‚·‚éB
-
-1. ‚»‚ꂼ‚ê‚Ì•¡»•¨‚É‚¨‚¢‚Ä“KØ‚È’˜ìŒ •\Ž¦‚Æ•Û؂̔۔Fº–¾(disclaimer
-of warranty)‚ð–Ú—§‚‚悤“KØ‚ÉŒfÚ‚µA‚Ü‚½‚±‚ÌŒ_–ñ‘‚¨‚æ‚шêØ‚Ì•ÛØ‚Ì
-•sÝ‚ÉG‚ꂽ’m‚·‚×‚Ä‚ð‚»‚Ì‚Ü‚ÜŽc‚µA‚»‚µ‚Ä‚±‚ÌŒ_–ñ‘‚Ì•¡»•¨‚ðwƒvƒ
-ƒOƒ‰ƒ€x‚Ì‚¢‚©‚È‚éŽó—ÌŽÒ‚É‚àwƒvƒƒOƒ‰ƒ€x‚Æ‹¤‚ɔЕz‚·‚éŒÀ‚èA‚ ‚È‚½‚Í
-wƒvƒƒOƒ‰ƒ€x‚̃\[ƒXƒR[ƒh‚Ì•¡»•¨‚ðA‚ ‚È‚½‚ªŽó‚¯Žæ‚Á‚½’Ê‚è‚ÌŒ`‚Å•¡
-»‚Ü‚½‚͔Еz‚·‚邱‚Æ‚ª‚Å‚«‚éB”}‘Ì‚Í–â‚í‚È‚¢B
-
-‚ ‚È‚½‚ÍA•¨—“I‚É•¡»•¨‚ð÷“n‚·‚é‚Æ‚¢‚¤sˆ×‚ÉŠÖ‚µ‚ÄŽè”—¿‚ð‰Û‚µ‚Ä‚à—Ç
-‚¢‚µAŠó–]‚É‚æ‚Á‚Ä‚ÍŽè”—¿‚ðŽæ‚Á‚ÄŒðŠ·‚É‚¨‚¯‚é•ÛŒì‚Ì•ÛØ‚ð’ñ‹Ÿ‚µ‚Ä‚à—Ç
-‚¢B
-
-2. ‚ ‚È‚½‚ÍŽ©•ª‚ÌwƒvƒƒOƒ‰ƒ€x‚Ì•¡»•¨‚©‚»‚̈ꕔ‚ð‰ü•Ï‚µ‚ÄwƒvƒƒOƒ‰
-ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨‚ðŒ`¬‚µA‚»‚̂悤‚ȉü•Ï“_‚⒘앨‚ðã‹L‘æ1ß‚Ì’è
-‚ß‚éðŒ‚̉º‚Å•¡»‚Ü‚½‚͔Еz‚·‚邱‚Æ‚ª‚Å‚«‚éB‚½‚¾‚µA‚»‚Ì‚½‚߂ɂ͈ȉº
-‚ÌðŒ‚·‚ׂĂ𖞂½‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢:
-
- a) ‚ ‚È‚½‚ª‚»‚ê‚ç‚̃tƒ@ƒCƒ‹‚ð•ÏX‚µ‚½‚Æ‚¢‚¤‚±‚Æ‚Æ•ÏX‚µ‚½“úŽž‚ª—Ç
- ‚•ª‚©‚é‚悤A‰ü•Ï‚³‚ꂽƒtƒ@ƒCƒ‹‚ÉŽ¦‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B
-
- b) wƒvƒƒOƒ‰ƒ€x‚Ü‚½‚Í‚»‚̈ꕔ‚ðŠÜ‚Þ’˜ì•¨A‚ ‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x
- ‚©‚»‚̈ꕔ‚©‚ç”h¶‚µ‚½’˜ì•¨‚ð”Еz‚ ‚é‚¢‚Í”•\‚·‚éꇂɂÍA‚»‚Ì‘S
- ‘Ì‚ð‚±‚ÌŒ_–ñ‘‚ÌðŒ‚É]‚Á‚Ä‘æŽOŽÒ‚Ö–³ž‚Å—˜—p‹–‘ø‚µ‚È‚¯‚ê‚΂Ȃç‚È
- ‚¢B
-
- c) ‰ü•Ï‚³‚ꂽƒvƒƒOƒ‰ƒ€‚ªA’ÊíŽÀs‚·‚éۂɑΘb“I‚ɃRƒ}ƒ“ƒh‚ð“Ç‚Þ
- ‚悤‚É‚È‚Á‚Ä‚¢‚é‚È‚ç‚ÎA‚»‚̃vƒƒOƒ‰ƒ€‚ðÅ‚àˆê”Ê“I‚È•û–@‚őΘb“I‚É
- ŽÀs‚·‚éÛA“KØ‚È’˜ìŒ •\Ž¦A–³•ÛØ‚Å‚ ‚邱‚Æ(‚ ‚é‚¢‚Í‚ ‚È‚½‚ª•Û
- Ø‚ð’ñ‹Ÿ‚·‚é‚Æ‚¢‚¤‚±‚Æ)Aƒ†[ƒU‚ªƒvƒƒOƒ‰ƒ€‚ð‚±‚ÌŒ_–ñ‘‚Åq‚ׂ½ð
- Œ‚̉º‚ŔЕz‚·‚邱‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤‚±‚ÆA‚»‚µ‚Ä‚±‚ÌŒ_–ñ‘‚Ì•¡»•¨‚ð
- ‰{——‚·‚é‚É‚Í‚Ç‚¤‚µ‚½‚ç‚æ‚¢‚©‚Æ‚¢‚¤ƒ†[ƒU‚Ö‚Ìà–¾‚ðŠÜ‚Þ’m‚ªˆóü‚³
- ‚ê‚é‚©A‚ ‚é‚¢‚͉æ–Ê‚É•\Ž¦‚³‚ê‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢(—áŠO‚Æ‚µ
- ‚ÄAwƒvƒƒOƒ‰ƒ€x‚»‚Ì‚à‚̂͑Θb“I‚Å‚ ‚Á‚Ä‚à’Êí‚»‚̂悤‚È’m‚ðˆó
- ü‚µ‚È‚¢ê‡‚É‚ÍAwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½‚ ‚È‚½‚Ì’˜ì•¨‚É‚»‚̂悤
- ‚È’m‚ðˆóü‚³‚¹‚é•K—v‚Í‚È‚¢)B
-
-ˆÈã‚Ì•K—vðŒ‚Í‘S‘Ì‚Æ‚µ‚Ẳü•Ï‚³‚ꂽ’˜ì•¨‚É“K—p‚³‚ê‚éB’˜ì•¨‚̈ꕔ
-‚ªwƒvƒƒOƒ‰ƒ€x‚©‚ç”h¶‚µ‚½‚à‚Ì‚Å‚Í‚È‚¢‚ÆŠm”F‚Å‚«A‚»‚ê‚玩g•Ê‚Ì“Æ—§
-‚µ‚½’˜ì•¨‚Å‚ ‚é‚Ƈ—“I‚Él‚¦‚ç‚ê‚é‚È‚ç‚ÎA‚ ‚È‚½‚ª‚»‚ê‚ç‚ð•Ê‚Ì’˜ì•¨
-‚Æ‚µ‚Ä•ª‚¯‚ĔЕz‚·‚éê‡A‚»‚¤‚¢‚Á‚½•”•ª‚É‚Í‚±‚ÌŒ_–ñ‘‚Æ‚»‚ÌðŒ‚Í
-“K—p‚³‚ê‚È‚¢B‚µ‚©‚µA‚ ‚È‚½‚ª“¯‚¶•”•ª‚ðwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨
-‘S‘̂̈ꕔ‚Æ‚µ‚ĔЕz‚·‚é‚È‚ç‚ÎA‘S‘Ì‚Æ‚µ‚Ă̔Еz•¨‚ÍA‚±‚ÌŒ_–ñ‘‚ª
-‰Û‚·ðŒ‚É]‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚Æ‚¢‚¤‚Ì‚ÍA‚±‚ÌŒ_–ñ‘‚ª‘¼‚ÌŒ_–ñŽÒ
-‚É—^‚¦‚é‹–‰Â‚ÍwƒvƒƒOƒ‰ƒ€xŠÛ‚²‚Æ‘S‘Ì‚É‹y‚ÑA’N‚ª‘‚¢‚½‚©‚ÍŠÖŒW‚È‚Še
-•”•ª‚Ì‚·‚ׂĂð•ÛŒì‚·‚é‚©‚ç‚Å‚ ‚éB
-
-‚æ‚Á‚ÄA‚·‚ׂĂ ‚È‚½‚É‚æ‚Á‚Ä‘‚©‚ꂽ’˜ì•¨‚ɑ΂µAŒ —˜‚ðŽå’£‚µ‚½‚è‚ ‚È
-‚½‚ÌŒ —˜‚Ɉًc‚ð\‚µ—§‚Ă邱‚Æ‚Í‚±‚Ì߂̈Ó}‚·‚é‚Æ‚±‚ë‚Å‚Í‚È‚¢B‚Þ‚µ‚ëA
-‚»‚ÌŽïŽ|‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½”h¶•¨‚È‚¢‚µW‡’˜ì•¨‚̔Еz‚ðŠÇ—‚·
-‚éŒ —˜‚ðsŽg‚·‚é‚Æ‚¢‚¤‚±‚Æ‚É‚ ‚éB
-
-‚Ü‚½AwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚Ä‚¢‚È‚¢‚»‚Ì‘¼‚Ì’˜ì•¨‚ðwƒvƒƒOƒ‰ƒ€x(‚
-‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨)‚ƈê‚ÉW‚ß‚½‚¾‚¯‚Ì‚à‚Ì‚ðˆêŠª‚Ì
-•ÛŠÇ‘•’u‚È‚¢‚µ”Еz”}‘Ì‚ÉŽû‚ß‚Ä‚àA‚»‚Ì‘¼‚Ì’˜ì•¨‚Ü‚Å‚±‚ÌŒ_–ñ‘‚ª•Û
-Œì‚·‚é‘ÎÛ‚É‚È‚é‚Æ‚¢‚¤‚±‚Æ‚É‚Í‚È‚ç‚È‚¢B
-
-3. ‚ ‚È‚½‚Íã‹L‘æ1ß‚¨‚æ‚Ñ2ß‚ÌðŒ‚É]‚¢AwƒvƒƒOƒ‰ƒ€x(‚ ‚é‚¢‚Í‘æ2
-ß‚É‚¨‚¯‚é”h¶•¨)‚ðƒIƒuƒWƒFƒNƒgƒR[ƒh‚È‚¢‚µŽÀsŒ`Ž®‚Å•¡»‚Ü‚½‚͔Еz‚·
-‚邱‚Æ‚ª‚Å‚«‚éB‚½‚¾‚µA‚»‚Ìꇂ ‚È‚½‚͈ȉº‚Ì‚¤‚¿‚Ç‚ê‚©ˆê‚‚ðŽÀŽ{‚µ‚È
-‚¯‚ê‚΂Ȃç‚È‚¢:
-
- a) ’˜ì•¨‚ÉAwƒvƒƒOƒ‰ƒ€x‚ɑΉž‚µ‚½Š®‘S‚©‚‹@ŠB‚Å“Ç‚ÝŽæ‚è‰Â”\‚È
- ƒ\[ƒXƒR[ƒh‚ð“Y•t‚·‚éB‚½‚¾‚µAƒ\[ƒXƒR[ƒh‚Íã‹L‘æ1ß‚¨‚æ‚Ñ2ß‚Ì
- ðŒ‚É]‚¢ƒ\ƒtƒgƒEƒFƒA‚ÌŒðŠ·‚ÅKŠµ“I‚ÉŽg‚í‚ê‚é”}‘̂ŔЕz‚µ‚È‚¯‚ê‚Î
- ‚È‚ç‚È‚¢B‚ ‚é‚¢‚ÍA
-
- b) ’˜ì•¨‚ÉA‚¢‚©‚È‚é‘æŽOŽÒ‚ɑ΂µ‚Ä‚àAwƒvƒƒOƒ‰ƒ€x‚ɑΉž‚µ‚½Š®
- ‘S‚©‚‹@ŠB‚Å“Ç‚ÝŽæ‚è‰Â”\‚ȃ\[ƒXƒR[ƒh‚ðA”Еz‚É—v‚·‚镨—“IƒRƒXƒg
- ‚ðã‰ñ‚ç‚È‚¢’ö“x‚ÌŽè”—¿‚ƈø‚«Š·‚¦‚É’ñ‹Ÿ‚·‚éŽ|q‚ׂ½‚È‚‚Æ‚à3”N
- ŠÔ‚Í—LŒø‚È‘–Ê‚É‚È‚Á‚½\‚µo‚ð“Y‚¦‚éB‚½‚¾‚µAƒ\[ƒXƒR[ƒh‚Íã‹L‘æ
- 1ß‚¨‚æ‚Ñ2ß‚ÌðŒ‚É]‚¢ƒ\ƒtƒgƒEƒFƒA‚ÌŒðŠ·‚ÅKŠµ“I‚ÉŽg‚í‚ê‚é”}‘Ì‚Å
- ”Еz‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚ ‚é‚¢‚ÍA
-
- c) ‘Ήž‚·‚éƒ\[ƒXƒR[ƒh”Еz‚Ì\‚µo‚ÉÛ‚µ‚ÄA‚ ‚È‚½‚ª“¾‚½î•ñ‚ðˆê
- ‚Ɉø‚«“n‚·(‚±‚Ì‘I‘ðŽˆ‚ÍA‰c—˜‚ð–Ú“I‚Æ‚µ‚È‚¢”Еz‚Å‚ ‚Á‚ÄA‚©‚‚
- ‚È‚½‚ªã‹L¬ßb‚ÅŽw’肳‚ê‚Ä‚¢‚é‚悤‚È\‚µo‚Æ‹¤‚ɃIƒuƒWƒFƒNƒgƒR[
- ƒh‚ ‚é‚¢‚ÍŽÀsŒ`Ž®‚̃vƒƒOƒ‰ƒ€‚µ‚©“üŽè‚µ‚Ä‚¢‚È‚¢ê‡‚ÉŒÀ‚è‹–‰Â‚³‚ê
- ‚é)B
-
-’˜ì•¨‚̃\[ƒXƒR[ƒh‚Æ‚ÍA‚»‚ê‚ɑ΂µ‚ĉü•Ï‚ð‰Á‚¦‚éã‚ÅD‚Ü‚µ‚¢‚Æ‚³‚ê‚é
-’˜ì•¨‚ÌŒ`Ž®‚ðˆÓ–¡‚·‚éB‚ ‚éŽÀsŒ`Ž®‚Ì’˜ì•¨‚É‚Æ‚Á‚ÄŠ®‘S‚ȃ\[ƒXƒR[ƒh
-‚Æ‚ÍA‚»‚ꂪŠÜ‚Þƒ‚ƒWƒ…[ƒ‹‚·‚ׂẴ\[ƒXƒR[ƒh‘S•”‚ɉÁ‚¦AŠÖ˜A‚·‚éƒCƒ“
-ƒ^[ƒtƒF[ƒX’è‹`ƒtƒ@ƒCƒ‹‚Ì‚·‚ׂĂƃ‰ƒCƒuƒ‰ƒŠ‚̃Rƒ“ƒpƒCƒ‹‚âƒCƒ“ƒXƒg[ƒ‹
-‚ð§Œä‚·‚邽‚ß‚ÉŽg‚í‚ê‚éƒXƒNƒŠƒvƒg‚ð‚à‰Á‚¦‚½‚à‚Ì‚ðˆÓ–¡‚·‚éB‚µ‚©‚µ“Á•Ê
-‚È—áŠO‚Æ‚µ‚ÄA‚»‚̃Rƒ“ƒ|[ƒlƒ“ƒgŽ©‘Ì‚ªŽÀsŒ`Ž®‚É•t‚·‚é‚Ì‚Å‚Í–³‚¢ŒÀ‚èA
-”Еz‚³‚ê‚é‚à‚Ì‚Ì’†‚ÉAŽÀsŒ`Ž®‚ªŽÀs‚³‚ê‚éƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚ÌŽå
-—v‚ȃRƒ“ƒ|[ƒlƒ“ƒg(ƒRƒ“ƒpƒCƒ‰‚âƒJ[ƒlƒ‹“™)‚Æ’Êíˆê‚É(ƒ\[ƒX‚©ƒoƒCƒi
-ƒŠŒ`Ž®‚Ì‚Ç‚¿‚ç‚©‚Å)”Еz‚³‚ê‚é‚à‚Ì‚ðŠÜ‚ñ‚Å‚¢‚é•K—v‚Í‚È‚¢‚Æ‚·‚éB
-
-ŽÀsŒ`Ž®‚Ü‚½‚̓IƒuƒWƒFƒNƒgƒR[ƒh‚̔Еz‚ªAŽw’肳‚ꂽꊂ©‚çƒRƒs[‚·‚é
-‚½‚߂̃AƒNƒZƒXŽè’i‚ð’ñ‹Ÿ‚·‚邱‚Ƃňׂ³‚ê‚é‚Æ‚µ‚ÄA‚»‚Ìã‚Ń\[ƒXƒR[ƒh
-‚à“¯“™‚̃AƒNƒZƒXŽè’i‚É‚æ‚Á‚Ä“¯‚¶êŠ‚©‚çƒRƒs[‚Å‚«‚é‚悤‚É‚È‚Á‚Ä‚¢‚é‚È
-‚ç‚ÎA‘æŽOŽÒ‚ªƒIƒuƒWƒFƒNƒgƒR[ƒh‚ƈê‚Ƀ\[ƒX‚à‹§“I‚ɃRƒs[‚³‚¹‚ç‚ê
-‚é‚悤‚É‚È‚Á‚Ä‚¢‚È‚‚Ä‚àƒ\[ƒXƒR[ƒh”Еz‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é‚à‚Ì‚Æ‚·‚éB
-
-4. ‚ ‚È‚½‚ÍwƒvƒƒOƒ‰ƒ€x‚ðA‚±‚ÌŒ_–ñ‘‚É‚¨‚¢‚Ä–¾Šm‚É’ñŽ¦‚³‚ꂽs
-ˆ×‚𜂫•¡»‚â‰ü•ÏAƒTƒuƒ‰ƒCƒZƒ“ƒXA‚ ‚é‚¢‚͔Еz‚µ‚Ä‚Í‚È‚ç‚È‚¢B‘¼‚É
-wƒvƒƒOƒ‰ƒ€x‚ð•¡»‚â‰ü•ÏAƒTƒuƒ‰ƒCƒZƒ“ƒXA‚ ‚é‚¢‚͔Еz‚·‚éŠé‚Ä‚Í‚·‚×
-‚Ä–³Œø‚Å‚ ‚èA‚±‚ÌŒ_–ñ‘‚̉º‚Å‚Ì‚ ‚È‚½‚ÌŒ —˜‚ðŽ©“®“I‚ÉIŒ‹‚³‚¹‚邱
-‚ƂɂȂ낤B‚µ‚©‚µA•¡»•¨‚⌠—˜‚ð‚±‚ÌŒ_–ñ‘‚É]‚Á‚Ä‚ ‚È‚½‚©‚瓾‚½
-lX‚ÉŠÖ‚µ‚Ä‚ÍA‚»‚̂悤‚ÈlX‚ª‚±‚ÌŒ_–ñ‘‚ÉŠ®‘S‚É]‚Á‚Ä‚¢‚éŒÀ‚è”Þ
-‚ç‚̃‰ƒCƒZƒ“ƒX‚Ü‚ÅIŒ‹‚·‚邱‚Æ‚Í‚È‚¢B
-
-5. ‚ ‚È‚½‚Í‚±‚ÌŒ_–ñ‘‚ðŽó‘ø‚·‚é•K—v‚Í–³‚¢B‚Æ‚¢‚¤‚Ì‚ÍA‚ ‚È‚½‚Í‚±
-‚ê‚É–¼‚µ‚Ä‚¢‚È‚¢‚©‚ç‚Å‚ ‚éB‚µ‚©‚µA‚±‚ÌŒ_–ñ‘ˆÈŠO‚É‚ ‚È‚½‚ɑ΂µ
-‚ÄwƒvƒƒOƒ‰ƒ€x‚â‚»‚Ì”h¶•¨‚ð•ÏXA”Еz‚·‚é‹–‰Â‚ð—^‚¦‚é‚à‚Ì‚Í‘¶Ý‚µ‚È
-‚¢B‚±‚ê‚ç‚Ìsˆ×‚ÍA‚ ‚È‚½‚ª‚±‚ÌŒ_–ñ‘‚ðŽó‚¯“ü‚ê‚È‚¢ŒÀ‚è–@‚É‚æ‚Á‚Ä
-‹Ö‚¶‚ç‚ê‚Ä‚¢‚éB‚»‚±‚ÅAwƒvƒƒOƒ‰ƒ€x(‚ ‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ
-‚½’˜ì•¨‚Ì‚·‚ׂÄ)‚ð‰ü•Ï‚È‚¢‚µ”Еz‚·‚邱‚Æ‚É‚æ‚èA‚ ‚È‚½‚ÍŽ©•ª‚ª‚»‚Ì‚æ
-‚¤‚Èsˆ×‚ðs‚¤‚½‚ß‚É‚±‚ÌŒ_–ñ‘‚ðŽó‘ø‚µ‚½‚Æ‚¢‚¤‚±‚ÆA‚»‚µ‚ÄwƒvƒƒO
-ƒ‰ƒ€x‚Æ‚»‚ê‚ÉŠî‚Â’˜ì•¨‚Ì•¡»‚â”ЕzA‰ü•Ï‚ɂ‚¢‚Ä‚±‚ÌŒ_–ñ‘‚ª‰Û
-‚·§–ñ‚ÆðŒ‚ð‚·‚×‚ÄŽó‚¯“ü‚ꂽ‚Æ‚¢‚¤‚±‚Æ‚ðŽ¦‚µ‚½‚à‚Ì‚ÆŒ©‚È‚·B
-
-6. ‚ ‚È‚½‚ªwƒvƒƒOƒ‰ƒ€x(‚Ü‚½‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨‘S”Ê)‚ð
-ĔЕz‚·‚邽‚Ñ‚ÉA‚»‚ÌŽó—ÌŽÒ‚ÍŒ³X‚̃‰ƒCƒZƒ“ƒX‹–‰ÂŽÒ‚©‚çA‚±‚ÌŒ_–ñ‘‚Å
-Žw’肳‚ꂽðŒ‚Ƨ–ñ‚̉º‚ÅwƒvƒƒOƒ‰ƒ€x‚ð•¡»‚â”ЕzA‚ ‚é‚¢‚͉ü•Ï‚·‚é
-‹–‰Â‚ðŽ©“®“I‚É“¾‚é‚à‚Ì‚Æ‚·‚éB‚ ‚È‚½‚ÍAŽó—ÌŽÒ‚ª‚±‚±‚Å”F‚ß‚ç‚ꂽŒ —˜‚ð
-sŽg‚·‚邱‚Æ‚ÉŠÖ‚µ‚Ä‚±‚êˆÈ㑼‚Ì‚¢‚©‚Ȃ駌À‚à‰Û‚·‚±‚Æ‚ª‚Å‚«‚È‚¢B‚ ‚È
-‚½‚É‚ÍA‘æŽOŽÒ‚ª‚±‚ÌŒ_–ñ‘‚É]‚¤‚±‚Æ‚ð‹§‚·‚éÓ”C‚Í‚È‚¢B
-
-7. “Á‹–NŠQ‚ ‚é‚¢‚Í‚»‚Ì‘¼‚Ì——R(“Á‹–ŠÖŒW‚ÉŒÀ‚ç‚È‚¢)‚©‚çAÙ”»Š‚Ì”»Œˆ
-‚ ‚é‚¢‚Í\‚µ—§‚Ä‚ÌŒ‹‰Ê‚Æ‚µ‚Ä‚ ‚È‚½‚É(Ù”»Š–½—ß‚âŒ_–ñ‚È‚Ç‚É‚æ‚è)‚±‚ÌŒ_
-–ñ‘‚ÌðŒ‚Æ–µ‚‚·‚駖ñ‚ª‰Û‚³‚ꂽꇂłàA‚ ‚È‚½‚ª‚±‚ÌŒ_–ñ‘‚ÌðŒ‚ð
-–Æœ‚³‚ê‚é‚킯‚Å‚Í‚È‚¢B‚à‚µ‚±‚ÌŒ_–ñ‘‚̉º‚Å‚ ‚È‚½‚ɉۂ¹‚ç‚ꂽӔC‚Æ‘¼
-‚ÌŠÖ˜A‚·‚éÓ”C‚𓯎ž‚É–ž‚½‚·‚悤‚ÈŒ`‚ŔЕz‚Å‚«‚È‚¢‚È‚ç‚ÎAŒ‹‰Ê‚Æ‚µ‚Ä‚
-‚È‚½‚ÍwƒvƒƒOƒ‰ƒ€x‚ð”Еz‚·‚邱‚Æ‚ª‘S‚‚Å‚«‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚ ‚éB—Ⴆ
-‚ΓÁ‹–ƒ‰ƒCƒZƒ“ƒX‚ªA‚ ‚È‚½‚©‚ç’¼ÚŠÔÚ‚ð–â‚킸ƒRƒs[‚ðŽó‚¯Žæ‚Á‚½l‚ª’N
-‚Å‚àwƒvƒƒOƒ‰ƒ€x‚ðŽg—p—¿–³—¿‚ÅĔЕz‚·‚邱‚Æ‚ð”F‚ß‚Ä‚¢‚È‚¢ê‡A‚ ‚È
-‚½‚ª‚»‚̧–ñ‚Æ‚±‚ÌŒ_–ñ‘‚𗼕û‚Æ‚à–ž‚½‚·‚É‚ÍwƒvƒƒOƒ‰ƒ€x‚̔Еz‚ðŠ®‘S
-‚É’†Ž~‚·‚邵‚©‚È‚¢‚¾‚낤B
-
-‚±‚Ì߂̈ꕔ•ª‚ª“Á’è‚Ì󋵂̉º‚Å–³Œø‚È‚¢‚µŽÀŽ{•s‰Â”\‚ÈꇂłàAß‚ÌŽc
-‚è‚Ì•”•ª‚Í“K—p‚³‚ê‚é‚悤ˆÓ}‚³‚ê‚Ä‚¢‚éB‚»‚Ì‘¼‚Ì󋵂łÍß‚ª‘S‘Ì‚Æ‚µ‚Ä
-“K—p‚³‚ê‚é‚悤ˆÓ}‚³‚ê‚Ä‚¢‚éB
-
-“Á‹–‚â‚»‚Ì‘¼‚ÌàŽYŒ ‚ðNŠQ‚µ‚½‚èA‚»‚̂悤‚ÈŒ —˜‚ÌŽå’£‚ÌŒø—͂Ɉًc‚ð¥
-‚¦‚½‚è‚·‚é‚悤‚ ‚È‚½‚ð—U˜f‚·‚邱‚Æ‚ª‚±‚Ìß‚Ì–Ú“I‚Å‚Í‚È‚¢B‚±‚Ìß‚É‚ÍA
-lX‚É‚æ‚Á‚ă‰ƒCƒZƒ“ƒXŠµs‚Æ‚µ‚ÄŽÀŒ»‚³‚ê‚Ä‚«‚½AƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA”Еz
-‚̃VƒXƒeƒ€‚ÌŠ®‘S«‚ðŒì‚é‚Æ‚¢‚¤–Ú“I‚µ‚©‚È‚¢B‘½‚‚ÌlX‚ªAƒtƒŠ[ƒ\ƒtƒg
-ƒEƒFƒA‚̔ЕzƒVƒXƒeƒ€‚ªŽñ”öˆêŠÑ‚µ‚Ä“K—p‚³‚ê‚Ä‚¢‚é‚Æ‚¢‚¤M—Š‚ÉŠî‚«A‚±
-‚̃VƒXƒeƒ€‚ð’Ê‚¶‚ĔЕz‚³‚ê‚鑽—l‚ȃ\ƒtƒgƒEƒFƒA‚ÉŠ°‘å‚ÈvŒ£‚ð‚µ‚Ä‚«‚½‚Ì
-‚ÍŽ–ŽÀ‚Å‚ ‚邪Al‚ª‚ǂ̂悤‚ȃVƒXƒeƒ€‚ð’Ê‚¶‚ă\ƒtƒgƒEƒFƒA‚ð”Еz‚µ‚½‚¢
-‚ÆŽv‚¤‚©‚Í‚ ‚‚Ü‚Å‚àìŽÒ/Šñ—^ŽÒŽŸ‘æ‚Å‚ ‚èA‚ ‚È‚½‚ª‘I‘ð‚ð‰Ÿ‚µ‚‚¯‚邱
-‚Æ‚Í‚Å‚«‚È‚¢B
-
-‚±‚Ìß‚ÍA‚±‚ÌŒ_–ñ‘‚Ì‚±‚Ì߈ȊO‚Ì•”•ª‚̈ê‹AŒ‹‚É‚È‚é‚Æl‚¦‚ç‚ê‚éƒP[
-ƒX‚ð“O’ê“I‚É–¾‚ç‚©‚É‚·‚邱‚Æ‚ð–Ú“I‚Æ‚µ‚Ä‚¢‚éB
-
-8. wƒvƒƒOƒ‰ƒ€x‚̔Еz‚â—˜—p‚ªA‚ ‚é‘‚É‚¨‚¢‚Ä‚Í“Á‹–‚Ü‚½‚Í’˜ìŒ ‚ªŽå
-’£‚³‚ꂽƒCƒ“ƒ^[ƒtƒF[ƒX‚Ì‚¢‚¸‚ê‚©‚É‚æ‚Á‚ħŒÀ‚³‚ê‚Ä‚¢‚éê‡AwƒvƒƒO
-ƒ‰ƒ€x‚É‚±‚ÌŒ_–ñ‘‚ð“K—p‚µ‚½Œ³‚Ì’˜ìŒ ŽÒ‚ÍA‚»‚¤‚¢‚Á‚½‘X‚ð”rœ‚µ
-‚½–¾Šm‚È’n—“I”Еz§ŒÀ‚ð‰Á‚¦A‚»‚±‚Å”rœ‚³‚ê‚Ä‚¢‚È‚¢‘‚Ì’†‚â‚»‚ê‚ç‚Ì‘X
-‚̊Ԃł̂ݔЕz‚ª‹–‰Â‚³‚ê‚é‚悤‚É‚µ‚Ä‚à\‚í‚È‚¢B‚»‚Ìê‡A‚»‚̂悤‚ȧ
-ŒÀ‚Í‚±‚ÌŒ_–ñ‘–{•¶‚Å‘‚©‚ê‚Ä‚¢‚é‚Ì‚Æ“¯—l‚ÉŒ©‚È‚³‚ê‚éB
-
-9. ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚ÍAŽž‚É‚æ‚Á‚ĉü’ù‚Ü‚½‚ÍV”ł̈ê”ÊŒöO—˜—p‹–
-‘ø‘‚ð”•\‚·‚邱‚Æ‚ª‚Å‚«‚éB‚»‚̂悤‚ÈV”Å‚ÍŒ»Ý‚̃o[ƒWƒ‡ƒ“‚Æ‚»‚̸_
-‚É‚¨‚¢‚Ä‚ÍŽ—‚½‚à‚̂ɂȂ邾‚낤‚ªAV‚½‚È–â‘è‚⌜”O‚ð‰ðŒˆ‚·‚邽‚ßו”‚Å
-‚͈قȂé‰Â”\«‚ª‚ ‚éB
-
-‚»‚ꂼ‚ê‚̃o[ƒWƒ‡ƒ“‚É‚ÍAŒ©•ª‚¯‚ª•t‚‚悤‚Ƀo[ƒWƒ‡ƒ“”Ô†‚ªU‚ç‚ê‚Ä‚¢
-‚éBwƒvƒƒOƒ‰ƒ€x‚É‚¨‚¢‚Ä‚»‚ê‚É“K—p‚³‚ê‚邱‚ÌŒ_–ñ‘‚̃o[ƒWƒ‡ƒ“”Ô†‚ª
-Žw’肳‚ê‚Ä‚¢‚ÄAX‚Éu‚»‚êˆÈ~‚Ì‚¢‚©‚È‚éƒo[ƒWƒ‡ƒ“v‚à“K—p‚µ‚Ä—Ç‚¢‚Æ‚È‚Á
-‚Ä‚¢‚½ê‡A‚ ‚È‚½‚Í]‚¤ðŒ‚Ƨ–ñ‚Æ‚µ‚ÄAŽw’è‚̃o[ƒWƒ‡ƒ“‚©AƒtƒŠ[ƒ\
-ƒtƒgƒEƒFƒAà’c‚É‚æ‚Á‚Ä”s‚³‚ꂽŽw’è‚̃o[ƒWƒ‡ƒ“ˆÈ~‚̔ł̂ǂꂩˆê‚‚Ì
-‚Ç‚¿‚ç‚©‚ð‘I‚Ô‚±‚Æ‚ªo—ˆ‚éBwƒvƒƒOƒ‰ƒ€x‚щƒCƒZƒ“ƒX‚̃o[ƒWƒ‡ƒ“”Ô†
-‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚È‚ç‚ÎA‚ ‚È‚½‚Í¡‚܂łɃtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚©‚ç”
-s‚³‚ꂽƒo[ƒWƒ‡ƒ“‚Ì’†‚©‚çD‚«‚É‘I‚ñ‚Å\‚í‚È‚¢B
-
-10. ‚à‚µ‚ ‚È‚½‚ªwƒvƒƒOƒ‰ƒ€x‚̈ꕔ‚ðA‚»‚̔ЕzðŒ‚ª‚±‚ÌŒ_–ñ‘‚Æ
-ˆÙ‚Ȃ鑼‚̃tƒŠ[‚ȃvƒƒOƒ‰ƒ€‚Æ“‡‚µ‚½‚¢‚È‚ç‚ÎAìŽÒ‚ɘA—‚µ‚Ä‹–‰Â‚ð‹
-‚ß‚æBƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚ª’˜ìŒ ‚ð•Û—L‚·‚éƒ\ƒtƒgƒEƒFƒA‚ɂ‚¢‚Ä‚ÍA
-ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚ɘA—‚¹‚æBŽ„‚½‚¿‚ÍA‚±‚̂悤‚Èꇂ̂½‚ß‚É“Á•Ê
-‚È—áŠO‚ðÝ‚¯‚邱‚Æ‚à‚ ‚éBŽ„‚½‚¿‚ªŒˆ’è‚ð‰º‚·‚É‚ ‚½‚Á‚Ä‚ÍAŽ„‚½‚¿‚̃tƒŠ[
-ƒ\ƒtƒgƒEƒFƒA‚Ì”h¶•¨‚·‚ׂĂªƒtƒŠ[‚Èó‘Ô‚É•Û‚½‚ê‚é‚Æ‚¢‚¤‚±‚Æ‚ÆAˆê”Ê“I
-‚Ƀ\ƒtƒgƒEƒFƒA‚Ì‹¤—L‚ÆÄ—˜—p‚ð‘£i‚·‚é‚Æ‚¢‚¤“ñ‚‚̖ڕW‚ð‹K€‚ÉŒŸ“¢‚³‚ê
-‚é‚Å‚ ‚낤B
- –³•Û؂ɂ‚¢‚Ä
-
-11. wƒvƒƒOƒ‰ƒ€x‚͑㉿–³‚µ‚É—˜—p‚ª‹–‰Â‚³‚ê‚é‚Ì‚ÅA“KØ‚È–@‚ª”F‚ß‚éŒÀ
-‚è‚É‚¨‚¢‚ÄAwƒvƒƒOƒ‰ƒ€x‚ÉŠÖ‚·‚é‚¢‚©‚È‚é•ÛØ‚à‘¶Ý‚µ‚È‚¢B‘–Ê‚Å•Ê‚É
-q‚ׂéꇂ𜂢‚ÄA’˜ìŒ ŽÒA‚Ü‚½‚Í‚»‚Ì‘¼‚Ì’c‘Ì‚ÍAwƒvƒƒOƒ‰ƒ€x‚ðA
-•\–¾‚³‚ꂽ‚©Œ¾ŠO‚É‚©‚Í–â‚킸A¤‹Æ“I“K«‚ð•ÛØ‚·‚é‚Ù‚Ì‚ß‚©‚µ‚â‚ ‚é“Á’è
-‚Ì–Ú“I‚Ö‚Ì“K‡«(‚ÉŒÀ‚ç‚ê‚È‚¢)‚ðŠÜ‚ÞˆêØ‚Ì•ÛØ–³‚µ‚Éu‚ ‚邪‚Ü‚Üv‚Å’ñ
-‹Ÿ‚·‚éBwƒvƒƒOƒ‰ƒ€x‚ÌŽ¿‚Æ«”\‚ÉŠÖ‚·‚郊ƒXƒN‚Ì‚·‚ׂĂ͂ ‚È‚½‚É‹A‘®‚·
-‚éBwƒvƒƒOƒ‰ƒ€x‚ÉŒ‡Š×‚ª‚ ‚é‚Æ”»–¾‚µ‚½ê‡A‚ ‚È‚½‚Í•K—v‚È•ÛŽç“_ŒŸ‚â
-•âCAC³‚É—v‚·‚éƒRƒXƒg‚Ì‚·‚ׂĂðˆø‚«Žó‚¯‚邱‚Æ‚É‚È‚éB
-
-12. “KØ‚È–@‚©‘–Ê‚Å‚Ì“¯ˆÓ‚É‚æ‚Á‚Ä–½‚º‚ç‚ê‚È‚¢ŒÀ‚èA’˜ìŒ ŽÒA‚Ü‚½‚Íã
-‹L‚Å‹–‰Â‚³‚ê‚Ä‚¢‚é’Ê‚è‚ÉwƒvƒƒOƒ‰ƒ€x‚ð‰ü•Ï‚Ü‚½‚ÍĔЕz‚µ‚½‚»‚Ì‘¼‚Ì’c
-‘Ì‚ÍA‚ ‚È‚½‚ɑ΂µ‚ÄwƒvƒƒOƒ‰ƒ€x‚Ì—˜—p‚È‚¢‚µ—˜—p•s”\‚Ŷ‚¶‚½ˆê”Ê“IA
-“Á•Ê“IA‹ô‘R“IA•K‘R“I‚È‘¹ŠQ(ƒf[ƒ^‚ÌÁŽ¸‚â•s³Šm‚Ȉ—A‚ ‚È‚½‚©‘æŽO
-ŽÒ‚ª”í‚Á‚½‘¹Ž¸A‚ ‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x‚ª‘¼‚̃\ƒtƒgƒEƒFƒA‚ƈê‚É“®ì‚µ
-‚È‚¢‚Æ‚¢‚¤•s‹ï‡‚È‚Ç‚ðŠÜ‚Þ‚ª‚»‚ê‚ç‚ÉŒÀ‚ç‚È‚¢)‚ɈêØ‚ÌÓ”C‚𕉂í‚È‚¢B
-‚»‚̂悤‚È‘¹ŠQ‚ª¶‚¸‚é‰Â”\«‚ɂ‚¢‚Ĕނ炪’‰‚³‚ê‚Ä‚¢‚½‚Æ‚µ‚Ä‚à“¯—l‚Å
-‚ ‚éB
-
- ðŒ‚Ƨ–ñI‚í‚è
-
- ˆÈã‚Ìð€‚ð‚ ‚È‚½‚ÌV‚µ‚¢ƒvƒƒOƒ‰ƒ€‚É“K—p‚·‚é•û–@
-
-‚ ‚È‚½‚ªV‚µ‚¢ƒvƒƒOƒ‰ƒ€‚ðŠJ”‚µ‚½‚Æ‚µ‚ÄAŒöO‚É‚æ‚Á‚Ä‚»‚ꂪ—˜—p‚³‚ê‚é
-‰Â”\«‚ðÅ‘å‚É‚µ‚½‚¢‚È‚çA‚»‚̃vƒƒOƒ‰ƒ€‚ð‚±‚ÌŒ_–ñ‘‚Ìð€‚É]‚Á‚Ä
-’N‚Å‚àĔЕz‚ ‚é‚¢‚Í•ÏX‚Å‚«‚é‚悤ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚É‚·‚é‚Ì‚ªÅ‘P‚Å‚·B
-
-‚»‚Ì‚½‚ß‚É‚ÍAƒvƒƒOƒ‰ƒ€‚Ɉȉº‚̂悤‚È•\Ž¦‚ð“Y•t‚µ‚Ä‚‚¾‚³‚¢B‚»‚Ìê‡A
-•ÛØ‚ª”rœ‚³‚ê‚Ä‚¢‚é‚Æ‚¢‚¤‚±‚Æ‚ðÅ‚àŒø‰Ê“I‚É“`‚¦‚邽‚ß‚ÉA‚»‚ꂼ‚ê‚̃\[
-ƒXƒtƒ@ƒCƒ‹‚Ì–`“ª‚É•\Ž¦‚ð“Y•t‚·‚ê‚ÎÅ‚àˆÀ‘S‚Å‚·B‚È‚‚Æ‚àAu’˜ìŒ •\
-Ž¦v‚Æ‚¢‚¤s‚Æ‘S•¶‚ª‚ ‚éꊂւ̃|ƒCƒ“ƒ^‚¾‚¯‚ÍŠeƒtƒ@ƒCƒ‹‚ÉŠÜ‚ß‚Ä’u‚¢‚Ä
-‚‚¾‚³‚¢B
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
- (–ó:
-
- <ƒvƒƒOƒ‰ƒ€‚Ì–¼‘O‚ÆA‚»‚ꂪ‰½‚ð‚·‚é‚©‚ɂ‚¢‚Ä‚ÌŠÈ’P‚Èà–¾B>
- Copyright (C) <¼—ï”N> <ìŽÒ‚Ì–¼‘O>
-
- ‚±‚̃vƒƒOƒ‰ƒ€‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Å‚·B‚ ‚È‚½‚Í‚±‚ê‚ðAƒtƒŠ[ƒ\ƒt
- ƒgƒEƒFƒAà’c‚É‚æ‚Á‚Ä”s‚³‚ꂽ GNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘(ƒo[ƒWƒ‡
- ƒ“2‚©AŠó–]‚É‚æ‚Á‚Ä‚Í‚»‚êˆÈ~‚̃o[ƒWƒ‡ƒ“‚Ì‚¤‚¿‚Ç‚ê‚©)‚Ì’è‚ß‚éðŒ
- ‚̉º‚ÅĔЕz‚Ü‚½‚͉ü•Ï‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-
- ‚±‚̃vƒƒOƒ‰ƒ€‚Í—L—p‚Å‚ ‚邱‚Æ‚ðŠè‚Á‚ĔЕz‚³‚ê‚Ü‚·‚ªA*‘S‚‚Ì–³•Û
- Ø* ‚Å‚·B¤‹Æ‰Â”\«‚Ì•ÛØ‚â“Á’è‚Ì–Ú“I‚Ö‚Ì“K‡«‚ÍAŒ¾ŠO‚ÉŽ¦‚³‚ꂽ
- ‚à‚Ì‚àŠÜ‚ß‘S‚‘¶Ý‚µ‚Ü‚¹‚ñBÚ‚µ‚‚ÍGNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚ð‚²
- ——‚‚¾‚³‚¢B
-
- ‚ ‚È‚½‚Í‚±‚̃vƒƒOƒ‰ƒ€‚Æ‹¤‚ÉAGNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚Ì•¡»•¨‚ð
- ˆê•”Žó‚¯Žæ‚Á‚½‚Í‚¸‚Å‚·B‚à‚µŽó‚¯Žæ‚Á‚Ä‚¢‚È‚¯‚ê‚ÎAƒtƒŠ[ƒ\ƒtƒgƒEƒF
- ƒAà’c‚Ü‚Å¿‹‚µ‚Ä‚‚¾‚³‚¢(ˆ¶æ‚Í the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)B
-
- )
-
-“dŽq‚È‚¢‚µŽ†‚̃[ƒ‹‚Å‚ ‚È‚½‚É–â‚¢‡‚킹‚é•û–@‚ɂ‚¢‚Ä‚Ìî•ñ‚à‘‚«‰Á‚¦
-‚Ü‚µ‚傤B
-
-ƒvƒƒOƒ‰ƒ€‚ª‘Θb“I‚È‚à‚Ì‚È‚ç‚ÎA‘Θbƒ‚[ƒh‚Å‹N“®‚µ‚½Û‚Éo—Í‚Æ‚µ‚Ĉȉº
-‚̂悤‚È’Z‚¢’m‚ª•\Ž¦‚³‚ê‚é‚悤‚É‚µ‚Ä‚‚¾‚³‚¢:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
- (–ó:
-
- Gnomovision ƒo[ƒWƒ‡ƒ“ 69, Copyright (C) ”N ìŽÒ‚Ì–¼‘O
- Gnomovision ‚Í*‘S‚‚Ì–³•ÛØ*‚Å’ñ‹Ÿ‚³‚ê‚Ü‚·BÚ‚µ‚‚Íushow wv
- ‚ƃ^ƒCƒv‚µ‚ĉº‚³‚¢B‚±‚ê‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Å‚ ‚èA‚ ‚éðŒ‚̉º‚Å
- ĔЕz‚·‚邱‚Æ‚ª§—コ‚ê‚Ä‚¢‚Ü‚·BÚ‚µ‚‚Íushow cv‚ƃ^ƒCƒv‚µ‚ĉº
- ‚³‚¢B
-
- )
-
-‚±‚±‚ÅA‰¼‘z“I‚ȃRƒ}ƒ“ƒhushow wv‚Æushow cv‚͈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘
-‚Ì“KØ‚È•”•ª‚ð•\Ž¦‚·‚é‚悤‚É‚È‚Á‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚à‚¿‚ë‚ñA‚ ‚È
-‚½‚ªŽg‚¤ƒRƒ}ƒ“ƒh‚ðushow wv‚âushow cv‚ƌĂԕK‘R«‚Í‚ ‚è‚Ü‚¹‚ñ‚Ì‚ÅA
-‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ɇ‚킹‚ă}ƒEƒX‚̃NƒŠƒbƒN‚⃃jƒ…[‚̃AƒCƒeƒ€‚É‚µ‚Ä
-‚àŒ‹\‚Å‚·B
-
-‚Ü‚½‚ ‚È‚½‚ÍA•K—v‚È‚ç‚Î(ƒvƒƒOƒ‰ƒ}[‚Æ‚µ‚Ä“‚¢‚Ä‚¢‚½‚ç)‚ ‚È‚½‚̌ٗpŽåA
-‚ ‚é‚¢‚Íꇂɂæ‚Á‚Ä‚ÍŠwZ‚©‚çA‚»‚̃vƒƒOƒ‰ƒ€‚ÉŠÖ‚·‚éu’˜ìŒ •úŠüº–¾
-(copyright disclaimer)v‚É–¼‚µ‚Ä‚à‚炤‚ׂ«‚Å‚·BˆÈ‰º‚Í—á‚Å‚·‚Ì‚ÅA–¼
-‘O‚ð•Ï‚¦‚Ä‚‚¾‚³‚¢:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
- (–ó:
-
- YoyodyneŽÐ‚Í‚±‚±‚ÉAJames Hacker‚É‚æ‚Á‚Ä‘‚©‚ꂽƒvƒƒOƒ‰ƒ€
- uGnomovisionv(ƒRƒ“ƒpƒCƒ‰‚Ö’Ê‚·ƒvƒƒOƒ‰ƒ€)‚ÉŠÖ‚·‚éˆêØ‚Ì’˜ìŒ ‚Ì—˜
- ‰v‚ð•úŠü‚µ‚Ü‚·B
-
- <Ty CoonŽ‚Ì–¼>A1989”N4ŒŽ1“ú
- Ty CoonA•›ŽÐ’·
-
- )
-
-‚±‚̈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚Å‚ÍA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ð“Æè“I‚ȃvƒƒOƒ‰ƒ€
-‚É“‡‚·‚邱‚Æ‚ð”F‚ß‚Ä‚¢‚Ü‚¹‚ñB‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ªƒTƒuƒ‹[ƒ`ƒ“ƒ‰ƒCƒu
-ƒ‰ƒŠ‚È‚ç‚ÎA“Æè“I‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ‚ ‚È‚½‚̃‰ƒCƒuƒ‰ƒŠ‚ðƒŠƒ“ƒN‚·‚邱
-‚Æ‚ð‹–‰Â‚µ‚½‚Ù‚¤‚ª‚æ‚è•Ö—˜‚Å‚ ‚é‚Æl‚¦‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB‚à‚µ‚±‚ꂪ‚ ‚È
-‚½‚Ì–]‚Þ‚±‚Æ‚È‚ç‚ÎA‚±‚ÌŒ_–ñ‘‚Ì‘ã‚í‚è‚ÉGNU ƒ‰ƒCƒuƒ‰ƒŠˆê”ÊŒöO—˜—p‹–‘ø
-Œ_–ñ‘‚ð“K—p‚µ‚Ä‚‚¾‚³‚¢B
+ GNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘ + ƒo[ƒWƒ‡ƒ“2A1991”N6ŒŽ + “ú–{Œê–óA2002”N5ŒŽ20“ú + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + ‚±‚Ì—˜—p‹–‘øŒ_–ñ‘‚ðAˆêŽšˆê‹å‚»‚Ì‚Ü‚Ü‚É•¡»‚µ”Еz‚·‚邱‚Æ‚Í‹–‰Â‚·‚éB + ‚µ‚©‚µ•ÏX‚Í”F‚ß‚È‚¢B + + This is an unofficial translation of the GNU General Public License + into Japanese. It was not published by the Free Software Foundation, + and does not legally state the distribution terms for software that + uses the GNU GPL--only the original English text of the GNU GPL does + that. However, we hope that this translation will help Japanese + speakers understand the GNU GPL better. + + (–ó: ˆÈ‰º‚ÍGNU General Public License‚Ì”ñŒöŽ®‚È“ú–{Œê–ó‚Å‚·B‚±‚ê‚̓t + ƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c(the Free Software Foundataion)‚É‚æ‚Á‚Ä”•\‚³‚ꂽ + ‚à‚Ì‚Å‚Í‚È‚AGNU GPL‚ð“K—p‚µ‚½ƒ\ƒtƒgƒEƒFƒA‚̔ЕzðŒ‚ð–@“I‚É—LŒø‚ÈŒ` + ‚Åq‚ׂ½‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB”ЕzðŒ‚Æ‚µ‚Ä‚ÍGNU GPL‚̉pŒê”ŃeƒLƒXƒg‚Å + Žw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚Ì‚Ý‚ª—LŒø‚Å‚·B‚µ‚©‚µ‚È‚ª‚çAŽ„‚½‚¿‚Í‚±‚Ì–|–ó‚ªA + “ú–{Œê‚ðŽg—p‚·‚élX‚É‚Æ‚Á‚ÄGNU GPL‚ð‚æ‚è—Ç‚—‰ð‚·‚é•‚¯‚ƂȂ邱‚Æ‚ð + –]‚ñ‚Å‚¢‚Ü‚·B) + + –|–ó‚Í ”ª“c^s<mhatta@gnu.org>‚ªs‚Á‚½BŒ´•¶‚Í + http://www.gnu.org/licenses/gpl.txt‚Å‚ ‚éBŒë–ó‚ÌŽw“E‚â‰ü‘PˆÄ‚ðŠ½Œ}‚· + ‚éB + ‚Í‚¶‚ß‚É + +ƒ\ƒtƒgƒEƒFƒAŒü‚¯ƒ‰ƒCƒZƒ“ƒX‚̑唼‚ÍA‚ ‚È‚½‚ª‚»‚̃\ƒtƒgƒEƒFƒA‚ð‹¤—L‚µ‚½ +‚è•ÏX‚µ‚½‚è‚·‚鎩—R‚ð’D‚¤‚悤‚ÉÝŒv‚³‚ê‚Ä‚¢‚Ü‚·B‘ÎÆ“I‚ÉAGNU ˆê”ÊŒö +O—˜—p‹–‘øŒ_–ñ‘‚ÍA‚ ‚È‚½‚ªƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚ð‹¤—L‚µ‚½‚è•ÏX‚µ‚½‚è‚· +‚鎩—R‚ð•ÛØ‚·‚é--‚·‚È‚í‚¿Aƒ\ƒtƒgƒEƒFƒA‚ª‚»‚̃†[ƒU‚·‚ׂĂɂƂÁ‚ătƒŠ[ +‚Å‚ ‚邱‚Æ‚ð•ÛØ‚·‚邱‚Æ‚ð–Ú“I‚Æ‚µ‚Ä‚¢‚Ü‚·B‚±‚̈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘ +‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚̃\ƒtƒgƒEƒFƒA‚Ì‚Ù‚Æ‚ñ‚Ç‚É“K—p‚³‚ê‚Ä‚¨‚èA‚Ü‚½ +GNU GPL‚ð“K—p‚·‚é‚ÆŒˆ‚ß‚½ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’cˆÈŠO‚ÌìŽÒ‚É‚æ‚éƒvƒƒO +ƒ‰ƒ€‚É‚à“K—p‚³‚ê‚Ä‚¢‚Ü‚·(‚¢‚‚‚©‚̃tƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚̃\ƒtƒgƒEƒF +ƒA‚É‚ÍAGNU GPL‚Å‚Í‚È‚GNU ƒ‰ƒCƒuƒ‰ƒŠˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚ª“K—p‚³‚ê +‚Ä‚¢‚邱‚Æ‚à‚ ‚è‚Ü‚·)B‚ ‚È‚½‚à‚Ü‚½A‚²Ž©•ª‚̃vƒƒOƒ‰ƒ€‚ÉGNU GPL‚ð“K—p +‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B + +Ž„‚½‚¿‚ªƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚ÆŒ¾‚¤‚Æ‚«A‚»‚ê‚Í—˜—p‚ÌŽ©—R‚ɂ‚¢‚ÄŒ¾‹y‚µ‚Ä +‚¢‚é‚Ì‚Å‚ ‚Á‚ÄA‰¿Ši‚Í–â‘è‚É‚µ‚Ä‚¢‚Ü‚¹‚ñBŽ„‚½‚¿‚̈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ +‘‚ÍA‚ ‚È‚½‚ªƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Ì•¡»•¨‚ð”Еz‚·‚鎩—R‚ð•ÛØ‚·‚é‚æ‚¤Ý +Œv‚³‚ê‚Ä‚¢‚Ü‚·(Šó–]‚ɉž‚¶‚Ä‚»‚ÌŽí‚̃T[ƒrƒX‚ÉŽè”—¿‚ð‰Û‚·Ž©—R‚à•ÛØ‚³ +‚ê‚Ü‚·)B‚Ü‚½A‚ ‚È‚½‚ªƒ\[ƒXƒR[ƒh‚ðŽó‚¯Žæ‚é‚©A‚ ‚é‚¢‚Í–]‚߂΂»‚ê‚ð +“üŽè‚·‚邱‚Æ‚ª‰Â”\‚Å‚ ‚é‚Æ‚¢‚¤‚±‚ÆA‚ ‚È‚½‚ªƒ\ƒtƒgƒEƒFƒA‚ð•ÏX‚µA‚»‚Ì +ˆê•”‚ðV‚½‚ȃtƒŠ[‚̃vƒƒOƒ‰ƒ€‚Å—˜—p‚Å‚«‚é‚Æ‚¢‚¤‚±‚ÆA‚»‚µ‚ÄAˆÈã‚Åq +‚ׂ½‚悤‚È‚±‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚ª‚ ‚È‚½‚É’m‚炳‚ê‚é‚Æ‚¢‚¤‚±‚Æ‚à•ÛØ‚³ +‚ê‚Ü‚·B + +‚ ‚È‚½‚ÌŒ —˜‚ðŽç‚邽‚ßAŽ„‚½‚¿‚Í’N‚©‚ª‚ ‚È‚½‚Ì—L‚·‚邱‚ê‚ç‚ÌŒ —˜‚ð”Û’è +‚·‚邱‚Æ‚âA‚±‚ê‚ç‚ÌŒ —˜‚ð•úŠü‚·‚é‚悤—v‹‚·‚邱‚Æ‚ð‹ÖŽ~‚·‚é‚Æ‚¢‚¤§ŒÀ +‚ð‰Á‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B‚æ‚Á‚ÄA‚ ‚È‚½‚ªƒ\ƒtƒgƒEƒFƒA‚Ì•¡»•¨‚ð”Еz‚µ‚½ +‚è‚»‚ê‚ð•ÏX‚µ‚½‚è‚·‚éꇂɂÍA‚±‚ê‚ç‚̧ŒÀ‚Ì‚½‚ß‚É‚ ‚È‚½‚É‚ ‚éŽí‚ÌÓ +”C‚ª”¶‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B + +—Ⴆ‚ÎA‚ ‚È‚½‚ªƒtƒŠ[‚ȃvƒƒOƒ‰ƒ€‚Ì•¡»•¨‚ð”Еz‚·‚éê‡A—L—¿‚©–³—¿‚É +ŠÖ‚í‚炸A‚ ‚È‚½‚ÍŽ©•ª‚ª—L‚·‚éŒ —˜‚ð‘S‚ÄŽó—ÌŽÒ‚É—^‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB +‚Ü‚½A‚ ‚È‚½‚͔ނç‚àƒ\[ƒXƒR[ƒh‚ðŽó‚¯Žæ‚é‚©Žè‚É“ü‚ê‚邱‚Æ‚ª‚Å‚«‚é‚悤 +•ÛØ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚»‚µ‚ÄA‚ ‚È‚½‚͔ނç‚ɑ΂µ‚Ĉȉº‚Åq‚ׂéðŒ +‚ðŽ¦‚µA”Þ‚ç‚ÉŽ©‚ç‚ÌŽ‚ÂŒ —˜‚ɂ‚¢‚Ä’m‚炵‚ß‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹ +‚ñB + +Ž„‚½‚¿‚Í‚ ‚È‚½‚ÌŒ —˜‚ð“ñ’iŠK‚̎臂𓥂ñ‚ŕی삵‚Ü‚·B(1) ‚Ü‚¸ƒ\ƒtƒgƒEƒF +ƒA‚ɑ΂µ‚Ä’˜ìŒ ‚ðŽå’£‚µA‚»‚µ‚Ä (2) ‚ ‚È‚½‚ɑ΂µ‚ÄAƒ\ƒtƒgƒEƒFƒA‚Ì•¡ +»‚â”Еz‚Ü‚½‚͉ü•Ï‚ɂ‚¢‚Ä‚Ì–@“I‚È‹–‰Â‚ð—^‚¦‚邱‚ÌŒ_–ñ‘‚ð’ñŽ¦‚µ‚Ü‚·B + +‚Ü‚½AŠeìŽÒ‚⎄‚½‚¿‚ð•ÛŒì‚·‚邽‚ßAŽ„‚½‚¿‚Í‚±‚̃tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚É‚Í +‰½‚Ì•ÛØ‚à–³‚¢‚Æ‚¢‚¤‚±‚Æ‚ð’N‚à‚ªŠmŽÀ‚É—‰ð‚·‚é‚悤‚É‚µA‚Ü‚½ƒ\ƒtƒgƒEƒF +ƒA‚ª’N‚©‘¼l‚É‚æ‚Á‚ĉü•Ï‚³‚êA‚»‚ꂪŽŸX‚ƔЕz‚³‚ê‚Ä‚¢‚Á‚½‚Æ‚µ‚Ä‚àA‚» +‚ÌŽó—̎҂͔ނ炪Žè‚É“ü‚ꂽƒ\ƒtƒgƒEƒFƒA‚ªƒIƒŠƒWƒiƒ‹‚̃o[ƒWƒ‡ƒ“‚Å‚Í–³‚¢ +‚±‚ÆA‚»‚µ‚ÄŒ´ìŽÒ‚Ì–¼º‚Í‘¼l‚É‚æ‚Á‚ÄŽ‚¿ž‚܂ꂽ‰Â”\«‚Ì‚ ‚é–â‘è‚É‚æ‚Á +‚ĉe‹¿‚³‚ê‚邱‚Æ‚ª‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚ðŽü’m‚³‚¹‚½‚¢‚ÆŽv‚¢‚Ü‚·B + +ÅŒã‚ÉAƒ\ƒtƒgƒEƒFƒA“Á‹–‚ª‚¢‚©‚È‚éƒtƒŠ[‚̃vƒƒOƒ‰ƒ€‚Ì‘¶Ý‚É‚à•s’f‚Ì‹º +ˆÐ‚ð“Š‚°‚©‚¯‚Ä‚¢‚Ü‚·‚ªAŽ„‚½‚¿‚ÍAƒtƒŠ[‚ȃvƒƒOƒ‰ƒ€‚ÌĔЕzŽÒ‚ªŒÂX‚É +“Á‹–ƒ‰ƒCƒZƒ“ƒX‚ðŽæ“¾‚·‚邱‚Æ‚É‚æ‚Á‚ÄAŽ–ŽÀãƒvƒƒOƒ‰ƒ€‚ð“Æè“I‚É‚µ‚Ä‚µ +‚Ü‚¤‚Æ‚¢‚¤ŠëŒ¯‚ð”ð‚¯‚½‚¢‚ÆŽv‚¢‚Ü‚·B‚±‚¤‚¢‚Á‚½Ž–‘Ô‚ð—\–h‚·‚邽‚ßAŽ„‚½ +‚¿‚Í‚¢‚©‚È‚é“Á‹–‚à’N‚à‚ªŽ©—R‚É—˜—p‚Å‚«‚é‚悤ƒ‰ƒCƒZƒ“ƒX‚³‚ê‚é‚©A‘S‚ƒ‰ +ƒCƒZƒ“ƒX‚³‚ê‚È‚¢‚©‚Ì‚Ç‚¿‚ç‚©‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢‚±‚Ƃ𖾊m‚É‚µ‚Ü‚µ‚½B + +(–ó’: –{Œ_–ñ‘‚Åu“Æè“I(proprietary)v‚Æ‚ÍAƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚âĔР+•zA‰ü•Ï‚ª‹ÖŽ~‚³‚ê‚Ä‚¢‚é‚©A‹–‰Â‚𓾂邱‚Æ‚ª•K—v‚Æ‚³‚ê‚Ä‚¢‚é‚©A‚ ‚é‚¢ +‚ÍŒµ‚µ‚¢§ŒÀ‚ª‰Û‚¹‚ç‚ê‚Ä‚¢‚ÄŽ©—R‚É‚»‚¤‚·‚邱‚Æ‚ªŽ–ŽÀã‚Å‚«‚È‚‚È‚Á‚Ä‚¢ +‚éó‘Ô‚Ì‚±‚Æ‚ðŽw‚·BÚ‚µ‚‚Í +http://www.gnu.org/philosophy/categories.ja.html#ProprietarySoftware‚ð +ŽQÆ‚¹‚æB) + +•¡»‚â”ЕzA‰ü•Ï‚ɂ‚¢‚Ă̳Šm‚ÈðŒ‚Ƨ–ñ‚ðˆÈ‰º‚Åq‚ׂĂ¢‚«‚Ü‚·B + + GNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘ + •¡»A”ЕzA‰ü•Ï‚ÉŠÖ‚·‚éðŒ‚Ƨ–ñ + +0. ‚±‚Ì—˜—p‹–‘øŒ_–ñ‘‚ÍA‚»‚̃vƒƒOƒ‰ƒ€(‚Ü‚½‚Í‚»‚Ì‘¼‚Ì’˜ì•¨)‚ð‚±‚Ìˆê +”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚Ì’è‚ß‚éðŒ‚̉º‚ŔЕz‚Å‚«‚é‚Æ‚¢‚¤’m‚ª’˜ìŒ ŽÒ‚É +‚æ‚Á‚Ä‹LÚ‚³‚ꂽƒvƒƒOƒ‰ƒ€‚Ü‚½‚Í‚»‚Ì‘¼‚Ì’˜ì•¨‘S”Ê‚É“K—p‚³‚ê‚éBˆÈ‰º‚Å +‚ÍAuwƒvƒƒOƒ‰ƒ€xv‚Æ‚Í‚»‚̂悤‚É‚µ‚Ä‚±‚ÌŒ_–ñ‘‚ª“K—p‚³‚ꂽƒvƒƒOƒ‰ +ƒ€‚⒘앨‘S”Ê‚ðˆÓ–¡‚µA‚Ü‚½uwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨v‚Æ‚Íwƒv +ƒƒOƒ‰ƒ€x‚â‚»‚Ì‘¼’˜ìŒ –@‚̉º‚Å”h¶•¨‚ÆŒ©‚È‚³‚ê‚é‚à‚Ì‘S”Ê‚ðŽw‚·B‚·‚È +‚í‚¿AwƒvƒƒOƒ‰ƒ€x‚©‚»‚̈ꕔ‚ðA‘S‚“¯ˆê‚Ì‚Ü‚Ü‚©A‰ü•Ï‚ð‰Á‚¦‚½‚©A‚ +‚é‚¢‚Í‘¼‚ÌŒ¾Œê‚É–|–󂳂ꂽŒ`‚ÅŠÜ‚Þ’˜ì•¨‚Ì‚±‚Æ‚Å‚ ‚é(u‰ü•Ïv‚Æ‚¢‚¤Œê +‚Ì–{—ˆ‚̈Ӗ¡‚©‚ç‚Í‚¸‚ê‚邪AˆÈ‰º‚Å‚Í–|–ó‚à‰ü•Ï‚̈êŽí‚ÆŒ©‚È‚·)B‚»‚ꂼ +‚ê‚ÌŒ_–ñŽÒ‚Íu‚ ‚È‚½v‚Æ•\Œ»‚³‚ê‚éB + +•¡»‚â”ЕzA‰ü•ÏˆÈŠO‚ÌŠˆ“®‚Í‚±‚ÌŒ_–ñ‘‚ł̓Jƒo[‚³‚ê‚È‚¢B‚»‚ê‚ç‚Í‚±‚Ì +Œ_–ñ‘‚Ì‘ÎÛŠO‚Å‚ ‚éBwƒvƒƒOƒ‰ƒ€x‚ðŽÀs‚·‚ésˆ×Ž©‘̂ɧŒÀ‚Í‚È‚¢B‚Ü +‚½A‚»‚̂悤‚ÈwƒvƒƒOƒ‰ƒ€x‚Ìo—ÍŒ‹‰Ê‚ÍA‚»‚Ì“à—e‚ªwƒvƒƒOƒ‰ƒ€x‚ðŠî +‚É‚µ‚½’˜ì•¨‚ð\¬‚·‚éꇂ݂̂±‚ÌŒ_–ñ‘‚É‚æ‚Á‚ĕی삳‚ê‚é(wƒvƒƒOƒ‰ +ƒ€x‚ðŽÀs‚µ‚½‚±‚Æ‚É‚æ‚Á‚Ä쬂³‚ꂽ‚Æ‚¢‚¤‚±‚Æ‚Æ‚Í–³ŠÖŒW‚Å‚ ‚é)B‚±‚Ì +‚悤‚Èüˆø‚«‚̑Ó–«‚ÍAwƒvƒƒOƒ‰ƒ€x‚ª‰½‚ð‚·‚é‚Ì‚©‚Ɉˑ¶‚·‚éB + +1. ‚»‚ꂼ‚ê‚Ì•¡»•¨‚É‚¨‚¢‚Ä“KØ‚È’˜ìŒ •\Ž¦‚Æ•Û؂̔۔Fº–¾(disclaimer +of warranty)‚ð–Ú—§‚‚悤“KØ‚ÉŒfÚ‚µA‚Ü‚½‚±‚ÌŒ_–ñ‘‚¨‚æ‚шêØ‚Ì•ÛØ‚Ì +•sÝ‚ÉG‚ꂽ’m‚·‚×‚Ä‚ð‚»‚Ì‚Ü‚ÜŽc‚µA‚»‚µ‚Ä‚±‚ÌŒ_–ñ‘‚Ì•¡»•¨‚ðwƒvƒ +ƒOƒ‰ƒ€x‚Ì‚¢‚©‚È‚éŽó—ÌŽÒ‚É‚àwƒvƒƒOƒ‰ƒ€x‚Æ‹¤‚ɔЕz‚·‚éŒÀ‚èA‚ ‚È‚½‚Í +wƒvƒƒOƒ‰ƒ€x‚̃\[ƒXƒR[ƒh‚Ì•¡»•¨‚ðA‚ ‚È‚½‚ªŽó‚¯Žæ‚Á‚½’Ê‚è‚ÌŒ`‚Å•¡ +»‚Ü‚½‚͔Еz‚·‚邱‚Æ‚ª‚Å‚«‚éB”}‘Ì‚Í–â‚í‚È‚¢B + +‚ ‚È‚½‚ÍA•¨—“I‚É•¡»•¨‚ð÷“n‚·‚é‚Æ‚¢‚¤sˆ×‚ÉŠÖ‚µ‚ÄŽè”—¿‚ð‰Û‚µ‚Ä‚à—Ç +‚¢‚µAŠó–]‚É‚æ‚Á‚Ä‚ÍŽè”—¿‚ðŽæ‚Á‚ÄŒðŠ·‚É‚¨‚¯‚é•ÛŒì‚Ì•ÛØ‚ð’ñ‹Ÿ‚µ‚Ä‚à—Ç +‚¢B + +2. ‚ ‚È‚½‚ÍŽ©•ª‚ÌwƒvƒƒOƒ‰ƒ€x‚Ì•¡»•¨‚©‚»‚̈ꕔ‚ð‰ü•Ï‚µ‚ÄwƒvƒƒOƒ‰ +ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨‚ðŒ`¬‚µA‚»‚̂悤‚ȉü•Ï“_‚⒘앨‚ðã‹L‘æ1ß‚Ì’è +‚ß‚éðŒ‚̉º‚Å•¡»‚Ü‚½‚͔Еz‚·‚邱‚Æ‚ª‚Å‚«‚éB‚½‚¾‚µA‚»‚Ì‚½‚߂ɂ͈ȉº +‚ÌðŒ‚·‚ׂĂ𖞂½‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃç‚È‚¢: + + a) ‚ ‚È‚½‚ª‚»‚ê‚ç‚̃tƒ@ƒCƒ‹‚ð•ÏX‚µ‚½‚Æ‚¢‚¤‚±‚Æ‚Æ•ÏX‚µ‚½“úŽž‚ª—Ç + ‚•ª‚©‚é‚悤A‰ü•Ï‚³‚ꂽƒtƒ@ƒCƒ‹‚ÉŽ¦‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B + + b) wƒvƒƒOƒ‰ƒ€x‚Ü‚½‚Í‚»‚̈ꕔ‚ðŠÜ‚Þ’˜ì•¨A‚ ‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x + ‚©‚»‚̈ꕔ‚©‚ç”h¶‚µ‚½’˜ì•¨‚ð”Еz‚ ‚é‚¢‚Í”•\‚·‚éꇂɂÍA‚»‚Ì‘S + ‘Ì‚ð‚±‚ÌŒ_–ñ‘‚ÌðŒ‚É]‚Á‚Ä‘æŽOŽÒ‚Ö–³ž‚Å—˜—p‹–‘ø‚µ‚È‚¯‚ê‚΂Ȃç‚È + ‚¢B + + c) ‰ü•Ï‚³‚ꂽƒvƒƒOƒ‰ƒ€‚ªA’ÊíŽÀs‚·‚éۂɑΘb“I‚ɃRƒ}ƒ“ƒh‚ð“Ç‚Þ + ‚悤‚É‚È‚Á‚Ä‚¢‚é‚È‚ç‚ÎA‚»‚̃vƒƒOƒ‰ƒ€‚ðÅ‚àˆê”Ê“I‚È•û–@‚őΘb“I‚É + ŽÀs‚·‚éÛA“KØ‚È’˜ìŒ •\Ž¦A–³•ÛØ‚Å‚ ‚邱‚Æ(‚ ‚é‚¢‚Í‚ ‚È‚½‚ª•Û + Ø‚ð’ñ‹Ÿ‚·‚é‚Æ‚¢‚¤‚±‚Æ)Aƒ†[ƒU‚ªƒvƒƒOƒ‰ƒ€‚ð‚±‚ÌŒ_–ñ‘‚Åq‚ׂ½ð + Œ‚̉º‚ŔЕz‚·‚邱‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤‚±‚ÆA‚»‚µ‚Ä‚±‚ÌŒ_–ñ‘‚Ì•¡»•¨‚ð + ‰{——‚·‚é‚É‚Í‚Ç‚¤‚µ‚½‚ç‚æ‚¢‚©‚Æ‚¢‚¤ƒ†[ƒU‚Ö‚Ìà–¾‚ðŠÜ‚Þ’m‚ªˆóü‚³ + ‚ê‚é‚©A‚ ‚é‚¢‚͉æ–Ê‚É•\Ž¦‚³‚ê‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢(—áŠO‚Æ‚µ + ‚ÄAwƒvƒƒOƒ‰ƒ€x‚»‚Ì‚à‚̂͑Θb“I‚Å‚ ‚Á‚Ä‚à’Êí‚»‚̂悤‚È’m‚ðˆó + ü‚µ‚È‚¢ê‡‚É‚ÍAwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½‚ ‚È‚½‚Ì’˜ì•¨‚É‚»‚̂悤 + ‚È’m‚ðˆóü‚³‚¹‚é•K—v‚Í‚È‚¢)B + +ˆÈã‚Ì•K—vðŒ‚Í‘S‘Ì‚Æ‚µ‚Ẳü•Ï‚³‚ꂽ’˜ì•¨‚É“K—p‚³‚ê‚éB’˜ì•¨‚̈ꕔ +‚ªwƒvƒƒOƒ‰ƒ€x‚©‚ç”h¶‚µ‚½‚à‚Ì‚Å‚Í‚È‚¢‚ÆŠm”F‚Å‚«A‚»‚ê‚玩g•Ê‚Ì“Æ—§ +‚µ‚½’˜ì•¨‚Å‚ ‚é‚Ƈ—“I‚Él‚¦‚ç‚ê‚é‚È‚ç‚ÎA‚ ‚È‚½‚ª‚»‚ê‚ç‚ð•Ê‚Ì’˜ì•¨ +‚Æ‚µ‚Ä•ª‚¯‚ĔЕz‚·‚éê‡A‚»‚¤‚¢‚Á‚½•”•ª‚É‚Í‚±‚ÌŒ_–ñ‘‚Æ‚»‚ÌðŒ‚Í +“K—p‚³‚ê‚È‚¢B‚µ‚©‚µA‚ ‚È‚½‚ª“¯‚¶•”•ª‚ðwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨ +‘S‘̂̈ꕔ‚Æ‚µ‚ĔЕz‚·‚é‚È‚ç‚ÎA‘S‘Ì‚Æ‚µ‚Ă̔Еz•¨‚ÍA‚±‚ÌŒ_–ñ‘‚ª +‰Û‚·ðŒ‚É]‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚Æ‚¢‚¤‚Ì‚ÍA‚±‚ÌŒ_–ñ‘‚ª‘¼‚ÌŒ_–ñŽÒ +‚É—^‚¦‚é‹–‰Â‚ÍwƒvƒƒOƒ‰ƒ€xŠÛ‚²‚Æ‘S‘Ì‚É‹y‚ÑA’N‚ª‘‚¢‚½‚©‚ÍŠÖŒW‚È‚Še +•”•ª‚Ì‚·‚ׂĂð•ÛŒì‚·‚é‚©‚ç‚Å‚ ‚éB + +‚æ‚Á‚ÄA‚·‚ׂĂ ‚È‚½‚É‚æ‚Á‚Ä‘‚©‚ꂽ’˜ì•¨‚ɑ΂µAŒ —˜‚ðŽå’£‚µ‚½‚è‚ ‚È +‚½‚ÌŒ —˜‚Ɉًc‚ð\‚µ—§‚Ă邱‚Æ‚Í‚±‚Ì߂̈Ó}‚·‚é‚Æ‚±‚ë‚Å‚Í‚È‚¢B‚Þ‚µ‚ëA +‚»‚ÌŽïŽ|‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½”h¶•¨‚È‚¢‚µW‡’˜ì•¨‚̔Еz‚ðŠÇ—‚· +‚éŒ —˜‚ðsŽg‚·‚é‚Æ‚¢‚¤‚±‚Æ‚É‚ ‚éB + +‚Ü‚½AwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚Ä‚¢‚È‚¢‚»‚Ì‘¼‚Ì’˜ì•¨‚ðwƒvƒƒOƒ‰ƒ€x(‚ +‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨)‚ƈê‚ÉW‚ß‚½‚¾‚¯‚Ì‚à‚Ì‚ðˆêŠª‚Ì +•ÛŠÇ‘•’u‚È‚¢‚µ”Еz”}‘Ì‚ÉŽû‚ß‚Ä‚àA‚»‚Ì‘¼‚Ì’˜ì•¨‚Ü‚Å‚±‚ÌŒ_–ñ‘‚ª•Û +Œì‚·‚é‘ÎÛ‚É‚È‚é‚Æ‚¢‚¤‚±‚Æ‚É‚Í‚È‚ç‚È‚¢B + +3. ‚ ‚È‚½‚Íã‹L‘æ1ß‚¨‚æ‚Ñ2ß‚ÌðŒ‚É]‚¢AwƒvƒƒOƒ‰ƒ€x(‚ ‚é‚¢‚Í‘æ2 +ß‚É‚¨‚¯‚é”h¶•¨)‚ðƒIƒuƒWƒFƒNƒgƒR[ƒh‚È‚¢‚µŽÀsŒ`Ž®‚Å•¡»‚Ü‚½‚͔Еz‚· +‚邱‚Æ‚ª‚Å‚«‚éB‚½‚¾‚µA‚»‚Ìꇂ ‚È‚½‚͈ȉº‚Ì‚¤‚¿‚Ç‚ê‚©ˆê‚‚ðŽÀŽ{‚µ‚È +‚¯‚ê‚΂Ȃç‚È‚¢: + + a) ’˜ì•¨‚ÉAwƒvƒƒOƒ‰ƒ€x‚ɑΉž‚µ‚½Š®‘S‚©‚‹@ŠB‚Å“Ç‚ÝŽæ‚è‰Â”\‚È + ƒ\[ƒXƒR[ƒh‚ð“Y•t‚·‚éB‚½‚¾‚µAƒ\[ƒXƒR[ƒh‚Íã‹L‘æ1ß‚¨‚æ‚Ñ2ß‚Ì + ðŒ‚É]‚¢ƒ\ƒtƒgƒEƒFƒA‚ÌŒðŠ·‚ÅKŠµ“I‚ÉŽg‚í‚ê‚é”}‘̂ŔЕz‚µ‚È‚¯‚ê‚Î + ‚È‚ç‚È‚¢B‚ ‚é‚¢‚ÍA + + b) ’˜ì•¨‚ÉA‚¢‚©‚È‚é‘æŽOŽÒ‚ɑ΂µ‚Ä‚àAwƒvƒƒOƒ‰ƒ€x‚ɑΉž‚µ‚½Š® + ‘S‚©‚‹@ŠB‚Å“Ç‚ÝŽæ‚è‰Â”\‚ȃ\[ƒXƒR[ƒh‚ðA”Еz‚É—v‚·‚镨—“IƒRƒXƒg + ‚ðã‰ñ‚ç‚È‚¢’ö“x‚ÌŽè”—¿‚ƈø‚«Š·‚¦‚É’ñ‹Ÿ‚·‚éŽ|q‚ׂ½‚È‚‚Æ‚à3”N + ŠÔ‚Í—LŒø‚È‘–Ê‚É‚È‚Á‚½\‚µo‚ð“Y‚¦‚éB‚½‚¾‚µAƒ\[ƒXƒR[ƒh‚Íã‹L‘æ + 1ß‚¨‚æ‚Ñ2ß‚ÌðŒ‚É]‚¢ƒ\ƒtƒgƒEƒFƒA‚ÌŒðŠ·‚ÅKŠµ“I‚ÉŽg‚í‚ê‚é”}‘Ì‚Å + ”Еz‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B‚ ‚é‚¢‚ÍA + + c) ‘Ήž‚·‚éƒ\[ƒXƒR[ƒh”Еz‚Ì\‚µo‚ÉÛ‚µ‚ÄA‚ ‚È‚½‚ª“¾‚½î•ñ‚ðˆê + ‚Ɉø‚«“n‚·(‚±‚Ì‘I‘ðŽˆ‚ÍA‰c—˜‚ð–Ú“I‚Æ‚µ‚È‚¢”Еz‚Å‚ ‚Á‚ÄA‚©‚‚ + ‚È‚½‚ªã‹L¬ßb‚ÅŽw’肳‚ê‚Ä‚¢‚é‚悤‚È\‚µo‚Æ‹¤‚ɃIƒuƒWƒFƒNƒgƒR[ + ƒh‚ ‚é‚¢‚ÍŽÀsŒ`Ž®‚̃vƒƒOƒ‰ƒ€‚µ‚©“üŽè‚µ‚Ä‚¢‚È‚¢ê‡‚ÉŒÀ‚è‹–‰Â‚³‚ê + ‚é)B + +’˜ì•¨‚̃\[ƒXƒR[ƒh‚Æ‚ÍA‚»‚ê‚ɑ΂µ‚ĉü•Ï‚ð‰Á‚¦‚éã‚ÅD‚Ü‚µ‚¢‚Æ‚³‚ê‚é +’˜ì•¨‚ÌŒ`Ž®‚ðˆÓ–¡‚·‚éB‚ ‚éŽÀsŒ`Ž®‚Ì’˜ì•¨‚É‚Æ‚Á‚ÄŠ®‘S‚ȃ\[ƒXƒR[ƒh +‚Æ‚ÍA‚»‚ꂪŠÜ‚Þƒ‚ƒWƒ…[ƒ‹‚·‚ׂẴ\[ƒXƒR[ƒh‘S•”‚ɉÁ‚¦AŠÖ˜A‚·‚éƒCƒ“ +ƒ^[ƒtƒF[ƒX’è‹`ƒtƒ@ƒCƒ‹‚Ì‚·‚ׂĂƃ‰ƒCƒuƒ‰ƒŠ‚̃Rƒ“ƒpƒCƒ‹‚âƒCƒ“ƒXƒg[ƒ‹ +‚ð§Œä‚·‚邽‚ß‚ÉŽg‚í‚ê‚éƒXƒNƒŠƒvƒg‚ð‚à‰Á‚¦‚½‚à‚Ì‚ðˆÓ–¡‚·‚éB‚µ‚©‚µ“Á•Ê +‚È—áŠO‚Æ‚µ‚ÄA‚»‚̃Rƒ“ƒ|[ƒlƒ“ƒgŽ©‘Ì‚ªŽÀsŒ`Ž®‚É•t‚·‚é‚Ì‚Å‚Í–³‚¢ŒÀ‚èA +”Еz‚³‚ê‚é‚à‚Ì‚Ì’†‚ÉAŽÀsŒ`Ž®‚ªŽÀs‚³‚ê‚éƒIƒyƒŒ[ƒeƒBƒ“ƒOƒVƒXƒeƒ€‚ÌŽå +—v‚ȃRƒ“ƒ|[ƒlƒ“ƒg(ƒRƒ“ƒpƒCƒ‰‚âƒJ[ƒlƒ‹“™)‚Æ’Êíˆê‚É(ƒ\[ƒX‚©ƒoƒCƒi +ƒŠŒ`Ž®‚Ì‚Ç‚¿‚ç‚©‚Å)”Еz‚³‚ê‚é‚à‚Ì‚ðŠÜ‚ñ‚Å‚¢‚é•K—v‚Í‚È‚¢‚Æ‚·‚éB + +ŽÀsŒ`Ž®‚Ü‚½‚̓IƒuƒWƒFƒNƒgƒR[ƒh‚̔Еz‚ªAŽw’肳‚ꂽꊂ©‚çƒRƒs[‚·‚é +‚½‚߂̃AƒNƒZƒXŽè’i‚ð’ñ‹Ÿ‚·‚邱‚Ƃňׂ³‚ê‚é‚Æ‚µ‚ÄA‚»‚Ìã‚Ń\[ƒXƒR[ƒh +‚à“¯“™‚̃AƒNƒZƒXŽè’i‚É‚æ‚Á‚Ä“¯‚¶êŠ‚©‚çƒRƒs[‚Å‚«‚é‚悤‚É‚È‚Á‚Ä‚¢‚é‚È +‚ç‚ÎA‘æŽOŽÒ‚ªƒIƒuƒWƒFƒNƒgƒR[ƒh‚ƈê‚Ƀ\[ƒX‚à‹§“I‚ɃRƒs[‚³‚¹‚ç‚ê +‚é‚悤‚É‚È‚Á‚Ä‚¢‚È‚‚Ä‚àƒ\[ƒXƒR[ƒh”Еz‚ÌðŒ‚ð–ž‚½‚µ‚Ä‚¢‚é‚à‚Ì‚Æ‚·‚éB + +4. ‚ ‚È‚½‚ÍwƒvƒƒOƒ‰ƒ€x‚ðA‚±‚ÌŒ_–ñ‘‚É‚¨‚¢‚Ä–¾Šm‚É’ñŽ¦‚³‚ꂽs +ˆ×‚𜂫•¡»‚â‰ü•ÏAƒTƒuƒ‰ƒCƒZƒ“ƒXA‚ ‚é‚¢‚͔Еz‚µ‚Ä‚Í‚È‚ç‚È‚¢B‘¼‚É +wƒvƒƒOƒ‰ƒ€x‚ð•¡»‚â‰ü•ÏAƒTƒuƒ‰ƒCƒZƒ“ƒXA‚ ‚é‚¢‚͔Еz‚·‚éŠé‚Ä‚Í‚·‚× +‚Ä–³Œø‚Å‚ ‚èA‚±‚ÌŒ_–ñ‘‚̉º‚Å‚Ì‚ ‚È‚½‚ÌŒ —˜‚ðŽ©“®“I‚ÉIŒ‹‚³‚¹‚邱 +‚ƂɂȂ낤B‚µ‚©‚µA•¡»•¨‚⌠—˜‚ð‚±‚ÌŒ_–ñ‘‚É]‚Á‚Ä‚ ‚È‚½‚©‚瓾‚½ +lX‚ÉŠÖ‚µ‚Ä‚ÍA‚»‚̂悤‚ÈlX‚ª‚±‚ÌŒ_–ñ‘‚ÉŠ®‘S‚É]‚Á‚Ä‚¢‚éŒÀ‚è”Þ +‚ç‚̃‰ƒCƒZƒ“ƒX‚Ü‚ÅIŒ‹‚·‚邱‚Æ‚Í‚È‚¢B + +5. ‚ ‚È‚½‚Í‚±‚ÌŒ_–ñ‘‚ðŽó‘ø‚·‚é•K—v‚Í–³‚¢B‚Æ‚¢‚¤‚Ì‚ÍA‚ ‚È‚½‚Í‚± +‚ê‚É–¼‚µ‚Ä‚¢‚È‚¢‚©‚ç‚Å‚ ‚éB‚µ‚©‚µA‚±‚ÌŒ_–ñ‘ˆÈŠO‚É‚ ‚È‚½‚ɑ΂µ +‚ÄwƒvƒƒOƒ‰ƒ€x‚â‚»‚Ì”h¶•¨‚ð•ÏXA”Еz‚·‚é‹–‰Â‚ð—^‚¦‚é‚à‚Ì‚Í‘¶Ý‚µ‚È +‚¢B‚±‚ê‚ç‚Ìsˆ×‚ÍA‚ ‚È‚½‚ª‚±‚ÌŒ_–ñ‘‚ðŽó‚¯“ü‚ê‚È‚¢ŒÀ‚è–@‚É‚æ‚Á‚Ä +‹Ö‚¶‚ç‚ê‚Ä‚¢‚éB‚»‚±‚ÅAwƒvƒƒOƒ‰ƒ€x(‚ ‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ +‚½’˜ì•¨‚Ì‚·‚ׂÄ)‚ð‰ü•Ï‚È‚¢‚µ”Еz‚·‚邱‚Æ‚É‚æ‚èA‚ ‚È‚½‚ÍŽ©•ª‚ª‚»‚Ì‚æ +‚¤‚Èsˆ×‚ðs‚¤‚½‚ß‚É‚±‚ÌŒ_–ñ‘‚ðŽó‘ø‚µ‚½‚Æ‚¢‚¤‚±‚ÆA‚»‚µ‚ÄwƒvƒƒO +ƒ‰ƒ€x‚Æ‚»‚ê‚ÉŠî‚Â’˜ì•¨‚Ì•¡»‚â”ЕzA‰ü•Ï‚ɂ‚¢‚Ä‚±‚ÌŒ_–ñ‘‚ª‰Û +‚·§–ñ‚ÆðŒ‚ð‚·‚×‚ÄŽó‚¯“ü‚ꂽ‚Æ‚¢‚¤‚±‚Æ‚ðŽ¦‚µ‚½‚à‚Ì‚ÆŒ©‚È‚·B + +6. ‚ ‚È‚½‚ªwƒvƒƒOƒ‰ƒ€x(‚Ü‚½‚ÍwƒvƒƒOƒ‰ƒ€x‚ðŠî‚É‚µ‚½’˜ì•¨‘S”Ê)‚ð +ĔЕz‚·‚邽‚Ñ‚ÉA‚»‚ÌŽó—ÌŽÒ‚ÍŒ³X‚̃‰ƒCƒZƒ“ƒX‹–‰ÂŽÒ‚©‚çA‚±‚ÌŒ_–ñ‘‚Å +Žw’肳‚ꂽðŒ‚Ƨ–ñ‚̉º‚ÅwƒvƒƒOƒ‰ƒ€x‚ð•¡»‚â”ЕzA‚ ‚é‚¢‚͉ü•Ï‚·‚é +‹–‰Â‚ðŽ©“®“I‚É“¾‚é‚à‚Ì‚Æ‚·‚éB‚ ‚È‚½‚ÍAŽó—ÌŽÒ‚ª‚±‚±‚Å”F‚ß‚ç‚ꂽŒ —˜‚ð +sŽg‚·‚邱‚Æ‚ÉŠÖ‚µ‚Ä‚±‚êˆÈ㑼‚Ì‚¢‚©‚Ȃ駌À‚à‰Û‚·‚±‚Æ‚ª‚Å‚«‚È‚¢B‚ ‚È +‚½‚É‚ÍA‘æŽOŽÒ‚ª‚±‚ÌŒ_–ñ‘‚É]‚¤‚±‚Æ‚ð‹§‚·‚éÓ”C‚Í‚È‚¢B + +7. “Á‹–NŠQ‚ ‚é‚¢‚Í‚»‚Ì‘¼‚Ì——R(“Á‹–ŠÖŒW‚ÉŒÀ‚ç‚È‚¢)‚©‚çAÙ”»Š‚Ì”»Œˆ +‚ ‚é‚¢‚Í\‚µ—§‚Ä‚ÌŒ‹‰Ê‚Æ‚µ‚Ä‚ ‚È‚½‚É(Ù”»Š–½—ß‚âŒ_–ñ‚È‚Ç‚É‚æ‚è)‚±‚ÌŒ_ +–ñ‘‚ÌðŒ‚Æ–µ‚‚·‚駖ñ‚ª‰Û‚³‚ꂽꇂłàA‚ ‚È‚½‚ª‚±‚ÌŒ_–ñ‘‚ÌðŒ‚ð +–Æœ‚³‚ê‚é‚킯‚Å‚Í‚È‚¢B‚à‚µ‚±‚ÌŒ_–ñ‘‚̉º‚Å‚ ‚È‚½‚ɉۂ¹‚ç‚ꂽӔC‚Æ‘¼ +‚ÌŠÖ˜A‚·‚éÓ”C‚𓯎ž‚É–ž‚½‚·‚悤‚ÈŒ`‚ŔЕz‚Å‚«‚È‚¢‚È‚ç‚ÎAŒ‹‰Ê‚Æ‚µ‚Ä‚ +‚È‚½‚ÍwƒvƒƒOƒ‰ƒ€x‚ð”Еz‚·‚邱‚Æ‚ª‘S‚‚Å‚«‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚ ‚éB—Ⴆ +‚ΓÁ‹–ƒ‰ƒCƒZƒ“ƒX‚ªA‚ ‚È‚½‚©‚ç’¼ÚŠÔÚ‚ð–â‚킸ƒRƒs[‚ðŽó‚¯Žæ‚Á‚½l‚ª’N +‚Å‚àwƒvƒƒOƒ‰ƒ€x‚ðŽg—p—¿–³—¿‚ÅĔЕz‚·‚邱‚Æ‚ð”F‚ß‚Ä‚¢‚È‚¢ê‡A‚ ‚È +‚½‚ª‚»‚̧–ñ‚Æ‚±‚ÌŒ_–ñ‘‚𗼕û‚Æ‚à–ž‚½‚·‚É‚ÍwƒvƒƒOƒ‰ƒ€x‚̔Еz‚ðŠ®‘S +‚É’†Ž~‚·‚邵‚©‚È‚¢‚¾‚낤B + +‚±‚Ì߂̈ꕔ•ª‚ª“Á’è‚Ì󋵂̉º‚Å–³Œø‚È‚¢‚µŽÀŽ{•s‰Â”\‚ÈꇂłàAß‚ÌŽc +‚è‚Ì•”•ª‚Í“K—p‚³‚ê‚é‚悤ˆÓ}‚³‚ê‚Ä‚¢‚éB‚»‚Ì‘¼‚Ì󋵂łÍß‚ª‘S‘Ì‚Æ‚µ‚Ä +“K—p‚³‚ê‚é‚悤ˆÓ}‚³‚ê‚Ä‚¢‚éB + +“Á‹–‚â‚»‚Ì‘¼‚ÌàŽYŒ ‚ðNŠQ‚µ‚½‚èA‚»‚̂悤‚ÈŒ —˜‚ÌŽå’£‚ÌŒø—͂Ɉًc‚ð¥ +‚¦‚½‚è‚·‚é‚悤‚ ‚È‚½‚ð—U˜f‚·‚邱‚Æ‚ª‚±‚Ìß‚Ì–Ú“I‚Å‚Í‚È‚¢B‚±‚Ìß‚É‚ÍA +lX‚É‚æ‚Á‚ă‰ƒCƒZƒ“ƒXŠµs‚Æ‚µ‚ÄŽÀŒ»‚³‚ê‚Ä‚«‚½AƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA”Еz +‚̃VƒXƒeƒ€‚ÌŠ®‘S«‚ðŒì‚é‚Æ‚¢‚¤–Ú“I‚µ‚©‚È‚¢B‘½‚‚ÌlX‚ªAƒtƒŠ[ƒ\ƒtƒg +ƒEƒFƒA‚̔ЕzƒVƒXƒeƒ€‚ªŽñ”öˆêŠÑ‚µ‚Ä“K—p‚³‚ê‚Ä‚¢‚é‚Æ‚¢‚¤M—Š‚ÉŠî‚«A‚± +‚̃VƒXƒeƒ€‚ð’Ê‚¶‚ĔЕz‚³‚ê‚鑽—l‚ȃ\ƒtƒgƒEƒFƒA‚ÉŠ°‘å‚ÈvŒ£‚ð‚µ‚Ä‚«‚½‚Ì +‚ÍŽ–ŽÀ‚Å‚ ‚邪Al‚ª‚ǂ̂悤‚ȃVƒXƒeƒ€‚ð’Ê‚¶‚ă\ƒtƒgƒEƒFƒA‚ð”Еz‚µ‚½‚¢ +‚ÆŽv‚¤‚©‚Í‚ ‚‚Ü‚Å‚àìŽÒ/Šñ—^ŽÒŽŸ‘æ‚Å‚ ‚èA‚ ‚È‚½‚ª‘I‘ð‚ð‰Ÿ‚µ‚‚¯‚邱 +‚Æ‚Í‚Å‚«‚È‚¢B + +‚±‚Ìß‚ÍA‚±‚ÌŒ_–ñ‘‚Ì‚±‚Ì߈ȊO‚Ì•”•ª‚̈ê‹AŒ‹‚É‚È‚é‚Æl‚¦‚ç‚ê‚éƒP[ +ƒX‚ð“O’ê“I‚É–¾‚ç‚©‚É‚·‚邱‚Æ‚ð–Ú“I‚Æ‚µ‚Ä‚¢‚éB + +8. wƒvƒƒOƒ‰ƒ€x‚̔Еz‚â—˜—p‚ªA‚ ‚é‘‚É‚¨‚¢‚Ä‚Í“Á‹–‚Ü‚½‚Í’˜ìŒ ‚ªŽå +’£‚³‚ꂽƒCƒ“ƒ^[ƒtƒF[ƒX‚Ì‚¢‚¸‚ê‚©‚É‚æ‚Á‚ħŒÀ‚³‚ê‚Ä‚¢‚éê‡AwƒvƒƒO +ƒ‰ƒ€x‚É‚±‚ÌŒ_–ñ‘‚ð“K—p‚µ‚½Œ³‚Ì’˜ìŒ ŽÒ‚ÍA‚»‚¤‚¢‚Á‚½‘X‚ð”rœ‚µ +‚½–¾Šm‚È’n—“I”Еz§ŒÀ‚ð‰Á‚¦A‚»‚±‚Å”rœ‚³‚ê‚Ä‚¢‚È‚¢‘‚Ì’†‚â‚»‚ê‚ç‚Ì‘X +‚̊Ԃł̂ݔЕz‚ª‹–‰Â‚³‚ê‚é‚悤‚É‚µ‚Ä‚à\‚í‚È‚¢B‚»‚Ìê‡A‚»‚̂悤‚ȧ +ŒÀ‚Í‚±‚ÌŒ_–ñ‘–{•¶‚Å‘‚©‚ê‚Ä‚¢‚é‚Ì‚Æ“¯—l‚ÉŒ©‚È‚³‚ê‚éB + +9. ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚ÍAŽž‚É‚æ‚Á‚ĉü’ù‚Ü‚½‚ÍV”ł̈ê”ÊŒöO—˜—p‹– +‘ø‘‚ð”•\‚·‚邱‚Æ‚ª‚Å‚«‚éB‚»‚̂悤‚ÈV”Å‚ÍŒ»Ý‚̃o[ƒWƒ‡ƒ“‚Æ‚»‚̸_ +‚É‚¨‚¢‚Ä‚ÍŽ—‚½‚à‚̂ɂȂ邾‚낤‚ªAV‚½‚È–â‘è‚⌜”O‚ð‰ðŒˆ‚·‚邽‚ßו”‚Å +‚͈قȂé‰Â”\«‚ª‚ ‚éB + +‚»‚ꂼ‚ê‚̃o[ƒWƒ‡ƒ“‚É‚ÍAŒ©•ª‚¯‚ª•t‚‚悤‚Ƀo[ƒWƒ‡ƒ“”Ô†‚ªU‚ç‚ê‚Ä‚¢ +‚éBwƒvƒƒOƒ‰ƒ€x‚É‚¨‚¢‚Ä‚»‚ê‚É“K—p‚³‚ê‚邱‚ÌŒ_–ñ‘‚̃o[ƒWƒ‡ƒ“”Ô†‚ª +Žw’肳‚ê‚Ä‚¢‚ÄAX‚Éu‚»‚êˆÈ~‚Ì‚¢‚©‚È‚éƒo[ƒWƒ‡ƒ“v‚à“K—p‚µ‚Ä—Ç‚¢‚Æ‚È‚Á +‚Ä‚¢‚½ê‡A‚ ‚È‚½‚Í]‚¤ðŒ‚Ƨ–ñ‚Æ‚µ‚ÄAŽw’è‚̃o[ƒWƒ‡ƒ“‚©AƒtƒŠ[ƒ\ +ƒtƒgƒEƒFƒAà’c‚É‚æ‚Á‚Ä”s‚³‚ꂽŽw’è‚̃o[ƒWƒ‡ƒ“ˆÈ~‚̔ł̂ǂꂩˆê‚Â‚Ì +‚Ç‚¿‚ç‚©‚ð‘I‚Ô‚±‚Æ‚ªo—ˆ‚éBwƒvƒƒOƒ‰ƒ€x‚щƒCƒZƒ“ƒX‚̃o[ƒWƒ‡ƒ“”Ô† +‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚È‚ç‚ÎA‚ ‚È‚½‚Í¡‚܂łɃtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚©‚ç” +s‚³‚ꂽƒo[ƒWƒ‡ƒ“‚Ì’†‚©‚çD‚«‚É‘I‚ñ‚Å\‚í‚È‚¢B + +10. ‚à‚µ‚ ‚È‚½‚ªwƒvƒƒOƒ‰ƒ€x‚̈ꕔ‚ðA‚»‚̔ЕzðŒ‚ª‚±‚ÌŒ_–ñ‘‚Æ +ˆÙ‚Ȃ鑼‚̃tƒŠ[‚ȃvƒƒOƒ‰ƒ€‚Æ“‡‚µ‚½‚¢‚È‚ç‚ÎAìŽÒ‚ɘA—‚µ‚Ä‹–‰Â‚ð‹ +‚ß‚æBƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚ª’˜ìŒ ‚ð•Û—L‚·‚éƒ\ƒtƒgƒEƒFƒA‚ɂ‚¢‚Ä‚ÍA +ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒAà’c‚ɘA—‚¹‚æBŽ„‚½‚¿‚ÍA‚±‚̂悤‚Èꇂ̂½‚ß‚É“Á•Ê +‚È—áŠO‚ðÝ‚¯‚邱‚Æ‚à‚ ‚éBŽ„‚½‚¿‚ªŒˆ’è‚ð‰º‚·‚É‚ ‚½‚Á‚Ä‚ÍAŽ„‚½‚¿‚̃tƒŠ[ +ƒ\ƒtƒgƒEƒFƒA‚Ì”h¶•¨‚·‚ׂĂªƒtƒŠ[‚Èó‘Ô‚É•Û‚½‚ê‚é‚Æ‚¢‚¤‚±‚Æ‚ÆAˆê”Ê“I +‚Ƀ\ƒtƒgƒEƒFƒA‚Ì‹¤—L‚ÆÄ—˜—p‚ð‘£i‚·‚é‚Æ‚¢‚¤“ñ‚‚̖ڕW‚ð‹K€‚ÉŒŸ“¢‚³‚ê +‚é‚Å‚ ‚낤B + –³•Û؂ɂ‚¢‚Ä + +11. wƒvƒƒOƒ‰ƒ€x‚͑㉿–³‚µ‚É—˜—p‚ª‹–‰Â‚³‚ê‚é‚Ì‚ÅA“KØ‚È–@‚ª”F‚ß‚éŒÀ +‚è‚É‚¨‚¢‚ÄAwƒvƒƒOƒ‰ƒ€x‚ÉŠÖ‚·‚é‚¢‚©‚È‚é•ÛØ‚à‘¶Ý‚µ‚È‚¢B‘–Ê‚Å•Ê‚É +q‚ׂéꇂ𜂢‚ÄA’˜ìŒ ŽÒA‚Ü‚½‚Í‚»‚Ì‘¼‚Ì’c‘Ì‚ÍAwƒvƒƒOƒ‰ƒ€x‚ðA +•\–¾‚³‚ꂽ‚©Œ¾ŠO‚É‚©‚Í–â‚킸A¤‹Æ“I“K«‚ð•ÛØ‚·‚é‚Ù‚Ì‚ß‚©‚µ‚â‚ ‚é“Á’è +‚Ì–Ú“I‚Ö‚Ì“K‡«(‚ÉŒÀ‚ç‚ê‚È‚¢)‚ðŠÜ‚ÞˆêØ‚Ì•ÛØ–³‚µ‚Éu‚ ‚邪‚Ü‚Üv‚Å’ñ +‹Ÿ‚·‚éBwƒvƒƒOƒ‰ƒ€x‚ÌŽ¿‚Æ«”\‚ÉŠÖ‚·‚郊ƒXƒN‚Ì‚·‚ׂĂ͂ ‚È‚½‚É‹A‘®‚· +‚éBwƒvƒƒOƒ‰ƒ€x‚ÉŒ‡Š×‚ª‚ ‚é‚Æ”»–¾‚µ‚½ê‡A‚ ‚È‚½‚Í•K—v‚È•ÛŽç“_ŒŸ‚â +•âCAC³‚É—v‚·‚éƒRƒXƒg‚Ì‚·‚ׂĂðˆø‚«Žó‚¯‚邱‚Æ‚É‚È‚éB + +12. “KØ‚È–@‚©‘–Ê‚Å‚Ì“¯ˆÓ‚É‚æ‚Á‚Ä–½‚º‚ç‚ê‚È‚¢ŒÀ‚èA’˜ìŒ ŽÒA‚Ü‚½‚Íã +‹L‚Å‹–‰Â‚³‚ê‚Ä‚¢‚é’Ê‚è‚ÉwƒvƒƒOƒ‰ƒ€x‚ð‰ü•Ï‚Ü‚½‚ÍĔЕz‚µ‚½‚»‚Ì‘¼‚Ì’c +‘Ì‚ÍA‚ ‚È‚½‚ɑ΂µ‚ÄwƒvƒƒOƒ‰ƒ€x‚Ì—˜—p‚È‚¢‚µ—˜—p•s”\‚Ŷ‚¶‚½ˆê”Ê“IA +“Á•Ê“IA‹ô‘R“IA•K‘R“I‚È‘¹ŠQ(ƒf[ƒ^‚ÌÁŽ¸‚â•s³Šm‚Ȉ—A‚ ‚È‚½‚©‘æŽO +ŽÒ‚ª”í‚Á‚½‘¹Ž¸A‚ ‚é‚¢‚ÍwƒvƒƒOƒ‰ƒ€x‚ª‘¼‚̃\ƒtƒgƒEƒFƒA‚ƈê‚É“®ì‚µ +‚È‚¢‚Æ‚¢‚¤•s‹ï‡‚È‚Ç‚ðŠÜ‚Þ‚ª‚»‚ê‚ç‚ÉŒÀ‚ç‚È‚¢)‚ɈêØ‚ÌÓ”C‚𕉂í‚È‚¢B +‚»‚̂悤‚È‘¹ŠQ‚ª¶‚¸‚é‰Â”\«‚ɂ‚¢‚Ĕނ炪’‰‚³‚ê‚Ä‚¢‚½‚Æ‚µ‚Ä‚à“¯—l‚Å +‚ ‚éB + + ðŒ‚Ƨ–ñI‚í‚è + + ˆÈã‚Ìð€‚ð‚ ‚È‚½‚ÌV‚µ‚¢ƒvƒƒOƒ‰ƒ€‚É“K—p‚·‚é•û–@ + +‚ ‚È‚½‚ªV‚µ‚¢ƒvƒƒOƒ‰ƒ€‚ðŠJ”‚µ‚½‚Æ‚µ‚ÄAŒöO‚É‚æ‚Á‚Ä‚»‚ꂪ—˜—p‚³‚ê‚é +‰Â”\«‚ðÅ‘å‚É‚µ‚½‚¢‚È‚çA‚»‚̃vƒƒOƒ‰ƒ€‚ð‚±‚ÌŒ_–ñ‘‚Ìð€‚É]‚Á‚Ä +’N‚Å‚àĔЕz‚ ‚é‚¢‚Í•ÏX‚Å‚«‚é‚悤ƒtƒŠ[ƒ\ƒtƒgƒEƒFƒA‚É‚·‚é‚Ì‚ªÅ‘P‚Å‚·B + +‚»‚Ì‚½‚ß‚É‚ÍAƒvƒƒOƒ‰ƒ€‚Ɉȉº‚̂悤‚È•\Ž¦‚ð“Y•t‚µ‚Ä‚‚¾‚³‚¢B‚»‚Ìê‡A +•ÛØ‚ª”rœ‚³‚ê‚Ä‚¢‚é‚Æ‚¢‚¤‚±‚Æ‚ðÅ‚àŒø‰Ê“I‚É“`‚¦‚邽‚ß‚ÉA‚»‚ꂼ‚ê‚̃\[ +ƒXƒtƒ@ƒCƒ‹‚Ì–`“ª‚É•\Ž¦‚ð“Y•t‚·‚ê‚ÎÅ‚àˆÀ‘S‚Å‚·B‚È‚‚Æ‚àAu’˜ìŒ •\ +Ž¦v‚Æ‚¢‚¤s‚Æ‘S•¶‚ª‚ ‚éꊂւ̃|ƒCƒ“ƒ^‚¾‚¯‚ÍŠeƒtƒ@ƒCƒ‹‚ÉŠÜ‚ß‚Ä’u‚¢‚Ä +‚‚¾‚³‚¢B + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + (–ó: + + <ƒvƒƒOƒ‰ƒ€‚Ì–¼‘O‚ÆA‚»‚ꂪ‰½‚ð‚·‚é‚©‚ɂ‚¢‚Ä‚ÌŠÈ’P‚Èà–¾B> + Copyright (C) <¼—ï”N> <ìŽÒ‚Ì–¼‘O> + + ‚±‚̃vƒƒOƒ‰ƒ€‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Å‚·B‚ ‚È‚½‚Í‚±‚ê‚ðAƒtƒŠ[ƒ\ƒt + ƒgƒEƒFƒAà’c‚É‚æ‚Á‚Ä”s‚³‚ꂽ GNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘(ƒo[ƒWƒ‡ + ƒ“2‚©AŠó–]‚É‚æ‚Á‚Ä‚Í‚»‚êˆÈ~‚̃o[ƒWƒ‡ƒ“‚Ì‚¤‚¿‚Ç‚ê‚©)‚Ì’è‚ß‚éðŒ + ‚̉º‚ÅĔЕz‚Ü‚½‚͉ü•Ï‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B + + ‚±‚̃vƒƒOƒ‰ƒ€‚Í—L—p‚Å‚ ‚邱‚Æ‚ðŠè‚Á‚ĔЕz‚³‚ê‚Ü‚·‚ªA*‘S‚‚Ì–³•Û + Ø* ‚Å‚·B¤‹Æ‰Â”\«‚Ì•ÛØ‚â“Á’è‚Ì–Ú“I‚Ö‚Ì“K‡«‚ÍAŒ¾ŠO‚ÉŽ¦‚³‚ꂽ + ‚à‚Ì‚àŠÜ‚ß‘S‚‘¶Ý‚µ‚Ü‚¹‚ñBÚ‚µ‚‚ÍGNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚ð‚² + ——‚‚¾‚³‚¢B + + ‚ ‚È‚½‚Í‚±‚̃vƒƒOƒ‰ƒ€‚Æ‹¤‚ÉAGNU ˆê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚Ì•¡»•¨‚ð + ˆê•”Žó‚¯Žæ‚Á‚½‚Í‚¸‚Å‚·B‚à‚µŽó‚¯Žæ‚Á‚Ä‚¢‚È‚¯‚ê‚ÎAƒtƒŠ[ƒ\ƒtƒgƒEƒF + ƒAà’c‚Ü‚Å¿‹‚µ‚Ä‚‚¾‚³‚¢(ˆ¶æ‚Í the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)B + + ) + +“dŽq‚È‚¢‚µŽ†‚̃[ƒ‹‚Å‚ ‚È‚½‚É–â‚¢‡‚킹‚é•û–@‚ɂ‚¢‚Ä‚Ìî•ñ‚à‘‚«‰Á‚¦ +‚Ü‚µ‚傤B + +ƒvƒƒOƒ‰ƒ€‚ª‘Θb“I‚È‚à‚Ì‚È‚ç‚ÎA‘Θbƒ‚[ƒh‚Å‹N“®‚µ‚½Û‚Éo—Í‚Æ‚µ‚Ĉȉº +‚̂悤‚È’Z‚¢’m‚ª•\Ž¦‚³‚ê‚é‚悤‚É‚µ‚Ä‚‚¾‚³‚¢: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + + (–ó: + + Gnomovision ƒo[ƒWƒ‡ƒ“ 69, Copyright (C) ”N ìŽÒ‚Ì–¼‘O + Gnomovision ‚Í*‘S‚‚Ì–³•ÛØ*‚Å’ñ‹Ÿ‚³‚ê‚Ü‚·BÚ‚µ‚‚Íushow wv + ‚ƃ^ƒCƒv‚µ‚ĉº‚³‚¢B‚±‚ê‚̓tƒŠ[ƒ\ƒtƒgƒEƒFƒA‚Å‚ ‚èA‚ ‚éðŒ‚̉º‚Å + ĔЕz‚·‚邱‚Æ‚ª§—コ‚ê‚Ä‚¢‚Ü‚·BÚ‚µ‚‚Íushow cv‚ƃ^ƒCƒv‚µ‚ĉº + ‚³‚¢B + + ) + +‚±‚±‚ÅA‰¼‘z“I‚ȃRƒ}ƒ“ƒhushow wv‚Æushow cv‚͈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘ +‚Ì“KØ‚È•”•ª‚ð•\Ž¦‚·‚é‚悤‚É‚È‚Á‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚à‚¿‚ë‚ñA‚ ‚È +‚½‚ªŽg‚¤ƒRƒ}ƒ“ƒh‚ðushow wv‚âushow cv‚ƌĂԕK‘R«‚Í‚ ‚è‚Ü‚¹‚ñ‚Ì‚ÅA +‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ɇ‚킹‚ă}ƒEƒX‚̃NƒŠƒbƒN‚⃃jƒ…[‚̃AƒCƒeƒ€‚É‚µ‚Ä +‚àŒ‹\‚Å‚·B + +‚Ü‚½‚ ‚È‚½‚ÍA•K—v‚È‚ç‚Î(ƒvƒƒOƒ‰ƒ}[‚Æ‚µ‚Ä“‚¢‚Ä‚¢‚½‚ç)‚ ‚È‚½‚̌ٗpŽåA +‚ ‚é‚¢‚Íꇂɂæ‚Á‚Ä‚ÍŠwZ‚©‚çA‚»‚̃vƒƒOƒ‰ƒ€‚ÉŠÖ‚·‚éu’˜ìŒ •úŠüº–¾ +(copyright disclaimer)v‚É–¼‚µ‚Ä‚à‚炤‚ׂ«‚Å‚·BˆÈ‰º‚Í—á‚Å‚·‚Ì‚ÅA–¼ +‘O‚ð•Ï‚¦‚Ä‚‚¾‚³‚¢: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + + (–ó: + + YoyodyneŽÐ‚Í‚±‚±‚ÉAJames Hacker‚É‚æ‚Á‚Ä‘‚©‚ꂽƒvƒƒOƒ‰ƒ€ + uGnomovisionv(ƒRƒ“ƒpƒCƒ‰‚Ö’Ê‚·ƒvƒƒOƒ‰ƒ€)‚ÉŠÖ‚·‚éˆêØ‚Ì’˜ìŒ ‚Ì—˜ + ‰v‚ð•úŠü‚µ‚Ü‚·B + + <Ty CoonŽ‚Ì–¼>A1989”N4ŒŽ1“ú + Ty CoonA•›ŽÐ’· + + ) + +‚±‚̈ê”ÊŒöO—˜—p‹–‘øŒ_–ñ‘‚Å‚ÍA‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ð“Æè“I‚ȃvƒƒOƒ‰ƒ€ +‚É“‡‚·‚邱‚Æ‚ð”F‚ß‚Ä‚¢‚Ü‚¹‚ñB‚ ‚È‚½‚̃vƒƒOƒ‰ƒ€‚ªƒTƒuƒ‹[ƒ`ƒ“ƒ‰ƒCƒu +ƒ‰ƒŠ‚È‚ç‚ÎA“Æè“I‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ‚ ‚È‚½‚̃‰ƒCƒuƒ‰ƒŠ‚ðƒŠƒ“ƒN‚·‚邱 +‚Æ‚ð‹–‰Â‚µ‚½‚Ù‚¤‚ª‚æ‚è•Ö—˜‚Å‚ ‚é‚Æl‚¦‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB‚à‚µ‚±‚ꂪ‚ ‚È +‚½‚Ì–]‚Þ‚±‚Æ‚È‚ç‚ÎA‚±‚ÌŒ_–ñ‘‚Ì‘ã‚í‚è‚ÉGNU ƒ‰ƒCƒuƒ‰ƒŠˆê”ÊŒöO—˜—p‹–‘ø +Œ_–ñ‘‚ð“K—p‚µ‚Ä‚‚¾‚³‚¢B diff --git a/doc/Readme-jap b/doc/Readme-jap index 3e2ac86..6bf23c8 100644 --- a/doc/Readme-jap +++ b/doc/Readme-jap @@ -1,17507 +1,17507 @@ ---------------------
-//1032 by (“Ê)
-E1031‚ʼn½ŒÌ‚©íœ‚³‚ê‚Ä‚¢‚½buildin_getitemname()‚𕜊ˆ
-EƒoƒOƒXƒŒ‚È‚Ç‚Éo‚½C³‚𔽉f
-E‚»‚Ì‘¼×‚©‚¢C³
-
- (map/)
- clif.c
- clif_disp_onlyself() NULLƒ`ƒFƒbƒN’ljÁ
- map.c
- map_nick2sd() nick‚ªNULL‚¾‚Æ‚·‚®NULL‚ð•Ô‚·‚悤‚É•ÏX
- mob.c
- mob_setdelayspawn() NULLƒ`ƒFƒbƒN•ÏX
- mob_delete() C³
- npc.c
- npc_parse_warp() C³
- script.c
- buildin_getitemname() •œŠˆ
-
-----------------------------------------
-//1031 by huge
-ENPC‚Ìscript‚ÉAmakepet‚ð’ljÁB
- makepet —‘ID; ‚ÅAƒyƒbƒg‚ð쬂µ‚Ü‚·B
-ENPC‚Ìscript‚ÉAgetexp‚ð’ljÁB
- getexp Base,Job; ‚ÅA‚»‚ꂼ‚ê‚ÌŒoŒ±’l‚ð‘‚₵‚Ü‚·B
-Eƒyƒbƒg‚Ì—‘‚ðNPC‚Ìdelitem‚ÅÁ‚µ‚½‚èshop‚Å”„‚Á‚½ŽžAƒyƒbƒgƒZ[ƒuƒf[ƒ^‚©‚ç휂·‚é‚悤C³B
-EƒfƒBƒ{[ƒVƒ‡ƒ“¬Œ÷ðŒC³B(–¢Šm”F)
-EŒoŒ±’l•\Ž¦‚ð‰Â”\‚É‚µ‚Ä‚Ý‚Ü‚µ‚½Bconf‚É‚Äݒ肵‚Ä‚‚¾‚³‚¢B
-
- (conf/)
- battle_athena.conf C³
- (doc/)
- conf_ref.txt C³
- script_ref.txt C³
- (map/)
- battle.c
- battle.h
- disp_experience ’ljÁ
- clif.c
- clif.h
- clif_disp_onlyself() ’ljÁ
- pc.c
- pc_gainexp() C³
- script.c
- buildin_delitem() C³
- buildin_makepet() ’ljÁ
- buildin_getexp() ’ljÁ
- npc.c
- #include C³
- npc_selllist() C³
- skill.c
- skill_castend_nodamage_id() C³
-
-
---------------------
-//1030 by (“Ê)
-Emap_athena.conf‚ÉV¥“‡ƒUƒƒC‚ðƒRƒƒ“ƒgƒAƒEƒg‚µ‚ĒljÁ
-EƒNƒ[ƒ“ƒXƒLƒ‹‚ÅŠo‚¦‚½ƒXƒLƒ‹‚ðŽ©“®ƒZ[ƒu‚²‚Æ‚É–Y‚ê‚Ä‚¢‚½‚Ì‚Å‚Æ‚è‚ ‚¦‚¸ƒƒOƒIƒtŽž‚É‚Ì‚Ý–Y‚ê‚é‚悤‚É•ÏX‚µ‚½‚‚à‚è
-Emobskill_castend_pos‚Ì–³ŠQnullpoƒ`ƒFƒbƒN‚ð•ÏX
-EEmotion‚Ìݒ肪‚È‚¢Mob‚ªƒXƒLƒ‹‚ðŽg—p‚·‚é‚Æ‚«‚É/!‚ðo‚µ‚Ä‚¢‚½‚Ì‚ðC³
-EƒoƒOƒXƒŒ‚É“Š‚°‚½trade.c‚ð“Y•tB‚Æ‚è‚ ‚¦‚¸‘ŠŽè‚ªŠŽ‚Å‚«‚éŽí—Þ‚ÌŒÀŠE‚ð’´‚¦‚½ê‡‚Í“n‚³‚¸‚ÉŒ³‚É–ß‚·‚悤‚É•ÏX
-
- (conf/)
- map_athena.conf ƒUƒƒC’ljÁ
- (doc/)
- client_packet.txt ƒpƒPƒbƒg’·‚ÌXV
- (map/)
- map.c
- map_quit() I—¹Žž‚ɃNƒ[ƒ“ƒXƒLƒ‹‚ÅŠo‚¦‚½ƒXƒLƒ‹‚ð–Y‚ê‚é‚悤‚É•ÏX
- mob.c
- mobskill_castend_pos() nullpoƒ`ƒFƒbƒN•ÏX
- mob_readskilldb() C³
- pc.c
- pc_makesavestatus() ƒNƒ[ƒ“ƒXƒLƒ‹‚ð–Y‚ê‚é‚Ì‚ðmap_quit‚É”C‚¹‚½
- trade.c
- trade_tradecommit() ŠŽ‚Å‚«‚éŽí—ÞˆÈã‚ðŽæˆø‚µ‚½ê‡‚ɃAƒCƒeƒ€‚ªÁ‚¦‚È‚¢‚悤‚É
-
---------------------
-//1029 by (“Ê)
-E20040619RagexeHC_jp.rgz‚Ì0x204‚Æ0x20bƒpƒPƒbƒg‚ɑΉž
-Echar‚Ælogin‚à’m‚ç‚È‚¢ƒpƒPƒbƒg‚ª—ˆ‚½‚çƒpƒPƒbƒgƒ_ƒ“ƒv‚ðo—Í‚·‚é‚悤‚Éclif.c‚©‚çƒRƒsƒy
-
- (doc/)
- client_packet.txt VƒpƒPƒbƒg’ljÁ
- (char/)
- char.c
- parse_char() 0x20b‘Ήž
- (login/)
- login.c
- parse_login() 0x204‘Ήž
-
---------------------
-//1028 by (“Ê)
-EƒEƒ“ƒoƒ‰ˆÈ~AMob‚ªƒXƒLƒ‹‚ðŽg—p‚·‚é‚Æ‚«‚ɃGƒ‚[ƒVƒ‡ƒ“‚ðo‚·‚悤‚É‚È‚Á‚½‚Ì‚ÅAmob_skill_db‚ðŠg’£
- ƒTƒ“ƒvƒ‹‚ŃI[ƒNƒEƒH[ƒŠƒA[‚ª‹i‰Œ‚·‚é‚Æu/cv‚ðo‚·‚̂ƃI[ƒNƒŒƒfƒB‚ª‘¬“x‚ðŽg‚¤‚Æu/‚¿‚ãv‚ðo‚µ‚Ü‚·
-EƒAƒCƒeƒ€682,683‚ðŽg—p‚·‚é‚Æ30•bŠÔATK‚âMATK‚ª‘‚¦‚é‚炵‚¢‚Ì‚Å‚»‚ê‚Á‚Û‚
-Ejob_db2.txt‚É“ä‚Ìs‚ª2s‚ ‚Á‚½‚Ì‚ðíœ
-E”͈͖‚–@‚ȂǂŃXƒLƒ‹ƒ†ƒjƒbƒg‘ŠŽè‚ɃXƒe[ƒ^ƒX•ÏX‚ð‚©‚¯‚悤‚Æ‚µ‚½ê‡‚Énullpo‚ªo‚½‚Ì‚ðC³
-
- (db/)
- const.txt SC_INCATK SC_INCMATK’ljÁ
- item_db.txt ª‚ð682,683‚ɒljÁ
- job_db2.txt “ä‚Ì2s‚ðíœ
- mob_skill_db.txt Emotion’ljÁ
- (map/)
- mob.c
- mobskill_use() ƒXƒLƒ‹Žg—pŽž‚ɃGƒ‚[ƒVƒ‡ƒ“‚ðo‚·‚悤‚É•ÏX
- mob_readskilldb() Emotion‚ð“Ç‚Ýž‚ނ悤‚É•ÏX
- mob.h •ÏX
- pc.c
- pc_calcstatus() •ÏX
- skill.c
-
- skill_status_change_end() •ÏX
- skill_status_change_start() •ÏX‚ÆNULLƒ`ƒFƒbƒNC³
- skill.h •ÏX
-
---------------------
-//1027 by Ni+S
-EgetitemnameŠÖ”’ljÁ
-EƒXƒNƒŠƒvƒg‚ÉgetitemnameŠÖ”‚ð’ljÁ
-Eitemid‚æ‚èAjname‚𕶎š—ñ‚Å•Ô‚µ‚Ü‚·
-EÚ‚µ‚‚Íscript_ref.txt‚ÅB
-
- script.c
- getitemname()’ljÁ
-
-----------------------------------------
-//1026 by (“Ê)
-E1023‚Å“ü‚ê‚Ä‚È‚©‚Á‚½clif.h‚𓯫
-EƒoƒCƒIƒvƒ‰ƒ“ƒg‚ƃXƒtƒBƒA[ƒ}ƒCƒ“‚Åo‚µ‚½mob‚ð“|‚·‚Æmob_timer_delete()‚Ånullpo‚ªo‚é–â‘è‚ð‰ðŒˆ‚µ‚½‚‚à‚è
-EƒoƒO•ñƒXƒŒƒbƒh part6 >>63 Dest‚³‚ñ‚Ìscript.cC³‚ðŽæ‚èž‚Ý
-
- (map/)
- clif.h •ÏX
- map.h •ÏX
- mob.c
- mob_changestate() •ÏX
- skill.c
- skill_castend_pos2() •ÏX
- mob_spawn() •ÏX
- do_init_mob() add_timer_func_list‚Émob_timer_delete‚ª–³‚©‚Á‚½‚̂ŒljÁ‚µ‚Ä‚Ý‚½
- script.c
- script_load_mapreg() •ÏX
-
-------------------------
-//1025 by Sel
-Eƒ[ƒhƒiƒCƒg‚̃Wƒ‡ƒu•â³‚ªŠÔˆá‚Á‚Ä‚¢‚½‚Ì‚ðC³
-EƒI[ƒ‰ƒuƒŒ[ƒhŒø‰ÊŽžŠÔ‚ðC³
-EƒI[ƒ‰ƒuƒŒ[ƒh•Ší§ŒÀ‚ð‘fŽèˆÈŠO‘S‚Ä‚ÉC³
-EƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“•Ší§ŒÀ‚𗼎葄‚Ì‚Ý‚©‚ç•ÐŽè‘„+—¼Žè‘„‚ÖC³
-EƒgƒDƒ‹[ƒTƒCƒgŒø‰ÊŽžŠÔ‚ðC³
-Eƒtƒ@ƒ‹ƒRƒ“ƒAƒTƒ‹ƒg•Ší§ŒÀ‚ð‰ðœA‘fŽè‚ðŠÜ‚ß‚½‘S‚Ä‚ÅŽg—p‰Â”\‚É
-
- (db/)
- job_db2-2.txt •ÏX
- skill_cast_db.txt •ÏX
- skill_require_db.txt •ÏX
---------------------
-//1024 by mare
-Eƒtƒ@[ƒ}ƒV[Þ—¿‚Ì•ÏXA»‘¢‰Â”\–ò•i‚̒ljÁ
- 6/8“ú–{ŽI‚É‚«‚½‚à‚Ì‚Æ“¯‚¶‚É‚µ‚Ü‚µ‚½
-
- (db/)
- produce_db.txt •ÏX
-
-----------------------------------------
-//1023 by (“Ê)
-E1022‚ŃGƒ“ƒoƒO‚µ‚½npc_parse_script()‚ð–ß‚µ
-EƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX‚Ìd—ʒljÁƒ_ƒ[ƒWŒvŽZŽ®‚ð‚¿‚å‚Á‚Æ•ÏX
-E–‚–@—Í‘•‚ÌŒvŽZŽ®‚ð‚¿‚å‚Á‚Æ•ÏX
-Eƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX‚ªÀ‚Á‚ÄŽg‚¤‚Ì‚Å‚Í‚È‚Žg‚¤‚ÆÀ‚é‚Æ‚¢‚¤î•ñ‚ðŒ©‚©‚¯‚½‚Ì‚Å•ÏX
-Eª‚É”º‚¢skill_require‚ÌsittingðŒ”pŽ~
-Eƒo[ƒT[ƒN‚ðGvG‚ÅŽg—p‚Å‚«‚È‚¢‚悤‚É•ÏX
-
- (db/)
- skill_cast_db.txt •ÏX
- skill_require_db.txt •ÏX
- (doc/)
- db_ref.txt C³
- (map/)
- battle.c
- battle_calc_pc_weapon_attack() •ÏX
- clif.c
- clif_sitting() ’ljÁ
- clif_parse_ActionRequest() •ÏX
- npc.c
- npc_parse_script() C³
- pc.h •ÏX
- pc.c
- pc_calcstatus() •ÏX
- pc_natural_heal_hp() •ÏX
- pc_setstand() ’ljÁ
- skill.c
- skill_castend_nodamage_id() ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX‚ðŽg‚¤‚ÆÀ‚é‚悤‚É
- skill_check_condition() ST_SITTING”pŽ~
- skill_use_id() ƒo[ƒT[ƒN‚ðGvG‚ÅŽg—p‚Å‚«‚È‚¢‚悤‚É
- skill_status_change_timer() ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX‚Í10•b‚²‚Æ‚ÉSP‚ð12Á”ï
- skill_status_change_start() ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX•ÏX
- skill_readdb() sitting”pŽ~
- skill.h •ÏX
-
---------------------
-//1022 by (“Ê)
-ENULLƒ`ƒFƒbƒN•ÏX
-Elogin,char,mapI—¹Žž‚ÉŠJ•ú‚³‚ê‚Ä‚¢‚È‚©‚Á‚½ƒƒ‚ƒŠ‚ð”÷–‚ÉŠJ•ú‚·‚é“w—Í‚ð‚µ‚Ä‚Ý‚½
-EƒXƒpƒmƒr”š—ô”g“®ŽÀ‘•AƒNƒŠƒeƒBƒJƒ‹+50
-EƒXƒpƒmƒrƒ{[ƒiƒX‚ð•ÏXAʼn‚©‚çˆê“x‚àŽ€‚ñ‚Å‚È‚¢JobLv70‚ÉAll+15ABaseLv99‚ÉMHP+2000
-
- (doc/)
- client_packet.txt S 01ed’ljÁ
- (char/)
- do_final() •ÏX
- do_init() •ÏX
- (login/)
- do_final() ’ljÁ
- do_init() •ÏX
- (map/)
- atcommand.c Dest‚³‚ñ‚Ì•ÏX‚ðŽæ‚èž‚Ý
- battle.c “¯ã
- chat.c NULLƒ`ƒFƒbƒN•ÏX
- chrif.c NULLƒ`ƒFƒbƒN•ÏX
- clif.c NULLƒ`ƒFƒbƒN•ÏX
- clif_parse() •ÏX
- clif_parse_sn_explosionspirits() ’ljÁ
- clif_parse_sn_doridori() –¼‘O•ÏX
- guild.c NULLƒ`ƒFƒbƒN•ÏX
- intif.c NULLƒ`ƒFƒbƒN•ÏX
- itemdb.c NULLƒ`ƒFƒbƒN•ÏX
- map.c NULLƒ`ƒFƒbƒN•ÏX
- do_final() •ÏX
- mob.c NULLƒ`ƒFƒbƒN•ÏX
- npc.c NULLƒ`ƒFƒbƒN•ÏX
- npc_parse_script() bufŠJ•ú–Y‚êH‚ðŠJ•ú
- party.c NULLƒ`ƒFƒbƒN•ÏX
- path.c NULLƒ`ƒFƒbƒN•ÏX
- pc.c NULLƒ`ƒFƒbƒN•ÏX
- pc_calcstatus() ƒXƒpƒmƒr•ÏX
- pet.c NULLƒ`ƒFƒbƒN•ÏX
- storage.c NULLƒ`ƒFƒbƒN•ÏX
- trade.c NULLƒ`ƒFƒbƒN•ÏX
- vending.c NULLƒ`ƒFƒbƒN•ÏX
-
---------------------
-//1021 by Kalen
-Eƒvƒƒ“ƒeƒ‰Š¥¥•iNPC‚ɂă^ƒLƒV[ƒh”Ì”„
-EUmbala‚̃[ƒvŒ©’¼‚µ
- D2F‚̃[ƒv‚ð–{ŽIŽg—p‚É•ÏXBd•¡ƒ|ƒCƒ“ƒgC³
-EUmbalaNPCC³
- ƒ‰ƒxƒ‹‚ðŽg—p‚µ‚È‚‚¢‚¢êŠ‚Í‹É—Ííœ(-)
- ƒZ[ƒuƒ|ƒCƒ“ƒgC³
- ƒoƒ“ƒW[ƒWƒƒƒ“ƒv‘ä’ljÁ
- Š[œ–å’ljÁ
- •ª‰ðA‡¬ˆ—’ljÁ
- ƒJƒvƒ‰AˆÄ“à—vˆõ‚ð‚ ‚é‚ׂ«êŠ‚ÖˆÚ“®B
- ¦ˆê•”Emo‚ɂ‚¢‚ÄAŠà•ðŽ©g‚ª‹t‚ÉŽæ‚èˆá‚¦‚Ä‚¢‚é‚Ý‚½‚¢‚È‚Ì‚Å“ÆŽ©‚Å•Ï‚¦‚Ü‚µ‚½B
- Œ©‚Ä‚à‚炦‚Εª‚©‚è‚Ü‚·‚ª18‚Æ28‚ð‹t‚É‚·‚é‚ÆNPC‚̉ï˜b“à—e‚ɇ‚¤Emo‚ªo‚½‚Ì‚Å
- ƒNƒGƒXƒgƒtƒ‰ƒO‚ÌðŒ’ljÁ
- @‚±‚ê‚É‚æ‚è‚·‚Å‚ÉI‚¦‚Ä‚¢‚éꇂłà“r’†‚É‚È‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
-EƒXƒpƒmƒr“]ENPC’ljÁ
- “Ê‚³‚ñ‚̃ƒO‚ðŠî‚É쬂µ‚Ü‚µ‚½B
-EƒAƒ‹ƒPƒ~ƒXƒgƒMƒ‹ƒh‚̃mƒr‚Ìꇂ̑ΉžC³(“Ê‚³‚ñ‚©‚ç‚̃ƒO‚æ‚è)
-EŒ‹¥NPC’ljÁ
- ‚½‚¾‚µA‚Ü‚¾ƒeƒXƒg’iŠK‚Å‚·B–â‘è“_‚ª‚ ‚邽‚ߌ‹¥•s‰Â”\‚Å‚·B
- (/script)
- (/warp)
- npc_warp_umbala.txt
- (/npc)
- (/town)
- npc_town_umbala.txt
- npc_town_kafra.txt
- npc_town_guide.txt
- npc_town_prontera.txt
- (/quest)
- npc_event_marriage.txt(VEƒeƒXƒg)
- (/job)
- npc_job_alchemist.txt
- npc_job_supernovice.txt(V)
-
---------------------
-//1020 by (“Ê)
-Enullpo‚Ì•ÏX‚ɑΉž‚µ‚Ämap_athena.conf‚ÌÝ’è휕skill.c‘‚«Š·‚¦
-EÀ‚Á‚Ä‚¢‚é‚ÆHPR‚ÆSPR‚ª’Êí‚Ì”¼•ª‚Å”“®‚µ‚½‚Ì‚ðC³
-EƒXƒpƒmƒr‚ªˆê’èðŒ(ƒNƒ‰ƒCƒAƒ“ƒgˆË‘¶)‚Å/doridori‚·‚é‚ÆSPR‰ñ•œ—Ê‚ª”{‚É‚È‚é‚悤‚É•ÏX
-EŒ‹¥Ž®—p‚̃GƒtƒFƒNƒg‚ðƒXƒNƒŠƒvƒg‚©‚çwedding–½—ß‚Å”¶‚³‚¹‚邱‚Æ‚ªo—ˆ‚é‚悤‚µ‚½
-E‡‘t‚ðŠJŽn‚µ‚½PC‚͇‘t’†‚ÉI—¹‚Å‚«‚È‚¢‚悤‚É‚µ‚½‚‚à‚è(–¢Šm”F)
-
- (conf/)
- map_athena.conf nullpo_checkíœ
- (doc/)
- client_packet.txt XV
- conf_ref.txt nullpo_checkíœ
- (map/)
- map.c
- map_config_read() nullpo_checkíœ
- map.h “¯ã
- skill.c NULLƒ`ƒFƒbƒNÄ“x‘“ü‚ê‘Ö‚¦
- clif.c
- clif_wedding_effect() ’ljÁ
- clif_parse_QuitGame() ‡‘tŠJŽnŽÒ‚͇‘t’†‚ÉI—¹‚Å‚«‚È‚¢‚悤‚É•ÏX
- clif_parse_doridori() ’ljÁ
- clif_parse() doridori’ljÁ
- clif.h •ÏX
- pc.c
- pc_authok() doridori‰Šú‰»’ljÁ
- pc_natural_heal_hp() À‚Á‚Ä‚¢‚é‚Æ‚«‚ÌHPRŽžŠÔC³
- pc_natural_heal_sp() À‚Á‚Ä‚¢‚é‚Æ‚«‚ÌHPRŽžŠÔC³Adoridori’ljÁ
- script.c
- buildin_wedding_effect() ’ljÁ
-
-
---------------------
-//1019 by Dest
-Enullpoƒ‚ƒWƒ…[ƒ‹‚ɃR[ƒfƒBƒ“ƒOƒ~ƒX”Œ©/C³
-E“¯Avoid‚ÈŠÖ”‚©‚çŒÄ‚΂ꂽŽž‚Ìnullpo_retv_f()‚ð’ljÁ
-E“¯AðŒƒRƒ“ƒpƒCƒ‹‚ɑΉž
-
- (common/)
- nullpo.c
- nullpo_info_core() ƒR[ƒfƒBƒ“ƒOƒ~ƒXC³
- nullpo.h
- NULLPO_CHECKƒtƒ‰ƒO‚É‚æ‚éðŒƒRƒ“ƒpƒCƒ‹’ljÁ
- nullpo_retv_f() ’ljÁ
-
---------------------
-//1018 by chloe
-EƒEƒ“ƒoƒ‰ƒ‚ƒ“ƒXƒ^[‚ð’ljÁ
-
- (script/mob/)
- npc_monster.txt •ÏX
- ŠeƒEƒ“ƒoƒ‰ƒ}ƒbƒv‚ÉMob”z’u
- (db/)
- mob_db.txt •ÏX
- 1495,STONE_SHOOTER,ƒtƒŒƒCƒ€ƒVƒ…[ƒ^[ C³
- 1511,AMON_RA,ƒAƒ‚ƒ“ƒ‰[ C³
-
---------------------
-//1017 by (“Ê)
-EƒoƒO•ñƒXƒŒƒbƒh part6 >>46 Dest‚³‚ñ‚Ìnullpoƒ‚ƒWƒ…[ƒ‹‚ð’ljÁ•void‚ÈŠÖ”‚©‚çŒÄ‚΂ꂽŽž‚Ìnullpo_retv()‚ð’ljÁ(‚Æ‚è‚ ‚¦‚¸skill.c‚ÌNULLƒ`ƒFƒbƒN‚¾‚¯“ü‚ê‘Ö‚¦)
-E“¯>>39 Sel‚³‚ñ‚©‚ç•ñ‚ª‚ ‚Á‚½ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“‚ðC³
-EŽd—l‚ɂ‚¢‚ÄŒê‚臂¤ƒXƒŒƒbƒh >>33 Kalen‚³‚ñ‚Ìî•ñ‚ðclient_packet.txt‚É”½‰f
-E–{ŽI‘ŠˆáƒXƒŒƒbƒh part3 >>24 M —zqcM6jBw‚³‚ñ‚Ìî•ñ‚ðª
-E“¯>>30 ‚Í‚¿‚³‚ñ‚ÌC³‚𔽉f
-
- (conf/)
- map_athena.conf nullpo_check’ljÁ
- (db/)
- item_db.txt Œ‹¥Žw—Ö‚ð•Ší-ƒAƒNƒZƒTƒŠ‚É•ÏX•ÅV”Å
- (doc/)
- client_packet.txt XV
- conf_ref.txt nullpo_check’ljÁ
- (common/)
- Makefile •ÏX
- nullpo.c ’ljÁ
- nullpo.h ’ljÁ
- (map/)
- Makefile •ÏX
- map.c
- map_config_read() nullpo_check’ljÁ
- map.h “¯ã
- skill.c NULLƒ`ƒFƒbƒN‘“ü‚ê‘Ö‚¦
- skill_status_change_start() ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“C³
- skill_castend_nodamage_id() ƒeƒŒƒ|[ƒgC³
- clif.c
- clif_skill_setunit() ƒRƒƒ“ƒgC³
- pc.c
- pc_calcstatus() ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“C³
-
---------------------
-//1016 by ‚ÈB
-EAthenaŽG’kƒXƒŒƒbƒhPart4 42 ‚©‚éŽì‚̃Eƒ“ƒoƒ‰NPC‚ð’ljÁ
-
- (script/npc/town/)
- npc_town_umbala.txt’ljÁ
- ƒCƒxƒ“ƒgƒfƒoƒbƒO—l(230`256s–Ú)‚̓Rƒƒ“ƒgƒAƒEƒg
- (conf/)
- map_athena.conf town ‚É npc: script/npc/town/npc_town_umbala.txt ’ljÁ
-
---------------------
-//1015 by (“Ê)
-EƒŠƒ€[ƒuƒgƒ‰ƒbƒv‚ð–{ŽIŽd—l‚ÆAthenaŽd—l‚Å‘I‚ׂé‚悤‚É‚µ‚½
-EƒXƒpƒmƒr‚ÉAll+10‚·‚éðŒ‚ª—Ç‚•ª‚©‚ç‚È‚©‚Á‚½‚¯‚Çʼn‚©‚ç+10‚¶‚á‚È‚¢‚Ì‚ÍŠm‚©‚È‚Ì‚Å‚Æ‚è‚ ‚¦‚¸Base99‚ňê“x‚àŽ€‚ñ‚Å‚È‚¯‚ê‚΂Ƃ¢‚¤ðŒ‚É•ÏX
-Eƒ_ƒ“ƒX’†‚É‚«”ò‚΂³‚ê‚Ä‚àƒGƒtƒFƒNƒg‚͈ړ®‚µ‚È‚¢‚»‚¤‚È‚Ì‚Å•ÏX
-E@go 13”÷’²®
-
-
- (conf/)
- battle_athena.conf skill_removetrap_type’ljÁ
- (doc/)
- client_packet.txt –{ŽI‘ŠˆáƒXƒŒƒbƒh part3 23 M —zqcM6jBw‚³‚ñ‚Ìî•ñ‚ð’ljÁ
- conf_ref.txt skill_removetrap_type’ljÁ
- (map/)
- atcommand.c
- atcommand_go() ƒEƒ“ƒoƒ‰‚ÌoŒ»ˆÊ’u”÷’²®
- battle.c
- battle_config_read() skill_removetrap_type’ljÁ
- battle.h “¯ã
- pc.c
- pc_calcstatus() ƒXƒpƒmƒrAll+10ðŒ•ÏX
- skill.c
- skill_blown() ƒ_ƒ“ƒX’†‚Ì‚«”ò‚΂µ‚ðŒ³‚É–ß‚µ‚½
- skill_castend_nodamage_id() ƒŠƒ€[ƒuƒgƒ‰ƒbƒvŽd—l•ÏX
-
- --------------------
-//1014 by (Pepermint)
-I fixed again the problem if you put minus sign(-) in front of digits,
-the error comes up when you puchase a item.
-When you put a minus sign(-), the error sign will be changed shrotage of
-amount as original server dose.
-
-I tested with it in ver. 1013, it was working
-
---------------------
-//1012 by (“Ê)
-Ehelp.txt‚É‚ ‚é@go‚Ìà–¾‚©‚ç13‚Æ14‚ðíœ
-@‹@”\‚ÍÁ‚¦‚Ä‚È‚¢‚Ì‚ÅŽg‚¦‚邱‚Æ‚ÍŽg‚¦‚Ü‚·‚ªAhelp‚ÉÚ‚¹‚é‚Ì‚ÍjRO‚É—ˆ‚Ä‚©‚ç‚Æ‚¢‚¤‚±‚Æ‚Å
-Ecast_db.txt‚ðskill_cast_db.txt‚ɉü–¼
-E‚‚¢‚Å‚Émake clean‚ÅGNUmakefile‚àÁ‚µ‚Ă݂邱‚Æ‚É‚·‚é
-Eu-0‚³‚ñ‚ÌŒŸØ‚Ȃǂ𑇂µ‚ă_ƒ“ƒXƒ†ƒjƒbƒgŠÖ˜A‚ð•ÏX
-@‰‰‘tEƒ_ƒ“ƒX’†‚̃nƒG‚̓†ƒjƒbƒg•t‚«‚Å”ò‚Ô‚»‚¤‚Å‚·
-@‰‰‘tEƒ_ƒ“ƒX’†‚Ƀ[ƒvƒ|ƒCƒ“ƒg‚Éæ‚Á‚½‚çó‘Ô‚ª‰ðœ‚³‚ê‚é‚悤‚Å‚·
-@‡‘t’†‚ɕЕû‚ªƒnƒG”ò‚Ñ‚µ‚½‚çƒGƒtƒFƒNƒg‚ÍŒ³‚ÌꊂɎc‚èA”ò‚ñ‚¾æ‚ł͇‘tó‘Ô‚ªŒp‘±‚µ‚Ä“®‚¯‚È‚¢•ŽžŠÔ‚²‚Æ‚ÉSPÁ”ï‚·‚é‚悤‚Å‚·
-EPC_DIE_COUNTER‚ªƒXƒNƒŠƒvƒg‚©‚ç•ÏX‚³‚ꂽŽž‚É‚·‚®‚É”½‰f‚³‚ê‚é‚悤‚É•ÏX
-
- (conf/)
- help.txt @goà–¾•ÏX
- (db/)
- skill_cast_db.txt ‰ü–¼
- (map/)
- pc.c
- pc_setpos() ƒ_ƒ“ƒX’†’f‚̃^ƒCƒ~ƒ“ƒO•ÏX
- pc_setglobalreg() PC_DIE_COUNTER“Á•Êˆ—’ljÁ
- skill.c
- skill_castend_id() NULLƒ`ƒFƒbƒN•ÏX
- skill_stop_dancing() ƒ}ƒbƒvˆÚ“®‚È‚Ç‚Å‚Ì‹““®‚ð•ÏX
- skill_readdb() skill_cast_db‚ɉü–¼
- skill_blown() ”ò‚΂³‚ꂽ‚çƒ_ƒ“ƒXˆÚ“®
- npc.c
- npc_touch_areanpc() ƒ[ƒvƒ|ƒCƒ“ƒg‚Éæ‚Á‚½‚çƒ_ƒ“ƒX‰ðœ
-
---------------------
-//1011 by ƒpƒCƒ“
-Eƒp[ƒeƒB—v¿‚âƒMƒ‹ƒh—v¿‚ðo‚µ‚Ä‚¢‚é‚Æ‚«‚É‘¼‚Ì—v¿‚ð‹‘”Û‚éˆ—‚ð’ljÁ
-@battle_athena.conf‚ÅØ‚è‘Ö‚¦‚ªo—ˆ‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B
-Emake clean ‚ÅŽ–‚ª‘«‚è‚é‚Ì‚ÅAobjectdel.bat‚ðÁ‹Ž
-
- (map)
- clif.c
- clif_party_invite()•ÏX(nullpo‚Ì•¶Œ¾ˆá‚Á‚Ä‚Ü‚µ‚½)
- guild.c
- guild_invite()•ÏX
- party.c
- party_invite()•ÏX
- battle.c
- battle_config_read()•ÏX
- battle.h•ÏX
- trade.c
- trade_traderequest()•ÏX
-
---------------------
-//1010 by (“Ê)
-Egcc 2.95‘Îô
-EƒXƒpƒmƒr‚Ì1“xŽ€‚Ê‚Ü‚ÅAll+10‚ðƒXƒNƒŠƒvƒg•Ï”‚ÅŽÀ‘•‚µ‚Ă݂鎎‚Ý
- PC_DIE_COUNTER Ž€‚Ê‚Æ+1A“]E‚·‚é‚Æ0‚É‚È‚è‚Ü‚·
- ª‚̓Lƒƒƒ‰ƒNƒ^‰i‘±‚ȃXƒNƒŠƒvƒg•Ï”‚È‚Ì‚ÅNPC‚ÅŽQÆ•ÄÝ’è‚Æ‚©”äŠr“IŠy‚©‚à
-
- (map/)
- chrif.c
- chrif_divorce() gcc2.95‘Îô
- skill.c
- skill_attack() gcc2.95‘Îô
- skill_unit_move_unit_group() gcc2.95‘Îô
- map.h map_session_data‚Édie_counter‚ð’ljÁ
- npc.c
- npc_click() nullpoƒƒbƒZ[ƒW‚ðC³
- pc.c
- pc_setrestartvalue() nullpoƒƒbƒZ[ƒW‚ðC³
- pc_authok() die_counter‰Šú‰»‚̒ljÁ
- pc_calcstatus() die_counter=0‚̃Xƒpƒmƒr‚ÍAll+10
- pc_damage() PC_DIE_COUNTERÝ’è
- pc_jobchange() PC_DIE_COUNTERÝ’è
- pc_readparam() gcc2.95‘Îô
- pc_divorce() gcc2.95‘Îô
- pc_get_partner() gcc2.95‘Îô
-
---------------------
-//1009 by ‚Ò‚´‚Ü‚ñ
-Eƒ_ƒ“ƒXˆÚ“®Œy—ʉ»ŽÀ‘•
-@battle_athena.conf‚ÅØ‚è‘Ö‚¦‰Â”\‚Å‚·BÚ‚µ‚‚Íconf_ref‚ð
-@ƒIƒŠƒWƒiƒ‹ƒAƒbƒvƒf[ƒg‚̈×AƒfƒtƒHƒ‹ƒg‚Å‚Íoff‚É‚µ‚Ä‚¢‚Ü‚·
-@‚Ü‚½A‚±‚ÌŒy—ʉ»ƒ‚[ƒh‚͉ñü•‰‰×‚ð‘å•‚É팸‚Å‚«‚é(‚‚à‚è)‚Å‚·‚ªA
-@‚»‚Ì•ªƒT[ƒo[‘¤‚̈—‚ªd‚½‚‚È‚è‚Ü‚·(‚Æ‚¢‚Á‚Ä‚à‚ ‚é’ö“x‚ÌCPU‚ª‚ ‚ê‚ΑS‘R–â‘è‚É‚È‚ç‚È‚¢’ö“x‚Ì•‰‰×‚Å‚·‚ª)
-EŒ‹¥ƒVƒXƒeƒ€^Œ‹¥ƒXƒLƒ‹ŽÀ‘•
-@Œ‹¥Žw—Ö‚Ì“Á•Êˆµ‚¢‚ª–¢ŽÀ‘•‚Å‚·(—Ž‚Æ‚¹‚½‚èŽæˆø‚Éo‚¹‚½‚肵‚Ü‚·)
-@—£¥‚Ì‚Ý–¢ƒeƒXƒg‚Å‚·B
-EŒ‹¥—pƒXƒNƒŠƒvƒg(marriageAdivorce)’ljÁB
-@Emarriage <partner_name>
-@@<partner_name>: Œ‹¥‘ŠŽè‚Ì–¼‘O
-@@–ß‚è’l: ¬Œ÷:1@Ž¸”s:0
-@@Œ‹¥ˆ—‚ðs‚¢‚Ü‚·B‘Îۂ͘b‚µŠ|‚¯‚½ƒvƒŒƒCƒ„[‚Æ<partner_name>‚̃Lƒƒƒ‰ƒNƒ^[‚ÅA‚Ç‚¿‚ç‚©‚ªŠù¥‚Ìꇂ͎¸”s‚µ‚Ü‚·B
-@@1‰ñ‚ÌmarriageƒXƒNƒŠƒvƒg‚ÅV˜Y¨V•w‚ÆV•w¨V˜Y‚ÌŒ‹¥ˆ—‚𓯎ž‚És‚¢‚Ü‚·B
-@@‚Ü‚½A‚±‚̃XƒNƒŠƒvƒg‚ÅŒ‹¥Žw—Ö‚Í—^‚¦‚ç‚ê‚Ü‚¹‚ñB
-@Edevorce
-@@ˆø”–³‚µ
-@@–ß‚è’l: ¬Œ÷:1@Ž¸”s:0
-@@—£¥ˆ—‚ðs‚¢‚Ü‚·B‘Îۂ͘b‚µŠ|‚¯‚½ƒvƒŒƒCƒ„[‚ÅA–¢¥‚Ìꇂ͎¸”s‚µ‚Ü‚·B
-@@marriageƒXƒNƒŠƒvƒg‚Æ“¯—l‚Ɍ݂¢‚Ì—£¥ˆ—‚𓯎ž‚És‚¢‚Ü‚·B
-@@‚Ü‚½A‚±‚̃XƒNƒŠƒvƒg‚ª¬Œ÷‚·‚é‚ÆŽ©“®“I‚É‘ÎÛƒLƒƒƒ‰ƒNƒ^[‚ÌŒ‹¥Žw—Ö‚Í”’D‚³‚ê‚Ü‚·B
-
-@‚Ç‚¿‚ç‚̃XƒNƒŠƒvƒg‚̈—‚àA2l‹¤ƒƒOƒCƒ“‚µ‚Ä‚¢‚È‚¢‚ƬŒ÷‚µ‚Ü‚¹‚ñB
-
- (map/)
- pc.c
- pc_ismarried()Apc_marriage()Apc_divorce()Apc_authok()•ÏX
- pc_get_partner() ’ljÁ
- map.c
- map_quit() •ÏX
- skill.c
- skill_use_id()Askill_castend_nodamage_id() •ÏX
- skill_unitsetting()Askill_unit_onlimit() •ÏX
- script.c
- buildin_marriage()Abuildin_devorce() ’ljÁ
- pc.h •ÏX
- battle.h •ÏX
-
---------------------
-//1008 by ‚Ò‚´‚Ü‚ñ
-EGMƒZƒbƒVƒ‡ƒ“‰B‚µŽÀ‘•(–¢ƒeƒXƒg)
-@GMƒAƒJƒEƒ“ƒg‚̃Lƒƒƒ‰ƒNƒ^[‚ð@who“™‚Å•\Ž¦‚·‚é‚©‚Ç‚¤‚©Ý’è‚Å‚«‚Ü‚·B
-@Ú‚µ‚‚Íconf_ref.txt‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢B
-EŒ‹¥ƒVƒXƒeƒ€‰¼ŽÀ‘•
-@char-mapŠÔ’ÊM‚Ì‚ÝŽÀ‘•‚Å‚·B‚Ü‚¾Œ‹¥‚·‚邱‚Æ‚Ío—ˆ‚Ü‚¹‚ñB
-@®A‚±‚̃pƒbƒ`‚©‚çathena.txt‚̃o[ƒWƒ‡ƒ“‚ª•Ï‚í‚è‚Ü‚·B
-@ƒf[ƒ^‚̌݊·«‚Í•Û‚Á‚½‚‚à‚è‚Å‚·‚ªA”O‚̈׃oƒbƒNƒAƒbƒv‚ðŽæ‚Á‚Ä‚¨‚Ž–‚ð‹‚„§‚µ‚Ü‚·B
-
- (map/)
- clif.c
- clif_countusers() •ÏX
- battle.c
- battle_config_read() •ÏX
- atcommand.c
- atcommand_who() •ÏX
- pc.c
- pc_ismarried()Apc_marriage()Apc_divorce() ’ljÁ
- chrif.c
- chrif_divorce() ’ljÁ
- chrif_parse() •ÏX
- (char/)
- char.c
- char_divorce() ’ljÁ
- char_delete()Ammo_char_fromstr()Ammo_char_tostr() •ÏX
-
---------------------
-//1007 by (“Ê)
-ENULLƒ`ƒFƒbƒN‚ÌŒ©’¼‚µ
-
- (map/)
- clif.c
- clif_send() •ÏX
- skill.c
- skill_delunit() •ÏX
-
---------------------
-//1006 by (ruhu)
-¥@go‚É—Œ—z‚ƃjƒtƒ‹ƒwƒCƒ€’ljÁ
-
- (conf/)
- help.txt ƒjƒtƒ‹ƒwƒCƒ€A—Œ—z’ljÁ
- (map/)
- atcommand.c
- atcommand go() ƒjƒtƒ‹ƒwƒCƒ€A—Œ—z’ljÁ
---------------------
-//1005 by (“Ê)
-ENULLƒ`ƒFƒbƒN‚ÌŒ©’¼‚µ‚ƒljÁA‘å—Ê‚É•ÏX‚µ‚½‚Ì‚Å–â‘肪o‚é‰Â”\«‚ª‘å‚Å‚·
-EƒEƒ“ƒoƒ‰•ªŠ„ƒpƒbƒ`‚ª”z•z‚³‚ꂽ‚Ì‚Å@go 12‚ɃEƒ“ƒoƒ‰‚ð’ljÁ
-Eƒ[ƒhƒiƒCƒg ƒo[ƒT[ƒN‚ð‚¿‚å‚Á‚Æ‚»‚ê‚Á‚Û‚(ASPD‘‰Á‚È‚Ç‚Í–¢ŽÀ‘•)
-EƒNƒ‰ƒEƒ“¥ƒWƒvƒV[ ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç‚ÌŽg—pðŒ‚ð‡‘t‚Æ“¯‚¶‚É•ÏX(Œø‰Ê“™‚Í–¢ŽÀ‘•)
-EƒuƒŒƒbƒVƒ“ƒO‚ª–{ŽI‚ł̓Xƒe[ƒ^ƒXƒAƒbƒv¨ƒGƒtƒFƒNƒg‚¾‚Á‚½‚Ì‚Å‚»‚̂悤‚É•ÏX
-E–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>145 zzz‚³‚ñ‚Ì•ñ‚𔽉f
-E“¯ƒXƒŒ >>143 plala‚³‚ñ‚Ì•ñ‚𔽉f
-
- (db/)
- skill_require_db.txt •ÏX
- (conf/)
- help.txt ƒEƒ“ƒoƒ‰’ljÁ
- map_athena.conf ƒEƒ“ƒoƒ‰ŠÖ˜A‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ
- (map/)
- atcommand.c NULLƒ`ƒFƒbƒN‹‰»
- atcommand() @mapmove‚È‚Ç‚Å—Ž‚¿‚é–â‘è‚ðC³
- atcommand_go() ƒEƒ“ƒoƒ‰’ljÁ
- battle.c NULLƒ`ƒFƒbƒN‹‰»
- battle_calc_mob_weapon_attack() ƒo[ƒT[ƒNŽžƒ_ƒ[ƒW150%
- battle_calc_pc_weapon_attack() ƒo[ƒT[ƒNŽžƒ_ƒ[ƒW150%
- chat.c NULLƒ`ƒFƒbƒN‹‰»
- chrif.c NULLƒ`ƒFƒbƒN‹‰»
- clif.c NULLƒ`ƒFƒbƒN‹‰»
- clif_parse_ActionRequest() ƒ_ƒ“ƒXŽž‚̈—‚ðŽáŠ±•ÏX
- clif_parse_GlobalMessage() ƒo[ƒT[ƒNŽž‚͉ï˜b‚ªo—ˆ‚È‚¢‚悤‚É•ÏX
- clif_parse_Wis() ƒo[ƒT[ƒNŽž‚͉ï˜b‚ªo—ˆ‚È‚¢‚悤‚É•ÏX
- clif_parse_PartyMessage() “¯ã
- clif_parse_GuildMessage() “¯ã
- clif_parse_TakeItem() ƒo[ƒT[ƒNŽž‚̓AƒCƒeƒ€‚ðŽæ‚ê‚È‚¢‚悤‚É•ÏX
- clif_parse_DropItem() ƒo[ƒT[ƒNŽž‚̓AƒCƒeƒ€‚ð—Ž‚Æ‚¹‚È‚¢‚悤‚É•ÏX
- clif_parse_UseItem() ƒo[ƒT[ƒNŽž‚̓AƒCƒeƒ€‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX
- clif_parse_EquipItem() ƒo[ƒT[ƒNŽž‚Í‘•”õ‚Å‚«‚È‚¢‚悤‚É•ÏX
- clif_parse_UnequipItem() ƒo[ƒT[ƒNŽž‚Í‘•”õ‰ðœ‚Å‚«‚È‚¢‚悤‚É•ÏX
- clif_parse_UseSkillToId() ƒo[ƒT[ƒNŽž‚̓XƒLƒ‹Žg—p‚ª‚Å‚«‚È‚¢‚悤‚É•ÏX
- clif_parse_UseSkillToPos() “¯ã
- clif_parse_UseSkillMap() “¯ã
- guild.c NULLƒ`ƒFƒbƒN‹‰»
- intif.c NULLƒ`ƒFƒbƒN‹‰»
- itemdb.c NULLƒ`ƒFƒbƒN‹‰»
- map.c NULLƒ`ƒFƒbƒN‹‰»
- map_quit() ƒo[ƒT[ƒNŽž‚ɃƒOƒAƒEƒg‚·‚é‚ÆHP 100/SP 0‚É‚È‚é‚悤‚É•ÏX
- mob.c
- mob_attack() clif_fixmobpos()‚ð‘—M‚µ‚È‚¢‚悤‚É•ÏX
- mob_timer() NULLƒ`ƒFƒbƒNðŒ‚ð•ÏX
- mobskill_castend_id() “¯ãAƒo[ƒT[ƒNŽžƒXƒLƒ‹‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX
- mobskill_castend_pos() ƒo[ƒT[ƒNŽžƒXƒLƒ‹‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX
- mobskill_use_id() “¯ã
- mobskill_use_pos() “¯ã
- npc.c NULLƒ`ƒFƒbƒN‹‰»
- party.c NULLƒ`ƒFƒbƒN‹‰»
- path.c NULLƒ`ƒFƒbƒN‹‰»
- pc.c NULLƒ`ƒFƒbƒN‹‰»
- pc_calcstatus() ƒo[ƒT[ƒNŽž‚Í‘¬“xUP•MHP3”{AƒƒfƒBƒeƒCƒeƒBƒI‚ÌSP‰ñ•œ‘‰Á‚ðSPR‚Å‚Í‚È‚’Êí‰ñ•œ‚É‚©‚©‚é‚悤‚É‚µ‚½
- pc_heal() ƒo[ƒT[ƒNŽž‚͉ñ•œ‚µ‚È‚¢
- pc_jobchange() “]E’¼Œã1•à“®‚©‚È‚¢‚Æ•ž‚ÌF‚ª”½‰f‚³‚ê‚È‚©‚Á‚½‚Ì‚ðC³
- pc_natural_heal_sub() ƒo[ƒT[ƒN’†‚ÍSP‚ªŽ©‘R‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏX(HP‚Í—Ç‚•ª‚©‚ç‚È‚©‚Á‚½‚̂ʼnñ•œ‚·‚é‚悤‚É‚µ‚Ä‚ ‚é)
- pet.c NULLƒ`ƒFƒbƒN‹‰»
- skill.c
- skill_castend_nodamage_id() ƒuƒŒƒbƒVƒ“ƒO“™‚̃pƒPƒbƒg‡‚ð•ÏXAƒXƒg[ƒ“ƒJ[ƒX‚ð•sŽ€‚É‚Í–³Œø‚É‚µ‚½
- skill_castend_map() ‚µ‚‚±‚¢‚‚ç‚¢‚Ƀo[ƒT[ƒNŽž‚ɃXƒLƒ‹‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX
- skill_check_condition() “¯ã
- skill_use_pos() “¯ã
- skill_use_id() “¯ã•ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç’ljÁ
- skill_status_change_end() ƒo[ƒT[ƒNŽž‚É‚ÍIAƒAƒCƒRƒ“‚ðÁ‹Ž‚·‚é‚悤‚É•ÏX
- skill_status_change_timer() NULLƒ`ƒFƒbƒNðŒ‚ð•ÏXAŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚т玞SPÁ”ïAƒo[ƒT[ƒNŽžHP100ˆÈã‚È‚ç10•b‚ ‚½‚è1%Œ¸‚ç‚·‚悤‚É•ÏX
- skill_status_change_start() ƒo[ƒT[ƒNŽž‚É‚ÍIAƒAƒCƒRƒ“‚ð•\Ž¦‚·‚é‚悤‚É•ÏX
- skill_delunit() NULLƒ`ƒFƒbƒNðŒ‚ð•ÏX
- skill_check_condition_char_sub() ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç’ljÁ
- skill_check_condition_use_sub() “¯ã
- skill_is_danceskill() “¯ã
- skill_initunitgroup() “¯ã
- trade.c NULLƒ`ƒFƒbƒN‹‰»
- vending.c NULLƒ`ƒFƒbƒN‹‰»
-
---------------------
-//1004 by (“Ê)
-ENULLƒ`ƒFƒbƒN‚ŃGƒ“ƒoƒO‚µ‚Ä‚¢‚½‚Æ‚±‚ë‚ð‚¢‚‚‚©C³‚Æ‘¼‚ÌNULLƒ`ƒFƒbƒN‹‰»
-Eskill.c‚Å‚ànullpo‚ð•\Ž¦‚·‚é‚悤‚É•ÏX
-
- (map/)
- battle.c
- battle_damage() NULLƒ`ƒFƒbƒN‹‰»
- battle_heal() “¯ã
- clif.c
- clif_damage() “¯ã
- map.c
- map_addflooritem() NULLƒ`ƒFƒbƒN‹‰»
- mob.c
- mob_once_spawn() —]Œv‚ÈNULLƒ`ƒFƒbƒN‚ðíœ
- mob_once_spawn_area() “¯ã
- mob_damage() “¯ã
- mob_counttargeted() “¯ã
- mobskill_castend_id() “¯ã
- mob_summonslave() ƒƒbƒZ[ƒWŠÔˆá‚¢‚ðC³
- pc.c
- pc_damage() NULLƒ`ƒFƒbƒN‹‰»
- skill.c ‚Ù‚Ú‘S•” NULLŠÖ˜AC³
-
---------------------
-//1003 by (“Ê)
-EjROƒNƒ‰ƒCƒAƒ“ƒg‚Å/accountŽg—pŽž‚ÉŒq‚ª‚ç‚È‚¢Œ´ˆö‚Ì0x200ƒpƒPƒbƒg–â‘è‚ðC³
-E0x1c9ƒpƒPƒbƒg‚ÌŒŠ–„‚ß‚ðˆø‚«‘±‚«Œp‘±’†
-Eˆêl‚Ź‘̂⇑t‚ðŽg—p‚Å‚«‚éÝ’è(player_skill_partner_check)‚ð’ljÁ
- ˆêl‚Ň‘t‚ðŽÀs‚µ‚½ê‡‚É‚Í’Êí‚̃_ƒ“ƒX‚Æ‹““®‚ª“¯‚¶‚É‚È‚è‚Ü‚·
-Eƒvƒƒ{ƒbƒN‚Í•sŽ€‚ɑ΂µ‚Ä”“®‚µ‚È‚¢‚悤‚É•ÏX
-EFW‚Ì‚«”ò‚΂µ”»’è‚ð•ÏX
-EƒfƒŠƒ…[ƒW‚É…ê”»’è‚ð’ljÁA¹…‚ðì‚ê‚é‚Ì‚ðŠm”F
-EƒnƒCƒfƒBƒ“ƒO‚Ì—LŒøŽžŠÔ‚ª³‚µ‚‹@”\‚·‚é‚悤‚ÉC³
-EƒAƒXƒyƒ‹ƒVƒI‚ð•sŽ€‚ÉŽg—p‚µ‚½ê‡A¹‘®«‚Ì40ƒ_ƒ[ƒW‚ð—^‚¦‚é‚悤‚É•ÏX
-EƒAƒXƒyƒ‹ƒVƒI‚ð•sŽ€ˆÈŠO‚ÌMOB‚ÉŽg—p‚µ‚Ä‚àŒø‰Ê‚ª–³‚¢‚悤‚É•ÏX
-E‡‘tAƒ_ƒ“ƒXA‰‰‘t’†‚ÌŒo‰ßŽžŠÔ‚É‚æ‚éSPÁ”ï‚ðŽÀ‘•
-E•ñ‚Ì‚ ‚Á‚½ƒK[ƒfƒBƒAƒ“‚ªƒMƒ‹ƒh–¢‰Á“üPC‚ðƒ^[ƒQƒbƒg‚µ‚½‚çmap‚ª—Ž‚¿‚é–â‘è‚ÌC³(ƒK[ƒfƒBƒAƒ“ŽÀ‘•“–Žž‚©‚炸‚Á‚Æ—Ž‚¿‚Ä‚½H)
-Emob.cAstorage.c‚Ìnullƒ`ƒFƒbƒN‚ð‹‰»
- ƒGƒ‰[‚Å—Ž‚¿‚é‚ׂ«‚Æ‚±‚ë‚ð–³—‚â‚è’Ê툗‚É–ß‚µ‚Ä‚¢‚é‚Ì‚Å‘¼‚Å–â‘肪‚Å‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ
- ‚»‚Ìê‡AƒRƒ“ƒ\[ƒ‹‚ÉuŠÖ”–¼ nullpov‚Æ•\Ž¦‚³‚ê‚é‚Ì‚Å•\Ž¦‚³‚ꂽꇂ͕ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·
- ‚à‚µ‚©‚µ‚½‚ç³í‚Ȉ—‚Å‚à•\Ž¦‚³‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªA‚»‚ÌÛ‚à•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·
- –{—ˆƒGƒ‰[AŽÀ‚ͳíA‚Ç‚¿‚ç‚É‚µ‚Ä‚à‚±‚ꂪ•\Ž¦‚³‚ê‚é‚̂̓oƒO‚Å‚·
-
- (conf/)
- battle_athena.conf player_skill_partner_check’ljÁ
- (db/)
- skill_db.txt ƒAƒXƒyƒ‹ƒVƒI‚Ì‘®«‚ð¹‚É•ÏX
- (doc/)
- conf_ref.txt player_skill_partner_checkà–¾’ljÁ
- (login/)
- login.c
- parse_login() 0x200ƒpƒPƒbƒg‘Ήž
- (map/)
- mob.c NULLƒ`ƒFƒbƒN‚Å‚Ù‚Ú‘S•”
- storage.c NULLƒ`ƒFƒbƒN‚Å‚Ù‚Ú‘S•”
- battle.h •ÏX
- battle.c
- battle_calc_magic_attack() ƒAƒXƒyƒ‹ƒVƒI‚ð’ljÁAFW‚ð•ÏX
- battle_config_read() Ý’è’ljÁ
- clif.c
- clif_getareachar_skillunit() ’²¸Œ‹‰Ê‚Ì”½‰f
- clif_skill_setunit() “¯ã
- [1001‚Æ1002‚ÌŠÔ‚Ì•ÏX“_]
- skill.c NULLƒ`ƒFƒbƒN‚ð‘òŽR
- skill_castend_damage_id() ƒAƒXƒyƒ‹ƒVƒI’ljÁ
- skill_castend_nodamage_id() ƒAƒXƒyƒ‹ƒVƒIAƒvƒƒ{ƒbƒNˆ—•ÏX
- skill_castend_id() ƒAƒXƒyƒ‹ƒVƒIˆ—•ÏX
- skill_check_condition_char_sub() player_skill_partner_check‚ɑΉž
- skill_check_condition_use_sub() “¯ã
- skill_use_id() “¯ã
- skill_check_condition() “¯ã•ƒfƒŠƒ…[ƒW‘Ήž
- skill_status_change_timer() ƒnƒCƒfƒBƒ“ƒOC³Aƒ_ƒ“ƒX‰‰‘t‡‘t’†‚ÌSPÁ”ïŽÀ‘•
- skill_initunitgroup() ƒ_ƒ“ƒXSPÁ”ï—p•ÏX
- skill_status_change_start() “¯ã•ƒvƒƒ{ƒbƒN‚ðƒ{ƒX‚ÉŒø‚©‚È‚¢‚悤‚É(‚Å‚àbattle.c‚ÅŽ~‚ß‚Ä‚é‚©‚ç’Ê킱‚±‚Ü‚Å—ˆ‚È‚¢)
-
---------------------
-//1002 by ‚Ò‚´‚Ü‚ñ
-Eƒ|[ƒ^ƒ‹ƒoƒOC³
-EƒXƒLƒ‹ŠÖŒW‚ÌNullƒ`ƒFƒbƒN‹‰»(by(“Ê))
- (map/)
- skill.c
- skill_castend_map() C³
-
---------------------
-//1001 by (“Ê)
-E0x1c9‚Å‚¢‚‚‚©ƒpƒPƒbƒg‚ðŒ©”ä‚ׂĕω»‚Ì‚È‚¢‚Æ‚±‚ë‚ðŒÅ’è’l‚Å–„‚ßž‚Ý(¡Œãî•ñ‚ªW‚Ü‚é‚Æ•Ï‚í‚é‰Â”\«‘å)
-Eƒ_ƒ“ƒX’†‚ÍSP‚¾‚¯‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏX
-E¹‘Ì‚Å‘Š•û‚ÌSP‚ª10ˆÈ‰º‚¾‚ÆŽg—pŽ¸”s‚É‚µ‚ÄŽg—p‚µ‚½‚çSP‚ð10Œ¸‚炵‚Ä‚Ý‚é(–¢Šm”F)
-E‡‘t‚̃XƒLƒ‹Žg—pƒpƒPƒbƒg‚ðŽáŠ±•ÏX
-
- (map/)
- clif.c
- clif_getareachar_skillunit() 0x1c9‚ÌŒŠ–„‚ߊJŽn
- clif_skill_setunit() 0x1c9‚ÌŒŠ–„‚ߊJŽn
- pc.c
- pc_natural_heal_sub() ƒ_ƒ“ƒX’†‚ÍSP‚̂݉ñ•œ‚µ‚È‚¢‚悤‚É•ÏX
- skill.c
- skill_check_condition() •ÏX
- skill_check_condition_char_sub() ¹‘Ì‚Í‘Š•û‚ÌSPƒ`ƒFƒbƒN‚·‚é‚悤‚É•ÏX
- skill_check_condition_use_sub() ¹‘Ì‚Í‘Š•û‚ÌSP‚ðŒ¸‚ç‚·‚悤‚É•ÏX
-
---------------------
-//1000 by ‚Ò‚´‚Ü‚ñ
-E0999‚Ì•ÏXŽæ‚è–ß‚µ
-Eƒgƒ‰ƒbƒv‚ÌŠª‚«ž‚ÝŽÀ‘•
-EƒCƒhƒDƒ“‚Ì—ÑŒç‚ÅNPC‚܂ʼnñ•œ‚µ‚½(‚悤‚ÉŒ©‚¦‚é)–â‘èC³(–¢ƒeƒXƒg)
-Eƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“‚̃GƒtƒFƒNƒg•ÏX(‚±‚¿‚ç‚É–¾‹L)
- (map/)
- skill.c
- skill_count_target() ’ljÁ
- skill_unit_onplace()Askill_trap_splash() •ÏX
---------------------
-//0999 by eAthena Dev Team (Yor's Fixes)
-(login/)
- added email for accounts
-(char/)
- added email for character deletion
---------------------
-//0998 by (“Ê)
-Ebattle.c‚ňø”‚Ì‘¶Ý‚ðŠm”F‚¹‚¸‚É’l‚ðŒ©‚És‚Á‚Ä‚éŠÖ”‚ð‚¢‚‚‚©C³
-Eƒ_ƒ“ƒX’†‚ÍÀ‚ê‚È‚¢‚悤‚É‚µ‚½(–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>114 DoT‚³‚ñ)
-Eƒ_ƒ“ƒX’†‚ÍHPASP‚ª‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏX(“¯ã)
-Eƒ_ƒ“ƒX’†‚Í’ÊíUŒ‚‚Å‚«‚È‚¢‚悤‚É‚µ‚½(–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>116 EEE‚³‚ñ)
-E‡‘t’†•Ð•û‚ª—Ž‚¿‚½ê‡AŽc‚Á‚½‚Ù‚¤‚ʼn‰‘t‚ðŒp‘±‚·‚é‚悤‚É‚µ‚½(“¯ã)
-E‡‘t’†‚̓AƒhƒŠƒuˆÈŠO‚Å‚«‚È‚¢‚悤‚É•ÏX(“¯ã)
-E‡‘t”“®ðŒ‚Ƀ_ƒ“ƒX’†‚¶‚á‚È‚¢•À‚Á‚Ä‚¢‚È‚¢‚ð’ljÁ(–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>118 ‚ë‚낳‚ñ)
-Eˆ¢C—…Žg—pŒã‚ÉHP‚à‰ñ•œ‚µ‚È‚©‚Á‚½‚Ì‚ðC³
-
- (map/)
- battle.c
- battle_counttargeted() C³
- battle_getŒn ‚½‚Ô‚ñ‘S•”C³
- clif.c
- clif_parse_WalkToXY() ‡‘t‚Ì”»’f•û–@‚Ì•ÏX
- clif_parse_ActionRequest() ƒ_ƒ“ƒX’†‚͉£‚ç‚È‚¢À‚ç‚È‚¢‚悤‚É•ÏX
- map.c
- map_quit() ƒ_ƒ“ƒX’†’f’ljÁ
- mob.c
- mob_damage() skill_stop_dancing‚̈ø”‘‰Á‚É‚æ‚é•ÏX
- pc.c
- pc_setpos() “¯ã
- pc_damage() “¯ã
- pc_equipitem() “¯ã
- pc_natural_heal_sub() ƒ_ƒ“ƒX’†‚ÍŽ©‘R‰ñ•œ‚µ‚È‚¢‚悤‚É•ˆ¢C—…Žž‚ÍSP‚̂݉ñ•œ‚µ‚È‚¢‚悤‚É
- skill.c
- skill_castend_nodamage_id() skill_stop_dancing‚̈ø”‘‰Á‚É‚æ‚é•ÏX
- skill_status_change_start() “¯ã
- skill_check_condition_char_sub() ‘ŠŽè‚ªƒ_ƒ“ƒX’†‚âÀ‚Á‚Ä‚¢‚Ä‚à‡‘t‚Å‚«‚È‚¢‚悤‚É•ÏX
- skill_check_condition_use_sub() “¯ã
- skill_use_id() ‡‘t‚Ì”»’f•û–@‚Ì•ÏX•‡‘t’†‚̓AƒhƒŠƒuˆÈŠO‹ÖŽ~‚É
- skill_status_change_end() ‡‘t‚̃_ƒ“ƒXó‘Ô‰ðœ‚Í‘ŠŽè‚Ìval4‚ð0‚É‚·‚é‚悤‚É‚µ‚½
- skill_is_danceskill() –ß‚è’l•ÏX
- skill_stop_dancing() ˆø”‘‰ÁA‡‘t‚ŕЕû‚¾‚¯—Ž‚¿‚½‚Æ‚«‚̈—’ljÁ
- skill_delunitgroup() ‡‘tŽž‚̃Xƒe[ƒ^ƒX•ÏXˆ—‚ðª‚Ɉڂµ‚½
- skill_clear_unitgroup() Ž©•ª‚Ìbl->id‚ƃ†ƒjƒbƒgƒOƒ‹[ƒv‚Ìgroup->src_id‚ªˆá‚¤‚Æ‚«‚Í휂µ‚È‚¢‚悤‚É•ÏX
- skill.h •ÏX
-
---------------------
-//0997 by (“Ê)
-E“ñl‚Ň‘tAŽOl‚Ź‘Ì‚ðŽÀ‘•
- ‡‘t ƒo[ƒhEƒ_ƒ“ƒT[‚ª—×Ú‚µ‚½ƒZƒ‹‚É‚¢‚Ä“¯‚¶ƒXƒLƒ‹‚ðŽ‚Á‚Ä‚¢‚鎞‚É”“®
- ƒXƒLƒ‹ƒŒƒxƒ‹‚Í—¼ŽÒ‚̃XƒLƒ‹ƒŒƒxƒ‹‚Ì’†ŠÔ
- –{ŽIŽd—l‚ª•ª‚©‚ç‚È‚¢‚¯‚ǎ΂ߗ×Ú‚àOK
- ¹‘Ì Žg—pŽÒ‚ÌXŽ²‚Å-1‚Æ+1‚ÌꊂɈêl‚¸‚ƒAƒRƒ‰ƒCƒg‚©ƒvƒŠ[ƒXƒg‚ª‚¢‚鎞‚É”“®‚·‚é‚ÆŽv‚¤(–¢ƒeƒXƒg)
- Žg—pŽÒ › ƒAƒRƒvƒŠ œ
- OK œ›œ
-
- NG œ
- ›œ
-Eƒg[ƒL[ƒ{ƒbƒNƒX‚ðŽg‚Á‚ÄÝ’uŽž‚ÉÀ‚Á‚Ä‚¢‚½Žž‚̓XƒLƒ‹Žg—pŽ¸”s‚É‚µ‚Ä‚Ý‚½
-
- (db/)
- item_db.txt ‘º³‚ÌŽô‚¢—¦‚ð5%‚É(by e2‚³‚ñ)
- (map/)
- skill.c
- skill_check_condition_char_sub() ’ljÁ
- skill_check_condition_use_sub() ’ljÁ
- skill_check_condition() •ÏX
- skill_use_id() •ÏX
- skill_initunitgroup() •ÏX
- skill_delunitgroup() •ÏX
- clif.c
- clif_parse_UseSkillToPos() •ÏX
-
---------------------
-//0996 by (“Ê)
-EƒAƒhƒŠƒu‚Ì5•b§ŒÀ‚ðcast_db.txt‚Ìupkeep_time2‚ŧŒä‚Å‚«‚é‚悤‚É•ÏX
-E‘º³‚ÅŽ©•ª‚ðŽô‚킹‚邽‚ß‚Ébonus2 bAddEff2‚ð’ljÁ
-EŽô‚í‚ê‚Ä‚¢‚ÄI—¹‚Å‚«‚È‚¢Žž‚É‚àu¡‚ÍI—¹‚Å‚«‚Ü‚¹‚ñv‚ª•\Ž¦‚³‚ê‚é‚悤‚É‚µ‚½
-Eƒ_ƒ“ƒXƒGƒtƒFƒNƒg“™ˆÚ“®Žž‚ÉŒø‰Ê‚Ì“K—p”»’f‚ªˆÚ“®‘O‚És‚í‚ê‚Ä‚¢‚½‚Ì‚ðˆÚ“®Œã‚É•ÏX•Žg‚í‚È‚‚Ä‚¢‚¢•Ï”‚ð”pŽ~
-
- (db/)
- cast_db.txt
- const.txt
- item_db.txt
- (doc/)
- item_bonus.txt
- (src/)
- clif.c
- clif_parse_QuitGame() •ÏX
- map.h addeff2,arrow_addeff2 ’ljÁ
- pc.c
- pc_calcstatus() •ÏX
- pc_bonus2() •ÏX
- skill.c
- skill_additional_effect() •ÏX
- skill_check_condition() •ÏX
- skill_unit_move_unit_group() •ÏX
-
---------------------
-//0995 by (“Ê)
-Ebattle.pet_lootitem‚̃fƒtƒHƒ‹ƒg‚ªyes‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³
-Ebattle.pet_lootitem‚Ì“K—p‚ðforeach‘O‚Å‚â‚é‚悤‚ÉC³
-Eƒyƒbƒg‚̉Šú‰»‚Åpd->lootitem‚ª‚ ‚鎞‚µ‚©‰Šú‰»‚³‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³
-E—̈悪ˆÚ“®‚µ‚Ä‘ÎÛ‚ª—̈悩‚甲‚¯‚Ä‚àŒø‰Ê‚ª‰ðœ‚³‚ê‚È‚¢–â‘è‚ðC³
-EƒAƒhƒŠƒu‚̓_ƒ“ƒX”“®‚©‚ç5•bˆÈãŒo‚½‚È‚¢‚ÆŽg—p‚Å‚«‚È‚¢‚悤‚É‚µ‚½
-
- (map/)
- pet.c
- pet_data_init() C³
- pet_ai_sub_hard() C³
- pet_ai_sub_hard_lootsearch() C³
- skill.c
- skill_blown() •ÏX
- skill_unit_onlimit() ƒGƒ‰[ƒƒbƒZ[ƒWC³
- skill_check_condition() •ÏX
- skill_initunitgroup() sd_data[SC_DANCING].val3‚Égettick()
- skill_unit_move_unit_group_sub() ’ljÁ
- skill_unit_move_unit_group() •ÏX
- skill.h skill_unit_move_unit_group() ˆø”•ÏX
- battle.c
- battle_config_read() pet_lootitem=0‚ÉC³
- pc.c
- pc_walk() •ÏX
-
---------------------
-//0994 by huge
-Ebattle.pet_lootitem‚ª“K‰ž‚³‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B
-Eƒyƒbƒg‚ɃpƒtƒH[ƒ}ƒ“ƒX‚ð‚³‚¹‚½ŒãA10•bŠÔ‚‚ç‚¢‚ÍE‚킹‚È‚¢‚悤‚ÉB
-
- (map/)
- map.h pet_data‚Élootitem_timer’ljÁB
- pet.c
- pet_ai_sub_hard_lootsearch() C³B
- pet_lootitem_drop() C³B
-
---------------------
-//0993 by (“Ê)
-Eˆêl‚Ň‘t‚¾‚¯‚LJ‘tƒXƒLƒ‹’†‚Í“®‚¯‚È‚¢‚悤‚É
-EƒAƒ“ƒR[ƒ‹ŽÀ‘•B’¼‘O‚ÉŽg‚Á‚½ƒ_ƒ“ƒXƒXƒLƒ‹‚𔼕ª‚ÌSP‚ÅŽg‚¦‚Ü‚·
-Eƒ_ƒ“ƒX’†‚Ɉړ®‚·‚é‚ƃGƒtƒFƒNƒg‚àˆÚ“®‚·‚é‚悤‚É‚µ‚½
-E–¢ŽÀ‘•‚̃XƒLƒ‹‚ªŽg‚í‚ê‚é‚ÆUnknown skill‚Æ•\Ž¦‚³‚ê‚邱‚Æ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ
-ESage‚̃LƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹‚ÅŽÀ‚Í‘O‚̃XƒLƒ‹‚ðŠo‚¦‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ÌC³
-
- (map/)
- clif.c
- clif_parse_WalkToXY() •ÏX
- map.h ƒAƒ“ƒR[ƒ‹—p•Ï”‚̒ljÁ
- pc.c
- pc_walk()
- skill.c
- skill_blown
- skill_castend_nodamage_id
- skill_unitsetting() •ÏX
- skill_unit_onplace() ã©‚Å“¯‚¶ˆ—‚ð‚µ‚Ä‚¢‚écase‚ð‚Ü‚Æ‚ß‚½
- skill_unit_onout() Žg‚í‚ê‚Ä‚È‚¢unit2‚ðíœ
- skill_check_condition() •ÏX
- skill_use_id
- skill_initunitgroup() Žg‚Á‚½ƒ_ƒ“ƒXƒXƒLƒ‹‚ð•Ï”‚É“ü‚ê‚é‚悤‚É‚µ‚½
- skill_unit_move_unit_group() ’ljÁ
- skill.h •ÏX
-
---------------------
-//0992 by nokia
-
-map_quit‚ðC³‚µ‚ăƒ‚ƒŠ‚ðŽß•ú‚·‚鎞‰½“x‚à‚ðŽß•ú‚·‚邽‚߃ƒ‚ƒŠ‚̊ԈႢ‚ª‹N‚±‚é–â‘è‚ðµ‚
-
- (map/)
- map.c
- map_quit()
-
---------------------
-//0991 by (“Ê)
-Eƒg[ƒL[ƒ{ƒbƒNƒX‚ðŽ©•ª‚ª“¥‚ñ‚Å‚à”“®‚µ‚È‚¢–{ŽIŽd—l‚É•ÏX
-EƒXƒLƒ‹‰r¥’†‚ƃfƒBƒŒƒC’†‚̓Nƒ‰ƒCƒAƒ“ƒg‚ðI—¹‚Å‚«‚È‚¢‚悤‚É‚µ‚½‚¯‚ÇA“G‚ÉUŒ‚‚³‚ê‚Ä‚¢‚é‚Æ‚«‚ÍI—¹‚Å‚«‚Ü‚·(‚²‚ß‚ñ‚È‚³‚¢‚ÁII)
-
- (map/)
- clif.c
- clif_parse_QuitGame() •ÏX
- skill.c
- skill_unitsetting() •ÏX
-
---------------------
-//0990 by ‚Ò‚´‚Ü‚ñ
-Eˆê•”‚̃gƒ‰ƒbƒv‚ð”͈ÍUŒ‚‚É•ÏXiŠª‚«ž‚Ý‚Í–¢ŽÀ‘•jB
-Emapflag‚Épvp_nocalcrank‚Æpvp_nightmaredrop’ljÁB
- E<gatname><tab>mapflag<tab>pvp_nocalcrank<tab>dummy
- @PvP‚É‚æ‚郉ƒ“ƒLƒ“ƒOŒvŽZ‚ð‚µ‚È‚¢‚悤‚É‚µ‚Ü‚·B
- E<gatname><tab>mapflag<tab>pvp_nightmaredrop<tab><item>,<type>,<per>
- @PvP‚É‚ÄŽ€–S‚µ‚½ê‡A<per>‚ÌŠm—¦‚ŃAƒCƒeƒ€‚ðƒhƒƒbƒv‚µ‚Ü‚·B
- @<item>: ƒhƒƒbƒv‚·‚éƒAƒCƒeƒ€ID‚ðŽw’肵‚Ü‚·Brandom‚Æ‹Lq‚·‚é‚ÆŠŽ•i‚©‚烉ƒ“ƒ_ƒ€‚Ƀhƒƒbƒv‚µ‚Ü‚·B
- @<type>: ƒhƒƒbƒv‚·‚éƒAƒCƒeƒ€‚̃^ƒCƒv‚ðŽw’肵‚Ü‚·Binventory:ŠŽ•i equip:‘•”õ•i all:‘S•”
- @<per>: ƒhƒƒbƒv‚·‚éŠm—¦‚Å‚·B–œ•ª—¦‚ÅŽw’肵‚Ü‚·B
- (map/)
- skill.c
- skill_unit_onplace() •ÏX
- skill_trap_splash() ’ljÁ
- pc.c
- pc_damage() •ÏX
- npc.c
- npc_parse_mapflag() •ÏX
- map.h
- map_data‚Ƀƒ“ƒo’ljÁ
- (conf/)
- mapflag.txt
- ƒiƒCƒgƒƒAƒ‚[ƒh‚ɃhƒƒbƒvÝ’è’ljÁ
-
---------------------
-//0989 by (“Ê)
-EƒXƒvƒŠƒ“ƒOƒgƒ‰ƒbƒv‚ð–^Š‚ÅŒ©‚½SS‚ðŒ³‚ÉŽÀ‘•‚µ‚Ä‚Ý‚½Bˆá‚Á‚½‚ç‘ŠˆáƒXƒŒ‚Ö
-EƒfƒBƒeƒNƒeƒBƒ“ƒO‚ð–^Š‚ÅŒ©‚½‰ðà•¶‚ðŒ³‚ÉŽÀ‘•‚µ‚Ä‚Ý‚½Bˆá‚Á‚½‚ç‘ŠˆáƒXƒŒ‚Ö
-EƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹Žž‚Ìdelete_timerƒGƒ‰[‚ɒljÁ‚ŃXƒLƒ‹ID‚ð•\Ž¦‚·‚é‚悤‚É‚µ‚½B‚ ‚킹‚Ä•ñ‚·‚é‚ƃGƒ‰[‚ÌŒ´ˆö‚ª•ª‚©‚é‚©‚à
-
- (map/)
- skill.c
- skill_castend_nodamage_id() •ÏX
- skill_castend_pos2() •ÏX
- skill_castcancel() •ÏX
-
---------------------
-//0988 by (“Ê)
-Eƒg[ƒL[ƒ{ƒbƒNƒX‚Íí‚É‘«Œ³‚É’u‚¯‚é‚悤‚É•ÏX‚ÆKalen‚³‚ñ‚É–á‚Á‚½î•ñ“™‚ðŒ³‚ÉƒpƒPƒbƒg‚ð–{ŽI‚É‚ ‚킹‚Ä‚Ý‚½
-EƒVƒ‡ƒbƒNƒEƒF[ƒuƒgƒ‰ƒbƒv‚ÉŒø‰Ê‚ð’ljÁ‚µ‚½‚‚à‚è(–¢Šm”F)
-Eƒuƒ‰ƒXƒgƒ}ƒCƒ“‚ƃNƒŒƒCƒ‚ƒAƒgƒ‰ƒbƒv‚ð‰£‚é‚Æ‚«”ò‚Ԃ悤‚É‚µ‚½
-EƒŠƒ€[ƒuƒgƒ‰ƒbƒv‚Åã©(skill_require_db‚ÅŽw’肵‚½ƒAƒCƒeƒ€)‚ð‰ñŽû‚Å‚«‚é‚悤‚É‚µ‚½
-Eª‚ÌŽÀ‘•‚É‚æ‚èã©‚ÌŽžŠÔØ‚ê‚Åã©‚ªo‚éƒIƒŠƒWƒiƒ‹Žd—l‚̓Rƒƒ“ƒgƒAƒEƒg
-Eƒuƒ‰ƒXƒgƒ}ƒCƒ“‚ÌŒø‰ÊŽžŠÔ‚ª’·‚¢‚Ì‚ðC³
-
- (db/)
- cast_db.txt
- (map/)
- battle.c
- battle_check_target() •ÏX
- mob.c
- mobskill_castend_pos() •ÏX
- skill.c
- skill_additional_effect() •ÏX
- skill_blown() •ÏX
- skill_castend_nodamage_id() •ÏX
- skill_castend_pos2() •ÏX
- skill_unitsetting() •ÏX
- skill_unit_onplace() •ÏX
- skill_unit_ondamaged() •ÏX
- skill_castend_pos() •ÏX
- skill_unit_timer_sub() •ÏX
-
---------------------
-//0987 by ŒÓ’±—–
-
-Eƒ†[ƒU[’è‹`ŠÖ”/ƒTƒuƒ‹[ƒeƒBƒ“‚Ɉø”‚ðŽw’è‰Â”\‚É
- Ú‚µ‚‚Í script_ref.txt ‚ðŽQÆ
-
- (map/)
- scirpt.c
- buildin_getarg()’ljÁ
- buildin_callsub(),buildin_callfunc(),run_func()C³
- (doc/)
- script_ref.txt
- ˆø”‚ɂ‚¢‚Ä‚Ìà–¾’ljÁ
-
-Egetguildname,getpartyname,getcastlename,strcharinfoC³
- C_STR‚Œ蔕¶Žš—ñ(C_CONSTSTR)‚ð•Ô‚µ‚Ä‚¢‚½–â‘èC³
- strcharinfo‚ŃMƒ‹ƒh–¼‚È‚Ç‚ðŠ“¾‚·‚éÛA–¢Š‘®‚¾‚Á‚½‚Æ‚«‚Ì–â‘è
-
- (map/)
- script.c
- buildin_getguildname(),buildin_getpartyname()
- buildin_getcastlename(),buildin_strcharinfo()
-
---------------------
-//0986 by (“Ê)
-Eclient_packet‚Ì‹Lq‚©‚ç„Ž@‚µ‚ăg[ƒL[ƒ{ƒbƒNƒX‚ðŽÀ‘•‚µ‚Ä‚Ý‚½‚‚à‚è
-
- (db/)
- skill_db.txt
- (map/)
- clif.c
- clif_talkiebox() ’ljÁ
- clif_parse_UseSkillToPos() •ÏX
- clif_parse() •ÏX
- clif.h •ÏX
- map.h •ÏX
- skill.c
- skill_castend_pos2() •ÏX
- skill_unitsetting() •ÏX
- skill_unit_onplace() •ÏX
-
---------------------
-//0985 by (“Ê)
-EƒT[ƒo[snapshot
-E/script/extension‚ÉŒê‚è•”‚ð’ljÁ‚µ‚½‚è
-E0984‚ÅAthenaŽG’kƒXƒŒƒbƒh part3>>92 Michael‚³‚ñ‚ÌC³‚ðŽæ‚èž‚ñ‚Å‚½
-EƒoƒO•ñƒXƒŒƒbƒh part5 >>45‚É“]Ú‚³‚ê‚Ä‚½ ‚ ‚â‚Ë‚³‚ñ‚ÌC³‚ðŽæ‚èž‚Ý
-EƒoƒO•ñƒXƒŒƒbƒh part5 >>54 rari‚³‚ñ‚Ì‚½‚Ê‚«–XC³‚ðŽæ‚èž‚Ý
-
- (script/extension/)
- npc_event_kataribe6.txt ’ljÁ
- npc_event_kataribe7.txt ’ljÁ
- (script/npc/)
- quest/npc_event_hat.txt C³
- job/npc_job_magician.txt C³
-
---------------------
-//0984 by (“Ê)
-EƒZ[ƒW‚̃tƒŠ[ƒLƒƒƒXƒg‚Æ‚¢‚¤ƒXƒLƒ‹‚Ì‘¶Ý‚ð’m‚ç‚È‚©‚Á‚½‚Ì‚Å0983‚Ì•ÏX‚ðˆê•”–ß‚µ
-EƒAƒCƒeƒ€XV‚µ‚½‚¯‚Ç‚‚ê”L‚ƃCƒ“ƒfƒBƒAƒ“ƒoƒ“ƒ_ƒi‚ª‘•”õ‚Å‚«‚È‚¢H
-Eƒ}ƒbƒvƒtƒ‰ƒO‚ƃ‚ƒ“ƒXƒ^[”z’u‚ðÅV”Å‚É
-
- (db/)
- item_db.txt
- (conf/)
- mapflag.txt
- (script/mob/)
- npc_monster.txt
- (map/)
- clif.c
- clif_parse_WalkToXY() C³
-
---------------------
-//0983 by (“Ê)
-E’·‚¢‰r¥’†‚É•à‚«‚Ü‚í‚ꂽ‹C‚ª‚·‚é‚Ì‚ÅC³
-Eƒyƒbƒgƒ‹[ƒŒƒbƒg‰ñ“]’†‚É‘ÎÛ‚ª’@‚«ŽE‚³‚ꂽ‚çmap-server‚ª¢‚é‚Ì‚ðC³
-EƒvƒƒtƒFƒbƒT[ ƒ‰ƒCƒt’u‚«Š·‚¦‚̎蔲‚«ˆ—‚ð‚¿‚å‚Á‚ƃ}ƒV‚É‚µ‚½
-
- (map/)
- clif.c
- clif_parse_WalkToXY() C³
- pet.c
- pet_catch_process2() C³
- skill.c
- skill_castend_nodamage_id() C³
-
---------------------
-//0982 by (“Ê)
-E“]¶ƒXƒLƒ‹‚Ì`
- ƒXƒg[ƒJ[ ƒŠƒWƒFƒNƒgƒ\[ƒh ‘ŠŽè‚ªPC‚Ìꇂ͌•‚¶‚á‚È‚¯‚ê‚Î’µ‚Ë•Ô‚³‚È‚¢—\’è
- ƒvƒƒtƒFƒbƒT[ ƒƒ‚ƒ‰ƒCƒY 12•b‚̌ŒèƒLƒƒƒXƒgƒ^ƒCƒ€A‚»‚ÌŒãƒXƒLƒ‹Žg—p‚̃LƒƒƒXƒgƒ^ƒCƒ€‚ª3‰ñ‚¾‚¯1/3‚É‚È‚é
- ƒvƒƒtƒFƒbƒT[ ƒ‰ƒCƒt’u‚«Š·‚¦ HP‚ð10%Œ¸‚炵‚ÄSP‚ð‘‚â‚·BŒ¸‚Á‚½HP‚̃GƒtƒFƒNƒg‚Í–³‚µ‚É‚µ‚Ä‚Ý‚½
-EŒ©Ø‚è‚Ɖñ”𗦑‰Á‚ÌFlee㸂ªƒXƒe[ƒ^ƒX•Ï‰»Žž‚É‚µ‚©”½‰f‚³‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³
-E0981‚ÅŽ©•ªˆÈŠO‚Í•à‚¢‚½‚ç•ž‚ÌF‚ª–ß‚Á‚Ä‚µ‚Ü‚¤‚Ì‚ð‚È‚ñ‚Æ‚©‚µ‚½‚‚à‚è
-
- (db/)
- skill_require_db.txt
- (map/)
- battle.c
- battle_calc_damage() C³
- clif.c
- clif_movechar() C³
- clif_getareachar_pc() C³
- pc.c
- pc_calcstatus() C³
- skill.c
- SkillStatusChangeTable •ÏX
- skill_castend_nodamage_id() •ÏX
- skill_use_id() •ÏX
- skill_use_pos() •ÏX
- skill_status_change_timer() •ÏX
- skill_status_change_start() •ÏX
- skill.h •ÏX
-
---------------------
-//0981 by (“Ê)
-E“]¶ƒXƒLƒ‹‚Ì`
- ƒXƒg[ƒJ[ ƒŠƒWƒFƒNƒgƒ\[ƒh ˆê’èŠm—¦‚Ń_ƒ[ƒW‚𔼕ª‚É‚µ‚ÄŒ¸‚炵‚½•ª‚ð‘ŠŽè‚É’µ‚Ë•Ô‚·‚悤‚É‚µ‚½c‚ªA’µ‚Ë•Ô‚µ‚½ƒ_ƒ[ƒW‚̃GƒtƒFƒNƒgo‚Ü‚¹‚ñ
-E•ž‚ÌF‚ð•ÏX••Û‘¶‚µ‚Ä‚¢‚éꇂɃŠƒƒO‚·‚é‚ÆŒ³‚ÌF‚É–ß‚Á‚Ä‚é‚悤‚ÉŒ©‚¦‚é–â‘è‚ÌC³
-
- (db/)
- skill_db.txt
- (map/)
- clif.c
- clif_parse_LoadEndAck() C³
- battle.c
- battle_calc_damage() C³
- skill.c
- skill_status_change_timer() C³
- skill_status_change_start() C³
-
---------------------
-//0980 by (“Ê)
-E—á‚É‚æ‚Á‚Ä“]¶ƒXƒLƒ‹‚ƃ‚ƒ“ƒNŠÖ˜A
- ƒXƒiƒCƒp[ ƒVƒƒ[ƒvƒVƒ…[ƒeƒBƒ“ƒO ƒNƒŠƒeƒBƒJƒ‹—¦’²®H
- ƒnƒCƒEƒBƒU[ƒh ƒ\ƒEƒ‹ƒhƒŒƒCƒ“ MSP‘—Ê‚ÆMob‚ð“|‚µ‚½‚Æ‚«‚ÉSP(mobLv*(65+15*SkillLv)/100)‰ñ•œB‚Å‚à–{“–‚͔͈ÍUŒ‚‚Ìꇂ͉ñ•œ‚µ‚È‚¢‚炵‚¢H
- ƒnƒCƒEƒBƒU[ƒh –‚–@—Í‘• Žg‚Á‚½‚çMATK‚ªSkillLv%‘—ÊBŽŸ‚̃XƒLƒ‹Žg—pŽž‚ÉŒ³‚É–ß‚é
- ƒ‚ƒ“ƒN ‹C’D ‚¿‚å‚Á‚ÆæŽæ‚肵‚Ä20%‚ÌŠm—¦‚Å“G‚ÌLv*2‚ÌSP‚ð‹zŽûB¬Œ÷‚µ‚½‚Æ‚«‚̓^[ƒQƒbƒg‚ðŽæ“¾‚·‚é‚悤‚É‚µ‚Ä‚Ý‚½
-EƒAƒCƒeƒ€–¼‚ðjROƒEƒ“ƒoƒ‰‚É€‹’‚³‚¹‚Ä‚Ý‚½‚‚à‚è
-
- (db/)
- cast_db.txt
- item_db.txt
- (map/)
- battle.c
- battle_calc_pc_weapon_attack() •ÏX
- mob.c
- mob_damage() •ÏX
- pc.c
- pc_calcstatus() •ÏX
- skill.c
- skill_castend_nodamage_id() •ÏX
- skill_use_id() •ÏX
- skill_use_pos() •ÏX
- skill_status_change_end() •ÏX
- skill_status_change_timer() •ÏX
- skill_status_change_start() •ÏX
-
---------------------
-//0979 by (“Ê)
-E“]¶ƒXƒLƒ‹‚ð‚¿‚å‚Á‚Æ’²®
- ƒnƒCƒEƒBƒU[ƒh ƒ}ƒWƒbƒNƒNƒ‰ƒbƒVƒƒ[ •ŠíUŒ‚‚ÅBaseATKŒvŽZ‚ðMATK2‚Å‚µ‚Ä‚Ý‚é
-E‘§‚ð–{ŽIŽd—l•—‚ÉHP‚ÆSP‚̉ñ•œƒ^ƒCƒ}[‚𕪂¯‚ÄÀ‚Á‚Ä‚¢‚È‚‚Ä‚à“®‚©‚È‚¯‚ê‚΃^ƒCƒ}[‚ªi‚ނ悤‚É‚µ‚½
-Eˆ¢C—…Žg—pŒã‚ÉHP‚ÆSP‚ª5•ªŠÔŽ©‘R‰ñ•œ‚µ‚È‚¢–{ŽIŽg—p•—‚É‚µ‚½(csat_db.txt‚Ìupkeep_time2‚Å’²®‰Â”\)
-EŒÃ‚¢gcc‚Åskill_unit_timer_sub_onplace()‚ ‚½‚è‚ŃRƒ“ƒpƒCƒ‹ƒGƒ‰[‚É‚È‚Á‚½‚Ì‚ðC³
-
- (db/)
- cast_db.txt
- (map/)
- battle.c
- battle_calc_pet_weapon_attack() •ÏX
- battle_calc_mob_weapon_attack() •ÏX
- battle_calc_pc_weapon_attack() •ÏX
- map.h
- pc.c
- pc_authok() •ÏX
- pc_walk() •ÏX
- pc_spirit_heal() íœ
- pc_spirit_heal_hp() ’ljÁ
- pc_spirit_heal_sp() ’ljÁ
- pc_natural_heal_sub() •ÏX
- skill.c
- skill_additional_effect() •ÏX
- skill_castend_damage_id() •ÏX
- skill_status_change_start() •ÏX
- skill_unit_timer_sub_onplace() C³
-
---------------------
-//0978 by (“Ê)
-E“]¶ƒXƒLƒ‹‚ðC³‚µ‚½‚èFX
- ƒXƒiƒCƒp[ ƒtƒ@ƒ‹ƒRƒ“ƒAƒTƒ‹ƒg ‚Æ‚è‚ ‚¦‚¸”ò‚Ô‚¾‚¯‚¾‚ÆŽv‚Á‚Ä‚‚¾‚³‚¢
- ƒXƒiƒCƒp[ ƒVƒƒ[ƒvƒVƒ…[ƒeƒBƒ“ƒO ƒ_ƒ[ƒW‘‰Á‚¾‚¯‚Ç1‘Ì‚¾‚¯
- ƒNƒ‰ƒEƒ“EƒWƒvƒV[ ƒAƒ[ƒoƒ‹ƒJƒ“ ƒ_ƒ[ƒW‘‰Á‚Æ9‰ñUŒ‚
- ƒnƒCƒEƒBƒU[ƒh ƒ}ƒWƒbƒNƒNƒ‰ƒbƒVƒƒ[ ƒGƒtƒFƒNƒg‚¾‚¯
-
-EƒAƒCƒeƒ€ŒðŠ·‚Åd—Ê‚ÌŒvŽZ‚ªˆá‚Á‚Ä‚¢‚½‚Ì‚ðC³
- (doc/)
- client_packet.txt ƒpƒPƒbƒg’·ƒe[ƒuƒ‹XV
- (map/)
- battle.c
- battle_calc_misc_attack() •ÏX
- battle_calc_pet_weapon_attack() •ÏX
- battle_calc_mob_weapon_attack() •ÏX
- battle_calc_pc_weapon_attack() •ÏX
- clif.c ƒpƒPƒbƒg’·‚Ì’è‹`‚ðXV
- skill.c
- skill_castend_damage_id() •ÏX
- trade.c
- trade_tradeadditem() C³
-
---------------------
-//0977 by (“Ê)
-E“]¶ƒXƒLƒ‹‚ðC³‚µ‚½‚èFX
- ƒAƒTƒVƒ“ƒNƒƒX ƒƒeƒIƒAƒTƒ‹ƒg ƒGƒtƒFƒNƒg‚ªˆá‚¤H
- ƒ[ƒhƒiƒCƒg ƒvƒŒƒbƒVƒƒ[ •K’†ƒ_ƒ[ƒW‚É‚µ‚Ä‚Ý‚½
- ƒ[ƒhƒiƒCƒg ƒI[ƒ‰ƒuƒŒ[ƒh‚Ì•K’†damage2‚ª‘¼‚Å‚à“K—p‚³‚ê‚Ä‚¢‚½‚Ì‚ðC³
- ƒ[ƒhƒiƒCƒg ƒSƒXƒyƒ‹ ƒGƒtƒFƒNƒgoŒ»ˆÊ’u‚Ì’²®
- ƒnƒCƒvƒŠ[ƒXƒg ƒAƒVƒƒƒ“ƒvƒeƒBƒI Œø‰ÊŽÀ‘•
- ƒnƒCƒvƒŠ[ƒXƒg ƒƒfƒBƒeƒCƒeƒBƒI Œø‰ÊŽÀ‘•
- ƒnƒCƒvƒŠ[ƒXƒg ƒoƒWƒŠƒJ SG‚Ý‚½‚¢‚ÉMob‚ªN“ü‚µ‚悤‚Æ‚·‚é‚Æ‚«”ò‚΂³‚ê‚é‚悤‚É‚µ‚½
- ƒzƒƒCƒgƒXƒ~ƒX ƒJ[ƒgƒu[ƒXƒg Œø‰ÊŽÀ‘•
- ƒzƒƒCƒgƒXƒ~ƒX ƒƒ‹ƒgƒ_ƒEƒ“ ƒGƒtƒFƒNƒg‚Æó‘ÔˆÙ펞ŠÔ‚¾‚¯(ŽÀÛ‚Ìó‘ԕω»‚Í–³‚µ)
- ƒzƒƒCƒgƒXƒ~ƒX ƒNƒŠƒGƒCƒgƒRƒCƒ“ –¼‘O“ü‚è‚Ì‹à‰Ý‚Æ‚©ì‚ê‚邾‚¯
- ƒXƒg[ƒJ[ ƒŠƒWƒFƒNƒgƒ\[ƒh ƒGƒtƒFƒNƒg‚Æó‘ÔˆÙ펞ŠÔ‚¾‚¯(ŽÀÛ‚Ìó‘ԕω»‚Í–³‚µ)
- ƒNƒ‰ƒEƒ“EƒWƒvƒV[ ƒ}ƒŠƒIƒlƒbƒgƒRƒ“ƒgƒ[ƒ‹ ƒGƒtƒFƒNƒg‚Æó‘ÔˆÙ펞ŠÔ‚¾‚¯(ŽÀÛ‚Ìó‘ԕω»‚Í–³‚µ)
- ƒvƒƒtƒFƒbƒT[ ƒtƒHƒOƒEƒH[ƒ‹ ƒGƒtƒFƒNƒg‚Æ—LŒøŽžŠÔ‚¾‚¯
- ƒXƒiƒCƒp[ ƒEƒCƒ“ƒhƒEƒH[ƒN ‘¬“x㸂ÆQMAŽ„‚ð–Y‚ê‚È‚¢‚Å‚ª‚©‚©‚é‚Ɖ𜂳‚ê‚é‚悤‚É‚µ‚½
- ƒXƒiƒCƒp[ ƒgƒDƒ‹[ƒTƒCƒg QMAŽ„‚ð–Y‚ê‚È‚¢‚łʼn𜂳‚ê‚é‚悤‚É‚µ‚Ä‚Ý‚½
-EƒgƒDƒ‹[ƒTƒCƒg‚Ì’Ô‚èŠÔˆá‚¢‚ðC³
-Estorage.c‚ŃRƒ“ƒpƒCƒ‹Œx‚ªo‚È‚¢‚悤‚É‚µ‚½‚‚à‚è
-
- (db/)
- cast_db.txt
- skill_db.txt
- skill_require_db.txt
- produce_db.txt
- (map/)
- battle.c
- battle_get_str() C³
- battle_get_agi() C³
- battle_get_vit() C³
- battle_get_int() C³
- battle_get_dex() C³
- battle_get_luk() C³
- battle_get_flee() C³
- battle_get_hit() C³
- battle_get_critical() C³
- battle_get_baseatk() C³
- battle_get_atk() C³
- battle_get_atk2() C³
- battle_get_def() C³
- battle_get_def2() C³
- battle_get_speed() C³
- battle_calc_damage() C³
- battle_calc_pet_weapon_attack() •ÏX
- battle_calc_mob_weapon_attack() •ÏX
- battle_calc_pc_weapon_attack() •ÏX
- pc.c
- pc_calcstatus() C³
- skill.c
- skill_get_unit_id() C³
- skill_additional_effect() C³
- skill_castend_nodamage_id() C³
- skill_castend_pos2() C³
- skill_unit_group() C³
- skill_unit_onplace() C³
- skill_unit_onout() C³
- skill_castend_pos() C³
- skill_check_condition() C³
- skill_status_change_end() C³
- skill_status_change_start() C³
- skill_can_produce_mix() C³
- skill_produce_mix() C³
- skill.h C³
- storage.c
- storage_comp_item() C³
- storage.h C³
-
---------------------
-//0976 by (“Ê)
-E“]¶ƒXƒLƒ‹‚ðC³‚µ‚½‚èFX
-E€”õ‚¾‚¯‚µ‚ÄŽÀ‘•‚Å‚«‚Ä‚È‚¢ƒXƒLƒ‹‚à‚ ‚è‚Ü‚·
- ƒ[ƒhƒiƒCƒg ƒI[ƒ‰ƒuƒŒ[ƒh ‘½•ª‚±‚ñ‚ÈŠ´‚¶H
- ƒ[ƒhƒiƒCƒg ƒpƒŠƒCƒ“ƒO ’µ‚Ë•Ô‚·‚¯‚ÇUŒ‚‚ð1‰ñŽ~‚ß‚é‚Ì‚Í–¢ŽÀ‘•
- ƒ[ƒhƒiƒCƒg ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“ ƒCƒ“ƒfƒ…ƒA`‚Í—Ç‚•ª‚©‚ç‚È‚¢‚Ì‚Å•ú’u
- ƒ[ƒhƒiƒCƒg ƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX ’Êíƒ_ƒ[ƒW‘‰Á‚Æd—ʃ_ƒ[ƒW‘‰Á‚ƈꉞ5‰ñUŒ‚(‚È‚ñ‚©ˆá‚¤‹C‚ª‚·‚é)
- ƒ[ƒhƒiƒCƒg ƒwƒbƒhƒNƒ‰ƒbƒVƒ… ƒ_ƒ[ƒW‘‰Á‚ƃXƒe[ƒ^ƒX•ÏXH
- ƒ[ƒhƒiƒCƒg ƒWƒ‡ƒCƒ“ƒgƒr[ƒg ƒ_ƒ[ƒW‘‰Á‚ƃXƒe[ƒ^ƒX•ÏXH
- ƒAƒTƒVƒ“ƒNƒƒX ƒAƒhƒoƒ“ƒXƒhƒJƒ^[ƒ‹Œ¤‹† ‚½‚Ô‚ñ‚±‚ñ‚ÈŠ´‚¶H
- ƒXƒiƒCƒp[ ƒgƒDƒ‹[ƒTƒCƒg ‚½‚Ô‚ñ‚±‚ñ‚ÈŠ´‚¶H
- ƒXƒiƒCƒp[ ƒEƒBƒ“ƒhƒEƒH[ƒN ‚½‚Ô‚ñ‚±‚ñ‚ÈŠ´‚¶H‚Å‚à‘¬“x㸂Ƃ©‚Æ‹£‡‚µ‚½Žž‚̈—‚Í–¢ŽÀ‘•
- ƒXƒpƒCƒ_[ƒEƒFƒbƒu ‚Æ‚è‚ ‚¦‚¸ƒAƒ“ƒNƒ‹ƒXƒlƒA‚Æ“¯‚¶‚悤‚ÈŠ´‚¶•‰ñ”𗦔¼Œ¸
- ƒ`ƒƒƒ“ƒsƒIƒ“ ‹¶‹CŒ÷ “K“–‚É‘‚₵‚Ä‚¢‚½‚Ì‚ð‚¿‚á‚ñ‚Æ‘‚â‚·‚悤‚É‚µ‚½
-EoŒŒó‘Ô‚ÆœÜó‘Ô‚ÌŽæ‚舵‚¢‚ª‚æ‚‚í‚©‚è‚Ü‚¹‚ñ‚ÁII
-
- (db/)
- cast_db.txt
- skill_db.txt
- skill_require_db.txt
- (doc/)
- db_ref.txt
- (map/)
- battle.c
- battle_get_str() C³
- battle_get_agi() C³
- battle_get_vit() C³
- battle_get_int() C³
- battle_get_dex() C³
- battle_get_luk() C³
- battle_get_flee() C³
- battle_get_hit() C³
- battle_get_critical() C³
- battle_get_baseatk() C³
- battle_get_atk() C³
- battle_get_atk2() C³
- battle_get_def() C³
- battle_get_def2() C³
- battle_get_speed() C³
- battle_calc_damage() C³
- clif.c
- clif_parse_WalkToXY() C³
- mob.c
- mob_can_move() C³
- mobskill_castend_pos() C³
- pc.c
- pc_calcstatus() C³
- pc_checkallowskill() C³
- skill.c
- skill_get_unit_id() C³
- skill_additional_effect() C³
- skill_castend_nodamage_id() C³
- skill_castend_pos2() C³
- skill_unit_group() C³
- skill_unit_onplace() C³
- skill_unit_onout() C³
- skill_castend_pos() C³
- skill_check_condition() C³
- skill_status_change_end() C³
- skill_status_change_start() C³
- skill_readdb() C³
- skill.h C³
---------------------
-//0975 by Sin
-E0973‚ÅŽÀ‘•‚³‚ꂽƒXƒNƒŠƒvƒg‚É‚æ‚éBaseLv, JobLv‚Ì•ÏXŽž‚ÉA
-@ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚âƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðŽæ“¾‚Å‚«‚é‚悤‚ÉC³B
-@¦Ž¿–âƒXƒŒpart5 >>115 ”Y‚ß‚él ‚³‚ñ‚Ìpc.c‚ðŽQl‚É‚³‚¹‚Ä’¸‚«‚Ü‚µ‚½B‘½ŽÓB
-
- (map/)
- pc.c
- pc_setparam()
- case SP_BASELEVEL: C³
- case SP_JOBLEVEL: C³
---------------------
-//0974 by latte
-EƒOƒ‰ƒ“ƒhƒNƒƒX‚ð–{ŽI‚ÉŠî‚«C³
- ƒAƒ“ƒfƒbƒhˆ«–‚‹§ˆÃˆÅ•t—^
- ”½“®ƒ_ƒ[ƒW”¼Œ¸Aƒ‚[ƒVƒ‡ƒ“‚È‚µ
- MOB(PC)‚ªd‚È‚Á‚½‚Æ‚«‚ÌHIT”
- %UPŒn•ŠíƒJ[ƒhŒø‰Ê‚È‚µ
- ‘®«‘Š«“ñdŒvŽZ
- MOBƒ_ƒ[ƒW•\Ž¦”’
-
- Œã”¼4€–Ú‚ÍÝ’è‰Â
-
-E퓬Šî–{ŒvŽZ‚ð–{ŽI‚ÉŠî‚«”÷C³iDEXƒTƒCƒY•â³A‹|Å’áƒ_ƒAPCƒTƒCƒY•â³j
-
-EŠ®‘S‰ñ”ð
- ƒXƒ^ƒ““™‚ÅŠ®‘S‰ñ”ð‚ª”¶‚µ‚È‚©‚Á‚½‚Ì‚ðC³
- AGIVITƒyƒiƒ‹ƒeƒB‚ªŠ®‘S‰ñ”ð‚Ì“G‚àƒJƒEƒ“ƒg‚µ‚ÄŒvŽZ‚³‚ê‚Ä‚¢‚½‚Ì‚ðC³@Ý’è‰Â
- ƒI[ƒgƒJƒEƒ“ƒ^[‚Í–¢C³
-
-E‘qŒÉ‚ð•Â‚¶‚é‚Æ‚«AƒAƒCƒeƒ€ID‚Ń\[ƒg‚·‚é‚悤‚É‚µ‚½
-
-Ekalen‚³‚ñ‚̃vƒ‚PŽ·Ž–NPCƒXƒNƒŠƒvƒg‚ð‰ü‘¢‚µ‚Ä
- ¤‹Æ–h‰q’lA“ŠŽ‘‹àŠzA•ó” ‚Ì”‚ð–{ŽI‚É€‹’(¤‹Æ’l‚Í1~100)
- ‘SÔ‚ÉÝ’u
-
- (/script/npc)
- aldeg_cas01.txt ... prtg_cas05.txt C³
- (/script/npc/gvg)
- aldeg_cas01.txt ... prtg_cas05.txt ’ljÁ
- tbox.txt ’ljÁ
-
- (/conf)
- battle_athena.conf
- 6€–ڒljÁ
-
- (/map)
- mob.c/mob.h
- mob_attack() C³
- mob_counttargeted_sub(),mob_counttargeted() C³
- mobskill_use() C³iª‚̈ø”‚¾‚¯j
- pc.c/pc.h
- pc_counttargeted_sub(),pc_counttargeted() C³
- pc_attack_timer() C³
- pet.c
- pet_attack() C³
-
- map.h
- pc_data, mob_data, map_data •Ï”‚P‚’ljÁ
- enum1‚’ljÁ
- map.c/map.h
- map_count_oncell() ’ljÁ skill.c‚Å‚æ‚©‚Á‚½‚©‚àEEE
-
- skill.c
- GXŠÖ˜AC³(skill_additional_effect(), skill_attack(), skill_castend_damage_id(), skill_unit_onplace())
-
- battle.c C³
- battle.h C³
-
- storage.c/storage.h
- storage_comp_item() ’ljÁ
- sortage_sortitem(), sortage_gsortitem() ’ljÁ
- storage_storageclose(), storage_guild_storageclose() C³
---------------------
-//0973 by Ž‚Žqo^.^o
-EƒXƒNƒŠƒvƒg‚ÌBASELEVEL,JOBLEVEL–½—ߒljÁ
- —á: set BASELEVEL,1;
- —á: set JOBLEVEL,1;
- (map/)
- pc.c
- pc_setparam()
- case SP_BASELEVEL: €–ڒljÁ
- case SP_JOBLEVEL: €–ڒljÁ
-
---------------------
-//0972 by (“Ê)
-E“]¶ƒXƒLƒ‹‚ðƒGƒtƒFƒNƒg‚¾‚¯‚¢‚‚‚©’ljÁ‚µ‚½‚è
-Eó‘ԕω»‚Í‚»‚Ì‚¤‚¿’N‚©‚ª
- ƒGƒtƒFƒNƒg(ƒXƒe[ƒ^ƒX•Ï‰»ƒAƒCƒRƒ“ŠÜ‚Þ)‚Ì‚Ý
- SC_AURABLADE: /* ƒI[ƒ‰ƒuƒŒ[ƒh */
- SC_PARRYING: /* ƒpƒŠƒCƒ“ƒO */
- SC_CONCENTRATION: /* ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“ */
- SC_TENSIONRELAX: /* ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX */
- SC_BERSERK: /* ƒo[ƒT[ƒN */
- SC_ASSUMPTIO: /* */
- SC_TURESIGHT: /* ƒgƒDƒ‹[ƒTƒCƒg */
- SC_CARTBOOST: /* ƒJ[ƒgƒu[ƒXƒg */
- SC_WINDWALK: /* ƒEƒCƒ“ƒhƒEƒH[ƒN */
-
- (db/)
- cast_db.txt
- (map/)
- skill.h
- skill.c
- SkillStatusChangeTable[] €–ڒljÁ
- skill_castend_nodamage_id() €–ڒljÁ
- skill_status_change_end() €–ڒljÁ
- skill_status_change_start() €–ڒljÁ
-
---------------------
-//0971 by (“Ê)
-Eatcommand.h‚ÉŽc‚Á‚Ä‚¢‚½jobchange2‚Æ‚©‚ÌŽcŠ[‚ðíœ
-E“]¶ƒXƒLƒ‹‚ðƒGƒtƒFƒNƒg‚¾‚¯‚¢‚‚‚©’ljÁ‚µ‚½‚èƒ`ƒƒƒ“ƒsƒIƒ“‚Í‚»‚ê‚È‚è‚ɒljÁ‚µ‚½‚è
- ƒGƒtƒFƒNƒg‚Ì‚Ý
- ƒnƒCƒvƒŠ[ƒXƒg ƒoƒWƒŠƒJ(HP_BASILICA)
- ƒzƒƒCƒgƒXƒ~ƒX ƒJ[ƒgƒu[ƒXƒg(WS_CARTBOOST)
- ƒXƒiƒCƒp[ ƒgƒDƒ‹[ƒTƒCƒg(SN_SIGHT)
- ƒWƒvƒV[ ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç(CG_MOONLIT)
- ƒpƒ‰ƒfƒBƒ“ ƒSƒXƒyƒ‹(PA_GOSPEL)
- ’ljÁƒ_ƒ[ƒW“™‚È‚µ
- ƒ[ƒhƒiƒCƒg ƒwƒbƒhƒNƒ‰ƒbƒVƒ…(LK_HEADCRUSH)
- ƒ[ƒhƒiƒCƒg ƒWƒ‡ƒCƒ“ƒgƒr[ƒg(LK_JOINTBEAT)
- ƒ[ƒhƒiƒCƒg ƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX(LK_SPIRALPIERCE)
- ƒpƒ‰ƒfƒBƒ“ ƒvƒŒƒbƒVƒƒ[(PA_PRESSURE)
- ƒpƒ‰ƒfƒBƒ“ ƒTƒNƒŠƒtƒ@ƒCƒX(PA_SACRIFICE)
- ‚»‚ê‚È‚è(ƒRƒ“ƒ{‚ÍŒq‚ª‚è‚Ü‚·‚ªƒfƒBƒŒƒC‚Í“K“–Aƒ_ƒ[ƒW’ljÁ‚Í‚ ‚邯‚Ç‚»‚êˆÈŠO‚̒ljÁŒø‰Ê‚Í–³‚µ)
- ƒ`ƒƒƒ“ƒsƒIƒ“ –ÒŒÕd”hŽR(CH_PALMSTRIKE)
- ƒ`ƒƒƒ“ƒsƒIƒ“ •šŒÕŒ(CH_TIGERFIST)
- ƒ`ƒƒƒ“ƒsƒIƒ“ ˜A’Œ•öŒ‚(CH_CHAINCRUSH)
- ƒ`ƒƒƒ“ƒsƒIƒ“ ‹¶‹CŒ÷(CH_SOULCOLLECT)
-
- (db/)
- cast_db.txt
- skill_db.txt
- skill_require_db.txt
- (map/)
- atcommand.h ƒSƒ~íœ
- battle.c
- battle_calc_pet_weapon_attack() •ÏX
- battle_calc_mob_weapon_attack() •ÏX
- battle_calc_pc_weapon_attack() •ÏX
- clif.c
- clif_parse_UseSkillToId() •ÏX
- skill.c
- skill_get_unit_id() €–ڒljÁ
- skill_attack() ƒ`ƒƒƒ“ƒsƒIƒ“ƒRƒ“ƒ{ˆ—’ljÁ
- skill_castend_damage_id() •ÏX
- skill_castend_nodamage_id() •ÏX
- skill_castend_id() •ÏX
- skill_unitsetting() •ÏX
- skill_check_condition() •ÏX
- skill_use_id() •ÏX
-
---------------------
-//0970 by (“Ê)
-EƒhƒŒƒCƒN‚̃EƒH[ƒ^[ƒ{[ƒ‹‚ªˆÙí‚É’É‚¢(121”H‚炤)‚Ì‚ÅLv5ˆÈã‚ÌꇂÍ25”‚ɧŒÀ
-EƒVƒOƒiƒ€ƒNƒ‹ƒVƒX‚ÌŒvŽZŽ®‚ð14+SkillLv‚©‚ç10+SkillLv*2•ÏX
-Eƒ\[ƒX‚Ì‹C‚ªŒü‚¢‚½‚Æ‚±‚ë‚É—Ž‘‚«
-EDBŠÖŒW‚ð‚Ü‚Æ‚ß‚Ä“¯«
-
- (map/)
- battle.c ƒRƒƒ“ƒgQY(BB)¶·¶·
- skill.c skill_status_change_start()
- (db/)
- cast_db.txt
- item_db.txt
- mob_skill_db.txt
- skill_db.txt
- skill_require_db.txt
- skill_tree.txt
-
---------------------
-//0969 by ‚Ò‚´‚Ü‚ñ
-
-E”’nŽæ‚èó‘ԂŕЕû‚ªŽ€–S‚µ‚½ê‡A•Ð•û‚Ì”’nŽæ‚肪‰ðœ‚³‚ê‚È‚¢–â‘èC³
-Ebattle_athena.conf‚É€–ڒljÁ
-@ƒyƒbƒgEƒvƒŒƒCƒ„[Eƒ‚ƒ“ƒXƒ^[‚Ì–³‘®«’ÊíUŒ‚‚ð‘®«–³‚µ‚É‚·‚é‚©”Û‚©‚ðÝ’è‚Å‚«‚Ü‚·
-@Ú‚µ‚‚Íconf_ref‚ðB
-E—ƒRƒ}ƒ“ƒh@idsearchŽÀ‘•
-@ƒ[ƒh‚µ‚½item_db‚©‚猟õŒê‹å‚Ƀ}ƒbƒ`‚·‚éƒAƒCƒeƒ€‚ÆID‚ð—…—ñ‚·‚éƒRƒ}ƒ“ƒh‚Å‚·
-@—Ⴆ‚Îu@idsearch ƒŒƒCv‚Æ“ü—Í‚µ‚½ê‡AƒuƒŒƒCƒh‚⃌ƒCƒhƒŠƒbƒNƒJ[ƒh“™‚ªˆø‚Á‚©‚©‚è‚Ü‚·
-EƒAƒVƒbƒhƒeƒ‰[‚ƃfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“ŽÀ‘•
-@‘•”õ”j‰ó‚Í–¢ŽÀ‘•‚Å‚·
-EƒCƒhƒDƒ“‚Ì—ÑŒç‚̉ñ•œŽd—l‚ðŠÛ‚²‚Æ•ÏXB
- (map/)
- battle.c
- battle.h
- ‘®«•â³‚ÌC³‚âƒAƒVƒbƒhƒeƒ‰[Eƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“‚̃_ƒ[ƒWŽZoŽ®’ljÁ“™B
- battle_config‚É€–ڒljÁ
- skill.c
- skill_idun_heal()’ljÁBforeachinarea‚ň—‚·‚é‚悤‚É•ÏX
- ƒAƒVƒbƒhƒeƒ‰[‚ƃfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“‚̈—’ljÁB
- atcommand.c
- atcommand.h
- @idsearch’ljÁB
-
---------------------
-//0968 by ŒÓ’±—–
-
-EƒLƒƒƒ‰ƒNƒ^[ID‚ªŽg‚¢‚܂킳‚ê‚È‚¢‚悤‚ÉC³
-EƒLƒƒƒ‰ƒNƒ^[휎žAƒp[ƒeƒB[AƒMƒ‹ƒh‚ð’E‘Þ‚·‚é‚悤‚ÉC³
-EƒAƒJƒEƒ“ƒg휎žAƒLƒƒƒ‰ƒNƒ^[‚Æ‘qŒÉ‚ð휂·‚é‚悤‚ÉC³
-E‘qŒÉ/ƒMƒ‹ƒh‘qŒÉ휎žA‘qŒÉ“à‚̃yƒbƒg‚ð휂·‚é‚悤‚ÉC³
- E’ˆÓFƒƒOƒCƒ“‚µ‚Ä‚¢‚éƒAƒJƒEƒ“ƒg‚ð휂µ‚½ê‡‚Ì“®ì‚Í•s–¾
-
- (char/)
- char.c
- ƒpƒPƒbƒg2730‚̈—Achar_delete()’ljÁA휈—C³‚È‚Ç
- int_storage.c/int_party.c/int_guild.c/int_party.h/int_guild.h
- inter_party_leave(),inter_guild_leave()’ljÁA
- inter_storage_delete(),inter_guild_storage_delete()C³‚È‚Ç
- (login/)
- login.c
- parse_admin()‚ðƒAƒJƒEƒ“ƒg휎ž‚ɃpƒPƒbƒg2730‚ð‘—‚é‚悤‚ÉC³
-
-Eathena-start stop ‚Å’âŽ~‚³‚¹‚½ê‡Aƒf[ƒ^‚ª•Û‘¶‚³‚ê‚È‚¢–â‘è‚ðC³
- kill‚Å‘—‚éƒVƒOƒiƒ‹‚ðSIGKILL‚©‚çSIGTERM‚É•ÏXB
- ‚Ç‚¤‚µ‚Ä‚àSIGKILL‚𑗂肽‚¢ê‡‚Í athena-start kill ‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B
-
- athena-start
- stopC³Akill’ljÁ
-
---------------------
-//0967 by Asong
-Eƒ‚ƒ“ƒXƒ^[‚ÌŽc‰e‚ðŽÀ‘•B
-@’Ê탂ƒ“ƒXƒ^[‚̓XƒLƒ‹‚É‚æ‚éƒtƒBƒ‹ƒ^[‚ª‚©‚©‚ç‚È‚¢‚Ì‚ÅŽc‘œ‚ªo‚Ü‚¹‚ñB
-@‚o‚bŒ^ƒ‚ƒ“ƒXƒ^[‚É‚ÍŽc‘œ‚ªo‚Ü‚·B
-Eƒ‚ƒ“ƒXƒ^[ƒXƒLƒ‹Žg—p‘ÎÛ‚ð’ljÁB
-@around5`around8‚̓^[ƒQƒbƒg‚ÌŽü•ÓƒZƒ‹‚ð‘ÎÛ‚É‚µ‚Ü‚·B
-@
-@ (map)
-@ mob.c
-@ mobskill_use() C³
-@ mob_readskill() C³
-@ mob.h C³
-@ skill.c
-@ skill_castend_pos2() C³
-
---------------------
-//0966 by (“Ê)
-EƒT[ƒo[snapshot
-EƒfƒBƒŒƒNƒgƒŠ\‘¢‚ð•ÏX(common,login,char,map‚Í/srcˆÈ‰º‚Ɉړ])
-@‚»‚ê‚É”º‚¤Makefile“™‚̃pƒX‘‚«Š·‚¦
-Enpc_turtle.txt‚ðnpc_town_alberta.txt‚É“‡
-Eƒ‚ƒ“ƒN‚̃Rƒ“ƒ{‚ÉŠÖ‚·‚éƒfƒBƒŒƒC‚ð•ÏX
-Ebattle_config.enemy_critical‚̃fƒtƒHƒ‹ƒg‚ðno‚É•ÏX
-E“]¶E“™‚𖳌ø‚É‚·‚éenable_upper_class‚̒ljÁ
-E@joblvup,@charjlvl‚ÅJobƒŒƒxƒ‹‚ªÅ‚‚Ì‚Æ‚«‚É•‰”‚ðŽw’肵‚Ä‚àƒŒƒxƒ‹‚ð‰º‚°‚ç‚ê‚È‚©‚Á‚½–â‘è‚ðC³
-
- (conf)
- battle_athena.conf C³
- (doc)
- conf_ref.txt C³
- (map)
- atcommand.c
- atcommand_joblevelup() C³
- atcommand_character_joblevel() C³
- battle.c
- battle_calc_attack() C³
- battle_config_read() C³
- battle.h C³
- pc.c
- pc_calc_skilltree() C³
- pc_calc_base_job() C³
- pc_jobchange() C³
- pc_readdb() C³
- skill.c
- skill_attack() C³
---------------------
-//0965 by ‚Ò‚´‚Ü‚ñ
-E@mapexitŽÀsŽž‘SƒZƒbƒVƒ‡ƒ“‚ðkick‚·‚é‚悤‚É•ÏXB
-E”’nŽæ‚莞‚ɕЕû‚ª“|‚ê‚Ä‚àA‚à‚¤•Ð•û‚Ì”’n‚ª‰ðœ‚³‚ê‚È‚¢–â‘èC³B(–¢ƒeƒXƒg)
-EƒXƒeƒB[ƒ‹î•ñŒöŠJ‹@”\ŽÀ‘•B(–¢ƒeƒXƒg)
-@ƒXƒeƒB[ƒ‹‚ɬŒ÷‚·‚é‚ÆA‰½‚ðƒXƒeƒB[ƒ‹‚µ‚½‚Ì‚©
-@‰æ–Ê“à‚ÌPTƒƒ“ƒo[‘Sˆõ‚É’m‚点‚é‹@”\‚Å‚·B
-@battle_athena.conf‚Ìshow_steal_in_same_party‚ÅÝ’è‚Å‚«‚Ü‚·B
-@ƒIƒŠƒWƒiƒ‹ƒAƒbƒvƒf[ƒg‚̈×AƒfƒtƒHƒ‹ƒg‚Íno‚É‚µ‚Ä‚¢‚Ü‚·B
-EƒCƒhƒDƒ“‚Ì—ÑŒç‚̉ñ•œŒø‰ÊŽÀ‘•B
-
- (conf/)
- battle_athena.conf‚É€–ڒljÁB
- (map/)
- atcommand.c
- atcommand_mapexit() C³B
- pc.c
- pc_steal_item() C³B
- pc_show_steal() ’ljÁB
- skill.c
- skill_unitsetting()Askill_unit_onplace() C³B
- battle.c
- battle_config_read() C³B
- battle.h C³B
- (doc/)
- conf_ref.txt ”²‚¯‚Ä‚½‚Ì‚ðFX’ljÁB
-
---------------------
-//0964 by (“Ê)
-
-E‚±‚Ì‘O’ljÁ‚µ‚½skill_tree2.txt‚ð”pŽ~‚µ‚½‚Ì‚Å휂µ‚Ä‚‚¾‚³‚¢
-Eskill_tree.txt‚̃tƒH[ƒ}ƒbƒg‚ð•ÏX•Kalen‚³‚ñ‚È‚Ç‚Ìî•ñ‚ðŒ³‚É“]¶ƒcƒŠ[‚ÌŒ©’¼‚µ
-E‚»‚ê‚É‚Æ‚à‚È‚Á‚Äpc.c‚̃tƒ@ƒCƒ‹“Ç‚Ýo‚µ•”•ª‚È‚Ç‚ð•ÏX
-EAthenaŽG’kƒXƒŒƒbƒh part3 >>14 miya‚³‚ñ‚ÌŽw“E‚ª‚ ‚é‚Ü‚Å‚·‚Á‚©‚è–Y‚ê‚Ä‚¢‚½atcommand_athena.conf‚ÌC³‚𓯫
-
- (conf/)
- atcommand_athena.conf C³
- (db/)
- skill_tree.txt C³
- skill_tree2.txt ”pŽ~
- (map/)
- map.h PC_CLASS_BASE“™’ljÁ
- pc.c
- pc_calc_skilltree() C³
- pc_allskillup() C³
- pc_readdb() C³
-
---------------------
-//0963 by (“Ê)
-
-E@jobchange2, @jobchange3”pŽ~ @jobchange‚Ɉø”’ljÁ @helpŽQÆ
- —á: @jobchange2 10 ¨ @jobchange 10 1
-E“¯—l‚É@charjob2, @charjob3”pŽ~ @charjob‚Ɉø”’ljÁ @helpŽQÆ
- —á: @charjob2 10 ‚Ù‚°‚Ù‚° ¨ @charjob 10 1 ‚Ù‚°‚Ù‚°
-E“¯—l‚ɃXƒNƒŠƒvƒg‚Ìjobchange2, jobchange3–½—ß”pŽ~ jobchange‚Ɉø”’ljÁ script_ref.txtŽQÆ
- —á: jobchange2 10; ¨ jobchange 10,1;
-Eª‚Ç‚ê‚à’ljÁ‚³‚ꂽˆø”‚ÍÈ—ª‰Â”\‚Å‚·B‚È‚Ì‚ÅA“]¶ƒm[ƒrƒX‚ÍŒ»ó‚̃XƒNƒŠƒvƒg‚Å“]¶ˆêŽŸE‚É“]E‚Å‚«‚Ü‚·B
- —á: Novice High ¨ @jobchange 10 ¨ Whitesmith
- Novice ¨ @jobchange 10 ¨ Blacksmith
-EƒXƒNƒŠƒvƒg‚©‚ç“]¶‚µ‚Ä‚¢‚é‚©”»’è‚·‚邽‚ß‚ÉUpper‚ð’ljÁ‚µ‚Ü‚µ‚½BUpper 0=’Êí, 1=“]¶, 2=—{Žq
- Upper=0‚ÌŽž‚ÉBaseLevel=99‚È‚ç“]¶‚³‚¹‚é`‚Æ‚©‚»‚¤‚¢‚¤ƒXƒNƒŠƒvƒg’N‚©‘‚¢‚Ä‚‚¾‚³‚¢
- ‚»‚ÌŽž‚ÉŒ³‚ÌE‹Æ‚Í‹L‰¯‚µ‚Ä‚¢‚È‚¢‚̂ʼni‘±•Ï”‚Æ‚©‚ÅŠo‚¦‚³‚¹‚Ä”»’肳‚¹‚È‚¢‚Æ“]¶Œã‰½‚É‚Å‚à“]E‚Å‚«‚¿‚ႤH
-EƒoƒCƒIƒvƒ‰ƒ“ƒg‚ƃXƒtƒBƒAƒ}ƒCƒ“‚ŌĂÑo‚³‚ê‚éMob‚Ì–¼‘O‚ð--ja--‚É‚µ‚Ämob_db.txt‚©‚ç“ǂނ悤‚É‚µ‚½
-
- (conf/)
- help.txt C³
- (db/)
- const.txt
- (doc/)
- help.txt C³
- script_ref.txt C³
- (map/)
- atcommand.c
- atcommand_jobchange() C³
- atcommand_jobchange2() íœ
- atcommand_jobchange3() íœ
- atcommand_character_job() C³
- atcommand_character_job2() íœ
- atcommand_character_job3() íœ
- map.h C³
- pc.c
- pc_readparam() C³
- pc_jobchange() C³
- pc.h C³
- script.c
- buildin_jobchange() C³
- buildin_jobchange2() íœ
- buildin_jobchange3() íœ
- skill.c
- skill_castend_pos2() C³
-
---------------------
-//0962 by (“Ê)
-
-EE‹Æ‚Í0`23‚ň—‚µ‚½‚¢‚Ì‚Å“]¶E—p‚̃XƒLƒ‹ƒcƒŠ[’ljÁAeAthena‚ðŽQl‚ÉŠg’£
- ‚Á‚Ä‚¢‚¤‚©ŠØ‘–{ƒT[ƒo‚Å‚ÌŽÀ‘•‚ÌŽ‘—¿‚ªŒ©“–‚½‚ç‚È‚¢‚Ì‚Å“K“–
-Esakexe.exe‚ð‰ðÍ‚µ‚Äskill_db.txt•ÏXA‚±‚ê‚àeAthena‚ðŽQl‚ÉŠg’£
- ‚ǂꂪ–{ƒT[ƒo‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚éƒXƒLƒ‹‚©•ª‚©‚è‚Ü‚¹‚ñ‚ÁII
-¦ƒXƒLƒ‹ƒcƒŠ[‚ª•\Ž¦‚³‚ꂽ‚©‚ç‚Æ‚¢‚Á‚ÄŽg‚¦‚é‚킯‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ÁII
-
- (common/)
- mmo.h ’è”C³
- (db/)
- skill_db.txt •ÏX
- skill_require_db.txt •ÏX
- skill_tree2.txt ’ljÁ
- (map/)
- skill.h ’è”C³
- pc.c
- pc_calcstatus() C³
- pc_allskillup() C³
- pc_calc_skilltree() C³
- pc_readdb() C³
-
---------------------
-//0961 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚ɃTƒuƒ‹[ƒ`ƒ“/ƒ†[ƒU[’è‹`ŠÖ”‹@”\’ljÁ
- Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚Æscript_ref.txt‚ð“Ç‚ñ‚Å‚‚¾‚³‚¢B
- ’n–¡‚É‘å‰ü‘¢‚È‚Ì‚ÅAƒXƒNƒŠƒvƒgŠÖŒW‚ŃoƒO‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-
- (map/)
- map.h/map.c
- struct map_session_data ‚ɃXƒNƒŠƒvƒgî•ñ‘Þ”ð—p‚̃ƒ“ƒo’ljÁ
- map_quit()C³
- script.h/script.c
- FXC³(run_script(),run_func()‚ªŽå)
- npc.c
- npc_parse_function()’ljÁ‘¼
- (conf/sample)
- npc_test_func.txt
- ƒ†[ƒU[’è‹`ŠÖ”/ƒTƒuƒ‹[ƒeƒBƒ“‚̃eƒXƒgƒXƒNƒŠƒvƒg
- (doc/)
- script_ref.txt
- ƒTƒuƒ‹[ƒeƒBƒ“‚È‚Ç‚Ìà–¾’ljÁ
-
---------------------
-//0960 by (“Ê)
-E–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>62 KK‚³‚ñ‚̃Aƒ“ƒNƒ‹ƒXƒlƒAC³‚𓯫
-EƒoƒO•ñƒXƒŒƒbƒh part5 >>14-16 rb‚³‚ñ‚̃oƒOC³‚𓯫
-EFor English User Forum >>15 Mugendai‚³‚ñ‚ÌŽw“E‚Å0x1d7‚ðŽg‚¤‚Ì‚ÍVal>255‚ÉC³(0xc3‚ÌVal‚Í1ƒoƒCƒg‚¾‚©‚ç0x1d7‚ðŽg‚¤‚Ì‚©‚Æ”[“¾)
-Epc_calc_base_job()‚ð•ÏX‚µ‚ÄŒ³job‚¾‚¯‚Å‚È‚ƒmƒr‚©ˆêŽŸE‚©“ñŽŸE(type)A’Êí‚©“]¶‚©—{Žq(upper)‚ð•Ô‚·‚悤‚É‚µ‚½
-
- (map/)
- atcommand.c
- atcommand_joblevelup() C³
- atcommand_character_joblevel() C³
- clif.c
- clif_changelook() C³
- pc.h C³
- pc.c
- pc_setrestartvalue() C³
- pc_equippoint() C³
- pc_isequip() C³
- pc_calc_skilltree() C³
- pc_calcstatus() C³
- pc_isUseitem() C³
- pc_calc_base_job() C³
- pc_allskillup() C³
- pc_damage() C³
- pc_jobchange() C³
- pc_equipitem() C³
- script.c
- buildin_changesex() C³
- skill.c
- skill_castend_nodamage_id() C³
- skill_unit_onplace() C³
-
---------------------
-//0959 by (“Ê)
-Ehelp.txt‚ªdoc‚¶‚á‚È‚‚Äconf‚Ì‚ª“Ç‚Ýo‚³‚ê‚Ä‚½Q|P|›
-Egamejoke‚ðŽQl‚É“]¶“ñŽŸE‚̃Xƒe[ƒ^ƒX‰Ád’l‚ðjob_db2-2.txt‚É‹Lq
-EƒXƒNƒŠƒvƒg‚Éjobchange2‚Æjobchange3‚ð’ljÁ‚»‚ꂼ‚ê“]¶E‚Æ—{ŽqE‚Ö“]E‚³‚¹‚é–½—ß‚Å‚·
-
- (conf/)
- help.txt C³
- (db/)
- job_db2.txt C³
- job_db2-2.txt ’ljÁ
- (doc/)
- help.txt C³
- script_ref.txt C³
- (map/)
- pc.c
- pc_calcstatus() C³
- pc_readdb() C³
- script.c
- buildin_jobchange() C³
- buildin_jobchange2() ’ljÁ
- buildin_jobchange3() ’ljÁ
-
---------------------
-//0958 by (“Ê)
-E“]¶E•û–Ê‚ÌŽÀ‘•‚ðFX
-Ed—ʧŒÀ‚Í—Ç‚•ª‚©‚ç‚È‚¢‚Ì‚ÅŒ³‚ÌE‹Æ‚Ì’l‚ð‚»‚Ì‚Ü‚ÜŽg‚Á‚Ä‚¢‚Ü‚·(ƒ‚ƒ“ƒNƒ`ƒƒƒ“ƒsƒIƒ““™)
-E‘•”õ•i‚à“¯ãAHP‚âSP‚̃e[ƒuƒ‹‚à“¯ã‚È‚Ì‚ÅA“]¶‚µ‚Ä‚àHP‚È‚Ç‚ª‘‚¦‚È‚¢ƒKƒbƒJƒŠŽd—l‚Å‚·
-
- (map/)
- atcommand.c
- atcommand_joblevelup() C³
- atcommand_character_joblevel() C³
- pc.c
- pc_setrestartvalue() C³
- pc_equippoint() C³
- pc_isequip() C³
- pc_calcstatus() C³
- pc_isUseitem() C³
- pc_calc_base_job() ’ljÁ
- pc_damage() C³
- pc_jobchange() C³
- pc_equipitem() C³
- pc.h C³
- script.c
- buildin_changesex() C³
- skill.c
- skill_castend_nodamage_id() C³
-
---------------------
-//0957 by (“Ê)
-E@charjob2‚Æ@charjob3‚ð’ljÁAŠÖŒW‚Æ‚µ‚Ä‚Í@charjobÌ@jobchangeA@charjob2Ì@jobchange2A(ry
-E@mapexit‚ð’ljÁAmap-server‚ð—Ž‚Æ‚·ƒRƒ}ƒ“ƒh‚Å‚·atcommand_athena.conf‚Å‚Í99Ý’è‚É‚³‚ê‚Ä‚Ü‚·‚Ì‚ÅŽg—p‚É‚Í\•ª’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
-
- (map/)
- atcommand.c
- atcommand_character_job2() ’ljÁ
- atcommand_character_job3() ’ljÁ
- atcommand.h C³
- (conf/)
- atcommand_athena.conf C³
- (doc/)
- help.txt C³
-
---------------------
-//0956 by (“Ê)
-E“]¶E‰¼ŽÀ‘•(@jobchange2)AŒ©‚½–Ú‚ÆŒoŒ±’lƒe[ƒuƒ‹‚¾‚¯‚Å‚·
-E—{ŽqE‰¼ŽÀ‘•(@jobchange3)AŒ©‚½–Ú‚¾‚¯‚Å‚·Œ»ó‚Å‚ÍŒoŒ±’l‚Í“]¶“ñŽŸE‚Æ“¯‚¶‚Æ‚¢‚¤ƒ}ƒ]Žd—l
-¦ã‹L2“_‚Í“]¶E‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚éƒNƒ‰ƒCƒAƒ“ƒg‚Å‚È‚¯‚ê‚ÎŽÀs‚·‚é‚ƃGƒ‰[—Ž‚¿‚·‚é‚Ì‚Å’ˆÓII
-@‚»‚̌㒼ڃZ[ƒuƒf[ƒ^‚ð˜M‚ç‚È‚¢‚ƃLƒƒƒ‰ƒZƒŒ‚É‚às‚¯‚È‚‚È‚è‚Ü‚·II
-EAthenaŽG’kƒXƒŒƒbƒh part2 >>149 ‹HŽ}‚³‚ñ‚Ì•ñ‚ðŒ³‚ÉƒK[ƒfƒBƒAƒ“‚ðC³
-EԈȊO‚ŃK[ƒfƒBƒAƒ“‚Æ‚©ƒGƒ“ƒyƒŠƒEƒ€‚ð‰£‚é‚Æmap-server‚ª—Ž‚¿‚Ä‚¢‚½‚Ì‚àC³(–¢Šm”F)
-EƒXƒpƒmƒr‚ÌJobƒe[ƒuƒ‹‚ÍFor English User Forum >>13 kingbo‚³‚ñ‚̃f[ƒ^‚ðŒ³‚ÉC³
-E“]¶E‚ÌŒoŒ±’lƒe[ƒuƒ‹‚ÍOWN‚ðŽQÆ‚µ‚ÄBase99‚ÌŒoŒ±’l‚Í•s–¾‚¾‚Á‚½‚Ì‚Å“K“–‚ÉÝ’è
-
- (map/)
- atcommand.c
- atcommand_jobchange() C³
- atcommand_jobchange2() ’ljÁ
- atcommand_jobchange3() ’ljÁ
- atcommand.h C³
- clif.c
- clif_changelook() C³
- pc.c
- pc_nextbaseexp() C³
- pc_nextjobexp() C³
- pc_jobchange() C³
- pc_readdb() C³
- battle.c
- battle_calc_damage() C³
- mob_can_reach() C³
-
---------------------
-//0955 by huge
-Eƒyƒbƒg‚̃‹[ƒg‹@”\B
- EŽd—l‚Ímob‚̃‹[ƒg‚É‹ß‚¢Š´‚¶‚Å‚·‚ªAŽË’ö‚ð’Z‚‚µ‚Ä‚Ü‚·B
- EE‚Á‚½ƒAƒCƒeƒ€‚ÍAƒpƒtƒH[ƒ}ƒ“ƒX‚ð‚·‚é‚Æ°‚É—Ž‚Æ‚µ‚Ü‚·B
- E—‘‚É–ß‚µ‚½‚èAƒƒOƒIƒt‚µ‚½‚Æ‚«‚ÍPC‚̎茳‚É“ü‚é‚悤‚É‚µ‚Ü‚µ‚½B(d—Ê’´‰ß‚̓hƒƒbƒv)
- EE‚¦‚éŒÂ”‚̓‹[ƒgmob“¯—l‚Ì10ŒÂ‚Å‚·‚ªA11ŒÂ–Ú‚ÍE‚¢‚És‚«‚Ü‚¹‚ñB
- Eƒ‹[ƒgŒ ‚Ì–â‘è‚©‚çAƒAƒCƒeƒ€‚Éfirst_id‚ª“ü‚Á‚Ä‚¢‚ÄA‚»‚ꂪŽ”‚¢ŽåˆÈŠO‚¾‚Á‚½‚çA‰½•bŒo‚Æ‚¤‚ÆE‚¢‚Ü‚¹‚ñB(–¢Šm”F)
- E‚»‚ê‚ÆA‰×•¨Ž‚¿‚É‚³‚ê‚é‚Ɖˆ£‘z‚È‚Ì‚ÅAd—ʧŒÀ‚à‚‚¯‚Ü‚µ‚½B‚±‚ê‚Íconf‚ÅÝ’è‰Â”\‚Å‚·B
-Eatcommand‚ÅA@where‚ª‚¤‚Ü‚“‚¢‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³(‚Ü‚½ƒEƒ`‚¾‚¯‚©‚È‚Ÿ¥¥¥j
-E@memo‚Åmemo‚·‚鎞‚ÍAmapflag‚𖳎‹‚·‚é‚悤‚ÉB
-EƒXƒtƒBƒAƒ}ƒCƒ“‚Ì–¼‘O‚¾‚¯C³B
-
- (conf/)
- battle_athena.conf
- pet_lootitem,pet_weight ’ljÁ
- (doc/)
- conf_ref.txt C³
- (map/)
- atcommand.c
- atcommand_memo() C³
- atcommand_where() C³
- battle.c
- battle_config_read() C³
- battle.h C³
- map.c
- map_quit() C³
- map.h
- pet_data{} C³
- pc.c
- pc_memo() C³
- pet.c
- pet_performance() C³
- pet_return_egg() C³
- pet_data_init() C³
- pet_ai_sub_hard() C³
- pet_lootitem_drop() ’ljÁ
- pet_delay_item_drop2() ’ljÁ
- pet_ai_sub_hard_lootsearch() ’ljÁ
- pet.h C³
- skill.c
- skill_castend_pos2() C³
-
---------------------
-//0954 by (“Ê)
-Eobject_del.bat‚ÅŠeserver.exe‚à휂·‚é‚悤‚É‚µ‚½
-EFor English User Forum >>11 kingbo‚³‚ñ‚ÌC³‚ðŽæ‚èž‚Ý
-EƒoƒO•ñƒXƒŒƒbƒh part5 >>10 Sin‚³‚ñ‚ÌC³‚ðŽæ‚èž‚Ý
-E‚‚¢‚Å‚ÉŒ©‚©‚¯‚½atcommand_character_joblevel‚Ì•s‹ï‡‚ðC³
-E@ƒRƒ}ƒ“ƒh‚ŃWƒ‡ƒuƒŒƒxƒ‹‚ðã‚°‚é‚Æ‚«‚ɃXƒpƒmƒr‚ÍJob70‚܂őΉž(–¢Šm”F)
-
- (/)
- object_del.bat C³
- (map/)
- atcommand.c
- atcommand_joblevelup() C³
- atcommand_character_joblevel() C³
- atcommand_character_baselevel() C³
-
- code by kingbo 2004/4/29 PM 06:15
- base on 0953
- now i sure it works well
- (map/)
- mob.c
- mob_can_reach() fix
-
---------------------
-//0953 by (“Ê)
-Emob_skill_db.txt‚ÌðŒ’l‚É0ˆÈŠO“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ð’ù³
-Egcc 2.95‚ŃRƒ“ƒpƒCƒ‹‚Å‚«‚é‚悤‚É’ù³(by ƒoƒOƒXƒŒpart5 >>2 ˆ©‚³‚ñ)
-Eª‚âLinux‚È‚Ç‚ðl—¶‚µ‚Ästart‚âMakefile‚Ȃǂ̉üs‚ðLF‚É•ÏX
-E0952‚Åo‚½ƒRƒ“ƒpƒCƒ‹Œx‚ðo‚È‚¢‚悤‚ÉC³
-E0952‚ÅXV‚³‚ê‚È‚©‚Á‚½conf_ref.txt‚ðC³
-
- (/)
- start ‰üsƒR[ƒh•ÏX
- athena-start ‰üsƒR[ƒh•ÏX
- (db/)
- mob_skill_db.txt C³
- (doc/)
- conf_ref.txt C³
- (login/)
- Makefile ‰üsƒR[ƒh•ÏX
- (map/)
- Makefile ‰üsƒR[ƒh•ÏX
- atcommand.c
- atcommand() 錾ˆÊ’uC³
- atcommand_where() 錾ˆÊ’uC³
- battle.c
- battle_calc_pet_weapon_attack() C³
- battle_calc_mob_weapon_attack() C³
- battle_calc_pc_weapon_attack() C³
- battle_calc_magic_attack() C³
- clif.c
- clif_skill_fail() 錾ˆÊ’uC³
- guild.c
- guild_gvg_eliminate_timer() 錾ˆÊ’uC³
- mob.c
- mob_damage() 錾ˆÊ’uC³
- script.c
- buildin_deletearray() 錾ˆÊ’uC³
- buildin_getequipcardcnt() 錾ˆÊ’uC³
- buildin_successremovecards() 錾ˆÊ’uC³
-
---------------------
-//0952 by CG
-Econf‚ÅDEF‚ÆMDEF‚ÌŒvŽZ•û–@‚ð‘I‘ð‚Å‚«‚é‚悤‚ÉB
-
- (conf/)
- battle_athena.conf •ÏX
- (map/)
- battle.c
- battle_calc_pet_weapon_attack() C³
- battle_calc_mob_weapon_attack() C³
- battle_calc_pc_weapon_attack() C³
- battle_calc_magic_attack() C³
- battle.h C³
-
---------------------
-//0951 by (“Ê)
-EƒT[ƒo[snapshot
-EƒoƒO•ñƒXƒŒƒbƒh part4 >>95 KAJIKEN‚³‚ñ‚ÌC³‚𓯫
-E“¯ >>138 ƒoƒO‚©‚ÈH‚³‚ñ‚ÌC³‚𓯫
-EAthenaŽG’kƒXƒŒƒbƒh part2 >>112 –¼–³‚µ‚³‚ñ‚ÌPVPƒiƒCƒgƒƒAƒ‚[ƒh‚̃Aƒ“ƒ_[ƒNƒƒXƒ}ƒbƒvƒ[ƒvƒ|ƒCƒ“ƒg‚𓯫
-E“¯ >>96 ‹HŽ}‚³‚ñ‚Ìnpc_gldcheck.txt‚𓯫
-EƒXƒiƒbƒvƒVƒ‡ƒbƒg‚Ésave/‚ð“ü‚ê‚é‚Ì‚ð‚â‚ß‚Ü‚µ‚½B–³‚¢ê‡‚Íathena-start‚ªì‚Á‚Ä‚‚ê‚Ü‚·
-Eathena-start‚Ålog/‚ª–³‚¢ê‡‚Éì‚é‚悤‚É•ÏX
-E‚»‚Ì‘¼H
-
- (/)
- athena-start •ÏX
- (db/)
- mob_db.txt •ÏX
- (conf/)
- map_athena.conf •ÏX
- (conf/extension/)
- npc_gldcheck.txt ’ljÁ
- (conf/npc/)
- npc_event_ice.txt •ÏX
- npc_job_alchemist.txt •ÏX
- npc_event_valentine.txt •ÏX
- npc_town_geffen.txt •ÏX
- npc_event_whiteday.txt •ÏX
- npc_event_potion.txt •ÏX
- npc_town_comodo.txt •ÏX
- (conf/warp/)
- npc_warp_pvp.txt ’ljÁ
-
---------------------
-//0950 by (“Ê)
-Emob_db‚ÌModeƒtƒ‰ƒO‚Ɉȉº‚Ì•¨‚ð’ljÁ
- 0x40(64) ƒ_ƒ[ƒW‚ð1‚ɌŒè(‘‚âƒNƒŠƒXƒ^ƒ‹‚È‚Ç)
- 0x80(128) UŒ‚‚ðŽó‚¯‚½‚Æ‚«‚É”½Œ‚‚ð‚·‚é
-Eã‹L‚Ì•ÏX‚Ì‚½‚ßmob_db.txt‚Ù‚Ú‘S•”•ÏXAmob_db2.txt‚ðì‚Á‚Ä‚¢‚él‚Í
- ‘‚È‚Ç1ƒ_ƒŒÅ’è‚É‚ÍMode‚É64‚ð‘«‚³‚È‚¢‚Æ•’ʂɃ_ƒ[ƒW
- ‚»‚Ì‘¼Mob‚ÍMode‚É128‚ð‘«‚³‚È‚¢‚Æ”½Œ‚‚µ‚Ä‚±‚È‚‚È‚é‚Ì‚Å’ˆÓ
-
- (db/)
- mob_db.txt C³
- (map/)
- battle.c
- battle_calc_pet_weapon_attack()
- battle_calc_mob_weapon_attack()
- battle_calc_pc_weapon_attack()
- battle_calc_magic_attack()
- mob.c
- mob_once_spawn()
- mob_attack()
- mob_target()
- mob_ai_sub_hard()
-
---------------------
-//0949 by ‚Ò‚´‚Ü‚ñ
-
-EƒXƒe[ƒ^ƒXˆÙí‘Ï«‘S–ÊC³B
-@‘Ï«ŽZoŽ®‘S–ÊC³B
-@ƒXƒe[ƒ^ƒXˆÙí‘Ï«100%‚̃Lƒƒƒ‰ƒNƒ^[‚É‚Íó‘ÔˆÙí‚ðs‚í‚È‚¢‚悤‚ÉC³B
-EƒfƒBƒXƒyƒ‹‚ÌŽd—l•ÏXB
-@‰ðœ‚µ‚½‚çƒVƒXƒeƒ€ã–â‘è‚Ì‚ ‚éƒXƒe[ƒ^ƒX•Ï‰»ˆÈŠO•Ð‚Á’[‚©‚ç‰ðœ‚·‚é‚悤‚ÉC³B
-EƒtƒƒXƒgƒ_ƒCƒo[‚ÌŽd—l•ÏXB
-@“€Œ‹—¦C³(ƒ}ƒWƒXƒŒƒeƒ“ƒvƒŒ€‹’)B
-EƒŠƒJƒoƒŠ[‚ÌŽd—l•ÏXB
-@ƒmƒ“ƒAƒNƒeƒBƒuƒ‚ƒ“ƒXƒ^[‚ÉŽg—p‚·‚é‚ƃ^[ƒQƒbƒg‚ªƒŠƒZƒbƒg‚³‚ê‚é‚悤‚ÉC³B
-EƒNƒ@ƒOƒ}ƒCƒA‚ÌŽd—l‚ªƒAƒŒ‚¾‚Á‚½‚Ì‚ÅC³B
-@‰‰‘t‚â‘®«ê‚Æ“¯—l‚Érange‚ň—‚·‚é‚悤‚ÉC³B
-@DEX/AGI”¼Œ¸‚̉e‹¿‚ª‰r¥ˆÈŠO‚É‚à‹y‚Ô—l‚ÉC³B
-EƒXƒLƒ‹ƒ^[ƒQƒbƒg’†‚ÉŽ€‚ñ‚¾U‚è‚ðŽg—p‚µ‚Ä‚àƒXƒLƒ‹‚ª‰ñ”ð‚Å‚«‚È‚¢–â‘èC³B
-E”’nŽæ‚肪“®ì‚µ‚È‚¢–â‘èC³(cast_db‚ª”²‚¯‚Ä‚Ü‚µ‚½)B
- (map/)
- pc.c
- pc_calcstatus()C³
- skill.c
- skill_additional_effect()Askill_attack() C³
- skill_status_change_start()Askill_unitsetting() C³
- (db/)
- cast_db.txt C³B
-
---------------------
-//0948 by ŒÓ’±—–
-
-Ewarpwaitingpc‚ª³‚µ‚PC‚ð“]‘—‚Å‚«‚È‚¢–â‘è‚ðC³
-EƒXƒNƒŠƒvƒg‚Ì“Ç‚Ýž‚ÝŽž‚ɃGƒ‰[‚Ü‚½‚ÍŒx‚ªo‚éê‡AŒx‰¹‚ð–‚炷‚悤‚ÉB
- i—¬‚ꂽƒƒO‚ðŒ©‚È‚¢l‘Îô‚Å‚·j
-
- (map/)
- script.c
- buildin_warpwaitingpc()C³
- disp_error_message()C³
-
-Eatcommand.cC³
- Eatcommand_athena.conf‚Ìmapmove‚ð“ǂނ悤‚É
- E@str‚È‚Ç‚ÌÈ—ªŽž‚Ì•K{ƒŒƒxƒ‹‚ð0‚ÉB
- E@param‚ÍŽg‚í‚È‚¢‚̂ŃRƒƒ“ƒg‰»
-
- (map/)
- atcommand.c
- ŠY“–ŒÂŠC³
-
-Emob‚ªÅ‘å15•b‚قLjړ®‚µ‚È‚¢ê‡‚ª‚ ‚é–â‘èC³
- EŽè”²‚«‚Å‚È‚¢mobˆ—‚ÅAˆÚ“®‚µ‚È‚¢ŽžŠÔ‚ª7•bˆÈ㑱‚©‚È‚¢‚悤‚ÉC³
-
- (map/)
- mob.c
- mob_ai_sub_hard()C³
-
-E‰õ‘¬‘Dˆõ‚̈ɓ¤`s‚«‚Ì”»•ÊŽ®C³ (by ID:F8nKKuY)
- (conf/npc/)
- npc_town_comodo.txt
-
---------------------
-//0947 by (“Ê)
-EŽæ‚芪‚«‚ÍŽæ‚芪‚«‚𢊫‚µ‚È‚¢‚悤‚ÉC³
-E˜I“V‚̔̔„‰¿Ši‚ÌãŒÀ‚ðbattle_athena.conf‚ÅÝ’è‚Å‚«‚é‚悤‚ÉC³
-
- (conf/)
- battle_athena.conf
- vending_max_value’ljÁ
- (doc/)
- conf_ref.txt C³
- (map/)
- skill.c
- skill_castend_nodamage_id() C³
- battle.c
- battle_config_read() C³
- battle.h C³B
- vending.c
- vending_openvending() C³B
-
---------------------
-//0946 by Kalen
-Eƒvƒ–kWarpŒ©’¼‚µ
-ŽQlF–{ŽI(1F,2F)‚ç‚®‚Ȃ̉½‚©(3F)
- (conf/warp/)
- npc_warp.txt
-
-EŒê‚è•”‚Ì2T3T’ljÁ(‚Ç‚¤‚¹Œ©‚È‚¢‚ÆŽv‚¢‚Ü‚·‚ªc)
- (conf/npc/)
- npc_event_kataribe.txt
-
---------------------
-//0945 by ŒÓ’±—–
-
-ENPCƒ^ƒCƒ}[ƒ‰ƒxƒ‹ƒf[ƒ^‚ª³‚µ‚ƒCƒ“ƒ|[ƒg‚³‚ê‚È‚¢–â‘è‚ðC³
-ENPCƒ^ƒCƒ}[‰Šú’l‚âƒ^ƒCƒ}[ID‚ª³‚µ‚‰Šú‰»‚³‚ê‚È‚¢–â‘è‚ðC³
-ENPC‚Ìduplicate‚ðs‚¤‚ƃAƒNƒZƒXˆá”½‚ª‹N‚±‚éꇂª‚ ‚é–â‘è‚ðC³
-
- (map/)
- npc.c
- npc_parse_scriptC³
-
-Eƒpƒbƒ`ƒAƒbƒvƒXƒŒ‚S‚Ì87‚Ìpc.c‚Ƃ肱‚Ý
- (map/)
- pc.c
- ƒJ[ƒhd—ʧŒÀ‚ðŒ³‚É–ß‚µ‚½‚à‚Ì
-
---------------------
-//0944 by huge
-EƒMƒ‹ƒh‚Ìã”[ŒoŒ±’l‚ÌãŒÀ‚ðAconf‚ŧŒÀ‚Å‚«‚é‚悤‚ÉB
-E˜I“X‚̔̔„‰¿Ši‚ð10M‚܂łɧŒÀB
-EƒJ[ƒg‚Ìd—ʧŒÀ‚ªˆêŒ…‰º‚ª‚Á‚Ä‚½‚ñ‚Å‚·‚ªAƒEƒ`‚¾‚¯‚Å‚·‚©HC³‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªB
-
- (conf/)
- battle_athena.conf
- guild_exp_limit’ljÁ
- (doc/)
- conf_ref.txt C³
- (map/)
- atcommand.c
- ‘h¶Žž‚ÌSP‰ñ•œ‚ÅAׂ©‚¢C³B
- battle.c
- battle_config_read() C³
- battle.h C³B
- guild.c
- guild_change_position() C³B
- pc.c
- pc_calcstatus() C³B
- vending.c
- vending_openvending() C³B
-
---------------------
-//0943 by (“Ê)
-Ebattle_athena.conf‚Ådead_branch_active‚ðyes‚É‚·‚é‚ƌÖ؂̎}‚Å¢Š«‚³‚ê‚郂ƒ“ƒXƒ^[‚ªƒAƒNƒeƒBƒu‚É‚È‚é‚悤‚É•ÏX
-E”÷–‚É•ÏX‚µ‚½client_packet.txt‚𓯫
-
- (conf/)
- battle_athena.conf
- dead_branch_active’ljÁ
- (doc/)
- client_packet.txt C³
- conf_ref.txt C³
- (map/)
- battle.c
- battle_config_read() C³
- battle.h C³
- map.h C³
- mob.c
- mob_once_spawn() C³
- mob_attack() C³
- mob_target() C³
- mob_ai_sub_hard_lootsearch() C³
- mob_ai_sub_hard() C³
-
-E‰pŒêƒXƒŒ‚Ìkingbo‚³‚ñ‚Ì•ÏX‚𓯫
- code by kingbo 2004/4/16 PM 09:47
-
- support guildcastle guardian
- maybe still have problems..need to try
- Good Luck Q^^Q
- P.S: sorry my poor english ^^a
-
- (map/)
- mob.c
- mob_can_reach() fix
- battle.c
- battle_calc_damage() fix
-
- (conf/gvg/)
- prtg_cas01_guardian.txt
-
---------------------
-//0942 by ŒÓ’±—–
-
-EƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹‚Å•s³‚ȃƒ‚ƒŠ‚ɃAƒNƒZƒX‚·‚éꇂª‚ ‚éƒoƒO‚ðC³
- (login/)
- login.c
- check_ipmask()C³
-
-EƒXƒNƒŠƒvƒgƒŠƒtƒ@ƒŒƒ“ƒX‚µ’ljÁ‚ÆC³
- (doc/)
- script_ref.txt
- C³
-
---------------------
-//0941 by (“Ê)
-
-Ee2‚³‚ñ‚Ì•ñ‚ðŒ³‚É¢Š«‚³‚ꂽŽè‰º‚̃Xƒs[ƒh‚𢊫Žå‚Æ“¯‚¶‚É‚µ‚Ä‚Ý‚é
-
- (map/)
- battle.c
- battle_get_speed() C³
- mob.c
- mob_spawn() C³
- mob_summonslave() C³
-
---------------------
-//0940 by End_of_exam
-
-Eƒq[ƒ‹‚âƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚ðŽg—p‚µ‚Ä‚à‰ñ•œ‚µ‚È‚¢ƒoƒO‚ðC³(0938`)B
-
-@Thanks for Pepermint, reporting the bug that using PotionPitcher with
-@BluePotion was no effective.
-@iƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[{‚o‚ÅŒø‰Ê‚ª‚È‚¢Ž–‚ð•ñ‚µ‚Ä‚‚ꂽPepermintŽ‚ÉŠ´ŽÓj
-
- (map/)
- battle.c
- battle_heal() C³
-
---------------------
-//0939 by (“Ê)
-EcutinƒpƒPƒbƒg‚ð0x145(ƒtƒ@ƒCƒ‹–¼16•¶Žš)‚©‚ç0x1b3(64•¶Žš)‚É•ÏX
-E‚‚¢‚Å‚ÉŽG’kƒXƒŒ‚Éã‚°‚½athena-start‚𓯫
-
- (/)
- athena-start saveƒtƒ@ƒCƒ‹‚ª–³‚¢‚Æ‚«‚Éì‚é‚悤‚É
- (map/)
- clif.c
- clif_cutin() –{ŽIƒpƒPƒbƒg€‹’‚É•ÏX
- (doc/)
- client_packet.txt C³
-
---------------------
-//0938 by ‚Ò‚´‚Ü‚ñ
-
-Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚Ń|‚ð“Š‚°‚Ä‚àƒGƒtƒFƒNƒg‚¾‚¯‚¾‚Á‚½ƒoƒOC³B
-E˜I“XŠJÝ‚ª“Á’è‚̃AƒCƒeƒ€”z’u‚ÅŽ¸”s‚·‚éƒoƒOC³B
-EƒXƒNƒŠƒvƒgŠÖ”getareadropitemŽÀ‘•B
-@Žw’èƒGƒŠƒA“à‚̃hƒƒbƒvƒAƒCƒeƒ€‚ðƒJƒEƒ“ƒg‚·‚éŠÖ”‚Å‚·
-
-@‘Ž®Fgetareadropitem <mapname>,<x0>,<y0>,<x1>,<y1>,<item>;
-@@mapnameF‘ÎÛƒ}ƒbƒv–¼(—áFprontera.gat)
-@@x0‚Æx1F‘ÎÛXÀ•W”͈Í
-@@y0‚Æy1F‘ÎÛYÀ•W”͈Í
-@@itemFƒJƒEƒ“ƒg‚·‚é‘ÎÛƒAƒCƒeƒ€
-
-@–ß‚è’lFmapname“àÀ•W(x0,y0)-(x1,y1)‚͈͓̔à‚É—Ž‚¿‚Ä‚¢‚éitem‚Ì‘ŒÂ”
-@@@@@Žæ“¾Ž¸”sŽž‚É‚Í-1‚ð•Ô‚µ‚Ü‚·B
-@Eitem‚Ì’l‚ÍID‚Å‚àƒAƒCƒeƒ€–¼("Red_Jemstone"‚Æ‚©)‚Å‚à‚¢‚¢‚Å‚·B
-
- (map/)
- battle.c
- battle_heal() C³B
- vending.c
- vending_openvending() C³B
- script.c
- ƒ[ƒJƒ‹ƒvƒƒgƒ^ƒCƒv錾C³B
- struct buildin_func[] C³B
- buildin_getareadropitem()Abuildin_getareadropitem_sub() ’ljÁB
-
---------------------
-//0937 by netwarrior
-
-- Fix Japanese remarks problem in 0936
-- Fix minor problem in battle_heal()
-
---------------------
-//0936 by Pepermint
-
-Retouch about problem of increase in quantity at the CART,
-when enter the an minus quantity in the CLIENT.
-
-Retouch about problem of not recovery,use POTIONPITCHER skill.
-
- (map/)
- battle.c
- battle_heal()
-
- vending.c
- vending_purchasereq()
-
---------------------
-//0935 by ŒÓ’±—–
-
-E“à—e‚Ì“¯‚¶ƒXƒNƒŠƒvƒgNPC‚ð‰½“x‚à‹Lq‚µ‚È‚‚Ä‚àŒ¾‚¢‚悤‚ÉC³
- ENPC’è‹`‚Ì"script"‚Æ‘‚•”•ª‚ð"duplicate(NPC–¼)"‚Æ‚·‚é‚ÆA
- ŠY“–‚ÌNPC‚ƃXƒNƒŠƒvƒg‚ð‹¤—L‚·‚é‚悤‚ÉBNPC–¼‚Í•\Ž¦–¼‚Å‚Í‚È‚
- ƒGƒNƒXƒ|[ƒg‚³‚ê‚é–¼‘O‚ðŽw’肵‚Ü‚·B
- <—á>
-prontera.gat,165,195,1 duplicate(ƒJƒvƒ‰Eˆõ) ƒJƒvƒ‰Eˆõ2 112
-
- E‹¤—LŒ³‚ÌNPC‚Í“¯‚¶ƒ}ƒbƒvƒT[ƒo[‚É‘¶Ý‚·‚é•K—v‚ª‚ ‚邽‚ßA
- “¯‚¶ƒ}ƒbƒv‚Å‚È‚¢ê‡‚Íduplicate‚·‚ׂ«‚Å‚Í‚È‚¢B
- ‚½‚¾‚µANPC‚̈ʒu‚ð"-"‚É‚·‚邱‚Æ‚ÅAƒ}ƒbƒvã‚É‚Í‘¶Ý‚µ‚È‚¢‚ªA
- ƒ}ƒbƒvƒT[ƒo[“à‚É‚Í‘¶Ý‚·‚éNPC‚ð쬂ł«‚é‚Ì‚ÅA
- ‚»‚ÌNPC‚ð‹¤—LŒ³‚É‚·‚é‚Ì‚Å‚ ‚ê‚΂ǂ̃}ƒbƒv‚Ö‚à‹¤—L‚Å‚«‚éB
- <—á>
-
-- script ƒeƒXƒg::test1 112,{ // ‚±‚ÌNPCƒOƒ‰ƒtƒBƒbƒNID‚ÍŽg—p‚µ‚È‚¢
-// (—ª)
-}
-prontera.gat,165,195,1 duplicate(test1) ƒeƒXƒg2 112
-geffen.gat,99,99,1 duplicate(test1) ƒeƒXƒg3 112
-
- Eã‚̃}ƒbƒv‚É‘¶Ý‚µ‚È‚¢NPC‚̓Cƒxƒ“ƒg‚É‚à‚·‚邱‚Æ‚ª‚Å‚«‚éB
- i‚ǂ̃}ƒbƒvƒT[ƒo[‚©‚ç‚Å‚à•K‚¸ŒÄ‚Ño‚¹‚éƒCƒxƒ“ƒg‚É‚È‚éj
-
- (map/)
- map.h
- struct npc_label_list’ljÁ,struct npc_dataC³
- npc.c
- npc_parse_script()C³
- •s—v‚É‚È‚Á‚½ƒ‰ƒxƒ‹ƒf[ƒ^ƒx[ƒXŠÖ˜A‚ÌŠÖ”‚ðíœ
-
---------------------
-//0934 by ‚Ò‚´‚Ü‚ñ
-
-EMOB‚Ìó‘ÔˆÙí‘Ï«‚ª‚₽‚ç‚‚©‚Á‚½‚Ì‚ðC³B
-E‘¬“xŒ¸‚ÌŽd—l•ÏX(¬Œ÷—¦ŒvŽZŽ®•ÏXEŽ¸”sŽž‚ɂ̓GƒtƒFƒNƒg–³‚µ)B
-E‰½Žž‚ÌŠÔ‚É‚©ó‘ÔˆÙí‚ÌŒp‚¬‘«‚µ‹ÖŽ~‚ªƒRƒƒ“ƒgƒAƒEƒg‚³‚ê‚Ä‚¢‚½‚Ì‚Å–ß‚µB
-Eƒ|ƒCƒYƒ“ƒŠƒAƒNƒg‚̃AƒCƒRƒ“•\Ž¦‚ª–³‚‚È‚Á‚Ä‚¢‚½‚Ì‚ÅC³(‚Å‚ào‚邾‚¯c)
-E”’nŽæ‚èŽÀ‘•B
-
- (map/)
- battle.c
- battle_weapon_attack() C³B
- clif.c
- clif_parse_WalkToXY()Aclif_parse_ActionRequest() C³B
- clif_parse_TakeItem()Aclif_parse_UseItem() C³B
- clif_parse_DropItem()Aclif_parse_EquipItem() C³B
- clif_parse_UnequipItem() C³B
- mob.c
- mob_can_move()Amob_attack()Amob_ai_sub_hard() C³B
- mobskill_use_id()Amobskill_use_pos() C³B
- mobskill_castend_id()Amobskill_castend_pos() C³B
- pc.c
- pc_attack_timer()Apc_setpos() C³B
- skill.c
- SkillStatusChangeTable[] C³B
- skill_additional_effect()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_check_condition() C³B
- skill_status_change_start()Askill_status_change_end() C³B
- skill_use_id() C³B
- skill.h C³B
- (db/)
- cast_db.txt C³B
-
---------------------
-//0933 by ŒÓ’±—–
-
-EƒEƒBƒU[ƒh“]EŠNPC‰¼ŽÀ‘•
- Eeathena‚̃f[ƒ^‚Ì–|–óA‚¨‚æ‚Ñ–^Š‚Ì̂̃f[ƒ^‚ðŒ³‚Éì‚Á‚½‚Ì‚Å
- ŠàŽI‚Æ‚Í”÷–‚ɈقȂÁ‚Ä‚é‚ÆŽv‚¢‚Ü‚·B
- uŒÃ‚¢Šª•¨v‚Æ‚©Žg‚¦‚Ü‚¹‚ñ‚µB
- EŒ»s‚Ìjob_2nd.txt‚ƈê‚É“Ç‚Ýž‚Þ‚ÆANPC‚ªd‚È‚é‚Ì‚ÅA
- job_2nd.txt‚ÌŠY“–ƒXƒNƒŠƒvƒg‚ðƒRƒƒ“ƒg‰»‚µ‚Ä‚‚¾‚³‚¢B
- ‚½‚¾‚µA‚»‚Ìꇂ̓Z[ƒW‚É“]E‚³‚¹‚Ä‚à‚炦‚È‚¢‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
-
- (conf/npc/)
- npc_job_wizard.txt
- ’ljÁ
- (conf/warp/)
- npc_warp_job.txt
- ƒEƒBƒU[ƒh“]EŠ‚̃[ƒv‚ðƒRƒƒ“ƒg‰»
-
-EƒoƒOC³
- Egoto‚âmenu‚щƒxƒ‹‚ªŒ©‚‚©‚ç‚È‚¢‚Æ‚«ƒXƒNƒŠƒvƒg‚ÌŽÀs‚ð’†’f‚·‚é‚悤‚É.
- E‚P‰ñ‚̃XƒNƒŠƒvƒg‚ÌŽÀs‚É‚¨‚¢‚ÄAŽÀs–½—ß”‚ª–ñ8000‚ð’´‚¦‚é‚©A
- goto‚âmenu‚ÌŽÀs‰ñ”‚ª–ñ500‰ñ‚ð’´‚¦‚é‚ÆŽÀs‚ð’†’f‚·‚é‚悤‚ÉB
- EŠÖ”/–½—ߎÀsŽž‚É‚àƒGƒ‰[ƒ`ƒFƒbƒN‚ð“ü‚ꂽ
- EƒMƒ‹ƒh/ƒp[ƒeƒB/ƒyƒbƒg‚Ì–¼‘O‚É“ú–{Œê‚ªŽg‚¦‚È‚¢–â‘èC³
-
-
- (char/)
- int_guild.c/int_party.c
- –¼‘O–â‘èC³
- (map/)
- pet.c
- –¼‘O–â‘èC³
- script.c
- C³
-
---------------------
-//0932 by End_of_exam
-
-E0930‚ŃMƒ‹ƒh‘qŒÉ‚Ì’†g‚ªÁ‚¦‚éƒoƒO‚ðC³B
-
- (char/)
- int_storage.c guild_storage_tostr() C³B
-
---------------------
-//0931 by (“Ê)
-EƒT[ƒo[snapshot
-EAthenaDBŒv‰æ‚©‚çXV‚Ì‚ ‚Á‚½•¨‚𔽉f
-Eatcommand_athena.conf‚Éstr“™‚ð’ljÁ
-Eƒ[ƒvƒ|[ƒ^ƒ‹‚Ì–{ŽI‘Šˆá“_‚ðC³
-E–¶‚³‚ñ‚Ìaldeg_cas03`05‚𓯫
-Ep‚³‚ñ‚Ìnpc_event_kataribe.txt“¯«
-EKAJIKEN‚³‚ñ‚Ìnpc_warp_louyang.txt“¯«
-
- (db/)
- item_db.txt •ÏX
- (conf/)
- atcommand_athena.conf •ÏX
- map_athena.conf •ÏX
- (conf/gvg/)
- aldeg_cas03.txt •ÏX
- aldeg_cas04.txt •ÏX
- aldeg_cas05.txt •ÏX
- (conf/mob/)
- npc_monster.txt •ÏX
- (conf/npc/)
- npc_event_kataribe.txt ’ljÁ
- (conf/warp/)
- npc_warp_louyang.txt ’ljÁ
- (map/)
- pc.c pc_memo() •ÏX
-
---------------------
-//0930 by ŒÓ’±—–
-
- Šù‘¶‚Ì char/ ‚É‚ ‚élock.c‚Ælock.h‚Í휂µ‚Ä‚‚¾‚³‚¢B
- ‚±‚ê‚ç‚Í common/ ‚Ɉړ®‚³‚ê‚Ü‚·B
-
-EƒXƒNƒŠƒvƒg’ljÁC³
- Esetarrayi”z—ñ‚ÖƒŠƒXƒg‘ã“üj’ljÁ
- Ecleararrayi”z—ñ‚ðŽw’è’l‚ŃNƒŠƒAj’ljÁ
- Ecopyarrayi”z—ñ‚ðƒRƒs[j’ljÁ
- Egetarraysizei”z—ñ‚Ì—LŒø‚È—v‘f”‚ð‹‚ß‚éj’ljÁ
- Edeletearrayi”z—ñ‚Ì—v‘f‚ð휂µ‚Â߂éj’ljÁ
- EwarpwaitingpcFl”‚âƒAƒJƒEƒ“ƒgID‚ðƒ}ƒbƒv•Ï”‚ɃZƒbƒg‚·‚é‚悤‚ÉC³
-
- (map/)
- script.c
- FX
- (doc/)
- script_ref.txt
- –½—ߒljÁ‚È‚Ç
- (npc/sample/)
- npc_test_array.txt
- ”z—ñŒnƒeƒXƒg—pNPCƒXƒNƒŠƒvƒg
-
-EƒoƒOC³‚È‚Ç
- EƒLƒƒƒ‰ƒNƒ^[–¼/ƒAƒJƒEƒ“ƒg–¼/ƒp[ƒeƒB–¼/ƒMƒ‹ƒh–¼/ƒyƒbƒg–¼‚É
- ƒRƒ“ƒgƒ[ƒ‹ƒR[ƒh‚ðŽg‚¦‚È‚¢‚悤‚ÉC³B
- Echar.c‚È‚Ç‚Ì•Û‘¶‚ÌŒø—¦‚ðX‚ɃAƒbƒvB
- E‘qŒÉƒtƒ@ƒCƒ‹/ƒMƒ‹ƒh‘qŒÉƒtƒ@ƒCƒ‹‚É‹ós‚ªŽc‚ç‚È‚¢‚悤‚ÉC³
- Elock.*‚ðcommon/‚Ɉړ®Aƒtƒ@ƒCƒ‹‚ª•Û‘¶‚Å‚«‚È‚‚È‚éƒoƒOC³A
- ƒAƒJƒEƒ“ƒg‚ƃ}ƒbƒv•Ï”‚Ì•Û‘¶‚É‚àlock_fopen‚ðŽg‚¤‚悤‚ÉB
-
- (common/)
- lock.c/lock.h
- ƒtƒHƒ‹ƒ_ˆÚ“®Alock_fopenC³
- (login/)
- login.c
- mmo_auth_new()C³
- (char/)
- char.c
- mmo_char_tostr(),make_new_char()C³
- int_storage.c
- storage_tostr(),guild_storage_tostr(),
- inter_storage_save_sub(),inter_guild_storage_save_sub()C³
- int_party.c
- int_guild.c
- –¼‘O–â‘èC³
- (map/)
- pet.c
- –¼‘O–â‘èC³
-
---------------------
-//0929 by ‚Ò‚´‚Ü‚ñ
-
-Eƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[Š®‘SŽÀ‘•B
-Eƒvƒƒ{ƒbƒN‚̃XƒLƒ‹Žd—l•ÏX(‰r¥–WŠQE“€Œ‹AΉ»A‡–°‰ðœ)B
-EƒŠƒJƒoƒŠ[‚̃XƒLƒ‹Žd—l•ÏX(ƒAƒ“ƒfƒbƒh‚ÉŽg—p‚·‚é‚ƈê’èŠm—¦‚ňÈŌø‰Ê)B
-Eó‘ÔˆÙí’†‚Å‚à‘•”õ‚ÌØ‚è‘Ö‚¦‚ªo—ˆ‚é‚悤‚É•ÏXB
-EƒAƒCƒeƒ€Ž©“®Žæ“¾’†‚É@killmonster‚ðŽg—p‚·‚é‚Æ—Ž‚¿‚éƒoƒOC³B
-EŒÓ’±—–‚³‚ñ‚ªã‚°‚Ä‚¢‚½npc.c‚𓯫‚µ‚Ü‚µ‚½B
-Eskill_db‚Å‹C‚É‚È‚Á‚Ä‚½‚Æ‚±‚ð‚¿‚å‚±‚Á‚ÆC³B
-
- (map/)
- clif.c
- clif_parse_EquipItem() C³B
- skill.c
- skill_castend_nodamage_id() C³B
- skill_unitsetting()Askill_unit_onplace() C³B
- skill_landprotector() ’ljÁB
- mob.c
- mob_delay_item_drop()Amob_delay_item_drop2() C³B
- npc.c C³
-
- (db/)
- skill_db.txt C³B
-
---------------------
-//0928 by End_of_exam
-
-EƒLƒƒƒ‰‚â‘qŒÉ“àƒAƒCƒeƒ€‚ªÁ‚¦‚é–â‘è‚ÉŽb’è‘ΈiƒLƒƒƒ‰ŽI‚̉ü—ÇjB
-
-@1.ƒLƒƒƒ‰ƒf[ƒ^E‘qŒÉƒf[ƒ^‚̃f[ƒ^•ÏŠ·ˆ—‚ð‰ü—ÇB
-@@(char/char.c , char/int_storage.c)
-
-@2.ƒtƒ@ƒCƒ‹‘‚«o‚µ‚ªI‚í‚é‚Ü‚ÅA‹Œƒtƒ@ƒCƒ‹‚ðŽc‚·‚悤‚ÉC³B
-@ichar/lock.c, char/lock.h ‚̒ljÁBƒƒCƒNƒtƒ@ƒCƒ‹‚ÌC³B
-@@char/int_storage.c,int_guild.c,int_party.c,int_pet.c,char.c,inter.c
-@@“à‚É‚ ‚éAƒf[ƒ^‘‚«o‚µˆ—‚ð•ÏXBj
-
---------------------
-//0927 by ‚Ò‚´‚Ü‚ñ
-
-E•ŠíUŒ‚ˆÈŠO‚ÉŽí‘°•â³‚ª“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B
-E‰‰‘t’†‚ÉŠyŠíE•ÚˆÈŠO‚Ì•Ší‚ÉŽ‚¿•Ï‚¦‚é‚Ɖ‰‘t‚ªŽ~‚Ü‚é—l‚ÉC³B
-E‰‰‘t‚ÌŒø‰Ê‚ª‰‰‘tŽÒŽ©g‚É‚Í‚©‚©‚ç‚È‚¢‚悤‚ÉC³B
-EƒAƒCƒeƒ€Ž©“®Žæ“¾‹@”\ŽÀ‘•
-@“G‚ð“|‚µ‚½Žž‚ÉAƒAƒCƒeƒ€‚ªƒhƒƒbƒv‚³‚ê‚é‚Ì‚Å‚Í‚È‚A‚»‚Ì“G‚Ɉê”Ô‘½‚‚̃_ƒ[ƒW‚ð
-@—^‚¦‚½l(ƒ‹[ƒgŒ 1ˆÊ‚Ìl)‚ɃhƒƒbƒvƒAƒCƒeƒ€‚ªŽ©“®‚Å—^‚¦‚ç‚ê‚é‹@”\‚Å‚·B
-@battle_athena.conf‚Ìitem_auto_get‚ÅÝ’è‚Å‚«‚Ü‚·B
-@ƒIƒŠƒWƒiƒ‹ƒAƒbƒvƒf[ƒg‚̈×Abattle_athena.conf‚ł̃fƒtƒHƒ‹ƒg‚Å‚Íno‚É‚µ‚Ä‚¢‚Ü‚·B
-E‘®«ê(ƒfƒŠƒ…[ƒWEƒoƒCƒIƒŒƒ“ƒgƒQƒCƒ‹Eƒ{ƒ‹ƒP[ƒmEƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[)‰¼ŽÀ‘•
-@ˆê•”‚Ì‹@”\‚ª–¢ŽÀ‘•‚Å‚·
-@@ƒfƒŠƒ…[ƒWF…ê‚ð—p‚¢‚½ƒEƒH[ƒ^[ƒ{[ƒ‹
-@@ƒoƒCƒIƒŒƒ“ƒgƒQƒCƒ‹Fƒtƒ@ƒCƒA[ƒEƒH[ƒ‹‚ÌŽ‘±ŽžŠÔ•â³
-@@ƒ{ƒ‹ƒP[ƒmFƒAƒCƒXƒEƒH[ƒ‹‹ÖŽ~
-@@ƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[FƒIƒuƒWƒFƒNƒgÝ’uŒnƒXƒLƒ‹‹ÖŽ~(‚‚܂èo‚邾‚¯‚ÌLP‚Å‚·)
-
- (map/)
- battle.c
- battle_calc_damage()Abattle_calc_magic_attack() C³B
- battle_calc_misc_attack()Abattle_config_read() C³B
- mob.c
- mob_delay_item_drop()Amob_delay_item_drop2() C³B
- pc.c
- pc_calcstatus()Apc_equipitem() C³B
- skill.c
- ƒ[ƒJƒ‹ƒvƒƒgƒ^ƒCƒv錾C³B
- SkillStatusChangeTable[] C³B
- skill_castend_nodamage_id()Askill_castend_pos2() C³B
- skill_unitsetting()Askill_unit_onplace() C³B
- skill_unit_onout()Askill_unit_ondelete() C³B
- skill_status_change_start()Askill_status_change_end() C³B
- skill_clear_element_field() ’ljÁB
- battle.h C³B
- skill.h C³B
- (conf/)
- battle_athena.conf
- item_auto_get€–Ú‚ð’ljÁB
- (db/)
- cast_db.txt C³B
-
---------------------
-//0926 by ŒÓ’±—–
-
-EƒMƒ‹ƒhé‚̉Šú‰»•û–@•ÏX
- E‘S‚ẴMƒ‹ƒhéi{è‹’ƒMƒ‹ƒhî•ñj‚ðŠ“¾‚µ‚½‚Æ‚«‚ÉOnAgitInit‚ª
- ‚æ‚΂ê‚é‚悤‚ÉBGetCastleData‚âRequestGuildInfo‚Ì•K—v‚ª‚È‚‚È‚è‚Ü‚·B
- ]‚Á‚ÄAŒ»Ý‚ÌgvgƒXƒNƒŠƒvƒg‚ÌOnInterIfInit‚âOnRecvCastleXXX‚Í
- •K—v‚È‚‚È‚è‚Ü‚·Bi‚¨‚»‚ç‚Œ»s‚̃XƒNƒŠƒvƒg‚à“®ì‚͉”\‚Å‚·j
- ‰Šú‰»‚ª•K—v‚ÈNPC‚Í•Ï‚í‚è‚ÉOnAgitInit‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B
- ‚È‚¨A•s—v‚É‚È‚Á‚½–½—ß‚È‚Ç‚ð휂·‚é—\’è‚Í‚ ‚è‚Ü‚¹‚ñB
-
- (char/)
- inter.c/inter.h/char.c/int_guild.c/int_guild.h
- ƒ}ƒbƒvƒT[ƒo[Ú‘±Žž‚Ɉ—‚ðs‚¦‚é‚悤‚ÉC³
- Ú‘±Žž‚ɃMƒ‹ƒhéƒf[ƒ^‚ð‘—M‚·‚é‚悤‚É
- (map/)
- intif.c/guild.c/guild.h
- Ú‘±Žž‚̃Mƒ‹ƒhéƒf[ƒ^ˆêŠ‡ŽóMˆ—•ƒMƒ‹ƒhî•ñ—v‹A
- OnAgitInit‚̌ĂÑo‚µ‚È‚Ç
- chrif.c
- ‹ŒOnAgitInit‚̌ĂÑo‚µíœ
- (doc/)
- inter_server_packet.txt
- ƒMƒ‹ƒhéƒf[ƒ^ˆêŠ‡‘—MƒpƒPƒbƒg0x3842’ljÁ
-
-EƒXƒNƒŠƒvƒg‚ÉNPCŽå‘̃Cƒxƒ“ƒgŽÀs–½—ߒljÁ
- Edonpcevent(NPCŽå‘̃Cƒxƒ“ƒgŽÀs)’ljÁ
- ‚±‚¿‚ç‚Ídoevent‚ƈႢƒuƒ[ƒhƒLƒƒƒXƒg‰Â”\‚Å‚·BÚׂÍscript_refB
- Eisloggedin‚̃Rƒ“ƒpƒCƒ‹Œx‚ª‚Å‚È‚¢‚悤‚ÉC³
- (map/)
- script.c
- buildin_donpcevent()’ljÁ‚È‚Ç
- (doc/)
- script_ref.txt
- doevent,donpcevent,OnAgitInit’ljÁ‚È‚Ç
-
-E‚»‚Ì‘¼C³
- (map/)
- clif.c
- clif_parse_GMReqNoChat()’ljÁ
-
-
---------------------
-//0925 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚̃oƒOC³
- Emonster,areamonster‚Ì–â‘èC³
- ‚±‚ê‚ç‚Íscript_rid2sd‚ðŽg—p‚µ‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B
- sd‚ªNULL‚Ì‚Æ‚«AƒŒƒxƒ‹ƒ`ƒFƒbƒN‚ðs‚í‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B
-
- (map/)
- script.c/mob.c
- buildin_monster(),buildin_areamonster(),mob_once_spawn()‘¼
-
-EƒXƒNƒŠƒvƒg‚Ì‹@”\’ljÁ
- Edetachrid–½—ßiƒvƒŒƒCƒ„[‚̃fƒ^ƒbƒ`j’ljÁ
- EisloggedinŠÖ”iƒvƒŒƒCƒ„[‚̃ƒOƒCƒ“ƒ`ƒFƒbƒNj’ljÁ
- Egetitem,getitem2–½—ß,countitem,checkweightŠÖ”‚Å
- nameid‚ɃAƒCƒeƒ€‚Ì–¼‘O‚ðŽw’è‰Â”\‚ÉB
- (item_db‚ȂǂɈˑ¶‚·‚邽‚ßAŽg—p‚·‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªAˆê‰ž)
-
- (map/)
- script.c
- FX
- (doc/)
- script_ref.txt
- •ÏX•”•ª‚ƃGƒ‰[à–¾C³
-
-Eathena-start‚Æstart‚ðC³
- Eathena-start stop‚ŃvƒƒZƒX‚ªI—¹‚·‚é‚܂ő҂‚悤‚É
- Estart‚ÅÄ‹N“®‚³‚¹‚é‚Æ‚«athena-start restart‚ðŒÄ‚Ԃ悤‚ÉB
-
---------------------
-//0924 by (“Ê)
-
-EƒoƒO•ñƒXƒŒƒbƒh part4 >>66‚Ìnpc‚ðŽæ‚èž‚Ý
-E“¯ >>51‚Ìguild.c‚𔽉f
-E“¯ >>38‚Ìatcommand_athena.conf‚Ö‚Ì•ÏX‚ðŽæ‚èž‚Ý
-E‚È‚º‚©npcƒtƒHƒ‹ƒ_‚É‚ ‚Á‚Ämap_athena.conf‚È‚¢ƒtƒ@ƒCƒ‹‚ðˆê——‚ɒljÁB‚‚¢‚łɃMƒ‹ƒhƒtƒ‰ƒbƒO‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ
-Econf/npc/npc_job_1st.txt npc_script2.txt npc_shop3.txt‚̓XƒiƒbƒvƒVƒ‡ƒbƒg‚©‚ç휂µ‚Ä‚‚¾‚³‚¢
-
- (map/)
- guild.c C³
- (conf/)
- map_athena.conf C³
- atcommand_athena.conf C³
- (conf/npc/)
- npc_event_hat.txt C³
- npc_event_oni.txt C³
- npc_job_1st.txt íœ
- npc_script2.txt íœ
- npc_shop3.txt íœ
-
---------------------
-//0923 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚̃oƒOC³
-Escript_rid2sd‚ªŽ¸”s‚µ‚Ä‚àƒT[ƒo[‚ðI—¹‚µ‚È‚¢‚悤‚É•ÏX
- Emonster,areamonster‚È‚Ç‚ªŽÀs‚Å‚«‚È‚¢–â‘èC³
-
- (map/)
- script.c/mob.c
- buildin_monster()‚È‚ÇC³
-
- (doc/)
- script_ref.txt
- ƒ‰ƒxƒ‹‚ƃGƒ‰[‚Ìà–¾C³
-
---------------------
-//0922 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒgƒGƒ‰[‚Ìs”Ô†‚ª³‚µ‚•\Ž¦‚³‚ê‚é‚悤‚É
-
- (map/)
- itemdb.c / npc.c
- itemdb_readdb(),npc_parse_script()C³
-
-EƒLƒƒƒ‰ƒNƒ^[î•ñ‚ɃAƒNƒZƒX‚Å‚«‚È‚¢ó‘ԂŃAƒNƒZƒX‚·‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉC³
-Egoto/menu‚щƒxƒ‹‚ªŽw’肳‚ê‚éꊂɃ‰ƒxƒ‹ˆÈŠO‚ªŽw’肳‚ê‚é‚ÆŒx‚ðo‚·‚悤‚É
-Escript_ref‚ɃGƒ‰[ƒƒbƒZ[ƒW‚Ìà–¾’ljÁ
-EƒCƒxƒ“ƒg‹N“®‚³‚ꂽƒXƒNƒŠƒvƒg‚ŃLƒƒƒ‰ƒNƒ^[‚ðŽg—p‚Å‚«‚é‚悤‚É‚·‚éŠÖ”’ljÁ
- EattachridiŽw’肵‚½ID‚Ìî•ñ‚ðŽg—p‚Å‚«‚é‚悤‚É‚·‚éj’ljÁ
- Egetcharidi3‚ŃAƒJƒEƒ“ƒgID‚ðŠ“¾‚Å‚«‚é‚悤‚ÉjC³
- (map/)
- script.c
- script_rid2sd(),buildin_attachrid()’ljÁ
- ‘½XC³B
- (doc/)
- script_ref.txt
- ƒGƒ‰[ƒƒbƒZ[ƒW‚Ìà–¾’ljÁA•Ï”/ƒ‰ƒxƒ‹‚Ìà–¾C³
- ‘¼C³
-
---------------------
-//0921 by RR
-EƒXƒNƒŠƒvƒgƒoƒOC³(‚²–À˜f‚ð‚¨‚©‚¯‚µ‚Ü‚µ‚½)
- (conf/npc/)
- npc_event_tougijou.txt
-
-Esteal—¦C³(Ž©DEX - “GDEX + SLv*3 +10‚Ì•”•ª‚ňê“x”»’è‚ð‚µ‚Ä‚¢‚½‚Ì‚Å)
-E0918‚Å0914ˆÈ‘O‚ÉŠª‚«–ß‚Á‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½•”•ª‚ðŒ³‚É–ß‚µ‚½
- (map/)
- pc.c
- pc_steal_item() C³
- itemdb.c
- pet.c
- skill.c C³
-
---------------------
-//0920 by Ž‚Žqo^.^o
-E Steal—¦ = Drop—¦ * (Ž©DEX - “GDEX + SLv*3 +10) /100
- (map/)
- pc.c
- int pc_steal_item()C³
-
---------------------
-//0919 by RR
-Eatcommand‚Ìlvup‚ðŽg‚¤‚Ǝ擾ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ª‚¨‚©‚µ‚¢–â‘è‚ÌC³
-EƒoƒOC³(ƒoƒO•ñƒXƒŒ‚ÅC³‚Ìo‚½‚à‚Ì‚ÌŽæ‚èž‚Ý@ŒÓ’±—–‚³‚ñAp‚³‚ñA‹¤‚É‚¨”æ‚ê—l‚Å‚·)
- (map/)
- atcommand.c
- atcommand_baselevelup()C³
- guild.c
- guild_gvg_eliminate_timer()C³
- pc.c
- pc_setreg(),pc_setregstr()C³
- (login/)
- login.c
- parse_login()C³
---------------------
-//0918 by ¹
-Eitem_dbŽ©‘Ì‚ªƒI[ƒo[ƒ‰ƒCƒh‰Â”\‚É‚È‚Á‚½‚Ì‚ÅAclass_equip_db.txt‚Ì”pŽ~B
-Epet_db.txtAproduce_db.txt‚àƒI[ƒo[ƒ‰ƒCƒh‰Â”\‚ÉC³B
- (map/)
- itemdb.c
- do_init_itemdb() C³B
- pet.c
- read_petdb() C³B
- skill.c
- skill_readdb() C³B
-
---------------------
-//0917 by RR
-EƒXƒNƒŠƒvƒgC³
- “‘¾˜YƒCƒxƒ“ƒg‚Æ“¬‹ZêƒCƒxƒ“ƒg‚ðNPCƒ^ƒCƒ}[‚É•ÏX
- (conf/npc/)
- npc_event_momotarou.txt
- npc_event_tougijou.txt C³
-EƒXƒLƒ‹ƒcƒŠ[C³(ƒoƒO•ñƒXƒŒ25‚æ‚è)
- (db/)
- skill_db.txt C³
-
---------------------
-//0916 by (“Ê)
-Enpc_monster‚Énpc_mob_job‚ð“‡Bnpc_mob_job.txt‚Í휂µ‚Ä‚©‚Ü‚¢‚Ü‚¹‚ñ
-
- (conf/)
- map_athena.conf npc_mob_job‚ðíœ
- (conf/mob/)
- npc_monster.txt XV
-
---------------------
-//0915 by ŒÓ’±—–
-
-ENPCƒ^ƒCƒ}[ŠÖŒW‚Ì–½—ߒljÁ•C³‘¼
- EdelwaitingroomiNPCƒ`ƒƒƒbƒgI—¹jˆø”‚ðŒ©‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³
- EinitnpctimeriNPCƒ^ƒCƒ}[‰Šú‰»j’ljÁ
- EstopnpctimeriNPCƒ^ƒCƒ}[’âŽ~j’ljÁ
- EstartnpctimeriNPCƒ^ƒCƒ}[ŠJŽnj’ljÁ
- EgetnpctimeriNPCƒ^ƒCƒ}[î•ñŠ“¾j’ljÁ
- EsetnpctimeriNPCƒ^ƒCƒ}[’lÝ’èj’ljÁ
-
- Šù‘¶‚Ìaddtimer‚Ȃǂ̓vƒŒƒCƒ„[’PˆÊ‚Ì‚½‚ßANPC’PˆÊ‚̃^ƒCƒ}[‚ðì‚è‚Ü‚µ‚½B
- ‚±‚¿‚ç‚ÍAaddtimer‚ȂǂƂ͈ႢAOnTimerXXX‚Æ‚¢‚¤•—‚Ƀ‰ƒxƒ‹‚ðŽw’肵‚Ü‚·B
- Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚Æscrit_ref.txt‚ðŽQÆB
-
- (map/)
- map.h
- struct npc_data C³Astruct npc_timerevent_list’ljÁ
- npc.c / npc.h
- npc_timerevent(),npc_timerevent_start(),npc_timerevent_stop(),
- npc_gettimerevent_tick(),npc_settimerevent_tick()’ljÁ
- npc_parse_script()C³
- script.c
- buildin_*npctimer()’ljÁ‚È‚Ç
- (conf/sample/)
- npc_test_npctimer.txt
- NPCƒ^ƒCƒ}[Žg—pƒTƒ“ƒvƒ‹
- (doc/)
- script_ref.txt
- NPCƒ^ƒCƒ}[ŠÖŒW‚Ì–½—ß/ŠÖ”’ljÁA’蔃‰ƒxƒ‹‚Ìà–¾C³
-
-ESage‚̃A[ƒXƒXƒpƒCƒN‚ÌŠ“¾ðŒC³
- (db/)
- skill_tree.txt
- ƒA[ƒXƒXƒpƒCƒN‚ÌsiƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“‚ðLv1‚Éj
-
---------------------
-//0914 by p
-E”͈̓XƒLƒ‹Žg—pŽž‚ɉð•úς݃ƒ‚ƒŠ‚ðŽQÆ‚µ‚Ä‚¢‚½–â‘è‚ɑΉž
-Eƒƒ‚ƒŠ‚ð‰Šú‰»‚¹‚¸‚ÉŽg—p‚µ‚Ä‚¢‚½—̈æ‚ðA‰Šú‰»‚µ‚Ä‚©‚çŽg—p‚·‚é‚悤‚É•ÏX
- (common/)
- db.c
- grfio.c
- socket.c
- timer.c
- (char/)
- char.c
- int_guild.c
- int_party.c
- int_pet.c
- int_storage.c
- inter.c
- (login/)
- login.c
- (map/)
- ‚Ù‚Æ‚ñ‚Ç.c
-
---------------------
-//0913 by Kalen
-
-EGVGScript‚ÌC³
-@911‘Ήž
-@ƒtƒ‰ƒO‚©‚çƒAƒWƒg‚Ö–ß‚é‹@”\’ljÁ
-@–ß‚é‚Æ‚«‚É•·‚©‚ê‚é‚悤‚ÉC³(TESTscript)
-@Ԏ擾Žž::OnRecvCastleXXX‚𔓮‚·‚é‚悤‚ÉC³
- (conf/gvg/)
- ‚Ù‚Æ‚ñ‚Ç.txt
-
---------------------
-//0912 by (“Ê)
-E‚±‚̃tƒ@ƒCƒ‹‚Ì•¶Žš‰»‚¯‚ÆTEST_prtg_cas01_AbraiJ‚Ì•¶Žš‰»‚¯‚ðC³
-EƒoƒO•ñƒXƒŒ‚Ì>>19-20‚ðŽæ‚èž‚Ý
-EÌ‚â‚Á‚¿‚Ü‚Á‚½battle_athena.conf‚̌뎚‚Ì’ù³
-
- (common)
- mmo.h
- #define MAX_STAR 3‚ÉC³
- (conf)
- battle_athena.conf
- (conf/gvg/)
- TEST_prtg_cas01_AbraiJ.txt
- (map)
- atcommand.c
- get_atcommandinfo_byname() C³
-
-
---------------------
-//0911 by Michael_Huang
-
- Mounting Emblem of the Flag-NPC.
- (Added Script Command: FlagEmblem).
-
-(conf/gvg/)
- TEST_prtg_cas01_AbraiJ.txt (FlagEmblem Test)
-
- (map/)
- map.h struct npc_data{}
- clif.c clif_npc0078()
- script.c buildin_flagemblem()
-
---------------------
-//0910 by RR
-EƒXƒNƒŠƒvƒg‚̊ԈႢ‚ðC³
-(conf/gvg/)
- ev_agit_payg.txt
- ev_agit_gefg.txt
-
-E‚ЂÈÕ‚è‚Ɉê“x“ü‚Á‚½‚çƒ}ƒbƒv•Ï”‚ªŽc‚Á‚½‚Ü‚Ü‚É‚È‚é‚Ì‚ÅAƒ}ƒbƒv•Ï”‚ðŽg‚í‚È‚¢‚悤•ÏX
-(ˆêŽž“Iƒ}ƒbƒv•Ï”‚É‚·‚ê‚Ζâ‘è‚È‚¢‚Æ‚àŒ¾‚¦‚Ü‚·‚ªA
-town_guide‚Ætown_kafra‚ÉŽžŠúŒÀ’è‚Ì•¨‚ªí’“‚µ‚Ä‚µ‚Ü‚¤‚Ì‚ª‹C‚É‚È‚Á‚½‚Ì‚ÅA
-‚»‚ê‚ç‚ðevent_hinamatsuri‚ÖˆÚ“®‚µA•’i‚Ì‚ðdisable‚µ‚Ä‚¢‚Ü‚·)
- (conf/npc/)
- npc_event_hinamatsuri
- npc_town_guide
- npc_town_kafra
-
-EƒXƒLƒ‹ƒŠƒZƒbƒgŽž‚̃XƒLƒ‹Žæ“¾§ŒÀ”»’è‚ðƒXƒLƒ‹ƒ|ƒCƒ“ƒg48ˆÈãÁ”ï‚©‚çA
- ƒXƒLƒ‹ƒ|ƒCƒ“ƒg58ˆÈãÁ”ï‚©Žc‚èƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ªJOBLEVEL‚æ‚謂³‚‚È‚Á‚½‚Æ‚«‚É•ÏX
-E@modelŽž‚Ì•žFõF§ŒÀ‚ðŠÉ˜a(’jƒAƒTAƒ[ƒO‚Ì‚Ý‚Ö)
- (map/)
- pc.c pc_calc_skilltree()
- atcommand.c atcommand_model()
-
-
---------------------
-//0909 by ŒÓ’±—–
-
-ENPCƒ`ƒƒƒbƒgŠÖŒW‚Ì–½—ߒljÁ
- EwaitingroomiNPCƒ`ƒƒƒbƒgì¬jC³iƒCƒxƒ“ƒg‚ð‹N‚±‚·l”‚ðŽw’è‰Â”\j
- EdelwaitingroomiNPCƒ`ƒƒƒbƒgI—¹j’ljÁ
- EenablewaitingroomeventiNPCƒ`ƒƒƒbƒgƒCƒxƒ“ƒg—LŒø‰»j’ljÁ
- EdisablewaitingroomeventiNPCƒ`ƒƒƒbƒgƒCƒxƒ“ƒg–³Œø‰»j’ljÁ
- EgetwaitingroomstateiNPCƒ`ƒƒƒbƒgó‘ÔŠ“¾j’ljÁ
- EwarpwaitingpciNPCƒ`ƒƒƒbƒgƒƒ“ƒo[ƒ[ƒvjC³
- Ú‚µ‚‚Íscript_ref.txt‚ðŽQÆ
-
- (map/)
- script.c/npc.c/npc.h/chat.c/chat.h/clif.c
- ‘½XC³
- (doc/)
- script_ref.txt
- C³
- (conf/sample/)
- npc_test_chat.txt
- ’ljÁ–½—߂̃eƒXƒgƒXƒNƒŠƒvƒg
-
-EƒXƒNƒŠƒvƒg‚̊ԈႢ‚ðC³
- (conf/npc/)
- npc_event_skillget.txt
- npc_event_yuno.txt
- npc_town_lutie.txt
- npc_turtle.txt
- “ä–½—ßadditem‚ðgetitem‚É’uŠ·
- npc_town_guide.txt
- “ä–½—ßscriptlabel‚ðƒRƒƒ“ƒg‰»
- npc_event_momotaro.txt
- npc_job_swordman.txt
- npc_job_magician.txt
- ';'•t‚¯–Y‚êC³
- (conf/gvg/)
- ev_agit_aldeg.txt
- @GID4‚ð@GIDa4‚É’uŠ·
- ev_agit_gefg.txt
- ev_agit_payg.txt
- Annouce‚ÉFŽw’è‚Æ';'‚Ì•t‚¯–Y‚ê‚ðK«
-
-
-EAthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚ÝA‚»‚Ì‘¼C³
- ˆÀ’肵‚Ä‚¢‚éƒf[ƒ^‚©‚Ç‚¤‚©‚í‚©‚è‚Ü‚¹‚ñ‚ªB
-
- (db/)
- item_db.txt/mob_db.txt/mob_skill_db.txt
- AthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚Ý
- mob_skill_db.txt.orig
- ˆÈ‘O‚̃f[ƒ^iƒRƒƒ“ƒg•”•ª‚È‚Ç‚ÌŽQl‚Éj
- (conf/)
- water_height.txt/mapflag.txt
- AthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚Ý
- map_athena.conf
- npc_monster3*.txt‚ðíœ
- ’ljÁƒ}ƒbƒvƒf[ƒ^ (by ID:UVsq5AE)
- (conf/mob/)
- npc_monster.txt
- AthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚Ý
-
---------------------
-//0908 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚̃Gƒ‰[ƒ`ƒFƒbƒNˆ—‚ð‘‚₵‚½
- E•¶Žš—ñ‚Ì“r’†‚ʼnüs‚ª‚ ‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉB
- EŠÖ”ŒÄ‚Ño‚µ‰‰ŽZŽq'('‚Ì’¼‘O‚ÉŠÖ”–¼ˆÈŠO‚ª‚ ‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉB
- E–½—ß‚ª‚ ‚é‚ׂ«‚Æ‚±‚ë‚ÉŠÖ”–¼ˆÈŠO‚ª‚ ‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉB
- E–½—ß‚¨‚æ‚ÑŠÖ”‚̈ø”‹æØ‚è‚Ì','‚ðÈ—ª‚·‚é‚ÆŒx‚ðo‚·‚悤‚ÉB
- E–½—ß‚¨‚æ‚ÑŠÖ”‚̈ø”‚Ì”‚ªˆÙ‚È‚é‚ÆŒx‚ðo‚·‚悤‚ÉB
-
- (map/)
- script.c
- FXC³
-
-ENPCƒXƒNƒŠƒvƒgC³
- (conf/npc/)
- npc_town_guide.txt
- ‚Ss–Ú‚Í‚¢‚ç‚È‚¢‚悤‚Ȃ̂ŃGƒ‰[‚ªo‚È‚¢‚悤‚ɃRƒƒ“ƒg‰»
- npc_event_hat.txt
- ƒRƒ‚ƒh‚̉¼–ÊEl‚ƃtƒFƒCƒˆƒ“‚Ì”N (by ID:dS8kRnc)
- (conf/sample/)
- npc_card_remover.txt
- @menu‚ðŽg‚Á‚Ä’Z‚‚µ‚½••¶Í‚µC³
-
-E‚»‚Ì‘¼
- (db/)
- skill_tree.txt
- Sage‰ž‹}Žè“–
-
---------------------
-//0907 by p
-Eatcommand() ‚Ì”ì‘剻‚ª‚Ђǂ¢‚̂ŃŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO
- @ ƒRƒ}ƒ“ƒh‚ð’ljÁ‚·‚éꇂÍAatcommand.h “à‚Œ蔂ðAatcommand.c “à‚Å
- ŠÖ”’è‹`ƒ}ƒNƒ‚ƃ}ƒbƒsƒ“ƒOƒe[ƒuƒ‹Aˆ——p‚ÌŠÖ”‚ð‹Lq‚µ‚Ä‚‚¾‚³‚¢B
-Eglobal •Ï”‚Ì atcommand_config ‚ðÁ‹ŽB
- @ ƒRƒ}ƒ“ƒh–ˆ‚̃Œƒxƒ‹‚Í get_atcommand_level() ‚Ŏ擾‚µ‚Ä‚‚¾‚³‚¢B
-Eˆê•”‚̃Lƒƒƒ‰–¼‚ðŽæ‚é @ ƒRƒ}ƒ“ƒh‚ÅA”¼ŠpƒXƒy[ƒX‚ðŠÜ‚Þ–¼‘O‚̃Lƒƒƒ‰‚ð
- ³í‚Ɉ—‚Å‚«‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ðC³B
- ‚±‚̉e‹¿‚É‚æ‚èA@rura+ ‚È‚ÇAƒLƒƒƒ‰–¼‚ªƒpƒ‰ƒ[ƒ^‚Ì“r’†‚É‚ ‚Á‚½‚à‚Ì‚Í
- ‘S‚ÄÅŒã‚ɉñ‚³‚ê‚Ä‚¢‚Ü‚·B
-E@ ƒRƒ}ƒ“ƒh‚Ì•¶Žš—ñ‚ð³í‚Ɏ擾‚Å‚«‚È‚©‚Á‚½ê‡‚ÉAƒoƒbƒtƒ@‚Ì“à—e‚ð
- ƒ`ƒFƒbƒN‚¹‚¸‚Ɉ—‚ðs‚¨‚¤‚Æ‚µ‚Ä‚¢‚½•”•ª‚ðC³‚µ‚Ü‚µ‚½B
-
- (common/)
- mmo.h
- (map/)
- atcommand.h
- atcommand.c
- clif.h
- clif.c
-
---------------------
-//0906 by Selena
-EŒÓ’±—–‚³‚ñ‚ÌC³‚É‚ ‚킹‚ÄAƒoƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚PˆÈŠO‚̃XƒNƒŠƒvƒg‚ÌC³B
-E@ƒRƒ}ƒ“ƒh“ü—̓~ƒX‚ÌۂɃGƒ‰[ƒƒbƒZ[ƒW‚ð•\Ž¦B
- (conf/gvg/)
- ev_agit_aldeg.txt
- ev_agit_gefg.txt
- ev_agit_payg.txt
- ev_agit_prtg.txt
- aldeg_cas01`05.txt
- gefg_cas01`05.txt
- payg_cas01`05.txt
- prtg_cas02`05.txt
- (map/)
- atcommand.c
-
---------------------
-//0905 by ŠÇ—l
-
-EƒT[ƒo[snapshot
-E‘OƒXƒŒ‚̃tƒ@ƒCƒ‹Žæ‚è–Y‚ꂽl‚ª‚¢‚é‚©‚à‚µ‚ê‚È‚¢‚Ì‚Å
-
---------------------
-//0904 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒgˆ—C³
- Echar/interƒT[ƒo[‚ÉÚ‘±‚µ‚½Žž‚ÉOnCharIfInit/OnInterIfInitƒCƒxƒ“ƒg‚ª
- ŒÄ‚΂ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
- OnAgitInit‚ÍOnInterIfInit‚É•ÏX‚·‚ׂ«‚Å‚·B
- Egetcastledata–½—ß‚Å‘æ‚Qƒpƒ‰ƒ[ƒ^‚ª0‚Ì‚Æ‚«A‘æ‚Rƒpƒ‰ƒ[ƒ^‚É
- ƒCƒxƒ“ƒg–¼‚ðÝ’è‚Å‚«‚Ü‚·B‚±‚̃Cƒxƒ“ƒg‚̓Mƒ‹ƒhé‚̃f[ƒ^‚ð
- InterƒT[ƒo[‚©‚犓¾Š®—¹‚µ‚½‚Æ‚«‚ÉŽÀs‚³‚ê‚Ü‚·B
- E‹N‚±‚·NPCƒCƒxƒ“ƒg–¼‚ð"::"‚ÅŽn‚ß‚é‚ÆA“¯–¼ƒ‰ƒxƒ‹‚ðŽ‚‘SNPC‚̃Cƒxƒ“ƒg
- ‚ðŽÀs‚Å‚«‚Ü‚·B
- ‚½‚Æ‚¦‚ÎAgetcastledata "prtg_cas01.gat",0,"::OnRecvCastleP01";
- ‚Æ‚·‚é‚Æ‘S‚Ä‚ÌNPC‚Ì OnRecvCastleP01ƒ‰ƒxƒ‹‚ªŽÀs‚³‚ê‚Ü‚·B
- Erequestguildinfo–½—ߒljÁB“Á’èƒMƒ‹ƒh‚Ìî•ñ‚ðInterƒT[ƒo[‚É
- —v‹‚Å‚«‚Ü‚·B‘æ‚Pƒpƒ‰ƒ[ƒ^‚̓Mƒ‹ƒhIDA‘æ‚Qƒpƒ‰ƒ[ƒ^‚̓Cƒxƒ“ƒg–¼‚Å
- ‚±‚̃Cƒxƒ“ƒg‚̓Mƒ‹ƒhî•ñ‚ðInterƒT[ƒo[‚©‚犓¾Š®—¹‚µ‚½‚Æ‚«‚É
- ŽÀs‚³‚ê‚Ü‚·B
-
- (map/)
- guild.c/guild.h/npc.c/npc.h/script.c/intif.c/chrif.c
- FXC³
-
-EƒMƒ‹ƒhéŠÖ˜ANPCC³
- iƒoƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚P‚Ì‚ÝC³B‘¼‚Ìé‚̃XƒNƒŠƒvƒg‚ÍŠeŽ©‚ŘM‚Á‚Ä‚‚¾‚³‚¢B
- ‚Æ‚¢‚¤‚©A‚Þ‚µ‚ë˜M‚Á‚½‚ç‚ ‚Á‚Õ‚µ‚Ü‚µ‚傤j
- E‰Šú‰»ˆ—‚ðOnAgitInit‚Å‚È‚OnInterIfInit‚É•ÏXB
- Eéƒf[ƒ^Š“¾Š®—¹ˆ—‚Æ‚µ‚ÄOnRecvCastleP01‚ð’ljÁB
- EŽIÄ‹N“®ŽžAƒMƒ‹ƒhê‘®ƒJƒvƒ‰‚ª³‚µ‚•\Ž¦‚³‚ê‚é‚悤‚ÉB
- EƒMƒ‹ƒhê‘®ƒJƒvƒ‰‚Ì–¼‘O‚ð"ƒJƒvƒ‰Eˆõ::kapra_prtg01"‚É•ÏXB
- i"::"ˆÈ~‚̓GƒNƒXƒ|[ƒg‚³‚ê‚é–¼‘O‚ÅA"::"ˆÈ‘O‚ª•\Ž¦–¼j
- "ƒJƒvƒ‰Eˆõ#prt"‚æ‚è–¼‘O‚ð’·‚‚µ‚Ä‹£‡‚µ‚É‚‚‚·‚邽‚ß‚Å‚·B
- ‚±‚ÌŠÖŒW‚ÅAdisablenpc‚Ȃǂ̃pƒ‰ƒ[ƒ^‚ð"kapra_prtg01"‚ÉC³B
- (conf/gvg/)
- prtg_cas01.txt
- ƒMƒ‹ƒhê‘®ƒJƒvƒ‰C³
- ev_agit_prtg.txt
- ‰Šú‰»ˆ—C³iƒoƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚P‚Ì‚Ýj
- TEST_prtg_cas01_AbraiJ.txt
- ƒMƒ‹ƒhê‘®ƒJƒvƒ‰ŒÙ—p/é”jŠüC³
-
-ENPC‚ÌC³
- (conf/npc/)
- npc_job_swordman.txt
- npc_event_hat.txt
- C³
-
-EƒAƒJƒEƒ“ƒg‚ð휂µ‚Ä‚àƒAƒJƒEƒ“ƒgID‚ðÄ—˜—p‚µ‚È‚¢‚悤‚ÉC³
-EƒMƒ‹ƒh/ƒp[ƒeƒB‚ɂ‚¢‚Ä‚àˆê‰ž“¯“™‚̈—’ljÁiƒRƒƒ“ƒg‰»‚³‚ê‚Ä‚¢‚Ü‚·B
- ƒMƒ‹ƒh‚âƒp[ƒeƒB‚ÍID‚ðÄ—˜—p‚µ‚Ä‚à‚¨‚»‚ç‚–â‘è‚È‚¢‚½‚ßj
-
- (login/)
- login.c
- “Ç‚Ýž‚Ý/•Û‘¶ˆ—C³
- (char/)
- int_guild.c/int_party.c
- “Ç‚Ýž‚Ý/•Û‘¶ˆ—C³
-
---------------------
-//0903 by ŒÓ’±—–
-
-El14/l15‚¨‚æ‚уvƒŒƒtƒBƒbƒNƒXl‚ð"„§‚³‚ê‚È‚¢(deprecated)"‹@”\‚Æ‚µ‚Ü‚µ‚½B
- E‚Ü‚¾Žg—p‚Å‚«‚Ü‚·‚ªA¡Œã‚Ì“®ì‚ª•ÛႳ‚ê‚È‚¢‚Ì‚ÅA‘¬‚â‚©‚É‘ã‘Ö‹@”\‚ð
- Žg—p‚·‚é‚悤‚ɈÚs‚µ‚Ä‚‚¾‚³‚¢B
- EƒvƒŒƒtƒBƒbƒNƒX'l'‚Í‘ã‘Ö‹@”\‚̃vƒŒƒtƒBƒbƒNƒX'@'‚ðŽg—p‚µ‚Ä‚‚¾‚³‚¢B
- El15‚Í‘ã‘Ö‹@”\‚Ì@menu‚ðŽg—p‚µ‚Ä‚‚¾‚³‚¢B
- El14‚Í‘ã‘Ö‹@”\‚Í‚ ‚è‚Ü‚¹‚ñBinput–½—߂̈ø”‚ðÈ—ª‚µ‚È‚¢‚ʼnº‚³‚¢B
- E‚±‚ê‚ç‚Ì„§‚³‚ê‚È‚¢‹@”\‚ðŽg—p‚·‚é‚ÆŒxƒƒbƒZ[ƒW‚ª‚Å‚Ü‚·B
-
- (map/)
- script.c
- parse_simpleexpr()C³
- (conf/warp/)
- npc_warp.txt/npc_warp25.txt/npc_warp30.txt
- •Ï”–¼l0‚ð@warp0‚ÉC³
- (conf/npc/)
- npc_event_hat.txt
- •Ï”–¼l15‚ð@menu‚ÉC³
- (doc/)
- script_ref.txt
- ”z—ñ•Ï”‚Ìà–¾’ljÁ
- •Ï”‚̃vƒŒƒtƒBƒbƒNƒX'l'Ainput–½—ß‚Ìl14Amenu–½—ß‚Ìl15‚Ì
- à–¾‚ðC³
-
---------------------
-//0902 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚ª”z—ñ•Ï”‚ɑΉžB
- Earray[number]‚̂悤‚ÉŽg‚¢‚Ü‚·B”’lŒ^A•¶Žš—ñŒ^—¼•ûŽg‚¦‚Ü‚·B
- EŽg‚¦‚éƒvƒŒƒtƒBƒbƒNƒX‚Í @, $, $@ ‚Å‚·B
- iˆêŽž“IƒLƒƒƒ‰ƒNƒ^[•Ï”AˆêŽž“I/‰i‘±“Iƒ}ƒbƒvƒT[ƒo[•Ï”j
- Enumber==0‚Í”z—ñ‚¶‚á‚È‚¢•Ï”‚Æ’l‚ð‹¤—L‚µ‚Ü‚·B
- i@hoge[0]‚Æ@hoge‚Í“¯‚¶•Ï”‚ð•\‚·j
- E‚Ü‚¾‰¼ŽÀ‘•’iŠK‚Ȃ̂ŃoƒO•ñ‚æ‚낵‚‚¨Šè‚¢‚µ‚Ü‚·B
-Eƒ}ƒbƒvƒT[ƒo[•Ï”‚Ì“Çž’†‚ÉCtrl+C‚ð‚·‚é‚ƃf[ƒ^”j‘¹‚̉”\«‚ª‚ ‚é–â‘è‚ðC³.
-Eƒ}ƒbƒvƒtƒ@ƒCƒ‹“Ç‚Ýž‚݉æ–Ê‚ª‚³‚Ñ‚µ‚¢‚Ì‚Å‚¹‚߂ătƒ@ƒCƒ‹–¼‚ð•\Ž¦‚·‚é‚悤‚ÉB
-
- (conf/sample/)
- npc_test_array.txt
- ”z—ñ•Ï”ƒeƒXƒgƒXƒNƒŠƒvƒg
- (map/)
- script.c
- buildin_set(),buildin_input(),get_val(),
- parse_simpleexpr()C³
- buildin_getelementofarray()’ljÁ
- do_final_script()C³‚È‚Ç
- map.c
- map_readmap(),map_readallmap()C³
-
---------------------
-//0901 by ‚Ò‚´‚Ü‚ñ
-
-E˜I“XƒoƒO‚ÌC³
-
- (map/)
- pc.c
- pc_cartitem_amount() ’ljÁB
- vending.c
- vending_openvending() C³B
- clif.c
- clif_parse_NpcClicked() C³B
- pc.h C³B
-
---------------------
-//0900 by ‚Ò‚´‚Ü‚ñ
-
-EƒAƒuƒ‰ƒJƒ_ƒuƒ‰‚̃‰ƒ“ƒ_ƒ€ƒXƒLƒ‹”“®—¦‚ðabra_db.txt‚ÅÝ’è‚Å‚«‚é‚悤‚ÉB
-EƒXƒtƒBƒA[ƒ}ƒCƒ“‚ƃoƒCƒIƒvƒ‰ƒ“ƒg‚Ì”÷C³B
-ENoreturnƒ}ƒbƒv‚Å’±‚ªÁ”‚¯‚³‚ê‚éƒoƒOC³B
-Eˆê•”‚̃Aƒuƒ‰ŒÅ—LƒXƒLƒ‹‚ª³‚µ‚“®ì‚µ‚È‚©‚Á‚½ƒoƒOC³B
- (map/)
- mob.c
- mob_damage()Amobskill_use() C³B
- mob_skillid2skillidx() ’ljÁB
- skill.c
- skill_readdb()Askill_abra_dataset() C³B
- skill_castend_nodamage_id()Askill_castend_pos2() C³B
- script.c
- buildin_warp() C³B
-
- skill.h C³B
- map.h C³B
- (db/)
- abra_db.txt ’ljÁB
- skill_db.txt C³B
-
---------------------
-//0899 by ŒÓ’±—–
-
-EŽæ‚芪‚«MOB‚̈—C³
- EŽæ‚芪‚«¢Š«‚ŃRƒA‚ð“f‚ƒoƒOC³
- EŽå‚ª•Êƒ}ƒbƒv‚É”ò‚Ô‚ÆAƒeƒŒƒ|[ƒg‚Å’Ç‚¢‚©‚¯‚é‚悤‚ÉC³
- EŽæ‚芪‚«ˆ—‚ð‚æ‚èŒy‚•ÏX
-
- (map/)
- mob.c
- mob_ai_sub_hard_mastersearch()‚ðmob_ai_sub_hard_slavemob()
- ‚É–¼‘O‚ð•Ï‚¦‚Ĉ—C³B
- mob_summonslave()C³
-
---------------------
-//0898 by ŒÓ’±—–
-
-Eeathena‚©‚çCardRemoverNPC‚ÌŽæ‚èž‚Ý
- NPCƒf[ƒ^‚à“ú–{Œê–󂵂Ă܂·‚ªA‚©‚È‚è“K“–‚Å‚·B
-
- (map/)
- script.c
- buildin_getequipcardcnt(),buildin_successremovecards()
- buildin_failedremovecards()’ljÁ
- (conf/sample/)
- npc_card_remover.txt
- ƒJ[ƒhŽæ‚èŠO‚µNPC‚Ì“ú–{Œê–ó
- ƒvƒƒ“ƒeƒ‰‚̸˜BŠ‚Ì’†‚̶‰º‚Ì•”‰®‚É‚¢‚Ü‚·
-
-Eƒ|[ƒ^ƒ‹‚ŕʃ}ƒbƒv‚É”ò‚΂µ‚½MOB‚ª‚»‚̃}ƒbƒv‚É•¦‚«’¼‚·ƒoƒOC³
- (map/)
- map.h
- struct mob_data‚Émƒƒ“ƒo’ljÁ
- mob.c
- mob_spawn(),mob_once_spawn()C³
- npc.c
- npc_parse_mob()C³
-
-
---------------------
-//0897 by ‚Ò‚´‚Ü‚ñ
-
-Eׂ©‚¢’²®
-EƒXƒgƒŠƒbƒvŒn‚ƃPƒ~ƒJƒ‹ƒvƒƒeƒNƒVƒ‡ƒ“ŒnƒXƒLƒ‹‚Ì‘SŽÀ‘•
-@–{ŽI‚Å‚Ìׂ©‚¢Žd—l‚ª•ª‚Á‚½‚Ì‚ÅŽÀ‘•‚µ‚Ü‚µ‚½B
-@Šm—¦‚ÍŽb’è‚Å‚·B
-
- (map/)
- pc.c
- pc_isequip() C³
- skill.c
- skill_status_change_start()Askill_castend_nodamage_id() C³B
- skill_abra_dataset() C³B
- battle.c
- battle_get_def()Abattle_get_atk2() C³B
- battle_get_vit()Abattle_get_int() C³B
- (db/)
- const.txt C³B
- skill_db.txt C³B
- cast_db.txt C³B
-
---------------------
-//0896 by ŒÓ’±—–
-
-E‰i‘±“Iƒ}ƒbƒv•Ï”‹@”\’ljÁ
-Eƒ}ƒbƒv•Ï”‚𕶎š—ñŒ^•Ï”‚Æ‚µ‚Ä‚àŽg—p‚Å‚«‚é‚悤‚É‚µ‚½
- E¡‚܂ł̃vƒŒƒtƒBƒbƒNƒX $ ‚͉i‘±“I‚É‚È‚è‚Ü‚·B
- ˆêŽž“Iƒ}ƒbƒv•Ï”‚ðŽg—p‚·‚éꇂ̓vƒŒƒtƒBƒbƒNƒX $@ ‚ðŽw’肵‚Ä‚‚¾‚³‚¢.
-
- E‰i‘±“I/ˆêŽž“I‚Æ‚à‚É•¶Žš—ñŒ^‚ɑΉž‚µ‚Ä‚¢‚Ü‚·B
- •¶Žš—ñŒ^‚̃|ƒXƒgƒtƒBƒbƒNƒX‚Í$‚Å‚·B
-
- <—á> $@hoge ”’lŒ^ˆêŽžƒ}ƒbƒv•Ï”A$hoge$ •¶Žš—ñŒ^‰i‘±ƒ}ƒbƒv•Ï”
- E‰i‘±ƒ}ƒbƒv•Ï”‚̓fƒtƒHƒ‹ƒg‚Å‚Í save/mapreg.txt ‚É•Û‘¶‚³‚ê‚Ü‚·B
- ‚±‚ê‚Ímap_athena.conf‚Ìmapreg_txt‚ÅÝ’è‚Å‚«‚Ü‚·B
-
-Estr_data‚ªÄŠ„‚è“–‚Ä‚³‚ê‚é‚ƃ}ƒbƒv•Ï”‚ª³í‚ÉŽg—p‚Å‚«‚È‚¢ƒoƒOC³
- Estrdb‚©‚çnumdb‚É‚µ‚ÄA•Ï”–¼‚Ístr_buf‚É“ü‚ê‚é‚悤‚ÉB
-
-Emap_athena.conf‚Ìdelnpc,npc:clear‚ª³‚µ‚“‚©‚È‚¢ƒoƒOC³
-
- (map/)
- npc.c
- npc_delsrcfile(),npc_clearsrcfile()C³
- script.c / script.h
- ƒ}ƒbƒv•Ï”Œn‚©‚È‚èC³
- map.c
- map_read_config()C³‚È‚Ç
- (conf/)
- map_athena.conf
- mapreg_txt’ljÁ
- (doc/)
- conf_ref.txt
- mapreg_txt,help_txt,motd_txt’ljÁ
- script_ref.txt
- •¶Žš—ñŒ^•Ï”‚Ìà–¾C³
-
---------------------
-//0895 by Selena
-
-Emapflag‚Énozenypenalty‚ð’ljÁB
-@GVG‚âŠX’†‚̃eƒ‚È‚Ç‚ÅŽ€–S‚µ‚½Û‚ÉAZenyƒyƒiƒ‹ƒeƒB[”¶‚ðŠO‚·—pB
-
- (map/)
- pc.c
- pc_setrestartvalue() C³
- script.c
- buildin_setmapflag()Abuildin_removemapflag() C³
- npc.c
- npc_parse_mapflag() C³
- map.h
- map_data() C³
- (db/)
- const.txt C³B
-
---------------------
-//0894 by ‚Ò‚´‚Ü‚ñ
-
-EƒR[ƒ}ˆÈŠO‚̃Aƒuƒ‰ƒJƒ_ƒuƒ‰ŒÅ—LƒXƒLƒ‹‘SŽÀ‘•B
-@ƒI[ƒgƒXƒyƒ‹‚ɂ̓Œƒxƒ‹ƒAƒbƒvˆÈŠO‘½•ª‘S•”悹‚ê‚Ü‚·B(ƒI[ƒgƒXƒyƒ‹ƒŒƒxƒ‹ƒAƒbƒv‚Í–¢ƒeƒXƒg)
-EƒAƒuƒ‰ƒJƒ_ƒuƒ‰‰¼ŽÀ‘•
-@”“®ƒXƒLƒ‹‚ªƒŒƒxƒ‹ˆË‘¶‚¶‚á‚ ‚è‚Ü‚¹‚ñB
-@‘S‚Ä‚Ì”“®—¦‚ª—˜_ã‹Ïˆê‚Å‚·B
-@ƒAƒCƒeƒ€ƒXƒLƒ‹‚ðŽg‚Á‚ÄŽÀ‘•‚µ‚Ä‚¢‚é‚̂ňꕔ‚ÌŽg—pðŒ‚𖳎‹‚µ‚Ü‚·iƒWƒFƒ€ã©‹C‹…“™j
-EƒAƒCƒeƒ€ƒXƒLƒ‹‚ªƒLƒƒƒXƒgEƒfƒBƒŒƒC–³‚µ‚¾‚Á‚½‚Ì‚ðC³B
-
- (map/)
- skill.c
- skill_castend_nodamage_id()Askill_use_id()Askill_use_pos() C³B
- skill_abra_dataset() ’ljÁB
- (db/)
- skill_db.txt C³B
-
---------------------
-//0893 by ŒÓ’±—–
-
-E‘¼ƒ}ƒbƒv‚©‚çƒ|[ƒ^ƒ‹‚Ìã‚Ƀ[ƒv‚µ‚Ä‚«‚½PC‚ªƒ[ƒv‚µ‚È‚¢–â‘è‚ðC³
-Eƒ`ƒƒƒbƒg’†‚ÌPC‚ðƒ[ƒvƒ|[ƒ^ƒ‹‚Å”ò‚΂·‚©‚Ç‚¤‚©Ý’è‰Â”\‚É
-EMOB‚ðƒ[ƒvƒ|[ƒ^ƒ‹‚Å”ò‚΂·‚©‚Ç‚¤‚©Ý’è‰Â”\‚É
- MOB‚̃[ƒvƒ|[ƒ^ƒ‹‚ð‹–‰Â‚·‚é‚ÆAƒeƒ‚ªŠÈ’P‚É‚Å‚«‚é‚Ì‚Å’ˆÓB
-
-EƒAƒJƒEƒ“ƒg•Ï”•ÏX‚Æ“¯Žž‚Ƀtƒ@ƒCƒ‹‚É‘‚«o‚·‚悤‚ÉC³
-Eƒ}ƒbƒvƒf[ƒ^‚̃[ƒh•”•ª‚̃ƒO•\Ž¦‚Í‚ ‚Ü‚èd—v‚¶‚á‚È‚¢‚ÆŽv‚¤‚Ì‚Å•ÏXB
-
- (char/)
- inter.c
- mapif_parse_AccReg()‚Åinter_accreg_save()‚ðŒÄ‚Ԃ悤‚ÉC³
- (map/)
- mob.c/mob.h
- mob_warp()‚̈ø”•ÏX‚ÆC³
- battle.c/battle.h
- mob_warp()ŒÄ‚Ño‚µ‚̈ø”C³
- battle_configŠÖ˜A
- map.c
- map_readallmap(),map_readmap()C³
- pc.c
- pc_setpos()C³
- skill.c
- mob_warp()ŒÄ‚Ño‚µ‚̈ø”C³
- skill_unit_onplace()C³
- (conf/)
- battle_athena.conf
- chat_warpportal,mob_warpportal‚̒ljÁ
- (doc/)
- conf_ref.txt
- chat_warpportal,mob_warpportal‚̒ljÁ
-
---------------------
-//0892 by ŒÓ’±—–
-
-EŠeŽíconfƒtƒ@ƒCƒ‹‚ŕʃtƒ@ƒCƒ‹‚ðƒCƒ“ƒ|[ƒg‚Å‚«‚é‚悤‚É‚µ‚½
- EŽ©•ª‚̃T[ƒo[—p‚ÌÝ’è‚ð•Êƒtƒ@ƒCƒ‹‚É‹Lq‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B
- E‘S‚Äuimport: ƒtƒ@ƒCƒ‹–¼vŒ`Ž®‚Å‹Lq‚µ‚Ü‚·B
- EŠeŽíconfƒtƒ@ƒCƒ‹ilogin,char,map,inter,atcommand,battlej‚ÌÅŒã‚É
- conf/import/*_conf ‚ð“ǂނ悤‚ÉŽw’肵‚½‚Ì‚ÅA‚»‚±‚ÉŽ©•ª—p‚ÌÝ’è‚ð
- ‘‚¢‚Ä‚¨‚¯‚ÎA•ÏX•”•ª‚̂݃I[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B
- msg,script‚Ìconf‚ɂ‚¢‚Ä‚ÍA‚±‚ÌŒÀ‚è‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªAimport–½—ß‚Ì
- ˆ—‚͒ljÁ‚³‚ê‚Ä‚¢‚é‚Ì‚ÅAŽ©•ª‚Åimport–½—߂𑂯‚Γ®‚«‚Ü‚·B
- EV‚µ‚¢ƒXƒiƒbƒvƒVƒ‡ƒbƒg‚ªo‚½ê‡‚È‚Ç‚ÉA‚±‚Ìconf/importƒtƒHƒ‹ƒ_‚ð
- Ì‚ÌAthena‚©‚çƒRƒs[‚·‚邾‚¯‚ÅŽ©•ª—p‚ÌÝ’è‚ð“K—p‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·.
-
-Emap_athena.conf‚Ìmap‚Ænpc‚ŒljÁ‚µ‚½ƒtƒ@ƒCƒ‹‚ð휂ł«‚é‚悤‚É‚µ‚½
- Eã‚ÉŠÖ˜A‚·‚é•ÏX‚Å‚·B
- Edelmap,delnpc–½—ß‚ðŽg—p‚·‚ê‚ÎAmap,npc–½—߂ŒljÁ‚µ‚½ƒtƒ@ƒCƒ‹‚ð
- “Ç‚Ýž‚Ü‚È‚¢‚悤‚ÉŽw’è‚Å‚«‚Ü‚·B‚±‚±‚Ńtƒ@ƒCƒ‹–¼‚Å‚Í‚È‚A
- all ‚ÆŽw’è‚·‚é‚Æ‚»‚ê‚Ü‚Å‚ÉŽw’肳‚ꂽƒtƒ@ƒCƒ‹‚ð‘S‚Ä“Ç‚Ýž‚Ü‚È‚‚µ‚Ü‚·.
- Emap,npc–½—ß‚ÅAƒtƒ@ƒCƒ‹–¼‚Éclear‚ðŽw’è‚·‚é‚ÆA
- delmap,delnpc‚Ìall‚Æ“¯“™‚Ì“®ì‚ð‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
-
-Elogin_athena.conf‚Ìallow‚Ædeny‚ðƒNƒŠƒA‚Å‚«‚é‚悤‚É‚“‚½
- Eallow‚¨‚æ‚Ñdeny–½—ß‚Åclear‚ðŽw’è‚·‚é‚ƈȑO‚̃zƒXƒgî•ñ‚ð‘S휂µ‚Ü‚·.
-
- (conf/)
- ŠeŽíconfƒtƒ@ƒCƒ‹‚ÌÅŒã‚Éimport–½—ߒljÁ
- (conf/import)
- *.txt
- ƒCƒ“ƒ|[ƒg‚³‚ê‚éƒtƒ@ƒCƒ‹B‚±‚ê‚ç‚ÉŽ©•ª—p‚ÌÝ’è‚ð‘‚‚Æ‚æ‚¢B
- (login/)
- login.c
- login_read_config()C³
- (char/)
- char.c/inter.c
- char_read_config(),inter_read_config()C³
- (map/)
- map.c
- map_read_config(),map_addmap()C³Amap_delmap()’ljÁ
- npc.c
- npc_addsrcfile()C³,npc_delsrcfile(),npc_clearsrcfile()’ljÁ
- battle.c/atcommand.c/script.c
- battle_read_config(),atcommand_read_config(),
- msg_read_config(),script_read_config()C³
- (doc/)
- conf_ref.txt
- C³
-
---------------------
-//0891 by (“Ê)
-
-EuƒXƒLƒ‹Žg—p‚ÌŒã‚ÍA‚µ‚΂炂¨‘Ò‚¿‚‚¾‚³‚¢v‚ð•\Ž¦‚·‚é‚©‚Ç‚¤‚©Ý’è‚Å‚«‚é‚悤‚É‚µ‚½B
- E–{ŽI‘ŠˆáƒXƒŒƒbƒh@‘´‚̇U>>5‚³‚ñ‚̃R[ƒh‚ðƒpƒNƒŠ‚Ü‚µ‚½B
- (doc/)
- conf_ref.txt C³B
- (conf/)
- battle_athena.conf C³B
- (map/)
- battle.h C³B
- battle.c
- battle_config_read() C³B
- clif.c
- clif_skill_fail() C³B
-
---------------------
-//0890 by Ž€_
-
-EƒMƒ‹ƒh‘qŒÉ‚ðˆê“x‚Ɉêl‚¾‚¯‚ªŽg—p‚·‚é‚悤‚É•ÏXB(–¢ƒeƒXƒg)
-Ebattle_athena.conf‚©‚çplayer_undead_nofreeze íœB
-E@ƒRƒ}ƒ“ƒh@gstorage ’ljÁB
-EƒXƒNƒŠƒvƒgguildstorage‚ðguildopenstorage‚É•ÏXB
-E‚»‚Ì‘¼×‚©‚¢ƒoƒOC³B
- (doc/)
- conf_ref.txt C³B
- script_ref.txt C³B
- (conf/)
- atcommand_athena.conf C³B
- battle_athena.conf C³B
- help.txt C³B
- (conf/sample/)
- gstorage_test.txt ’ljÁB
- (char/)
- makefile C³B
- int_storage.h C³B
- int_storage.c
- inter_storage_delete()Ainter_guild_storage_delete() ’ljÁB
- int_guild.c
- guild_check_empty()Amapif_parse_BreakGuild() C³B
- (map/)
- makefile C³B
- battle.h C³B
- battle.c
- battle_config_read() C³B
- guild.c
- guild_broken() C³B
- storage.h C³B
- storage.c
- storage_guild_storageopen() C³B
- storage_delete()Aguild_storage_delete() ’ljÁB
- script.c
- buildin_guildstorage() ‚ð buildin_guildopenstorage()‚É•ÏXB
- intif.c
- intif_parse_LoadGuildStorage() C³B
- mob.c
- mob_summonslave()Amob_damage()Amob_delete() C³B
- mob_catch_delete()Amob_readdb() C³B
- skill.c
- skill_castend_nodamage_id()Askill_status_change_start() C³B
- clif.c
- clif_parse_ActionRequest() C³B
- atcommand.h C³B
- atcommand.c
- atcommand() C³B
-
---------------------
-//0889 by ŒÓ’±—–
-
-E•¶Žš—ñŒ^ˆêŽž“IƒLƒƒƒ‰ƒNƒ^[•Ï”‹@”\’ljÁB
- EƒvƒŒƒtƒBƒbƒNƒX@,ƒ|ƒXƒgƒtƒBƒbƒNƒX$‚ðŽg—p‚µ‚Ü‚·Bi@hoge$‚È‚Çj
- Einput‚Å•¶Žš—ñ•Ï”‚ðŽw’è‚·‚é‚Æ•¶Žš—ñ“ü—Í‚É‚È‚è‚Ü‚·B
- EŠÖŒW‰‰ŽZŽqi”äŠr‰‰ŽZŽqj‚Å•¶Žš—ñ‚Ç‚¤‚µ‚ðŽw’è‚·‚é‚Æ•¶Žš—ñ‚Ì”äŠr‚ª
- ‚Å‚«‚Ü‚·B”’l‚Æ•¶Žš—ñ‚𬂺‚Ä”äŠr‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
- E‚Æ‚è‚ ‚¦‚¸ƒTƒ“ƒvƒ‹•t‚¯‚Ä‚Ü‚·B
-
- (map/)
- map.h
- struct map_session_data‚Énpc_str,regstr,regstr_numƒƒ“ƒo’ljÁ
- script.c
- buildin_set(),get_val(),buildin_input(),op_2num()‚È‚ÇC³
- op_2str(),op_2()’ljÁ
- clif.c / clif.h
- 01d5ƒpƒPƒbƒg’·C³
- clif_parse_NpcStringInput(),clif_scriptinputstr()’ljÁ
- pc.c / pc.h
- pc_readregstr(),pc_setregstr()’ljÁ
- (doc/)
- script_ref.txt
- ‰‰ŽZŽq‚Ìà–¾’ljÁA•Ï”‚Ìà–¾C³Ainput,menuC³
- (conf/sample/)
- npc_test_str.txt
- •¶Žš—ñ•Ï”‚ðŽg—p‚µ‚½ƒXƒNƒŠƒvƒg‚Ì—áB
- •¶Žš—ñ‚Ì‘ã“üAŒ‹‡A”äŠrA“ü—͂Ȃǂ̃eƒXƒg‚ðs‚¤‚à‚ÌB
-
---------------------
-//0888 by Ž€_
-
-EÝŒv‚©‚çŠÔˆá‚Á‚Ä‚¢‚½ƒMƒ‹ƒh‘qŒÉC³B(‚½‚¾•¡”l‚ÌŽg—p‚É‚æ‚éƒoƒO‚ª‚ ‚é‰Â”\«‚Í‚Ü‚¾‚ ‚è‚Ü‚·B)
-Eׂ©‚¢ƒoƒOC³B
- (doc/)
- inter_server_packet.txt C³B
- conf_ref.txt C³B
- (conf/)
- inter_athena.conf C³B
- help.txt C³B
- (common/)
- mmo.h C³B
- (char/)
- makefile C³B
- int_storage.h C³B
- int_storage.c
- account2storage()Ainter_storage_init()Astorage_fromstr() C³B
- inter_storage_save()Amapif_load_storage() C³B
- mapif_parse_SaveStorage() C³B
- guild_storage_fromstr()Aguild_storage_tostr() ’ljÁB
- inter_storage_save_sub()Ainter_guild_storage_save_sub() ’ljÁB
- inter_guild_storage_save()Amapif_parse_LoadGuildStorage() ’ljÁB
- mapif_parse_SaveGuildStorage()Amapif_load_guild_storage() ’ljÁB
- mapif_save_guild_storage_ack()Aguild2storage() ’ljÁB
- int_party.c
- inter_party_init() C³B
- int_guild.h C³B
- int_guild.c
- inter_guild_init() C³B
- inter_guild_search() ’ljÁB
- int_pet.c
- inter_pet_init() C³B
- inter.c
- inter_init()Ainter_save()Ainter_config_read() C³B
- (map/)
- makefile C³B
- map.h C³B
- map.c
- map_quit()Ado_init() C³B
- pc.c
- pc_setpos() C³B
- storage.h C³B
- storage.c
- do_init_storage()Ado_final_storage()Aaccount2storage() C³B
- storage_storageopen()Astorage_storageadd()Astorage_storageget() C³B
- storage_storageaddfromcart()Astorage_storagegettocart() C³B
- storage_storageclose()Astorage_storage_quit() C³B
- storage_storage_save() C³B
- guild2storage()Astorage_guild_storageopen() ’ljÁB
- guild_storage_additem() Aguild_storage_delitem() ’ljÁB
- storage_guild_storageadd()Astorage_guild_storageget() ’ljÁB
- storage_guild_storageaddfromcart()Astorage_guild_storagegettocart() ’ljÁB
- storage_guild_storageclose()Astorage_guild_storage_quit() ’ljÁB
- intif.h C³B
- intif.c
- intif_send_storage()Aintif_parse_LoadStorage()Aintif_parse() C³B
- intif_request_guild_storage()Aintif_send_guild_storage() ’ljÁB
- intif_parse_SaveGuildStorage()Aintif_parse_LoadGuildStorage() ’ljÁB
- clif.h C³B
- clif.c
- clif_additem()Aclif_parse_MoveToKafra() C³B
- clif_parse_MoveFromKafra()Aclif_parse_MoveToKafraFromCart() C³B
- clif_parse_MoveFromKafraToCart()Aclif_parse_CloseKafra() C³B
- clif_parse_LoadEndAck() C³B
- clif_guildstorageitemlist()Aclif_guildstorageequiplist() ’ljÁB
- clif_updateguildstorageamount()Aclif_guildstorageitemadded() ’ljÁB
- guild.c
- guild_broken() C³B
- script.c
- buildin_openstorage()Abuildin_guildstorage() C³B
- skill.c
- skill_castend_nodamage_id() C³B
- mob.c
- mob_summonslave()Amob_damage() C³B
- atcommand.c
- atkillmonster_sub()Aatcommand() C³B
-
---------------------
-//0887 by Ž‚Žqo^.^o
-
-E(db/)
- skill_tree.txt C³
-
---------------------
-//0886 by ‚Ò‚´‚Ü‚ñ
-
-EƒT[ƒo[snapshot
-Eƒtƒ@ƒCƒ‹’²®
-
---------------------
-//0885 by huge
-
-EƒMƒ‹ƒh‹¤—L‘qŒÉ‚ÌŽÀ‘•Bguildstorage‚ÅŠJ‚¯‚Ü‚·B
- Ž©•ª‚ÌŽI‚ÅŽÀŒ±‚Í‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªA‰ß‘a’n‚È‚Ì‚Å‘½l”ƒMƒ‹ƒh‚É‚È‚é‚Æ‚Ç‚¤“®‚‚©•ª‚©‚è‚Ü‚¹‚ñB
- (”O‚Ì‚½‚߃oƒbƒNƒAƒbƒv‚Í•K‚¸Žæ‚Á‚Ä‚¨‚¢‚ĉº‚³‚¢)
-Eareawarp‚ÅA‘ÎÛƒ}ƒbƒv–¼‚ð"Random"‚É‚·‚é‚ÆA“¯ƒ}ƒbƒv“à‚щƒ“ƒ_ƒ€‚É”ò‚Ԃ悤‚ÉC³B
-EGMƒRƒ}ƒ“ƒh‚Ŷ‚«•Ô‚µ‚½‚Æ‚«‚ÉSP‚à‘S‰ñ•œ‚·‚é‚悤‚ÉC³B
-EƒfƒBƒ{[ƒVƒ‡ƒ“‚ÌðŒ‚ð‚¿‚å‚Á‚ÆC³B
-
- (char/)
- int_storage.c
- mapif_load_storage() C³B
- mapif_parse_SaveStorage() C³B
- inter.c
- inter_send_packet_length[] C³B
- inter_recv_packet_length[] C³B
- (map/)
- atcommand.c
- @alive,@raise,@raisemap C³B
- intif.c
- packet_len_table[] C³B
- intif_request_storage() C³B
- intif_send_storage() C³B
- intif_parse_LoadStorage() C³B
-
- map.h
- map_session_data state‚Éstorage_flag ’ljÁB
- script.c
- buildin_areawarp_sub() C³B
- buildin_openstorage() C³B
- buildin_guildstorage() ’ljÁB
- skill.c
- skill_castend_nodamage_id() C³B
- storage.c
- account2storage() C³B
- storage_storageopen() C³B
- storage_storage_save() C³B
-
---------------------
-//0884 by Ž€_
-
-Eׂ©‚¢ƒoƒOC³B
-Ebattle_athena.conf‚Épet_strAzeny_penaltyAresurrection_exp ’ljÁB
-E0878‚Ì‹âsŠÖŒW‚̃R[ƒh‚Í‚à‚¤‚¢‚ç‚È‚¢‚Ì‚Å‘S‚ÄíœB
-Ezeny_penalty‚ðݒ肵‚ÄŽg‚¤ê‡‚ÍŽè”—¿‚Í‚È‚‚µ‚½•û‚ª‚¢‚¢‚©‚àB
-Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚Åpercentheal‚É‚àPP‚ÆLP‚É‚æ‚é‰ñ•œƒ{[ƒiƒX‚ª•t‚‚悤‚É•ÏXB(‚½‚¾vit‚âintAHPRAMPR‚É‚æ‚é‰ñ•œƒ{[ƒiƒX‚ª•t‚«‚Ü‚¹‚ñB)
-E‚Ù‚Æ‚ñ‚Ç–¢ƒeƒXƒgB
- (common/)
- mmo.h C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- map.c
- do_init()Ado_final() C³B
- script.c
- buildin_openbank() íœB
- buildin_failedrefitem() C³B
- storage.h C³B
- storage.c
- do_init_bank()Ado_final_bank()Aaccount2bank() íœB
- storage_bank()Astorage_readbank() íœB
- skill.c
- skill_castend_nodamage_id()Askill_attack() C³B
- battle.h C³B
- battle.c
- battle_calc_pet_weapon_attack()Abattle_config_read() C³B
- pc.c
- pc_setrestartvalue() C³B
- clif.c
- clif_skill_nodamage()Aclif_refine() C³B
- itemdb.c
- itemdb_isequip3() C³B
- atcommand.c
- atcommand() C³B
-
---------------------
-//0883 by Kalen
-
-EWarpFXC³
- EƒAƒTƒVƒ“ƒMƒ‹ƒhŽü‚èC³(̂̂܂܂̃Šƒ“ƒN‚¾‚Á‚½‚Ì‚ÅŒ»Ý‚Ìó‘Ô‚ÉC³B)
- EYuno‚ÌWarp‘S–ÊŒ©’¼‚µ(YumilLoopC³ASageCastleRandomWarp’ljÁA—ˆã‚³‚ñ‚̉ƒljÁ)
- Eƒ‚ƒ“ƒNƒMƒ‹ƒhŽü‚è’ljÁ
-ENPCFXC³
- E–XŽqì¬NPC‚ð•Êƒtƒ@ƒCƒ‹‚ÖBˆê•”’ljÁ(ep2.5’ljÁ•ª)
- @ŽQlData(R.O.M776): ttp://green.sakura.ne.jp/~youc/ro/data/itemmaking.html#04
- EƒAƒTƒVƒ“ƒMƒ‹ƒhC³
- E“ñŽŸE“]EŠÖŒWNPCˆê•”’ljÁ(‚±‚ê‚ŃRƒ‚ƒh¬Œ€ê‚Ös‚¯‚Ü‚·)
- Eƒ}ƒXƒ^[ƒAƒ‹ƒPƒ~ƒXƒg‚̑䎌C³
- EƒAƒ‹ƒfƒoƒ‰ƒ“‚̈ēà—vˆõ‚ðˆÚ“®&‘䎌C³&ƒCƒ[ƒW’ljÁ
- EBBS‚É‚ ‚ª‚Á‚Ä‚¢‚½ƒRƒ‚ƒhƒXƒNƒŠƒvƒg’ljÁ(event_hat“™‚Ö•ªŽU)
- EƒRƒ“ƒƒ“ƒNƒGƒXƒgŠÖŒWNPCˆê•”’ljÁ(—ˆã[yuno]Aƒlƒ‹[prontera])
- (conf/warp/)
- npc_warp.txt
- npc_warp30.txt
- npc_warp_job.txt
- (conf/npc/)
- npc_event_hat.txt(V‹K)
- npc_job_2nd.txt
- npc_job_alchemist.txt
- npc_town_aldebaran.txt
- npc_town_comodo.txt
- npc_town_gonryun.txt
- npc_town_guide.txt
- npc_town_yuno.txt
- npc_town_lutie.txt
-
---------------------
-//0882 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚É0881‘Š“–‚̃AƒJƒEƒ“ƒg‹¤—L•Ï”‹@”\‚̃vƒŒƒtƒBƒbƒNƒX•ÏX
- E0881‚̃AƒJƒEƒ“ƒg•Ï”‚̓vƒŒƒtƒBƒbƒNƒX##‚É‚È‚è‚Ü‚µ‚½B
- E0881‚̃AƒJƒEƒ“ƒg•Ï”‚Í‘Sƒ[ƒ‹ƒh‚Å‹¤—L‚³‚ê‚Ü‚·B
- E•Ï”‚̌”‚Ímmo.h‚ÌACCOUNT_REG2_NUM‚Å’è‹`‚³‚ê‚Ä‚¢‚Ü‚·(16)B
-Eƒ[ƒ‹ƒh“à‚̃AƒJƒEƒ“ƒg‹¤—L•Ï”‹@”\’ljÁ
- E•Ï”–¼‚̃vƒŒƒtƒBƒbƒNƒX‚Í#‚Å‚·B
- E•Ï”‚̌”‚Ímmo.h‚ÌACCOUNT_REG_NUM‚Å’è‹`‚³‚ê‚Ä‚¢‚Ü‚·(16)B
- E0881‚Ì‹âsƒXƒNƒŠƒvƒg‚Í‚±‚¿‚ç‚ðŽg—p‚·‚é‚悤‚É‚È‚è‚Ü‚·B
- ‚æ‚Á‚ĈȑO‚̃f[ƒ^‚ª‚‚©‚¦‚È‚¢‚Ì‚Å‚ ‚ç‚©‚¶‚߈ø‚«o‚µ‚Ä‚¨‚¢‚Ä‚‚¾‚³‚¢.
- E•Ï”ƒf[ƒ^‚Í save/accreg.txt ‚É•Û‘¶‚³‚ê‚Ü‚·B
- ‚±‚̃tƒ@ƒCƒ‹–¼‚Í inter_athena.conf ‚Å•ÏX‰Â”\‚Å‚·Bconf_ref.txtŽQÆB
-
- (common/)
- mmo.h
- ACCOUNT_REG_NUM‚ð16‚ÉAACCOUNT_REG_NUM2’ljÁ
- struct mmo_charstatus‚Éaccount_reg2_num,account_reg2ƒƒ“ƒo’ljÁ
- (login/)
- login.c
- account_reg‚ð‘S‚Äaccount_reg2‚É’u‚«Š·‚¦
- (char/)
- char.c
- account_reg‚ð‘S‚Äaccount_reg2‚É’u‚«Š·‚¦
- inter.c
- ƒ[ƒ‹ƒh“àƒAƒJƒEƒ“ƒg•Ï”‹@”\’ljÁB
- inter_accreg*()’ljÁAaccreg_db’ljÁ‚È‚ÇB
- (map/)
- chrif.c/chrif.h
- account_reg‚ð‘S‚Äaccount_reg2‚É’u‚«Š·‚¦
- 0881‚ł̃oƒO‚ðC³
- intif.c/intif.h
- ƒ[ƒ‹ƒh“àƒAƒJƒEƒ“ƒg•Ï”‹@”\’ljÁB
- pc.c/pc.h
- pc_*accountreg()=>pc_*accountreg2()‚ÉB
- pc_setaccountreg(),pc_readaccountreg()’ljÁB
- script.c
- buildin_set(),buildin_get_val(),buildin_input()C³
- (doc/)
- inter_server_packet.txt
- ƒ[ƒ‹ƒh“àƒAƒJƒEƒ“ƒg•Ï”ŠÖŒW
- conf_ref.txt
- accreg_txt’ljÁ
-
---------------------
-//0881 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚ɃAƒJƒEƒ“ƒg‹¤—L•Ï”‹@”\’ljÁ
- E•Ï”–¼‚ɃvƒŒƒtƒBƒbƒNƒX#‚ð•t‚¯‚邱‚ƂŃAƒJƒEƒ“ƒg‹¤—L•Ï”‚É‚È‚è‚Ü‚·B
- EƒAƒJƒEƒ“ƒg•Ï”‚Í•ÏX‚µ‚½Žž“_‚Å‘SƒT[ƒo[‚Ƀ|ƒXƒg‚³‚ê‚é‚Ì‚Å
- •p”É‚É‘‚«Š·‚¦‚é‚ƃT[ƒo[ŠÔ’ÊM‚ª”ì‘剻‚µ‚Ü‚·B
- EƒAƒJƒEƒ“ƒg•Ï”‚Í•ÏX‚µ‚½Žž“_i‚»‚µ‚Ä‚»‚ꂪloginŽI‚É“Í‚¢‚½Žž“_j‚Å
- account.txt‚É‘‚«o‚³‚ê‚Ü‚·B
- EƒOƒ[ƒoƒ‹•Ï”i‰i‘±•Ï”j‚̌”‚ð96‚ÉŒ¸‚炵AŒ¸‚Á‚½32ŒÂ•ª‚ð
- ƒAƒJƒEƒ“ƒg•Ï”‚É‚µ‚Ä‚¢‚Ü‚·‚ªAmmo_charstatus‚̃TƒCƒY‚ª
- 16000byte‚ð’´‚¦‚È‚¢ŒÀ‚è‘‚â‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·Bƒ0879‚Ì•ÏX‚ðŽQÆ
- •Ï”‚̌”‚Ímmo.h‚ÌACCOUNT_REG_NUM‚Å’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B
- E0878‚Ì‹âs‚ðƒAƒJƒEƒ“ƒg•Ï”‚ðŽg—p‚·‚é‚悤‚ÉC³
- bank.txt‚̃f[ƒ^‚ªŽg‚¦‚È‚‚È‚é‚Ì‚Å‚ ‚ç‚©‚¶‚߈ø‚«o‚µ‚Ä‚¨‚¢‚ĉº‚³‚¢B
-
- (common/)
- mmo.h
- GLOBAL_REG_NUM‚ð96‚ÉAACCOUNT_REG_NUM‚ð’ljÁ
- struct mmo_charstatus‚Éaccount_reg_num,account_regƒƒ“ƒo’ljÁ
- (login/)
- login.c
- ƒpƒPƒbƒg2728ˆ—’ljÁ
- (char/)
- char.c
- ƒpƒPƒbƒg2729,2b10ˆ—’ljÁ
- (map/)
- chrif.c
- chrif_saveaccountreg(),chrif_accountreg()
- (ƒpƒPƒbƒg2b10,2b11ˆ—)’ljÁB
- pc.c/pc.h
- pc_readaccountreg(),pc_setaccountreg()’ljÁ
- script.c
- buildin_set(),buildin_get_val(),buildin_input()C³
- (conf/sample/)
- bank_test.txt
- ƒAƒJƒEƒ“ƒg•Ï”Žg—p”Å‚Ì‹âsƒXƒNƒŠƒvƒg
-
---------------------
-//0880 by Ž€_
-
-Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚𳂵‚ŽÀ‘•‚Æ‚¿‚å‚Á‚Æ‹@”\Šg’£B
-Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚ŃŒƒxƒ‹•Ê‚ÉŽg‚¦‚éƒAƒCƒeƒ€‚ðskill_require_db.txt‚ÉÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B‚½‚¾ƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚ÅŽg‚¦‚éƒAƒCƒeƒ€‚ÍitemhealApercenthealAsc_startAsc_endˆÈŠO‚Ì•¨‚ª“ü‚Á‚Ä‚¢‚é‚Ƴ‚µ‚“®ì‚µ‚Ü‚¹‚ñB
-ƒŒƒxƒ‹5‚Ü‚Å‚Í–{ŽI‚ɇ‚킹‚Ä‚¢‚Ü‚·‚ªÅ‘僌ƒxƒ‹‚ð10‚Ü‚ÅŠg’£‚·‚é‚ƃŒƒxƒ‹6 - ƒ}ƒXƒeƒ‰‚ÌŽÀA7 - ƒ[ƒ„ƒ‹ƒ[ƒŠ[A8 - ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽíA9 - ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀA10 - ƒo[ƒT[ƒNƒ|[ƒVƒ‡ƒ“‚Éݒ肵‚Ä‚¢‚Ü‚·Bskill_db.txt‚ðC³‚·‚ê‚΂±‚ꂪ—LŒø‚É‚È‚è‚Ü‚·B(‚Ç‚±‚ðC³‚·‚é‚©‚à‚í‚©‚ç‚È‚¢l‚Í’ú‚߂邱‚Æ‚Å‚·B) ƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚É‚æ‚éƒAƒCƒeƒ€Žg—p‚ÍŽg—pðŒ‚𖳎‹‚µ‚Ü‚·B‚µ‚̓Aƒ‹ƒPƒ~ƒXƒg‚ÉŠó–]‚ª‚Å‚«‚½‚©‚à...(‘½•ª–³—...)
-Ebattle_athane.conf‚Éproduce_item_name_inputAproduce_potion_name_inputAmaking_arrow_name_inputAholywater_name_input ’ljÁB
-Eƒp[ƒeƒBˆõ‚É‚¾‚¯Žg‚¤ƒXƒLƒ‹‚ƃMƒ‹ƒhˆõ‚É‚¾‚¯Žg‚¤ƒXƒLƒ‹‚ðÝ’è‚Å‚«‚é‚悤‚ÉC³B
-E‚»‚Ì‘¼×‚©‚¢C³B
- (conf/)
- battle_athane.conf C³B
- (doc/)
- conf_ref.txt C³B
- db_ref.txt C³B
- (db/)
- skill_db.txt C³B
- skill_require_db.txt C³B
- (map/)
- map.h C³B
- skill.h C³B
- skill.c
- skill_status_change_timer()Askill_attack()Askill_use_id() C³B
- skill_castend_nodamage_id()Askill_castend_damage_id() C³B
- skill_castend_id()Askill_castend_pos()Askill_produce_mix() C³B
- skill_arrow_create()Askill_check_condition() C³B
- skill_status_change_clear()Askill_readdb() C³B
- mob.c
- mobskill_use_id()Amob_changestate() C³B
- pc.c
- pc_itemheal()Apc_percentheal()Apc_calcstatus() C³B
- battle.h C³B
- battle.c
- battle_delay_damage()Abattle_damage()Abattle_heal() C³B
- battle_get_adelay()Abattle_get_amotion() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_weapon_attack()Abattle_config_read() C³B
- clif.c
- clif_skill_fail() C³B
- script.c
- buildin_sc_start()Abuildin_sc_end() C³B
- makefile C³B
-
---------------------
-//0879 by ŒÓ’±—–
-
-E‘—MFIFO‚̃oƒbƒtƒ@ƒI[ƒo[ƒtƒ[‚ÌÆŽã«‚ÌC³
- E2048ƒoƒCƒgˆÈã‚̃pƒPƒbƒg‚ð‘—‚é‚Æ‚«AFIFO‚ª–ž”t‚É‹ß‚¯‚ê‚Î
- ƒoƒbƒtƒ@ƒI[ƒo[ƒtƒ[‚É‚æ‚é•s³ƒAƒNƒZƒX‚ª‹N‚±‚Á‚Ä‚¢‚½–â‘èC³B
- EFIFO‚ª–ž”t‚É‹ß‚¢‚Æ‚«WFIFOSET‚³‚ꂽƒpƒPƒbƒg‚ªŽÌ‚Ä‚ç‚ê‚Ä‚¢‚½–â‘èC³B
- EFIFO‚ªƒI[ƒo[ƒtƒ[‚·‚éê‡AŽ©“®“I‚ÉFIFO‚ðŠg’£‚·‚é‚悤‚É‚µ‚½B
- i‚½‚¾‚µAˆê“x‚ÉWFIFOSET‚·‚éƒpƒPƒbƒg‚ª16384ƒoƒCƒgˆÈ‰º‚Ɖ¼’肵‚Ä‚¢‚éj
- Eusocket: ? wdata expanded to ???? bytesv‚ÍFIFO‚ªŠg’£‚³‚ꂽ‚Æ‚«‚É
- ‚ł郃O‚¾‚ªAƒGƒ‰[‚Å‚Í‚È‚AƒpƒPƒbƒg‚ͳ‚µ‚‘—M‚³‚ê‚éB
- Eusocket: ? wdata lost !!v‚̓pƒPƒbƒg‚ª‘rŽ¸‚µ‚½‚±‚Æ‚ð•\‚·ƒƒO‚ÅA
- ƒGƒ‰[‚Å‚ ‚邪64KB‚ð’´‚¦‚é’´‹‘å‚ȃpƒPƒbƒg‚ðWFIFOSET‚µ‚È‚¢‚Æo‚È‚¢B
- E16384ƒoƒCƒg‚ð’´‚¦‚éƒpƒPƒbƒg‚ðWFIFOSET‚·‚é‚ƃGƒ‰[ƒƒbƒZ[ƒW‚È‚µ‚ÉA
- •s³ƒAƒNƒZƒX‚ª‹N‚±‚é‰Â”\«‚ª‚ ‚é‚Ì‚ÅA’´‚¦‚È‚¢‚悤‚É‚·‚邱‚ÆB
-
- (common/)
- socket.c /socket.h
- WFIFOSET()‚ðƒ}ƒNƒ‚©‚çŠÖ”‚É•ÏX
- realloc_fifo()’ljÁ
-
-EƒT[ƒo[ŠÔ’ÊMFIFO‚̃oƒbƒtƒ@ƒTƒCƒY‚ð‘å‚«‚‚µ‚½
- E‘å—ʂ̃f[ƒ^‚ª’ÊM‚³‚ꂽ‚Æ‚«‚Ƀf[ƒ^ˆ—’x‰„‚ª‹N‚«‚É‚‚‚·‚邽‚ßB
- Eƒƒ‚ƒŠŽg—p—Ê‚ª‘‚¦‚½B(‚¬‚肬‚è‚Ìl‚Í65536‚ÉÝ’è‚·‚é‚ÆŒ³’Ê‚è‚É‚È‚é)
- EƒT[ƒo[ŠÔ’ÊM‚ÌFIFOƒTƒCƒY‚Í mmo.h ‚Å’è‹`‚³‚ê‚Ä‚¢‚éB
- •ÏX‚·‚éꇂÍ64KB(65536)ˆÈã‚Ì’l‚É‚·‚邱‚ÆB
- ‘å‚«‚‚·‚é‚Æ‹‘åƒf[ƒ^ŽóMŽž‚Ì’x‰„‚ªŒ¸‚邪ƒƒ‚ƒŠ‚𑽂Žg‚¤B
- E@kickallŽž‚ȂǂɃf[ƒ^‘—M‚ªŒƒ‚µ‚‚È‚é‚Ì‚Å•ÏX‚µ‚½‚ªA
- “¯ŽžƒƒOƒCƒ“l”‚ª‚È‚¢‚Æ‘‚₵‚Ä‚àˆÓ–¡‚Í–³‚¢B
-
- (common/)
- mmo.h
- FIFOSIZE_SERVERLINKƒ}ƒNƒ’ljÁB
- (login/)
- login.c
- 2710ƒpƒPƒbƒg‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É
- (char/)
- char.c
- 2af8ƒpƒPƒbƒg‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É
- check_connect_login_server()‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É
- (map/)
- chrif.c
- check_connect_char_server()‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É
-
---------------------
-//0878 by huge
-
-EƒJƒvƒ‰‹âsƒT[ƒrƒXB
- Ž©•ª‚ÌŽI‚ÅŽÀ‘•‚µ‚Ä‚½‚ñ‚Å‚·‚ªAˆÓŠO‚ÆDŠ´G‚¾‚Á‚½‚Ì‚Åo‚µ‚Ä‚Ý‚Ü‚·B
- NPCscript‚ÅAopenbank(0);‚Å—a‹àŠz‚ð•Ô‚µ‚ÄA’†‚É”Žš‚ð“ü‚ê‚é‚Æo‚µ“ü‚ꂵ‚Ü‚·B
- Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚𓯕•‚µ‚½‚Ì‚ÅA‚»‚ê‚ðŽQÆB
-
- (common/)
- mmo.h
- struct bank ’ljÁB
- (map/)
- map.c
- do_final(),do_init() C³B
- script.c
- buildin_openbank() ’ljÁB
- storage.c
- storage.h
- ƒOƒ[ƒoƒ‹•Ï”’ljÁB
- do_init_bank(),do_final_bank(),account2bank() ’ljÁB
- storage_bank(),storage_readbank() ’ljÁB
-
---------------------
-//0877 by ŒÓ’±—–
-
-EloginŽI‚̃AƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹‚ªƒlƒbƒgƒ}ƒXƒN•\‹L‚ɑΉž
- 192.168.0.0/24 ‚â 192.168.0.0/255.255.0.0 ‚Æ‚¢‚Á‚½•\‹L‚ɑΉžB
-Ebattle_athena.conf‚ÉGM‚ª–³ðŒ‚Å‘•”õ•i‚ð‘•”õ‚Å‚«‚é•
- –³ðŒ‚ŃXƒLƒ‹‚ðŽg—p‚Å‚«‚éÝ’è’ljÁ
- ‚±‚ê‚ç‚̓fƒoƒO—p‚È‚Ì‚Å“®ì‚É•s“s‡‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-
- (login/)
- login.c
- check_ip()C³,check_ipmask()’ljÁ
- (map/)
- battle.c/battle.h
- battle_config‚Égm_allequip,gm_skilluncond’ljÁ
- battle_config_read()C³X
- skill.c
- skill_check_conditio()C³
- pc.c
- pc_isequp()C³
- (doc/)
- conf_ref.txt
- allow•ÏXAgm_all_equipmentAgm_skill_unconditional’ljÁ
-
---------------------
-//0876 by Ž€_
-
-Eׂ©‚¢ƒoƒOC³B
-E@ƒRƒ}ƒ“ƒh‚ɃeƒXƒg‚ׂ̈ɓü‚ê‚Ä‚¢‚½•¨‚ª“ü‚Á‚Ä‚¢‚½‚Ì‚ÅC³B
-Eƒnƒ“ƒ}[ƒtƒH[ƒ‹‚ÌŽË’ö‚ð5‚©‚ç4‚ÉC³(–{ŽIŽË’ö‚Í•s–¾)‚ƃŠƒUƒŒƒNƒVƒ‡ƒ“‚ª–³‘®«‚¾‚Á‚½‚̂𹑮«‚ÉC³B
- (db/)
- skill_db.txt C³B
- (map/)
- mob.c
- mob_catch_delete()Amob_stop_walking() C³B
- storage.c
- storage_additem() C³B
- pc.c
- pc_damage()Apc_stop_walking() C³B
- clif.c
- clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B
- battle.c
- battle_calc_magic_attack() C³B
- skill.c
- skill_check_condition() C³B
- atcommand.c C³B
-
---------------------
-//0875 by ŒÓ’±—–
-
-Eparty_share_level‚ðinter_athena.conf‚Ɉڂµ‚½
- (ƒp[ƒeƒBŠÖ˜A‚̈—‚ÌŠÇŠ‚ªinterŽI‚Ì‚½‚ß)
-Einter_athena.conf‚Éinter_log_file€–ڒljÁ
-EƒMƒ‹ƒhì¬/‰ðŽU/éè—Ì/é”jŠü‚ªƒƒO‚ÉŽc‚é‚悤‚É
-EƒMƒ‹ƒh‰ðŽUŽž‚Ƀƒ‚ƒŠƒŠ[ƒN‚µ‚Ä‚¢‚½–â‘è‚ðC³
- (char/)
- char.c/char.h
- party_share_levelŠÖ˜A
- (inter/)
- inter.c/inter.h
- party_share_level / inter_log_file ŠÖ˜A
- ƒƒOo—Í—p‚Éinter_log()’ljÁ
- int_guild.c
- ì¬/‰ðŽU/éè—Ì/é”jŠü‚ðƒƒO‚Éo—Í
- ƒƒ‚ƒŠƒŠ[ƒNC³
- (doc/)
- conf_ref.txt
- C³
-
-EƒT[ƒo[ó‘ÔŠm”F—pCGIƒXƒNƒŠƒvƒg“Y•t‚È‚Ç
- EŽ©ŒÈÓ”C•Úׂȉðà–³‚µAŽ¿–₳‚ê‚Ä‚àƒXƒ‹[‚·‚é‰Â”\«—L‚è
- EƒGƒfƒBƒ^‚ÅŠJ‚¢‚½‚ç‚µà–¾—L‚è
- ECGIÝ’u‚ÌŠî–{‚³‚¦‚í‚©‚ê‚Ζâ‘è‚È‚¢‚Í‚¸
-
- (tool/cgi/)
- serverstatus.cgi
- ƒT[ƒo[ó‘ÔŠm”F—pCGIƒXƒNƒŠƒvƒg
- addaccount.cgi
- à–¾C³
-
---------------------
-//0874 by Kalen
-EWhiteDayƒCƒxƒ“ƒg’ljÁ
- conf/npc/npc_event_whiteday.txt(V‹K)
- ‚½‚¾A‚¨‰ÙŽq”„‚Á‚Ă邾‚¯‚Ý‚½‚¢cGM‚ª‚È‚É‚â‚é‚Ì‚©‚Í’m‚è‚Ü‚¹‚ñ‚ªB
- sakRO‚Ì‚Ù‚¤‚ł̓zƒƒCƒgƒ`ƒ‡ƒR‚炵‚«‚à‚Ì‚ª’ljÁ‚³‚ꂽ‚Ì‚É
- jRO‚ŒljÁ‚³‚ꂽ‚Ì‚Í—’d“P‹Žƒpƒbƒ`‚Ì‚Ý(*L„t`;)c
-
-EAlchemistƒMƒ‹ƒh‚Å“û”«A»‘¢‘‚ð•Ï‚¦‚é‚悤‚É
- conf/npc/npc_job_alchemist.txt(V‹K)
- “]EƒNƒGƒXƒg‚ª•ª‚©‚ç‚È‚©‚Á‚½‚̂ʼn·‚ß‚Ä‚¢‚Ü‚µ‚½‚ª
- ”ƒ‚¦‚È‚¢‚Æ•s•Ö‚Æ•·‚¢‚½‚Ì‚ÅA’ljÁ
-
-EõFNPCŽÀ‘•
- conf/npc/npc_event_dye.txt(XV)
- ”¯Œ^•ÏX‚ªsakRO‚É—ˆ‚½‚炵‚¢‚Ì‚Å
- ‚È‚ñ‚Æ‚È[‚XV
-
---------------------
-//0873 by Ž€_
-
-E@ƒRƒ}ƒ“ƒhitem2‚Ækillmonster ’ljÁB
-EƒXƒNƒŠƒvƒggetitem2‚Ækillmonsterall ’ljÁB
-E–î쬂Åì‚ç‚ꂽ–î‚໑¢ŽÒ‚Ì–¼‘O‚ª•t‚‚悤‚ÉC³B
-Ebattle_athena.conf‚Émonster_class_change_full_recover’ljÁB
-E‘•”õƒXƒNƒŠƒvƒg‚ÉbWeaponComaEle‚ÆbWeaponComaRace ’ljÁB
-E‚µŠÔˆá‚¢‚ª‚ ‚Á‚½ƒ_ƒ[ƒWŒvŽZŽ®C³B
-EbInfiniteEndure‚̈—‚ðƒCƒ“ƒfƒ…ƒA•\Ž¦‚È‚µ‚Å“à•”ˆ—‚·‚é‚悤‚É•ÏXB
-EƒI[ƒgƒXƒyƒ‹‚Åcastend_nodamage_id()‚ðŒÄ‚ÔƒXƒLƒ‹‚àŽg—p‚Å‚«‚é‚悤‚ÉC³B
-E‚»‚Ì‘¼×‚©‚¢C³‚ƃoƒOC³B
-E‚Ù‚Æ‚ñ‚Ç–¢ƒeƒXƒg‚Ȃ̂ŃoƒO‚ª‚ ‚Á‚½‚ç•ñ‚¨Šè‚¢‚µ‚Ü‚·B
- (conf/)
- help.txt C³B
- atcommand_athena.conf C³B
- battle_athena.conf C³B
- char_athena.conf C³B
- (db/)
- const.txt C³B
- item_db.txt C³B
- (doc/)
- item_bonus.txt C³B
- script_ref.txt C³B
- conf_ref.txt C³B
- (map/)
- map.h C³B
- map.c
- map_quit() C³B
- skill.h C³B
- skill.c
- skill_castend_nodamage_id()Askill_status_change_clear() C³B
- skill_castend_id()Askill_castend_pos()Askill_arrow_create() C³B
- skill_status_change_timer() C³B
- pc.c
- pc_calcstatus()Apc_bonus2()Apc_equipitem() C³B
- pc_unequipitem()Apc_damage() C³B
- battle.h C³B
- battle.c
- battle_get_dmotion()Abattle_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_calc_magic_attack()Abattle_config_read() C³B
- clif.c
- clif_parse_LoadEndAck()Aclif_damage()Aclif_skill_damage() C³B
- clif_skill_damage2() C³B
- itemdb.h C³B
- itemdb.c
- itemdb_isequip3() ’ljÁB
- mob.h C³B
- mob.c
- mob_delay_item_drop()Amob_damage()Amob_changestate() C³B
- mob_class_change()Amob_delete()Amob_catch_delete() C³B
- script.c
- buildin_getitem() C³B
- buildin_killmonsterall_sub()Abuildin_killmonsterall() ’ljÁB
- atcommand.h C³B
- atcommand.c
- atcommand() C³B
- atkillmonster_sub() ’ljÁB
-
---------------------
-//0872 by ElFinLazz
-
-EƒXƒLƒ‹ƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[C³
-EƒXƒLƒ‹ƒMƒ€ƒ\ƒoƒ“ƒOƒhƒ“ƒ{ƒ‹ƒIƒbƒl‹ïŒ»
-EƒXƒLƒ‹ƒAƒuƒ‰ƒJƒ_ƒu‚È‚ç‹`ƒR[ƒ}‹ïŒ»
-EƒR[ƒ}‚Ì•ŠíƒIƒvƒVƒ‡ƒ“’ljÁ(Ží‘°, 番—¦)
-EƒIƒvƒVƒ‡ƒ“à–¾’ljÁ
- (db/)
- const.txt C³.
- (doc/)
- item_bonus.txt C³.
- (map/)
- map.h C³.
- skill.c
- skill_castend_nodamage_id(), skill_unit_group(), skill_status_change_start() C³.
- pc.c
- pc_calcstatus(), pc_bonus2(), pc_gainexp() C³.
- battle.c
- battle_weapon_attack() C³.
-
---------------------
-//0871 by Ž€_
-
-E0869‚̃oƒOC³B
-Echar_athena.conf‚Ælogin_athena.conf‚É€–ڒljÁB(ƒLƒƒƒ‰ŽI‚ƃƒOƒCƒ“ŽI‚̃ƒOƒtƒ@ƒCƒ‹‚ð•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½BƒfƒtƒHƒ‹ƒg‚Ålog/ƒtƒHƒ‹ƒ_[‚É“ü‚é‚Ì‚ÅlogƒtƒHƒ‹ƒ_[‚ðì‚é•K—v‚ª‚ ‚è‚Ü‚·B)
-EƒGƒiƒW[ƒR[ƒg‚̈—‚ð‚µC³Bƒ‚ƒ“ƒXƒ^[‚ªŽg‚Á‚½ê‡‚̓XƒLƒ‹ƒŒƒxƒ‹*6%‚Ì•¨—ƒ_ƒ[ƒW‚ðŒ¸‚ç‚·‚悤‚É•ÏXB
-E•ŠíˆÈŠO‚Ì•¨‚ł໑¢ŽÒ‚Ì–¼‘O‚ð•\Ž¦‚·‚é‚悤‚É•ÏXB(–{ŽI‚ł̓vƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒX‚ÆŽèì‚èƒ`ƒ‡ƒRƒŒƒbƒgˆÈŠO‚Í•\Ž¦‚³‚ê‚Ü‚¹‚ñ‚ªƒpƒPƒbƒg‚Í‚ ‚邱‚Æ‚¾‚µ“ü‚ê‚Ä‚Ý‚Ü‚µ‚½B)
-E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B
-E@ƒRƒ}ƒ“ƒhˆê‚‚ƃXƒNƒŠƒvƒgˆê‚‚ð’ljÁ‚µ‚Ü‚µ‚½‚ªà–¾‚ÍŒã‚̃pƒbƒ`‚Å‘‚«‚Ü‚·B
- (conf/)
- char_athena.conf C³B
- login_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (login/)
- login.c
- parse_login()Alogin_config_read()Alogin_log() C³B
- (char/)
- char.h C³B
- char.c
- char_config_read()Amake_new_char()Aparse_char() C³B
- int_party.c C³B
- int_storage.c C³B
- int_guild.c C³B
- int_pet.c C³B
- (map/)
- map.h C³B
- skill.c
- skill_status_change_start()Askill_additional_effect() C³B
- skill_castend_nodamage_id()Askill_check_condition() C³B
- skill_status_change_clear()Askill_produce_mix() C³B
- skill_status_change_timer() C³B
- pc.c
- pc_calcstatus()Apc_insert_card()Apc_additem()Apc_cart_additem() C³B
- storage.c
- storage_additem() C³B
- battle.c
- battle_get_adelay()Abattle_get_amotion()Abattle_calc_damage() C³B
- clif.c
- clif_additem()Aclif_equiplist()Aclif_storageequiplist() C³B
- clif_tradeadditem()Aclif_storageitemadded()Aclif_use_card() C³B
- clif_cart_additem()Aclif_cart_equiplist()Aclif_vendinglist() C³B
- clif_openvending()Aclif_arrow_create_list() C³B
- clif_skill_produce_mix_list()Aclif_parse_SelectArrow() C³B
- clif_parse_ProduceMix() C³B
- script.c
- buildin_produce() C³B
- buildin_getitem2() ’ljÁB
- atcommand.c
- atcommand() C³B
-
---------------------
-//0870 by shuto
-
-Emapflag‚ÌUéíMAP‚Énomemo’ljÁ
-EƒMƒ‹ƒh•ó” ‚ÅA•ó” oŒ»‚Æ“¯Žž‚ÉMAPŽI‚ª—Ž‚¿‚é–â‘èC³(by ‚Ò‚´‚Ü‚ñ)
-
---------------------
-//0869 by Ž€_
-
-Ebattle_athena.conf‚Éplayer_land_skill_limitAmonster_land_skill_limitAparty_skill_penaly ’ljÁB
-Echar_athena.conf‚Éparty_share_level ’ljÁB
-E‚»‚Ì‘¼×‚©‚¢C³B
- (conf/)
- char_athena.conf C³B
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (char/)
- char.h C³B
- char.c
- char_config_read() C³B
- int_party.c
- party_check_exp_share() C³B
- (map/)
- map.h C³B
- skill.c
- skill_attack()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_status_change_start() C³B
- skill_castend_pos() C³B
- pc.c
- pc_calcstatus() C³B
- mob.c
- mobskill_castend_pos() C³B
- battle.h
- battle.c
- battle_get_adelay()Abattle_get_amotion()Abattle_calc_damage() C³B
- battle_config_read() C³B
- pet.c
- pet_data_init() C³B
-
---------------------
-//0868 by Ž€_
-
-Eƒ}ƒWƒbƒNƒƒbƒhŽÀ‘•‚ƃXƒyƒ‹ƒuƒŒƒCƒJ[C³B
-Eƒ}ƒWƒbƒNƒƒbƒh‚Ìꇖ{ŽI‚ÅŽg‚Á‚Ä‚à‚È‚ñ‚Ì•\Ž¦‚à‚È‚”“®‚Ì‘O‚É‚ÍŽg‚Á‚½‚©‚Ç‚¤‚©‚ÌŠm”F‚ª‚Å‚«‚È‚¢‚̂ŃXƒLƒ‹‰r¥ƒpƒPƒbƒg(0x13e)‚ð—˜—p‚µ‚ÄŽg—p‚·‚鎞ƒXƒLƒ‹–¼‚ªo‚é‚悤‚É‚µ‚Ä‚¢‚Ü‚·B(–{ŽI‚ƈႤ‚¼‚Æ‚©‚Å•¶‹å‚ª‚±‚È‚¢‚悤‚É)
-EƒXƒyƒ‹ƒuƒŒƒCƒJ[‰r¥ƒLƒƒƒ“ƒZƒ‹‚ÉŠÖŒW‚È‚skill_db.txt‚Éݒ肳‚ê‚Ä‚éskill_type‚ªmagic‚̃XƒLƒ‹‚Ì‚Ý”j‚邱‚Æ‚ª‚Å‚«‚Ü‚·B(ƒ‰ƒOƒiƒQ[ƒg‚Ìà–¾‚ð“K—p)
-Eskill_db.txt‚Ì‘Ž®‚ª•Ï‚í‚Á‚½‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢BƒmƒbƒNƒoƒbƒN‹——£‚ÌÝ’è‚à‚Å‚«‚Ü‚·‚ª”O‚ׂ̈ɂ¢‚Á‚Ä‚¨‚«‚Ü‚·‚ªAŽI‚ł̃eƒXƒg‚ÅFW‚̃mƒbƒNƒoƒbƒN‹——£‚Í2‚ŃTƒ“ƒN‚à2‚Å‚ ‚邱‚Æ‚ðŠm”F‚µ‚Ä‚¢‚Ü‚·BŠØ‘‚Ì2003”N11ŒŽ19“úƒpƒbƒ`‘O‚ÌŽI‚Å‚Í‚ ‚è‚Ü‚·‚ª2-2‚Í“K—p‚³‚ê‚Ä‚¢‚銂Ȃ̂Ŗ{ŽI‚̈Ⴂ‚Í‚È‚¢‚ÆŽv‚¢‚Ü‚·B
-E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B
-E0867‚Å‘‚«–Y‚êBƒ‚ƒ“ƒXƒ^[‚̃q[ƒ‹‚ŃAƒ“ƒfƒbƒhƒ‚ƒ“ƒXƒ^[‚ªUŒ‚‚³‚ê‚ÄŽ©–Å‚·‚é‚̂Ńq[ƒ‹‚⃊ƒU‚Ìê‡mob_skill_db.txt‚Ìval1(’l1)‚É1‚ð“ü‚ê‚é‚ƃAƒ“ƒfƒbƒhƒ‚ƒ“ƒXƒ^[‚àUŒ‚‚ðŽó‚¯‚¸‰ñ•œ‚·‚é‚悤‚É‚È‚è‚Ü‚·B–{ŽI‚ł̓‚ƒ“ƒXƒ^[‚̃q[ƒ‹‚̓Aƒ“ƒfƒbƒh‚ÉŠÖŒW‚È‚‰ñ•œ‚·‚é‚悤‚Å‚·B‚½‚¾ŒÂl“I‚ɂ̓]ƒ“ƒr‚ªƒq[ƒ‹‚µ‚ÄŽ©–Å‚·‚é•û‚ª³‚µ‚¢‚ÆŽv‚¤‚Ì‚Åmob_skill_db.txt‚ÅÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ä‚¨‚è‚Ü‚·B
- (doc/)
- db_ref.txt C³B
- (db/)
- cast_db.txt C³B
- skill_db.txt C³B
- (map/)
- skill.h C³B
- skill.c
- skill_status_change_start()Askill_status_change_end() C³B
- skill_castend_damage_id()Askill_castend_nodamage_id() C³B
- skill_attack()Askill_status_change_timer()Askill_castcancel() C³B
- skill_unit_onplace()Askill_use_id()Askill_castend_id() C³B
- skill_readdb() C³B
- skill_get_blewcount() ’ljÁB
- mob.c
- mobskill_use_id()Amob_spawn()Amob_attack() C³B
- battle.c
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_calc_misc_attack()Abattle_weapon_attack() C³B
- clif.c
- clif_damage() C³B
- pet.c
- pet_attack() C³B
- pc.c
- pc_attack_timer()Apc_authok() C³B
- pc_spirit_heal()Apc_natural_heal_sub() C³B
-
---------------------
-//0867 by Ž€_
-
-EƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B
-Ebattle_athena.conf‚Éplayer_undead_nofreeze’ljÁB
-EV‚µ‚¢ƒAƒCƒeƒ€ƒpƒPƒbƒg‚ɑΉžB(PACKETVER‚ð5ˆÈã‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B)
-Emob_avail.txt‚ŃvƒŒƒCƒ„[‚ÌŽp‚ðŽw’肵‚½ŽžƒyƒRƒyƒR‚â‘é‚ð•t‚¯‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É•ÏXB“ª‰º’iŽŸ‚ɃIƒvƒVƒ‡ƒ“‚ðÝ’è‚Å‚«‚Ü‚·B(‚½‚¾ƒnƒCƒfƒBƒ“ƒO‚ƃNƒ[ƒLƒ“ƒO‚ÍŽw’è‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B)
- makefile C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- client_packet.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_config_read() C³B
- clif.c
- clif_mob_class_change()Aclif_spawnmob()Aclif_spawnpet() C³B
- clif_damage()Aclif_skill_damage()Aclif_skill_damage2() C³B
- clif_itemlist()Aclif_cart_itemlist()Aclif_storageitemlist() C³B
- clif_mob0078()Aclif_mob007b()Aclif_pet0078()Aclif_pet007b() C³B
- pc.c
- pc_attack_timer() C³B
- skill.c
- skill_castend_nodamage_id()Askill_additional_effect() C³B
- skill_status_change_start() C³B
- mob.h C³B
- mob.c
- mobskill_castend_id()Amob_getfriendstatus_sub() C³B
- mob_readdb_mobavail() C³B
-
---------------------
-//0866 by ‚Ò‚´‚Ü‚ñ
-
-EMOTD‚̃ƒbƒZ[ƒW‚ð‘S‚Ä•ÒW‚Å‚«‚é‚悤‚É•ÏXB
-EƒNƒ[ƒ“ƒXƒLƒ‹ŽÀ‘•B
-@ƒhƒ‹•ž‚̃q[ƒ‹ƒAƒ^ƒbƒN‚É‚æ‚éƒq[ƒ‹K“¾‚Í–¢ƒeƒXƒg‚Å‚·B
-EƒMƒ‹ƒh•ó” ‰¼ŽÀ‘•B
-@ƒ”ƒ@ƒ‹ƒLƒŠ[‚P‚Ì‚Ý‚Å‚·B
-@¤‹Æ“ŠŽ‘‚É‚æ‚é•ó” ŒÂ”‚ÌŽZoŽ®‚Í“K“–‚Å‚·(‰ŠúŒÂ”4ŒÂ‚Æ‚µ‚©’m‚ç‚È‚¢‚Ì‚Å)B
-@OnclockƒCƒxƒ“ƒg‚Å“®ì‚³‚¹‚Ä‚¢‚Ü‚·B”CˆÓ‚ÌŽž‚É•ÏX‚µ‚Ä‚‚¾‚³‚¢B
-EAthenaDBŒv‰æ‚Ìmob_db.txt‚Æmapflag.txt‚ð“ü‚ê‚Ä‚¨‚«‚Ü‚µ‚½B
-
- (map/)
- pc.c
- pc_makesavestatus()Apc_calc_skilltree() C³B
- pc_allskillup()Apc_calc_skillpoint() C³B
- pc_resetskill()Apc_authok() C³B
- skill.c
- skill_attack() C³B
- map.h C³B
- (conf/)
- gvg/TEST_prtg_cas01_AbraiJ.txt C³B
- motd.txt C³B
- mapflag.txt C³B
- (db/)
- mob_db.txt C³B
-
---------------------
-//0865 by ‚Ò‚´‚Ü‚ñ
-
-EŽ©•ª‚ªè—Ì‚µ‚Ä‚¢‚éƒAƒWƒg‚̃Gƒ“ƒyƒŠƒEƒ€‚ðUŒ‚‚Å‚«‚½ƒoƒOC³B
-EƒAƒuƒ‰ƒC‚ªè—̃Mƒ‹ƒhƒƒ“ƒo[‘Sˆõ‚ðƒ}ƒXƒ^[‚Æ‚Ý‚È‚µ‚Ä‚¢‚½ƒoƒOC³B
-@‚±‚ÌC³‚É”º‚Á‚ăXƒNƒŠƒvƒgƒŠƒtƒ@ƒŒƒ“ƒX‚ɉü•Ï‚ª‚ ‚è‚Ü‚·B
- Egetcharid(0)‚ÅAŽ©•ª‚ÌcharID‚ð•Ô‚·‚悤‚ÉB
- Egetguildmasterid(<n>)’ljÁB
- @<n>=ƒMƒ‹ƒhID
- @ŠY“–ƒMƒ‹ƒh‚̃}ƒXƒ^[‚ÌcharID‚ð•Ô‚µ‚Ü‚·B
-
- (map/)
- guild.c
- guild_mapname2gc() ’ljÁB
- battle.c
- battle_calc_damage() C³B
- script.c
- buildin_getcharid() C³B
- buildin_getguildmasterid() ’ljÁB
- ƒ[ƒJƒ‹ƒvƒƒgƒ^ƒCƒv錾‚̈ꕔ‚ðC³A’ljÁB
- guild.h C³B
-
---------------------
-//0864 by ŒÓ’±—–
-
-EinterŽI‚Ìwis‚̈—•ÏX
- EŽ©‘OƒŠƒ“ƒNƒŠƒXƒg‚©‚çdb.h‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ðŽg—p‚·‚é‚悤‚É
- EWIS‚ÌID‚ð16ƒrƒbƒg‚©‚ç32ƒrƒbƒg‚É‘‚₵‚½iƒpƒPƒbƒg‚àC³j
- EƒƒbƒZ[ƒW‚̃TƒCƒYƒ`ƒFƒbƒN‚ð“ü‚ꂽ
- EƒpƒPƒbƒgƒXƒLƒbƒv‚ª“ñ‰ñs‚í‚ê‚é‰Â”\«‚ª‚ ‚éƒoƒOC³
-
- (char/)
- inter.c
- wisŠÖŒW‘å••ÏX
- (map/)
- intif.c
- wisŠÖŒW‚ÌC³BŽå‚ɃpƒPƒbƒgˆ—B
- (doc/)
- inter_server_packet.txt
- ƒpƒPƒbƒg3002,3801‚ð•ÏX
-
---------------------
-//0863 by Ž€_
-
-Eׂ©‚¢C³B
-Ebattle_athena.conf‚Éplayer_attack_direction_change’ljÁB
-Emob_skill_db.txt‚ðC³‚·‚鎞’§”‚ÌC³‚ðŠÔˆá‚Á‚ÄC³B
-Eƒ‚ƒ“ƒXƒ^[‚̃XƒLƒ‹Ž©”š–â‘èC³B(–¢ƒeƒXƒg)
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (db/)
- mob_skill_db.txt C³B
- (map/)
- mob.c
- mobskill_use_id()Amobskill_use()Amobskill_castend_id() C³B
- pc.c
- pc_skill()Apc_attack_timer() C³B
- skill.c
- skill_castend_damage_id() C³B
- battle.h C³B
- battle.c
- battle_weapon_attack()Abattle_config_read() C³B
-
---------------------
-//0862 by ŒÓ’±—–
-
-EmobƒXƒLƒ‹Žg—pðŒ’ljÁ
- Efriendhpltmaxrate : –¡•û‚ÌHP‚ªŽw’è“–¢–ž‚Ì‚Æ‚«(ƒeƒXƒgÏ‚Ý)
- Efriendstatuson : –¡•û‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚é‚Æ‚«
- Efriendstatusoff : –¡•û‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚È‚¢‚Æ‚«
- Emystatuson : Ž©•ª‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚é‚Æ‚«
- Emystatusoff : Ž©•ª‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚È‚¢‚Æ‚«
- ƒXƒe[ƒ^ƒXŒn‚Í–¢ƒeƒXƒg‚Å‚·Bmob_skill_db.txt‚ÉŽw’è•û–@‚ð‘‚¢‚Ä‚¢‚Ü‚·B
- ‚½‚Æ‚¦‚ÎŽ©•ª‚ª“Å‚©‚Ç‚¤‚©‚Í mystatus,poison ‚ÅA
- ƒnƒCƒfƒBƒ“ƒO’†‚©‚Ç‚¤‚©‚Í mystatuson,hiding ‚ÅŽw’肵‚Ü‚·B
-EmobƒXƒLƒ‹Žg—pƒ^[ƒQƒbƒg’ljÁ
- Efriend : –¡•û
- Earound : Ž©•ª‚ÌŽüˆÍiŒ»Ý‚ÌŽd—l‚Å‚ÍŽüˆÍ81ƒ}ƒXj‚Ì‚Ç‚ê‚©
- Earound1`around4 : Ž©•ª‚ÌŽüˆÍ‚X,25,49,81ƒ}ƒX‚Ì‚Ç‚ê‚©(”͈͂𖾎¦)
- friend‚ÍðŒ‚ªfriendŒn(friendhpltmaxrate‚È‚Ç)‚Ì‚Æ‚«‚ÉŽg—p‰Â”\B
- aroundŒn‚Íꊎw’èƒXƒLƒ‹‚ÅŽg—p‰Â”\B
-
- (map/)
- mob.c / mob.h
- mob_getfriend*()’ljÁAmobskill_use()C³‚È‚Ç
- (db/)
- mob_skill_db.txt
- ʼn‚Ìà–¾‚Ì‚ÝC³Bƒf[ƒ^‚ÍC³‚µ‚Ä‚¢‚Ü‚¹‚ñB
-
---------------------
-//0861 by ‚¢‚Ç
-
-EƒT[ƒo[snapshot
-
---------------------
-//0860 by J
-
-EŽ€_‚³‚ñ‚̎艺¢Š«‚ÌC³‚ɇ‚킹‚ÄMOBƒXƒLƒ‹DB‚ðC³
-(/conf)
- mob_skill_db.txt C³B
-
---------------------
-//0859 by Ž‚Žqo^.^o
-Alchemist warp C³(AegisŽQl)
-(/conf)
- (/warp)
- npc_warp_job.txt C³
-
---------------------
-//0858 by Ž€_
-
-Eׂ©‚¢C³B
-EMAX_MOBSKILL‚ð24‚©‚ç32‚É•ÏXB(‚½‚¾‚µ‚Å‚·‚ª‚Ü‚½ƒƒ‚ƒŠ[Žg—p—Ê‚ª‘‚¦‚Ü‚·B)
-Eƒvƒƒ{ƒP[ƒVƒ‡ƒ“‚ÅŽæ‚és“®‚ðmob_skill_db.txt‚Ìval1(’l1)‚ÅÝ’è‚Å‚«‚é‚悤‚ÉC³B
-EŽè‰º¢Š«‚Å•¡”‚ÌŽí—Þ‚ðÝ’èoØ‚é‚悤‚ÉC³B(Å‘å5‚‚܂Å)
-Eƒƒ^ƒ‚ƒ‹ƒtƒH[ƒVƒX‚ƃgƒ‰ƒ“ƒXƒtƒH[ƒ[ƒVƒ‡ƒ“‚à•¡”‚ÌŽí—Þ‚ðÝ’è‚Å‚«‚é‚悤‚ÉC³B
- (db/)
- skill_db.txt C³B
- mob_skill_db.txt C³B
- (map/)
- skill.c
- skill_castend_damage_id()Askill_castend_nodamage_id() C³B
- map.h C³B
- mob.h C³B
- mob.c
- mob_readskilldb()Amob_summonslave()Amob_class_change() C³B
-
---------------------
-//0857 by J
-
-EOWN Ragnarok‚É‚Ì‚Á‚Ä‚¢‚½î•ñ‚ðŒ³‚ÉMOBƒXƒLƒ‹‚ðC³B
-Echase(“ËŒ‚)‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚é‚Æ‚Ì‚±‚Æ‚È‚Ì‚Å“ËŒ‚(?)‚ðchase‚É‚©‚¦‚Ä
-ƒRƒƒ“ƒgƒAƒEƒg‚ð‚Í‚¸‚µ‚Ü‚µ‚½B
-EŽ€_‚³‚ñ‚ªŽÀ‘•‚µ‚½MOBƒXƒLƒ‹‚ðŽg—p‚·‚郂ƒ“ƒXƒ^[‚ðŽëêî•ñ‚ÉÚ‚Á‚Ä‚éî•ñ‚ðŒ³‚ÉŽÀ‘•B
- (/conf)
- mob_skill_db.txt
-
---------------------
-//0856 by Ž€_
-
-EƒoƒOC³‚Æׂ©‚¢C³B
-Ebattle_athena.conf‚Émonster_attack_direction_change’ljÁB
-Ebattle_athena.conf‚Ìbasic_skill_check‚ƃJƒvƒ‰‚Ì‘qŒÉ—˜—p‚ð‡‚킹‚Ä‚¢‚Ü‚µ‚½‚ª‚¢‚‚̂܂ɂ©‚È‚‚È‚Á‚½‚Ì‚ÅŽæ‚è–ß‚µB(basic_skill_check‚ªno‚È‚çŠî–{‹@”\ƒXƒLƒ‹ƒŒƒxƒ‹‚ÉŠÖŒW‚È‚‘qŒÉ‚ðŽg‚¦‚Ü‚·B)
-EƒsƒA[ƒVƒ“ƒOƒAƒ^ƒbƒN‚ÌŽË’ö‚ð3ƒZƒ‹‚É•ÏX‚µ‚Ä‹ßÚUŒ‚‚Æ‚µ‚Ä”FŽ¯‚·‚é‚悤‚ÉC³B
-EAŽI‚ł̃eƒXƒg‚ŃAƒ“ƒfƒbƒh‚Ì”FŽ¯‚ð‘®«‚É‚æ‚Á‚Ä‚·‚邱‚Æ‚ª‚í‚©‚Á‚½‚Ì‚Åundead_detect_type‚̃fƒtƒHƒ‹ƒg‚ð0‚É•ÏXB
-Eƒƒ^ƒ‚ƒ‹ƒtƒH[ƒVƒX‚âƒgƒ‰ƒ“ƒXƒtƒH[ƒ[ƒVƒ‡ƒ“‚ÅŒ©‚½–Ú‚ªƒvƒŒƒCƒ„[‚È‚ç0x1b0ƒpƒPƒbƒg‚ð‘—‚ç‚È‚¢‚悤‚É•ÏXB
-Eƒjƒ…[ƒ}ƒoƒO‚ÍC³‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªƒXƒLƒ‹ƒ†ƒjƒbƒg‚ÌŽžŠÔ‚É‚æ‚éì“®Žd—l‚Í‚Ü‚¾•ªÍ‚ªŠ®‘S‚¶‚á‚È‚¢‚Ì‚Å‘¼‚Ì•s‹ï‡‚ªo‚Ä‚‚é‚©‚à...
- (conf/)
- battle_athena.conf C³B
- mapflag.txt C³B(•’ʂ̃_ƒ“ƒWƒ‡ƒ“‚ªƒV[ƒYƒ‚[ƒh‚Å‚ ‚é‚Í‚¸‚ª‚È‚¢‚Ì‚Å)
- (conf/npc/)
- npc_town_kafra.txt C³B
- (db/)
- skill_db.txt C³B
- (doc/)
- conf_ref.txt C³B
- script_ref.txt C³B
- (map/)
- pc.c
- pc_modifybuyvalue()Apc_modifysellvalue() C³B
- battle.h
- battle.c
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_weapon_attack() C³B
- battle_config_read() C³B
- skill.c
- skill_unitsetting()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id() C³B
- mob.c
- mob_attack() C³B
- pet.c
- pet_attack() C³B
- clif.c
- mob_class_change() C³B
-
---------------------
-//0855 by asong
-
-Eƒƒ^ƒ‚ƒ‹ƒtƒH[ƒVƒX‚Å‚o‚b‚Æ‚µ‚Ä•\Ž¦‚·‚é‚l‚n‚a‚ðŽw’肵‚½ê‡‘q—Ž‚¿‚·‚éƒoƒO‚ðuŽb’èvC³B
-E0x1b0ƒpƒP‚Å‚Í–³‚0x7b‚ðŽg‚¤‚±‚Ƃʼn½‚Æ‚©‚µ‚Ä‚¢‚Ü‚·B
-EŽg‚¢•ª‚¯‚ð‚µ‚½‚¢‚Æ‚±‚ë‚Å‚·‚ª“–•û‚b‚Ì’mŽ¯‚ª–³‚ðŒ•ªŠò‚ªãŽè‚‚¢‚«‚Ü‚¹‚ñ‚Å‚µ‚½B
-E‚à‚µ‚©‚µ‚½‚çƒvƒp‚Ì›z‰»i‰H‰»Hj‚ª‚¨‚©‚µ‚‚È‚Á‚Ä‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
- (/map)
- clif.c
- mob_class_change() C³B
-
---------------------
-//0854 by Kalen
-
-E•s‘«‚µ‚Ä‚¢‚½ˆêŽŸE“]EƒNƒGƒXƒg’ljÁ‹y‚ÑA‚»‚ê‚É”º‚¤WarpAMobC³)
- (/conf)
- (/npc)
- npc_job_archer.txt
- npc_job_swordman.txt
- npc_job_thief.txt(‘䎌C³A“_”ˆ—•ÏX)
- npc_job_magician.txt
- (/warp)
- npc_warp25.txt(ˆê•”ˆÚ“®)
- npc_warp.txt(ˆê•”ˆÚ“®)
- npc_warp_job.txt(VÝ)
- (/mob)
- npc_mob_job.txt
-E—Õ‚èQuest’ljÁ‹y‚ÑA‚»‚ê‚É”º‚¤NPCC³BƒAƒ}ƒcs‚«‘D‚Å—¿‹à‚ðŽæ‚ç‚È‚©‚Á‚½–â‘èC³
- (/conf)
- npc_event_hinamatsuri.txt
- npc_town_amatsu.txt
- npc_town_guide.txt
- npc_town_kafra.txt
- —Õ‚è‚ð—LŒø‚É‚·‚é‚ƃAƒ}ƒcƒJƒvƒ‰‚ðW‚ÉA
- ƒAƒ‹ƒxƒ‹ƒ^“ìƒJƒvƒ‰‚ð휂ɂ·‚é‚悤‚É‚µ‚Ä‚¢‚Ü‚·B
-
---------------------
-//0853 by Ž€_
-
-EƒoƒOC³‚ÆNPCƒXƒLƒ‹ŠÖŒW‚ÌC³B
-Eƒ_[ƒNƒuƒŒƒX‚ðMISCUŒ‚‚É•ÏXB(‚½‚¾–½’†”»’è—L‚è)
-EƒNƒŠƒeƒBƒJƒ‹ƒXƒ‰ƒbƒVƒ…AƒRƒ“ƒ{ƒAƒ^ƒbƒNAƒKƒCƒfƒbƒhƒAƒ^ƒbƒNAƒXƒvƒ‰ƒbƒVƒ…ƒAƒ^ƒbƒNAƒuƒ‰ƒCƒ“ƒhƒAƒ^ƒbƒNAƒJ[ƒXƒAƒ^ƒbƒNAƒyƒgƒŠƒtƒ@ƒCƒAƒ^ƒbƒNAƒ|ƒCƒYƒ“ƒAƒ^ƒbƒNAƒTƒCƒŒƒ“ƒXƒAƒ^ƒbƒNAƒXƒŠ[ƒvƒAƒ^ƒbƒNAƒXƒ^ƒ“ƒAƒ^ƒbƒNAƒ‰ƒ“ƒ_ƒ€ƒAƒ^ƒbƒNAƒ_[ƒNƒlƒXƒAƒ^ƒbƒNAƒtƒ@ƒCƒAƒAƒ^ƒbƒNAƒOƒ‰ƒEƒ“ƒhƒAƒ^ƒbƒNAƒz[ƒŠ[ƒAƒ^ƒbƒNAƒ|ƒCƒYƒ“ƒAƒ^ƒbƒNAƒeƒŒƒLƒlƒXƒAƒ^ƒbƒNAƒEƒH[ƒ^[ƒAƒ^ƒbƒNAƒEƒBƒ“ƒhƒAƒ^ƒbƒNAƒ}ƒWƒJƒ‹ƒAƒ^ƒbƒNAƒuƒ‰ƒbƒhƒhƒŒƒCƒ“Aƒƒ“ƒ^ƒ‹ƒuƒŒƒCƒJ[‚̓‚ƒ“ƒXƒ^[‚Ì•ŠíŽË’ö‚É•ÏXB‚»‚µ‚Ä‚±‚ê‚ç‚̃XƒLƒ‹‚ðƒ‚ƒ“ƒXƒ^[‚ÌUŒ‚ŽË’ö‚É‚æ‚Á‚ĉ“‹——£UŒ‚‚Æ‹ß‹——£UŒ‚‚É‚È‚é‚悤‚É•ÏXB
-EƒsƒA[ƒVƒ“ƒOƒAƒ^ƒbƒN‚Í•ŠíŽË’ö+2‚É•ÏXB
-EƒGƒiƒW[ƒhƒŒƒCƒ“Aƒnƒ‹ƒVƒl[ƒVƒ‡ƒ“‚Í–‚–@ŽË’ö‚É•ÏXB
-Eƒ_[ƒNƒuƒŒƒbƒVƒ“ƒO‚ÌŽË’ö‚ð4‚É•ÏX‚Æ‚©‚©‚éŠm—¦‚ð50+ƒXƒLƒ‹ƒŒƒxƒ‹*5%‚É•ÏXB(ˆê‰ž‚±‚ê‚à–‚–@‚È‚Ì‚Å‚µŽË’ö‚ðL‚‚µ‚Ü‚µ‚½BŠî–{–‚–@ŽË’ö‚Å‚ ‚é8‚É•Ï‚¦‚é‚ׂ«‚È‚Ì‚©‚Ç‚¤‚©‚Í”÷–...)
-EƒKƒCƒfƒbƒhƒAƒ^ƒbƒN‚̓ZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚𖳌ø‚É‚·‚é•ñ‚ª‚ ‚è‚Ü‚µ‚½‚̂ŃZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚ªŒø‚©‚È‚¢‚悤‚ÉC³B
-EƒfƒBƒtƒFƒ“ƒ_[‚̓GƒtƒFƒNƒg‚¾‚¯o‚é‚悤‚ÉC³B(ƒXƒLƒ‹‚ÌŽd—l“™‚ð‚í‚©‚é•û‚Íî•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B)
-Eƒgƒ‰ƒ“ƒXƒtƒH[ƒ[ƒVƒ‡ƒ“ŽÀ‘•B(ƒƒ^ƒ‚[ƒtƒHƒVƒX‚Æ“¯‚¶•¨‚¾‚»‚¤‚Å‚·B‚½‚¾‚±‚ê‚Í‘S‘RŠÖŒW‚È‚¢•Ê‚̃‚ƒ“ƒXƒ^[‚ɂȂ镨‚炵‚¢‚Å‚·Bƒjƒtƒ‹ƒwƒCƒ€‚ÉŽg‚¤‚â‚‚ª‚¢‚é‚Ý‚½‚¢‚Å‚·B)
-EAthenaŽG’kƒXƒŒƒbƒh ‘´‚Ì“ó‚Ì80‚ðscript_ref.txt‚Æ‚µ‚ĒljÁ‚Æ‚¿‚å‚Á‚ÆC³B
- (db/)
- skill_db.txt C³B
- (doc/)
- script_ref.txt ’ljÁB
- (map/)
- battle.c
- battle_calc_damage()Abattle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_calc_magic_attack()Abattle_calc_misc_attack() C³B
- skill.c
- castend_damage_id()Acastend_nodamage_id()Askill_use_pos() C³B
- clif.c
- clif_spawnnpc()Aclif_parse_Restart()Aclif_parse_QuitGame() C³B
- mob.c
- mobskill_castend_id()Amobskill_castend_pos() C³B
- mobskill_use_id()Amobskill_use_pos() C³B
-
---------------------
-//0852 by ‚Ò‚´‚Ü‚ñ
-
-E‹T“‡4FE‹aD2FEƒAƒ}ƒcD1F‚ðƒeƒŒƒ|•s‰ÂAƒV[ƒYƒ‚[ƒh‚É•ÏXB
-Enosave‚̈ø”‚ÉSavePoint‚ªŽw’è‚Å‚«‚Ä‚È‚©‚Á‚½‚̂ŒljÁB
-EPVP‚Ìmapflag‚ðmapflag.txt‚É“‡B
- (map/)
- npc.c
- npc_parse_mapflag() C³B
- (conf/)
- mapflag.txt C³B
- npc/npc_pvp.txt C³B
-
---------------------
-//0851 by ŒÓ’±—–
-
-EƒƒOƒCƒ“Žž‚̈Ɖ»key‚ªí‚É“¯‚¶‚Æ‚¢‚¤‘å‚«‚È–â‘肪‚ ‚Á‚½‚Ì‚ÅC³
-EƒƒOƒCƒ“ŠÇ—ŽÒƒƒOƒCƒ“(ladmin‚ÅŽg—p)‚ŃpƒXƒ[ƒh‚̈Ɖ»‚ɑΉž
- (login/)
- login.c
- login_session_dataì¬AˆÃ†‰»key‚ðƒNƒ‰ƒCƒAƒ“ƒg‚²‚Æ‚É쬂ȂÇ
- (tool/)
- ladmin
- ver.1.05‚ÉBƒfƒtƒHƒ‹ƒg‚ŃpƒXƒ[ƒh‚ðˆÃ†‰»‚·‚é‚悤‚ÉB
- ˆÃ†‰»‚Ì‚½‚ß‚ÉDigest::MD5ƒ‚ƒWƒ…[ƒ‹‚ðŽg—p‚µ‚Ü‚·B
- Digest::MD5‚ª–³‚¢ê‡‚̓pƒXƒ[ƒh‚̈Ɖ»‚ðs‚¢‚Ü‚¹‚ñB
- (doc/)
- admin_packet.txt
- ƒƒOƒCƒ“ƒT[ƒo[ŠÇ—ƒƒOƒCƒ“•”•ª•ÏX
-
---------------------
-//0850 by Ž€_
-
-ENPCƒXƒLƒ‹ŽÀ‘•B(ƒnƒ‹ƒVƒl[ƒVƒ‡ƒ“AƒL[ƒsƒ“ƒOAƒŠƒbƒNAƒƒ“ƒ^ƒ‹ƒuƒŒƒCƒJ[Aƒvƒƒ{ƒP[ƒVƒ‡ƒ“AƒoƒŠƒ„[Aƒ_[ƒNƒuƒŒƒbƒVƒ“ƒOAƒ_[ƒNƒuƒŒƒX)
-EƒXƒLƒ‹Ž©”š‚̧ŒÀ‚Ímob_skill_db.txt‚Å‚â‚ê‚΂¢‚¢‚à‚Ì‚È‚Ì‚ÅŽæ‚è–ß‚µB
-Ebattle_athena.conf‚Épet_hungry_friendly_decrease’ljÁB
-Eƒyƒbƒg‚Ì• ‚ªŠ®‘S‚ÉŒ¸‚é‚ÆŽx‰‡UŒ‚‚𒆎~‚·‚é‚悤‚É•ÏXB
-E‘®«•ÏXƒXƒLƒ‹‚ªì“®‚µ‚È‚©‚Á‚½–â‘èC³B
-Eƒƒ“ƒ^ƒ‹ƒuƒŒƒCƒJ[‚Í10+ƒXƒLƒ‹ƒŒƒxƒ‹*5%‚ÌSP‚ðŒ¸‚ç‚·B(UŒ‚‚Í’Êí•ŠíƒXƒLƒ‹UŒ‚)
-EƒŠƒbƒN‚Í•K’†‚ÅSP-100AƒXƒ^ƒ“Šm—¦ƒXƒLƒ‹ƒŒƒxƒ‹*5%B(ƒ_ƒ[ƒW‚Í–³‚µAbNoWeaponDamage‚Å–³Œø)
-Eƒvƒƒ{ƒP[ƒVƒ‡ƒ“‚̓‚[ƒVƒ‡ƒ“‚ª€”õ‚³‚ê‚Ä‚È‚¢ƒ‚ƒ“ƒXƒ^[‚Í“ü‚ê‚Ä‚à‚È‚ñ‚ÌŒø‰Ê‚à‚È‚µB
-Eƒ_[ƒNƒuƒŒƒbƒVƒ“ƒO‚Í‚©‚©‚é‚ÆHP‚ª1‚É‚È‚éB‘Ï«‚Í–‚–@–hŒä‚Å“K—pB
-Eƒ_[ƒNƒuƒŒƒX‚Í500+(ƒXƒLƒ‹ƒŒƒxƒ‹-1)*1000+rand(0,1000)‚̃_ƒ[ƒWB‰ñ”ð‚Å‚«‚邪–hŒä–³Ž‹‚Å‹ß‹——£•¨—UŒ‚‚¾‚ªƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚Í–³Ž‹‚µ‚Ĉő®«UŒ‚B(–{ŽI‚ÌŒvŽZŽ®‚É‚ ‚Á‚Ä‚¢‚é‰Â”\«‚Í‚È‚¢‚©‚àB‚½‚¾ƒ_ƒ[ƒW—Ê‚Æ–½’†•â³ˆÈŠO‚Í–{ŽI‡‚킹)
-ENPCƒXƒLƒ‹‚̈ێŽžŠÔ‚Í“K“x‚ÉÝ’èB
-Eƒ‚ƒ“ƒXƒ^[‚Ì‘®«UŒ‚‚ƃKƒCƒfƒbƒhƒAƒ^ƒbƒN‚ªƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚𖳎‹‚·‚é‚Æ‚Ì•ñ‚ðŽó‚¯‚½‚Ì‚Å‚·‚ªC³‚·‚é‚©‚Ç‚¤‚©‚Í‚¿‚å‚Á‚Æ”÷–B(ƒXƒvƒ‰ƒbƒVƒ…ƒAƒ^ƒbƒN‚àƒZƒCƒtƒeƒBƒEƒH[ƒ‹–³Ž‹‚©‚à)
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (db/)
- cast_db.txt C³B
- skill_db.txt C³B
- (map/)
- mob.c
- mob_damage() C³B
- clif.h C³B
- clif.c
- clif_skill_estimation()Aclif_damage()Aclif_skill_damage() C³B
- clif_skill_damage2()Aclif_pet_performance() C³B
- pet.c
- pet_performance()Apet_target_check()Apet_hungry() C³B
- skill.h C³B
- skill.c
- skill_additional_effect()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_status_change_start() C³B
- battle.h C³B
- battle.c
- battle_get_def()Abattle_get_mdef()Abattle_calc_damage() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_config_read() C³B
-
---------------------
-//0849 by lapis
-
-EŠX’†‚̃eƒXƒgƒMƒ‹ƒhƒtƒ‰ƒO‚Ì•\Ž¦‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³B
-EƒMƒ‹ƒhƒƒ“ƒo[‚ÍŠø‚©‚çƒAƒWƒg‚É”ò‚ׂé‚悤‚ÉC³B
- (conf/gvg)
- TEST_prtg_cas01_AbraiJ.txt C³B
-
---------------------
-//0848 by huge
-
-EƒXƒLƒ‹Ž©”š‚ðAHP‚ª‘S‰ñ•œ‚µ‚Ä‚¢‚鎞‚ÍŽg‚¦‚È‚¢‚悤C³B
-EƒXƒtƒBƒAƒ}ƒCƒ“EƒoƒCƒIƒvƒ‰ƒ“ƒgEEEƒ^[ƒQƒbƒg•ÏX‚Å‚«‚È‚¢...B
-Emob‚Ƀ^[ƒQƒbƒg–³Ž‹ID‚ðÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B(Gv—pmob‚ÉŽg‚¦‚éH)
- (map/)
- map.h C³B
- mob_data‚É int exclusion_src,exclusion_party,exclusion_guild ’ljÁB
- mob.h C³B
- mob.c
- mob_exclusion_add() ’ljÁB
- mob_exclusion_check() ’ljÁB
- mob_timer_delete() ’ljÁB
- mob_attack() C³B
- mob_target() C³B
- mob_ai_sub_hard_activesearch() C³B
- mob_ai_sub_hard_mastersearch() C³B
- mob_ai_sub_hard() C³B
- skill.c
- skill_castend_damage_id() C³B
- skill_castend_pos2() C³B
-
---------------------
-//0847 by Ž€_
-
-E˜I“XƒoƒOC³B
- (map/)
- clif.c
- clif_vendinglist()Aclif_openvending() C³B
- vending.c
- vending_openvending() C³B
- skill.c
- skill_castend_nodamage_id() C³B
-
---------------------
-//0846 by Ž€_
-
-EƒoƒOC³‚Æׂ©‚¢C³B
-Ebattle_athena.conf‚Ìenemy_str‚ªƒyƒbƒg‚É‚à“K—p‚·‚é‚悤‚É•ÏXB
-EbHPDrainRate‚ÆbSPDrainRate‚Åx‚ªƒ}ƒCƒiƒX‚Å‚àì“®‚·‚é‚悤‚É•ÏXB
-EPC‚âNPC‚ÌŽp‚ð‚µ‚½ƒ‚ƒ“ƒXƒ^[‚àŽ€‚Ê‚Æ5•bŒãƒ}ƒbƒv‚©‚çÁ‚¦‚é‚悤‚É•ÏXB
- (map/)
- battle.c
- battle_calc_pet_weapon_attack()Abattle_weapon_attack() C³B
- skill.c
- skill_attack()Askill_castend_damage_id() C³B
- pc.c
- pc_allskillup() C³B
- clif.h C³B
- clif.c
- clif_openvending()Ado_init_clif() C³B
- clif_clearchar_delay()Aclif_clearchar_delay_sub() ’ljÁB
- mob.c
- mob_damage() C³B
-
---------------------
-//0845 by ‚Û‚Û‚Û
-
-Emob_avail.txt‚ÅPCƒOƒ‰ƒtƒBƒbƒN(0`23)‚ðŽw’肵‚½ƒyƒbƒg‚ªoŒ»‚µ‚½‚Æ‚«ƒNƒ‰ƒCƒAƒ“ƒgƒGƒ‰[‚ª‚Å‚é‚Ì‚ðŽb’èC³B
-Emob_avail.txt‚Ńyƒbƒg‚É‚àPCƒLƒƒƒ‰‚Ì«•ÊE”¯Œ^&FE•ŠíE‚E“ª‘•”õ‚ðŽw’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B
-EMOB‚ÌATKŒvŽZ‚ÉSTR‚ð“K—p‚·‚é‚©‚Ç‚¤‚©Ý’è‰Â”\‚É‚µ‚½B
- (map/)
- clif.c
- clif_pet0078()Aclif_pet007b()Aclif_spawnpet()C³B
- battle.hC³B
- battle.c
- battle_config_read()Abattle_calc_mob_weapon_attack()C³B
-
---------------------
-//0844 by ‚Û‚Û‚Û
-
-Emob_avail.txt‚ÅPCƒOƒ‰ƒtƒBƒbƒN(0`23)‚ðŽw’肵‚½MOB‚ªoŒ»‚µ‚½‚Æ‚«ƒNƒ‰ƒCƒAƒ“ƒgƒGƒ‰[‚ª‚Å‚é‚Ì‚ðŽb’èC³B
-Emob_avail.txt‚ÅPCƒLƒƒƒ‰‚Ì«•ÊE”¯Œ^&FE•ŠíE‚E“ª‘•”õ‚ðŽw’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B
-@ƒOƒ‰ƒtƒBƒbƒN‚·‚è‘Ö‚¦æID‚ª0`23‚ÌŽž‚¾‚¯—LŒø‚ÅAŽw’è•û–@‚Í
- MOB-ID,ƒOƒ‰ƒtƒBƒbƒN‚·‚è‘Ö‚¦æID,«•Ê(0=female,1=male),”¯Œ^,”¯F,•Ší,‚,ã’i“ª‘•”õ,’†’i“ª‘•”õ,‰º’i“ª‘•”õ
-@‚Æ‚È‚è‚Ü‚·B‘•”õ‚Íitem_db‚ÌView—“ŽQÆ‚Ì‚±‚ÆB
- (map/)
- clif.c
- clif_mob_0078()Aclif_mob007b()Aclif_spawnmob()C³B
- mob.hC³B
- mob.c
- mob_get_sex()Amob_get_hair()Amob_get_hair_color()Aob_get_weapon()A
- mob_get_shield()Amob_get_head_top()Amob_get_head_mid()Amob_get_head_buttom()’ljÁB
- mob_readdb()Amob_readdb_mobavail()C³B
-
---------------------
-//0843 by Ž€_
-
-EƒŠƒtƒŒƒNƒgƒV[ƒ‹ƒhŽÀ‘•B
-EƒAƒCƒeƒ€ƒXƒNƒŠƒvƒg‚ÉbShortWeaponDamageReturn‚Æ
-bLongWeaponDamageReturn ’ljÁB
-E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚⑼‚ÌŠC³B
- (db/)
- item_db.txt C³B
- skill_db.txt C³B
- cast_db.txt C³B
- const.txt C³B
- (doc/)
- item_bonus.txt C³B
- (map/)
- map.h C³B
- battle.c
- battle_get_def()Abattle_get_def2()Abattle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_weapon_attack()Abattle_calc_magic_attack() C³B
- pc.c
- pc_calcstatus()Apc_bonus()Apc_bonus2()Apc_equipitem() C³B
- pc_unequipitem()Apc_checkallowskill() C³B
- skill.c
- skill_attack()Askill_unit_onplace()Askill_status_change_start() C³B
- skill_status_change_end()Askill_status_change_timer() C³B
- skill_castend_nodamage_id() C³B
- clif.c
- clif_additem()Aclif_equiplist()Aclif_storageequiplist() C³B
- clif_tradeadditem()Aclif_storageitemadded()Aclif_cart_additem() C³B
- clif_cart_equiplist()Aclif_vendinglist()Aclif_openvending() C³B
- clif_damage()Aclif_skill_damage()Aclif_parse_LoadEndAck() C³B
-
---------------------
-//0842 by Ž€_
-
-EƒXƒLƒ‹ŠÖŒW‚ÌC³‚Æׂ©‚¢C³B
-EaegisŽI‚ÅFX‚ÆŒŸØ‚µ‚½•¨‚ð“K—pB
-EƒƒeƒI‚͈̔͂ð7*7ALoV13*13ASG11*11AFN5*5‚ÉC³B
-EƒVƒOƒiƒ€ŽÀ‘•B(‚½‚¾PVP‚ŃvƒŒƒCƒ„[‚É‚©‚©‚é‚©‚Ç‚¤‚©‚ª‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚Å
-‚©‚©‚é•ûŒü‚ÅŽÀ‘•B)‚±‚ê‚Å1ŽŸE‹Æ‚̃XƒLƒ‹‚̓NƒŠƒA‚©‚à...
-E‘•”õƒXƒNƒŠƒvƒg‚ÉbHPDrainRate‚ÆbSPDrainRate’ljÁB
-E‚»‚Ì‘¼×‚©‚¢C³‚µB
- (doc/)
- item_bonus.txt C³B
- (db/)
- cast_db.txt C³B
- item_db.txt C³B
- const.txt C³B
- (map/)
- map.h C³B
- skill.c
- skill_castend_damage_id()Askill_castend_nodamage_id() C³B
- skill_unitsetting()Askill_castend_pos2()Askill_castend_id() C³B
- skill_status_change_start()Askill_status_change_timer() C³B
- skill_status_change_end()Askill_unit_onplace() C³B
- skill_frostjoke_scream()Askill_attack() C³B
- skill_attack_area() ’ljÁB
- battle.c
- battle_calc_magic_attack()Abattle_get_element()Abattle_get_def() C³B
- battle_get_def2()Abattle_get_mdef()Abattle_damage() C³B
- battle_calc_damage()Abattle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_weapon_attack() C³B
- mob.c
- mobskill_castend_id() C³B
- pc.c
- pc_calcstatus()Apc_bonus2()Apc_attack_timer() C³B
- clif.c
- clif_spawnmob()Aclif_spawnpet()Aclif_spawnnpc() C³B
- clif_parse_ActionRequest() C³B
-
---------------------
-//0841 by Kalen
-
-E…—n‰t‚ªì‚ê‚È‚©‚Á‚½‚̂ŒljÁ
- conf/npc/npc_job_magician.txt
-
---------------------
-//0840 by Kalen
-
-E‹SƒCƒxƒ“ƒg’ljÁ
- conf/npc/npc_event_oni.txt
-
-Emap_athena.confC³(ƒoƒŒƒ“ƒ^ƒCƒ“ƒRƒƒ“ƒgƒAƒEƒgB‹S’ljÁ)
- conf/map_athena.conf
-
---------------------
-//0839 by shuto
-
-EƒRƒ“ƒƒ“NPC’ljÁ(ƒJƒ“ ƒ\ƒ“ƒ\ƒ“‚ª”²‚¯‚Ä‚½)
-
---------------------
-//0838 by Ž€_
-
-EƒXƒLƒ‹ƒTƒCƒgƒ‰ƒbƒVƒƒ[ŽÀ‘•B
-Eƒ‚ƒ“ƒXƒ^[‚̃Nƒ[ƒLƒ“ƒO‚ƃ}ƒLƒVƒ}ƒCƒYƒpƒ[‚ÍŽ‘±ŽžŠÔ‚ðƒŒƒxƒ‹*5•b‚É•ÏXB
-E‚»‚Ì‘¼×‚©‚¢ƒoƒOC³B
- (db/)
- skill_db.txt C³B
- (map/)
- skill.c
- skill_castend_damage_id()Askill_castend_nodamage_id() C³B
- skill_castend_pos2()Askill_unitsetting()Askill_get_unit_id() C³B
- skill_status_change_start() C³B
- battle.c
- battle_calc_magic_attack() C³B
-
---------------------
-//0837 by Ž€_
-
-EƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B
-EƒtƒƒXƒgƒmƒ”ƒ@‚ðƒ†ƒjƒbƒgÝ’uŽ®‚É•ÏXB
-Eƒ[ƒhƒIƒuƒ”ƒ@[ƒ~ƒŠƒIƒ“‚͈̔͂ð11*11‚ÉC³‚Æ40ƒqƒbƒg‚·‚é‚悤‚É•ÏXB(ƒ‰ƒOƒiƒQ[ƒg‚Ìî•ñB
-13*13à‚à‚ ‚è‚Ü‚·‚ª...)
-Eƒ†ƒsƒeƒ‹ƒTƒ“ƒ_[‚̃mƒbƒNƒoƒbƒN‚ð2~7‚É•ÏXB
-EƒXƒg[ƒ€ƒKƒXƒg‚ÌUŒ‚‰ñ”‚ðƒŒƒxƒ‹ˆË‘¶‚©‚ç10‰ñ‚ɌŒèB
-EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚̃mƒbƒNƒoƒbƒN‚ð3‚©‚ç2‚É•ÏXB(aegisŽI‚ŃmƒbƒNƒoƒbƒN‚ª‚ ‚邱‚Æ‚ÍŠm”F‚µ‚Ü‚µ‚½‚ª‚Ç‚ê‚®‚ç‚¢‚È‚Ì‚©‚ª•s–¾‚¾‚Á‚½‚Ì‚Å‚µŒ¸‚炵‚Ä‚Ý‚Ü‚µ‚½B)
-Eƒ‚ƒ“ƒXƒ^[‚̉r¥ŽžŠÔ‚ª‘‚‚È‚Á‚Ä‚¢‚½–â‘èC³B(dex•â³‚ª“ü‚Á‚Ä‚µ‚Ü‚Á‚½‚¹‚¢‚Å‚·B)
-E‚»‚Ì‘¼ƒI[ƒgƒXƒyƒ‹“–‚½‚è‚Ìׂ©‚¢C³B
- (db/)
- skill_db.txt C³B
- (map/)
- skill.c
- skill_castfix()Askill_delayfix()Askill_timerskill() C³B
- skill_castend_pos2()Askill_unitsetting()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_get_unit_id()Askill_attack() C³B
- battle.c
- battle_calc_magic_attack()Abattle_weapon_attack() C³B
-
---------------------
-//0836 by Žß‘¸
-
-Eƒ‚ƒ“ƒXƒ^[‚ÌŽæ‚芪‚«¢ŠÒ‚ÌŠÔŠu‚𒆃{ƒXˆÈŠOŠ®‘SC³B
- (db/)
- mob_skill_db.txt C³B
-
---------------------
-//0835 by (“Ê)
-
-E”’nŽæ‚è‚Ń|[ƒY‚ð‚Æ‚é‚悤‚É‚µ‚½B
-(ƒ|[ƒY‚¾‚¯‚È‚Ì‚ÅAŽÀÛ‚ÉUŒ‚‚ðŽó‚¯Ž~‚ß‚½‚è‚Í‚Å‚«‚Ü‚¹‚ñ)
-clif_bladestop()‚ðŒÄ‚Ô‚±‚Æ‚Å”’nŽæ‚èó‘Ô‚ÌONAOFF‚̃pƒPƒbƒg‚ª‘—‚ê‚Ü‚·B
-
- (map/)
- clif.h C³B
- clif,c
- clif_bladestop() ’ljÁ
- skill.c
- skill_castend_nodamage_id() C³B
-
---------------------
-//0834 by Žß‘¸
-
-Eƒ‚ƒ“ƒXƒ^[Žæ‚芪‚«¢ŠÒ‚ÌŠÔŠu‚ª’Z‚·‚¬‚é‚Æ‚ÌŽ–‚ʼnž‹}ˆ’uB(¡‰ñ‚͉©‹à峂̂Ý)
- (db/)
- mob_skill_db.txt C³B
-
---------------------
-//0833 by (“Ê)
-
-Ememo‹ÖŽ~’nˆæ‚Å/memoŽž‚ÌC³B
-E‚‚¢‚Å‚Éitem_db‚ðXVB
-
- (doc/)
- client_packet.txt
- R 0189 XVB
- (db/)
- item_db.txt ÅV”Å‚ÖXVB
- (map/)
- pc.c
- pc_memo() C³B
-
---------------------
-//0832 by Ž€_
-
-EƒR[ƒhÅ“K‰»‚Æׂ©‚¢C³B
-EƒI[ƒgƒXƒyƒ‹‚ð’n–Ê–‚–@‚ɑΉžB
-EƒTƒ“ƒ_[ƒXƒg[ƒ€‚ƃwƒ”ƒ“ƒYƒhƒ‰ƒCƒu‚ðƒ†ƒjƒbƒgÝ’uŽ®‚É•ÏXB
-EƒfƒBƒtƒFƒ“ƒ_[‚ÌUŒ‚‘¬“x’ቺ‚ð–{ŽI‚É‚ ‚킹B
-E‚»‚Ì‘¼×‚©‚¢C³B
- (doc/)
- item_bonus.txt C³B
- (db/)
- skill_require_db.txt C³B
- cast_db.txt C³B
- (map/)
- map.h C³B
- path.c
- calc_index()Apath_search() C³B
- skill.c
- skill_unitsetting()Askill_castend_pos2()Askill_get_unit_id() C³B
- skill_status_change_timer_sub()Askill_castend_nodamage_id() C³B
- skill_additional_effect()Askill_frostjoke_scream() C³B
- pc.c
- pc_calcstatus()Apc_skill()Apc_allskillup() C³B
- battle.c
- battle_get_speed()Abattle_get_adelay()Abattle_get_amotion() C³B
- battle_weapon_attack() C³B
-
---------------------
-//0831 by Ž€_
-
-E‚µC³B
-EƒI[ƒgƒXƒyƒ‹C³B‘•”õ‚É‚æ‚镨‚ƃXƒLƒ‹‚É‚æ‚镨‚ð•ÊX‚É“K—pA”“®Šm—¦C³B
-E‘•”õ‚É‚æ‚éƒI[ƒgƒXƒyƒ‹‚ÍŽw’肵‚½ƒŒƒxƒ‹‚æ‚è2‚‰º‚Ü‚Å”»’è‚ð‚µ‚Ü‚·B‚‚܂背ƒxƒ‹5‚ðÝ’è‚·‚é‚ƃŒƒxƒ‹3‚©‚ç5‚Ü‚Å”“®‚µ‚Ü‚·B
-Ebattle_athana.conf‚Ìplayer_cloak_check_wallAmonster_cloak_check_wall‚ðplayer_cloak_check_typeAmonster_cloak_check_type‚É•ÏXB
-EƒAƒCƒeƒ€ƒ‹[ƒgŒ ŒÀŽžŠÔ‚ð–{ŽI‚ɇ‚킹‚ÄC³B
-E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B
- (doc/)
- conf_ref.txt C³B
- db_ref.txt C³B
- item_bonus.txt C³B
- (conf/)
- battle_athana.conf C³B
- (db/)
- item_db.txt C³B
- (map/)
- map.h
- map.c
- block_free_maxABL_LIST_MAX C³B
- skill.h C³B
- skill.c
- skill_additional_effect()Askill_attack()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_unit_onplace() C³B
- skill_status_change_end()Askill_status_change_start() C³B
- skill_initunitgroup()Askill_unitsetting()Askill_castfix() C³B
- skill_delayfix()Askill_autospell()Askill_use_id()Askill_use_pos() C³B
- skill_check_cloaking()Askill_unit_timer_sub()Askill_check_condition() C³B
- battle.h C³B
- battle.c
- battle_damage()Abattle_get_agi()Abattle_get_speed() C³B
- battle_get_adelay()Abattle_get_amotion()Abattle_get_flee() C³B
- battle_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_config_read() C³B
- mob.c
- mob_attack()Amob_damage()Amobskill_use_id() C³B
- mobskill_use_pos()Amob_spawn()Amob_class_change() C³B
- mob_can_move() C³B
- pc.c
- pc_attack_timer()Apc_checkweighticon()Apc_calcstatus() C³B
- pc_damage()Apc_equipitem()Apc_unequipitem() C³B
- pc_bonus2()Apc_bonus3()Apc_memo()Apc_authok() C³B
- pc_isUseitem() C³B
- clif.h C³B
- clif.c
- clif_changeoption()Aclif_parse_LoadEndAck()Aclif_autospell() C³B
- clif_skill_memo() C³B
- clif_skill_teleportmessage() ’ljÁB
- script.c
- buildin_sc_start() C³B
- atcommnad.c
- atcommand() C³B
-
---------------------
-//0830 by huge
-
-EƒI[ƒgƒXƒyƒ‹‚ÅAŽ©•ª‚ÌK“¾‚µ‚Ă郌ƒxƒ‹‚æ‚è‚à‚‚¢ƒŒƒxƒ‹‚Å
- –‚–@‚ª”“®‚µ‚Ä‚¢‚½‚Å‚ ‚낤–â‘è‚ðC³B
-EƒI[ƒgƒXƒyƒ‹‚Å‚àA‚¿‚á‚ñ‚ÆSP‚ªŒ¸‚é‚悤‚ÉC³(‚Ç–Y‚ê)
- (map/)
- battle.c
- battle_weapon_attack() C³B
- skill.c
- skill_autospell() C³B
-
---------------------
-//0829 by Kalen
-
-Emob_dbC³
- Ž©ŽI—p‚Ì‚ÆŠÔˆá‚Á‚ÄUP‚µ‚Ä‚µ‚Ü‚Á‚½‚悤‚Å‚·B
- –{—ˆ‚Ì‚à‚Ì‚É’¼‚µ‚Ü‚µ‚½B
-
---------------------
-//0828 by ¹
-
-EƒT[ƒo‚ÌSnapshot
-EMVPƒ{ƒXŒn‚©‚çƒoƒJƒ“ƒXƒ`ƒPƒbƒg‚ª‘å—Ê‚Éo‚Ä‚¢‚½–â‘è‚ðC³B
- (common/)
- version.h C³B
- (db/)
- mob_db.txt C³B
-
---------------------
-//0827 by J
-
-EŒÅ’èMOB‚Ì‚Í‚¸‚̃ƒKƒŠƒX‚Æl–Ê“Ž÷‚ª•à‚¢‚Ä‚¢‚½‚Ì‚ðC³B
-E“¬‹Zê‚ÌMOB‚ɃXƒLƒ‹‚ðŽÀ‘•B
-EƒpƒTƒi‚ƃtƒ@ƒ‰ƒI‚ªƒXƒLƒ‹‚ªÝ’肳‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðŽÀ‘•B
- (db/)
- mob_db.txt C³B
- mob_skill_db.txt C³B
-
---------------------
-//0826 by ‚Ò‚´‚Ü‚ñ
-
-Eˆê•”‚̉‰‘tƒXƒLƒ‹‚ðŽg‚¤‚ÆŽI‚ª—Ž‚¿‚éƒoƒOC³B
-EƒNƒ[ƒLƒ“ƒO’†‚ɃXƒLƒ‹‚ðŽg—p‚Å‚«A
-@Žg—p‚·‚é‚ƃNƒ[ƒLƒ“ƒO‚ª‰ðœ‚³‚ê‚é‚悤‚ÉC³B
-EKalen‚³‚ñ‚Ìmob_db.txt‚ð‚Ü‚Æ‚ß‚Ü‚µ‚½B
- (map/)
- skill.c
- skill_unit_onplace()Askill_unit_onout() C³B
- skill_status_change_start()Askill_status_change_timer() C³B
- skill_use_id()Askill_use_pos() C³B
- (db/)
- mob_db.txt C³B
-
---------------------
-//0825 by Ž€_
-
-Eׂ©‚¢C³B(ׂ©‚¢‚±‚Æ‚Ì‚í‚è‚É‚ÍC³‚µ‚½Š‚ª‘½‚¢‚¯‚Ç...)
-Eƒ[ƒvƒ|[ƒ^ƒ‹‚Ì’†‚ÉŽ~‚Ü‚Á‚½ŽžˆÈŠO‚̓[ƒv‚µ‚È‚¢‚悤‚ÉC³B
-Ebattle_athena.conf‚Éplayer_skill_nofootsetAmonster_skill_nofootset ’ljÁB
-ENPC‚ðƒNƒŠƒbƒN‚µ‚½Œã˜I“X‚ðƒNƒŠƒbƒN‚µ‚ĘI“X‚ð•Â‚¶‚é‚Æ“®‚¯‚È‚‚È‚éƒoƒOC³B
-‚½‚¾˜I“X‚ð•Â‚¶‚鎞‰½‚̃pƒPƒbƒg‚à“]‘—‚µ‚Ä‚±‚È‚¢‚̂ŘI“X‚ðƒNƒŠƒbƒN‚·‚é‚ÆNPC‚̈—‚©‚甲‚¯‚é‚悤‚É‚µ‚Ü‚µ‚½B(–{ŽI‚Å‚ÍNPC‚̈—‚ª”²‚¯‚È‚¢‚炵‚¢‚Å‚·‚ª‚»‚êˆÈŠO•û–@‚ª‚È‚©‚Á‚½‚Ì‚Á‚ÅB)
-Ekillmonster‚ÌAll‚Å¢Š«‚³‚ꂽƒ‚ƒ“ƒXƒ^[‚¾‚¯Á‚·‚悤‚É•ÏXB
-Eƒ\[ƒXÅ“K‰»‚âƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³‘½”B
- (doc/)
- conf_ref.txt C³B
- db_ref.txt C³B
- (conf/)
- battle_athana.conf C³B
- atcommnad_athena.conf C³B
- (db/)
- item_db.txt C³B
- skill_db.txt C³B
- (login/)
- parse_fromchar() C³B
- (map/)
- map.h C³B
- clif.c
- clif_closevendingboard()Aclif_parse_VendingListReq() C³B
- clif_mob0078()Aclif_mob007b()Aclif_pet0078()Aclif_pet007b() C³B
- skill.h C³B
- skill.c
- skill_check_condition()Askill_castend_pos2() C³B
- skill_castend_damage_id()Askill_castend_nodamage_id() C³B
- skill_castend_id()Askill_status_change_start()Askill_castfix() C³B
- skill_delayfix()Askill_check_unit_range_sub() C³B
- skill_check_unit_range()Askill_castend_pos()Askill_stop_dancing() C³B
- skill_unit_onplace()Askill_readdb()Askill_timerskill()Askill_blown() C³B
- skill_check_unit_range2_sub()Askill_check_unit_range2() ’ljÁB
- skill_get_maxcount() ’ljÁB
- mob.c
- mobskill_castend_id()Amobskill_castend_pos()Amob_deleteslave() C³B
- mob_stop_walking()Amob_walk()Amob_damage() C³B
- pc.c
- pc_calcstatus()Apc_checkskill()Apc_stop_walking() C³B
- pc_walk()Apc_damage() C³B
- npc.c
- npc_touch_areanpc() C³B
- pet.c
- pet_stop_walking() C³B
- script.c
- buildin_killmonster()Abuildin_killmonster_sub() C³B
- battle.h
- battle.c
- battle_calc_magic_attack()Abattle_get_flee()Abattle_get_flee2() C³B
- battle_get_adelay()Abattle_get_amotion()Abattle_get_max_hp() C³B
- battle_get_hit()Abattle_get_critical()Abattle_get_atk2() C³B
- battle_damage()Abattle_config_read() C³B
- atcommand.h C³B
- atcommand.c C³B
-
---------------------
-//0824 by ‚Ò‚´‚Ü‚ñ
-
-EƒZƒCƒtƒeƒBƒEƒH[ƒ‹Eƒjƒ…[ƒ}‚Ì‘«Œ³’u‚«‚ª‚Å‚«‚È‚©‚Á‚½–â‘èC³B
-EƒGƒ“ƒyƒŠƒEƒ€‚Ƀq[ƒ‹“™‚ÌŽx‰‡ƒXƒLƒ‹‚ªŒø‚¢‚Ä‚¢‚½–â‘èC³B
-E“¬‹Zê‚Ń‚ƒ“ƒXƒ^[ƒŠƒZƒbƒg‚ª‚Å‚«‚È‚©‚Á‚½–â‘èC³B
-@killmonster‚Í"killmonster <mapname>,<eventname>"‚Æ‹Lq‚µ‚Ä
-@ŠY“–eventname‚ðŽ‚ƒ‚ƒ“ƒXƒ^[‚ð휂µ‚Ü‚·‚ª
-@eventname‚ÉAll‚Æ“ü‚ê‚é‚ÆŠY“–MAP‚Ì‘Sƒ‚ƒ“ƒXƒ^[‚ðÁ‹Ž‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B
-
- (map/)
- skill.c
- skill_check_unit_range_sub()Askill_castend_nodamage_id() C³B
- script.c
- buildin_killmonster()Abuildin_killmonster_sub() C³B
- (conf/npc/)
- npc_event_tougijou.txt C³B
-
---------------------
-//0823 by Kalen
-
-E“¬‹Zêƒf[ƒ^‘µ‚Á‚½‚Ì‚ÅAŠ®¬
- conf/npc/npc_event_tougijou.txt
- ‚½‚¾‚µA‚±‚¿‚ç‚Ń`ƒFƒbƒN‚µ‚½‚Æ‚±‚ëkillmonster‚ª‚¤‚Ü‚‚¢‚©‚¸A
- Ž¸”sAŽžŠÔ؂ꂵ‚½ê‡ƒ‚ƒ“ƒXƒ^[ƒŠƒZƒbƒg‚ªo—ˆ‚Ü‚¹‚ñB
- ƒCƒxƒ“ƒg‚ªÝ’肳‚ê‚Ä‚¢‚郂ƒ“ƒXƒ^[‚͈—‚Å‚«‚È‚¢‚Ì‚©‚ÆŽv‚¢‚Ü‚µ‚½‚ª
- Agit‚Ì‚Ù‚¤‚̃Gƒ“ƒy‚ÌKillmonster‚Í‚¿‚á‚ñ‚Æ“®‚¢‚Ä‚Ü‚·‚µc
- Œ´ˆö•ª‚©‚é•û‚¨Šè‚¢‚µ‚Ü‚·<(_ _)>
-
-Egon_test‚Ìmapflag’ljÁ
- conf/mapflag.txt
-
-Emob_dbXV
- 1419`1491‚ªŠù‘¶‚ÌMob‚Ì’è‹`‚΂©‚è‚Ȃ̂ŒljÁ‚µ‚Ü‚¹‚ñ‚Å‚µ‚½‚ªA
- ’²‚ׂ½Š“¬‹Zê‚ÌMob‚̃f[ƒ^‚Å‚ ‚邱‚Æ‚ª•ª‚©‚è‚Ü‚µ‚½(Drop‚ð˜M‚Á‚½‚à‚Ì)
- –{ŽI‚ł͈łè‚ñ‚²‚ª•ñ‚³‚ê‚Ä‚¢‚Ü‚·B‚ªA‚±‚¿‚ç‚ÍDrop‹ó”’‚ň—‚µ‚Ü‚µ‚½B
- ƒNƒ‰ƒCƒAƒ“ƒgã‚Å‚Í“¯–¼‚Å‚µ‚½‚ªA‹æ•Ê‚Ì‚½‚ßÚ“ª‚ÉG_‚ð‚‚¯‚Ä‹æ•Ê‚µ‚Ä‚Ü‚·B
- mob_skill_db‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚µ‚½«
-
---------------------
-//0822 by ‚Ò‚´‚Ü‚ñ
-
-E‰‰‘tƒXƒLƒ‹‚ł̕Ⳃðƒ_ƒ“ƒT[‚É‚à“K—pB
-EƒTƒ“ƒNƒ`ƒ…ƒAƒŠƒoƒOC³B
-EKalen‚³‚ñ‚ÌMOBƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚ð‚Ü‚Æ‚ß‚Æ‚«‚Ü‚µ‚½B
-
- (map/)
- skill.c
- skill_status_change_start()Askill_unit_onplace() C³B
- battle.c
- battle_get_critical()Abattle_get_hit() C³B
- pc.c
- pc_calcstatus() C³B
-
---------------------
-//0821 by huge
-
-EƒI[ƒgƒXƒyƒ‹‰¼ŽÀ‘•B
-Etimer‚Å”»’肵‚悤‚©‚Æ‚àŽv‚¢‚Ü‚µ‚½‚ªA‘•”õ‚Ì–³ŒÀƒI[ƒgƒXƒyƒ‹‚ׂ̈Ésc_[].val1‚ÅŒ©‚ă}ƒXB
-Ebonus2 bAutoSpell’ljÁBˆê‰ž‚Ç‚ñ‚ȃXƒLƒ‹‚Å‚àŽw’è‚Å‚«‚é‚悤‚É‚µ‚Ä‚Ü‚·‚ª(”Ô†‚Ískill_treeŽQÆ)
- skill_castend_damage_id‚̃^ƒCƒvˆÈŠO‚̃XƒLƒ‹‚ðŽw’肵‚È‚¢‚Å‚‚¾‚³‚¢B
- ”“®Šm—¦‚ÍALv1:50%ALv2:35%ALv3:15%A‚»‚êˆÈã‚Í 5%ŒÅ’è‚Å‚·B
- ‚ ‚ÆAƒXƒLƒ‹ƒŒƒxƒ‹‚àŽw’è‚Å‚«‚Ü‚·‚ªAŒÀŠE‚ð’´‚¦‚½”Žš‚ð“ü‚ê‚é‚Æ’Ä‚¿‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-¡‘‚«•û—áFiƒtƒ@ƒCƒAƒ{ƒ‹ƒgLv3‚ÌŽžjbonus2 bAutoSpell 19,3;
-
- (db/)
- const.txt C³B
- (map/)
- battle.c
- battle_weapon_attack() C³B
- clif.h
- clif.c
- packet_len_table C³B
- clif_autospell() ’ljÁB
- clif_parse_AutoSpell() ’ljÁB
- map.h C³B
- pc.c
- pc_bonus2() C³B
- pc_equipitem() C³B
- pc_unequipitem() C³B
- skill.h
- skill.c
- skill_castend_nodamage_id() C³B
- skill_autospell() ’ljÁB
- skill_status_change_end() C³B
- skill_status_change_start() C³B
- status_change‚̔Ԇƒe[ƒuƒ‹C³B
-
---------------------
-//0820 by ‚Ò‚´‚Ü‚ñ
-
-EƒAƒhƒŠƒu‚̃ƒbƒZ[ƒW‚ª“ü‚Á‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³
-Eƒo[ƒh‚̉‰‘tƒXƒLƒ‹‚ÅŠyŠí‚Ì—ûK‚⎩ƒXƒe[ƒ^ƒX‚̕Ⳃª“ü‚Á‚Ä‚È‚©‚Á‚½‚Ì‚ðC³B
-@struct status_change‚Ìval‚ª3‚•K—v‚¾‚Á‚½‚Ì‚Å(val4‚Í—\–ñ‚³‚ê‚Ä‚½‚Á‚Û‚¢‚Ì‚Å)val5‚ð’ljÁ‚µ‚Ü‚µ‚½
- (map/)
- map.h C³B
- skill.c
- skill_status_change_start()Askill_castend_nodamage_id() C³B
- skill_castfix()Askill_delayfix() C³B
- battle.c
- battle_get_flee()Abattle_get_max_hp() C³B
- battle_get_adelay()Abattle_get_amotion() C³B
- battle_calc_misc_attack() C³B
- pc.c
- pc_calcstatus() C³B
-
---------------------
-//0819 by Kalen
-
-EƒRƒ“ƒƒ“(NPCAWarp)C³
- conf/npc/npc_town_gonryun.txt(ˆÄ“àˆõ•â[)
- conf/npc/npc_event_tougijou.txt
- conf/warp/npc_warp_gonryun.txt(h2F‚ÆD2F‚È‚Ç)
-
-EMOBC³
- conf/mob/npc_monster30.txt(ˆê”½–Ø–È•s‘«’ljÁ)
- conf/mob/npc_monster35.txt(ƒRƒ“ƒƒ“Mob’ljÁ)
-
-EDBC³
- db/mob_db.txt(ƒRƒ“ƒƒ“[‘S‚Ä]+ƒEƒ“ƒoƒ‰[’è‹`]’ljÁBAspeed“™“K“–‚Å‚·B‚Ü‚Ÿ–³‚¢‚æ‚è‚Ü‚µ‚Æ‚¢‚¤‚±‚Æ‚Å)
- db/mob_skill_db.txt(î•ñ‚ðŒ³‚ÉƒRƒ“ƒƒ“‚ÌMob•ª’ljÁ)
- db/item_db.txt(Athena DB Project 2/19 21:10DL•ª)
-
---------------------
-//0818 by ‚ ‚ä‚Ý
-
-EƒeƒŒƒ|[ƒgƒXƒLƒ‹Lv1‚ÅA‘I‘ðƒEƒCƒ“ƒhƒE‚ªo‚Ä‚±‚È‚¢ƒoƒO‚ðC³B
-Ed—Ê‚ª90“ˆÈã‚ÌꇂłàAˆê•”‚̃XƒLƒ‹‚ªŽg—p‰Â”\‚¾‚Á‚½ƒoƒO‚ðC³B
-E@allskillƒRƒ}ƒ“ƒh‚ÌC³‚Æ‚©B
-
- (conf/)
- msg_athena.conf C³B
- (map/)
- atcommand.c
- atcommand() C³B
- pc.c
- pc_allskillup() C³B
- skill.c
- skill_castend_nodamage_id() C³B
- skill_check_condition() C³B
-
---------------------
-//0817 by huge
-
-EƒfƒBƒ{[ƒVƒ‡ƒ“‚̈—C³
- EŽ…‚Ìo‚µ•û‚̓pƒP‚ð–á‚Á‚½‚Ì‚Å‚Å‚«‚Ü‚µ‚½‚ªAƒAƒCƒRƒ“‚Ì•û‚Í‚Ü‚¾•ª‚©‚ç‚È‚¢‚Å‚·B
- E‚ ‚ÆAŽ©•ª‚̊‹«‚Å2lˆÈã‚É“¯Žž‚ÉŠ|‚¯‚ê‚È‚©‚Á‚½‚Ì‚ÅA•¡”l‚É‚©‚¯‚½ê‡
- ‘½•ª0‚Ì—…—ñ‚ÌŠ‚É2l–ÚA3l–ÚEEE‚ÌID‚ª“ü‚é‚ñ‚¶‚á‚È‚¢‚©‚È‚Ÿ‚Æ‚¢‚¤—\‘ª‚Å‚â‚Á‚Ä‚Ü‚·B
-EƒnƒCƒfƒBƒ“ƒO’†A‹y‚уNƒ[ƒLƒ“ƒO’†‚Ƀ_ƒ[ƒW‚ðŽó‚¯‚é‚Æ‰ð‚¯‚é‚悤C³B
-
- (map/)
- battle.c
- battle_damage() C³B
- clif.c
- clif_devotion() C³B
- pc.c
- pc_walk() C³B
- skill.c
- skill.h
- skill_castend_nodamage_id() C³B
- skill_devotion() skill_devotion2() C³B
- skill_devotion3()skill_devotion_end() C³B
-
---------------------
-//0816 by ‚Ò‚´‚Ü‚ñ
-Eƒtƒ@ƒCƒA[ƒEƒH[ƒ‹3–‡§ŒÀŽÀ‘•B
-Ed‚Ë’u‚«‹ÖŽ~‚ðƒvƒŒƒCƒ„[Eƒ‚ƒ“ƒXƒ^[‚É‚à“K—p‚·‚é‚悤‚ÉC³B
-EŠ¦‚¢ƒWƒ‡[ƒNEƒXƒNƒŠ[ƒ€‚ÌPvPEGvG‚ÅAŒø‰Ê‚ªŽ©•ª‚É‚à‹y‚ÔƒoƒOC³B
-@‚‚¢‚Å‚ÉPTƒƒ“ƒo[‚É‚Í’áŠm—¦‚Å‚©‚©‚é‚Ì‚àŽÀ‘•B
-EŠ¦‚¢ƒWƒ‡[ƒNEƒXƒNƒŠ[ƒ€EƒXƒsƒAƒu[ƒƒ‰ƒ“‚̃fƒBƒŒƒCC³B
-@ƒ~ƒ…[ƒWƒJƒ‹ƒXƒgƒ‰ƒCƒNE–‚¿‚̉r¥ŽžŠÔC³B
- (map/)
- skill.c
- skill_check_condition()Askill_check_unit_range_sub() C³B
- skill_check_unit_range()Askill_delunitgroup() C³B
- skill_castend_pos2()Askill_frostjoke_scream() C³B
- map.h C³B
- (db/)
- cast_db.txt C³B
-
---------------------
-//0815 by Ž€_
-
-E0814‚̃oƒOC³‚Æׂ©‚¢C³B
-Emapflag monster_noteleportAnoreturn’ljÁ‚Ænoteleport‚ÌŽd—l•ÏXB
-noteleport‚̓vƒŒƒCƒ„[‚̃nƒG‚ƃeƒŒƒ|[ƒgAƒ[ƒvƒXƒLƒ‹‚̧ŒÀ‚ð‚·‚é‚ª’±‚ͧŒÀ‚µ‚È‚¢‚悤‚É•ÏXAmonster_noteleport‚̓‚ƒ“ƒXƒ^[‚̃eƒŒƒ|[ƒg‚ð§ŒÀ‚·‚镨‚Ånoreturn‚Í’±‚ÌŽg—p‚ð§ŒÀ‚·‚镨‚Å‚·B‚½‚¾mapflag.txt‚ÍC³‚µ‚Ä‚¢‚Ü‚¹‚ñB(noreturn‚ðÝ’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B)
-Ebattle_athena.conf‚Ìplayer_auto_counter_type‚Æmonster_auto_counter_type‚ªà–¾’Ê‚è‚É‹@”\‚µ‚È‚©‚Á‚½–â‘èC³B
-Ebattle_athena.conf‚Éplayer_cloak_check_wall ‚Æmonster_cloak_check_wall ’ljÁB
-Eƒ{ƒXƒ‚ƒ“ƒXƒ^[‚Ì”FŽ¯‚ðMVPŒoŒ±‚Æmode‚Ì0x20‚Ås‚È‚Á‚Ä‚¢‚½•¨‚ðmode‚¾‚¯‚É‚·‚é‚悤‚É•ÏXB(–{ŽI‚̃Cƒxƒ“ƒgƒ‚ƒ“ƒXƒ^[‚ÅMVPŒoŒ±‚ð‚‚ê‚邪ó‘ÔˆÙí‚ÉŠ|‚©‚é‚â‚‚ª‚ ‚Á‚½‚炵‚C³BHP‚ª1‰‚à‚ ‚Á‚Ä“Å‚¶‚á‚È‚¢‚Æ“|‚¹‚È‚©‚Á‚½‚炵‚¢‚Ì‚Å...) ‚‚܂èMVPŒoŒ±‚ª‚ ‚Á‚Ä‚àƒ{ƒXˆµ‚¢‚Å‚Í‚È‚¢ƒ‚ƒ“ƒXƒ^[‚ðì‚邱‚Æ‚à‰Â”\‚Å‚·B
-Eó‘ÔˆÙí‚ÉŠ|‚©‚Á‚½ó‘Ô‚ÅÚ‘±Ø’f‚ª‚Å‚«‚È‚¢‚悤‚ÉC³B(‚½‚¾ƒ^ƒCƒ}[ƒ`ƒFƒbƒN‚Å‚Í‚È‚opt1‚Æopt2‚ðƒ`ƒFƒbƒN‚·‚邾‚¯‚È‚Ì‚ÅŒ©‚½–Ú‚ª•Ï‚í‚éó‘ÔˆÙ킾‚¯‚É“K—p‚³‚ê‚Ü‚·B)
-E¡‚³‚ç‚Å‚·‚ªÌ‚ÌyareCVS(2003”N9ŒŽƒo[ƒWƒ‡ƒ“)‚Å“K—p‚³‚ê‚Ä‚¢‚½ƒ‰ƒO‚ðŒ¸‚ç‚·ˆ×‚̈—‚ð“ü‚ê‚Ä‚Ý‚Ü‚µ‚½B‚Ç‚ñ‚ÈŒø‰Ê‚ª‚ ‚é‚©‚ÍŽ©•ª‚Å‚à‚í‚©‚è‚Ü‚¹‚ñB(‚½‚¾“ü‚ê‚Ä‚Ý‚½‚¾‚¯...)
-EƒV[ƒYƒ‚[ƒh‚ÆPVP‚Å‹ÖŽ~‘•”õ‚ªŠO‚³‚ê‚Ä‚àŒø‰Ê‚ªÁ‚¦‚È‚¢ƒoƒOC³B
-E‚»‚Ì‘¼×‚©‚¢C³B
-E–¢ƒeƒXƒg‚Ì•¨‚à‚©‚È‚è‚ ‚è‚Ü‚·B
- (common/)
- socket.c
- connect_client()Amake_listen_port()Amake_connection() C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_calc_magic_attack()Abattle_config_read() C³B
- skill.c
- skill_unit_onplace()Askill_status_change_timer() C³B
- skill_castend_nodamage_id()Askill_use_id() C³B
- skill_check_unit_range_sub()Askill_timerskill() C³B
- skill_additional_effect()Askill_attack()Askill_status_change_start() C³B
- skill_check_cloaking() C³B
- clif.c
- clif_item_identify_list()Aclif_parse_QuitGame()Aclif_GM_kick() C³B
- pc.c
- pc_attack_timer()Apc_isUseitem()Apc_checkitem C³B
- mob.c
- mob_warp()Amob_walk()Amob_attack()Amob_target() C³B
- mob_ai_sub_hard_activesearch()Amob_ai_sub_hard_mastersearch() C³B
- mob_ai_sub_lazy()Amob_damage() C³B
- npc.c
- npc_parse_mapflag() C³B
- map.h C³B
-
---------------------
-//0814 by Ž€_
-
-EƒoƒOC³‚Æׂ©‚¢C³B
-Ebattle_athena.conf‚Ìplayer_auto_counter_type‚Æmonster_auto_counter_type‚ÌŽd—l‚ð•ÏXB(–{ŽI‚ł̓XƒLƒ‹”½Œ‚‚Í‚Å‚«‚È‚¢‚Ý‚½‚¢‚È‚Ì‚ÅÝ’è‚Å‚«‚é‚悤‚É•ÏXB)
-E“Å‚ÆΉ»‚É‚æ‚éHPŒ¸‚ð–{ŽI‚ɇ‚킹‚ÄC³‚ÆŠ®‘SΉ»‚Ì‘O‚Å‚Í“®‚¯‚é‚悤‚É•ÏXB(“Å‚Í1•b‚É3+Å‘åHP‚Ì1.5%(ƒ‚ƒ“ƒXƒ^[‚Í0.5%)AΉ»‚Í5•b‚É1%) –¢ƒeƒXƒg
-EMVPŒoŒ±’l‚Í–{ŽI‚Å‚¢‚‚à“ü‚é‚悤‚É‚È‚Á‚½‚Ì‚ÅC³B
-EƒXƒeƒB[ƒ‹‚ÌŠm—¦‚ð‚µ‰º‚°B
-Eƒ‚ƒ“ƒXƒ^[‚̃nƒCƒfƒBƒ“ƒOAƒNƒ[ƒLƒ“ƒOAƒ}ƒLƒVƒ}ƒCƒYƒpƒ[‚ª‚·‚®‚ɉ𜂳‚ê‚é–â‘èC³B(ƒ‚ƒ“ƒXƒ^[‚É‚ÍSP‚ª‚È‚¢‚¹‚¢‚Å‚·BŽæ‚芸‚¦‚¸ƒNƒ[ƒLƒ“ƒO‚̓nƒCƒfƒBƒ“ƒO‚ÌŽžŠÔ‚ð“K—p‚µ‚ă}ƒLƒVƒ}ƒCƒYƒpƒ[‚̓EƒGƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“‚ÌŽžŠÔ‚ð“K—p‚µ‚Ü‚·B) –¢ƒeƒXƒg
-EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ðl”‚©‚ç‰ñ”‚É•ÏXB
-EPVP‚ÅŽ©•ª‚̃gƒ‰ƒbƒv‚ÉUŒ‚‘ÎÛ‚É‚È‚é‚悤‚É•ÏXB
-Evitƒyƒiƒ‹ƒeƒB‚Ì“K—p‚ÅæŽZ–hŒä‚àŒ¸‚é‚悤‚É•ÏXB(–¢ƒeƒXƒg)
-E‚»‚Ì‘¼×‚©‚¢ƒoƒOC³B
- (conf/)
- battle_athena.conf
- (doc/)
- conf_ref.txt
- (db/)
- skill_db.txt
- (map/)
- map.h C³B
- script.c
- buildin_itemskill() C³B
- mob.c
- mob_can_move()Amob_ai_sub_hard()Amob_damage() C³B
- skill.c
- skill_unitsetting()Askill_unit_onplace()Askill_castend_nodamage_id() C³B
- skill_attack()Askill_status_change_start() C³B
- skill_status_change_timer()Askill_status_change_timer_sub() C³B
- skill_addtimerskill()Askill_cleartimerskill() C³B
- skill_check_unit_range_sub() C³B
- battle.c
- battle_calc_damage()Abattle_check_target() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack() C³B
- pc.c
- pc_steal_item() C³B
- clif.c
- clif_parse_WalkToXY()Aclif_closevendingboard() C³B
-
---------------------
-//0813 by Kalen
-EƒRƒ“ƒƒ“NPC’ljÁ
- conf/npc/npc_town_gonryun.txt(ƒNƒGƒXƒg‚Í•s–¾
- conf/npc/npc_town_kafra.txt
- conf/npc/npc_town_guide.txt
- (conf/npc/npc_event_tougijou.txt)ƒf[ƒ^•s‘«
-
-E‘SGvGMAP‚ÌMobƒf[ƒ^’ljÁ
- conf/mob/npc_monster_gvg.txt
-
-ETESTmob‚©‚çƒeƒXƒgƒMƒ‹ƒhƒtƒ‰ƒOˆÚ“®
- conf/gvg/TEST_prtg_cas01_AbraiJ.txt
-
---------------------
-//0812 by huge
-
-EƒfƒBƒ{[ƒVƒ‡ƒ“‚̉¼ŽÀ‘•
- EƒpƒPƒbƒg‚ª‘S‘R•ª‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½‚Ì‚ÅA
- ‚¢Ž…‚ào‚È‚¢‚µAƒAƒCƒRƒ“‚·‚ç•\Ž¦‚Å‚«‚Ü‚¹‚ñB
- Eƒ_ƒˆÚ“®‚¾‚¯‚ÅAƒmƒbƒNƒoƒbƒNEƒI[ƒgƒK[ƒh‚Í“K‰ž‚³‚ê‚Ü‚¹‚ñB
-
- (map/)
- clif.c
- clif.h
- clif_devotion() ’ljÁB
- skill.c
- skill_castend_nodamage_id() C³B
- skill_devotion() skill_devotion2() ’ljÁB
- skill_devotion3() skill_devotion_end() ’ljÁB
- skill_status_change_end() C³B
- skill_status_change_start() C³B
- skill_brandishspear_first() C³B
- skill_brandishspear_dir() C³B
- pc.c
- pc_authok() C³B
- pc_walk() C³B
- pc_damage() C³B
- battle.c
- battle_damage() C³B
- map.h
- map_session_data{}
- struct square dev ’ljÁB
- skill.h ‚Ìbrandish‚ðsquare‚ɉü–¼‚µA
- (common/) mmo.h ‚Ɉړ®
-
---------------------
-//0811 by ‚Ò‚´‚Ü‚ñ
-
-EUé’†‚Í’±‚ªŽg‚¦‚é‚悤‚ÉC³
-EŠ¦‚¢ƒWƒ‡[ƒNEƒXƒNƒŠ[ƒ€ŽÀ‘•(PTƒƒ“ƒo[‚É’áŠm—¦‚ʼn]X‚Í–¢ŽÀ‘•‚Å‚·)
-EGVGƒXƒNƒŠƒvƒg‚ðC³(ŽŽsöŒë‚µ‚·‚¬‚Ä‚Ç‚±‚ð‚Ç‚¤‚µ‚½‚©Šo‚¦‚Ä‚Ü‚¹‚ñc)
-@GVGƒXƒNƒŠƒvƒg‚ÉŠÖ‚µ‚Ä‚Å‚·‚ªAŠù’m‚̃oƒO‚ª‚ ‚è‚Ü‚·
-@‚»‚ê‚ÍAè—̃Mƒ‹ƒhƒ}ƒXƒ^[ˆÈŠO‚ÌPC‚ªAè—̃Mƒ‹ƒhƒ}ƒXƒ^[‚æ‚èæ‚ÉNPC‚ɘb‚µŠ|‚¯‚é‚Æ
-@ƒ}ƒbƒvƒT[ƒo‚ª—Ž‚¿‚é‚Æ‚¢‚¤‚à‚Ì‚Å‚·B
-@‚±‚ê‚ÍAgetguildmasterEgetguildname‚ðŽg—p‚µ‚Ä‚¢‚éƒXƒNƒŠƒvƒg‚·‚ׂĂɋN‚±‚蓾‚邱‚Æ‚Å‚ ‚è
-@æ‚Éè—̃Mƒ‹ƒhƒ}ƒXƒ^[ˆÈŠO‚Řb‚µŠ|‚¯‚é‚ÆAguild_search‚ª‰½ŒÌ‚©(ŠY“–ID‚̃Mƒ‹ƒh‚ª‚ ‚é‚É‚àŠÖ‚í‚炸)
-@NULL‚ð•Ô‚·Ž–‚É‹Nˆö‚µ‚Ü‚·B
-@³’¼ƒXƒNƒŠƒvƒgŠÖŒW‚Í‚æ‚‚í‚©‚Á‚Ä‚¢‚È‚¢‚Ì‚ÅA‚±‚ê‚ÍŽ„‚Ì‹Zp‚Å‚ÍC³‚Ì‚µ‚悤‚ª‚ ‚è‚Ü‚¹‚ñB
-@Žb’è“I‚ȑΈ‚Æ‚µ‚ÄNULL‚ð•Ô‚µ‚ÄMAPŽI‚ª—Ž‚¿‚é‚‚ç‚¢‚Ȃ當Žš—ñunullv‚ð•Ô‚·‚悤‚É‚µ‚Ü‚µ‚½B
-
- (map/)
- skill.c
- skill_frostjoke_scream() ’ljÁB
- skill_additional_effect()Askill_timerskill() C³B
- skill_castend_nodamage_id() C³B
- pc.c
- pc_isUseitem() C³B
- script.c
- buildin_getpartyname()Abuildin_getguildname() C³B
- buildin_getguildmaster() C³B
- (db/)
- cast_db.txt C³B
- (conf/gvg/)
- ev_*.txtˆÈŠO‚Ìtxt‘S‚Ä‚ðC³B
-
---------------------
-//0810 by ¹
-
-EMVP‚̈—‚ð•ÏXB(Šm—¦‚Å10000‚ª‚ ‚Á‚Ä‚àA‘¼‚̃AƒCƒeƒ€‚ào‚é‚悤‚É‚µ‚Ü‚µ‚½)
-EMVP‚Å‘•”õ‚ð“üŽè‚µ‚½ê‡AŠÓ’èÏ‚Ý‚Å“üŽè‚µ‚Ä‚¢‚½–â‘è‚ðC³B
-EƒXƒLƒ‹‰r¥’†‚ɃCƒO—t‚âŠg‘勾‚ðŽg‚¤‚ƃvƒŒ[ƒ„[‚ÌŽg—p‰Â”\‚È
-@‘SƒXƒLƒ‹‚ÌLV‚ª1‚ɌŒ肳‚ê‚Ä‚µ‚Ü‚¤–â‘è‚ðC³B
-EƒI[ƒNƒA[ƒ`ƒƒ[“™Aƒ‚ƒ“ƒXƒ^[‚É‚æ‚é㩃XƒLƒ‹‚Ì—LŒøŠúŒÀ‚ªØ‚ꂽ‚Æ‚«‚ÉA
-@Ý’u—pƒgƒ‰ƒbƒv‚ªo‚é–â‘è‚ðC³B
-EƒƒOƒCƒ“ƒGƒ‰[(ƒpƒXƒ[ƒh“ü—̓~ƒX‚âBAN“™)‚̃Gƒ‰[ƒƒbƒZ[ƒW‚ª
-@³‚µ‚ƒNƒ‰ƒCƒAƒ“ƒg‚É’Ê’m‚³‚ê‚È‚¢–â‘è‚ðC³B
-E‚»‚Ì‘¼×‚©‚ÈC³B
- (common/)
- version.h C³B
- (login/)
- login.c
- parse_login() C³B
- parse_fromchar() C³B
- (char/)
- int_guild.c
- mapif_parse_GuildLeave() C³B
- (map/)
- itemdb.c
- itemdb_read_itemnametable() C³B
- atcommand.c
- atcommand() C³B
- skill.c
- skill_unit_timer_sub() C³B
- script.c
- buildin_itemskill() C³B
- mob.c
- mob_damage() C³B
-
---------------------
-//0809 by Kalen
-
-E“ŒŒÎéƒ[ƒvƒ|ƒCƒ“ƒgC³
-EƒAƒ}ƒcŽõŽi‰®C³
-EƒoƒOƒXƒŒ129‚Ì–â‘èC³H
-
-
---------------------
-//0808 by ‚Ò‚´‚Ü‚ñ
-
-E‘•”õ§ŒÀ‚ªãŽè‚“®ì‚µ‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B
-Eƒ‚ƒ“ƒnƒEƒMƒ‹ƒh‚ÍGvGŠJŽnŽž‚Éì‚ç‚ê‚é‚悤‚É•ÏXB
-EGvGŠJŽnŽž‚ÉŠY“–ƒ}ƒbƒv‚É‚¢‚é‘SPC(è—̃Mƒ‹ƒhˆõˆÈŠO)‚ðƒZ[ƒuƒ|ƒCƒ“ƒg‚É–ß‚·‚悤‚ÉC³B
-Eƒ‚ƒ“ƒnƒEƒMƒ‹ƒhƒAƒWƒg‚ŃGƒ“ƒy‚ð‰ó‚·‚ÆAƒ‚ƒ“ƒnƒE‚ªÁ‚¦‚é‚悤‚ÉC³B
-@‚±‚ÌC³‚É”º‚Á‚Ämaprespawnguildid‚̈ø”‚Ìflag‚ÌŽd—l‚ð•ÏX‚µ‚Ü‚µ‚½
-@flag‚̓rƒbƒgƒtƒ‰ƒO‚É‚È‚èA
-@@1ƒrƒbƒg–ÚFè—̃Mƒ‹ƒhˆõ‚ðƒZ[ƒuƒ|ƒCƒ“ƒg‚É–ß‚·‚©
-@@2ƒrƒbƒg–ÚFè—̃Mƒ‹ƒhˆõˆÈŠO‚ðƒZ[ƒuƒ|ƒCƒ“ƒg‚É–ß‚·‚©
-@@3ƒrƒbƒg–ÚFƒGƒ“ƒyEƒK[ƒfƒBƒAƒ“ˆÈŠO‚ÌMOB‚ðÁ‚·‚©
-@‚¢‚¸‚ê‚àA0=NOA1=YES‚É‚È‚è‚Ü‚·
-
- (conf/gvg/)
- ev_agit_aldeg.txt C³B
- ev_agit_gefg.txt C³B
- ev_agit_payg.txt C³B
- ev_agit_prtg.txt C³B
- TEST_prtg_cas01_AbraiJ.txt C³B
- TEST_prtg_cas01_mob.txt C³B
- (map/)
- pc.c
- pc_checkitem() C³B
- script.c
- buildin_maprespawnguildid_sub() C³B
- buildin_maprespawnguildid() C³B
-
---------------------
-//0807 by Ž€_
-
-E0805‚ÅFD_SETSIZE‚ðC³‚·‚銂ðŠÔˆá‚Á‚½‚Ì‚ÅC³‚µ‚Ü‚µ‚½B56–¼Ž~‚܂肪Ž¡‚é‚ÆŒ¾‚¤•ÛØ‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...
-Eˆê“x‚É“]‘—‚·‚éƒpƒPƒbƒg‚Ì’·‚³‚ð32768bytes‚©‚ç65536bytes‚É•ÏXB
- (common/)
- mmo.h C³B
- socket.h C³B
- socket.c C³B
-
---------------------
-//0806 by Kalen
-
-EagitƒtƒHƒ‹ƒ_¨gvgƒtƒHƒ‹ƒ_‚ÖˆÚs
- ”ˆÓŒ©‚ ‚é‚ÆŽv‚¢‚Ü‚·‚ªAjRO‚Å‚ÍUéí‚ðgvg‚ƌĂԂ±‚Æ‚ªˆê”Ê“I‚È‚Ì‚Å‚±‚¿‚ç‚É“‡‚µ‚Ü‚·B
- conf/gvg/
- ###agitƒtƒHƒ‹ƒ_‚ð휂µ‚Ä‚‚¾‚³‚¢###@(Please delete the "agit" folder.)
- getmaster‘Ήž
-
-EƒAƒ}ƒc‚ÌŽõŽi‰®ƒoƒOC³‚Æ€–ڒljÁ(thx 114
- conf/npc/npc_town_amatsu.txt
-
-Emap_flagÄC³
- conf/map_flag.txt
- [GVGMAP]Šm‚©‚Éí‚ɃV[ƒYƒ‚[ƒh‚È‚ç–â‘è‚È‚¢‚Å‚·‚ªA휂³‚ê‚Ü‚µ‚½‚Ì‚Å
- í‚ɃV[ƒYƒ‚[ƒh‚Å‚Í‚ ‚è‚Ü‚¹‚ñB]‚Á‚ĉ𜎞(ŽžŠÔŠO)‚É‚ÍŽ}AƒeƒŒƒ|‚ªŽg‚¦‚Ü‚·
- ŽžŠÔ‘O‚ÉŽ}ŽT‚«A‚Ü‚¾ŽÀ‘•‚µ‚Ä‚Ü‚¹‚ñ‚ª•ó” ’DŽæ‚à‰Â”\‚É‚È‚é‚Ì‚ÅŽ}AƒeƒŒƒ|‚Íí‚ÉŽg—p•s‰Â‚Å–â‘è‚È‚¢‚ÆŽv‚¢‚Ü‚·B
-
-Œã‘O‰ñ‘‚«–Y‚ê‚Ü‚µ‚½‚ªAmomotaroƒCƒxƒ“ƒg‚Å‚·‚ªA‚¿‚å‚Á‚Æ•sˆÀ’è‚ȉ”\«‚ª‚ ‚è‚Ü‚·B
-Œ´ˆö‚ª‚í‚©‚ç‚È‚¢‚Ì‚Å‚·‚ªAƒ‹[ƒv‚µ‚Ä‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñBˆê‰žƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚ ‚è‚Ü‚·
-
---------------------
-//0805 by Ž€_
-
-E•¶Žš‰»‚¯C³B
-EƒV[ƒYƒ‚[ƒh‚ł̃eƒŒƒ|[ƒg‹ÖŽ~‚âŒÃ–Ø‚ÌŽ}Žg—p‹ÖŽ~‚̓\[ƒXƒŒƒxƒ‹‚Å
-ˆ—‚µ‚Ä‚¢‚é‚Ì‚Åmapflag.txt‚©‚çíœB(ˆö‚Ý‚Énopenalty‚àƒ\[ƒXƒŒƒxƒ‹‚Å
-ˆ—‚µ‚Ä‚¢‚Ü‚·B)
-Ebattle_athena.conf‚Ìagit_eliminate_time‚ðgvg_eliminate_time‚É•ÏXB
-E@ƒRƒ}ƒ“ƒh@GMíœB
-EFD_SETSIZE‚©cygwin‚Å64‚Éݒ肳‚ê‚Ä‚¢‚½‚Ì‚¹‚¢‚ÅÅ‘åÚ‘±l”‚ª56–¼‚ð
-‰z‚¦‚é‚ƃ}ƒbƒvŽI‚ª–³ŒÀƒ‹[ƒv‚·‚é–â‘èC³B(‚½‚¾ƒeƒXƒg‚ª‚Å‚«‚È‚©‚Á‚½•¨‚È‚Ì‚Å–{“–‚É‘åä•v‚É‚È‚Á‚½‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·B‚ ‚‚Ü‚Å‚àŽ©•ª‚Ì—\‘ª‚É‚·‚¬‚È‚¢•¨‚Å‚·‚ª...)
-E•¶Žš‰»‚¯‚Ì‚¹‚¢‚Å‚Ç‚±‚ð‚Ç‚¤C³‚µ‚½‚©Šo‚¦‚Ä‚È‚¢‚Ì‚ÅC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯B
- (conf/)
- atcommand_athena.conf
- battle_athena.conf
- mapflag.txt
- (db/)
- castle_db.txt
- (doc/)
- conf_ref.txt
- (common/)
- mmo.h
- (login/)
- login.c
- (char/)
- inter.c
- int_guild.c
- (map/)
- atcommand.h
- atcommand.c
- battle.h
- battle.c
- chrif.c
- guild.h
- guild.c
- intif.h
- intif.c
- map.h
- map.c
- mob.c
- npc.c
- npc.h
- script.c
- skill.c
- pc.c
- makefile
-
---------------------
-//0804 by Žß‘¸
-
-EƒAƒ‹ƒxƒ‹ƒ^‚Ì‚Ê‚¢‚®‚é‚݃Cƒxƒ“ƒg‚Å‚¤‚³‚¬‚Ì‚Ê‚¢‚®‚é‚Ý‚ð‚ ‚°‚é‚ƃT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³
-
- (conf/npc/)
- npc_event_doll.txt C³B
-
---------------------
-//0803 by ‚Ò‚´‚Ü‚ñ
-
- GvG‚ŃGƒ“ƒyƒŠƒEƒ€•ö‰óŽžgvg_eliminate_time‚Ì’l‚ÉŠÖ‚í‚炸‘¦À‚É‘Þ‹Ž‚³‚¹‚ç‚ê‚Ä‚¢‚½ƒoƒOC³
- GvG‚̃ZƒŠƒt‚ðˆê•”C³
- interŽI‚Åcastle.txt‚ª‚È‚¢‚Æ‹N‚±‚éFX‚ȃGƒ‰[‚ðC³
- help.txt‚ðC³(@gvgstart¨@agitstart‰]X)
-
- (conf/)
- gvg/TEST_prtg_cas01_AbraiJ.txt C³B
- agit/ev_agit_prtgJ.txt C³B
- help.txt C³B
- (map/)
- int_guild.c
- inter_guild_init() C³B
-
---------------------
-//0802 by Michael_Huang
-
- Added NPC Script - 'GetGuildMaster' Command.
- (common/)
- version.h
- Mod_Version 0802
- (map/)
- script.c
- buildin_getguildmaster_sub() buildin_getguildmaster()
-
---------------------
-//0801 by Kalen
-EƒAƒ}ƒcC³
-@@ŽÀ‘•‘O‚̃f[ƒ^A”²‚¯‚Ä‚éƒf[ƒ^‚Ȃǂ𒲸‚µC³
- conf/npc/npc_town_guide.txt
- conf/npc/npc_town_amatsu.txt
- conf/npc/npc_event_momotaro.txt
- conf/npc/npc_event_alchemist.txt
- conf/mob/npc_monster35.txt
- conf/warp/npc_warp_amatsu.txt
-Emap_flagC³
- [GVGMAP]Ž}AƒeƒŒƒ|‚Íí‚ÉŽg—p•s‰Â
-EGVGŠÖŒW
- 0800‚̃Rƒ}ƒ“ƒh‚ɑΉž
-
---------------------
-//0800 by Michael_Huang
-
- Added Agit NPC Script & Command.
- Fix FreeBSD GCC compatibility.
- Attachment Agit Demo NPCs.
-
- (char/)
- int_guild.c
- mapif_guild_castle_dataload() mapif_guild_castle_datasave()
- int mapif_parse_GuildCastleDataLoad() int mapif_parse_GuildCastleDataSave()
- inter_guild_parse_frommap() inter_guildcastle_tostr() inter_guildcastle_fromstr()
- inter.c
- inter_send_packet_length[] inter_recv_packet_length[]
- (common/)
- mmo.h
- GLOBAL_REG_NUM, struct global_reg {}
- version.h
- Mod_Version 0799.
- (conf/)
- atcommand_athena.conf
- agitstart: 1,agitend: 1
- battle_athena.conf
- agit_eliminate_time: 7000
- map_athena.conf
- conf/agit/ev_agit_*.txt
- (doc/)
- conf_ref.txt
- battle_athena.cnf
- agitdb_ref.txt
- (login/)
- login.c
- parse_login()
- (map/)
- atcommand.h
- agitster, agitend
-
- atcommand.c
- @agitstart, @agitend
- battle.h
- battle_config.agit_eliminate_time
- battle.c
- battle_config_read()
- chrif.c
- chrif_changedsex() chrif_connectack()
- guild.h
- guild_agit_start() guild_agit_end() guild_agit_break()
- guild.c
- guild_read_castledb() do_init_guild()
- guild_agit_start() guild_agit_end() guild_agit_eliminate_timer() guild_agit_break()
- intif.h
- intif_guild_castle_dataload() intif_guild_castle_datasave()
- intif.c
- packet_len_table[] intif_guild_castle_dataload() intif_guild_castle_datasave()
- intif_parse_GuildCastleDataLoad() intif_parse_GuildCastleDataSave() intif_parse()
- map.h
- agit_flag
- map.c
- agit_flag
- npc.h
- npc_event_doall() npc_event_do()
- npc.c
- npc_event_do_sub() npc_event_do()
- script.c
- buildin_maprespawnguildid() buildin_agitstart() buildin_agitend()
- buildin_getcastlename() buildin_getcastledata() buildin_setcastledata()
- skill.c
- skill_unit_onplace()
- skill_gangster_count()
-
---------------------
-//0799 by ‚Ò‚´‚Ü‚ñ
-
-EGvGŽÀ‘•‚ׂ̈Éinter-mapŠÔ‚Ì’ÊMŽd—l•ÏX
-E0798‚̃Rƒ“ƒpƒCƒ‹ƒGƒ‰[C³(byƒoƒO•ñƒXƒŒ82Ž)
- (login/)
- login.c
- parse_login() C³B
- (map/)
- intif.c
- packet_len_table[] C³B
- intif_parse_GuildCastleInfo() C³B
- intif_parse_GuildCastleChange()‚ðintif_parse_GuildCastleChangeErr()‚ɉü–¼EC³B
- intif_parse() C³B
- guild.c
- guild_read_castledb() C³B
-
- (char/)
- inter.c
- inter_send_packet_length[] C³B
- int_guild.c
- inter_guildcastle_tostr() C³B
- inter_guildcastle_fromstr() C³B
- mapif_parse_GuildChangeCastle() C³B
- mapif_parse_GuildCastleInfo() C³B
- mapif_guild_castle_info() C³B
- mapif_guild_change_castle()‚ðmapif_guild_change_castle_err()‚ɉü–¼EC³B
- (common/)
- mmo.h C³B
- version.h C³B
-
---------------------
-//0798 by ŒÓ’±—–
-
-Elogin-server‚̃ƒOƒCƒ“Ž¸”sƒpƒPƒbƒg‚Ì’·‚³‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³
-Elogin-server‚ɃAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹‹@”\’ljÁ
- Elogin_athena.cnf‚Éorder,allow,deny‚ð‹Lq‚·‚邱‚Æ‚ÅA
- IP’PˆÊ(‘O•ûˆê’v)‚ŃAƒNƒZƒX‚ð‹ÖŽ~‚·‚é‹@”\B
- EŽw’è•û–@‚Í doc/conf_ref.txt ‚ðŽQÆ
-
- (doc/)
- conf_ref.txt
- login_athena.cnf‚Ì•”•ªC³
- (login/)
- login.c
- ƒOƒ[ƒoƒ‹•Ï” access_* ’ljÁ
- parse_login()C³,check_ip()’ljÁ
-
-EƒAƒJƒEƒ“ƒg쬗pCGIƒXƒNƒŠƒvƒg’ljÁ
- EŽ©ŒÈÓ”C•Úׂȉðà–³‚µAŽ¿–₳‚ê‚Ä‚àƒXƒ‹[‚·‚é‰Â”\«—L‚è
- EƒGƒfƒBƒ^‚ÅŠJ‚¢‚½‚ç‚µà–¾—L‚è
- ECGIÝ’u‚ÌŠî–{‚³‚¦‚í‚©‚ê‚Ζâ‘è‚È‚¢‚Í‚¸
- EƒƒbƒZ[ƒW‚͉pŒêA“ú–{Œê—¼‘Ήž
- iAccept-Language‚ªja‚È‚ç“ú–{Œê‚É•ÏŠ·‚µ‚Ü‚·j
- EŠÇ—ŽÒƒpƒXƒ[ƒh‚È‚µ‚Å“®‚‚̂ŃZƒLƒ…ƒŠƒeƒB‚É‚Í’ˆÓ(.htaccess‚È‚Ç„§)
-
- (tool/cgi/)
- addaccount.cgi
- ƒAƒJƒEƒ“ƒg쬗pCGIB
-
-E‚»‚Ì‘¼
- (tool/)
- backup
- castle.txt‚àƒoƒbƒNƒAƒbƒv‚·‚é‚悤‚É
-
---------------------
-//0797 by Ž€_
-
-E‚µC³B
-Ebattle_athena.conf‚Ì€–Ú•ÏXB(lootitem_time íœAitem_first_get_timeA
-item_second_get_timeAitem_third_get_timeAmvp_item_first_get_timeA
-mvp_item_second_get_timeAmvp_item_third_get_time ’ljÁB)
-EƒAƒCƒeƒ€ƒ‹[ƒgŒ ŒÀ‚𳂵‚ŽÀ‘•BʼnUŒ‚‚Å‚Í‚È‚—^‚¦‚½ƒ_ƒ[ƒW‚Ì
-—Ê‚É‚æ‚Á‚ÄŽû“¾Œ ŒÀ‚ð—^‚¦‚é‚悤‚É•ÏXB(ʼnŽû“¾Œ ŒÀ‚̂݃eƒXƒg)
-ƒp[ƒeƒB‚Ìꇃp[ƒeƒB‚ÌÝ’è‚ɇ‚킹‚é•K—v‚ª‚ ‚è‚Ü‚·‚ª‚Ü‚¾ƒpƒPƒbƒg‚ª
-•s–¾‚ÈŠ‚ª‚ ‚éˆ×“¯‚¶ƒp[ƒeƒB‚È‚çŽû“¾‚Å‚«‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B
-Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚̃oƒOC³B(‘½•ªC³‚³‚ꂽ‚Í‚¸...)
-E‘•”õƒXƒNƒŠƒvƒgbonus‚ÉbSplashRange‚ÆbSplashAddRange’ljÁB
-bSplashRange‚ÆbSplashAddRange‚Í•Ší‚Ń_ƒ[ƒW‚ð—^‚¦‚½Žž‚Ì‚Ý”“®A’Êí‚Ì•ŠíUŒ‚ˆµ‚¢‚È‚Ì‚Å”ð‚¯‚ç‚ê‚邪(Flee2‚É‚æ‚銮‘S‰ñ”ð‚Í•s‰Â”\)ƒNƒŠ‚Ío‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ä•Ší‚É‚æ‚éó‘ÔˆÙí‚Í”¶‚µ‚Ü‚¹‚ñB–{ŽIŽd—l‚È‚ñ‚Ä’m‚è‚Ü‚¹‚ñB
-EƒXƒLƒ‹‚Ìd‚Ë’u‚«ˆ—‚ð–{ŽI‚ɇ‚킹‚ÄC³B
-Emapflag‚Ìgvg‚Í‚¢‚‚à‚È‚Á‚Ä‚¢‚é‚킯‚¶‚á‚È‚¢‚Ì‚ÅíœB
-E‚»‚Ì‘¼×‚©‚¢C³B
- athena-start C³B
- (common/)
- mmo.h C³B
- (conf/)
- mapflag.txt C³B
- battle_athena.conf C³B
- (db/)
- const.txt C³B
- item_db.txt C³B
- (doc/)
- conf_ref.txt C³B
- item_bonus.txt C³B
- (map/)
- mob.c
- mob_spawn()Amob_damage()Amob_class_change()Amob_warp() C³B
- mob_delay_item_drop()Amob_delay_item_drop2() C³B
- mobskill_castend_pos() C³B
- pc.c
- pc_takeitem()Apc_dropitem()Apc_equipitem() C³B
- pc_calcstatus()Apc_bonus() C³B
- skill.c
- skill_attack()Askill_additional_effect()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_produce_mix() C³B
- skill_arrow_create()Askill_unit_timer_sub()Askill_castend_pos() C³B
- map.h C³B
- map.c
- map_addflooritem() C³B
- script.c
- buildin_getitem() C³B
- pet.c
- pet_return_egg()Apet_get_egg()Apet_unequipitem() C³B
- battle.h C³B
- battle.c
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack() C³B
- battle_weapon_attack()Abattle_config_read() C³B
-
---------------------
-//0796 by huge
-
-Eׂ©‚¢C³
- (conf/npc/)
- npc_event_valentine.txt C³B
-
- (map/)
- pc.c
- pc_takeitem() C³B
- skill.c
- skill_unit_timer_sub() C³B
-
---------------------
-//0795 by Kalen
-
-EŽG’k341‚Ìnpc_warp_niflheim.txt’ljÁ
- conf/warp/npc_warp_niflheim.txt
-
-Emapflag.txtC³(GVGMAPÝ’è)
- @nosave‚Í‚µ‚Ä‚¢‚Ü‚¹‚ñ
-
-Emap_athena.conf‚ÌC³
- @umbala niflheim“™‚̒ljÁ
- @ƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚ ‚è‚Ü‚·B
-
-EƒoƒŒƒ“ƒ^ƒCƒ“ƒXƒNƒŠƒvƒg’ljÁ
- conf/npc/npc_event_valentine.txt
- @ƒ`ƒ‡ƒR’B‚ÌDrop‚͘M‚Á‚Ä‚¢‚Ü‚¹‚ñB‚¨D‚Ý‚Å‚Ç‚¤‚¼
- @®AŽèì‚èƒ`ƒ‡ƒR‚ðH‚ׂ½‚Æ‚«‚̃GƒtƒFƒNƒg‚Í
- @ÅVƒNƒ‰ƒCƒAƒ“ƒg‚É‚·‚ê‚ÎŒ©‚¦‚Ü‚·B
-
-EGVGScript’ljÁ
- conf/gvg/ˆÈ‰º
- @WeissŽž‘ã‚É쬂µ‚½‚à‚Ì‚ðAthena—p‚ɃRƒ“ƒo[ƒg&‘䎌C³
- @prtg_cas01ˆÈŠO‚ÍŠø‚Ì‚Ý‚Å‚·B
- @GVGDATA‚ÍŽIÄ‹N“®‚ÅÁ–Å‚µ‚Ü‚·B
- @ƒGƒ‰[‚ªo‚é‚悤‚È‚çƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚‚¾‚³‚¢B
- @MobDataAŽ·Ž–Script‚àprtg_cas01‚Ì‚Ý‚Å‚·B(TestScript)
- @‚ ‚‚܂ŃeƒXƒgƒXƒNƒŠƒvƒg‚Å‚·BGVGŽÀ‘•‚ÌŽQl‚É‚Ç‚¤‚¼
-
---------------------
-//0794 by DRG
-
-Eskillused‚ÅŽw’肵‚½IW,QM‚È‚Ç‚É‚Ì‚Á‚Ä‚éŠÔMOBƒXƒLƒ‹‚ðŽg—p‚·‚é‚悤‚É•ÏX
-EƒAƒbƒvƒXƒŒ‚R‚Ì7‚Ìathena-start‚ðˆê‰žŠÜ‚ß‚Æ‚«‚Ü‚µ‚½
-
- athena-start
- (map/)
- skill.c
- skill_unit_onplace() C³B
-
---------------------
-//0793 by huge
-
-EƒT[ƒo[snapshot
-EƒT[ƒo[‚ªƒNƒ‰ƒbƒVƒ…‚·‚éƒoƒO‚ðC³
-E”“®‚¹‚¸‚Éã©‚ªÁ‚¦‚½‚çAÝ’u—pƒgƒ‰ƒbƒv‚ª•Ô‚Á‚Ä‚‚é‚悤‚ÉC³B
-Eƒ‹[ƒgŒ ŒÀ‚ÅA“¯‚¶ƒp[ƒeƒB[‚̃Lƒƒƒ‰‚Í‚·‚®E‚¦‚é‚悤‚ÉC³B
-EƒoƒO•ñƒXƒŒ‚R >>54 ‚̃oƒOC³B
-EƒƒOƒCƒ“Žž‚ɃT[ƒo[‘¤‚ÉID‚ð•\Ž¦‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B
- (login/)
- login.c
- parse_login() C³B
- (conf/npc/)
- npc_event_doll.txt C³B
- (map/)
- skill.c
- skill_unit_timer_sub() C³B
- mob.c
- mob_spawn_dataset() C³B
- mob_damage() C³B
- pc.c
- pc_additem() C³B
-
---------------------
-//0791 by ¹
-
-Eƒ}ƒbƒvƒT[ƒo‚ªƒNƒ‰ƒbƒVƒ…‚·‚éƒoƒOC³B
-EƒCƒO—t‚ðŽg‚Á‚Ä‚àƒWƒFƒ€‚ª•K—v‚É‚È‚é–â‘è‚ðC³B
-EPvP‹§‘—ŠÒŽÀ‘•B
-EPvP‚ŃŠƒUƒŒƒNƒVƒ‡ƒ“‚ªo—ˆ‚È‚©‚Á‚½–â‘è‚ðC³B
-E‚»‚Ì‘¼×‚©‚ÈC³B
- (map/)
- guild.c
- mob.c
- pc.c
- skill.c
-
---------------------
-//0790 by Ž€_
-
-EƒoƒOC³B
- (conf/)
- battle_athena.conf ŒëŽšC³B
- (doc/)
- conf_ref.txt ŒëŽšC³B
- (common/)
- mmo.h C³B
- (map/)
- itemdb.h C³B
- map.h C³B
- skill.c
- skill_check_condition()Askill_use_pos()Askill_unit_onplace() C³B
-
---------------------
-//0789 by huge
-
-EƒhƒƒbƒvƒAƒCƒeƒ€‚Ƀ‹[ƒgŒ ŒÀ‚ðŽÀ‘•B
-Eʼn‚ÉUŒ‚‚µ‚½lˆÈŠO‚ªƒhƒƒbƒvƒAƒCƒeƒ€‚ðE‚¦‚é‚Ü‚Å‚ÌŽžŠÔ‚ðÝ’è‚Å‚«‚é‚悤‚ÉB
- (/conf)
- battle_athena.conf €–ڒljÁB
-
- (/doc)
- conf_doc.txt à–¾’ljÁB
-
- (/map)
- battle.h
- Battle_Config{} C³B
- battle.c
- battle_config_read() C³B
- itemdb.h
- item_data {} C³B
- map.h
- flooritem_data {} C³B
- mob_data {} C³B
- map.c
- map_addflooritem() C³B
- mob.c
- delay_item_drop{} C³B
- mob_spawn() C³B
- mob_damage() C³B
- mob_delay_item_drop() C³B
- mob_warp() C³B
- pc.c
- pc_takeitem() C³B
-
---------------------
-//0788 by ‚ ‚ä‚Ý
-
-EcardƒXƒLƒ‹‚̈—H‚ðC³B
-E@allskillƒRƒ}ƒ“ƒh‚ÌÄC³B
-
- (map/)
- pc.c
- pc_skill() C³B
- pc_allskillup() C³B
-
---------------------
-//0787 by ‚Û‚Û‚Û
-
-Eƒyƒbƒg‚É‚àmob_avail.txt‚ÌÝ’è‚ð“K—p‚·‚é‚悤‚É‚µ‚½B
-EMOBƒXƒLƒ‹‚Ìskillused‚Åval1‚É0‚ð“ü‚ê‚é‚Æ‚ ‚ç‚ä‚éƒXƒLƒ‹‚ɑ΂µ‚Ä”“®‚·‚é‚悤‚É‚µ‚½B
-Eskillused‚Å”“®‚µ‚½ƒXƒLƒ‹‚Ì‘ÎÛ‚ðA”“®‚³‚¹‚½PC‚É‚·‚é‚©‚Ç‚¤‚©Ý’è‚Å‚«‚é‚悤‚É‚µ‚½(‘ÎIWƒnƒ‚È‚ÇH)B
- (/map)
- clif.c
- clif_pet0078()Aclif_pet007b()C³B
- mob.c
- mobskill_use()C³B
- skill.c
- skill_attack() Askill_castend_damage_id()C³B
- battle.h
- battle.c
- battle_config_read()C³B
-
---------------------
-//0786 by huge
-
-EBDSC³
- ‘O‚©‚ç‚«”ò‚΂µ‚Äs‚‚Æ—Ç‚‚È‚¢‚©‚à‚µ‚ê‚È‚¢‚Ì‚ÅAŒã‚ë‚©‚爗
- —LŒø”͈͂ÌC³
-
- (/map)
-
- skill.h
- skill.c
- skill_castend_damage_id() C³B
- skill_castend_nodamage_id() C³B
- skill_brandishspear_first() C³B
- skill_brandishspear_dir() C³B
-
---------------------
-//0785 by Ž€_
-
-E–{ŽI‚ɇ‚킹‚ÄC³B(ŠØ‘ˆÆ‚̃pƒbƒ`notice‚ðŽQl‚µ‚ÄC³‚µ‚Ü‚µ‚½B)
-EBB‚ÆBS‚̃LƒƒƒXƒeƒBƒ“ƒOŽžŠÔ‚ð0.7•b‚É‚µ‚ăfƒBƒŒƒC‚Í0‚É•ÏXB
-Eghost‚Ì•Ï‚í‚è‚Ƀ}ƒbƒvˆÚ“®Œã‚Ì–³“GŽžŠÔ‚ðÝ’èB‚±‚ÌŽžŠÔ‚ÌŠÔ‚Í‚Ç‚ñ‚ÈUŒ‚‚àŽó‚¯‚È‚¢‚ªˆÚ“®‚âUŒ‚AƒXƒLƒ‹Žg—pAƒAƒCƒeƒ€Žg—p‚Å‚±‚ÌŽžŠÔ‚Í‚È‚‚È‚è‚Ü‚·BƒV[ƒYƒ‚[ƒh‚Å‚Í‚±‚Ì–³“GŽžŠÔ‚ð2”{‚Æ‚µ‚Ä“K—pB
-EƒV[ƒYƒ‚[ƒh‚ÅŽ€‚ñ‚Å‚àŒoŒ±‚ªŒ¸‚ç‚È‚¢‚悤‚ÉC³B(mapflag‚Ìnopenalty‚ðÝ’è‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB)
-EƒXƒLƒbƒh‚ÅŠŠ‚ׂ鋗—£‘‰ÁB
-EŠù‚É’¾–Ù‚É‚©‚©‚Á‚Ä‚é‘ÎۂɃŒƒbƒNƒXƒfƒBƒr[ƒi‚ðŽg‚¤‚Æ’¾–Ù‚ª‰ðœ‚³‚ê‚é‚悤‚É•ÏXB
-EŽô‚¢‚É‚©‚©‚é‚ƈړ®‘¬“x‚àŒ¸‚é‚悤‚ÉC³B
-Ebattle_athena.conf‚É€–Ú•ÏXB
-EƒXƒLƒ‹‚Ìd‚Ë’u‚«‚ð”»’fˆ—‚ð‚µ•ÏXB
-EHP‚ÌŽ©‘R‰ñ•œŽžŠÔ‚ª4•b‚Å‚Í‚È‚6•b‚¾‚Æ‚í‚©‚Á‚½‚̂ŃfƒtƒHƒ‹ƒgC³‚Æbattle_athena.confC³B
-E‚»‚Ì‘¼×‚©‚¢C³‚âƒoƒOC³B
-E–w‚ǃeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB
- (conf/)
- atcommand_athena.conf C³B
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (db/)
- cast_db.txt C³B
- (map/)
- atcommand.c C³B
- clif.c
- clif_mob0078()Aclif_mob007b()Aclif_skill_estimation() C³B
- clif_mob_class_change()Aclif_parse_WalkToXY() C³B
- clif_parse_ActionRequest()Aclif_parse_LoadEndAck() C³B
- clif_parse_UseItem()Aclif_parse_UseSkillToId() C³B
- clif_parse_UseSkillToPos()Aclif_parse_UseSkillMap() C³B
- mob.h C³B
- mob.c
- mob_get_viewclass()Amob_attack()Amob_target() C³B
- mob_ai_sub_hard_activesearch()Amob_ai_sub_hard() C³B
- mobskill_castend_id()Amobskill_castend_pos() C³B
- skill.h C³B
- skill.c
- skill_can_produce_mix()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_castend_id() C³B
- skill_castend_pos()Askill_use_id()Askill_readdb() C³B
- skill_check_condition()Askill_unit_onplace()Askill_unitsetting() C³B
- skill_additional_effect()Askill_check_unit_range() C³B
- skill_check_unit_range_sub()Askill_status_change_end() C³B
- skill_status_change_start() C³B
- pc.h
- pc.c
- pc_ghost_timer()Apc_setghosttimer()Apc_delghosttimer() íœB
- pc_gvg_invincible_timer() -> pc_invincible_timer()‚É•ÏXB
- pc_setgvginvincibletimer() -> pc_setinvincibletimer()‚É•ÏXB
- pc_delgvginvincibletimer() -> pc_delinvincibletimer()‚É•ÏXB
- pc_authok()Apc_attack_timer()Apc_calcstatus() C³B
- pc_setrestartvalue()Apc_damage()Apc_allskillup() C³B
- do_init_pc() C³B
- battle.h C³B
- battle.c
- battle_config_read()Abattle_weapon_attack()Abattle_check_target() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_get_speed() C³B
- map.h C³B
- map.c
- map_quit() C³B
-
---------------------
-//0784 by ‚ ‚ä‚Ý
-
-EƒJ[ƒhƒXƒLƒ‹‚ðŠo‚¦‚Ä‚¢‚éó‘Ô‚Å@allskillƒRƒ}ƒ“ƒh‚ðŽg—p‚·‚é‚Æmap-server‚ª–\‘–‚·‚é–â‘è‚ðC³B
-
- (map/)
- pc.c
- pc_allskillup() C³B
-
---------------------
-//0783 by huge
-
-Eƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒA‚ÌC³
- ”͈͎w’èAŽÎ‚ß‚ÌÛ‚ÌŠiŽq”͈ÍAUŒ‚—ÍŒvŽZ
- ‘½•ª‡‚Á‚Ä‚é‚ÆŽv‚¤‚ñ‚Å‚·‚¯‚ÇAƒCƒ}ƒCƒ`Ž©M‚ªŽ‚Ä‚È‚¢EEE
- (ŽQl)‚Ý‚·‚Ƃꑃ -ƒXƒLƒ‹ŠÖ˜A“¤î•ñ
-EƒXƒyƒ‹ƒuƒŒƒCƒJ[‚ð‚¿‚å‚Á‚ÆC³
-Eƒvƒƒ{ƒbƒN‚ðMVPmob‚ÉŒø‚©‚È‚¢‚悤C³
-EƒoƒO•ñƒXƒŒ‚R >>8 ‚Å•ñ‚³‚ꂽ‚à‚Ì‚ÌŽæ‚èž‚Ý
-
- (/db)
- create_arrow.txt C³B
- skill_db.txt C³B
-
- (/map)
- battle.c
- battle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack() C³B
-
- skill.h
- skill.c
- skill_brandishspear_first() ’ljÁB
- skill_brandishspear_dir() ’ljÁB
- skill_castend_nodamage_id() C³B
- skill_castend_damage_id() C³B
- skill_unit_group() C³B
-
---------------------
-//0782 by ‚Ò‚´‚Ü‚ñ
-E@allskillƒRƒ}ƒ“ƒh‚ÌŽg—pðŒ‚ªŽQÆ‚³‚ê‚Ä‚¢‚È‚©‚Á‚½ƒoƒOC³
- (/map)
- atcommand.c
- atcommand() C³B
-
---------------------
-//0781 by Chunglyeng
-Eƒoƒh, ƒ_ƒ“ƒT[‰¹Šy‹ïŒ»
- (/map)
- skill.c C³B
-
---------------------
-//0780 by reia
-EƒyƒRƒyƒR‚Ì—‘‚È‚Ç‚ª›z‰»‚·‚é‚ƃmƒr‚É‚È‚Á‚Ä‚µ‚Ü‚¤–â‘èC³B
-EGMƒRƒ}ƒ“ƒhu@kickallv‚ª‰½Žž‚ÌŠÔ‚É‚©–³Œø‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ÅC³B
-
- (/conf)
- atcommand_athena.conf C³B
- (db/)
- mob_skill_db.txt C³B
- (map/)
- atcommand.c
- atcommand_config_read() C³B
-
---------------------
-//0779 by ‚ ‚ä‚Ý
-
-E‘SƒXƒLƒ‹Žæ“¾ƒRƒ}ƒ“ƒh‚̒ljÁB
- EGM‚Å‘SƒXƒLƒ‹‚ðŠo‚¦‚ç‚ê‚é‚悤‚É‚µ‚Ä‚¢‚éꇂâAƒXƒLƒ‹‚Ì”‚ª‘½‚¢E‹Æ‚͈ꕔ‚̃XƒLƒ‹•\Ž¦‚ª‚¨‚©‚µ‚‚È‚è‚Ü‚·B‚»‚Ìꇂ̓ŠƒƒO‚µ‚ĉº‚³‚¢B
- @allskill : Œ»Ý‚ÌE‹Æ‚Ŏ擾‰Â”\‚È‘SƒXƒLƒ‹‚ðŽæ“¾‚·‚éB(ƒNƒGƒXƒgƒXƒLƒ‹ŠÜ‚Þ)
-
- (conf/)
- battle_athena.conf C³B
- help.txt C³B
- (map/)
- atcommand.h C³B
- atcommand.c
- atcommand() C³B
- pc.h C³B
- pc.c
- pc_allskillup() ’ljÁB
- (doc/)
- conf_ref.txt C³B
- help.txt C³B
-
---------------------
-//0778 by huge
-
-EƒXƒyƒ‹ƒuƒŒƒCƒJ[‚ÌC³
- EƒLƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚Ì–³‚¢ƒXƒLƒ‹‚É‚ÍŒø‚©‚È‚¢‚悤‚ÉC³B
- EŽg—p‚³‚ꂽ‘ŠŽè‚ÌÁ”ïSP‚ÌC³B
-
- (map/)
- skill.c
- skill_castend_nodamage_id() C³B
-
---------------------
-//0777 by ‚Ò‚´‚Ü‚ñ
-
-EƒMƒ‹ƒhUé퉼ŽÀ‘•
-@EŠî–{“I‚È•”•ª‚¾‚¯‚µ‚©ŽÀ‘•‚µ‚Ä‚È‚¢ãA‚¢‚‚‚©‚Ì“_‚Å–{ŽI‚Æ‘Šˆá‚ª‚ ‚è‚Ü‚·B
-@EUéíŠJŽn‚ÆI—¹‚Í@ƒRƒ}ƒ“ƒh‚Ås‚¢‚Ü‚·
- @gvgstart : UéíŠJŽn
- @gvgend : UéíI—¹
-@Ebattle_athena.conf‚É€–ڒljÁB
- (char/)
- int_guild.c
- inter_guild_init()Ainter_guild_readdb()Ainter_guild_save() C³B
- inter_castle_save_sub()Amapif_guild_castle_info() ’ljÁB
- mapif_guild_change_castle()Amapif_parse_GuildCastleInfo() ’ljÁB
- mapif_parse_GuildChangeCastle() ’ljÁB
- inter.c
- inter_config_read() C³B
- inter_send_packet_length[]Ainter_recv_packet_length[] C³B
- int_guild.h C³B
- (map/)
- atcommand.c
- atcommand()Aatcommand_config_read() C³B
- battle.c
- battle_config_read() C³B
- guild.c
- guild_castle_search()Aguild_read_castledb()’ljÁB
- do_init_guild() C³B
- guild_gvg_init()Aguild_gvg_final()Aguild_gvg_final_sub() ’ljÁB
- guild_gvg_eliminate()Aguild_gvg_eliminate_sub() ’ljÁB
- guild_gvg_eliminate_timer()Aguild_gvg_empelium_pos() ’ljÁB
- guild_gvg_break_empelium() ’ljÁB
- intif.c
- intif_parse()Apacket_len_table[] C³B
- intif_parse_GuildCastleInfo()Aintif_parse_GuildCastleChange() ’ljÁB
- intif_guild_castle_info()Aintif_guild_castle_change() ’ljÁB
- mob.c
- mob_damage() C³B
- atcommand.h C³B
- battle.h C³B
- guild.h C³B
- intif.h C³B
- mob.h C³B
- (common/)
- mmo.h C³B
- (conf/)
- battle_athena.conf C³B
- inter_athena.conf C³B
- msg_athena.conf C³B
- atcommand_athena.conf C³B
- (db/)
- castle_db.txt ’ljÁB
---------------------
-//0776 by Ž€_
-
-ENPCƒXƒLƒ‹›z‰»ŽÀ‘•B(mob_skill_db.txt‚Ìval1‚ðŽg‚¢‚Ü‚·B)
-Emob_skill_db.txt‚ÌŠm—¦‚ð番—¦‚©‚ç–œ•ª—¦‚É•ÏXB(‚½‚¾mob_skill_db.txt‚ÌC³‚Í‚µ‚Ä‚Ü‚¹‚ñB)
-Eƒ‚ƒ“ƒXƒ^[‚ªƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚·‚é–â‘èC³B(C³‚³‚ꂽ‚©‚Ç‚¤‚©‚ÌŽ©M‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...)
-E‚»‚Ì‘¼×‚©‚¢C³B
- (db/)
- mob_skill_db.txt C³B
- skill_db.txt C³B
- (map/)
- map.h C³B
- mob.h C³B
- mob.c
- mob_spawn_dataset()Amob_spawn() C³B
- mob_changestate()Amobskill_use() C³B
- mob_class_change() ’ljÁB
- npc.c
- npc_parse_mob() C³B
- battle.c
- battle_check_target() C³B
- clif.h C³B
- clif.c
- clif_mob_class_change() ’ljÁB
- skill.c
- skill_castend_nodamage_id() C³B
-
---------------------
-//0775 by Ž€_
-
-EƒV[ƒYƒ‚[ƒh‚̈—C³B
-EƒV[ƒYƒ‚[ƒh‚Ì–³“GŽžŠÔ‚ÌŠÔ‚Í‚Ç‚ñ‚ÈUŒ‚‚àŽó‚¯‚È‚¢‚悤‚ÉC³B
-EƒV[ƒYƒ‚[ƒh‚Ì–³“GŽžŠÔ‚ªŽžŠÔØ‚ê‚É‚È‚é‘O‚ɂ͉𜂳‚ê‚È‚¢‚悤‚ÉC³B
-Ebattle_athena.conf‚É€–ڒljÁB
-E@hide‚â/hide‚É‚æ‚éGMƒnƒCƒfƒBƒ“ƒO’†‚ÍŽ©•ª‚ÉŽ©“®Žg—p‚³‚ê‚éƒXƒLƒ‹ˆÈŠO‚̃XƒLƒ‹Žg—p‚âUŒ‚‚ðŽó‚¯‚È‚¢‚悤‚ÉC³B
-EƒnƒCƒfƒBƒ“ƒO’†’n‘®«ƒXƒLƒ‹ˆÈŠO‚ÌUŒ‚‚ðŽó‚¯‚È‚¢‚悤‚ÉC³B(ƒgƒ‰ƒbƒv‚âƒNƒ@ƒOƒ}ƒCƒA“™‚̃XƒLƒ‹‚͉e‹¿‚ðŽó‚¯‚é‚©‚Ç‚¤‚©•s–¾‚È‚Ì‚Å¡‚Ü‚Å‚Æ“¯‚¶‚悤‚ɉe‹¿‚ðŽó‚¯‚é‚悤‚Ɉ—B)
-Eƒgƒ“ƒlƒ‹ƒhƒ‰ƒCƒu‚̈ړ®‘¬“x‚ð–{ŽI‚ɇ‚킹‚Ü‚µ‚½B
-E‚»‚Ì‘¼ƒoƒOC³‚âׂ©‚¢C³B(–w‚Ç–¢ƒeƒXƒg)
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_check_target()Abattle_calc_damage() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_calc_misc_attack() C³B
- battle_config_read()Abattle_weapon_attack() C³B
- pc.h C³B
- pc.c
- do_init_pc()Apc_authok() C³B
- pc_attack()Apc_attack_timer() C³B
- pc_setgvg_ghosttimer()Apc_delgvg_ghosttimer()‚ð
- pc_setgvginvincibletimer()Apc_delgvginvincibletimer()‚ÉC³B
- pc_gvg_invincible_timer() ’ljÁB
- pc_attack_timer()Apc_steal_item()Apc_calcstatus() C³B
- clif.c
- clif_parse_ActionRequest()Aclif_parse_UseItem() C³B
- clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B
- clif_parse_UseSkillMap()Aclif_parse_WalkToXY() C³B
- map.h C³B
- map.c
- map_quit() C³B
- mob.c
- mob_attack()Amob_target()Amob_ai_sub_hard_activesearch() C³B
- mob_ai_sub_hard_mastersearch()Amob_ai_sub_hard() C³B
- mob_damage()Amobskill_castend_id()Amobskill_castend_pos() C³B
- skill.c
- skill_castend_damage_id()Askill_attack() C³B
- skill_castend_id()Askill_castend_pos()Askill_castend_map() C³B
-
---------------------
-//0774 by Ž‚Žqo^.^o
-EMonk job bouns C³
-EƒhƒPƒr C³
-(db/)
- job_db2.txt C³
- pet_db.txt C³
-
---------------------
-//0773 by ¹
-
-Eׂ©‚¢ƒoƒOC³
- (map/)
- skill.c C³B
- battle.c C³B
-
---------------------
-//0772 by ‚Ò‚´‚Ü‚ñ
-
-EƒV[ƒYƒ‚[ƒh‰º‚ňȉº‚Ì“_‚ðC³
-@E˜A‘±‚µ‚ÄUŒ‚‚Å‚«‚È‚‚È‚Á‚Ä‚¢‚½ƒoƒOC³
-@Eƒ_ƒ[ƒWŒyŒ¸—¦‚ª³‚µ‚Ý’è‚Å‚«‚È‚©‚Á‚½ƒoƒOC³
-@E–³“GŽžŠÔŽÀ‘•Bbattle_athena.conf‚Ìgvg_ghost_time‚ÅÝ’è‚Å‚«‚Ü‚·
-
-EƒnƒCƒfƒBƒ“ƒO‚Å–‚–@UŒ‚“™‚ð‰ñ”ð‚Å‚«‚È‚©‚Á‚½ƒoƒOC³
-
- (map/)
- skill.c
- skill_attack()Askill_unit_onplace()Askill_check_condition() C³B
- clif.c
- clif_parse_ActionRequest()Aclif_parse_UseItem() C³B
- clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B
- clif_parse_UseSkillMap()Aclif_parse_WalkToXY() C³B
- pc.c
- do_init_pc()Apc_authok() C³B
- pc_attack()Apc_attack_timer() C³B
- pc_setgvg_ghosttimer()Apc_delgvg_ghosttimer() ’ljÁB
- pc_gvg_ghost_timer() ’ljÁB
- map.c
- map_quit() C³
- battle.c
- battle_config_read()Abattle_weapon_attack() C³B
- battle.h C³B
- pc.h C³B
-
---------------------
-//0771 by huge
-
-EƒXƒyƒ‹ƒuƒŒƒCƒJ[ŽÀ‘•
- (map/)
- skill.c
- skill_castend_nodamage_id() C³B
- (db/)
- skill_db.txt C³B
-
---------------------
-//0770 by ¹
-
-E” Œn‚̈—•ÏX
-E‚»‚Ì‘¼ƒoƒOC³
- (map/)
- battle.c C³B
- itemdb.c C³B
- mob.c C³B
- script.c C³B
-
---------------------
-//0769 by Ž€_
-
-EƒV[ƒYƒ‚[ƒhC³B
-E–³“GŽžŠÔ‚Ì•û‚Íghost_timerˆÈŠO‚Ì•û–@‚ÅŽÀ‘•‚·‚é‚‚à‚è‚È‚Ì‚Å¡‚Í휂µ‚Ä‚¢‚Ü‚·B
-EƒXƒNƒŠƒvƒgviewpoint‚ª³‚µ‚“®ì‚µ‚È‚¢–â‘èC³B
-Eproduce_db.txt‚ðC³B(“û”«‚Ískill_require_db.txt‚ň—‚µ‚Ä‚¢‚Ü‚·B‚»‚µ‚ăAƒCƒeƒ€‚Ì”‚ð0‚É‚·‚ê‚ÎÁ–Õ‚Í‚³‚ê‚È‚¢‚¯‚Çì‚鎞•K—v‚ȃAƒCƒeƒ€‚É‚È‚è‚Ü‚·B)
-E‚»‚Ì‘¼×‚©‚¢C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (db/)
- produce_db.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_calc_damage()Abattle_calc_weapon_attack() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_calc_misc_attack()Abattle_check_target()Abattle_config_read() C³B
- skill.c
- skill_unit_onplace()Askill_castend_damage_id()Askill_castend_id() C³B
- skill_use_id()Askill_use_pos()Askill_check_condition() C³B
- skill_can_produce_mix() C³B
- pc.c
- pc_attack_timer()Apc_attack()Apc_isUseitem()Apc_delitem() C³B
- pc_damage() C³B
- mob.c
- mob_damage()Amobskill_use_id()Amobskill_use_pos() C³B
- script.c
- buildin_viewpoint()Abuildin_emotion() C³B
- makefile C³B
-
---------------------
-//0768 by ‚Ò‚´‚Ü‚ñ
-
-EƒV[ƒYƒ‚[ƒh‰º‚ÅAˆÈ‰º‚Ì“_‚ðC³
-@EŽ€–S‚µ‚½‚çƒZ[ƒuƒ|ƒCƒ“ƒg‚É‹§‘—ŠÒ‚·‚é‚悤‚ÉC³
-@E“Á’è‚̃AƒCƒeƒ€‚ªŽg—p‚Å‚«‚È‚¢‚悤‚ÉC³(ƒAƒ“ƒeƒBƒyƒCƒ“ƒƒ“ƒgEƒnƒG‚̉H)
-@E“Á’è‚̃XƒLƒ‹‚ªŽg—p‚Å‚«‚È‚¢‚悤‚ÉC³(ƒ[ƒvƒ|[ƒ^ƒ‹EƒoƒbƒNƒXƒeƒbƒvEƒCƒ“ƒeƒBƒ~ƒfƒCƒgEƒeƒŒƒ|[ƒgEƒCƒ“ƒfƒ…ƒA)
-@E“¯–¿ƒMƒ‹ƒh‚É‚Í–³ðŒ‚ÅUŒ‚‚Å‚«‚È‚¢‚悤‚ÉC³
-@E“G‘΃Mƒ‹ƒh‚É‚Í–³ðŒ‚ÅUŒ‚‚Å‚«‚é‚悤‚ÉC³
-@E–³“GŽžŠÔ’†‚Í—¼ŽÒ‚Æ‚àUŒ‚‚Å‚«‚È‚¢‚悤‚ÉC³
-
-ƒ\[ƒXƒŒƒxƒ‹‚ŃeƒŒƒ|AƒnƒG‚ÌŽg—p‚ð‹Ö‚¶‚Ä‚¢‚邽‚ßUéíMAP‚Ìmapflag‚Énoteleport‚Í•K—v‚ ‚è‚Ü‚¹‚ñ
-‚Ü‚½A–³“GŽžŠÔ‚Íghost_timerˆË‘¶‚Å‚·B‚‚܂èbattle_athena.conf“à‚Ìghost_time‚ª–³“GŽžŠÔ‚É‚È‚è‚Ü‚·
-
- (map/)
- skill.c
- skill_castend_damage_id()Askill_castend_id() C³
- skill_check_condition() C³
- pc.c
- pc_damage() C³
- battle.c
- battle_weapon_attack() C³
-
---------------------
-//0767 by huge
-
-Eƒtƒ@[ƒ}ƒV[‚ÅA»‘¢‚Ì‘‚ªŒ¸‚é–â‘è‚ðC³
-E•Ší»‘¢DB‚ÅA‚¢‚‚‚©”²‚¯‚Ä‚¢‚½‚Ì‚ðC³
-
- (map/)
- skill.c C³B
- (db/)
- produce_db.txt C³B
-
---------------------
-//0766 by ‚Ò‚´‚Ü‚ñ
-
-EƒV[ƒYƒ‚[ƒh‰º‚ÅAˆÈ‰º‚Ì“_‚ðC³
-@E³‹KƒMƒ‹ƒh³”F‚ª‚È‚¢‚ƃGƒ“ƒyƒŠƒEƒ€‚ÉUŒ‚‚ªŒø‚©‚È‚¢‚悤‚ÉC³
-@EƒGƒ“ƒyƒŠƒEƒ€‚ɑ΂·‚éƒXƒLƒ‹UŒ‚‚ªŒø‚©‚È‚¢‚悤‚ÉC³
-@E–‚–@UŒ‚A‰“‹——£UŒ‚A㩂̃_ƒ[ƒW•â³‚ðŽÀ‘•
-@@–‚–@UŒ‚F50%@‰“‹——£UŒ‚F75%@ã©F60%
-@@‚±‚ê‚Íl‚É‚àƒGƒ“ƒyƒŠƒEƒ€‚É‚à“K—p‚³‚ê‚Ü‚·
- (map/)
- battle.c
- #include "guild.h" ’ljÁ
- battle_calc_damage()Abattle_calc_weapon_attack() C³
-
---------------------
-//0765 by ‚Ò‚´‚Ü‚ñ
-
-E‘•”õ§ŒÀŽÀ‘•
-E‘•”õ§ŒÀ‚ª‚©‚©‚Á‚½‘•”õ•i‚ÍŠY“–ƒ}ƒbƒv‚Ɉړ®‚µ‚½Û‚ÉŽ©“®“I‚É‘•”õ‚ªŠO‚êA
-@Ä‘•”õ‚à‚Å‚«‚È‚‚È‚è‚Ü‚·
-E§ŒÀ‚Å‚«‚é‚Ì‚Í‘•”õ•i‚Ì‚Ý‚Å‚·BƒJ[ƒh—ނͧŒÀ‚Å‚«‚Ü‚¹‚ñ
- (db/)
- item_noequip.txt ’ljÁ
- (map/)
- itemdb.h C³
- itemdb.c
- do_init_itemdb()Aitemdb_search() C³
- itemdb_read_noequip ’ljÁ
- pc.c
- pc_checkitem()Apc_isequip() C³
-
---------------------
-//0764 by Ž€_
-
-E‘S‚Ẵ_ƒ[ƒW‚ª1‚É‚È‚é–hŒä‚ð10000‚©‚ç1000000‚É•ÏXB
-Ebattle_athena.conf‚É€–ڒljÁB
-Eƒ‚ƒ“ƒXƒ^[‚©‚çŒoŒ±’l‚ð–Ⴄˆ—‚ð–{ŽI‚̂悤‚ÉC³B
-EƒXƒLƒ‹ƒXƒ[ƒ|ƒCƒYƒ“ŽÀ‘•B
-EŒðŠ·ƒoƒOC³B
-E‚»‚Ì‘¼×‚©‚¢C³B
-EƒeƒXƒg‚Í–w‚Ç‚µ‚Ä‚Ü‚¹‚ñB
- (db/)
- mob_db.txt C³B
- skill_db.txt C³B
- (doc/)
- conf_ref.txt C³B
- db_ref.txt C³B
- (conf/)
- battle_athena.conf C³B
- (map/)
- makefile C³B
- battle.h C³B
- battle.c
- battle_get_def()Abattle_get_mdef() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_calc_misc_attack()Abattle_config_read() C³B
- skill.h C³B
- skill.c
- skill_castend_nodamage_id()Askill_castend_damage_id() C³B
- skill_check_condition()Askill_status_change_timer() C³B
- skill_status_change_end()Askill_status_change_start() C³B
- skill_additional_effect()Askill_produce_mix()Askill_unit_timer_sub() C³B
- skill_check_unit_sub()‚ð skill_check_unit_range_sub()‚É•ÏXB
- skill_check_unit_range() ’ljÁB
- skill_castend_pos()Askill_area_sub_count() C³B
- mob.c
- mobskill_castend_pos()Amob_damage() C³B
- clif.c
- clif_parse_TradeRequest()Aclif_parse_TradeAck() C³B
- clif_parse_TradeAddItem()Aclif_parse_TradeOk() C³B
- clif_parse_TradeCansel()Aclif_parse_TradeCommit() C³B
- map.h C³B
- map.c
- do_init() C³B
- pc.c
- pc_calc_skilltree()Apc_calcstatus() C³B
- tarde.c
- trade_tradeack() C³B
-
---------------------
-//0763 by ŒÓ’±—–
-
-EƒT[ƒo[snapshot
- ƒtƒHƒ‹ƒ_‚ð®—‚µ‚½‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
- ˆÈ‘O‚̃Z[ƒuƒf[ƒ^(account.txt‚È‚Ç)‚ÍsaveƒtƒHƒ‹ƒ_‚É’u‚¢‚Ä‚‚¾‚³‚¢
- cnfƒtƒ@ƒCƒ‹‚ÍŠeŽíƒtƒ@ƒCƒ‹‚̃pƒX‚ª•Ï‚í‚Á‚Ä‚é‚Ì‚ÅA
- ‚±‚̌¢‚à‚Ì‚ðƒRƒs[‚Å‚Í‚È‚AV‚µ‚‘‚«Š·‚¦‚È‚¨‚µ‚Ä‚‚¾‚³‚¢B
-
-EƒtƒHƒ‹ƒ_®—
- confƒtƒHƒ‹ƒ_
- NPCŠÖ˜A‚ðconf/npc/AMOB”z’uŠÖ˜A‚ðconf/mob/AWARPŠÖ˜A‚ðconf/warp/
- ƒeƒXƒg‚âƒTƒ“ƒvƒ‹‚ðconf/sample/‚Ɉړ®‚µ‚Ü‚µ‚½B
- dbƒtƒHƒ‹ƒ_
- sampleƒtƒHƒ‹ƒ_‚Ì‚¤‚¿dbŠÖŒW‚ð db/sample‚Ɉړ®‚µ‚Ü‚µ‚½B
- help.txt/motd.txt
- confƒtƒHƒ‹ƒ_‚Ɉړ®‚µ‚Ü‚µ‚½
- account.txt/athena.txt/guild.txt/party.txt/pet.txt/storage.txt
- saveƒtƒHƒ‹ƒ_‚Ɉړ®‚µ‚Ü‚µ‚½
- tool/backup
- ƒpƒXC³
-
-Emotd.txt/help.txt‚̃pƒX‚ðmap_athena.cnf‚ÅŽw’è‚Å‚«‚é‚悤‚É
- map.h/map.c/atcommand.c/atcommand.hC³
-
-Eathena-start‚ÉrestartƒIƒvƒVƒ‡ƒ“’ljÁ
- ./athena-start restart‚ÅAthena‚ðÄ‹N“®‚µ‚Ü‚·
-
---------------
-//0761 by ‚Û‚Û‚Û
-
-EMOB‚ÌMDEF‚É10000ˆÈãŽw’肵‚Ä‚àƒtƒ@ƒCƒAƒsƒ‰[‚Å•’ʂɃ_ƒ[ƒW‚ð—^‚¦‚Ä‚µ‚Ü‚¤‚Ì‚ðC³B
- (map/)
- battle.c
-
---------------
-//0760 by ll3y
-
-E•¶Žš‰»‚¯C³
- (map/)
- script.c
-
---------------
-//0759 by Ž‚Žqo^.^o
-EƒXƒsƒAƒNƒCƒbƒPƒ“ C³
-EDancer skill tree C³
-(db/)
- cast_db.txt C³
- skill_tree.txt C³
-
---------------
-//0758 by hack
-EPut GM messages into msg_table which is loaded from msg_athena.conf.
-(Easy to translate into other language)
- (map/)
- atcommand.h
- atcommand.c
- msg_conf_read() Read conf/msg_athena.conf
- Put messages into msg_table which is loaded from msg_athena.conf.
- map.c
- do_init()
- (conf/)
- msg_athena.conf Store the message of atcommand, easy to translate into other language.
-
---------------
-//0757 by Michael
- (map/)
- script.c
- buildin_viewpoint()
- Fix packet sequence of viewpoint command.
-
---------------
-//0756 by ll3y
-
-EInterix(Windows Services for Unix 3.5)‚ŃRƒ“ƒpƒCƒ‹‚ª’Ê‚é‚悤‚ÉC³
- Interop Systems(http://www.interopsystems.com/)‚æ‚ègmake‚Æzlib‚ðŽæ‚Á‚Ä‚‚é‚©A
- Ž©‘O‚ÅInterix—p‚ð—pˆÓ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
- (common/)
- socket.h C³B
-
---------------
-//0755 by Ž€_
-
-EƒoƒOC³‚Æà–¾’ljÁB(•ñ‚³‚ꂽ‚Ì‚Í‘½•ª‘S‚ÄC³‚³‚ꂽ‚Ì‚©‚Æ...)
-E0751‚ŃXƒLƒ‹‚Ìő僌ƒxƒ‹‚ð100‚Ü‚ÅÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B
-Ecast_db.txt‚É“ü‚Á‚Ä‚¢‚éó‘ÔˆÙí‚̈ێŽžŠÔ‚ÍŽ©•ª‚ª“K“x‚É“ü‚ꂽ•¨‚Å‚·B–{ŽI‚ÌŽd—l‚È‚ñ‚Ä’m‚è‚Ü‚¹‚ñ‚Ì‚ÅB
- (doc/)
- db_ref.txt C³B
- (db/)
- cast_db.txt C³B
- skill_db.txt C³B
- (map/)
- skill.h C³B
- skill.c
- skill_check_unit_sub()Askill_castend_id()Askill_use_id() C³B
- skill_status_change_end()Askill_status_change_start() C³B
- skill_castend_map() C³B
- mob.c
- mobskill_castend_id()Amobskill_castend_pos() C³B
- pc.c
- pc_calcstatus() C³B
- battle.c
- battle_calc_pc_weapon_attack()
- battle_calc_mob_weapon_attack()
- battle_calc_magic_attack()
-
---------------
-//0754 by Ž‚Žqo^.^o
-(db/)
- cast_db.txt C³
-
---------------
-//0753 by ¹
-
-EIW‚Ì”¶ƒ|ƒCƒ“ƒg‚ðŽw’è‚·‚é‚ƃƒeƒI‚̃GƒtƒFƒNƒg‚ªˆêØo‚È‚‚È‚é
-@–â‘肪•œŠˆ‚µ‚Ä‚¢‚½‚Ì‚ÅC³B
-Ewarning‚ðo‚È‚¢‚悤‚ɃR[ƒhC³B
- (map/)
- skill.c
- skill_castend_pos2() C³B
- chrif.h
-
---------------
-//0752 by ‚Ò‚´‚Ü‚ñ
-
-EchangesexƒXƒNƒŠƒvƒgŽÀ‘•B«•Ê‚𔽓]‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·
-@«•Ê”½“]¬Œ÷Œã‚ÍA‚»‚̃vƒŒƒCƒ„[‚Í‹§“I‚ÉÚ‘±‚ðØ’f‚³‚ê‚Ü‚·
-@‚Ü‚½Aƒ_ƒ“ƒT[Eƒo[ƒh‚̌݊·«‚Í‚©‚È‚è‰ö‚µ‚¢‚Å‚·
-@ƒ_ƒ“ƒT[Eƒo[ƒh‚ªƒXƒƒbƒg“à‚Ç‚±‚©‚É‹‚éƒAƒJƒEƒ“ƒg‚Å‚Ì”½“]‚ÍAˆÈ‰º‚Ì“_‚É’ˆÓ‚µ‚ĉº‚³‚¢
-@E•K‚¸”½“]‚³‚¹‚é‘O‚É‚»‚̃Lƒƒƒ‰ƒNƒ^[‚ðƒXƒLƒ‹ƒŠƒZƒbƒg‚µ‚Ä‚‚¾‚³‚¢
-@@‚»‚Ì‚Ü‚Ü”½“]‚³‚¹‚é‚ÆA‹¤’Ê‚·‚éƒXƒLƒ‹(ŠyŠí‚Ì—ûK“™)‚µ‚©Žc‚ç‚È‚‚È‚Á‚Ä‚µ‚Ü‚¢‚Ü‚·
-@Eƒ_ƒ“ƒT[Eƒo[ƒhê—p•Ší‚ð‘•”õ‚µ‚Ä‚¢‚éꇂÍAŠO‚µ‚Ä‚©‚甽“]‚³‚¹‚Ä‚‚¾‚³‚¢
-@@‚»‚Ì‚Ü‚Ü”½“]‚³‚¹‚é‚ÆA‚»‚̃Lƒƒƒ‰ƒNƒ^[‚ÌŠJŽnŽž‚É
-@@ƒNƒ‰ƒCƒAƒ“ƒgƒGƒ‰[‚ªo‚Ü‚·io‚邾‚¯‚ÅA—Ž‚¿‚邱‚Æ‚Í‚È‚¢‚Ì‚Å‚·‚ªcj
-Eƒf[ƒ^ƒx[ƒXC³ by Ž‚Žqo^.^o
- (map/)
- chrif.c
- packet_len_table[]Achrif_parse()C³
- chrif_changesex()Achrif_changedsex()’ljÁ
- chrif.h C³
- (char/)
- char.c
- parse_frommap()Aparse_tologin()C³
- (login/)
- login.c
- parse_fromchar()C³
- (db/)
- cast_db.txt C³
- skill_require_db.txt C³
-
---------------
-//0751 by Ž€_
-
-Eskill_db.txt‚Æcast_db.txt‚Ì•ÏX‚Æskill_require_db.txt‚̒ljÁB
-E“Å‚É‚©‚©‚é‚ÆHP‚ªŒ¸‚é‚悤‚É•ÏXBHP‚Í1•b‚ÉÅ‘åHP‚Ì1%Œ¸‚è‚Ü‚·B(–¢ƒeƒXƒg)
-EΉ»‚ðis’†‚Ì•¨‚ÆŠ®‘S‚È•¨‚É•ª‚¯‚ÄHP‚ªŒ¸‚é‚悤‚É•ÏXB(1•b‚ÉÅ‘åHP‚Ì1%)ƒuƒŒƒbƒVƒ“ƒO‚ÅŠ®‘SΉ»‚¾‚¯Ž¡‚¹‚é‚悤‚ÉC³B(–¢ƒeƒXƒg)
-Eƒnƒ“ƒ^[‚̃gƒ‰ƒbƒv‚ɃGƒtƒFƒNƒgŽÀ‘•B‚½‚¾ƒ‰ƒ“ƒhƒ}ƒCƒ“‚ƃVƒ‡ƒbƒNƒEƒF[ƒu‚Í”š”ƒGƒtƒFƒNƒg‚ªo‚È‚¢‚悤‚Å‚·Bƒ‰ƒ“ƒhƒ}ƒCƒ“‚̓tƒ@ƒCƒAƒsƒ‰[‚Ì”š”ƒGƒtƒFƒNƒg‚ªo‚é‚悤‚É•Ï‚¦‚Ä‚¢‚Ü‚·B
-EƒI[ƒgƒJƒEƒ“ƒ^[‚Ì•ûŒüƒ`ƒFƒbƒN‚ð‚·‚é‚悤‚É•ÏX‚Æ–{ŽIŽd—l‚ɇ‚킹‚Ü‚µ‚½B
-EƒoƒbƒNƒXƒ^ƒu‚à•ûŒüƒ`ƒFƒbƒN‚ð‚·‚é‚悤‚É•ÏXB
-EƒCƒ“ƒeƒBƒ~ƒfƒCƒg‚̈—•ÏXB
-EƒfƒBƒtƒFƒ“ƒ_[‚̈ړ®‘¬“xŒ¸‚ð–{ŽI‚ɇ‚킹‚Ü‚µ‚½BASPD‚ÍŸŽè‚È‚ª‚ç
-(30 - (skilllv*5))%‚ªŒ¸‚é‚悤‚É‚µ‚Ü‚µ‚½‚ª–{ŽI‚Å‚¢‚‚ç’öŒ¸‚é‚Ì‚©‚Ìî•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
-Eƒgƒ“ƒlƒ‹ƒhƒ‰ƒCƒuLV1‚ňړ®‘¬“x‚ª150‚©‚ç312‚É‚È‚é‚Ì‚ªŠm”F‚³‚ê‚ÄŒvŽZ‚ð•ÏX‚µ‚Ü‚µ‚½‚ªƒŒƒxƒ‹‚É‚æ‚Á‚Ä‚Ç‚ê‚®‚ç‚¢‘‰Á‚·‚é‚©‚Í•s–¾‚Å‚·Bî•ñ‚ð‹‚ß‚Ü‚·B(¡‚ÌŒvŽZŽ®‚Í“K“x‚Éì‚Á‚½•¨‚Å‚·B)
-Eƒ|[ƒVƒ‡ƒ“»‘¢‚ÌŒvŽZŽ®•ÏX‚Æ‚¿‚å‚Á‚ÆC³B
-Eˆê•”’n–ʃXƒLƒ‹‚Ìd‚Ë’u‚«‚ð‹ÖŽ~B
-EbNoMagicDamage‚Å–‚–@‚É‚æ‚éˆÙí‚âƒXƒe[ƒ^ƒXƒAƒbƒvŒø‰Ê‚ªo‚È‚¢‚悤‚ÉC³B(ƒŠƒUƒŒƒNƒVƒ‡ƒ“ˆÈŠO‚Ì–‚–@‚Í–³Œø‚É‚È‚è‚Ü‚·B)
-Ebattle_athena.conf‚É€–ڒljÁB
-E‚»‚Ì‘¼FX‚ÆC³B
-E•ÏX‚³‚ꂽskill_db.txtAcastdb.txt‚ƒljÁ‚³‚ꂽskill_require_db.txt‚Ì\‘¢‚Í¡‚ÌŠŽ©•ª‚µ‚©’m‚ç‚È‚¢‚Ì‚Ådb_ref.txt‚Éà–¾‚ð’ljÁ‚·‚é—\’è‚È‚Ì‚Å‚»‚ê‚Ü‚Å‚Í‚±‚ê‚ç‚Ì•ÏX‚ÍT‚¦‚Ä‚‚¾‚³‚¢B
- (char/)
- int_guild.c C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (db/)
- skill_db.txt C³B
- skill_require_db.txt C³B
- cast_db.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_counttargeted()Abattle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_weapon_attack()Abattle_config_read() C³B
- skill.h C³B
- skill.c
- skill_attack()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_status_change_start() C³B
- skill_check_condition()Askill_castend_pos() C³B
- skill_use_id()Askill_use_pos() C³B
- skill_status_change_timer()Askill_status_change_start() C³B
- skill_check_unit_sub() ’ljÁB
- pc.h C³B
- pc.c
- pc_damage()Apc_counttargeted()Apc_counttargeted_sub() C³B
- mob.h C³B
- mob.c
- mob_countslave()Amob_counttargeted()Amob_counttargeted_sub() C³B
- mobskill_use()Amob_can_move()Amob_damage() C³B
- mobskill_use_id()Amobskill_use_pos()Amobskill_castend_id() C³B
- mobskill_castend_pos() C³B
- map.c
- map_quit() C³B
-
---------------
-//0750 by CHRIS
-
-EƒXƒLƒ‹ŠÖŒW‚ÌDB‚ð’²®
- (db/)
- skill_db.txt
- cast_db.txt
- skill_require_db.txt
-
---------------
-//0749 by Ž€_
-
-EFX‚Æ•ÏX‚ÆC³B
-EƒXƒLƒ‹‚ÌŽd—l•ÏX‚âŽÀ‘•Aó‘ÔˆÙí‚ÌŽd—l•ÏX‚âŽÀ‘•B
-EƒXƒLƒ‹‚ÌŽg—pðŒ‚ðdb‚ÉÝ’è‚Å‚«‚é‚悤‚É•ÏXB
-Eskill_db.txt‚Æcast_db.txt‚ÌŽd—l•ÏXB
-Eƒ}ƒbƒvŽI‚Ì–³ŒÀƒ‹[ƒv‰Â”\«‚ª‚ ‚é•”•ª‚ðC³B(‚ ‚‚Ü‚Å‚à‰Â”\«‚ª
-‚ ‚Á‚½‚¾‚¯‚Ì•¨‚Å‚·B–³ŒÀƒ‹[ƒv‚ÌŒ´ˆö‚Æ‚Í’fŒ¾‚Å‚«‚Ü‚¹‚ñB)
-Eƒgƒ‰ƒbƒv‚Ì”“®ŽÀ‘•B(‚½‚¾ŽÀÛ‚É“®ì‚Í‚Ü‚¾C³‚µ‚Ä‚¢‚Ü‚¹‚ñB
-Œ©‚½–Ú‚ª•Ï‚í‚Á‚½‚¾‚¯‚Å‚·B)
-Ebattle_athena.conf‚É€–ڒljÁ‚ðíœB
-E0748‚ÌC³íœ‚Æ•¶Žš‰»‚¯C³B
-Eskill_db.txtAcast_db.txtAskill_require_db.txt‚Ì•û‚ª‚Ü‚¾Š®¬‚³‚ê‚Ä‚¢‚È‚¢‚Ì‚Å
-‚©‚È‚è‚̗ʂ̃XƒLƒ‹‚ª³‚µ‚“®ì‚µ‚Ü‚¹‚ñB(db_ref.txt‚ÉÝ’è•û–@‚ð“ü‚ê‚È‚¢‚Æ
- ‚¯‚È‚¢‚Ì‚Å‚·‚ªŽžŠÔ‚ª‚È‚©‚Á‚½‚Ì‚Å...) ‚»‚µ‚ÄC³‚Í‚µ‚Ü‚µ‚½‚ªƒeƒXƒg‚Í
-–w‚ñ‚Ç‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
- (char/)
- char.c C³B
- int_party.h C³B
- int_party.c C³B
- int_guild.h C³B
- int_guild.c C³B
- int_pet.h C³B
- int_pet.c C³B
- int_storage.h C³B
- int_storage.c C³B
- char‚Ì•û‚͑債‚½C³‚Í‚µ‚Ä‚Ü‚¹‚ñB
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (db/)
- skill_db.txt C³B
- cast_db.txt C³B
- skill_require_db.txt ’ljÁB
- produce_db.txt C³B
- (map/)
- map.h C³B
- map.c
- map_check_dir() ’ljÁB
- map_readmap()Amap_addblock()Amap_delblock() C³B
- map_foreachinarea()Amap_foreachinmovearea() C³B
- map_addflooritem() C³B
- pc.h C³B
- pc.c
- pc_spiritball_timer()Apc_addspiritball()Apc_delspiritball() C³B
- pc_steal_item()Apc_steal_coin()Apc_calcstatus() C³B
- pc_checkallowskill()Apc_jobchange()Apc_checkweighticon() C³B
- pc_damage()Apc_equipitem()Apc_walk()Apc_stop_walking() C³B
- pc_authok()Apc_counttargeted()Apc_counttargeted_sub() C³B
- pc_damage()Apc_setpos() C³B
- skill.h C³B
- skill.c
- skill_get_range()Askill_get_sp()Askill_get_num() C³B
- skill_get_cast()Askill_get_delay() C³B
- skill_get_hp()Askill_get_zeny()Askill_get_time() ’ljÁB
- skill_get_time2()Askill_get_weapontype() ’ljÁB
- skill_get_unit_id()Askill_blown()Askill_additional_effect() C³B
- skill_attack()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id()Askill_castend_id() C³B
- skill_castend_pos()Askill_unit_onplace() C³B
- skill_unit_timer_sub_onplace()Askill_unitsetting() C³B
- skill_use_id()Askill_use_pos()Askill_check_condition() C³B
- skill_status_change_end()Askill_status_change_timer() C³B
- skill_status_change_start()Askill_can_produce_mix() C³B
- skill_produce_mix()Askill_gangsterparadise() C³B
- skill_gangster_out()Askill_gangster_in() C³B
- skill_gangster_count() ’ljÁB
- skill_readdb() C³B
- battle.h C³B
- battle.c
- distance()Abattle_counttargeted()Abattle_get_range() ’ljÁB
- battle_get_dir() ’ljÁB
- battle_get_maxhp()Abattle_get_str()Abattle_get_agi() C³B
- battle_get_vit()Abattle_get_dex()Abattle_get_int() C³B
- battle_get_luk()Abattle_get_flee()Abattle_get_hit() C³B
- battle_get_flee2()Abattle_get_critical()Abattle_get_baseatk() C³B
- battle_get_atk()Abattle_get_atk2()Abattle_get_def() C³B
- battle_get_def2()Abattle_get_mdef()Abattle_get_speed() C³B
- battle_get_adelay()Abattle_get_amotion()Abattle_get_party_id() C³B
- battle_get_guild_id()Abattle_get_size() C³B
- battle_check_undead() ’ljÁB
- battle_check_target()Abattle_addmastery() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_weapon_attack() C³B
- clif.h C³B
- clif.c
- clif_skillinfo()Aclif_skillinfoblock()Aclif_skillup() C³B
- clif_item_skill()Aclif_changeoption()Aclif_parse_LoadEndAck() C³B
- clif_01ac() ’ljÁB
- clif_parse_WalkToXY()Aclif_parse_ActionRequest() C³B
- clif_parse_TakeItem()Aclif_parse_DropItem() C³B
- mob.h C³B
- mob.c
- mobskill_castend_id()Amobskill_castend_pos() C³B
- mobskill_use_id()Amobskill_use_pos()Amob_heal() C³B
- mob_spawn()Amob_damage()Amob_walk() C³B
- mob_stop_walking()Amob_warp()Amob_counttargeted() C³B
- mob_counttargeted_sub()Amob_countslave() C³B
- mob_attack()Amob_target()Amob_ai_sub_hard_activesearch() C³B
- mob_ai_sub_hard_mastersearch()Amob_ai_sub_hard() C³B
- script.c
- buildin_sc_start() C³B
- path.c
- can_move() C³B
- pet.c
- pet_data_init()Apet_stop_walking() C³B
- npc.c
- npc_parse_warp()Anpc_parse_shop()Anpc_parse_script() C³B
-
---------------
-//0748 by Michael
- (map/)
- pc.c
- pc_walk();
- Fix Player cannot move in ICEWALL but have Path.
- mob.c
- mob_walk();
- Fix Monster cannot move in ICEWALL but have Path.
- path.c
- can_move();
- Fix Player&Monster cannot move in ICEWALL.
-
---------------
-//0747 by ¹
-Eƒyƒbƒg‚ªƒGƒ‚‚ðo‚·‚Æmap-server‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚Á‚½–â‘è‚ðC³B
- (map/)
- clif_parse_SendEmotion() C³B
-
---------------
-//0746 by Michael
- (map/)
- script.c
- Add Script command - checkoption(type);
- Attach a npc_testchkoption.txt npc script!
-
---------------
-//0745 by ‚Ò‚´‚Ü‚ñ
-EƒMƒƒƒ“ƒOƒXƒ^[ƒpƒ‰ƒ_ƒCƒXŽÀ‘•
-EPvPƒGƒŠƒA‚Ìmapflag‚ðC³(“¯Žm“¢‚¿‚ª–³‚‚È‚Á‚½‚©‚ÆŽv‚¢‚Ü‚·)
-EƒV[ƒYƒ‚[ƒh‚ŃmƒbƒNƒoƒbƒN‚ª‚ ‚Á‚½ƒoƒO‚ðC³
-EƒCƒ“ƒeƒBƒ~‚Ì’x‰„ŽžŠÔ‚ð‚µ’²®
- (map/)
- skill.c
- skill_attack()Askill_additional_effect()C³
- skill_gangsterparadise()Askill_gangster_in()Askill_gangster_out()’ljÁ
- clif.c
- clif_parse_ActionRequest()C³
- mob.c
- mob_target()Amob_attack()C³
- mob_ai_sub_hard()Amob_ai_sub_hard_mastersearch()C³
- mob_ai_sub_hard_activesearch()C³
- map.h C³
- skill.h C³
- (conf/)
- npc_pvp.txt C³
-
---------------
-//0744 by ¹
-
-EƒAƒCƒXƒEƒH[ƒ‹AƒƒeƒIƒXƒg[ƒ€‚̃Rƒ“ƒ{‚ŃƒeƒIƒXƒg[ƒ€‚̃GƒtƒFƒNƒg‚ª•\Ž¦‚³‚ê‚È‚‚È‚é–â‘è‚ðC³B
-EHP‹zŽûƒXƒLƒ‹‚̃GƒtƒFƒNƒgC³B
-Ebattle_athena.conf‚É€–ڒljÁB
-EƒpƒPŽü‚è‚Ìׂ©‚¢C³B
- (conf/)
- battle_athena.conf
- (doc/)
- conf_ref.txt
- (map/)
- battle.c
- battle.h
- clif.c
- pc.c
- pet.c
- skill.c
-
---------------
-//0743 by J
-
-EŽæ‚芪‚«¢Š«‚È‚Ç‚ð–{ŽI‚ÉŽ—‚¹‚éˆ×‚ÌC³B
-@‚ ‚Æ–{ŽI‘ŠˆáƒXƒŒ‚É‚ ‚Á‚½ƒSƒXƒŠƒ“‚ÌŽæ‚芪‚«‚ðC³B
-@ƒfƒŠ[ƒ^[‚Ì‹ó‚Æ’n‚̃XƒLƒ‹‚ª‹t‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³B
- (db/)
- mob_skill_db.txt C³
-
---------------
-//0742 by ‚Ò‚´‚Ü‚ñ
-
-EƒCƒ“ƒeƒBƒ~ƒfƒCƒg‚ðŽÀ‘•
-@UŒ‚‚ƃ[ƒv‚Ì•ª•Ê‚ª‚¤‚Ü‚‚¢‚©‚È‚©‚Á‚½‚Ì‚Å
-@SC_INTIMIDATE‚ðŽg‚Á‚Ä’x‰„ˆ—‚ð‚µ‚Ü‚µ‚½
-Eskill_db‚̌뎚“™‚ðC³
- (map/)
- skill.c
- skill_additional_effect()Askill_castend_map()C³
- skill_castend_nodamage_id()AC³
- skill_status_change_start()Askill_status_change_end()C³
- map.h C³
- skill.h C³
- (db/)
- skill_db.txt C³
-
---------------------
-//0741 by whitedog
-
-snapshot
-
---------------
-//0740 by ‚Û‚Û‚Û
-EPC‚ªMOB‚Ƀ^ƒQ‚ç‚ꂽ‚Æ‚«3•C–Ú‚©‚ç–hŒä‚Ɖñ”ð‚ªŒ¸‚é‚悤‚É‚µ‚½B
-@1•C‚ɂ‚«‰ñ”ð‚Í10%A–hŒä‚Í5%Œ¸‚è‚Ü‚·B
- (map/)
- pc.h
- pc.c
- pc_counttargeted()Apc_counttargeted_sub()’ljÁ
- battle.c
- battle_get_flee()Abattle_get_def()Abattle_get_def2()C³B
-
---------------
-//0739 by ¹
-Eƒtƒ@ƒCƒA[ƒEƒH[ƒ‹“™‚ÌÝ’uŒnƒXƒLƒ‹‚ª³‚µ‚•\Ž¦‚³‚ê‚È‚¢–â‘è‚ðC³B
-Eƒ}ƒŠƒ“ƒXƒtƒBƒA‚ªŽ©”š‚·‚é‚ƃTƒ“ƒ_[ƒXƒg[ƒ€“™‚̃_ƒ[ƒW‚ª•\Ž¦‚³‚ê‚È‚‚È‚é–â‘è‚ðC³B
-EHP‹zŽûŒnƒXƒLƒ‹‚Å“G‚ª‰ñ•œ‚µ‚Ä‚éƒGƒtƒFƒNƒg‚ªo‚é‚悤C³B
- (map/)
- skill.c
- skill_castend_damage_id() C³B
- battle.c
- battle_calc_misc_attack() C³B
- clif.c
- clif_getareachar_skillunit() C³B
- clif_skill_setunit() C³B
-
---------------
-//0738 by ‚Ò‚´‚Ü‚ñ
-EƒXƒg[ƒ€ƒKƒXƒg‚ðŠ®‘S‚É–{ŽIŽd—l‚ÉC³(3‰ñ‚Åâ‘Γ€Œ‹•“€Œ‹ó‘Ô‚Ì“G‚ÍSG‚ð‚‚ç‚í‚È‚¢)
-EƒTƒtƒ‰ƒMƒEƒ€‚ªŽ©•ª‚É‚©‚¯‚ç‚ê‚éƒoƒOC³
- (map/)
- skill.c
- skill_additional_effect()Askill_attack()C³
- skill_castend_nodamage_id()C³
- map.h C³
-
---------------
-//0737 by ‚Û‚Û‚Û
-EƒAƒ“ƒNƒ‹‚ª•à‚¢‚Ä‚¢‚é“G‚ÉŒø‚©‚È‚¢&•¡”‚Ì“G‚ÉŒø‚‚Ì‚ðC³B
- (map/)
- skill.c
- skill_unit_onplace()Askill_unit_onout()C³
- mob.c
- mob_stop_walking()C³
-
---------------
-//0736 by ‚Ò‚´‚Ü‚ñ
-Eó‘ÔˆÙí‘Ï«‚ªŒø‰ÊŽžŠÔ‚É‚à‹y‚Ô—l‚ÉC³B”“®—¦‚Æ“¯—¦‚ÅŒø‰ÊŽžŠÔ‚ªŠ„‚èˆø‚©‚ê‚Ü‚·
-EƒXƒg[ƒ“ƒJ[ƒX‚ÌŒø‰ÊŽžŠÔ‚ð‰i‹v‚©‚çƒ}ƒWƒXƒŒƒeƒ“ƒvƒŒ€‹’‚É
-EUŒ‚‚ðŽó‚¯‚½Žž‚Ƀyƒbƒg‚ÌŽx‰‡UŒ‚‚ðŽó‚¯‚ç‚ê‚È‚¢‚悤C³(ƒRƒƒ“ƒgƒAƒEƒg‚µ‚½‚¾‚¯)
-@‚±‚ê‚ÍVITŒ^‚Ƀyƒbƒg‚ð•t‚¯‚Ä•ú’u‚·‚邾‚¯‚ÅŽ©“®‚ŃŒƒxƒ‹ã‚°‚ª‚Å‚«‚é‚Ì‚ð
-@–h‚®‚½‚ß‚ÌŽb’è“I‚Ȉ’u‚Å‚·
- (map/)
- skill.c
- skill_castend_nodamage_id()Askill_addisional_effect()C³
- skill_status_change_start()C³
- pc.c
- pc_damage() C³
-
---------------
-//0735 by ‚Û‚Û‚Û
-
-E“G‚ð“|‚µ‚ăŒƒxƒ‹‚ªã‚ª‚Á‚½‚Æ‚«PTŒö•½”͈͂̃`ƒFƒbƒN‚ð‚·‚é‚悤‚É‚µ‚½B
-EƒI[ƒgƒJƒEƒ“ƒ^[‰¼ŽÀ‘•B
-@Œü‚«‚âŽË’öƒ`ƒFƒbƒN‚Í‚µ‚Ä‚¢‚Ü‚¹‚ñB‚Ü‚½ƒ^ƒCƒ~ƒ“ƒO‚ª‚¨‚©‚µ‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-@MOBƒXƒLƒ‹‚Æ‚µ‚ÄŽg‚¤‚Æ‚«‚̓^[ƒQƒbƒg‚ðself‚É‚µ‚Ä‚‚¾‚³‚¢B
- (conf/)
- battle_athena.conf€–ڒljÁ
- (doc/)
- conf_refC³
- (map/)
- battle.h
- battle.c
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack()
- battle_config_read()C³
- pc.c
- pc_checkbaselevelup()Apc_attack_timer()C³
- skill.c
- skill_castend_nodamage_id()Askill_status_change_start()C³
- clif.c
- clif_parse_WalkToXY()C³
- mob.c
- mob_attack()C³
-
---------------
-//0734 by Ž€_
-
-Eplayer_skillup_limit‚̈—C³‚Æׂ©‚¢C³B
-Eplayer_skillup_limit‚ªyes‚Ìê‡skill_tree.txt‚Åݒ肳‚ê‚Ä‚é‚»‚̉ºˆÊE‹Æ‚Ì
-ƒXƒLƒ‹ƒcƒŠ[‚ðŽg‚¢‚Ü‚·‚Ì‚Å‚»‚ÌE‹Æ‚Å‚Í–³‚‚È‚é‚Í‚¸‚̃XƒLƒ‹‚ªo‚邱‚Æ‚ª
-‚ ‚è‚Ü‚·‚ª‚±‚ê‚ÍŽd—l‚Å‚ ‚èƒoƒO‚Å‚Í‚ ‚è‚Ü‚¹‚ñBƒoƒO•ñ‚³‚ê‚Ä‚à–³Ž‹‚µ‚Ü‚·B
- (doc/)
- conf_ref.txt C³B
- (char/)
- char.c
- mmo_char_sync_timer()Ado_init() C³B
- inter.c
- inter_init() C³B
- inter_save_timer() íœB
- (map/)
- pc.c
- pc_calc_skilltree() C³B
- pc_resetskill() C³B
-
---------------
-//0733 by Ž€_
-
-EƒoƒOC³‚Æׂ©‚¢C³B
-EŽ€‚ñ‚¾Œã‚É‚·‚®‚ɃZ[ƒuƒ|ƒCƒ“ƒg‚ɖ߂炸‚É‚µ‚΂炕ú’u‚µ‚Ä‚é‚ÆA
-•ú’u‚µ‚Ă鎞ŠÔ‚É‚æ‚Á‚ÄŒoŒ±’l‚ªŒ¸‚·‚éƒoƒOC³B(–¢ƒeƒXƒg)
-Emob_availe.txt‚Åݒ肵‚½ƒ‚ƒ“ƒXƒ^[‚Ƀ‚ƒ“ƒXƒ^[î•ñ‚ðŽg‚¤‚¿ˆÆ—Ž‚¿‚·‚é–â‘èC³B
-Ebattle_athena.conf‚É€–ڒljÁB
-E‚»‚Ì‘¼×‚©‚¢C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- clif.c
- clif_skill_estimation()Aclif_parse_Restart() C³B
- pc.c
- pc_setrestartvalue()Apc_makesavestatus() C³B
- pc_read_gm_account()Apc_calc_skilltree() C³B
- pc_calc_skillpoint() ’ljÁB
- map.c
- map_quit() C³B
- mob.c
- mob_damage() C³B
- skill.c
- skill_unit_timer_sub()Askill_unit_timer() C³B
- battle.h C³B
- battle.c
- battle_config_read() C³B
-
---------------
-//0732 by Kalen
-
-Enpc_town_kafra.txt‚Ì‘S–ÊŒ©’¼‚µ
- ƒJƒvƒ‰—˜—pŒ”‚Ì”pŽ~
- ‘qŒÉ—˜—p—¿‚ð–{ŽI(jRO)‚Æ“¯ˆê‰¿Ši‚É’²®
- ƒJ[ƒgŽg—p—¿‚ð–{ŽI(jRO)‚Æ“¯ˆê‰¿Ši‚É’²®
- ƒ|ƒCƒ“ƒgŽQÆ•ÏX
- ƒWƒ…ƒm[‚̃Z[ƒuƒ|ƒCƒ“ƒgC³
- ƒAƒ}ƒc‚̃Z[ƒuƒ|ƒCƒ“ƒgC³
-
---------------
-//0731 by ‚Û‚Û‚Û
-
-E•ž‚ÌF‚ð•Û‘¶‚·‚é‚©battle_athena.conf‚Å‘I‘ð‚Å‚«‚é‚悤‚ÉB
-@•¾ŠQ‚ª‚ ‚é‚Ì‚Å•Û‘¶‚µ‚È‚¢‚悤‚É‚Æ‘‚¢‚Ä‚ ‚Á‚½‚̂ŃfƒtƒHƒ‹ƒg‚Å‚Í•Û‘¶‚µ‚Ü‚¹‚ñB
-EƒXƒNƒŠƒvƒg’ljÁ
-@strcharinfo(1) Ž©•ª‚̃p[ƒeƒB[–¼‚ðŽæ“¾‚µ‚Ü‚·B
-@strcharinfo(2) Ž©•ª‚̃Mƒ‹ƒh–¼‚ðŽæ“¾‚µ‚Ü‚·B
-@getcharid(1) Ž©•ª‚̃p[ƒeƒB[ID‚ðŽæ“¾‚µ‚Ü‚·B
-@getcharid(2) Ž©•ª‚̃Mƒ‹ƒhID‚ðŽæ“¾‚µ‚Ü‚·B
-@getpartyname(ID) ID‚ÅŽw’肵‚½ƒp[ƒeƒB[‚Ì–¼‘O‚ðŽæ“¾‚µ‚Ü‚·B
-@getguildname(ID) ID‚ÅŽw’肵‚½ƒMƒ‹ƒh‚Ì–¼‘O‚ðŽæ“¾‚µ‚Ü‚·B
- (map/)
- battle.h
- battle.c
- battle_config_read()C³
- pc.c
- pc_makesavestatus()C³
- script.c
- buildin_strcharinfo()C³
- buildin_getcharid()Abuildin_getpartyname()Abuildin_getpartyname_sub()
- buildin_getguildname()Abuildin_getguildname_sub()’ljÁ
-
---------------
-//0730 by ‚Ò‚´‚Ü‚ñ
-
-EƒXƒg[ƒ€ƒKƒXƒg‚Ì“€Œ‹ŽžŠÔ‚ð–{ŽI‚É‚ ‚킹‚ÄC³(ƒXƒLƒ‹ƒŒƒxƒ‹‚ÉŠÖŒW‚È‚ˆê’è‚Ì“€Œ‹ŽžŠÔ(10•b)‚É‚È‚è‚Ü‚·)
-EƒXƒ^ƒ“AˆÃˆÅA’¾–ÙA“Å‚Ìó‘ÔˆÙ펞ŠÔ‚ÌuŒp‚¬‘«‚µv‚ª‚Å‚«‚È‚¢‚悤‚ÉC³
-Eó‘ÔˆÙ킪Š|‚©‚è‚É‚‚·‚¬‚Ä‚½‚Ì‚ÅMOB‚Ìó‘ÔˆÙí‘Ï«‚ðŠÉ˜a(‚Ü‚½’²®‚·‚é‚©‚à)
- (map/)
- skill.c
- skill_castend_nodamage_id()Askill_addisional_effect()C³
- skill_status_change_start()C³
-
---------------
-//0729 by DRG
-
-EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚ªƒJ[ƒg‚È‚µ‚ÅŽg‚¦‚½•s‹ï‡‚ÌC³
-EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚ªJOBLV30‚ÅŠo‚¦‚ꂽ‚Ì‚ðC³
- (conf/)
- npc_event_skillget.txt
- ƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“€C³
- (map/)
- skill.c
- skill_check_condition()C³
-
---------------
-//0728 by ‚Û‚Û‚Û
-
-EE‚ª•Ï‚í‚Á‚Ä‚àƒMƒ‹ƒh‚ÌE‹Æ—“‚ªXV‚³‚ê‚È‚¢•s‹ï‡‚ÌC³B
-
- (char/)
- inter.c
- ƒpƒPƒbƒg’·ƒŠƒXƒgC³B
- int_guild.c
- mapif_guild_memberinfoshort()Amapif_parse_GuildChangeMemberInfoShort()A
- inter_guild_parse_frommap()C³
- (map/)
- intif.h
- intif.c
- intif_guild_memberinfoshort()Aintif_parse_GuildMemberInfoShort()
- intif_parse()C³
- guild.h
- guild_send_memberinfoshort()Aguild_recv_memberinfoshort()C³
-
-
---------------
-//0727 by ¹
-
-E•ŠíŒ¤‹†ƒXƒLƒ‹‚É‚æ‚Á‚ăzƒ‹ƒOƒŒƒ“‚Ȃǂ̸˜BNPC‚ª
-@³í‚É“®ì‚µ‚È‚¢–â‘è‚ðC³B
-
- (map/)
- pc.c
- pc_percentrefinery() C³B
-
---------------
-//0726 by ŒÓ’±—–
-
-Emob_skill_db2.txt‚ª‚ ‚ê‚Îmob_skill_db.txt‚ðƒI[ƒo[ƒ‰ƒCƒh‚·‚é‚悤‚ÉC³
- ƒIƒŠƒWƒiƒ‹‚ÌMOBŽg—pŽž‚âAŒ»sMOB‚ÌŽg—pƒXƒLƒ‹‚ð•ÏX‚µ‚½‚¢ê‡‚ÉB
-
-Emob_skill_db.txt‚Åmob_id‚ÌŽŸ‚̃_ƒ~[•¶Žš—ñ‚ª"clear"‚¾‚Á‚½ê‡A
- ‚»‚ÌMOB‚̃XƒLƒ‹‚ð‰Šú‰»‚·‚é‹@”\’ljÁB
- Emob_skill_db2.txt‚Å‚ ‚éMOB‚̃XƒLƒ‹‚ðŠ®‘S‚É‘‚«Š·‚¦‚é‚Æ‚«‚ÉŽg—p‚µ‚Ä
- ‚‚¾‚³‚¢B
- Eclear‚µ‚È‚©‚Á‚½ê‡‚Ímob_skill_db.txt‚Ì‚à‚̂ɒljÁ‚³‚ê‚Ü‚·B
-
- mob.c
- mob_readskilldb()C³
-
-
-EƒAƒCƒeƒ€–¼/MOB–¼‚ª‘SŠp12•¶Žši24ƒoƒCƒgj‚ ‚éƒAƒCƒeƒ€/MOB‚ªA
- @ƒRƒ}ƒ“ƒh‚ÅŽæ‚èŠñ‚¹/¢Š«‚Å‚«‚È‚¢–â‘èC³B
- mob.c
- mobdb_searchname()C³
- itemdb.c
- itemdb_searchname_sub()C³
-
-EŒ»ÝŽž‚ŃCƒxƒ“ƒg‚ð‹N‚±‚·uŽžŒvƒCƒxƒ“ƒgv‹@”\‚ð’ljÁ
- EOnInit‚Æ“¯‚¶‚悤‚É‚»‚ꂼ‚ê‚ÌNPC‚ÅAOn`‚ÅŽn‚܂郉ƒxƒ‹‚ð’è‹`‚µ‚Ü‚·B
- OnMinute?? F–ˆŽžA??•ª‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B(0-59)
- OnHour?? F–ˆ“úA??Žž‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B(0-23)
- OnClock???? F–ˆ“úA??Žž??•ª‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B
- OnDate???? F–ˆ”NA??ŒŽ??“ú‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B
- EÚ‚µ‚‚Í npc_test_ev.txt ‚ðŽQÆ
-
- (conf/)
- npc_test_ev.txt
- “à—e’ljÁ
- (map/)
- npc.c
- FXC³
-
-E‚»‚Ì‘¼
- clif.c
- ƒRƒ“ƒpƒCƒ‹Œx‚ªo‚È‚¢‚悤‚ÉC³
-
---------------
-//0725 by Ž€_
-
-EŽI—Ž‚¿ƒoƒOC³B
-Eƒ‚ƒ“ƒXƒ^[‚ɃCƒxƒ“ƒg‚ªÝ’肳‚ê‚Ä‚¢‚ÄŽ©ŽE‚â‚È‚É‚©‚Ń_ƒ[ƒW‚ð—^‚¦‚½
-•¨‚ª‚È‚¢ê‡ŽI—Ž‚¿Šm’è‚È‚Ì‚Å‚»‚̃}ƒbƒv‚É‚ ‚éƒvƒŒƒCƒ„[‚ð—˜—p‚µ‚Ä
-ƒCƒxƒ“ƒgƒXƒNƒŠƒvƒg‚ðŽÀs‚·‚é‚悤‚É•ÏXB
- (map/)
- makefile C³B
- mob.c
- mob_timer()Amob_damage() C³B
-
---------------
-//0724 by Ž€_
-
-EƒoƒOC³‚ƈÀ’艻‚ׂ̈ÌC³B
-Eƒyƒbƒg‚ÌUŒ‚‚ŃCƒxƒ“ƒg‚ªˆ—‚³‚ꂸŽI—Ž‚¿‚É‚È‚é–â‘èC³B(–¢ƒeƒXƒg)
-Eƒ‚ƒ“ƒXƒ^[‚Ì‘å—Ê”¶‚ÅŽI‚ª—Ž‚¿‚é–â‘èC³B(ƒ‚ƒ“ƒXƒ^[‚ð10000•C‚ðŒÄ‚ñ‚Å
-–‚–@‚Å“|‚·‚±‚Æ‚ð5‰ñ’öƒeƒXƒgB‚½‚¾“®‚©‚È‚¢‚â‚‚̂ÝB)
-EŽæ‚芪‚«‚ªƒ{ƒX‚ƈê‚ÉŽ€‚ÊŽžƒAƒCƒeƒ€‚ð—Ž‚Æ‚³‚È‚¢‚悤‚É•ÏXB(–¢ƒeƒXƒg)
-Ebattle_athena.conf‚Ìpc_skillflee‚ðplayer_skillfree‚É•ÏX‚µ‚Ĉ—‚ð•ÏXB
-EƒAƒCƒXƒEƒH[ƒ‹‚Éskill_unit_setting‚ðŽg‚¤ƒXƒLƒ‹‚ÅUŒ‚‚Å‚«‚È‚¢‚悤‚ÉC³B
-E‚»‚Ì‘¼×‚©‚¢C³‚µBˆÀ’艻‚³‚ꂽ‚©‚Ç‚¤‚©‚Í‚Ü‚¾‚í‚©‚è‚Ü‚¹‚ñ‚ªXP1800+A512MAƒ‚ƒ“ƒXƒ^[”z’u50%‚Å10000•C¢Š«‚µ‚ĈÙí‚È‚©‚Á‚½‚Ì‚Å‘åä•v‚É‚È‚Á‚½‚ÆŽv‚¢‚Ü‚·B‘åä•v‚¶‚á‚È‚‚Ä‚àÓ”C‚Í‚Æ‚ê‚Ü‚¹‚ñ‚ª...
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- mob.h C³B
- mob.c
- mob_timer()Amob_deleteslave_sub()Amob_damage() C³B
- npc.c
- npc_event() C³B
- skill.c
- skill_area_sub()Askill_unit_onplace()Askill_castend_nodamage_id() C³B
- clif.c
- clif_parse_GMKick() C³B
- battle.h
- battle.c
- battle_damage()Abattle_check_target()Abattle_config_read() C³B
- pc.c
- pc_calc_skilltree()Apc_checkskill() C³B
- map.h C³B
- map.c
- map_foreachinarea()Amap_foreachinmovearea() C³B
- map_foreachobject() C³B
-
---------------
-//0723 by DRG
-
-E0719‚ÌC³
- (map/)
- pc.c pc_calc_skilltree()C³
-
---------------
-//0722 by ƒpƒCƒ“
-
-Egcc 2.29Œn—ñ‚Å‚àƒRƒ“ƒpƒCƒ‹‚ª’Ê‚é‚悤‚ÉC³B
-@‚±‚ê‚͈ȑO‚É‚à’¼‚µ‚½‚Í‚¸‚È‚Ì‚Å‚·‚ªA‚È‚º‚©Œ³‚É–ß‚Á‚Ä‚¢‚Ü‚µ‚½‚Ì‚Å
-@ŠF‚³‚ñ’ˆÓ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
-@‚ ‚ÆAgcc3Œn—ñ‚È‚ç’蔂͂ǂ±‚É‘‚¢‚Ä‚à–â‘è‚È‚¢‚Ì‚Å‚·‚ªA
-@gcc2.29Œn—ñ‚Å‚Íu•K‚¸ƒuƒƒbƒN—v‘f‚̈ê”Ôʼnv‚É‘‚©‚È‚¢‚ƃRƒ“ƒpƒCƒ‹‚ª
-@’Ê‚è‚Ü‚¹‚ñ‚Ì‚Å‚±‚¿‚ç‚à‚²’ˆÓŠè‚¢‚Ü‚·B
-
-ƒRƒ“ƒpƒCƒ‹‚ª’Ê‚é—á
-void hoge() {
- const char booboo = 1;
- c
-
-ƒRƒ“ƒpƒCƒ‹‚ª’Ê‚ç‚È‚¢—á
-void hoge() {
- c
- const char booboo = 1;
- c
-
- (map/)
- skill.h ƒ}ƒNƒ‚ðC³
- skill.c skill_addisional_effect()C³
-
---------------
-//0721 by ¹
-
-Eƒ{ƒX‚ɃŒƒbƒNƒXƒfƒr[ƒi‚ªŒø‚¢‚½–â‘è‚ðC³B
-Eƒ{ƒX‚ɃJ[ƒh‚É‚æ‚éó‘ÔˆÙ킪Œø‚©‚È‚©‚Á‚½–â‘è‚ðC³B
-@–{ŽI‚ł̓}ƒŠƒiƒJ[ƒh“™‚ŃI[ƒNƒq[ƒ[‚È‚Ç‚ð‰£‚é‚ÆŽžX“€Œ‹‚µ‚Ü‚·B
-@(Œ‹\”÷–‚ÈŽÀ‘••û–@‚È‚Ì‚ÅA‰½‚©–â‘肪‚ ‚Á‚½ê‡
-@ ‚»‚Ì•ÓÚ‚µ‚¢•û‚¨‚è‚Ü‚µ‚½‚çC³‚µ‚Ä‚â‚Á‚Ä‚‚¾‚³‚¢(^^; ))
-
---------------
-//0720 by ŒÓ’±—–
-
-EPC‚ÉIW‚ðd‚Ë‚é‚ÆMOB‚ªUŒ‚‚µ‚Ä‚±‚È‚¢–â‘è‚ðC³
- EIW‚Éd‚È‚Á‚Ä‚¢‚Ä‚àA—×ډ”\‚È‚çMOB‚ª‹ßŠñ‚Á‚Ä‚«‚Ü‚·
- E‚Ç‚ñ‚È’nŒ`‚É‚¢‚Ä‚àA—×Ú‚µ‚Ä‚¢‚é‚È‚çUŒ‚‰Â”\‚É‚È‚è‚Ü‚·
- E‚½‚¾‚µAMOB‚ª‰“‹——£UŒ‚‰Â”\‚ÅAUŒ‚”͈͓à‚ÉPC‚ª‚¢‚Ä‚àA
- —×Ú•s‰Â”\‚È‚çUŒ‚‚µ‚Ä‚«‚Ü‚¹‚ñB‚±‚ê‚Ì‰ðŒˆ‚Í‚©‚È‚è–Ê“|‚È‚Ì‚ÅB
-
- mob.c
- mob_can_reach()C³
- battle.c
- battle_check_range()C³
-
---------------
-//0719 by DRG
-
-E‰ºˆÊƒXƒLƒ‹‚ª‚È‚¢ê‡‚ÍãˆÊƒXƒLƒ‹‚ª‚Ó‚ê‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B
-@battle_athena.conf‚Ìskillflee‚ÅÝ’è‰Â”\‚Å‚·B
-@‰ºˆÊƒXƒLƒ‹‚ª‚È‚¢‚Ü‚ÜãˆÊƒXƒLƒ‹‚ð‚Ó‚Á‚½ó‘Ô‚ÅA‚±‚̃IƒvƒVƒ‡ƒ“‚ðŽg‚¤ê‡‚̓XƒLƒ‹ƒŠƒZƒbƒg‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-@ˆê”ʃAƒJ‚ɃXƒLƒ‹ƒŠƒZƒbƒg‚ð‰ð•ú‚µ‚½‚¢‚Æ‚«‚ÉŽg‚Á‚Ä‚â‚Á‚ĉº‚³‚¢B
- (conf/)
- battle_athena.conf
- (map/)
- battle.c
- battle.h
- pc.c pc_calc_skilltree(),pc_checkskill()C³
-
---------------
-//0718 by Ž€_
-
-EFX‚ÆC³B
-E“Å‚É‚æ‚Á‚Ä–hŒä‚ªŒ¸‚é‚悤‚É•ÏXB(HP‚Í‚Ü‚¾Œ¸‚è‚Ü‚¹‚ñB)
-EƒAƒCƒXƒEƒH[ƒ‹‚ÉUŒ‚‚Å‚«‚é‚悤‚É•ÏXB(¡‚Í‘S‚Ä‚ÌUŒ‚‚É“–‚½‚è‚Ü‚·B)
-‚½‚¾ˆÆ‚̃oƒO‚炵‚ƒAƒCƒXƒEƒH[ƒ‹‚ðƒNƒŠƒbƒN‚·‚é‚ƈƂ©‚ç0x89ƒpƒPƒbƒg‚ª30‰ñˆÈã˜A‘±‚Å‘—‚Á‚Ä‚‚邱‚Æ‚ª‹N‚±‚è‚Ü‚·‚ªŒ´ˆö‚Í•s–¾‚Å‚·B‘½•ªˆÆ‚̃oƒO‚¾‚ÆŽv‚¢‚Ü‚·‚ª...)
-E퓬‚ÉŠÖ‚í‚éŒvŽZ“™‚ðC³B
-Eƒ[ƒj‚ª‘‚¦‚éƒoƒOC³B(‘½•ª‚±‚ê‚Å‚±‚̃oƒO‚Í‚È‚‚È‚é‚ÆŽv‚¢‚Ü‚·‚ª‚Ç‚¤‚È‚Ì‚©•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B)
-E“ñ“—¬‚̶Žè•Ší‚ÌŽí‘°A‘®«ASize‚̃_ƒ[ƒW•â³‚ð‰EŽè•Ší‚É“K—p‚·‚é‚©‚Ç‚¤‚©‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB
-E‚»‚Ì‘¼C³‚Í‚µ‚½‚Í‚¸‚Å‚·‚ªŠo‚¦‚Ä‚Ü‚¹‚ñB(C³‚µ‚Ä‚È‚¢•¨‚à‚ ‚è‚Ü‚·‚ªdiff“–‚Ä‚Ì“r’†‚Å‚Ç‚ê‚ðì‹Æ‚µ‚½‚Ì‚©‚ð–Y‚ꂽ‚Ì‚Å...)
- (common/)
- mmo.h C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_get_baseatk()Abattle_get_speed()Abattle_get_adelay() ’ljÁB
- battle_get_amotion() Abattle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_get_atk()Abattle_get_atk_()Abattle_get_atk2() C³B
- battle_get_attack_element()Abattle_get_attack_element2() C³B
- battle_get_str()Abattle_get_agi()Abattle_get_vit()Abattle_get_int() C³B
- battle_get_dex()Abattle_get_luk()Abattle_get_flee() C³B
- battle_get_flee2()Abattle_get_hit()Abattle_get_critical() C³B
- battle_get_def()Abattle_get_def2()Abattle_get_mdef() C³B
- battle_get_element()Abattle_check_target()Abattle_check_range() C³B
- battle_weapon_attack()Abattle_config_read() C³B
- clif.c
- clif_skill_estimation()Aclif_mob0078()Aclif_mob007b() C³B
- pc.c
- pc_attack_timer()Apc_attack()Apc_calcstatus()Apc_payzeny() C³B
- pc_getzeny() C³B
- npc.c
- npc_buylist()Anpc_selllist() C³B
- pet.c
- pet_attack()Apet_randomwalk()Apet_ai_sub_hard() C³B
- mob.h C³B
- mob.c
- calc_next_walk_step()Amob_attack()Amobskill_castend_id() C³B
- mobskill_use_id()Amobskill_use_pos()Amob_ai_sub_hard() C³B
- mob_damage()Amob_changestate() C³B
- mob_get_adelay()Amob_get_speed() íœB
- skill.h C³B
- skill.c
- skill_unitsetting()Askill_unit_ondamaged()Askill_unit_timer_sub() C³B
- skill_unit_timer()Askill_area_sub()Askill_unit_onplace() C³B
- skill_status_change_start() C³B
- chat.c C³B
- makefile C³B
- chrif.c C³B
- guild.c C³B
- itemdb.c C³B
- map.c C³B
- party.c C³B
- script.c C³B
- path.c C³B
-
---------------
-//0717 by ¹
-
-E‘å—ʂɃ‚ƒ“ƒXƒ^[‚ð¢ŠÒ‚µ‚Ĉê“x‚É“|‚·‚Æmap-server‚ª—Ž‚¿‚é–â‘è‚ðC³B
-@(ƒJƒz‚ð100‘Ì‚¸‚¢ŠÒ‚µ‚Ä50‰ñƒeƒXƒg‚ð‚µ‚½‚Ì‚Å‹°‚ç‚‘åä•v‚¾‚ÆŽv‚¢‚Ü‚·B)
-E‚»‚Ì‘¼Œ‹\ׂ©‚¢C³
- (common/)
- mmo.h
- (map/)
- chat.c
- chrif.c
- clif.c
- guild.c
- itemdb.c
- map.c
- mob.c
- npc.c
- party.c
- path.c
- pc.c
- pet.c
- script.c
- skill.c
- skill.h
-
---------------
-//0716 by ¹
-
-E¸˜B¬Œ÷—¦‚ɑ΂µ‚ÄBS‚Ì•ŠíŒ¤‹†‚ª³‚µ‚“K—p‚³‚ê‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ðC³B
- (map/)
- pc.c
- pc_percentrefinery() C³B
-
---------------
-//0715 by Ž€_
-
-Eƒ}ƒbƒvƒT[ƒo[‚©‚ç•\Ž¦‚³‚ê‚镨‚ð•\Ž¦‚·‚é‚©‚Ç‚¤‚©‚Ìݒ肪‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½BƒXƒLƒ‹•\Ž¦‚¾‚¯‚Å‚à‚È‚‚µ‚Ä‚â‚é‚ƃT[ƒo[‚ª‚©‚È‚èŠy‚É‚È‚Á‚½‚è‚à‚µ‚Ü‚·B
-ŠJ”‚âƒoƒOƒgƒŒ[ƒX‚ÌŽž‚Í•\Ž¦‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B
-E‚»‚Ì‘¼×‚©‚¢C³B
-EC³‚µ‚½Š‚ð‘S‚Ä‘‚¯‚È‚¢‚̂Ńtƒ@ƒCƒ‹‚¾‚¯B
- (doc/)
- conf_ref.txt
- (conf/)
- battle_athena.conf
- (map/)
- makefile
- skill.c
- script.c
- pet.c
- pc.c
- path.c
- party.c
- npc.c
- itemdb.c
- intif.c
- guild.c
- chat.c
- battle.h
- battle.c
- chrif.c
- atcommand.c
- clif.c
- mob.c
- map.c
-
---------------
-//0714 by Ž€_
-
-Eׂ©‚¢C³B
-EƒV[ƒ‹ƒhƒu[ƒƒ‰ƒ“‚Å‚‚Ìd—ʂƸ˜B‚É‚æ‚Á‚ă_ƒ[ƒW‚ª‘‚¦‚é‚悤‚ÉC³B¸˜Bƒ_ƒ[ƒW‚ð‘«‚·Žž“K—p‚Ń_ƒ[ƒW+d—Ê+‚¸˜B*4(‚±‚Ì4‚Írefine_db.txt‚Ì–h‹ï‚̉ß踘Bƒ{[ƒiƒX‚ðŽg‚Á‚Ä‚é‚Ì‚Å•ÏX‰Â”\‚Å‚·B)‚É‚È‚è‚Ü‚·B
-EƒXƒLƒ‹‚É‚æ‚é‚«”ò‚΂µˆ—‚Å0x88ƒpƒPƒbƒg‚ðŽg‚Á‚Ä‚¢‚Ü‚µ‚½‚ª‚»‚̃pƒPƒbƒg‚Ì—D懈ʂª‚©‚È‚è’á‚¢‚炵‚Œã‚Å—ˆ‚éƒpƒPƒbƒg‚É‚æ‚Á‚Ä–³Ž‹‚³‚ê‚邱‚Æ‚à‚ ‚é‚悤‚Ȃ̂ŃvƒŒƒCƒ„[‚¾‚¯‚É“K—p‚µ‚ă‚ƒ“ƒXƒ^[‚É‚Í0x78‚ðŽg‚¤‚悤‚É•ÏX‚µ‚Ü‚µ‚½B
-‚Å‚àˆÊ’u‚¸‚ê‚ÍŠ®‘S‚É‚È‚‚È‚ç‚È‚¢‚悤‚Å‚·B(‹°‚炈Ƃ̃oƒO‚¾‚ÆŽv‚¢‚Ü‚·BŽI‚Ì
-À•W‚ðŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªŽI‚Ì•û‚Í–â‘肪‚ ‚è‚Ü‚¹‚ñ‚Å‚µ‚½B)
-ƒvƒŒƒCƒ„[‚Ìê‡0x78(PACKETVER‚ª4ˆÈã‚È‚ç0x1d8)‚ªŽg‚¦‚Ü‚¹‚ñB•ªg‚ðì‚Á‚Ä‚µ‚Ü‚¤‚Ì‚Å...
-EƒoƒO•ñƒXƒŒƒbƒh2 ‚Ì47‚ðŽæ‚èž‚Ý‚Ü‚µ‚½B
-E‚»‚Ì‘¼C³‚µ‚½Š‚µ‚ ‚èB
- (db/)
- refine_db.txt C³B
- item_db.txt C³B
- (map/)
- battle.c
- battle_stopattack()Abattle_stopwalking() C³B
- battle_get_attack_element2()Abattle_calc_pc_weapon_attack() C³B
- battle_weapon_attack() C³B
- path.c
- path_blownpos() C³B
- pc.h C³B
- pc.c
- pc_stop_walking()Apc_damage() C³B
- pc_getrefinebonus() ’ljÁB
- mob.c
- mob_damage() C³B
- pet.c
- pet_target_check()Apet_stop_walking()Apet_performance() C³B
- skill.c
- skill_attack()Askill_blown()Askill_status_change_start() C³B
- skill_castend_damage_id() C³B
- makefile C³B
-
---------------
-//0713 by ‚Û‚Û‚Û
-
-Emob_avail.txt’ljÁBitem_avail.txt‚Æ“¯—l‚ÌŽw’è‚Ń‚ƒ“ƒXƒ^[‚ÌŒ©‚½–ڂ𑼂ÌID‚Ì‚à‚Ì‚É•ÏX‚µ‚Ü‚·B
-@ƒ‚ƒ“ƒXƒ^[‚ÌIDˆÈŠO‚ðŽw’肵‚½‚è‚·‚é‚ÆPC‚âNPC‚ÌŽp‚ð‚µ‚½MOB‚Ɉê•û“I‚ÉUŒ‚‚³‚ê‚éꇂª‚ ‚é‚Ì‚Å’ˆÓB
- (db/)
- mob_avail.txt ’ljÁB
- (map/)
- clif.c
- clif_mob0078()Aclif_mob007b() C³B
- mob.h C³B
- mob.c
- mob_readdb_mobavail()Amob_get_viewclass()’ljÁB
- do_init_mob()Amob_readdb() C³B
-
---------------
-//0712 by Ž€_
-
-EƒV[ƒ‹ƒhƒ`ƒƒ[ƒWAƒV[ƒ‹ƒhƒu[ƒƒ‰ƒ“ŽÀ‘•B
-EƒI[ƒgƒK[ƒh‚Í‚Æ‚è‚ ‚¦‚¸ƒGƒtƒFƒNƒg‚ªo‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B
-E0708‚Å‘‚«–Y‚êBƒfƒBƒtƒFƒ“ƒ_[‚ðŽg‚Á‚½ŽžASPD‚ƈړ®‘¬“x‚Í20%’ቺ‚µ‚Ü‚·B
-–{ŽI‚Œቺ‚·‚é‚Ì‚ÍŠm‚©‚̂悤‚Å‚·‚ª‚Ç‚ê‚®‚ç‚¢‰º‚ª‚é‚Ì‚©‚Í‚³‚Á‚Ï‚è‚í‚©‚è‚Ü‚ñ‚Ì‚Å...
-E‚»‚Ì‘¼×‚©‚¢C³B
- (db/)
- cast_db.txt C³B
- skill_db.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_calc_damage()Abattle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_calc_magic_attack()Abattle_calc_misc_attack() C³B
- skill.c
- skill_additional_effect()Askill_attack()Askill_castend_nodamage_id() C³B
- skill_check_condition()Askill_status_change_start() C³B
- skill_castend_damage_id() C³B
- pc.h C³B
- pc.c
- pc_calcstatus()Apc_checkallowskill()Apc_unequipitem() C³B
-
---------------
-//0711 by npc
-
-Ezλ‘¢ƒGƒtƒFƒNƒg‚ÌC³
-EƒXƒNƒŠƒvƒg–„‚ßž‚Ý•Ï”‚ÉHp,MaxHp,Sp,MaxSp‚ð’ljÁ(“Ç‚Ýž‚Ý‚Ì‚Ý)
- (map/)
- skill.c
- skill_produce_mix()C³B
- pc.c
- pc_readparam()C³B
- (db/)
- const.txt C³B
-
---------------
-//0710 by ŒÓ’±—–
-
-E–¼‘O‚É”¼ŠpƒXƒy[ƒX‚ª“ü‚Á‚½ƒp[ƒeƒB[‚ð쬂µ‚½‚Æ‚«A‚¨‚æ‚ÑA
- ”¼ŠpƒXƒy[ƒX‚ª“ü‚Á‚½–¼‘O‚ÌPC‚ðƒp[ƒeƒBƒƒ“ƒo‚É‚µ‚½‚Æ‚«A
- party.txt‚ª³‚µ‚“Ç‚Ýž‚ß‚È‚‚È‚é–â‘è‚ðC³
-
- (char/)
- int_party.c
- inter_party_fromstr()C³
-
-EMessage of the Day ‹@”\’ljÁ
- EƒƒOƒCƒ“‚µ‚½ƒ†[ƒU[‚ÉMOTD‚ð•\Ž¦‚³‚¹‚邱‚Æ‚ªo—ˆ‚Ü‚·B
- Emap-server.exeŽÀsŽž‚̃JƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠihelp.txt‚Æ“¯‚¶
- ƒfƒBƒŒƒNƒgƒŠj‚Émotd.txt‚ðì‚é‚Æ•\Ž¦‚µ‚Ü‚·B
- EMOTD‚ª•\Ž¦‚³‚ê‚éƒ^ƒCƒ~ƒ“ƒO‚ÍA
- uƒ}ƒbƒvƒT[ƒo[‚ɃƒOƒCƒ“‚µ‚½’¼Œã‚ÌAƒ}ƒbƒvƒ[ƒhŠ®—¹Žžv‚Å‚·B
- ‚‚܂èAƒƒOƒCƒ“’¼ŒãAƒLƒƒƒ‰ƒZƒŒ’¼Œã‚¨‚æ‚ÑA
- ƒ}ƒbƒvƒT[ƒo[ŠÔˆÚ“®‚ÌŽž(ƒ}ƒbƒvƒT[ƒo[‚Ì•ªŽU‚ðs‚Á‚Ä‚¢‚éꇂ̂Ý)
- ‚̃}ƒbƒvƒ[ƒh‚ªI‚í‚Á‚½Žž‚É•\Ž¦‚³‚ê‚Ü‚·B
- E•\Ž¦•û–@‚Íhelp.txt‚Æ“¯‚¶‚Å•’ʂ̃ƒbƒZ[ƒW‚Æ‚µ‚Ä‘—M‚µ‚Ü‚·B
- iƒMƒ‹ƒh’mƒƒbƒZ[ƒW‚Í•¶Žš”§ŒÀ‚ª‚ ‚èAGMƒAƒiƒEƒ“ƒX‚Í’·ŽžŠÔ
- ‰æ–Ê‚Ìã•”‚É•\Ž¦‚³‚ê‚Ä‚µ‚Ü‚¤‚½‚ßj
- E‰ï˜b‚Æ‹æ•Ê‚ª‚‚‚悤‚ÉA"< Message of the Day >"A"< End of MOTD >"
- ‚Ì•¶‚Å㉺‚ðˆÍ‚¢‚Ü‚·B
-
- (map/)
- pc.c
- pc_authok()C³
-
-
---------------
-//0709 by ‚Û‚Û‚Û
-
-EƒXƒNƒŠƒvƒg‚Éemotion’ljÁ
-@emotion n;‚ÆŽg‚¤‚ÆNPC‚ªƒGƒ‚‚ðo‚µ‚Ü‚·Bn‚Í0`33‚ªŽg—p‰Â”\B
-E¸˜B‚ÆŠXƒKƒCƒh‚ÌNPC‚ð–{ŽI‚̑䎌‚ɇ‚킹‚ÄC³B
- (conf/)
- npc_town_refine.txtAnpc_town_guide.txt C³B
- (map/)
- script.c
- buildin_emotion() ’ljÁB
-
---------------
-//0708 by Ž€_
-
-EƒXƒLƒ‹ƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹AƒfƒBƒtƒFƒ“ƒ_[AƒI[ƒgƒK[ƒhŽÀ‘•B
-EƒI[ƒgƒK[ƒh‚ÌꇃK[ƒh‚µ‚Ä‚àƒGƒtƒFƒNƒg‚Ío‚Ü‚¹‚ñBƒ~ƒX‚ɂȂ邾‚¯‚Å‚·B–{ŽI‚Ì•û‚Í•\Ž¦‚³‚ê‚é‚©‚Ç‚¤‚©‚à‚í‚©‚ç‚È‚¢‚µƒpƒPƒbƒgî•ñ‚à‚È‚¢‚Ì‚Å...
-EƒfƒBƒtƒFƒ“ƒ_[‚Í–¢ƒeƒXƒgBbLongAtkDef‚ðŽg‚Á‚Ä‚é‚̂Ńzƒ‹ƒ“ƒJ[ƒh‚̂悤‚ÉbLongAtkDef‚ðã‚°‚镨‚ð‘•”õ‚µ‚ÄŽg‚¤‚Ɖ“‹——£•¨—UŒ‚‚ð‘S‚Ä–³Œø‚É‚Å‚«‚Ü‚·B(‚±‚ê‚à–{ŽI‚ÌŽd—l‚ª‚Ç‚¤‚È‚Ì‚©‚Í‚í‚©‚è‚Ü‚¹‚ñB)
-E‚»‚Ì‘¼×‚©‚¢C³B
- (db/)
- cast_db.txt C³B
- (map/)
- map.h C³B
- map.c
- map_quit() C³B
- skill.h C³B
- skill.c
- skill_castend_nodamage_id()Askill_use_id()Askill_check_condition() C³B
- skill_castend_id()Askill_castend_nodamage_id()Askill_castcancel() C³B
- pc.c
- pc_calcstatus()Apc_setpos()Apc_damage() C³B
- battle.c
- battle_calc_damage()Abattle_damage() C³B
- clif.c
- clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B
- mob.c
- mob_damage() C³B
- itemdb.c
- itemdb_searchrandomid() C³B
-
---------------
-//0707 by Ž€_
-
-E0705‚̈¢C—…”e–PŒ‚̃oƒOC³B
- (db/)
- skill_db.txt
- (map/)
- skill.c
- skill_castend_id()
- skill_castend_pos()
- battle.c
- battle_calc_pc_weapon_attack()
- clif.c
- clif_parse_UseSkillToId()
-
---------------
-//0706 by kalen
-EC³
- conf/npc_warp_umbala.txt
-
---------------
-//0705 by Ž€_
-
-EFX‚ÆC³B
-EƒvƒŒƒCƒ„[‚̃NƒŠƒeƒBƒJƒ‹ŒvŽZ‚ɃoƒO‚ª‚ ‚Á‚½‚Ì‚ÅC³B
-E”š—ô”g“®‚̈—C³B
-Eƒ‚ƒ“ƒN‚̃Rƒ“ƒ{‚ðC³B
-Eˆ¢C—…”e–PŒ‚ÌŽg—p‚É‚æ‚Á‚ă}ƒbƒvŽI‚Ì–³ŒÀƒ‹[ƒvƒoƒOC³B(‚±‚ê‚©‚È‚è’v–½“I‚È•¨‚¾‚Á‚½‚悤‚Å‚·B)
-EƒRƒ“ƒ{‚ÅŽg‚¤ˆ¢C—…”e–PŒ‚Í“G‚ðƒNƒŠƒbƒN‚·‚é•K—v‚ª‚È‚¢‚悤‚ÉC³B
-E–Ò—´Œ‚Å“G‚ð‚«”ò‚΂·‹——£‚ð5ƒZƒ‹‚É•ÏXB‚æ‚Á‚ăRƒ“ƒ{‚ÅŽg‚¤ˆ¢C—…”e–PŒ‚Í‹——£ƒ`ƒFƒbƒN‚ð‚µ‚Ü‚¹‚ñB5ƒZƒ‹”ò‚΂³‚ꂽ“G‚͈¢C—…”e–PŒ‚ÌŽË’ö‚©‚ç—£‚ꂽ‚킯‚È‚Ì‚Å‹——£ƒ`ƒFƒbƒN‚È‚µ‚Å”“®‚µ‚Ü‚·B(–{ŽI‚ÌŽd—l‚È‚ñ‚Ä’m‚è‚Ü‚¹‚ñB)
-Eƒ}ƒbƒv‚Ì–¼‘O‚ð16byte‚©‚ç24bytes‚É•ÏXB(‘債‚½ˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñ‚ªˆÀ‘S‚ׂ̈̕¨‚Å‚·B)
-EƒEƒFƒfƒBƒ“ƒOƒLƒƒƒ‰‚É‚æ‚éˆÆ—Ž‚¿‚ð–h‚®ˆ×‚ÉC³B
-E‚»‚Ì‘¼‚µC³B(ƒeƒXƒg‚Í–w‚ñ‚Ç‚µ‚Ä‚Ü‚¹‚ñB)
- (conf/)
- battle_athena.conf C³B
- (db/)
- skill_db.txt C³B
- (common/)
- mmo.h C³B
- (doc/)
- conf_ref.txt C³B
- item_bonus.txt C³B
- (map/)
- battle.h C³B
- battle.c
- battle_get_flee2()Abattle_calc_pet_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_config_read() C³B
- skill.h C³B
- skill.c
- skill_status_change_start()Askill_castend_damage_id() C³B
- skill_check_condition()Askill_use_id()Askill_blown() C³B
- skill_castend_map()Askill_unit_onlimit()Askill_attack() C³B
- pc.c
- pc_attack_timer()Apc_setpos()Apc_setsavepoint() C³B
- pc_movepos()Apc_calcstatus()Apc_bonus() C³B
- clif.h C³B
- clif.c
- clif_set0078()Aclif_set007b() C³B
- clif_updatestatus()Aclif_initialstatus()Aclif_parse_UseSkillToId() C³B
- clif_skillinfo() ’ljÁB
- map.h C³B
- map.c
- map_setipport()Amap_addmap() C³B
- ‚»‚Ì‘¼”²‚¯‚½Š‚µ‚ ‚èB
-
---------------------
-//0704 by kalen
-
-EUmbala Warp’ljÁ
- conf/npc_warp_umbala.txt
-
---------------------
-//0703 by ‚¢‚Ç
-
-EƒT[ƒo[snapshot
-
---------------
-//0702 by ‚Û‚Û‚Û
-
-Eƒtƒ@[ƒ}ƒV[‚̃GƒtƒFƒNƒg‚ð–{—ˆ‚Ì‚à‚Ì‚É•ÏX
-EƒXƒNƒŠƒvƒg‚Å‚Ì–„‚ßž‚Ý•Ï”‚ÉBaseExp,JobExp,NextBaseExp,NextJobExp’ljÁ
- (map/)
- skill.c
- skill_produce_mix() C³B
- pc.c
- pc_readparam()Apc_setparam() C³B
- (db/)
- const.txt C³B
-
---------------
-//0701 by ‚Ò‚´‚Ü‚ñ
-
-EƒXƒe[ƒ^ƒXˆÙí”»•ÊŽ®“±“üBŠeƒXƒe[ƒ^ƒXˆÙí‚Ì”“®—¦‚ªVIT/INT/MDEF‚ɉe‹¿‚·‚é‚悤‚É‚È‚è‚Ü‚·BŽ‘±ŽžŠÔ’Zk‚Í‚Ü‚½¡“x‚Å_|P|›
-E•sŽ€‚É“€Œ‹‚ªŒø‚¢‚½ƒoƒOC³B
- (map/)
- skill.c
- skill_additional_effect()Askill_castend_nodamage_id() C³B
-
---------------
-//0700 by “ì
-
-E697‚̃oƒOC³B
-@@@@(db/)
- mob_db.txt
-
---------------
-//0699 by Ž€_
-
-E‘•”õ‚̃{[ƒiƒXƒNƒŠƒeƒBƒJƒ‹‚ÍŽ©•ª‚̊ԈႢ‚¾‚Á‚½‚Ì‚ÅbCriticalRate‚ðbCritical‚É•ÏXB‚»‚ê‚Æ0695‚Å‘‚«–Y‚ê‚Å‚·‚ªASPD‚ðã‚°‚éƒJ[ƒh‚â‘•”õ‚̈ꕔ‚ðbAspdAddRate‚©‚çbAspdRate‚É•ÏX‚µ‚Ü‚µ‚½B‚Ý‚·‚Ƃꑃ‚̃Vƒ~ƒ…ƒŒ[ƒ^[‚É‚æ‚é‚ƃhƒbƒyƒ‹ƒJ[ƒh‚Í•¡”‚Å‚àˆê‚‚µ‚©“K—p‚³‚ê‚È‚¢‚Ý‚½‚¢‚¾‚Á‚½‚Ì‚ÅB
- (db/)
- item_db.txt
-
---------------
-//0698 by Ž€_
-
-Eˆê•”‚̃Lƒƒƒ‰‚Éd—Ê‚ª‚O‚É‚È‚Á‚ăJƒvƒ‰‚Ȃlj½‚à‚o‚bC‚m‚b‚o‚ª•\Ž¦‚³‚ê‚È‚‚È‚éƒoƒOC³B(‚»‚ꂾ‚¯)
- (common/)
- mmo.h C³B
- (map/)
- clif.c
- clif_updatestatus() C³B
- pc.c
- pc_calcstatus() C³B
-
---------------
-//0697 by “ì
-
-Emob_dbC³
-@ƒhƒƒbƒv‚ð’†S‚ÉC³B
-@@@@(db/)
- mob_db.txt
-
---------------
-//0696 by Ž€_
-
-EƒoƒOC³B
-EƒeƒŒƒ|[ƒg‚âƒ[ƒv“™‚ÌŽžƒXƒLƒ‹ƒ†ƒjƒbƒg‚©‚甲‚¯‚鈗‚ª“ü‚Á‚Ä
-‚È‚©‚Á‚½‚Ì‚ÅSAFETYWALL“™‚É‚æ‚Á‚ÄŽI—Ž‚¿‚ª‹N‚±‚Á‚½‚悤‚Å‚·B(Šm‚©•ñ‚à
-‚ ‚Á‚½‚ÆŽv‚¢‚Ü‚·‚ª...) ‚æ‚Á‚ÄC³‚Í‚µ‚Ü‚µ‚½‚ªŠm”F‚Í‚µ‚Ä‚Ü‚¹‚ñB•ñ‚ð
-‚¨Šè‚¢‚µ‚Ü‚·B
-EƒXƒLƒ‹‚É‚æ‚é‚«”ò‚΂µˆ—‚ð‚¿‚å‚Á‚ÆC³‚ƃ‚ƒ“ƒXƒ^[‚̃R[ƒh‚ð‚µC³B
-‘½•ª•Ï‚É‚È‚Á‚½‚±‚Æ‚Í‚È‚¢‚ÆŽv‚¢‚Ü‚·‚ª•Ï‚¾‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B
-E‚»‚Ì‘¼×‚©‚¢C³B
- (map/)
- skill.h C³B
- skill.c
- skill_blown()Askill_attack()Askill_unit_move() C³B
- skill_castend_nodamage_id()Askill_castend_damage_id() C³B
- skill_unit_out_all()Askill_unit_out_all_sub() ’ljÁB
- mob.c
- mob_stop_walking()Amob_spawn()Amob_warp() C³B
- mob_can_move()Amob_changestate() C³B
- map.h C³B
- pc.c
- pc_setpos() C³B
- battle.c
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack() C³B
-
---------------
-//0695 by Ž€_
-
-E‚µC³B
-EƒvƒŒƒCƒ„[‚ÌŠî–{ƒpƒ‰ƒ[ƒ^‚ð2byte‚ÉŠg’£B
-Eitem_db.txt‚ðƒ‰ƒOƒiƒQ[ƒg‚Ìà–¾‚ɇ‚킹‚ÄC³B
-EbAddEff‚ÆbResEff‚ÌŠm—¦‚ð•S•ª—¦‚©‚ç–œ•ª—¦‚É•ÏXB
-EƒXƒNƒŠƒvƒgstatusup‚Æstatusup2’ljÁB
-statusup bStr; ‚̂悤‚ÉŽg‚Á‚Ä‹@”\‚̓Xƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ðŒ¸‚ç‚µ‚Ä
-Šî–{ƒpƒ‰ƒ[ƒ^‚ð1ã‚°‚éB
-statusup2 bInt,n; ‚̂悤‚ÉŽg‚Á‚Ä‹@”\‚̓Xƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ðŒ¸‚ç‚³‚¸‚É
-Šî–{ƒpƒ‰ƒ[ƒ^‚ðnã‚°‚éB
-E‚»‚Ì‘¼×‚©‚¢C³B
- (conf/)
- battle_athena.conf C³B
- (db/)
- item_db.txt C³B
- const.txt C³B
- (doc/)
- item_bonus.txt C³B
- conf_ref.txt C³B
- (common/)
- mmo.h C³B
- (char/)
- char.c
- mmo_char_send006b()Aparse_char() C³B
- (map/)
- map.h C³B
- clif.h C³B
- clif.c
- clif_initialstatus()Aclif_updatestatus() C³B
- pc.h C³B
- pc.c
- pc_bonus()Apc_calcstatus()Apc_equippoint()Apc_equipitem() C³B
- pc_jobchange()Apc_checkbaselevelup()Apc_statusup() C³B
- pc_statusup2() ’ljÁB
- battle.h C³B
- battle.c
- battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pc_weapon_attack()Abattle_config_read() C³B
- skill.c
- skill_additional_effect()Askill_status_change_start() C³B
- script.c
- buildin_statusup()Abuildin_statusup2() ’ljÁB
- atcommnad.c C³B
-
---------------
-//0694 by Ž€_
-
-EƒoƒOC³‚Æׂ©‚¢C³B
-EbCriticalRate‚ª³‚µ‚“K—p‚³‚ê‚È‚©‚Á‚½–â‘èC³B
-Eƒyƒbƒg‚É‚æ‚éƒXƒe[ƒ^ƒXƒ{[ƒiƒX’ljÁBƒXƒe[ƒ^ƒXƒ{[ƒiƒX‚Í‘•”õ‚Ì
-ƒXƒNƒŠƒvƒg‚É‚æ‚Á‚Äݒ肵‚Ü‚·B‚½‚¾ƒyƒbƒg‚É‚æ‚éƒ{[ƒiƒX‚̓J[ƒh‚É‚æ‚镨‚Æ“¯‚¶ˆµ‚¢‚ð‚µ‚Ü‚·B‚»‚µ‚Ä‘®«‚Ì“K—p‚͈ê”Ô—D懈ʒႢ‚Å‚·B¡‚͉½‚à“ü‚Á‚Ä‚Ü‚¹‚ñ‚ª...
- (conf/)
- battle_athena.conf C³B
- (db/)
- const.txt C³B
- pet_db.txt C³B
- (doc/)
- item_bonus.txt C³B
- conf_ref.txt C³B
- db_ref.txt C³B
- (map/)
- map.h C³B
- map.c
- map_quit() C³B
- battle.h C³B
- battle.c
- battle_calc_pc_weapon_attack()Abattle_weapon_attack() C³B
- battle_calc_magic_attack()Abattle_calc_misc_attack() C³B
- battle_config_read() C³B
- pc.c
- pc_calcstatus()Apc_bonus()Apc_setpos()Apc_authok() C³B
- pc_damage()Apc_autosave_sub() C³B
- pet.h C³B
- pet.c
- pet_hungry()Apet_birth_process()Apet_recv_petdata()Apet_food() C³B
- pet_return_egg()Apet_ai_sub_hard()Aread_petdb() C³B
- clif.c
- clif_sendegg()Aclif_parse_LoadEndAck() C³B
- atcommand.c C³B
- makefile C³B
-
---------------
-//0693 by ŒÓ’±—–
-
-ESC_*‚Ì—ñ‹“•\‚ðƒŠƒiƒ“ƒoƒŠƒ“ƒO
- ƒNƒ‰ƒCƒAƒ“ƒg‚É’Ê’m‚·‚é‚Ì‚ð64–¢–ž‚©‚ç128–¢–ž‚É‘‚₵‚½
- ƒpƒPƒbƒgî•ñ‚ɇ‚¤‚悤‚ɃŠƒiƒ“ƒo[
- StatusChange‚Ì”z—ñ‚ð128‚©‚ç192‚É‘‚₵‚½‚̂Ńƒ‚ƒŠŽg—p—Ê‚ª‘‚¦‚Ü‚·B
-
- (db/)
- const.txt
- SC_* ‚Ì”’l‚ð•ÏX
- (map/)
- skill.h
- SC_* ‚Ì—ñ‹“‚Ì”’l‚ð•ÏX
- map.h
- MAX_STATUSCHANGE‚ð128‚©‚ç192‚É‘‚₵‚½
- skill.c
- skill_status_change_start(),skill_status_change_end(),
- skill_status_change_clear()‚Ì’Ê’mˆ—‚ð•ÏX
-
-E‰‰‘t/ƒ_ƒ“ƒX‚̈—‚ð•ÏX
- ‰‰‘t/ƒ_ƒ“ƒX’†‚©‚Ç‚¤‚©‚ðSC_DANCING‚Å”»’è‚·‚é‚悤‚É•ÏX
- i”»’舗‚ª‘½‚‘¬‰»‚³‚ꂽ‚Í‚¸j
- ƒ[ƒv(ƒ}ƒbƒvˆÚ“®‚┈‚È‚Ç)‚·‚é‚Ɖ‰‘t/ƒ_ƒ“ƒX‚ð’†’f‚·‚é‚悤‚É•ÏX
-
- skill.h/skill.c
- skill_check_dancing()íœAskill_stop_dancing()’ljÁ
- skill_delunitgroup(),skill_initunitgroup()•ÏX
- skill_status_change_start()•ÏX
- skill_castend_nodamage_id()•ÏX
- ‘‚«‘¹‚¶‚ª‚ ‚é‚©‚àEE
- pc.c
- pc_calcstatus(),pc_setpos(),pc_damage()•ÏX
-
-E•s‹¦˜a‰¹ƒXƒLƒ‹‚ÌC³
- (db/)
- skill_db.txt
- •s‹¦˜a‰¹ƒXƒLƒ‹‚ÌHIT”C³
- (map/)
- skill.c
- skill_status_change_timer()•ÏX
- battle.c
- battle_calc_misc_attack()C³
-
---------------
-//0692 by ŒÓ’±—–
-
-EƒAƒhƒŠƒuƒXƒLƒ‹‚ªŽg—p‚Å‚«‚È‚¢–â‘èC³iskill_db‚Ì“Y•t‚µ–Y‚êj
- (db/)
- skill_db.txt
- ƒAƒhƒŠƒu‚ÌÁ”ïSP‚ð1‚ÉC³
-
-Emob_db2.txt‚ª‚ ‚ê‚Îmob_db.txt‚ɃI[ƒo[ƒ‰ƒCƒh‚·‚é‚悤‚É
- ƒIƒŠƒWƒiƒ‹mob‚ðì‚Á‚Ä‚él‚ÍŽg‚¤‚Æ•Ö—˜‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-
- mob.c
- mob_readdb()
-
-EŽI—Ž‚¿ƒoƒO•ñŽž‚Ì‚½‚߂̃Xƒ^ƒbƒNƒoƒbƒNƒgƒŒ[ƒXƒƒOŠ“¾•û–@‚ðЉî
- ŽI—Ž‚¿ƒoƒO‚Ì•ñŽž‚ÉA‚±‚Ìî•ñ‚ðƒRƒsƒy‚·‚é‚ÆŠJ”ŽÒ‚ªŠì‚Ñ‚Ü‚·B
- Cygwin‚Åcore‚Ì“f‚©‚¹‚é•û–@‚àЉ‚Ä‚Ü‚·B
-
- (doc/)
- coredump_report.txt
-
---------------
-//0691 by ŒÓ’±—–
-
-Eitem_db2.txt‚ª‚ ‚ê‚Îitem_db.txt‚ɃI[ƒo[ƒ‰ƒCƒh‚·‚é‚悤‚É
- ƒIƒŠƒWƒiƒ‹ƒAƒCƒeƒ€‚ðì‚Á‚Ä‚él‚ÍŽg‚¤‚Æ•Ö—˜‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-
- itemdb.c
- itemdb_readdb()C³
-
-E‰‰‘t/ƒ_ƒ“ƒXŒnƒXƒLƒ‹‰¼ŽÀ‘•
- E‰‰‘t/ƒ_ƒ“ƒX’†‚͈ړ®‚ª’x‚AƒXƒLƒ‹‚àŽg‚¦‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½
- EƒAƒhƒŠƒuƒXƒLƒ‹‚ʼn‰‘t/ƒ_ƒ“ƒX‚ð’†’f‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- E‰‰‘t/ƒ_ƒ“ƒX‚ÍΉ»‚Ȃǂ̈ÙíAMHP‚Ì1/4ˆÈã‚̃_ƒ[ƒW‚Å’†’f‚µ‚Ü‚·
- EƒLƒƒƒ‰ƒNƒ^[ƒOƒ‰ƒtƒBƒbƒN‚͉‰‘t/ƒ_ƒ“ƒX‚µ‚Ü‚¹‚ñ
- E‰‰‘t/ƒ_ƒ“ƒX’†‚ÌSPÁ”ï‚Í–¢ŽÀ‘•‚Å‚·
- EˆÚ“®‚µ‚Ä‚àŒø‰Ê”͈͂͂‚¢‚Ä‚«‚Ü‚¹‚ñ
- Ed•¡‚µ‚Ä‚à•s‹¦˜a‰¹‚Ȃǂɕω»‚µ‚Ü‚¹‚ñ
- EƒGƒtƒFƒNƒg‚ªo‚Ä‚àŒø‰Ê‚Í–¢ŽÀ‘•‚Ì‚à‚Ì‚ª‚ ‚è‚Ü‚·
- E‚Ù‚Æ‚ñ‚Ç–¢ƒeƒXƒg‚È‚Ì‚Å‘½”‚Ì•s“s‡‚ª‚ ‚é‚ÆŽv‚¢‚Ü‚·
-
- skill.h
- SC_* ‚Ì—ñ‹“•\‚ðC³
- skill.c
- skill_check_dancing()’ljÁ
- SkillStatusChangeTable[]C³
- skill_unit_onout(), skill_status_change_start(),
- skill_status_change_timer(),skill_unitsetting(),
- skill_castend_id(),skill_castend_pos(),skill_castend_map(),
- skill_castend_nodamage_id()C³
- ‚»‚Ì‘¼‚Í–Y‚ê‚Ü‚µ‚½
- pc.c
- pc_calcstatus(),pc_damage()C³
-
---------------
-//0690 by ”g˜Q
-
-Eׂ©‚¢C³
- (db/)
- item_db.txt ‚ƃƒMƒ“ƒMƒ‡ƒ‹ƒh‚Ìbonus‚ðC³B
- (doc/)
- item_bonus.txt C³B
-
---------------
-//0689 by Ž€_
-
-E‘qŒÉƒoƒOC³‚Æׂ©‚¢C³B
- (map/)
- pc.c
- pc_modifybuyvalue()Apc_modifysellvalue() C³B
- storage.c
- storage_storageopen() C³B
- storage_storage_quit()Astorage_storage_save() C³B
-
---------------
-//0688 by ¹
-
-EƒfƒBƒXƒJƒEƒ“ƒgAƒRƒ€ƒpƒ‹ƒVƒ‡ƒ“ƒfƒBƒXƒJƒEƒ“ƒgAƒI[ƒo[ƒ`ƒƒ[ƒW‚ª“K—p‚³‚ê‚È‚©‚Á‚½–â‘è‚ðC³B
- (map/)
- pc.c
- pc_modifybuyvalue() C³B
- pc_modifysellvalue() C³B
-
---------------
-//0687 by Ž€_
-
-E‚µC³B
-Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚Å)
-Eitem_avail.txt‚̈—‚ð•ÏXBƒAƒCƒeƒ€ID‚ÌŒã‚É0‚ð“ü‚ê‚é‚Æ¡‚Ü‚Å’Ê‚è‚ÉŽg—p•s‰Â”\‚ɂȂ邪0ˆÈŠO‚Ì”’l‚ð“ü‚ê‚é‚ÆŽg—p•s‰Â”\‚Å‚Í‚È‚‚»‚Ì”’l‚ðƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚ÄŒ©‚½–Ú‚¾‚¯‚ð‚»‚ê‚É•ÏX‚µ‚Ü‚·B‚æ‚Á‚ĈƗŽ‚¿ƒAƒCƒeƒ€‚ð•Ê‚Ì•¨‚É•\Ž¦‚µ‚ĈƗŽ‚¿‚ð–h‚®‚±‚Æ‚ª‚Å‚«‚Ü‚·B(•\Ž¦‚¾‚¯•Ï‚¦‚ÄŽI‚̈—‚Í–{“–‚̃AƒCƒeƒ€ID‚Ì•¨‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·BC³‚Í‘S‚Ä‚µ‚½‚ÆŽv‚¢‚Ü‚·‚ª”²‚¯‚½Š‚ª‚ ‚é‚©‚à’m‚è‚Ü‚¹‚Ì‚ÅŒ©‚½–Ú•ÏX‚µ‚½ƒAƒCƒeƒ€‚ňƗŽ‚¿‚ª‹N‚±‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B) ŽI‚̈—‚Í‚±‚ꂪŒÀŠE‚Å‚·B(‚È‚‚Æ‚àŽ©•ª‚É‚Í) ƒAƒCƒeƒ€‚ª“¯‚¶•¨‚ª“ñ‚•\Ž¦‚³‚ê‚ĊԈႢˆÀ‚¢‚Æ‚©‚Ç‚¤‚±‚¤‚Æ‚©‚Ì•¶‹å‚ðŒ¾‚¢‚½‚¢l‚͈Æì‚ê‚æBˆÈãB
-EƒWƒ‹ƒ^ƒX‚ƃAƒŠƒX‚̃Rƒ}ƒ“ƒgƒAƒEƒg‰ðœBitem_avail.txt‚Å—‘‚ðƒ‹ƒr[‚ƃAƒNƒAƒ}ƒŠƒ“‚Å•\Ž¦‚µ‚ĕߊlƒAƒCƒeƒ€‚à‘¼‚Ì•¨‚É•\Ž¦‚·‚é‚悤‚É•ÏX‚µ‚Ä‚¢‚Ü‚·B
-Eƒ_ƒ[ƒWŒvŽZ‚̃oƒOC³B(‘債‚½•¨‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ª‹|‚¾‚¯‚¿‚å‚Á‚Æ–â‘肪‚ ‚Á‚½‚悤‚Å‚·B)
-E” “™‚̃AƒCƒeƒ€‚Å“¾‚½‘•”õ•i‚Í–¢ŠÓ’è‚É‚È‚é‚悤‚É•ÏXB
-E‘•”õƒ{[ƒiƒX‚Ì“à•”ˆ—C³‚Æ‚µ•ÏXB(Ú‚µ‚¢‚±‚Æ‚Íitem_bonus.txt‚Å)
-EƒLƒƒƒ‰ŽI‚Ƀe[ƒ^‚𑗂鎞ƒLƒƒƒ‰A‘qŒÉAƒyƒbƒg‚̃e[ƒ^‚𓯎ž‚É‘—‚é‚悤‚É•ÏXB(ƒLƒƒƒ‰ŽI‚ƃ}ƒbƒvŽI‚ÌŠÔ‚Ì“]‘——Ê‚ª‘‚¦‚é‚©‚à’m‚è‚ê‚Ü‚¹‚ñ‚ªƒf[ƒ^‚𓯊ú‰»‚ׂ̈ł·B)
-EFW‚Ì“®ìŠÔŠu‚ð0.25•b‚©‚ç0.1•b‚É•ÏXB(‚±‚ê‚Å ‚蔲‚Í‚µŒ¸‚é‚Í‚¸‚Å‚·B)
-EƒJ[ƒgƒŒƒ{ƒŠƒ…ƒVƒ‡ƒ“‚Å‚Ç‚ñ‚Èó‘ÔˆÙí‚à‚©‚©‚ç‚È‚¢‚悤‚É•ÏXB
- (conf/)
- battle_athena.conf C³B
- (db/)
- const.txt C³B
- item_avail.txt C³B
- pet_db.txt C³B
- (doc/)
- conf_ref.txt C³B
- item_bonus.txt C³B
- (map/)
- map.h C³B
- map.c
- map_quit() C³B
- battle.h C³B
- battle.c
- battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_get_dmotion()Abattle_config_read() C³B
- pc.c
- pc_calcstatus()Apc_bonus()Apc_bonus3()Apc_setpos() C³B
- pc_makesavestatus()Apc_autosave_sub()Apc_modifybuyvalue() C³B
- pc_modifysellvalue()Apc_stop_walking() C³B
- skill.c
- skill_additional_effect()Askill_unitsetting() C³B
- clif.c
- clif_buylist()Aclif_selllist()Aclif_set009e()Aclif_set0078() C³B
- clif_set007b()Aclif_additem()Aclif_itemlist()Aclif_equiplist() C³B
- clif_storageitemlist()Aclif_storageequiplist()Aclif_changelook() C³B
- clif_arrow_create_list()Aclif_useitemack()Aclif_tradeadditem() C³B
- clif_storageitemadded()Aclif_getareachar_item() C³B
- clif_skill_produce_mix_list()Aclif_cart_additem()Aclif_cart_itemlist() C³B
- clif_cart_equiplist()Aclif_vendinglist()Aclif_openvending() C³B
- clif_produceeffect()Aclif_sendegg()Aclif_pet_equip()Aclif_mvp_item() C³B
- clif_pet0078()Aclif_pet007b() C³B
- itemdb.h C³B
- itemdb.c
- itemdb_searchrandomid()Aitemdb_search()Aitemdb_readdb() C³B
- itemdb_read_itemavail()Aitemdb_read_itemvaluedb() C³B
- itemdb_equippoint() íœB
- storage.h C³B
- storage.c
- storage_storage_quitsave() ->storage_storage_quit()‚É•ÏX‚ÆC³B
- storage_storageclose() C³B
- atcommand.c C³B
- pet.c
- pet_change_name()Apet_equipitem()Apet_unequipitem() C³B
- pet_birth_process()Apet_return_egg() C³B
- script.c
- buildin_getitem() C³B
- mob.c
- mob_stop_walking() C³B
- makefile C³B
-
---------------
-//0686 by ¹
-
-Eׂ©‚¢C³B
- (map/)
- pc.h C³B
-
---------------
-//0685 by ”g˜Q
-
-E0683A0684‚Å‚Ìbonus‚̒ljÁ‚É‚Æ‚à‚È‚Á‚Äitem_db.txt‚ðC³
-E‘¼FXC³
- (db/)
- item_db.txt C³B
- (doc/)
- item_bonus.txt C³B
-
---------------
-//0684 by Ž€_
-
-Eׂ©‚¢C³B
-EŽ€‚ñ‚¾‚Ó‚è‚ÌŽžƒXƒLƒ‹‚ƃAƒCƒeƒ€‚ªŽg‚¦‚È‚¢‚悤‚É•ÏXB
-EbInfiniteEndure’ljÁB‹@”\‚Í–³ŒÀƒCƒ“ƒfƒ…ƒAB
-Eƒ_ƒ[ƒW•\Ž¦‚̈—‚µ•ÏXB
- (db/)
- const.txt C³B
- (doc/)
- item_bonus.txt C³B
- (map/)
- map.h C³B
- pc.c
- pc_calcstatus() C³B
- pc_equipitem()Apc_unequipitem() C³B
- clif.c
- clif_parse_UseItem()Aclif_parse_UseSkillToId() C³B
- clif_parse_UseSkillToPos()Aclif_parse_UseSkillMap() C³B
- clif_damage()Aclif_skill_damage()Aclif_skill_damage2() C³B
- clif_parse_LoadEndAck() C³B
- skill.c
- skill_status_change_timer() C³B
-
---------------
-//0683 by Ž€_
-
-EƒoƒOC³‚Æbonus’ljÁB
-E‘qŒÉƒoƒOA‘®«ƒoƒOC³‚Æ‚»‚Ì‘¼‚̃oƒOC³B
-EƒXƒNƒŠƒvƒgbonus3’ljÁB¡‚ÍbAddMonsterDropItem‚¾‚¯‚ª‘Ήž‚É‚È‚Á‚Ä‚¢‚Ü‚·B
-Ebonus bRestartFullRecover;n;“™‚Ån‚Í–³ˆÓ–¡‚¾‚¯‚ÇÁ‚·‚Ì‚Í‚¿‚å‚Á‚Æ‚Ü‚¸‚¢‚Å‚·‚Ì‚Å0‚É‚µ‚Ä“ü‚ꂽ•û‚ª‚¢‚¢‚Å‚·Bbonus‚Í2‚‚̔’l‚ª•K—v‚ȃXƒNƒŠƒvƒg‚È‚Ì‚ÅB
-EbDefRatioAtk‚ð–hŒä–³Ž‹‚É•ÏXB
-E0677‚Å‘‚«–Y‚êB
-E•Ší‚Ì‘®«“K—p—D懈ʂ𻑢>ƒJ[ƒh>•Ší‚É•ÏXB»‘¢‚ªÅ—Dæ‚Å‚·B(‘®«‚ª‚ ‚鎞‚ɘb‚Å‚·B‘®«‚ª‚È‚¢ê‡‘®«‚ ‚镨‚Éã‘‚«‚³‚ꂽ‚è‚Í‚µ‚Ü‚¹‚ñB)
-E‘•”õ‚Å“K—p‚³‚ê‚éŒø‰Ê‚Ì—D懈ʂð‰EŽè>¶Žè>‘Ì>“ªã>“ª’†>“ª‰º>ƒ[ƒu>ŒC>ƒAƒNƒZƒTƒŠ[1>ƒAƒNƒZƒTƒŠ[2>–î‚ÉÝ’èB(–{ŽIŽd—l‚ª‚Ç‚¤‚È‚Ì‚©•ª‚©‚邱‚Æ‚ª‚Å‚«‚»‚¤‚È•¨‚Å‚à‚È‚¢‚̂ŃAƒeƒi‚ÌŽd—l‚ÆŒ¾‚¤‚±‚Æ‚ÅB) ‰EŽè‚ªÅ—Dæ‚Å‚·B
-E•Ší‚ÌŽË’ö‚ð‰EŽè‚ƶŽè‚Ì•Ší‚Ì’†‚Å’·‚¢•¨‚ð“K—p‚·‚é‚悤‚É•ÏXB
- (db/)
- const.txt C³B
- (doc/)
- item_bonus.txt C³B
- (map/)
- map.h C³B
- battle.c
- battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_calc_pet_weapon_attack()Abattle_calc_magic_attack() C³B
- battle_damage() C³B
- pc.c
- pc_autosave_sub()Apc_calcstatus() C³B
- pc_bonus()Apc_bonus2() C³B
- pc_bonus3() ’ljÁB
- script.c
- buildin_bonus3() ’ljÁB
- mob.c
- mob_once_spawn()Amob_damage() C³B
- storage.h C³B
- storage.c
- storage_storage_save() ’ljÁ
- atcommand.c C³B
-
---------------
-//0682 by ¹
-
-EƒXƒs[ƒhƒAƒbƒvƒ|[ƒVƒ‡ƒ“Œn‚̃oƒOC³
- (map/)
- pc.c
- pc_calcstatus() C³B
-
---------------
-//0681 by Ž€_
-
-E‘•”õƒoƒOC³B
- (map/)
- pc.c
- pc_equipitem() C³B
-
---------------
-//0680 by ¹
-
-Eׂ©‚¢C³B
-Eu@monstervƒRƒ}ƒ“ƒh‚Ń‚ƒ“ƒXƒ^[ID‚ÌŽw’è‚Éu-1vAu-2v“™‚ðŽw’è‚·‚é‚Æ
-@ƒ‚ƒ“ƒXƒ^[‚ðƒ‰ƒ“ƒ_ƒ€‚Å¢ŠÒ‚Å‚«‚é‹@”\‚ð’ljÁB
- (map/)
- mob.c
- atcommand.c
-
---------------
-//0679 by ”g˜Q
-
-E0676‚ÅV‚µ‚¢ƒAƒCƒeƒ€Œø‰Ê‚ªŽÀ‘•‚³‚ꂽ‚Ì‚ÅAitem_db.txt‚ðC³(bonus bAddMonsterDropItem,n,x; ‚ÍAŽí‘°”»’肪‚Å‚«‚È‚¢‚Ì‚Å‚Æ‚è‚ ‚¦‚¸•Û—¯‚µ‚Ü‚µ‚½B)
-E‘¼FXC³
- (db/)
- item_db.txt
- job_db1.txt
- (doc/)
- item_bonus.txt
-
---------------
-//0678 by ¹
-
-E¢ŠÒŠÖ˜A‚Ìׂ©‚¢C³B
- (map/)
- mob.c
- mob_once_spawn_area() C³B
-
---------------
-//0677 by Ž€_
-
-Eׂ©‚¢C³B
-EƒAƒCƒeƒ€”„”ƒ‚É‚æ‚Á‚Ä“¾‚ç‚ê‚éŒoŒ±’l‚ðƒJ[ƒh‚É‚æ‚éƒXƒLƒ‹‚Å‚Í“¾‚ç‚ê‚È‚¢‚悤‚ÉC³B
-E“Å‚ÉŠ|‚©‚é‚ÆŽ©‘R‰ñ•œ‚Å‚«‚È‚¢‚悤‚ÉC³B
-E0676‚Å‘‚«–Y‚êB»‘¢•Ší‚Ìꇻ‘¢‚É‚æ‚Á‚Ä—^‚¦‚½‘®«‚ª•Ší‚Ì‘®«‚æ‚è—D悵‚Ä“K—p‚³‚ê‚é‚悤‚É•ÏXB(»‘¢•Ší‚ª–³‘®«‚Ìꇂ͓K—p‚³‚ê‚Ü‚¹‚ñB)
- (doc/)
- item_bonus.txt ŒëŽšC³B
- (map/)
- npc.c
- npc_buylist()Anpc_selllist() C³B
- pc.c
- pc_calcstatus()Apc_natural_heal_sub() C³B
-
---------------
-//0676 by Ž€_
-
-EFX‚ÆC³B
-Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚Å)
-E‚Ý‚·‚Ƃꑃ‚ðŽQl‚µ‚ă_ƒ[ƒWŒvŽZ‚ð‚µC³B
-E‘•”õbonus‚ÉFX‚ƒljÁB(Ú‚µ‚¢‚±‚Æ‚Íitem_bonus.txt‚Å)
-EŽ©“®ƒZ[ƒu‚·‚鎞(ƒLƒƒƒ‰ŽI‚Ƀf[ƒ^‚𑗂鎞)‘qŒÉ‚̃f[ƒ^‚à‘—‚é‚悤‚É•ÏXB
-E0667‚ÅŒ¾‚¢–Y‚êBƒJ[ƒg‚ðŠO‚µ‚Ä‚àƒAƒCƒeƒ€‚ªÁ‚¦‚È‚¢‚悤‚É•ÏXB(–{ŽI‚ÅÁ‚¦‚é‚Ì‚ªŽd—l‚¾‚ÆŽv‚Á‚Ä‚¢‚½‚¯‚ÇC³‚³‚ꂽ‚Ý‚½‚¢‚È‚Ì‚ÅB)
-EŽæˆø—v¿‚ðŽó‚¯‚鑤‚ÍŠî–{ƒXƒLƒ‹‚ðƒ`ƒFƒbƒN‚µ‚È‚¢‚悤‚ÉC³B(Žó‚¯‚鑤‚ÌŠî–{ƒXƒLƒ‹ƒ`ƒFƒbƒN‚ÍŽ©•ª‚ª“ü‚ꂽ•¨‚Å‚Í‚È‚¢‚Å‚·B‚¢‚‚̊Ԃɂ©“ü‚Á‚Ä‚¢‚½‚Ì‚Å휂µ‚Ü‚µ‚½B)
-E–h‹ï‚̸˜Bƒ{[ƒiƒX‚ð’[”–³Ž‹‚É•ÏXB(‚±‚ꂪ–{ŽI‚ÌŽd—l‚Ý‚½‚¢‚È‚Ì‚Å)
-EƒAƒ“ƒNƒ‹‚̈—‚µ•ÏXB(‚©‚©‚ç‚È‚¢‚ÆŒ¾‚¤•ñ‚ª‚ ‚è‚Ü‚µ‚½‚Ì‚Å...)
-EƒvƒŒƒCƒ„[‚̃Xƒe[ƒ^ƒXŒvŽZ‚Å–â‘è‚ ‚è‚»‚¤‚ÈŠC³B
-EƒJ[ƒh‚ÌID‚Å‹@”\‚ªŒˆ‚Ü‚Á‚Ä‚¢‚½ƒJ[ƒh‚àƒXƒNƒŠƒvƒg‚É‚æ‚Á‚Ä•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É•ÏXB(Ú‚µ‚¢‚±‚Æ‚Íitem_bonus.txt‚Å)
-EaspdŒvŽZ•û–@‚µ•ÏXB
-E–î‚ÉbCriticalAbAtkEleAbHitAbAddEleAbAddRaceAbAddSizeAbAddEff‚ð“K—p‚Å‚«‚é‚悤‚É•ÏXB–î‚ðŽg‚¤ƒXƒLƒ‹‚â‹|‚É‚æ‚éUŒ‚‚¾‚¯‚É–î‚ÌbCriticalAbAtkEleAbHitAbAddEleAbAddRaceAbAddSizeAbAddEff‚ª“K—p‚³‚ê‚é‚悤‚ÉC³B
-EƒLƒŠ‚ÌŽÀ‘•‚ɈׂÉC³‚Í‚µ‚Ü‚µ‚½‚ªƒLƒŠ‚ª–hŒä–³Ž‹‚È‚Ì‚©‚Ç‚¤‚©‚ª‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚Å–hŒä–³Ž‹‚Í‚µ‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B
-EƒeƒXƒg‚µ‚½•¨‚ÍbAddMonsterDropItem‚ÆbGetZenyNum‚¾‚¯‚Ȃ̂ųí‚É“®ì‚·‚é‚©‚Ç‚¤‚©‚Ì•ñ‚ª—~‚µ‚¢Š‚Å‚·B(‚‚¢‚Å‚Éitem_db‚ÌC³‚à...‚±‚ê‚Å‹zŽûŒn‚ƃI[ƒgƒXƒyƒ‹ŒnˆÈŠO‚Í–w‚ÇŽÀ‘•‚Å‚«‚é‚Í‚¸‚Å‚·B‘½•ª...)
-E‚»‚Ì‘¼‚ÍŠo‚¦‚Ä‚È‚¢‚¯‚ÇC³‚µ‚½Š‚ª‚µ‚ ‚é‚©‚à...
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- item_bonus.txt C³B
- (db/)
- const.txt C³B
- (char/)
- inter.c
- inter_init() C³B
- int_storage.c
- mapif_parse_SaveStorage() C³B
- (map/)
- trade.c
- trade_traderequest() C³B
- pc.h C³B
- pc.c
- pc_autosave_sub()Apc_calcstatus() C³B
- pc_bonus()Apc_bonus2() C³B
- pc_setrestartvalue()Apc_setequipindex() C³B
- pc_check_equip_wcard()Apc_check_equip_dcard()Apc_check_equip_card() íœ
- ‚»‚Ì‘¼C³B
- skill.h C³B
- skill.c C³B
- skill_castend_nodamage_id()Askill_unit_onplace() C³B
- skill_check_condition()Askill_additional_effect() C³B
- skill_attack()Askill_status_change_start() C³B
- map.h C³B
- battle.h C³B
- battle.c
- battle_get_def()Abattle_get_mdef2() C³B
- battle_weapon_attack()Abattle_damage() C³B
- battle_calc_magic_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pet_weapon_attack() C³B
- battle_calc_misc_attack()Abattle_config_read() C³B
- mob.c
- mob_damage() C³B
- pet.c
- pet_target_check() C³B
- clif.c
- clif_set0078()Aclif_set007b()Aclif_changelook() C³B
- atcommand.c C³B
-
---------------
-//0675 by ”g˜Q
-
-EŠØŽI‚Å‘º³‚ÌŒø‰Ê‚ª•ÏX‚³‚ꂽ‚Ì‚Å•ñ‚ðŒ³‚Éitem_db.txt‚ðC³
-Ejob_db1.txt‚ðC³
- (db/)
- item_db.txt
- job_db1.txt
-
---------------
-//0674 by npc
-
-Eƒtƒ@[ƒ}ƒV[‚̉¼ŽÀ‘•B
- (db/)
- produce_db.txt
- (map/)
- skill.c
-
---------------
-//0673 by “ì
-
-EW’†—ÍŒüã‚É‘•”õ•i‚̕Ⳃª“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B
-@@@@@(map/)@@@
-@@@@@ pc.c
-
---------------
-//0672 by “ì
-
-EW’†—ÍŒüã‚É‘•”õ•i‚̕Ⳃª“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B
-@@@@@(map/)@@@
-@@@@@ pc.c
-
---------------
-//0672 by ¹
-
-Eƒ‚ƒ“ƒXƒ^[Œn‚̃oƒOC³(‚·‚Ý‚Ü‚¹‚ñA‚Ü‚¾Žc‚Á‚Ä‚Ü‚µ‚½(^^; )
- (map/)
- mob.c
-
---------------
-//0671 by ¹
-
-EIDƒ`ƒFƒbƒN”͈͂ÌC³‘¼B
-E@monster‚Å”‚ðŽw’肵‚È‚‚Ăࢊ҂ł«‚é‚悤‚ÉC³B
- (map/)
- atcommand.c
- battle.c
- battle.h
- mob.c
- pet.c
- (conf/)
- battle_athena.conf
- (doc/)
- conf_ref.txt
-
---------------
-//0670 by RR
-
-Eƒ‚ƒ“ƒXƒ^[ƒhƒƒbƒv—¦‚ðC³(–{ŽI€‹’ADB‚Å‚ÌÝ’è+1/10000)B
-E—Ž‰º—¦‚O‚Éݒ肵‚½ƒAƒCƒeƒ€‚ð—Ž‚Æ‚·‚©‚Ç‚¤‚©‚ðbattle_athena.conf‚ÅÝ’è‰Â”\‚ÉB
- (map/)
- mob.c
- mob_damage() C³B
- battle.c
- battle.h
- (conf/)
- battle_athena.conf
-
---------------
-//0669 by ¹
-
-Eƒ‚ƒ“ƒXƒ^[ƒhƒƒbƒv‚ÌC³B
- (map/)
- mob.c
- mob_damage() C³B
-
---------------
-//0668 by ¹
-
-Eƒ‚ƒ“ƒXƒ^[ID‚͈̔̓`ƒFƒbƒN‚ðC³B
- (map/)
- mob.c
- mob_dbAmob_once_spawn()Amob_once_spawn_area()A
- mob_summonslave()Amob_read_randommonster()Amob_readdb() C³B
-
---------------
-//0667 by Ž€_
-
-EÅ‘åHPŒvŽZŽ®‚ðƒ~ƒXƒgƒŒ‘ƒ‚ðŽQl‚µ‚ÄC³B(‘½•ª‚±‚ê‚Å–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚ÆŽv‚¢‚Ü‚·B)
-E–h‹ï‚̸˜Bƒ{[ƒiƒX‚ð0.7‚É•ÏXB(¡‚Í’[”‚ðŽlŽÌŒÜ“ü‚µ‚Ä‚¢‚Ü‚·‚ª–{ŽI‚ª’[”–³Ž‹‚È‚çC³‚µ‚Ä‚¨‚«‚Ü‚·B)
-E@refineƒRƒ}ƒ“ƒh‚Å‘•”õêŠID‚É0‚ð“ü‚ê‚é‚Æ‘•”õ‚µ‚Ä‚¢‚é‘S‚Ä‚Ì‘•”õ‚ð¸˜B‚·‚é‚悤‚É•ÏXB
-E‚»‚Ì‘¼×‚©‚¢C³B
- (db/)
- item_db.txt
- 7140A7142‚ðŒ³‚É–ß‚µ‚Ä0666‚Ì•¨‚̓Rƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½B
- job_db1.txt C³B
- refine_db.txt C³B
- (map/)
- mob.c
- mob_once_spawn() C³B
- itemdb.c
- itemdb_read_randomitem() C³B
- pet.c
- pet_food() C³B
- pc.c
- pc_readdb()Ado_init_pc()Apc_calcstatus()Apc_setoption() C³B
- pc_calc_sigma() ’ljÁB
- ‚»‚Ì‘¼C³B
- map.h C³B
- battle.c
- battle_calc_magic_attack()Abattle_calc_misc_attack() C³B
- atcommand.c C³B
-
---------------
-//0666 by ¹
-
-Eƒ‰ƒ“ƒ_ƒ€ƒAƒCƒeƒ€‚Ìׂ©‚¢C³B
-Ebattle_athena.conf‚Ì€–ڒljÁB
-EŒÃ–Ø‚ÌŽ}‚Å¢ŠÒ‚·‚郂ƒ“ƒXƒ^[‚ÌŠm—¦‚ðÝ’èo—ˆ‚é‚悤‚É‚µ‚Ü‚µ‚½B
-Eƒ‚ƒ“ƒXƒ^[¢ŠÒƒAƒCƒeƒ€‚ð•¡”ì‚鎖‚ªo—ˆ‚é‚悤‚É‚µ‚Ü‚µ‚½B
-E¢ŠÒƒAƒCƒeƒ€‚̃Tƒ“ƒvƒ‹‚Æ‚µ‚Ä
-@¶–½‚ÌŽíŽq‚ðƒ|ƒŠƒ“Œn¢ŠÒA
-@ƒGƒ“ƒuƒŠƒI‚ðMVPƒ{ƒXŒn¢ŠÒ‚É‚µ‚Ä‚Ý‚Ü‚µ‚½B
-@‚ ‚Ü‚è‚¢‚¢ƒTƒ“ƒvƒ‹‚ðŽv‚¢‚‚©‚È‚©‚Á‚½‚Ì‚ÅA
-@‰½‚©‚¢‚¢ˆÄ‚ðŽv‚¢‚‚¢‚½l‚Í‘‚«Š·‚¦‚Ä‚â‚Á‚Ä‚‚¾‚³‚¢(^^;
- (conf/)
- battle_athena.conf
- (doc/)
- conf_ref.txt
- (map/)
- mob.h
- mob_db C³B
- mob.c
- mob_once_spawn()Amob_makedummymobdb()Amob_readdb() C³B
- mob_readbranch() -> mob_read_randommonster()‚É•ÏXB
- battle.h
- battle_config C³B
- battle.c
- battle_config_read() C³B
- itemdb.c
- itemdb_read_randomitem() C³B
- (db/)
- item_db.txt
- item_bluebox.txt
- item_cardalbum.txt
- item_giftbox.txt
- item_scroll.txt
- item_violetbox.txt
- mob_branch.txt
- mob_poring.txt ’ljÁB
- mob_boss.txt ’ljÁB
-
---------------
-//0665 by J
-
-E‰…—ì•Žm‚ÌŽæ‚芪‚«‚ªƒJƒuƒL”EŽÒ‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðŽð“V‹ç‚ÉC³B
-EƒIƒbƒg[‚ɃtƒFƒCƒNƒGƒ“ƒWƒFƒ‹‚ªo‚·‚Í‚¸‚ÌŽæ‚芪‚«‚ª‚‚¢‚Ä‚½‚Ì‚ðC³B
- (db/)
- mob_skill_db.txt
-
---------------
-//0664 by ¹
-
-E¸˜BŽ¸”sŽž‘¼‚̃vƒŒ[ƒ„[‚É‚àƒGƒtƒFƒNƒg‚ª•\Ž¦‚³‚ê‚é‚悤‚ÉC³B
- (map/)
- script.c
- buildin_failedrefitem() C³B
-
---------------
-//0663 by lide
-
-Eƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒAC³
- (map/)
- battle.c
- skill.c
-
---------------
-//0662 by Ž€_
-
-Eׂ©‚¢C³‚ƃoƒOC³B
-Eƒvƒƒ{ƒbƒN‚É‚æ‚Á‚ă‚ƒ“ƒXƒ^[‚ÍæŽZ–hŒä‚ÆŒ¸ŽZ–hŒä‚ªŒ¸‚é‚悤‚ÉC³‚µ‚ăvƒŒƒCƒ„[‚ÍŒ¸ŽZ–hŒä‚¾‚¯Œ¸‚é‚悤‚ÉC³B
-EƒXƒNƒŠƒvƒggetgmlevel’ljÁB‹@”\‚Í‚»‚ÌNPC‚Ƙb‚µ‚Ä‚¢‚éƒvƒŒƒCƒ„[‚ÌGMƒŒƒxƒ‹‚ð•Ô‚µ‚Ü‚·B
-E0659‚Ì‘‚«–Y‚ê‚Å‚·‚ªƒyƒbƒg‚̃pƒtƒHƒ}ƒ“ƒX‚ÌŽí—Þ‚ªe–§“x‚É‚æ‚Á‚Ä‘‚¦‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B
- (map/)
- clif.c
- pc.c
- script.c
-
---------------
-//0661 by Ž€_
-
-Eׂ©‚¢C³B
-EÚ‘±‚µ‚½Žž‚̃yƒbƒg‚̃ƒbƒZ[ƒW‚ðe–§“x‚ª‚«‚í‚ß‚Äe‚µ‚¢‚ÌŽž‚Ì‚Ý‚Éo‚é‚悤‚É•ÏXB
-E0659‚Å‘‚«–Y‚ê‚Å‚·‚ªƒyƒbƒg‚ÌŽx‰‡UŒ‚‚Íe–§“x‚ª‚«‚í‚ß‚Äe‚µ‚¢‚ÌŽž‚Ì‚Ý‚É”¶‚µ‚Ü‚·B(‚»‚ê‚Æe–§“x‚É‚æ‚Á‚ÄŽx‰‡UŒ‚Šm—¦‚ª‚µ•Ï‰»‚µ‚Ü‚·B)
-EƒWƒ‹ƒ^ƒX‚ƃAƒŠƒX‚Ì—‘‚ÌID‚ðitem_db.txt‚ɇ‚킹‚Ü‚µ‚½B(Ž©•ª‚ªì‚Á‚½pet_db.txt‚Ì•û‚ªŽ©•ªŸŽè‚Éݒ肵‚Ä‚¢‚½•¨‚Å‚µ‚½‚Ì‚ÅB‚ÄŒ¾‚¤‚©–¢ŽÀ‘•ƒAƒCƒeƒ€‚¾‚©‚ç”Ô†‚ª‚í‚©‚ç‚È‚©‚Á‚½‚¾‚¯‚Å‚·‚ª...)
-Epet_db.txt‚Ìattack_rate‚ª³‚µ‚“K—p‚³‚ê‚È‚©‚Á‚½ƒoƒOC³B
- (db/)
- pet_db.txt
- (map/)
- clif.c
- clif_parse_LoadEndAck() C³B
- pc.c
- pc_attack_timer() C³B
-
---------------------
-//0660 by ‚¢‚Ç
-
-EƒT[ƒo[snapshot
-
---------------
-//0659 by Ž€_
-
-Eƒyƒbƒg‚ðFX‚ÆC³B(ƒyƒbƒg‚̃R[ƒh‚ð‚Ù‚Æ‚ñ‚Ç•Ï‚¦‚Ü‚µ‚½B)
-EŽè“®“I‚¾‚Á‚½ƒyƒbƒg‚Ì“®‚«‚ðƒ‚ƒ“ƒXƒ^[‚̂悤‚ÉAI‚Æ‚µ‚Ĉ—B
-EÚ‘±‚µ‚½Žž‚̃yƒbƒg‚̃ƒbƒZ[ƒWŽÀ‘•B(–{ŽI‚Í‚Ç‚¤‚È‚Ì‚©‚í‚©‚è‚Ü‚¹‚ñ‚ª
-Athena‚ÍÚ‘±‚·‚é‚Æ100%˜b‚·‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B)
-Eƒyƒbƒg‚̃XƒyƒVƒƒƒ‹ƒpƒtƒHƒ}ƒ“ƒXŽÀ‘•B(‚½‚¾‘䎌‚ª‚¿‚å‚Á‚Æ•Ï‚Å‚·B‚¢‚‚ç’T‚µ‚Ä‚àŠY“–‚·‚éƒpƒPƒbƒg‚ªŒ©‚‚©‚ç‚È‚©‚Á‚½‚Ì‚ÅB)
-Eƒyƒbƒg‚̑䎌‚𑼂̃yƒbƒg‚Ì•¨‚É•ÏX‚·‚é‹@”\’ljÁB(Ú‚µ‚¢‚±‚Æ‚Ídb_ref.txt‚Æpet_db.txt‚ÅB)
-Eƒyƒbƒg‚É‚æ‚éŽx‰‡UŒ‚•ÏXBpet_db.txt‚ÅUŒ‚‚·‚鎞‚ÆUŒ‚‚ðŽó‚¯‚½Žž‚ÌŽx‰‡UŒ‚
-Šm—¦‚ð•ÊX‚ÉÝ’è‚Å‚«‚Ü‚·BUŒ‚‚·‚鎞‚Ìê‡UŒ‚‚·‚é“x‚Ƀ`ƒFƒbƒN‚ð‚µ‚Ü‚·‚Ì‚Å
-UŒ‚‘¬“x‚ª‘¬‚¢‚ÆŽx‰‡UŒ‚‚ðŽó‚¯‚â‚·‚‚È‚è‚Ü‚·BUŒ‚‚ðŽó‚¯‚½Žž‚à“¯‚¶‚Å‚·B(‚±‚¿‚ç‚̓_ƒ[ƒW‚ð‹ò‚炤“x‚É‚È‚è‚Ü‚·‚ªB) Žx‰‡UŒ‚Šm—¦‚̓\ƒq[AƒWƒ‹ƒ^ƒXAƒAƒŠƒX‚¾‚¯Ž©•ªŸŽè‚Éݒ肵‚Ä‚¢‚Ü‚·B(‘¼‚Ì‚Í‘S•”1%‚ÉBƒyƒbƒg‚ÌŽx‰‡UŒ‚‚Í“¯‚¶ƒ‚ƒ“ƒXƒ^[‚É‚Í‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚»‚µ‚ăyƒbƒg‚Ì퓬”\—͂̓‚ƒ“ƒXƒ^[‚Æ“¯‚¶‚Å‚·B)
-E/hideƒRƒ}ƒ“ƒhŽÀ‘•B
-Eƒvƒƒ{ƒbƒN‚É‚æ‚Á‚ÄæŽZ–hŒä‚àŒ¸‚é‚悤‚ÉC³B
-EƒtƒŠ[ƒLƒƒƒXƒg‚̃oƒOC³B
-Eƒm[ƒrƒX‚̃Xƒe[ƒ^ƒXƒ{[ƒiƒXíœB
-Ebattle_athena.conf‚Ì€–ڒljÁ‚ÆíœB
-EC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯B–¢ƒeƒXƒg‚µ‚½•¨‚à‚©‚È‚è‚ ‚è‚Ü‚·‚Ì‚Å–â‘肪‚ ‚Á‚½‚ç•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
- (conf/)
- battle_athena.conf
- (doc/)
- conf_ref.txt
- db_ref.txt ’ljÁB(¡à–¾‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚Ípet_db.txt‚Ì‚Ý‚Å‚·B )
- client_packet.txt
- (db/)
- pet_db.txt
- job_db2.txt
- (map)
- clif.h
- clif.c
- map.h
- map.c
- pet.h
- pet.c
- pc.c
- mob.h
- mob.c
- npc.c
- atcommand.c
- skill.c
- battle.h
- battle.c
-
---------------
-//0658 by huge
-
-Eƒyƒbƒg‚ª‚Æ‚Ç‚ß‚ð‚³‚·‚ÆAŽ”‚¢Žå‚ÉŒoŒ±’l‚ª“ü‚é‚悤‚É‚µ‚Ü‚µ‚½B
-EŒÅ’è’lƒ_ƒ[ƒW‚¶‚á–¡‚ª–³‚¢‚Ì‚ÅATK1`ATK2‚ÌŠÔ‚Å—”‚ðŽæ‚é‚悤‚É‚µ‚Ü‚µ‚½B
-E‚ ‚ÆAƒyƒbƒg‚ª‚Æ‚Ç‚ß‚ð‚³‚·‚©‚Ç‚¤‚©‚ÌÝ’è‚ðAbattle_athena.conf‚ɉÁ‚¦‚Ü‚µ‚½B
-
- (conf/)
- battle_athena.conf pet_finish’ljÁB
- (map/)
- battle.c
- battle_config_read() C³B
- battle.h C³B
- pet.c
- pet_attack() C³B
- (doc/)
- conf_ref.txt à–¾’Ç‹LB
-
---------------
-//0657 by huge
-
-Eƒyƒbƒg‚É‚æ‚éUŒ‚‚ðŽÀ‘•B
-Eƒyƒbƒg‚ðŽ‚Á‚Ä‚¢‚ÄAƒyƒbƒg‚ª‘•”õ•i‚ð‚‚¯‚Ä‚ÄA‚³‚ç‚Ƀ‰ƒ“ƒ_ƒ€‚É‚æ‚é”»’è‚Å”“®‚µ‚Ü‚·B
-E‚½‚¾‚Ì—V‚ÑS‚Å‚·‚—
-Ebattle_athena.conf‚Å•p“x‚ðÝ’è‚Å‚«‚Ü‚·BÚׂÍdoc‚ÅB
-
- (conf/)
- battle_athena.conf pet_attack’ljÁB
-
- (map/)
- battle.c
- battle_config_read() C³B
- battle.h C³B
- pc.c
- pc_attack_timer() C³B
- pet.c
- pet.h
- pet_attack() ’ljÁB
- (doc/)
- conf_ref.txt à–¾’Ç‹LB
-
- ‚Æ‚è‚ ‚¦‚¸Aƒyƒbƒg‚ª“®‚¢‚Ä‚é‚È‚Ÿ‚Á‚ÄŠ´‚¶‚ÆAƒ_ƒ‰ñ”‚ð‘‚₵‚½’ö“x‚Å‚·B
-
---------------
-//0656 by Ž€_
-
-EƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌC³B(‚¨‚¢‚¨‚¢‰½“x–Ú‚¾...)
-EƒOƒ‰ƒ“ƒhƒNƒƒXŒvŽZŽ®ŠÔˆá‚¢‚ÅC³B(€3‚ª‚Ü‚¸‚©‚Á‚½‚Ý‚½‚¢‚Å‚·B)
-‚Å‚à‚Ü‚¾”½ŽËƒ_ƒ[ƒW‚ª‚Ý‚·‚Ƃꑃ‚æ‚è‚¿‚å‚Á‚Æ‚‚¢‚Å‚·B(10‚®‚ç‚¢‚¾‚©‚ç
-ŠÖŒW‚È‚¢‚©‚à)
-Eƒ‚ƒ“ƒN‚Ì‹C‹…‚ð•K’†‚ÉC³B(Ž©•ª‚̊ԈႢ‚̂悤‚Å‚·‚Ì‚Å...)
- (map/)
- skill.c C³B
- battle.c C³B
-
---------------
-//0655 by Ž€_
-
-EƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌC³B
-EŽ©•ª‚È‚è‚Éî•ñ‚ðŽûW‚µ‚Ä‚Ý‚½Œ‹‰ÊƒOƒ‰ƒ“ƒhƒNƒƒX”½ŽËƒ_ƒ[ƒW‚Í
-ƒvƒŒƒCƒ„[ƒLƒƒƒ‰‚ª‚»‚̃Lƒƒƒ‰Ž©g‚ɃOƒ‰ƒ“ƒhƒNƒƒX‚ðŽg‚Á‚½Žž‚Ì
-ƒ_ƒ[ƒW‚¾‚»‚¤‚È‚Ì‚ÅC³‚µ‚Ü‚µ‚½B(‚Ý‚·‚Ƃꑃ‚ÌŒvŽZ‚Æ‚Í‚©‚È‚èˆá‚¤‚悤‚È
-‹C‚à‚µ‚Ü‚·‚ª...)
-E–‚–@‚ƃgƒ‰ƒbƒvA‘é‚ÌUŒ‚‚É‚à‘®«‘Ï«‚ÆŽí‘°‘Ï«‚ð“K—p‚·‚é‚悤‚ÉC³B
-(–{ŽI‚ÌŽd—l‚É‚ ‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·‚ª“K—p‚µ‚½•û‚ª³‚µ‚¢‚ÆŽv‚Á‚½‚Ì‚Å
-C³‚µ‚Ü‚µ‚½B)
- (map/)
- skill.c C³B
- map.h C³B
- battle.c C³B
-
---------------
-//0654 by Ž€_
-
-EƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌC³‚Æׂ©‚¢C³B(ŒvŽZŽ®ŠÔˆá‚¢‚ÅC³B)
-E0653‚Å‘‚«–Y‚êB‹CŒ÷‚É‚æ‚é’ljÁƒ_ƒ[ƒW‚Í•K’†‚Å‚Í‚È‚¢‚炵‚¢‚Ì‚Å
-C—û‚̉ÁŽZ‚Æ“¯‚¶Š‚ÉŒvŽZ‚·‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B
-EƒJ[ƒg‚ɃoƒO‚ª‚ ‚è‚»‚¤‚¾‚Á‚½‚Ì‚Å‚¿‚å‚Á‚ÆC³B
-Eƒ_ƒ[ƒWŒvŽZ‚ð‚Ù‚ñ‚Ì‚µC³B(ƒ_ƒ[ƒW—Ê‚ª•Ï‚í‚Á‚½‚è‚Í‚µ‚Ü‚¹‚ñB)
- (map/)
- battle.c
- battle_calc_magic_attack() C³B
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- skill.c
- pc_damage_feedback() -> skill_damage_feedback()‚É•ÏXB
- skill_unit_timer() C³B
- pc.c
- pc_setoption() C³B
- atcommand.c C³B
-
---------------
-//0653 by Ž€_
-
-E0652‚ÌC³‚Æׂ©‚¢C³B¡‚Ü‚Å’Ê‚è–¢ƒeƒXƒg‚à‘½‚¢‚Å‚·B
-EƒOƒ‰ƒ“ƒhƒNƒƒX‚̈—C³B(–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ÌŽ©g‚Í‚ ‚è‚Ü‚¹‚ñB)
-ƒ‰ƒOƒi[ƒQ[ƒg‚Ìà–¾‚É‚æ‚é‚ÆŽn‚ß‚ÉŒ»ÝHP‚Ì20%‚ªÁ–Õ‚³‚ê‚Ä‚»‚ÌŒã“G‚É—^‚¦‚½
-ƒ_ƒ[ƒW‚Ì’†‚ňê”Ô‚‚¢•¨‚ª–ß‚Á‚Ä‚‚é‚悤‚Å‚·B‚»‚µ‚Ä‚»‚Ì–ß‚Á‚Ä‚«‚½
-ƒ_ƒ[ƒW‚͹‚Ì‘®«‚ðŽ‚¿ƒgƒ‰ƒXƒg‚É‚æ‚Á‚Ĺ‚Ì‘Ï«‚ª50%‚É‚È‚Á‚Ä‚¢‚é‚Ì‚Å
-”¼•ª‚ð‹ò‚炤‚±‚Æ‚É‚È‚é‚悤‚Å‚·B(¹‚̑ϫオ‚é‘•”õ‚ð‚µ‚Ä‚¢‚ê‚Ζ߂Á‚Ä‚‚é
-ƒ_ƒ[ƒW‚͎󂯂Ȃ¢‚悤‚Å‚·B)
-–â‘è‚Ȃ̂̓vƒŒƒCƒ„[‚Ì–hŒä‘®«‚ðŒvŽZ‚·‚é‚©‚Ç‚¤‚©‚Å‚·B¡‚Í–hŒä‘®«ŒvŽZ‚Ì
-Œã‚Ź‚Ì‘®«‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·B‚»‚µ‚Ä–ß‚Á‚Ä‚‚éƒ_ƒ[ƒW‚ÍHPƒo[‚ÍŒ¸‚邯‚Ç
-•\Ž¦‚Í‚³‚ê‚Ü‚¹‚ñB–{ŽI‚Ì•û‚ª‚Ç‚¤‚È‚Ì‚©•s–¾‚È‚Ì‚Å...
-‚»‚ê‚ƈꉞƒ‚ƒ“ƒXƒ^[‚àƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌŽg—p‚ª‰Â”\‚Å‚·B‚½‚¾ƒ‚ƒ“ƒXƒ^[‚Ìê‡
-Œ»ÝHP‚Ì20%Á–Õ‚ÌŒã‚̃_ƒ[ƒW‚͎󂯂܂¹‚ñB(ƒ‚ƒ“ƒXƒ^[‚ªŽg‚¤
-ƒOƒ‰ƒ“ƒhƒNƒƒX‚̃eƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB)
-Eƒ_ƒ[ƒW‚É‚æ‚éƒfƒBƒŒƒC’†‚É‚Ü‚½ƒfƒBƒŒƒC‚ª‚©‚©‚ç‚È‚¢‚悤‚ÉC³B(‘債‚½ˆÓ–¡‚Í‚È‚¢‚©‚à...)
-E’l’i‚ªƒ[ƒ‚̃AƒCƒeƒ€‚à”„‚ê‚é‚悤‚É•ÏXB
-E@ƒRƒ}ƒ“ƒhheal‚̈—‚µC³B
-EˆÚ“®ƒR[ƒh‚µC³B
- (map/)
- clif.c
- clif_selllist() C³B
- battle.c
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_calc_magic_attack()Abattle_calc_misc_attack() C³B
- skill.c
- skill_additional_effect()Askill_unit_onplace() C³B
- skill_status_change_start()Askill_unit_onplace() C³B
- skill_castend_damage_id()Askill_castend_id()Askill_attack() C³B
- skill_unitsetting()Askill_check_condition() C³B
- skill_use_id()Askill_use_pos() C³B
- npc.c
- npc_parse_script() C³B
- pc.h C³B
- pc.c
- pc_walk()Apc_walktoxy_sub()Apc_stop_walking() C³B
- map.h C³B
- mob.h C³B
- mob.c
- mob_stop_walking()Amob_changestate()Amob_walk() C³B
- pet.c
- pet_changestate() C³B
- atcommand.c C³B
- (db/)
- skill_db.txt ƒOƒ‰ƒ“ƒhƒNƒƒXC³B
- cast_db.txt ƒOƒ‰ƒ“ƒhƒNƒƒXC³B
-
---------------
-//0652 by ŒŽ‰r‚Ý
-
-EƒOƒ‰ƒ“ƒhƒNƒƒX‚ð‰¼ŽÀ‘•
- (db/)
- skill_db.txt
- cast_db.txt
- (map/)
- battle.c
- Damage battle_calc_misc_attack
- Damage battle_calc_magic_attack
- skill.c
- skill_additional_effect
- skill_castend_damage_id
- skill_castend_pos2
- skill_unit_group *skill_unitsetting
- skill_unit_onplace
- skill_check_condition
-
---------------
-//0651 by ”g˜Q
-
-Eitem_db.txt‚ðC³
- (db/)
- item_db.txt
- ‘•”õ•i‚̃AƒCƒeƒ€Œø‰Ê‚ðC³
-
---------------
-//0650 by Ž€_
-
-EŽO’i¶‚Ì”“®ðŒ‚ð‹|‚Æ“ñ“—¬ˆÈŠO‚É•ÏXB
-E•\Ž¦‚ð‚¹‚¸‚É“à•”‚ň—‚¾‚¯‚·‚éNPC‚ÌCLASS‚ð111‚©‚ç32767‚É•ÏXB
-Eׂ©‚¢C³B
- (map/)
- clif.c
- clif_getareachar_npc()Aclif_spawnnpc()Aclif_pcoutsight() C³B
- npc.h C³B
- battle.c
- battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
-
---------------
-//0649 by ”g˜Q
-
-EDB‚ÆDOCC³
- (db/)
- item_db.txt
- ƒOƒ“ƒOƒj[ƒ‹‚ÍLV4•Ší‚È‚Ì‚ÅAŠØ‘‚̃f[ƒ^‚É‚ ‚킹‚Ä•—‘®«‚Å‚Í‚È‚‚µ‚Ü‚·B
- mob_db.txt
- size_fix.txt
- ŠyŠí‚Í‘åŒ^‚ɑ΂µ‚Ä75%‚¾‚»‚¤‚Å‚·B
- (doc/)
- item_bonus.txt
-
---------------
-//0648 by Ž€_
-
-EƒVƒ‡ƒbƒv‚Ì’l’i‚É-‚ð“ü‚ê‚é‚ÆŽI‚ª—Ž‚¿‚é–â‘èC³B(itemdb‚̉Šú‰»‚ðnpc‚æ‚è
-æ‚É‚·‚é‚悤‚É•ÏXB) ‚»‚ꂾ‚¯‚Å‚·B
- (map/)
- map.c
- do_init()
-
---------------
-//0647 by nini
-
-Eitem_dbC³
-EƒXƒiƒbƒ`ƒƒ[Žd—l•ÏXB‹|ˆÈŠO‚Ì‚·‚ׂĂ̕Ší‚Åo‚é‚悤‚É‚È‚Á‚Ä‚Ü‚·B
- (/map/)
- battle.c
- ŽO’i¶‚Ì”“®ðŒ’ljÁ
- skill.c
- ƒXƒiƒbƒ`ƒƒ[‚Ì”“®ðŒ’ljÁ
- (/db/)
- item_db.txt
- ƒVƒ‹ƒNƒnƒbƒg‚ÉSP㸒ljÁ
-
---------------
-//0646 by last
-
-Eitem_db.txt‚ÌC³(‘®«ŠÖ˜A)
- (/db/)
- item_db.txt
-
---------------
-//0645 by ‚é‚é‚éi•ree_ronj
-
-Eitem_value_db.txt‚ɃfƒBƒXƒJƒEƒ“ƒg•ƒI[ƒo[ƒ`ƒƒ[ƒW“™‚̃XƒLƒ‹‚É‚æ‚鉿Ši•Ï“®‚ðŽó‚¯‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒOƒƒ“ƒg‚ð’ljÁB
-@ŽÀÛ‚ÌŒ`Ž®‚̓Tƒ“ƒvƒ‹‚Æ‚µ‚Ä—pˆÓ‚µ‚½item_value_db.sample.txt‚ðŒ©‚Ä‚‚¾‚³‚¢Biݒ艿Ši‚ÍŠ®‘S‚É“Æ’f‚Æ•ÎŒ©‚Å‚·j
-@“¯—l‚̃Tƒ“ƒvƒ‹‚Æ‚µ‚Ä‚m‚o‚bÝ’uƒXƒNƒŠƒvƒg‚à“Y•t‚µ‚Ä‚¨‚«‚Ü‚·B
-Eitem_value_db.txt‚̃AƒCƒeƒ€‰¿ŠiÝ’è‚ÅA”„’l‚Æ”ƒ’l‚ÌÝ’è‚ð“Æ—§Biitem_db.txt‚Í]—ˆ‚Ç‚¨‚蔃’l‚Í”„’l‚Ì”¼Šz‚Æ‚µ‚ÄŽ©“®ˆ—j
-E‚m‚o‚bƒVƒ‡ƒbƒv‚É‚ÄA‚P‚m‚o‚b‚ňµ‚¦‚éƒAƒCƒeƒ€”‚ðÅ‘å64‚©‚çÅ‘å100‚É•ÏXBiƒNƒ‰Ž©‘Ì‚Í120‚®‚ç‚¢‚܂ʼn”\‚Å‚·‚ªj
- (/db)
- item_value_db.txt
- ƒJƒ‰ƒ€”‚ð®—‚µ‚½‚¾‚¯‚Å‚·B“à—e‚Í‚Ü‚Á‚½‚•ÏX‚µ‚Ä‚¢‚Ü‚¹‚ñB
- (/map/)
- clif.c
- clif_buylist() clif_selllist() •ÏX
- itemdb.h
- item_data \‘¢‘Ì•ÏX
- itemdb_value_buy() itemdb_value_sell() itemdb_value_notdc() itemdb_value_notoc() ƒ}ƒNƒ’ljÁ
- itemdb.c
- itemdb_search() itemdb_readdb() itemdb_read_itemvaluedb() •ÏX
- itemdb_sellvalue() íœ
- npc.c
- npc_buylist() npc_selllist() npc_parse_shop() •ÏX
- (/sample/)
- ƒIƒ}ƒP‚Å‚·BŽŸ‰ñSnapShot‚É‚ÍŠÜ‚Ü‚È‚¢‚Å‹X‚µ‚¢‚Å‚·B
-
-ƒRƒƒ“ƒg
-Œ´Œ^‚ÍŽ„‚Ì—Flree_ron‚ªs‚¢AŽ„‚ªX‚Éׂ©‚¢ƒ~ƒX‚𒼂µ‚½‚¾‚¯‚Å‚·‚ªAƒeƒXƒg‚Í‚µ‚Ü‚µ‚½‚Ì‚Å‘åä•v‚Å‚µ‚傤B
-Œ³X‚±‚̈—‚𓱓ü‚·‚é——R‚Æ‚µ‚ÄA“Á’èƒAƒCƒeƒ€‚Ì”„’l‚ª1zŒÅ’è‚É‚Å‚«‚È‚¢‚à‚Ì‚©A‚Æ‚¢‚¤“_‚¾‚Á‚½‚©‚ç‚Å‚·B
-‚»‚µ‚Ä‚â‚Á‚Ä‚¢‚‚¤‚¿‚ÉA‚m‚o‚bƒVƒ‡ƒbƒv‚ð—˜—p‚µ‚½ƒŒƒAƒAƒCƒeƒ€‚̔̔„‚Æ‚©‚Å–{ŽI˜I“X‚É‹ß‚¢‚±‚Æ‚ªo—ˆ‚é‚Ì‚Å‚Í‚È‚¢‚©A
-‚Æ‚¢‚¤‚±‚Æ‚ª”»‚Á‚Ä‚«‚½‚킯‚Å‚·B
-‚»‚ê‚ňꉞ‚̓f[ƒ^‚ð—pˆÓ‚µ‚Ü‚µ‚½‚ªA‚ ‚‚Ü‚Å‚àƒTƒ“ƒvƒ‹‚Æ‚µ‚Ä—˜—p‚µ‚Ä‚‚¾‚³‚¢B‚à‚µ‰Â”\‚È‚ç‚ÎA
-‚³‚ç‚ÉC³‚ð‰Á‚¦‚ăAƒeƒi“ÆŽ©‚Æ‚µ‚Ä–{Ì—p‚Æ‚µ‚½ƒf[ƒ^‚ðƒpƒbƒ`ƒAƒbƒv‚µ‚Ä‚‚ê‚ê‚΂ƂàŽv‚¢‚Ü‚·‚ª‚—
-
-
---------------
-//0644 by nini
-
-EDB‚̊ԈႢA643‚ŒljÁ‚³‚ꂽƒXƒNƒŠƒvƒg’ljÁB
- (/db/)
- item_db.txt
- cast_db.txt
- ƒ`ƒƒ[ƒWƒAƒ[‚̃LƒƒƒXƒg’ljÁB
- exp_guild.txt
- 46-50‚Ü‚Å‚Ìexp”²‚¯‚ɒljÁB
- size_fix.txt
- ŠyŠíA•ÚAƒiƒbƒNƒ‹‚̃TƒCƒY•â³C³B
-
---------------
-//0643 by Ž€_
-
-EFX‚ÆC³B
-EbMVPaddAtkRateíœBbAddRace‚ň—‚·‚é‚悤‚É•ÏXB
-EbIgnoreDefEle‚ÆbIgnoreDefRace’ljÁB
-bonus bIgnoreDefEle,n; n‘®«‚Ì“G‚Ì–hŒä–³Ž‹
-bonus bIgnoreDefRace,n; nŽí‘°‚Ì“G‚Ì–hŒä–³Ž‹
-EbMatkRate’ljÁB–‚–@UŒ‚—Í‚ð+n%ã‚°‚Ü‚·B‚æ‚Á‚Äbattle.c‚ÅŒvŽZ‚µ‚Ä‚¢‚½ƒƒbƒh‚É‚æ‚é–‚–@UŒ‚—Í‘•‚ÌŒvŽZ‚Í‚È‚‚µ‚Ü‚µ‚½BƒXƒe[ƒ^ƒX‰æ–Ê‚Éオ‚Á‚½”’l‚Í•\Ž¦‚³‚ê‚Ü‚¹‚ñBƒ_ƒ[ƒWŒvŽZ‚ÌŽž‚É“K—p‚µ‚Ä‚¢‚Ü‚·B
-EbCriticalDef‚É-‚ð“ü‚ê‚é‚ƃNƒŠƒeƒBƒJƒ‹‚ð‹ò‚炤Šm—¦‚ªã‚ª‚é‚悤‚É•ÏXB
-ENPC”Ô†111‚Í“§–¾NPC‚Å‚·‚ª—Ž‚Æ‚µŒŠ“™‚Ì‚±‚Æ‚ðl‚¦‚Ä•\Ž¦‚ðˆêØ‚¹‚¸‚É
-“à•”‚ň—‚¾‚¯‚·‚é‚悤‚É•ÏXB(flag‚ðŽg‚¤‚Ɖ½‚Æ‚©‚È‚è‚»‚¤‚Å‚·‚ª‚»‚Ì
-ˆ—‚ª‘S‘R‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚Å“§–¾NPC‚ɃNƒŠƒbƒN‚â–¼‘O‚Ì•\Ž¦‚à‚Å‚«‚È‚¢‚悤‚É•ÏX‚µ‚Ü‚µ‚½B)
-EƒVƒ‡ƒbƒv‚Ì’l’i‚É-‚ð“ü‚ê‚é‚Æitem_db.txt‚à‚µ‚‚Íitem_value_db.txt‚Ì•¨‚ðŽg‚¤‚悤‚É•ÏXB
-EƒXƒLƒ‹ƒ‹ƒAƒt‚̃GƒtƒFƒNƒg‚ªƒTƒCƒg‚Æ“¯‚¶‚¾‚Á‚½‚Ì‚ÅC³B‚‚¢‚łɃ‹ƒAƒt‚Ì
-ƒ_ƒ[ƒW‚àC³B
-E‚Ý‚·‚Ƃꑃ‚É‚æ‚é‚ƃ‚ƒ“ƒXƒ^[î•ñ‚Å•\Ž¦‚³‚ê‚é–hŒä‚Æ–‚–@–hŒä‚ÍæŽZ‚Å‚Í‚È‚Œ¸ŽZ‚Ý‚½‚¢‚È‚Ì‚ÅC³B
-E‘¼—Í–{Šè‚Å‚·‚ªitem_db.txt‚ÌC³‚ð‚¨Šè‚¢‚µ‚Ü‚·B(‘S‚Ẵƒbƒh‚Ébonus bMatkRate,15; ‚ð“ü‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B‚»‚Ì‘¼‚ÌC³‚à•K—v‚Å‚·B)
-EƒeƒXƒg‚µ‚Ä‚¢‚È‚¢•¨‚à‚©‚È‚è‚ ‚è‚Ü‚·‚Ì‚Å–â‘肪‚ ‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B
- (map/)
- map.h C³B
- map.c
- map_quit() C³B
- pc.h C³B
- pc.c
- pc_walk()Apc_stop_walking()Apc_setpos()Apc_authok() C³B
- pc_calcstatus()Apc_bonus()Apc_natural_heal_sub() C³B
- npc.h C³B
- npc.c
- npc_touch_areanpc()Anpc_parse_shop() C³B
- clif.c
- clif_quitsave()Aclif_getareachar_npc()Aclif_spawnnpc() C³B
- clif_skill_estimation() C³B
- battle.c
- battle_calc_magic_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_calc_mob_weapon_attack() C³B
- mob.c
- mobskill_use() C³B
- skill.c
- skill_status_change_end()Askill_status_change_timer() C³B
- skill_status_change_start() C³B
- (db/)
- const.txt C³B
- (doc/)
- item_bonus.txt C³B
-
---------------
-//0642 by Ž€_
-
-E‘•”õƒoƒOC³B(‚»‚ꂾ‚¯)
- (map/)
- pc.c
- pc_authok()Apc_checkitem() C³B
-
---------------
-//0641 by Ž€_
-
-EbAspdRate‚ÆbSpeedRate‚̃oƒOC³B(‚»‚ꂾ‚¯)0640‚ÅŒvŽZ‚ð‚¿‚å‚Á‚Æ•Ï‚¦‚ÄŒ©‚Ü‚µ‚½‚ª‚»‚ꂪ‚Ü‚¸‚©‚Á‚½‚Ý‚½‚¢‚Å‚·B¡“x‚àŒvŽZŽ®‚ð•Ï‚¦‚Ü‚µ‚½‚ª‚à‚¤‘åä•v‚¾‚ÆŽv‚¢‚Ü‚·B(‘½•ª)
- (map/)
- pc.c
- pc_calcstatus()Apc_bonus()Apc_delitem()
-
---------------
-//0640 by Ž€_
-
-EƒoƒOC³‚Æ‚µC³B
-E‚Ý‚·‚Ƃꑃ‚ðŽQl‚µ‚ă_ƒ[ƒWŒvŽZ‚ð‚µC³B
-Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚Å)
-EƒLƒƒƒ‰‚ÌHP‚ÆSP‚ð2byte‚©‚ç4byte‚É•ÏXB(ƒeƒXƒg‚Í‚µ‚Ä‚¢‚Ü‚·‚ªƒoƒO‚ªo‚é
-‰Â”\«‚à‚©‚È‚è‚ ‚è‚Ü‚·B‚½‚¾ƒLƒƒƒ‰ƒZƒŒƒNƒg‰æ–Ê‚ÅHP‚âSP‚ª32768‚ð‰z‚¦‚鎞
-•\Ž¦‚Í32768‚ɂȂ邯‚Ç“à•”‚̈—‚ͳí‚É“®‚«‚Ü‚·‚Ì‚Å‚»‚ê‚̓oƒO‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-ƒpƒPƒbƒg‚Ì’·‚³‚Ì‚¹‚¢‚Å‚»‚êˆÈŠOŽè’i‚ª‚È‚©‚Á‚½‚Ì‚Å...)
-EbCriticalDef(ƒNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚í‚È‚¢Šm—¦+n%)‚̈—•ÏXB100‚É‚·‚ê‚Î
-ƒNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚í‚È‚¢‚悤‚É‚È‚è‚Ü‚·B)
-EbInnerAtk‚ðbBaseAtk‚É•ÏXB‚Ý‚·‚Ƃꑃ‚ŃJ[ƒh‚ÌUŒ‚‚ÍŠî–{UŒ‚—Í‚Ì•û‚É‘«‚³‚ê‚é‚Æ‚ ‚è‚Ü‚µ‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½B¡“x‚Íオ‚Á‚½UŒ‚—Í‚ª•\Ž¦‚³‚ê‚Ü‚·B
-EbDoubleRate‚̈—•ÏXBŠm—¦‚ð‘«‚³‚¸‚Ɉê”Ô‚‚¢•¨‚¾‚¯“K—p‚µ‚Ü‚·B‚»‚ê‚ƶŽè
-‘•”õ‚Ìꇖ³Ž‹‚·‚é‚悤‚É•ÏX‚µ‚Ü‚½B(¶Žè‚̓_ƒuƒ‹‚ª“K—p‚³‚ê‚Ü‚¹‚ñ‚Ì‚Å)
-EbDoubleAddRate’ljÁB‹@”\‚̓_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦+n%(•Ší–³Ž‹)‚Å‚·B
-¶Žè‘•”õ‚Í–³Ž‹‚³‚ê‚Ü‚·B
-E0635‚ÅUŒ‚—Í•\Ž¦‚ð–{ŽI‚É‚ ‚킹‚Ü‚µ‚½B‚»‚µ‚Ä¡“x‚Í‹|‚¾‚¯‚Å‚Í‚È‚
-ŠyŠí‚ƃ€ƒ`‚àdex‚É‚æ‚Á‚ÄUŒ‚—Í‚ªã‚ª‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B
-E‘•”õ‚µ‚½•Ší‚ªÁ‚¦‚éƒoƒOC³‚ׂ̈ɂµC³‚Í‚µ‚Ü‚µ‚½‚ª–{“–‚É
-‘åä•v‚È‚Ì‚©‚Í•s–¾‚Å‚·B•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
- (conf/)
- battle_athena.conf C³B
- (db/)
- const.txt C³B
- item_db.txt C³B
- (doc/)
- item_bonus.txt C³B
- conf_ref.txt C³B
- (map/)
- map.h C³B
- pc.c
- pc_calcstatus()Apc_bonus()Apc_equipitem() C³B
- battle.h C³B
- battle.c
- battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B
- battle_config_read() C³B
- clif.c
- clif_updatestatus()Aclif_parse_LoadEndAck()Aclif_party_hp() C³B
- (common/)
- mmo.h C³B
- (char/)
- char.c
- mmo_char_send006b()Aparse_char() C³B
-
---------------
-//0639 by ŒÓ’±—–
-
-Eladmin‚ÌC³‚È‚Ç
- Eƒvƒƒ“ƒvƒg‚Ì“ü—Í‚ÉTerm::ReadLine‚ðŽg‚¤‚悤‚É‚µ‚½
- @i“ü—Í—š—ð‚âƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Ì•ÒW‚ª‰Â”\‚Éj
- EPOSIXŠÖŒW‚̈—‚Ì—áŠOƒGƒ‰[‚ðƒgƒ‰ƒbƒv‚·‚é‚悤‚É‚µ‚Ü‚µ‚½
- @iPOSIX‚ª‘S‚Žg‚¦‚È‚¢ŠÂ‹«‚Å‚àÅ’áŒÀA“®‚‚悤‚É‚È‚Á‚½‚©‚à‚µ‚ê‚È‚¢j
- Eו”C³
-
- (tool/)
- ladmin
- Ver.1.04‚ÉB
-
-EMODƒo[ƒWƒ‡ƒ“‚ª‚¨‚©‚µ‚¢–â‘è‚ðC³
- (common/)
- version.h
- ATHENA_MOD_VERSION‚ª‚Wi”‚Å‹Lq‚³‚ê‚Ä‚¢‚é–â‘è‚ðC³
- ”Žš‚Ì“ª‚É0‚ð‚‚¯‚é‚Æ‚Wi”‚É‚È‚é‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢
-
---------------
-//0638 by ”g˜Q
-
-E0635E0637‚ÅV‚µ‚ƒAƒCƒeƒ€Œø‰Ê‚ªŽÀ‘•‚³‚ꂽ‚Ì‚ÅA‚»‚ê‚É”º‚Á‚Äitem_db.txt‚ðC³
-Eitem_bonus.txt‚ðC³
- (db/)
- item_db.txt C³
- (doc/)
- item_bonus.txt C³
-
---------------
-//0637 by Ž€_
-
-E0635‚̃oƒOC³B
-Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚ðŒ©‚Ä‚‚¾‚³‚¢B)
-EŽžŠÔ‚ª’x‚·‚¬‚Ä0635‚Åà–¾‚µ‚Ä‚È‚©‚Á‚½‚Å‚·B(Q•s‘«‚¾‚Á‚½‚Ì‚Å...)
-‚Ü‚¸Žd—l‚ª•Ï‚í‚Á‚½‚Ì‚Í“ñ“—¬‚̃_ƒ[ƒW‚ð•Ší•Ê‚ÉŠ®‘S‚É•ª‚¯‚Äs‚¤‚悤‚É
-•ÏX‚ƃAƒTƒVƒ“‚¶‚á‚È‚‚ĂඎèC—û‚ðŠo‚¦‚Ä‚¢‚ê‚Γñ“—¬‚ðŽg‚¦‚é‚悤‚É
-•ÏX‚µ‚Ü‚µ‚½B‚»‚ê‚ƃ_ƒ[ƒW‚ÌŒvŽZ‚ð‚¿‚å‚Á‚ÆC³B
-‚»‚µ‚Äbonus‚ɒljÁ‚³‚ꂽ‚Ì‚Í
-bonus bInnerAtk,n; “à•”UŒ‚—Í+n
-ƒJ[ƒh‚̈ø‚«ã‚°ƒ_ƒ[ƒW—p‚Å‚·B•\Ž¦‚Í‚³‚ê‚È‚¢‚¯‚ǃ_ƒ[ƒW‚ÉŒvŽZ‚³‚ê‚Ü‚·B
-bonus bSpeed,n; ˆÚ“®‘¬“x+n
-ˆÚ“®‘¬“x‚ðnã‚°‚Ü‚·B
-bonus bAspd,n; UŒ‚‘¬“x+n
-UŒ‚‘¬“x‚ðnã‚°‚Ü‚·B
-bonus bSpeedRate,n; ˆÚ“®‘¬“x+n%
-ˆÚ“®‘¬“x‚ðn%ã‚°‚Ü‚·B
-bonus bAspdRate,n; UŒ‚‘¬“x+n%
-UŒ‚‘¬“x‚ðn%ã‚°‚Ü‚·B
-bonus bHPrecovRate,n; HPŽ©“®‰ñ•œ—¦+n%
-Ž©“®‰ñ•œ‚·‚éHP‚Ì—Ê‚ðn%ã‚°‚Ü‚·BƒXƒLƒ‹‚É‚æ‚é‰ñ•œ‚ɂ͉e‹¿‚ª‚ ‚è‚Ü‚¹‚ñB–{ŽI‚ÌŽd—l‚Æ‚ ‚Á‚Ä‚¢‚é‚©‚Í•s–¾‚Å‚·B
-bonus bSPrecovRate,n; SPŽ©“®‰ñ•œ—¦+n%
-Ž©“®‰ñ•œ‚·‚éSP‚Ì—Ê‚ðn%ã‚°‚Ü‚·BƒXƒLƒ‹‚É‚æ‚é‰ñ•œ‚ɂ͉e‹¿‚ª‚ ‚è‚Ü‚¹‚ñB–{ŽI‚ÌŽd—l‚Æ‚ ‚Á‚Ä‚¢‚é‚©‚Í•s–¾‚Å‚·B
-bonus bCriticalDef,n; ƒNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚í‚È‚¢Šm—¦+n%
-ƒNƒŠƒeƒBƒJƒ‹‚Ì‘Ï«‚ðnã‚°‚Ü‚·B10000ˆÈã‚É‚·‚é‚ƃNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚¢‚Ü‚¹‚ñB
-bonus bMVPaddAtkRate,n; MVPƒ‚ƒ“ƒXƒ^[‚Én%‚̒ljÁƒ_ƒ[ƒW
-ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚Én%‚̒ljÁƒ_ƒ[ƒW‚ð—^‚¦‚Ü‚·B[•£‚Ì‹RŽmƒJ[ƒh—pB
-bonus bNearAtkDef,n; ‹ß‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚ç‚·
-‘S‚Ä‹ß‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚炵‚Ü‚·B(–‚–@‚ƃgƒ‰ƒbƒvA‘é‚ðœ‚)
-bonus bLongAtkDef,n; ‰“‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚ç‚·
-‘S‚ĉ“‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚炵‚Ü‚·B(–‚–@‚ƃgƒ‰ƒbƒvA‘é‚ðœ‚)
-bonus bDoubleRate,n; ƒ_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦+n%(•Ší–³Ž‹)
-•Ší‚ÉŠÖŒW‚È‚”“®‚·‚éƒ_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦‚ðn%ã‚°‚Ü‚·B
-ƒ_ƒuƒ‹ƒAƒ^ƒbƒNƒXƒLƒ‹‚Æ•Ê‚Ì”»’è‚ðs‚¤ˆ×ƒ_ƒuƒ‹ƒAƒ^ƒbƒNƒXƒLƒ‹‚ª
-‚ ‚Á‚Ä‚àƒXƒLƒ‹‚É‚æ‚éƒ_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦‚ªã‚ª‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-ƒTƒCƒhƒƒCƒ“ƒ_[ƒJ[ƒh—pB
- (map/)
- pc.c
- pc_bonus()Apc_calcstatus() C³B
- pc_natural_heal_sub() C³B
- battle.h
- struct Battle_Config {} C³B
- battle.c
- battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B
- battle_config_read() C³B
- (db/)
- skill_db.txt
- ƒXƒeƒB[ƒ‹‚ÌSP‚ð10‚ÉC³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
-
---------------
-//0636 by Sin
-
-EƒfƒoƒbƒO—pƒ|ƒ^Žq‚³‚ñƒXƒNƒŠƒvƒg(npc_pota.txt)‚̃Aƒ}ƒcEƒRƒ“ƒƒ“‚ւ̑ΉžB
-@‚·‚Å‚ÉŽ©—ÍŽÀ‘•‚³‚ê‚Ä‚¢‚ç‚Á‚µ‚á‚é•ûX‚à‘½‚¢‚©‚ÆŽv‚¢‚Ü‚·‚ªcB
-@ƒRƒ“ƒƒ“ƒ_ƒ“ƒWƒ‡ƒ“‚Ì–¼‘O‚ª‚í‚©‚ç‚È‚¢‚½‚ßu›À›ÄD1v‚È‚Ç‚Æ‚³‚¹‚Ä‚¢‚½‚¾‚¢‚Ä‚¢‚Ü‚·B
- (conf/) npc_pota.txt
-
---------------
-//0635 by Ž€_
-
-Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚ðŒ©‚Ä‚‚¾‚³‚¢B)
-Ebonus‚ÉbInnerAtk(ƒJ[ƒh“™‚Å•\Ž¦‚Í‚³‚ê‚È‚¢‚¯‚ÇŽÀÛ‚É‚ÍUŒ‚—Í‚É”½‰f‚³‚ê‚镨—p‚Å‚·B)“™‚ð’ljÁB‘¼‚Ì‚Íitem_bonus.txt‚ðŒ©‚Ä‚‚¾‚³‚¢B(’ljÁ‚Í‚µ‚½‚¯‚Çitem_db.txt‚Í–w‚ñ‚ÇC³‚µ‚Ä‚Ü‚¹‚ñB)
-E‚»‚Ì‘¼ƒoƒOC³‚âŽd—l•ÏX‚à‚â‚è‚Ü‚µ‚½‚ªˆêX‘‚ŽžŠÔ‚ª‚È‚¢‚Ì‚Å...
- (map/)
- makeile C³B
- pc.c C³B
- map.h C³B
- clif.c C³B
- battle.h C³B
- battle.c C³B
- itemdb.c C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- item_bonus.txt C³B
- (db/)
- const.txt C³B
- item_db.txt C³B
-
---------------
-//0634 by Ž€_
-
-EweddingƒNƒ‰ƒX‚É‚Í“]E‚Å‚«‚È‚¢‚悤‚ÉC³B
-EƒX[ƒp[ƒm[ƒrƒX‚ׂ̈Éexpƒe[ƒuƒ‹‚ðbase 4‚Âjob 4‚‚Ɋg’£B
-exp.txt‚ª•Ï‚í‚èƒX[ƒp[ƒm[ƒrƒX‚¾‚¯‚ÌŒoŒ±’l‚ðÝ’è‚Å‚«‚Ü‚·B(exp.txt‚Ì
-4‚–ڂªƒX[ƒp[ƒm[ƒrƒX‚Ìbase exp‚Å8‚–ڂªjob exp‚Å‚·B¡‚Í2ŽŸE‹Æ‚Ì•¨‚ð
-ƒRƒs[‚µ‚½•¨‚ɉ߂¬‚Ü‚¹‚ñ‚ªB) exp.txt‚ÌÝ’è•û–@‚à’m‚ç‚È‚¢•û‚Í‚¢‚È‚¢‚Æ
-Žv‚¢‚Ü‚·‚Ì‚Åà–¾‚ÍÈ—ª‚µ‚Ü‚·B
-EƒX[ƒp[ƒm[ƒrƒX‚Í“]¶‚̃eƒXƒg‚ׂ̈ɊؑƒTƒNƒ‰ƒC‚¾‚¯ŽÀ‘•‚µ‚Ä‚¢‚镨‚Æ
-Žv‚í‚ê‚Ü‚·‚ª(“]¶‚ªŽÀ‘•‚³‚ê‚ê‚΂Ȃ‚È‚é‚Æ—\‘ª‚µ‚Ä‚¢‚Ü‚·B)‚»‚ê‚ð
-ŽÀ‘•‚µ‚Ä‚¢‚¢‚Ì‚©‚ÆŽv‚Á‚½‚è‚à‚µ‚Ü‚·‚ª...
-EŒ‹¥ˆßÖ‚ÍŠù‚É0629‚ÅŽÀ‘•‚µ‚Ä‚¢‚é‚Ì‚É‚Ü‚½ƒpƒbƒ`‚Æ‚µ‚Ä
-ƒAƒbƒv‚³‚ê‚é‚Ì‚à‚¿‚å‚Á‚Æ•Ï(H)‚Å‚·‚ËB‚»‚¤‚¢‚¦‚Îà–¾‚µ‚Ä‚È‚©‚Á‚½‚ñ‚Å‚·‚ËB
-E‘•”õê—pƒXƒNƒŠƒvƒg‚Å‚ ‚échangebase‚̒ljÁ‚É‚æ‚Á‚ă^ƒLƒV[ƒh‚Æ
-ƒEƒFƒfƒBƒ“ƒOƒhƒŒƒX‚ªŽÀ‘•‚µ‚Ä‚¢‚Ü‚·B‚±‚ê‚ÍE‹Æ‚ð•ÏX‚¹‚¸‚ÉŒ©‚½–Ú‚¾‚¯
-•Ï‚¦‚镨‚Å‚·BweddingƒNƒ‰ƒXˆÈŠO‚Ì“K—p‚à‰Â”\‚Å•Ï‘•ƒZƒbƒg‚Æ‚©‚àì‚ê‚é
-‚킯‚Å‚·‚ª“à•”ˆ—‚Í•ÏX‚¹‚¸‚ÉŒ©‚½–Ú‚¾‚¯•Ï‚¦‚Ä‚¢‚é‚Ì‚Å0631‚Åà–¾‚µ‚½‚悤‚É
-‘•”õ‚Å‚«‚È‚¢•¨‚ð‘•”õ‚µ‚Ä‚¢‚éꇈƗŽ‚¿‚ª‹N‚±‚é‰Â”\«‚ª‚ ‚è‚Ü‚·‚Ì‚Å
-‘¼‚ÌE‹Æ‚ÅŽg‚¤‚Ì‚Í‚¨Š©‚ß‚µ‚Ü‚¹‚ñB‰¼ŽÀ‘•‚È‚Ì‚Í¡‚ÌŽd—l‚̓^ƒLƒV[ƒh‚Æ
-ƒEƒFƒfƒBƒ“ƒOƒhƒŒƒX‚ð‘•”õ‚·‚邾‚¯‚ÅŒ©‚½–Ú‚ª•Ï‚í‚é‚©‚ç‚Å‚·BŠØ‘ƒTƒNƒ‰ƒC‚Ì
-•û‚ł͉½‚©‚ÌðŒ‚ª•K—v‚¾‚ÆŽv‚Á‚Ä‚¢‚é‚Ì‚Å‚»‚ÌðŒ‚ª‚Ü‚¾ŽÀ‘•‚³‚ê‚¢‚È‚¢‚©‚ç
-‰¼ŽÀ‘•‚Å‚·B‚»‚ê‚ÉweddingƒNƒ‰ƒX‚ðE‹Æ‚É‚µ‚Ä‚µ‚Ü‚¤‚ÆŒ‹¥‚·‚é‚ƃXƒLƒ‹“™‚ª
-ƒŠƒZƒbƒg‚³‚ê‚é‚©•Ï‚É‚È‚é‚©‚Ì‚Ç‚¿‚ç‚È‚Ì‚Å•Ï‚¾‚ÆŽv‚Á‚Ä‚È‚©‚Á‚½‚Ì‚Å‚µ‚傤‚©H
- help.txt C³B
- (db/)
- job_db1.txt C³B
- exp.txt C³B
- (map/)
- pc.c
- pc_jobchange()Apc_readdb() C³B
- pc_nextbaseexp()Apc_nextjobexp() C³B
-
---------------
-//0633 by ”g˜Q
-
-E‘•”õ‚ÌÝ’èC³BŒ‹¥ˆßÖ‚ÌE‚ÍAŽÀÛ‚É“]E‚·‚é‚Ì‚Å‚Í‚È‚ƒyƒRƒiƒCƒg(13)AƒyƒRƒNƒ‹ƒZ(21)‚̂悤‚ɉ摜‚ðŽg‚¤‚¾‚¯‚¾‚ÆŽv‚¤‚Ì‚Å
-@‰½‚à‘•”õ‚Å‚«‚È‚¢Ý’è‚É‚µ‚Ü‚µ‚½BƒXƒpƒmƒr‚̓mƒr‚ª‘•”õ‚Å‚«‚é‚à‚Ì‚¾‚¯Ý’肵‚Ü‚µ‚½B
-EŒÃ–Ø‚ÌŽ}‚ÌoŒ»ƒ‚ƒ“ƒXƒ^[‚ð’ljÁ
-EƒAƒ}ƒc‚̃‚ƒ“ƒX‚Ì•¦‚«‹ï‡‚ð–{ŽI‚É‹ß‚‚È‚é‚悤‚ÉC³(‚Ü‚¾‚Ü‚¾ˆá‚¢‚Ü‚·‚ªEEE)
- (conf/)
- npc_monster.txt ƒ‚ƒ“ƒX–¼C³
- npc_monster_amatsu.txt C³
- (db/)
- item_avail.txt ˆÆ—Ž‚¿ƒAƒCƒeƒ€’ljÁ
- item_db.txt ‘•”õÝ’è‚ðC³A‘¼‘½”
- mob_branch.txt C³
- mob_db.txt ƒ‚ƒ“ƒX–¼C³
- skill_tree.txt C³
-
---------------
-//0632 by nini
-
-E@jobchange‚ÅŒ‹¥ˆßւƃX[ƒp[ƒm[ƒrƒX‚É‚È‚ê‚é‚悤‚ÉB(’ˆÓFŠØ‘÷ˆäƒNƒ‰ƒCƒAƒ“ƒg‚Ì‚Ý)
-ESƒmƒr‚̃XƒeAƒXƒLƒ‹‚È‚Ç‚àŽb’è’ljÁB(ƒm[ƒrƒX‚̃Rƒs[‚Å‚·‚ª)
-@‚Æ‚è‚ ‚¦‚¸Œ©‚½–Ú‚¾‚¯‚Æ‚¢‚¤‚±‚Æ‚ÅAŒ‹¥ˆßÖ‚Å‚àUŒ‚‚Å‚«‚Ü‚·‚ª(‚½‚¾‚µƒm[ƒ‚[ƒVƒ‡ƒ“)A–{—ˆ‚Í‚Å‚«‚Ü‚¹‚ñB
-Eã‚É‚ ‚킹‚Äitem_db•ÒWB
-@Œ‹¥ˆßÖ‚Å•Ší‚à‚‚ÆactAsprƒGƒ‰[o‚·‚Ì‚ÅAŒ‹¥ˆßÖ‚Å‚Í•Ší‚ðŽ‚Ä‚È‚¢‚悤‚É‚µ‚½(‚Í‚¸)B
- (db/)
- job_db1.txt
- job_db2.txt
- item_db.txt
- Œ‹¥ˆßÖASƒmƒr‚̃f[ƒ^
- skill_tree.txt
- Sƒmƒr‚̃XƒLƒ‹
- (map/)
- map.h
- MAX_PC_CLASS‚ɒljÁ
-
---------------
-//0631 by Ž€_
-
-Eׂ©‚¢C³B
-Eƒ^ƒLƒV[ƒh‚ƃEƒFƒfƒBƒ“ƒOƒhƒŒƒX‚Ì•\Ž¦‚ðbattle_athena.conf‚ÅÝ’è‚Å‚«‚é
-‚悤‚É•ÏXB
-E•ŠíƒOƒ‰ƒpƒbƒ`‚ɂ‚¢‚Ä‚Å‚·‚ªƒpƒbƒ`‘O‚ÍŽg‚¦‚È‚¢E‹Æ‚ª‘•”õ‚ð‚µ‚Ä‚à•\Ž¦‚Í
-‚³‚ê‚È‚¢‚¾‚¯‚ňƗŽ‚¿‚Ü‚Å‚Í‹N‚±‚ç‚È‚©‚Á‚½‚¯‚Ç•ŠíƒOƒ‰ƒpƒbƒ`‚ÌŒã‚Í‚»‚Ì•Ší‚ð
-‘•”õ‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢E‹Æ(–{ŽI‚Å)‚ª‘•”õ‚µ‚Ä‚µ‚Ü‚Á‚½ê‡ˆÆ—Ž‚¿‚ª‹N‚±‚é
-‚±‚Æ‚ª‚ ‚è‚Ü‚·‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
- (db/)
- item_db.txt
- 1161A2338A7170 C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- battle.h
- struct Battle_Config‚Éwedding_modifydisplay ’ljÁB
- battle.c
- battle_config_read() C³B
- pc.h
- pc_cart_delitem() C³B
- pc.c
- pc_jobchange()Apc_additem()Apc_delitem()Apc_cart_delitem() C³B
- pc_checkitem()Apc_getitemfromcart() C³B
- clif.c
- clif_changelook()Aclif_send()Aclif_parse_GlobalMessage() C³B
- script.c
- buildin_changebase() C³B
- storage.c
- storage_storageaddfromcart() C³B
- vending.c
- vending_purchasereq() C³B
-
---------------
-//0630 by ˆø‘Þl
-
-EƒMƒ‹ƒh’E‘ÞŽž‚ÉcharƒT[ƒo‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚é‚Ì‚ðC³
-Ewater_height.txt‚ðXV
-E0627‚ÉŠÖ˜A‚µ‚ÄmodifydisplayŠÖ˜A‚ðíœ
- (char/)
- int_guild.c
- mapif_guild_leaved()‚̃oƒbƒtƒ@—e—Ê‚ª‘«‚è‚È‚©‚Á‚½‚Ì‚ÅA
- unsigned char buf[64]; -> unsigned char buf[128];
- ‚ÆC³B
- (conf/)
- battle_athena.conf
- equip_modifydisplay‚ðíœ
- water_height.txt
- prt_fild04.gat‚Æmoc_fild01.gat‚Ì•ª‚ð’ljÁ
- (doc/)
- conf_ref.txt
- equip_modifydisplay‚Ìà–¾‚ðíœ
- (map/)
- battle.h
- struct Battle_Config ‚©‚çequip_modifydisplay‚ðíœ
-
---------------
-//0629 by Ž€_
-
-E0627‚̃oƒOˆê•”C³‚ÆV‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚ɑΉžB(Ž©•ª‚̊ԈႢ‚Å‚µ‚½B
-ƒ‚ƒ“ƒXƒ^[‚âNPC‚àV‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚ðŽg‚¤‚ÆŽv‚Á‚Ä‚¢‚½‚Ì‚Å‚·‚ª
-V‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚̓vƒŒƒCƒ„[‚݂̂̂悤‚Å‚·B)
-Eƒ^ƒLƒV[ƒh‚ƃEƒFƒfƒBƒ“ƒOƒhƒŒƒX‰¼ŽÀ‘•B(ŠØ‘‚̃TƒNƒ‰ƒCˆÆ‚¶‚á‚È‚¢‚Æ
-ˆÆ—Ž‚¿‚³‚ê‚Ü‚·BŽg—p‚·‚鎞‚Íitem_db.txt‚̃Rƒ}ƒ“ƒgƒAƒEƒg‚³‚ê‚Ä‚¢‚é
-2338‚Æ7170‚ð‰ðœ‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B)
-ESP‰ñ•œƒAƒCƒeƒ€‚àint‚É‚æ‚Á‚ÄŒø‰Ê‚ª‘‚¦‚é‚悤‚É•ÏXB
-E0627‚Å‘‚«–Y‚ê‚Å‚·‚ªƒJ[ƒg‚̃AƒCƒeƒ€ŒvŽZ‚Æitemdb_‚ðŒÄ‚Ô‚Ì‚ðŬ‰»‚·‚é
-ˆ—‚ð“ü‚Á‚Ă邹‚¢‚Åpc_additem()Apc_delitem()Apc_cart_additem()Apc_cart_delitem()ˆÈŠO‚Ì•û–@‚ŃJ[ƒgƒAƒCƒeƒ€‚âƒAƒCƒeƒ€‚É•Ï“®‚ª‚ ‚éê‡
-³í‚É“®ì‚·‚é•ÛØ‚ª‚È‚¢‚Ì‚ÅC³‚Ì‚³‚¢‚É‚Í’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
- readme0754‚ðreadme0574‚ÉC³B
- makefile C³B
- (map/)
- map.h C³B
- clif.c C³B
- pc.c C³B
- battle.c C³B
- mob.c C³B
- script.c C³B
- (db/)
- item_db.txt C³B
- class_equip_db.txt C³B
- skill_db.txt C³B(ŒëŽš‚ðŽ¡‚µ‚½‚¾‚¯‚Å‚·B)
- (conf/)
- npc_event_doll.txt C³B(—¬˜Ql‚³‚ñ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B)
-
---------------
-//0628 by NOCTURNE
-
-Esnapshot
-Esnapshot‚©‚çsnapshot‚Ü‚Å‚ÌReadme•ªŠ„
-E—v–]‚ª‘½‚©‚Á‚½‚Ì‚Åsnapì¬iƒvƒƒOƒ‰ƒ€“I‚È•ÏX“_‚Í–³‚µ
-
---------------
-//0627 by Ž€_
-
-EƒR[ƒh‚ÌÅ“K‰»‚Æ‚µC³B(‚µ‚ÍŒy‚‚È‚é‚ÆŽv‚¢‚Ü‚·B)
-E @modifydisplayƒRƒ}ƒ“ƒhíœB
-EV‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚ɑΉž‚¾‚ÆŽv‚Á‚½‚ç0x1d8A0x1d9A0x1daƒpƒPƒbƒg‚̈ꕔ‚ª
-0x78A0x79A0x7b‚Æ•Ï‚í‚Á‚Ä‚é‚Ý‚½‚¢‚Å‚·B‚‚܂衂̂܂܂ł͑Ήž‚Å‚«‚Ü‚¹‚ñB
-X,Y‚ÌÀ•W‚Ì•”•ª‚Ì‘Ž®‚ª•Ï‚í‚Á‚½‚Ì‚©‚Æ—\‘ª‚Í‚µ‚Ä‚¢‚Ü‚·‚ª...
-î•ñ‚ð‹‚Ý‚Ü‚·B(makefile‚ÌDPACKETVER‚ð4‚É‚·‚ê‚Î0x1d8A0x1d9A0x1da‚ð
-Žg‚¢‚Ü‚·‚ªÀ•W‚ª‚¸‚ꂽ‚炵‚‰½‚à•WŽ¦‚³‚ê‚Ü‚¹‚ñB)
-E100000‚©‚炾‚Á‚½char_id‚ð150000‚©‚ç‚É•ÏXB(ƒyƒbƒg‚Ì—‘‚Ì–â‘è‚Å•Ší‚Ì–¼‘O‚ª‚¿‚å‚Á‚Æ•Ï‚É‚È‚Á‚½‚Ì‚ÅC³‚µ‚Ü‚µ‚½B)
-Eƒyƒbƒg‚̃R[ƒh‚µC³B(pet_id‚ðcard[2]‚Æcard[3]‚©‚çcard[1]‚Æcard[2]‚É•ÏX‚µ‚Ü‚µ‚½B‚æ‚Á‚Ä‘O‚Éì‚Á‚½—‘‚ÍŽg‚¦‚Ü‚¹‚ñBˆÆ‚Åcard[3]‚Ì‹@”\‚ª•Ï‚í‚Á‚½‚Ì‚Å
-Žd•û‚È‚C³‚µ‚Ü‚µ‚½B¡“x‚Íconvertƒc[ƒ‹‚ª‚ ‚è‚Ü‚¹‚ñBì‚鎞ŠÔ‚ª‚È‚©‚Á‚½‚Ì‚Å...)
-EÅ“K‰»‚ׂ̈ÉC³‚µ‚½Š‚ª‘½‚¢‚Å‚·‚ª‘S‚ij퓮삷‚é•ÛØ‚Í‚ ‚è‚Ü‚¹‚ñB
-ŽI—Ž‚¿ƒoƒO‚ª”¶‚µ‚½‚ç•ñ‚¨Šè‚¢‚µ‚Ü‚·B(batte.c‚Í‚Ü‚¾Å“K‰»‚µ‚Ä‚Ü‚¹‚ñB)
-ƒJ[ƒg‚̃AƒCƒeƒ€ŒvŽZ‚âƒAƒCƒeƒ€‚Ìd—Ê‚ÌŒvŽZ‚ðʼn‚É‚¾‚¯‚·‚é‚悤‚É‚µ‚Ä‚¢‚é‚Ì‚Å•\Ž¦‚É‚µ–â‘肪‚ ‚é‚©‚à...
-EC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯‘‚¢‚Ä‚¨‚«‚Ü‚·B
- makefile
- help.txt
- (common/)
- mmo.h
- (map/)
- map.h
- atcommnad.h
- atcommnad.c
- pc.h
- pc.c
- clif.c
- script.c
- trade.c
- itemdb.h
- itemdb.c
- battle.h
- battle.c
- pet.c
- map.c
- mob.c
- (char/)
- char.c
- (conf/)
- battle_athena-conf
- atcommand_athena.conf
-
---------------
-//0626 by ˆø‘Þl
-
-EƒpƒPƒbƒg’·ƒe[ƒuƒ‹iVˆÚ“®ƒpƒPƒbƒg‚È‚ÇjC³
- (doc/)
- client_packet.txt ƒpƒPƒbƒg‰ð̓XƒŒ M‚³‚ñ‚Ìî•ñ‚𔽉f
- conf_ref.txt 0624‚ɇ‚킹‚ÄC³
- (map/)
- clif.c
- packet_len_table[] client_packet.txt‚ɇ‚킹‚ÄC³
-
---------------
-//0625 by ˆø‘Þl
-
-E@hide“§–¾‰»‚ðBOSS‚È‚Ç‚ÉŒ©”j‚ç‚ê‚È‚¢‚悤‚ÉC³
- (map/)
- pc.h
- #define pc_iscarton(sd) C³
- #define pc_isinvisible(sd) ’ljÁ
- mob.c
- mob_attack()
- mob_target()
- mob_ai_sub_hard_activesearch()
- mob_ai_sub_hard_mastersearch()
- mob_ai_sub_hard()
- “§–¾ipc_isinvisible(sd)!=0j‚ÅŽ€l‚Æ“¯—l‚É”»’肳‚ê‚é‚悤‚ÉC³
- (conf/)
- npc_cTower.txt C³ithx to holyzard‚³‚ñj
-
---------------
-//0624 by ‚é‚é‚é
-
-E•Ší‰æ‘œ•\Ž¦ˆ—‚̈êViVˆÚ“®ƒpƒPƒbƒgŽg—pj
-Eã‚ÆŠÖ˜A‚µ‚ÄA@modifydisplayƒRƒ}ƒ“ƒh‚ðÝ‚¯‚½
-@@@@‹@”\‚Æ‚µ‚Ä‚ÍAŒ»Ý‚̃AƒTƒVƒ“•Ší‚È‚Ç‚Ì‚ª‚¨‚©‚µ‚¢ê‡‚ÉA‚Ü‚½‚Í‹C‚É“ü‚ç‚È‚¢‚Æ‚©‚ÅA
-@@@@ƒLƒƒƒ‰–ˆ‚É‹ŒƒpƒP‚ðŽg—p‚·‚é‚悤‚É‚µ‚Ä‚¢‚éB
-
- (map/)
- atcommand.c
- atcommand() @modifydisplayƒRƒ}ƒ“ƒh‚ð’ljÁ
- atcommand.h
- struct Atcommand_Config {
-'7d •ÏX
- clif.c
- clif_set0078_and01d8() , clif_set007b_and01da() ŠÖ”–¼•ˆ—‚Ì•ÏX
- clif_spawnpc() , clif_movechar() , clif_changelook() , clif_getareachar_pc() ,
- clif_fixpcpos() , clif_parse_LoadEndAck() •ÏX
- map.h
- struct map_session_data Eb} •ÏX
- pc.c
- pc_setnewpc() , pc_calcstatus() , pc_equiplookall() , pc_changelook() •ÏX
-
- (conf/)
- atcommand_athena.conf
- equip_modifydisplay ’ljÁ
-
- •ÏX‰ÓŠ‚Í‘S‚ăL[ƒ[ƒhumodifydisplayv‚ŃT[ƒ`‚·‚ê‚΂قڂ킩‚é‚©‚ÆB
-
-ƒRƒƒ“ƒgF‚à‚¤‚±‚ê‚Å–â‘è‚Í–³‚¢‚Í‚¸BŽÀ‚Í‘å‚¢‚Ȃ銨ˆá‚¢‚ð‚µ‚Ä‚½ŒÂŠ‚ª‚ ‚Á‚½‚Ì‚Í“àiƒ}ƒew
-
---------------
-//0623 by ˆø‘Þl
-
-E@hide‚Å“§–¾‰»iŒ©‚ç‚ê‚È‚¢•MOB‚Ƀ^ƒQ‚ç‚ê‚È‚¢j‚·‚é‚悤‚ÉC³‚È‚Ç
- (map/)
- atcommand.c
- @hide‚ÌoptionÝ’è‚ð0x04‚©‚ç0x40‚É•ÏX
- mob.c
- mob_attack()
- mob_target()
- mob_ai_sub_hard_activesearch()
- mob_ai_sub_hard_mastersearch()
- mob_ai_sub_hard()
- option”»’è‚ð0x06‚©‚ç0x46‚ÉC³
- (conf/)
- npc_event_potion.txt MORISON_MEATC³ithx to holyzard‚³‚ñj
-
---------------
-//0622 by ˆø‘Þl
-
-Emob‚ªƒXƒLƒ‹Žg—p‚ÉŽ¸”s‚µ‚½ê‡A’ÊíUŒ‚‚·‚é‚悤‚É
- (map/)
- mob.c
- mobskill_use_id() ƒXƒLƒ‹Žg—pŽ¸”s‚Å0A¬Œ÷‚Å1‚ð•Ô‚·‚悤‚ÉC³
- mobskill_use_pos() ƒXƒLƒ‹Žg—pŽ¸”s‚Å0A¬Œ÷‚Å1‚ð•Ô‚·‚悤‚ÉC³
- mobskill_use() ã‹L‚𔽉f‚µ‚ÄŽ¸”sŽž‚É‚Í0‚ð•Ô‚·‚悤‚ÉC³
-
---------------
-//0621 by ŒÓ’±—–
-
-EƒAƒCƒeƒ€ƒ`ƒFƒbƒN‚ðs‚¤‚©‚Ç‚¤‚©conf/battle_athena.cnf‚É‘‚¯‚é‚悤‚É
-EƒAƒCƒeƒ€ƒ`ƒFƒbƒN‚Å•s³‚Æ”»’f‚·‚é‚©‚Ç‚¤‚©‚ðdb/item_avail.txt‚É‘‚¯‚é‚悤‚É
-E@itemcheck‚Å–¾Ž¦“I‚ɃAƒCƒeƒ€ƒ`ƒFƒbƒN‚Å‚«‚é‚悤‚É
-
- ƒfƒoƒO‚âƒeƒXƒg‚È‚Ç‚ÅFX‚ȃAƒCƒeƒ€ID‚ðŽg—p‚µ‚½‚¢ê‡‚Í
- ƒAƒCƒeƒ€ƒ`ƒFƒbƒN‚𖳌ø‚É‚µ‚ĉº‚³‚¢B(item_check: off)
- –³Œø‚É‚µ‚½ê‡‚Å‚à@itemcheckƒRƒ}ƒ“ƒh‚Ń`ƒFƒbƒN‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
- cnfƒtƒ@ƒCƒ‹‚Í—pˆÓ‚µ‚Ä‚È‚¢‚Ì‚Å•K—v‚È‚çŠeŽ©“K“–‚É‘‚«Š·‚¦‚Ä‚‚¾‚³‚¢B
-
- (db/)
- item_avail.txt
- V‹K’ljÁB•s³ƒAƒCƒeƒ€‚Ì—ñ‹“‚ÉŽg—pB–¢Š®¬B‘¼—Í–{ŠèB
- item_db.txt‚É’è‹`‚³‚ê‚Ă邪ŽÀÛ‚É‚ÍŽg—p‚Å‚«‚È‚¢ƒAƒCƒeƒ€‚ð‘‚B
- (doc/)
- conf_ref.txt
- battle_athena.cnf‚Æatcommand_athena.cnf‚Ìà–¾C³
- (map/)
- itemdb.c/itemdb.h
- itemdb_availableƒ}ƒNƒ’ljÁ
- itemdb_read_itemavail()’ljÁ
- itemdb_readdb()‚Åavailable=1‚É‚·‚é‚悤‚É
- itemdb_search()‚Å‘¶Ý‚µ‚È‚¢ID‚Íavailable=0‚Ńf[ƒ^‚ðì‚é‚悤‚É
- do_init_itemdb()‚Åitemdb_read_itemavail()‚ðŒÄ‚Ԃ悤‚É
- pc.c/pc.h
- pc_checkitem()‚ðƒGƒNƒXƒ|[ƒg
- pc_checkitem()‚Åavailable‚Æbattleconfig‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É
- atcommand.c/atcommand.h
- @item‚Åbattleconfig‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É
- @itemcheckƒRƒ}ƒ“ƒh’ljÁ
- atcommandconfig‚Éitemcheckƒƒ“ƒo’ljÁ
- battle.c/battle.h
- battle_config‚Éitem_checkƒƒ“ƒo’ljÁ
-
-Eladmin‚ÌC³‚È‚Ç
- ƒAƒJƒEƒ“ƒg’ljÁAƒpƒXƒ[ƒh•ÏX‚ÌۂɃpƒXƒ[ƒh‚ðÈ—ª‚·‚é‚ÆA
- ƒpƒXƒ[ƒh—p‚̃GƒR[‚µ‚È‚¢ê—pƒvƒƒ“ƒvƒg‚Å“ü—Í‚Å‚«‚Ü‚·i•“ü—ÍŠm”FjB
- ’ljÁ‚ÌۂɃpƒXƒ[ƒh‚ª•\Ž¦‚³‚ꂽ‚碂éꇂȂǂÉB
- ƒpƒXƒ[ƒh“ü—Í’†‚ÍCtrl+C‚ªŒø‚©‚È‚¢‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
-
- ƒpƒXƒ[ƒh‚Ì•s³•¶Žš‚Ì•\Ž¦‚ªA‰½•¶Žš–Ú‚©‚Å•\Ž¦‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
- ‚»‚Ì‘¼”÷–‚Ƀ`ƒFƒbƒN’ljÁ‚È‚ÇB
-
- Cygwin‚Å‚µ‚©“®ìŠm”F‚µ‚Ä‚¢‚Ü‚¹‚ñBPOSIXƒ‚ƒWƒ…[ƒ‹‚ðŽg‚Á‚Ä‚¢‚é‚Ì‚ÅA
- POSIX‚Å‚È‚¢(•ƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚à‚Å‚«‚È‚¢)ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚¾‚Æ
- “®‚©‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
- UNIXŒn‚Å‚Ínkf‚ȂǂʼnüsƒR[ƒh‚ð•ÏŠ·‚µ‚È‚¢‚Æ‚¾‚ß‚©‚àH
-
- (tool/)
- ladmin
- Ver.1.03‚ÉB
-
--------------
-//0620 by ŒŽ‰r‚Ý
-
-Eƒz[ƒŠ[ƒNƒƒXŽÀ‘•
-
- (db)
- skill_db.txt C³
- (map)
- skill.c
- skill_additional_effect()C³(ƒRƒƒ“ƒg‚Ì‚Ý)
- battle.c
- Damage battle_calc_weapon_attack()C³
-
--------------
-//0619 by ‚é‚é‚é
-
-Eƒpƒbƒ`0617‚Ì‚Å‚â‚è–Y‚ê‚Æ”÷–‚ÈC³
-
- clif.c
- clif_movechar(),clif_parse_LoadEndAck() C³
-
---------------
-//0618 by nini
-
-EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚̉r¥AƒfƒBƒŒƒC’ljÁB‰ñ•œ—ÊC³B
-EÁ”ïSPC³
-EƒAƒ[ƒVƒƒƒ[‚͈̔͂ð5*5‚É‚µ‚Ä2ƒZƒ‹‚«”ò‚΂µB
-Eƒ`ƒƒ[ƒWƒAƒ[‚ÌŽg—p•ŠíðŒ–³‚µB
-EƒXƒsƒAƒXƒ^ƒu‚Ì”ò‹——£‚ð6ƒZƒ‹‚ÉB
- (/db)
- cast_db.txt C³
- skill_db.txt C³
- (/map)
- battle.c
- battle_calc_weapon_attack() C³
- skill.c
- skill_castend_damage_id() C³
- skill_check_condition() C³
- skill_castend_nodamage_id() C³
-
---------------
-//0617 by ‚é‚é‚é
-
-E•Ší‰æ‘œ•\Ž¦‚Å‘¼ƒLƒƒƒ‰‚ª•\Ž¦‚³‚ê‚È‚¢‚Ì‚ðu‚Æ‚è‚ ‚¦‚¸vC³
-EŒC•\Ž¦‚̃pƒPƒbƒg‚ð‘—M’âŽ~iŒ»Žž“_‚ł̓€ƒ_BƒRƒƒ“ƒg‚µ‚½‚¾‚¯‚Å‚·‚ªj
- clif.c
- clif_spawnpc(),clif_getareachar_pc(),clif_fixpcpos(),clif_changelook()C³
- pc.c
- clif_changelook()‚ª‚ ‚é•”•ª‚ðC³i•Ší[„‚‚Ƈ‚É‚È‚é‚悤‚Ɉ—‚Ì“ü‚ê‘Ö‚¦j
-
-ƒRƒƒ“ƒgB
-Vƒ}ƒbƒvˆÚ“®ƒpƒP(0x1d8`0x1daj‚ðFX‚Æ‚â‚Á‚½‚ªA‚»‚̃pƒP‚P‚‚ŕŠí•\Ž¦‚ªVŽ®‚̂ɑΉž‚µ‚Ä‚é
-‚Æ‚¢‚¤‚킯‚Å‚Í‚È‚¢‚Á‚Û‚¢B‹ŒˆÚ“®ƒpƒP‚¾‚ÆŽ©•ªˆÈŠO‚̃Lƒƒƒ‰‚ªˆÚ“®‚·‚é‚Æ‹ŒŽ®•\Ž¦‚É‚È‚Á‚Ä‚µ‚È‚¤B
-X‚ÉAV•Ší•\Ž¦ƒpƒP‚Í•Ší‚Æ‚‚Ì“¯Žžˆ—‚ªo—ˆ‚Ä‚È‚¢B‚¨‚»‚炃Nƒ‰ƒCƒAƒ“ƒg‚Ì–â‘肾‚ÆŽv‚¤B
-‚Æ‚è‚ ‚¦‚¸AƒLƒƒƒ‰‚ª“®‚‚½‚Ñ‚ÉV•ŠíƒpƒP„‹Œ‚ƒpƒP‚Ì‚Q‚‚̑•”õƒpƒP‚𑗂邱‚Æ‚Å‰ðŒˆ‚³‚¹‚Ä‚¢‚éB
-–{ŽI‚Å‚Í‚Ç‚¤‚È‚Ì‚©‚ÌŽÀÛ‚Ì‚Æ‚±‚ë‚̃f[ƒ^‚ª–³‚¢‚½‚ßA‚±‚êˆÈã‚Ì‚±‚Ƃ̓€ƒŠB
-
---------------
-//0616 by ŒÓ’±—–
-
-Ewater_height.txt‚ð“Ç‚ñ‚Å‚¢‚È‚¢‚ƃT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³
- map.c
- map_waterheight()C³
-
-EPC‚̃}ƒbƒvˆÚ“®Žž‚̃AƒCƒeƒ€ƒ`ƒFƒbƒN‚ŃAƒCƒeƒ€ID‚Ì‘¶Ý‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³
-Eˆê•”‚Ì—ƒRƒ}ƒ“ƒh‚ŃAƒCƒeƒ€ID‚Ì‘¶Ý‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³
- pc.c
- pc_checkitem()C³
- pc_authok()C³ pc_checkitem()’ljÁ
- clif.c
- clif_parse_LoadEndAck()C³
- itemdb.c
- itemdb_exists()’ljÁiitemdb_search‚Æ“¯‚¶‚¾‚ªAdb‚É‘¶Ý‚µ‚È‚¢
- ꇂÍV‚µ‚¢ƒf[ƒ^‚ðì‚炸‚ÉNULL‚ð•Ô‚·j
- itemdb_read_classequipdb()C³ itemdb_search=>itemdb_exists
- itemdb_read_itemnametable()C³ itemdb_search=>itemdb_exists
- itemdb_read_itemvaluedb()C³ itemdb_search=>itemdb_exists
- atcommand.c
- @itemC³ itemdb_search=>itemdb_exists
- @produceC³ itemdb_exists‚Ń`ƒFƒbƒN‚·‚é‚悤‚É
-
---------------
-//0615 by ”g˜Q
-
-EƒAƒCƒeƒ€DATA‘å•C³
-@Žå‚ÈC³‰ÓŠ‚ÍA‰ñ•œƒAƒCƒeƒ€‚̉ñ•œ—Ê‚ÌC³AÁ”ïƒAƒCƒeƒ€‚ðclass_equip_db.txt–³‚µ‚Å‚àŽg—p‚Å‚«‚é—l‚ÉC³A
-@‘•”õ•i‚Ì‘•”õ‰Â”\E‚ð‘S‚ÄC³AƒJ[ƒhŒø‰Ê‚ðC³AetcEEE‚Å‚·B
-
---------------
-//0614 by Nikita
-
-EƒAƒCƒeƒ€DATA‚ÌC³iŽå‚ɉñ•œ—Êj
-EƒXƒLƒ‹‰ð“Å‚ÌŽË’öC³
-E0612‚Ìׂ©‚¢C³
- (conf/)
- npc_town_prontera.txt C³
- (db/)
- item_db.txt C³
- skill_db.txt C³
-
---------------
-//0613 by ˆø‘Þl
-EcheckweightC³
- (conf/)
- npc_event_making.txt checkweight•”•ª‚ðC³
- npc_event_potion.txt ƒ|[ƒVƒ‡ƒ“AƒWƒ…[ƒXNPC‚ÌcheckweightC³
-
---------------
-//0612 by nini
-
-EƒAƒCƒeƒ€DATAC³
- (db/)
- item_db.txt C³
- (conf/)
- npc_town_***.txt C³
- R.O.M776‚³‚ñ‚ðŽQÆ‚µ‚Ü‚µ‚½B
-
---------------
-//0611 by Ž€_
-
-EƒAƒCƒeƒ€Žg—pðŒ‚ª‚ ‚í‚È‚¢Žž0xa8ƒpƒPƒbƒg‚ð‘—‚é‚悤‚É•ÏXB(ƒoƒO•ñƒXƒŒƒbƒh 243‚Ìno name‚³‚ñî•ñ’ñ‹Ÿ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B)
-EQM‚ÅW’†—ÍŒüã‚Æ‘¬“xã¸AƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…Aƒ‰ƒEƒhƒ{ƒCƒXAƒXƒsƒAƒNƒCƒbƒPƒ“Aƒc[ƒnƒ“ƒhƒNƒCƒbƒPƒ“‚ð‰ðœ‚·‚é‚悤‚ÉC³B
-E‘¬“x㸂Ƒ¬“xŒ¸‚Å‹t‚̃XƒLƒ‹‚ª‰ðœ‚³‚ê‚é‚悤‚ÉC³B
-E0609‚Å‘‚«–Y‚êBƒ‚ƒ“ƒXƒ^[‚ªQM‚͈̔͂©‚甲‚¯‚Ä‚àŒø‰Ê‚ªˆÛŽ‚·‚é‚悤‚É
-•ÏX‚ƃuƒŒƒbƒVƒ“ƒO‚ÅŽô‚¢‚ÆΉ»‚ª‰ðœ‚³‚ê‚é‚悤‚ÉC³B
- clif.c
- clif_useitemack() C³B
- skill.c
- skill_status_change_start() C³B
- pc.c
- pc_insert_card() C³B(‚±‚ê‚̓J[ƒhƒoƒO‚Æ‚ÍŠÖŒW‚È‚¢C³‚Å‚·B‚»‚̃oƒO‚ÌC³‚ÍŽ©•ª‚ª05xx“–‚½‚è‚ÅC³‚µ‚Ü‚µ‚½‚Ì‚ÅB)
-
---------------
-//0610 by ”g˜Q
-
-EƒAƒCƒeƒ€DATAC³
- (db/)
- item_db.txt C³
-
---------------
-//0609 by Ž€_
-
-EFX‚ÆC³B
-Eƒ‚ƒ“ƒXƒ^[‚ªŽ~‚Ü‚é‚悤‚É“®‚–â‘èC³B
-EŽw’e‚̃fƒBƒŒƒCC³B
-E–î쬂̃R[ƒh•Ð•t‚¯B
-E“G‚ªƒXƒLƒ‹”͈͂©‚瓦‚°‚½ê‡ƒXƒLƒ‹‚ªŽ¸”s‚·‚é‚悤‚É•ÏXB
-Eclass_equip_db.txt‚ÌŽd—l•ÏXB
- «•Ê‚Æ‘•”õƒŒƒxƒ‹‚àÝ’è‰Â”\‚É•ÏX‚ÆŽg—pƒAƒCƒeƒ€‚ÌŽg—pE‹ÆA«•Ê‚ÆŽg—p
- ƒŒƒxƒ‹‚Ìݒ肪‚Å‚«‚é‚悤‚É•ÏXB(‚½‚¾ƒf[ƒ^‚ª‘½‚¢‚¹‚¢‚ÅC³‚µ‚½
- class_equip_db.txt‚̓Tƒ“ƒvƒ‹’ö“x‚Ì•¨‚Å‚·B–„‚ß‚Ä‚‚¾‚³‚¢B‘¼—Í–{Šè‚Å‚·‚ª...)
- ‚»‚ê‚ƃAƒCƒeƒ€Žg—pðŒ‚ª‚ ‚í‚È‚¢‚ƃAƒCƒeƒ€‚ªŽg‚í‚È‚¢‚悤‚É‚µ‚Ä‚Í
- ‚¢‚Ü‚·‚ª01c8ƒpƒPƒbƒg‚Ì<type>‚ð0‚É‚µ‚Ä‚àƒAƒCƒeƒ€‚ðŽg—p‚µ‚½Žž‚Æ“¯‚¶
- ƒGƒtƒFƒNƒg‚ªo‚Ü‚·B–{ŽI‚̃AƒCƒeƒ€Žg—pƒpƒPƒbƒg‚ª•ª‚©‚ç‚È‚¢‚Ü‚Ü‚¶‚á
- ‚±‚¤‚·‚邵‚©‚È‚©‚Á‚½‚Ì‚Å‚·‚ª...
-Ebattle_athena.conf‚É€–ڒljÁB
-E‚»‚Ì‘¼ƒXƒLƒ‹‚µC³‚Æׂ©‚¢C³B
-EC³‚µ‚½Š‚ð‘S‚ÄŠo‚¦‚Ä‚Ü‚¹‚ñ‚̂Ńtƒ@ƒCƒ‹‚¾‚¯B
- (map/)
- clif.c C³B
- mob.c C³B
- mob.h C³B
- pc.c C³B
- map.h C³B
- skill.c C³B
- skill.h C³B
- itemdb.c C³B
- battle.c C³B
- battle.h C³B
- (conf/)
- battle_athena.conf C³B
- (db/)
- cast_db.txt C³B
- skill_db.txt C³B
- create_arrow_db.txt C³B
- class_equip_db.txt C³B
- item_db.txt C³B
- (doc/)
- client_packet.txt C³B
- conf_ref.txt C³B
-
---------------
-//0608 by sk
-EƒAƒ}ƒcNPC’ljÁ
- (conf/)
- npc_town_amatsu.txt é“àNPC’ljÁ
- npc_warp_amatsu.txt é“àƒ[ƒvƒ|ƒCƒ“ƒg’ljÁ
-
---------------
-//0607 by J
-EƒAƒTƒ‹ƒgƒ^[ƒgƒ‹‚̎艺¢Š«‚̃oƒOC³(•ñ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚· ‚é‚é‚邳‚ñ)
- (db/)
- mob_skill_db.txt ƒAƒTƒ‹ƒg‚ÌC³‚‚¢‚łɃeƒŒƒ|‚ðŽg‚¤MOB‚̃XƒLƒ‹ƒfƒBƒŒƒC‚àC³
-
---------------
-//0606 by ˆø‘Þl
-EƒXƒLƒ‹ƒŒƒxƒ‹Å‘å’lˆÈã‚ɃNƒŠƒbƒN‚µ‚½Žž“_‚Å‘¼ƒXƒLƒ‹‚ªã‚°‚ç‚ê‚È‚‚È‚éƒoƒO‚ðC³iThanx to 227‚³‚ñj
- (map/)
- clif.c
- clif_skillup()
- ƒXƒLƒ‹ƒŒƒxƒ‹‚ªÅ‘å’l‚Ì‚Æ‚«AƒpƒPƒbƒg––”ö‚ð0‚É‚·‚é‚悤‚ÉC³
-
---------------
-//0605 by ‚é‚é‚é
-
-E•Ší‘®«•t—^ƒXƒLƒ‹‚Ì•s“s‡C³
- •Ší‚ðŽ‚¿‘Ö‚¦‚½‚èŠO‚µ‚½‚肵‚½ê‡‚àA‘®«•t—^‚ð‰ðœ‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B
- ’A‚µA‘fŽè„•Ší‘•”õ‚Ì‚Ýó‘ÔˆÛŽ‚µ‚Ü‚·B
-EƒXƒsƒAƒNƒCƒbƒPƒ“‚̃Xƒe[ƒ^ƒXƒAƒCƒRƒ“‚𳂵‚•\Ž¦
-E‚Q‚g‚pAƒXƒsƒAƒNƒCƒbƒPƒ“AƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…‚ÅŠY“–ˆÈŠO‚Ì•ŠíŽ‚¿‘Ö‚¦‚Åó‘ÔÁ–Å
- ƒXƒsƒAƒNƒCƒbƒPƒ“‚Í–¢Šm”F‚Å‚·‚ªA‚Q‚g‚p‚ÍŠmŽÀ‚È‚Ì‚Å‚Q‚g‚p‚Æ•sŒö•½‚ÈŽd—l‚Æ‚Í
- l‚¦‚É‚‚¢‚Ì‚Å“¯—l‚ȃpƒ^[ƒ“‚Æ‚µ‚Ü‚µ‚½B–{ŽI‚Æ‘Šˆá‚ª‚ ‚éꇂ͕ñŠè‚¢‚Ü‚·B
-E“G‚Ì‚p‚l‚ÅW’†—ÍŒüã‚Æ‘¬“x㸂ð‰ðœ
- ‚p‚l‚ʼne‹¿‚·‚éƒXƒLƒ‹‚Í‚±‚ê‚Q‚‚¾‚¯‚©‚ÈH@Ž„‚Ì‹L‰¯‚ÆŒfŽ¦”‚ł̕ñ‚Æ‚Å
- ”»’f‚µ‚½‚Ì‚Å‚·‚ªA‚à‚µ‘Šˆá‚ª‚ ‚è‚Ü‚µ‚½‚ç•ñŠè‚¢‚Ü‚·B
-
- (map/)
- clif.c
- clif_parse_UnequipItem() C³
- pc.c
- pc_checkallowskill() pc_equipitem() C³
- skill.h
- skill_encchant_eremental_end() ’ljÁ
- skill.c
- skill_status_change_start() skill_status_change_end()
- skill_status_change_clear() skill_encchant_eremental_end() C³
- ‚»‚Ì‘¼×‚©‚¢‚Æ‚±‚ëX
-
---------------
-//0604 by J
-EMOBƒXƒLƒ‹ÄC³
-EMOBDBC³
- (db/)
- mob_skill_db.txt
- ƒA[ƒNƒGƒ“ƒWƒFƒŠƒ“ƒO‚ƃ^[ƒgƒ‹ƒWƒFƒlƒ‰ƒ‹‚ª1‰ñ‚É2Ží—Þ‚Ü‚Å‚µ‚©
- MOB‚ðo‚³‚È‚©‚Á‚½‚Ì‚ðC³
- mob_db.txt
- ƒ[ƒhƒIƒuƒfƒX‚̃hƒƒbƒv‚ŃGƒ‰[‚ªo‚é‚Ì‚ðC³(–¢Šm”F)
- ‰…—ì•Žm‚̃hƒƒbƒv‚ÆMVP‚ð’ljÁ(–¢Šm”F)
---------------
-//0603 by ˆø‘Þl
-EV‹KƒAƒCƒeƒ€Žž‚É‚àŠŽ‰Â”\ŒÂ”ƒ`ƒFƒbƒN‚ð‚·‚é‚悤‚ÉC³
- (map/)
- pc.c
- pc_checkadditem()
- V‹KƒAƒCƒeƒ€Žž‚ÉMAX_AMOUNT‚ð’´‚¦‚Ä‚¢‚½‚ç
- ADDITEM_OVERAMOUNT‚ð•Ô‚·‚悤‚ÉC³
-
---------------
-//0602 by ˆø‘Þl
-EGeffen’b–艮‚Å—Ž‚¿‚é–â‘è‚ðC³
- (conf/)
- npc_town_geffen.txt if (!checkweight(,)) ‚©‚ç if (!(checkweight(,))) ‚ÉC³
-
---------------
-//0601 by J
-EMOBƒXƒLƒ‹‚ÌŠë‚È‚¢Š‚ð‚¢‚‚ç‚©C³
-EŠoÁ‚Æ‹¶‹C‚ÌŽg‚¦‚éE‚ðC³
-EƒQƒtƒFƒjƒAƒ_ƒ“ƒWƒ‡ƒ“‚Ì”z’u‚ðƒJƒ{ƒ`ƒƒƒCƒxƒ“ƒg‚Å“ü‚ꂽ‚Æ‚«‚Ì”z’u‚ÉC³
- ‚½‚¾‚µƒ{ƒX‚ªDOP2‘Ì‚Å‚Í‚È‚ƒhƒ‰ƒLƒ…ƒ‰‚É‚µ‚Ä‚¢‚Ü‚·B
- (conf/)
- npc_monster.txt ƒ‚ƒ“ƒXƒ^[”z’u”÷•ÏX
- (db/)
- mob_skill_db.txt ‰ö‚µ‚¢Ý’è‚È‚Ç‚ÌC³
- item_db.txt ‘‘¬POT‚ÌC³
-
---------------
-//0600 by ˆø‘Þl
-Eƒvƒƒ“ƒeƒ‰¸˜BŠ‚̉¡‚̃tƒ@ƒ“‚ɘb‚µŠ|‚¯‚é‚ƌł܂é–â‘è‚ðC³
-EMOBƒXƒLƒ‹Žæ‚èž‚ÝiThanx to J‚³‚ñj
- (conf/)
- npc_event_skillget.txt ƒtƒ@ƒ“‚ÌLabel‚ðC³
- npc_town_prontera.txt ƒtƒ@ƒ“‚ªd•¡‚µ‚Ä‚¢‚½‚Ì‚Åíœ
- (db/)
- mob_skill_db.txt ƒWƒ…ƒm[ˆÈ~‚ÌMOBƒXƒLƒ‹’ljÁ
-
---------------
-//0599 by ‚é‚é‚é
-
-EƒZ[ƒW‚Ì•Ší‘®«•t—^ƒXƒLƒ‹‚Ì•s“s‡C³‚ƃXƒe[ƒ^ƒXƒAƒCƒRƒ“•\Ž¦
- ƒAƒXƒyƒ‹ƒVƒI‚ƃGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“‚Æ‚Å‘½d‚É‚©‚©‚Á‚Ä‚µ‚Ü‚Á‚Ä‚½‚Ì‚ÅA
- ÅŒã‚É•t—^‚µ‚½‚à‚Ì‚P‚‚ɂȂé‚悤‚É‚µ‚Ü‚µ‚½B
- ‚»‚̂‚¢‚łɃXƒe[ƒ^ƒXƒAƒCƒRƒ“‚à•\Ž¦‚·‚é‚悤‚É‚à‚µ‚Ü‚µ‚½B
- i–¢ƒeƒXƒg‚Å‚·‚ªAƒAƒCƒRƒ“o‚È‚©‚Á‚½ƒXƒsƒAƒNƒCƒbƒPƒ“‚à‚Å‚é‚Í‚¸‚Å‚·Bj
-EƒAƒCƒeƒ€DB‚É‚ÄA‘‘¬ƒ|[ƒVƒ‡ƒ“‚ÌŽg—p§ŒÀ‚ð’ljÁ
- Jazz‚³‚ñ’ñ‹Ÿ‚Å‚·B
- ‚»‚ê‚ÆŽ„‚ÌŽï–¡‚щƒOƒiƒƒNTƒVƒƒƒc‚ðƒAƒŒƒiƒj‚µ‚Ü‚µ‚½‚ª‚—@‹C‚É“ü‚ç‚È‚¯‚ê‚Î
- Á‚·‚Ȃ茳’Ê‚è‚ÉC³‚·‚é‚Ȃ肵‚Ä‚µ‚¿‚á‚Á‚Ä‚‚¾‚³‚¢‚Ü‚¹`B
-
- (conf/)
- battle_athena.conf 598‚Å‚Ì“ü‚ê–Y‚ê
- (map/)
- skill_encchant_eremental_end() ’ljÁ
- skill_status_change_end() skill_status_change_start() skill_status_change_clear() C³
- (db/)
- iten_db.txt C³
-
---------------
-//0598 by ‚é‚é‚é
-
-E‘•”õ•Ší‚̉摜•ÏX‚ɑΉž
- ˆê‰ž‚È‚ª‚çƒNƒ‹ƒZƒCƒ_[‚Ì—¼Žè‘„‚Æ‚©ƒvƒŠ[ƒXƒg‚Ì“ÝŠí‚Æ‚©‚̓eƒXƒg‚µ‚Ü‚µ‚½‚ªA
- ‘S‚Ä‚ÌE‚ðƒ`ƒFƒbƒN‚Í‚¢‚Ü‚¹‚ñB‚Ü‚½‚±‚ÌŽž“_‚ł̓Nƒ‰ƒCƒAƒ“ƒgŽ©‘Ì‚Ì•\Ž¦ƒf[ƒ^‚É
- –â‘è‚Ì—L‚é‚Ì‚ª‘½‚¢‚Ì‚à•t‚¯‰Á‚¦‚Ä‚¨‚«‚Ü‚·B
- ‚ ‚ÆAŒC‚àˆê‰ž‚͑Ήž‚µ‚Ü‚µ‚½B’A‚µ‚±‚ê‚ÍŒ»Žž“_‚Å‚Í–{ŽI‚·‚ç‚à–¢‘Ήž‚È‚Ì‚Å‚·‚ªB
- •\Ž¦‚ª‰»‚¯‚ÄŒ™‚¾‚Æ‚¢‚¤ê‡‚Í]—ˆ‚Ì‚â‚è•û‚ào—ˆ‚Ü‚·B
-
- (conf/)
- battle_athena.conf
- ƒIƒvƒVƒ‡ƒ“ equip_modifydisplay ‚ð’ljÁ
- (map/)
- battle.h
- Battle_Config C³
- battle.c
- battle_config_read() C³
- clif.c
- packet_len_table[] clif_changelook() C³
- map.h
- enum {} C³
- pc.c
- pc_calcstatus() pc_equiplookall() pc_changelook() C³
- (common/)
- mmo.h
- mmo_charstatus {} C³
-
---------------
-//0597 by ”g˜Q
-
-EƒAƒ}ƒc‚ÉŠÖ‚·‚éC³•”÷C³
- (conf/)
- npc_mob_job.txt
- npc_monster.txt
- npc_monster30.txt
- ƒ‚ƒ“ƒX–¼C³
- npc_monster_amatsu.txt
- ’ljÁiƒ‚ƒ“ƒX”‚ª‚©‚È‚èŽè”²‚«‚Å‚·EEE
- npc_town_amatsu.txt
- ƒVƒ‡ƒbƒvNPC‚ð“‡inpc_shop3.txt‚ðÁ‚µ‚Ä‚àOK‚Å‚·
- (db/)
- mob_db.txt
- ƒAƒ}ƒc‚̃‚ƒ“ƒXƒf[ƒ^‚ðŒ»Ý•ª‚©‚é”͈͂ÅC³•‘‚Æ‚«‚Ì‚±‚Ìdef,mdef‚ðC³
-
---------------
-//0596 by Ž€_
-
-E0595‚ÌC³‚Æׂ©‚¢C³B
-EƒtƒŠ[ƒLƒƒƒXƒg‚ŃLƒƒƒXƒg‚µ‚Ä‚¢‚éŠÔ‚ÍUŒ‚‰Â”\‚Å‚·‚ªƒLƒƒƒXƒg‚µ‚½Œã‚Ì
-ƒfƒBƒŒƒCƒ^ƒCƒ€‚Å‚ÍUŒ‚‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B–{ŽI‚ÌŽd—l‚ª‚Ç‚¤‚È‚Ì‚©‚Í
-‚í‚©‚è‚Ü‚¹‚ñB
-E“®‚¢‚Ä‚¢‚éPC‚Ƀ‚ƒ“ƒXƒ^[‚ªUŒ‚‚Å‚«‚È‚¢–â‘èC³B(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñ‚ª
-‘½•ª‚±‚ê‚Å‘åä•v‚©‚ÆB)
- (map/)
- skill.h
- SC_FREECAST íœB
- skill.c
- skill_use_id()Askill_use_pos() C³B
- skill_castend_id()Askill_castend_pos() C³B
- ‚»‚Ì‘¼‚µC³B
- pc.c
- calc_next_walk_step()Apc_attack_timer()Apc_calcstatus() C³B
- clif.c
- clif_parse_ActionRequest()Aclif_parse() C³B
- map.h
- struct map_session_data‚Éprev_speed’ljÁB
- mob.c
- mob_ai_sub_hard()Amob_changestate()Amob_attack() C³B
-
---------------
-//0595 by PRevEv
-EƒtƒŠ[ƒLƒƒƒXƒgC³AŽÀ‘•(ƒLƒƒƒXƒeƒBƒ“ƒO’†UŒ‚‚à‚Å‚«‚Ü‚·B)
- (/map)
- pc.c
- pc_calcstatus() C³B
- calc_next_walk_step() C³B
- pc_attack_timer() C³B
- skill.c
- skill_castend_id()Askill_castend_pos()Askill_use_id()Askill_use_pos() C³B
-
---------------
-//0594 by Ž€_
-
-EŠØ‘ˆÆ‚̃p[ƒeƒB–â‘èC³‚Æׂ©‚¢C³B
-E@partyƒRƒ}ƒ“ƒhC³‚Æ@guildƒRƒ}ƒ“ƒh’ljÁB
-Ebattle_athena.conf‚Éguild_emperium_check’ljÁB
-EƒXƒLƒ‹Žg—p‚ªŽ¸”s‚µ‚Ä‚àƒfƒBƒŒƒC‚ª‚©‚©‚é–â‘èC³B
- help.txt C³B
- (map/)
- clif.c
- clif_parse_CreateParty2() ’ljÁB
- clif_parse_ItemIdentify() C³B
- ‚»‚Ì‘¼‚µC³B
- atcommand.hAatcommand.c C³B
- battle.h
- struct Battle_Config‚Éguild_emperium_check’ljÁB
- battle.c
- battle_config_read() C³B
- guild.c
- guild_create()Aguild_created() C³B
- skill.c
- skill_castend_id()Askill_castend_pos() C³B
- Makefile C³B
- (doc/)
- client_packet.txt
- ƒpƒPƒbƒg0x01e8 ’ljÁB
- conf_ref.txt C³B
- (conf/)
- atcommand_athena.conf C³B
- battle_athena.conf C³B
-
---------------
-//0593 by Ž€_
-
-EƒƒeƒI‚ƃoƒ~ƒŠƒIƒ“‚̃_ƒ[ƒWC³‚Æׂ©‚¢C³B
-EƒƒeƒI‚Ìè¦Î‚ª—Ž‚¿‚Ä‚‚é”͈͂ð7*7‚©‚ç5*5‚É•ÏXB(‚±‚ê‚Å’†‰›‚Í‘S‚Ä‚Ìè¦Î‚Ì
-ƒ_ƒ[ƒW‚ðŽó‚¯‚邱‚Æ‚É‚È‚è‚Ü‚·B)
-EŽ©“®‰ñ•œŒvŽZŽ®•ÏXB
- ƒXƒLƒ‹ƒŒƒxƒ‹*5 + (max_hp/50)‚©‚ç
- ƒXƒLƒ‹ƒŒƒxƒ‹*5 + (max_hp*ƒXƒLƒ‹ƒŒƒxƒ‹/500)‚É•ÏXB(SP‚Æ‘§‚à“¯‚¶‚悤‚É•ÏXB)
-EGM‰EƒNƒŠƒbƒN–½—ßuŽg—pŽÒ‹§I—¹v‚Åatcommand_athena.conf‚Ìkick‚Ì
-ƒŒƒxƒ‹‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É•ÏXB
- (db/)
- skill_db.txt
- ƒXƒLƒ‹‹CŒ÷‚Ìsp‚ð10‚©‚ç8‚ÉC³B
- (map/)
- map.c
- NO_WATER‚ð100‚©‚ç1000000‚É•ÏXB
- battle.c
- battle_calc_magic_attack() C³B
- skill.c
- skill_castend_pos2() C³B
- pc.c
- pc_natural_heal_hp()Apc_natural_heal_sp()Apc_spirit_heal() C³B
- clif.c
- clif_parse_GMKick() C³B
- (doc/)
- conf_ref.txt C³B
-
---------------
-//0592 by ˆø‘Þl
-
-E…ê‚Ì—L‚è–³‚µ‚ðwater_height.txt‚¾‚¯‚ÅŒˆ‚ß‚é‚悤‚É•ÏXBnpc_water.txt‚Í•s—v‚ÉB
-EƒJ[ƒhƒXƒLƒ‹‚ł̓Œƒxƒ‹ã‚°‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚½‚½‚ß•s—v‚É‚È‚Á‚½ˆ—‚ðíœB
- (conf/)
- map_athena.conf
- npc: conf/npc_water.txt Á‹Ž
- water_height.txt
- ƒfƒtƒHƒ‹ƒg‚‚³3‚̃}ƒbƒv•ª‚ð’ljÁ•all_water‚ð‚‚³-100‚Æ‚µ‚ăRƒƒ“ƒg‚ŒljÁ
- (map/)
- map.c
- waterlist‚Ímap_readwater()“à‚Ńƒ‚ƒŠŠm•Û
- gatÝ’èŒã‚Í•s—v‚È‚Ì‚Åmap_readallmap()‚Ńƒ‚ƒŠŠJ•ú‚µ‚Ä‚¢‚Ü‚·
- map.h
- struct map_data‚Ìflag‚©‚çwater_flag‚ðÁ‹Ž
- npc.c
- npc_parse_mapflag()
- ƒ}ƒbƒvƒtƒ‰ƒOwater‚Æall_water‚ðÁ‹Ž
- pc.c
- pc_skillup()
- — ‚ŃXƒLƒ‹LvUP‚Å‚«‚È‚‚È‚Á‚½‚Ì‚Åskill[id].flag‚Ì•ª‚ÍÁ‹Ž
- skill.c
- skill_check_condition()
- map_getcell‚Å…ê”»’è‚·‚é‚悤‚ÉC³
-
---------------
-//0591 by CHRIS
-
-Eƒ‚ƒ“ƒN‚ªŸ†’e‚ð‚à‚Á‚Ä‚¢‚é‚Æ‚«AŸ†’e*3‚Ì•K’†ƒ_ƒ[ƒW‚ª“ü‚é—l‚É‚È‚è‚Ü‚µ‚½B„Ÿ@battle.cC³
-Eƒ‚ƒ“ƒNƒXƒLƒ‹uŽw’ev‚Æu”™¤v‚Æu‹CEv‚̉r¥ŽžŠÔ‚ª³‚µ‚C³‚³‚ê‚Ü‚µ‚½B„Ÿ@cast_db.txtC³
-
---------------
-//0590 by Ž€_
-
-Egrf-files.txt‚âconfƒtƒ@ƒCƒ‹Aaccount.txtƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ƈʒu‚ð•Ï‚¦‚é‚悤‚É•ÏXB
-Eƒ}ƒbƒvˆÚ“®‚É‚æ‚éŽI—Ž‚¿‚ð–h‚®ˆ×‚ÉC³B(ƒ}ƒbƒv‚ª“ñ“xƒ[ƒh‚³‚ê‚ÄŽI—Ž‚¿‚ª
-‹N‚±‚Á‚½‚Æ‚Ì•ñ‚ðŽó‚¯‚½‚Ì‚ÅB)
-E0586‚ð‚¿‚å‚Á‚ÆC³B‘•”õ‚É‚æ‚éƒXƒLƒ‹‚ÌꇃŒƒxƒ‹ã‚°‚ª‚Å‚«‚È‚¢‚悤‚ÉC³B
-‚½‚¾‘•”õ‚É‚æ‚éƒXƒLƒ‹‚ðƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðŽg‚Á‚Äã‚°‚鎞‚Í‘•”õ‚ðŠO‚·•K—v‚ª
-‚ ‚è‚Ü‚·B
-E@party‚¿‚å‚Á‚ÆC³B(–¼‘O‚É‹ó”’‚ª‚ ‚Á‚Ä‚à‘åä•v‚Ȃ悤‚ÉB)
-E…ê‚Ì‚‚³‚ðwater_height.txt‚Å“Ç‚Ýž‚ނ悤‚É•ÏXB
-Econfƒtƒ@ƒCƒ‹‚ÅÝ’è‚·‚镨‚ðƒtƒ@ƒCƒ‹‚̃pƒX‚É‹ó”’‚ª‚ ‚Á‚Ä‚à‘åä•v‚È
-‚悤‚É•ÏXB
-EGM‰EƒNƒŠƒbƒN–½—ßuŽg—pŽÒ‹§I—¹v‚Ń‚ƒ“ƒXƒ^[‚ð“|‚¹‚é‚悤‚É•ÏXB
-(Œ´ˆö‚Í•s–¾‚Å‚·‚ª‚±‚ê‚Ń‚ƒ“ƒXƒ^[‚ðŽE‚·‚ÆŽI‚ª‚ß‚¿‚á‚‚¿‚á‚É’x‚‚Ȃ邱‚Æ‚ª
-‚ ‚è‚Ü‚·B)
-E‚»‚Ì‘¼‚µC³B
-EƒeƒXƒg‚Í–w‚ñ‚Ç‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
- athena-start C³B
- (map/)
- pc.c
- pc_skill()Apc_resetskill()Apc_setpos()Apc_read_gm_account() C³B
- pc_set_gm_account_fname() ’ljÁB
- pc.h
- pc_set_gm_account_fname() ’ljÁB
- clif.c
- clif_skillinfoblock()Aclif_parse_LoadEndAck()Aclif_parse_GMKick() C³B
- clif_changemap() C³B
- atcommand.c
- @partty C³B
- skill.c
- skill_castend_nodamage_id() C³B
- map.c
- map_config_read()Amap_readwater() C³B
- script.c
- script_config_read()Ado_init_script() C³B
- script.h
- script_config_read() ’ljÁB
- (common/)
- version.h C³B
- grfio.h
- grfio.c
- grfio_init() C³B
- mmo.h
- GRF_PATH_FILENAME ’ljÁB
- (conf/)
- map_athena.conf C³B
- npc_water.txt C³B
- water_height.txt ’ljÁB
- login_athena.conf C³B
- (login/)
- login.c
- login_config_read()Aread_gm_account() C³B
- (char/)
- char.c
- do_init() C³B
- char_config_read() ’ljÁB
- inter.c
- inter_config_read() C³B
- (doc/)
- conf_ref.txt C³B
-
---------------
-//0589 by ŒÓ’±—–
-
-EGM‚̉EƒNƒŠƒbƒN‚ÅØ’f‚³‚ê‚é–â‘è‚ðC³
- ‚Æ‚è‚ ‚¦‚¸01dfƒpƒPƒbƒg‚𖳎‹‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B
- ‚È‚ñ‚Æ‚È‚‚±‚̃pƒPƒbƒg‚̓`ƒƒƒbƒg‹ÖŽ~‰ñ”‚Æ‚ÍŠÖŒW–³‚¢‚悤‚È‹C‚àcc
-
- clif.c
- clif_parse_GMReqNoChatCount()’ljÁ
-
-Estart‚ðathena.sh‚Å‚È‚athena-start‚ðŽg‚¤‚悤‚É•ÏX
- start
- athena.sh => athena-start start‚É’u‚«Š·‚¦‚µ‚½‚¾‚¯
-
---------------
-//0588 by Kalen
-
-EAmatsuNPC’ljÁ
-
---------------
-//0587 by ŒÓ’±—–
-
-EloginƒT[ƒo[‚ÌŠÇ—ƒpƒPƒbƒg‚ÌŽd—l‚ð•ÏXi0579‚̃ƒOƒCƒ“‹‘”Ûî•ñ‚ɑΉžj
- (login/)
- login.c
- ƒAƒJƒEƒ“ƒgƒoƒ“ó‘Ô•ÏXƒpƒPƒbƒg’ljÁ(7936,7937)
- ƒAƒJƒEƒ“ƒgƒŠƒXƒgŠ“¾ƒpƒPƒbƒgC³(7921)
- (doc/)
- admin_packet.txt
-
-Eladmin‚Ì‹@”\’ljÁ
- Eƒoƒ“ó‘Ô‚ð•ÏX‚·‚éƒRƒ}ƒ“ƒh’ljÁ
- EƒŠƒXƒg•\Ž¦‚ÆŒŸõ‚Ńoƒ“ó‘Ô‚à•\Ž¦‚³‚ê‚é‚悤‚É‚È‚Á‚½
- E"?"‚Å‚àƒwƒ‹ƒv‚ªo‚é‚悤‚ÉC³
- EƒVƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚Éstateaccount‚ª’ljÁ‚³‚ê‚Ü‚µ‚½B
- Žg‚¤l‚Íladmin‚Ì--makesymlink‚ð‚à‚¤ˆê“xŽÀs‚µ‚Ä‚‚¾‚³‚¢
-
- (tool/)
- ladmin
- ‹@”\’ljÁ
-
---------------
-//0586 by ˆø‘Þl
-EƒJ[ƒhƒXƒLƒ‹‚ðC³
- (/map)
- pc.c
- pc_calc_skilltree()
- pc_skill()
- Šo‚¦‚ç‚ê‚È‚¢ƒXƒLƒ‹‚È‚çskill[id].flag=1‚Æ‚·‚é
- ‚Ü‚½‚Ískill[id].flag‚É–{—ˆ‚Ìlv‚ð+2‚µ‚Ä‹L‰¯
- pc_skillup()
- skill[id].flag‚à‘‚â‚·
- clif.c
- clif_skillinfoblock()
- skill[id].flag==1‚È‚çŠo‚¦‚ç‚ê‚È‚¢ƒXƒLƒ‹
- (/char)
- char.c
- mmo_char_tostr()
- skill[id].flag‚©‚ç–{—ˆ‚Ìlv’l‚ð•Û‘¶‚·‚é
-
---------------
-//0585 by kalen
-EscriptC³
- npc_town_guid.txt ŠOŒ©•ÏX
-
---------------
-//0584 by ˆø‘Þl
-EƒJ[ƒhƒXƒLƒ‹‚ðC³
- (/map)
- pc.c
- pc_calc_skilltree() cardƒXƒLƒ‹‚ð–Y‚ꂳ‚¹‚鈗‚ð’ljÁ
- pc_skill() ®—
-
---------------
-//0583 by kalen
-EscriptC³
- npc_event_doll.txt ”²‚¯‚Ä‚¢‚½•”•ª‚̉ï˜b’ljÁ
- npc_town_guid.txt ’¬‚̈ēà—vˆõ‚̉摜‚ð•\Ž¦‚Å‚«‚é‚悤‚ÉC³
- Šî–{“I‚ÉÅVjRO‚Å–â‘è‚È‚µ‚Å‚·B
-
---------------
-//0582 by PRevEv
-E580‚̃oƒOC³B
- (/map)
- skill.c
- skill_use_pos() C³B
---------------
-//0581 by ˆø‘Þl
-E…ê‚‚³Ý’èŠÖ˜A‚ð‚µC³
- (/map)
- map.c
- map_waterheight()
- map_readwater()
- map_readmap()
- waterlist[512] -> *waterlist‚É‚µ‚ÄAmalloc‚Ńƒ‚ƒŠŠm•Û‚·‚é‚悤‚ÉC³B
- map_readallmap()
- free(waterlist);’ljÁ
-
-EƒoƒO•ñƒXƒŒƒbƒh‚ÌC³ƒpƒbƒ`‚ðŽæ‚èž‚Ý
- (conf/)
- npc_town_refine.txt ƒZƒ~ƒRƒƒ“”²‚¯C³
- (db/)
- item_db.txt 1161,ƒoƒ‹ƒ€ƒ“C³
-
---------------
-//0580 by PRevEv
-EƒtƒŠ[ƒLƒƒƒXƒg‰¼ŽÀ‘•(ƒLƒƒƒXƒeƒBƒ“ƒO’†UŒ‚‚Í•s‰Â”\)
- (/map)
- clif.c
- clif_parse_WalkToXY() C³B
- pc.c
- pc_calcstatus() C³B
- skill.c
- skill_castend_id()Askill_castend_pos()Askill_use_id()Askill_use_pos() C³B
---------------
-//0579 by A‚Ìl
-EƒƒOƒCƒ“‚ð’e‚ˆ—‚ð‰¼ŽÀ‘•
- conf/login.c
- auth_dat\‘¢‘Ì‚Éstate‚ð’ljÁ
- mmo_authŠÖ”C³
- mmo_auth_newŠÖ”C³
- mmo_auth_syncŠÖ”C³
- mmo_auth_initŠÖ”C³
-
- ‚±‚Ì’l‚ð•ÏX‚·‚éƒc[ƒ‹A‰ü‘PôB‘¼—Í–{Šè‚Å‚·i„ƒG
---------------
-//0578 by ˆø‘Þl
-EƒoƒO•ñƒXƒŒƒbƒh‚ÌC³ƒpƒbƒ`‚ðŽæ‚èž‚Ý‚È‚Çithanx to ‚é‚é‚邳‚ñ,Athefans‚³‚ñ,sage‚³‚ñ,zupport‚³‚ñj
- help.txt @go‚Ìà–¾‚¿‚å‚Á‚ÆC³
- (conf/)
- npc_mob_job.txt ‘æ4—ñ–Ú‚ðTab‹æØ‚è‚ÉC³
- npc_water.txt …ê‚‚³C³
- (db/)
- item_db.txt 640,...,{ pet 1155; },{},,‚ÉC³
- mob_db.txt 1162,RAFFLESIA,ƒ‰ƒtƒŒƒVƒA...C³
-
---------------
-//0577 by ‚é‚é‚é
-E@ƒRƒ}ƒ“ƒh‚ð’ljÁ•C³
- atcommand.c
- atcommand() @itemresetƒRƒ}ƒ“ƒh’ljÁ @goƒRƒ}ƒ“ƒhC³iƒAƒ}ƒcEƒRƒ“ƒƒ“‚ð’ljÁj
- atcommand_config_read() ã‚ɇ‚킹‚ÄitemresetŽg—pƒŒƒxƒ‹Žw’è‚ð’ljÁ
-
- doc/conf_ref.txt
- conf/atcommand_athena.conf itemresetŽg—pƒŒƒxƒ‹Žw’è‚ð’ljÁ
- help.txt @itemreset‚Ìà–¾’ljÁ‚Æ@go‚Ìà–¾C³
-
--------------
-//0576 by V&S
-EƒS[ƒXƒgƒŠƒ“ƒOƒJ[ƒh‚ƃo[ƒXƒŠ[ƒJ[ƒh‚ÌŒø‰Ê‚ª‹t‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³
- { bonus bDefEle,7; }¨ƒS[ƒXƒgƒŠƒ“ƒOƒJ[ƒh(”O)
- { bonus bDefEle,8; }¨ƒo[ƒXƒŠ[ƒJ[ƒh(ˆÅ)
- ª‚¾‚Á‚½‚Ì‚ð«‚ÉC³
- { bonus bDefEle,7; }¨ƒo[ƒXƒŠ[ƒJ[ƒh(ˆÅ)
- { bonus bDefEle,8; }¨ƒS[ƒXƒgƒŠƒ“ƒOƒJ[ƒh(”O)
-
- |“S‚Ìd—Ê‚ðC³
-
---------------
-//0575 by ˆø‘Þl
-E…êƒtƒ@ƒCƒ‹‚ª"conf/npc_water.txt"ŒÅ’肾‚Á‚½‚Ì‚ðC³
-iconf/map_athena.conf‚Ìnpc:‚É‘‚©‚ê‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ð‚Ý‚Ä…ê‚‚³Ý’è‚·‚é‚悤‚Éj
- map.c
- struct waterlist[512]; V‹K’ljÁBƒ}ƒbƒvƒtƒ@ƒCƒ‹–¼‚Æ…ê‚‚³‚ð‹L‰¯B
- map_waterheight() V‹K’ljÁB…ê‚Ì‚‚³‚ð•Ô‚·B
- map_readwater() …êƒtƒ@ƒCƒ‹‚ð‚Ý‚Äwaterlist‚ðÝ’è‚·‚é‚悤‚ÉC³B
- map_readmap() map_waterheight()‚ðŒÄ‚Ԃ悤‚ÉC³B
- map_config_read() "npc"‚Åmap_readwater(w2);’ljÁB
-
---------------
-//0574 by ‚¢‚Ç
-
-EƒT[ƒo[Snapshot
-Econf/shop_*.txt‚Ì“à—e‚ðconf/npc_town_*.txt‚É“‡
-
---------------
-//0573 by Jazz
-
-Emap‚Ì penalty, nomemo, noteleport, nobranch‚Ì option‚ðÝ’èB
-Emap ƒT[ƒo[‚ª cpu‚𖳌Àè—L‚·‚邱‚Æ‚ðŒŸ¸‚·‚邽‚ß‚Ì script “Y•t. cygwinŠÂ‹«‚Å쬂ƎÀŒ±‚ð‚µ‚Ü‚µ‚½.
- (/conf)
- mapflag.txt ’ljÁB
- (/tool)
- mapcheck.sh ’ljÁB
-
---------------
-//0572 by ˆø‘Þl
-E"conf/npc_water.txt"‚Ì‘æ4—ñ‚Å…ê‚‚³Ý’è
-@i‚¿‚á‚ñ‚Æ‚µ‚½…ê”»’肪ŽÀ‘•‚³‚ê‚é‚܂ł̂‚Ȃ¬‚Æ‚µ‚ÄEEEj
- (/conf)
- npc_water.txt ƒTƒ“ƒvƒ‹C³B
- E‘æ4—ñ‚Å…ê‚Ì‚‚³‚ðݒ肵‚Ü‚·B
- E‚‚³‚ð‘‚©‚È‚©‚Á‚½ê‡‚̃fƒtƒHƒ‹ƒg’l‚Í3‚É‚È‚è‚Ü‚·B
- (/map)
- map.c
- E…ê‚‚³Ý’èŠÖ” map_readwater() ’ljÁB
-
---------------
-//0571 by code
-“V’ÃtƒB[ƒ‹ƒh‚ÌMOB‚Ì”z’u‚ƃ[ƒvƒ|ƒCƒ“ƒg‚ÌÝ’è‚ÌC³
-“V’Ãpƒbƒ`‚É›À›Ä‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚Ì‚ðŠm”F‚µ‚½‚Ì‚Å›À›Ä‚̃[ƒv‚Æmob‚ð”z’u
-
-conf/npc_monster35.txt
- mob‚Ì”z’u
-
-conf/npc_warp_amatsu.txt
-@@ “V’Ãwarp point‚ÌÝ’u
-
-conf/npc_warp_gonryun.txt
- ›À›Äwarp point‚ÌÝ’u
-
-conf/npc_town_amatsu.txt
-@@ Žb’è“I‚Ƀvƒƒ“ƒeƒ‰•¬…‘O©¨“V’Ã`^ƒvƒƒ“ƒeƒ‰•¬…‘O©¨›À›Ä‚ÌÚ‘±NPC
-
---------------
-//0570 by code
-“V’ÃtƒB[ƒ‹ƒh‚ÌMOB‚Ì”z’u‚ƃ[ƒvƒ|ƒCƒ“ƒg‚ÌÝ’è‚Å‚·B
-conf/npc_monster35.txt
- mob‚Ì”z’u
-
-conf/npc_warp_amatsu.txt
-@@ warp point‚ÌÝ’u
-
-conf/npc_town_amatsu.txt
-@@ Žb’è“I‚Ƀvƒƒ“ƒeƒ‰•¬…‘O©¨“V’Ã`‚ÌÚ‘±NPC
-
---------------
-//0569 by Ž€_
-
-E0561‚Ì@jobcange ‚Å‚ÌŠƒo[ƒh•‰ƒ_ƒ“ƒT[‚É‚æ‚éˆÆ—Ž‚¿–hŽ~‚ðpc_jobchange()‚Å‚·‚é‚悤‚É•ÏXB
-E@ƒRƒ}ƒ“ƒh@party’ljÁBƒp[ƒeƒB‚ðì‚é–½—ß‚Å‚·BŠØ‘ˆÆ‚ðŽg‚¤‚ƃp[ƒeƒB‚ðì‚鎞Ž~‚Ü‚é‚Ì‚Å—ÕŽž“I‚É‚±‚ê‚ðŽg‚Á‚ăp[ƒeƒB‚ðì‚Á‚Ä‚‚¾‚³‚¢B
-E…‚Ì”»’fˆ—C³B
-Eƒ}ƒbƒvƒtƒ‰ƒO‚Éwater‚Æall_water’ljÁBÚ‚µ‚‚Ínpc_water.txt‚ðŽQl‚µ‚Ä‚‚¾‚³‚¢B
-iz_dun0x‚¾‚¯“ü—Í‚µ‚Ä‚¢‚Ü‚·‚Ì‚Å‘¼‚Ì‚Í–„‚ß‚Ä‚‚¾‚³‚¢Bƒ}ƒbƒvƒtƒ‰ƒOwater‚©all_water‚ª“ü‚Á‚Ä‚È‚¢‚ƃZƒ‹‚Ìtype‚ª3‚Å‚à…‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚¹‚ñB‚»‚µ‚Ä…‚¾‚炯‚Ìiz_dun02‚©‚ç04‚Ü‚Å‚Í‘S‚Ä…‚Æ‚µ‚Ä”FŽ¯‚·‚é‚悤‚Éall_water‚ð“ü‚ê‚Ä‚¢‚Ü‚·B(‚±‚êˆÈŠO‚Í•û–@‚ª‚È‚©‚Á‚½‚Ì‚Å...)
-Ebattle_athena.conf‚É€–ڒljÁBˆê•”‚ÍWeiss‚ðŽQl‚µ‚Äì‚Á‚½•¨‚Å‚·B
-EƒeƒXƒg‚µ‚Ä‚È‚¢•¨‚à‚µ‚ ‚è‚Ü‚·B
- (/conf)
- atcommand_athena.conf C³B
- battle_athena.conf C³B
- map_athena.conf C³B
- npc_water.txt ’ljÁB
- (/doc)
- conf_ref.txt C³B
- (/map)
- atcommand.hAatcommand.c C³B
- battle.h C³B
- battle.c
- battle_config_read() C³B
- pc.c
- pc_jobchange()Apc_stop_walking() C³B
- npc.c
- npc_parse_warp()Ado_init_npc()Anpc_parse_mapflag() C³B
- mob.c
- mob_ai_sub_hard() C³B
- pet.c
- pet_food() C³B
- skill.c
- skill_check_condition() C³B
- map.h
- struct map_data C³B
-
---------------
-//0568 by ˆø‘Þl
-
-EƒAƒNƒAƒxƒlƒfƒBƒNƒ^…ê”»’è‚È‚Ç
-EƒEƒH[ƒ^[ƒ{[ƒ‹…ê”»’èiread_gat(m,x,y)==3‚Å…ê‚Æ”»’èj
- skill.c
- skill_castend_nodamage_id()
- case AL_HOLYWATER: ƒAƒNƒAƒxƒlƒfƒBƒNƒ^i¹…Žæ“¾j
- skill_check_condition()
- case AL_HOLYWATER: ƒAƒNƒAƒxƒlƒfƒBƒNƒ^i…ê”»’èj
- case WZ_WATERBALL: ƒEƒH[ƒ^[ƒ{[ƒ‹i…ê”»’èj
-
---------------
-//0567 by ‚é‚é‚é
-
-EƒAƒRƒ‰ƒCƒg‚̃AƒNƒAƒxƒlƒfƒBƒNƒ^‚ð‰¼ŽÀ‘•i…êŒÀ’èŽg—p‚Ì‚Ý–¢ŽÀ‘•j
-EƒvƒŠ[ƒXƒg‚̃AƒXƒyƒ‹ƒVƒIAƒZ[ƒW‚̃tƒŒƒCƒ€ƒ‰ƒ“ƒ`ƒƒ[‚ŃXƒLƒ‹Žg—pŽž‚ɃAƒCƒeƒ€Á”ï
-Eƒ~ƒXƒgƒŒƒXƒJ[ƒh‘•”õŽž‚ɃZ[ƒW‚Ì‘®«Œ´Î•ƒnƒ“ƒ^[‚Ìã©‚ªÁ”‚ê‚È‚¢ƒoƒO‚ðC³
-
- (/map)
- skill.c
- skill_check_condition() C³
-
---------------
-//0566 by ƒpƒCƒ“
-
-E0563‚̃XƒLƒ‹‰ðœðŒ‚ªŠÔˆá‚Á‚Ä‚¢‚½‚Ì‚ÅC³B•Ší‚ð‚Í‚¸‚·&•Ší‚ð•Ï‚¦‚½ê‡‚Í
-@–³ðŒ‚ʼn𜂷‚é‚悤‚É‚µ‚½B
-
-# pc_checkallowskill ‚ɂ‚¢‚Ä(‘O‰ñà–¾‘‚‚Ì‚ð–Y‚ê‚Ä‚¢‚½‚Ì‚Åc)
-@ˆê‰ž¡Œã‚ÌŠÜ‚Ý‚Æ‚µ‚Äreturn‚ð•Ô‚·‚悤‚É‚µ‚Ä‚¢‚Ü‚·‚ªAŒ»Ý‚Í(–ß‚èæ‚Å‚Í)Žg‚Á‚Ä‚¢‚Ü‚¹‚ñB
-@¡Œ»Ý‚Í‹RŽmEƒNƒ‹ƒZƒCƒ_[‚‚ç‚¢‚µ‚©ƒXƒLƒ‹Žg—pŽž‚Ì•Ší§ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñ‚ªA¡Œão‚Ä‚±‚È‚¢
-@‚Æ‚àŒÀ‚ç‚È‚¢‚Ì‚ÅA‚à‚µ(2ŽŸãˆÊ‚©3ŽŸH)o‚Ä‚«‚½‚炱‚±‚Ń`ƒFƒbƒN‚µ‚Ä‚‚¾‚³‚¢B
-
- (/map)
- pc.c
- pc_checkallowskill() C³
-
---------------
-//0565 by ˆø‘Þl
-
-Eƒ}ƒbƒvˆÚ“®Žž‚É–î‘•”õ‚ªŠO‚ê‚È‚¢‚悤‚ÉC³
-EƒƒOƒCƒ“Žž‚É–î‘•”õ‚ª•\Ž¦‚³‚ê‚é‚悤‚ÉC³
- (/common)
- mmo.h
- i–î‘•”õ‚Í0x8000‚È‚Ì‚Åjshort‚¾‚Æint‚ւ̃LƒƒƒXƒgŽž‚È‚Ç‚É
- •‰’l‚Æ‚È‚Á‚Ä‚µ‚Ü‚¤‚½‚ßunsigned short‚ÉC³
- struct item
- short equip; -> unsigned short equip;
- (/map)
- clif.c
- clif_itemlist() ƒAƒCƒeƒ€ƒŠƒXƒg‚Ì–î‚̂‚¢‚Å‚É–î‘•”õ‚àƒ`ƒFƒbƒN
- clif_arrowequip() ƒVƒ“ƒvƒ‹‰»
- pc.c
- pc_equipitem() C³
-
---------------
-//0564 by g—t
-
-E@model‚Ì•žõ‚ß•s‰Â”\”»’èC³B
-E@model‚ÅA‘I‚ׂéƒnƒY‚Ì”¯Œ`‚É•ÏXo—ˆ‚È‚©‚Á‚½•”•ª‚ðC³B
-@ã‹L•ÏX“_‚ɇ‚킹‚Ähelp.txt‚ÌC³B
-
---------------
-//0563 by ƒpƒCƒ“
-
-EMOB‚̈ÈŃXƒLƒ‹‚ðH‚ç‚Á‚½Œã‚ɉñ•œ‚µ‚È‚¢‚Ì‚ðC³Bc‚È‚ñ‚¾‚¯‚ÇA“K³‚È’l‚ª•ª‚©‚ç‚È‚¢‚Ì‚Å
-@“Å‚â’¾–Ù‚Æ“¯‚¶ŽžŠÔ‚É‚µ‚Ä‚ ‚è‚Ü‚·
-@¡ŒãA‚Ü‚½Žè‚ð‰Á‚¦‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-E2HQ‚ƃXƒsƒAƒNƒCƒbƒPƒ“‚ðŽg—p’†‚É•Ší‚ð•Ï‚¦‚½ê‡‚͉𜂷‚é‚悤‚É•ÏXB
-
- (/map)
- skill.c
- skill_castend_damage_id() C³B
- skill_status_change_timer() C³B
- pc.c
- pc_checkallowskill() VÝB
- pc_equipitem() C³B
- pc.h
- pc_checkallowskill() VÝB
-
---------------
-//0562 by huge
-
-E–î‚ð‹|‘•”õŽžˆÈŠO‚Å‚à‘•”õ‚Å‚«‚é‚悤‚É–ß‚µ‚Ü‚µ‚½B
-E–î‚Ì‘®«‚ð“K—p‚·‚é‚Ì‚ð‹|‘•”õŽž‚Ì‚Ý‚ÉC³B
-
- pc.c
- pc_equipitem() C³B
- pc_calcstatus() C³B
-
---------------
-//0561 by ˆø‘Þl
-
-ELinux‚Å‚àƒRƒ“ƒpƒCƒ‹‚Å‚«‚é‚悤‚É
- (/map)
- skill.c
- skill_castend_damage_id() •Ï”dx,dy‚Ì錾ˆÊ’u•ÏX
- Makefile
- LIBS ‚É -lm ’ljÁ
-
-E@jobcange ‚Å‚ÌŠƒo[ƒh•‰ƒ_ƒ“ƒT[‚É‚æ‚éˆÆ—Ž‚¿–hŽ~B by (no name)‚³‚ñ
- atcommand.c
- @jobchange,@charjob‚É«•Êƒ`ƒFƒbƒN’ljÁ
-
-// ƒiƒiƒX‚³‚ñC³
-Eclif.c“à‚Åatcommand.h‚ð‚Q“xinclude‚µ‚Ä‚¢‚½‚̂ňê‚ÂíœB
-Eƒp[ƒeƒB[‰ï˜bAƒMƒ‹ƒh‰ï˜b‚Å‚à@ƒRƒ}ƒ“ƒh‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³B
- (/map)
- clif.c
- clif_parse_PartyMessage()Aclif_parse_GuildMessage C³B
-
---------------
-//0560 by ƒpƒCƒ“
-
-E0559 ‚Ì athena-start ‚ð Unix Like OS ‚Å‚à“®‚‚悤‚ɃŠƒtƒ@ƒCƒ“B
-
---------------
-//0559 by rowla
-
-Eathena.sh‚ð‘S–Ê“I‚É‘‚«’¼‚µAathena-start‚ÉBathena-start start‚ÅŠJŽnAathena-start stop‚ŃT[ƒo[’âŽ~Bcygwin‚ŃeƒXƒgA*BSD|Linux‚Å‚Í–¢ƒeƒXƒg(ŠÂ‹«‚ª‚È‚¢‚½‚ß)B
-
---------------
-//0558 by Ž€_
-
-EƒuƒŠƒbƒcƒr[ƒg‚ðŽ©“®‚¾‚¯‹|‚ð‘•”õ‚µ‚Ä‚¢‚È‚¢‚Æ”“®‚Å‚«‚È‚¢‚悤‚É•ÏXB(Žè“®‚Í•Ší‚ÉŠÖŒW‚È‚Žg‚¦‚Ü‚·B) –¢ƒeƒXƒgB
-Eƒgƒ‰ƒbƒv‚Ìd‚³C³B(‰½ŒÌ‚©‚Í’m‚ç‚È‚¢‚¯‚Ç100‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ð10‚ÉC³Bˆö‚Ý‚É‘q‚Ì•\Ž¦‚Í100‚ª10‚Å10‚ª1‚Å‚·B)
-E‹|‚ÅŽg‚¤ƒXƒLƒ‹‚ÌꇖŒ¸‚ç‚È‚¢‚Ì‚ªŽd—l‚¾‚Á‚½‚ÆŠo‚¦‚Ä‚¢‚é‚Ì‚Å–î‚ðƒ`ƒFƒbƒN‚µ‚È‚¢‚悤‚ÉC³B
-Eƒ‚ƒ“ƒNƒXƒLƒ‹ŽO’i¶‚Ì•\Ž¦‚ðƒpƒbƒVƒu‚É•ÏXB
-Eƒ}ƒbƒvƒtƒ‰ƒO‚ðƒZƒbƒg‚·‚鎞dummy‚ª‚È‚‚Ä‚àƒZƒbƒg‚Å‚«‚é‚悤‚ÉC³B
-(mapflag nomomo dummy‚©‚çmapflag nomemo‚Å‚à‘åä•v‚Ȃ悤‚É•ÏXB)
-–¢ƒeƒXƒgB
- (/db)
- item_db.txt C³B
- skill_db.txt C³B
- (/map)
- skill.c
- skill_check_condition()Askill_additional_effect() C³B
- skill_status_change_start() C³B
- npc.c
- do_init_npc() C³B
-
---------------
-//0557 by huge
-
-E–î‚ðA‹|‘•”õŽž‚Ì‚Ý‘•”õ‚Å‚«‚é‚悤‚ÉC³B
-E‹|‚ð‘•”õ‚©‚çŠO‚µ‚½‚çA–î‚àŠO‚ê‚é‚悤‚ÉC³B
-E–î‚ðÁ”ï‚·‚éƒXƒLƒ‹‚ð‚¢‚‚‚©C³B
-E‘é‚ðA‹|‚ð‘•”õ‚µ‚Ä‚¢‚é‚Æ‚«‚Ì‚Ý”“®‚·‚é‚悤‚ÉC³B(–¢ƒeƒXƒg)
-
- pc.c
- pc_equipitem() C³B
- pc_unequipitem() C³B
- skill.c
- skill_additional_effect() C³B
- skill_check_condition() C³B
-
---------------
-//0555 by Ž€_
-
-Eׂ©‚¢C³‚ƃvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒXAŒÃ‚¢Šª•¨‚̃oƒOC³B
-E@ƒRƒ}ƒ“ƒh@refineA@produce‚µC³B
-EƒT[ƒo[‚ÌIP‚ÉDNS–¼‚ðŽg‚¦‚é‚悤‚É•ÏXB(¡‚³‚ç‚Å‚·‚ªYare‚©‚ç
-Ž‚Á‚Ä‚«‚½•¨‚Å‚·B)
-EƒXƒeƒB[ƒ‹ŒvŽZŽ®•ÏX‚ÆMVPƒAƒCƒeƒ€ˆ—•ÏXB
-E“XNPC‚ð—˜—p‚É‚æ‚éƒWƒ‡ƒuŒoŒ±’lŠl“¾ŒvŽZŽ®•ÏXB
- Šl“¾ƒWƒ‡ƒuŒoŒ±’l = ln(‹à*ƒXƒLƒ‹ƒŒƒxƒ‹) * shop_exp / 100
-E‚Ù‚Æ‚ñ‚ǃeƒXƒg‚µ‚Ä‚È‚¢‚̂ŃoƒO‚̉”\«‚ª‚ ‚è‚Ü‚·B
- help.txt C³B
- (/conf)
- atcommand_athena.conf C³B
- battle_athena.conf C³B
- (/db)
- item_db.txt C³B
- (/doc)
- conf_ref.txt C³B
- (/char)
- char.c
- do_init()Acheck_connect_login_server() C³‚Æ‚µC³B
- (/map)
- mob.c
- mob_damage() C³B
- pc.c
- pc_getitemfromcart()Apc_steal_item() C³B
- pet.c
- pet_return_egg()Apet_get_egg()Apet_unequipitem() C³B
- script.c
- buildin_getitem() C³B
- skill.c
- skill_produce_mix() C³B
- storage.c
- storage_storageget() C³B
- atcommand.c C³B
- map.c
- map_config_read() C³‚Æ‚µC³B
- chrif.c
- check_connect_char_server()Ado_init_chrif()Achrif_setip() C³‚Æ‚µC³B
- npc.c
- npc_buylist()Anpc_selllist() C³B
-
---------------
-//0554 by NOCTURNE
-EƒT[ƒo[SnapShot
-Etoo/addaccount‚Ìíœ
-Ehelp.txt‚ÌXV
-
---------------
-//0553 by ŒÓ’±—–
-
-Eladmin‚̃oƒOC³‚Æ‹@”\’ljÁ
- EƒL[ƒ[ƒh‚É‚æ‚éƒAƒJƒEƒ“ƒgŒŸõ‹@”\’ljÁ
- EƒVƒFƒ‹ƒRƒ}ƒ“ƒh‚Æ‚µ‚ÄŽg—p‚Å‚«‚é‚悤‚Ƀvƒƒ“ƒvƒg‚ðŽg‚í‚È‚¢ƒ‚[ƒh’ljÁ
- E’ljÁ‹@”\‚ɂ‚¢‚Ä‚Íladmin‚ðŒ©‚Ä‚‚¾‚³‚¢
- E ladmin‚Ì--makesymlink‚É‚æ‚èAƒVƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚Æ‚µ‚Äaddaccount‚ð
- 쬂·‚邽‚ßAˆÈ‘O‚Ìaddaccount‚Í휂·‚é•K—v‚ª‚ ‚è‚Ü‚·B
- ‚±‚ê‚ç‚̃Vƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN(Cygwin‚ł̓Vƒ‡[ƒgƒJƒbƒg)‚ÆA
- ŒÃ‚¢addaccount‚ÍŽIsnapshot‚É‚ÍŠÜ‚Ü‚È‚¢‚ʼnº‚³‚¢B
-
- (tool/)
- ladmin
- ‹@”\’ljÁ‚ÆC³
-
-E—«ƒAƒJƒEƒ“ƒg‚µ‚©ì¬‚Å‚«‚È‚¢ƒoƒOC³
-EladminAcheckversionŽg—pŽžloginƒT[ƒo[‚ª–\‘–‚·‚éƒoƒOC³
-EGMƒAƒJƒEƒ“ƒgŽü•Ó‚ÌID‚ð”ð‚¯‚é‚½‚ß‚ÉSTART_ACCOUNT_NUM‚ð•ÏX
- (Šù‚ÉGMƒAƒJƒEƒ“ƒg‚Í”ð‚¯‚éŽd—l‚É‚È‚Á‚Ä‚¢‚Ü‚·‚ªA¬—–hŽ~‚Ì‚½‚ß)
-
- (login/)
- login.h
- START_ACCOUNT_NUM‚ð500000‚©‚ç2000000‚É•ÏX
- login.c
- 7532(Ø’f)ƒpƒPƒbƒg‚̈—C³
- mmo_auth_new()C³
-
-Ebackup‚ªƒoƒbƒNƒAƒbƒv‚·‚éƒtƒ@ƒCƒ‹‚Épet.txt‚ð’ljÁ
- (tool/)
- backup
- ƒtƒ@ƒCƒ‹’ljÁC³
-
---------------
-//0552 by Ž€_
-
-EˆÀ’è«‚ðã‚°‚éˆ×‚ÌC³‚Å‚·‚ª–{“–‚ɈÀ’è«ã‚ª‚Á‚½‚©
-‚Ç‚¤‚©‚Í•s–¾‚Å‚·B
-EPVP‚É‚æ‚èƒNƒ‰ƒCƒAƒ“ƒg‚ª—Ž‚¿‚é–â‘èC³B
- atcommand.c
- @pvpoffA@pvponA@gvgonA@gvgoff C³B
- script.c
- buildin_pvpon()Abuildin_pvpoff()Abuildin_gvgon()Abuildin_gvgoff() C³B
- clif.c
- clif_pvpset() C³B
- skill.c
- skill_attack()Askill_unit_onplace()Askill_unit_onout() C³B
- skill_unit_ondelete() C³B
-
---------------
-//0551 by Kalen
-EDBC³
- db/create_arrow_db.txt Š®¬
- SourceID‡‚Ƀ\[ƒg‚µ‚Ü‚µ‚½B
-
---------------
-//0550 by huge
-
-E–î쬃XƒLƒ‹ŽÀ‘•
-
- clif.c
- clif.h
- clif_arrow_create_list() ’ljÁ
- clif_arrow_created() ’ljÁ
- clif_parse() C³
-
- pc.c
- pc_search_inventory() C³
-
- skill.c
- skill.h
- skill_arrow_db() ’ljÁ
- skill_readdb() C³
- skill_castend_damage_id() C³
-
- db/create_arrow_db.txt ’ljÁ
- db/skill_db.txt C³
-
- ‚Ü‚¾db‚Í–¢Š®¬‚Å‚·B
-
---------------
-//0549 by Kalen
-
-Emap_athena.conf
- ƒIƒŠƒWƒiƒ‹ƒXƒNƒŠƒvƒgA‹GߌÀ’èƒXƒNƒŠƒvƒg‚ð®“Ú
- shop3.txt’ljÁ
-
-EŠeŽíNPC’ljÁ•C³
- npc_event_yuno.txt [’ljÁ]ƒWƒ…ƒm[ƒCƒxƒ“ƒg(ÂÎ5ŒÂGET)
- npc_cTower.txt [’ljÁ]’nã’n‰º‚ÌŒ®NPC
- npc_town_yuno.txt [C³]‘䎌C³
-
- npc_event_carnival.txt [’ljÁ]‹ŒŽIƒJ[ƒjƒoƒ‹ƒCƒxƒ“ƒgŽž‚ÌNPC
-
---------------
-//0548 by huge
-
-E–î‚ð‘•”õ‚µ‚½Žž‚Ì•\Ž¦ƒoƒO–â‘è‚ðC³B
- clif.c
- clif_arrowequip() C³B
- pc.c
- pc_equipitem() C³B
-
-‚ ‚Æ‚ÍAƒ}ƒbƒv‚ðˆÚ“®‚·‚邽‚Ñ‚É‘•”õ‚ªŠO‚ê‚¿‚Ⴄ“_‚Å‚·‚ËEEEB
-
---------------
-//0547 by Ž€_
-
-EˆÀ’è«‚ðã‚°‚éˆ×‚ÌC³‚Æׂ©‚¢C³B
-EƒXƒLƒ‹ƒ†ƒjƒbƒg‚Ì”»’è‚ð‚µ‚Ä‚¢‚éŠÔƒƒ‚ƒŠ[‚ð‰ðœ‚Å‚«‚È‚¢‚悤‚É•ÏXB
- map.c
- map_foreachinarea()Amap_foreachinmovearea() C³B
- map_foreachobject() C³B
- block_free_max‚ð32000‚©‚ç50000‚É•ÏXB
- pc.c
- pc_calcstatus() C³B
- skill.c
- do_init_skill()Askill_unit_timer()Askill_status_change_clear() C³B
- skill.cAbattle.cAbattle.h
- struct battle_config‚Ìsanctury_type‚ðsanctuary_type‚É•ÏXB
- (‰pŒêƒXƒyƒ‹ŠÔˆá‚¢‚ÅC³B)
- battle_athena.conf
- sanctury_type‚ðsanctuary_type‚É•ÏXB
- conf_ref.txt
- sanctury_type‚ðsanctuary_type‚É•ÏXB
-
---------------
-//0546 by Ž‚Žqo^.^o
-
-conf/npc_shop2.txt
-DƒoˆêƒhAƒ_ƒ“ƒTˆê—p‚Ì•ŠíBƒRƒ‚ƒh‚Ì•Ší‰®‚Ŕ̔„‚µ‚Ä‚¢‚éB
-Dƒ‚ƒ“ƒN—p‚Ì•ŠíBƒJƒsƒgˆêƒŠƒiC“¹‰@‚Ŕ̔„‚µ‚Ä‚¢‚éB
-
---------------
-//0545 by Ž€_
-
-EƒuƒŠƒbƒc‚̃_ƒ[ƒW‚ðŽ©“®‚Å•ªŽUAŽè“®‚Å•’Ê‚É‚È‚é‚悤‚É•ÏXB
-EƒI[ƒgƒuƒŠƒbƒcƒoƒOC³B(‚±‚ê‚Å‘åä•v‚¾‚Æ‚¢‚¢‚¯‚Ç...)
- map.c
- block_free_max‚ð16000‚©‚ç32000‚ÉC³B
- block_list_max‚ð4096‚©‚ç5120‚ÉC³B
- battle.c
- battle_weapon_attack() C³B
- skill.c
- skill_attack()Askill_castend_damage_id() C³B
-
---------------
-//0544 by Diex
-E–Ò—´Œ‚©‚爢C—…”e™€Œ‚ւ̃Rƒ“ƒ{ŽÀ‘•B
-Eˆ¢C—…”e™€Œ”“®ŒãA“G‚Ì”wŒã‚Ɉړ®‚·‚é‚悤AC³B
-EŽO’i¶‚̃_ƒ[ƒWC³B
- (/map)
- skill.c
- skill_castend_damage_id() C³B
- skill_check_condition() C³B
- skill_use_id() C³B
- pc.c
- pc_attack_timer() C³B
- pc_authok() C³B
- battle.c
- battle_calc_weapon_attack() C³B
- battle.h
- struct Battle_Config C³B
- map.h
- struct map_session_data C³B
- (/conf)
- battle_athena.conf C³B
-
-‚Í‚Á‚«‚è‚¢‚Á‚ăRƒ“ƒ{Œq‚°‚Â炢‚Å‚·B‚»‚Ì‚½‚߈¢C—…‚ւ̃Rƒ“ƒ{‚Í‚©‚È‚èŠÃ‚¢”»’è‚É
-‚µ‚Ä‚Ü‚·iˆêŽž“I‚É‚Å‚·‚ªjBŒq‚°‚Â炯‚ê‚Îbattle_athena.conf‚Ì‚Ù‚¤‚Ńfƒ…ƒŒƒCŽž
-ŠÔ‚ð‘å‚«‚‚µ‚Ä‚Ý‚Ä‚‚¾‚³‚¢B
- “®‰æŒ©‚Ä‚Ä‹C‚¢‚½‚Ì‚Å‚·‚ªAˆ¢C—…”e™€Œ‚Í–Ò—´Œ‚ª”“®‚µ‚½ŒãA‘¦Žž”“®‚̃XƒL
-ƒ‹‚É•Ï‚í‚Á‚Ä‚é‚悤‚È‚Ì‚Å‚·B‘¼—Í–{Šè‚Å‚·‚ªAˆ¢C—…‚܂ł̃Rƒ“ƒ{‚̃pƒP‚ð‹L˜^‚µ‚½
-•¨‚ð‚Ç‚È‚½‚©ƒAƒbƒv‚µ‚Ä‚à‚炦‚È‚¢‚Å‚µ‚傤‚©HÚׂª‚í‚©‚莟‘æAC³‚µ‚Ü‚·B
-
---------------
-//0543 by Ž€_
-
-EƒuƒŠƒbƒc‚̃_ƒ[ƒW‚𕪎U‚³‚ê‚é‚悤‚É•ÏXB
-E•’ʂ̃AƒJƒEƒ“ƒgì‚è‚Å‚ÍGMƒAƒJƒEƒ“ƒg‚ðì‚ê‚È‚¢‚悤‚É•ÏXB
-(‘O‚ÉŽ©•ª‚ª“ü‚ꂽ•¨‚ª‚È‚‚È‚Á‚½‚Ì‚Å–ß‚µ‚½‚¾‚¯‚Å‚·‚ª...)
-EŽæ‚芪‚«‚ªŽå‚ƈê‚ÉŽ€‚ʂ悤‚É•ÏXB(‚½‚¾‚¿‚å‚Á‚Æd‚‚È‚é
-‰Â”\«‚ª‚ ‚è‚Ü‚·B) –¢ƒeƒXƒgB
-EMVPŒoŒ±’l‚ª•\Ž¦‚¾‚¯‚³‚ê‚ÄŽÀÛ‚É‚Í“ü‚Á‚Ä‚È‚¢–â‘èC³B
- (/login)
- login.c
- mmo_auth_new() C³B
- (/map)
- skill.c
- skill_castend_damage_id() C³B
- battle.c
- battle_calc_misc_attack() C³B
- mob.c
- mob_damage() C³B
- mob_deleteslave()Amob_deleteslave_sub() ’ljÁB
-
---------------
-//0542 by Ž€_
-
-EƒI[ƒgƒuƒŠƒbƒcƒoƒOC³B(¡“x‚±‚»‘åä•v‚Ì‚Í‚¸...)
-EŽ©•ª‚ÉŽg‚Á‚½ƒq[ƒ‹‚Å‚ÍŒoŒ±‚ª“ü‚ç‚È‚¢‚悤‚É•ÏXB
-E“XNPC‚ð—˜—p‚É‚æ‚éƒWƒ‡ƒuŒoŒ±’lŠl“¾ŒvŽZŽ®•ÏXB
- Šl“¾ƒWƒ‡ƒuŒoŒ±’l = ln(‹à) * shop_exp / 100
-‚É‚È‚è‚Ü‚·B
-log‚ðŽg‚¤‚±‚Æ‚Å‹à‚ª‘½‚‚Ä‚à“ü‚éŒoŒ±’l‚ª‘½‚“ü‚ç‚È‚¢‚悤‚É•ÏX‚µ‚Ü‚µ‚½B
- (/map)
- battle.c
- battle_damage() C³B
- skill.c
- skill_attack()Askill_castend_damage_id() C³B
- skill_castend_nodamage_id C³B
- npc.c
- npc_buylist()Anpc_selllist() C³B
- map.c
- map_foreachinarea()Amap_foreachinmovearea()Amap_foreachobject()
- C³B(‘債‚½C³‚Å‚Í‚È‚¢‚Å‚·B)
- (/conf)
- battle_athena.conf C³B
- (/doc)
- conf_ref.txt C³B
-
---------------
-//0541 by huge
-
-E–î‚ð‚Ü‚Æ‚ß‚ÄŽ‚Ä‚é‚悤‚ÉC³B
-E‹|‚ÅUŒ‚‚µ‚½‚Æ‚«‚ÉA‘•”õ‚µ‚Ä‚¢‚é–î‚ðÁ”ï‚·‚é‚悤‚ÉC³B
-
- itemdb.c
- itemdb_search() C³
- itemdb_isequip() C³
-
- battle.c
- battle_weapon_attack() C³
- battle_calc_weapon_attack() C³
-
- clif.c
- clif.h
- clif_arrow_fail() ’ljÁ
- clif_parse_EquipItem() C³
-
---------------
-//0540 by Ž€_
-
-EƒoƒOC³‚Æ–â‘è‚ ‚è‚»‚¤‚ÈŠC³B(‚±‚ê‚ÅWZ_FIREPILLAR‚ƃuƒŠƒbƒc‚É
-‚æ‚éŽIƒ_ƒEƒ“‚Í‚È‚‚È‚é‚Í‚¸...)
- map.c
- map_foreachinarea()Amap_foreachinmovearea() C³B
- skill.c
- skill_unitsetting()Askill_delunitgroup() C³B
- pc.c
- pc_damage() C³B
- battle.c
- battle_damage() C³B
- npc.c
- npc_parse_mob() C³B
- mob.c
- mob_spawn_dataset() C³B
-
---------------
-//0539 by Ž€_
-
-Eclif_pvpset()‚ðƒ}ƒbƒv‚©‚çAREA‚©ƒ}ƒbƒv‚©‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB(pvp‚ÌŽž‚̈—‚Í0535ˆÈ‘O‚Ì•¨‚É–ß‚»‚Ü‚µ‚½BŽ©•ª‚¾‚¯‚É“]‘—‚µ‚Ä‚à‚¢‚¢‚悤‚È‹C‚à‚µ‚Ü‚·‚ª...)
- clif.hAclif.c
- clif_pvpset() C³B
- clif_parse_LoadEndAck() C³B
- script.c
- buildin_pvpoff() C³B
- buildin_pvpon() C³B
- atcommand.c C³B
-EUŒ‚“r’†‚ŃAƒCƒeƒ€‚ðE‚¤‚ÆUŒ‚‚ªŽ~‚Ü‚é‚悤‚ÉC³B
- pc.c
- pc_takeitem() C³B
-E0535à–¾‚ª”š—ô”g“®‚É‚È‚Á‚Ä‚¢‚邪‚»‚ê‚Í‹à„‚ÉŠÔˆá‚¢‚Å‚·B
-E0537‚Åà–¾‚ð–Y‚ê‚Ü‚µ‚½‚ªƒ‚ƒ“ƒXƒ^[‚Ìdef‚Æmdef‚ð10000ˆÈã‚ÉÝ’è‚·‚ê‚ΑS‚Ä‚ÌUŒ‚‚É1ƒ_ƒ[ƒW‚ɂȂ郂ƒ“ƒXƒ^[‚É‚È‚è‚Ü‚·B‚»‚µ‚ă‚ƒ“ƒXƒ^[î•ñ‚Ådef‚Æ
-mdef‚ª10000ˆÈã‚Ìê‡def 100Amdef 99‚É•\Ž¦‚·‚é‚悤‚É•ÏXB–{ŽIŽd—l‚É
-‚·‚é‚É‚Ímob_db.txt‚ðC³‚µ‚Ä‚‚¾‚³‚¢B
-
---------------
-//0538 by huge
-
-EƒOƒŠƒ€ƒgƒD[ƒX‚ð”͈ÍUŒ‚‚ÉC³
-EƒTƒvƒ‰ƒCƒYƒAƒ^ƒbƒNŽÀ‘• (—LŒø”͈͂Á‚ÄA‚±‚ê‚Å‚ ‚Á‚Ä‚é‚Ì‚©‚ÈH)
-EƒoƒbƒNƒXƒ^ƒu‚̉¼ŽÀ‘•
- –{ŽI‚Å‚â‚Á‚Ä‚él‚©‚ç˜b‚ð•·‚¢‚ÄAꊎw’肶‚á‚È‚‚Ä
- ƒ^ƒQŽæ‚Á‚Ä‚à—Ç‚³‚»‚¤‚¾‚Á‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½Bi‚â‚è‚â‚·‚©‚Á‚½‚Ì‚Å (^^;
- ‚Ü‚¾Amob‚ÌŒã‚ë‚É‹‚é‚©‚Ç‚¤‚©‚Ì”»’è‚Í“ü‚Á‚Ä‚Ü‚¹‚ñB
-
-Ebattle.c
- battle_calc_weapon_attack() C³
-
-Eskill.c
- skill_additional_effect() C³
- skill_castend_damage_id() C³
- skill_check_condition() C³
- skill_use_id() C³
- skill_castend_nodamage_id() C³
-
-Eskilldb.txt
- ƒoƒbƒNƒXƒ^ƒu‚ÌŽí—Þ‚ð[êŠ]‚©‚ç[“G]‚Ö•ÏX
-
---------------
-//0537 by Ž€_
-
-EƒXƒeƒB[ƒ‹ƒoƒOC³‚Æbattle_athena.conf‚Ì€–ڒljÁAŽd—l•ÏX‚Æׂ©‚¢C³‚Å‚·B
-(ƒXƒeƒB[ƒ‹‚ÍŒvŽZŽ®‚É–â‘肪‚ ‚Á‚½‚Ì‚ÅC³‚µ‚ÄŠm—¦‚ðX‚É—Ž‚Æ‚µ‚Ü‚µ‚½B)
- battle.h
- finger_offencive_type‚ðfinger_offensive_type‚ÉC³B(‰pŒêƒXƒyƒ‹ŠÔˆá‚¢‚ÅC³‚µ‚Ü‚µ‚½B)
- struct battle_config‚Érestart_hp_rateArestart_sp_rate ’ljÁB
- battle.c
- battle_calc_weapon_attack()Abattle_calc_magic_attack() C³B
- skill.c
- skill_attack() C³B
- clif_skill_nodamage()‚ɃXƒLƒ‹ƒŒƒxƒ‹‚ð‘—‚é‚悤‚É•ÏXB(M‚³‚ñ‚ÌŽw“E‚É‚æ‚èC³B)
- clif.c
- clif_skill_estimation() C³B
- conf_ref.txt
- finger_offencive_type‚ðfinger_offensive_type‚ÉC³‚Æ‚µ’ljÁB
- mob.c
- mob_ai_sub_hard()Amob_target()Amob_damage() C³B
- pc.c
- pc_steal_item() C³B
- atcommnad.cAatcommnd.h
- @ƒRƒ}ƒ“ƒh@gvgon , @gvgoff ’ljÁB
- battle_athena.conf
- finger_offencive_type‚ðfinger_offensive_type‚ÉC³‚Æ‚µ’ljÁB
-
---------------
-//0536 by hogefuga3 (Athena staff)
-
-EVGRFƒtƒ@ƒCƒ‹ƒtƒH[ƒ}ƒbƒg‘Ήž
-@- Athena staff —l‚Ì쬂³‚ꂽƒpƒbƒ`‚ð“K—p‚µ‚Ü‚µ‚½B
- XV—š—ð‚Ì•”•ª‚̓pƒbƒ`ƒ~ƒX‚É‚È‚Á‚½‚Ì‚ÅŽè“®‚Å‘g‚Ýž‚ÝB
-
-i•ÏXj
- common/
- grfio.c
-
---------------
-//0535 by Ž€_
-
-E0533‚Ì–â‘肪‚ ‚è‚»‚¤‚È•”•ª‘S‚ÄC³BC³‚µ‚½Š‚ð‘S•”ƒ`ƒFƒbƒN‚µ‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯...
-EƒXƒNƒŠƒvƒgsetmapflagnosave ’ljÁB
- setmapflagnosave ƒ}ƒbƒv–¼AƒZ[ƒu‚·‚éƒ}ƒbƒv–¼AÀ•W(XAY)
- nosaveƒtƒ‰ƒO‚ðon‚É‚µ‚Ü‚·B
-Ebattle_athena.conf‚ɒljÁ‚ƈꕔŽd—l•ÏXB(Ú‚µ‚‚Íconf_ref.txt‚ðŽQl‚µ‚Ä‚‚¾‚³‚¢B)
-Eƒ‚ƒ“ƒXƒ^[‚Ìdef‚Æmdef‚ª10000ˆÈã‚ÌꇑS‚Ä‚ÌUŒ‚(ƒNƒŠƒeƒBƒJƒ‹ŠÜ‚ß‚Ä)‚ª1ƒ_ƒ[ƒW‚É‚È‚é‚悤‚É•ÏXB(ƒgƒ‰ƒbƒv‚âƒuƒŠƒbƒc‚Ìꇗ¼•û‚ª10000ˆÈã‚Ìꇂ̂Ý1‚É‚È‚è‚Ü‚·B) ‘‚ƃLƒmƒR‚É‚Pƒ_ƒ[ƒWŒÅ’è‚Í휂µ‚Ü‚µ‚½B(Œ³X–{ŽI‚Å‚à1ŒÅ’è‚Å‚Í‚È‚¢‚Å‚·B¸—û“™‚É‚æ‚éˆø‚«ã‚°ƒ_ƒ[ƒW‚Í‚»‚Ì‚Ü‚Üo‚Ü‚·‚Ì‚Å... ŒÅ’肵‚½‚¢‚Ì‚È‚çdef‚Æmdef‚ð10000‚É‚µ‚Ä‚‚¾‚³‚¢BŽÀ‚Í‚±‚ê‚̓NƒŠƒXƒ^ƒ‹‚ɈׂÉì‚낤‚Æ‚µ‚½•¨‚Å‚·‚ª...)
-E”š—ô”g“®‚ÌŽžƒAƒCƒeƒ€‚É‚æ‚éƒXƒLƒ‹‚ÍŽg—p‚Å‚«‚é‚悤‚ÉC³B
-E‚»‚Ì‘¼‚µC³B(C³‚Ì•¨‚Ì’†‚ɃeƒXƒg‚µ‚Ä‚È‚¢•¨‚à‚ ‚è‚Ü‚·B)
- (/doc)
- conf_ref.txt C³B
- (/conf)
- battle_athena.conf C³B
- (/map)
- battle.h C³B
- battle.c C³B
- mob.h C³B
- mob.c C³B
- skill.c C³B
- npc.c C³B
- pc.c C³B
- script.c C³B
- clif.c C³B
- chrif.c C³B
-
---------------
-//0534 by Diex
-
-EƒRƒ“ƒ{ƒVƒXƒeƒ€‰¼ŽÀ‘•
- map/
- battle.c
- battle_weapon_attack() C³B
- clif.c
- clif.h
- clif_combo_delay()@ŠÖ”’ljÁB
- map.h
- map_session_data@•Ï”’ljÁB
- pc.c
- pc_authok()@•Ï”’ljÁB
- pc_attack_timer()@C³B
- skill.c
- skill_castend_damage_id()@C³B
- skill_check_condition@C³B
- skill_use_id@C³B
- db/
- skill_db.txt@C³B
-
-’j–Ò—´Œ‚©‚爢C—…”e–PŒ‚É‚Í‚Ü‚¾‚‚Ȃ°‚Ü‚¹‚ñB
- ˆ¢C—…”e–PŒ‚ð•ú‚Á‚½ŒãAPC‚ÍMOB‚Ì”wŒã(?)‚Ɉړ®‚µ‚Ä‚é‚Á‚Û‚¢‚Ì‚Å‚·‚ªA
-@@‚»‚±‚ç‚Ö‚ñ‚Ìî•ñ‚ª‘«‚è‚Ü‚¹‚ñBî•ñ’ñ‹Ÿ‚¨Šè‚¢‚µ‚Ü‚·B
-
---------------
-//0533 by ‚é‚é‚é
-
-E‘‚ƃLƒmƒR‚É‚Pƒ_ƒ[ƒWŒÅ’è
-battle.c ‚Ì battle_weapon_attack() ‚Æ battle_calc_attack() ‚ðC³
-battle.c ‚Ì battle_get_mobid() ‚ð’ljÁ
-mob.c ‚Ì mob_makedummymobdb() ‚Æ mob_readdb() ‚ðC³
-
-EƒXƒLƒ‹ƒƒO‚Ƀ‚ƒu‚̌ŗL”Ô†•‚o‚b‚Ì‚h‚c”Ô†‚ð•\Ž¦
-ibattle.c ‚Ì battle_get_mobid() ‚ð’ljÁ‚µ‚½‚Ì‚Å‚»‚̂‚¢‚Å‚Éj
-mob.c skill.c ‚Ì•ÏX‰ÓŠ‘½”iŠ¾
-i"MOB %d" ‚à‚µ‚‚Í "PC %d" ‚ÅŒŸõ‚·‚ê‚ΕÏX‰ÓŠ‚ª‚í‚©‚é‚©‚Æj
-
-Eƒnƒ“ƒ^[‚Ìã©‚ðŽg‚Á‚½ƒXƒLƒ‹‚Åã©‚ðÁ”ï‚·‚é‚悤‚É‚µ‚½
-batttle.c ‚Ì skill_check_condition() ‚ðC³
-iƒWƒFƒ€Á”‚Ì—¬—p‚Á‚Û‚¢‚±‚Æ‚ð‚â‚Á‚Ä‚é‚ñ‚¾‚¯‚Lj—’†g‚Í—‰ð‚µ‚Ä‚È‚¢‚—j
-
-EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ•ƒ}ƒOƒkƒX‚̃_ƒ[ƒW”»’è‚ð•sŽ€‘®«•ˆ«–‚Ží‘°‚ÉÄ“xC³
-0532‚ÅÄ‚ÑŒ³‚É–ß‚Á‚Ä‚µ‚Ü‚Á‚½‚Ì‚ð‚È‚¨‚µ‚Ü‚µ‚½B
-‚½‚¾‚µA‰ñ”•l””»’è‚É‚ÍŽè‚ð‰Á‚¦‚Ä‚¢‚Ü‚¹‚ñi‚Á‚Ä‚©Ž©•ª‚É‚Í‚Ü‚¾ƒ€ƒŠj
-
-ˆÈãB
-Ø‚Á‚½“\‚Á‚½‚ÌŒ©—lŒ©^Ž—‚Å‚â‚Á‚½‚Ì‚ÅŒ¾Œê“I‚ɉʂ½‚µ‚Ä‚±‚ê‚Å‚æ‚¢‚Ì‚©BBB
-‚à‚µˆ—•û–@‚É–â‘è—L‚肾‚Á‚½‚çC³‚È‚è‚ð‚µ‚Ä‚¢‚½‚¾‚¯‚é‚ÆŠð‚µ‚¢‚Å‚·B
-
---------------
-//0532 by Ž€_
-
-EC³‚µ‚½Š‚ð‘S‘Rƒ`ƒFƒbƒN‚µ‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯...Š¾
-Emapflag‚Énopenalty’ljÁBŽg—p•û–@‚Í
- mapflag nopenalty dummy
-‚Å‚·B‹@”\‚Í‚»‚̃}ƒbƒv‚ÅŽ€‚ñ‚¾ŽžŒoŒ±‚ªŒ¸‚ç‚È‚¢‚悤‚É‚µ‚Ü‚·B
-Emapflag‚Épvp_nopartyApvp_noguildAgvgAgvg_noparty’ljÁB
-pvp_noparty‚ÍPVPƒ‚[ƒh‚Å“¯‚¶ƒp[ƒeƒB‚ÉUŒ‚‚ª“–‚½‚ç‚È‚¢Apvp_noguild‚ÍPVPƒ‚[ƒh‚Å“¯‚¶ƒMƒ‹ƒh‚ÉUŒ‚‚ª“–‚½‚ç‚È‚¢Agvg‚̓V[ƒYƒ‚[ƒh‚ÉAgvg_noparty‚̓V[ƒYƒ‚[ƒh‚Å“¯‚¶ƒp[ƒeƒB‚ÉUŒ‚‚ª“–‚½‚ç‚È‚¢•¨‚Å‚·B
-E‰Â“®‚µ‚Ä‚È‚¢ƒ^ƒCƒ}[‚Í‘S‚Ä-1‚É‚È‚é‚悤‚É•ÏXB
-E‚«”ò‚΂µˆ—C³B
-Eƒ}ƒbƒvƒ[ƒh’¼Œã‹CŒ÷‚ªŒ©‚¦‚È‚¢–â‘èC³B
-EŽc‰e‚̈—C³B
-Eƒ}ƒbƒv‚ðƒ[ƒh‚·‚é‚ÆŽ€‚ñ‚¾‚ӂ肪‰ðœ‚³‚ê‚é‚悤‚É•ÏXB
-EPVP‚ð‚µ•ÏXB
-EŒÃ–Ø‚ÌŽ}‚Åo‚郂ƒ“ƒXƒ^[‚ðŽ©•ª‚̃Œƒxƒ‹‚æ‚è‚‚¢•¨‚Ío‚È‚¢‚悤‚É•ÏXB
-E‰Á‘¬ƒ|[ƒVƒ‡ƒ“‚Ìsc_start SC_SpeedPot0,1,0;‚ðsc_start SC_SpeedPot0,1800,0;‚̂悤‚É•ÏXBSC_SpeedPotH‚ÌŒã‚Ì”’l‚ÍŽ‘±ŽžŠÔ‚Å‚·B(’PˆÊ‚Í•b)
-E@ƒRƒ}ƒ“ƒh@pvp‚ð@pvpon‚É•ÏX‚Æ@pvpon‚Æ@pvpoffA@gat‚Ì‹@”\•ÏXB
-Ebattle_athena.conf‚ÌpvpíœB
-Ebattle_athena.conf‚Édeath_penalty_type’ljÁB
-Eƒyƒiƒ‹ƒeƒB‚Ì“K—p‚ðŽ€‚ñ‚¾Žž‚©‚玀‚ñ‚¾ŒãƒŠƒXƒ^[ƒg‚µ‚½Žž‚É•ÏXB(ƒŠƒU‚Å•œŠˆ‚·‚é‚ÆŒoŒ±‚ªŒ¸‚è‚Ü‚¹‚ñB–{ŽI‚ÌŽd—l‚ª‚©‚È‚è‹C‚É‚¢‚ç‚È‚©‚Á‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½B)
-EƒXƒNƒŠƒvƒgsetmapflagAremovemapflagApvponApvpoffAgvgonAgvgoff’ljÁB
- setmapflag ƒ}ƒbƒv–¼Aƒ}ƒbƒvƒtƒ‰ƒOƒ^ƒCƒv
- Žw’肵‚½ƒ}ƒbƒvƒtƒ‰ƒO‚ðon‚µ‚Ü‚·B(‚½‚¾pvpAgvg‚ÍpvponAgvgon‚Å‚Å‚«‚é‚Ì‚ÅŽw’肵‚Ä‚à“®ì‚µ‚Ü‚¹‚ñB‚ ‚Ænosave‚Ìꇈ—‚ª‚¿‚å‚Á‚Æ•¡ŽG‚É‚È‚é‚̂őΉž‚µ‚Ä‚Ü‚¹‚ñB)
- removemapflag ƒ}ƒbƒv–¼Aƒ}ƒbƒvƒtƒ‰ƒOƒ^ƒCƒv
- Žw’肵‚½ƒ}ƒbƒvƒtƒ‰ƒO‚ðoff‚µ‚Ü‚·B(‚½‚¾pvpAgvg‚ÍpvpoffAgvgoff‚Å‚Å‚«‚é‚Ì‚ÅŽw’肵‚Ä‚à“®ì‚µ‚Ü‚¹‚ñB‚±‚¿‚ç‚Ínosave‚à‰Â”\‚Å‚·B)
- pvpon ƒ}ƒbƒv–¼
- Žw’肵‚½ƒ}ƒbƒv‚ðPVPƒ‚[ƒh‚É‚µ‚Ü‚·B
- pvpoff ƒ}ƒbƒv–¼
- Žw’肵‚½ƒ}ƒbƒv‚ÌPVPƒ‚[ƒh‚ð‰ðœ‚µ‚Ü‚·B
- gvgon ƒ}ƒbƒv–¼
- Žw’肵‚½ƒ}ƒbƒv‚ðƒV[ƒYƒ‚[ƒh‚É‚µ‚Ü‚·B
- gvgoff ƒ}ƒbƒv–¼
- Žw’肵‚½ƒ}ƒbƒv‚̃V[ƒYƒ‚[ƒh‚ð‰ðœ‚µ‚Ü‚·B
-‚½‚¾‘S‚ẴXƒNƒŠƒvƒg‚Ì“®ì‚ÍŠm”F‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
-EƒTƒ“ƒNƒ`ƒ…ƒAƒŠAƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€‚̈—‚ð0529‚É–ß‚µ‚Ü‚µ‚½B
-Ž©•ª‚Ì’²¸‚ł̓Tƒ“ƒNƒ`ƒ…ƒAƒŠ‚Íl”‚̧ŒÀ‚ª‚ ‚è‚Ü‚·B(ƒŒƒxƒ‹1‚Å4–¼‚Å
-1ƒŒƒxƒ‹‚Ɉêl‚¸‚‘‚¦‚Ü‚·B)
-E‚»‚̌サC³B(‚µ‚½‚Í‚¸...)
- (db/)
- const.txt C³B
- item_db.txt C³B
- (conf/)
- battle_athena.conf C³B
- (doc/)
- conf_ref.txt C³B
- (map/)
- clif.hAclif.c C³B
- mob.c C³B
- pc.hApc.c C³B
- skill.c C³B
- pet.c C³B
- npc.c C³B
- map.hAmap.c C³B
- battle.hAbattle.c C³B
- atcommand.hAatcommand.c C³B
- script.c C³B
- makefile C³B
-
---------------
-//0531 by Ž‚Žqo^.^o
-
-conf/npc_turtle.txt
-Dƒ^[ƒgƒ‹ƒAƒCƒ‰ƒ“ƒh‚És‚ŽžAƒTˆêƒoˆê‚ð—Ž‚Á‚Ä–â‘èC³
-Dnpc_turtle.txt‚Ì508s–Ú
-set Zeny - 10000,0; --> set Zeny,Zeny-10000; C³
-
---------------
-//0530 by RR
-EƒXƒLƒ‹uƒTƒ“ƒNƒ`ƒ…ƒAƒŠv‚ÅUŒ‚‘ÎÛ‚ðƒAƒ“ƒfƒbƒg/ˆ«–‚Ží‘°‚©‚ç•sŽ€‘®«/ˆ«–‚Ží‘°‚É•ÏX
-EƒXƒLƒ‹uƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€v‚ÅUŒ‚‘ÎÛ‚ðƒAƒ“ƒfƒbƒg/ˆ«–‚Ží‘°‚©‚ç•sŽ€‘®«/ˆ«–‚Ží‘°‚É•ÏX
-EƒXƒLƒ‹uƒTƒ“ƒNƒ`ƒ…ƒAƒŠv‚̉ñ•œ‰ñ”‚ðl”‚©‚çƒJƒEƒ“ƒg‚É•ÏX
- skill.c
- skill_unit_onplace()C³
- skill_unit_onout()C³
-
-‘½•ª‚±‚ÌŽd—l‚Ň‚Á‚Ä‚é‚Í‚¸‚Å‚·cB
-
---------------
-//0529 by ŒÓ’±—–
-
-EMOB‚ªƒXƒLƒ‹uƒq[ƒ‹v‚ðŽg—p‚·‚é‚ƃT[ƒo[‚ª—Ž‚¿‚éꇂª‚ ‚Á‚½–â‘è‚ðC³
-EƒXƒLƒ‹uƒTƒ“ƒNƒ`ƒ…ƒAƒŠv‚ÅUŒ‚‘ÎÛ‚ð•sŽ€‘®«‚©‚çƒAƒ“ƒfƒbƒg/ˆ«–‚Ží‘°‚É•ÏX
-
- skill.c
- skill_unit_onplace()C³
- skill_castend_nodamage_id()C³
-
-EƒƒOƒCƒ“ƒT[ƒo[‚̃AƒJƒEƒ“ƒgƒf[ƒ^ƒx[ƒX•ÛŽçƒc[ƒ‹‚ð“Y•t
- Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B
- Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B
- Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B
-
- “Á‚É——R‚ª–³‚¢ŒÀ‚èƒAƒJƒEƒ“ƒgì¬‚à‚±‚¿‚ç‚̃c[ƒ‹‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B
- addaccount‚̓pƒPƒbƒg‚Ì“s‡ãƒpƒXƒ[ƒh•¶Žš”‚̧ŒÀ‚ª‚«‚‚¢‚Ì‚ÅB
-
- ƒAƒJƒEƒ“ƒg‚ð휂µ‚Ä‚àƒLƒƒƒ‰ƒNƒ^[ƒf[ƒ^A‘qŒÉƒf[ƒ^A
- ‚»‚Ì‘¼‚̃AƒJƒEƒ“ƒgˆÈŠO‚̃f[ƒ^‚ÍÁ‚¦‚Ü‚¹‚ñB‘ŠŽè‚ªƒƒOƒCƒ“’†‚¾‚Á‚½ê‡
- ‹§Ø’f‚Í‚³‚ê‚Ü‚¹‚ñ‚ªAŽŸ‰ñ‚©‚ç‚̓ƒOƒCƒ“‚Å‚«‚È‚¢‚Í‚¸‚Å‚·B
- i‚‚܂è‚ÍA’P‚Élogin-serverã‚̃AƒJƒEƒ“ƒg‚ðÁ‚µ‚Ä‚¢‚邾‚¯‚Å‚·j
-
- (login/)
- login.c
- parse_admin()’ljÁAparse_login()C³
- (doc/)
- admin_packet.txt
- V‹K’ljÁBŠÇ—ƒpƒPƒbƒgî•ñ
- (tool/)
- ladmin
- login-server administration tool‚ÌPerlƒXƒNƒŠƒvƒg
-
-
---------------
-//0528 by RR
-EƒXƒLƒ‹uƒq[ƒ‹v‚ðŽg—p‚µ‚½Û‚ɉñ•œ—Ê‚É”ä—Ⴕ‚½•ª‚¾‚¯ƒWƒ‡ƒuŒoŒ±’l‚ªŠl“¾‚Å‚«‚é‚悤‚É•ÏX
-E¤lŒnE‹Æ‚ª“XNPC‚ð—˜—p‚µ‚½Û‚ɃWƒ‡ƒuŒoŒ±’l‚ªŠl“¾‚Å‚«‚é‚悤‚É•ÏX
-E—¼•û‚Æ‚àbattle_athena.conf‚Å’²®‰Â”\‚É‚µ‚Ü‚µ‚½B‰ŠúÝ’è‚Í0”{i”ñ“K—pj
-Emap_athena.conf‚É‚Ä‚©‚Ú‚¿‚áƒNƒGƒXƒg‚Ì‚à‚Ì‚ª“ü‚Á‚Ä‚È‚©‚Á‚½‚̂ŃRƒƒ“ƒgƒAƒEƒg‚µ‚È‚ª‚ç’ljÁB
-
- map_athena.conf
-
- battle.c battle_config_read()
- battle.h Battle_Config
- battle_athena.conf
- ˆÈãAbattle_athena.conf—˜—p‚½‚ß‚É•ÏX
-
- pc.c pc_heal()
- –ß‚è’l‚ðhp+sp‚ÉB–ß‚è’l‚ð—˜—p‚µ‚Ä‚é•”•ª‚ª‚È‚³‚»‚¤‚¾‚Á‚½‚Ì‚ÅŽg‚킹‚Ä–á‚¢‚Ü‚µ‚½BƒoƒO‚ª‹N‚«‚½‚ç‚·‚Ý‚Ü‚¹‚ñB
-
- skill.c skill_casted_nodamage_id()‚̃q[ƒ‹•”‚ɂăWƒ‡ƒuŒoŒ±’lŠl“¾‚·‚é‚悤•ÏX
-
- npc.c npc_buylist()
- npc_selllist() •ÏX
- ‚±‚ê‚ç‚Æ‚ÌŒ“‚ˇ‚¢‚Åskill.h‚ðincludeB
-
-
-¤l‚Ì“X—˜—pƒWƒ‡ƒuŒoŒ±’lŠl“¾‚Å‚·‚ªAŒvŽZŽ®‚Í‚Ü‚¾l‚¦’†‚Ȃ̂ʼn¼‚ÅB
-ŒvŽZŽ®‚̓AƒCƒeƒ€w“ü‚ª@‘ã‹à * ƒXƒLƒ‹ƒŒƒxƒ‹iƒfƒBƒXƒJƒEƒ“ƒgj/ ((1{300/ƒAƒCƒeƒ€ŒÂ”) * 4000)
-ƒAƒCƒeƒ€”„‹p‚ª@‘ã‹à * ƒXƒLƒ‹ƒŒƒxƒ‹iƒI[ƒo[ƒ`ƒƒ[ƒWj / ((1{500/ƒAƒCƒeƒ€ŒÂ”) * 4000)‚Å‚·B
-í‚É–î‚ð‚½‚‚³‚ñˆê‚Éw“ü‚·‚邱‚Æ‚ÅŒoŒ±’l‚𑽗ʂɉ҂®‚±‚Æ‚ª‰Â”\‚Å‚·‚ËcB
-‚Ç‚È‚½‚©‚¢‚¢Ž®‚ðŽv‚¢‚‚¢‚½‚ç•ÏX‚¨Šè‚¢‚µ‚Ü‚·B
-
-‚Æ‚±‚ë‚Å“]ENPC‚ªˆê•”‚©‚Ô‚Á‚Ä‚é‚ñ‚Å‚·‚ªC³‚µ‚È‚¢‚Å‚¢‚¢‚ñ‚Å‚µ‚傤‚©H
-
---------------
-//0527 by Ž€_
-
-E0526‚̃oƒOC³B(ƒeƒXƒg‚ׂ̈ɕς¦‚Ä‚¢‚½•¨‚ð“ü‚ꂽ‚܂܃Aƒbƒv‚µ‚Ä‚µ‚Ü‚Á‚½‚Ì‚ªŒ´ˆö‚Å‚µ‚½B)
- skill.c C³B
- pc.c C³B
- mob.c C³B
- clif.c C³B
-
---------------
-//0526 by Ž€_
-
-E0525‚̃ŠƒUƒŒƒNƒVƒ‡ƒ“‚ðŽ€‚ñ‚¾ƒLƒƒƒ‰‚ÉŽg‚¦‚È‚¢ƒoƒOC³B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñ‚ªŽ¡‚Á‚½‚Í‚¸‚Å‚·B‘½•ª...)
- skill.c C³B
- clif.c C³B
-
---------------
-//0525 by Ž€_
-
-Edmotion‚̊Ԃ̓Lƒƒƒ‰‚ª“®‚©‚È‚¢‚悤‚É•ÏXB(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB)
-EƒƒeƒI‚̃_ƒ[ƒW•\Ž¦ƒ^ƒCƒ~ƒ“ƒOC³B(‚µ’x‚¢‹C‚à‚µ‚Ü‚·‚ª...)
-EƒoƒbƒNƒXƒ‰ƒCƒfƒBƒ“ƒO‚ÌŽž‚Ƀ‚[ƒVƒ‡ƒ“‚ªo‚é‚悤‚É•ÏXB(ƒXƒLƒ‹Žg—pŒã
-0.2•bŒã‚ɃXƒLƒ‹Žg—pƒpƒPƒbƒg‚ð‘—‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½Bƒ‰ƒO“™‚É‚æ‚Á‚Ä•Ï‚È“®ì‚ð‚·‚é‰Â”\«‚à‚ ‚è‚Ü‚·B)
-E0524‚ÌC³B
-EƒnƒCƒfƒBƒ“ƒO‚µ‚Ä‚¢‚鎞Ž©‘R‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏXB
-E0519‚ÅŠÔˆá‚Á‚½conf‚ÌC³‚Æׂ©‚¢ŠC³B
- map.h
- struct map_session_data‚Ìcanmove_tick‚ðcanact_tick‚É•ÏXB
- skillcanmove_tick‚ðcanmove_tick‚É•ÏXB
- skill.c C³B
- pc.c C³B
- pc.h C³B
- clif.c C³B
- battle.c C³B
- battle.h C³B
- mob.c C³B
- mob.h C³B
- char_athena.conf C³B
- map_athena.conf C³B
-
---------------
-//0524 by huge
-
-Eƒ[ƒO ƒgƒ“ƒlƒ‹ƒhƒ‰ƒCƒuŽÀ‘•
- clif.c
- clif_parse_WalkToXY()
- pc.c
- pc_calcstatus()
-
- ‚Ç‚Ì‚‚ç‚¢‘¬“xŒ¸‚·‚é‚Ì‚©•ª‚©‚ç‚È‚©‚Á‚½‚Ì‚ÅAŽb’è“I‚É
- speed += speed * (20-ƒXƒLƒ‹ƒŒƒxƒ‹)/40
- ‚ÆA‚µ‚Ü‚µ‚½B–{ŽIŽd—l‚ª•ª‚©‚é•û‹‚Ü‚µ‚½‚çC³‚¨Šè‚¢‚µ‚Ü‚·B
-
---------------
-//0523 by NOCTURNE
-
-Enpc_event_rental.txt‚ɃNƒ‹ƒZƒCƒ_[—p‚̃yƒRƒyƒRŠÇ—•º‚ð’ljÁ
---------------
-//0522 by ”g˜Q
-
-Emob_db.txt‚ðƒWƒ…ƒm[Œã‚̃f[ƒ^‚ÉC³
-
---------------
-//0521 by ŒÓ’±—–
-
-EmapƒT[ƒo[‚ÉŒq‚ª‚ç‚È‚¢–â‘è‚ðC³
- clif.c
- clif_parse()‚ÌC³
-
---------------
-//0520 by ŒÓ’±—–
-
-EcharƒT[ƒo[ƒƒO‚Ìuset map X.Y HOGE.gatv‚ª•\Ž¦‚³‚ê‚È‚‚È‚è‚Ü‚µ‚½
- •Ï‚í‚è‚ÉAuset map M from XX.YY.ZZ.WW:PP (CC maps)v
- ‚Æ‚¢‚¤‚Ó‚¤‚ɉ½ŒÂ‚̃}ƒbƒv‚ðƒZƒbƒg‚µ‚½‚©‚¾‚¯‚ð•\Ž¦‚·‚é‚悤‚É‚È‚è‚Ü‚·B
-
- char/char.c
- parse_frommapC³
-
-E•¡”mapƒT[ƒo[‚ɉ¼‘Ήž
- ENPC‚̃}ƒbƒvƒT[ƒo[•Ï”‚ÍŽIŠÔ‚Å‚Í‹¤—L‚³‚ê‚Ü‚¹‚ñB‹¤—L‚·‚ׂ«•Ï”‚ð
- Ž‚ÂNPC‚ª‚¢‚éƒ}ƒbƒv“¯Žm‚Í“¯‚¶mapƒT[ƒo[‚Å“®‚©‚·‚ׂ«‚Å‚·B
- ‚¨‚»‚ç‚PC‚̃Oƒ[ƒoƒ‹•Ï”‚Í‹¤—L‚Å‚«‚é‚ÆŽv‚¢‚Ü‚·(–¢ƒeƒXƒg)
- EŽb’è“I‚É“®‚‚悤‚É‚µ‚½‚¾‚¯‚È‚Ì‚ÅA•s“s‡‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
- “Á‚ÉAƒp[ƒeƒB/ƒMƒ‹ƒh/‘qŒÉ/ƒyƒbƒg/Wis‚È‚Ç‚ÌinterƒT[ƒo[‚ðŽg‚¤‹@”\‚ª
- ³‚µ‚ì“®‚·‚é‚©‘S‚ƒ`ƒFƒbƒN‚µ‚Ä‚¢‚Ü‚¹‚ñB
- Eurecv map on XX.YY.ZZ.WW:PP (CC maps)v‚Æ‚¢‚¤ƒƒO‚ª•\Ž¦‚³‚ê‚Ü‚·B
- ‚±‚ê‚Í‘¼‚ÌmapƒT[ƒo[‚ª’S“–‚·‚éƒ}ƒbƒv‚̃ŠƒXƒg‚ªA‚±‚ÌmapƒT[ƒo[‚É
- ³í‚ÉŽóM‚³‚ꂽ‚Æ‚¢‚¤ˆÓ–¡‚Å‚·B
-
- (char/)
- char.c/char.h
- parse_frommap()C³
- mapif_sendallwos()’ljÁ
- (map/)
- map.c/map.h
- map_setipport()‚ðC³
- struct map_session_data‚Ìstateƒƒ“ƒo‚Éwaitingdisconnect’ljÁ
- chrif.c/chrif.h
- FX’ljÁ
- clif.c
- waitingdisconnect‚ª‚P‚È‚çƒpƒPƒbƒg‚𖳎‹‚·‚é‚悤‚É‚µ‚½
- pc.c
- pc_setpos()C³iƒ}ƒbƒvƒT[ƒo[•ÏXˆ—‚È‚Çj
- pc_setnewpc()C³
-
---------------
-//0519 by Ž€_
-
-EƒT[ƒo[snapshot‚ÆFXC³B
-EŽ€‚ñ‚¾ƒLƒƒƒ‰‚ÉUŒ‚‚ª“–‚½‚éƒoƒOC³B(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB–{“–‚ÉŽ¡‚Á‚½‚©‚Ç‚¤‚©•ñ‚¨Šè‚¢‚µ‚Ü‚·B)
-E0517‚̃AƒCƒXƒEƒH[ƒ‹‚̈—‚ð‚µ•ÏXB
-EƒƒeƒI‚ðƒ‚ƒ“ƒXƒ^[‚àŽg‚¦‚é‚悤‚É•ÏXB(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB•ñ‚¨Šè‚¢‚µ‚Ü‚·B) ‚Å‚à‚¿‚å‚Á‚ƃƒ‚ƒŠ[‚ÌŽg—p—Ê‚ª‘‚¦‚Ü‚µ‚½B(–ñ10M’öオ‚é‚悤‚Å‚·B)
-Eƒ{ƒX‚ÌŽæ‚芪‚«‚ªƒ{ƒX‚ƈê‚És“®‚·‚é‚悤‚É•ÏXB(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å‚Ç‚ñ‚È“®‚«‚ð‚·‚é‚©‚ÍŠm”F‚µ‚Ä‚Ü‚¹‚ñBUŒ‚‚àŽó‚¯‚Ä‚È‚¢‚̂Ƀ{ƒX‚ׂ̗©‚矎è‚É—£‚ê‚é‚©‚Ç‚¤‚©‚ÌŠm”F‚ð‚¨Šè‚¢‚µ‚Ü‚·B)
-E‚»‚Ì‘¼×‚©‚¢•¨C³B
- client-packet.txt C³B
- map.h
- AREA_SIZE‚ð15‚©‚ç20‚É•ÏXB
- struct map_session_dataAstruct mob_dataAstruct skill_timerskill C³B
- map.c
- map_quit() C³B
- clif.h
- clif_changemapcell() C³B
- clif.c
- clif_getareachar_skillunit()Aclif_clearchar_skillunit()Aclif_changemapcell() C³B
- skill.c
- skill_unitsetting()Askill_unit_onlimit()Askill_castend_pos2() C³B
- skill_castend_nodamage_id()Askill_check_condition()Askill_attack() C³B
- skill_timerskill()Askill_addtimerskill()Askill_cleartimerskill() C³B
- ‚»‚Ì‘¼‚µC³B
- skill.h
- skill_addtimerskill()Askill_cleartimerskill() C³B
- pc.c
- pc_movepos()Apc_walk()Apc_authok() C³B
- mob.c
- mob_spawn_dataset()Amob_spawn() C³B
- mob_changestate()Amob_damage() C³B
- mob_ai_sub_hard_mastersearch()Amob_ai_sub_hard() C³B
- ‚»‚Ì‘¼‚µC³B
- battle.c
- battle_calc_weapon_attack()Abattle_weapon_attack() C³B
- ‚»‚Ì‘¼‚µC³B
-
---------------
-//0518 by Kalen
-EEvent_pumpkinŠÖ˜A‚̃tƒ‰ƒO•s‹ï‡C³
-
---------------
-//0517 by Ž€_
-
-EƒAƒCƒXƒEƒH[ƒ‹‚Å ‚蔲‚é–â‘èC³‚Æ‚µC³B(M‚³‚ñƒpƒPƒbƒg‚Ì’ñ‹Ÿ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B)
- clif.h
- clif_changemapcell() ’ljÁB
- clif.c
- clif_changemapcell() ’ljÁB
- skill.h
- SC_STEELBODY‚ð84‚©‚ç87‚É•ÏXB
- skill.c
- skill_unitsetting()Askill_unit_onlimit() C³B
- skill_status_change_end()Askill_status_change_start() C³B
- client_packet.txt C³B
-
---------------
-//0516 by Ž€_
-
-Eƒ‚ƒ“ƒXƒ^[‚̃ƒeƒI‚É‚æ‚éŽIƒ_ƒEƒ“‚ð—ÕŽž‚É–h‚¢‚Å’u‚«‚Ü‚µ‚½B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB) ƒ‚ƒ“ƒXƒ^[‚̃XƒLƒ‹‚ɂ‚¢‚Ä‚¿‚å‚Á‚Æ•ªÍ•s‘«‚Å‚·‚Ì‚Å•ªÍ‚µ‚½Œã‚ÉC³‚µ‚Ä’u‚«‚Ü‚·B
-EƒXƒLƒ‹Žw’e‚ÌŽd—l‚ðbattle_athena.conf‚ÅŒˆ‚ß‚é‚悤‚É•ÏXB(0515‚Ì•¨‚ª‚¿‚å‚Á‚Æ‚à‚Á‚½‚¢‚È‚©‚Á‚½‚Ì‚Å...)
- skill.c
- skill_castend_pos2() C³B
- battlc.hAbattle.c
- battle_config‚Éfinger_offencive_type ’ljÁB
- battle_calc_weapon_attack() C³B
- battle_athena.conf C³B
- conf_ref.txt C³B
-
---------------
-//0515 by Ž€_
-
-EƒXƒLƒ‹ƒƒeƒI‚ÆŽw’eC³‚ƃpƒPƒbƒgC³A0512‚Ì—Ž‚Æ‚µ•¨C³‚Æ‚µ‚¾‚¯‚ÌŽd—l•ÏX‚Å‚·B
-EŽw’e‚Ìê‡à–¾‚ðŒ©‚Ä‚±‚ñ‚ÈŠ´‚¶‚©‚È‚ÆŽv‚Á‚Äì‚Á‚½•¨‚Å‚·BˆÈ‘O‚Ì•¨‚ª–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚Ȃ猳‚É–ß‚µ‚Ü‚·B
-EƒƒeƒI‚Ì1”‚͈̔͂Í5*5ƒZƒ‹(range = 2)‚Å‚·B
-EƒAƒCƒeƒ€Žg—pƒpƒPƒbƒg‚ðV‚µ‚¢•¨‚É•ÏX‚µ‚½‚ªƒGƒtƒFƒNƒg‚ªo‚È‚¢•¨‚Ío‚È‚¢‚悤‚Å‚·B(FXƒGƒtƒFƒNƒg‚ª“ü‚Á‚Ä‚¢‚é‚Ý‚½‚¢‚¾‚©‚çŒã‚ÍŽg‚Á‚ÄŠm”F‚Å‚·‚¯‚Ç‚ËB)
-E0512‚Åhitrate‚ª10000ˆÈã‚Å•K’†‚Å‚Í‚È‚100000ˆÈã‚Å•K’†‚Å‚·‚̂ŃR[ƒh‚ÌC³‚Ì‚³‚¢‚É‚Í‹C‚ð‚Á‚‚¯‚Ä‚‚¾‚³‚¢B
-Ebattle_athena‚Éݒ肳‚ê‚Ä‚¢‚é•Ší‚Ì»‘¢—¦‚ƃyƒbƒg‚̕ߊlŠm—¦‚ÌŒvŽZ•û–@‚ð‚µ•Ï‚¦‚Ü‚µ‚½B(‹C‚É‚·‚é•K—v‚à‚È‚¢•¨‚Å‚·‚¯‚Ç‚ËB)
- skill.h
- skill_addtimerskill()Askill_cleartimerskill ’ljÁB
- skill.c
- skill_attack() fixAskill_use_id()Askill_use_pos() C³B
- skill_castend_damage_id()Askill_castend_nodamage_id() C³B
- skill_timerskill()Askill_addtimerskill()Askill_cleartimerskill ’ljÁB
- skill_castcancel()Askill_castend_pos2()Askill_unitsetting() C³B
- skill_produce_mix()Ado_init_skill() C³B
- mob.c
- mob_damage() C³B
- battle.c
- battle_calc_weapon_attack() C³B
- map.h
- struct skill_timerskill ’ljÁB
- struct map_session_data C³B
- map.c
- map_quit() C³B
- pc.c
- pc_authok() C³B
- pc_damage() C³B
- clif.c
- clif_parse_WalkToXY() C³B
- clif_useitemack() C³B(Ž‘—¿’ñ‹Ÿ: Kalen‚³‚ñ)
- pet.c
- pet_catch_process2() C³B
- skill_db.txt
- ‹CŒ÷‚ÌSP‚ð10‚É•ÏXB(ƒlƒbƒg‚ÌŒŸõ‚Å‚Í10‚¾‚Á‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½BŠØ‘‘ ‚Å‚Í15‚Æ•\Ž¦‚³‚ê‚Ü‚·‚ª...)
- client_packet.txt
- 01c8‚Ì•ÏX‚Å‚·BKalen‚³‚ñî•ñ’ñ‹Ÿ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B
-
---------------
-//0514 by Kalen
-
-EscriptC³+’ljÁ
-
- conf/npc_event_pumpkin.txt (V‹K)ƒJƒ{ƒ`ƒƒƒCƒxƒ“ƒg
- conf/npc_town_guide.txt (C³)Juno‚Ìu+vƒAƒCƒRƒ“ƒJƒ‰[C³
- conf/npc_town_lutie.txt (ˆê•”’ljÁ)ƒJƒ{ƒ`ƒƒƒCƒxƒ“ƒg‚ɉe‹¿‚·‚éNPC‚̉ï˜b’ljÁ
-
---------------
-//0513 by RR
-
-E“]EŽž‚É‘•”õ‚ª‘S‚ÄŠO‚ê‚é‚悤‚É‚µ‚Ü‚µ‚½BŠÖ”ˆÊ’u‚Ì•ÏX‚µ‚Ä‚È‚¢‚Ì‚ÅA‚Ђå‚Á‚Æ‚µ‚½‚炨‚©‚µ‚‚È‚Á‚Ä‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB‚¤‚¿‚̊‹«(win2k cygwin)‚Å‚Í•½‹C‚Å‚µ‚½‚Ì‚Å‚»‚Ì‚Ü‚Ü‚É‚µ‚Ä‚ ‚è‚Ü‚·BB
-Eƒm[ƒrƒXŽž‚ÌŽ€–S‚Å‚ÍAÅ‘åHP‚Ì‚Q•ª‚Ì‚P‚Å•œŠˆ‚Å‚«‚é‚悤C³B(ƒXƒLƒ‹‚É‚æ‚é•œŠˆ‚Í–¢Šm”F)
-EƒfƒXƒyƒiƒ‹ƒeƒB‚É‚æ‚éŒoŒ±’lŒ¸‚ð’ljÁBbattle_athena.conf‚É‚ÄAŒ¸—¦‚ð•ÏX‚Å‚«‚é‚悤‚ÉÝ’èBŒ¸‚éŒoŒ±’l‚ͬ”“_ˆÈ‰ºØ‚èŽÌ‚Ä‚È‚Ì‚ÅA•K—vŒoŒ±’l‚ª’á‚¢‚¤‚¿‚É‚Í‚¿‚傤‚Ç‚»‚Ì“•ªˆø‚©‚ê‚é‚Æ‚¢‚¤•—‚É‚Í‚È‚è‚Ü‚¹‚ñB
- battle.h
- Battle_Config‚Édeath_penalty_base‚Ædeath_penalty_job‚ð’ljÁB
- battle.c
- battle_config_read‚Ådeath_penalty_base‚Ædeath_penalty_job‚ð“ǂނ悤‚ÉC³B
- pc.c
- pc_makesavestatus() C³B
- pc_damege() C³B
- pc_jobchange() C³B
- battle_athena.conf
- death_penalty_base,death_penalty_job’ljÁB
-
---------------
-//0512 by Ž€_
-
-E–â‘è‚É‚È‚è‚»‚¤‚È•”•ª‚ÌC³‚ÆV‚µ‚¢ƒpƒPƒbƒg‚̑Ήž‚ªƒƒCƒ“‚Å‚·BŒãƒoƒO‚à‚µŽ¡‚µ‚Ü‚µ‚½B(“®‚¯‚È‚¢ó‘ÔˆÙí‚É‚È‚Á‚Ä‚à“®‚–â‘è‚ÌC³“™‚Å‚·B)
- athena.sh C³B(‚¢‚‚àŽI‚ðŒÂ•Ê‚ÉŽÀs‚µ‚Ä‚¢‚½‚Ì‚Å‹C‚ª‚‚«‚Ü‚¹‚ñ‚Å‚µ‚½B)
- makefile
- DPACKETVER‚ð2‚©‚ç3 ‚ÉC³BƒWƒ…[ƒmˆÈŒã‚Ì‘ ‚ðŽg‚¤‚Ì‚È‚ç3‚É‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B(‚»‚̈ȑO‚È‚ç2‚©1)
- clif.c
- DPACKETVER=3‚ɑΉž(¡‚ÌŠ0x114‚ð0x1de‚É•ÏŠ·‚Æ0x11f‚ð01c9‚É•ÏŠ·‚·‚é‚̂ݑΉž)
- clif_skill_damage3() íœB
- clif_skillcastcancel() ’ljÁB
- clif_skill_damage()Aclif_getareachar_skillunit()Aclif_skill_setunit() C³B
- clif_fixmobpos()Aclif_fixpetpos()Aclif_fixpcpos() C³B
- ‘¼‚É‚µC³B
- clif.h
- clif_skill_damage3() íœB
- clif_skillcastcancel() ’ljÁB
- battle.c
- battle_calc_weapon_attack() C³B
- hitrate‚ð10000ˆÈã‚É‚·‚ê‚ΕK’†‚É‚È‚é‚悤‚É•ÏXB(¡‚ÌŽd—l‚ł̓‚ƒ“ƒXƒ^[‚Ì•K’†UŒ‚ˆÈŠO‚Í•K’†‚É‚È‚è‚Ü‚¹‚ñB)
- ‘¼‚É‚µC³B
- client_packet.txt
- V‚µ‚¢ƒpƒPƒbƒgî•ñ’ljÁB
- pc.c
- pc_spiritball_timer()Apc_delspiritball() C³B
- pc_damage()Apc_skill() C³B
- skill.h
- SC_EXPLOSIONSPIRITS‚ð89‚©‚ç86‚É•ÏXB(86 = 0x56)
- SC_DELUGE‚ð86‚©‚ç89‚É•ÏXB
- skill.c
- skill_castcancel()Askill_use_id()Askill_use_pos() C³B
- skill_check_condition() C³B
- skill_castend_damage_id()Askill_castend_nodamage_id C³B
- skill_status_change_end()Askill_status_change_start() C³B
- skill_db.txt
- ‹CŒ÷‚ÌÁ”ïSP‚ðC³B(‘O‚Ì15‚ª–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚Ý‚½‚¢‚Å‚·‚Ì‚Å...)
- mob.c
- mobskill_use_id()Amobskill_use_pos() C³B
- map.c
- map_quit() C³B
- atcommand.h
- atcommand.c
- @ƒRƒ}ƒ“ƒh@spiritball’ljÁB(‹@”\‚ÍŽg‚¦‚΂킩‚è‚Ü‚·B‚½‚¾1000ˆÈã‚Í“ü‚ê‚È‚¢•û‚ª‚¢‚¢‚Å‚·B‘ ‚ªƒpƒ“ƒN‚µ‚Ü‚·‚Ì‚Å...)
- atcommand_athena.conf
- C³B
- conf_ref.txt
- C³B
-E0x196ƒpƒPƒbƒg‚ÉV‚µ‚¢•¨‚ª’ljÁ‚³‚ê‚Ä‚¢‚é‚Ì‚Åó‘ԕω»‚É’¼Ú‚ÉŠÖŒW‚È‚¢SC_xxxx‚̔Ԇ‚ð’²®‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B(¡‚ÍSC_EXPLOSIONSPIRITS‚É‚¾‚¯‘Ήž‚µ‚Ü‚µ‚½B) ‚»‚ê‚Æskill_status_change_end()Askill_status_change_start()‚Åclif_status_change()‚ðŒÄ‚Ôtype‚͈̔͂ª64(0x40)–¢–ž‚É‚È‚Á‚Ä‚¢‚邪‚»‚ê‚à’ljÁ‚³‚ê‚Ä‚¢‚镨‚ɇ‚킹‚ÄC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚·‚ª’ljÁ‚³‚ê‚Ä‚¢‚镨‚ª‘S‚Ä‚í‚©‚Á‚½‚킯‚Å‚à‚È‚¢‚Ì‚ÅSC_EXPLOSIONSPIRITS‚É‚¾‚¯‘Ήž‚µ‚Ü‚µ‚½B¡“x‚©‚ç‚Í”š—ô”g“®‚̉𜂪³Šm‚ÉŒ©‚¦‚Ü‚·B‹à„‚̓f[ƒ^‚ðŒ©‚Â‚¯‚ç‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B
-¦V‚µ‚¢ƒpƒPƒbƒg‚ɑΉž‚·‚éì‹Æ‚ð‚µ‚Ä‚¢‚Ü‚·‚ªî•ñ‚ª•s‘«‚Å‚·B
-ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚âƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚̃GƒtƒFƒNƒg‚ªo‚é‚悤‚É‚·‚éˆ×‚É01c8‚ðŽg‚Á‚Ä‚Ý‚Ü‚µ‚½‚ª‘Ê–Ú‚Å‚µ‚½Bclient_packet.txt‚̃f[ƒ^‚ł͉½‚à‹N‚±‚ç‚È‚¢‚̂ʼn½•û‚ª–{ŽI‚ŃCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚âƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚ðŽg‚Á‚½Žž‚̃pƒPƒbƒg‚ð’ñ‹Ÿ‚µ‚Ä‚‚ê‚Ü‚¹‚ñ‚©HS 00a7‚ÌŒã00a8‚ª—ˆ‚é‚Ì‚©‚»‚ê‚Æ‚à01c8‚ª—ˆ‚é‚Ì‚©‚ÌŠm”F‚Æ00a8‚ÌŒã‚É01c8‚ª—ˆ‚é‚Ì‚©‚ÌŠm”F‚ª‚Å‚«‚ê‚Ή½‚Æ‚©‚È‚é‚ÆŽv‚¢‚Ü‚·‚ª...
-‚»‚ê‚Æ01c9‚ÌŒã‚É—ˆ‚é?.81b‚ª‚í‚©‚ê‚΃AƒCƒXƒEƒH[ƒ‹‚ð ‚蔲‚é–â‘è‚à‰ðŒˆ‚Å‚«‚é‚ÆŽv‚¢‚Ü‚·‚ª...
-î•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
-
---------------
-//0511 by Diex
-
-EŽw’e‚ÌUŒ‚‰ñ”C³B
-Eˆ¢C—…”e–PŒA”™¤‚ªC—û‚𖳎‹‚µA–³‘®«‚É‚È‚é‚悤‚ÉC³B
-E‹à„Žg—pŽžAMDEF‚ª³‚µ‚•\Ž¦‚³‚ê‚Ä‚È‚©‚Á‚½ƒoƒO‚ðC³B
-E‹CŒ÷‚ÌÁ”ïSP‚ðC³B
- pc.c
- pc_calcstatus() C³B
- battle.c
- battle_calc_weapon_attack() C³B
- skill.c
- skill_check_condition() C³B
-
- skill_db.txt C³B
-
---------------
-//0510 by Diex
-
-EŽO’i¶‚Ì•\Ž¦ƒoƒOC³
-EŽw’e‚ª‹C’e‚ª–³‚‚Ä‚àŒ‚‚Ä‚éƒoƒO‚ðC³
- map.h
- struct map_session_data‚Éspiritball_old•Ï”’ljÁB
- skill.c
- skill_check_condition() C³B
- clif.c
- clif_skill_damage3() C³B
- battle.c
- battle_weapon_attack()Abattle_calc_weapon_attack C³B
-
---------------
-//0509 by
-
-Enpc_warp.txt
- ƒvƒé¨ƒvƒƒtƒB[ƒ‹ƒh‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðA
- ƒvƒé¨ƒ”ƒ@ƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚ÉC³B
- ƒvƒƒtƒB[ƒ‹ƒh¨ƒvƒé‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðƒvƒƒtƒB[ƒ‹ƒh¨ƒ”ƒ@ƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚ÉC³
-
---------------
-//0508 by Ž€_
-
-EƒoƒOC³‚Æ‘§A‹CŒ÷A‹C’D‚ÌC³‚ªƒƒCƒ“‚Å‚·B(¡“x‚©‚ç‚Í‘¼‚Ìl‚É‚à‹C‚ª‚¿‚á‚ñ‚ÆŒ©‚¦‚Ü‚·B)
-EŽ€‚ñ‚¾ƒLƒƒƒ‰‚ÉŒoŒ±’l‚ª“ü‚é–â‘èC³B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB‚Ç‚¤‚È‚Ì‚©•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B)
- pc.h
- pc_addspiritball()Apc_delspiritball() ’ljÁB
- pc_is50overweight() C³B
- pc.c
- pc_gainexp() C³B
- pc_insert_card()Apc_item_identify() C³B(‘債‚½C³‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ª...)
- pc_authok() C³B
- pc_addspiritball()Apc_delspiritball() ’ljÁB
- pc_spiritball_timer() ’ljÁB
- do_init_pc()Apc_calcstatus()C³B
- pc_spirit_heal() ’ljÁB
- pc_natural_heal()‚ÉŠÖ‚í‚镨‚ÌC³B
- map.h
- struct map_session_data C³B
- map.c
- map_quit() C³B
- map_addflooritem() C³B
- clif.h
- clif_spiritball_int()‚ðclif_spiritball()‚É•ÏXB
- clif_spiritball_ext() íœB
- clif.c
- clif_spiritball_int() ‚ðclif_spiritball()‚É•Ï‚¦‚ÄC³B
- clif_spiritball_ext() íœB
- clif_set01e1() ’ljÁB
- clif_getareachar_pc() C³B
- skill.h
- SC_CALLSPIRITS íœB
- skill.c
- SC_CALLSPIRITS íœB
- skill_castend_nodamage_id()Askill_check_condition() C³B
- skill_status_change_start() C³B
-E°‚É—Ž‚¿‚½ƒAƒCƒeƒ€‚ªÁ‚¦‚é‚Ü‚Å‚ÌŽžŠÔ‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB
- battle.hAbattle.c
- battle_config_read() C³B
- conf_ref.txt C³B
- battle_athena.conf C³B
-
---------------
-//0507 by Diex
-0505‚ÌC³
-EŽO’i¶‚̃GƒtƒFƒNƒgŽÀ‘•
-
---------------
-//0506 by hoenny
-‘S‘Ì“I‚É‚µŽ®C³
-ƒZƒCƒW‚̃XƒLƒ‹‚ªƒAƒCƒeƒ€‚ðÁ–Õ‚·‚é‚悤‚ÉC³
-(ƒXƒLƒ‹‚ÌDB‚É zeny, spiritball, item, equip‚ð“ü‚ꂽ‚¢‚ªŽžŠÔ‚ª‚È‚‚Ä—ÕŽž“I‚É ...)
-
---------------
-//0505 by Diex
-
-Eˆ¢C—…”e–PŒ‚̃_ƒ[ƒWC³
-E–Ò—´Œ‚̃_ƒ[ƒWC³
-EŽw’eŽÀ‘•
-E”™¤ŽÀ‘•
-E‹à„‚ªŒ¸ŽZDEF‚ÆŒ¸ŽZMDEF‚ª90‚ɌŒ肳‚ê‚Ä‚¢‚½‚Ì‚ðæŽZDEF‚ÆæŽZMDEF‚ª90‚É‚È‚é‚悤‚ÉC³
-EŽO’i¶ŽÀ‘•i‚½‚¾‚µƒRƒ“ƒ{‚Í–¢ŽÀ‘•j
- map/clif.c
- map/clif.h
- clif_skill_damage3()’ljÁ
- map/pc.c
- map/skill.c
- map/battle.c
- C³E‹y‚ђljÁ
-iŒvŽZŽ®‚Í+ Acolyte Maniax +‚ðŽQl‚É‚µ‚Ü‚µ‚½Bj
-
---------------
-//0504 by Ž€_
-
-Eatcommand.c C³B(‚½‚Á‚½2•¶Žš‚ð’ljÁ‚µ‚½‚¾‚¯‚Å‚·B)
-atcommnad_gm_only‚ªno‚¶‚á‚È‚‚Ä‚àŽg—pƒŒƒxƒ‹Ý’è‚ð0‚É‚µ‚½ƒRƒ}ƒ“ƒh‚ÍGM‚¶‚á‚È‚¢ƒLƒƒƒ‰‚Å‚àŽg‚¦‚Ü‚·BƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB
-
---------------
-//0503 by nabe
-
-E¸˜BC³‚ÆLinux—p‚É‚¿‚å‚Á‚Æ•ÏX‚È‚Ç
- conf/map_athena.conf
- npc_event_doll.txt,
- npc_turtle.txt,
- //npc_pota.txt€–ڒljÁ
- conf/npc_pota.txt’ljÁisocie‚³‚ñì‚̃_ƒ“ƒWƒ‡ƒ“ƒ|ƒ^Žq‚³‚ñj
- conf/npc_shop.txt
- ƒCƒYƒ‹[ƒh•Ší¤l‚̉¿ŠiC³
- conf/script_athena.conf
- 0499‚Å‚Ì•¶Žš‰»‚¯HC³
- login/login.c
- #include <time.h>’ljÁ
- map/script.c
- buildin_getequipname()
- ¸˜Bƒƒjƒ…[‚Ìmalloc‚ðC³
- buildin_getequipisenableref()
- ¸˜B‰Â”\ðŒC³iAthefans‚³‚ñ‚ÌðŒ•¶‚É‚µ‚Ä‚Ý‚Ü‚µ‚½j
- map/skill.c
- skill_check_condition()•Ï”錾ˆÊ’u‚Ì•ÏX‚Ì‚Ý
-
---------------
-//0502 by Ž€_
-
-EƒJƒvƒ‰‚Ì‘qŒÉ‚àbattle_athena.conf‚Ìbasic_skill_check‚É‚æ‚Á‚ÄŠî–{ƒXƒLƒ‹‚ª‘«‚è‚È‚‚Ä‚àŽg—p‚·‚邱‚Æ‚ª‚Å‚«‚é‚悤‚ÉC³‚µ‚Ü‚µ‚½B(ƒvƒƒ“ƒeƒ‰’†‰›‚̃Jƒvƒ‰‚Ì‚ÝŠm”FB)
-EƒNƒFƒXƒgƒXƒLƒ‹‚̎擾‚Í0492‚Ì‚¹‚¢‚Å‚·B0481‚Éskill‚ÌŌオ,2‚¶‚á‚È‚,0‚¾‚Æ‘‚¢‚½‚Ì‚Å‚·‚ª‰½ŒÌ‚©0492‚Å,2‚É‚È‚Á‚Ä‚¢‚½‚Ì‚Å,0‚ÉC³‚µ‚Ü‚µ‚½B
-EƒXƒNƒŠƒvƒggetbaseskillcheck‚ðbaseskillcheck‚É•ÏX‚ÆŽ©•ª‚ÅC³‚µ‚Ü‚µ‚½‚ª–½—ß‚ÌŒã‚É‚È‚ñ‚Ì”’l‚à“ü‚ç‚È‚¢ê‡‚̓XƒNƒŠƒvƒg‚ª³‚µ‚ì“®‚µ‚È‚©‚Á‚½‚Ì‚ÅŽg—p‚·‚éꇂÍbaseskillcheck(0)‚É‚µ‚ÄŽg‚í‚È‚¢‚Ƴ‚µ‚¢Œ‹‰Ê‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
-(Ú‚µ‚‚Ínpc_town_kafra.txtŽQÆB)
- npc_event_skillget.txt C³B
- npc_town_kafra.txt C³B
- script.c C³B
-EGM_account.txt‚ÉŽ©•ª‚ªƒeƒXƒg‚ׂ̈Ɏg‚Á‚Ä‚¢‚½500000‚ª“ü‚Á‚Ä‚¢‚½‚Ì‚Å휂µ‚Ü‚µ‚½B(GM_account.txtì‚Á‚½——R‚ÍŽ©•ªŸŽè‚ɃAƒJƒEƒ“ƒg‚ðGM‚É‚·‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚·‚éˆ×‚Å‚·B‚‚܂èGM‚Æ‚µ‚Ä•\Ž¦‚³‚ê‚È‚‚Ä‚àGM‚Æ‚µ‚ÄF‚ñ‚ÈŒ ŒÀ‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚³‚·‚ª‚ÉGMê—p‚̉EƒNƒŠƒbƒNƒRƒ}ƒ“ƒh‚ÍŽg‚¦‚Ü‚¹‚ñ‚ª... ‚Å‚à‚±‚ê‚ðŠˆ—p‚µ‚Ä‚¢‚é•û‚Í‚¢‚È‚¢‚Ý‚½‚¢‚È‚ñ‚Å‚·‚Ë...)
-
---------------
-//0501 by hoenny
-
-E500‚Ì–â‘è“_C³
--HP‰ñ•œ—ÍŒüã,SP‰ñ•œ—ÍŒüã
- map/pc.c
- pc_natural_heal_hp()C³
- pc_natural_heal_sp()C³
-
-500SP‰ñ•œ—ÍŒüã
---------------
-//0500 by hoenny
-
-EC“¹‘m‚Ì‘§ŽÀ‘•
--Šî–{“I‚ÉÀ‚Á‚½Žž 10•b‚²‚Ƃɉñ•œ‚µ‚Ü‚·.
--ŠŽ—Ê‚ª 50%‚ðƒI[ƒo[‚µ‚½ê‡ 20•b‚²‚Ƃɉñ•œ‚µ‚Ü‚·.
-EC“¹‘m‚Ì‹C’DŽÀ‘•
--‘¼‚ÌC“¹‘m‚ÌŸ†‹…‚à‹zŽû‚ª‰Â”\‚Å‚·.
-EC“¹‘m‚Ì‹à„ŽÀ‘•
--‹à„ó‘Ô‚Å‚Í‚·‚ׂẴAƒNƒeƒBƒuƒXƒLƒ‹‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚È‚¢‚Å‚·.
- db/skill_db.txt
- ‹C’DC³
- ‹à„C³
- map/pc.h
- pc_is50overweight()’ljÁ
- pc_is90overweight()’ljÁ
- map/pc.c
- pc_calcstatus()C³
- pc_spheal()C³
- pc_hpheal()C³
- pc_natural_heal_hp()C³
- pc_natural_heal_sp()C³
- pc_natural_heal_sub()C³
- map/skill.c
- skill_check_condition()C³
- skill_castend_nodamage_id()C³
- skill_status_change_start()C³
-
---------------
-//0499 by Ž€_
-
-EƒT[ƒo[snapshot‚ƃoƒOC³B
-EƒXƒeƒB[ƒ‹ƒRƒCƒ“‚̃[ƒj—Ê‚ðƒ‚ƒ“ƒXƒ^[ƒŒƒxƒ‹*10 + rand(100)‚É•ÏXB
-EƒLƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚ª‚È‚¢ƒXƒLƒ‹‚̓^ƒCƒ}[‚ðŽg‚í‚È‚¢‚悤‚É•ÏXB
-EƒJ[ƒh‚ÌŽg—p‚É‚æ‚éƒ}ƒbƒvŽIƒ_ƒEƒ“‚ð–h‚®ˆ×‚ÉC³B(¡“x‚±‚»Ž¡‚Á‚½‚Í‚¸...) ‚»‚µ‚ÄŠg‘勾‚à“¯‚¶‚悤‚È‚±‚Æ‚ª‚Å‚«‚é‚Ì‚ÅC³B(‚±‚ê‚ÍŽIƒ_ƒEƒ“‚Ü‚Å‚Í‹N‚±‚³‚È‚¢‚悤‚Å‚·‚ª...)
-EƒLƒƒƒ‰‚Ƀ}ƒbƒv‚̃[ƒh‚ªI‚í‚é‚܂Ńyƒbƒg‚̃f[ƒ^‚ª—ˆ‚È‚¢‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚é–â‘èC³B(–Å‘½‚È‚±‚Æ‚ª‚È‚¢ŒÀ‚è‹N‚±‚ç‚È‚¢‚Å‚·‚¯‚Ç‚ËB)
-EƒI[ƒgƒo[ƒT[ƒNAd‚³‚̃AƒCƒRƒ“‚ƃ`ƒFƒbƒN‚ª³‚µ‚“K—p‚³‚ê‚é‚悤‚ÉC³B
-E‘‘¬ƒ|[ƒVƒ‡ƒ“‚Ì“K—p‡”Ô•ÏXB¡‚܂ł̓Xƒs[ƒhƒAƒbƒvƒ|[ƒVƒ‡ƒ“‚ªÅ—Dæ‚ÅŽŸ‚ªƒnƒCƒXƒs[ƒhƒ|[ƒVƒ‡ƒ“AŌオƒo[ƒT[ƒNƒ|[ƒVƒ‡ƒ“‚¾‚Á‚½‚Ì‚Å‚·‚ª‡”Ô‚ð‹t‚É•ÏX‚µ‚Ü‚µ‚½B
-EƒAƒCƒeƒ€‚ÅŽg‚¤ƒXƒLƒ‹‚̓LƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚ƃfƒBƒŒƒC‚ª0‚É‚È‚é‚悤‚É•ÏXB
-EƒAƒCƒeƒ€‚ÅŽg‚¤ƒXƒLƒ‹‚̃Œƒxƒ‹‚ªitem_db‚Éݒ肵‚Ä‚¢‚郌ƒxƒ‹‚æ‚è‚‚‚È‚éƒoƒOC³B
- pc.h
- pc_move()‚ðpc_movepos()‚É•ÏXB
- pc.c
- pc_steal_coin()Apc_insert_card()Apc_item_identify()Apc_authok()A
- pc_calcstatus()Apc_checkweighticon()Apc_damage() C³B
- skill.c
- skill_castend_pos2()Askill_check_condition()Askill_use_id()A
- skill_use_pos() C³B
- pet.c
- pet_recv_petdata()Apet_change_name() C³B
- map.h
- struct map_session_data‚Éskillitemlv ’ljÁB
- script.c
- buildin_itemskill() C³B
- clif.c
- clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos()A
- clif_parse_LoadEndAck() C³B
- mob.c
- mobskill_use_id()Amobskill_use_pos() C³B
-
---------------
-//0498 by hoenny
-
-DŸ†‹…‚ª‚·‚Á‚©‚茩‚¦‚é‚悤‚ÉC³(Á–ÕƒXƒLƒ‹Žg—p‚ÌŽžÁ–Õ‚·‚é‚悤‚ÉC³)
-DƒXƒLƒ‹Žc‰e‚ðŽg—p‚ÌŽžŸ†‹…‚ðÁ–Õ‚·‚é‚悤‚ÉC³
- doc/client_packet.txt
- 0x1d0’ljÁ
- map/map.h
- sd‚Ìstructure‚É spiritball’ljÁ
- map/clif.h
- clif_spiritball_del() -> clif_spiritball_int()C³
- clif_spiritball_cre() -> clif_spiritball_ext()C³
- map/clif.c
- packet_len_table[]C³
- clif_spiritball_del() -> clif_spiritball_int()C³
- clif_spiritball_cre() -> clif_spiritball_ext()C³
- map/pc.h
- pc_item_steal() -> pc_steal_item()C³
- pc_coin_steal() -> pc_steal_coin()C³
- map/pc.c
- pc_item_steal() -> pc_steal_item()C³
- pc_coin_steal() -> pc_steal_coin()C³
- pc_calcstatus()C³
- map/skill.c
- skill_check_conditon()C³
-
---------------
-//0497 by Ž€_
-
-E0491‚̃XƒLƒ‹Žc‰e‚̃oƒOC³‚ƃXƒeƒB[ƒ‹‚ƃXƒeƒB[ƒ‹ƒRƒCƒ“AƒXƒiƒbƒ`ƒƒ[‚ÌC³Amob_target‚̃oƒOC³B
-EŒðŠ·AÀ‚èAƒp[ƒeƒBŒ‹¬“™‚ÌŽž‚ÉŠî–{ƒXƒLƒ‹‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³B(battle_athena.conf‚Ń`ƒFƒbƒN‚·‚é‚©‚Ç‚¤‚©‚ðŒˆ‚ß‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B)
-‚½‚¾ƒJƒvƒ‰‚Ì‘qŒÉ‚̓XƒNƒŠƒvƒg‚ŧŒÀ‚ð‚©‚¯‚邵‚©‚ ‚è‚Ü‚¹‚ñB
-EƒXƒNƒŠƒvƒggetbasicskillcheck’ljÁB
- Žg—p•û–@„ getbasicskillcheck
- –ß‚è’l‚Íbattle_athena.conf‚Ìbasic_skill_check‚Å‚·B0‚Ìꇂ͊î–{ƒXƒLƒ‹‚̃`ƒFƒbƒN‚È‚µ‚Å1‚Ìꇂ͊î–{ƒXƒLƒ‹‚ðƒ`ƒFƒbƒN‚·‚é‚Ì‚ðˆÓ–¡‚µ‚Ü‚·B
- skill.c
- skill_castend_pos2() C³B
- skill_additional_effect() C³B
- pc.c
- pc_move() ’ljÁB
- pc_item_steal()Apc_coin_steal() C³B
- pc.h
- pc_move() ’ljÁB
- map.h
- struct mob_data C³B
- mob.c
- mob_spawn() C³B
- mob_target() C³B
- clif.c
- clif_pcinsight()Aclif_pcoutsight() C³B
- clif_parse_ActionRequest()Aclif_parse_Emotion()A
- clif_parse_TradeRequest()Aclif_parse_CreateParty()A
- clif_parse_ReplyPartyInvite() C³B
- battle_athena.conf C³B
- conf_ref.txt C³B
- skill_db.txt
- ƒXƒeƒB[ƒ‹‚ÌŽË’ö‚ð3‚©‚ç1‚ÉC³B
- battle.hAbattle.c
- battle_config‚Ébasic_skill_check ’ljÁB
- battle_config_read() C³B
- trade.c
- trade_traderequest() C³B
- script.c
- buildin_getbasicskillcheck() ’ljÁB
- map/makefile C³B
-¦ƒXƒeƒB[ƒ‹‚ƃXƒeƒB[ƒ‹ƒRƒCƒ“‚ÌŒvŽZŽ®‚Í“K“–‚Éì‚Á‚½•¨‚Å‚·B–{ŽI‚Ì•û‚ª‚Ç‚¤‚È‚Ì‚©‘S‘R‚í‚©‚ç‚È‚¢‚Ì‚Å...
-
- ƒXƒeƒB[ƒ‹—¦ = (ƒ‚ƒ“ƒXƒ^[‚̃AƒCƒeƒ€drop—¦ * (ƒLƒƒƒ‰ƒŒƒxƒ‹*0.5 + dex*0.4 +ƒXƒLƒ‹ƒŒƒxƒ‹*5))%
- ƒXƒeƒB[ƒ‹ƒRƒCƒ“—¦ = (ƒXƒLƒ‹ƒŒƒxƒ‹ + (ƒLƒƒƒ‰ƒŒƒxƒ‹ - ƒ‚ƒ“ƒXƒ^[‚̃Œƒxƒ‹)*0.3 + dex*0.2 + luk*0.2)%
- ƒXƒiƒbƒ`ƒƒ[”“®—¦ = (5.5 + ƒXƒLƒ‹ƒŒƒxƒ‹*1.5 +ƒXƒeƒB[ƒ‹‚̃XƒLƒ‹ƒŒƒxƒ‹)%
-
-–{ŽI‚ÌŒvŽZŽ®‚ª‚í‚©‚é•û‚Íî•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
-ƒXƒeƒB[ƒ‹ƒRƒCƒ“‚̃[ƒj‚̗ʂ̓‚ƒ“ƒXƒ^[‚̃Œƒxƒ‹*100‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚±‚ê‚ɂ‚¢‚Ä‚àî•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
-¦Žc‰e‚Ìꇎg‚Á‚½Œã•’Ê‚É•à‚‘O‚ɂ̓yƒbƒg‚Ì‘•”õ‚ªŒ©‚¦‚È‚¢ƒoƒO‚ª‚ ‚è‚Ü‚·‚ªŒ´ˆö‚ª‚í‚©‚ç‚È‚¢‚Ì‚Å•ú’u‚·‚邱‚Æ‚É‚µ‚Ü‚µ‚½B
-¦Šî–{ƒXƒLƒ‹‚ª‘«‚è‚È‚¢Žžo‚郃bƒZ[ƒW‚Í–w‚LJ‚킹‚Ä‚¢‚Ü‚·‚ªƒp[ƒeƒB‚É“ü‚鎞‚ÉŠî–{ƒŒƒxƒ‹‚ª‘«‚è‚È‚¢Žž‚ɇ‚¤•¨‚ª‚È‚©‚Á‚½‚̂Ńp[ƒeƒB‚ðì‚ê‚È‚¢(Šî–{ƒXƒLƒ‹ƒŒƒxƒ‹7‚Ì•¨)‚Æ•\Ž¦‚µ‚ÄŠ©—U‚µ‚½•û‚É‚Í‹‘₳‚ꂽ‚Æ•\Ž¦‚³‚ê‚Ü‚·B
-
---------------
-//0496 by hoenny
-
-DWZ‚̃ƒeƒIƒXƒg[ƒ€ŽÀ‘•
-DƒXƒeƒB[ƒ‹ƒRƒCƒ“C³
- db/skill_db.txt
- ƒƒeƒIƒXƒg[ƒ€C³
- map/pc.c
- pc_coin_steal()C³
- map/skill.c
- skill_castend_pos2()C³
-
---------------
-//495 by nini
-
-EAR‚ª•ÐŽè•€A—¼Žè•€‚Å‚µ‚©”“®‚µ‚È‚©‚Á‚½‚Æ‚±‚ëC³¨•ÐŽè•€A—¼Žè•€A“ÝŠí
- map/skill.c
- skill_check_condition()@C³
-
-‘O‰ñC³‚Ì‚Æ‚«“ÝŠí“ü‚ê–Y‚ê‚Ä‚½‚悤‚Å‚·B
-
---------------
-//0494 by Ž‚Žqo^.^o
-
-conf/mpc_warp.txt
-Dƒnƒ“ƒ^ˆê“]E’no‚Ä‚¢‚È‚¢C³
-
---------------
-//0493 by ”g˜Q
-
-EscriptC³
- npc_town_comodo.txt ƒRƒ‚ƒhˆÄ“à—vˆõ•”•ª‚ðíœ(npc_town_guide.txt‚Æd•¡‚µ‚Ä‚¢‚½‚Ì‚Å)
- npc_town_guide.txt ƒWƒ…ƒm[ˆÄ“à—vˆõ‚ð’ljÁ(viewpoint‚ÌF‚ªc)
- npc_town_kafra.txt ƒWƒ…ƒm[ƒJƒvƒ‰•”•ª‚ðnpc_town_yuno.txt‚©‚çˆÚ“®
- npc_town_refine.txt ƒWƒ…ƒm[¸˜BŠ•”•ª‚ðnpc_town_yuno.txt‚©‚çˆÚ“®
- npc_town_yuno.txt ˆÄ“à—vˆõ‚ƃJƒvƒ‰‚Ƹ˜BŠ•”•ª‚ðíœ
- npc_turtle.txt ‰ï˜b‚ð”÷C³
-
---------------
-//0492 by Kalen
-
-EscriptC³+’ljÁ
-
- conf/npc_event_doll.txt (V‹K)
- conf/npc_turtle.txt (V‹K)‹T“‡ŠÖ˜ANPC+‹T“‡ƒNƒGƒXƒg(qŠC“úŽ)’ljÁ
-
- conf/npc_event_skillget.txt (C³)‰ž‹}ˆ’u‚Ì•s‹ï‡+‚Ö‚ñ‚Ètabíœetc..
- conf/npc_town_alberta.txt (C³)Turtle•ª—£A‚¿‚Ñ‚ÁŽqíœ(Event_doll‚ÖˆÚ“®)
- conf/npc_town_guide.txt (C³)‘䎌‚ª‚©‚È‚è•ÏX‚³‚ê‚Ä‚¢‚½‚Ì‚ÅAC³
-
-
---------------
-//0491 by Ž€_
-
-EƒXƒLƒ‹Žc‰e(ŠØ‘ƒNƒ‰ƒCƒAƒ“ƒg‚Å‚Í‹|gœ[‰e)ŽÀ‘•B(‚½‚¾‹C’e‚̃`ƒFƒbƒN‚Í‚µ‚Ä‚Ü‚¹‚ñB)
- pc.h
- pc.c
- pc_can_reach() ’ljÁB
- skill.c
- skill_check_condition()Askill_castend_pos2() C³B
- skill_db.txt
- Žc‰eC³B
-Escript.c
- set_posword() C³B
-¦ˆêl‚ŃeƒXƒg‚ÍÏ‚ñ‚Å‚¢‚Ü‚·‚ª‘¼‚Ìl‚ɳ‚µ‚Œ©‚¦‚é‚©‚Ç‚¤‚©‚Í–¢Šm”F‚Å‚·B
-•Ï‚È‚Ì‚©‚Ç‚¤‚©•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
-
---------------
-//0490 by nabe
-
-EꊃXƒLƒ‹ƒGƒtƒFƒNƒg‚Ń}ƒbƒvŽI‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚Á‚½‚Ì‚ðC³B
- clif.c
- clif_skill_poseffect()‚Ì
- unsigned char buf[16];‚ðAunsigned char buf[32];‚ÉC³B
-
---------------
-//0489 by Ž€_
-
-E0483‚̃oƒOC³Bbattle_athena.conf‚Ìquest_skill_learn‚ª³‚µ‚“K—p‚³‚ê‚é‚悤‚É•ÏX‚Æ–â‘肪‚ ‚Á‚½•”•ª‚ÌC³B(ƒeƒXƒgÏ‚Ý)
- pc.c
- pc_calc_skilltree()Apc_skill() C³B
- atcommand.c
- @lostskill ‚µC³B
-EƒJ[ƒh‚ÌŽg—p‚É‚æ‚éƒ}ƒbƒvŽIƒ_ƒEƒ“‚ð–h‚®‚½‚ß‚É‚µC³B(‚½‚¾ƒJ[ƒh‚ÌŽg—p‚É‚æ‚éƒ}ƒbƒvŽIƒ_ƒEƒ“‚ðÄŒ»‚Å‚«‚È‚©‚Á‚½‚Ì‚Å–{“–‚ÉŽ¡‚Á‚½‚©‚Ç‚¤‚©‚Í•s–¾...Š¾)
- pc.c
- pc_insert_card() C³B
-Epc.h
- pc_ishiding() C³B
-
---------------
-//0488 by hoenny
-
-ERG‚̃XƒeƒB[ƒ‹ƒRƒCƒ“ŽÀ‘•
-EƒXƒeƒB[ƒ‹C³
-(“ñƒXƒLƒ‹ŠFˆê“xƒXƒ`[ƒ‹‚µ‚½ê‡‚Ü‚½ƒXƒ`[ƒ‹‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢.‚»‚µ‚ăXƒLƒ‹¬Œ÷‚ÌŽžƒ‚ƒ“ƒXƒ^[‚ÍUŒ‚‚·‚é‚悤‚ÉC³‚µ‚½.ƒGƒtƒFƒNƒg‚ͬŒ÷‚ÌŽž‚¾‚¯o‚é‚悤‚ÉC³‚µ‚½.)
- db/skill_db.txt
- ƒXƒeƒB[ƒ‹ƒRƒCƒ“C³
- map/pc.h
- pc_coin_steal()’ljÁ
- map/pc.c
- pc_coin_steal()’ljÁ
- pc_item_steal()C³
- map/skill.c
- skill_castend_nodamage_id()C³
-
---------------
-//0487 by hoenny
-
-E485‚Ì–â‘è“_‚¿‚å‚Á‚ÆC³
- map/pc.c
- pc_item_steal()C³
- map/skill.c
- skill_castend_nodamage_id()C³
-
---------------
-//0486 by Ž‚Žqo^.^o
-
-db/class_equip_db.txtC³
-—ô‚¯‚½‘å’n‚Ì‘A”R‚¦‚鑾—z‚Ì‘AŠ£‚¢‚Ä‚é•—‚Ì‘AàÒŽ¦˜^AƒvƒŠ[ƒXƒg‚Í‘•”õ‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢–â‘èC³
-
---------------
-//0485 by hoenny
-
-E RG‚̃Xƒiƒbƒ`ƒƒ[ŽÀ‘•
-E ƒXƒeƒB[ƒ‹C³
-E ˜I“XŠJÝ‚ÌŽž skill_check_condition‚Åó‘Ô‚ðƒ`ƒFƒN‚·‚é‚悤‚ÉC³
- map/pc.h
- pc_ishiding()’ljÁ
- pc_item_steal()’ljÁ
- map/pc.c
- pc_item_steal()’ljÁ
- map/skill.c
- skill_castend_nodamage_id()C³
- skill_additional_effect()C³
- skill_check_condition()C³
-
---------------
-//0484 by ŒÓ’±—–
-
-EŠo‚¦‚Ä‚È‚¢ƒNƒGƒXƒgƒXƒLƒ‹‚ɃXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðU‚ê‚é–â‘èC³
- pc.c
- pc_calc_skilltree()‚ŃNƒGƒXƒgƒXƒLƒ‹‚̃`ƒFƒbƒN’ljÁ
- skill.c
- skill_readdb()‚Åinf2‚ð“ǂނ悤‚ÉC³
-
-EƒyƒRƒyƒR‹RæAƒtƒ@ƒ‹ƒRƒ“‚̃AƒCƒRƒ“‚ªƒƒOƒCƒ“’¼Œã‚É‚Í•\Ž¦‚³‚ê‚È‚¢–â‘èC³
- clif.c
- clif_parse_LoadEndAck()C³
-
---------------
-//0483 by Ž€_
-
-E0482‚Ì“K—pB
- npc_event_skillget.txt C³B
- script.c C³B
- skill.c C³B
- pc.c C³B
-
---------------
-//0482 by ŒÓ’±—–
-
-EƒNƒGƒXƒgƒXƒLƒ‹‚̃XƒNƒŠƒvƒg‚µC³
-EƒXƒNƒŠƒvƒggetskilllv‚ðŒÄ‚Ԃƃ}ƒbƒvƒT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³
- (conf/)
- npc_event_skillget.txt
- o—ˆ‚邾‚¯•Ï”‚ðŽg‚í‚È‚¢‚悤‚ÉC³i–¢ƒeƒXƒgj
- (map/)
- script.c
- buildin_getskilllv()C³
-
-EƒXƒeƒB[ƒ‹‚ÅŽ¸”sŽž‚̃GƒtƒFƒNƒg•ÏX
-E“¯‚¶MOB‚É‚Í‚P‰ñ‚µ‚©ƒXƒeƒB[ƒ‹‚Å‚«‚È‚¢‚悤‚ÉC³
- (map/)
- skill.c
- skill_castend_nodamage_id()C³
- map.h
- struct mob_data‚Ésteal_countƒƒ“ƒo’ljÁ
- mob.c
- mob_spawn()C³Asteal_count‚ð0‚ɉŠú‰»‚·‚é‚悤‚É
-
-EƒCƒhƒDƒ“‚Ì—ÑŒç‚ÅHP‚ª32767‚ð’´‚¦‚é‚ƃT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³i–¢ƒeƒXƒgj
- (map/)
- pc.c
- pc_calcstatus()C³
-
---------------
-//0481 by Ž€_
-
-E‚±‚ê‚Ì“K—p‚É‚Í‹C‚ð‚‚¯‚Ä‚‚¾‚³‚¢B0478‚̌Ӓ±—–‚³‚ñ‚Ì•¨‚ð Athena.txt‚̃f[ƒ^Œ`Ž®•ÏX‚¹‚¸‚ɃNƒFƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚é‚悤‚Éì‚Á‚½•¨‚Å‚·BŽ©•ª‚ªì‚Á‚Ä‚éÅ’†‚ɌӒ±—–‚³‚ñ‚ª“¯‚¶•¨‚ðƒAƒbƒv‚µ‚Ä‚‚ꂽ‚Ì‚Å‚·‚ªƒf[ƒ^‚Í•Ï‚¦‚È‚¢•û‚ª‚¢‚¢‚ÆŽv‚Á‚ÄŽ©•ª‚Ì•¨‚àƒAƒbƒv‚µ‚Ü‚µ‚½B’ˆÓ‚·‚邱‚Æ‚Í0478‚Ìathena.txt‚ÍŽg‚¦‚È‚¢‚ÆŒ¾‚¤‚±‚Æ‚Å‚·B0478‘O‚Ì•¨‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B
-Eskill_db.txt‚Éinf2‚ð’ljÁ‚µ‚Ä‚±‚ê‚ðŽg‚Á‚ăNƒFƒXƒgƒXƒLƒ‹‚©‚Ç‚¤‚©‚ð”»’f‚·‚éŽd‘g‚Ý‚Å‚·B
- skill.h C³B
- skill.c
- skill_readdb()C³‚Æ‚µC³B
- skill_get_inf2() ’ljÁB
- skill_db.txt C³B
- skill_tree.txt C³B(0478‘O‚Ì•¨)
- clif.c
- clif_skillinfoblock() C³B
- char.c C³B(0478‘O‚Ì•¨)
-Ebattle_athena.conf‚Équest_skill_learn’ljÁB
- battle.h C³B
- battle.c
- battle_config_read() C³B
- battle_athena.conf C³B
-E/resetskill‚ðbattle_athena.conf‚Équest_skill_learn‚ÌÝ’è‚ɇ‚킹‚Äquest_skill_learn‚ªyes‚Ìꇂ̓XƒLƒ‹ƒ|ƒCƒ“ƒg‚ɉÁŽZ‚µ‚Äquest_skill_learn‚ªno‚Ȃ烊ƒZƒbƒg‚Í‚³‚ê‚邪ƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ɉÁŽZ‚³‚ê‚Ü‚¹‚ñB
- pc.c
- pc_skill()Apc_resetskill() C³‚Æ‚µC³B
- pc.h C³B
- atcommand.c C³B
- atcommnad_athena.conf C³B
-EƒXƒNƒŠƒvƒg‚ÌskillƒRƒ}ƒ“ƒh‚ŃNƒGƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚ç‚ê‚é‚Ì‚Í“¯‚¶‚Å‚·‚ªÅŒã‚̃tƒ‰ƒO‚ª2‚©‚ç0‚É•Ï‚í‚Á‚Ä‚Ü‚·‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
- npc_test_skill.txt C³B
- npc_event_skillget.txt C³B
- conf_ref.txt C³B
- client_packet.txt C³B
-
---------------
-//0480 by Kalen
-
-EEventskill’ljÁ
- conf/npc_event_skillget.txt
-
-Emap_athena.conf•ÏX
- warp.txt‚Ì“Ç‚Ýž‚Ý—Dæ“x‚ð•ÏX
- prt_castle“™A‹ŒEP‚̃[ƒv‚ƈقȂéꊂɕÏX‚³‚ꂽê‡
- æ‚É“Ç‚Ýž‚ñ‚¾•û‚ª—D悳‚ê‚é‚Ì‚ÅAEP‚Ì‚‚¢‡‚Ì‚ª‚æ‚낵‚¢‚©‚Æ
- conf/map_athena.conf
-
---------------
-//0478 by ŒÓ’±—–
-
-***
- Athena.txt‚̃f[ƒ^Œ`Ž®•ÏX!! (Ž©“®“I‚É•ÏŠ·‚³‚ê‚Ü‚·)
- ƒoƒbƒNƒAƒbƒv‚ð–Y‚ꂸ‚É!
- Data format of athena.txt is changed!! (convert automatically)
- DONT FORGET BACKUP!!
-***
-
-EƒNƒGƒXƒgƒXƒLƒ‹ŽÀ‘•
-EƒXƒNƒŠƒvƒg‚ŃXƒLƒ‹ƒŒƒxƒ‹‚ðƒ`ƒFƒbƒN‚Å‚«‚é‚悤‚É
- EƒXƒNƒŠƒvƒg‚ÌskillƒRƒ}ƒ“ƒh‚ŃNƒGƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚ç‚ê‚Ü‚·B
- Žg—p•û–@„ skill ƒXƒLƒ‹ID,ƒXƒLƒ‹LV[,ƒtƒ‰ƒO]
- ƒtƒ‰ƒO‚ÍÈ—ª‰Â”\‚ÅAÈ—ª‚·‚é‚Æ‚P‚ðŽw’肵‚½‚±‚Æ‚É‚È‚è‚Ü‚·B
- ‚P‚Å‘•”õ•i‚É‚æ‚éˆêŽž“I‚ÈK“¾A‚Q‚ŃNƒGƒXƒg‚É‚æ‚éP‹v“I‚ÈK“¾‚Å‚·B
- P‹v“I‚ÈK“¾‚Ìê‡Askill_tree.txt‚Ɉˑ¶‚µ‚Ü‚·
- EgetskilllvƒRƒ}ƒ“ƒh’ljÁ
- Žg—p•û–@„ getskilllv(ƒXƒLƒ‹ID) –ß‚è’l‚̓Œƒxƒ‹‚Å‚·B0‚Å–¢K“¾B
-
- (conf/)
- npc_test_skill.txt
- ƒTƒ“ƒvƒ‹
- (db/)
- skill_tree.txt
- ƒNƒGƒXƒgƒXƒLƒ‹‚Æ‚µ‚Ä•K—vƒXƒLƒ‹ID‚É-1‚ðÝ’èB
- (char/)
- char.c
- ƒtƒ‰ƒO‚àathena.txt‚É•Û‘¶‚·‚é‚悤‚ÉB
- ˆÈ‘O‚ÌŒ`Ž®‚̃f[ƒ^‚à“Ç‚Ýž‚ß‚Ü‚·B
- (map/)
- pc.c/pc.h
- pc_skill(),pc_calc_skilltree()‚È‚ÇC³
- script.c
- buildin_skill(),buildin_getskillid()‚È‚ÇC³
-
-E@questskill,@lostskill’ljÁ
- E@questskill ƒXƒLƒ‹ID ‚ŃNƒGƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚Ü‚·B(ƒNƒGƒXƒgƒXƒLƒ‹‚Ì‚Ý)
- E@lostskill ƒXƒLƒ‹ID ‚ŃXƒLƒ‹‚ð–Y‚ê‚Ü‚·B(ƒNƒGƒXƒgƒXƒLƒ‹ˆÈŠO‚àOK)
-
- atcommand.c/atcommand.h
- struct Atcommand_Config‚Élostskill,questskillƒƒ“ƒo’ljÁ
- @questskill,@lostskillˆ—’ljÁ
-
---------------
-//0477 by nabe
-
-Eˆê•”•Ï”‚Ì錾ˆÊ’u‚Ì•ÏX‚Ì‚ÝiLinux“™‚ŃRƒ“ƒpƒCƒ‹‚µ‚â‚·‚¢‚悤‚ÉjB
- atcommand.c,battle.c,clif.c,mob.c,npc.c,skill.c
-
---------------
-//0476 by nabe
-
-Econf/ ‚¿‚å‚Á‚Æ®—
- conf/map_athena.confC³B
- tortoise.txt‚ðnpc_town_alberta.txt’†‚Ɉړ®B
- npc_script2.txt‚̃Rƒ‚ƒhƒKƒCƒh‚ðnpc_town_comodo.txt’†‚Ɉړ®B
-
-Enpc‚ªƒLƒƒƒ‰–¼‚ð’‚é‚Æ‚«‚̃oƒOC³
- map/script.c
- buildin_strcharinfo()‚ŃLƒƒƒ‰–¼—p‚̃ƒ‚ƒŠ‚ð
- static‚ÉŠm•Û‚µ‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½‚Ì‚ðAmalloc‚ÉC³B
-
---------------
-//0475 by hoenny
-
-“D–_‚̃XƒeƒB[ƒ‹ŽÀ‘•B
-ƒMƒ‹ƒh¶¬‚ÌŽžƒGƒ“ƒyƒŠƒEƒ€Á–Õ‚·‚é‚悤‚ÉC³B
- map/guild.c
- guild_create()C³B
- guild_created()C³B
- map/skill.c
- skill_castend_nodamage_id()C³B
-
---------------
-//0474 by Ž€_
-
-E0471‚̸—û‚ÌŽž•\Ž¦‚³‚ê‚镶Žš‚ÌÝ’è‚ðmap_athena.conf‚©‚çscript_athena.conf‚É•ÏXB
- script.c
- do_init_script() C³‚Æ‚µC³B
- script.h C³B
- script_athena.conf ’ljÁB
- map_athena.conf C³B
- map.c
- map_config_read() C³B
-EŒÃ‚¢Šª•¨AƒvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒXŽÀ‘•‚Æ‚µŽd—l•ÏXB
-ƒ‰ƒ“ƒ_ƒ€‚ŃAƒCƒeƒ€‚𓾂镨‚ɃfƒtƒHƒ‹ƒg‚Åo‚éƒAƒCƒeƒ€‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB¡‚ÌŽd—l‚Å‚Í1000‰ñ‚܂ŃAƒCƒeƒ€‚ª‘I‘ð‚³‚ê‚È‚©‚Á‚½‚çƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ªo‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·BƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ª0‚Ìꇂ̓AƒCƒeƒ€‚𓾂ç‚ê‚Ü‚¹‚ñB
-Ý’è‚·‚éŠm—¦‚ð*1000‚©‚ç*10000‚É•ÏXB‚½‚¾item_~.txt‚ÌC³‚Í‚â‚Á‚Ä‚¢‚Ü‚¹‚ñB’N‚©‚â‚Á‚Ä‚‚¾‚³‚¢B(‘¼—Í–{Šè)
- itemdb.c
- temdb_read_randomitem() C³B
- itemdb_searchrandomid() C³B
- item_purplebox.txt ‚©‚ç item_violetbox.txt ‚ÉC³B
- item_giftbox.txtAitem_scroll.txt ’ljÁB(move‚³‚ñ‚ ‚肪‚Æ‚¤B)
- item_db.txt
- ŒÃ‚¢Šª•¨AƒvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒX C³B
-Etrade.c
- trade_tradecommit() C³Bpc_delitem()‚ðŽg‚¤‚悤‚É•ÏXB
-¦ƒeƒXƒg‚Í‚â‚Á‚Ä‚¢‚Ü‚¹‚ñ‚Ì‚Å–â‘肪‚ ‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B
-
---------------
-//0473 by Kuro
-
-Eclass_equip_db‚ðˆê•”C³
- db/class_equip_db.txt
-
---------------
-//0471 by hoenny
-
-»˜B‚ÌŽžo‚镶‚ð•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½.(map_athena.conf‚Å’²ß‰Â”\)
-‹CŒ÷‚Ì”Žš‚ªŽsœD‚ÌŽžŽÀÛ…˜H•\Ž¦}—ÎC³
- conf/map_athena.conf
- refine_posword:’ljÁB
- map/map.c
- map_config_read()C³B
- map/script.h
- do_set_posword()’ljÁB
- map/script.c
- do_set_posword()’ljÁB
- buildin_getequipname()C³B
- map/skill.c
- skill_status_change_start()C³B
-
---------------
-//0470 by Ž€_
-
-E»‘¢‚ÌŽž‘®«Î‚ª“ñ“xŒ¸‚é–â‘èC³B(ŽÀ‚Í“ñ“xŒ¸‚é‚悤‚ÉŒ©‚¦‚邾‚¯‚Ń}ƒbƒv‚ðˆÚ“®‚·‚é‚Ƴ‚µ‚•\Ž¦‚³‚ê‚Ü‚·‚ª...)
- pc.hApc.c
- pc_delitem() C³B
- npc.cAscript.cAstorage.cApet.c
- pc_delitem()‚ð‘S‚ÄC³B
- skill.c
- skill_produce_mix() C³B
-
---------------
-//469 by ”g˜Q
-
-Enpc_mob_job.txtAnpc_monster.txtAnpc_monster30.txtAmob_db.txt‚̃‚ƒ“ƒX–¼‚ðC³
-Eitem_db.txt‚̉ñ•œƒAƒCƒeƒ€‚̉ñ•œ—Ê‚ðƒWƒ…ƒm[Œã‚Ì‚à‚Ì‚ÉC³
-
---------------
-//468 by Kuro
-
-E–‚Œ•»ìƒNƒGƒXƒg’ljÁ
- conf/npc_event_ma_sword.txt
-
---------------
-//467 by nini
-
-EBB‚ª—¼ŽèŒ•‚Å‚µ‚©”“®‚µ‚È‚©‚Á‚½‚Æ‚±‚ëC³¨‚·‚ׂĂ̕Ší‚Å
-EAR‚ª—¼Žè•€‚Å‚µ‚©”“®‚µ‚È‚©‚Á‚½‚Æ‚±‚ëC³¨•ÐŽè•€A—¼Žè•€A“ÝŠí
-EƒXƒsƒAƒNƒCƒbƒPƒ“”“®‚ð‘„‚¾‚¯‚É
-EƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹‚³‚ê‚È‚¢‚à‚̂ɃOƒ‰ƒ“ƒhƒNƒƒXAƒ[ƒO‚̃XƒgƒŠƒbƒvƒVƒŠ[ƒY’ljÁ
-EƒuƒŠƒbƒcƒr[ƒg‚ªƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹‚³‚ê‚È‚‚È‚Á‚Ä‚½“_C³
- map/skill.c
- skill_use_id()@C³
- skill_check_condition()@C³
-E2-2EƒXƒLƒ‹‚̃LƒƒƒXƒgEƒfƒBƒŒƒC’ljÁ
- db/cast_db.txt
-
-
---------------
-//466 by hoenny
-
-Eˆ¢C—…”e–PŒC³(ŒöŽ®C³‹y‚Ñ spÁ–Õ‚ª‚·‚®Œ©‚¦‚é‚悤‚É)
-E’~‹C‚ÌŽž‹C’e‚ªŒ©‚¦‚é‚悤‚ÉC³(Mr.NO NAME—l‚̃pƒPî•ñ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·.‹C’e‚ªÁ‚¦‚éƒpƒPî•ñ‚ª•s‘«‚Å‚·.)
-EƒpƒŠ‚̉H‚âƒeƒŒƒ|[ƒg1‚ð˜A‘±Žg—p‚ÌŽž,ŽIƒI[ƒo[‚ª”¶‚µ‚È‚¢‚悤‚ɉ¼‰‚ß‚ÅC³
- doc/client_packet.txt
- 0x1e1ƒpƒPî•ñ’ljÁ
- map/battle.c
- battle_calc_weapon_attack()C³
- map/clif.h
- clif_spiritball_cre()’ljÁ
- clif_spiritball_del()’ljÁ
- map/clif.c
- packet_len_table[]C³
- clif_spiritball_cre()’ljÁ
- clif_spiritball_del()’ljÁ
- clif_changemap()C³
- map/skill.c
- skill_castend_nodamage_id()C³
- skill_check_condition()C³
-
---------------
-//0465 by Ž€_
-
-EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ƃnƒCƒfƒBƒ“ƒOAƒuƒŠƒbƒcƒr[ƒg‚̃oƒOC³B(ƒuƒŠƒbƒcƒr[ƒg‚Í•ñ‚Í‚È‚©‚Á‚½‚Ì‚Å‚·‚ª•ªÍ‚µ‚½‚ç–â‘肪‚ ‚Á‚½‚Ì‚ÅC³B)
- skill.c
- skill_use_id() C³B
- skill_castend_nodamage_id() C³B
-E0455‚ÌNPC‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B
- npc_event_ice.txt C³B
- npc_event_potion.txt C³B
- npc_town_geffen.txt C³Bi454‚Ì•¨‚É–ß‚µ‚Ü‚µ‚½Bj
-E0451‚̃¿ƒ}ƒbƒv‚ðƒRƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½B•K—v‚È•û‚̓Rƒ}ƒ“ƒgƒAƒEƒg‚ð‚È‚‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B
- map_athena.conf C³B
-EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚Í0442‚Ì–â‘è‚ŃnƒCƒfƒBƒ“ƒOAƒuƒŠƒbƒcƒr[ƒg‚Í0445‚Ì–â‘è‚Å‚µ‚½B‚»‚ê‚Æ0445‚ÌC³‚ŃXƒLƒ‹”Ô†‚ðenum‚Å錾‚µ‚½•¶Žš‚É•Ï‚¦‚Ä‚¢‚Ü‚·‚ª‚»‚ê‚É—Ž‚Æ‚µ‚ª‚ ‚é‚悤‚Å‚·B(ƒnƒCƒfƒBƒ“ƒOAƒuƒŠƒbƒcƒr[ƒg‚Í‚»‚Ì‚¹‚¢‚Å‚µ‚½B)‘O‚̔Ԇƒ\[ƒX‚Æ”ä‚ׂĖâ‘肪‚ ‚é•”•ª‚ÍC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚¿‚å‚Á‚Æ–Ê“|‚Å‚·‚ª...
-
---------------
-//464 by ”g˜Q
-
-Eƒ‚ƒ“ƒNƒXƒLƒ‹‚Ì•”•ª‚ɂ‚¢‚ÄC³(–¢ŽÀ‘•ƒXƒŒ‚É‘‚©‚ê‚Ä‚¢‚½‚à‚Ì‚ð’ljÁ‚µ‚½‚¾‚¯‚Å‚·B
- skill.c
- skill_use_id()C³
- cast_db.txt
- ƒ‚ƒ“ƒNƒXƒLƒ‹’ljÁ
-
---------------
-//463 by ŒÓ’±—–
-
-E462‚̃oƒOC³
- ENPC‚ÌSHOP‚Ì•s“s‡C³
- EREADME‚̊ԈႢC³iwarpwaitingpc‚ªwarpwaitingroom‚É‚È‚Á‚Ä‚¢‚½j
-
- map.h
- struct npc_data‚Ìchat_id‚̈ʒu‚ðC³
-
---------------
-//462 by ŒÓ’±—–
-
-ENPCƒ`ƒƒƒbƒgì¬
- Ewaitingroom–½—ß‚ÅNPCƒ`ƒƒƒbƒg‚ð쬂µ‚Ü‚·B
- ˆø”‚Í waitingroom "ƒ`ƒƒƒbƒg–¼",§ŒÀl”,ƒCƒxƒ“ƒg–¼ ‚Å‚·B
- ƒCƒxƒ“ƒg–¼‚Íl”‚ªÅ‘å‚É‚È‚Á‚½‚Æ‚«‚É‹N‚±‚·ƒCƒxƒ“ƒg–¼‚ÅAÈ—ª‰Â”\B
- Ewarpwaitingpc–½—ß‚ÅAƒ`ƒƒƒbƒg“à‚É‚¢‚éPC‘Sˆõ‚ðƒ[ƒv‚Å‚«‚Ü‚·B
- ˆø”‚Íwarp‚Æ“¯‚¶‚ÅAwarpwaitingpc "ƒ}ƒbƒv–¼",x,y ‚Å‚·B
-
- map.h
- struct npc_data‚Æchat_data‚ðC³
- script.c
- buildin_waitingroom(),buildin_warpwaitingpc()’ljÁ
- chat.c/chat.h
- FXC³
- clif.c
- clif_getareachar_npc()Aclif_joinchatok()‚È‚ÇC³
-
-ENPC‚ÌOnInitƒCƒxƒ“ƒg‚ðƒT[ƒo[‹N“®Žž‚ɌĂԂ悤‚ÉB
-EƒGƒNƒXƒ|[ƒg‚·‚é‚Æ‚«‚ÌNPC–¼‚Æ•\Ž¦ã‚ÌNPC–¼‚ð•ÊX‚ÉÝ’è‰Â”\‚ÉB
- E“¯‚¶NPC–¼‚̃Cƒxƒ“ƒg‚Íd•¡‚Å‚«‚È‚¢‚½‚ßAƒGƒNƒXƒ|[ƒg—pNPC–¼‚ðŽg‚¢A
- “¯‚¶NPC–¼‚Å‚à•Ê‚ÌNPC‚Æ‚µ‚ÄŽ¯•Ê‚Å‚«‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
- (‚à‚¿‚ë‚ñAƒCƒxƒ“ƒgˆ—‚ðs‚í‚È‚¢ê‡‚Í‚»‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB)
- Enpc_*.txt‚Ìscript–½—ß‚ÅNPC‚Ì–¼‘O‚ðÝ’è‚·‚é‚Æ‚«A
- u•\Ž¦–¼::ƒGƒNƒXƒ|[ƒg–¼v‚Æ‚·‚é‚ÆA•\Ž¦‚·‚é–¼‘O‚ÆAƒCƒxƒ“ƒg—p‚É
- ƒGƒNƒXƒ|[ƒg‚·‚é–¼‘O‚ð•ÊX‚ÉŽw’è‚Å‚«‚Ü‚·B
- •\Ž¦–¼‚ª‘S‚“¯‚¶•ÊX‚ÌNPC‚ŃCƒxƒ“ƒg‚ð“®ì‚³‚¹‚é‚Æ‚«‚ÉŽg—p‚µ‚Ü‚·B
- E‚â‚₱‚µ‚¢‚Ì‚ÅPVP‚ÌnpcƒXƒNƒŠƒvƒg‚ðŒ©‚ÄƒCƒ[ƒW‚ð’Í‚ñ‚Å‚‚¾‚³‚¢B
-
- npc.c/npc.h
- npc_parse_*()‚ÌC³
- npc_event_do_oninit(),npc_event_do_oninit_sub()‚ȂǒljÁ
- map.c/map.h
- do_init()‚Ånpc_event_do_oninit()‚ðŒÄ‚Ԃ悤‚É
- struct npc_dataC³
-
-EƒXƒNƒŠƒvƒggetmapusersAgetareausers‚Ì’v–½“I‚ȃoƒOC³
- EŠY“–ƒ}ƒbƒv‚ª‘¶Ý‚µ‚È‚¢ê‡Aƒ}ƒbƒvƒT[ƒo[‚ª—Ž‚¿‚é‚Ì‚ðC³B
- Eƒ}ƒbƒv‚ª‘¶Ý‚µ‚È‚¢‚ÆA-1‚ð•Ô‚·‚悤‚É‚µ‚½B
-
- script.c
- buildin_getmapusers(),buildin_getareausers()C³
-
-Epvp‚̃XƒNƒŠƒvƒgC³
- Eƒ`ƒƒƒbƒgƒ‹[ƒ€‚ðì‚é‚悤‚É‚µ‚½
-
- (conf/)
- npc_pvproom.txt
- ‘S‚Ä‚ÌNPC‚̃GƒNƒXƒ|[ƒg–¼(pvp??r)Ý’è
- OnInit:‚Åwaitingroom‚ðŽÀs‚·‚é‚悤‚É
-
---------------
-//461 by Kuro
-EƒAƒRƒ‰ƒCƒg“]EƒNƒGƒXƒgˆê•”C³
- conf/npc_job_aco.txt
-
---------------
-//460 by sagitarius
-Eitem_db‚̊ԈႢC³
- 4032,Ambernite_Card,ƒAƒ“ƒo[ƒiƒCƒgƒJ[ƒh,6,20,,10,,2,,,,,32,,,,{},{},,C³
-
---------------
-//459 by hoenny
-EƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…Žg—p‚ÌŽž•€ƒ`ƒFƒbƒN(Ž©•ª‚¾‚¯)
-EOld_Blue_Box‚ÌŠm—¦‚ª‚‚¢‚Æ‚¢‚¤•ñ‚É‚æ‚Á‚ÄC³
-EScript.c‚Í0455ˆÈ‘O‚±‚ƂňøŠ·(NPC‚ð‚±‚±‚ɇ‚킹‚ÄC³‚µ‚Ä‚‚¾‚³‚¢)
-Eˆ¢C—…”e–PŒC³(ŒöŽ®‚ðC³‚µ‚½‚ñ‚Å‚·‚ª, ³Šm‚©‚Í‚æ‚•ª‚©‚ç‚È‚¢‚Å‚·‚Ë.)
-EC“¹‘m‚Ì’~‹C,”šŠú‚̉¼ŽÀ‘•.(ˆ¢C—…”e–PŒŽg—p‚ÌŽž’~‹C,”šŠúó‘Ô‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·. )
-EƒyƒRƒyƒR‚Éæ‚Á‚½Œã‚ÉAADPD‚ªŠÔˆá‚Á‚½‚±‚ÆC³(ƒoƒO‚𒼂µ‚Ä‚ ‚°‚½‚ª, ’¼‚·‘O‚±‚Æ‚É•Ï‚í‚邹‚¢‚Å‚Ü‚½C³)
-‚»‚ÌŠO‚É‚àC³‚ð‚µ‚½‚悤‚È‚Ì‚ÉŠo‚¦‚È‚¢‚Å‚·‚Ë.‚»‚µ‚ÄŒë‚Á‚½•”•ª‚ª‚ ‚ê‚ÎŽw“E‚µ‚Ä‚‚¾‚³‚¢.
- conf/npc_event_ice.txt
- checkweightC³
- conf/npc_town_geffen.txt
- checkweightC³
- db/item_purplebox.txt
- Old_Blue_BoxC³
- map/battle.c
- battle_calc_weapon_attack()C³
- map/pc.c
- pc_spheal()C³
- pc_calcstatus()C³
- map/script.c
- buildin_checkweight()C³
- map/skill.h
- SC_ EXPLOSIONSPIRITS’ljÁ
- map/skill.c
- SkillStatusChangeTable[]C³
- skill_castend_nodamage_id()C³
- skill_check_condition()C³
-
---------------
-//458 by Kuro
-EƒAƒRƒ‰ƒCƒg“]EƒNƒGƒXƒg’ljÁ
- conf/npc_job_aco.txt
- ‰ï˜b•¶‚ª•ª‚©‚ç‚È‚©‚Á‚½‚Ì‚Å“K“–‚É‚µ‚Ä‚ ‚è‚Ü‚·B‚Ü‚½ANPC‚ÌŠOŒ©‚Ì•Ï‚¦•û‚ª•ª‚©‚ç‚È‚©‚Á‚½‚Ì‚Å“K“–‚É‚µ‚Ä‚ ‚è‚Ü‚·B
- •ª‚©‚é•û‚ÍC³‚µ‚Ä‚¨‚¢‚ĉº‚³‚¢B
-
---------------
-//0457 by Kalen
-
-EPVPŠÖ˜A‚ÌNPC’ljÁ
- conf/npc_pvp.txt
- conf/npc_pvproom.txt
-
---------------
-//0456 by Ž€_
-
-Eƒ‚ƒ“ƒXƒ^[‚ÌʼnUŒ‚ŽžŠÔ‚ª’·‚·‚¬‚é–â‘èC³B
-ƒ‚ƒ“ƒXƒ^[‚ÌʼnUŒ‚ŽžŠÔ‚ð¡‚Ü‚Å‚Ímob_db‚ÌaDelay‚ðŽg‚Á‚Ä‚¢‚Ü‚µ‚½‚ª‚±‚ê‚ðaMotion‚É•ÏX‚µ‚Ü‚µ‚½B¡‚Ü‚Å‚Ímob_db‚ÌaMotion‚̓Sƒ~‚Å‚µ‚½‚ª¡“x‚©‚ç‚̓Sƒ~‚Å‚Í‚ ‚è‚Ü‚¹‚ñBaMotion‚³‚¦³‚µ‚¯‚ê‚΃‚ƒ“ƒXƒ^[‚ÌUŒ‚‚̃‚[ƒVƒ‡ƒ“‚Ì‘O‚Ƀ_ƒ[ƒW‚ªo‚Ä‚‚é–â‘è‚à‚È‚‚È‚é‚Í‚¸‚Å‚·B
- mob.c
- mob_changestate() C³B
-EƒAƒCƒeƒ€‚ð“üŽè‚Å‚«‚È‚¢Žž‚»‚Ì——R‚É“–‚½‚郃bƒZ[ƒW‚ªo‚é‚悤‚É•ÏXB
- pc.c
- pc_additem() C³B
-Ejob_db1.txt‚Ì‚Å–â‘è‚É‚È‚Á‚½.‚ð,‚ÉC³B
-
---------------
-//455 by Mr.NO NAME
-ENPC‚Ƃ̃AƒCƒeƒ€ŒðŠ·‚┃‚¢•¨ŠÖŒW‚ÌScript‚ªo—ˆã‚ª‚Á‚½“–‰‚Ì
-@NPCƒf[ƒ^(npc_event_making.txtAnpc_town_geffen.txt“™)‚Éæ‚ÁŽæ‚èAˆÈ‰º‚ðC³B
- conf/npc_event_ice.txt
- npc_event_potion.txt
- npc_town_geffen.txti454ˆÈ‘O‚Ì•¨‚É–ß‚µ‚Ü‚µ‚½Bj
- map/script.c
- buildin_checkweight()‚ðC³B
-
---------------
-//454 by Kuro
-EƒQƒbƒtƒFƒ“’b–艮‚Å”ƒ‚¢•¨‚ªo—ˆ‚é‚悤‚ÉC³
- conf/npc_town_geffen.txt
-
---------------
-//0451 by code
-E ¡X‚Å‚·‚ªƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚ɑΉž(ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚Ìdata.grf‚ðadata.grf‚Æ‚µ‚Ägrf-files.txt‚Ìadata‚Ì‚Æ‚±‚ë‚É‘‚¢‚Ä‚‚¾‚³‚¢)
- common/grfio.c
- grfio_setadatafile()’ljÁ
- /grfio.h
- grfio_setadatafile()’ljÁ
- conf/map_athena.conf
- ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚̃}ƒbƒv‚ð“Ç‚Ýž‚ނ悤‚É•ÏX
- /npc_warp_a.txt
- ƒ¿ƒ}ƒbƒv‚̃[ƒvƒ|ƒCƒ“ƒg‚ÌÝ’è(‚¿‚å‚Á‚Æ‚¸‚ê‚Ä‚é‚©‚à)
- /grf-files.txt
- ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚Ìdata.grf‚ðadata.grf‚Æ‚µ‚Ä“Ç‚Ýž‚ނ悤‚ÉÝ’è
- adata: ‚É‹Lq
-¦ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚Í
-@ttp://www.castledragmire.com/ragnarok/
-@‚ ‚½‚è‚©‚ç“üŽè‚µ‚Ä‚‚¾‚³‚¢B
-
---------------
-//0450 by hoenny
-E ‹R•ºC—ûŽÀ‘•
-E ƒRƒ€ƒpƒ‹ƒVƒ‡ƒ“ƒfƒBƒXƒJƒEƒ“ƒgŽÀ‘•
-E ƒfƒBƒXƒJƒEƒ“ƒgEƒI[ƒo[ƒ`ƒƒ[ƒWC³(”‚ª‚‚¢ê‡ŒvŽZ–@‚ªŠÔˆá‚Á‚½‚±‚Ƃ𒼂µ‚Ü‚µ‚½.)
-E “SŒC³(‘fŽè‚ÈŽž‚à“K—p‚³‚ê‚é‚悤‚É)
-E •€C—ûC³(•ÐŽè•€‚ÈŽž‚à“K—p‚³‚ê‚é‚悤‚É)
-E ƒ{ƒ“ƒSƒ“‚ªUŒ‚‚·‚é‚悤‚ÉC³
- map/pc.c
- pc_calcstatus()C³
- pc_modifybuyvalue()C³
- pc_modifysellvalue()C³
- map/battle.c
- battle_addmastery()C³
- db/mob_db.txt
- ƒ{ƒ“ƒSƒ“C³
-
---------------
-//0449 by Ž€_
-
-E•Ï‚É‚È‚Á‚½ŠC³B
- const.txt
- bAtk‚ÆbDef ’ljÁB
- battle.c
- battle_calc_weapon_attack()‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B(0445‚Ì•¨)
- map.h
- map_session_data‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B(0445‚Ì•¨)
- pc.c
- pc_calcstatus() C³B
- pc_bonus() C³B
- item_db.txt‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B(0446‚Ì•¨)
-
---------------
-//0448 by hoenny
-E‘‘¬C³(pc_walk()‚©‚ç pc_calcstatus()‚Ɉړ®)
-Eő劎—ÊC³
- map/pc.c
- pc_calcstatus()C³B
-
---------------
-//0447 by ‚䂤
-E“ñ“—¬E–î‚Ì‘®«‚𳂵‚“K‰ž
-EATK‚Ìオ‚éƒJ[ƒh‚ÌŒø‰Ê‚ð•ŠíƒTƒCƒYC³‚È‚µ‚Ì’êã‚°‚É•ÏX
-EATKEDEF‚Ìオ‚éƒJ[ƒh‚ÌŒø‰Ê‚Ì“K‰ž‚ÌŽd•û‚ð•ÏX
-
-map.h
- map_session_data‚Écatk(ƒJ[ƒhATK)‚ð’ljÁ
-
-pc.c
- pc_calcstatus()
- ƒAƒTƒVƒ“‚Ì“ñ“—¬‚ÌUŒ‚‘¬“x‚ðC³‚µ‚½
- ƒXƒNƒŠƒvƒg‚É‚æ‚é‘®«‚ð¶‰E³‚µ‚“K‰ž‚·‚é‚悤‚É‚µ‚½
- –î‚Ì‘®«‚𳂵‚“K‰ž‚·‚é‚悤‚É‚µ‚½i‹|‚Ì‘®«—Dæj
- ‚½‚¾‚µA–‚·‚ׂĂÌUŒ‚‚É“K‰ž‚³‚ê‚Ü‚·
- ƒJ[ƒhATK‚̈—‚ð’ljÁ‚µ‚½
-
-battle.c
- battle_calc_weapon_attack()
- ƒJ[ƒgATK‚ð’êã‚°ƒ_ƒ[ƒW‚Æ‚µ‚ÄŒvŽZ‚·‚é‚悤‚É‚µ‚½
-
-item_db.txt
- ƒJ[ƒh‚Ì bonus bAtkAbDef ‚ðíœ
- ‚©‚í‚è‚ÉA‘•”õ‚Æ“¯—l‚ÉATK‚ÆDEF‚ðÝ’è
- i•ÏX‘O‚ðitem_db2.txt‚Æ‚µ‚Ä‚¢‚é‚Ì‚ÅA•s‹ï‡‚ª‚ ‚ê‚Ζ߂µ‚Ä‚‚¾‚³‚¢j
-
-
---------------
-//0446 by hoenny
-Eƒ~ƒXƒgƒŒƒXƒJ[ƒhŽÀ‘•B
-EƒXƒLƒ‹Žg—p‚ÌŽžƒWƒFƒ€ƒXƒg[ƒ“Á”ïB
-EƒXƒLƒ‹Žg—p‚ÌŽž‘•”õƒ`ƒFƒbƒNB(ƒnƒ“ƒ}[ƒtƒH[ƒ‹‚¾‚¯C³‚µ‚悤‚Æ‚µ‚½‚ª...)
-Eƒnƒ“ƒ}[ƒtƒH[ƒ‹‚͈̔͂𠔼Œa5ƒZƒ‹(‘S25ƒZƒ‹)ƒC³
- map/skill.c
- skill_check_condition()C³B
- skill_castend_pos2()C³B
-
-Eƒ~ƒXƒgƒŒƒXƒJ[ƒhC³B
- db/item_db.txt
-
---------------
-//0445 by Aya
-
-EŠî–{ASPD‚ÆŒvŽZˆ—‚ðC³B
- db/job_db1.txt
- map/pc.c
-ESPŒW”‚ÆŒvŽZˆ—‚ðC³B
- db/job_db1.txt
- map/pc.c
-EƒXƒLƒ‹–¼‚ðenum‚Å錾‚µA‚»‚ê‚ðŽg‚¤‚悤‚É•ÏXB
- map/skill.h
- map/battle.c
- map/pc.c
- map/skill.c
-EƒŠƒJƒoƒŠ[‚̃XƒLƒ‹ID‚ªƒXƒ[ƒ|ƒCƒYƒ“‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³B
- map/skill.c
-EW’†—ÍŒüã‚ɃJ[ƒhŒø‰Ê‚ª“K—p‚³‚ê‚Ä‚¢‚½–â‘è‚ÌC³B
- map/pc.c
-EƒŠƒ€[ƒuƒgƒ‰ƒbƒvAƒXƒvƒŠƒ“ƒOƒgƒ‰ƒbƒvAƒ|ƒCƒYƒ“ƒŠƒAƒNƒg‚̃^[ƒQƒbƒg‚ðC³B
- db/skill_db.txt
-EGMƒAƒJƒEƒ“ƒg‚ðjRO‚Ìclientinfo.xml‚©‚ç’ljÁB
- conf/GM_account.txt
-EwarningC³B
- map/party.c
-EƒLƒƒƒ‰ƒZƒŒ”FØŽž‚Élogin_id2‚̓`ƒFƒbƒN‚µ‚È‚¢‚悤‚É•ÏXB
- login/login.c
-Eobject_def.batˆÈŠO‘Sƒtƒ@ƒCƒ‹‚̉üsƒR[ƒh‚ðLF‚É•ÏXB
-E*.cnfƒtƒ@ƒCƒ‹‚ð*.confƒtƒ@ƒCƒ‹‚É–¼‘O•ÏXB
-
---------------
-//0444 by Ž€_
-
-EGMƒRƒ}ƒ“ƒh‚â@ƒRƒ}ƒ“ƒh‚ɃRƒ}ƒ“ƒh•Ê‚ÉŽg—pƒŒƒxƒ‹‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏX‚Æ@ƒRƒ}ƒ“ƒh‚µC³B(@where‚Æ@dayA@night‚ÌC³‚Æ‘¼‚̃Lƒƒƒ‰‚ÉŽg‚¤ƒRƒ}ƒ“ƒh‚Ìê‡GMƒŒƒxƒ‹‚ªŽ©•ªˆÈã‚Ìꇎg‚¦‚È‚¢‚悤‚ÉC³B)
- atcommand.h C³B
- atcommand.c C³B
- clif.c C³B
- map/makefile C³B
- map.c
- do_init() C³B
- conf/atcommand_athena.cnf ’ljÁB
-Eׂ©‚¢C³B
- pc.c
- pc_setghosttimer()Apc_skill() C³B
- script.c
- buildin_skill() C³B
-Econf_ref.txt C³B
-Eitem_db.txt
- ”Þ—‚Ì‘z‚¢C³B
-
---------------
-//0442 by ŒÓ’±—–
-
-E‘‘¬ƒ|[ƒVƒ‡ƒ“ŽÀ‘•
- ELv‚âE‹Æ”»’è‚Ís‚¢‚Ü‚¹‚ñ
-
- (db/)
- const.txt
- SC_SpeedPot0,SC_SpeedPot1,SC_SpeedPot2’ljÁ
- item_db.txt
- ‘‘¬ƒ|[ƒVƒ‡ƒ“‚̃XƒNƒŠƒvƒg’ljÁ
- (map/)
- skill.c
- skill_status_change_start()C³
- pc.c
- pc_calcstatus()C³
-
-EPvPƒVƒXƒeƒ€‚̉¼ŽÀ‘•
- Epvpƒ}ƒbƒv‚Å‚ÍŽ©“®“I‚ÉAPC‚Ìpvpƒtƒ‰ƒOonA‡ˆÊ’Ê’m‚È‚Ç‚ðs‚¢‚Ü‚·B
- Eƒ}ƒbƒv‚Épvpƒtƒ‰ƒO‚ð‚‚¯‚éƒTƒ“ƒvƒ‹‚ðnpc_pvp.txt‚Æ‚µ‚Ä“Y•t‚µ‚Ä‚¢‚Ü‚·B
- Epvp‚ÌÚ‚µ‚¢ƒ‹[ƒ‹‚ª‚æ‚‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚ÅAŽŸ‚̂悤‚É‚µ‚Ä‚¢‚Ü‚·B
- Eʼn‚ÌŽ‚¿“_‚Í5“_A“|‚·‚Æ1“_A“|‚³‚ê‚é‚Æ-5“_B
- E0“_ˆÈ‰º‚ÌPC‚̓ŠƒUƒŒƒNƒVƒ‡ƒ“‚ªŠ|‚©‚ç‚È‚¢
- EGM‚Ípvpƒ}ƒbƒv‚É‚¢‚Ä‚à‘«Œ³‚ɃT[ƒNƒ‹‚ªoŒ»‚µ‚È‚¢‚悤‚Å‚·B
- iƒNƒ‰ƒCƒAƒ“ƒg‚ÌŽd—lHj
- Epvpƒ}ƒbƒv‚Å@pvpoff/@pvp‚·‚é‚Æ‹xŒe‚µ‚½‚èA‹xŒe‚ð‚â‚ß‚½‚è‚Å‚«‚Ü‚·‚ªA
- Žg—p‚·‚é‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-
- (conf/)
- npc_pvp.txt
- pvpƒtƒ‰ƒO‚ð“ü‚ê‚éƒTƒ“ƒvƒ‹B
- nosaveƒtƒ‰ƒO‚âŽó‚¯•t‚¯npc‚È‚Ç‚ð’ljÁ‚·‚é‚Æ‚æ‚¢‚ÆŽv‚í‚ê‚éB
- (map/)
- clif.c
- clif_parse_LoadEndAck()C³
- npc.c
- npc_parse_mapflag()C³
- skill.c
- skill_castend_nodamage_id()C³
- pc.c
- pc_damage()ˆø”C³
- atcommand.c
- pc_damage()ˆø”C³‚É”º‚¤C³
- battle.c
-
-E‚»‚Ì‘¼C³
- E@pvpoff/@pvp‚ŇˆÊ‚âƒT[ƒNƒ‹‚Ì•\Ž¦‚ð‚â‚ß‚½
- E@jumpto‚ŃXƒy[ƒX‚Ì“ü‚Á‚½ƒLƒƒƒ‰ƒNƒ^[‚àŽw’è‚Å‚«‚é‚悤‚É
- E@kamibƒRƒ}ƒ“ƒh•œŠˆi•¶Žš“V‚̺j
- E”ñPVP‚Ì‚Æ‚«‚ÉA‘ÎÛ‚ª“G‚̃XƒLƒ‹Žg—pŽžA“G–¡•û”»’è‚ðs‚¤‚悤‚É
-
- skill.c
- skill_castend_id()‚Å“G–¡•û”»’è
- atcommand.c
- ŠeƒRƒ}ƒ“ƒhC³
-
---------------
-//0440 by ’†‚Ìl
-
-E–{‰Æ‚ðÄŒ»‚·‚é•ûŒü‚È‚çˆÓ–¡‚Í‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ª
-@pc.cuƒXƒNƒŠƒvƒg‚É‚æ‚éƒXƒLƒ‹Š“¾v‚ðŽáŠ±•ÏX‚µ‚Ä
- ƒJ[ƒh‚É‚æ‚éƒXƒLƒ‹ˆêŽžK“¾‚ÌÛ‚Å‚à1ƒŒƒxƒ‹ˆÈã‚ðÝ’è‚Å‚«‚é‚悤‚É’v‚µ‚Ü‚µ‚½B
-
-@’Pƒ‚É•„†‚ð•Ï‚¦‚Ä‚²‚Ü‚©‚µ‚½‚¾‚¯‚Å‚·‚Ì‚Å
-@•K—v‚É‚ ‚킹‚ÄC³‚ð‚µ‚Ä‰º‚³‚¢B
-
---------------
-//0439 by hoenny
-Eˆ¢C—…”e–PŒ‚ÌC³B
- db/skill_db.txt
-Eƒ‚ƒ“ƒXƒ^[î•ñ‚ÌC³B
- map/clif.c
-EŒ©Ø‚è‚ÌŽÀ‘•B
- map/pc.c
-
---------------
-//0438 by ‚`‚Ìl
-EŒÃ–Ø‚ÌŽ}‚ªŽg‚¦‚éꊂð‚m‚o‚bƒXƒNƒŠƒvƒg‚©‚秌ä‰Â”\
-@mapflag‚Énobranch‚Æ‚·‚ê‚΂»‚̃}ƒbƒv‚͌Ö؂̎}Žg—p•s‰Â‚É‚È‚è‚Ü‚·B
- map.h
- enum‚ÉMF_NOBRANCH ’ljÁB
- npc.c
- npc_parse_mapflag() C³B
- pc.c
- pc_useitem() C³B
-ƒ\[ƒX‰˜‚‚µ‚Ä‚µ‚Ü‚Á‚½‚©‚àEEE.
-•×‹•s‘«‚Å‚·
-
---------------
-//0437 by ”g˜Q
-Eitem_db.txt‚̉p–¼‚ð‘å•C³B(s•t‚«‚Æ‚»‚¤‚Å‚È‚¢•Ší‚̉p–¼‚ª‚¢‚‚̊Ԃɂâ‚ç
-@“¯‚¶‚É‚È‚Á‚Ä‚¢‚½‚Ì‚Å‚»‚ê‚𒼂·‚‚¢‚Å‚É‘¼‚Ì•”•ª‚àC³‚µ‚Ü‚µ‚½B
- ‚Ü‚Á‚½‚ˆá‚¤–¼‘O‚É‚È‚Á‚Ä‚é‚à‚Ì‚à‚ ‚è‚Ü‚·‚ªA‚±‚Á‚¿‚Ì•û‚ª³‚µ‚¢‚ÆŽv‚¢‚Ü‚·B
-Eitem_purplebox.txt‚ð–{‰ÆŽd—l‚Á‚Û‚ì¬(‘å‘Ì‚±‚ñ‚ÈŠ´‚¶‚©‚Æ
-EƒAƒ‹ƒxƒ‹ƒ^‚ƃCƒYƒ‹[ƒhNPC‚ðC³
-
---------------
-//0436 by hoenny
-Emorocc •óΤl‚ÌC³
- conf/npc_shop.txt
-Eƒnƒ“ƒ}[ƒtƒH[ƒ‹‚ÌŽÀ‘•(AlchemistŽƒ\[ƒX‚ðŽQÆ‚ ‚肪‚Æ‚¤I)
- map/skill.c
-ˆÈ‘O‚É•¶Žš‰»‚¯‚Í’á‚Ì‚¹‚¢!
-ŽŸ‚©‚ç‹C‚ð•t‚¯‚Ü‚·.
-
---------------
-//0434 by Avethes
-
-Eƒ^[ƒgƒ‹ƒAƒCƒ‰ƒ“ƒh‚Ös‚NPCC³
-Eƒ†ƒm[NPCC³
-i‘O‰ñ‚̃oƒO‚Í‚·‚Ý‚Ü‚¹‚ñ‚Å‚µ‚½j
-
---------------
-//0433 by Ž€_
-
-E»‘¢ƒoƒOC³B
- ‰½ŒÌ‚©‚Í‚í‚©‚ç‚È‚¢‚ªskill.c‚Ìskill_readdb()‚ª•Ï‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ÅC³B(Ž©•ª‚ª‚â‚Á‚½C³‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...)
- skill.c
- skill_readdb() C³B
-
---------------
-//0432 by Ž€_
-
-E0429‚ňꕔ‚̃AƒCƒeƒ€‚̃XƒLƒ‹‚ªo‚È‚¢–â‘èC³B
- clif.c
- clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B
-Eskill.c
- skill_use_id() C³B(‘債‚½C³‚Å‚Í‚È‚¢‚Å‚·B)
-Eitem_db.txt‚Ì•¶Žš‰»‚¯C³BŒ¾Œêݒ肪“ú–{Œê‚Å‚Í‚È‚¢ê‡•Û‘¶‚·‚鎞‚É‚Í‹C‚ð‚‚¯‚Ü‚µ‚傤B
-EUŒ‚‚³‚ꂽƒ‚ƒ“ƒXƒ^[‚Ì”½Œ‚‚ª‘‚·‚¬‚é–â‘èC³BŽn‚ß‚Ä‚ÌUŒ‚‚ªƒ‚ƒ“ƒXƒ^[‚ÌUŒ‚ƒfƒBƒŒƒC‚ÉŠÖŒW‚È‚100msŒã‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ÅUŒ‚ƒfƒBƒŒƒC‚ɇ‚킹‚é‚悤‚É•ÏXB(‚½‚¾‚µ”½Œ‚‚ª’x‚¢‚ÆŽv‚í‚ꂽ‚è‚à‚µ‚Ü‚·‚ª...)
- mob.c
- mob_changestate() C³B
-EŽI‚ÉÚ‘±‚·‚éÅ‘ål”‚ðŒˆ‚ß‚é‚悤‚É•ÏXB
- char.c C³B
- conf_ref.txt C³B
- char_athena.cnf C³B
-
---------------
-//0430 by Avethes
-
-E‚m‚o‚bŠÖŒWB‚Ù‚Æ‚ñ‚ǃeƒXƒgB
-–{‰Æ‰ï˜bî•ñ‚ª‘µ‚¦‚ÎC³B
-
---------------
-//0429 by Ž€_
-
-EƒMƒ‹ƒh‚̃Œƒxƒ‹ƒAƒbƒv‚ðƒLƒƒƒ‰‚̃Œƒxƒ‹ƒAƒbƒv‚̂悤‚É•ÏXB
- int_guild.c
- guild_calcinfo() C³B
- guild_next_exp() ’ljÁB
- exp_guild.txt C³B(ƒŒƒxƒ‹‚ªã‚ª‚ç‚È‚¢‚悤‚É‚µ‚½‚¢ƒŒƒxƒ‹‚Ìexp‚É0‚ð“ü‚ê‚ê‚΂»‚êˆÈã‚ɃŒƒxƒ‹‚ªã‚ª‚ç‚È‚‚È‚è‚Ü‚·B)
-EƒXƒNƒŠƒvƒgresetstatusAresetskill ’ljÁB
- pc.c
- pc_resetskill() C³B
- script.c
- buildin_resetstatus()Abuildin_resetskill() ’ljÁB
-E0425‚Ì‘±‚«‚Å‚µC³B
- clif.c
- clif_parse_ ‚ð‚µC³B
-EƒVƒ‡[ƒgƒJƒbƒg‚ÉŠo‚¦‚Ä‚¢‚éƒXƒLƒ‹ƒŒƒxƒ‹ˆÈã‚̃XƒLƒ‹‚ª“o˜^‚³‚ê‚Ä‚¢‚Ä‚àŠo‚¦‚Ä‚¢‚éƒXƒLƒ‹ƒŒƒxƒ‹‚܂ł̃XƒLƒ‹‚ðŽg‚¤‚悤‚É•ÏXB
- clif.c
- clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B
-Eƒƒ‚‚Ìő唂ð10ŒÂ‚É•ÏXB(‚ ‚‚Ü‚Å‚àŠg’£‚ׂ̈̕¨‚Å‚·B‚Ü‚¾‹@”\‚Í‚µ‚Ü‚¹‚ñB)
- mmo.h
- struct mmo_charstatus‚Ìmemo_point‚ð3‚©‚ç10‚É•ÏXB
- char.c
- mmo_char_tostr() C³B
-Emob,c
- mob_once_spawn()Amob_summonslave() C³B(•Ê‚ɈӖ¡‚ª‚ ‚éC³‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ª...)
-E@monster ƒRƒ}ƒ“ƒh‚ÅÀ•W‚ðŽw’肵‚È‚¢Žžƒ‚ƒ“ƒXƒ^[‚ªˆê‚©Š‚ÉW’†‚µ‚Äo‚é‚Ì‚ðƒLƒƒƒ‰‚Ì10*10ƒ}ƒXˆÈ“à‚Ƀ‰ƒ“ƒ_ƒ€‚ÅŒ»‚ê‚é‚悤‚É•ÏXB
- atcomand.c C³B
-
---------------
-//0428 by Avethes
-
-Econf/npc_smilegirl.txt
- ƒXƒ}ƒCƒ‹ƒ}ƒXƒNƒK[ƒ‹ƒXƒNƒŠƒvƒgB
- 0427‚Ì‚¨‚©‚µ‚¢•”•ª‚Æ‚©C³B
- ’ñ‹Ÿ‚³‚ꂽŠe“sŽs‚ÌÀ•W‚É”z’uBiNONAME‚³‚ñ’ñ‹Ÿ‚ ‚肪‚Æ‚¤Ij
-
---------------
-//0426 by ŒÓ’±—–
-
-EƒAƒCƒeƒ€‚Ì–¼‘O‚ðdata.grf‚©‚ç“Ç‚Ýž‚ނ悤‚É‚µ‚½
- itemdb.c‚ÌITEMDB_OVERRIDE_NAME‚ð’è‹`‚µ‚È‚¯‚ê‚Γǂݞ‚Ý‚Ü‚¹‚ñB
- ITEMDB_OVERRIDE_NAME_VERBOSE‚Íitemdb.txt‚̃fƒoƒO—p‚É‚Ç‚¤‚¼B
- •’Ê‚Í•Ï‚¦‚é•K—v‚Í‚È‚¢‚ÆŽv‚¤‚Ì‚Åbattle_config‚É‚Í“ü‚ê‚Ä‚¢‚Ü‚¹‚ñB
-
- itemdb.c
- itemdb_read_itemnametable()’ljÁ
- do_init_itemdb()C³
-
-Eƒf[ƒ^ƒx[ƒX“Ç‚Ýž‚Ý•”‚Ì•sˆÀ’è«‚ÌC³(Œ‹\’v–½“I‚¾‚Á‚½‚Ý‚½‚¢‚Å‚·)
- ‚È‚‚Ä‚à–â‘è‚È‚¢DBiitem_value_db.txt‚È‚Çj‚̃tƒ@ƒCƒ‹‚ª‚È‚¢ê‡‚É
- ŽI‚ª—Ž‚¿‚½‚è‚·‚錻ۂª”¶‚µ‚Ä‚¢‚½ê‡‚Í‚±‚ê‚Å’¼‚Á‚Ä‚¢‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ.
-
- skill.c
- skill_readdb()‚ÅNULLƒ|ƒCƒ“ƒ^ƒ`ƒFƒbƒN‚ð’ljÁ
- itemdb.c
- item_readdb()‚ð•¡”‚É•ª‚¯‚½B
- ƒ‰ƒ“ƒ_ƒ€ƒAƒCƒeƒ€ƒf[ƒ^ƒx[ƒX‚Ì“Ç‚Ýž‚Ý•”‚ð‚P‚‚ɓZ‚ß‚½B
- do_init_itemdb()C³
-
-Eׂ©‚¢ƒoƒOC³
- Eƒ[ƒvƒ|[ƒ^ƒ‹‚ÌŠJ‚‚Ü‚Å‚Ì•b”’²®
-
- skill.c
- skill_unitsetting()C³
-
-E‚»‚Ì‘¼C³iby –^MŽj
- db/job_db1.txt
- ‚¿‚傱‚Á‚ÆC³
- db/job_db2.txt
- 2-2ŽŸE‚Ì‘«‚è‚È‚¢Jobƒ{[ƒiƒX‚ð’ljÁ(ŽQl:R.O.M 776)
- conf/npc_town_kafra.txt
- ƒI[ƒND‘O‚Æ’Yz‘O‚ɃJƒvƒ‰”z’u(“®ì–¢Šm”F)
- conf/npc_shop3.txt
- ƒWƒ…[ƒm”Ì”„NPC(E‚¢•¨)
- conf/npc_town_yuno.txt
- ƒWƒ…[ƒmNPC(E‚¢•¨‚ð‰ü—ÇB“®ì–¢Šm”F)
-
---------------
-//0425 by Ž€_
-
-E0419‚Å‘‚«–Y‚ꂽ•¨‚Å‚·‚ªƒXƒLƒ‹ƒ‰[ƒjƒ“ƒOƒ|[ƒVƒ‡ƒ“‚ªSP‰ñ•œƒAƒCƒeƒ€‚É‚àŒø‰Ê‚ª‚ ‚é‚悤‚É•ÏXB
-E¡“x‚̓oƒOC³‚ªƒƒCƒ“‚Å‚·BŽI—Ž‚¿‚ª‚È‚è‚»‚¤‚ÈŠ‚ÌC³‚ƃeƒŒƒ|[ƒg‚ÌŽžŽ€‚ñ‚¾‚܂܈ړ®‚Å‚«‚é–â‘è‚Æ0419‚ŃAƒNƒeƒBƒuƒ‚ƒ“ƒXƒ^[‚ÌæU–â‘èC³AŽ€‚ñ‚Å‚¢‚é‚Ì‚É‘¼‚Ìl‚É‚ÍŽ€‚ñ‚¾‚悤‚ÉŒ©‚¦‚È‚¢–â‘è‚ÌC³‚Å‚·B‚µƒeƒXƒg‚Í‚µ‚Ü‚µ‚½‚ª–{“–‚ÉŽ¡‚Á‚½‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·B•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
- pc.c
- pc_attack_timer()Apc_damage()Apc_walk() C³B
- map.c
- map_quit() C³B
- mob_db.txt
- ƒrƒbƒOƒtƒbƒg‚Ìmode‚ðC³(ƒAƒNƒeƒBƒu‚É‚È‚Á‚Ä‚¢‚½ˆ×)
- clif.c
- clif_parse_WalkToXY()Aclif_pcoutsight()Aclif_pcinsight()A
- clif_getareachar_pc()Aclif_getareachar_mob()Aclif_getareachar_pet() C³B
- mob.c
- mob_ai_sub_hard_activesearch()Amob_ai_sub_hard_mastersearch()A
- mob_walk() C³B
- pet.c
- pet_walk() C³B
-
---------------
-//0424 by hoenny
-
-EƒNƒŠƒbƒvƒ{[ƒiƒX SP 10’ljÁ
- db/item_db.txt
-Ewarp_test_yuno.txt‚ð npc_warp30.txt‚ÉŠÜ‚ñ‚Å, ‚¿‚å‚Á‚ÆC³
- conf/npc_warp30.txt
-E‘¼‚̃T[ƒo[‚ª—Ž‚¿‚Ä‚à•œ‹Œ‚³‚ê‚é‚悤‚ÉC³
- /startƒNƒŠƒbƒv
-
---------------
-//0420 by g—t
-
-EEP 3.0‚ł̃J[ƒhŒø‰Ê•ÏX‚ɉð‚é”͈͂őΉžB
-@‚Ù‚Ú‘S‚Ä‚Ì•ÏX“_‚ɂ‚¢‚ÄAo—ˆ‚éŒÀ‚èC³‚µ‚Ä‚ ‚è‚Ü‚·B
-@ATKC³‚ª³‚µ‚“K—p‚³‚ê‚Ä‚¢‚é‚悤‚Ȃ̂ŒljÁ‚µ‚Ä‚ ‚è‚Ü‚·B(ƒAƒ“ƒhƒŒC‚È‚Ç)
-
---------------
-//0419 by Ž€_
-
-E0414‚Å‘‚«–Y‚ꂽ•¨‚Å‚·‚ª MOB‚Ìmode‚Å0x20(32)‚𕜊ˆ‚³‚¹‚Ü‚µ‚½Bƒ{ƒX‚¶‚á‚È‚‚Ä‚àmode‚É0x20‚ª“ü‚Á‚Ä‚¢‚éꇕ’Ê‚ÌMOB‚Å‚àŽ€‚ñ‚¾‚Ó‚è‚ð”j‚ê‚Ü‚·B
-(¡‚ÌŠ‹@”\‚Í‚»‚ꂾ‚¯‚Å‚·B–{ŽI‚ÍAI‹‰»‚Ý‚½‚¢‚Å‚·‚ª...) ‚½‚¾ƒS[ƒXƒg‚̓{ƒX‚Å‚à”j‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-‚»‚ê‚ÆŽæ‚芪‚«‚ÌAI‚ÅŽæ‚芪‚«‚ªƒ^[ƒQƒbƒg‚µ‚½ŽžŽå‚ªƒ^[ƒQƒbƒg‚µ‚Ä‚È‚¢‚Ǝ傪Žæ‚芪‚«‚̃^[ƒQƒbƒg‚ðƒ^[ƒQƒbƒg‚·‚é•”•ª‚ðƒRƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½B(‚±‚ꂪ–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚ÆŽv‚¢‚Ü‚µ‚½‚Ì‚Å...)
-EŒÃ‚¢Â‚¢” AŒÃ‚¢Ž‡F‚Ì” AŒÃ‚¢ƒJ[ƒh’Ÿ‚Åo‚éƒAƒCƒeƒ€‚ðƒtƒ@ƒCƒ‹‚ÅÝ’è‚Å‚«‚é‚悤‚É•ÏXB
- script.c
- buildin_getitem() C³B
- item_db.txt
- ŒÃ‚¢Â‚¢” AŒÃ‚¢Ž‡F‚Ì” AŒÃ‚¢ƒJ[ƒh’ŸC³B
- item_bluebox.txtAitem_purplebox.txtAitem_cardalbum.txt ’ljÁB(Žg—p—á’ö“x‚Ì•¨‚Å‚·B‚ǂ̃AƒCƒeƒ€‚ªo‚é‚悤‚É‚·‚é‚©‚ÍŽ©•ª‚Åݒ肵‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B‚½‚¾ƒNƒ‰ƒCƒAƒ“ƒg‚ð—Ž‚Æ‚·ƒAƒCƒeƒ€‚Ío‚È‚¢‚悤‚Éݒ肵‚Ä‚‚¾‚³‚¢B)
- itemdb.h
- struct random_item_data ’ljÁB
- itemdb.c
- itemdb_searchrandomid()Aitemdb_readdb() C³B
-Emob.c
- mob_target()Amob_ai_sub_hard() C³B(–â‘肪‚ ‚è‚»‚¤‚È•”•ª‚¾‚¯C³B)
-Epc.c
- pc_itemheal()Apc_walktoxy_sub() C³B
-Eƒyƒbƒg‚ÌoŒ»‚ðMOB‚Æ“¯‚¶‚悤‚É•ÏXB
- clif.c
- clif_spawnpet() C³B
- pet.c
- pet_change_name() C³B
-E0418‚ð‚µC³B(if•¶‚ÌðŒ‚ð‚µC³‚µ‚½‚¾‚¯‚Å‚·B)
-
---------------
-
-//0418 by hoenny
-E /mm(/mapmove) /nb /b /bb /resetskill /resetstate GM –½—ߌêŽg—p‚̧ŒÀ
-clif_parse_MapMove ,clif_parse_ResetChar ,clif_parse_GMmessage C³
- map/clif.c
-
---------------
-//0417 by ‚ê‚
-
-E0412‚Åitem_db.txt‚ª‚¨‚©‚µ‚‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³
-
---------------
-//0416 by g—t
-
-EƒWƒ…ƒm[Žü•Ó‚̃[ƒv’è‹`‚Æ“G‚Ì”z’uB
-@ƒ[ƒv’è‹`‚Ínpc_warp30.txt‚Æ‚µA’ljÁ‚·‚éŒ`‚É‚µ‚Ä‚ ‚è‚Ü‚·B
-@“G‚Ì”z’u‚ɂ‚¢‚Ä‚ànpc_monster.txt‚Æ‚Í“‡‚¹‚¸Anpc_monster30.txt‚Æ‚µ‚Ä‚ ‚è‚Ü‚·B
-@–â‘肪–³‚¢‚悤‚Å‚ ‚ê‚Γ‡‚µ‚ĉº‚³‚¢B
-Eã‹L’è‹`ƒtƒ@ƒCƒ‹’ljÁ‚É]‚¢map_athena.cnf‚ð•ÏXB
-E@goƒRƒ}ƒ“ƒh‚ÖƒWƒ…ƒm[’ljÁB
-@—v–]‚ª‚ ‚Á‚½‚悤‚Ȃ̂ŒljÁ‚µ‚Ü‚µ‚½B
-
---------------
-//0415 by ’†‚Ìl
-
-E¡‚Í–S‚«‹ŒROƒGƒ~ƒ…ŽIŠJ”ƒXƒŒƒbƒh Lv02‚Å‚ÌŽ€_Ž‚Ìà–¾‚É]‚Á‚Ä
-@ƒ‚ƒ“ƒXƒ^[’è‹`ƒf[ƒ^‚ðŽáŠ±•ÏX‚³‚¹‚Ä’¸‚«‚Ü‚µ‚½B
- E‰ß‹Ž‚Ìnpc_monster.txt‚©‚ç’Êíƒ}ƒbƒvãiƒ‹ƒeƒBƒG“™œ‚j‚É‚¢‚éƒTƒ“ƒ^ƒ|ƒŠƒ“AƒAƒ“ƒ\ƒj‚ð’Šo‚µ
- @V‚½‚Éì‚Á‚½unpc_x-masmonster.txtv‚Ɉړ]
- Eã‹L‚ÌC³‚É‚ ‚킹‚Ämap_athena.cnf‚ðC³B
- @map_athena‚ɃRƒƒ“ƒgƒAƒEƒgó‘Ô‚Åunpc: conf/npc_x-masmonster.txtv‚ð’ljÁ‚µ‚Ü‚µ‚½B
- @•K—v‚É‚ ‚킹‚ăRƒƒ“ƒgƒAƒEƒg‚ð‚µ‚Ä‰º‚³‚¢B
-
---------------
-//0414 by Ž€_
-
-Estrcasecmp‚ðstrcmpi‚É•ÏXB
-Edb‚âÝ’èƒtƒ@ƒCƒ‹‚ð“Ç‚ÞŽž// ‚ðƒRƒ}ƒ“ƒgƒAƒEƒg‚Æ‚µ‚Ä”FŽ¯‚·‚é‚悤‚ÉC³B
-Eƒyƒbƒg‚Æ—£‚ê‚·‚¬‚é‚ƃyƒbƒg‚ª‘‚“®‚‚悤‚É•ÏXB(ƒLƒƒƒ‰‚Ì2”{‚Ì‘¬“x‚Å“®‚«‚Ü‚·B)
-Eƒ‹[ƒgƒ‚ƒ“ƒXƒ^[‚ªƒAƒCƒeƒ€‚ðƒ^[ƒQƒbƒg‚µ‚½ŽžUŒ‚‚ðŽó‚¯‚Ä‚àUŒ‚‚µ‚Ä‚±‚È‚¢–â‘èC³B
-E“¯‘°ƒ‚ƒ“ƒXƒ^[‚ÌAI‚ð•ÏXB¡‚Ü‚Å‚Ítraget_id‚ðŽg‚¤‚¹‚¢‚Ń‚ƒ“ƒXƒ^[‚ªUŒ‚‚µ‚½‘ŠŽè‚ðUŒ‚‚·‚éŽd‘g‚Ý‚¾‚Á‚½‚ª¡“x‚Íattacked_id‚ðŽg‚¤ˆ×UŒ‚‚µ‚Ä‚«‚½‘ŠŽè‚ðUŒ‚‚·‚é‚悤‚É•ÏXB
-‚½‚¾¡‚ÌŽd—l‚¾‚Æ“¯‘°ƒ‚ƒ“ƒXƒ^[‚ðUŒ‚‚µ‚Ä“¦‚°‚éê‡UŒ‚‚ðŽó‚¯‚½Žž‚»‚Ìê‚É‚È‚©‚Á‚½ƒ‚ƒ“ƒXƒ^[‚͂‚¢‚Ä—ˆ‚È‚‚È‚Á‚Ä‚¢‚Ü‚·B–{ŽI‚ÌŽd—l‚É‚ ‚Á‚Ä‚é‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·‚Ì‚Åî•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B(attacked_id‚Í‚¢‚Â‚àƒŠƒZƒbƒg‚³‚ê‚éˆ×‚Å‚·B‘Îô‚ª‚¢‚È‚¢‚킯‚Å‚à‚È‚¢‚Å‚·‚ª–{ŽI‚ÌŽd—l‚ð’m‚ç‚È‚¢‚Ì‚Å...)
-Eƒƒ‚ƒŠ[‚ÌŽg—p—Ê‚ðŒ¸‚ç‚·ˆ×struct mob_data‚Æstruct npc_data‚ð•ÏXB(0412‚Å
-map-server‚̃ƒ‚ƒŠ[‚ÌŽg—p—Ê‚ª164???KBytes‚¾‚Á‚½‚ª0414‚Å‚Í152???KBytes‚É‚È‚è‚Ü‚µ‚½B‚Ù‚ñ‚Ì‚µŒ¸‚Á‚½‚¾‚¯‚Å‚·‚ª‘‚¦‚é‚æ‚è‚Í‚Ü‚µ‚¾‚ÆŽv‚¢‚Ü‚·‚Ì‚Å...)
-EƒS[ƒXƒgƒ^ƒCƒ€ŽÀ‘•B
- ƒ}ƒbƒvˆÚ“®‚âƒeƒŒƒ|[ƒgA•œŠˆ‚µ‚½Žž‚É“G‚É‘_‚í‚ê‚È‚¢ŽžŠÔ‚ðd—͂ł̓S[ƒXƒgƒ^ƒCƒ€ŒÄ‚ñ‚Å‚¢‚Ü‚·B‚»‚̃S[ƒXƒgƒ^ƒCƒ€‚ÌŽÀ‘•‚Å‚·B
-battle_athena.cnf‚ÅŽžŠÔ‚ðÝ’è‚Å‚«‚Ü‚·BŽžŠÔ‚ð0‚É‚·‚é‚ƃS[ƒXƒgƒ^ƒCƒ€‚Íì“®‚µ‚Ü‚¹‚ñB‚½‚¾‚±‚̃S[ƒXƒgƒ^ƒCƒ€‚ÍUŒ‚s“®AƒXƒLƒ‹Žg—pAƒAƒCƒeƒ€Žg—p‚ð‚·‚é‚Æ‚È‚‚È‚è‚Ü‚·B
- char/int_guild.c
- char/int_party.c
- conf/battle_athena.cnf
- db/mob_db.txt
- doc/conf_ref.txt
- login/login.c
- map/atcommand.c
- map/battle.c
- map/battle.h
- map/clif.c
- map/itemdb.c
- map/map.c
- map/map.h
- map/mob.c
- map/npc.c
- map/pc.c
- map/pc.h
- map/pet.c
- map/skill.c ‚ðC³B(db/mob_db.txt‚Í//‚ð“ü‚ꂽ‚¾‚¯‚Å‚·‚ª...)
- C³‚µ‚½Š‚ð‘S‚ÄŠo‚¦‚Ä‚Ü‚¹‚ñ‚̂Ńtƒ@ƒCƒ‹‚¾‚¯’m‚点‚Ü‚·B
-
---------------
-//0412 by ‚¢‚Ç
-
-Eƒ‚ƒ“ƒXƒ^[’è‹`ƒf[ƒ^(“ú–{Œê)‚ÌÄ®—
-@ ‹ŒŒfŽ¦”‚Ŏw“E‚Ì‚ ‚Á‚½Ž–€‚ɂ‚¢‚Ä‘å‘͈̂̔͂ÅC³
- snapshot387‚̃o[ƒWƒ‡ƒ“‚ðƒx[ƒX‚ÉC³‚µ‚Ü‚µ‚½B
- conf/npc_monster.txt
-
-EƒAƒCƒeƒ€–¼‚Ì’è‹`‚ð‘å•C³
- (root)
- item.list
- (db/)
- item_db.txt
- item_value_db.txt
-
-Eƒ}ƒbƒvƒf[ƒ^‚Ì’è‹`‚ŃRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚¢‚½ƒWƒ…ƒm[ŠÖ˜Aƒ}ƒbƒv‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ
- conf/map_athena.cnf
-
---------------
-//0411 by Ž€_
-
-EŽIsnapshot‚Å‚·B‚»‚ê‚Ælogin_portAchar_portAmap_port‚Ìݒ肪‚È‚‚Ä‚à
-ƒfƒtƒHƒ‹ƒg‚Å6900A6121A5121‚ðŽg‚¤‚悤‚É•ÏXB
-Elogin.cAchar.cAchrif.cAclif.c ‚µC³B
-Econf_ref.txt C³B
-Elogin_port‚ð6900‚©‚瑼‚Ì•¨‚É•Ï‚¦‚½ê‡‚Íclientinfo.xml‚ð•Ï‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B
-
---------------
-//0410 by Ž€_
-
-GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uinamejŽg—pŽÒ‹§I—¹vŽÀ‘•B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB@ƒRƒ}ƒ“ƒh‚̓eƒXƒgÏ‚Ý‚Å‚·‚ª...)
-0407‚ÌEXP‚ÉŠÖ‚·‚éC³‚É–â‘肪‚ ‚é‚炵‚¢‚Ì‚ÅC³‚µ‚Ü‚µ‚½B¡“x‚̓eƒXƒgÏ‚Ý‚Å‚·B
-GM‚̃AƒJƒEƒ“ƒgID‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏX‚ÆGM‚ðƒŒƒxƒ‹•Ê‚É•ª‚¯‚é‚悤‚É•ÏXB
-(GM‚̃Œƒxƒ‹‚É‚æ‚é@ƒRƒ}ƒ“ƒh“™‚ɧŒÀ‚ð‚©‚¯‚é‚‚à‚è‚Å‚·‚ª¡§ŒÀ‚ª‚©‚¯‚Ä‚¢‚镨‚Í@kickA@kickall‚Ì‚Ý‚É‚È‚Á‚Ä‚¢‚Ü‚·B)
-Epc.c
- pc_readdb()Apc_gainexp()Apc_nextbaseexp()Apc_nextjobexp()A
- pc_checkbaselevelup()Apc_checkjoblevelup() C³B
- pc_isGM()Apc_read_gm_account() ’ljÁB
-Epc.h
- pc_isGM() C³B
- pc_read_gm_account() ’ljÁB
-Eexp.txt
- ƒŒƒxƒ‹‚ªã‚ª‚ç‚È‚¢”’l‚ð999999999‚©‚ç0ˆÈ‰º‚É•ÏXB
- ƒŒƒxƒ‹‚ðã‚°‚éˆ×‚É•K—v‚ÈEXP‚ð999999999ˆÈã‚É‚·‚邱‚Æ‚à‰Â”\B
-Eclif.c
- clif_GM_kickack()Aclif_GM_kick()Aclif_parse_GMKick() ’ljÁB
-Eclif.h
- clif_GM_kickack()Aclif_GM_kick() ’ljÁB
-Eatcomand.c
- strncmpi‚ðstrcmpi‚É•ÏXB
- @kickA@kickall ƒRƒ}ƒ“ƒh’ljÁB
- @kick <ƒLƒƒƒ‰–¼>
- Ž©•ªˆÈŠO‚̃Lƒƒƒ‰‚ÌÚ‘±‚ð‹§I—¹‚³‚¹‚éB(Ž©•ª‚æ‚èGMƒŒƒxƒ‹‚ª
- ’á‚¢ƒLƒƒƒ‰‚É‚µ‚©Žg‚¦‚È‚¢BGM‚Å‚Í‚È‚¢ƒLƒƒƒ‰‚ÌGMƒŒƒxƒ‹‚Í0)
- @kickall
- ŽI‚ÉÚ‘±‚µ‚Ä‚¢‚é‘S‚ẴLƒƒƒ‰‚ÌÚ‘±‚ð‹§I—¹‚³‚¹‚éB(Ž©•ª‚Æ
- GM‚ðŠÜ‚ß‚Ä) ŽIƒ_ƒEƒ“—p‚̃Rƒ}ƒ“ƒh‚Å‚·BGMƒŒƒxƒ‹‚ª99‚¶‚á‚È‚¢‚Æ
- Žg‚¦‚È‚¢B
-Econf/GM_account.txt ’ljÁB
- GM‚Æ‚µ‚Ä”FŽ¯‚·‚éƒAƒJƒEƒ“ƒgID‚ðÝ’è‚·‚éƒtƒ@ƒCƒ‹‚Å‚·B
-Emmo.h
- DEFAULT_WALK_SPEED‚ð140‚©‚ç150‚É•ÏXB(‚±‚ꂪ–{ŽI‚É‚ ‚Á‚Ä‚é”’l
- ‚Ý‚½‚¢‚Å‚·‚Ì‚Å...)
- struct gm_account ’ljÁB
-Eclient_packet.txt
- ƒpƒPƒbƒg0x00cd ’ljÁB
-Elogin_port‚ðcnf‚œǂނ悤‚É•ÏXB(‚½‚¾6900‚©‚çƒ|[ƒg‚ð•Ï‚¦‚é‚ƃNƒ‰ƒCƒAƒ“ƒg‚ª”FŽ¯‚Å‚«‚È‚¢–Í—l‚È‚Ì‚Å–³‘Ê‚È‚±‚Æ‚¾‚Á‚½‚è‚à‚µ‚Ü‚·‚ª...)
- char.cAlogin.cAchar_athena.cnfAlogin_athena.cnf C³B
-E•’ʂ̃AƒJƒEƒ“ƒg쬂łÍGM‚É‚È‚ê‚È‚¢‚悤‚Élogin.c‚ð•ÏXB
-Elogin/makefileAmap/makefile C³B
-
---------------
-//0408 by ŒÓ’±—–
-
-E405‚ÌV‚µ‚¢—ƒRƒ}ƒ“ƒh‚ðˆÈ‘O‚Ìatcommand.c‚ÉŽæ‚èž‚Ý‚Ü‚µ‚½B
- E@kami‚ðC³
- E@kill,@recall,@charjob,@revive,@charstats,@charoption,@charsave,
- @night,@day,@doom,@doommap,@raise,@raisemap,@charbaselvl,@charjlvl
- ‚ð’ljÁ•ƒƒbƒZ[ƒW‚ð“ú–{Œê‚É•ÏX•‚µC³
-
- atcommand.c
- ’ljÁ‚ÆC³
-
-Eˆê•”‚̃XƒLƒ‹‚ÌŒø‰ÊŽÀ‘•
- E•sŽ€g‚̃W[ƒNƒtƒŠ[ƒhAƒCƒhƒDƒ“‚Ì—ÑŒçAK‰^‚̃LƒXA
- ƒtƒŒƒCƒ€ƒ‰ƒ“ƒ`ƒƒ[AƒtƒƒXƒgƒEƒFƒ|ƒ“Aƒ‰ƒCƒgƒjƒ“ƒOƒ[ƒ_[A
- ƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“
-
- map.h
- struct skill_unit‚Érange‚ð’ljÁB
- skill.c
- FXC³
- skill.h
- enum‚ÌC³‚È‚Ç
---------------
-//0407 by Ž€_
-
-Eƒyƒbƒg‚̃oƒOC³B(‚½‚¾Ž©•ª‚ÅÄŒ»‚Å‚«‚È‚©‚Á‚½‚Ì‚Å–â‘è‚É‚È‚è‚»‚¤‚ÈŠ‚¾‚¯C³‚µ‚Ü‚µ‚½B)
-Eƒyƒbƒg‚̈ړ®‘¬“x‚ðpet_db‚ɒljÁB
- pet.h
- struct pet_db‚Éspeed’ljÁB
- pet.c
- pet_catch_process2()Aread_petdb() C³B
- pet_db.txt
- ˆÚ“®‘¬“x’ljÁB
- (ƒRƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ä‚¢‚é‚̂̓Wƒ‹ƒ^ƒX‚ƃAƒŠƒX‚Å‚·B•ßŠl—p‚Ì
- ƒAƒCƒeƒ€‚ª‘¶Ý‚·‚邱‚ƂƃpƒtƒH[ƒ}ƒ“ƒX‚ð‚·‚é‚±‚Æ‚©‚çl‚¦‚Ä
- ’ljÁ‚³‚ê‚é—\’è‚Ì•¨‚Æl‚¦‚ç‚ê‚Ü‚·B‚½‚¾‚»‚̕ߊl—p‚̃AƒCƒeƒ€‚ª
- ‚ ‚é‚ƃNƒ‰ƒCƒAƒ“ƒg‚ð—Ž‚¿‚Ü‚·‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B’ljÁ‚µ‚Ä‚à
- ‘䎌‚̓|ƒŠƒ“‚Ì•¨‚Å‚·‚Ì‚Å... •ßŠl—p‚̃AƒCƒeƒ€ˆÈŠO‚Í“K“–‚É“ü‚ꂽ
- •¨‚Å‚·B)
-Epc.cAclif.c
- pc_equipitem() C³B
- clif_parse_EquipItem() C³B
- pc_equipitem()‚Ì–¢ŠÓ’èƒAƒCƒeƒ€‚̃`ƒFƒbƒN‚ðclif_parse_EquipItem()‚É
- ˆÚ“®‚µ‚Ü‚µ‚½B(ƒyƒbƒg‚Ì‘•”õ‚à‚ ‚è‚Ü‚·‚Ì‚Å...)
-EƒŒƒxƒ‹‚ð99ˆÈã‚É‚ ‚°‚é‚悤‚É•ÏX‚ÆE‹Æ•Ê‚Ƀx[ƒXƒŒƒxƒ‹‚ÌŒÀŠEƒŒƒxƒ‹‚ðÝ’è‚Å‚«‚é‚悤‚ÉC³B
- map.h
- MAX_LEVEL’ljÁB
- pc.c
- pc_nextbaseexp(), pc_nextjobexp() C³B
- pc_readdb() C³B
-Eexp.txt C³BE‹ÆƒŒƒxƒ‹‚Æ“¯‚¶‚悤‚Ƀx[ƒXƒŒƒxƒ‹‚àEXPƒe[ƒuƒ‹‚ð3‚Âì‚è‚Ü‚µ‚½BƒŒƒxƒ‹ƒAƒbƒv‚ðŽ~‚ß‚½‚¢ƒŒƒxƒ‹‚Ìexp‚ð999999999‚É‚·‚ê‚΂»‚êˆÈヌƒxƒ‹‚ªã‚ª‚è‚Ü‚¹‚ñB‚‚܂ènoviceA1ŽŸE‹Æ‚Æ2ŽŸE‹Æ‚̃x[ƒXƒŒƒxƒ‹‚ÌŒÀŠE‚ðˆá‚¤‚悤‚ÉÝ’è‚Å‚«‚Ü‚·B‚»‚µ‚ăx[ƒXƒŒƒxƒ‹99ˆÈã‚Éオ‚é‚悤‚É‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B(exp.txt‚ÌC³‚ª•K—v‚Å‚·‚ª–{ŽI‚ƈႤ‚悤‚Éݒ肵‚½‚¢ê‡‚ÉC³‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B)
-E‘®«‚É‚æ‚é‰ñ•œ‚ðbattle_athena.cnf‚ÅÝ’è‚Å‚«‚é‚悤‚É•ÏXB
- attr_fix.txt C³B
- battle.h
- struct Battle_Config‚Éattr_recover ’ljÁB
- battle.c
- battle_config_read() C³B
- battle_athena.cnf C³B
-Econf_ref.txt C³B
-Eclient_packet.txt C³BƒyƒbƒgƒpƒPƒbƒg’ljÁ‚Æ‚µC³B
-
---------------
-//0402 by ŒÓ’±—–
-
-E400‚̃oƒO‚ðˆê•”C³
- EŠ|‚©‚Á‚Ä‚È‚¢ƒXƒLƒ‹Œø‰Ê‚É‚æ‚éƒXƒe[ƒ^ƒXŒvŽZ‚ªs‚í‚ê‚Ä‚µ‚Ü‚¤ƒoƒOC³
- EŒø‰ÊC³F‚ ‚‚Ü‚ÅŒø‰Ê‚ÌŒvŽZ‚ÌC³‚ÅAŽg‚¦‚È‚¢ƒXƒLƒ‹‚ÍŽg‚¦‚Ü‚¹‚ñB
- ƒXƒsƒAƒNƒBƒbƒPƒ“Aƒvƒƒ”ƒBƒfƒ“ƒXA푾ŒÛ‚Ì‹¿‚«A
- —[—z‚̃AƒTƒVƒ“ƒNƒƒXAŒû“JA•sŽ€g‚̃W[ƒNƒtƒŠ[ƒhA
- ƒCƒhƒDƒ“‚Ì—ÑŒçAƒT[ƒrƒXƒtƒH[ƒ†[AK‰^‚̃LƒX
- EŒø‰Ê’ljÁF‚ ‚‚Ü‚ÅŒø‰Ê‚ÌŒvŽZ‚̒ljÁ‚ÅAŽg‚¦‚È‚¢ƒXƒLƒ‹‚ÍŽg‚¦‚Ü‚¹‚ñB
- ƒnƒ~ƒ“ƒOAŽ„‚ð–Y‚ê‚È‚¢‚ÅcAƒj[ƒxƒ‹ƒ“ƒO‚ÌŽw—Ö(•ŠíƒŒƒxƒ‹–³Ž‹)A
- ƒGƒ^[ƒiƒ‹ƒJƒIƒXAƒhƒ‰ƒSƒmƒƒW[
- EŒø‰Ê•t‰ÁŒn‚Í‚¿‚å‚Á‚Æ‚Å‚à‰ö‚µ‚¢ƒXƒLƒ‹‚Í‘S‚ÄŽg—p‚Å‚«‚È‚¢‚悤‚ÉC³
- EUŒ‚ŒnƒXƒLƒ‹‚Í‚Ù‚Æ‚ñ‚ÇŒ©‚Ä‚È‚¢‚Ì‚Å‚½‚Ô‚ñƒoƒO‘½‚¢‚Å‚·B
- E‘S‚Ä–¢ƒeƒXƒg‚Å‚·B‰ö‚µ‚·‚¬‚é•”•ª‚ðC³‚µ‚½‚¾‚¯‚Å‚·B
-
- map.h
- MAX_STATUSCHANGE‚ð128‚ÉC³
- pc.c
- pc_calcstatus()C³
- skill.c/skill.h
- enum‚ðC³
- skill_status_change_start()C³
- battle.c
- battle_calc_weapon_attack()‚È‚ÇC³
-
---------------
-//0400 by AppleGirl
-
-Can Someone Help Me.
-2-2 Skills added.
-All The Mastery Skills.
-SpearQuicken,Providence
-New Bard Skill Assassin Cross Of Sunset
-Providence
-Frost Joke
-Apple of Idun
-Service For You
-Meteor Strike (Different Style)
-Assassin Cross Of Sunset (not tested)
-All Masteries Done
-Providence
-Musical Strike
-Throw Arrow
-Frost Weapon << (Problems with elements)?
-Flame Launcher << (Problems with elements)?
-Seismic Weapon << (Problems with elements)?
-Lightning Loader << (Problems with elements)?
-Spirit Recovery
-Potion Pitcher (Tato)
-Axe Mastery (Tato)
-Spear Quicken
-Not Totally Working:
-Combo Finish
-Quadruple strike
-Triple Attack
-(skills in skill.c) (need to be finished.)
-CP_ARMOR
-CP_HELM
-CP_SHIELD
-CP_WEAPON
-STRIP_HELM
-STRIP_WEAPON
-STRIP_SHIELD
-STRIP_ARMOR
-
-* “K“–‚Șa–ó *
-2-2ŽŸEƒXƒLƒ‹‚ð’ljÁ‚µ‚Ü‚µ‚½
-‘S‚Ä‚ÌC—ûƒXƒLƒ‹AƒXƒsƒAƒNƒCƒbƒPƒ“Aƒvƒƒ”ƒBƒfƒ“ƒXA
-—[—z‚̃AƒTƒVƒ“ƒNƒƒXi–¢ƒeƒXƒgjAŠ¦‚¢ƒWƒ‡[ƒNAƒCƒhƒDƒ“‚Ì—ÑŒçA
-ƒT[ƒrƒXƒtƒH[ƒ†[AƒƒeƒIƒXƒgƒ‰ƒCƒNi‚µˆá‚¤jA
-ƒ~ƒ…[ƒWƒJƒ‹ƒXƒgƒ‰ƒCƒNA–‚¿AƒtƒƒXƒgƒEƒFƒ|ƒ“(‘®«‚ª–â‘è‚ ‚èH)
-ƒtƒŒ[ƒ€ƒ‰ƒ“ƒ`ƒƒ[(V)AƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“(V)Aƒ‰ƒCƒgƒjƒ“ƒOƒ[ƒ_[(V)
-‘§Aƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[
-Š®‘S‚É‚Í“‚©‚È‚¢ƒXƒLƒ‹F
-–Ò—´ŒA—øŠÂ‘Sg¶AŽO’i¶
-(skills in skill.c) (Š®—¹‚³‚ê‚é•K—v‚ª‚ ‚é)
-ƒPƒ~ƒJƒ‹ƒA[ƒ}[ƒ`ƒƒ[ƒWAƒPƒ~ƒJƒ‹ƒwƒ‹ƒ€ƒ`ƒƒ[ƒWA
-ƒPƒ~ƒJƒ‹ƒV[ƒ‹ƒhƒ`ƒƒ[ƒWAƒPƒ~ƒJƒ‹ƒEƒFƒ|ƒ“ƒ`ƒƒ[ƒWA
-ƒXƒgƒŠƒbƒvƒwƒ‹ƒ€AƒXƒgƒŠƒbƒvƒEƒFƒ|ƒ“
-ƒXƒgƒŠƒbƒvƒV[ƒ‹ƒhAƒXƒgƒŠƒbƒvƒA[ƒ}[
-
-*’ˆÓ !! CAUTION !! by ŒÓ’±—–*
-‚±‚Ì400‚ɂ̓oƒO‚ª‘å—Ê‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
-there are many many BUGS in this update(400) !! Be careful !!
-
---------------
-//0399 by ŒÓ’±—–
-
-EMOBƒXƒLƒ‹Žg—pðŒ‚âs“®‚ðC³
- E–³s“®MOB‚ª‘Ò‹@Žž‚̃XƒLƒ‹‚ðŽg—p‚Å‚«‚È‚¢–â‘è‚ðC³
- EðŒƒXƒLƒ‹”½‰ž(skillused)‚ª‚ǂ̃XƒLƒ‹‚É‚à”½‰ž‚µ‚Ä‚¢‚½ƒoƒOC³
- E”ñˆÚ“®MOB‚ª’ÇŒ‚‚µ‚Ä‚‚é–â‘è‚ðC³
-
- mob.c
- mob_ai_sub_hard()C³
- mobskill_event()C³
- mobskill_use()C³
- skill.c
- skill_attack()C³
-
-EMOBƒXƒLƒ‹ˆê•”ŽÀ‘•
- EŽ©Œˆ(ƒGƒtƒFƒNƒg–³‚µ?)AŽ©”šAƒ^ƒoƒR‚ð‹z‚¤A”͈ÍUŒ‚
- HP‹zŽû‚Q‚Â(’Êí/–‚–@ji‰ñ•œƒGƒtƒFƒNƒg–³‚µ?jŽÀ‘•
-
- (db)
- skill_db.txt
- ƒXƒ‚[ƒLƒ“ƒO‚È‚Ç‚ðC³
- (map/)
- skill.c
- skill_castend_damage_id(),skill_castend_nodamage_id()C³
- battle.c
- battle_calc_misc_damage()C³
-
-E–¢ŠÓ’èƒAƒCƒeƒ€‚ª‘•”õ‚Å‚«‚È‚‚È‚è‚Ü‚µ‚½
-E–¢ŠÓ’èƒAƒCƒeƒ€‚ɃJ[ƒh‚ª‚³‚¹‚È‚‚È‚è‚Ü‚µ‚½
-
- pc.c
- pc_equipitem(),pc_insert_card()C³
- clif.c
- clif_use_card()C³
-
-Ebattle_athena.cnf‚ÉMOB‚Ì”z’uŠ„‡‚ð’è‹`‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- E”z’u”‚ª‚P‚ÌMOB‚ɂ‚¢‚Ä‚Í“K—p‚³‚ê‚Ü‚¹‚ñ
- EŒvŽZŒã‚Ì”z’u”‚ª‚P–¢–ž‚ÌꇂP‚ÉC³‚³‚ê‚Ü‚·B
-
- (conf/)
- battle_athena.cnf
- mob_count_rate’ljÁ
- (doc/)
- conf_ref.txt
- C³
- (map/)
- battle.c/battle.h
- struct BattleConfig ‚É mob_count_rate ƒƒ“ƒo’ljÁ
- npc.c
- npc_parse_mob()‚ÌC³
-
-Eƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…‚ª‘ŠŽè‚ª‚P•C‚Å‚à‚Æ‚è‚ ‚¦‚¸“–‚½‚é‚悤‚É‚È‚Á‚½B
-
- skill.c
- skill_castend_damage_id()C³
-
-EŠw¶–X쬃Cƒxƒ“ƒg‚ÌC³
-
- (conf/)
- npc_event_making.txt
- ƒAƒƒGƒxƒ‰(606)‚ðƒAƒƒG(704)‚ÉB
-
-EƒpƒPƒbƒgî•ñC³
-
- (doc/)
- client_packet.txt
- 0199ƒpƒPƒbƒgC³
-
---------------
-//0397 by ‚¢‚Ç
-
-Eƒ‚ƒ“ƒXƒ^[’è‹`ƒf[ƒ^(“ú–{Œê)‚Ì®—
- Enpc_monster25.txt‚ðnpc_monster.txt‚ɃŠƒl[ƒ€‚µA“à—e‚ð®—(Œ»Ýmob”:13450)
- E‚»‚ÌŒy—ʔłƂµ‚Änpc_monster_lite.txt‚ðì¬(Œ»Ýmob”:11959)
- Eã‹L‚ÌC³‚É‚ ‚킹‚Ämap_athena.cnf‚ðC³
-
---------------
-//0395 by ŒÓ’±—–
-
-EŽæ‚芪‚«MOB‚Ìs“®C³
- EƒAƒ“ƒNƒ‹‚Ȃǂňړ®‚Å‚«‚È‚¢ê‡Žå‚ɋ߂©‚È‚¢‚悤‚ÉC³
- EƒƒbƒN‚µ‚Ä‚¢‚é‚ÆŽå‚ɋߊñ‚鈗‚ð‚µ‚È‚¢‚悤‚ÉC³
- EŽå‚ªƒeƒŒƒ|[ƒg‚·‚é‚Æ’Ç‚¢‚©‚¯‚é‚悤‚ÉC³(•t‹ß10x10ƒ}ƒX’ö“x)
- EŽå‚Ì‚»‚΂ɂ¢‚é‚Æ‚«‚̓‰ƒ“ƒ_ƒ€•às‚ð‚µ‚È‚¢‚悤‚ÉC³
-
- mob.c
- mob_ai_sub_hard_mastersearch()C³
- mob_can_move()’ljÁ
- mob_ai_sub_hard()C³
-
-EMOB‚Ìs“®C³
- EƒXƒLƒ‹Žg—pƒfƒBƒŒƒCˆ—‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³
- E‰r¥‚Ì‚È‚¢ƒXƒLƒ‹‚Ítimer‚ðŽg‚í‚È‚¢‚悤‚ÉC³(Ž€–SŽžˆ—‘Îô)
-
- mob.c
- mobskill_use(),mobskill_use_id()C³
-
-EMOBƒGƒ‚[ƒVƒ‡ƒ“‚ÌŽÀ‘•
- EƒGƒ‚[ƒVƒ‡ƒ“‚ÌŽí—Þ‚ª‚í‚©‚ç‚È‚¢‚à‚Ì‚Í‘S‚Äu!v‚É‚È‚è‚Ü‚·B
- ”²‚¯‚Ä‚¢‚éƒf[ƒ^‚ð–„‚ß‚Ä‚‚ê‚é‚Æ‚¤‚ꂵ‚¢‚Å‚·B
-
- (db/)
- mob_skill_db.txt
- ‚¢‚‚‚©‚ÌMOB‚̃Gƒ‚[ƒVƒ‡ƒ“‚Ì€–Ú‚Ì’l1‚ÉŽí—Þ‚ð“ü‚ꂽB
-
- (map/)
- skill.c
- skill_castend_nodamage_id()C³
- clif.c/clif.h
- clif_emotion()’ljÁ
-
-EƒpƒPƒbƒg‰ðÍ.txt‚ðclient_packet.txt‚ɉü–¼•C³
-
- (doc/)
- client_packet.txt
- ƒGƒ‚[ƒVƒ‡ƒ“‚Ìà–¾’ljÁ
-
-E‚Ç‚¤‚â‚çŽæ‚芪‚«MOB‚ÌŽí—ނ͌¢ƒf[ƒ^‚¾‚Á‚½‚Á‚Û‚¢‚Å‚·B
- ‚µ‚©‚àMOB¢Š«‚ł͎艺¢Š«‚ƈႤMOB‚𢊫‚·‚é‚Ý‚½‚¢‚Å‚·‚ËB
- Ú‚µ‚¢l‚Ímob_skill_db.txt‚𒼂µ‚Ä‚‚ê‚é‚ÆB
-
---------------
-//0393 by ‚¢‚Ç
-
-EcharŽI‚Å‚ÌloginŽI‚̃|[ƒgÝ’è‚ð6900‚ɌŒ肵A•ÏX‚Å‚«‚È‚¢‚悤‚É‚µ‚½
-@(login‘¤‚Ń|[ƒg6900ŒÅ’è‚É‚È‚Á‚Ä‚¢‚½‚Ì‚Åchar‘¤‚à‚»‚ê‚ɇ‚킹‚Ü‚µ‚½B)
- char/char.c
- conf/char_athena.cnf
- doc/conf_ref.txt
-
---------------
-//0392 by ŒÓ’±—–
-
-EMOB‚Ìs“®C³
- E‰½ŒÌ‚©last_thinktick‚ª‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢–â‘èC³
- Eã‚ÉŠÖ˜A‚µ‚ÄPC‚ª‹ß‚‚É‚¢‚Ä‚àŽè”²‚«ˆ—‚ªs‚í‚ê‚é–â‘èC³
- i‚Ç‚¤‚â‚牊ú‚©‚ç‚̃oƒO‚¾‚Á‚½–Í—lH ‚±‚̃oƒO‚ÆA
- V‚µ‚¢Žè”²‚«ˆ—‚ÌŽd—l‚ªƒ^ƒbƒO‚ð‘g‚ñ‚ÅŽc‘œ‚ðì‚Á‚Ä‚¢‚½–Í—lj
- EŽæ‚芪‚«MOB—p‚ÌAIˆ—’ljÁi‚Ü‚¾‰ö‚µ‚¢‚Å‚·j
- EMOB‚̃XƒLƒ‹ƒfƒBƒŒƒC‚ðƒXƒLƒ‹€–Ú‚²‚Æ‚ÉŽ‚‚悤‚É•ÏX
- EƒXƒLƒ‹ƒfƒBƒŒƒC‚ª‘å‚«‚È€–ڂł̓I[ƒo[ƒtƒ[‚µ‚Ä‚¢‚½–â‘è‚ðC³
-
- map.h
- struct mob_data‚Ì skilldelay‚ð”z—ñ‚É‚µ‚Äunsigned int‚É•ÏX
- mob.h
- struct mob_skill‚Ìcasttime,delay‚ðint‚É•ÏX
- mob.c
- mob_ai_sub_hard_mastersearch()’ljÁ
- mob_changestate(),mob_delete(),mob_catch_delete(),mob_damage(),
- mobskill_use(),mobskill_use_id(),mobskill_use_pos(),
- mobskill_castend_id(),mobskill_castend_pos(),
- mob_ai_sub_hard(),mob_ai_sub_lazy()‚È‚ÇC³
-
-EMOBƒXƒLƒ‹‚̎艺¢Š«‚ƃ‚ƒ“ƒXƒ^[¢Š«ŽÀ‘•
- Emob_skill_db.txt‚Ì‘Ž®•ÏXiÅŒã‚É’l‚ð‚P‚’ljÁAŽæ‚芪‚«MOB‚ÌIDj
- EŽæ‚芪‚«MOB‚ª‚í‚©‚ç‚È‚©‚Á‚½‚à‚̂̓Rƒƒ“ƒg‰»‚µ‚Ä‚¢‚Ü‚·
- ‚í‚©‚él‚Í“ü—Í‚æ‚낵‚‚¨Šè‚¢‚µ‚Ü‚·B
- EŒ»Ý‚ÍŽæ‚芪‚«‚͈ê“x“|‚µ‚½‚畦‚«‚È‚¨‚µ‚Ü‚¹‚ñB
- Eƒ{ƒX‚ªƒeƒŒƒ|[ƒg‚µ‚Ä‚àŽæ‚芪‚«‚Í’Ç‚¢‚©‚¯‚Ü‚¹‚ñB
- E–{ŽI‚Å‚Ç‚¤‚È‚Á‚Ä‚é‚Ì‚©’m‚ç‚È‚¢‚Ì‚ÅAŠÔˆá‚Á‚Ä‚éꇂ͋³‚¦‚Ä‚‚¾‚³‚¢B
-
- (db/)
- mob_skill_db.txt
- Žè‰º¢Š«‚Ȃǂ̃f[ƒ^C³
-
- (map/)
- skill.c
- skill_castend_nodamage_id()C³
-
---------------
-//0391 by Ž€_
-
-Eƒyƒbƒg‚̈ړ®’†‚ɃpƒtƒH[ƒ}ƒ“ƒX‚ð‚·‚é‚ƃyƒbƒg‚ª’âŽ~‚·‚é‚悤‚É•ÏXB
- (ƒyƒbƒg‚̈ʒu‚ª‚¸‚ê‚邽‚ßC³‚µ‚Ü‚µ‚½B)
- pet.c
- pet_performance() C³B
-EŽ€‚ñ‚¾ƒ‚ƒ“ƒXƒ^[‚Í‚Ç‚ñ‚Ès“®‚à‚Æ‚ê‚È‚¢‚悤‚É•ÏXB(‚±‚ê‚Å–³“G
- ƒ‚ƒ“ƒXƒ^[‚ª‚¢‚È‚‚È‚é‚Æ‚¢‚¢‚Å‚·‚ª...)
- mob.c
- mob_changestate(),mob_delete(),mob_catch_delete(),mob_damage(),
- mob_ai_sub_hard(),mob_ai_sub_lazy() C³B
-EPCANPCA°ƒAƒCƒeƒ€‚ªŽg‚¤ID‚͈̔͂𒲮B
- °ƒAƒCƒeƒ€‚Í0‚©‚ç500000‚Ü‚Å‚ÅPC‚Í500000‚©‚ç100000000ANPC
- (ƒ‚ƒ“ƒXƒ^[‚ðŠÜ‚ß‚Ä)‚Í110000000‚©‚ç–ñ21‰‚Ü‚Å‚É‚È‚è‚Ü‚·B
- (-‚ðŠÜ‚ß‚é‚Æ‚à‚Á‚Ɣ͈͂ªL‚‚È‚è‚Ü‚·‚ª‚³‚·‚ª‚É‚»‚±‚Ü‚Å‚Í•K—v‚È‚¢‚Æ
- Žv‚¢‚Ü‚·‚Ì‚Å...)
- map.h
- MAX_FLOORITEM ’ljÁ(‚±‚ê‚ð•Ï‚¦‚é‚Æ°ƒAƒCƒeƒ€‚Ìő唂ð•Ï‚¦‚é
- ‚±‚Æ‚ª‚Å‚«‚Ü‚·B¡‚Í100000‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚½‚¾‚±‚ê‚Í•K‚¸
- 500000ˆÈ‰º‚É‚µ‚Ä‚‚¾‚³‚¢B‚»‚¤‚µ‚È‚¢‚Ƴ‚µ‚“®‚‚©‚Ç‚¤‚©
- •ÛØ‚Å‚«‚Ü‚¹‚ñB)
- map.c
- map.h‚ɇ‚킹‚Ä‚µC³B
- npc.h
- START_NPC_NUM ’ljÁB
- npc.c
- npc.h‚ɇ‚킹‚Ä‚µC³B
- login.h
- START_ACCOUNT_NUM‚ÆEND_ACCOUNT_NUM ’ljÁB
- login.c
- login.h‚ɇ‚킹‚ÄC³BEND_ACCOUNT_NUMˆÈã‚Éaccount‚ð
- ì‚ê‚È‚¢‚悤‚É•ÏXB
-EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚É•ŠíŒ¤‹†‚ð‚Q‰ñ“K—p‚·‚é‚悤‚É•ÏXB
- (Œ‹‹Ç‚ÍŒ³‚É–ß‚·‚±‚Æ‚É‚È‚è‚Ü‚µ‚½...^^;)
- battle.c
- Damage battle_calc_weapon_attack() C³B
-Emob‚̃XƒLƒ‹Žg—p‚ðbattle_athena.cnf‚ÅŒˆ‚ß‚é‚悤‚É•ÏXB
- mob.c
- mobskill_use() C³B
- battle.h
- battle.c
- struct Battle_Config‚Émob_skill_use’ljÁB
- battle_athena.cnf
- mob_skill_use’ljÁB(ݒ肵‚È‚¢‚Æno‚Å‚·B)
-Ebattle_athena.cnf
- mob‚ð“ñd‚Å“Ç‚ß‚È‚¢‚悤‚Énpc: conf/npc_monster.txt‚ðíœB
- (ÅV‚Ínpc_monster25.txt‚È‚Ì‚Å...)
-
---------------
-//390 by ŒÓ’±—–
-
-Eƒo[ƒWƒ‡ƒ“î•ñŠ“¾•”•ª‚ð‚µ•ÏX
- EMODƒo[ƒWƒ‡ƒ“‚ð’è‹`‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½BÚׂÍversion.h‚ðB
- ‹C‚ªŒü‚¢‚½‚Æ‚«‚©A‘å‚«‚ÈXV‚ª‚ ‚é‚Æ‚«‚È‚Ç‚É•ÏX‚µ‚Ä‚‚¾‚³‚¢B
- Eƒo[ƒWƒ‡ƒ“checkŽž‚Ìset eofƒƒO‚ªo‚È‚¢‚悤‚ɃpƒPƒbƒg7532’ljÁB
-
- (common/)
- version.h
- MODƒo[ƒWƒ‡ƒ“‚ð’è‹`‚Å‚«‚é‚悤‚ÉB
- (tool/)
- checkversion
- MODƒo[ƒWƒ‡ƒ“‚ð•\Ž¦‚·‚é‚悤‚ÉB
- (login/char/map)
- login.c/char.c/clif.c
- MODƒo[ƒWƒ‡ƒ“‚̈—’ljÁA
- ƒpƒPƒbƒg7532iØ’fjˆ—’ljÁB
-
-E‚»‚Ì‘¼FXC³
- E‚±‚Ü‚²‚Ü‚µ‚½C³‚΂©‚è‚Å‚·‚ªA‚ ‚Ü‚èŠo‚¦‚Ä‚¢‚Ü‚¹‚ñB
- EMOBƒXƒLƒ‹ðŒ‚Åslavelt,attackpcgtˆ—ŽÀ‘•i–¢ƒeƒXƒgjB
- EMOB‚̎艺¢Š«‚Ì‚½‚ß‚Ì‹@\’ljÁi‚Ü‚¾¢Š«‚Å‚«‚Ü‚¹‚ñjB
- E”͈̓XƒLƒ‹Œø‰Ê”͈͂Ɏ€–SPC‚ª‚¢‚é‚ÆŽI‚ª—Ž‚¿‚éƒoƒOC³B
- EMOBŽc‘œ‚ªo‚È‚c‚È‚Á‚Ä‚½‚ç‚¢‚¢‚ÈB
-
- (map/)
- mob.c/mob.h/map.h/battle.c
- FX’ljÁ
-
- (db/)
- mob_skill_db.txt
- ƒ‹[ƒgŽžˆ—‚ÆA‘®«•ÏXƒXƒLƒ‹‚̃Rƒƒ“ƒg‚ðŠO‚µ‚½B
- i‘®«•ÏX‚Í–{ŽI‚Å“®‚¢‚Ä‚È‚¢‚炵‚¢‚à‚Ì‚àƒRƒƒ“ƒg‚ðŠO‚µ‚Ä‚Ü‚·B
- –â‘肪‚ ‚éꇂÍĂуRƒƒ“ƒg‰»‚µ‚Ä‚‚¾‚³‚¢j
-
---------------
-//389 by ‚¢‚Ç
-
-E388‚Ì•ÏX
- ƒo[ƒWƒ‡ƒ“î•ñ‚ðcommon/version.h“à‚̒蔂ðŽg—p‚·‚é‚悤‚É•ÏX
-
---------------
-//388 by ŒÓ’±—–
-
-Eƒo[ƒWƒ‡ƒ“î•ñŠ“¾ƒc[ƒ‹“Y•t
- Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B
- Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B
- Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B
-
- ƒo[ƒWƒ‡ƒ“‚ðŠm”F‚·‚é—p“r‚æ‚è‚ÍAƒT[ƒo[‚̶‘¶Šm”F—p‚Æ‚¢‚Á‚½‚©‚ñ‚¶‚Å‚·
- ƒpƒPƒbƒg7530/7531‚ÌÚׂ̓\[ƒX‚ðŒ©‚Ä‚‚¾‚³‚¢B
-
- (tool/)
- checkversion
- ƒo[ƒWƒ‡ƒ“Šm”Fƒc[ƒ‹PerlƒXƒNƒŠƒvƒg
-
- (login/)
- login.c
- ƒpƒPƒbƒg7530/7531‚̈—’ljÁ
- (char/)
- char.c
- ƒpƒPƒbƒg7530/7531‚̈—’ljÁ
- (map/)
- clif.c
- ƒpƒPƒbƒg7530/7531‚̈—’ljÁ
-
-E384ˆÈ‘O‚Ìathena.txt‚à“Ç‚Ýž‚ß‚é‚悤‚É‚µ‚Ü‚µ‚½
- Econvert‚ª–Ê“|‚ÈlŒü‚¯B
- E³‚µ‚“Ç‚Ýž‚ß‚é•ÛØ–³‚µBƒoƒbƒNƒAƒbƒv‚ð–Y‚ꂸ‚ÉB
-
- (char/)
- char.c
- 384‚Ì•ûŽ®‚Å“Ç‚Ýž‚ß‚È‚¢ƒf[ƒ^‚Í384ˆÈ‘O‚Ì•ûŽ®‚àŽŽ‚·‚悤‚ÉB
-
-Econf_ref.txt/help.txt/getaccountC³
- help.txt
- petƒRƒ}ƒ“ƒh‚Ìà–¾’ljÁ
- (doc/)
- conf_ref.txt
- petŠÖ˜A‚ÌÝ’è‚Ìà–¾’ljÁ
- (tool/)
- getlogincount
- •\Ž¦‚ÌC³
-
---------------
-//387 by ‚¢‚Ç
-EconfƒtƒHƒ‹ƒ_“à‚ÌNPC’è‹`ƒf[ƒ^‚Ì®—
- ˆÈ‰º‚̃tƒ@ƒCƒ‹‚ð휂µ‚Ü‚µ‚½
- npc_kafraJ.txt
- npc_mind_prtmons.txt
- npc_script2J.txt(npc_event_mobtim.txt‚É“¯‚¶‚à‚Ì‚ª‚ ‚Á‚½‚½‚ß)
- npc_testJ.txt(‚Ù‚Ú“¯‚¶‚±‚Æ‚ª@ƒRƒ}ƒ“ƒh‚Åo—ˆ‚邽‚ß)
- npc_warp25.txt(npc_warp.txt‚É“‡)
-
- ˆÈ‰º‚̃tƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ÏX‚µ‚Ü‚µ‚½
- npc_monster3.txt -> nop_monster2E.txt
- npc_monster3J.txt -> npc_monster25.txt
- npc_monster.txt -> npc_monsterE.txt
- npc_monsterJ.txt -> npc_monster.txt
- npc_sampleJ.txt -> npc_sample.txt
- npc_script3j.txt -> npc_script2.txt
- npc_script25J.txt -> npc_town_lutie.txt
- npc_shop1J.txt -> npc_shop_test.txt
- npc_shop2J.txt -> npc_shop_mobtim.txt
- npc_shop3J.txt -> npc_shop2.txt
- npc_shop.txt -> npc_shopE.txt
- npc_shopJ.txt -> npc_shop.txt
- npc_testJ.txt -> npc_test.txt
- npc_warp3.txt -> npc_warp2.txt
- npc_warp4.txt -> npc_warp25.txt
-
-Eƒ}ƒbƒv’è‹`‚̒ljÁ
- ƒWƒ…ƒm[ƒAƒbƒvƒf[ƒg‚ŒljÁ‚³‚ê‚éƒ}ƒbƒv‚ÆAŠØŽI“ÆŽ©(?)‚̃NƒCƒYƒ][ƒ“
- (ƒRƒ‚ƒhƒAƒbƒvƒf[ƒg)‚Æ“V’ÃAƒbƒvƒf[ƒg‚̃}ƒbƒv’è‹`‚ð’ljÁ
- Œ»ÝA“úˆÆ‚É–³‚¢‚à‚Ì‚ÉŠÖ‚µ‚Ă̓Rƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚¢‚ÜB
- conf/map_athena.cnf
-
---------------
-//385 by ŒÓ’±—–
-
-EMOB‚Ìs“®C³
- EŽè”²‚«ˆ—‚ňړ®‚µ‚È‚¢ƒ‚[ƒh‚ÌMOB‚à•à‚–â‘èC³
- EMOB‚ð“|‚µ‚½‚Æ‚«AÄspawnŽž‚ª‚¨‚©‚µ‚È’l‚É‚È‚éꇂª‚ ‚é–â‘èC³
- iMOB‚ª•¦‚©‚È‚‚È‚é–â‘肪C³‚³‚ꂽ‚Í‚¸j
- EMOB‚̃[ƒv‚ÅꊌŸõ‚É1000‰ñŽ¸”s‚µ‚½‚猳‚ÌꊂÉo‚é‚悤‚ÉC³
- EMOB‚ð‰r¥’†‚É“|‚·‚ÆAƒ^ƒCƒ}[‚ð휂·‚é‚悤‚ÉC³
-
- mob.c
- mob_delete(),mob_catch(),mob_damage(),
- mob_ai_sub_lazy(),mob_ai_sub_hard()‚È‚ÇC³
- mobskill_deltimer()’ljÁ
-
---------------
-//0384 by Ž€_
-
-EƒyƒbƒgŽÀ‘•B
-Žv‚Á‚½‚æ‚è’·‚‚©‚©‚è‚Ü‚µ‚½BˆêŽü‚à‚©‚©‚Á‚½‚¹‚¢‚ʼn½ˆ‚ðC³‚µ‚½‚©
-Šo‚¦‚Ä‚È‚¢–â‘肪‚ ‚è‚Ü‚·‚ª... ‚»‚ê‚Å”O‚ׂ̈Émap‚Æchar‚̃tƒ@ƒCƒ‹‚Í‘S‚Ä
-ŠÜ‚߂ăAƒbƒv‚µ‚Ü‚·B
-‚»‚ê‚Æmakefile‚Æathena.sh‚ÍŽ©•ª‚ªŽg‚Ä‚¢‚镨‚Å‚·B
-Yare-launcher‚ÍŽg‚Ä‚Ü‚¹‚ñ‚ª‚¢‚‚àŽI‚ÌŽÀsƒtƒ@ƒCƒ‹‚ÅŽÀs‚µ‚Ä‚¢‚Ü‚·‚Ì‚Å...
- char/char.cAchar/char.hAchar/inter.cAchar/makefile C³B
- char/int_pet.cAchar/int_pet.h ’ljÁB
- map/makefile C³B
- map/intif.cAmap/intif.hAmap/map.cAmap/map.hAmap/mob.cAmap/mob.hA
- map/npc.cAmap/npc.hAmap/battle.cAmap/battle.hAatcomand.cAmap/pc.cA
- map/clif.cAmap/clif.hAmap/script.c FXC³B
- map/pet.cAmap/pet.h ‚Í–w‚Ç‚ðŽ©•ª‚Ì•¨‚É‘‚«Š·‚¦‚Ü‚µ‚½B
- common/mmo.h C³B
- db/pet_db.txt C³B
- db/item_db.txt C³B(Œg‘Ñ—‘›z‰»‹@‚Ìbpet ƒXƒNƒŠƒvƒg‚ª”²‚¯‚Ä‚¢‚½‚Ì‚Å
- “ü‚ꂽ‚¾‚¯‚Å‚·‚ª...)
- doc/INTERŽIƒpƒPƒbƒg.txt‚Ì–¼‘O‚ðinter_server_packet.txt‚É•ÏX‚ƃyƒbƒg‚Ì
- •Û‘¶“™‚ÉŽg‚¤ƒpƒPƒbƒg‚ð’ljÁB
-* ¡“x‚̃yƒbƒgŽÀ‘•‚É‚æ‚èƒLƒƒƒ‰ƒtƒ@ƒCƒ‹‚Ì\‘¢‚ª•Ï‚í‚èˆÈ‘O‚Ì•¨‚ƌ݊·‚Å‚«‚È‚¢
- ‚Ì‚Å tool/convert.c ‚ð’ljÁ‚µ‚Ü‚µ‚½B
- ’P“ƂŃRƒ“ƒpƒCƒ‹‚Å‚«‚Ü‚·‚̂ŃRƒ“ƒpƒCƒ‹‚µ‚½‚ ‚ÆŽÀs‚µ‚ăLƒƒƒ‰
- ƒtƒ@ƒCƒ‹‚ð•ÏŠ·‚µ‚Ä‚‚¾‚³‚¢B‚»‚¤‚µ‚È‚¢‚ƃLƒƒƒ‰‚ª‘S•””ò‚Ñ‚Ü‚·‚Ì‚Å...
-* ƒyƒbƒg‚Ìe–§“x‚ª0‚É‚È‚é‚ƃyƒbƒg‚Í‚»‚Ìê‚Å“®‚¯‚È‚‚È‚è‚»‚Ìó‘Ô‚Å‘¼‚Ì
- ƒ}ƒbƒv‚Ɉړ®‚·‚é‚©I—¹‚·‚é‚ƃyƒbƒg‚ÍÁ–Å‚µ‚Ü‚·Bˆê‰žƒyƒbƒg‚Ì“¦‘–‚ð
- ŽÀ‘•‚·‚é‚‚à‚è‚Åì‚Á‚½‚Ì‚Å‚·‚ª–{ŽI‚É‚ ‚Á‚Ä‚é‚©‚Ç‚¤‚©‚Í‚í‚©‚è‚Ü‚¹‚ñB
-* ˆÚ“®‘¬“x‚ª’x‚¢ƒyƒbƒg‚Ìꇗ£‚ê‰ß‚¬‚é‚Ƃ‚¢‚Ä—ˆ‚ê‚È‚‚È‚è‚Ü‚·B‚Å‚à
- ‚±‚Ìꇃ}ƒbƒv‚ðˆÚ“®‚µ‚Ä‚à‚¿‚á‚ñ‚Ƃ‚¢‚Ä—ˆ‚Ü‚·B
- Á–Å‚µ‚½‚è‚Í‚µ‚Ü‚¹‚ñB
-* ˆÚ“®‘¬“x‚ª‘¬‚¢ƒyƒbƒg‚̓Lƒƒƒ‰‚æ‚èæ‚Ɉړ®‚µ‚Ü‚·B–{ŽI‚Ì•û‚ª‚Ç‚¤‚È‚Ì‚©
- ‚í‚©‚ç‚È‚¢‚̂Ńyƒbƒg‚̈ړ®‚̓‚ƒ“ƒXƒ^[‚̈ړ®‘¬“x‚ňړ®‚·‚é
- ‚悤‚É‚µ‚Ü‚µ‚½B
-Ebattle_athena.cnf
-pet_catch_rate ’ljÁB
- ƒyƒbƒg‚̕ߊl”{—¦‚ðݒ肵‚Ü‚·B(ݒ肵‚È‚¢‚Æ100)
- Šî–{“I‚Ƀyƒbƒg‚̕ߊl‚ÉŽg‚Á‚Ä‚éŒöŽ®‚Í
- (pet_db.txt‚̕ߊl—¦ + (ƒLƒƒƒ‰ƒŒƒxƒ‹ - ƒ‚ƒ“ƒXƒ^[ƒŒƒxƒ‹)*0.3 + luk *0.2)
- * (2 - ƒ‚ƒ“ƒXƒ^[‚ÌŒ»ÝHP/ƒ‚ƒ“ƒXƒ^[‚ÌÅ‘åHP)
- ‚É‚È‚è‚Ü‚·BŽ©•ª‚È‚è‚Éì‚Á‚½•¨‚Å‚·‚Ì‚Å–{ŽI‚Æ‚Í‚©‚È‚è‚Ì
- ˆá‚¢‚ª‚ ‚é‚©‚à’m‚ê‚Ü‚¹‚ñB(ƒ‚ƒ“ƒXƒ^[‚ÌHP‚ðŒ¸‚ç‚¹‚ÎŒ¸‚ç‚·’ö•ßŠl—¦‚ª
- オ‚éŽd‘g‚Ý‚Å‚·‚ª...)
-pet_rename ’ljÁB
- ƒyƒbƒg‚Ì–¼‘O‚ð•ÏX‚·‚é‚©‚Ç‚¤‚©‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æno)
- yes‚͉½“x‚Å‚à–¼‘O‚Ì•ÏX‚ª‰Â”\B
- no‚͈ê“x•ÏX‚·‚é‚Æ‚à‚¤•ÏX•s‰Â”\‚É‚È‚é
-pet_hungry_delay_rate ’ljÁB
- ƒyƒbƒg‚Ì• ‚ªŒ¸‚鎞ŠÔ‚Ì”{—¦‚Å‚·B(ݒ肵‚È‚¢‚Æ100)
- ”{—¦‚ª‚‚¢‚Æ• ‚ªŒ¸‚è“ï‚‚È‚è‚Ü‚·
-mvp_exp_rate •ÏXB
- ‚·‚Å‚Éstruct mob_db‚Ìmexpper‚̓Sƒ~‚É‚È‚Á‚Ä‚¢‚é‚Ì‚Å(MVP EXP‚Í
- MVPƒAƒCƒeƒ€‚ªŽæ‚ê‚È‚©‚Á‚½ê‡“ü‚é‚̂ňӖ¡‚ª‚ ‚è‚Ü‚¹‚ñB)
- MVP EXP‚Ì—Ê‚Ì”{—¦‚É‚È‚é‚悤‚É•ÏXB(mob.c‚ðC³)
-Echar_athena.cnf
-autosave_time ’ljÁB
- Ž©“®•Û‘¶‚·‚鎞ŠÔ‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æ300)
- šdˆÊ‚Í•b‚Å‚·B(ƒtƒ@ƒCƒ‹‚É•Û‘¶‚·‚鎞ŠÔ‚ÌŠÔŠu‚Å‚·B)
-Emap_athena.cnf
-autosave_time ’ljÁB
- Ž©“®•Û‘¶‚·‚鎞ŠÔ‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æ60)
- šdˆÊ‚Í•b‚Å‚·B(ƒLƒƒƒ‰ŽI‚Ƀf[ƒ^‚𑗂鎞ŠÔ‚ÌŠÔŠu‚Å‚·B‚±‚ê‚Í
- ƒtƒ@ƒCƒ‹‚É•Û‘¶‚·‚鎞ŠÔ‚ÌŠÔŠu‚¶‚á‚ ‚è‚Ü‚¹‚ñB)
-Einter_athena.cnf
-pet_txt ’ljÁB
- ƒyƒbƒg‚̃f[ƒ^‚ð•Û‘¶‚·‚éƒtƒ@ƒCƒ‹‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æpet.txt)
-E@makepet ƒRƒ}ƒ“ƒh’ljÁB
- ƒyƒbƒg‚ÌŽÀ‘•‚É‚æ‚Á‚Ä@item‚Åì‚Á‚½—‘‚ÍŽg‚Á‚Ä‚à–³‘Ê‚É‚È‚è‚Ü‚·‚Ì‚Å
- ‚±‚ê‚ðŽg‚Á‚Ä—‘‚ðì‚Á‚Ä‚‚¾‚³‚¢B
- @makepet <ƒ‚ƒ“ƒXƒ^[‚ÌID or —‘‚ÌID>
-E@petfriendly ƒRƒ}ƒ“ƒh’ljÁB
- @petfriendly <”Žš>
- ƒyƒbƒg‚ð˜A‚ê‚Ä‚¢‚鎞‚Ƀyƒbƒg‚Ìe–§“x‚ð•ÏXB(0~1000)
-E@pethungry ƒRƒ}ƒ“ƒh’ljÁB
- @pethungry <”Žš>
- ƒyƒbƒg‚ð˜A‚ê‚Ä‚¢‚鎞‚Ƀyƒbƒg‚Ì–ž• “x‚ð•ÏXB(0~100)
-E@petrename ƒRƒ}ƒ“ƒh’ljÁB
- @petrename
- ƒyƒbƒg‚ð˜A‚ê‚Ä‚¢‚鎞‚Ƀyƒbƒg‚Ì–¼‘O‚ð•ÏX‚Å‚«‚é‚悤‚É•ÏXB
-Eint_guild.cAint_party.c “Ç‚Ýž‚Þƒtƒ@ƒCƒ‹‚ɃGƒ‰[‚ª‚ ‚Á‚Ä‚àƒvƒƒOƒ‰ƒ€‚ð
- I—¹‚¹‚¸‚Éi‚ނ悤‚É•ÏXB
-Epc_walk 123 != 1234 “™‚̃Gƒ‰[‚ªo‚È‚¢‚悤‚É
- if((i=calc_next_walk_step(sd))>0) {
- sd->walktimer=add_timer(tick+i/2,pc_walk,id,sd->walkpath.path_pos);
- ‚ð
- if((i=calc_next_walk_step(sd))>0) {
- i = i/2;
- if(i <= 0)
- i = 1;
- sd->walktimer=add_timer(tick+i,pc_walk,id,sd->walkpath.path_pos);
- ‚̂悤‚É•ÏX‚µ‚Ü‚µ‚½B
- tick‚ª“¯‚¶”’l‚É‚È‚é‚Ì‚ð–h‚¢‚½‚Ì‚Å‚·‚ª‚±‚ê‚Å‚Ç‚ñ‚ȉe‹¿‚ªo‚é‚©‚Í
- ‚³‚Á‚Ï‚è‚í‚©‚è‚Ü‚¹‚ñB
- pc.cAmob.c‚ðC³B
- ‚Å‚à‚±‚ÌC³‚ð‚µ‚Ä‚à˜A‘±‚ŃNƒŠƒbƒN‚µ‚½‚è‚·‚é‚ƃLƒƒƒ‰‚ª‚µ‚΂ç‚
- Ž~‚Ü‚é‚悤‚Å‚·B(ƒyƒbƒg‚Ì‚¹‚¢‚ÆŽv‚¢‚Ü‚µ‚½‚ªƒyƒbƒg‚ª‚È‚‚Ä‚à
- “¯‚¶‚¾‚Á‚½‚Ì‚Å‘¼‚ÌŒ´ˆö‚©‚Æ...)
-* doc/code_ref.txt‚Æhelp.txt‚Í–Ê“|‚‚³‚¢‚Ì‚ÅC³‚µ‚Ä‚Ü‚¹‚ñB
-Egm_all_skill: yes‚Å2-2‚̃XƒLƒ‹‚à•\Ž¦‚³‚ê‚é‚悤‚É•ÏXB(ŽŽ‚¢‚¹‚Í‚¢‚Ü‚¹‚ñ‚ª...)
- pc.c
- pc_calc_skilltre() C³B
-EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚̃_ƒ[ƒWŒvŽZ‚ðC³B
- •ŠíŒ¤‹†‚ð“ñdŒvŽZ‚µ‚Ä‚¢‚½‚Ì‚ÅC³B
- battle.c
- Damage battle_calc_weapon_attack() C³B
-
---------------
-//381 by ŒÓ’±—–
-
-EMOB‚Ìs“®C³
- EPC‚Ì‚¢‚È‚¢ƒ}ƒbƒv‚ÌMOB‚ÍŽžXƒ[ƒv‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- EPC‚Ì‚¢‚éƒ}ƒbƒv‚ÌMOB‚Í•à‚ˆÈŠO‚ÉAŽžX•¦‚«’¼‚·‚悤‚É‚È‚è‚Ü‚µ‚½
- i‚±‚ê‚Ü‚½ƒpƒtƒH[ƒ}ƒ“ƒX‚ɉe‹¿‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñF‚µd‚‚È‚é‚©‚àj
- EŽè”²‚«ˆ—‚ŃuƒƒbƒN‚Ì—LŒø”»’è‚ðs‚¤‚悤‚É‚µ‚Ü‚µ‚½
- iHP–³ŒÀMOB–â‘èC³Hj
- Eƒ‹[ƒgŽžƒXƒLƒ‹Žg—p‹@\ŽÀ‘•
-
- mob.c/mob.h
- mob_ai_sub_lazy(),mob_ai_sub_hard()C³
- MSS_LOOT’ljÁ,mob_readskilldb()C³
-
-EMOBƒXƒLƒ‹‚Ì‘®«•ÏX‚ðŽÀ‘•‚µ‚Ü‚µ‚½B
-
- map.h
- struct mob_data‚É def_eleƒƒ“ƒo’ljÁ
- mob.c
- mob_spawn()‚Ådef_ele‚ðƒZƒbƒg‚·‚é‚悤‚É•ÏX
- battle.c
- battle_get_element()‚Ådef_ele‚ð“ǂނ悤‚É•ÏX
- skill.c
- skill_castend_nodamage_id()C³
-
-EƒNƒ@ƒOƒ}ƒCƒA‚ÌŒø‰Ê”͈͂©‚ço‚é‚ÆŒø‰Ê‚ªØ‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-
- skill.c
- ƒ†ƒjƒbƒgŒnˆ—C³
-
---------------
-//380 by ‚`‚Ìl
-
-EƒJ[ƒgƒŒƒ”ƒHƒŠƒ…[ƒVƒ‡ƒ“‚̃_ƒ[ƒWŒvŽZŽÀ‘•
- battle.c‚ð•ÏXB
-
-CHRIS‚³‚ñA‚ ‚肪‚Æ‚¤ŒäÀ‚¢‚Ü‚·B
-ƒmƒbƒNƒoƒbƒNŽÀ‘•‚Å‚«‚È‚‚ÄA¢‚Á‚Ä‚Ü‚µ‚½i„ƒG
-
---------------
-//379 by CHRIS
-
-EƒJ[ƒgƒŒƒ”ƒHƒŠƒ…[ƒVƒ‡ƒ“‚ÌŽÀ‘•
- skill.c‚Æbattle.c‚ð•ÏXB
-
-Eƒ}ƒOƒiƒ€ƒuƒŒƒCƒN‚ɃmƒbƒNƒoƒbƒN‚ð’ljÁB
- battle.c‚ð•ÏXB
-
-iƒ\[ƒX‚ð˜M‚Á‚½‚͉̂‚ß‚Ä‚È‚Ì‚ÅA—L‚Á‚Ä‚é‚©‚Ç‚¤‚©•ª‚©‚è‚Ü‚¹‚ñ‚ªAŽ©•ª‚Å‚Ío—ˆ‚Ü‚µ‚½Bj
-iƒvƒƒOƒ‰ƒ€ŠÖŒW‚̑Ђ𔃂Á‚ĕ׋‚µ‚ĉ‚߂ĘM‚Á‚½‚Ì‚Å‚·EEEBƒKƒ“ƒoƒŠƒ}ƒXIBj
-
---------------
-//377 by ŒÓ’±—–
-
-EMOB‚Ìs“®C³
- E‹ß‚‚ÉPC‚Ì‚¢‚È‚¢MOB‚ªŽžXƒ[ƒv‚·‚éŽd—l‚ðŽ~‚ß‚Ü‚µ‚½B
- EPC‚Ì‚¢‚È‚¢ƒ}ƒbƒv‚ÌMOB‚Í‘S‚“®‚©‚È‚‚È‚è‚Ü‚µ‚½B
- EPC‚Ì‚¢‚éƒ}ƒbƒv‚ÅA‹ß‚‚ÉPC‚Ì‚¢‚È‚¢MOB‚ÍŽžX•à‚‚悤‚É‚È‚è‚Ü‚µ‚½B
- E‚»‚Ì‘¼×‚©‚¢‚Æ‚±‚ëC³
- iƒpƒtƒH[ƒ}ƒ“ƒX‚ɉe‹¿‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñF‚µd‚‚È‚é‚©‚àj
-
- mob.c
- mob_randomwalk()’ljÁ
- mob_ai_sub_lazy(),mob_ai_sub_hard()C³‚È‚Ç
-
-EƒXƒLƒ‹C³
- EMOB‚ªƒeƒŒƒ|[ƒg‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-
- mob.c
- mob_warp()’ljÁ
- skill.c
- skill_castend_nodamage_id()C³
-
-EƒXƒe[ƒ^ƒXˆÙí‚̈ꕔ‚ðŽÀ‘•/C³
- EPC/MOB‚Æ‚à‚É‘¬“xŒ¸‚ÌŒø‰Ê‚ªŒ»‚ê‚é‚悤‚ÉiAGI‚Ì•\Ž¦‚Í•Ï‚í‚炸j
- EPC‚̃Gƒ“ƒWƒFƒ‰ƒXAƒCƒ“ƒ|ƒVƒeƒBƒIƒ}ƒkƒXA‘¬“x㸂̌ø‰Ê‚ðC³
- EMOB‚Ì2HQAƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…AƒGƒ“ƒWƒFƒ‰ƒXAƒCƒ“ƒ|ƒVƒeƒBƒIƒ}ƒkƒXA
- ‘¬“xã¸/Œ¸AƒOƒƒŠƒAAƒuƒŒƒbƒVƒ“ƒO‚È‚Ç‚ÌŒø‰ÊŽÀ‘•
- E‡–°A“€Œ‹AƒXƒ^ƒ“‚Ì•K’†Œø‰ÊŽÀ‘•
- E‡–°‚̃NƒŠƒeƒBƒJƒ‹”{Œø‰ÊŽÀ‘•
- EˆÃ•‚Ì–½’†—¦A‰ñ”𗦌¸Œø‰ÊŽÀ‘•
- EŽô‚¢‚ÌATKŒ¸Œø‰ÊALUKŒ¸Œø‰ÊŽÀ‘•
-
- battle.c
- battle_get_*()C³
- battle_calc_weapon_damage()C³
- mob.c
- mob_get_speed(),mob_get_adelay()’ljÁ
- pc.c
- pc_calcstatus()C³
-
-Eitem_value_db.txt‚ŃAƒCƒeƒ€‚̉¿Ši‚ðÝ’è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- E‰¿Šiƒf[ƒ^‚ðƒI[ƒo[ƒ‰ƒCƒh‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B
- E‚±‚ê‚Åitem_db2.txt‚ð—pˆÓ‚·‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñB
-
- (db/)
- item_value_db2.txt
- item_db2.txt‚̉¿Šiƒf[ƒ^B
- item_value_db.txt‚ɃŠƒl[ƒ€‚·‚é‚Æ“Ç‚Ýž‚Ý‚Ü‚·B
- (map/)
- itemdb.c
- itemdb_readdb()C³
-
-EŒÃ–Ø‚ÌŽ}‚ðŽg‚¤‚ÆMOB‚Ì–¼‘O‚ª 0 ‚É‚È‚é–â‘è‚ÌC³
-
- (db/)
- item_db.txt
- ŒÃ–Ø‚ÌŽ}‚̃f[ƒ^C³
-
---------------
-//375 by ŒÓ’±—–
-
-EMOBê—pƒXƒLƒ‹‚ÌŒø‰Ê‚ð‚¢‚‚‚©ŽÀ‘•
- ‘½’iUŒ‚A“łȂǂ̒ljÁŒø‰Ê•t—^UŒ‚A‘®«•t‚«UŒ‚A–‚–@‘ÅŒ‚UŒ‚
- •K’†UŒ‚A–hŒä–³Ž‹UŒ‚Aƒ‰ƒ“ƒ_ƒ€ATKUŒ‚‚È‚ÇB
- ‚½‚¾‚µA**‘S‚ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñ**B
-
- (db/)
- skill_db.txt
- MOB—pƒXƒLƒ‹‚̃f[ƒ^‚ðC³
- mob_skill_db.txt
- ‚µ’ljÁ
- (map/)
- skill.c
- skill_castend_damage_id()C³
- skill_status_change_start()C³
- skill_additional_effect()C³
- battle.c
- battle_calc_weapon_attack()C³
-
-EƒXƒLƒ‹‚ð‚µC³
- EƒEƒH[ƒ^[ƒ{[ƒ‹‚Å“G‚ªŽ€‚ñ‚Å‚¢‚Ä‚àŒ‚‚ƒ‚[ƒVƒ‡ƒ“‚ð‚·‚é–â‘èC³
-
- skill.c
- skill_status_change_timer()C³
-
-EMOBƒf[ƒ^‚ª•Ï‚È‚Ì‚Å–^‚v‚̃f[ƒ^ƒx[ƒX‚ð—¬—p‚µ‚Ä‚Ý‚é
- Eƒf[ƒ^‚Ì•À‚ч‚Æ‚©‘S‚“¯‚¶‚È‚ñ‚Å‚·‚Ë
-
- (db/)
- mob_db.txt
- –^‚v‚Ìmob_db.txt
-
-EŠeŽíconf‚̃Šƒtƒ@ƒŒƒ“ƒX‚ð“Y•t
- ‚ ‚‚܂ŃŠƒtƒ@ƒŒƒ“ƒX‚È‚Ì‚ÅAHowTo‚È‚ñ‚©‚Í‘‚¢‚Ä‚Ü‚¹‚ñB
-
- (doc/)
- conf_ref.txt
- conf‚̃Šƒtƒ@ƒŒƒ“ƒX{ƒ¿
-
-
---------------
-//373 by ŒÓ’±—–
-
-EMOBƒXƒLƒ‹Žg—p‹@\‰¼ŽÀ‘•
- EƒXƒLƒ‹Žg—pŽž‚̈—‚̓vƒŒƒCƒ„[‚Æ‹¤—p(skill.c)‚Å‚·B
- E•s“s‡‚ª‘½‚¢‚ÆŽv‚¤‚Ì‚Å•ñ‚¨Šè‚¢‚µ‚Ü‚·B
- Emob_skill_db.txt‚ð–„‚ß‚Ä‚‚ê‚él‚à•åWB
- ‚±‚̃f[ƒ^‚Íuƒ‰ƒOƒiƒƒN‚Ì‚½‚Ü‚²v‚ðŽQl‚É‚µ‚Ä‚¢‚Ü‚·B
-
- (db/)
- mob_skill_db.txt
- MOBƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX(–¢Š®¬)
- ƒeƒXƒg—p‚̃f[ƒ^‚µ‚©“ü‚Á‚Ä‚Ü‚¹‚ñB
- (map/)
- mob.c/mob.h
- mobskill_*’ljÁA‚»‚Ì‘¼‘½”C³
- map.h
- struct mob_data ‚É skill* ’ljÁ
- skill.c/skill.h
- skill_castcancel()‚âƒXƒLƒ‹ƒ†ƒjƒbƒgˆ—‚ðMOB‚ɑΉž‚³‚¹‚½
- battle.c
- battle_calc_damage()‚È‚ÇC³
-
-EƒMƒ‹ƒh‚̃XƒLƒ‹‚ªG‚ê‚È‚¢–â‘èC³
- E‚¢‚‚̂܂ɂ©pc_skillup‚ªŒÃ‚¢‚à‚Ì‚É•Ï‚í‚Á‚Ä‚¢‚½‚Ì‚ÅC³
-
- pc.c
- pc_skillup(),pc_checkskill()C³
-
---------------
-//368 by ŒÓ’±—–
-
-EMOBŒn‚ÌC³‚È‚Ç
- EMOB‚ªô“G”͈͓à‚ÌPC/ƒAƒCƒeƒ€‚𓙊m—¦‚ŃƒbƒN‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- iƒAƒNƒeƒBƒuAƒ‹[ƒgF‚¢‚Ü‚Ü‚Å‚ÍŠY“–ƒuƒƒbƒN‚̃Šƒ“ƒNƒŠƒXƒg‚̇‚È‚Ç‚É
- ˆË‘¶‚µ‚Ä‚¢‚½j
- EŽË’ö”ÍˆÍ“à‚©‚ÂA“ž’B•s‰Â”\’n‘Ñ‚ÌPC‚ðMOB‚ªƒƒbƒN‚·‚é‚ÆA
- MOB‚ª’âŽ~‚µ‚½‚èA‚»‚Ìê‚Å–\‚ꂾ‚µ‚½‚è‚·‚é–â‘è‚ÌC³
- EMOBƒƒbƒN’†‚ÉIW‚È‚Ç‚Å“ž’B•s‰Â”\‚É‚È‚Á‚½ê‡AƒƒbƒN‚ð‰ðœ‚·‚é‚悤‚ÉB
- EAEGIS•ûŽ®‚Å“G‚̈ړ®‚ðŒvŽZ‚µ‚Ĉړ®•s‰Â”\‚È‚çAAthenaŽ®‚ÅŒvŽZ‚·‚é‚悤‚É
- EƒƒbƒN‚ª‰ðœ‚³‚ê‚é‚Æ‚«‚É”•b‚»‚Ìê‚Å’âŽ~‚·‚é‚悤‚É‚µ‚½
- E•às‚ª’x‚¢MOB‚ª‚Æ‚Ü‚ç‚È‚¢/ŽŸ‚Ì•àsŠJŽn‚ª‘‚·‚¬‚é–â‘è‚ðC³‚µ‚Ü‚µ‚½
- Eƒ‹[ƒgŠÖ˜Aˆ—‚ð‚µC³
-
- mob.c
- mob_ai_sub_hard*()C³
- mob_can_reach()’ljÁ
-
-EƒXƒLƒ‹Žg—pŽž‚Ƀ^[ƒQƒbƒgƒuƒƒbƒN‚Ì—LŒø«”»’è‚ðs‚¤‚悤‚ÉC³
-Eƒ‹ƒAƒt‚̃_ƒ[ƒW‚ª•ŠíŒvŽZ‚É‚È‚Á‚Ä‚¢‚é‚̃oƒO‚ð–‚–@ŒvŽZ‚ÉC³
-
- skill.c
- skill_castend_id()C³
- skill_status_change_timer_sub()C³
-
-
-----------
-//364 by ‚¢‚Ç
-EˆÈ‰º‚̃pƒPƒbƒg‚Ìà–¾‚ð•ÏX
- doc/ƒpƒPƒbƒg‰ðÍ.txt
- R 006a <error No>.B
- R 0081 <type>.B
-
-E363‚Ńrƒ‹ƒhŽž‚Éwarning‚ªo‚é•s‹ï‡‚ðC³
- map/guild.h
-
---------------
-//363 by ŒÓ’±—–
-
-EƒMƒ‹ƒh‚ÌC³
- EƒƒOƒCƒ“‚µ‚Ä‚¢‚È‚¢PC‚ð’Ç•ú‚·‚é‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚éƒoƒOC³
- Eƒƒ“ƒo[’ljÁ’¼Œã‚ɒljÁ‚³‚ꂽPC‚ªƒMƒ‹ƒh•\Ž¦‚ɒljÁ‚³‚ê‚È‚¢–â‘èC³
- E“¯‚¶ƒMƒ‹ƒh‚É“¯C•ÊƒLƒƒƒ‰‚ª—v‚éPC‚ª’E‘Þ‚·‚é/’Ç•ú‚³‚ê‚é‚ƕʃLƒƒƒ‰‚ª
- ’E‘Þ‚µ‚Ä‚µ‚Ü‚¤ê‡‚ª‚ ‚éƒoƒOC³
- Eƒƒ“ƒo[‚ª‚¢‚é‚̂ɉðŽU‚µ‚悤‚Æ‚·‚é‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚éƒoƒOC³
-
- (char/)
- int_guild.c
- guild_calcinfo(),mapif_parse_GuildAddMember()C³
- (map/)
- guild.c
- guild_member_leaved(),guild_member_added()
- guild_recv_info(),guild_break()C³
-
---------------
-//362 by ŒÓ’±—–
-
-EƒMƒ‹ƒh‰ðŽUŽÀ‘•
-
- (char/)
- int_guild.c
- ‰ðŽUˆ—‚ð’ljÁ
- (map/)
- guild.c/guild.h
- guild_break(),guild_broken(),guild_broken_sub()‚ȂǒljÁ
- clif.c/clif.h
- clif_guild_broken(),clif_parse_GuildBreak()’ljÁ
- intif.c/intif.h
- intif_parse_GuildBroken()’ljÁ
-
---------------
-//361 by ‚¢‚Ç
-
-E360‚Å‚Ì@heal‚Ì•ÏXŠÔˆá‚¢‚ð’ù³
- map/atcommand.c
-
---------------
-//360 by ‚¢‚Ç
-
-E353‚ÌC³‚ðíœ
-E@heal‚Å•ÏXŒã‚Ì’l‚ªƒ}ƒCƒiƒX‚É‚È‚ç‚È‚¢‚悤‚ÉC³
-
---------------
-//359 by ‚¢‚Ç
-
-Eclass_equip_db.txt‚Ì•¶Žš‰»‚¯C³
-
---------------
-//358 by ŒÓ’±—–
-
-EƒƒOƒCƒ“Žž‚Ìdelete_timer‚̃Gƒ‰[‚ðo‚È‚¢‚悤‚É‚µ‚½
- pc.c
- pc_authok()‚ÌC³
-
-EƒMƒ‹ƒhŠÖŒW‚ÌC³
- Eƒƒ“ƒoŠ©—UŽž‚ÉÅ‘ål”‚ÌŠm”F‚ðs‚¤‚悤‚É
- Eƒf[ƒ^’Ê’mˆ—‚ð‚¢‚‚‚©C³
-
- (char/)
- int_guild.c
- FXC³
- (map/)
- clif.c/clif.h
- clif_guild_inviting_refused()‚ðclif_guild_inviteack()‚ɉü–¼
- guild.c/intif.c
- FXC³
-
-E@guildlvupƒRƒ}ƒ“ƒhì¬BƒMƒ‹ƒhƒŒƒxƒ‹‚ª’²®‚Å‚«‚Ü‚·B
-
- (char/)
- int_guild.c
- FXC³
- (map/)
- atcommand.c
- @guildlvupˆ—’ljÁ
-
-EMakefike‚Ìclean•”•ª‚ðC³
-
- (char/ map/ login/)
- Makefile
- E휂·‚éŽÀsƒtƒ@ƒCƒ‹‚̃pƒX‚ð ../athena/ ‚©‚ç ../ ‚ÉC³
-
---------------
-//357 by ŒÓ’±—–
-
-Epc.c‚Ì•¶Žš‰»‚¯C³
- •¶Žš‰»‚¯‚µ‚½ƒtƒ@ƒCƒ‹‚ðƒAƒbƒv‚·‚é‚Ì‚àA‚»‚ê‚ð‰ü‘¢‚·‚é‚Ì‚à‹ÖŽ~‚µ‚Ü‚¹‚ñ‚©H
- ’¼‚·‚Ì–Ê“|‚‚³‚·‚¬‚Ü‚·B
-
- pc.c
- •¶Žš‰»‚¯‚ÌC³
-
-Eƒp[ƒeƒB‚âƒMƒ‹ƒh‚ÉŠ©—U‚³‚ꂽó‘ԂŃ}ƒbƒvˆÚ“®‚⃃OƒAƒEƒg‚·‚é‚ÆA
- Š©—U‚ð‹‘”Û‚·‚é‚悤‚ÉC³
-
- pc.c
- pc_setpos()C³
- map.c
- map_quit()C³
-
-EI-AthenaŽ©“®•œ‹ŒƒVƒXƒeƒ€(B-NSJŽì)‚ðAthena—p‚ɉü‘¢‚µ‚Ä“Y•t‚µ‚Ü‚µ‚½
- ƒvƒƒOƒ‰ƒ€‚Ì«Ž¿ã./toolƒtƒHƒ‹ƒ_‚Å‚Í‚È‚./‚É‚ ‚è‚Ü‚·B
- athena.sh‚Ì•Ï‚í‚è‚Éstart‚Å‹N“®‚·‚é‚ÆmapŽI‚ª—Ž‚¿‚Ä‚à10•b’ö“x‚Å•œ‹Œ‚µ‚Ü‚·
- ƒvƒƒZƒX‚Íumapv‚Å’²‚ׂĂ܂·‚ª‘¼‚̃vƒƒZƒX‚É”½‰ž‚·‚é‚Æ‚«‚Í
- umap-serverv‚È‚Ç‚É•Ï‚¦‚Ä‚Ý‚Ä‚‚¾‚³‚¢B
-
- start
- mapŽIŽ©“®•œ‹ŒƒVƒXƒeƒ€‚̃VƒFƒ‹ƒXƒNƒŠƒvƒg
-
-
---------------
-//0356 by Ž€_
-
-Eathena.sh‚ðŽg‚í‚È‚‚Ä‚àYare-launcher‚ðŽg‚¦‚é‚悤‚É•ÏXB(Ž©•ªŽŽ‚µ‚Ä‚Ü‚µ‚½‚ª
-ˆê‰ž“®‚«‚Ü‚µ‚½B‚Å‚à‘‹‚Ìê‡login-server.exe‚ªlogin-server.ex‚É“o˜^‚³‚ê‚Ä‚µ‚Ü‚¢
-Yare-launcher‚ªlogin-server.exe‘±‚¯‚ÄŽÀs‚·‚é–â‘肪‚ ‚è‚Ü‚·B‚±‚ê‚Íathena‚Ì
-–â‘è‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...)
- comm/makefileˆÈŠO‚Ìmakefile‘S‚Ä‚ðC³B
- athena.shC³B
- ŽÀsƒtƒ@ƒCƒ‹‚Í.,/athena ƒtƒHƒ‹ƒ_[‚¶‚á‚È‚./ ƒtƒHƒ‹ƒ_[‚Éì‚ç‚ê‚Ü‚·B
-E V‹Kaccount‚Ì‹–—e‚·‚é‚©‚Ç‚¤‚©‚ðlogin_athena.cnf‚ÅŒˆ‚ß‚é‚悤‚É•ÏXB(‚±‚ê‚Í
- YareCVS‚ðŽQl‚µ‚½•¨‚Å‚·B)
- login.c
- int mmo_auth() C³B
- login_athena.cnf
- new_account ’ljÁB
-Echar.cAlogin.cAinter.cAmap.cAbattle.c‚ňꕔ‚Ìstrcmp‚ðstrcmpi‚É•ÏXB
-
---------------
-//355 by ‚䂤
-
-E¶Žè‘•”õ‚àl—¶‚µ‚½“ñ“—¬‚ÉC³
-@iƒ_ƒ[ƒWŒvŽZ‚Ì‚Ý‚ÅŒ©‚½–Ú“™‚Í•ÏX‚È‚µj
-
-map.h
- map_session_data‚ɶŽè—p‚Ì•Ï”‚ð’ljÁ
-
-battle.h
- battle_get_attack_element2()’ljÁ
-
-battle.c
- battle_get_attack_element2()’ljÁ
- battle_calc_weapon_attack()‚É
- @“ñ“—¬‚̈—‚ð’ljÁC³
- @ƒNƒŠƒeƒBƒJƒ‹‚æ‚èƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ðæ‚É”»’è‚·‚é‚悤‚ÉC³
- @‰ß踘B‚̒ljÁƒ_ƒ[ƒW‚ð¸˜Bƒ_ƒ[ƒW‚ÌŽŸ‚Ɉ—‚·‚é‚悤‚ÉC³
- @i‚±‚ê‚ç‚Í“ÆŽ©‚É’²‚ׂ½‚à‚Ì‚ÅŠÔˆá‚Á‚Ä‚¢‚é‰Â”\«‚ ‚èj
-
-pc.c
- pc_calcstatus()‚ɶŽè—p‚Ì•Ï”‚É’l‚ð“ü‚ê‚鈗‚ð’ljÁ
- pc_equipitem()‚Ì“ñ“—¬‘•”õ‚Ìꊂª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³
-
---------------
-//353 by ‚¢‚Ç
-
-EYare-launcher‚ðŽg‚¤‚±‚Æ‚ªo—ˆ‚é‚悤‚ÉMakefile‚Æathena.sh‚ð•ÏX
-
---------------
-//352 by ŒÓ’±—–
-
-E‰r¥’†‚ɃNƒ‰ƒCƒAƒ“ƒg‚ðI—¹‚·‚é‚ÆmapŽI‚ª—Ž‚¿‚é–â‘è‚ÌC³
- skill.c
- skill_castend_id(),skill_castend_pos(),skill_castend_map()C³
- map.c
- map_quit()C³
-
-
-Eƒf[ƒ^ƒoƒbƒNƒAƒbƒv—p‚̃c[ƒ‹“Y•t
- Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B
- Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B
- Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B
- ƒf[ƒ^‚ªÁ‚¦‚Ä‚àÓ”C‚ÍŽ‚¿‚Ü‚¹‚ñ
-
- (tool/)
- backup
- ƒf[ƒ^ƒoƒbƒNƒAƒbƒv—pPerlƒXƒNƒŠƒvƒg
-
---------------
-//0351 by Ž€_
-skill.c
- skill_use_id()‚ɉr¥”½‰žƒ‚ƒ“ƒXƒ^[‚̈—‚ð•ÏXB(UŒ‚ó‘ԈȊO‚Ìê‡
- ‰r¥”½‰ž‚ðÅ—Dæ‚É‚µ‚Ü‚·B)
-mob.c
- mob_ai_sub_hard_castsearch() ‰r¥”½‰žƒ‚ƒ“ƒXƒ^[‚ð“ñdˆ—‚µ‚Ä
- ‚¢‚½‚Ì‚ÅíœB
- mob_ai_sub_hard() ‰r¥”½‰žƒ‚ƒ“ƒXƒ^[‚ð“ñdˆ—‚µ‚È‚¢‚悤‚É•ÏXB
-pet.c - 0344‚É–ß‚µ‚Ü‚µ‚½B(C³‚Í‚µ•ªÍ‚ð‚µ‚Ä‚©‚ç‚É‚µ‚Ü‚·B)
-pet.h - 0344‚É–ß‚µ‚Ü‚µ‚½B
-char.h
- CHAR_CONF_NAME ’ljÁB
-char.c
- do_init() ŽÀs‚·‚鎞ƒtƒ@ƒCƒ‹–¼‚ª“ü—Í‚³‚ê‚Ä‚¢‚È‚¢‚ÆCHAR_CONF_NAME‚ð
- Žg‚¤‚悤‚É•ÏXB
-map.h
- MAP_CONF_NAME ’ljÁB
-map.c
- do_init() ŽÀs‚·‚鎞ƒtƒ@ƒCƒ‹–¼‚ª“ü—Í‚³‚ê‚Ä‚¢‚È‚¢‚ÆMAP_CONF_NAME‚ð
- Žg‚¤‚悤‚É•ÏXB
-‚±‚ê‚Ålogin.exeAchar.exeAmap.exe‚ðathenaƒtƒHƒ‹ƒ_[‚ɃRƒs[‚µ‚½Œã–¼‘O‚ð
-login-server.exeAchar-server.exeAmap-server.exe‚É•ÏX‚·‚é‚ÆYare-launcher‚ðŽg‚¤
-‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚ê‚ðŽg‚¤‚ÆŽI‚ª—Ž‚¿‚é“x‚ÉŽ©“®“I‚ÉÄŽÀs‚µ‚Ä‚‚ê‚Ü‚·B
-
---------------
-//0345 by Ž€_
-EƒLƒƒƒXƒeƒBƒ“ƒO’T’mŽÀ‘•B
- mob.c
- mob_ai_sub_hard_lootsearch() C³B
- mob_ai_sub_hard() C³B
- mob_ai_sub_hard_castsearch() ’ljÁB
- mob_target(), mob_ai_sub_hard_activesearch() ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚ð
- mvpŒoŒ±’l‚É‚æ‚Á‚Ä”FŽ¯‚·‚é‚悤‚É•ÏXB
- mob_ai_sub_hard_linksearch() C³B
- mob_attack() Ž€‚ñ‚¾‚Ó‚èAƒnƒCƒfƒBƒ“ƒO‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É•ÏXB
- mob_readdb() C³B
-Epet.h
- MAX_PET_DB‚ð100‚É•ÏXB
-Epet.c
- read_petdb() C³B
-
---------------
-//0344 by@‰ß‹Ž‚Ìli1
-E@ƒyƒbƒg• Œ¸‚èŽÀ‘•‚¨‚æ‚Ñ‚»‚Ì‚Ù‚©FXC³
-E@ƒyƒbƒg‰a‚â‚èŽÀ‘•
-
- pet.c
- pet_calcrate(struct map_session_data *sd);
- ƒyƒbƒg‚ÌŠl“¾Šm—¦ŒvŽZ
- pet_food(struct map_session_data *sd);
- ƒyƒbƒg‰a‚â‚èƒVƒXƒeƒ€
- pet_hungry_change( int tid, unsigned int tick, int id,int data );
- ƒyƒbƒg‚ª• ‚ðŒ¸‚éƒƒWƒbƒN
- pet_status_int(struct map_session_data *sd);
- e–§“xŒvŽZ
- pet_status_hungry(struct map_session_data *sd);
- –ž• “xŒvŽZ
- pet_status_1a3(struct map_session_data *sd);
- ƒpƒPƒbƒg1a3Ý’èŠÖ”
- pet_initstate(struct map_session_data *sd);
- ƒyƒbƒg‚ª‰‚߂Ķ‚܂ꂽ‚Æ‚«‚̉ŠúƒXƒe[ƒ^ƒXÝ’è
- pet.h
- int pet_calcrate(struct map_session_data *sd);
- int pet_food(struct map_session_data *sd);
- int pet_hungry_change( int tid, unsigned int tick, int id,int data );
- int pet_status_int(struct map_session_data *sd);
- int pet_status_hungry(struct map_session_data *sd);
- int pet_status_1a3(struct map_session_data *sd);
- int pet_initstate(struct map_session_data *sd);
- ‚ð’ljÁ
- clif.c
- clif_pet_emotion(int fd,struct map_session_data *sd)
- ‰a‚ð‚ ‚°‚½‚Æ‚«‚ɃGƒ‚[ƒVƒ‡ƒ“‚ðs‚¤
- clif.h
- clif_pet_emotion(int fd,struct map_session_data *sd);
-
---------------
-//0341 by Ž€_
-Eƒ‹[ƒgƒ‚ƒ“ƒXƒ^[ŽÀ‘•B
- map.h
- LOOTITEM_SIZE‚ð20‚ÉC³B
- struct mob_data‚Éint lootitem_count ’ljÁB
- mob.c
- mob_spawn() ‚µC³B
- mob_ai_sub_hard_lootsearch() ’ljÁB
- mob_ai_sub_hard() C³B
- struct delay_item_drop2 ’ljÁB
- mob_delay_item_drop2() ’ljÁB
- mob_damage() C³B
- battle.h
- struct Battle_Config‚Éint monster_loot_type ’ljÁB
- battle.c
- battle_config_read() C³B
- battle_athena.cnf
- monster_loot_type: 0 ’ljÁB(Šî–{“I‚É0‚É‚È‚Á‚Ä‚¢‚Ü‚·B
- 0‚ÌꇂÍLOOTITEM_SIZE‚܂ŃAƒCƒeƒ€‚ðH‚ׂĂà
- ‚Ü‚½ƒAƒCƒeƒ€‚ðH‚ׂđO‚̃AƒCƒeƒ€‚ªÁ‚¦‚éŽd—l‚Å‚·B
- 1‚ÌꇂÍLOOTITEM_SIZE‚܂ŃAƒCƒeƒ€‚ðH‚ׂé‚Æ
- ‚à‚¤ƒAƒCƒeƒ€‚ðH‚ׂȂ‚È‚è‚Ü‚·B
-
---------------
-//0340 by Ž€_
-EmvpƒoƒOC³B
- mob.c
- mob_damage()‚Åj‚É•Ï‚¦‚½‚Í‚¸‚Ì•¨‚ÉŒ©—Ž‚Æ‚µ‚ ‚è‚Ü‚µ‚½‚Ì‚Å
- C³‚µ‚Ü‚µ‚½B‚±‚ê‚ÅmvpƒAƒCƒeƒ€‚Å•Ï‚È•¨‚ªo‚È‚‚È‚é‚Í‚¸‚Å‚·B
-Eclass_equip_db.txt
- EUC-JIS‚ðS-JIS‚É•ÏXB(ˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñ‚ª‘¼‚̃tƒ@ƒCƒ‹‚Í
- ‘S•”S-JIS‚¾‚Á‚½‚Ì‚Å...’P‚È‚éƒ~ƒX‚Å‚·‚ª...)
-
-----------
-//339 by ‚¢‚Ç
-
-E338‚ð“K—p‚µ‚½ó‘ԂŃrƒ‹ƒhƒGƒ‰[‚ª”¶‚·‚é•s‹ï‡‚ðC³
-
-----------
-//338 by ‰ß‹Ž‚Ìli1
-
-E@pet_db.txt‚ɑΉž‚µ‚Ü‚µ‚½B
-E@pet_db‚ð‚‚©‚Á‚½ƒvƒƒOƒ‰ƒ€‚Ì‘‚«•û‚ÉC³‚µ‚Ü‚µ‚½B
-E@ƒyƒbƒg‚Ì–¼‘O‚ð•ÏX‚·‚鎖‚ªo—ˆ‚Ü‚·
-E@ƒyƒbƒg‚ɃAƒNƒZƒTƒŠ[‚ð‚‚¯‚鎖‚ªo—ˆ‚Ü‚·B
-E@Œ»Ýƒyƒbƒg‰a‚â‚èis’†
-
- (map/)
- clif.c/clif.h
- E petŠÖ˜A‚ÌŠÖ”‚ð‚Ù‚ÚC³‹y‚ђljÁ‚¢‚½‚µ‚Ü‚µ‚½B
- E clif_parse_EquipItem()“à•”‚Ńyƒbƒg—p‘•”õ‚Å‚ ‚é‚©‚Ç‚¤‚©‚Ì”»’è‚ðs‚Á‚Ä‚Ü‚·
- E clif_parse()‚ðC³‚µ‚Ü‚µ‚½B
-
- battle.h/battle.c
- E@battle_config.pet_rate•Ï”‚ð‘‚₵‚Ü‚µ‚½Bmob‚ɑ΂·‚é—‘‚ÌŠl“¾—¦
- @@‚ðÝ’è‚·‚鎖‚ª‰Â”\‚Æ‚È‚è‚Ü‚·
-
- pet.c/pet.h
- E pet_initstate(struct map_session_data *sd);
- @‰Šú‚̃yƒbƒgƒXƒe[ƒ^ƒX‚ðÝ’è‚·‚éŠÖ”‚Å‚·
- E pet_npcid(struct map_session_data *sd,int egg_name_id);
- @ƒyƒbƒg‚ÉŠ„‚è“–‚Ä‚ç‚ꂽnpc_id‚ð•Ô‚µ‚Ü‚·
- E pet_itemid(struct map_session_data *sd,int mob_id);
- @ƒ‚ƒ“ƒXƒ^[ID‚©‚ç—‘‚ÌID‚ðŠ„‚èo‚µ‚Ü‚·
- E pet_equip(struct map_session_data *sd,int equip_id);
- @ƒyƒbƒg‚̃AƒNƒZƒTƒŠ[‘•”õ‚Å‚·
- E pet_unequip(struct map_session_data *sd);
- @ƒyƒbƒg‚̃AƒNƒZƒTƒŠ[‰ðœ‚Å‚·
- E pet_calcrate(struct map_session_data *sd);
- @—‘Šl“¾Šm—¦ŒvŽZ‚ðs‚¢1or0‚ð•Ô‚µ‚Ü‚·B
- E pet_food(struct map_session_data *sd);
- @ƒyƒbƒg‰a‚â‚èlˆÄ‚Å‚·B‚Ü‚¾³í‚É“®ì‚µ‚Ü‚¹‚ñB
- E read_petdb()
- @pet_db.txt‚ð“Ç‚Ýž‚Ýpet_db[]‚É’l‚ð“ü‚ê‚éŠÖ”‚Å‚·
-
- E do_init_pet()
- @mapŽI‰Šú‰»‚Å‚æ‚Ñ‚¾‚µpet_db[]‚ðŽg‚¦‚é‚悤‚É‚·‚éˆ×‚Ì
- ƒyƒbƒgî•ñ‰Šú‰»ŠÖ”‚Å‚·B
-
- map.c/map.h
- E@BL_PET•Ï”‚ð‰Á‚¦‚Ü‚µ‚½
- E@mapŽI‰Šú‰»‚ÌŽž‚Édo_init_pet()‚ðŒÄ‚Ño‚µ‚Ü‚·B
-
- mmo.h
- E@s_pet\‘¢‘Ì‚É•Ï”’ljÁBƒLƒƒƒ‰ƒNƒ^[‚ªƒyƒbƒg‚̃f[ƒ^‚ð•ÛŽ‚·‚éˆ×‚̃VƒXƒeƒ€
- @‚̈סŒã‚à•Ï”‚Í‚»‚̂‚Ǒ‰Á‚·‚é—\’è
-
- npc.c
- ‰ü‘P‚µ‚Ü‚µ‚½B
-
- (conf/)
- battle_athena.cnf‚É—‘‚ÌŠl“¾Šm—¦pet_rate‚ð‰Á‚¦‚Ü‚µ‚½B
-
-----------
-//337 by ŒÓ’±—–
-
-EƒMƒ‹ƒh‚̒ljÁ‚ÆC³
- EƒMƒ‹ƒh‚ÉŒoŒ±’l‚ðã”[‚·‚é‚ÆAã”[‚³‚ê‚éEXP‚ªˆÙí‚È’l‚É‚È‚éƒoƒOC³
- EƒMƒ‹ƒh‚Ì“G‘Ί֌W‚̒ljÁ
-
- guild.c/guild.h
- guild_payexp()‚ÌC³(ã”[EXPˆ—)
- guild_opposition()’ljÁ
- guild_allianceack(),guild_reqalliance(),
- guild_reply_reqalliance()‚ÌC³
- clif.c/clif.h
- clif_guild_oppositionack(),clif_parse_GuildOpposition’ljÁ
-
-EƒfƒBƒŒƒCŽžŠÔ‚ªdex‚̉e‹¿‚ðŽó‚¯‚é‚©‚Ç‚¤‚©‚ðbattle_athena.cnf‚É‘‚¯‚é‚悤‚É
-
- (conf/)
- battle_athena.conf
- delay_dependon_dex ‚ð’ljÁ
- (map/)
- skill.c
- skill_delay_fix()‚ÌC³
- battle.c/battle.h
- struct Battle_Config‚Édelay_dependon_dex’ljÁ
- battle_config_read()‚ÌC³(“Ç‚Ýž‚݈—‚à•Ï‚¦‚Ä‚Ü‚·)
-
---------------
-//0336 by Ž€_
-EƒXƒLƒ‹ƒCƒ“ƒfƒ…ƒA‚ð‚µC³B
-Eclif.c
- clif_skill_damage()Aclif_skill_damage2() ƒCƒ“ƒfƒ…ƒA‡‚킹‚ÄC³B
- (‚½‚¾ƒXƒLƒ‹‚â–‚–@‚É‚È‚é‚ƃ‚[ƒVƒ‡ƒ“‚ªo‚È‚¢ƒpƒPƒbƒg‚ð
- Œ©‚‚¯‚È‚©‚Á‚½‚Ì‚ÅŠ®‘S‚¶‚á‚ ‚è‚Ü‚¹‚ñB)
- clif_parse_ActionRequest()Aclif_parse_UseSkillToId()Aclif_parse_UseSkillToPos()
- ƒXƒLƒ‹ƒfƒBƒŒƒC‚ÌŽž‚ɃƒbƒZ[ƒW‚ªo‚é‚悤‚ÉC³B
-EƒoƒbƒNƒXƒeƒbƒvŽÀ‘•AƒIƒŠƒfƒIƒRƒ“Œ¤‹†ŽÀ‘•B
-Eskill.c
- skill_castend_damage_id()‚É‚ ‚Á‚½ƒXƒLƒ‹ƒoƒbƒNƒXƒeƒbƒv‚̈—‚ð
- skill_castend_nodamage_id()‚Ɉړ®‚µ‚Ü‚µ‚½B
- ƒXƒLƒ‹ƒoƒbƒNƒXƒeƒbƒv‚̈—‚Åclif_skill_damage2()‚ðŒÄ‚Ô‚Ì‚ðclif_fixpos()‚ð
- ŒÄ‚Ԃ悤‚É•ÏXB(‚±‚ê‚Ń_ƒ[ƒW‚̃‚[ƒVƒ‡ƒ“‚ªo‚¸‚É
- ˆÚ“®‚Å‚«‚Ü‚·B)
- ƒoƒbƒNƒXƒeƒbƒv‚Æ‹©‚Ԃ悤‚É•ÏXB
- skill_produce_mix() ƒIƒŠƒfƒIƒRƒ“Œ¤‹†“K—pB•ŠíƒŒƒxƒ‹‚ª3ˆÈã‚ÌŽž‚É
- ƒXƒLƒ‹ƒŒƒxƒ‹*1%‚ªƒ{[ƒiƒX‚Æ‚µ‚Ä»‘¢Šm—¦‚É•t‚«‚Ü‚·B
- ƒGƒ‹ƒjƒEƒ€‚ÌŠm—¦”»’è’ljÁB
-Eskill_db.txt - ƒoƒbƒNƒXƒeƒbƒv‚Ìnk‚ð0‚©‚ç1‚É•ÏXB(ƒXƒLƒ‹”Ô†150‚Ì•¨‚Å‚·B)
-Eproduce_db.txt ƒIƒŠƒfƒIƒRƒ“,ƒGƒ‹ƒjƒEƒ€‚ð’ljÁB(‚±‚ê‚Í–{ŽI‚É‚Í‚È‚¢•¨‚Å‚·B
- ‚æ‚Á‚ăNƒ‰ƒCƒAƒ“ƒg‚É‚Í•K—v‚ȃAƒCƒeƒ€‚ª•\Ž¦‚³‚ê‚Ü‚¹‚ñB)
- ƒIƒŠƒfƒIƒRƒ“Œ¤‹†‚ð‚µŽg‚¦‚镨‚É‚·‚邽‚߂ɒljÁ‚µ‚Ü‚µ‚½B
- ƒIƒŠƒfƒIƒRƒ“‚Ìꇂ̓IƒŠƒfƒIƒRƒ“Œ´Î3‚‚ÆÎ’Y1‚‚ª•K—v‚Å
- ƒGƒ‹ƒjƒEƒ€‚̓Gƒ‹ƒjƒEƒ€Œ´Î3‚‚ÆÎ’Y1‚‚ª•K—v‚Å‚·B
-Epc.c ‚µC³B
- pc_heal()pc_percentheal() ‚µ‚¾‚¯C³B
- pc_gainexp() ƒMƒ‹ƒh‚Éexp‚ðã”[‚·‚鎞‚Éexp‚ªƒ}ƒCƒiƒX‚É‚È‚ç‚È‚¢‚悤‚É
- C³B“¯Žž‚É2‚ˆÈã‚̃Œƒxƒ‹‚ªã‚ª‚é‚悤‚É•ÏXB
- ő僌ƒxƒ‹ˆÈã‚ɃŒƒxƒ‹‚ªã‚ª‚ç‚È‚¢‚悤‚ÉC³B
- pc_checkbaselevelup()Apc_checkjoblevelup() ’ljÁBƒŒƒxƒ‹ƒAƒbƒv‚ð
- ƒ`ƒFƒbƒN‚µ‚Ü‚·B
- pc_itemheal() ’ljÁBƒAƒCƒeƒ€‚ðŽg‚¤Žž‚ÉVIT‚ƃXƒLƒ‹‚É‚æ‚Á‚ă{[ƒiƒX‚ª
- •t‚•¨‚Å‚·BƒXƒLƒ‹ƒ‰[ƒjƒ“ƒOƒ|[ƒVƒ‡ƒ“ŽÀ‘•B
-Epc.h
- pc_checkbaselevelup(),pc_checkjoblevelup() ’ljÁB
- pc_itemheal() ’ljÁB
-Escript.c - ƒXƒNƒŠƒvƒgfixheal‚𜋎Bitemheal‚ð’ljÁBheal‚ªfixheal‚Ì‹@”\‚ð‚·‚é
- ‚悤‚É•ÏXB
- buildin_fixheal() ‚ðÁ‚µbuildin_heal()‚ðŒ³‚Ì•¨‚É–ß‚µ‚Ü‚µ‚½B(‚‚܂è
- buildin_heal()‚ªbuildin_fixheal()‚É‚È‚è‚Ü‚µ‚½B)
- buildin_itemheal() ’ljÁBƒAƒCƒeƒ€‚É‚æ‚é‰ñ•œ‚Í‚±‚ê‚ðŒÄ‚Ԃ悤‚É‚µ‚Ä
- ‚‚¾‚³‚¢B
- buildin_heal()‚©‚çƒ{[ƒiƒX‚ÌŒvŽZ‚𜋎B
-Eitem_db.txtA item_db2.txt - heal‚ðitemheal‚É•ÏXB
-Emob.c
- mob_damage() 0335‚Åmvp‚É‚µŠÔˆá‚¢‚ª‚ ‚è‚Ü‚µ‚½‚Ì‚ÅC³‚µ‚Ü‚µ‚½B
-Eskill.h
- MAX_SKILL_PRODUCE_DB‚ð64‚©‚ç100‚É•ÏXB
-
-
-//0335 by Ž€_
-Echar/char2.c‚̈ꕔ‚ÉRETCODE‚ª“K—p‚³‚ê‚Ä‚È‚©‚Á‚½‚Ì‚Å‚»‚ê‚ðC³B
-Echar/char2.c‚Ìparse_char()‚ŃLƒƒƒ‰‚ðÁ‚·Žž‚É–â‘肪‚ ‚è‚»‚¤‚ÈŠ‚ðC³B
-Echar/cha2.c,login/ login2.c‚ðchar/cha.c, login/login.c‚É•ÏXB
-Echar/makefile,login/makefile‚ð•ÏXB
-Emakefile‚Æcommon/mmo.h‚ð•ÏX‚µ‚ÄOS‚ðŽ©“®”FŽ¯‚µ‚ÄRETCODE‚ðŽ©“®‚É
- “K—p‚·‚é‚悤‚É•ÏXB
-Ecommon/grfio.c‚Ìgrfio_init()‚ðC³B(ƒR[ƒh‚ð‚¿‚å‚Á‚Æ‚«‚ê‚¢(H)‚É
- ‚µ‚½‚¾‚¯‚Å‚·‚ª,,,)
-EƒCƒ“ƒfƒ…ƒAŽÀ‘•B‚æ‚Á‚ăAƒ“ƒeƒBƒyƒCƒ“ƒƒ“ƒg‚àŽÀ‘•B
-Emap/clif.c
- clif_parse_LoadEndAck() ŠØ‘ƒNƒ‰ƒCƒAƒ“ƒg‚̃pƒbƒ`‚ɇ‚킹‚Ä‚µ•ÏXB
- (ƒ}ƒbƒv‚ª•Ï‚í‚é“x‚É•Ší‚ƃV[ƒ‹ƒh‚ªŒ©‚¦‚È‚‚Ȃ邽‚ß‚Å‚·B‚Ü‚¾
- “ú–{ƒNƒ‰‚Æ‚ÍŠÖŒW‚ ‚è‚Ü‚¹‚ñ‚ª...)
- clif_skillinfoblock() up‚Í‚¢‚ç‚È‚¢‚ÆŽv‚¤‚Ì‚ÅÁ‚µ‚Ü‚µ‚½BƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ª
- 256A512“™‚ÌŽžƒXƒLƒ‹ƒcƒŠ[‚ª³‚µ‚•\Ž¦‚³‚ê‚È‚¢‚±‚Æ‚Í
- ‚à‚¤‚ ‚è‚Ü‚¹‚ñB
- clif_guild_skillinfo() “¯‚¶‚悤‚Éup‚ðÁ‚µ‚Ü‚µ‚½B
- clif_birthpet() pc_delitem() ŒÄ‚Ԃ悤‚É•ÏXB
- clif_damage() ƒCƒ“ƒfƒ…ƒA‚ɑΉž‚·‚é‚悤‚É•ÏXB
-Emap/pc.c
- pc_percentheal() ƒ}ƒCƒiƒX‚ð“ü‚ê‚Ä‚à“®‚‚悤‚É•ÏXB‚µC³B
- pc_heal() ‚µC³B
- natual_heal() ‚µC³B
- do_init_pc() natual_heal‚ÌC³‚ɇ‚킹‚Ä•ÏXB
- pc_calcstatus() ‹|‚ð‘•”õ‚µ‚Ä‚È‚¢‚ƃƒV‚Ì–Ú‚ª“K—p‚³‚ê‚È‚¢‚悤‚É•ÏXB
- ƒgƒ‰ƒXƒgŽÀ‘•B
- pc_damage() ƒCƒ“ƒfƒ…ƒA‚ɑΉž‚·‚é‚悤‚É•ÏXB
-Emap/pc.h
- pc_checkoverhp(), pc_checkoversp()‚ð’ljÁB
-Emap/map.h
- MAX_PC_CLASS‚ð+1‚ÉB
-Emap/atcomand.c
- comand‚ðcommand‚É•ÏXB
- strncmp‚ðstrcmpi‚É•ÏXB‚æ‚Á‚ăRƒ}ƒ“ƒh‚ª‘啶ŽšA¬•¶Žš‚ð‹æ•Ê‚·‚é
- •K—v‚ª‚È‚‚È‚è‚Ü‚µ‚½B
-Emap/npc.h
- npc_parse_mob()‚ð’ljÁB(ˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...)
-Emap/temdb.c
- itemdb_readdb()‚Åclass_equip_db.txt‚ð“ǂނ悤‚É•ÏXB
-Edb/class_equip_db.txt ‚ð’ljÁB‚±‚±‚Å‘•”õ‚·‚éƒNƒ‰ƒX‚ðŽw’肵‚Ü‚·B‚È‚¢ê‡‚Í
- item_db.txt‚É‚ ‚éjob‚ðŽg‚¢‚Ü‚·BŠÜ‚Ü‚ê‚Ă镨‚ÍŠ®‘S‚È•¨‚Å‚Í‚È‚
- Žg—p—á’ö‚Ì•¨‚Å‚·B
-Emap/skill.c - skill_status_change_start() ƒCƒ“ƒfƒ…ƒA‚ÌŽžŠÔ‚𳂵‚•ÏXB
-Emap/battle.h
- battle_config‚Ìexp_rate‚ðbase_exp_rate‚É•ÏXB,job_exp_rate‚ð’ljÁB
- battle_get_mexp()‚ð’ljÁB
-Emap/battle.c
- battle_config‚Ìexp_rate‚ðbase_exp_rate‚É•ÏXB,job_exp_rate‚ð’ljÁB
- battle_get_mexp()‚ð’ljÁB
- battle_calc_magic_attack()‚ð•ÏXBƒ_[ƒ“ƒAƒ“ƒfƒbƒh‚Ń{ƒX‚Ì”FŽ¯‚ðmvp
- exp‚Å‚·‚é‚悤‚É•ÏXB
-Emap/mob.c
- mob_readdb() base_exp_rate,job_exp_rate‚ɑΉžB
- mob_readdb() ƒ{ƒX‚Ì”FŽ¯‚ðmvpŒoŒ±’l‚Å‚·‚é‚悤‚É•ÏXB
- mob_damage() mvp‚ðŽæ‚鎞‚̈—‚ð•ÏXBd‚³‚ª50%‚ð‰z‚¦‚é‚Æ°‚É
- —Ž‚¿‚é‚悤‚É•ÏX‚ÆFXB
-Econf/battle_athena.cnf
- base_exp_rateA,job_exp_rate‚ð’ljÁB
-E0308‚Å–Y‚ꂽ•¨
- ŒÃ‚‚¢” AŒÃ‚¢ƒJ[ƒh’ŸAŒÃ‚¢Ž‡F‚Ì” ‚ÌŽg—p‚Å“¾‚ç‚ꂽƒAƒCƒeƒ€‚ð
- Ž‚Á‚Ä‚È‚‚È‚Á‚½‚çƒAƒCƒeƒ€‚ð°‚É—Ž‚Æ‚·‚悤‚É•ÏXB
- »‘¢‚Í‚·‚Å‚É0302‚Å“K—pB
-
-----------
-//334 by C}{RIS
-
-E‚ ‚Ղ낾‚Ì332.txt‚ðpet_db.txt‚Æ‚µ‚Ä“¯«B
-
-EŠeŽíƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃~ƒX‚ðC³
- Eattr_fix.txt@‘®«C³‚ªƒ}ƒCƒiƒX‚É“‚¢‚Ä“G‚ª‰ñ•œ‚·‚é–â‘è‚ðC³B
- „Œ³‚̉ñ•œŽd—l‚É–ß‚µ‚½‚¢ê‡attr_fix.txt‚ðƒŠƒl[ƒ€‚µAattr_fix_old.txt‚ðattr_fix.txt‚ɃŠƒl[ƒ€‚µ‚ĉº‚³‚¢B
- Emob_db.txt@ƒ‚ƒ“ƒXƒ^[‚Ì“ú–{Œê–¼‚ð–{ŽI‚Æ“ˆêB
- Ecast_db.txt@‰r¥ŽžŠÔAƒfƒBƒŒƒC‚ð–{ŽI‚Æ“ˆêB
-
-----------
-//333 by ŒÓ’±—–
-
-EƒMƒ‹ƒh‹@”\’ljÁ
- EƒMƒ‹ƒh‚Ì“¯–¿‚Æ“¯–¿‰ðÁ
-
- (char/)
- inter.c/int_guild.c
- ƒpƒPƒbƒg’·/ƒMƒ‹ƒhˆ—’ljÁ
- (map/)
- clif.c/clif.h
- clif_guild_reqalliance,clif_guild_allianceack,
- clif_guild_delalliance,clif_parse_GuildRequestAlliance,
- lif_parse_GuildReplyAlliance,clif_parse_GuildDelAlliance’ljÁ
- iƒMƒ‹ƒh“¯–¿ŠÖŒW‚̃pƒPƒbƒgˆ—j
- intif.c/intif.h
- ƒMƒ‹ƒh“¯–¿ŠÖŒW‚̃pƒPƒbƒgˆ—’ljÁ
- guild.c/guild.h
- ƒMƒ‹ƒh“¯–¿ŠÖŒW‚̈—’ljÁ
- map.h
- struct map_session_data‚Éguild_alliance,guild_alliance_account’ljÁ
-
-EƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€‚Ì•ÏX‚ªƒ}ƒbƒvŽI‚ðÄ‹N“®‚µ‚È‚¢‚Æ—LŒø‚É‚È‚ç‚È‚¢ƒoƒOC³
-
- guild.c/guild.h
- guild_emblem_changed‚ÌC³
-
-----------
-//331 by ‰ß‹Ž‚Ìli1
-
-EƒyƒbƒgƒVƒXƒeƒ€C³(Š®¬“x25%)
-
- EŠeŽí•ßŠl—pƒAƒCƒeƒ€‚ð‚»‚ê‚¼‚ê‘Ήž‚·‚é“G‚ɑ΂µ‚ÄŽg—p‚·‚邱‚Æ‚Å
- @³‚µ‚—‘‚ªŽè‚É“ü‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
- EŠeŽí•ßŠl—pƒAƒCƒeƒ€‚ð‘Ήž‚µ‚È‚¢“G‚ÉŽg—p‚µ‚½ê‡‚̓‹[ƒŒƒbƒg‚ª•K‚¸Ž¸”s‚µ‚Ü‚·B
- Eƒyƒbƒg‚ªuŽž‚É•\Ž¦‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
- Eƒyƒbƒg‚ð‰EƒNƒŠƒbƒN‚·‚é‚ƃƒjƒ…[‚ªo‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- E‘¼FXŠëŒ¯‚È—v‘f‚ðC³‚µ‚Ü‚µ‚½B(ƒAƒCƒeƒ€‚Ì”‚ÌŒ¸“™‚̃oƒO‚𒼂µ‚Ü‚µ‚½)
-
- (db/)
- item_db.txt
- ŠeŽí•ßŠl—pƒAƒCƒeƒ€‚ɑΉž‚·‚é‚悤petƒRƒ}ƒ“ƒh‚𳂵‚‘‚«‚Ü‚µ‚½B
-
- (common/)
- mmo.h
- s_pet ƒyƒbƒg\‘¢‘Ì‚Épet_item_id‚ð’ljÁ
-
- (map/)
- clif.c
- clif_birthpet()‚ðC³B³‚µ‚—‘‚ªŒ¸‚éA³‚µ‚¢—‘‚ÌID‚ðŽæ“¾‚·‚é‚悤C³
- ‚±‚ê‚É‚æ‚Á‚ÄA³‚µ‚npc_petŠÖ”‚ª“®‚«‚Ü‚·B
-
- clif_spawnnpc()‚ðC³iWBUFPOS(buf,36,nd->bl.x,nd->bl.y)‚ÆA”’l‚ð26‚©‚ç36‚Ö•ÏX‚µ‚Ü‚µ‚½)
- ‚±‚ê‚É‚æ‚Á‚ăyƒbƒg‚ªuŽž‚É•\Ž¦‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
-
- npc.c
- npc_pet()‚ðC³B
-
- pet.c/pet.h
- ƒyƒbƒgŠÖ˜A‚Ìׂ©‚ÈŠÖ”‚ð‚±‚¿‚ç‚É‚Ü‚Æ‚ß‚éˆ×A’ljÁ‚µ‚Ü‚µ‚½B
- Œ»Ý‚̓yƒbƒg‚Ì”»’èŠÖŒW‚ð‚Ü‚Æ‚ß‚Ä‚ ‚è‚Ü‚·B
-
- script.c
- “Á‚É‘å‚«‚ÈC³‚Í‚ ‚è‚Ü‚¹‚ñB
-----------
-//330 by ‰ß‹Ž‚Ìli1
-
-EƒyƒbƒgƒVƒXƒeƒ€“±“ü(Š®¬“x‚Q‚O“)
- E“G‚ɑ΂µ‚ĕߊl—pƒAƒCƒeƒ€‚ðŽg—p‚·‚鎖‚ª‰Â”\‚Æ‚È‚è‚Ü‚µ‚½B
- @(‚Ü‚¾n‚µ‚Ä‚¢‚È‚¢ƒŠƒ“ƒS‚Ì‚ÝŽg—p‰Â”\A“G‚ɂ‚©‚Á‚Ä‚àƒ|ƒŠƒ“‚Ì—‘‚ªŽè‚É“ü‚è‚Ü‚·B)
- EŠeŽí—‘‚ɑ΂µ‚ăyƒbƒg‚ð•\Ž¦‚·‚鎖‚ª‚Å‚«‚Ü‚·A‚½‚¾‚µ‚È‚º‚©ˆê“x‰æ–ÊŠO‚É
- @‚Å‚È‚¢‚ƃyƒbƒg‚ª•\Ž¦‚³‚ê‚Ü‚¹‚ñB
- @(‹°‚炃yƒbƒg•\Ž¦‚ÌÛ‚És‚Á‚Ä‚¢‚éNPCƒXƒe[ƒ^ƒX‚ª³‚µ‚“ü‚Á‚Ä‚¢‚È‚¢)
- E•\Ž¦‚³‚ꂽƒyƒbƒg‚ªƒpƒtƒH[ƒ}ƒ“ƒX‚ðs‚¢‚Ü‚·B
-
- (db/)
- item_db.txt
- Œg‘Ñ—‘›z‰»‹@‚ðŽg—p‰Â”\‚É bpetƒRƒ}ƒ“ƒh(Œg‘Ñ—‘›z‰»‹@Žg—p)
- u‚Ü‚¾n‚µ‚Ä‚È‚¢ƒŠƒ“ƒSv‚ðŽg—p‰Â”\‚É petƒRƒ}ƒ“ƒh(‚ ‚émob‚ɑ΂µ‚ÄŽg—p‰Â”\‚É‚·‚é)
- (common/)
- mmo.h
- s_pet@ƒyƒbƒg\‘¢‘̒ljÁ
- mmo_charstatus@ƒyƒbƒg\‘¢‘Ì錾•Ï”’ljÁ(pet)
- (map/)
- clif.c/clif.h
-
- int clif_catchpet(struct map_session_data *sd,int pet_id);
- void clif_ruletpet(int fd,struct map_session_data *sd);
- int clif_judgepet(struct map_session_data *sd,int target_id);
- int clif_sendegg(struct map_session_data *sd);
- void clif_listpet(int fd,struct map_session_data *sd);
- int clif_birthpet(struct map_session_data *sd,int pet_id);
- void clif_menupet(int fd,struct map_session_data *sd);
-
- ˆÈã‚ÌŠÖ”‚ð’ljÁ‚µƒyƒbƒg‚ÉŠÖ‚·‚鈗‚ðs‚Á‚Ä‚¨‚è‚Ü‚·B
- (ƒ‹[ƒŒƒbƒgA—‘‘I‘ð‘‹AƒpƒtƒH[ƒ}ƒ“ƒXA‚»‚Ì‚Ù‚©FX)
-
- npc.c/npc.h
- int npc_pet(struct map_session_data *sd,int name_id);
- ƒyƒbƒg•\Ž¦‚ׂ̈̊֔‚ð’ljÁ
- (‚±‚ÌŠÖ”“à•”‚Ńyƒbƒg‚Ì•\Ž¦ˆ—‚ðs‚Á‚Ä‚¢‚Ü‚·B“KØ‚ÉC³‚µ‚Ä‚‚¾‚³‚¢)
-
- script.c
- int buildin_catchpet(struct script_state *st);
- int buildin_birthpet(struct script_state *st);
- ‚ð’ljÁ‚µ‚Ü‚µ‚½BƒXƒNƒŠƒvƒg‚Épet,bpet‚ð’ljÁ‚µ‚Ü‚µ‚½B
-----------
-//329 by ŒÓ’±—–
-
-EƒMƒ‹ƒh‹@”\’ljÁ
- EƒMƒ‹ƒh‚Ö‚ÌEXP‚Ìã”[
- EƒMƒ‹ƒhƒŒƒxƒ‹ƒAƒbƒv
- EƒMƒ‹ƒhƒXƒLƒ‹‚ÌŠ„‚èU‚è
-
- (db/)
- exp_guild.txt
- ƒMƒ‹ƒhƒŒƒxƒ‹‚ÌŒoŒ±’lƒf[ƒ^ƒx[ƒX
- (common/)
- mmo.h
- GBI_*,GMI_*‚Ì’è‹`‚̒ljÁ‚È‚Ç
- (char/)
- int_guild.c
- EXP‚⃌ƒxƒ‹ƒAƒbƒvAƒXƒLƒ‹ƒAƒbƒvˆ—’ljÁ‚È‚Ç
- inter.c
- ƒpƒPƒbƒg’·’ljÁ
- (map/)
- guild.c/guild.h
- ƒMƒ‹ƒhˆ—’ljÁ
- intif.c/intif.h
- ƒMƒ‹ƒhƒpƒPƒbƒgˆ—’ljÁ
- clif.c
- clif_guild_skillinfo()C³
- clif_guild_skillup()’ljÁ
- pc.c
- pc_skillup()‚ŃMƒ‹ƒhƒXƒLƒ‹‚ÌꇂÍguild_skillup()‚ðŒÄ‚Ԃ悤‚É
- pc_gainexp()‚Åã”[EXP‚Ì‚½‚ß‚Éguild_payexp()‚ðŒÄ‚Ԃ悤‚É
-
-EƒMƒ‹ƒh‹@”\C³
- EƒMƒ‹ƒhƒƒ“ƒo[‚ªƒƒOƒCƒ“‚⃃OƒAƒEƒg‚·‚é‚ÆA
- ƒƒOƒCƒ“’†‚̃Mƒ‹ƒhƒƒ“ƒo[‚ɃMƒ‹ƒhŒnƒpƒPƒbƒg‚ª‘—‚ç‚ê‚È‚‚È‚é–â‘èC³
-
- guild.c
- guild_recv_memberinfoshort()‚ÌC³
-
-----------
-//328 by ŒÓ’±—–
-
-EƒMƒ‹ƒh‹@”\‚̒ljÁ‚È‚Ç
- E’Ç•ú‹@”\‰¼ŽÀ‘•i’Ç•ú‚µ‚½ƒLƒƒƒ‰‚àĉÁ“ü‰Â”\•ˆê•”î•ñ‚ªƒ_ƒ~[j
- EƒXƒLƒ‹‚Ì•\Ž¦i•\Ž¦‚¾‚¯‚Å‚·Bã‚°‚½‚è‚Ío—ˆ‚Ü‚¹‚ñj
-
- (common/)
- mmo.h
- struct guild_explusion‚Ì•ÏX
- (char/)
- int_guild.c
- ’Ç•úˆ—’ljÁ
- ‹óƒMƒ‹ƒhƒ`ƒFƒbƒN‚ȂǒljÁ
- (map/)
- guild.c/guild.h
- ƒMƒ‹ƒhƒXƒLƒ‹ŠÖŒW‚̃AƒNƒZƒT‚ȂǒljÁ
- clif.c
- clif_guild_skillinfo()‚ÌC³
- clif_guild_explusionlist()’ljÁ
-
-Eƒ^[ƒ“ƒAƒ“ƒfƒbƒh‚ªƒ{ƒXŒnƒAƒ“ƒfƒbƒh‚ÅMISS‚É‚È‚éƒoƒOC³
- Eƒ^[ƒ“ƒAƒ“ƒfƒbƒhŽ¸”sŽž‚̃_ƒ[ƒW‚ªŽg‚í‚ê‚Ü‚·
-
- battle.c
- battle_calc_magic_damage()‚ÌC³
-
-----------
-//327 by ‚¢‚Ç
-EŒoŒ±’lƒe[ƒuƒ‹‚É‚P‰ÓŠŠÔˆá‚¢‚ª‚ ‚Á‚½‚Ì‚ÅC³
- db/exp.txt
-
-----------
-//326 by ‚¢‚Ç
-EcharŽI‚ÌVŽI,ƒƒ“ƒeƒiƒ“ƒX’†‚̃tƒ‰ƒOî•ñ‚ðÝ’è‚Å‚«‚é‚悤‚É‚µ‚½
-EcharŽI‚ÌŽI–¼‚Ì’·‚³‚ª16ƒoƒCƒg‚É‚È‚Á‚Ä‚¢‚½•”•ª‚ð20ƒoƒCƒg‚ÉC³
-
- (login/)
- login2.c
- parse_login()‚ÌC³
- login.h
- struct mmo_char_server‚ÌC³
- (char/)
- char2.c
- check_connect_login_server(),do_init()‚ÌC³
- (conf/)
- char_athena.cnf
-@ Echar_maintenance‚ð1‚É‚·‚é‚ƃƒOƒCƒ“l”‚ÌŒã‚ë‚É(“_ŒŸ’†)‚ª‚‚
-@ Echar_new‚ð1‚É‚·‚é‚ÆŽI–¼‚Ì‘O‚É[V]‚ª‚‚
- (doc/)
- ƒpƒPƒbƒg‰ðÍ.txt
- E¡‰ñ‚Ì•ÏX‚É”º‚¤ˆê•”C³
-
-----------
-//325 by Mind Twist(224&0293)
-E“G(NPC)ƒXƒLƒ‹‚̒ljÁiƒcƒŠ[‚ɒljÁ‚Ì‚Ýj
- db/skill_db.txt
- EƒMƒ‹ƒhƒXƒLƒ‹‘Š•Ï‚í‚炸•s–¾c‚±‚ÌŒ`Ž®‚¶‚á‚È‚¢‚Ì‚©‚ÈH
-
-----------
-//324 by non
-
-Emob‚̃^[ƒQƒbƒgŒãˆÚ“®‚ðC³
-Emob‚̈ړ®‘¬“x‚ðDB‚©‚甽‰f‚³‚¹‚é‚悤‚É
-
- (map/)
- mob.c
- mob_ai_sub_hard()‚ÌC³
-
-EŽÎ‚ß”»’è‚ðC³
- EFW“™‚ł̎΂ߔ͈͂ð–{ŽIŽd—l‚É
-
- (map/)
- map.c
- map_calc_dir()‚ÌC³
-
-----------
-//322 by ŒÓ’±—–
-
-EƒƒOƒCƒ“Žž‚É•K‚¸ƒp[ƒeƒB[‚©‚眖¼‚³‚ê‚éƒoƒOC³
- E0318‚Ìuƒp[ƒeƒB‚𜖼‚³‚ꂽ‚Ì‚É`v‚Å‚ÌC³ƒ~ƒX
-
- (char/)
- int_party.c
- ƒp[ƒeƒB[‹£‡Žž‚̃ƒbƒZ[ƒW‚ɉüs’ljÁ
- (map/)
- party.c
- party_check_member()‚ÌC³
-
-EƒMƒ‹ƒh‰ï˜bŽÀ‘••C³‚È‚Ç
- (char/)
- int_guild.c
- ƒMƒ‹ƒh‹£‡Žž‚̃ƒbƒZ[ƒW‚ɉüs’ljÁ
- (map/)
- guild.c/guild.c
- guild_send_message(),guild_recv_message()‚ȂǒljÁ
- intif.c/intif.h
- intif_parse_GuildMessage()‚ȂǒljÁ
- clif.c/clif.h
- clif_guild_message(),clif_parse_GuildMessage()‚ȂǒljÁ
- clif_guild_basicinfo()‚̃pƒPƒbƒg‚ð0150‚©‚ç01b6‚É•ÏX
-
-EƒoƒbƒNƒXƒeƒbƒv‚ª‚à‚Ì‚·‚²‚‰ö‚µ‚¢‚¯‚lj¼ŽÀ‘•
- EŽg‚¤‚ƃ_ƒ[ƒW‚ð‚P‹ò‚ç‚Á‚½‚悤‚ÉŒ©‚¦‚Ü‚·B(ŽÀۂ̓_ƒ[ƒW‚O‚Å‚·)
-
- skill.c
- skill_castend_damage_id()C³
-
-------------------
-//321 by@‰ß‹Ž‚Ìli
-E‹|–î‘•”õŒø‰Ê‚Ì‚ÝŽÀ‘•(‘½X‚¨‚©‚µ‚¢“_‚Í‘¶Ý‚·‚邪‘•”õ‚ªo—ˆA–î‚ÌŒø‰Ê‚ªo‚é)
- map/clif.c map/clif.h
- clif_itemlist()’ljÁ
- Ž‚¿•¨‚Ì’†‚Å‹|–î‚ÉŠ„‚è“–‚Ä‚éƒpƒPƒbƒg”Ô†‚ð0x8000‚Æ‚·‚鈗’ljÁ
-
- clif_arrowequip(struct map_session_data *sd,int val); //self
- ‚ð’ljÁB‚±‚Ì’†‚Å‹|–î‘•”õƒpƒPƒbƒgˆ—‚ðs‚Á‚Ä‚Ü‚·
- map/pc.c
- pc_equipitem()@‹|–î‘•”õ’ljÁ
-
- Žc‚³‚ꂽ–â‘è“_F
- E@–Œ¸‚ç‚È‚¢
- E@ƒŠƒƒO‚·‚é‚Ɩ‚P‚É‚È‚é
- E@‘•”õ‚µ‚Ä‚¢‚é–•\Ž¦‚³‚ê‚È‚¢(©‘½•ª‘•”õpos‚ÌÝ’è‚ð‚µ‚Ä‚¢‚È‚¢ˆ×‚©‚Æ)
- E@–î‚ð‘•”õ‰ðœ‚Å‚«‚È‚¢(‘¼‚Ì–î‚ð‘•”õ‚µ‚È‚¨‚¹‚Α•”õ‚µ‚½–î‚ÌŒø‰Ê‚É‚È‚è‚Ü‚·
-
-----------
-//320 by ‚¢‚Ç
-EˆÈ‰º‚̃pƒPƒbƒg‚̃Gƒ‰[ƒR[ƒh‚Ìà–¾‚ð’ljÁ
- doc/ƒpƒPƒbƒg‰ðÍ.txt
- R 006a <error No>.B
- R 0070 <error No>.B
- R 0081 <type>.B
-
-----------
-//319 by mk
-ENPC‚Ƃ̉ï˜b’†‚É‘•”õ•ÏXAƒAƒCƒeƒ€AƒXƒLƒ‹‚ðŽg—p‚Å‚«‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½
- map/clif.c
- ŠeŠ‚Åsd->npc_id‚ðƒ`ƒFƒbƒN‚µ‚Ä‚Ü‚·
-
-Eˆê•”‚Ì”í‚蕨‚łธBŒã‚É‘•”õ‰ÓŠ‚ª‚¨‚©‚µ‚‚È‚éƒoƒO‚ðC³
- map/script.c
- buildin_successrefitem ‚̃R[ƒh‚ðC³
-
-EƒJ[ƒh‚É‚æ‚é’ljÁŒø‰Ê‚¨‚æ‚шÙí‘Ï«”“®ˆ—‚ÌC³
- map/skill.c
- ƒCƒ“ƒfƒbƒNƒX‰Šú’l‚ªŠÔˆá‚Á‚Ä‚¢‚é‚ÆŽv‚í‚ê‚é‚Ì‚ÅC³iSC_POISON -> SC_STONEj
-
-Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚̉¼ŽÀ‘•AƒOƒŠƒ€ƒgƒD[ƒX‚ÌŽg—pðŒ’ljÁ
- Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚ð‰¼ŽÀ‘•B‚«”ò‚΂µˆ—‚â‚Á‚Ä‚é‚Ì‚Å
- @battle.c ‚Ìblewcount‚ðƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½
- EƒOƒŠƒ€ƒgƒD[ƒX‚ÌŽg—pðŒiƒnƒCƒfƒBƒ“ƒO•ƒJƒ^[ƒ‹‘•”õjƒ`ƒFƒbƒN’ljÁ
- @‚±‚ñ‚ÈŠ´‚¶‚Å‘¼‚̃XƒLƒ‹Žg—pðŒ‚à’ljÁ‚µ‚Ä‚à‚æ‚¢‚Ì‚©‚ÈH
- Eskill_blown ‚Ì‚«”ò‚΂µ•ûŒü‚ðƒ^[ƒQƒbƒg‚Ƃ̈ʒu‚ªd‚È‚Á‚Ä‚¢‚é‚Æ‚«‚Í
- @ƒ‰ƒ“ƒ_ƒ€‚Å‚Í‚È‚ƒLƒƒƒ‰ƒNƒ^[‚ðŒã‚ë‚Ö‚«”ò‚΂·‚悤‚É•ÏX‚µ‚Ü‚µ‚½
- map/skill.c
- skill_castend_damage_id()•ÏX
- skill_check_condition()•ÏX
- skill_blown()•ÏX
-
-EƒAƒTƒVƒ““ñ“—¬ˆ—‚ÉŠÖ‚·‚éC³?
- E‘•”õˆê——‚Ödrag&dropŽž‚É—¼Žè‚ªÔ‚ƒ}[ƒLƒ“ƒO‚³‚ê‚é‚悤‚ÉC³
- @ƒAƒTƒVƒ“‚Å‚Í•Ší‘•”õ‰ÓŠ‚ª—¼Žè‚É‚È‚é‚悤item_equippoint‚ð•ÏX
- @‚»‚ê‚É”º‚¢pc.c‚Ìpc_equipitem‚ðC³
- E‹tŽèƒ_ƒ[ƒW‚ð•\Ž¦‚µ‚Ä‚Ý‚Ü‚µ‚½
- @‚Ü‚Æ‚à‚Ƀ_ƒ[ƒWŒvŽZ‚â‚Á‚Ä‚È‚¢‚Ì‚ÅUŒ‚‰ñ”‚ÌŠm”F‚¾‚¯‚Å‚·
- EƒJƒ^[ƒ‹’ÇŒ‚‚ƶŽèUŒ‚‚ÌMISS‚ð–³—‚â‚è•\Ž¦
- (map/)
- itemdb.c (itemdb.hAclif.cApc.c)
- itemdb_equippoint() ‚ð•ÏX i“ñ“—¬‚ðl—¶j
- ˆø”‚ð(int nameid) -> (struct map_session_data *sd,int nameid)‚É
- ˆø”•ÏX‚É”º‚¢éŒ¾(itemdb.h)‚ƌĂÑo‚µ‘¤(clif.c ,pc.c)‚à•ÏX
- pc.c
- pc_equipitem(), pc_checkitem()‘•”õƒ`ƒFƒbƒN‚ðC³
- battle.c
- battle_calc_weapon_attack(),battle_weapon_attack()
- ã‚É‚à‘‚«‚Ü‚µ‚½‚ª¶Žè‚̃_ƒ[ƒWŒvŽZ‚Ís‚Á‚Ä‚Ü‚¹‚ñ
- (ƒJ[ƒhA‘®«“™‚à–¢“K—p)‰EŽè‚Æ“¯‚¶ƒ_ƒ[ƒW“ü‚ê‚Ķ‰EC—û“K—p‚µ‚Ä‚Ü‚·
- ƒJƒ^[ƒ‹’ÇŒ‚‚ƶŽèƒ_ƒ[ƒW‚ðƒ~ƒX‚³‚¹‚é•û–@(ƒpƒPƒbƒg?)‚ª‚í‚©‚ç‚È‚¢‚Ì‚Å
- ŒvŽZŒã‚̃_ƒ[ƒW‚ª-1‚Ìê‡Adamage=0‚ð‘—‚é‚悤‚É‚µ‚Ä‚¢‚Ü‚·
- ‚à‚Á‚Æ‚æ‚¢•û–@‚ª‚ ‚é‚Ì‚Å‚µ‚½‚çC³‚¨Šè‚¢‚µ‚Ü‚·
-
-EŠ®‘S‰ñ”ð‚ÌŒvŽZ‚ðLuk‚Å‚Í‚È‚Flee2‚Å”»’f‚·‚é‚悤‚ÉC³
- map/battle.c
- battle_calc_weapon_attack()
-
- (db)
- item_db.txtAitem_db2.txt
- ‘•”õ•i‚̈ꕔƒ{[ƒiƒXŒø‰Ê‚ð’ljÁ
- mob_db.txt
- –^Š‚Å‚¤‚‚³‚ê‚Ä‚¢‚½‚à‚Ì‚ð‚µC³
- ‚Ü‚¾Mode‚âDrop‚É–â‘è“_‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ
-
-----------
-//0318 by ŒÓ’±—–
-
-E‚ ‚éŒö•½•ª”zPT‚Æ‚»‚ÌPT‚É‘®‚³‚È‚¢PC‚ª‹¤“¬‚·‚é‚ÆŽI‚ª–\‘–‚·‚éƒoƒOC³
-
- mob.c
- mob_damage()‚ÌEXP•ª”zˆ—C³
-
-Eƒp[ƒeƒB‚𜖼‚³‚ꂽ‚Ì‚ÉŠ‘®‚µ‚Ä‚¢‚é‚悤‚ÉŒ©‚¦‚éƒoƒOC³
- EŠY“–ƒLƒƒƒ‰‚ªƒƒOƒAƒEƒgó‘Ô‚ÌŽž‚Éœ–¼‚³‚êA‚»‚ÌŒãA“¯C•ÊƒLƒƒƒ‰‚ª
- “¯ƒp[ƒeƒB‚ÉŠ‘®‚µ‚È‚¨‚µA‚³‚ç‚ÉŒ³‚̃Lƒƒƒ‰‚ŃƒOƒCƒ“‚·‚é‚ÆA
- œ–¼”»’è‚ÉŽ¸”s‚µ‚ăp[ƒeƒB‚ÉŠ‘®‚µ‚½‚Ü‚Ü‚Å‚ ‚é‚Æ‚³‚ê‚Ä‚µ‚Ü‚¤–â‘èC³
-
- party.c
- party_check_member()‚ÌC³
-
-
-----------
-//0317 by nabe
-
-Eu`‚³‚ñ‚©‚çŽæˆø‚ð—v¿‚³‚ê‚Ü‚µ‚½Bv‚ªŽ©•ª‚Ì–¼‘O‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³
- trade.c/clif.c/clif.h
- clif_traderequest()‚ÅŽæˆø‘ŠŽè‚̃Lƒƒƒ‰–¼‚ð“n‚·‚悤‚É•ÏX
-
-----------
-//0316 by nabe
-
-E—¼Žè•Ší‚ð¸˜B‚·‚é‚Æ•ÐŽè‘•”õ‚É‚È‚éƒoƒO‚ðC³
- script.c
- buildin_successrefitem()‚ÅA—¼Žè•Ší‚Ìꇓ™‚É‘•”õ‰ÓŠƒ`ƒFƒbƒN
-
-----------
-//0315 by ŒÓ’±—–
-
-EPC‚ÌSPAWNƒ^ƒCƒ~ƒ“ƒO‚ð•ÏX
- Eƒ}ƒbƒvˆÚ“®(ƒƒOƒCƒ“)ŽžAƒ[ƒfƒBƒ“ƒOI—¹Œã‚ÉSPAWN‚·‚é‚悤‚ÉB
- Eƒ[ƒh’†‚ÉUŒ‚‚³‚ꂽ‚肵‚È‚‚È‚è‚Ü‚·B
- EƒMƒ‹ƒh/ƒp[ƒeƒBî•ñ“Ç‚Ýž‚Ý‘O‚É–¼‘O‰ðŒˆƒpƒPƒbƒg‚ª—ˆ‚é–â‘è‚à
- C³‚³‚ê‚é‚Í‚¸‚Å‚·B
-
- pc.c
- pc_setpos()‚Åmap_addblock,clif_spawnpc‚̌ĂÑo‚µ‚ðŽ~‚ß‚½B
- clif.c
- clif_parse_LoadEndAck‚Åmap_addblock,clif_spawnpc‚ðŒÄ‚Ԃ悤‚ÉB
-
-EinterŽIƒpƒPƒbƒgˆ—‚Ìd‘å‚È–â‘è‚ðC³
- Eˆê“x‚ɃpƒPƒbƒg‚ð‘—M‚Å‚«‚È‚©‚Á‚½ê‡A–³ŒÀƒ‹[ƒv‚Ɋׂé–â‘èC³
-
- (char/)
- char2.c
- parse_frommap()C³
- inter.c
- inter_parse_frommap()C³
- (map/)
- chrif.c
- chrif_parse()C³
- intif.c
- intif_parse()C³
-
-EƒMƒ‹ƒh‚Ì‹@”\’ljÁ
- E‘¼l‚̃Gƒ“ƒuƒŒƒ€‚ªŒ©‚¦‚é‚悤‚ÉB
- EƒƒOƒCƒ“’¼Œã‚ÌŽ©•ª‚̃Gƒ“ƒuƒŒƒ€‚ªŒ©‚¦‚é‚悤‚ÉB
- E’E‘Þ‚Å‚«‚é‚悤‚ÉBi’Ç•ú‚Í‚Ü‚¾‚Å‚·j
-
- <ƒpƒPƒbƒgî•ñˆø‚«‘±‚«–ÍW>
- E016c,016d,0163,015c‚È‚Ç‚ÌÚׂÈî•ñ
- EƒMƒ‹ƒhƒXƒLƒ‹‚ÌID‚ª‚í‚©‚élA‹³‚¦‚Ä‚Ù‚µ‚¢‚Å‚·B
- 158,205,331‚ ‚½‚è’²‚ׂ܂µ‚½‚ªƒ_ƒ‚È–Í—lB
-
- (common/)
- mmo.h
- MAX_GUILD‚ð36‚ÉB
- (char/)
- int_guild.c
- ’E‘ނ̃pƒPƒbƒg•ÏX
- inter.c
- ƒpƒPƒbƒg’·C³
- (map/)
- clif.c/clif.h
- clif_set0078,clif_set007b‚ÌC³
- clif_guild_belonginfo‚ÌC³
- clif_guild_skillinfo’ljÁ
- guild.c/guild.h
- ’E‘ނȂǂ̈—’ljÁ
- intif.c/intif.h
- ’E‘ނȂǂ̈—’ljÁ‚È‚Ç
-
-
-----------
-//0314 by ‚¢‚Ç
-
-EcharŽI‚ÆmapŽI‚ÌŽI”ãŒÀ‚ð30‚Ɉø‚«ã‚°
- login/login.h
- char/char.h
-
-Emap_athena1.cnf‚ðmap_athena.cnf‚ɃŠƒl[ƒ€
-@‚»‚ê‚É”º‚¢Aathena.sh‚ð•ÏX
-
-EƒpƒPƒbƒg‰ðÍŽ‘—¿‚ðdoc/‚Ɉړ®
-
-
-----------
-//0313 by ŒÓ’±—–
-
-EƒMƒ‹ƒh‚Ì‹@”\’ljÁ
- EƒMƒ‹ƒhŠ©—U/–ðE“à—e•ÏX/ƒƒ“ƒo[‚Ì–ðE•ÏX‚È‚Ç
- Eguild.txt‚Ì‘Ž®‚ª‚Ü‚½•Ï‚í‚è‚Ü‚µ‚½‚ªA‘O‚̃f[ƒ^‚à“Ç‚Ýž‚ß‚é‚Í‚¸‚Å‚·B
-
- <ƒpƒPƒbƒgî•ñˆø‚«‘±‚«–ÍW>
- E016c,016d,0163,015c‚È‚Ç‚ÌÚׂÈî•ñ
- EŽ©•ªˆÈŠO‚ÌPC‚ÌŠ‘®ƒMƒ‹ƒhID‚ð’Ê’m‚·‚éƒpƒPƒbƒg
-
- (common/)
- mmo.h
- struct guild ‚ð•ÏX
- (char/)
- int_guild.c/inter.c
- ˆ—’ljÁ/ƒpƒPƒbƒg’·’ljÁ
- (map/)
- guild.c/guild.h/intif.c/intif.h
- ˆ—’ljÁ
- clif.c/clif.h
- ƒMƒ‹ƒhŠÖŒW‚̃pƒPƒbƒgˆ—’ljÁ
-
-Ehelp.txt‚ðC³
- help.txt
-
-E0311‚É‚æ‚镶Žš‰»‚¯‚ðC³
- README
- map/pc.c
-
-----------
-//0312 by ‚¢‚Ç
-
-E@hƒRƒ}ƒ“ƒh‚ð@help‚É•ÏX
-E“Ç‚Ýž‚Þƒ}ƒbƒvƒf[ƒ^‚Ì’è‹`•”•ª‚ð•ÏX
-
-----------
-//0311 by tk44
-EAssassin “ñ“—¬‘•”õAASPD–â‘èC³
- - map\pc.c
- pc_equipitem(), pc_calcstatus(), pc_checkitem()
-
-E“ñ“—¬ŠQŒvŽZC³‚Ü‚¾ˆ—’†
-
-----------
-//0310 by ŒÓ’±—–
-
-EƒƒO‚âƒf[ƒ^‚ÉŽg‚¤‰üsƒR[ƒh‚ðmmo.h‚ÅÝ’è‰Â”\‚É
- (common/)
- mmo.h
- RETCODE‚ʼnüsƒR[ƒh‚𕶎š—ñ‚Å’è‹`‚µ‚Ü‚·B
- WindowsŒn‚¾‚ÆCR/LF‚È‚Ì‚Å"\r\n",UNIXŒn‚¾‚Æ"\n"‚Å‚·B
- •Ê‚ɳ‚µ‚Žw’肵‚È‚‚Ä‚àAthenaŽ©‘Ì‚Í–â‘è‚È‚“®ì‚·‚é‚Í‚¸‚Å‚·B
- (login/)
- login2.c
- (char/)
- char2.c/int_storage.c/int_party.c/int_guild.c
- •Û‘¶‚·‚é‰üsƒR[ƒh‚ðRETCODEˆË‘¶‚É•ÏXB
- ‰üsƒR[ƒh‚Ɉˑ¶‚¹‚¸‚É“Ç‚ß‚é‚悤‚ÉC³B
-
-EƒNƒ‰ƒCƒAƒ“ƒg‚©‚ç•s–¾‚ȃpƒPƒbƒg‚ª—ˆ‚½‚çƒ_ƒ“ƒv‚·‚é‚悤‚É
- E#define DUMP_UNKNOWN_PACKET 1 ‚ðƒRƒƒ“ƒg‰»‚·‚ê‚΃_ƒ“ƒv‚µ‚Ü‚¹‚ñB
-
- clif.c
- •s–¾ƒpƒPƒbƒg‚̈—‚Ń_ƒ“ƒvˆ—‚ð’ljÁB
-
-EƒMƒ‹ƒh‹@”\‚̒ljÁ
- EƒGƒ“ƒuƒŒƒ€•ÏX/’m•ÏXŽÀ‘•
- Eguild.txt‚Ì‘Ž®‚ª•Ï‚í‚è‚Ü‚µ‚½‚ªA‘O‚̃f[ƒ^‚à“Ç‚Ýž‚ß‚é‚Í‚¸‚Å‚·
-
- (char/)
- int_guild.c/inter.c
- ƒMƒ‹ƒhƒpƒPƒbƒgˆ—AƒpƒPƒbƒg’·
- (map/)
- guild.c/guild.h
- ‹@”\’ljÁ
- intif.c/intif.h
- ƒMƒ‹ƒhŠÖŒWƒpƒPƒbƒg’ljÁ
- clif.c/clif.h
- ƒMƒ‹ƒhŠÖŒWƒpƒPƒbƒg’ljÁ
-
-----------
-//0309 by C}{RIS
-
-Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚ð”͈ÍUŒ‚‰»‚µ‚Ü‚µ‚½B
-Eƒvƒƒ“ƒeƒ‰‚É‘•”õ•i”Ì”„NPC‚ð’ljÁ‚µ‚Ü‚µ‚½B
- map_athena1.cnf‚Ì
- npc_shop1J.txt‚ðƒRƒƒ“ƒgƒAƒEƒg‚·‚ê‚Ζ³Œø‚Éo—ˆ‚Ü‚·B
-EƒAƒCƒeƒ€‚Ì–¼‘O‚ÆID‚ð‘‚¢‚½ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ð“Y•tBiitem.listj
-
-----------
-//0308 by Ž€_
-EŽ©‘R‰ñ•œ‚̃vƒƒOƒ‰ƒ€‚ðC³‚µ‚Ü‚µ‚½B
- ‚±‚ê‚Å‘åä•v‚¾‚Æ‚¢‚¢‚Å‚·‚ª...
- pc.c
- pc_natural_heal()“™‚ðC³B
- pc_percentheal()‚ð‚µC³B
- pc_checkskill()‚ð‚µC³BƒXƒLƒ‹‚ª‚È‚¢ê‡0‚ð•Ô‚·‚悤‚É
- •ÏX‚µ‚Ü‚µ‚½B‘¼‚Ì.cƒtƒ@ƒCƒ‹‚àC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚µ‚½‚Ì‚Å
- C³‚µ‚Ü‚µ‚½B
-E4l–Ú‚Æ5l–ڂ̃Lƒƒƒ‰‚ðÁ‚¹‚È‚¢–â‘è‚ðC³B
-EŽn‚ß‚©‚çƒiƒCƒt‚ƃRƒbƒgƒ“ƒVƒƒƒc‚ðŽ‚‚悤‚É•ÏXB
-ELOOK_SHEILD‚ðLOOK_SHIELD‚ÉC³B
-Emmo_charstatus‚Ìsheild‚ðshield‚ÉC³B
-E.logƒtƒ@ƒCƒ‹‚âaccount.txtƒtƒ@ƒCƒ‹‚ðnotepad‚ÅŠJ‚‚Æ—ñ‚ª‘S•”Œq‚¢‚Å‚¢‚é
- –â‘è‚ðC³B
-E—”‚ðŽžŠÔ‚É‚æ‚Á‚ĉŠú‰»‚·‚é‚悤‚É•ÏXB
- map.c
- do_init()‚ð‚µC³B
-
-‘¼‚É•ÏX‚µ‚½ƒtƒ@ƒCƒ‹‚à‚ ‚è‚Ü‚·‚ª‘S•”Šo‚¦‚Ä‚Ü‚¹‚ñ‚Ì‚Å...
-
-----------
-//0307 by ŒÓ’±—–
-
-EV‹KPC‚̉ŠúˆÊ’u‚ðchar_athena.cnf‚É‘‚¯‚é‚悤‚É‚µ‚½
- start_point: ƒ}ƒbƒv–¼,x,y ‚̂悤‚ÉŽw’肵‚Ü‚·B
- <—á> start_point: new_1-1.gat,53,111
-
- (char/)
- char2.c
-
-EƒMƒ‹ƒh‚̈ꕔ‹@”\
- EƒMƒ‹ƒh쬂‚ç‚¢‚µ‚©“®‚«‚Ü‚¹‚ñ
- EŠ©—U/’E‘Þ/‰ðŽU/î•ñ‚Ì•ÏX/ƒGƒ“ƒuƒŒƒ€/’m‚È‚Ç‚Í‚·‚ׂĖ¢ŽÀ‘•‚Å‚·
-
- <ØŽÀ‚È—v–]>
- ƒMƒ‹ƒhŠÖŒW‚̃pƒPƒbƒgî•ñ‚ª‘S‘R‘«‚è‚Ü‚¹‚ñB‚í‚©‚él‚Í‹³‚¦‚Ä‚‚¾‚³‚¢B
- Œ»Ý‚̂܂܂ł̓Gƒ“ƒuƒŒƒ€‚Æ’m‚‚ç‚¢‚µ‚©ŽÀ‘•‚Å‚«‚È‚¢‰Â”\«‚ªcB
-
- (common/)
- mmo.h
- ƒMƒ‹ƒhŠÖŒW‚Ì\‘¢‘̂ƒ蔒ljÁ
- (char/)
- inter.c
- ƒpƒPƒbƒg’·î•ñ’ljÁ
- int_guild.c/int_guild.h
- ŽÀۂ̈—’ljÁ
- (map/)
- map.h
- struct map_session_data‚ɃMƒ‹ƒhŠÖŒW‚̃ƒ“ƒo’ljÁ
- guild.c/guild.h
- V‹K’ljÁBƒMƒ‹ƒh‹@”\—p
- pc.c
- pc_authok()‚ŃMƒ‹ƒhŠ‘®ŽžAguild_request_info()‚ðŒÄ‚Ԃ悤‚ÉB
- clif.c/clif.h
- ƒMƒ‹ƒhƒpƒPƒbƒg’ljÁ
- intif.c/intif.h
- ƒMƒ‹ƒhƒpƒPƒbƒg’ljÁ
-
-E0303‚Å‚ÌC³uMAXHP‚È‚Ç‚ªƒT[ƒo[‚ƃNƒ‰ƒCƒAƒ“ƒg‚Å`v‚ðŒ³‚É–ß‚µ‚½
- EVPC‚ðì‚é‚Æ‚«‚ɳ‚µ‚HP‚È‚Ç‚ðŒvŽZ‚µ‚Ä‚‚ê‚é‚悤‚É‚È‚Á‚½‚Ì‚Å
- –ß‚µ‚Ä‚à•½‹C‚¾‚낤‚Æ—\‘ªB
- EƒƒOƒCƒ“’¼Œã‚Éd—ÊŒx‚ªo‚Ä‚µ‚Ü‚¤‚½‚ßB
-
- pc.c
- pc_authok()‚ÌC³
-
-E”͈͎w’蕦‚«‚̈—C³
- E‚Å‚«‚邾‚¯Žw’肵‚½”‚Æ“¯‚¶‚¾‚¯•¦‚‚悤‚É
- (áŠQ•¨‚È‚Ç‚É‚æ‚镦‚«–WŠQ‚̉ñ”ðŽ¸”sŽžA‘O‚̉ñ”ðŒ‹‰Ê‚ðŽg‚¤)
-
- mob.c
- mob_once_spawn_area()‚ÌC³
-
-----------
-//0305 by ‚¢‚Ç
-EV‹KPC‚̈ʒu‚ð‰SŽÒC—ûê‚É•ÏXB
-EmapŽI‚ªcharŽI‚ÉÚ‘±‚Å‚«‚È‚¢•s‹ï‡‚ÌC³B
-
-----------
-//0304 by Ž€_
-EŽ©‘R‰ñ•œ‚Ì—Ê‚ÆŽžŠÔ‚ð•ÏXBŠØ‘ŽI‚É“K—p‚³‚ê‚Ă镨‚Å‚·‚ª“ú–{‚É‚à
- “K—p‚³‚ê‚Ä‚é‚Í‚¸‚Å‚·B(‘½•ª... ‚â‚Á‚Ä‚Ü‚¹‚ñ‚Ì‚Å‚í‚©‚è‚Ü‚¹‚ñBŠ¾)
- HP‚Í–ˆ4•b‚É 1 + vit/6 + max_hp/200 ‚ð‰ñ•œA
- SP‚Í–ˆ8•b‚É 1 + int/6 + max_sp/100 ‚ð‰ñ•œ‚µ‚Ü‚·B
-EƒXƒLƒ‹HP‰ñ•œ—ÍŒüã‚É‚æ‚é‰ñ•œ‚ð
- ƒXƒLƒ‹ƒŒƒxƒ‹*5 + max_hp/50‚É•ÏXB
-EƒXƒLƒ‹SP‰ñ•œ—ÍŒüã‚É‚æ‚é‰ñ•œ‚ð
- ƒXƒLƒ‹ƒŒƒxƒ‹*3 + max_sp/50‚É•ÏXB
-EƒXƒLƒ‹ˆÚ“®ŽžHP‰ñ•œŽÀ‘•B
- ¡‚ÌŠŽ~‚Ü‚Á‚Ä‚é‚Ì‚Æ”ä‚ׂÄ1/4‚Ì—Ê‚ð‰ñ•œ‚µ‚Ü‚·B(ŽžŠÔ‚Í“¯‚¶‚Å‚·B)
-Evit‚Æint‚É‚æ‚Á‚ĉñ•œŽžŠÔ‚ª’Z‚‚È‚é‚Ì‚Å‚Í‚È‚‰ñ•œ—Ê‚ª‘‚¦‚Ü‚·B
-EÅ‘åHP‚ÆÅ‘åSP‚ÌŒvŽZŒöŽ®‚ð•ÏXB
- map.h
- int inchealtick‚Ì•Ï‚í‚è‚Éint inchealhptick;‚Æ int inchealsptick;‚ð’ljÁB
- int parame[6] ‚ð’ljÁBÅ‘åSP‚ÌŒvŽZ‚ׂ̈̕¨‚Å‘•”õ‚É‚æ‚Á‚Äオ‚Á‚½
- ƒpƒ‰ƒ[ƒ^‚ðŽ‚Á‚ÂB
- pc.c
- pc_hpheal(),pc_spheal(),pc_natural_heal_sub(),pc_natural_heal()‚ð
- Ž©•ª‚̃R[ƒh‚É‘‚«Š·‚¦‚Ü‚µ‚½‚ªˆê‰ž³í‚É“®‚«‚Ü‚·‚ª
- ‘¼‚̃R[ƒh‚ɉe‹¿‚ª‚È‚¢‚©‚Ç‚¤‚©‚Í‚í‚©‚è‚Ü‚¹‚ñB
- pc_additem()‚ð‚µ‚¾‚¯C³B
- hp_coefficient‚ðint‚©‚çdouble‚É•ÏXB
- pc_calcstatus()‚Æpc_readdb()‚ðC³B
- job_db1.txt
- E‹Æ‚ÌŒv”‚ð•ÏX‚µ‚Ü‚µ‚½B(ƒNƒ‹ƒZƒCƒ_[“™‚̃f[ƒ^‚Í
- Š®‘S‚È•¨‚¶‚á‚ ‚è‚Ü‚¹‚ñB)
-
-Echar2.c‚ð‚µ‚¾‚¯•ÏXB
- char2.c
- make_new_char()‚ð‚µ‚¾‚¯•ÏXB(ì‚Á‚½’¼Œã‚ÉHP‚ÆSP‚ªŠ®‘S‚É
- ‰ñ•œ‚µ‚Ä‚é‚悤‚É•Ï‚¦‚Ü‚µ‚½B)
- parse_char()‚ð‚µ‚¾‚¯C³BŠØ‘‚̃Nƒ‰ƒCƒAƒ“ƒg‚ÅŒq‚¢‚Ä‚à
- ˆÙ킪‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B(0x187ƒpƒPƒbƒg‚̈—‚ð“ü‚ꂽ‚¾‚¯
- ‚Å‚·‚ª... ‚±‚ê‚ÍYare‚©‚玂Á‚Ä‚«‚½•¨‚Å‚·B)
-Estrcmpi“™‚Ìdefine‚ðatcomand.h‚©‚çmmo.h‚Ɉړ®‚µ‚Ü‚µ‚½B
- atcomand.h, mmo.h C³B
-E‰ñ•œƒAƒCƒeƒ€‚ðŽg—p‚·‚鎞vit‚ƃXƒLƒ‹HP‰ñ•œ—ÍŒüã‚É‚æ‚éƒ{[ƒiƒX‚ª•t‚
- ‚悤‚É•ÏXBƒ{[ƒiƒX‚Í
- ‰ñ•œ—Ê *(1 + HP‰ñ•œ—ÍŒüãƒXƒLƒ‹ƒŒƒxƒ‹*0.1 + vit/100)
- ‚É‚È‚è‚Ü‚·B
-EƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚ƃCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚ð‰¼ŽÀ‘•B(‰ñ•œ‚Í‚µ‚Ü‚·‚ªƒGƒtƒFƒNƒg‚ª
- o‚Ü‚¹‚ñBitem_db‚Ń^ƒCƒv‚ð•Ï‚¦‚Ä‚à‘Ê–Ú‚Å‚µ‚½B)
- script.c
- buildin_fixheal()‚Æbuildin_percentheal()‚ð’ljÁB
- buildin_fixheal()‚Íbuildin_heal()‚ªƒXƒLƒ‹‚Ævit‚É‚æ‚Á‚ĉñ•œ—Ê‚ª•Ï‚í‚é
- Žd—l‚É‚È‚Á‚½‚Ì‚ÅŒ³‚Ìbuildin_heal()‚Ì–¼‘O‚¾‚¯‚ð•Ï‚¦‚½•¨‚Å‚·B
- buildin_percentheal()‚Í“ü—Í‚³‚ꂽ”Žš‚ð%‚Æ‚µ‚ÄHP‚ÆSP‚ðÅ‘åHP‚Æ
- Å‘åSP‚ð %”ä—¦‚ɉñ•œ‚µ‚Ü‚·B
- ƒXƒNƒŠƒvƒgfixheal A percentheal ’ljÁBŽg—p•û–@‚Íheal‚Æ“¯‚¶‚Å‚·B
- fixheal‚Ívit‚ƃXƒLƒ‹HP‰ñ•œ—ÍŒüã‚É‚æ‚éƒ{[ƒiƒX‚ª‚È‚¢•¨‚Å
- percentheal ‚ÍŒã‚Ì”Žš‚ð %‚É”FŽ¯‚µ‚Ü‚·B
- pc.h
- pc.c
- pc_percentheal()‚ð’ljÁB
- item_db.txtAitem_db2.txt
- ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚ƃCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚ð•ÏXB
-
-----------
-//0303 by ŒÓ’±—–
-
-E*.grf‚̃pƒX‚ðmap_athena.cnf‚É‚à‘‚¯‚é‚悤‚É‚µ‚½B
- Emap_athena.cnf‚Éudata_grf: ../data/data.grfv‚â
- usdata_grf: ../sakurai/sdata.grfv‚̂悤‚ɃpƒXŽw’è‚Å‚«‚Ü‚·B
- Egrf-files.txt‚ª‚ ‚éꇂ»‚¿‚ç‚Ìݒ肪—D悳‚ê‚Ü‚·
-
- (common/)
- grfio.c/grfio.h
- grfio_setdatafile(),grfio_setsdatafile()’ljÁB
- data_file,sdata_file‚ðƒtƒ@ƒCƒ‹ƒ[ƒJƒ‹‚ȃOƒ[ƒoƒ‹•Ï”‚É•ÏXB
-
-E@stpoint,@skpoint‚É•‰’lŽw’è‚͈̔̓`ƒFƒbƒN‚ð’ljÁ
-E@zenyƒRƒ}ƒ“ƒh’ljÁiƒ[ƒj[‚Ì’²®j
-E@str,@agi,@vit,@int,@dex,@lukƒRƒ}ƒ“ƒh’ljÁiŠî–{ƒpƒ‰ƒ[ƒ^’²®j
-
- atcommand.c
- @stpoint,@skpointC³
- @zeny,@str,@agi,@vit,@int,@dex,@luk’ljÁ
-
-Eƒƒ}[ƒiƒCƒg‚ðŽg‚¤‚Æ‚Ú‚Á‚½‚‚ç‚ê‚Ä‚¢‚½–â‘è‚ðC³
-E•Ší»‘¢•”•ª‚̃R[ƒh‚𑽕ÏX
- EÞ—¿Á”‚ðƒAƒCƒeƒ€‚ª•¡”ƒCƒ“ƒfƒbƒNƒX‚É•ª‚©‚ê‚Ä‚¢‚éꇂɑΉž‚³‚¹‚½
- i‚R–œŒÂŒÀŠE‚ð’´‚¦‚é‚ƕʃCƒ“ƒfƒbƒNƒX‚ðŽg‚¤Žd—l‚¾‚Á‚½‹C‚ª‚·‚é‚Ì‚Åj
- EŽ¸”sŽž‚É‚àŽü‚è‚É’Ê’m‚·‚é‚悤‚É‚µ‚½
-
- skill.c
- skill_check_condition()‚ÌC³
- skill_produce_mix()‚ÌC³
-
-E•Ší»‘¢Šm—¦‚ðconfƒtƒ@ƒCƒ‹‚Å”{—¦Žw’è‚Å‚«‚é‚悤‚ÉC³
-
- (conf/)
- battle_athena.cnf
- weapon_produce_rate’ljÁ
- (map/)
- skill.c
- skill_produce_mix()‚ÌC³
-
-E•ŠíATKƒTƒCƒY•â³ƒe[ƒuƒ‹‚ðŠO•”‚©‚ç“Ç‚Ýž‚ނ悤‚É‚µ‚½
-E¸˜B¬Œ÷Šm—¦/¸˜Bƒ{[ƒiƒX‚È‚Ç‚ðŠO•”‚©‚ç“Ç‚Ýž‚ނ悤‚É‚µ‚½
-E‰ß踘Bƒ{[ƒiƒX‚É‚æ‚é’ljÁƒ_ƒ[ƒWŽÀ‘•
-
- (db/)
- size_fix.txt
- ƒTƒCƒY•â³ƒe[ƒuƒ‹
- refine_db.txt
- ¸˜BŠÖŒWƒf[ƒ^
- (map/)
- pc.c
- pc_readdb()‚Å“Ç‚Ýž‚Ý
- battle.c
- battle_calc_weapon_attack()‚ɉß踘Bƒ{[ƒiƒXˆ—’ljÁ
-
-EMAXHP‚È‚Ç‚ªƒT[ƒo[‚ƃNƒ‰ƒCƒAƒ“ƒg‚ňႤ’l‚ÉŒ©‚¦‚éƒoƒOC³
- ƒƒOƒCƒ“’¼Œã‚̃Xƒe[ƒ^ƒXŒvŽZ‚ÌŒ‹‰Ê‚𒼂¿‚É‘—M‚·‚é‚悤‚É‚µ‚½
-
- (map/)
- pc.c
- pc_authok()‚Å‚Ìpc_calcstatus()‚̃tƒ‰ƒO‚ð0‚É‚µ‚½
- ‚±‚ê‚Åpc_calcstatus()‚̃tƒ‰ƒOƒpƒ‰ƒ[ƒ^‚Í–¢Žg—pH
-
-Eitem_db‚Ìu”EŽÒƒX|ƒcv‚ðu”EŽÒƒX[ƒcv‚ÉC³
- (db/)
- item_db.txt/item_db2.txt
- ”EŽÒƒX[ƒc‚Ì–¼Ì•ÏX
-
-EƒƒOƒCƒ“l”‚𒲂ׂéƒc[ƒ‹‚ð“Y•t
- Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B
- Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B
- Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B
-
- (tool/)
- getlogincount
- ƒƒOƒCƒ“l”Š“¾PerlƒXƒNƒŠƒvƒg
-
-----------
-//0302 by Ž€_
-EƒAƒCƒeƒ€»‘¢ Šm—¦”»’èŽÀ‘•B
- “S‚ÌꇬŒ÷—¦‚Í
- (20 + base_level*0.3 + DEX*0.2 + LUK*0.1 + —v‹ƒXƒLƒ‹ƒŒƒxƒ‹*6)%
- |“S‚Æ‘®«ÎA¯‚Ì‚©‚¯‚ç‚Ìê‡
- (10 + base_level*0.3 + DEX*0.2 + LUK*0.1 + —v‹ƒXƒLƒ‹ƒŒƒxƒ‹*5)%
- •Ší‚Í
- ((2.5 + base_level*0.15 + DEX*0.1 + LUK*0.05 + —v‹ƒXƒLƒ‹ƒŒƒxƒ‹*5 +
- ‹à•~ - ‘®«Î‚Ư‚Ì‚©‚¯‚ç) * (1 - (•ŠíƒŒƒxƒ‹ - 1)*0.2) +
- ƒXƒLƒ‹•ŠíŒ¤‹†ƒŒƒxƒ‹*1)%
- ‹à•~: ‚È‚¢ê‡ -5%‚Å‹à•~‚Í 0%AƒIƒŠƒfƒIƒRƒ“‚Ì‹à•~‚Í
- 2.5%A‰©‹à‚Ì‹à•~‚Í 5%AƒGƒ“ƒyƒŠƒEƒ€‚Ì‹à•~‚Í 7.5%
- ‘®«Î‚Ư‚Ì‚©‚¯‚ç: ‘®«Î‚ª‚ ‚éê‡ 5%‚ÅX‚É
- ¯‚Ì‚©‚¯‚ç‚Ì” * 5%‚ð‘«‚µ‚Ü‚·B
- ‚É‚È‚è‚Ü‚·‚ª‚¿‚å‚Á‚ÆŠm—¦‚ª’á‚·‚¬‚é‹C‚à‚µ‚Ü‚·‚Ì‚Å
- base_level*0.3 + DEX*0.2 + LUK*0.1‚ðbase_level*0.5 + DEX*0.4 + LUK*0.3‚É
- base_level*0.15 + DEX*0.1 + LUK*0.05‚ðbase_level*0.4 + DEX*0.3 + LUK*0.2
- ’ö“x‚É•Ï‚¦‚½•û‚ª‚¢‚¢‚©‚à’m‚è‚Ü‚¹‚ñB
- skill.c
- skill_can_produce_mix() ‚Æ skill_produce_mix() ‚ðC³B
- produce_db.txt
- ¯‚Ì‚©‚¯‚ç‚ðƒXƒLƒ‹‘®«Î»‘¢‚ª•K—v‚É•ÏXB
-E*.grf“™‚ðÝ’u‚¹‚¸ƒfƒBƒŒƒNƒgƒŠ‚©‚ç‚Ì“Ç‚Ýž‚ނ悤‚ÉC³B(‚±‚ê‚ÍYare‚©‚ç
- Ž‚¿ž‚ñ‚¾•¨‚Å‚·‚ª...)
- grfio.c
- grfio_init()‚ðC³B
- grf-file.txt
- V‹K’ljÁBgrfƒtƒ@ƒCƒ‹‚ª‚ ‚éƒfƒBƒŒƒNƒgƒŠÝ’è—pB
-E“Ç‚Ýž‚Þƒ}ƒbƒv‚Ìő唂ð512‚ÉC³B
- mmo.h
- MAX_MAP_PER_SERVER‚ð384‚©‚ç512‚ÉC³B
-Epc.c‚Épc_search_inventory()‚ð’ljÁB
- ‹@”\‚Íitem_id‚̃AƒCƒeƒ€‚ðŽ‚Á‚Ä‚é‚©‚Ç‚¤‚©‚ðŠm”F‚µ‚Ä
- Ž‚Á‚Ä‚éꇂ»‚Ìindex‚ð•Ô‚·B
- item_id‚ª0‚Ìꇂ͋󂯂Ă銂Ìindex‚ð•Ô‚·B
- pc_additem()‚Æpc_takeitem()‚¾‚¯‚ð‚µC³B
-EGMƒRƒ}ƒ“ƒh‚É@stpoint‚Æ@skpoint‚ð’ljÁB
- @stpoint ”Žš - ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ðã‚°‚éB
- @skpoint ”Žš - ƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðã‚°‚éB
- atcomand.c
- C³B
- atcomand.h
- strcmpi“™‚ðLinux‚Å‚àŽg‚¦‚é‚悤‚ÉC³B
-
-----------
-//0301 by ŒÓ’±—–
-
-EÅ‘åHP‚ª32767‚ð’´‚¦‚é‚ƈÙí‚È’l‚É‚È‚é–â‘è‚ÌC³
-ELv‚ª99‚ð’´‚¦‚é‚Æ‚«‚àƒGƒtƒFƒNƒg‚ðo‚·‚悤‚É‚µ‚½(Ž©•ª‚É‚ÍŒ©‚¦‚È‚¢–Í—l)
-E”z’uMOB‚É‚æ‚éƒCƒxƒ“ƒg‚ŃCƒxƒ“ƒg–¼‚ª‚SƒoƒCƒgˆÈã‚Æ‚¢‚¤§ŒÀ‚ð‚‚¯‚½
-EteleportŽž‚ÉŽæˆø’†’fAƒ`ƒƒƒbƒg‘ÞŽºA‘qŒÉ•Û‘¶ˆ—‚ð‚·‚é‚悤‚É‚µ‚½
-
- pc.c
- pc_calcstatus()‚ÌC³(HPŒvŽZ)
- pc_setpos()‚ÌC³(Žæˆø’†’f‚È‚Ç)
- clif.c
- clif_set0078(),clif_set007b(),clif_spawnpc()‚ÌC³(Lv99ƒGƒtƒFƒNƒg)
- npc.c
- npc_parse_mob()‚ÌC³
-
-E@h‚Åhelp.txt‚ª“Ç‚ß‚È‚¢‚Æ‚«‚É—Ž‚¿‚éƒoƒOC³
-E@lvup/@joblvup‚Å•‰’l‚ð“ü‚ê‚é‚ÆLvƒ_ƒEƒ“‚ª‰Â”\‚É‚È‚Á‚½
-
- atcommand.c
- @h,@lvup,@joblvupˆ—‚ÌC³
-
-EƒeƒŒƒ|[ƒg‚È‚Ç‚ÌÁ–ŃGƒtƒFƒNƒg‚ÌC³
-
- skill.c
- ƒeƒŒƒ|‚ÌÁ–ŃGƒtƒFƒNƒg‚ð•ÏX
-
-Eó‘ÔˆÙí‚ÉŠÖ‚·‚éƒXƒNƒŠƒvƒgŽÀ‘• [sc_start]‚Æ[sc_end]B
-E—ÎPOTA—΃n[ƒu‚È‚ÇŽÀ‘•
-E‘•”õƒ{[ƒiƒXƒf[ƒ^’ljÁ
-
- (db/)
- item_db.txt/item_db2.txt
- ‘•”õƒ{[ƒiƒXƒf[ƒ^‚ð’ljÁ
- —ÎPOTA—΃n[ƒu‚Ȃǂ̃XƒNƒŠƒvƒg’ljÁ
- (map/)
- script.c
- buildin_warp()‚ÅÁ–ŃGƒtƒFƒNƒg‚ð•ÏX
- buildin_sc_start(),buildin_sc_end()’ljÁ
-
-----------
-//0299 by ŒÓ’±—–
-
-ENPCƒCƒxƒ“ƒg‚ŃGƒNƒXƒ|[ƒg‚³‚ꂽƒ‰ƒxƒ‹‚ðŽw’è‚Å‚«‚é‚悤‚É‚µ‚½
- NPCƒXƒNƒŠƒvƒg‚ÅOn`‚ÅŽn‚܂郉ƒxƒ‹‚ð’è‹`‚·‚é‚ÆAƒGƒNƒXƒ|[ƒg‚µ‚Ü‚·B
- NPCƒCƒxƒ“ƒg‚Å"NPC–¼(orƒCƒxƒ“ƒg–¼)::ƒ‰ƒxƒ‹–¼"‚Æ‚·‚é‚ÆA
- Žw’肵‚½ƒ‰ƒxƒ‹‚©‚çŽÀs‚Å‚«‚Ü‚·B
- ƒ‰ƒxƒ‹–¼‚Í24ƒoƒCƒgˆÈ“à‚É‚µ‚ĉº‚³‚¢B
- ‚ ‚ƃvƒƒOƒ‰ƒ€“I‚Ƀƒ‚ƒŠŒø—¦ˆ«‚¢‚Å‚·BŒã“úC³—\’è
- <—á>
- NPCutestv‚̃XƒNƒŠƒvƒg“à‚Å OnEvent: ‚ƃ‰ƒxƒ‹’è‹`‚µ‚½ê‡A
- NPCƒCƒxƒ“ƒgutest::OnEventv‚ÅŽw’èˆÊ’u‚©‚çŽÀs‚Å‚«‚Ü‚·B
-
- (conf/)
- npc_test_ev.txt
- ƒ‰ƒxƒ‹Žw’è‚̃Tƒ“ƒvƒ‹‚à‚¿‚傱‚Á‚ƒljÁ
- (map/)
- script.c/script.h
- script_get_label_db()‚Ȃǂ̒ljÁB
- parse_script‚Åscriptlabel_db‚Ƀ‰ƒxƒ‹ƒf[ƒ^‚ð’ljÁ‚·‚é
- npc.c/npc.h
- npc_event_export()‚ȂǒljÁ
- npc_parse_script‚щƒxƒ‹ƒf[ƒ^‚ðƒGƒNƒXƒ|[ƒg‚·‚é
- map.h
- struct map_session_data ‚Ìeventqueue‚̃Cƒxƒ“ƒg–¼‚̃TƒCƒY‚ð
- 50ƒoƒCƒg‚É‚µ‚½B
-
-EAGI‚ÆDEX‚É‚æ‚éASPDŒvŽZ‚ÌÅ‘å’l‚ð180‚©‚ç190‚É•ÏX
- pc.c
- pc_calcstatus()‚ÌASPDŒvŽZC³
-
-Eskill_db.txt/cast_db.txt‚Ì“Ç‚Ýž‚Ý‚ðskill.c‚É•ÏX
-
- pc.c
- pc_readdb()‚ÌC³
- skill.c
- skill_readdb()‚̒ljÁ
-
-EƒAƒCƒeƒ€»‘¢‰¼ŽÀ‘•
- Šm—¦”»’肪–¢ŽÀ‘•‚Å‚·B•K‚¸¬Œ÷‚µ‚Ü‚·B
-
- (db/)
- item_db.txt/item_db2.txt
- ƒAƒCƒeƒ€»‘¢‚ɑΉžiŒg‘Ñ—p—nz˜FA‹à’Æ‚È‚Çj
- produce_db.txt
- V‹K’ljÁB»‘¢ƒŠƒXƒgB
- (map/)
- skill.c/skill.h
- struct skill_produce_db’ljÁ
- skill_readdb()‚Åproduce_db.txt‚ð“ǂނ悤‚É
- clif.c/clif.h
- clif_skill_produce_mix_list(),clif_parse_ProduceMix()’ljÁ
- script.c/script.h
- »‘¢—pƒRƒ}ƒ“ƒh[produce]ì¬B
- ˆø”‚Í»‘¢—p”’l‚ÅA1-4‚ª•Ší»‘¢(Lv)A16‚ªzÎ
-
-
-----------
-//0298 by ŒÓ’±—–
-
-ELoginŽI‚̃pƒXƒ[ƒhˆÃ†‰»ƒ^ƒCƒv‚ðŽ©“®”FŽ¯‚Å‚«‚é‚悤‚É•ÏX
- login.h‚ÌPASSWORDENC‚ð3‚É‚·‚é‚ÆŽ©“®”FŽ¯‚µ‚Ü‚·B
- ʼn‚Épasswordencrypt‚Ń`ƒFƒbƒN‚µAŽ¸”s‚·‚ê‚Î
- passwordencrypt2‚Ń`ƒFƒbƒN‚µ‚Ü‚·B
-
- (login/)
- login2.c/login.h
- ˆÃ†‰»ƒpƒXƒ[ƒh‚ÌƇ•”•ª‚ðC³
-
-EƒAƒJƒEƒ“ƒg쬃c[ƒ‹‚ð“Y•t
- Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B
- Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B
- Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B
-
- (tool/)
- addaccount
- ƒAƒJƒEƒ“ƒg쬃c[ƒ‹PerlƒXƒNƒŠƒvƒg
-
-EƒXƒLƒ‹‚̒ljÁC³
- Eƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹‚̉ñ”§ŒÀ‚ðƒOƒ‹[ƒv–ˆ‚©‚烆ƒjƒbƒg–ˆ‚ÉC³
- EƒNƒ@ƒOƒ}ƒCƒA‰¼ŽÀ‘• i“G‚̈ړ®‘¬“xAƒLƒƒƒ‰‚Ì•\Ž¦”’l‚͕ω»‚¹‚¸j
- EƒEƒH[ƒ^[ƒ{[ƒ‹‰¼ŽÀ‘•i“®ì‚ª³‚µ‚¢‚Ì‚©•s–¾j
- EƒtƒƒXƒgƒmƒ”ƒ@‰¼ŽÀ‘•iƒGƒtƒFƒNƒg‚ª—Ç‚‚í‚©‚ç‚È‚¢‚Ì‚Å“K“–j
- Eƒxƒmƒ€ƒ_ƒXƒg‰¼ŽÀ‘•i”͈͂Ƃ©‚ª³‚µ‚¢‚©‚Ç‚¤‚©•sˆÀj
- Eƒvƒƒ{ƒbƒNAƒI[ƒgƒo[ƒT[ƒNA¹‘Ì~•ŸA»‚Ü‚«AΓŠ‚°‚ÌŽÀ‘•
- EƒGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“‚Ì“Å•t—^ŽÀ‘•
-
- *’ˆÓ* “Åó‘Ô‚ÍŒ©‚½–Ú‚¾‚¯‚ÅŒø‰Ê‚Í–¢ŽÀ‘•
-
- (db/)
- skill_db.txt
- »‚Ü‚«/ΓŠ‚°/ƒEƒH[ƒ^[ƒ{[ƒ‹‚È‚ÇC³
- (map/)
- skill.c/skill.h
- FXC³
- mob.c/mob.h
- mob_target()’ljÁBMOB‚̃^ƒQ—p
- battle.c
- battle_get_*()ŒnC³‚È‚Ç
- pc.c
- pc_calcstatus()C³
-
-----------
-//0297 by ŒÓ’±—–
-
-ELoginŽI‚ªƒpƒXƒ[ƒhˆÃ†‰»‚ɑΉž
- ˆÃ†‰»key‚ÍŽI‹N“®Žž‚Ɉê“x‚¾‚¯ì¬‚µ‚Ü‚·B
-
- **’ˆÓ**
- ˆÃ†‰»ƒpƒXƒ[ƒh‚ðŽg‚Á‚Ä‚¢‚éꇂÍAƒAƒJƒEƒ“ƒg‚ð쬂ł«‚Ü‚¹‚ñB
- ƒAƒJƒEƒ“ƒg‚ðì‚éꇂÍclientinfo.xml‚ð•ÒW‚·‚é‚È‚Ç‚µ‚ÄA
- ƒpƒXƒ[ƒh‚ðˆÃ†‰»‚µ‚È‚¢ƒNƒ‰ƒCƒAƒ“ƒg‚ðŽg‚¤•K—v‚ª‚ ‚è‚Ü‚·B
-
- (login/)
- login2.c/login.h
- ˆÃ†‰»ƒpƒXƒ[ƒh‚̃pƒPƒbƒgˆ—’ljÁ
- ˆÃ†‰»key‚̶¬ˆ—’ljÁ
- md5calc.c/md5calc.h
- V‹K’ljÁBmd5ŒvŽZ—p
-
-
-EƒXƒLƒ‹Žg—pƒfƒBƒŒƒC‚ÉDEX‚ª”½‰f‚³‚ê‚È‚¢‚悤‚ÉC³
- skill.c
- skill_delay_fix()‚ÌC³
-
-EŽ€–SŒã‚àˆê•”‚Ìó‘ÔˆÙí‚ÌŒø‰Ê‚ªŽ‘±‚·‚é–â‘è‚ðC³
- pc.c
- pc_damage()‚ÅŽ€–SŽž‚Épc_calcstatus()‚ðŒÄ‚Ԃ悤‚ÉC³
- atcommand.c
- Ž€–SŽžˆ—‚ðˆê–{‰»‚·‚邽‚ß@die‚Å‚Ípc_damage‚ðŒÄ‚Ԃ悤‚ÉC³
-
-
-----------
-//0295 by ŒÓ’±—–
-
-EƒNƒŒƒCƒ‚ƒA[ƒgƒ‰ƒbƒv‚ȂǂɃXƒLƒ‹‚ðŽg‚¤‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚é–â‘è‚ÌC³
-
- battle.c
- battle_get_*()‚È‚Ç‚ÅBL_PC,BL_MOB‚¶‚á‚È‚¢‚Æ‚«‚̈—‚ð’ljÁ
- skill.c/skill.h
- skill_unit_ondamage()’ljÁ
-
-E–ñ21Mz‚ð’´‚¦‚éƒAƒCƒeƒ€‚ðNPC‚ňµ‚¤‚Æ‚«OC,DCŒvŽZ‚Å’l’i‚ª‚¨‚©‚µ‚‚È‚éƒoƒOC³
- DC‚Å‚Í20MzAOC‚Å‚Í70Mz‚ð’´‚¦‚éƒAƒCƒeƒ€‚ÍdoubleŒ^‚É‚µ‚ÄŒvŽZ‚µ‚Ü‚·
-
- pc.c
- pc_modifysellvalue(),pc_modifysellvalue()‚ÌC³
-
-----------
-//0294 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh‚ŃGƒŠƒAŽw’è‚ÌMOB•¦‚«–½—ß‚ðì¬
- areamonster "ƒ}ƒbƒv–¼",x0,y0,x1,y1,"MOB•\Ž¦–¼",MOB‚Ìclass,”,"ƒCƒxƒ“ƒg–¼"
- À•WŽw’肪(x0,y0)-(x1,y1)‚Ì”CˆÓƒ|ƒCƒ“ƒg‚ɂȂ邾‚¯‚Å‘¼‚Ímonster–½—ß‚Æ“¯‚¶‚Å‚·
-
- script.c
- buildin_areamonster()’ljÁ
- mob.c/mob.h
- mob_once_spawn_area()’ljÁ
-
-EƒAƒCƒXƒEƒH[ƒ‹‚ÌŽI‘¤ˆ—‰¼ŽÀ‘•
- UŒ‚‚Å‚«‚È‚¢‚È‚Ç‚Ì–â‘è‚Í‚ ‚é‚à‚Ì‚ÌAŽI‘¤‚Å‚Í‚Æ‚è‚ ‚¦‚¸“®‚«‚Ü‚·B
- ‚½‚¾AƒNƒ‰ƒCƒAƒ“ƒg‚Éi“ü•s‰Â”\ƒGƒŠƒA‚ð‹³‚¦‚éƒpƒPƒbƒg‚ª‚í‚©‚ç‚È‚¢‚Ì‚ÅA
- ŽI‘¤‚Å‚ÍIW‚̉ñ‚èž‚Ý‚ðs‚¤ê‡‚Å‚àAƒNƒ‰ƒCƒAƒ“ƒg‘¤‚Å‚Í‚·‚蔲‚¯‚Ä‚¢‚é
- ‚悤‚ÉŒ©‚¦‚Ü‚·B
-
- skill.c
- ŠY“–ˆ—’ljÁ‚È‚Ç
-
-----------
-//0293
-E2-2ŽŸE‚̃XƒLƒ‹ƒRƒƒ“ƒg‚ÌC³iˆê•”’ljÁj
- (db/)
- skill_db.txt
- skill_tree.txt
-
-
-----------
-//0292 by ŒÓ’±—–
-
-ESHOP NPC‚ɘb‚µŠ|‚¯‚é‚ÆNPC‚ª”½‰ž‚µ‚È‚‚È‚é–â‘è‚Ì‚Ü‚Æ‚à‚ÈHC³Part2
- E”„”ƒ‚Å‚«‚È‚©‚Á‚½–â‘èC³
-
- map.h
- struct map_session_data ‚Énpc_shopidƒƒ“ƒo’ljÁ
- npc.c
- npc_click()‚È‚ÇC³
-
-EƒXƒNƒŠƒvƒg–½—ߒljÁ
- EŽw’èƒGƒŠƒA‚̃†[ƒU[”‚ÌŠ“¾
- getareausers("ƒ}ƒbƒv–¼",x0,y0,x1,y1)
- Žw’èƒ}ƒbƒv‚Ì(x0,y0)-(x1,y1)‚É‚¢‚éPC‚Ì”‚ðŒvŽZ
- EŽw’èƒGƒŠƒA‚̃†[ƒU[‚̃[ƒv
- areawarp "“]‘—Œ³ƒ}ƒbƒv–¼",x0,y0,x1,y1,"“]‘—æƒ}ƒbƒv–¼",x,y;
- Žw’èƒ}ƒbƒv‚Ì(x0,y0)-(x1,y1)‚É‚¢‚é‘SPC‚ðŽw’èƒ}ƒbƒv‚Ì(x,y)‚É“]‘—B
-
- script.c
- buildin_areawarp(),buildin_getareausers()’ljÁ
-
-EƒXƒLƒ‹C³
- EƒeƒŒƒ|[ƒgŽg—pŽž‚ÉuƒeƒŒƒ|[ƒg!!v‚Æ‹©‚Ԃ悤‚ÉB
- EƒXƒg[ƒ“ƒJ[ƒX‚̬Œ÷—¦‚ª’á‚¢‚Ì‚ðC³
-
- skill.c
- skill_castend_nodamage_id()C³
-
-----------
-//0291 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg–½—ߒljÁ
- ENPC‚Ì—LŒø–³Œø‚ªØ‚è‘Ö‚¦‚ç‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- disablenpc "NPC–¼"‚Å–³Œø‰»Aenablenpc "NPC–¼"‚Å—LŒø‰»B
- NPC–¼‚ªd•¡‚µ‚Ä‚¢‚é‚Æ‚«‚Ì“®ì‚Í•s’è‚Å‚·B
- Žå‚Ƀ[ƒvƒ|ƒCƒ“ƒg‚𖳌ø‰»‚·‚é‚Æ‚«‚ÉŽg‚¢‚Ü‚·B
-
- Eƒ^ƒCƒ}[‚̃JƒEƒ“ƒg‚ð•ÏX‚·‚éƒXƒNƒŠƒvƒg–½—ߒljÁ
- addtimercount "ƒCƒxƒ“ƒg–¼",ƒ~ƒŠ•b
- ‚ÅAƒ^ƒCƒ}‚ÌŠúŒÀ‚ð‰„‚Î‚¹‚Ü‚·i•‰’l‚ðŽw’肵‚ÄŒ¸‚ç‚·‚±‚Æ‚ào—ˆ‚Ü‚·j
-
- EƒAƒiƒEƒ“ƒX‚ÌŠg’£
- mapannounce "ƒ}ƒbƒv–¼","ƒAƒiƒEƒ“ƒX•¶Žš—ñ",ƒtƒ‰ƒO
- ‚ÅŽw’èƒ}ƒbƒv‚ɃAƒiƒEƒ“ƒX‚𗬂µ‚Ü‚·Bƒtƒ‰ƒO‚Í0‚ʼn©FA16‚Å‚ł·B
- areaannounce "ƒ}ƒbƒv",x0,y0,x1,y1,"•¶Žš—ñ",ƒtƒ‰ƒO
- ‚ÅŽw’èƒ}ƒbƒv‚Ì(x0,y0)-(x1,y1)‚̃GƒŠƒA‚ɃAƒiƒEƒ“ƒX‚𗬂µ‚Ü‚·B
- ƒtƒ‰ƒO‚Ímapannounce‚Æ“¯‚¶‚ÅA0‚ʼn©FA0x10‚Å‚ł·B
-
- (conf/)
- npc_test_arena.txt
- ƒTƒ“ƒvƒ‹‚ÌC³
- (map/)
- script.c
- buildin_disablenpc(),buildin_enablenpc(),
- buildin_mapannounce(),buildin_areaannounce(),
- buildin_addtimercount()‚̒ljÁ
- npc.c/npc.h
- NPC‚Ì—LŒø–³Œøˆ—’ljÁ
- map.h
- struct npc_data‚Éflagƒƒ“ƒo’ljÁ(1ƒrƒbƒg–Ú‚ª–³Œøƒtƒ‰ƒO)
- clif.c
- clif_getareachar_npc()‚ÌC³
- pc.c/pc.h
- pc_addeventtimercount()’ljÁ
-
-ESHOP NPC‚ɘb‚µŠ|‚¯‚é‚ÆNPC‚ª”½‰ž‚µ‚È‚‚È‚é–â‘è‚Ì‚Ü‚Æ‚à‚ÈHC³
- SHOP NPC‚ÆŽæˆø’†‚Å‚àƒCƒxƒ“ƒg‚ª‹N‚±‚é‚悤‚É‚È‚è‚Ü‚·B
- ‚±‚ê‚ÍRO‚ÌŽd—lã”ð‚¯‚é‚Ì‚ª“‚¢‚½‚ß‚±‚̂悤‚ÈŒ‹‰Ê‚Å—Ž‚¿’…‚«‚Ü‚µ‚½B
-
- npc.c
- npc_click()“™‚ÌC³
-
-EƒXƒLƒbƒhƒgƒ‰ƒbƒv‚ÅŽc‘œ‚ªŽc‚é–â‘èC³
- skill.c
- skill_blown()‚Åclif_walkok()‚È‚Ç‚ðŒÄ‚Ԃ悤‚ÉB
- skill_unit_onplace()‚Ìclif_fix*pos()‚ðíœB
-
-----------
-//0290 by ŒÓ’±—–
-
-EƒXƒNƒŠƒvƒg‚ÅMAPŽI“à‹¤—L•Ï”‚ªŽg‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
- •Ï”–¼‚ð$‚ÅŠJŽn‚·‚é‚ÆAMAPŽI“à‚Ì‘Sˆõ‚Å‹¤—L‚·‚é•Ï”‚É‚È‚è‚Ü‚·B
-
- Œ¾—t‚Ì–â‘è‚Å‚·‚ªAPC‚Ìglobalreg‚Íu‘åˆæ“Iv‚Æ‚¢‚¤‚æ‚èu‰i‘±«‚Ì‚ ‚év
- •Ï”‚Å‚ ‚Á‚ÄAMAPŽI“à‹¤—L•Ï”‚Ì‚Ù‚¤‚ª‘åˆæ“I‚Á‚ăCƒ[ƒW‚ª‹‚¢‚ñ‚Å‚·‚ªc
-
- script.c
- mapval_db’è‹`
- buildin_set(),buildin_input()‚ÌC³
- do_init_script()’ljÁ
- map.c
- do_init()‚Ådo_init_script()‚ðŒÄ‚Ԃ悤‚ÉB
-
-EƒCƒxƒ“ƒgƒLƒ…[‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- EƒLƒ…[ƒTƒCƒY‚Í‚Q‚Å‚·B•K—v‚Ȃ瑂₵‚Ü‚·‚ªB
-
- ƒTƒ“ƒvƒ‹‚Ì[ev_doƒeƒXƒg]‚ª‚¿‚á‚ñ‚Æ“®‚‚悤‚É‚È‚Á‚½‚ÆŽv‚¢‚Ü‚·B
-
- map.h
- struct map_session_data‚Éeventqueueƒƒ“ƒo’ljÁ
- npc.c
- npc_event_timer()’ljÁ
- script.c
- run_script()‚ÅENDˆ—‚ŃLƒ…[‚̈—’ljÁ
-
-EƒXƒNƒŠƒvƒg‚Ń^ƒCƒ}[‚ªŽg—p‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- Žg—p•û–@‚ÍAaddtimer ƒ~ƒŠ•b,"ƒCƒxƒ“ƒg–¼" ‚Ń^ƒCƒ}[’ljÁA
- deltimer "ƒCƒxƒ“ƒg–¼" ‚Ń^ƒCƒ}[íœB
-
- (common/)
- timer.c/timer.h
- get_timer(),addtick_timer()’ljÁ
- (map/)
- map.c/map.h
- struct map_session_data‚Éeventtimerƒƒ“ƒo’ljÁ
- map_quit()‚Åpc_cleareventtimer()‚ðŒÄ‚Ԃ悤‚ÉB
- pc.c
- pc_addeventtimer(),pc_deleventtimer(),pc_eventtimer(),
- pc_cleaereventtimer()’ljÁ
- pc_authok()‚Åeventimer‚̉Šú‰»
- script.c
- buildin_addtimer(),buildin_deltimer()’ljÁ
-
-EƒXƒNƒŠƒvƒg‚̒ljÁ
- Egetusers,getmapusers,killmonster‚̒ljÁ
- getusers(x)‚̓†[ƒU[”Š“¾Ax=0‚ÅPC‚ÌMAP,1=‘SMAP,8=NPC‚ÌMAPB
- getmapusers("ƒ}ƒbƒv–¼")‚ÍŽw’èƒ}ƒbƒv‚̃†[ƒU[”‚ðŠ“¾‚·‚éB
- killmonster "ƒ}ƒbƒv–¼","ƒCƒxƒ“ƒg–¼"‚ÅŠY“–‚̃}ƒbƒv‚É‚¢‚éA
- ŠY“–‚̃Cƒxƒ“ƒg‹ì“®Žw’胂ƒ“ƒXƒ^[‚ð‘S‚ÄíœB
- EannounceƒRƒ}ƒ“ƒhŠg’£
- ƒtƒ‰ƒO‚Ì0x08ƒrƒbƒg‚ª1‚È‚çƒ}ƒbƒv‚âƒGƒŠƒAŒvŽZ‚ÉPC‚Å‚È‚NPC‚ðŽg‚¤
-
- mob.c/mob.h
- mob_delete()’ljÁ
- script.c
- buildin_getusers(),buildin_getmapusers(),
- buildin_killmonster()’ljÁ
- clif.c/clif.h
- clif_GMmessage()‚̈ø”•ÏX
-
-EƒCƒxƒ“ƒgƒTƒ“ƒvƒ‹’ljÁ
- ŠÈ’P‚ȃAƒŠ[ƒi‚̃Tƒ“ƒvƒ‹‚ð’ljÁB
-
- (conf/)
- npc_test_ev.txt
- ]—ˆ‚̃Tƒ“ƒvƒ‹‚ÌC³
- npc_test_arena.txt
- ŠÈ’P‚ȃAƒŠ[ƒi‚̃Tƒ“ƒvƒ‹
- ƒ[ƒvƒ|ƒCƒ“ƒg‚Ì–³Œø‰»ƒRƒ}ƒ“ƒh‚È‚Ç‚ª•K—v‚ÆŽv‚í‚ê‚éB
-
-ESHOP NPC‚ɘb‚µŠ|‚¯‚é‚ÆNPC‚ª”½‰ž‚µ‚È‚‚È‚é–â‘èC³
-
- npc.c
- npc_buylist(),npc_selllist()C³
-
-----------
-//0289 by ŒÓ’±—–
-
-EƒCƒxƒ“ƒg‹ì“®Œ^ƒXƒNƒŠƒvƒg‚ÌC³‚È‚Ç
- E‘¼‚ÌNPC‚ɘb‚µŠ|‚¯‚Ä‚¢‚é‚Æ‚«‚̓Cƒxƒ“ƒg‚ª–³Ž‹‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- =>ƒLƒ…[‚É“ü‚ê‚é‚Ȃǂ̈—‚ª‚¢‚é‚ÆŽv‚í‚ê‚éB
-
- ‚±‚ÌŠÖŒW‚ÅAƒTƒ“ƒvƒ‹‚Ì[ev_doƒeƒXƒg]NPC‚ðƒNƒŠƒbƒN‚µ‚Ä‚à
- IDƒGƒ‰[‚ªo‚ĉ½‚à‹N‚«‚Ü‚¹‚ñBƒCƒxƒ“ƒgƒLƒ…[‚ðì‚ê‚Î’¼‚é‚Í‚¸B
-
- npc.c
- npc_event(),npc_click()‚Énpc_idƒ`ƒFƒbƒN‚ð’ljÁ
- script.c
- I—¹Žž‚Énpc_id‚ðƒNƒŠƒA‚·‚é‚悤‚É
-
-EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh[announce]‚̒ljÁ
- EGMƒƒbƒZ[ƒW‚É‚æ‚éannounceB
- ‘æ1ˆø”‚Í•¶Žš—ñA‘æ2ˆø”‚̓tƒ‰ƒO‚ÅA
- ƒtƒ‰ƒO‚̉ºˆÊ‚Sƒrƒbƒg‚ª0=‘S‚ÄA1=“¯‚¶ƒ}ƒbƒvA
- 2=‰æ–Ê“àA3=Ž©•ª‚Ì‚ÝA4=“¯‚¶ƒ}ƒbƒvŽI‚É‘—MB
- ƒtƒ‰ƒO‚Ì‚Sƒrƒbƒg–Ú‚ÍFƒtƒ‰ƒO‚ÅA0x10=ÂA0x00=‰©F
-
- script.c
- buildin_announce()‚̒ljÁ
- clif.c
- clif_send()‚ÅSELF‚̈—’ljÁ
- clif_GMmessage()‚̈ø”•ÏX
- intif.c
- intif_GMmessage()‚̈ø”•ÏX
-
-Eƒƒ‚‹ÖŽ~AƒeƒŒƒ|‹ÖŽ~AƒZ[ƒu‹ÖŽ~ƒ}ƒbƒv‚ªŽw’è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
- ENPC‚ÅAmapflag‚Æ‚¢‚¤ƒ^ƒCƒv‚ÅA–¼‘O‚ð nomemo A noteleport‚Å
- ƒƒ‚‚ƃeƒŒƒ|‹ÖŽ~Bnosave ‚ÅAˆø”‚ɃZ[ƒu‚·‚éƒ}ƒbƒv–¼‚ÆÀ•W‚ðŽw’èB
-
- Ú‚µ‚‚Í“¯«‚Ìconf/npc_test_ev.txt‚ðŽQÆB
-
- (conf/)
- npc_test_ev.txt
- C³
- (map/)
- map.h
- struct map_data ‚Éflag,savemap,savex,saveyƒƒ“ƒo’ljÁ
- npc.c
- npc_parse_mapflag()’ljÁ
- do_init_npc()‚ÌC³
- pc.c
- pc_memo()‚Ńƒ‚‹ÖŽ~‚©‚Ç‚¤‚©‚ðŠm”F
- pc_makesavestatus()‚ŃZ[ƒu‹ÖŽ~‚È‚çƒ}ƒbƒv‚ð•ÏX
- pc_randomwarp()‚ŃeƒŒƒ|‹ÖŽ~‚©‚Ç‚¤‚©Šm”F
- skill.c
- ƒeƒŒƒ|‚ƃ|ƒ^‚ŃeƒŒƒ|‹ÖŽ~‚©Šm”F
-
-
-Eƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹‚Å—Ž‚¿‚é–â‘èC³c‚¾‚Æ‚¢‚¢‚È
-
- skill.c
- ‚³‚ç‚Ƀ`ƒFƒbƒN‚ð’ljÁ
- skill_blown()‚É—Ž‚¿‚錴ˆö‚Á‚Û‚¢‚à‚Ì”Œ©‚µ‚½‚Ì‚ÅC³
-
-----------
-//0288 by ŒÓ’±—–
-
-EŽ©“®‘锓®Žž‚ÉuƒuƒŠƒbƒcƒr[ƒg!!v‚Æ‹©‚΂Ȃ‚È‚è‚Ü‚µ‚½
- skill.c
- skill_attack(),skill_additional_effect(),
- skill_castend_damage_id()‚ÌC³
-
-EƒCƒxƒ“ƒg‹ì“®Œ^ƒXƒNƒŠƒvƒg‚ª‹Lq‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-Eƒ‚ƒ“ƒXƒ^[‚ð“|‚µ‚½‚Æ‚«‚ɃCƒxƒ“ƒgƒXƒNƒŠƒvƒg‚ð“®‚©‚¹‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-
- NPC’è‹`‚Ìscript‚Å•\Ž¦ƒNƒ‰ƒX‚ð-1‚É‚·‚é‚ƃCƒxƒ“ƒgˆµ‚¢‚É‚È‚è‚Ü‚·B
- NPC’è‹`‚Ìmonster‚ɃCƒxƒ“ƒg–¼‚ðÝ’è‚Å‚«‚Ü‚·B
- ƒXƒNƒŠƒvƒg‚ÌmonsterƒRƒ}ƒ“ƒh‚ɃCƒxƒ“ƒg‚ð‹N‚±‚·ˆø”’ljÁB
- Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚ðŒ©‚Ä‚‚¾‚³‚¢B
- ¡Œãƒ^ƒCƒ}[‚ŃCƒxƒ“ƒg‚ð‹N‚±‚¹‚é‚悤‚É‚µ‚悤‚ÆŽv‚Á‚Ä‚¢‚Ü‚·B
-
- Œ»ó‚Å‚ÍANPCƒEƒBƒ“ƒhƒE‘€ì’†‚ɃCƒxƒ“ƒg‚ª‚¨‚«‚ÄA
- ‚»‚̃Cƒxƒ“ƒg‚̃XƒNƒŠƒvƒg‚ÅNPCƒEƒBƒ“ƒhƒE‚ðo‚·‚Æ–â‘肪‹N‚«‚Ü‚·B
- ‚±‚Ì•Ó‚Í¡Œã‚̉ۑè‚Æ‚¢‚¤‚±‚Æ‚ÅB
-
- (db/)
- item_db.txt/item_db2.txt
- monsterƒRƒ}ƒ“ƒh‚Ì•ÏX‚É‚æ‚éC³iŒÃ–Ø‚ÌŽ}jB
- (conf/)
- npc_test_ev.txt
- ƒTƒ“ƒvƒ‹
- (map/)
- npc.c
- npc_event()’ljÁ
- npc_parse_script()C³
- npc_checknear()C³
- clif.c
- clif_getareachar_npc()C³
- map.h
- struct mob_data‚Énpc_eventƒƒ“ƒo’ljÁ
- mob.c/mob.h
- mob_once_spawn()‚̈ø”•ÏX
- mob_damage()‚ÅŽ€–SŽž‚ɃCƒxƒ“ƒg‚ð‹N‚±‚·‚悤‚É
- atcommand.h
- mob_once_spawn()‚̈ø”•ÏX
- script.c
- buildin_monster()‚ÌC³
-
-----------
-//0287 by ŒÓ’±—–
-
-Eƒ‚ƒ“ƒXƒ^[î•ñƒXƒLƒ‹‚Å‚g‚o‚ª65535‚ð‰z‚¦‚Ä‚¢‚é‚Ƴí‚È’l‚ªŒ©‚ê‚È‚¢ƒoƒOC³
-
- clif.c
- clif_skill_estimation()‚ÌC³
-
-EŒÃ–Ø‚ÌŽ}ƒAƒCƒeƒ€‚ŃNƒ‰ƒCƒAƒ“ƒg‚ªƒŠƒ\[ƒXƒGƒ‰[‚ðo‚·–â‘肪C³‚³‚ê‚Ü‚µ‚½
-EŒÃ–Ø‚ÌŽ}ƒAƒCƒeƒ€‚Å¢Š«‚Å‚«‚é“G‚ªŽw’è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-
- (db/)
- mob_branch.txt
- ¢Š«‰Â”\‚È“G‚̃ŠƒXƒg
- (map/)
- mob.c/mob.h
- struct mob_data‚Ésummonflagƒƒ“ƒo’ljÁB¢Š«‰Â”\«B
- mob_once_spawn()‚ÌC³
- mob_readbranch()‚̒ljÁ
- do_init_mob()‚Åmob_readbranch()‚ðŒÄ‚Ԃ悤‚ÉB
-
-EŒÃ‚‚¢” AŒÃ‚¢Ž‡F‚Ì” ‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½B
- ˆê•”‚Ì–¢ŽÀ‘•ƒAƒCƒeƒ€‚ào‚Ü‚·Bitem_db.txt‚É‚ ‚éƒf[ƒ^‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·B
- ƒXƒNƒŠƒvƒggetitem‚Å•‰‚Ì’l‚ðŽw’è‚·‚é‚ÆA‚»‚Ìâ‘Î’l‚ðƒtƒ‰ƒO‚Æ‚µ‚Ä
- ƒ‰ƒ“ƒ_ƒ€‚ɃAƒCƒeƒ€‚ð‘I‘ð‚µ‚Ü‚·B
-
- (db/)
- item_db.txt/item_db2.txt
- ŠY“–•”•ª‚̃XƒNƒŠƒvƒgC³
- (map/)
- script.c
- buildin_getitem()‚ÌC³
- itemdb.c/itemdb.h
- itemdb_searchrandomid(),itemdb_searchrandomid_sub()’ljÁ
-
-E‰r¥ƒf[ƒ^‚̈ꕔC³
- (db/)
- cast_db.txt
- ‘¬“x㸂ȂǂÌC³
-
-ENPC‚ÌŒü‚«C³‚È‚Ç
- (conf/)
- npc_*.txt
-
-----------
-//0286 by ŒÓ’±—–
-
-Eƒ‚ƒ“ƒXƒ^[î•ñƒXƒLƒ‹‚ŃNƒ‰ƒCƒAƒ“ƒg‚ª—Ž‚¿‚éƒoƒOC³
- clif.c
- clif_skill_estimation()‚ÌC³
-
-E‰r¥”½‰žƒ‚ƒ“ƒXƒ^[‚ª”½‰ž‚µ‚È‚¢‚±‚Æ‚ª‚ ‚é–â‘è‚ðC³
- skill.c
- skill_use_id(),‰r¥”½‰žŽžAÅ’á’ÇÕ‹——£‚ð13‚ÉÝ’è‚·‚é‚悤‚ÉB
-
-EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh[warp]‚ŃZ[ƒuƒ|ƒCƒ“ƒgˆÚ“®‚⃉ƒ“ƒ_ƒ€ˆÚ“®‚ª‰Â”\‚É‚È‚è‚Ü‚µ‚½
-EƒnƒG‚̉HA’±‚̉HƒAƒCƒeƒ€‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- ƒXƒNƒŠƒvƒgwarp‚Ń}ƒbƒv–¼‚É"SavePoint"‚â"Random"‚ªŽw’è‚Å‚«‚Ü‚·B
-
- (db/)
- item_db.txt/item_db2.txt
- ƒnƒG‚̉HA’±‚̉H‚̃XƒNƒŠƒvƒgC³
- script.c
- buildin_warp()‚ÌC³
-
-E@monsterƒRƒ}ƒ“ƒh‚É‚æ‚éMOB‚ª•œŠˆ‚µ‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½
-EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh[monster]‚ÅMOB‚𔶂³‚¹‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-EŒÃ–Ø‚ÌŽ}ƒAƒCƒeƒ€‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
-
- ƒXƒNƒŠƒvƒgˆø”‚Í monster ƒ}ƒbƒv–¼,x,y,MOB–¼,MOB‚ÌID,” ‚Å‚·B
- ƒ}ƒbƒv–¼‚ª"this"‚Ìê‡AƒXƒNƒŠƒvƒg‚ðŽÀs‚µ‚½ƒvƒŒƒCƒ„[‚Ì‚¢‚éƒ}ƒbƒvA
- x,y‚ª-1‚È‚çƒvƒŒƒCƒ„[‚ÌÀ•Wi‚Ç‚¿‚ç‚©ˆê•û‚Ì‚Ý‚»‚낦‚邱‚Æ‚à‰Â”\jA
- MOB–¼‚ª"--en--"‚Ìê‡A–{—ˆ‚̉pŒê–¼‚É‚È‚èA"--ja--"‚Ìê‡A
- –{—ˆ‚Ì“ú–{Œê–¼‚É‚È‚è‚Ü‚·BMOB‚ÌID‚ª-1‚Ìê‡A“K“–‚ÈID‚É‚È‚è‚Ü‚·B
-
- (db/)
- item_db.txt/item_db2.txt
- ŒÃ–Ø‚ÌŽ}‚̃XƒNƒŠƒvƒgC³
- (map/)
- mob.c/mob.h
- mob_once_spawn()’ljÁ
- mob_setdelayspwan()‚Å•œŠˆ‹ÖŽ~ˆ—’ljÁB
- npc.c/npc.h
- npc_get_new_npc_id()’ljÁ
- script.c
- buildin_monster()’ljÁ
- atcommand.c
- @monster‚ÌC³
-
-E@itemƒRƒ}ƒ“ƒh‚ÌC³i‘•”õ•i‚È‚Ç‚Ì–â‘èj
-
- atcommand.c
- @item‚ÌC³
-
-----------
-//0284 by ŒÓ’±—–
-
-EáŠQ•¨‚ª‚ ‚é‚Ɖ“‹——£UŒ‚‚ª‚Å‚«‚È‚‚È‚è‚Ü‚µ‚½
-E‘Î’nƒXƒLƒ‹‚ªáŠQ•¨ã‚ÉŽg—p‚Å‚«‚È‚‚È‚è‚Ü‚µ‚½
-
- path.c
- path_search(),can_move()‚ÌC³Acan_place()‚̒ljÁ
- battle.c/battle.h
- battle_check_range()’ljÁAŽË’ö‚ÆáŠQ•¨”»’èB
- battle_weapon_attack()‚Åbattle_check_range()‚ðŒÄ‚ÔB
- skill.c
- skill_use_id()Askill_use_pos()‚Åbattle_check_range()‚ðŒÄ‚ÔB
- mob.c
- mob_ai_sub_hard()‚̈—‚ðC³
-
-E‰r¥”½‰ž/ƒŠƒ“ƒNƒ‚ƒ“ƒXƒ^[‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- skill.c
- skill_use_id()‚ɉr¥”½‰žƒ‚ƒ“ƒX‚̈—’ljÁ
- mob.c
- mob_ai_sub_hard_linksearch()‚̒ljÁ
- mob_ai_sub_hard()‚ɃŠƒ“ƒNˆ—‚ðC³
-
-----------
-//0283 by ‚ê‚
-EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ÌC³
- 0282‚Ŷ‚«‚Ä‚é‚o‚b‚ɃŠƒU‚ª‚©‚¯‚ê‚é‚Ì‚ÉA
- Ž€‚ñ‚Å‚é‚o‚b‚ɂ̓ŠƒU‚ª‚©‚©‚ç‚È‚‚È‚Á‚Ä
- ‚¢‚½‚Ì‚ðC³‚µ‚Ü‚µ‚½B
-
-----------
-//0282 by ŒÓ’±—–
-
-EƒXƒLƒ‹‚ÌC³‚ƒljÁŽÀ‘•
- EƒLƒŠƒGƒGƒŒƒCƒ\ƒ“‚̃GƒtƒFƒNƒg‚Ì–â‘èC³B
- EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ª¶‚«‚Ä‚¢‚éPC‚É‚ÍŠ|‚¯‚ç‚ê‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½
- Eƒ^[ƒ“ƒAƒ“ƒfƒbƒh/UŒ‚ƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ªBOSS‚É‚ÍŒø‚©‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½
- Eƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹‚̃qƒbƒg”§ŒÀ‚ðŽÀ‘•
- EƒXƒg[ƒ€ƒKƒXƒg‚ÌŽÀ‘•
- ‚½‚¾‚µA–{ŽI‚ƈႢ“€Œ‹‚ÍŠm—¦‚Ì‚Ý‚ÅAÅ‘åƒqƒbƒg”‚È‚Ç‚ª•Ï‚Å‚·B
-
- skill.c
- skill_castend_nodamage_id()‚ÌC³
- ƒXƒg[ƒ€ƒKƒXƒg‚̈—’ljÁ
-
-EƒXƒLƒ‹ƒ†ƒjƒbƒgˆ—‚ɈӒn‚É‚È‚Á‚ĈÀ‘S«ƒ`ƒFƒbƒN‚ð’ljÁB
- i—Ž‚¿‚È‚‚È‚é“ú‚͉“‚¢HHj
-
- map.h
- MAX_SKILLUNITGROUP‚ð32‚É‘‚₵‚½
- skill.c
- skill_status_change_*()‚ÉNULLƒ`ƒFƒbƒN’ljÁ
- battle.c
- battle_calc_damage()‚ɶ‘¶ƒ`ƒFƒbƒN’ljÁ
- map.c
- map_freeblock_unlock()‚ɃƒbƒN”ƒ`ƒFƒbƒN‚ð’ljÁ
-
-E‚»‚Ì‘¼C³
- EPC‚ÌÅ‘åHP‚ª30000‚ɧŒÀ‚³‚ê‚Ü‚µ‚½B
- EPC‚̉ñ•œˆ—‚ªC³‚³‚ê‚Ü‚µ‚½
- E‚«”ò‚΂µˆ—‚ÌC³
- E0281‚Ìitem_db.txt‚Ì•ÏX‚ðitem_db2.txt‚É‚à“K—p
-
- (map/)
- pc.c
- pc_heal(),pc_calcstatus()‚ÌC³
- path.c
- path_blownpos()‚ÌC³
- (db/)
- item_db2.txt
- 0281‚Ì–¼‘OC³‚È‚Ç‚ð“K—p
-
-----------
-//0280 by ŒÓ’±—–
-
-EŠÇ—ŽÒ‚̃VƒXƒeƒ€‚ðì¬
- "conf/login_athena.cnf"‚Ìì¬AŠÇ—ŽÒƒpƒXAGMƒpƒX‚ÌÝ’èB
- ƒAƒJƒEƒ“ƒg‚ðì‚é‚Æ‚«A
- ƒ—á„ ID: hoge_M Pass: foobar@admin
- ‚̂悤‚ÉAƒpƒXƒ[ƒh‚ÌŒã‚ë‚Éu@ŠÇ—ŽÒƒpƒXv‚ª•K—v‚ÉB
- login_athena.cnf‚Ìadmin_pass‚Ì—“‚ðÁ‚¹‚ÎA¡‚܂ł̂悤‚É‚à‚‚©‚¦‚Ü‚·B
- i‚»‚Ìê‡Aadmin_pass‚ÌŒã‚낾‚¯‚Å‚È‚As‚²‚ÆÁ‚µ‚Ä‚‚¾‚³‚¢j
-
- (login/)
- login.h
- Ý’èƒtƒ@ƒCƒ‹‚̃fƒtƒHƒ‹ƒg–¼’ljÁ
- login2.c
- ƒAƒJƒEƒ“ƒg쬂̂Ƃ±‚ë‚ðC³
- Ý’èƒtƒ@ƒCƒ‹‚Ì“Ç‚Ýž‚ݒljÁ
-
-E@GMƒRƒ}ƒ“ƒh•œŠˆ
- ‚½‚¾‚µAu@gm GMƒpƒXv‚Æ‚µ‚ÄŽg‚¢‚Ü‚·B
- GMƒpƒX‚Ílogin_athena.cnf‚Ì‚à‚Ì‚Å‚·B
- ŽI‚ÌÄ‹N“®‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñ‚ªA
- ƒNƒ‰ƒCƒAƒ“ƒg‚̓ŠƒƒO‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-
- ƒ’ˆÓ„
- “¯‚¶ƒAƒJƒEƒ“ƒg‚Ì‘S‚ẴLƒƒƒ‰‚ÍPT‚©‚甲‚¯‚Ä’u‚¢‚Ä‚‚¾‚³‚¢B
- ‚Ü‚½A‘qŒÉ‚̃AƒCƒeƒ€‚Í‘S•”ˆø‚«o‚µ‚Ä’u‚¢‚Ä‚‚¾‚³‚¢B
- ‚»‚¤‚µ‚È‚¢‚ƃSƒ~ƒf[ƒ^‚ªŽc‚è‚Ü‚·B
-
- (login/)
- login2.c
- ƒAƒJƒEƒ“ƒgID•ÏXˆ—’ljÁ
- (char/)
- char2.c
- ƒAƒJƒEƒ“ƒgID•ÏXˆ—’ljÁ
- (map/)
- chrif.c/chrif.h
- chrif_changegm(),chrif_changedgm()’ljÁ
-
-E@pvpoffƒRƒ}ƒ“ƒh•œŠˆ
- clif.c/clif.h
- clif_pvpoff()’ljÁ
- atcommand.c
- @pvpoff‚̈—’ljÁ
-
-E‹ó‚Ì‘qŒÉƒf[ƒ^‚Í•Û‘¶‚³‚ê‚È‚¢‚悤‚É•ÏX
- (char/)
- int_storage.c
- inter_storage_save()Astorage_tostr()‚ðC³
-
-E@memoƒRƒ}ƒ“ƒh’ljÁB
- ”CˆÓ‚Ì‹L‰¯ˆæ‚Ƀƒ‚‚ðŽæ‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
-
- atcommand.c
- @memo‚̈—’ljÁ
-
-
-----------
-//0279 by ŒÓ’±—–
-
-EƒXƒLƒ‹ƒ†ƒjƒbƒgˆ—‚Ì–â‘è‘Îô
- ‚Æ‚è‚ ‚¦‚¸‚Ђ½‚·‚çƒ`ƒFƒbƒN‚ð“ü‚ê‚Ü‚µ‚½B
-
- skill.c
- skill_unit_timer_sub(),skill_unit_move_sub(),
- skill_delunit()‚Ƀ†ƒjƒbƒg‚̶‘¶”»’è‚ð’ljÁB
- skill_unitgrouptickset_search(),skill_unitgrouptickset_delete()
- skill_delunitgroup()‚ÉNULLƒ|ƒCƒ“ƒ^ƒ`ƒFƒbƒN‚ð’ljÁB
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³
- ƒeƒŒƒ|[ƒgAƒ[ƒvƒ|[ƒ^ƒ‹‚ÌŽÀ‘•
- ƒLƒŠƒGƒGƒŒƒCƒ\ƒ“‚ðMOB‚ÉŠ|‚¯‚é‚Æ—Ž‚¿‚éƒoƒOC³
-
- (db/)
- cast_db.txt
- ƒ[ƒvƒ|[ƒ^ƒ‹‚̉r¥ŽžŠÔÝ’è
- (map/)
- map.h
- struct skill_unit_group‚Ìvalstr‚ðƒ|ƒCƒ“ƒ^‚É•ÏX
- clif.c/clif.h
- clif_parse_UseSkillMap(),clif_skill_warppoint()A
- clif_parse_Memo(),clif_skill_memo()’ljÁ
- skill.c/skill.h
- skill_castend_map(),skill_unit_onlimit()‚̒ljÁ
- skill_unit_*Œn‚̈—‚¢‚ë‚¢‚ë’ljÁB
- skill_status_change_start()‚̃LƒŠƒG‚̈—C³
- pc.c/pc.h
- pc_randomwarp(),pc_memo()’ljÁ
-
-----------
-//0278 by nabe
-
-EƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðU‚Á‚½‚Æ‚«‚ɃXƒe[ƒ^ƒX‚ðXV
- pc.c
- pc_skillup()‚Åpc_calc_skilltree()‚Ì‘ã‚í‚è‚Épc_calcstatus()
-EŠŽ—Ê‘‰Á‚ðC³
- pc.c
- pc_calcstatus()‚ÌŠŽ—Ê‘‰Á‚É‚æ‚émax_weight‘•ª‚ðskill*1000‚É
-
-----------
-//0277 by nabe
-
-E•t‘®•iiƒJ[ƒgA‘éAƒyƒRj‚Ì•t‚¯ŠO‚µ‚ð‰ü—Ç
- (conf/)
- npc_event_rental.txt
- ‘éAƒyƒR‚ð•t‚¯‚éƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh‚ð•ÏX
- (map/)
- battle.c
- battle_addmastery(),battle_calc_weapon_attack()‚Å
- ƒyƒRƒyƒR‹R掞‚Ì‘„UŒ‚—͕ⳂðŽÀ‘•
- clif.c
- clif_parse_CartOff‚ðclif_parse_RemoveOption‚É•ÏX
- pc.c/pc.h
- pc_calcstatus()‚ŃJ[ƒgAƒyƒRƒyƒRæ‚è‚É‚æ‚鑬“x•Ï‰»‚ðŒvŽZ
- pc_setoption(),pc_setcart()‰ü—Ç
- pc_setfalcon(),pc_setriding()’ljÁ
- pc.h‚Épc_isfalcon(),pc_isriding()ƒ}ƒNƒ’ljÁ
- script.c
- buildin_setfalcon() ‘é•t‰Á
- buildin_setriding() ƒyƒRƒyƒRæ‚è
-
-----------
-//0276 by nabe
-
-E¸˜BNPCŽÀ‘•
- (conf/)
- npc_town_refine.txt
- ¸˜BNPCƒXƒNƒŠƒvƒgƒtƒ@ƒCƒ‹V‹K’ljÁ
- (map/)
- pc.c/pc.h
- ¸˜B¬Œ÷—¦‚Ì•\percentrefinery[5][10]‚ð’ljÁ
- script.c‚©‚çŒÄ‚΂ê‚éŠÖ”
- pc_percentrefinery() ¸˜B¬Œ÷—¦
- pc_equipitemindex() ‘•”õ•iƒCƒ“ƒfƒbƒNƒX
- ‚ð’ljÁ
- script.c
- buildin_getequipname() ‘•”õ–¼•¶Žš—ñi¸˜Bƒƒjƒ…[—pj
- buildin_getequipisequiped() ‘•”õƒ`ƒFƒbƒN
- buildin_getequipisenableref() ‘•”õ•i¸˜B‰Â”\ƒ`ƒFƒbƒN
- buildin_getequipisidentify() ‘•”õ•iŠÓ’èƒ`ƒFƒbƒN
- buildin_getequiprefinerycnt() ‘•”õ•i¸˜B“x
- buildin_getequipweaponlv() ‘•”õ•i•ŠíLV
- buildin_getequippercentrefinery() ‘•”õ•i¸˜B¬Œ÷—¦
- buildin_successrefitem() ¸˜B¬Œ÷
- buildin_failedrefitem() ¸˜BŽ¸”s
- ‚ð’ljÁ
-
-EƒXƒNƒŠƒvƒg‚ÉWeight,MaxWeightƒpƒ‰ƒ[ƒ^‚ð’ljÁ
- const.txt
- Weight,MaxWeight‚ð’ljÁ
-
-EƒXƒNƒŠƒvƒg‚ł̃Lƒƒƒ‰–¼•\Ž¦•ûŽ®‚ð•ÏX
- (conf/)
- npc_job_merchant.txt/npc_job_thief.txt/npc_town_kafra.txt
- mes "$charaname"; ‚ð mes strcharinfo(0); ‚É•ÏX
- (map/)
- script.c
- buildin_strcharinfo()‚ð’ljÁ
-
-----------
-//0275 by ŒÓ’±—–
-
-EMVP‚ÌŽÀ‘•
- MVP‚Ì”»’è‚É‚Ídmglog‚ðŽg‚Á‚Ä‚Ü‚·B‚·‚È‚í‚¿—^ƒ_ƒ‚¾‚¯‚ªŒvŽZ‘ÎÛ‚Å‚·B
- ”íƒ_ƒ‚Íl—¶‚³‚ê‚Ä‚Ü‚¹‚ñB
- ŒoŒ±’l‚Í–³ðŒ‚Å“ü‚èAŠm—¦‚Å‚³‚ç‚ɃAƒCƒeƒ€‚ª“ü‚è‚Ü‚·B
- ƒAƒCƒeƒ€‚Í•¡”Žè‚É“ü‚邱‚Æ‚à‚ ‚è‚Ü‚·B
-
- clif.c/clif.h
- clif_mvp_effect(),clif_mvp_item(),clif_mvp_exp()’ljÁ
- mob.c
- mob_damage()‚ÉMVPˆ—’ljÁ
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³
- Eƒ}ƒOƒiƒ€ƒuƒŒƒCƒNAƒAƒ[ƒVƒƒƒ[ŽÀ‘•
- E‚«”ò‚΂µŒnƒXƒLƒ‹‚ªˆê•”Žg—p‚³‚ê‚È‚¢ƒoƒOC³
- Eƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒO‚̃_ƒ[ƒWŒvŽZŽ®C³
- E•ŠíUŒ‚Œn‘®«•t‚«ƒXƒLƒ‹‚Å‘®«‚ª”½‰f‚³‚ê‚È‚¢–â‘èC³
- Eꊎw’èƒXƒLƒ‹‚ªUŒ‚‚µ‚È‚ª‚ç‰r¥‚Å‚«‚½–â‘è‚ðC³
-
- battle.c
- battle_calc_weapon_attack()‚ÌŠY“–ŒÂŠC³•’ljÁ
- skill.c
- skill_castend_damage_id()‚Ɉ—’ljÁ
- skill_use_pos()‚ÉUŒ‚’âŽ~ˆ—’ljÁ
-
-EƒJ[ƒhƒXƒLƒ‹‚ªƒJ[ƒh‚ðŠO‚µ‚Ä‚àŽg—p‰Â”\‚È–â‘è‚ðC³
- pc.c
- pc_calc_skilltree()‚ðC³
-
-EƒAƒCƒeƒ€ƒhƒƒbƒv—¦AexpŠ“¾”{—¦‚È‚Ç‚Ì’²®‹@”\’ljÁ
- battle_athena.cnf‚Å’²®‚Å‚«‚逖ڂª‘‚¦‚Ü‚µ‚½B
- Ú‚µ‚‚Í‚»‚¿‚ç‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢B
-
- (conf/)
- battle_athena.cnf
- mvp_hp_rate,item_rate,exp_rate,mvp_item_rate,mvp_exp_rate’ljÁ
- (map/)
- battle.c/battle.h
- ‘‚¦‚½€–Ú‚ð“Ç‚Ýž‚ނ悤‚Ɉ—’ljÁ
- mob.c
- mob_db.txt“Ç‚Ýž‚ÝŽžAƒf[ƒ^‚ð’²®‚·‚鈗’ljÁ
-
-----------
-//0274 by ŒÓ’±—–
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•
- ƒXƒLƒbƒhƒgƒ‰ƒbƒvAƒ‰ƒ“ƒhƒ}ƒCƒ“Aƒuƒ‰ƒXƒgƒ}ƒCƒ“AƒNƒŒƒCƒ‚ƒA[ƒgƒ‰ƒbƒvA
- ƒtƒŠ[ƒWƒ“ƒOƒgƒ‰ƒbƒvAƒTƒ“ƒhƒ}ƒ“AƒAƒ“ƒNƒ‹ƒXƒlƒA
-
- ‡–°‚â“€Œ‹‚È‚Ç‚ÌŠm—¦‚Í“K“–‚Å‚·B
- ã©”“®Žž‚̃GƒtƒFƒNƒg‚ªo‚Ü‚¹‚ñB‚Ä‚¢‚¤‚©o‚µ•û‚ª‚í‚©‚è‚Ü‚¹‚ñB
- ‚í‚©‚él‚Í‹³‚¦‚Ä‚‚¾‚³‚¢B‚à‚µ‚‚Í–{ŽI‚Åã©”“®Žž‚Ì•¡‡‰»Ï‚Ý‚Ì
- ¶ƒpƒPƒbƒgƒf[ƒ^‚Å‚à‚¢‚¢‚Ì‚Å‹³‚¦‚Ä‚‚¾‚³‚¢B
-
- (db/)
- skill_db.txt
- ‘®«‚ÌC³
- (map/)
- skill.c
- ŠY“–ŒÂŠ
- battle.c/battle.h
- battle_calc_misc_damage()‚ÌŠY“–ŒÂŠ
- battle_stopwalking()’ljÁ
- clif.c/clif.h
- clif_fixpcpos()’ljÁ
- clif_parse_WalkToXY()‚ɃAƒ“ƒNƒ‹‚Å“®‚¯‚È‚‚·‚鈗’ljÁ
- mob.c
- mob_ai_sub_hard()‚ɃAƒ“ƒNƒ‹‚Å“®‚¯‚È‚‚·‚鈗’ljÁ
-
-E‘•”õ‚Ȃǂ̃NƒŠƒeƒBƒJƒ‹ƒ{[ƒiƒX‚ª1/10‚É‚È‚Á‚Ä‚¢‚éƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½
- battle.c
- battle_calc_weapon_attack()‚ɒljÁ•ª‚ðŒvŽZ‚·‚鈗C³
-
-EƒuƒŠƒbƒcƒr[ƒg‚ÌŒvŽZŽ®‚ª‘S‘Rˆá‚¤ƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½
- battle.c
- battle_calc_attack()‚ÌBF_MISC‚̈’u‚ªŠÔˆá‚Á‚Ä‚¢‚½‚Ì‚ðC³
-
-ESW‚ƃjƒ…[ƒ}‚ª•ŠíUŒ‚‚È‚ç‚Ç‚ñ‚ȃŒƒ“ƒW‚ÌUŒ‚‚Å‚à–h‚¢‚Å‚¢‚½–â‘è‚ðC³
- battle.c
- battle_calc_damage()‚̃Œƒ“ƒW”»’è‚ðC³
-
-EƒI[ƒo[ƒgƒ‰ƒXƒg‚ƃEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“‚ªPTƒƒ“ƒo‚É‚à‚©‚©‚é‚悤‚ÉC³B
- Œø‰Ê‚ÍŽg—pŽÒ‚ÆPTƒƒ“ƒo‚ňႢ‚Í‚ ‚è‚Ü‚¹‚ñB
-
- skill.c
- skill_castend_nodamage_id()‚ÌC³B
-
-----------
-//0273 by ŒÓ’±—–
-
-EƒLƒƒƒ‰ƒNƒ^[‚ªÁŽ¸‚µ‚½‚茶‰e‚ªo‚é–â‘肪C³‚³‚ê‚Ü‚µ‚½
- E‚«”ò‚΂µƒXƒLƒ‹‚ðŽó‚¯‚é‚Æ”¶‚µ‚Ä‚¢‚½
- EŽÎ‚߈ȊO‚Ì•às‚Å”¶‚µ‚Ä‚¢‚½
-
- map.c
- map_foreachinmovearea()‚ÌC³B
- skill.c
- skill_blown()‚É•\Ž¦”͈ÍXVˆ—‚ð’ljÁB
- mob.c
- mob_walk()‚Å•à‚«I‚í‚Á‚½‚Æ‚«‚Ɉʒu‚ðÄ‘—M‚·‚é‚悤‚ÉC³
- pc.c
- pc_walk()‚Å•à‚«I‚í‚Á‚½‚Æ‚«‚Ɉʒu‚ðÄ‘—M‚·‚é‚悤‚ÉC³
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³
- ƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹Aƒtƒ@ƒCƒ„[ƒsƒ‰[‚ÌŽÀ‘•
- ƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ł̃mƒbƒNƒoƒbƒN•ûŒü‚ðC³
-
- (db/)
- skill_db.txt
- ƒtƒ@ƒCƒ„[ƒsƒ‰[AƒuƒŠƒbƒcƒr[ƒg‚̃qƒbƒg”C³
- (map/)
- skill.c
- skill_blown()‚É‘ÎÛ‚ÌŒü‚«‚É‚æ‚éƒmƒbƒNƒoƒbƒNˆ—’ljÁ
- ‚»‚Ì‘¼•K—v‚ÈêŠC³
- mob.c
- mob_walk(),mob_attack()‚ÅŒü‚«‚ð•Û‘¶
- pc.c
- pc_walk(),pc_attck()‚ÅŒü‚«‚ð•Û‘¶
- map.c
- map_calc_dir()’ljÁB‘Š‘ΓI‚È•ûŒü‚ð‹‚ß‚é
-
-
-EƒNƒŠƒeƒBƒJƒ‹‘‰Á‘•”õ‚ªí“¬Žž‚ÉŒvŽZ‚³‚ê‚Ä‚È‚¢ƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½
- battle.c
- battle_calc_weapon_attack()‚ɒljÁ•ª‚ðŒvŽZ‚·‚鈗’ljÁ
-
-
-E–hŒäƒ†ƒjƒbƒgiSW/ƒjƒ…[ƒ}j‚ª“G‚ɉe‹¿‚ð‹y‚Ú‚·‚©‚Ç‚¤‚©‚ð
- battle_athena.cnf‚ŧŒä‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- ƒfƒtƒHƒ‹ƒg‚Íu‹y‚Ú‚³‚È‚¢v‚Å‚·B
-
- (conf/)
- battle_athena.cnf
- €–Údefunit_not_enemy‚ð’ljÁ
- (map/)
- battle.c/battle.h
- struct Battle_Config ‚É defnotenemyƒƒ“ƒo’ljÁB
- battle_read_config()‚̈—‚ðC³B
- skill.c
- skill_unitsetting()‚ÅSW/ƒjƒ…[ƒ}‚̈—‚ðC³
-
-EƒtƒFƒ“ƒJ[ƒh‘•”õŽžAŽ€‚ñ‚Å‚à‰r¥‚ª‘±‚ƒoƒO‚ðC³
- i‰r¥I—¹‘O‚É•œŠˆ‚·‚ê‚Ζ‚–@‚ª”“®‚·‚é–â‘è‚àC³‚É‚È‚è‚Ü‚·j
-
- pc.c
- pc_damage()‚ÅŽ€–SŽžskill_castcancel()‚ðŒÄ‚Ԃ悤‚ÉC³
-
-E“G–¡•û”»’舗‚ɃoƒO‚ª‚ ‚Á‚½‚Ì‚ðC³
- battle.c
- battle_check_target()‚ÌC³
-
-----------
-//0272 by ŒÓ’±—–
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³
- EƒZƒCƒtƒeƒBƒEƒH[ƒ‹Aƒjƒ…[ƒ}‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½B
- Eƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“”“®’†‚ÉŒø‰Ê”͈͊O‚©‚ç”͈͓à‚É“ü‚Á‚Ä‚«‚½‚Æ‚«A
- “G–¡•û‚Ì‹æ•Ê–³‚UŒ‚‚ª“–‚½‚é–â‘肪C³‚³‚ê‚Ü‚µ‚½B
- EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ÌŽË’ö‚ªC³‚³‚ê‚Ü‚µ‚½B
- E”͈͖‚–@‚Å“|‚µ‚½“G‚ªHP0‚ÅŽc‚éꇂª‚ ‚é–â‘肪C³‚³‚ê‚Ü‚µ‚½B
-
- (db/)
- skill_db.txt
- ƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ÌŽË’ö‚ð8‚É•ÏX
- (map/)
- skill.c
- skill_unit_onplace(),~ondelete(),~onout()‚È‚Ç‚ÉA
- ƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚̈—’ljÁB
- skill_unit_move()‚Ƀ^[ƒQƒbƒg‚Ì“G–¡•û”»’è‚ð’ljÁB
- skill_unit_timer_onplace(),~ondelete()‚Ƀ†ƒjƒbƒg¶‘¶”»’è‚ð’ljÁ.
- skill_clear_unitgroup()’ljÁBƒ†ƒjƒbƒgƒOƒ‹[ƒv‚Ì‘Síœ‚ð‚·‚éB
- battle.c
- battle_calc_damage()‚ɃZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚̈—’ljÁB
- map_foreachinarea()‚È‚ÇC³
- map.c
- map_quit()‚Åskill_clear_unitgroup()‚ðŒÄ‚Ԃ悤‚ÉB
-
-EƒXƒLƒ‹‚Ì‚«”ò‚΂µˆ—‚ðŽÀ‘•
- ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_[AƒTƒ“ƒNƒ`ƒ…ƒAƒŠAƒXƒsƒAƒXƒ^ƒuA
- ƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…Aƒ`ƒƒ[ƒWƒAƒ[‚Ì‚«”ò‚΂µˆ—ŽÀ‘•
-
- path.c/map.h
- path_blownpos()’ljÁ
- battle.c/battle.h
- struct Damage‚Éblewcountƒƒ“ƒo’ljÁ
- battle_calc_*_damage()‚Åblewcount‚ðƒZƒbƒg‚·‚é‚悤‚ÉB
- skill.c/skill.h
- skill_blown()’ljÁB‚«”ò‚΂µˆ—B
- skill_attack()‚Åskill_blown()‚ðŒÄ‚Ԃ悤‚ÉB
- skill_attack()‚Ìflag‚Ì‚«”ò‚΂µƒrƒbƒg‚Í–¢Žg—p‚ÉB
-
-E•às’†‚̃‚ƒ“ƒXƒ^[‚ÉUŒ‚‚µ‚½‚Æ‚«Aƒ‚ƒ“ƒXƒ^[‚ɃfƒBƒŒƒC‚ª“ü‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- iUŒ‚‚̃‚[ƒVƒ‡ƒ“‚Ì’x‰„‚ðl‚¦‚Ä‚È‚¢‚Ì‚Å‚ ‚ñ‚Ü‚èˆÓ–¡‚ª‚È‚¢‚©‚àHj
-
- (map/)
- mob.c/mob.h
- state‚ÉMS_DELAY‚ð’ljÁB
- mob_damage(),mob_timer()‚È‚Ç‚ÌC³
-
-E•às’†‚̃‚ƒ“ƒXƒ^[‚ÉUŒ‚‚µ‚½‚Æ‚«AˆÊ’u‚ª‚¸‚ê‚é–â‘è‚̉ž‹}ˆ’u
- i‚Ü‚¾ˆÊ’u‚Í‚¸‚ê‚é‚悤‚Å‚·j
-
- clif.c/clif.h
- clif_fixmobpos()‚ð’ljÁ
- mob.c
- mob_attack()‚Åclif_fixmobpos()‚ðŒÄ‚Ԃ悤‚ÉB
-
-E‚»‚Ì‘¼C³
- pc.c
- pc_stop_walking()‚Åpath_len‚ð‰Šú‰»‚·‚é‚悤‚ÉB
-
-----------
-//0271 by ‚ê‚
-
-EPT‚ÉŠÖ‚µ‚Ä‚µ‚¾‚¯C³
- Œö•½‚É‚µ‚Ä‚©‚çƒLƒƒƒ‰‚ð‰Á“ü‚³‚¹‚é‚ÆŒö•½‚ª‰ðœ‚³‚ê‚È‚¢ƒoƒO‚ðC³
-
-----------
-//0270 by ŒÓ’±—–
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³
- ƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“AƒTƒ“ƒNƒ`ƒ…ƒAƒŠAƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€
-
- (db/)
- skill_db.txt
- ƒ}ƒOƒkƒX‚̃qƒbƒg”A‘®«’²®
- ƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚Ì‘®«’²®
- (map/)
- map.h
- struct map_session_data‚ÌC³
- clif.c/clif.h
- clif_skill_setunit(),clif_skill_delunit()A
- clif_getareachar_skillunit(),clif_clearchar_skillunit()’ljÁ
- clif_pcoutsight(),clif_pcinsight(),clif_getareachar()C³
- skill.c/skill.h
- –Y‚ê‚é‚Ù‚Ç‘½”•ÏXBŽå‚ɃXƒLƒ‹ƒ†ƒjƒbƒgŠÖ˜A•”•ªB
- pc.c
- pc_authok()‚Åskillunit,skillunittick‚ð‰Šú‰»‚·‚é‚悤‚ÉB
- pc_walk()‚Åskill_unit_move()‚ðŒÄ‚Ԃ悤‚ÉB
- mob.c
- mob_spwan()‚Åskillunittick‚ð‰Šú‰»‚·‚é‚悤‚ÉB
- mob_walk()‚Åskill_unit_move()‚ðŒÄ‚Ԃ悤‚ÉB
- battle.c/battle.h
- battle_calc_magic_attack()C³
- battle_check_target()C³
- map.c
- map_foreachobject()‚È‚ÇC³
-
-E‚±‚Ü‚©‚¢ƒoƒOC³‚È‚Ç
- Emob‚ª‰ñ•œ‚µ‚È‚¢–â‘èC³
-
- battle.c
- battle_damage()C³
-
-----------
-//0266 by ŒÓ’±—–
-
-E–‚–@ŒvŽZŽ®‚ÌC³
- –‚–@”{—¦‚ðƒ_ƒ[ƒW‚ÉŠ|‚¯‚Ä‚¢‚½‚Ì‚ðMATK‚É‚©‚¯‚é‚悤‚É‚µ‚Ü‚µ‚½B
- c‚±‚Á‚¿‚ª³‚µ‚¢‚Æ‚µ‚Ä‚¢‚¢‚Ì‚©‚ÈHˆá‚¤‚Ȃ狳‚¦‚Ä‚‚¾‚³‚¢B
-
- battle.c
- battle_calc_magic_attack()‚ÌC³
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•
- ƒTƒCƒgAƒ‹ƒAƒtAƒ[ƒhƒIƒuƒ”ƒ@[ƒ~ƒŠƒIƒ“
-
- ƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“‚Í‚R‰ñ‚Ì”»’莞‚ɉr¥‰¹‚ª–‚è‚Ü‚·cB
- clif_skill_damage()‚Ìtype‚ðFX•Ï‚¦‚Ä‚Ý‚Ü‚µ‚½‚ª‚Ç‚¤‚à‚¤‚Ü‚‚¢‚«‚Ü‚¹‚ñB
- ’¼‚¹‚él‚Í’¼‚µ‚Ä‚‚ê‚é‚Æ‚¤‚ꂵ‚¢‚Å‚·B
- i‚¤[‚ñA‚Ђå‚Á‚Æ‚µ‚½‚ç–{—ˆ‚̓Oƒ‰ƒtƒBƒbƒN‚Ì‚È‚¢ƒXƒLƒ‹ƒ†ƒjƒbƒg‚ð
- Ý’u‚µ‚ÄA‚»‚̃†ƒjƒbƒg‚ÌID‚Ń_ƒ[ƒW‚ð—^‚¦‚é‚Ì‚©‚àHHj
-
- (db/)
- skill_db.txt
- ƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“‚̃qƒbƒg”‚ð‚R‚©‚ç10‚É•ÏXB
- (map/)
- skill.c
- skill_status_change_timer_sub()’ljÁB
- skill_status_change_*()‚Ɉ—’ljÁB
-
-Eblock‚̃ƒ‚ƒŠ‰ð•ú‚̈À‘S«‚ÌŒüã
- map_foreachinarea,party_foreachsamemap‚ʼnñ‚Á‚Ä‚¢‚é‚Æ‚«‚É
- block‚ðƒ`ƒFƒCƒ“‚©‚ç휂·‚é‚ÆA‚¤‚Ü‚‰ñ‚ç‚È‚¢‰Â”\«‚ª‚ ‚é–â‘èC³B
- ‚³‚ç‚ÉAblock‚ðƒƒ‚ƒŠ‚©‚ç‰ð•ú‚·‚é‚Ɗ댯‚È–â‘è‚àC³B
-
- Eforeach“à‚ÅŠÖ”‚ðŒÄ‚Ô‘O‚Éblock‚ªƒ`ƒFƒCƒ“‚©‚çŠO‚ê‚Ä‚È‚¢‚©ƒ`ƒFƒbƒNB
- Eforeach‚É“ü‚Á‚½‚Æ‚«‚ɃƒbƒN‚µ‚ăƒ‚ƒŠ‚©‚ç‰ð•ú‚³‚ê‚È‚¢‚悤‚É‚·‚éB
- ‚±‚ê‚̓†[ƒU[‚ªfree‚¶‚á‚È‚map_freeblock‚É‚æ‚Á‚ĉð•ú‚·‚é‚悤‚É
- ƒvƒƒOƒ‰ƒ€‚·‚é•K—v‚ª‚ ‚éBiƒ‹[ƒv‚©‚çŒÄ‚΂ê‚é‰Â”\«‚Ì‚ ‚éŠÖ”‚ðì‚é
- ꇂ̂±‚Æ‚ÅA•’Ê‚Ífree‚Å‚à‚¢‚¿‚¨‚¤“®‚Bj
- Emap_foreachinmovearea‚ɂ‚¢‚Ă͉ü—Ç‚µ‚Ä‚¢‚È‚¢‚ªA
- ‚±‚̃‹[ƒv‚Åblock‚ð휂·‚邱‚Æ‚Í‚ ‚肦‚È‚¢‹C‚ª‚·‚é‚Ì‚Å‚¢‚¢‚Æ‚·‚éB
-
- ‚±‚ê‚Í¡Œã‚ðŒ©‰z‚µ‚½‰ü—Ç‚Å‚ ‚Á‚ÄAŒ»Ý‚Ì•sˆÀ’肳‚𒼂·‚à‚Ì‚Å‚Í‚È‚¢B
- iŒ»Ý‚Íforeach“à‚Ńƒ‚ƒŠ‚ð‰ð•ú‚µ‚Ä‚¢‚È‚¢c‚Í‚¸‚È‚Ì‚ÅB
- ‚½‚¾AƒXƒLƒ‹ƒ†ƒjƒbƒg‚ȂLjꎞƒIƒuƒWƒFƒNƒg‚𑽗p‚µŽn‚ß‚é‚ÆŒø‰Ê‚ª‚ ‚éj
-
- map.c
- map_freeblock(),map_freeblock_lock(),~_unlock()’ljÁB
- map_delobject()‚Ìfree()‚ðmap_freeblock()‚É’uŠ·B
- map_foreachinarea‚ŃƒbƒN‚ƈÀ‘S«ƒ`ƒFƒbƒNB
- party.c
- party_foreachsamemap()‚ŃƒbƒN‚ƈÀ‘S«ƒ`ƒFƒbƒN
-
-
-EƒXƒLƒ‹ƒ†ƒjƒbƒg‹@\ŽÀ‘•
- Ý’uŒn‚̃XƒLƒ‹‚Ì‚½‚ß‚Ì‹@\ŽÀ‘•BŽÀۂ̃XƒLƒ‹‚ÌŽÀ‘•‚Í‚Ü‚¾‚Å‚·B
-
- skill.c
- ‚È‚ñ‚©‚à‚¤FX’ljÁ‚µ‚Ü‚µ‚½B
- map.c
- do_init()‚Ådo_skill_init()‚ðŒÄ‚Ԃ悤‚ÉB
- map.h
- struct skill_unit,skill_unit_group‚ȂǒljÁB
- map_session_data‚Ì‘‚«Š·‚¦‚È‚ÇB
-
-E‚»‚Ì‘¼×‚©‚¢‚Æ‚±‚ë‚ðC³‚µ‚½‚ÆŽv‚¤‚¯‚Ç–Y‚ê‚Ü‚µ‚½B
-
-----------
-//0264 by nabe
-
-E$charaname‚ð’‚éNPC‚Ƙb‚µ‚½ŽžAmapŽI‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
- script.c
- replacestr()‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðŽè’¼‚µ‚µ‚Ü‚µ‚½B
-
-----------
-//0263 by nabe
-
-E˜I“XŠJÝ’†‚ɃJ[ƒgƒAƒCƒeƒ€‚ðo‚µ“ü‚ê‚Å‚«‚È‚¢‚悤C³
- pc.c
- pc_putitemtocart(),pc_getitemfromcart()‚ÉA˜I“X”»’è‚ð’ljÁ
-
-E˜I“XƒAƒCƒeƒ€w“ü‚̃`ƒFƒbƒN‚ð’ljÁ
- vending.c
- vending_purchasereq()‚Å”X‚ÌðŒ”»’è‚ð’ljÁ
-
-----------
-//0261 by ŒÓ’±—–
-
-EŠg‘勾AƒCƒOƒhƒ‰ƒVƒ‹‚Ì—t‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- ƒXƒNƒŠƒvƒg‚ÉitemskillƒRƒ}ƒ“ƒhì¬BˆêŽž“I‚ɃXƒLƒ‹‚ªŽg—p‚Å‚«‚Ü‚·B
-
- (map/)
- script.c
- buildin_itemskill()‚̒ljÁ‚È‚ÇB
- skill.c
- ƒAƒCƒeƒ€ƒXƒLƒ‹‚È‚çSP‚È‚Ç‚ðŒŸ¸•Á”‚È‚¢‚悤‚ÉC³
- clif.c/clif.h
- clif_item_skill()‚̒ljÁB
- (db/)
- item_db.txt/item_db2.txt
- ƒXƒLƒ‹Žg—pƒAƒCƒeƒ€‚̃XƒNƒŠƒvƒgC³
-
-Eƒp[ƒeƒBƒXƒLƒ‹‚ÌŽÀ‘•
- ƒAƒ“ƒ[ƒ‹ƒXAƒ}ƒOƒjƒtƒBƒJ[ƒgAƒOƒƒŠƒAAƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…‚ª
- ‰æ–Ê“à‚̃p[ƒeƒB‘Sˆõ‚ÉŒø‰Ê‚ð‹y‚Ú‚·‚悤‚É‚È‚è‚Ü‚µ‚½B
-
- skill.c
- skill_castend_nodamage_id()‚ÌŠY“–ŒÂŠ‚ÌC³
- party.c
- party_foreachsamemap()‚ÌC³
-
-EƒXƒLƒ‹ŠÖŒW‚ÌC³
- ƒLƒŠƒGƒGƒŒƒCƒ\ƒ“‚ª‘¦Žž”“®‚É‚È‚Á‚Ä‚¢‚é‚Ì‚ðC³B
- ƒXƒg[ƒ“ƒJ[ƒX‚ŃGƒtƒFƒNƒg‚ª‘¶Ý‚µ‚È‚¢ƒoƒOC³B
-
- (db/)
- skill_db.txt
- ƒLƒŠƒGƒGƒŒƒCƒ\ƒCƒ“C³
- (map/)
- skill.c/skill.h
- skill_check_condition()’ljÁBƒXƒLƒ‹Žg—pðŒŒŸ¸‚̈ê–{‰»B
- skill_castend_nodamage_id()‚ŃXƒg[ƒ“ƒJ[ƒXC³
-
-EƒXƒNƒŠƒvƒg‚̃R[ƒh‚ð®—
- get_val()‚Åconst.txt‚Ì’è”‚ðŠ“¾‚Å‚«‚é‚悤‚ÉC³B
-
- (map/)
- script.c
- get_val()‚ÌC³iconst.txt‚Ìtype==0‚Ì’l‚ªŠ“¾‰Â”\‚Éj
- bonus(),bonus2()‚È‚Ç‚ÌC³B
- (db/)
- const.txt
- type=1‚Å‚ ‚é•K—v‚ª–³‚¢‚à‚Ì‚ð0‚ÉB
- item_db.txt/item_db.txt
- const.txt‚Ì•ÏX‚É”º‚¤C³B
-
-----------
-//0260 by ŒÓ’±—–
-
-E퓬ŠÖŒW‚Ìݒ肪ƒtƒ@ƒCƒ‹‚É‘‚¯‚é‚É‚È‚è‚Ü‚µ‚½
- mapŽI‚Ì‘æ2ˆø”‚Ƀtƒ@ƒCƒ‹–¼‚ªÝ’肳‚ê‚Ä‚¢‚é‚ÆA‚»‚ê‚ðŽg‚¢A
- ݒ肳‚ê‚Ä‚È‚¢ê‡‚Í "conf/battle_athena.cnf"‚ðŽg‚¢‚Ü‚·B
-
- ‚ ‚ÆAˆê‰ž”͈ÍUŒ‚ƒXƒLƒ‹‚ɂ‚¢‚Äà–¾B
- ŽI‚ªí‚ÉPVP‚Éݒ肳‚ê‚Ä‚¢‚éê‡Aƒp[ƒeƒBƒƒ“ƒo‚¶‚á‚È‚¢PC‚É‚à”͈ÍUŒ‚‚ª
- ‚ ‚½‚è‚Ü‚·BŒ™‚Èꇂ̓p[ƒeƒB‚ð‘g‚Þ‚©Aí‚ÉPVP‚ðoff‚É‚µ‚ĉº‚³‚¢B
- í‚ÉPVP‚ªoff‚Å‚àA@pvp‚Åpvpƒtƒ‰ƒO‚ð“ü‚ꂽl‚ÌŠÔ‚Å‚ÍUŒ‚‚ª“–‚½‚è‚Ü‚·B
- ‚½‚¾‚µAˆê“xpvp‚ðon‚É‚·‚é‚ÆAƒŠƒƒO‚·‚é‚Ü‚Åon‚Ì‚Ü‚Ü‚È‚Ì‚Å’ˆÓB
-
- (conf/)
- battle_athena.cnf
- ’†‚Éà–¾‘‚¢‚Ä‚é‚Ì‚ÅŠeŽ©D‚«‚Ȃ悤‚É‘‚«Š·‚¦‚Ä‚‚¾‚³‚¢B
-
- (map/)
- battle.c/battle.h
- struct Battle_Config‚Ì’è‹`B
- battle_config_read()‚ȂǒljÁB
- skill.c
- CASTFIX,DELAYFIX‚Ì”pŽ~‚ÆBattle_Config‚É‚æ‚éC³‚̒ljÁB
- atcommand.c
- @pvpƒRƒ}ƒ“ƒh‚Åpvpƒtƒ‰ƒO‚ðƒZƒbƒg‚·‚é‚悤‚ÉB
- iŽIÝ’è‚Ìí‚ÉPVP‚ªoff‚ÌŽžA—¼l‚ªpvp‚ðon‚É‚µ‚Ä‚½‚ç퓬‰Â”\j
- map.c/map.h
- struct map_session_data‚Épvp_flag‚ð’ljÁ
- do_init()‚Åbattle_config_read()‚ð“ǂނ悤‚ÉB
-
-E퓬ŠÖŒW‚̃R[ƒh‚ª‚µ®—‚³‚ê‚Ü‚µ‚½
- battle.c/battle.h
- battle_weapon_attack()’ljÁB
- battle_calc_weapon_attack()‚̈ø”•ÏX
- battle_calc_attack()‚ð’ljÁ‚µ‚Äbattle_calc_*_attack()‚ðˆê–{‰»B
- skill.c/skill.h
- skill_weapon_attack(),~_magic_~(),~_misc_~()‚Ì”pŽ~A
- skill_attack()‚Ɉê–{‰»B
- pc.c/mob.c
- UŒ‚ˆ—‚ðbattle_weapon_attack()‚Ɉê–{‰»B
-
-EƒAƒCƒeƒ€ŠÓ’èƒXƒLƒ‹‚ðŽÀ‘•
- ¤l‚̃XƒLƒ‹‚Ì•û‚Å‚·B’ŽŠá‹¾‚Í‚Ü‚¾‚Å‚·B
-
- skill.c
- ƒXƒLƒ‹ˆ—’ljÁ
- pc.c/pc.h
- pc_item_identify()’ljÁ
- clif.c/clif.h
- clif_item_identify_list(),clif_item_identified()’ljÁ
- clif_parse_ItemIdentify()’ljÁ
-
-EƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚̃Rƒƒ“ƒgC³
- (db/)
- skill_db.txt
- ¤l‚̃XƒLƒ‹‚̃Rƒƒ“ƒg‚ª‚¸‚ê‚Ä‚¢‚½‚Ì‚ðC³
-
-----------
-//0259 by ‚ê‚
-Emob_db.txt‚ÌC³
- ‹T“‡ƒ‚ƒ“ƒXƒ^[‚âBOSS‚̃Xƒe[ƒ^ƒX’²®
- ‹T“‡ƒ‚ƒ“ƒX‚É“K“–‚Ƀhƒƒbƒv‚ð•t‚¯‚Ü‚µ‚½B
- –{ŽI‚ƈقȂ镨‚ð—Ž‚Æ‚·ê‡‚à‚ ‚è‚Ü‚·B
-
-----------
-//0258 by ŒÓ’±—–
-
-Eƒp[ƒeƒB‚ňê“xŒö•½‚É‚µ‚½‚çŠeŽ©Š“¾‚É–ß‚¹‚È‚¢ƒoƒOC³
- (char/)
- int_party.c
- mapif_parse_PartyChangeOption()‚Ì”»’èC³
-
-EƒXƒLƒ‹‚̒ljÁŽÀ‘•iŽå‚ɔ͈ÍUŒ‚Œnj
- ƒiƒp[ƒ€ƒr[ƒgi•ªŽU‘ΉžjAƒtƒ@ƒCƒ„[ƒ{[ƒ‹A
- ƒTƒ“ƒ_[ƒXƒg[ƒ€Aƒwƒuƒ“ƒYƒhƒ‰ƒCƒuA
- ƒuƒŠƒbƒcƒr[ƒgiŽ©“®‘éž‚ÝjAƒXƒ`[ƒ‹ƒNƒƒE
- ƒXƒLƒ“ƒeƒ“ƒpƒŠƒ“ƒO
-
- (db/)
- skill_db.txt/skill_tree.txt
- ˆê•”C³
- (map/)
- battle.c/battle.h
- battle_check_target()‚ð’ljÁB‘ÎÛ‚É‚È‚é‚©‚ðŒŸ“¢‚·‚éB
- battle_calc_magic_damage()‚̈ø”•ÏXBƒ_ƒ[ƒW•ªŽUˆ—’ljÁB
- battle_calc_misc_damage()’ljÁB
- battle_calc_weapon_damage()C³B
- clif.c/clif.h
- clif_skill_damage(),clif_skill_damage2()‚̈ø”•ÏXB
- clif_skill_poseffect()’ljÁB
- skill.c/skill.h
- skill_weapon_attack(),skill_magic_attack()‚É”÷–‚Ɉ—‚ð“Z‚ß‚½.
- skill_area_sub()’ljÁB”͈̓XƒLƒ‹—pB
- skill_area_sub_count()’ljÁBskill_area_sub()—pA“GƒJƒEƒ“ƒgB
- skill_castend_damage_id()C³Bˆø”‚ƈ—‚ð’ljÁB
- skill_castend_nodamage_id()C³Bˆø”‚ƈ—‚ð’ljÁB
- skill_misc_attack()’ljÁB
- skill_additional_effect()C³iŽ©“®‘éj
- skill_castend_pos()C³B
- skill_castend_pos2()’ljÁB
-
-E‹|‚ÅUŒ‚‚µ‚½‚Æ‚«ŒvŽZ‚ÉDEX‚Å‚È‚STR‚ªŽg‚í‚ê‚é–â‘è‚ðC³B
- battle.c
- battle_calc_weapon_damage()C³B
-
-----------
-//0257 by ŒÓ’±—–
-
-Eitem_db.txt‚ÌE‹Æƒtƒ‰ƒO‚ÆAƒJ[ƒh‚Ì‘•”õŒÂŠƒtƒ‰ƒO‚ðC³
- ‘•”õ•i‚ÍI-Athena‚̃f[ƒ^‚ðŽQl‚É‚µ‚Ä‹@ŠB“I‚ɃRƒ“ƒo[ƒg‚³‚¹‚Ü‚µ‚½B
- I-Athena‘¤‚É‚È‚¢‘•”õ•i‚ÍA‚ ‚«‚ç‚©‚É•Ï‚È‚Ì‚ÍC³‚µ‚Ü‚µ‚½‚ªA
- ’m‚ç‚È‚¢‚à‚Ì‚ª‘½‚·‚¬‚ÄA‚Ù‚Æ‚ñ‚Ç•ú’u‚Å‚·B
- ƒJ[ƒh‚ÍA•Ší—pƒJ[ƒh‚Ì‘•”õŒÂŠ‚ª0‚É‚È‚Á‚Ä‚é‚Ì‚ð2(¶Žè)‚ÉC³B
- —¼Žè•Ší‚Ìꇂ͕ʂɔ»’肵‚Ä‚é‚Ì‚Å—¼Žè•Ší‚à–â‘è‚È‚¢‚Í‚¸B
-
- (db/)
- item_db.txt/item_db2.txt
- ŠY“–ŒÂŠC³
-
-EƒJ[ƒh’ljÁŽÀ‘•
- ƒXƒ^ƒ“‚Ȃǂ̒ljÁŒø‰ÊA‚»‚ê‚ç‚Ö‚Ì‘Ï«Œn“AƒI[ƒNƒq[ƒ[ƒJ[ƒhŽÀ‘•
-
- (db/)
- item_db.txt/item_db2.txt
- ƒXƒNƒŠƒvƒg‚ÌC³
- (map/)
- map.h
- struct map_session_data‚Éaddeff‚Ȃǂ̃ƒ“ƒo‚ð’ljÁ
- pc.c
- pc_calcstatus()Apc_bonus2()‚ÌC³
- pc_attack()‚Åskill_additional_effct()‚ðŒÄ‚Ԃ悤‚ÉB
- skill.c/skill.h
- skill_additional_effect()‚ŃJ[ƒh‚É‚æ‚é”»’è’ljÁ
- skill_status_change_start()‚Å‘Ï«‚ð•t‚¯‚½B
- battle.c
- battle_calc_weapon_attack()‚ŃI[ƒNƒq[ƒ[ƒJ[ƒh
- iƒNƒŠƒeƒBƒJƒ‹‘Ï«j‚̈—‚ð’ljÁ
-
-E‰ñ”ð”»’è‚ÌC³
- UŒ‚ŽÒ‚ªPC‚Ìê‡AÅ‘å–½’†—¦‚X‚T“§ŒÀ‚ð‚È‚µ‚É‚µ‚Ü‚µ‚½B
- battle.c
- battle_calc_weapon_attack()‚ðC³
-
-
-EŠ®‘S‰ñ”ð‚ðŽÀ‘•
- ‚Ö‚ñ‚Ä‚±‚Ȉ—‚µ‚Ä‚Ü‚·•ŒvŽZŽ®“K“–‚Å‚·B
-
- battle.c
- battle_calc_weapon_attack()‚Ɉ—’ljÁB
-
-E‘qŒÉ‚ðŠJ‚¢‚½‚܂܃ƒOƒAƒEƒg‚µ‚½‚Æ‚«mapŽI“à‚Å‚ÍŠJ‚«‚Á‚Ï‚È‚µ‚É‚È‚Á‚Ä‚é–â‘è‚ðC³
- storage.c
- storage_storage_quitsave()‚ðC³
-
-E@item,@monster,@produce‚Å–¼‘OŽw’è‚Å‚«‚é‚悤‚É•ÏX
- ‰pŒê–¼A“ú–{Œê–¼‚Ç‚¿‚ç‚Å‚àOKB‰pŒê‚Ìꇂ͑啶Žš¬•¶Žš‹æ•Ê‚µ‚Ü‚¹‚ñB
-
- atcommand.c
- ŠY“–ŒÂŠC³
- itemdb.c/itemdb.h
- itemdb_searchname(),itemdb_searchname_sub()’ljÁ
- mob.c/mob.h
- mobdb_searchname()’ljÁ
-
-E@refine‚Åã‚°‚é”’l‚ðŽw’è‚Å‚«‚é‚悤‚É•ÏX
- atcommand.c
- ŠY“–ŒÂŠC³
-
-E@produce‚É‚æ‚黑¢Žž‚̃GƒtƒFƒNƒg‚𳂵‚¢‚à‚Ì‚ÉC³
- clif.c/clif.h
- clif_produceeffect()’ljÁ
- atcommand.c
- ŠY“–ŒÂŠC³
-
-E˜I“XƒXƒLƒ‹Žg—pŽž‚̈—‚ð‚µC³
- skill.c
- skill_castend_id()‚Å‚È‚Askill_castend_nodamage_id()‚Å
- ˜I“XŠJÝ‚ðŒÄ‚Ԃ悤‚É‚µ‚½B
-
-Estricmp‚Ì•Ï‚í‚è‚Éstrcasecmp‚ðŽg‚¤‚悤‚É‚µ‚½
- i_WIN32‚©__EMX__‚ª’è‹`‚³‚ê‚Ä‚¢‚é‚Æstricmp‚ðŽg‚¢‚Ü‚·j
-
- (char/)
- int_party.c
- (map/)
- itemdb.c/mob.c
- ƒ}ƒNƒ’è‹`‚ÌC³‚È‚Ç
-
-EƒXƒLƒ‹‚ð‚µC³
- ƒOƒŠƒ€ƒgƒD[ƒX‚ªƒnƒCƒfƒBƒ“ƒO‚ÅŽg‚¦‚È‚¢–â‘èC³
- •ŠíŒ¤‹†‚Ì–½’†C³‚ðŽÀ‘•
-
- skill.c
- skill_use_id()‚ÌC³
- pc.c
- pc_calcstatus()‚Å•ŠíŒ¤‹†‚É]‚Á‚Ä–½’†C³
-
-----------
-//0256 by nabe
-
-E˜I“XƒAƒCƒeƒ€w“ü‚̃oƒOC³
- clif.c
- clif_vendinglist()‚Å”„‚è؂ꂽƒAƒCƒeƒ€‚Í•\Ž¦‚µ‚È‚¢‚悤‚É
-
-----------
-//0255 by nabe
-
-E˜I“XƒAƒCƒeƒ€w“ü‚̃oƒOC³
- vending.c
- vending_purchasereq()‚Åzeny,weight•”•ªC³
-
-----------
-//0254 by nabe
-
-E˜I“X‚ðŽÀ‘•
- vending.c/vending.h
- V‹K’ljÁB˜I“XƒƒCƒ“ˆ—
- skill.c
- skill_castend_id()‚ɘI“XŠJ݃XƒLƒ‹ˆ—‚ð’ljÁ
- clif.h/clif.h
- ˜I“XŠÖ˜AƒpƒPƒbƒgˆ—‚ð’ljÁ
- map.h
- struct map_session_data‚ÉA
- int vender_id;
- int vend_num;
- char message[80];
- struct vending vending[12];
- ‚ð’ljÁ
-
-----------
-//0253 by ŒÓ’±—–
-
-Estricmp–¢’è‹`ƒGƒ‰[‚ª‚Å‚éŠÂ‹«—p‚ÌC³
- ƒGƒ‰[‚ªo‚½ê‡Aint_party.c‚Ìʼn‚̃}ƒNƒ’è‹`‚̃Rƒƒ“ƒg‰»‚Ì‚¤‚¿A
- ‚Ç‚¿‚ç‚©‚ðŠO‚µ‚Ä‚â‚è’¼‚µ‚Ä‚Ý‚é‚ÆA‚¤‚Ü‚‚¢‚‚©‚àB
- ň«A‰º‚ð—LŒø‚É‚µ‚½‚炤‚Ü‚‚¢‚‚Í‚¸Bi‘啶Žš¬•¶Žš‚ð‹æ•Ê‚·‚é‚悤‚É‚È‚è‚Ü‚·j
-
- (char/)
- int_party.c
- ƒRƒƒ“ƒg‰»Ï‚݂̃}ƒNƒ’è‹`’ljÁ
-
-----------
-//0252 by ŒÓ’±—–
-
-EƒJ[ƒh‚̈ꕔŽÀ‘•
- iƒXƒe[ƒ^ƒX•Ï‰»‘S”ÊA•Ší‘®«AƒXƒLƒ‹‚Í‚·‚Å‚ÉŽÀ‘•Ï‚Ýj
- –h‹ï‘®«A‰r¥ŽžŠÔ•Ï‰»A‘®«UŒ‚‘Ï«AŽí‘°‘Ï«AŽí‘°’ljÁƒ_ƒ[ƒWA
- ‘®«’ljÁƒ_ƒ[ƒWAƒTƒCƒY’ljÁƒ_ƒ[ƒWAMAXHPAMAXSP‘Œ¸AŽg—pSP•Ï‰»ŒnA
- ƒtƒFƒ“AƒhƒŒƒCƒNAƒzƒ‹ƒ“A[•£‚Ì‹RŽmA‰©‹àå³AƒIƒVƒŠƒXƒJ[ƒh‚ðŽÀ‘•
-
- (db/)
- const.txt
- bonus—p‚̒蔒ljÁAbonus2‚̒蔂à’ljÁ
- item_db.txt/item_db2.txt
- ƒJ[ƒh‚̃XƒNƒŠƒvƒg’ljÁ
- (map/)
- map.h
- struct map_session_data‚Éhprate‚È‚Ç‘½”ƒƒ“ƒo’ljÁ
- script.c
- bonus2ƒRƒ}ƒ“ƒh’ljÁ
- buildin_bonus2()’ljÁ
- pc.c/pc.h
- pc_bonus2()’ljÁ
- pc_bonus()‚̈—’ljÁ
- pc_calcstatus()‚ÅŠeŽí’ljÁƒƒ“ƒo‚̉Šú‰»‚ðs‚¤‚悤‚É‚µA
- hprate‚âsprate‚É]‚¢max_hp,max_sp‚Ì’²®‚à‚·‚é‚悤‚É•ÏXB
- pc_makesavestatus()‚ŃIƒVƒŠƒXƒJ[ƒhC³
- skill.c
- skill_castfix()‚Åcastrate‚É]‚¢A‰r¥ŽžŠÔ‚ð’²®B
- skill_castend_id()‚Ådsprate‚É]‚¢AŽg—pSP‚ð’²®B
- skill_castend_nodamage_id()‚ŃJ[ƒhC³‚ð’ljÁ
- battle.c
- battle_calc_weapon_attack()‚ŃJ[ƒhC³‚ð’ljÁ
- battle_calc_magic_attack()‚ŃJ[ƒhC³‚ð’ljÁ
- battle_damage()‚ŃtƒFƒ“ƒJ[ƒhC³‚ð’ljÁ
-
-EƒXƒe[ƒ^ƒXŠ„‚èU‚è‚Ì•\Ž¦ã‚Ì–â‘èC³
- STR‚ðã‚°‚Ä‚àATK‚ª•Ï‚í‚ç‚È‚¢–â‘èAINT‚ðã‚°‚Ä‚àMATK‚ª•Ï‚í‚ç‚È‚¢–â‘èC³
-
- map.h
- struct map_session_data‚Ématk1,matk2ƒƒ“ƒo’ljÁ
- pc.c
- pc_calcstatus()‚ÌC³
- clif.c
- clif_initialstatus()‚ÌC³
- battle.c
- battle_calc_magic_attack()‚ÌC³
-
-
-----------
-//0251 by nabe
-
-E0250‚̃oƒOC³‚È‚Ç
- ƒJ[ƒg‚ð•t‚¯‚¸‚ɃƒOƒCƒ“‚Ü‚½‚̓}ƒbƒvˆÚ“®‚µ‚½Œã‚ɃJ[ƒg‚ð•t‚¯‚é‚ÆA
- ƒJ[ƒg‚Ì’†g‚ª2”{‚Ì—Ê‚É•\Ž¦‚³‚ê‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½‚Ì‚ðC³B
- ƒJ[ƒg‚̃AƒCƒeƒ€”‚ðXV‚·‚é‚悤‚ÉC³B
- pc.h/pc.c
- pc_iscarton()ƒ}ƒNƒ‚ð’ljÁ
- pc_cart_additem(),pc_cart_delitem()‚É‚»‚ꂼ‚ê
- sd->cart_num++;‚Æsd->cart_num--;ˆ—‚ð’ljÁ
- clif.c
- clif_parse_LoadEndAck()‚ÅA
- ƒJ[ƒg‚ð•t‚¯‚Ä‚¢‚é‚Æ‚«‚̂݃J[ƒgî•ñ‚ð‘—M‚·‚é‚悤‚É‚µ‚½
-
-----------
-//0250 by nabe
-
-EƒJ[ƒgOFFAƒ`ƒFƒ“ƒWƒJ[ƒgŽÀ‘•B
- (map/)
- pc.c/pc.h
- pc_setcart()‚ð’ljÁ
- script.c
- buildin_setcart()‚ð’ljÁ
- ƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒhusetcart;v‚ŃJ[ƒg‚ª‚‚
- clif.c/clif.h
- clif_parse_CartOff()’ljÁBiƒJ[ƒg‚ð‚Í‚¸‚·j
- clif_parse_ChangeCart()’ljÁBiƒ`ƒFƒ“ƒWƒJ[ƒg‚̃J[ƒg‘I‘ðj
- (conf/)
- npc_town_kafra.txt
- ƒJ[ƒgƒT[ƒrƒX‚ðusetcart;v‚É’uŠ·
-
-
-----------
-//0249 by ŒÓ’±—–
-
-Eƒp[ƒeƒB‚̃f[ƒ^ƒx[ƒX‚Ì–µ‚‚ðo—ˆ‚邾‚¯—}‚¦‚é‚悤‚ÉB
- •¡”ƒp[ƒeƒB‚ÉŠ‘®‚µ‚Ä‚éƒf[ƒ^‚ÌŒŸ¸A’ljÁ‚ÉŽ¸”s‚µ‚½‚Æ‚«‚É’E‘Þ‚È‚ÇB
-
- (char/)
- int_party.c
- party_check_conflict(),party_check_conflict_sub(),
- mapif_parse_PartyCheck()’ljÁ
- inter.c
- ƒpƒPƒbƒg’·ƒŠƒXƒg‚É0x3028’ljÁ
- INTERŽIƒpƒPƒbƒg.txt
- ƒpƒPƒbƒg0x3028’ljÁ
- (map/)
- party.c/party.h
- party_check_conflict()’ljÁB
- party_invite()‚Å“¯ƒAƒJƒEƒ“ƒgŠ‘®ƒ`ƒFƒbƒN‚ðs‚¤‚悤‚ÉB
- party_member_added(),party_send_movemap()‚Å
- party_check_conflict()‚ðŒÄ‚Ԃ悤‚ÉB
- intif.c/intif.h
- intif_party_checkconflict()’ljÁ
-
-Eƒp[ƒeƒB‚ÌÀ•WA‚g‚o’Ê’m‚ðŽÀ‘•
- •Ï‰»‚ª‚ ‚ê‚΂P•b‚Ɉê‰ñ‘—MB
-
- map.h
- struct map_session_data‚Éparty_x,~_y,~_hp‚Ì‚Rƒƒ“ƒo’ljÁ
- party.c/party.h
- party_send_xyhp_timer_sub(),party_send_xyhp_timer(),
- party_send_xy_clear(),party_send_hp_check()’ljÁB
- party_recv_movemap()‚Åsd->party_*‚ð‰Šú‰»‚·‚é‚悤‚ÉB
- clif.c/clif.h
- clif_send‚ÌPARTY*ƒtƒ‰ƒO‚ð—LŒø‚ÉB
- iPARTY,PARTY_SAMEMAP,PARTY_AREA,PARTY*_WOS‚Ì‚UŽíj
- clif_party_xy(),clif_party_hp()’ljÁB
- pc.c/pc.h
- pc_authok()‚Åsd->party_*‚ð‰Šú‰»‚·‚é‚悤‚ÉB
- pc_walk()‚Ńp[ƒeƒBƒƒ“ƒo‚ªŽ‹ŠE“à‚É“ü‚Á‚Ä‚«‚½‚Æ‚«‚É
- party_hp‚ð‰Šú‰»‚·‚é‚悤‚ÉB
-
-Eƒp[ƒeƒB‚ÌexpŒö•½•ª”z‚ðŽÀ‘•
- party.c/party.h
- party_share_exp()’ljÁ
- mob.c/mob.h
- mob_damage()‚ÅŒö•½•ª”zˆ—’ljÁ
-
-EƒXƒLƒ‹‚ÌC³‚ƒljÁŽÀ‘•
- ƒoƒbƒVƒ…AƒsƒA[ƒX‚Ì–½’†—¦C³ŽÀ‘•
- ƒsƒA[ƒX‚̃TƒCƒY‚É‚æ‚é‰ñ”•Ï“®ŽÀ‘•iƒvƒŒƒCƒ„[‚Í’†Œ^‚Ɖ¼’èj
- ƒoƒbƒVƒ…Aƒ\ƒjƒbƒNƒuƒƒE‚̃Xƒ^ƒ“Œø‰ÊŽÀ‘•
- ƒXƒg[ƒ“ƒJ[ƒXAƒtƒƒXƒgƒ_ƒCƒoAƒCƒ“ƒxƒiƒ€A
- ƒAƒXƒyƒ‹ƒVƒIAƒGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“AƒŒƒbƒNƒXƒfƒr[ƒiŽÀ‘•
-
- skill.c
- skill_additional_effect()’ljÁ
- skill_castend_damage_id()ŠY“–ŒÂŠC³
- skill_castend_nodamage_id()ŠY“–ŒÂŠC³
- skill_use_id(),skill_use_pos()‚ŃXƒLƒ‹‚ªŽg—p‚Å‚«‚È‚¢‚Æ‚«‚Í
- ‰½‚à‚µ‚È‚¢‚悤‚ÉC³B
- battle.c
- battle_calc_weapon_attack()‚ÌŠY“–ŒÂŠC³
- battle_get_dmotion(),battle_get_attack_element()C³
- clif.c
- clif_mob007b(),clif_mob0078‚Åoption‚È‚Ç‚ð‘—‚é‚悤‚ÉC³
- pc.c
- pc_attack(),pc_walktoxy()‚Ås“®•s‰Â”\‚È‚Æ‚«‚͉½‚à‚µ‚È‚¢‚悤‚ÉB
- mob.c
- mob_stopattack()C³
- mob_ai_sub_hard()‚Ås“®•s”\‚È‚Æ‚«‚͉½‚à‚µ‚È‚¢‚悤‚ÉB
-
-EUŒ‚ŽË’ö‚Ì”»’è’ljÁ
- ‘ŠŽè‚ªˆÚ“®‚µ‚Ä“Í‚©‚È‚¢‚Æ‚«‚ÍAˆÚ“®ƒpƒPƒbƒg‚ð‘—M
-
- clif.c/clif.h
- clif_movetoattack()’ljÁ
- pc.c
- pc_attack()‚ÅŽË’ö”»’èA“Í‚©‚È‚¢‚È‚çclif_movetoattack()‚ðŒÄ‚ÔB
-
-----------
-//0248 by nabe
-
-Eƒp[ƒeƒB쬎ž‚ÉŠù‚Ƀp[ƒeƒB‚ÉŠ‘®‚µ‚Ä‚¢‚½ê‡‚̈—‚ð’ljÁ
- party.c
- party_create()‚ÉAŠù‚Ƀp[ƒeƒB‚ÉŠ‘®‚µ‚Ä‚¢‚½ê‡
- clif_party_created(sd,2)‚ð’ljÁ
-
-EƒfƒBƒXƒJƒEƒ“ƒgAƒI[ƒo[ƒ`ƒƒ[ƒW‚ðŒvŽZ
- pc.c
- pc_modifybuyvalue()Apc_modifysellvalue()‚Å’l’i‚ðŒvŽZ
-
-
-----------
-//0247 by ŒÓ’±—–
-
-Eƒp[ƒeƒBŽÀ‘•
- Œö•½•ª”z‚Íݒ肵‚Ä‚àŽÀÛ‚É‚ÍŒö•½•ª”z‚³‚ê‚Ä‚È‚¢B
- ƒp[ƒeƒBƒXƒLƒ‹‚Í‚Ü‚¾Ž©•ª‚É‚µ‚©‚©‚©‚ç‚È‚¢
-
- (char/)
- int_party.c/int_party.h
- ‚Ü‚Æ‚à‚ÉŽÀ‘•
- inter.c
- ƒpƒPƒbƒg’·ƒŠƒXƒg’ljÁ
- INTERŽIƒpƒPƒbƒg.txt
- ƒp[ƒeƒB‚̃pƒPƒbƒg’ljÁ
- (map/)
- party.c/party.h
- V‹K’ljÁ
- map.c/map.h
- struct map_session_data‚Éparty_sendedƒƒ“ƒo’ljÁ
- do_init()‚Ådo_party_init()‚ðŒÄ‚Ô
- map_quit()‚Åparty_send_logout()‚ðŒÄ‚Ô
- intif.c/intif.h
- ƒp[ƒeƒBŠÖ˜A‚Ì•”•ª’ljÁ
- clif.c/clif.h
- ƒp[ƒeƒBŠÖ˜A‚Ì•”•ª’ljÁ
- clif_parse_LoadEndAck()‚Åparty_send_movemap()‚ðŒÄ‚Ño‚·
- pc.c
- pc_authok()‚Åparty_request_info()‚ðŒÄ‚Ԃ悤‚É‚µA
- party_sended‚ð‰Šú‰»‚·‚é‚悤‚ÉB
-
-E‰r¥–WŠQ‚³‚ꂽ‚Æ‚«‰æ–Êã‚ʼnr¥‚ð‚â‚ß‚é‚悤‚ÉC³
- (map/)
- skill.c
- skill_castcancel()‚ʼnr¥’†Ž~ƒpƒP(‡‚Á‚Ä‚é‚Ì‚©‚ÈH)‚ð‘—M
-
-E’´‰“‹——£UŒ‚‚¾‚Æ“G‚ª”½Œ‚‚µ‚Ä‚±‚È‚¢–â‘è‚ðC³
- (map/)
- map.h
- struct mob_data‚Émin_chaseƒƒ“ƒo’ljÁiÅ’á’ÇÕ‹——£j
- mob.c
- mob_attack()‚Åmin_chase‚ð13‚ɉŠú‰»‚·‚é
- mob_walk()‚Åmin_chase‚ª13‚æ‚è‘å‚«‚¢‚Ȃ炵‚¸‚ˆø‚¢‚Ä‚¢‚
- mob_ai_sub_hard()‚Åmin_chase‚É‚æ‚è’ÇÕ‚ð”»’fA
- UŒ‚‚ðŽó‚¯‚½Žž‚Émin_chase‚ð”މ䋗—£+13‚ÉÝ’è
-
-----------
-//0246 by ŒÓ’±—–
-
-EƒJ[ƒgŽÀ‘•
- map.h
- struct map_session_data‚Écart_weight‚È‚Ç‚S‚ƒƒ“ƒo’ljÁ
- pc.c/pc.h
- pc_cart_additem(),pc_cart_delitem(),
- pc_cart_putitemtocart(),pc_cart_getitemfromcart()’ljÁ
- pc_calcstatus()‚ŃJ[ƒgd—Ê‚âŒÂ”‚È‚Ç‚Ìî•ñ‚ðŒvŽZ
- clif.c/clif.h
- clif_cart_itemlist(),clif_cart_equiplist(),
- clif_cart_additem(),clif_cart_delitem(),
- clif_parse_PutItemToCart(),clif_parse_GetItemFromCart()’ljÁ
- clif_parse_LoadEndAck()‚ŃJ[ƒgî•ñA“à—e‘—M
- clif_updatestatus()‚ÅSP_CARTINFO‚ŃJ[ƒgî•ñ‚ð‘—‚ê‚é‚悤‚É
- clif_parse_MoveFromKafraToCart(),~ToKafraFromCart()’ljÁ
- storage.c/storage.h
- storage_additem(),storage_delitem()’ljÁ
- storage_storageadditemfromcart,~getitemtocart()’ljÁ
- storage_storageadd(),storage_storageget()‚ÅA
- storage_additem(),storage_delitem()‚ðŒÄ‚Ԃ悤‚É•ÏX
-
-EƒXƒLƒ‹‰r¥ƒfƒBƒŒƒC‚È‚ÇŽÀ‘•
- clif.c
- clif_parse_WalkToXY()‚Éskilltimer‚É‚æ‚éˆÚ“®‰Â”Û‚ð’ljÁ
- clif_parse_UseSkillToId(),clif_parse_UseSkillToPos()‚É
- canmove_tick‚É‚æ‚éUŒ‚‰Â”ےljÁ
- skill.c/skill.h
- skill_castcancel()‚ð’ljÁ
- skill_use_id(),skill_use_pos()‚ŃfƒBƒŒƒCŽžŠÔŒvŽZ‚¨‚æ‚ÑA
- canmove_tick‚ÌÝ’è
- battle.c
- battle_damage()‚Åskill_castcancel()‚̌ĂÑo‚µ’ljÁ
-
-E0245‚̃AƒCƒeƒ€ƒf[ƒ^ƒx[ƒXC³‚Ì’Ê퉿Ši”Å—pˆÓ
- (db/)
- item_db.txt
- item_db2.txt‚É‘O‚Ìitem_db.txt‚̉¿Šiî•ñ‚ðƒ}[ƒW‚µ‚½‚¾‚¯‚Å‚·B
-
-----------
-//0245 by ‚ê‚
- ‚Ü‚½—á‚É‚æ‚Á‚ÄA‘ŠêC³”Å‚Ì‚Ý‚Å‚·B
-Eitem_db2.txt‚ÌC³
- ‹T“‡V‘•”õ‚ÌŒø‰Ê‚ðŽÀ‘•‚µ‚Ü‚µ‚½B
- ƒEƒBƒU[ƒh‚ªñ‚ð‘•”õ‚Å‚«‚È‚¢‚Ì‚ðC³
- ƒEƒBƒU[ƒh‚ªƒ}ƒWƒVƒƒƒ“ƒnƒbƒgA‚Æ‚ñ‚ª‚è–X‚ð
- ‘•”õ‚Å‚«‚È‚¢‚Ì‚ðC³
-----------
-//0244 by ‚ê‚
-Emob_db.txt‚ÌC³
- ‹T“‡ƒ‚ƒ“ƒXƒ^[‚̃f[ƒ^‚ð‚¢‚ê‚Ü‚µ‚½B
- ‚½‚¾AŠÔˆá‚Á‚Ä‚é•”•ª‚ª‚©‚È‚è‚ ‚è‚Ü‚·B
- Speed,Delay‚Í“K“–‚Å‚·B
- ‚Ü‚½A‚í‚©‚ç‚È‚¢‚Ì‚ÍŠØ‘”ł̃f[ƒ^‚È‚Ì‚Å
- Mdef‚Æ‚©ˆÙí‚É‚‚¢‹C‚àB
-----------
-//0242 by ŒÓ’±—–
-
-EŽæˆøŠÖ˜A‚Ì•ÏX‚ÆC³
- Žæˆø‚ÉŽg‚¤•Ï”‚ðmmo_charstatus‚©‚çmap_session_data‚Ɉړ®‚µ‚Ü‚µ‚½
-
- (common/)
- mmo.h
- struct mmo_charstatus‚©‚çŽæˆøŠÖŒW‚̃ƒ“ƒoíœ
- (map/)
- map.h
- struct map_session_data‚ÉŽæˆøŠÖŒW‚̃ƒ“ƒo’ljÁ
- trade.c
- \‘¢‘Ì‚Ì•ÏX‚É‚ ‚킹‚ÄC³
- map.c
- map_quit()‚ÅŽæˆø’†‚È‚çƒLƒƒƒ“ƒZƒ‹‚·‚é‚悤‚É‚µ‚½
-
-EƒJ[ƒh‚Ì‘g‚݇‚킹ŽÀ‘•
- pc.c/pc.h
- pc_insert_card()‚ŃJ[ƒh‚ðŽÀÛ‚É‘}“ü‚·‚é
- clif.c/clif.h
- clif_parse_UseCard(),clif_parse_InsertCard()’ljÁ
- clif_use_card(),clif_insert_card()’ljÁ
-
-Eˆê•”‚̃J[ƒhŒø‰ÊŽÀ‘•
- ƒXƒLƒ‹K“¾ƒJ[ƒhAƒXƒe[ƒ^ƒXƒ{[ƒiƒXƒJ[ƒh‚È‚ÇB
-
- (map/)
- map.h
- struct map_session_data‚É‘•”õƒJ[ƒhŒŸõ—p‚Ì•Ï”’ljÁ
- pc.c/pc.h
- pc_calcstatus()‚ŃJ[ƒh‚̈—’ljÁ
- ‚ ‚éID‚̃J[ƒh‚ª‘•”õÏ‚Ý‚©ŒŸõ‚·‚邽‚ß‚ÌŠÖ”A
- pc_equip_card(),pc_equip_wcard(),pc_equip_dcard()‚ð—pˆÓ
-
-Ed—ʃI[ƒo[/‘é/‹RæƒAƒCƒRƒ“‚Ì•\Ž¦
- (map/)
- pc.c/pc.h
- pc_checkweighticon()’ljÁAd—ʂ̃AƒCƒRƒ“ˆ—
- clif.c
- clif_updatestatus()‚Åd—Ê‘—MŽž‚Épc_checkweighticon()‚ÌŽÀs
- clif_changeoption()‚Å‘é‚Æ‹Ræ‚̃AƒCƒRƒ“ˆ—
-
-E0241‚̃AƒCƒeƒ€ƒf[ƒ^ƒx[ƒXC³‚Ì’Ê퉿Ši”Å—pˆÓ
- (db/)
- item_db.txt
- item_db2.txt‚É‘O‚Ìitem_db.txt‚̉¿Šiî•ñ‚ðƒ}[ƒW‚µ‚½‚¾‚¯‚Å‚·B
-
-
-----------
-//0241 by ‚ê‚
-EƒAƒCƒeƒ€ƒf[ƒ^ƒx[ƒX‚ÌC³
- V“ª‘•”õ‚̃Oƒ‰ƒtƒBƒbƒN‚ªˆÙ‚È‚é‚Ì‚ðC³
- ‘•”õ‚ÌŒø‰Ê‚ÌŽÀ‘•
- ã’iE’†’i‚ªŠÔˆá‚Á‚Ä‚½‚Ì‚ð‚µC³
- ‘¬•ñ”Å‚Á‚Ä‚±‚ƂŊԈႦ‘½‚¢‚©‚àB
- ƒeƒXƒg‚à‚ ‚܂肵‚Ä‚Ü‚¹‚ñB
- ‚ ‚ÆA‘Šê’²®”Å‚µ‚©—pˆÓ‚µ‚Ä‚Ü‚¹‚ñB
-
- item_db2.txt
- ‹T“‡‚É‚ ‚킹‚Ä’²®
-
-----------
-//0240 by nabe
-
-EŽæˆø‚ðŽÀ‘•‚µ‚Ü‚µ‚½B
- (common/)
- mmo.h
- struct mmo_charstatus ‚É
- int trade_partner;
- int deal_item_index[10];
- int deal_item_amount[10];
- int deal_zeny;
- short deal_locked;
- ‚ð’ljÁ
- (map/)
- clif.c,clif.h
- clif_traderequest() : 0xe5iŽæ‚èˆø‚«—v¿Žó‚¯j
- clif_tradestart() : 0xe7iŽæ‚èˆø‚«—v‹‰ž“šj
- clif_tradeadditem() : 0xe9i‘ŠŽè•û‚©‚ç‚̃AƒCƒeƒ€’ljÁj
- clif_tradeitemok() : 0xeaiƒAƒCƒeƒ€’ljÁ¬Œ÷j
- clif_tradedeal_lock() : 0xeciok‰Ÿ‚µj
- clif_tradecancelled() : 0xeeiŽæ‚èˆø‚«ƒLƒƒƒ“ƒZƒ‹j
- clif_tradecompleted() : 0xf0iŽæ‚èˆø‚«Š®—¹j
- ‚ð’ljÁB
- trade.c,trade.h
- trade_traderequest() : Žæˆø—v¿‚ð‘ŠŽè‚É‘—‚é
- trade_tradeack() : Žæˆø—v¿
- trade_tradeadditem() : ƒAƒCƒeƒ€’ljÁ
- trade_tradeok() : ƒAƒCƒeƒ€’ljÁŠ®—¹(ok‰Ÿ‚µ)
- trade_tradecancel() : ŽæˆøƒLƒƒƒ“ƒZƒ‹
- trade_tradecommit() : Žæˆø‹–‘ø(trade‰Ÿ‚µ)
- ‚ðŽÀ‘•B‚»‚ꂼ‚êclif.c::clif_parse_Trade*‚©‚çŒÄ‚΂ê‚éB
-
-
-----------
-//0238 by ‚ê‚
-
-E‘¬“x•ÏX‚ÉŠÖ‚µ‚Ä‚µC³
- atcommand.c
- ‘¬“x•ÏX‚Ì•”•ª‚ð‚µC³
- ‚±‚ê‚ňꉞ“®‚‚Ý‚½‚¢H
- pc.c
- ‚‚¢‚Å‚É‚Å‚·‚ª
- ‘¬“x㸂ŕàs‘¬“x‚ªã‚ª‚é‚悤‚É‚µ‚½B
- ˆê‰ž“®‚‚Ý‚½‚¢‚Å‚·‚ª“K“–‚È‚Ì‚Å
- ‚¨‚©‚µ‚È‚Æ‚±‚낪‚ ‚ê‚΂¨Šè‚¢‚µ‚Ü‚·B
-
-----------
-//0236 by nabe
-
-EƒXƒNƒŠƒvƒg‚Åmenu‚Å”ò‚ñ‚¾æ‚Å’¼‚®menu‚𑂂ƌ듮삷‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B
- script.c
- goto“®ì‚ÌŒã‚ÌRERUNLINE‚ɑΈ‚·‚邽‚ßA
- goto,menu‚Å”ò‚ñ‚¾Œã‚É‚ÍAst.state==GOTO‚Årerun_pos‚ðXVB
-
-
-----------
-//0233 by nabe
-
-EƒAƒCƒeƒ€‚ð‘•”õ‚·‚éÛ‚Ì‘•”õ”»’è‚ð’ljÁ‚µ‚Ü‚µ‚½B
- pc.c
- pc_equipitem()‚É‘•”õ”»’èi«•Ê”»’èA‘•”õLV”»’èAE‹Æ”»’èj’ljÁ
-
-Ed—Ê”»’èƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh‚ð’ljÁ‚µ‚Ü‚µ‚½B
- if (checkweight(ƒAƒCƒeƒ€ID,ƒAƒCƒeƒ€”—Ê))
- ‚Å‚»‚̃AƒCƒeƒ€~”—Ê‚ðŽæ“¾‚Å‚«‚é‚©‚Ç‚¤‚©”»’è‚Å‚«‚Ü‚·B
- script.c
- buildin_checkweight()‚ð’ljÁ
-
-EƒXƒNƒŠƒvƒg‹l‚߇‚킹‚ðathena dev-2.1.1—p‚ɈÚA‚µ‚Ü‚µ‚½B
- map_athena1.cnf
- npc_event_*.txt ƒCƒxƒ“ƒgNPC
- npc_job_*.txt “]ENPC
- npc_mob_job.txt “]E—pƒ‚ƒ“ƒXƒ^[
- npc_town_*.txt ’¬NPC
-
-
-----------
-//0232 by ŒÓ’±—–
-
-E‘•”õƒ{[ƒiƒX‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- ƒ{[ƒiƒX‚ÉŽg‚¤ƒXƒNƒŠƒvƒg(bonus,skill)‚ðŽÀ‘•
- ƒXƒNƒŠƒvƒg‚ÍI-Athena‚̃f[ƒ^‚ðŽg‚Á‚ăRƒ“ƒo[ƒg‚µ‚Ü‚µ‚½B
- i‚Ü‚¾ƒJ[ƒh‚ɂ͑Ήž‚µ‚Ä‚¢‚Ü‚¹‚ñj
-
- (common/)
- mmo.h
- struct skill‚Éflagƒƒ“ƒo’ljÁiƒJ[ƒhƒXƒLƒ‹‚©‚Ç‚¤‚©j
- (map/)
- map.h
- struct map_session_data‚Éatk_ele‚Ȃǂ̃ƒ“ƒo’ljÁ
- enum‚ÅSP_ATKELEMENT‚ȂǒljÁ
- pc.c
- pc_bonus()‚ÌŽÀ‘•Apc_skill()’ljÁ
- script.c
- buildin_skill()‚̒ljÁ
- buildin_bonus()‚ÌC³(const.txt‚̒蔂ªŽg‚¦‚é‚悤‚É)
- clif.c
- clif_skillinfoblock()‚ÌC³(ƒJ[ƒhƒXƒLƒ‹‚Íã‚°‚ç‚ê‚È‚¢)
- (db/)
- const.txt
- bonus‚ÉŽg‚¤‚½‚߂̒蔒ljÁ
- item_db.txt
- •W€‚̃f[ƒ^‚É‘•”õƒXƒNƒŠƒvƒg‚ð’ljÁ‚µ‚½‚à‚Ì
- item_db2.txt
- 0213‚Å‘Šê’²®‚³‚ꂽƒf[ƒ^‚É‘•”õƒXƒNƒŠƒvƒg‚ð’ljÁ‚µ‚½‚à‚Ì
-
-E‰r¥ŠÖŒW‚̃oƒO‚ªC³‚³‚ê‚Ü‚µ‚½
- (map/)
- skill.c
- skill_use_id(),skill_use_pos()‚ðC³
- (db/)
- cast_db.txt
- ‚µ’ljÁiƒuƒŠƒbƒcƒr[ƒg‚È‚Çj
-
-EUŒ‚‘®«‚ª“K—p‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-E¯‚Ì‚©‚¯‚ç‚ÌC³‚ª“K—p‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- map.h
- struct map_session_data‚Éstarƒƒ“ƒo’ljÁ
- pc.c
- pc_calcstatus()‚Å‘®«‰Šú‰»
- battle.c
- battle_get_element(),battle_get_attack_element()C³
- battle_calc_weapon_damage()‚ÌŠY“–ŒÂŠC³
-
-Eñ‘•”õŽž‚ÉMATK+15%‚ª“K—p‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- battle.c
- battle_calc_magic_damage()‚ÌŠY“–ŒÂŠC³
-
-E»‘¢•Ší‚̃Lƒƒƒ‰ƒNƒ^[–¼‚ª³‚µ‚•\Ž¦‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½
-
- Œ´—‚Æ‚µ‚Ä‚ÍAmapŽI“à‚̃Lƒƒƒ‰ƒNƒ^–¼ƒf[ƒ^ƒx[ƒX‚ðŒŸõ‚µ‚ÄA
- ‘¶Ý‚·‚ê‚Α¦•ÔMA‘¶Ý‚µ‚È‚¯‚ê‚ÎcharŽI‚É‰ðŒˆ—v‹‚ðo‚·B
- ‚±‚Ì‚Æ‚«A–¼‘O‚ð—v‹‚µ‚Ä‚«‚½ƒNƒ‰ƒCƒAƒ“ƒg‚ÌID‚ðƒf[ƒ^ƒx[ƒX‚É“o˜^‚·‚éB
- charŽI‚©‚ç–¼‘Oƒf[ƒ^‚ª‚‚é‚ÆA‘Ήž‚·‚éƒf[ƒ^ƒx[ƒX‚É–¼‘O‚ðƒZƒbƒg‚µA
- —v‹‚µ‚Ä‚«‚½ƒNƒ‰ƒCƒAƒ“ƒg‚É–¼‘O‚ð•ÔM‚·‚éB
- –¢‰ðŒˆ‚Ì“¯‚¶ƒLƒƒƒ‰ID‰ðŒˆ‚ð•¡”‚̃Nƒ‰ƒCƒAƒ“ƒg‚ª—v‹‚µ‚Ä‚«‚½ê‡A
- ÅŒã‚É—v‹‚µ‚Ä‚«‚½ƒNƒ‰ƒCƒAƒ“ƒg‚É‚µ‚©•ÔM‚µ‚È‚¢‚ªA
- •ÔM‚³‚ê‚È‚©‚Á‚½ƒNƒ‰ƒCƒAƒ“ƒg‚Í”•bŒã‚ÉÄ‚Ñ‰ðŒˆ—v‹‚ð‘—‚Á‚Ä‚‚é
- i‚»‚µ‚Ä‚»‚Ì‚Æ‚«‚ÍmapŽI‚©‚瑦•ÔM‚³‚ê‚éj‚Ì‚Å‘å‚«‚È–â‘è‚Í‚È‚¢B
-
- ƒpƒPƒbƒg0x2b08,0x2b09‚ÅmapŽI‚ÆcharŽI‚ª’ÊM‚µ‚Ä‚Ü‚·B
-
- (char/)
- char.h
- UNKNOWN_CHAR_NAME’è‹`iƒLƒƒƒ‰ƒf[ƒ^‚ª–³‚¢‚Æ‚«‚É•Ô‚³‚ê‚é–¼‘Oj
- char2.c
- parse_frommap()‚ɃpƒPƒbƒg0x2b08‚̈—‚ð’ljÁ
-
- (map/)
- chrif.c/chif.h
- chrif_searchcharid()’ljÁ
- chrif_parse()‚Å0x2b09‚̈—’ljÁ
- map.c
- ƒf[ƒ^ƒx[ƒX charid_db 錾
- struct charid2nick錾Bnick‚Í–¼‘OA
- req_id‚Í0‚Å–¼‘O‰ðŒˆÏ‚ÝA0ˆÈŠO‚Å–¢‰ðŒˆ‚Å‰ðŒˆ‘Ò‚¿‚̃uƒƒbƒNID
- map_addchariddb()’ljÁBƒf[ƒ^ƒx[ƒX‚Ö–¼‘O“o˜^A—v‹‚É•ÔMB
- map_reqchariddb()’ljÁB—v‹‚ª‚ ‚Á‚½‚±‚Æ‚ðƒf[ƒ^ƒx[ƒX‚֒ljÁB
- map_charid2nick()‚Ńf[ƒ^ƒx[ƒX‚ÌŒŸõ
- do_init()‚Å charid_db ‚̉Šú‰»‚ð’ljÁ
- clif.c/clif.h
- clif_parse_SolveCharName(),clif_solved_charname()’ljÁ
-
-
-----------
-//0231 by nabe
-
-EƒXƒNƒŠƒvƒg‚Å mes "$charaname"; “™‚Æ‘‚‚ƃLƒƒƒ‰‚Ì–¼‘O‚ð‚µ‚á‚ׂé‹@”\‚ð’ljÁB
- script.c
- buildin_mes()“à‚Å
- mes“à•”‚Ì$charaname‚ðƒLƒƒƒ‰‚Ì–¼‘O‚É’uŠ·‚·‚鈗‚ð’ljÁB
- ”“¯—l‚É‚µ‚Ä•Ï”‚Ì’l‚È‚Ç‚ðmes“à•”‚Å•\Ž¦‚·‚é‚悤‚É‚·‚邱‚Æ‚à
- ”‚Å‚«‚Ü‚·‚ªA‚±‚ê‚ɂ‚¢‚Ä‚Í–¢ŽÀ‘•‚Å‚·EEEB
- ”‚Æ‚è‚ ‚¦‚¸
- ” mes Global_Val;
- ”‚̂悤‚É’¼Ú‘‚‚±‚ƂőΈ‚µ‚Ä‚‚¾‚³‚¢B
-
-E“G‚ÉUŒ‚‚³‚ꂽ‚Æ‚«‚ÉmapŽI‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚é‚Ì‚ðC³B
- battle.c
- battle_calc_weapon_attack()‚Ì
- ƒfƒBƒoƒCƒ“ƒvƒƒeƒNƒVƒ‡ƒ“‚̃XƒLƒ‹ƒ`ƒFƒbƒN•”•ªA
- pc_checkskill(sd,22)‚ðA
- pc_checkskill(tsd,22)‚ÉB
-
-----------
-//0230 by nabe
-
-E‰ñ”𗦑‰ÁƒXƒLƒ‹‚ðƒXƒe[ƒ^ƒX‚É”½‰fB
- pc.c
- 0228‚Å‚Ìpc_calcstatus()‚̉ñ”𗦑‰Á•ª‚ðŒ³‚É–ß‚µflee‚ð‘‰ÁB
- battle.c
- battle_calc_weapon_attack()‚ÌhitrateŒvŽZ‚ʼnñ”𗦕ÛØ‚ðŒvŽZB
-EƒOƒ[ƒoƒ‹•Ï”‚ðŽÀ‘•B
-@ '@'‚à‚µ‚‚Í'l'‚ÅŽn‚Ü‚ç‚È‚¢•Ï”–¼‚ÍA‘S‚ăOƒ[ƒoƒ‹•Ï”‚Æ‚Ý‚È‚³‚ê‚Ü‚·B
- mmo.h
- struct mmo_charstatus ‚É
- int global_reg_num;
- struct global_reg global_reg[GLOBAL_REG_NUM];
- ‚ð’ljÁB
- pc.c
- pc_readglobalreg(),pc_setglobalreg()‚ð’ljÁB
- script.c
- get_val(),buildin_input(),buildin_set()‚É
- ƒOƒ[ƒoƒ‹•Ï”‚Ì‚½‚߂̈—‚ð’ljÁB
- char2.c
- mmo_char_tostr(),mmo_char_fromstr()‚É
- ƒOƒ[ƒoƒ‹•Ï”‚Ì‚½‚߂̈—‚ð’ljÁB
-
-----------
-//0229 by ŒÓ’±—–
-
-Eˆê•”ƒXƒLƒ‹‚ÌŽÀ‘•/C³
- ƒfƒBƒoƒCƒ“ƒvƒƒeƒNƒVƒ‡ƒ“Aƒf[ƒ‚ƒ“ƒxƒCƒ“Aƒr[ƒXƒgƒxƒCƒ“ŽÀ‘•
- ƒGƒiƒW[ƒR[ƒgC³i–‚–@‚É‚æ‚éUŒ‚‚ɂ̓XƒLƒ‹‚ª“‚©‚È‚¢‚悤‚ÉC³j
- •ŠíUŒ‚ŒnƒXƒLƒ‹C³iƒGƒtƒFƒNƒg‚ð’ÊíUŒ‚‚©‚çƒXƒLƒ‹‚É•ÏXj
-
- battle.c
- battle_addmastery()‚ŃxƒCƒ“Œn’ljÁ
- battle_calc_damage()‚ŃGƒiƒW[ƒR[ƒgC³
- skill.c
- skill_castend_damage_id()‚Ì•ŠíUŒ‚ŒnƒXƒLƒ‹‚Ì•”•ª‚ðC³
-
-E“GUŒ‚ŒvŽZ‚ðPC‚Ì‚à‚̂ƈê–{‰»
- ‚±‚ê‚ÅPCvsPCAPCvsMOBAMOBvsPCAMOBvsMOB(!?)‚ð‚P‚‚̊֔‚ÅŒvŽZ‚Å‚«‚Ü‚·
-
- battle.c/battle.h
- battle_calc_weapon_attack()‚ðC³
- battle_calc_weapon_attack_pc(),~mob()‚ðíœ
- mob.c
- mob_attack()‚ÅŒvŽZ‚Ébattle_calc_weapon_attack()‚ðŽg‚¤‚悤‚ÉC³
-
-E‰r¥ŽžŠÔƒf[ƒ^‚ª‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg‚̉r¥ŽžŠÔ‚ð‚O‚É•ÏX
- ¡‚Ü‚Å‚Í‚P•b‚É‚µ‚Ä‚Ü‚µ‚½‚ªAƒoƒbƒVƒ…‚Æ‚©‚ª‚¨‚©‚µ‚‚È‚é‚Ì‚ÅB
- iƒoƒbƒVƒ…‚Æ‚©‚̃f[ƒ^‚ð—pˆÓ‚·‚ê‚΂±‚¤‚µ‚È‚‚Ä‚à’¼‚é‚ñ‚Å‚·‚ªj
-
- pc.c
- pc_readdb()‚Å1000ms‚ðƒZƒbƒg‚·‚é‚Ì‚ðŽ~‚ß‚½
-
-E‰“‹——£UŒ‚‚µ‚Ä‚±‚È‚¢ƒoƒOA‚»‚Ì‘¼‚ðC³
- mob.c
- mob_attack()‚ÌŽË’ö‚ðC³‚µ–Y‚ê‚Ä‚¢‚½
- mob_ai_sub_hard()‚ÅŽË’ö‹——£ŠO‚ÌŽžA–³ˆÚ“®‚Ì“G‚Í
- ƒ^[ƒQƒbƒg‚ðŠO‚·‚悤‚É‚µ‚½
-
-
-----------
-//0228 by nabe
-
-Eƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ÌSkillID‚ðC³B
- battle.c
- battle_calc_weapon_attack_pc()‚Å
- pc_checkskill(sd,49) -> pc_checkskill(sd,48)‚ÉB
-E‰ñ”𗦌üã‚ð—z‚É•\‚³‚È‚¢
- pc.c
- pc_calcstatus()‚Å‚Ìflee‚̉ñ”𗦌ü㕪‚ð휂µA
- mob.c
- mob_attack()‚ÌhitrateŒvŽZ‚ʼnñ”𗦌üã‚ðŒvŽZB
-E“å³A“峎“A“å³—Y‚ð³í‰»B
- npc_monster3J.txt
- mob_db.txt‚ɇ‚킹‚ÄA‚½‚Ô‚ñ³‚µ‚¢‚ÆŽv‚í‚ê‚éID‚ÉC³B
- “å³ 1006 -> 1051
- “峎“ 1017 -> 1053
- “å³—Y 1021 -> 1054
-EƒfƒoƒbƒOƒƒbƒZ[ƒW‚ÌÁ‚µ–Y‚êiHj‚ðíœB
- pc.c
- printf("pc.c 63 clif_clearchar_area\n");‚ðƒRƒƒ“ƒgƒAƒEƒg
-
-----------
-//0227 by ŒÓ’±—–
-
-Eˆê•”‚̃XƒLƒ‹Œø‰Ê‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- HP‰ñ•œŒüãASP‰ñ•œŒüãAƒ}ƒOƒjƒtƒBƒJ[ƒgA
- ƒnƒCƒfƒBƒ“ƒOAƒNƒ[ƒLƒ“ƒOAŽ€‚ñ‚¾‚Ó‚èA‰ž‹}Žè“–
-
- map.h
- struct map_session_data ‚É inchealtick ƒƒ“ƒo’ljÁ
- pc.c
- pc_spheal()‚Ń}ƒOƒjƒtƒBƒJ[ƒgˆ—’ljÁ
- pc_natual_heal_sub()‚ʼnñ•œŒüãƒXƒLƒ‹ˆ—’ljÁ
- pc_authok()‚Åinchealtick‚ð‰Šú‰»‚·‚é‚悤‚É•ÏX
- pc_walk()‚Åincheaktick‚ðÄÝ’è‚·‚é‚悤‚É•ÏX
- pc_walk()‚ŃNƒ[ƒLƒ“ƒO‚ÌI—¹ðŒ‚𒲸‚·‚é‚悤‚É•ÏX
- pc_walktoxy()‚Åó‘Ô‚É‚æ‚Á‚Ĉړ®•s‰Â”\‚É‚µ‚½
- skill.c/skill.h
- skill_status_change_start(),~timer(),~end()‚Ɉ—’ljÁ
- skill_check_cloaking()’ljÁAƒNƒ[ƒLƒ“ƒO‚ÌI—¹ðŒ‚ðŒŸ¸
- battle.c/battle.h
- battle_stopattack()’ljÁ
- battle_calc_weapon_attack()‚ÅUŒ‚‚ðŽ~‚߂鈗’ljÁ
- mob.c
- mob_ai_sub_hard()‚ÅUŒ‚‚ðŽ~‚߂鈗’ljÁ
-
-E’ÊíUŒ‚ˆ—A‘ÎMOBA‘ÎPC‚ð‹¤—p‚ÉB
- pc.c
- pc_attack_mob(),pc_attack_pc()íœ
- pc_attack()‚ÉUŒ‚ˆ—’ljÁ
-
-Eƒ‚ƒ“ƒXƒ^[‚Ìs“®‚̈ꕔŽÀ‘•
- ƒAƒNƒeƒBƒ”A–³”½‰žAˆÚ“®‚µ‚È‚¢A‰“‹——£UŒ‚ˆê•”
-
- mob.c
- mob_ai_sub_hard()‚És“®’ljÁ
- mob_ai_sub_hard_activesearch()’ljÁA‹ß‚‚ÌPC‚Ö‚Ìô“G
-
-EƒI[ƒo[ƒgƒ‰ƒXƒg‚Ì‘‰Á”{—¦‚ª100”{‚É‚È‚Á‚Ä‚¢‚éƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½
- battle.c
- battle_calc_weapon_attack()‚ÅAŠY“–ŒÂŠ‚ðC³
-
-
-----------
-//0226 by ŒÓ’±—–
-
-‚â‚Á‚Ï‚èƒeƒXƒg‚Í‚ ‚ñ‚܂肵‚Ä‚¢‚Ü‚¹‚ñ
-
-Eˆê•”‚̃XƒLƒ‹Œø‰Ê‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- ‘¬“x‘‰ÁAƒGƒ“ƒWƒFƒ‰ƒXAƒLƒ…ƒA[
- ƒCƒ“ƒ|ƒVƒeƒBƒIƒ}ƒkƒXAƒTƒtƒ‰ƒMƒEƒ€AƒŠƒJƒoƒŠ[AƒOƒƒŠƒA
- ‚Ó‚‚낤‚Ì–ÚAƒƒV‚Ì–ÚAW’†—ÍŒüãA‰ñ”𗦌üãA‰ð“Å
- ŠŽ—Ê‘‰ÁAƒ‰ƒEƒhƒ{ƒCƒXAƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…AƒI[ƒo[ƒgƒ‰ƒXƒg
- ƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“Aƒ}ƒLƒVƒ}ƒCƒYƒpƒ[A‚Q‚g‚p
-
- (map/)
- map.h
- struct map_session_data‚Éwatk2,def2‚ȂǒljÁ
- pc.c
- pc_calcstatus()‚ɃXƒLƒ‹C³’ljÁ
- atk2‚È‚Ç‚à‘—M‚·‚é‚悤‚É•ÏX
- battle.c/battle.h
- battle_get_def2()‚È‚Ç‘½”’ljÁ
- battle_calc_weapon_damage()‚Å“GŒ¸ŽZ–hŒä‚ÌŠ“¾‚ð
- battle_get_def2()‚É•ÏX
- battle_calc_magic_damage()‚Å“GŒ¸ŽZ–‚–@–hŒä‚ÌŠ“¾‚ð
- battle_get_mdef2()‚É•ÏX
- battle_calc_weapon_damage()‚ŃXƒLƒ‹C³‚ð’ljÁ
- skill.c/skill.h
- skill_use_nodamage_id()‚ÌŠY“–ŒÂŠ’ljÁ
- skill_status_change_start()‚ÌŠY“–ŒÂŠ’ljÁ
- clif.c
- clif_updatestatus()‚Ìatk2‚Ȃǂ̈—’ljÁ
- clif_initialstatus()‚Åatk2‚Ȃǂ̈µ‚¢•ÏXAaspd‚È‚Ç‘—M’ljÁ
-
-E¸˜Bƒ_ƒ[ƒWC³/¸˜B–hŒäC³‚ª“K—p‚³‚ê‚Ü‚µ‚½
- (map/)
- pc.c
- pc_calcstatus()‚Åwatk2‚Ædef‚̒ljÁŒvŽZ’ljÁ
- battle.c
- battle_calc_weapon_damage()‚Åwatk2‚ðƒ_ƒ[ƒW‚ɒljÁ
-
-EinterŽI‚̃pƒPƒbƒg‰ðÍ•”‚Ì’v–½“I‚È–â‘肪C³‚³‚ê‚Ü‚µ‚½
- TCP/IPƒvƒƒOƒ‰ƒ€‚Å‚â‚Á‚Ä‚Í‚¢‚¯‚È‚¢‚±‚Æ‚ð‚»‚Ì‚Ü‚Ü‚â‚Á‚Ä‚Ü‚µ‚½(Š¾
- interŽI‚̃pƒPƒbƒg’·ƒf[ƒ^‚ðinter.c‚ÉŽ‚‚悤‚ÉC³‚³‚ê‚Ü‚µ‚½B
-
- (char/)
- inter.c/inter.h
- ƒpƒPƒbƒg’·ƒf[ƒ^ inter_*_packet_length[] ‚ð’ljÁ
- ƒpƒPƒbƒg’·ƒ`ƒFƒbƒN inter_check_length() ‚ð’ljÁ
- mapif_parse_*()‚ÅRFIFOSKIP‚ð‚È‚µ‚É•ÏX
- int_storage.c/int_storage.h
- mapif_parse_*()‚ÅRFIFOSKIP‚ð‚È‚µ‚É•ÏX
- int_party.c/int_guild.c
- Žd—l•ÏX‚ɑΉž‚³‚¹‚½•ÏX
- INTERŽIƒpƒPƒbƒg.txt
- ƒpƒPƒbƒg’·ƒŠƒXƒg’ljÁ
-
-E‚¿‚å‚Á‚Æ‚µ‚½C³
- (char/)
- inter.h
- inter_cfgName‚ð"conf/inter_athena.cnf"‚ÉC³
- char2.c
- char.exe‘æ‚Qˆø”È—ªŽžAinter_cfgName‚ðŽg‚¤‚悤‚ÉC³
- (db/)
- cast_db.txt
- ƒz[ƒŠ[ƒ‰ƒCƒg‚̉r¥ŽžŠÔ’ljÁiƒfƒBƒŒƒC‚Í“K“–j
- Ú‚µ‚¢l’ljÁ‹‚Þ
-
-----------
-//0225 by ŒÓ’±—–
-
-‚È‚ñ‚©‚©‚È‚è˜M‚è‚Ü‚µ‚½‚ª‘Š•Ï‚í‚炸ƒeƒXƒg‚Í‚ ‚ñ‚܂肵‚Ä‚Ü‚¹‚ñB
-
-EƒXƒLƒ‹Žg—pŽž‚Ì•Ï”‚ð•ÏX
- ‚æ‚Œ©‚½‚çʼn‚©‚ç—pˆÓ‚³‚ê‚Ä‚Ü‚µ‚½‚ËB
-
- map.h
- struct map_session_data‚Ìcast_*‚ðíœ
- skill.c
- cast_*‚Ì•Ï”‚ðskill*‚É•ÏXB
-
-EƒXƒe[ƒ^ƒXˆÙíƒXƒLƒ‹‚̈—‚ð’ljÁiŒø‰Ê‚Í–¢ŽÀ‘•j
- Œ©‚©‚¯ãAƒXƒe[ƒ^ƒXˆÙí‚ÉŠ|‚©‚Á‚½‚è‚Æ‚©‚¾‚¯B
- Œø‰Ê‚Í‚Ü‚¾‚È‚µB
-
- skill.c/skill.h
- skill_status_change_start(),~end(),~timer(),~clear()’ljÁB
- ‚»‚ꂼ‚êƒXƒe[ƒ^ƒXˆÙí‚ÌŠJŽnAI—¹Aƒ^ƒCƒ}ˆ—A‘SÁ‹ŽB
- map.c/map.h
- map_quit()‚Åskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚É‚µ‚½B
- struct map_session_data‚Ésc_data,sc_count’ljÁB
- struct mob_data‚Ésc_data,sc_count,option,opt1,opt2’ljÁB
- pc.c
- pc_authok()‚Åsc_data,sc_count‚ð‰Šú‰»‚·‚é‚悤‚É‚µ‚½B
- pc_setoption‚Åclif_changeoption()‚̈ø”•ÏXB
- pc_damage()‚ÅŽ€–SŽž‚Éskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚ÉB
- mob.c
- mob_spawn()‚Åsc_data,sc_count‚ð‰Šú‰»‚·‚é‚悤‚É‚µ‚½B
- mob_attack()‚Åbattle_calc_damage()‚ðŒÄ‚Ԃ悤‚É‚µ‚½B
- mob_damage()‚ÅŽ€–SŽž‚Éskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚ÉB
- battle.c/battle.h
- battle_get_*()‚½‚‚³‚ñ’ljÁB
- battle_calc_damage()’ljÁBÅI“I‚ȃ_ƒ[ƒWŒvŽZ—pB
- battle_calc_magic_attack(),battle_calc_weapon_attack()‚Å
- battle_calc_damage()‚ðŒÄ‚Ԃ悤‚É‚µ‚½B
- clif.h/clif.c
- clif_status_change()’ljÁBƒXƒe[ƒ^ƒXˆÙíƒAƒCƒRƒ“•\Ž¦—pB
- clif_changeoption()‚̈ø”•ÏXB
- atcommand.c
- clif_changeoption()‚ðŒÄ‚ñ‚Å‚¢‚é‚Qƒ–Š‚ňø”•ÏXB
- @die‚Åskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚ÉB
-
-Eƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€‚ÌK“¾ðŒ‚ªŠÔˆá‚Á‚Ä‚¢‚é‚Ì‚ðC³B
- db/skill_tree.txt
- ŠY“–ŒÂŠC³BiƒŒƒbƒNƒXƒG[ƒeƒ‹ƒi‚Ì•K—vLv‚ð‚P‚Éj
-
-EƒAƒNƒeƒBƒu‚È“G‚ÍUŒ‚‚·‚é‚Æ‚«ŽžXƒ^[ƒQƒbƒg‚ª•Ï‚í‚é‚悤‚É‚È‚è‚Ü‚µ‚½
- mob.c
- mob_ai_sub_hard()‚ÌUŒ‚‚³‚ꂽ‚©Šm”F‚·‚é•”•ª‚É
- ƒAƒNƒeƒBƒu‚È‚ç25%‚ÌŠm—¦‚Ń^[ƒQƒbƒg‚ª•Ï‚í‚é‚悤‚É•ÏXB
-
-Eˆê•”‚̃XƒLƒ‹Œø‰Ê‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½
- ƒLƒŠƒGƒGƒŒƒCƒ\ƒ“AƒGƒiƒW[ƒR[ƒgAƒŒƒbƒNƒXƒG[ƒeƒ‹ƒiA
- ƒz[ƒŠ[ƒ‰ƒCƒgAƒŠƒUƒŒƒNƒVƒ‡ƒ“Aƒ^[ƒ“ƒAƒ“ƒfƒbƒhAƒ‚ƒ“ƒXƒ^[î•ñ
-
- skill.c/skill.h
- skill_castend_nodamage_id()‚ɃXƒLƒ‹‚̈—‚ð’ljÁB
- skill_castend_*_id()‚̈ø”‚ð•ÏX
- battle.c
- battle_calc_damage()‚ɃXƒLƒ‹‚̈—‚ð’ljÁB
- battle_damage(),battle_heal()‚̈ø”•ÏX
- battle_calc_weapon_damage(),battle_calc_magic_damage()ˆø”•ÏX
- clif.c/clif.h
- clif_skill_estimation()’ljÁBƒ‚ƒ“ƒXƒ^[î•ñ‘—M—p
- pc.c
- battle_calc_weapon_damage()ŒÄ‚Ño‚µ‚̈ø”•ÏX
-
-Estorage.txt‚ª–³‚¢ê‡interŽI‚ª‹§I—¹‚·‚éŽd—l‚ð•ÏX‚µ‚Ü‚µ‚½
- (char/)
- int_storage.c
- inter_storage_init()‚Ńtƒ@ƒCƒ‹‚ª“Ç‚ß‚È‚¢‚Æexit‚µ‚Ä‚½‚Ì‚ðC³
-
-
-----------
-//0224
-E2-2ŽŸE‚̃XƒLƒ‹‚ðƒcƒŠ[‚ɒljÁ‚µ‚Ü‚µ‚½iŽÀ‘•‚Í‚Ü‚¾‚Å‚·j
- (db/)
- skill_db.txt
- skill_tree.txt
-
-
-----------
-//0223 by ŒÓ’±—–
-EƒJƒvƒ‰‘qŒÉ‚ðinterŽI‚ɑΉž‚³‚¹‚Ü‚µ‚½
- ‚¢‚Ü‚Ü‚Å‚Ìstorage.txt‚Í‚»‚Ì‚Ü‚ÜŽg‚¦‚Ü‚·B
- interŽI—p‚ÌÝ’èƒtƒ@ƒCƒ‹‚Æ‚µ‚Äconf/inter_athena.cnf‚ðŽg‚¢‚Ü‚·B
- iÝ’èƒtƒ@ƒCƒ‹‚Íchar.exe‚Ì‘æ‚Qˆø”‚Å‘¼‚̃tƒ@ƒCƒ‹‚ðŽw’è‚Å‚«‚Ü‚·j
-
- ƒJƒvƒ‰‘qŒÉ‚ÌinterŽIŽÀ‘•‚ÌŠT—v
-
- interŽI‚Ístorage.txt‚Ì‘Sƒf[ƒ^‚ðŽ‚ÂBmapŽI‚̓AƒJƒEƒ“ƒg‚ª—v‹‚·‚é‚Ü‚Å
- ‚»‚̃AƒJƒEƒ“ƒg‚Ì‘qŒÉƒf[ƒ^‚ðŽ‚½‚È‚¢BƒNƒ‰ƒCƒAƒ“ƒg‚©‚ç‘qŒÉ‚ðŠJ‚—v‹‚ª
- ‚ ‚Á‚½‚Æ‚«AmapŽI‚͑Ήž‚·‚éƒAƒJƒEƒ“ƒg‚Ì‘qŒÉƒf[ƒ^‚ðinterŽI‚É—v‹‚·‚éB
- interŽI‚©‚çƒf[ƒ^‚ª“Í‚‚ƃNƒ‰ƒCƒAƒ“ƒg‚É‘qŒÉƒf[ƒ^‚ð‘—‚éB
- ‘qŒÉ‚Ìo‚µ“ü‚ê‚̓Nƒ‰ƒCƒAƒ“ƒg‚ÆmapŽIŠÔ‚Ì’ÊM‚¾‚¯‚Ås‚í‚ê‚éB
- ƒNƒ‰ƒCƒAƒ“ƒg‚ª‘qŒÉ‚ð•Â‚¶‚é‚©I—¹‚·‚é‚ÆAmapŽI‚ÍŠY“–ƒAƒJƒEƒ“ƒg‚Ì
- ‘qŒÉƒf[ƒ^‚ðinterŽI‚É‘—‚éB‚±‚Ì‚Æ‚«interŽI‚̉ž“š‚ð‘Ò‚½‚¸‚ɃNƒ‰ƒCƒAƒ“ƒg‚É
- ‘qŒÉƒNƒ[ƒY‚ð‘—‚éBinterŽI‚Í‘qŒÉƒf[ƒ^‚ðŽó‚¯Žæ‚é‚ÆA
- ‘Sˆõ•ª‚̃f[ƒ^‚ðƒtƒ@ƒCƒ‹‚É•Û‘¶‚µ‚ÄAmapŽI‚ɬŒ÷ƒXƒe[ƒ^ƒX‚ð•Ô‚·B
- mapŽI‚ͬŒ÷ƒXƒe[ƒ^ƒX‚𖳎‹‚·‚éB(ƒfƒoƒbƒO—p‚ɉæ–Ê‚Éo—Í‚·‚邾‚¯)
- interŽII—¹Žž‚É‚à‘qŒÉƒf[ƒ^‚ðƒtƒ@ƒCƒ‹‚É•Û‘¶‚·‚éB
-
- mapŽI‚Åaccount2storage‚ÅV‚µ‚¢‘qŒÉƒf[ƒ^‚ðì‚é‚Æ‚«A
- ‚·‚łɕ‚¶‚ç‚ê‚Ä‚¢‚é‘qŒÉƒf[ƒ^‚̃ƒ‚ƒŠ‚ðŽg‚¢‚܂킵‚½‚Ù‚¤‚ªƒƒ‚ƒŠ‚ª
- ß–ñ‚Å‚«‚é‚©‚àHi‚±‚ê‚ÍŽÀ‘•‚µ‚Ä‚¢‚Ü‚¹‚ñj
-
- (common/)
- mmo.h
- struct storage ‚ð map/storage.h ‚©‚çˆÚ“®B
- interŽI‚ÆmapŽI—¼•û‚ÅŽg—p‚·‚邽‚ßB
- (char/)
- char2.c
- do_final()‚ðì¬AI—¹Žž‚Émmo_char_sync()ˆÈŠO‚Éinter_save()‚ð
- ŒÄ‚Ԃ悤‚É‚µ‚½i‚±‚ê‚Åinter_*_save()‚Í‘S•”ŒÄ‚΂ê‚Ü‚·j
- inter_init()‚ðchar.exe‚Ì‘æ‚Qˆø”‚à‚µ‚‚Í"conf/inter.cnf"‚Å
- ŒÄ‚Ԃ悤‚É‚µ‚½iathena.sh‚ÉinterŽIƒRƒ“ƒtƒBƒOƒtƒ@ƒCƒ‹‚ðŽw’è‚Å‚«‚Ü‚·j
- inter.c/inter.h
- inter_storage_init(),inter_storage_save(),
- inter_storage_parse_frommap()‚ðŒÄ‚Ԃ悤‚ÉB
- inter_init()‚ɃRƒ“ƒtƒBƒOƒtƒ@ƒCƒ‹–¼‚̈ø”‚ð•t‚¯‚½B
- inter_config_read()’ljÁAƒRƒ“ƒtƒBƒOƒtƒ@ƒCƒ‹‚©‚ç
- ‘qŒÉ‚ƃp[ƒeƒB[AƒMƒ‹ƒh‚̃tƒ@ƒCƒ‹–¼‚ð“Ç‚Ýž‚Ý‚Ü‚·B
- int_storage.c/int_storage.h
- V‹K’ljÁB‘qŒÉ•”•ª‚ÌinterŽI‹@”\B
- int_party.h/int_party.c/int_guild.h/int_guild.c/
- ƒtƒ@ƒCƒ‹–¼•Ï”‚Ì錾’ljÁ
- INTERŽIƒpƒPƒbƒg.txt
- ‘qŒÉƒpƒPƒbƒg‚̉ðà’ljÁ
-
- (map/)
- storage.h/storage.c
- storage_fromstr(),storage_tostr()‚ðchar/int_storage.c‚Ɉړ®B
- “¯‚¶‚do_init,do_final‚ł̃tƒ@ƒCƒ‹ˆ—‚àˆÚ“®B
- do_final()‚͈—‚È‚µAdo_init()‚Í•Ï”‰Šú‰»‚Ì‚Ý‚É•ÏXB
- storage_storageopen()‚Å‚Í’P‚Éintif_request_storage()‚ðŒÄ‚Ô‚¾‚¯‚ÉB
- storage_storageclose()‚Éintif_send_storage()‚ð’ljÁ
- storage_storage_quitsave()’ljÁBƒNƒ‰ƒCƒAƒ“ƒgI—¹Žž‚É
- ƒJƒvƒ‰‘qŒÉ‚ªŠJ‚¢‚Ä‚¢‚ê‚Îintif_send_storage()‚ðŒÄ‚ÔŠÖ”B
- intif.h/intif.c
- intif_parse_LoadStorage(),intif_parse_SaveStorage(),
- intif_send_storage(),intif_request_storage()’ljÁ
- map.c
- map_quit()‚Åstorage_storage_quitsave()‚ðŒÄ‚Ԃ悤‚ÉB
-
- (conf/)
- inter_athena.cnf
- V‹K’ljÁBinterŽI—p‚̃Rƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹
-
-
-----------
-//0221 by ŒÓ’±—–
-
-EƒXƒLƒ‹ƒ^[ƒQƒbƒg‚ÌID‚ª³‚µ‚Š“¾‚Å‚«‚È‚¢–â‘èC³
- clif.c
- clif_parse_UseSkillToId()‚ÅID‚ðWORD‚Æ‚µ‚Ĉµ‚Á‚Ä‚½‚Ì‚ðLONG‚ÉC³
-
-EƒXƒLƒ‹‰r¥ŽžŠÔ‚Æ‘®«•\A‚¨‚æ‚Ñ–‚–@ŒnƒXƒLƒ‹‚Ì‘®«C³ŽÀ‘•
- ‘®«ƒ_ƒ[ƒWC³‚Í battle_attr_fix() ‚ÅŒvŽZ‚µ‚Ü‚·B
- atk_elem‚Í‘®«‚»‚Ì‚Ü‚ÜAdef_elem‚Íi‘®«lv*20{‘®«j‚Å‚·B
- ‰r¥ŽžŠÔ‚Ískill.c‚ÌCASTFIX‚Ì’l‚ð•Ï‚¦‚邱‚Æ‚Å”{—¦‚ð’²®‚Å‚«‚Ü‚·
-
- pc.c
- pc_readdb()‚Åcast_db.txt‚Æattr_fix.txt‚Ì“Ç‚Ýž‚ݒljÁ
- skill.c/skill.h
- struct skill_db ‚Écast,delay’ljÁA‚»‚ê‚ç‚̃AƒNƒZƒT‚à’ljÁ
- ƒXƒLƒ‹‰r¥ŽžŠÔ‚ð skill_get_cast() ‚ÅŠ“¾‚·‚é‚悤‚É‚µ‚½
- battle.c/battle.h
- attr_fix_table’è‹`
- battle_attr_fix()’ljÁA‘®«C³‚ðŒvŽZ‚·‚é
- ‘®«ŒnƒAƒNƒZƒT(battle_get_element()‚È‚Ç)‚ð’ljÁ
- battle_calc_magic_damage()‚É‘®«C³‚ð’ljÁ
- cast_db.txt
- V‹K’ljÁB‰r¥ŽžŠÔ‚ƃfƒBƒŒƒC‚̃f[ƒ^ƒx[ƒX
- ‘S‘R‘«‚è‚È‚¢‚Ì‚ÅA’N‚©’ljÁŠó–]B
- attr_fix.txt
- V‹K’ljÁB‘®«C³ƒe[ƒuƒ‹
-
-Eƒq[ƒ‹‚ÌŽÀ‘•
- clif.c/clif.h
- clif_skill_nodamage()’ljÁAŽx‰‡Œn‚â‰ñ•œ‚̃GƒtƒFƒNƒg
- skill.c/skill.h
- skill_castend_damage_id()Askill_castend_nodamage_id()’ljÁA
- UŒ‚Œn‚ÆŽx‰‡/‰ñ•œŒn‚ÅŠÖ”‚𕪂¯‚½
- ƒq[ƒ‹ŒvŽZƒ}ƒNƒ skill_calc_heal() ’ljÁ
- battle.c
- battle_calc_magic_damage()‚Ńq[ƒ‹‚̃_ƒ[ƒWŒvŽZ’ljÁ
-
-
-----------
-//0220 by ‚ê‚
-
-0216‚ÌC³
-HIT‚ÌŒvŽZ‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ÅC³‚µ‚Ä‚Ý‚Ü‚µ‚½B
-ŠÔˆá‚Á‚Ä‚½‚炲‚ß‚ñ‚È‚³‚¢B
-
-Ebattle.c
- 256s–Ú‚Ì
- hitrate=battle_get_hit(&sd->bl) - battle_get_flee(&sd->bl) + 80;
- ‚ª‚½‚Ô‚ñAŽ©•ª‚Ì‚g‚h‚s‚ÆŽ©•ª‚Ì‚e‚k‚d‚d‚ÅŒvŽZ‚µ‚Ä‚é‹C‚ª‚·‚é‚Ì‚Å
- hitrate=battle_get_hit(&sd->bl) - battle_get_flee(target) + 80;
- ‚ÉC³‚µ‚Ü‚µ‚½B
-
-
-----------
-//0218 by ŒÓ’±—–
-
-ŽÀÛ‚É•ªŽU‚³‚¹‚ăeƒXƒg‚µ‚Ä‚¢‚È‚©‚Á‚½‚èB
-
-EmapŽI•ªŽUˆ——p‚ÉinterŽI‹@”\‚ð‚‚¯‚Ä‚Ý‚éi¡Œã‚Ì‚½‚ß‚ÌŠg’£j
- charŽI‚ÉinterŽI‚ðŠñ¶‚³‚¹‚Ü‚µ‚½B•¡”‚ÌmapŽIŠÔ‚Ì’ÊM‚É—˜—p‚µ‚Ü‚·B
- mapŽI‚𕪎U‚µ‚Ĉ—‚Å‚«‚é‚悤‚É‚·‚邽‚ß‚Ì‹@”\‚Å‚·B
- ¡Œãparty‚âguildŽÀ‘•Žž‚É‚«‚Á‚Æ–ð‚É‚½‚Á‚Ä‚‚ê‚é‚©‚ÆB
-
- ‘qŒÉ‚ÌŽÀ‘•‚àinterŽI‚Ɉړ®‚·‚ׂ«‚©‚à‚µ‚ê‚Ü‚¹‚ñB
- ‚ǂ̃Lƒƒƒ‰ƒNƒ^[‚ª‚Ç‚ÌmapŽI‚É‚¢‚é‚©ŒŸõ‚·‚é‹@”\‚à‚¢‚é‚©‚àB
-
- Žg‚¤ƒpƒPƒbƒg‚ÌID‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·
- mapŽI=>interŽI‚̓pƒPƒbƒg0x3000`
- interŽI=>mapŽI‚̓pƒPƒbƒg0x3800`
- ƒpƒPƒbƒg‚ðì‚Á‚½ê‡‚ÍAINTERŽIƒpƒPƒbƒg.txt‚É‘‚¢‚Ä‚‚¾‚³‚¢
-
- ‚±‚Ì‹@”\‚É‚æ‚郃Šƒbƒg
- mapŽI•ªŽU‚É‚à‘Ήž‚Å‚«‚é
- ‚±‚Ì‹@”\‚É‚æ‚éƒfƒƒŠƒbƒg
- interŽIŒo—R‚Ì‘S‚Ä‚Ì–½—ß‚Ì“®ì‘¬“x‚ª—Ž‚¿‚é
- iˆê‰ñinterŽI‚Ü‚Å“n‚·‚½‚ßj
- ŽI‚ƃNƒ‰ƒCƒAƒ“ƒg‚𓯂¶PC‚ÅŽg‚Á‚Ä‚¢‚é‚Ƃ‚炢‚©‚à
-
- (char/)
- char2.c/char.h
- mapif_sendall()’ljÁi‘SMAPŽI‚ɃpƒPƒbƒg‚ð‘—‚éj
- mapif_send()’ljÁi“Á’èMAPŽI‚É‘—‚éF¶‘¶”»’è•t‚«j
- parse_frommap()‚Åinter_parse_frommap()‚ðŒÄ‚Ԃ悤‚É‚µ‚½
- (interŽI‚ÌmapŽI‰ðÍ•”‚ðcharŽI‚ÉŠñ¶‚³‚¹‚½‚±‚Æ‚É‚È‚é)
- inter.h/inter.c
- V‹K’ljÁBinterŽI‚Ì’†ŠjB
- inter_parse_frommap‚ÅMAPŽI‚©‚ç‚̃pƒPƒbƒg‚ð‰ðÍ‚µ‚Ü‚·B
- int_party.h/int_party.c/int_guild.h/int_guild.c
- V‹K’ljÁB¡Œã‚Ì‚½‚ß‚Ì—\–ñBƒp[ƒeƒB‚âƒMƒ‹ƒh‹@”\—p
- init‚Ńf[ƒ^‚ð“Ç‚ñ‚ÅAsave‚Å•Û‘¶‚·‚ׂ«H
- save‚Í‚Ü‚¾ŒÄ‚΂ê‚È‚¢Bparse‚ŃpƒPƒbƒg‰ðÍB
- common/mmo.h‚ ‚½‚è‚Ńp[ƒeƒB[‚âƒMƒ‹ƒh‚Ì\‘¢‘Ì‚ð
- ’è‹`‚·‚é•K—v‚ª‚ ‚é‚ÆŽv‚í‚ê‚éB
- INTERŽIƒpƒPƒbƒg.txt
- ƒpƒPƒbƒg‚̃ŠƒXƒg
-
- (map/)
- intif.h/intif.c
- interŽI‚Æ’ÊM‚·‚é•”•ªB
- inter_parse()‚ÅinterŽI‚©‚ç‚̃pƒPƒbƒg‚ð‰ðÍ‚µ‚Ü‚·B
- interŽI‚Öƒf[ƒ^‚ð‘—‚é‚Æ‚«‚Íinter_fd‚ðŽg‚¢‚Ü‚·B
- chrif.h/chrif.c
- chrif_parse()‚Åinter_parse()‚ðŒÄ‚Ԃ悤‚É‚µ‚½
- iintif.c‚ÌinterŽI‰ðÍ•”‚ðcharŽI‰ðÍ•”‚ÉŠñ¶‚³‚¹‚½‚±‚Æ‚É‚È‚é)
-
-E@kamiƒRƒ}ƒ“ƒh‚ðinterŽIŒo—R‚É•ÏX
- Œ´—‚Æ‚µ‚Ä‚ÍŽŸ‚̂悤‚ÈŠ´‚¶‚Å‚·
- ƒNƒ‰ƒCƒAƒ“ƒg„mapŽI„interŽI„‘SmapŽI„‘SƒNƒ‰ƒCƒAƒ“ƒg
-
- (char/)
- inter.c
- mapif_GMmessage()’ljÁ
- (map/)
- intif.h/intif.c
- intif_GMmessage()’ljÁ
- intif_parse‚ÅGMƒƒbƒZ[ƒW‚̈—‚ð’ljÁ
- clif.c/clif.h
- clif_GMmessage()‚̈ø”‚ð•ÏX
- atcommand.c
- @kami•”•ª‚Åintif_GMmessage()‚ðŒÄ‚Ԃ悤‚É‚µ‚½
-
-EWis‚ðinterŽIŒo—R‚É•ÏX
- Œ´—‚Æ‚µ‚Ä‚ÍŽŸ‚̂悤‚ÈŠ´‚¶‚Å‚·
-
- ‘—‚èŽåƒNƒ‰ƒCƒAƒ“ƒg„‘—‚èŽåmapŽI„interŽI„‘Sƒ}ƒbƒvŽI„(•ªŠòA)
- [•ªŠòA]
- 1.‘ŠŽè‚Ìl‚¢‚émapŽI„‘ŠŽè‚̃Nƒ‰ƒCƒAƒ“ƒg
- @@@@V@@ @„interŽI„‘—‚èŽåmapŽI„‘—‚èŽåƒNƒ‰ƒCƒAƒ“ƒg
- 2.‘ŠŽè‚Ì‚¢‚È‚¢mapŽI„interŽIi•ªŠòBj
- [•ªŠòB]
- 1.‘SmapŽI‚ª‰ž“š‚µ‚½interŽI „‘—‚èŽåmapŽI„‘—‚èŽåƒNƒ‰ƒCƒAƒ“ƒg
- 2.(‘S•”‚͉ž“š‚µ‚Ä‚È‚¢‚Æ‚«‚ÍA‘SmapŽI‚̉ž“š‚ð‘Ò‚Â)
-
- ‚à‚Ì‚·‚²‚¢•¡ŽG‚É‚È‚Á‚Ä‚Ü‚·‚ËB
-
- (char/)
- inter.c
- struct WisList ’è‹`iWisƒf[ƒ^‚̃Šƒ“ƒNƒŠƒXƒgj
- add_wislist(),del_wislist(),search_wislist(),
- check_ttl_wislist()’ljÁ,ƒŠƒ“ƒNƒŠƒXƒg‚ðˆµ‚¤ŠÖ”ŒQ
- mapif_wis_message(),mapif_wis_end()’ljÁ
- (map/)
- intif.h/intif.c
- intif_wis_message(),intif_wis_end()’ljÁ
- intif_parse_WisMessage()’ljÁ,intif_parse()‚©‚çŒÄ‚΂ê‚é‚悤‚É
- clif.c/clif.h
- clif_wis_message(),clif_wis_end()’ljÁ
- clif_parse_Wis()‚ð•ÏX,intif_wis_message()‚ðŒÄ‚Ԃ悤‚É‚µ‚½
-
-EƒXƒLƒ‹Žg—pŽž‚̃qƒbƒg”/Á”ïSPŠ“¾‚̃oƒOC³
- skill.c
- skill_get_sp(),skill_get_num()‚ÅŽQÆ‚·‚é”z—ñƒCƒ“ƒfƒbƒNƒX‚ðlv-1‚É‚µ‚½
-
-
-----------
-//0216 by ŒÓ’±—–
-
-‚¢‚‚à‚Ç‚¨‚èƒeƒXƒg‚Ù‚Æ‚ñ‚Ç‚µ‚Ä‚È‚¢‚Ì‚ÅAƒoƒO‘å—Ê‚©‚àB
-
-E0213‚ÌC³H‚Ì‚æ‚‚í‚©‚ç‚È‚¢‚Æ‚±‚ëC³
- itemdb.c
- ƒRƒ“ƒpƒCƒ‹‚ª’Ê‚ç‚È‚¢‚Ì‚Åitemdb_equipoint‚̈ø”ƒŠƒXƒg•ÏX
-
-EAthena dev 2.1.1‚Ì“K—p
- dev-2.1.1‚Å“K—p‚³‚ꂽC³‚ð“K—p‚µ‚Ü‚µ‚½
-
- timer.c
- 2.1.1‚Ì‚à‚Ì‚Æ·‚µ‘Ö‚¦
- script.c
- C_NE: ‚ÌC³‚Ì“K—p
- README
- ÅŒã‚Ì•¶Í‚ð2.1.1‚Ì‚à‚Ì‚É·‚µ‘Ö‚¦
-
-EƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚ÌC³
- ˆê•”‚ÌÁ”ïSP‚âƒqƒbƒg”‚È‚Ç‚ðC³B
-
- skill_db.txt
- ŠY“–ŒÂŠ‚ÌC³
-
-EƒXƒLƒ‹UŒ‚‚ÌŽÀ‘••ÏX•’ljÁŽÀ‘•
- ƒoƒbƒVƒ…Aƒƒ}[ƒiƒCƒgAƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒOAƒsƒA[ƒX
- ƒXƒsƒAƒu[ƒƒ‰ƒ“AƒXƒsƒAƒXƒ^ƒuAƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…
- ƒ\ƒjƒbƒNƒuƒ[AƒOƒŠƒ€ƒgƒD[ƒX ‚È‚Ç‚ÌŽÀ‘••ÏX
-
- ƒiƒp[ƒ€ƒr[ƒgAƒ\ƒEƒ‹ƒXƒgƒ‰ƒCƒNA
- ƒtƒ@ƒCƒ„[ƒ{ƒ‹ƒgAƒR[ƒ‹ƒhƒ{ƒ‹ƒgAƒ‰ƒCƒgƒjƒ“ƒOƒ{ƒ‹ƒgAƒA[ƒXƒXƒpƒCƒNA
- ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_[ ‚È‚Ç‚ð’ljÁŽÀ‘•
- i‘S‚ÄA”͈ÍUŒ‚‚âƒXƒe[ƒ^ƒXˆÙí‚È‚Ç‚Í–¢ŽÀ‘•j
-
- pc.c/pc.h
- 0213‚Ì•ÏX‚ð‚È‚©‚Á‚½‚±‚Æ‚É‚µ‚½
- pc_attack_mob()‚ÌC³AŒvŽZ‚Íbattle_calc_weapon_attack()‚É”C‚¹A
- ‚»‚ÌŒvŽZŒ‹‰Ê‚ð“K—p‚·‚邾‚¯‚É•ÏX
- clif.c/clif.h
- clif_skill_fail(),clif_skill_damage(),clif_skill_damage2()’ljÁ
- ‚»‚ꂼ‚êŽg—pŽ¸”sAŽg—pƒGƒtƒFƒNƒgA‚«”ò‚΂µ•t‚«Žg—pƒGƒtƒFƒNƒg
- skill.c/skill.h
- 0213‚Ì•ÏX‚ð‚È‚©‚Á‚½‚±‚Æ‚É‚µ‚½iƒ_ƒ[ƒW”{—¦ŒvŽZ‚ª‚¨‚©‚µ‚¢j
- skill_castend_id()‚ÉSP/ZenyŠm”F‚ÆÁ”ï•”•ª‚ð’ljÁA
- Ží—ޕʂɈ—‚ð’ljÁB
- battle.c/battle.h
- V‹K’ljÁ
- •ŠíUŒ‚ŒvŽZ—p‚Ébattle_calc_weapon_attack(),
- –‚–@UŒ‚ŒvŽZ—p‚Ébattle_calc_magic_attack()‚ð—pˆÓ
- i‘o•û‚Æ‚àAMOB‚ÆPC—¼•ûŒvŽZ‰Â”\‚È‚Í‚¸j
- ƒtƒ@ƒCƒ‹‘‚₵‚·‚¬‚Æ‚¢‚¤ˆÓŒ©‚àc(Š¾)
-
-
-----------
-//0214 by ‚ê‚
-Eƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ª‚¨‚©‚µ‚©‚Á‚½‚Æ‚±‚ë‚ðC³B
-EƒXƒLƒ‹‚̈ꕔŽÀ‘•
- ƒoƒbƒVƒ…Eƒƒ}[ƒiƒCƒgEƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒOEƒsƒA[ƒX
- ƒXƒsƒAƒu[ƒƒ‰ƒ“EƒXƒsƒAƒXƒ^ƒuEƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…
- ƒ\ƒjƒbƒNƒuƒ[EƒOƒŠƒ€ƒgƒD[ƒX‚È‚Ç‚Å‚·B
-
- “K“–‚È‚Ì‚Å‚Ç‚±‚©A•s‹ï‡‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
- ‚ ‚ÆAƒeƒXƒg‚à‚ ‚܂肵‚Ä‚Ü‚¹‚ñ‚Ì‚Å‚¨‚©‚µ‚¢‚Æ‚±‚낪‚ ‚Á‚½‚çC³‚ð‚¨Šè‚¢‚µ‚Ü‚·B
- ‘¼‚É‚à–â‘肪‚ ‚Á‚½‚çŽè’¼‚µ‚ð‚¨Šè‚¢‚µ‚Ü‚·B
- •ÏX“à—e‚͈ȉº‚Ì’Ê‚è‚Å‚·B
-
- clif.c,clif.h
- clif_skill_damage()‚ð’ljÁ‚µ‚Ü‚µ‚½B
-
- pc.c,pc.h
- pc_attack_mob()‚̈ø”‚ðˆê‚’ljÁB
- ƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ª‚¨‚©‚µ‚©‚Á‚½‚̂ųí‚É“®ì‚·‚é‚悤‚ÉC³B
-
- skill.c
- ˆê•”ƒXƒLƒ‹‚ÌŽÀ‘•‚ð‚µ‚Ä‚Ý‚Ü‚µ‚½B
-
-
-----------
-//0213 by ‚ê‚
-E0208‚Ì—ƒRƒ}ƒ“ƒh‚Å‚µC³
- atcommand.c
- @item‚Ō”Žw’肪–³‚¢ê‡A“üŽèŒÂ”‚ð‚PŒÂ‚É‚·‚é‚悤‚É‚µ‚½B
- @item‚ÅID‚ÌŽw’肪–³‚¢ê‡AƒAƒCƒeƒ€‚ð“üŽè‚µ‚Ä‚½‚±‚Æ‚É‚È‚Á‚Ä
- ‚¢‚½‚Ì‚ðC³
- itemdb.c
- item_db.txt‚ÅSell‚Ì€–Ú‚ð“X”„‚è‚Ì’l’i‚Æ‚µ‚Ä‚Ý‚½B
- item_db2.txt
- ŽŽ‚µ‚ɃJ[ƒh‚⃌ƒAƒAƒCƒeƒ€‚Ì“X”„‚艿Ši‚ð’l’i‚ð–{ŽI‚Ì‘Šê‚É‚µ
- ‚Ä‚Ý‚½‚à‚ÌBŽg—p‚·‚éꇂÍitem_db.txt‚Æ·‚µ‘Ö‚¦‚Ä‚‚¾‚³‚¢B
-
-
-----------
-//0208 by nabe
-
-E—ƒRƒ}ƒ“ƒhŽÀ‘•B
- atcommand.h,atcommand.c
- ‚Ù‚ÚI-Athena‚Ì—ƒRƒ}ƒ“ƒh‘Š“–‚Å‚·‚ªA@GM‚ÆPVP‚Í–¢ŽÀ‘•‚Å‚·B
- help.txt‚à“¯«‚µ‚Ä‚¢‚Ü‚·B
- GMiƒAƒJƒEƒ“ƒgID704554`704583jê—p‚É‚·‚é‚É‚ÍA
- atcommand.c‚ÌŠY“–•”•ª‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ‚µ‚ĉº‚³‚¢B
- clif.h,clif.c
- clif_displaymessage()
- clif_GMmessage()
- clif_heal()
- clif_resurrection()
- clif_pvpon()
- clif_pvpset()
- clif_refine()
- ‚ð’ljÁ‚µ‚Ü‚µ‚½B
- clif_parse_GlobalMessage()“à‚Åatcommand()‚ðŒÄ‚ñ‚Å‚¢‚Ü‚·B
-
-E‚¿‚å‚Á‚Æ‚¾‚¯C³B
- script.c
- {buildin_openstorage,"openstorage","s"},
- ‚©‚ç
- {buildin_openstorage,"openstorage",""},
- ‚ÉC³‚µ‚Ü‚µ‚½B
-
-
-----------
-//0206 by ŒÓ’±—–
-EƒXƒLƒ‹ƒcƒŠ[/ƒXƒLƒ‹Žg—p‹@\‚ÌŽÀ‘•
- mmo.h
- MAX_SKILL‚ð‘‚₵‚½
- char2.c
- mmo_char_fromstr()
- mmo_charstatus‚Ìskill‚̃Cƒ“ƒfƒbƒNƒX‚ɃXƒLƒ‹”Ô†‚ðŽg‚¤‚悤‚É‚µ‚½
- =>ƒXƒLƒ‹‚ÌŒŸõ‚‘¬‰»‚Ì‚½‚ßi‚©‚í‚è‚Ƀƒ‚ƒŠŽg—p—Ê‚ª‘‚¦‚éj
- pc.h/pc.c
- pc_skillup(),pc_calc_skilltree()’ljÁ
- pc_checkskill()•ÏXiƒCƒ“ƒfƒbƒNƒX‚ðƒXƒLƒ‹”Ô†‚Éj
- pc_readdb()‚Åskill_db.txt‚à“ǂނ悤‚É‚µ‚½
- pc_authok()‚Åcast_timer‚ð‰Šú‰»‚·‚é‚悤‚É‚µ‚½
- pc_calcstatus()‚Åpc_calc_skilltree()‚Æclif_skillinfoblock()‚ð
- ŒÄ‚Ԃ悤‚É‚µ‚½
- clif.c/clif.h
- clif_skillinfoblock(),clif_skillcasting(),
- clif_skillup()‚ð’ljÁ
- clif_parse_SkillUp(),clif_parse_UseSkillToId(),
- clif_parse_UseSkillToPos()‚ðŽÀ‘•
- skill.h/skill.c
- ƒtƒ@ƒCƒ‹’ljÁ(map/)
- map.h
- struct map_session_data‚Écast_*‚ð’ljÁ
- skill_db.txt
- ƒtƒ@ƒCƒ‹’ljÁ(db/)
- (I-Athena0200‚Ìskill_info2.txt‚ðƒRƒ“ƒo[ƒg‚µ‚½‚à‚Ì)
- (ƒXƒLƒ‹Žg—p•”•ªŠJ”ŽÒŒü‚¯î•ñ)
- ƒXƒLƒ‹‚ÌŒø‰Ê‚ðŽÀ‘•‚·‚éꊂÍskill.c‚Ì
- skill_castend_id(),skill_castend_pos()‚Å‚·B
- ƒ^[ƒQƒbƒg‚âŽg—pƒXƒLƒ‹‚Í sd->cast_* ‚©‚瓾‚Ü‚·
- ƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚Ö‚Í skill_get_* ‚ŃAƒNƒZƒX‚µ‚Ä‚‚¾‚³‚¢
- ¡ŒãAƒLƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚àƒf[ƒ^ƒx[ƒX‚É“ü‚ê‚é—\’è
-
-----------
-//0205 by nabe
-
-Estorage.c‚̃oƒOƒtƒBƒNƒXB
-E‘qŒÉƒf[ƒ^‚ðAƒ}ƒbƒvŽI‹N“®Žž‚É“Ç‚ÝAƒ}ƒbƒvŽII—¹Žž‚É‘‚‚悤‚É•ÏXB
- storage.h,storage.c
- storage_init()‚ðdo_init_storage()‚ɉü–¼B
- storage_save()‚ðdo_final_storage()‚ɉü–¼B
- fclose‚ð–Y‚ê‚Ä‚¢‚½‚Ì‚ð’ljÁB
- map.c
- #include "storage.h"‚ð’ljÁB
- do_final()‚Édo_final_storage()‚ð’ljÁB
- do_init()‚Édo_init_storage()‚ð’ljÁB
-
-----------
-
-//0203(unofficial) by ‚È‚Ý
-
-item_db.txt‚Ì‘‚«Š·‚¦‚Ì‚Ý‚Å‚·B
-
-EƒAƒCƒeƒ€‚̉ñ•œ—Ê‚ð’ljÁ/•ÏX
- Ôƒ|[ƒVƒ‡ƒ“@@@@@@@@@HP 30- 44
- gƒ|[ƒVƒ‡ƒ“@@@@@@@@@HP 70- 89
- ‰©F‚¢ƒ|[ƒVƒ‡ƒ“@@@@@@@HP 175-234
- ”’‚¢ƒ|[ƒVƒ‡ƒ“@@@@@@@@HP 350-429
- ‚¢ƒ|[ƒVƒ‡ƒ“@@@@@@@@SP 40- 99
- Ô‚¢ƒn[ƒu@@@@@@@@@@HP 12- 19
- ‰©F‚¢ƒn[ƒu@@@@@@@@@HP 21- 29
- ”’‚¢ƒn[ƒu@@@@@@@@@@HP 80-111
- ‚¢ƒn[ƒu@@@@@@@@@@SP 15- 44
- ƒŠƒ“ƒS@@@@@@@@@@@@HP 12- 15
- ƒoƒiƒi@@@@@@@@@@@@HP 11- 16
- ƒuƒhƒE@@@@@@@@@@@@SP 10- 24
- ‚¢‚à@@@@@@@@@@@@@HP 11- 15
- ‚É‚@@@@@@@@@@@@@HP 70- 99
- ƒnƒ`‚Ì–¨@@@@@@@@@@@HP 72- 97 / SP 20- 59
- ƒ~ƒ‹ƒN@@@@@@@@@@@@HP 25- 34
- ƒLƒƒƒ“ƒfƒB@@@@@@@@@@HP 31- 74
- ƒXƒeƒBƒbƒNƒLƒƒƒ“ƒfƒB@@@@@HP 46-109
- ƒŠƒ“ƒSƒWƒ…[ƒX@@@@@@¦@HP 28- 32
- ƒoƒiƒiƒWƒ…[ƒX@@@@@@@@HP 27- 33
- ƒuƒhƒEƒWƒ…[ƒX@@@@@@@@SP 15- 39
- ƒjƒ“ƒWƒ“ƒWƒ…[ƒX@@@@@¦@HP 29- 32
- ƒJƒ{ƒ`ƒƒ@@@@@@@@@@@HP 14
- ƒyƒbƒgƒt[ƒh@@@@@@@@@HP 53- 83
- ‚æ‚Ä‚¢‚½ƒNƒbƒL[@@@@@@HP 80-177
- ‚ЂƂ‚¿ƒP[ƒL[@@@@@@@HP 251-359
- ‚ЂȂ ‚ç‚ê@@@@@@@@@@HP 175-234
- •H–Ý@@@@@@@@@@@@@HP 350-429
- ƒŒƒbƒhƒXƒŠƒ€ƒ|[ƒVƒ‡ƒ“@@¦@HP 30- 44
- ƒCƒGƒƒXƒŠƒ€ƒ|[ƒVƒ‡ƒ“@@¦@HP 175-234
- ƒzƒƒCƒgƒXƒŠƒ€ƒ|[ƒVƒ‡ƒ“@¦@HP 350-429
-@Œ»Ý‚ÌAthena‚Å‚ÍVIT‚âƒXƒLƒ‹‚É‚æ‚éƒ{[ƒiƒX‚͉Á–¡‚³‚ê‚Ü‚¹‚ñB
-@i“K—p‚·‚éꇂÍscript.c“à‚Ìbuildin_healŠÖ”‚ ‚½‚è‚É‚ÉŽè‚ð‰Á‚¦‚é•K—v‚ ‚èj
-@‚È‚¨A¦•t‚̃AƒCƒeƒ€‚̃f[ƒ^‚Í“K“–‚Å‚·B
-EŒÃ‚¢ƒJ[ƒh’Ÿ‚ðŽÀ‘•(UseScript)
-E‚»‚Ì‘¼C³
-@@‚ЂȂ ‚ç‚ê@@@@@@@@@@d—Ê‚È‚µ¨d—Ê0.1‚ÉC³
-@@•H–Ý@@@@@@@@@@@@@d—Ê‚È‚µ¨d—Ê0.1‚ÉC³
-@@ƒoƒ‹ƒ€ƒ“@@@@@@@@@@@d—Ê0.1S4•ÐŽèŒ•¨d—Ê100S0—¼ŽèŒ•‚ÉC³
-@‚È‚¨ASell‚Ì€–Ú‚Í‚ ‚邾‚¯–³‘Ê‚Á‚Û‚¢‚Ì‚Å‘S•”Á‚µ‚Ü‚µ‚½B
-
-----------
-
-//0202 by nabe
-
-EƒJƒvƒ‰‘qŒÉ‚Ìu“¯ˆêƒAƒJƒEƒ“ƒg‚È‚Ì‚É‹¤—L‚Å‚«‚È‚¢ƒoƒOv‚ð‰ü—Ç‚µ‚Ü‚µ‚½B
- ŠeƒLƒƒƒ‰‚É‘qŒÉƒf[ƒ^‚ðŽ‚½‚¹‚é‚Ì‚Í–³‘Ê‚ª‘½‚¢‹C‚ª‚·‚é‚Ì‚ÅA
- ƒAƒJƒEƒ“ƒgID‚ÅŠÇ—‚·‚é‚悤‚ÉŽd—l‚ð•ÏX‚µ‚Ü‚µ‚½B
- ‚‚¢‚Å‚ÉA‘qŒÉƒf[ƒ^‚Í‘S‚Ästorage.c‚Å‚Ü‚©‚È‚¢A
- charŽI‚ÍŠÖ—^‚µ‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B
- ‚±‚ê‚É”º‚¢Achar_athena.cnf,mmo.h,char2.c‚ÍŒ³‚É–ß‚µ‚Ü‚µ‚½B
- ‚Ü‚½A‘qŒÉƒtƒ@ƒCƒ‹–¼‚Ígstorage.txth‚ɌŒ肵‚Ä‚¢‚Ü‚·B
-
- ‰ü•ÏA’ljÁ‚µ‚½‚Ì‚ÍŽŸ‚̃tƒ@ƒCƒ‹‚Å‚·B
- map/storage.h,
- map/storage.c,
- map/clif.h,//ˆø”•ÏX‚¾‚¯
- map/clif.c,//ˆø”•ÏX‚¾‚¯
- conf/char_athena.cnf,//Œ³‚É–ß‚µ‚½‚¾‚¯
- common/mmo.h,//Œ³‚É–ß‚µ‚½‚¾‚¯
- char/char2.c,//Œ³‚É–ß‚µ‚½‚¾‚¯
- map/itemdb.h,//itemdb_equippoint()ˆø”錾•ÏX‚¾‚¯
- map/itemdb.c,//itemdb_equippoint()ˆø”錾•ÏX‚¾‚¯
- map/pc.c,//itemdb_equippoint()ˆø”錾•ÏX‚¾‚¯
-
-----------
-
-//0201 by nabe
-
-EƒJƒvƒ‰‘qŒÉ‚ðŽÀ‘•‚µ‚Ü‚µ‚½B
-
- ƒXƒNƒŠƒvƒg‚©‚çŒÄ‚Ño‚·‚É‚ÍAƒXƒNƒŠƒvƒg“à‚Å
- openstorage;
- ‚Æ‚µ‚Ä‚‚¾‚³‚¢B
- ƒTƒ“ƒvƒ‹‚Æ‚µ‚Änpc_kafraJ.txt‚ð•t‚¯‚Ä‚ ‚è‚Ü‚·B
- •¹‚¹‚Änpc_script3J.txt‚ÌŠY“–•”•ª‚à‰ü•Ï‚µ‚Ü‚µ‚½B
-
- char_athena.cnf‚Ì
- stor_txt:
- ‚Å‘qŒÉƒtƒ@ƒCƒ‹–¼‚ðŽw’肵‚Ä‚¢‚Ü‚·B
-
- ‰ü•ÏA’ljÁ‚µ‚½‚Ì‚ÍŽŸ‚̃tƒ@ƒCƒ‹‚Å‚·B
- map/Makefile,
- map/storage.c,
- map/storage.h,
- map/clif.c,
- map/clif.h,
- map/script.c,
- char/char2.c,
- common/mmo,h
- Ú‚µ‚‚ÍAã‹Lƒtƒ@ƒCƒ‹‚̃Rƒƒ“ƒg‚È‚Ç‚ðŽQl‚É‚µ‚Ä‚‚¾‚³‚¢B
-
-EƒJƒvƒ‰‘qŒÉŽÀ‘•‚É”º‚¢Amap_athena1.cnf‚ð‚µ‘‚«Š·‚¦‚Ü‚µ‚½B
-
-E‘S‚ẴRƒƒ“ƒg•¶‚ðEUC‚©‚çSJIS‚É•ÏŠ·‚µ‚Ü‚µ‚½B
-
-----------
-
- Athena Dev. v2.1.1 Released: Middle July, 2003
- (c) 2003 Athena Project.
- http://project-yare.de/
-
-1. Athena(ƒAƒeƒi)‚ɂ‚¢‚Ä
-2. ‚±‚̃ŠƒŠ[ƒX‚ɂ‚¢‚Ä
-3. •K—v‚È•¨
-4. Žg‚¢•û
-5. Œ»Ý‚ÌŽd—l
-6. jŽ«
-7. –ÆÓŽ–€
-8. •åW
-9. English
-
-
-1. ƒAƒeƒi‚ɂ‚¢‚Ä
- ƒAƒeƒi‚Æ‚Í2003”N1ŒŽ”¼‚΂ɂł½0052.lzh‚ðƒx[ƒX‚Æ‚µ‚Äì‚ç‚ê‚Ä‚¢‚éƒGƒ~ƒ…ƒŒ[ƒ^‚̈ê‚‚ł·B
- Šî–{“I‚ȃ‰ƒCƒZƒ“ƒX‚̓IƒŠƒWƒiƒ‹‚ªGPL‚̉º‚É”z•z‚³‚ê‚Ä‚¢‚éˆ×A
- ‚±‚ê‚É]‚¢GPL‚̉º”z•z‚ð‹–‰Â‚µ‚Ü‚·B
- /*
- ‰ü—ǔłð”z•z‚·‚éꇂ͕K‚¸‚±‚ÌREADME‚ð‘‚«Š·‚¦‚Ä‚‚¾‚³‚¢B
- ‰½ˆ‚ð‰ü—Ç‚µ‚½‚Ì‚©•ñ(athena@project-yare.de‚Ü‚Å)‚µ‚ĖႦ‚é‚Æ•‚©‚è‚Ü‚·B
- ƒoƒCƒiƒŠ‚Ì‚Ý‚Ì”z•z‚ÍGPLˆá”½‚Å‚·‚Ì‚Å"•K‚¸"ƒ\[ƒX‚à“Y•t‚µ‚Ä‚‚¾‚³‚¢B
- */
- “®ì‚ÌŠm”F‚͈ȉº‚Ì’Ê‚è‚Ì‚Ýs‚Á‚Ä‚¢‚Ü‚·B
- // ‚½‚¾‚µŠ®àø‚É“®‚Ž–‚ð•ÛØ‚·‚é‚à‚Ì‚Å‚ ‚è‚Ü‚¹‚ñ
- ‘ÎÛCPU: Intel PentiumŒn // PentiumIIˆÈã‚ÅŠm”F.
- FreeBSD 4.8R, 4.6.2R
- Linux RedHat 7.3
- cygwin + gcc 3.2 20020927 (prerelease)
- ŠJ”Œ³URL: http://project-yare.de/
-
-
-2. ‚±‚̃ŠƒŠ[ƒX‚ɂ‚¢‚Ä
- ¡‰ñ‚̃ŠƒŠ[ƒX‚Í‘O‰ñ(V2.1)“¯—lŠJ””ł̃ŠƒŠ[ƒX‚Ì‚Ý‚Å‚·B
- 2.1‚É”ä‚׉º‹L‚Ì“_‚ªC³‚³‚ê‚Ä‚¢‚Ü‚·B
- map‚̃fƒtƒHƒ‹ƒgݒ肪ŠØ‘data.grf‚̂ݳí‚É“®ì‚·‚é‚悤‚É‚È‚Á‚Ä‚¢‚½“_
- common/timer.c‚âmap/script.c‚ÌŠô‚‚©‚̃oƒO
-
- v‘¬‚ÉUpdate‚ð‹‚„§‚·‚é‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªŠeŽ©‚Ì”»’f‚Ås‚Á‚ĉº‚³‚¢B
-
-
-3. •K—v‚È•¨
- data.grf //sdata.grf‚Í•K—v‚ɉž‚¶‚Ä
- account.txt //‘¶Ý‚µ‚È‚¢ê‡athena.sh‚ªŽ©“®¶¬‚µ‚Ü‚·
- conf/*.cnf //Map—p‚ÆChar—p‚Ì“ñŽí—Þ‚ ‚è‚Ü‚·
- conf/npc*.txt //npcÝ’è—pƒtƒ@ƒCƒ‹‚Å‚·B•¡”‚̃tƒ@ƒCƒ‹‚É•ª‚¯‚邱‚Æ‚ª‰Â”\‚Å‚·B
- db/*.txt //ƒAƒCƒeƒ€Ajobî•ñ‚È‚Ç
-
-
-4. Žg‚¢•û
- > tar xvfz athena-d?.?.tar.gz
- > cd athena-d?.?.tar.gz
- > make
- > vi conf/char_athena.cnf //IP(127.0.0.1)‚Ì•”•ª‚ðŠÂ‹«‚ɇ‚킹‚Ä•ÏX‚µ‚Ä‚‚¾‚³‚¢
- > vi conf/map_athena.cnf //“¯ãA‚Ü‚½mapÝ’è‚È‚Ç‚ÍA‚±‚̃tƒ@ƒCƒ‹‚Ås‚¢‚Ü‚·B
- > ./athena.sh
- ã‹L‚ðs‚¦‚Î"‚½‚Ô‚ñ"‹N“®‚µ‚Ü‚·B
-
- •â‘«:
- conf/npc_sampleJ.txt‚ɂ̓XƒNƒŠƒvƒg‚Ì‘‚«•û‚ɂ‚¢‚ÄFX‚Èà–¾‚ª‹LÚ‚³‚ê‚Ä‚¢‚Ü‚·B
- ‚à‚µA“ÆŽ©‚ÌMapÝ’è‚ðs‚Á‚Ä‚Ý‚½‚¢l‚âAƒXƒNƒŠƒvƒg‚ð˜M‚肽‚¢•û‚ÍŽQl‚É‚µ‚Ä‚‚¾‚³‚¢B
- ‚½‚¾‚µAŠJ”’†‚Ì‚½‚߃XƒNƒŠƒvƒg‚ÌŽd—l‚ª•ÏX‚³‚ê‚é‰Â”\«‚ª‚‚¢‚Å‚·B
- command.txt‚É‚ÍŽÀ‘•Ï‚Ý‚Ì“ÁŽêƒRƒ}ƒ“ƒh‚ɂ‚¢‚Ä‚Ìà–¾‚ð‹LÚ‚µ‚Ä‚¢‚Ü‚·B
-
-
-5. Œ»Ý‚ÌŽd—l
- –{ŽI‚Æ”ä‚ׂè‚©‚µ‚¢(—Ⴆ‚΃vƒo‚ª•à‚Aƒ|ƒŠƒ“‚ªƒAƒCƒeƒ€‚ðE‚í‚È‚¢‚È‚Ç)“_‚ÍA
- ‘S‚ÄŒ»ÝŠJ”’†‚Ɉö‚é‚à‚Ì‚Å‚·B
- Œ»ó‚Æ‚µ‚ăLƒƒƒ‰ƒNƒ^Œn‹y‚у‚ƒ“ƒXƒ^[Œn‚̃oƒO•ñ‚Í–³Ž‹‚³‚ê‚é‰Â”\«‚ª‚‚¢‚Å‚·B
-
- ƒoƒO•ñ‚ɂ‚¢‚Ä•K‚¸”¶ðŒ‚ð‚¨‘‚«‰º‚³‚¢B
- ‰º‚É‚ ‚é•ñ—pƒeƒ“ƒvƒŒ[ƒg‚ðŽg‚Á‚Ä•ñ‚µ‚Ä’¸‚‚Æ•‚©‚è‚Ü‚·B
- •ñæ‚̓Gƒ~ƒ…”‚̊J”ƒXƒŒ‚É‚Å‚àB
- ---- Athena v 2.0 (stable or develop) ----
- ygcc verzgcc -v‚ðŽÀsŽž‚É•\Ž¦‚³‚ê‚é“à—e
- y“®ìƒVƒXƒeƒ€zFreeBSD, Linux(ƒfƒBƒXƒgƒŠƒrƒ…[ƒWƒ‡ƒ“‚à), cygwin‚È‚Ç
- y”¶“à—ezmap‚ª—Ž‚¿‚Ä‚µ‚Ü‚Á‚½Žž‚Ì•\Ž¦‚³‚ê‚Ä‚¢‚½ƒfƒoƒbƒOî•ñ‚È‚Ç‹ï‘Ì“I‚É‘‚¢‚Ä‚‚¾‚³‚¢B
- y‘€ì“à—ez‹ï‘Ì“I‚É‚Ç‚ñ‚È‘€ì‚ðs‚Á‚½‚©‚ð‘‚¢‚Ä‚‚¾‚³‚¢B
- ------------------ END -------------------
- —‘z‚̓eƒ“ƒvƒŒ‚ɉÁ‚¦‚Ämap.core‚È‚Çcoreƒtƒ@ƒCƒ‹‚ðUploader‚ɃAƒbƒv‚µ‚Ä’¸‚‚±‚Æ‚Å‚·‚ª
- –â‘è‚ÌMap‚¾‚¯‚Ìó‘Ô‚É‚µcore‚Ì“f‚—e—Ê‚É’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B
- /*
- Šm”F‚µ‚½ŒÀ‚è‚Å‚Í324ŒÂ‚Ù‚Çmapƒf[ƒ^‚ð“Ç‚Ýž‚Ü‚¹‚é‚ÆA
- 40MB‹ß‚¢coreƒtƒ@ƒCƒ‹‚ð“f‚«o‚µ‚Ü‚· @FreeBSD
- cygwin‚ÌꇂÍstackdump‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚É‚È‚é‚»‚¤‚Å‚·B
- ‚µ‚©‚µAcoreƒtƒ@ƒCƒ‹‚È‚Ç‚ðgzipˆ³k‚È‚Ç‚·‚ê‚Α啂ɬ‚³‚‚È‚è‚Ü‚·B
- ‘å–}30MB‚Ìcoreƒtƒ@ƒCƒ‹‚ª2.9MB‚Ù‚Ç‚É‚È‚é‚悤‚Å‚·B
- ‚Å‚·‚Ì‚ÅA‚à‚µƒAƒbƒvƒ[ƒh‚·‚éꇂÍgzipˆ³k‚È‚ÇŠeŽ©s‚Á‚Ä‚‚¾‚³‚¢B
- */
-
- ¡‰ñ‚̃ŠƒŠ[ƒX‚¾‚¯‚Å‚È‚HISTORY‚ð쬂·‚é‚Æ‘å—Ê‚É‹Lq‚ª•K—v‚Ȉ×È—ª‚µ‚Ä‚¢‚Ü‚·B
- // ‘½‚¢“ú‚¾‚Æ–{“–‚ÉŒ‹\‚ ‚è‚Ü‚·‚Ì‚ÅddB
-
-
-6. jŽ«
- ¡‰ñ‚±‚ÌAthenaŠJ””Å‚ðo‚·‚É“–‚½‚Á‚ÄŠ´ŽÓ‚µ‚½‚¢•ûX(‡”Ô•s“¯)
- LemmingŽ (Project YARE)
- 0052Ž (Uploader)
- 35Ž (ƒGƒ~ƒ…ŠJ”ƒXƒŒ)
- Johan LindhŽ(Author of memwatch)
- YARE forum‚ÌNPCî•ñ‚ð쬂µ‚½•ûX
- weissŒ¤‹†‰ïBBS‚Ì—lX‚Èî•ñƒtƒ@ƒCƒ‹‚ð쬂µ‚½•ûX
- ÅŒã‚ÉA.coreƒtƒ@ƒCƒ‹’B
-
-
-7. –ÆÓŽ–€
- Athena Project‚͈êØAthena‚Ì“®ì‚ÉŠÖ‚·‚é•ÛØ“™‚Ís‚¢‚Ü‚¹‚ñB
- ‚‚܂èAAthena‚Í–³•ÛØ‚Å‚·B
- athena@project-yare.de‚É“®ìE‘€ì“™‚ÉŠÖ‚·‚鎿–â‚È‚Ç‚ð‘—‚ç‚ê‚Ä‚àˆêØ‚¨“š‚¦‚Å‚«‚Ü‚¹‚ñB
- –”Athena‚ð—p‚¢‚½‚±‚Æ‚É‚æ‚趂¶‚½”íŠQE–â‘è“™‚ÌÓ”C‚͈êØAthena Project‚Í•‰‚¢‚Ü‚¹‚ñB
-
-
-8. •åW
- athena‚ÌŠJ”‚ÉŽQ‰Á‚µ‚½‚¢//‹»–¡‚ª‚ ‚é‚Æ‚¢‚¤•û‚²˜A—‰º‚³‚¢B
- ‰äX‚Í‹M•û‚ÌŽQ‰Á‚ð‚¨‘Ò‚¿‚µ‚Ä‚¢‚Ü‚·B
- // ÅV”Å‚ª—~‚µ‚¢‚¾‚¯‚ʼn½‚狦—Í‚µ‚Ä’¸‚¯‚È‚¢‚Æ‚¢‚¤•û‚Í‚¨’f‚è‚Å‚·;-)
- [•åW—v€: ƒvƒƒOƒ‰ƒ}(2-3l)]
- ”N—î: •s–â
- «•Ê: •s–â
- Œ¾Œê: “ú–{Œê‚ª—‰ð‰Â”\
- “à—e: CŒ¾Œê‚à‚µ‚‚ÍC++‚É‚æ‚éŠJ”B(“Á‚Ƀlƒbƒgƒ[ƒN‚âDB‚ÌŒoŒ±‚ª—L‚é•û‘å•åW!)
- [•åW—v€: –|–ó(?l)]
- ”N—î: •s–â
- «•Ê: •s–â
- Œ¾Œê: “ú–{ŒêA‰pŒê‚ª—‰ð‰Â”\
- “à—e: •§—–¼ŒêA“ƈíŒêA¼”ljåŒêAˆÉ‘¾—˜ˆŸŒêA‘×(ƒ^ƒC)ŒêA’©‘NŒêA’†‘Œê‚Ö•¶Œ£AƒTƒCƒg‚È‚Ç‚Ì–|–ó
- ˜A—æ: athena@project-yare.de ŽG–±’S“–‚Ü‚ÅB
-
-
-9. English
- This release is just fixed some bugs in timer.c, script.c and map_athena1.conf.
-
-
-(c) 2003 Athena Project.
+-------------------- +//1032 by (“Ê) +E1031‚ʼn½ŒÌ‚©íœ‚³‚ê‚Ä‚¢‚½buildin_getitemname()‚𕜊ˆ +EƒoƒOƒXƒŒ‚È‚Ç‚Éo‚½C³‚𔽉f +E‚»‚Ì‘¼×‚©‚¢C³ + + (map/) + clif.c + clif_disp_onlyself() NULLƒ`ƒFƒbƒN’ljÁ + map.c + map_nick2sd() nick‚ªNULL‚¾‚Æ‚·‚®NULL‚ð•Ô‚·‚悤‚É•ÏX + mob.c + mob_setdelayspawn() NULLƒ`ƒFƒbƒN•ÏX + mob_delete() C³ + npc.c + npc_parse_warp() C³ + script.c + buildin_getitemname() •œŠˆ + +---------------------------------------- +//1031 by huge +ENPC‚Ìscript‚ÉAmakepet‚ð’ljÁB + makepet —‘ID; ‚ÅAƒyƒbƒg‚ð쬂µ‚Ü‚·B +ENPC‚Ìscript‚ÉAgetexp‚ð’ljÁB + getexp Base,Job; ‚ÅA‚»‚ꂼ‚ê‚ÌŒoŒ±’l‚ð‘‚₵‚Ü‚·B +Eƒyƒbƒg‚Ì—‘‚ðNPC‚Ìdelitem‚ÅÁ‚µ‚½‚èshop‚Å”„‚Á‚½ŽžAƒyƒbƒgƒZ[ƒuƒf[ƒ^‚©‚ç휂·‚é‚悤C³B +EƒfƒBƒ{[ƒVƒ‡ƒ“¬Œ÷ðŒC³B(–¢Šm”F) +EŒoŒ±’l•\Ž¦‚ð‰Â”\‚É‚µ‚Ä‚Ý‚Ü‚µ‚½Bconf‚É‚Äݒ肵‚Ä‚‚¾‚³‚¢B + + (conf/) + battle_athena.conf C³ + (doc/) + conf_ref.txt C³ + script_ref.txt C³ + (map/) + battle.c + battle.h + disp_experience ’ljÁ + clif.c + clif.h + clif_disp_onlyself() ’ljÁ + pc.c + pc_gainexp() C³ + script.c + buildin_delitem() C³ + buildin_makepet() ’ljÁ + buildin_getexp() ’ljÁ + npc.c + #include C³ + npc_selllist() C³ + skill.c + skill_castend_nodamage_id() C³ + + +-------------------- +//1030 by (“Ê) +Emap_athena.conf‚ÉV¥“‡ƒUƒƒC‚ðƒRƒƒ“ƒgƒAƒEƒg‚µ‚ĒljÁ +EƒNƒ[ƒ“ƒXƒLƒ‹‚ÅŠo‚¦‚½ƒXƒLƒ‹‚ðŽ©“®ƒZ[ƒu‚²‚Æ‚É–Y‚ê‚Ä‚¢‚½‚Ì‚Å‚Æ‚è‚ ‚¦‚¸ƒƒOƒIƒtŽž‚É‚Ì‚Ý–Y‚ê‚é‚悤‚É•ÏX‚µ‚½‚‚à‚è +Emobskill_castend_pos‚Ì–³ŠQnullpoƒ`ƒFƒbƒN‚ð•ÏX +EEmotion‚Ìݒ肪‚È‚¢Mob‚ªƒXƒLƒ‹‚ðŽg—p‚·‚é‚Æ‚«‚É/!‚ðo‚µ‚Ä‚¢‚½‚Ì‚ðC³ +EƒoƒOƒXƒŒ‚É“Š‚°‚½trade.c‚ð“Y•tB‚Æ‚è‚ ‚¦‚¸‘ŠŽè‚ªŠŽ‚Å‚«‚éŽí—Þ‚ÌŒÀŠE‚ð’´‚¦‚½ê‡‚Í“n‚³‚¸‚ÉŒ³‚É–ß‚·‚悤‚É•ÏX + + (conf/) + map_athena.conf ƒUƒƒC’ljÁ + (doc/) + client_packet.txt ƒpƒPƒbƒg’·‚ÌXV + (map/) + map.c + map_quit() I—¹Žž‚ɃNƒ[ƒ“ƒXƒLƒ‹‚ÅŠo‚¦‚½ƒXƒLƒ‹‚ð–Y‚ê‚é‚悤‚É•ÏX + mob.c + mobskill_castend_pos() nullpoƒ`ƒFƒbƒN•ÏX + mob_readskilldb() C³ + pc.c + pc_makesavestatus() ƒNƒ[ƒ“ƒXƒLƒ‹‚ð–Y‚ê‚é‚Ì‚ðmap_quit‚É”C‚¹‚½ + trade.c + trade_tradecommit() ŠŽ‚Å‚«‚éŽí—ÞˆÈã‚ðŽæˆø‚µ‚½ê‡‚ɃAƒCƒeƒ€‚ªÁ‚¦‚È‚¢‚悤‚É + +-------------------- +//1029 by (“Ê) +E20040619RagexeHC_jp.rgz‚Ì0x204‚Æ0x20bƒpƒPƒbƒg‚ɑΉž +Echar‚Ælogin‚à’m‚ç‚È‚¢ƒpƒPƒbƒg‚ª—ˆ‚½‚çƒpƒPƒbƒgƒ_ƒ“ƒv‚ðo—Í‚·‚é‚悤‚Éclif.c‚©‚çƒRƒsƒy + + (doc/) + client_packet.txt VƒpƒPƒbƒg’ljÁ + (char/) + char.c + parse_char() 0x20b‘Ήž + (login/) + login.c + parse_login() 0x204‘Ήž + +-------------------- +//1028 by (“Ê) +EƒEƒ“ƒoƒ‰ˆÈ~AMob‚ªƒXƒLƒ‹‚ðŽg—p‚·‚é‚Æ‚«‚ɃGƒ‚[ƒVƒ‡ƒ“‚ðo‚·‚悤‚É‚È‚Á‚½‚Ì‚ÅAmob_skill_db‚ðŠg’£ + ƒTƒ“ƒvƒ‹‚ŃI[ƒNƒEƒH[ƒŠƒA[‚ª‹i‰Œ‚·‚é‚Æu/cv‚ðo‚·‚̂ƃI[ƒNƒŒƒfƒB‚ª‘¬“x‚ðŽg‚¤‚Æu/‚¿‚ãv‚ðo‚µ‚Ü‚· +EƒAƒCƒeƒ€682,683‚ðŽg—p‚·‚é‚Æ30•bŠÔATK‚âMATK‚ª‘‚¦‚é‚炵‚¢‚Ì‚Å‚»‚ê‚Á‚Û‚ +Ejob_db2.txt‚É“ä‚Ìs‚ª2s‚ ‚Á‚½‚Ì‚ðíœ +E”͈͖‚–@‚ȂǂŃXƒLƒ‹ƒ†ƒjƒbƒg‘ŠŽè‚ɃXƒe[ƒ^ƒX•ÏX‚ð‚©‚¯‚悤‚Æ‚µ‚½ê‡‚Énullpo‚ªo‚½‚Ì‚ðC³ + + (db/) + const.txt SC_INCATK SC_INCMATK’ljÁ + item_db.txt ª‚ð682,683‚ɒljÁ + job_db2.txt “ä‚Ì2s‚ðíœ + mob_skill_db.txt Emotion’ljÁ + (map/) + mob.c + mobskill_use() ƒXƒLƒ‹Žg—pŽž‚ɃGƒ‚[ƒVƒ‡ƒ“‚ðo‚·‚悤‚É•ÏX + mob_readskilldb() Emotion‚ð“Ç‚Ýž‚ނ悤‚É•ÏX + mob.h •ÏX + pc.c + pc_calcstatus() •ÏX + skill.c + + skill_status_change_end() •ÏX + skill_status_change_start() •ÏX‚ÆNULLƒ`ƒFƒbƒNC³ + skill.h •ÏX + +-------------------- +//1027 by Ni+S +EgetitemnameŠÖ”’ljÁ +EƒXƒNƒŠƒvƒg‚ÉgetitemnameŠÖ”‚ð’ljÁ +Eitemid‚æ‚èAjname‚𕶎š—ñ‚Å•Ô‚µ‚Ü‚· +EÚ‚µ‚‚Íscript_ref.txt‚ÅB + + script.c + getitemname()’ljÁ + +---------------------------------------- +//1026 by (“Ê) +E1023‚Å“ü‚ê‚Ä‚È‚©‚Á‚½clif.h‚𓯫 +EƒoƒCƒIƒvƒ‰ƒ“ƒg‚ƃXƒtƒBƒA[ƒ}ƒCƒ“‚Åo‚µ‚½mob‚ð“|‚·‚Æmob_timer_delete()‚Ånullpo‚ªo‚é–â‘è‚ð‰ðŒˆ‚µ‚½‚‚à‚è +EƒoƒO•ñƒXƒŒƒbƒh part6 >>63 Dest‚³‚ñ‚Ìscript.cC³‚ðŽæ‚èž‚Ý + + (map/) + clif.h •ÏX + map.h •ÏX + mob.c + mob_changestate() •ÏX + skill.c + skill_castend_pos2() •ÏX + mob_spawn() •ÏX + do_init_mob() add_timer_func_list‚Émob_timer_delete‚ª–³‚©‚Á‚½‚̂ŒljÁ‚µ‚Ä‚Ý‚½ + script.c + script_load_mapreg() •ÏX + +------------------------ +//1025 by Sel +Eƒ[ƒhƒiƒCƒg‚̃Wƒ‡ƒu•â³‚ªŠÔˆá‚Á‚Ä‚¢‚½‚Ì‚ðC³ +EƒI[ƒ‰ƒuƒŒ[ƒhŒø‰ÊŽžŠÔ‚ðC³ +EƒI[ƒ‰ƒuƒŒ[ƒh•Ší§ŒÀ‚ð‘fŽèˆÈŠO‘S‚Ä‚ÉC³ +EƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“•Ší§ŒÀ‚𗼎葄‚Ì‚Ý‚©‚ç•ÐŽè‘„+—¼Žè‘„‚ÖC³ +EƒgƒDƒ‹[ƒTƒCƒgŒø‰ÊŽžŠÔ‚ðC³ +Eƒtƒ@ƒ‹ƒRƒ“ƒAƒTƒ‹ƒg•Ší§ŒÀ‚ð‰ðœA‘fŽè‚ðŠÜ‚ß‚½‘S‚Ä‚ÅŽg—p‰Â”\‚É + + (db/) + job_db2-2.txt •ÏX + skill_cast_db.txt •ÏX + skill_require_db.txt •ÏX +-------------------- +//1024 by mare +Eƒtƒ@[ƒ}ƒV[Þ—¿‚Ì•ÏXA»‘¢‰Â”\–ò•i‚̒ljÁ + 6/8“ú–{ŽI‚É‚«‚½‚à‚Ì‚Æ“¯‚¶‚É‚µ‚Ü‚µ‚½ + + (db/) + produce_db.txt •ÏX + +---------------------------------------- +//1023 by (“Ê) +E1022‚ŃGƒ“ƒoƒO‚µ‚½npc_parse_script()‚ð–ß‚µ +EƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX‚Ìd—ʒljÁƒ_ƒ[ƒWŒvŽZŽ®‚ð‚¿‚å‚Á‚Æ•ÏX +E–‚–@—Í‘•‚ÌŒvŽZŽ®‚ð‚¿‚å‚Á‚Æ•ÏX +Eƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX‚ªÀ‚Á‚ÄŽg‚¤‚Ì‚Å‚Í‚È‚Žg‚¤‚ÆÀ‚é‚Æ‚¢‚¤î•ñ‚ðŒ©‚©‚¯‚½‚Ì‚Å•ÏX +Eª‚É”º‚¢skill_require‚ÌsittingðŒ”pŽ~ +Eƒo[ƒT[ƒN‚ðGvG‚ÅŽg—p‚Å‚«‚È‚¢‚悤‚É•ÏX + + (db/) + skill_cast_db.txt •ÏX + skill_require_db.txt •ÏX + (doc/) + db_ref.txt C³ + (map/) + battle.c + battle_calc_pc_weapon_attack() •ÏX + clif.c + clif_sitting() ’ljÁ + clif_parse_ActionRequest() •ÏX + npc.c + npc_parse_script() C³ + pc.h •ÏX + pc.c + pc_calcstatus() •ÏX + pc_natural_heal_hp() •ÏX + pc_setstand() ’ljÁ + skill.c + skill_castend_nodamage_id() ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX‚ðŽg‚¤‚ÆÀ‚é‚悤‚É + skill_check_condition() ST_SITTING”pŽ~ + skill_use_id() ƒo[ƒT[ƒN‚ðGvG‚ÅŽg—p‚Å‚«‚È‚¢‚悤‚É + skill_status_change_timer() ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX‚Í10•b‚²‚Æ‚ÉSP‚ð12Á”ï + skill_status_change_start() ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX•ÏX + skill_readdb() sitting”pŽ~ + skill.h •ÏX + +-------------------- +//1022 by (“Ê) +ENULLƒ`ƒFƒbƒN•ÏX +Elogin,char,mapI—¹Žž‚ÉŠJ•ú‚³‚ê‚Ä‚¢‚È‚©‚Á‚½ƒƒ‚ƒŠ‚ð”÷–‚ÉŠJ•ú‚·‚é“w—Í‚ð‚µ‚Ä‚Ý‚½ +EƒXƒpƒmƒr”š—ô”g“®ŽÀ‘•AƒNƒŠƒeƒBƒJƒ‹+50 +EƒXƒpƒmƒrƒ{[ƒiƒX‚ð•ÏXAʼn‚©‚çˆê“x‚àŽ€‚ñ‚Å‚È‚¢JobLv70‚ÉAll+15ABaseLv99‚ÉMHP+2000 + + (doc/) + client_packet.txt S 01ed’ljÁ + (char/) + do_final() •ÏX + do_init() •ÏX + (login/) + do_final() ’ljÁ + do_init() •ÏX + (map/) + atcommand.c Dest‚³‚ñ‚Ì•ÏX‚ðŽæ‚èž‚Ý + battle.c “¯ã + chat.c NULLƒ`ƒFƒbƒN•ÏX + chrif.c NULLƒ`ƒFƒbƒN•ÏX + clif.c NULLƒ`ƒFƒbƒN•ÏX + clif_parse() •ÏX + clif_parse_sn_explosionspirits() ’ljÁ + clif_parse_sn_doridori() –¼‘O•ÏX + guild.c NULLƒ`ƒFƒbƒN•ÏX + intif.c NULLƒ`ƒFƒbƒN•ÏX + itemdb.c NULLƒ`ƒFƒbƒN•ÏX + map.c NULLƒ`ƒFƒbƒN•ÏX + do_final() •ÏX + mob.c NULLƒ`ƒFƒbƒN•ÏX + npc.c NULLƒ`ƒFƒbƒN•ÏX + npc_parse_script() bufŠJ•ú–Y‚êH‚ðŠJ•ú + party.c NULLƒ`ƒFƒbƒN•ÏX + path.c NULLƒ`ƒFƒbƒN•ÏX + pc.c NULLƒ`ƒFƒbƒN•ÏX + pc_calcstatus() ƒXƒpƒmƒr•ÏX + pet.c NULLƒ`ƒFƒbƒN•ÏX + storage.c NULLƒ`ƒFƒbƒN•ÏX + trade.c NULLƒ`ƒFƒbƒN•ÏX + vending.c NULLƒ`ƒFƒbƒN•ÏX + +-------------------- +//1021 by Kalen +Eƒvƒƒ“ƒeƒ‰Š¥¥•iNPC‚ɂă^ƒLƒV[ƒh”Ì”„ +EUmbala‚̃[ƒvŒ©’¼‚µ + D2F‚̃[ƒv‚ð–{ŽIŽg—p‚É•ÏXBd•¡ƒ|ƒCƒ“ƒgC³ +EUmbalaNPCC³ + ƒ‰ƒxƒ‹‚ðŽg—p‚µ‚È‚‚¢‚¢êŠ‚Í‹É—Ííœ(-) + ƒZ[ƒuƒ|ƒCƒ“ƒgC³ + ƒoƒ“ƒW[ƒWƒƒƒ“ƒv‘ä’ljÁ + Š[œ–å’ljÁ + •ª‰ðA‡¬ˆ—’ljÁ + ƒJƒvƒ‰AˆÄ“à—vˆõ‚ð‚ ‚é‚ׂ«êŠ‚ÖˆÚ“®B + ¦ˆê•”Emo‚ɂ‚¢‚ÄAŠà•ðŽ©g‚ª‹t‚ÉŽæ‚èˆá‚¦‚Ä‚¢‚é‚Ý‚½‚¢‚È‚Ì‚Å“ÆŽ©‚Å•Ï‚¦‚Ü‚µ‚½B + Œ©‚Ä‚à‚炦‚Εª‚©‚è‚Ü‚·‚ª18‚Æ28‚ð‹t‚É‚·‚é‚ÆNPC‚̉ï˜b“à—e‚ɇ‚¤Emo‚ªo‚½‚Ì‚Å + ƒNƒGƒXƒgƒtƒ‰ƒO‚ÌðŒ’ljÁ + @‚±‚ê‚É‚æ‚è‚·‚Å‚ÉI‚¦‚Ä‚¢‚éꇂłà“r’†‚É‚È‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B +EƒXƒpƒmƒr“]ENPC’ljÁ + “Ê‚³‚ñ‚̃ƒO‚ðŠî‚É쬂µ‚Ü‚µ‚½B +EƒAƒ‹ƒPƒ~ƒXƒgƒMƒ‹ƒh‚̃mƒr‚Ìꇂ̑ΉžC³(“Ê‚³‚ñ‚©‚ç‚̃ƒO‚æ‚è) +EŒ‹¥NPC’ljÁ + ‚½‚¾‚µA‚Ü‚¾ƒeƒXƒg’iŠK‚Å‚·B–â‘è“_‚ª‚ ‚邽‚ߌ‹¥•s‰Â”\‚Å‚·B + (/script) + (/warp) + npc_warp_umbala.txt + (/npc) + (/town) + npc_town_umbala.txt + npc_town_kafra.txt + npc_town_guide.txt + npc_town_prontera.txt + (/quest) + npc_event_marriage.txt(VEƒeƒXƒg) + (/job) + npc_job_alchemist.txt + npc_job_supernovice.txt(V) + +-------------------- +//1020 by (“Ê) +Enullpo‚Ì•ÏX‚ɑΉž‚µ‚Ämap_athena.conf‚ÌÝ’è휕skill.c‘‚«Š·‚¦ +EÀ‚Á‚Ä‚¢‚é‚ÆHPR‚ÆSPR‚ª’Êí‚Ì”¼•ª‚Å”“®‚µ‚½‚Ì‚ðC³ +EƒXƒpƒmƒr‚ªˆê’èðŒ(ƒNƒ‰ƒCƒAƒ“ƒgˆË‘¶)‚Å/doridori‚·‚é‚ÆSPR‰ñ•œ—Ê‚ª”{‚É‚È‚é‚悤‚É•ÏX +EŒ‹¥Ž®—p‚̃GƒtƒFƒNƒg‚ðƒXƒNƒŠƒvƒg‚©‚çwedding–½—ß‚Å”¶‚³‚¹‚邱‚Æ‚ªo—ˆ‚é‚悤‚µ‚½ +E‡‘t‚ðŠJŽn‚µ‚½PC‚͇‘t’†‚ÉI—¹‚Å‚«‚È‚¢‚悤‚É‚µ‚½‚‚à‚è(–¢Šm”F) + + (conf/) + map_athena.conf nullpo_checkíœ + (doc/) + client_packet.txt XV + conf_ref.txt nullpo_checkíœ + (map/) + map.c + map_config_read() nullpo_checkíœ + map.h “¯ã + skill.c NULLƒ`ƒFƒbƒNÄ“x‘“ü‚ê‘Ö‚¦ + clif.c + clif_wedding_effect() ’ljÁ + clif_parse_QuitGame() ‡‘tŠJŽnŽÒ‚͇‘t’†‚ÉI—¹‚Å‚«‚È‚¢‚悤‚É•ÏX + clif_parse_doridori() ’ljÁ + clif_parse() doridori’ljÁ + clif.h •ÏX + pc.c + pc_authok() doridori‰Šú‰»’ljÁ + pc_natural_heal_hp() À‚Á‚Ä‚¢‚é‚Æ‚«‚ÌHPRŽžŠÔC³ + pc_natural_heal_sp() À‚Á‚Ä‚¢‚é‚Æ‚«‚ÌHPRŽžŠÔC³Adoridori’ljÁ + script.c + buildin_wedding_effect() ’ljÁ + + +-------------------- +//1019 by Dest +Enullpoƒ‚ƒWƒ…[ƒ‹‚ɃR[ƒfƒBƒ“ƒOƒ~ƒX”Œ©/C³ +E“¯Avoid‚ÈŠÖ”‚©‚çŒÄ‚΂ꂽŽž‚Ìnullpo_retv_f()‚ð’ljÁ +E“¯AðŒƒRƒ“ƒpƒCƒ‹‚ɑΉž + + (common/) + nullpo.c + nullpo_info_core() ƒR[ƒfƒBƒ“ƒOƒ~ƒXC³ + nullpo.h + NULLPO_CHECKƒtƒ‰ƒO‚É‚æ‚éðŒƒRƒ“ƒpƒCƒ‹’ljÁ + nullpo_retv_f() ’ljÁ + +-------------------- +//1018 by chloe +EƒEƒ“ƒoƒ‰ƒ‚ƒ“ƒXƒ^[‚ð’ljÁ + + (script/mob/) + npc_monster.txt •ÏX + ŠeƒEƒ“ƒoƒ‰ƒ}ƒbƒv‚ÉMob”z’u + (db/) + mob_db.txt •ÏX + 1495,STONE_SHOOTER,ƒtƒŒƒCƒ€ƒVƒ…[ƒ^[ C³ + 1511,AMON_RA,ƒAƒ‚ƒ“ƒ‰[ C³ + +-------------------- +//1017 by (“Ê) +EƒoƒO•ñƒXƒŒƒbƒh part6 >>46 Dest‚³‚ñ‚Ìnullpoƒ‚ƒWƒ…[ƒ‹‚ð’ljÁ•void‚ÈŠÖ”‚©‚çŒÄ‚΂ꂽŽž‚Ìnullpo_retv()‚ð’ljÁ(‚Æ‚è‚ ‚¦‚¸skill.c‚ÌNULLƒ`ƒFƒbƒN‚¾‚¯“ü‚ê‘Ö‚¦) +E“¯>>39 Sel‚³‚ñ‚©‚ç•ñ‚ª‚ ‚Á‚½ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“‚ðC³ +EŽd—l‚ɂ‚¢‚ÄŒê‚臂¤ƒXƒŒƒbƒh >>33 Kalen‚³‚ñ‚Ìî•ñ‚ðclient_packet.txt‚É”½‰f +E–{ŽI‘ŠˆáƒXƒŒƒbƒh part3 >>24 M —zqcM6jBw‚³‚ñ‚Ìî•ñ‚ðª +E“¯>>30 ‚Í‚¿‚³‚ñ‚ÌC³‚𔽉f + + (conf/) + map_athena.conf nullpo_check’ljÁ + (db/) + item_db.txt Œ‹¥Žw—Ö‚ð•Ší-ƒAƒNƒZƒTƒŠ‚É•ÏX•ÅV”Å + (doc/) + client_packet.txt XV + conf_ref.txt nullpo_check’ljÁ + (common/) + Makefile •ÏX + nullpo.c ’ljÁ + nullpo.h ’ljÁ + (map/) + Makefile •ÏX + map.c + map_config_read() nullpo_check’ljÁ + map.h “¯ã + skill.c NULLƒ`ƒFƒbƒN‘“ü‚ê‘Ö‚¦ + skill_status_change_start() ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“C³ + skill_castend_nodamage_id() ƒeƒŒƒ|[ƒgC³ + clif.c + clif_skill_setunit() ƒRƒƒ“ƒgC³ + pc.c + pc_calcstatus() ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“C³ + +-------------------- +//1016 by ‚ÈB +EAthenaŽG’kƒXƒŒƒbƒhPart4 42 ‚©‚éŽì‚̃Eƒ“ƒoƒ‰NPC‚ð’ljÁ + + (script/npc/town/) + npc_town_umbala.txt’ljÁ + ƒCƒxƒ“ƒgƒfƒoƒbƒO—l(230`256s–Ú)‚̓Rƒƒ“ƒgƒAƒEƒg + (conf/) + map_athena.conf town ‚É npc: script/npc/town/npc_town_umbala.txt ’ljÁ + +-------------------- +//1015 by (“Ê) +EƒŠƒ€[ƒuƒgƒ‰ƒbƒv‚ð–{ŽIŽd—l‚ÆAthenaŽd—l‚Å‘I‚ׂé‚悤‚É‚µ‚½ +EƒXƒpƒmƒr‚ÉAll+10‚·‚éðŒ‚ª—Ç‚•ª‚©‚ç‚È‚©‚Á‚½‚¯‚Çʼn‚©‚ç+10‚¶‚á‚È‚¢‚Ì‚ÍŠm‚©‚È‚Ì‚Å‚Æ‚è‚ ‚¦‚¸Base99‚ňê“x‚àŽ€‚ñ‚Å‚È‚¯‚ê‚΂Ƃ¢‚¤ðŒ‚É•ÏX +Eƒ_ƒ“ƒX’†‚É‚«”ò‚΂³‚ê‚Ä‚àƒGƒtƒFƒNƒg‚͈ړ®‚µ‚È‚¢‚»‚¤‚È‚Ì‚Å•ÏX +E@go 13”÷’²® + + + (conf/) + battle_athena.conf skill_removetrap_type’ljÁ + (doc/) + client_packet.txt –{ŽI‘ŠˆáƒXƒŒƒbƒh part3 23 M —zqcM6jBw‚³‚ñ‚Ìî•ñ‚ð’ljÁ + conf_ref.txt skill_removetrap_type’ljÁ + (map/) + atcommand.c + atcommand_go() ƒEƒ“ƒoƒ‰‚ÌoŒ»ˆÊ’u”÷’²® + battle.c + battle_config_read() skill_removetrap_type’ljÁ + battle.h “¯ã + pc.c + pc_calcstatus() ƒXƒpƒmƒrAll+10ðŒ•ÏX + skill.c + skill_blown() ƒ_ƒ“ƒX’†‚Ì‚«”ò‚΂µ‚ðŒ³‚É–ß‚µ‚½ + skill_castend_nodamage_id() ƒŠƒ€[ƒuƒgƒ‰ƒbƒvŽd—l•ÏX + + -------------------- +//1014 by (Pepermint) +I fixed again the problem if you put minus sign(-) in front of digits, +the error comes up when you puchase a item. +When you put a minus sign(-), the error sign will be changed shrotage of +amount as original server dose. + +I tested with it in ver. 1013, it was working + +-------------------- +//1012 by (“Ê) +Ehelp.txt‚É‚ ‚é@go‚Ìà–¾‚©‚ç13‚Æ14‚ðíœ +@‹@”\‚ÍÁ‚¦‚Ä‚È‚¢‚Ì‚ÅŽg‚¦‚邱‚Æ‚ÍŽg‚¦‚Ü‚·‚ªAhelp‚ÉÚ‚¹‚é‚Ì‚ÍjRO‚É—ˆ‚Ä‚©‚ç‚Æ‚¢‚¤‚±‚Æ‚Å +Ecast_db.txt‚ðskill_cast_db.txt‚ɉü–¼ +E‚‚¢‚Å‚Émake clean‚ÅGNUmakefile‚àÁ‚µ‚Ă݂邱‚Æ‚É‚·‚é +Eu-0‚³‚ñ‚ÌŒŸØ‚Ȃǂ𑇂µ‚ă_ƒ“ƒXƒ†ƒjƒbƒgŠÖ˜A‚ð•ÏX +@‰‰‘tEƒ_ƒ“ƒX’†‚̃nƒG‚̓†ƒjƒbƒg•t‚«‚Å”ò‚Ô‚»‚¤‚Å‚· +@‰‰‘tEƒ_ƒ“ƒX’†‚Ƀ[ƒvƒ|ƒCƒ“ƒg‚Éæ‚Á‚½‚çó‘Ô‚ª‰ðœ‚³‚ê‚é‚悤‚Å‚· +@‡‘t’†‚ɕЕû‚ªƒnƒG”ò‚Ñ‚µ‚½‚çƒGƒtƒFƒNƒg‚ÍŒ³‚ÌꊂɎc‚èA”ò‚ñ‚¾æ‚ł͇‘tó‘Ô‚ªŒp‘±‚µ‚Ä“®‚¯‚È‚¢•ŽžŠÔ‚²‚Æ‚ÉSPÁ”ï‚·‚é‚悤‚Å‚· +EPC_DIE_COUNTER‚ªƒXƒNƒŠƒvƒg‚©‚ç•ÏX‚³‚ꂽŽž‚É‚·‚®‚É”½‰f‚³‚ê‚é‚悤‚É•ÏX + + (conf/) + help.txt @goà–¾•ÏX + (db/) + skill_cast_db.txt ‰ü–¼ + (map/) + pc.c + pc_setpos() ƒ_ƒ“ƒX’†’f‚̃^ƒCƒ~ƒ“ƒO•ÏX + pc_setglobalreg() PC_DIE_COUNTER“Á•Êˆ—’ljÁ + skill.c + skill_castend_id() NULLƒ`ƒFƒbƒN•ÏX + skill_stop_dancing() ƒ}ƒbƒvˆÚ“®‚È‚Ç‚Å‚Ì‹““®‚ð•ÏX + skill_readdb() skill_cast_db‚ɉü–¼ + skill_blown() ”ò‚΂³‚ꂽ‚çƒ_ƒ“ƒXˆÚ“® + npc.c + npc_touch_areanpc() ƒ[ƒvƒ|ƒCƒ“ƒg‚Éæ‚Á‚½‚çƒ_ƒ“ƒX‰ðœ + +-------------------- +//1011 by ƒpƒCƒ“ +Eƒp[ƒeƒB—v¿‚âƒMƒ‹ƒh—v¿‚ðo‚µ‚Ä‚¢‚é‚Æ‚«‚É‘¼‚Ì—v¿‚ð‹‘”Û‚éˆ—‚ð’ljÁ +@battle_athena.conf‚ÅØ‚è‘Ö‚¦‚ªo—ˆ‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B +Emake clean ‚ÅŽ–‚ª‘«‚è‚é‚Ì‚ÅAobjectdel.bat‚ðÁ‹Ž + + (map) + clif.c + clif_party_invite()•ÏX(nullpo‚Ì•¶Œ¾ˆá‚Á‚Ä‚Ü‚µ‚½) + guild.c + guild_invite()•ÏX + party.c + party_invite()•ÏX + battle.c + battle_config_read()•ÏX + battle.h•ÏX + trade.c + trade_traderequest()•ÏX + +-------------------- +//1010 by (“Ê) +Egcc 2.95‘Îô +EƒXƒpƒmƒr‚Ì1“xŽ€‚Ê‚Ü‚ÅAll+10‚ðƒXƒNƒŠƒvƒg•Ï”‚ÅŽÀ‘•‚µ‚Ă݂鎎‚Ý + PC_DIE_COUNTER Ž€‚Ê‚Æ+1A“]E‚·‚é‚Æ0‚É‚È‚è‚Ü‚· + ª‚̓Lƒƒƒ‰ƒNƒ^‰i‘±‚ȃXƒNƒŠƒvƒg•Ï”‚È‚Ì‚ÅNPC‚ÅŽQÆ•ÄÝ’è‚Æ‚©”äŠr“IŠy‚©‚à + + (map/) + chrif.c + chrif_divorce() gcc2.95‘Îô + skill.c + skill_attack() gcc2.95‘Îô + skill_unit_move_unit_group() gcc2.95‘Îô + map.h map_session_data‚Édie_counter‚ð’ljÁ + npc.c + npc_click() nullpoƒƒbƒZ[ƒW‚ðC³ + pc.c + pc_setrestartvalue() nullpoƒƒbƒZ[ƒW‚ðC³ + pc_authok() die_counter‰Šú‰»‚̒ljÁ + pc_calcstatus() die_counter=0‚̃Xƒpƒmƒr‚ÍAll+10 + pc_damage() PC_DIE_COUNTERÝ’è + pc_jobchange() PC_DIE_COUNTERÝ’è + pc_readparam() gcc2.95‘Îô + pc_divorce() gcc2.95‘Îô + pc_get_partner() gcc2.95‘Îô + +-------------------- +//1009 by ‚Ò‚´‚Ü‚ñ +Eƒ_ƒ“ƒXˆÚ“®Œy—ʉ»ŽÀ‘• +@battle_athena.conf‚ÅØ‚è‘Ö‚¦‰Â”\‚Å‚·BÚ‚µ‚‚Íconf_ref‚ð +@ƒIƒŠƒWƒiƒ‹ƒAƒbƒvƒf[ƒg‚̈×AƒfƒtƒHƒ‹ƒg‚Å‚Íoff‚É‚µ‚Ä‚¢‚Ü‚· +@‚Ü‚½A‚±‚ÌŒy—ʉ»ƒ‚[ƒh‚͉ñü•‰‰×‚ð‘å•‚É팸‚Å‚«‚é(‚‚à‚è)‚Å‚·‚ªA +@‚»‚Ì•ªƒT[ƒo[‘¤‚̈—‚ªd‚½‚‚È‚è‚Ü‚·(‚Æ‚¢‚Á‚Ä‚à‚ ‚é’ö“x‚ÌCPU‚ª‚ ‚ê‚ΑS‘R–â‘è‚É‚È‚ç‚È‚¢’ö“x‚Ì•‰‰×‚Å‚·‚ª) +EŒ‹¥ƒVƒXƒeƒ€^Œ‹¥ƒXƒLƒ‹ŽÀ‘• +@Œ‹¥Žw—Ö‚Ì“Á•Êˆµ‚¢‚ª–¢ŽÀ‘•‚Å‚·(—Ž‚Æ‚¹‚½‚èŽæˆø‚Éo‚¹‚½‚肵‚Ü‚·) +@—£¥‚Ì‚Ý–¢ƒeƒXƒg‚Å‚·B +EŒ‹¥—pƒXƒNƒŠƒvƒg(marriageAdivorce)’ljÁB +@Emarriage <partner_name> +@@<partner_name>: Œ‹¥‘ŠŽè‚Ì–¼‘O +@@–ß‚è’l: ¬Œ÷:1@Ž¸”s:0 +@@Œ‹¥ˆ—‚ðs‚¢‚Ü‚·B‘Îۂ͘b‚µŠ|‚¯‚½ƒvƒŒƒCƒ„[‚Æ<partner_name>‚̃Lƒƒƒ‰ƒNƒ^[‚ÅA‚Ç‚¿‚ç‚©‚ªŠù¥‚Ìꇂ͎¸”s‚µ‚Ü‚·B +@@1‰ñ‚ÌmarriageƒXƒNƒŠƒvƒg‚ÅV˜Y¨V•w‚ÆV•w¨V˜Y‚ÌŒ‹¥ˆ—‚𓯎ž‚És‚¢‚Ü‚·B +@@‚Ü‚½A‚±‚̃XƒNƒŠƒvƒg‚ÅŒ‹¥Žw—Ö‚Í—^‚¦‚ç‚ê‚Ü‚¹‚ñB +@Edevorce +@@ˆø”–³‚µ +@@–ß‚è’l: ¬Œ÷:1@Ž¸”s:0 +@@—£¥ˆ—‚ðs‚¢‚Ü‚·B‘Îۂ͘b‚µŠ|‚¯‚½ƒvƒŒƒCƒ„[‚ÅA–¢¥‚Ìꇂ͎¸”s‚µ‚Ü‚·B +@@marriageƒXƒNƒŠƒvƒg‚Æ“¯—l‚Ɍ݂¢‚Ì—£¥ˆ—‚𓯎ž‚És‚¢‚Ü‚·B +@@‚Ü‚½A‚±‚̃XƒNƒŠƒvƒg‚ª¬Œ÷‚·‚é‚ÆŽ©“®“I‚É‘ÎÛƒLƒƒƒ‰ƒNƒ^[‚ÌŒ‹¥Žw—Ö‚Í”’D‚³‚ê‚Ü‚·B + +@‚Ç‚¿‚ç‚̃XƒNƒŠƒvƒg‚̈—‚àA2l‹¤ƒƒOƒCƒ“‚µ‚Ä‚¢‚È‚¢‚ƬŒ÷‚µ‚Ü‚¹‚ñB + + (map/) + pc.c + pc_ismarried()Apc_marriage()Apc_divorce()Apc_authok()•ÏX + pc_get_partner() ’ljÁ + map.c + map_quit() •ÏX + skill.c + skill_use_id()Askill_castend_nodamage_id() •ÏX + skill_unitsetting()Askill_unit_onlimit() •ÏX + script.c + buildin_marriage()Abuildin_devorce() ’ljÁ + pc.h •ÏX + battle.h •ÏX + +-------------------- +//1008 by ‚Ò‚´‚Ü‚ñ +EGMƒZƒbƒVƒ‡ƒ“‰B‚µŽÀ‘•(–¢ƒeƒXƒg) +@GMƒAƒJƒEƒ“ƒg‚̃Lƒƒƒ‰ƒNƒ^[‚ð@who“™‚Å•\Ž¦‚·‚é‚©‚Ç‚¤‚©Ý’è‚Å‚«‚Ü‚·B +@Ú‚µ‚‚Íconf_ref.txt‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢B +EŒ‹¥ƒVƒXƒeƒ€‰¼ŽÀ‘• +@char-mapŠÔ’ÊM‚Ì‚ÝŽÀ‘•‚Å‚·B‚Ü‚¾Œ‹¥‚·‚邱‚Æ‚Ío—ˆ‚Ü‚¹‚ñB +@®A‚±‚̃pƒbƒ`‚©‚çathena.txt‚̃o[ƒWƒ‡ƒ“‚ª•Ï‚í‚è‚Ü‚·B +@ƒf[ƒ^‚̌݊·«‚Í•Û‚Á‚½‚‚à‚è‚Å‚·‚ªA”O‚̈׃oƒbƒNƒAƒbƒv‚ðŽæ‚Á‚Ä‚¨‚Ž–‚ð‹‚„§‚µ‚Ü‚·B + + (map/) + clif.c + clif_countusers() •ÏX + battle.c + battle_config_read() •ÏX + atcommand.c + atcommand_who() •ÏX + pc.c + pc_ismarried()Apc_marriage()Apc_divorce() ’ljÁ + chrif.c + chrif_divorce() ’ljÁ + chrif_parse() •ÏX + (char/) + char.c + char_divorce() ’ljÁ + char_delete()Ammo_char_fromstr()Ammo_char_tostr() •ÏX + +-------------------- +//1007 by (“Ê) +ENULLƒ`ƒFƒbƒN‚ÌŒ©’¼‚µ + + (map/) + clif.c + clif_send() •ÏX + skill.c + skill_delunit() •ÏX + +-------------------- +//1006 by (ruhu) +¥@go‚É—Œ—z‚ƃjƒtƒ‹ƒwƒCƒ€’ljÁ + + (conf/) + help.txt ƒjƒtƒ‹ƒwƒCƒ€A—Œ—z’ljÁ + (map/) + atcommand.c + atcommand go() ƒjƒtƒ‹ƒwƒCƒ€A—Œ—z’ljÁ +-------------------- +//1005 by (“Ê) +ENULLƒ`ƒFƒbƒN‚ÌŒ©’¼‚µ‚ƒljÁA‘å—Ê‚É•ÏX‚µ‚½‚Ì‚Å–â‘肪o‚é‰Â”\«‚ª‘å‚Å‚· +EƒEƒ“ƒoƒ‰•ªŠ„ƒpƒbƒ`‚ª”z•z‚³‚ꂽ‚Ì‚Å@go 12‚ɃEƒ“ƒoƒ‰‚ð’ljÁ +Eƒ[ƒhƒiƒCƒg ƒo[ƒT[ƒN‚ð‚¿‚å‚Á‚Æ‚»‚ê‚Á‚Û‚(ASPD‘‰Á‚È‚Ç‚Í–¢ŽÀ‘•) +EƒNƒ‰ƒEƒ“¥ƒWƒvƒV[ ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç‚ÌŽg—pðŒ‚ð‡‘t‚Æ“¯‚¶‚É•ÏX(Œø‰Ê“™‚Í–¢ŽÀ‘•) +EƒuƒŒƒbƒVƒ“ƒO‚ª–{ŽI‚ł̓Xƒe[ƒ^ƒXƒAƒbƒv¨ƒGƒtƒFƒNƒg‚¾‚Á‚½‚Ì‚Å‚»‚̂悤‚É•ÏX +E–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>145 zzz‚³‚ñ‚Ì•ñ‚𔽉f +E“¯ƒXƒŒ >>143 plala‚³‚ñ‚Ì•ñ‚𔽉f + + (db/) + skill_require_db.txt •ÏX + (conf/) + help.txt ƒEƒ“ƒoƒ‰’ljÁ + map_athena.conf ƒEƒ“ƒoƒ‰ŠÖ˜A‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ + (map/) + atcommand.c NULLƒ`ƒFƒbƒN‹‰» + atcommand() @mapmove‚È‚Ç‚Å—Ž‚¿‚é–â‘è‚ðC³ + atcommand_go() ƒEƒ“ƒoƒ‰’ljÁ + battle.c NULLƒ`ƒFƒbƒN‹‰» + battle_calc_mob_weapon_attack() ƒo[ƒT[ƒNŽžƒ_ƒ[ƒW150% + battle_calc_pc_weapon_attack() ƒo[ƒT[ƒNŽžƒ_ƒ[ƒW150% + chat.c NULLƒ`ƒFƒbƒN‹‰» + chrif.c NULLƒ`ƒFƒbƒN‹‰» + clif.c NULLƒ`ƒFƒbƒN‹‰» + clif_parse_ActionRequest() ƒ_ƒ“ƒXŽž‚̈—‚ðŽáŠ±•ÏX + clif_parse_GlobalMessage() ƒo[ƒT[ƒNŽž‚͉ï˜b‚ªo—ˆ‚È‚¢‚悤‚É•ÏX + clif_parse_Wis() ƒo[ƒT[ƒNŽž‚͉ï˜b‚ªo—ˆ‚È‚¢‚悤‚É•ÏX + clif_parse_PartyMessage() “¯ã + clif_parse_GuildMessage() “¯ã + clif_parse_TakeItem() ƒo[ƒT[ƒNŽž‚̓AƒCƒeƒ€‚ðŽæ‚ê‚È‚¢‚悤‚É•ÏX + clif_parse_DropItem() ƒo[ƒT[ƒNŽž‚̓AƒCƒeƒ€‚ð—Ž‚Æ‚¹‚È‚¢‚悤‚É•ÏX + clif_parse_UseItem() ƒo[ƒT[ƒNŽž‚̓AƒCƒeƒ€‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX + clif_parse_EquipItem() ƒo[ƒT[ƒNŽž‚Í‘•”õ‚Å‚«‚È‚¢‚悤‚É•ÏX + clif_parse_UnequipItem() ƒo[ƒT[ƒNŽž‚Í‘•”õ‰ðœ‚Å‚«‚È‚¢‚悤‚É•ÏX + clif_parse_UseSkillToId() ƒo[ƒT[ƒNŽž‚̓XƒLƒ‹Žg—p‚ª‚Å‚«‚È‚¢‚悤‚É•ÏX + clif_parse_UseSkillToPos() “¯ã + clif_parse_UseSkillMap() “¯ã + guild.c NULLƒ`ƒFƒbƒN‹‰» + intif.c NULLƒ`ƒFƒbƒN‹‰» + itemdb.c NULLƒ`ƒFƒbƒN‹‰» + map.c NULLƒ`ƒFƒbƒN‹‰» + map_quit() ƒo[ƒT[ƒNŽž‚ɃƒOƒAƒEƒg‚·‚é‚ÆHP 100/SP 0‚É‚È‚é‚悤‚É•ÏX + mob.c + mob_attack() clif_fixmobpos()‚ð‘—M‚µ‚È‚¢‚悤‚É•ÏX + mob_timer() NULLƒ`ƒFƒbƒNðŒ‚ð•ÏX + mobskill_castend_id() “¯ãAƒo[ƒT[ƒNŽžƒXƒLƒ‹‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX + mobskill_castend_pos() ƒo[ƒT[ƒNŽžƒXƒLƒ‹‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX + mobskill_use_id() “¯ã + mobskill_use_pos() “¯ã + npc.c NULLƒ`ƒFƒbƒN‹‰» + party.c NULLƒ`ƒFƒbƒN‹‰» + path.c NULLƒ`ƒFƒbƒN‹‰» + pc.c NULLƒ`ƒFƒbƒN‹‰» + pc_calcstatus() ƒo[ƒT[ƒNŽž‚Í‘¬“xUP•MHP3”{AƒƒfƒBƒeƒCƒeƒBƒI‚ÌSP‰ñ•œ‘‰Á‚ðSPR‚Å‚Í‚È‚’Êí‰ñ•œ‚É‚©‚©‚é‚悤‚É‚µ‚½ + pc_heal() ƒo[ƒT[ƒNŽž‚͉ñ•œ‚µ‚È‚¢ + pc_jobchange() “]E’¼Œã1•à“®‚©‚È‚¢‚Æ•ž‚ÌF‚ª”½‰f‚³‚ê‚È‚©‚Á‚½‚Ì‚ðC³ + pc_natural_heal_sub() ƒo[ƒT[ƒN’†‚ÍSP‚ªŽ©‘R‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏX(HP‚Í—Ç‚•ª‚©‚ç‚È‚©‚Á‚½‚̂ʼnñ•œ‚·‚é‚悤‚É‚µ‚Ä‚ ‚é) + pet.c NULLƒ`ƒFƒbƒN‹‰» + skill.c + skill_castend_nodamage_id() ƒuƒŒƒbƒVƒ“ƒO“™‚̃pƒPƒbƒg‡‚ð•ÏXAƒXƒg[ƒ“ƒJ[ƒX‚ð•sŽ€‚É‚Í–³Œø‚É‚µ‚½ + skill_castend_map() ‚µ‚‚±‚¢‚‚ç‚¢‚Ƀo[ƒT[ƒNŽž‚ɃXƒLƒ‹‚ðŽg‚¦‚È‚¢‚悤‚É•ÏX + skill_check_condition() “¯ã + skill_use_pos() “¯ã + skill_use_id() “¯ã•ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç’ljÁ + skill_status_change_end() ƒo[ƒT[ƒNŽž‚É‚ÍIAƒAƒCƒRƒ“‚ðÁ‹Ž‚·‚é‚悤‚É•ÏX + skill_status_change_timer() NULLƒ`ƒFƒbƒNðŒ‚ð•ÏXAŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚т玞SPÁ”ïAƒo[ƒT[ƒNŽžHP100ˆÈã‚È‚ç10•b‚ ‚½‚è1%Œ¸‚ç‚·‚悤‚É•ÏX + skill_status_change_start() ƒo[ƒT[ƒNŽž‚É‚ÍIAƒAƒCƒRƒ“‚ð•\Ž¦‚·‚é‚悤‚É•ÏX + skill_delunit() NULLƒ`ƒFƒbƒNðŒ‚ð•ÏX + skill_check_condition_char_sub() ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç’ljÁ + skill_check_condition_use_sub() “¯ã + skill_is_danceskill() “¯ã + skill_initunitgroup() “¯ã + trade.c NULLƒ`ƒFƒbƒN‹‰» + vending.c NULLƒ`ƒFƒbƒN‹‰» + +-------------------- +//1004 by (“Ê) +ENULLƒ`ƒFƒbƒN‚ŃGƒ“ƒoƒO‚µ‚Ä‚¢‚½‚Æ‚±‚ë‚ð‚¢‚‚‚©C³‚Æ‘¼‚ÌNULLƒ`ƒFƒbƒN‹‰» +Eskill.c‚Å‚ànullpo‚ð•\Ž¦‚·‚é‚悤‚É•ÏX + + (map/) + battle.c + battle_damage() NULLƒ`ƒFƒbƒN‹‰» + battle_heal() “¯ã + clif.c + clif_damage() “¯ã + map.c + map_addflooritem() NULLƒ`ƒFƒbƒN‹‰» + mob.c + mob_once_spawn() —]Œv‚ÈNULLƒ`ƒFƒbƒN‚ðíœ + mob_once_spawn_area() “¯ã + mob_damage() “¯ã + mob_counttargeted() “¯ã + mobskill_castend_id() “¯ã + mob_summonslave() ƒƒbƒZ[ƒWŠÔˆá‚¢‚ðC³ + pc.c + pc_damage() NULLƒ`ƒFƒbƒN‹‰» + skill.c ‚Ù‚Ú‘S•” NULLŠÖ˜AC³ + +-------------------- +//1003 by (“Ê) +EjROƒNƒ‰ƒCƒAƒ“ƒg‚Å/accountŽg—pŽž‚ÉŒq‚ª‚ç‚È‚¢Œ´ˆö‚Ì0x200ƒpƒPƒbƒg–â‘è‚ðC³ +E0x1c9ƒpƒPƒbƒg‚ÌŒŠ–„‚ß‚ðˆø‚«‘±‚«Œp‘±’† +Eˆêl‚Ź‘̂⇑t‚ðŽg—p‚Å‚«‚éÝ’è(player_skill_partner_check)‚ð’ljÁ + ˆêl‚Ň‘t‚ðŽÀs‚µ‚½ê‡‚É‚Í’Êí‚̃_ƒ“ƒX‚Æ‹““®‚ª“¯‚¶‚É‚È‚è‚Ü‚· +Eƒvƒƒ{ƒbƒN‚Í•sŽ€‚ɑ΂µ‚Ä”“®‚µ‚È‚¢‚悤‚É•ÏX +EFW‚Ì‚«”ò‚΂µ”»’è‚ð•ÏX +EƒfƒŠƒ…[ƒW‚É…ê”»’è‚ð’ljÁA¹…‚ðì‚ê‚é‚Ì‚ðŠm”F +EƒnƒCƒfƒBƒ“ƒO‚Ì—LŒøŽžŠÔ‚ª³‚µ‚‹@”\‚·‚é‚悤‚ÉC³ +EƒAƒXƒyƒ‹ƒVƒI‚ð•sŽ€‚ÉŽg—p‚µ‚½ê‡A¹‘®«‚Ì40ƒ_ƒ[ƒW‚ð—^‚¦‚é‚悤‚É•ÏX +EƒAƒXƒyƒ‹ƒVƒI‚ð•sŽ€ˆÈŠO‚ÌMOB‚ÉŽg—p‚µ‚Ä‚àŒø‰Ê‚ª–³‚¢‚悤‚É•ÏX +E‡‘tAƒ_ƒ“ƒXA‰‰‘t’†‚ÌŒo‰ßŽžŠÔ‚É‚æ‚éSPÁ”ï‚ðŽÀ‘• +E•ñ‚Ì‚ ‚Á‚½ƒK[ƒfƒBƒAƒ“‚ªƒMƒ‹ƒh–¢‰Á“üPC‚ðƒ^[ƒQƒbƒg‚µ‚½‚çmap‚ª—Ž‚¿‚é–â‘è‚ÌC³(ƒK[ƒfƒBƒAƒ“ŽÀ‘•“–Žž‚©‚炸‚Á‚Æ—Ž‚¿‚Ä‚½H) +Emob.cAstorage.c‚Ìnullƒ`ƒFƒbƒN‚ð‹‰» + ƒGƒ‰[‚Å—Ž‚¿‚é‚ׂ«‚Æ‚±‚ë‚ð–³—‚â‚è’Ê툗‚É–ß‚µ‚Ä‚¢‚é‚Ì‚Å‘¼‚Å–â‘肪‚Å‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ + ‚»‚Ìê‡AƒRƒ“ƒ\[ƒ‹‚ÉuŠÖ”–¼ nullpov‚Æ•\Ž¦‚³‚ê‚é‚Ì‚Å•\Ž¦‚³‚ꂽꇂ͕ñ‚ð‚¨Šè‚¢‚µ‚Ü‚· + ‚à‚µ‚©‚µ‚½‚ç³í‚Ȉ—‚Å‚à•\Ž¦‚³‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªA‚»‚ÌÛ‚à•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚· + –{—ˆƒGƒ‰[AŽÀ‚ͳíA‚Ç‚¿‚ç‚É‚µ‚Ä‚à‚±‚ꂪ•\Ž¦‚³‚ê‚é‚̂̓oƒO‚Å‚· + + (conf/) + battle_athena.conf player_skill_partner_check’ljÁ + (db/) + skill_db.txt ƒAƒXƒyƒ‹ƒVƒI‚Ì‘®«‚ð¹‚É•ÏX + (doc/) + conf_ref.txt player_skill_partner_checkà–¾’ljÁ + (login/) + login.c + parse_login() 0x200ƒpƒPƒbƒg‘Ήž + (map/) + mob.c NULLƒ`ƒFƒbƒN‚Å‚Ù‚Ú‘S•” + storage.c NULLƒ`ƒFƒbƒN‚Å‚Ù‚Ú‘S•” + battle.h •ÏX + battle.c + battle_calc_magic_attack() ƒAƒXƒyƒ‹ƒVƒI‚ð’ljÁAFW‚ð•ÏX + battle_config_read() Ý’è’ljÁ + clif.c + clif_getareachar_skillunit() ’²¸Œ‹‰Ê‚Ì”½‰f + clif_skill_setunit() “¯ã + [1001‚Æ1002‚ÌŠÔ‚Ì•ÏX“_] + skill.c NULLƒ`ƒFƒbƒN‚ð‘òŽR + skill_castend_damage_id() ƒAƒXƒyƒ‹ƒVƒI’ljÁ + skill_castend_nodamage_id() ƒAƒXƒyƒ‹ƒVƒIAƒvƒƒ{ƒbƒNˆ—•ÏX + skill_castend_id() ƒAƒXƒyƒ‹ƒVƒIˆ—•ÏX + skill_check_condition_char_sub() player_skill_partner_check‚ɑΉž + skill_check_condition_use_sub() “¯ã + skill_use_id() “¯ã + skill_check_condition() “¯ã•ƒfƒŠƒ…[ƒW‘Ήž + skill_status_change_timer() ƒnƒCƒfƒBƒ“ƒOC³Aƒ_ƒ“ƒX‰‰‘t‡‘t’†‚ÌSPÁ”ïŽÀ‘• + skill_initunitgroup() ƒ_ƒ“ƒXSPÁ”ï—p•ÏX + skill_status_change_start() “¯ã•ƒvƒƒ{ƒbƒN‚ðƒ{ƒX‚ÉŒø‚©‚È‚¢‚悤‚É(‚Å‚àbattle.c‚ÅŽ~‚ß‚Ä‚é‚©‚ç’Ê킱‚±‚Ü‚Å—ˆ‚È‚¢) + +-------------------- +//1002 by ‚Ò‚´‚Ü‚ñ +Eƒ|[ƒ^ƒ‹ƒoƒOC³ +EƒXƒLƒ‹ŠÖŒW‚ÌNullƒ`ƒFƒbƒN‹‰»(by(“Ê)) + (map/) + skill.c + skill_castend_map() C³ + +-------------------- +//1001 by (“Ê) +E0x1c9‚Å‚¢‚‚‚©ƒpƒPƒbƒg‚ðŒ©”ä‚ׂĕω»‚Ì‚È‚¢‚Æ‚±‚ë‚ðŒÅ’è’l‚Å–„‚ßž‚Ý(¡Œãî•ñ‚ªW‚Ü‚é‚Æ•Ï‚í‚é‰Â”\«‘å) +Eƒ_ƒ“ƒX’†‚ÍSP‚¾‚¯‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏX +E¹‘Ì‚Å‘Š•û‚ÌSP‚ª10ˆÈ‰º‚¾‚ÆŽg—pŽ¸”s‚É‚µ‚ÄŽg—p‚µ‚½‚çSP‚ð10Œ¸‚炵‚Ä‚Ý‚é(–¢Šm”F) +E‡‘t‚̃XƒLƒ‹Žg—pƒpƒPƒbƒg‚ðŽáŠ±•ÏX + + (map/) + clif.c + clif_getareachar_skillunit() 0x1c9‚ÌŒŠ–„‚ߊJŽn + clif_skill_setunit() 0x1c9‚ÌŒŠ–„‚ߊJŽn + pc.c + pc_natural_heal_sub() ƒ_ƒ“ƒX’†‚ÍSP‚̂݉ñ•œ‚µ‚È‚¢‚悤‚É•ÏX + skill.c + skill_check_condition() •ÏX + skill_check_condition_char_sub() ¹‘Ì‚Í‘Š•û‚ÌSPƒ`ƒFƒbƒN‚·‚é‚悤‚É•ÏX + skill_check_condition_use_sub() ¹‘Ì‚Í‘Š•û‚ÌSP‚ðŒ¸‚ç‚·‚悤‚É•ÏX + +-------------------- +//1000 by ‚Ò‚´‚Ü‚ñ +E0999‚Ì•ÏXŽæ‚è–ß‚µ +Eƒgƒ‰ƒbƒv‚ÌŠª‚«ž‚ÝŽÀ‘• +EƒCƒhƒDƒ“‚Ì—ÑŒç‚ÅNPC‚܂ʼnñ•œ‚µ‚½(‚悤‚ÉŒ©‚¦‚é)–â‘èC³(–¢ƒeƒXƒg) +Eƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“‚̃GƒtƒFƒNƒg•ÏX(‚±‚¿‚ç‚É–¾‹L) + (map/) + skill.c + skill_count_target() ’ljÁ + skill_unit_onplace()Askill_trap_splash() •ÏX +-------------------- +//0999 by eAthena Dev Team (Yor's Fixes) +(login/) + added email for accounts +(char/) + added email for character deletion +-------------------- +//0998 by (“Ê) +Ebattle.c‚ňø”‚Ì‘¶Ý‚ðŠm”F‚¹‚¸‚É’l‚ðŒ©‚És‚Á‚Ä‚éŠÖ”‚ð‚¢‚‚‚©C³ +Eƒ_ƒ“ƒX’†‚ÍÀ‚ê‚È‚¢‚悤‚É‚µ‚½(–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>114 DoT‚³‚ñ) +Eƒ_ƒ“ƒX’†‚ÍHPASP‚ª‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏX(“¯ã) +Eƒ_ƒ“ƒX’†‚Í’ÊíUŒ‚‚Å‚«‚È‚¢‚悤‚É‚µ‚½(–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>116 EEE‚³‚ñ) +E‡‘t’†•Ð•û‚ª—Ž‚¿‚½ê‡AŽc‚Á‚½‚Ù‚¤‚ʼn‰‘t‚ðŒp‘±‚·‚é‚悤‚É‚µ‚½(“¯ã) +E‡‘t’†‚̓AƒhƒŠƒuˆÈŠO‚Å‚«‚È‚¢‚悤‚É•ÏX(“¯ã) +E‡‘t”“®ðŒ‚Ƀ_ƒ“ƒX’†‚¶‚á‚È‚¢•À‚Á‚Ä‚¢‚È‚¢‚ð’ljÁ(–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>118 ‚ë‚낳‚ñ) +Eˆ¢C—…Žg—pŒã‚ÉHP‚à‰ñ•œ‚µ‚È‚©‚Á‚½‚Ì‚ðC³ + + (map/) + battle.c + battle_counttargeted() C³ + battle_getŒn ‚½‚Ô‚ñ‘S•”C³ + clif.c + clif_parse_WalkToXY() ‡‘t‚Ì”»’f•û–@‚Ì•ÏX + clif_parse_ActionRequest() ƒ_ƒ“ƒX’†‚͉£‚ç‚È‚¢À‚ç‚È‚¢‚悤‚É•ÏX + map.c + map_quit() ƒ_ƒ“ƒX’†’f’ljÁ + mob.c + mob_damage() skill_stop_dancing‚̈ø”‘‰Á‚É‚æ‚é•ÏX + pc.c + pc_setpos() “¯ã + pc_damage() “¯ã + pc_equipitem() “¯ã + pc_natural_heal_sub() ƒ_ƒ“ƒX’†‚ÍŽ©‘R‰ñ•œ‚µ‚È‚¢‚悤‚É•ˆ¢C—…Žž‚ÍSP‚̂݉ñ•œ‚µ‚È‚¢‚悤‚É + skill.c + skill_castend_nodamage_id() skill_stop_dancing‚̈ø”‘‰Á‚É‚æ‚é•ÏX + skill_status_change_start() “¯ã + skill_check_condition_char_sub() ‘ŠŽè‚ªƒ_ƒ“ƒX’†‚âÀ‚Á‚Ä‚¢‚Ä‚à‡‘t‚Å‚«‚È‚¢‚悤‚É•ÏX + skill_check_condition_use_sub() “¯ã + skill_use_id() ‡‘t‚Ì”»’f•û–@‚Ì•ÏX•‡‘t’†‚̓AƒhƒŠƒuˆÈŠO‹ÖŽ~‚É + skill_status_change_end() ‡‘t‚̃_ƒ“ƒXó‘Ô‰ðœ‚Í‘ŠŽè‚Ìval4‚ð0‚É‚·‚é‚悤‚É‚µ‚½ + skill_is_danceskill() –ß‚è’l•ÏX + skill_stop_dancing() ˆø”‘‰ÁA‡‘t‚ŕЕû‚¾‚¯—Ž‚¿‚½‚Æ‚«‚̈—’ljÁ + skill_delunitgroup() ‡‘tŽž‚̃Xƒe[ƒ^ƒX•ÏXˆ—‚ðª‚Ɉڂµ‚½ + skill_clear_unitgroup() Ž©•ª‚Ìbl->id‚ƃ†ƒjƒbƒgƒOƒ‹[ƒv‚Ìgroup->src_id‚ªˆá‚¤‚Æ‚«‚Í휂µ‚È‚¢‚悤‚É•ÏX + skill.h •ÏX + +-------------------- +//0997 by (“Ê) +E“ñl‚Ň‘tAŽOl‚Ź‘Ì‚ðŽÀ‘• + ‡‘t ƒo[ƒhEƒ_ƒ“ƒT[‚ª—×Ú‚µ‚½ƒZƒ‹‚É‚¢‚Ä“¯‚¶ƒXƒLƒ‹‚ðŽ‚Á‚Ä‚¢‚鎞‚É”“® + ƒXƒLƒ‹ƒŒƒxƒ‹‚Í—¼ŽÒ‚̃XƒLƒ‹ƒŒƒxƒ‹‚Ì’†ŠÔ + –{ŽIŽd—l‚ª•ª‚©‚ç‚È‚¢‚¯‚ǎ΂ߗ×Ú‚àOK + ¹‘Ì Žg—pŽÒ‚ÌXŽ²‚Å-1‚Æ+1‚ÌꊂɈêl‚¸‚ƒAƒRƒ‰ƒCƒg‚©ƒvƒŠ[ƒXƒg‚ª‚¢‚鎞‚É”“®‚·‚é‚ÆŽv‚¤(–¢ƒeƒXƒg) + Žg—pŽÒ › ƒAƒRƒvƒŠ œ + OK œ›œ + + NG œ + ›œ +Eƒg[ƒL[ƒ{ƒbƒNƒX‚ðŽg‚Á‚ÄÝ’uŽž‚ÉÀ‚Á‚Ä‚¢‚½Žž‚̓XƒLƒ‹Žg—pŽ¸”s‚É‚µ‚Ä‚Ý‚½ + + (db/) + item_db.txt ‘º³‚ÌŽô‚¢—¦‚ð5%‚É(by e2‚³‚ñ) + (map/) + skill.c + skill_check_condition_char_sub() ’ljÁ + skill_check_condition_use_sub() ’ljÁ + skill_check_condition() •ÏX + skill_use_id() •ÏX + skill_initunitgroup() •ÏX + skill_delunitgroup() •ÏX + clif.c + clif_parse_UseSkillToPos() •ÏX + +-------------------- +//0996 by (“Ê) +EƒAƒhƒŠƒu‚Ì5•b§ŒÀ‚ðcast_db.txt‚Ìupkeep_time2‚ŧŒä‚Å‚«‚é‚悤‚É•ÏX +E‘º³‚ÅŽ©•ª‚ðŽô‚킹‚邽‚ß‚Ébonus2 bAddEff2‚ð’ljÁ +EŽô‚í‚ê‚Ä‚¢‚ÄI—¹‚Å‚«‚È‚¢Žž‚É‚àu¡‚ÍI—¹‚Å‚«‚Ü‚¹‚ñv‚ª•\Ž¦‚³‚ê‚é‚悤‚É‚µ‚½ +Eƒ_ƒ“ƒXƒGƒtƒFƒNƒg“™ˆÚ“®Žž‚ÉŒø‰Ê‚Ì“K—p”»’f‚ªˆÚ“®‘O‚És‚í‚ê‚Ä‚¢‚½‚Ì‚ðˆÚ“®Œã‚É•ÏX•Žg‚í‚È‚‚Ä‚¢‚¢•Ï”‚ð”pŽ~ + + (db/) + cast_db.txt + const.txt + item_db.txt + (doc/) + item_bonus.txt + (src/) + clif.c + clif_parse_QuitGame() •ÏX + map.h addeff2,arrow_addeff2 ’ljÁ + pc.c + pc_calcstatus() •ÏX + pc_bonus2() •ÏX + skill.c + skill_additional_effect() •ÏX + skill_check_condition() •ÏX + skill_unit_move_unit_group() •ÏX + +-------------------- +//0995 by (“Ê) +Ebattle.pet_lootitem‚̃fƒtƒHƒ‹ƒg‚ªyes‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³ +Ebattle.pet_lootitem‚Ì“K—p‚ðforeach‘O‚Å‚â‚é‚悤‚ÉC³ +Eƒyƒbƒg‚̉Šú‰»‚Åpd->lootitem‚ª‚ ‚鎞‚µ‚©‰Šú‰»‚³‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³ +E—̈悪ˆÚ“®‚µ‚Ä‘ÎÛ‚ª—̈悩‚甲‚¯‚Ä‚àŒø‰Ê‚ª‰ðœ‚³‚ê‚È‚¢–â‘è‚ðC³ +EƒAƒhƒŠƒu‚̓_ƒ“ƒX”“®‚©‚ç5•bˆÈãŒo‚½‚È‚¢‚ÆŽg—p‚Å‚«‚È‚¢‚悤‚É‚µ‚½ + + (map/) + pet.c + pet_data_init() C³ + pet_ai_sub_hard() C³ + pet_ai_sub_hard_lootsearch() C³ + skill.c + skill_blown() •ÏX + skill_unit_onlimit() ƒGƒ‰[ƒƒbƒZ[ƒWC³ + skill_check_condition() •ÏX + skill_initunitgroup() sd_data[SC_DANCING].val3‚Égettick() + skill_unit_move_unit_group_sub() ’ljÁ + skill_unit_move_unit_group() •ÏX + skill.h skill_unit_move_unit_group() ˆø”•ÏX + battle.c + battle_config_read() pet_lootitem=0‚ÉC³ + pc.c + pc_walk() •ÏX + +-------------------- +//0994 by huge +Ebattle.pet_lootitem‚ª“K‰ž‚³‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B +Eƒyƒbƒg‚ɃpƒtƒH[ƒ}ƒ“ƒX‚ð‚³‚¹‚½ŒãA10•bŠÔ‚‚ç‚¢‚ÍE‚킹‚È‚¢‚悤‚ÉB + + (map/) + map.h pet_data‚Élootitem_timer’ljÁB + pet.c + pet_ai_sub_hard_lootsearch() C³B + pet_lootitem_drop() C³B + +-------------------- +//0993 by (“Ê) +Eˆêl‚Ň‘t‚¾‚¯‚LJ‘tƒXƒLƒ‹’†‚Í“®‚¯‚È‚¢‚悤‚É +EƒAƒ“ƒR[ƒ‹ŽÀ‘•B’¼‘O‚ÉŽg‚Á‚½ƒ_ƒ“ƒXƒXƒLƒ‹‚𔼕ª‚ÌSP‚ÅŽg‚¦‚Ü‚· +Eƒ_ƒ“ƒX’†‚Ɉړ®‚·‚é‚ƃGƒtƒFƒNƒg‚àˆÚ“®‚·‚é‚悤‚É‚µ‚½ +E–¢ŽÀ‘•‚̃XƒLƒ‹‚ªŽg‚í‚ê‚é‚ÆUnknown skill‚Æ•\Ž¦‚³‚ê‚邱‚Æ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ +ESage‚̃LƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹‚ÅŽÀ‚Í‘O‚̃XƒLƒ‹‚ðŠo‚¦‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ÌC³ + + (map/) + clif.c + clif_parse_WalkToXY() •ÏX + map.h ƒAƒ“ƒR[ƒ‹—p•Ï”‚̒ljÁ + pc.c + pc_walk() + skill.c + skill_blown + skill_castend_nodamage_id + skill_unitsetting() •ÏX + skill_unit_onplace() ã©‚Å“¯‚¶ˆ—‚ð‚µ‚Ä‚¢‚écase‚ð‚Ü‚Æ‚ß‚½ + skill_unit_onout() Žg‚í‚ê‚Ä‚È‚¢unit2‚ðíœ + skill_check_condition() •ÏX + skill_use_id + skill_initunitgroup() Žg‚Á‚½ƒ_ƒ“ƒXƒXƒLƒ‹‚ð•Ï”‚É“ü‚ê‚é‚悤‚É‚µ‚½ + skill_unit_move_unit_group() ’ljÁ + skill.h •ÏX + +-------------------- +//0992 by nokia + +map_quit‚ðC³‚µ‚ăƒ‚ƒŠ‚ðŽß•ú‚·‚鎞‰½“x‚à‚ðŽß•ú‚·‚邽‚߃ƒ‚ƒŠ‚̊ԈႢ‚ª‹N‚±‚é–â‘è‚𵂠+ + (map/) + map.c + map_quit() + +-------------------- +//0991 by (“Ê) +Eƒg[ƒL[ƒ{ƒbƒNƒX‚ðŽ©•ª‚ª“¥‚ñ‚Å‚à”“®‚µ‚È‚¢–{ŽIŽd—l‚É•ÏX +EƒXƒLƒ‹‰r¥’†‚ƃfƒBƒŒƒC’†‚̓Nƒ‰ƒCƒAƒ“ƒg‚ðI—¹‚Å‚«‚È‚¢‚悤‚É‚µ‚½‚¯‚ÇA“G‚ÉUŒ‚‚³‚ê‚Ä‚¢‚é‚Æ‚«‚ÍI—¹‚Å‚«‚Ü‚·(‚²‚ß‚ñ‚È‚³‚¢‚ÁII) + + (map/) + clif.c + clif_parse_QuitGame() •ÏX + skill.c + skill_unitsetting() •ÏX + +-------------------- +//0990 by ‚Ò‚´‚Ü‚ñ +Eˆê•”‚̃gƒ‰ƒbƒv‚ð”͈ÍUŒ‚‚É•ÏXiŠª‚«ž‚Ý‚Í–¢ŽÀ‘•jB +Emapflag‚Épvp_nocalcrank‚Æpvp_nightmaredrop’ljÁB + E<gatname><tab>mapflag<tab>pvp_nocalcrank<tab>dummy + @PvP‚É‚æ‚郉ƒ“ƒLƒ“ƒOŒvŽZ‚ð‚µ‚È‚¢‚悤‚É‚µ‚Ü‚·B + E<gatname><tab>mapflag<tab>pvp_nightmaredrop<tab><item>,<type>,<per> + @PvP‚É‚ÄŽ€–S‚µ‚½ê‡A<per>‚ÌŠm—¦‚ŃAƒCƒeƒ€‚ðƒhƒƒbƒv‚µ‚Ü‚·B + @<item>: ƒhƒƒbƒv‚·‚éƒAƒCƒeƒ€ID‚ðŽw’肵‚Ü‚·Brandom‚Æ‹Lq‚·‚é‚ÆŠŽ•i‚©‚烉ƒ“ƒ_ƒ€‚Ƀhƒƒbƒv‚µ‚Ü‚·B + @<type>: ƒhƒƒbƒv‚·‚éƒAƒCƒeƒ€‚̃^ƒCƒv‚ðŽw’肵‚Ü‚·Binventory:ŠŽ•i equip:‘•”õ•i all:‘S•” + @<per>: ƒhƒƒbƒv‚·‚éŠm—¦‚Å‚·B–œ•ª—¦‚ÅŽw’肵‚Ü‚·B + (map/) + skill.c + skill_unit_onplace() •ÏX + skill_trap_splash() ’ljÁ + pc.c + pc_damage() •ÏX + npc.c + npc_parse_mapflag() •ÏX + map.h + map_data‚Ƀƒ“ƒo’ljÁ + (conf/) + mapflag.txt + ƒiƒCƒgƒƒAƒ‚[ƒh‚ɃhƒƒbƒvÝ’è’ljÁ + +-------------------- +//0989 by (“Ê) +EƒXƒvƒŠƒ“ƒOƒgƒ‰ƒbƒv‚ð–^Š‚ÅŒ©‚½SS‚ðŒ³‚ÉŽÀ‘•‚µ‚Ä‚Ý‚½Bˆá‚Á‚½‚ç‘ŠˆáƒXƒŒ‚Ö +EƒfƒBƒeƒNƒeƒBƒ“ƒO‚ð–^Š‚ÅŒ©‚½‰ðà•¶‚ðŒ³‚ÉŽÀ‘•‚µ‚Ä‚Ý‚½Bˆá‚Á‚½‚ç‘ŠˆáƒXƒŒ‚Ö +EƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹Žž‚Ìdelete_timerƒGƒ‰[‚ɒljÁ‚ŃXƒLƒ‹ID‚ð•\Ž¦‚·‚é‚悤‚É‚µ‚½B‚ ‚킹‚Ä•ñ‚·‚é‚ƃGƒ‰[‚ÌŒ´ˆö‚ª•ª‚©‚é‚©‚à + + (map/) + skill.c + skill_castend_nodamage_id() •ÏX + skill_castend_pos2() •ÏX + skill_castcancel() •ÏX + +-------------------- +//0988 by (“Ê) +Eƒg[ƒL[ƒ{ƒbƒNƒX‚Íí‚É‘«Œ³‚É’u‚¯‚é‚悤‚É•ÏX‚ÆKalen‚³‚ñ‚É–á‚Á‚½î•ñ“™‚ðŒ³‚ÉƒpƒPƒbƒg‚ð–{ŽI‚É‚ ‚킹‚Ä‚Ý‚½ +EƒVƒ‡ƒbƒNƒEƒF[ƒuƒgƒ‰ƒbƒv‚ÉŒø‰Ê‚ð’ljÁ‚µ‚½‚‚à‚è(–¢Šm”F) +Eƒuƒ‰ƒXƒgƒ}ƒCƒ“‚ƃNƒŒƒCƒ‚ƒAƒgƒ‰ƒbƒv‚ð‰£‚é‚Æ‚«”ò‚Ԃ悤‚É‚µ‚½ +EƒŠƒ€[ƒuƒgƒ‰ƒbƒv‚Åã©(skill_require_db‚ÅŽw’肵‚½ƒAƒCƒeƒ€)‚ð‰ñŽû‚Å‚«‚é‚悤‚É‚µ‚½ +Eª‚ÌŽÀ‘•‚É‚æ‚èã©‚ÌŽžŠÔØ‚ê‚Åã©‚ªo‚éƒIƒŠƒWƒiƒ‹Žd—l‚̓Rƒƒ“ƒgƒAƒEƒg +Eƒuƒ‰ƒXƒgƒ}ƒCƒ“‚ÌŒø‰ÊŽžŠÔ‚ª’·‚¢‚Ì‚ðC³ + + (db/) + cast_db.txt + (map/) + battle.c + battle_check_target() •ÏX + mob.c + mobskill_castend_pos() •ÏX + skill.c + skill_additional_effect() •ÏX + skill_blown() •ÏX + skill_castend_nodamage_id() •ÏX + skill_castend_pos2() •ÏX + skill_unitsetting() •ÏX + skill_unit_onplace() •ÏX + skill_unit_ondamaged() •ÏX + skill_castend_pos() •ÏX + skill_unit_timer_sub() •ÏX + +-------------------- +//0987 by ŒÓ’±—– + +Eƒ†[ƒU[’è‹`ŠÖ”/ƒTƒuƒ‹[ƒeƒBƒ“‚Ɉø”‚ðŽw’è‰Â”\‚É + Ú‚µ‚‚Í script_ref.txt ‚ðŽQÆ + + (map/) + scirpt.c + buildin_getarg()’ljÁ + buildin_callsub(),buildin_callfunc(),run_func()C³ + (doc/) + script_ref.txt + ˆø”‚ɂ‚¢‚Ä‚Ìà–¾’ljÁ + +Egetguildname,getpartyname,getcastlename,strcharinfoC³ + C_STR‚Œ蔕¶Žš—ñ(C_CONSTSTR)‚ð•Ô‚µ‚Ä‚¢‚½–â‘èC³ + strcharinfo‚ŃMƒ‹ƒh–¼‚È‚Ç‚ðŠ“¾‚·‚éÛA–¢Š‘®‚¾‚Á‚½‚Æ‚«‚Ì–â‘è + + (map/) + script.c + buildin_getguildname(),buildin_getpartyname() + buildin_getcastlename(),buildin_strcharinfo() + +-------------------- +//0986 by (“Ê) +Eclient_packet‚Ì‹Lq‚©‚ç„Ž@‚µ‚ăg[ƒL[ƒ{ƒbƒNƒX‚ðŽÀ‘•‚µ‚Ä‚Ý‚½‚‚à‚è + + (db/) + skill_db.txt + (map/) + clif.c + clif_talkiebox() ’ljÁ + clif_parse_UseSkillToPos() •ÏX + clif_parse() •ÏX + clif.h •ÏX + map.h •ÏX + skill.c + skill_castend_pos2() •ÏX + skill_unitsetting() •ÏX + skill_unit_onplace() •ÏX + +-------------------- +//0985 by (“Ê) +EƒT[ƒo[snapshot +E/script/extension‚ÉŒê‚è•”‚ð’ljÁ‚µ‚½‚è +E0984‚ÅAthenaŽG’kƒXƒŒƒbƒh part3>>92 Michael‚³‚ñ‚ÌC³‚ðŽæ‚èž‚ñ‚Å‚½ +EƒoƒO•ñƒXƒŒƒbƒh part5 >>45‚É“]Ú‚³‚ê‚Ä‚½ ‚ ‚â‚Ë‚³‚ñ‚ÌC³‚ðŽæ‚èž‚Ý +EƒoƒO•ñƒXƒŒƒbƒh part5 >>54 rari‚³‚ñ‚Ì‚½‚Ê‚«–XC³‚ðŽæ‚èž‚Ý + + (script/extension/) + npc_event_kataribe6.txt ’ljÁ + npc_event_kataribe7.txt ’ljÁ + (script/npc/) + quest/npc_event_hat.txt C³ + job/npc_job_magician.txt C³ + +-------------------- +//0984 by (“Ê) +EƒZ[ƒW‚̃tƒŠ[ƒLƒƒƒXƒg‚Æ‚¢‚¤ƒXƒLƒ‹‚Ì‘¶Ý‚ð’m‚ç‚È‚©‚Á‚½‚Ì‚Å0983‚Ì•ÏX‚ðˆê•”–ß‚µ +EƒAƒCƒeƒ€XV‚µ‚½‚¯‚Ç‚‚ê”L‚ƃCƒ“ƒfƒBƒAƒ“ƒoƒ“ƒ_ƒi‚ª‘•”õ‚Å‚«‚È‚¢H +Eƒ}ƒbƒvƒtƒ‰ƒO‚ƃ‚ƒ“ƒXƒ^[”z’u‚ðÅV”Å‚É + + (db/) + item_db.txt + (conf/) + mapflag.txt + (script/mob/) + npc_monster.txt + (map/) + clif.c + clif_parse_WalkToXY() C³ + +-------------------- +//0983 by (“Ê) +E’·‚¢‰r¥’†‚É•à‚«‚Ü‚í‚ꂽ‹C‚ª‚·‚é‚Ì‚ÅC³ +Eƒyƒbƒgƒ‹[ƒŒƒbƒg‰ñ“]’†‚É‘ÎÛ‚ª’@‚«ŽE‚³‚ꂽ‚çmap-server‚ª¢‚é‚Ì‚ðC³ +EƒvƒƒtƒFƒbƒT[ ƒ‰ƒCƒt’u‚«Š·‚¦‚̎蔲‚«ˆ—‚ð‚¿‚å‚Á‚ƃ}ƒV‚É‚µ‚½ + + (map/) + clif.c + clif_parse_WalkToXY() C³ + pet.c + pet_catch_process2() C³ + skill.c + skill_castend_nodamage_id() C³ + +-------------------- +//0982 by (“Ê) +E“]¶ƒXƒLƒ‹‚Ì` + ƒXƒg[ƒJ[ ƒŠƒWƒFƒNƒgƒ\[ƒh ‘ŠŽè‚ªPC‚Ìꇂ͌•‚¶‚á‚È‚¯‚ê‚Î’µ‚Ë•Ô‚³‚È‚¢—\’è + ƒvƒƒtƒFƒbƒT[ ƒƒ‚ƒ‰ƒCƒY 12•b‚̌ŒèƒLƒƒƒXƒgƒ^ƒCƒ€A‚»‚ÌŒãƒXƒLƒ‹Žg—p‚̃LƒƒƒXƒgƒ^ƒCƒ€‚ª3‰ñ‚¾‚¯1/3‚É‚È‚é + ƒvƒƒtƒFƒbƒT[ ƒ‰ƒCƒt’u‚«Š·‚¦ HP‚ð10%Œ¸‚炵‚ÄSP‚ð‘‚â‚·BŒ¸‚Á‚½HP‚̃GƒtƒFƒNƒg‚Í–³‚µ‚É‚µ‚Ä‚Ý‚½ +EŒ©Ø‚è‚Ɖñ”𗦑‰Á‚ÌFlee㸂ªƒXƒe[ƒ^ƒX•Ï‰»Žž‚É‚µ‚©”½‰f‚³‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³ +E0981‚ÅŽ©•ªˆÈŠO‚Í•à‚¢‚½‚ç•ž‚ÌF‚ª–ß‚Á‚Ä‚µ‚Ü‚¤‚Ì‚ð‚È‚ñ‚Æ‚©‚µ‚½‚‚à‚è + + (db/) + skill_require_db.txt + (map/) + battle.c + battle_calc_damage() C³ + clif.c + clif_movechar() C³ + clif_getareachar_pc() C³ + pc.c + pc_calcstatus() C³ + skill.c + SkillStatusChangeTable •ÏX + skill_castend_nodamage_id() •ÏX + skill_use_id() •ÏX + skill_use_pos() •ÏX + skill_status_change_timer() •ÏX + skill_status_change_start() •ÏX + skill.h •ÏX + +-------------------- +//0981 by (“Ê) +E“]¶ƒXƒLƒ‹‚Ì` + ƒXƒg[ƒJ[ ƒŠƒWƒFƒNƒgƒ\[ƒh ˆê’èŠm—¦‚Ń_ƒ[ƒW‚𔼕ª‚É‚µ‚ÄŒ¸‚炵‚½•ª‚ð‘ŠŽè‚É’µ‚Ë•Ô‚·‚悤‚É‚µ‚½c‚ªA’µ‚Ë•Ô‚µ‚½ƒ_ƒ[ƒW‚̃GƒtƒFƒNƒgo‚Ü‚¹‚ñ +E•ž‚ÌF‚ð•ÏX••Û‘¶‚µ‚Ä‚¢‚éꇂɃŠƒƒO‚·‚é‚ÆŒ³‚ÌF‚É–ß‚Á‚Ä‚é‚悤‚ÉŒ©‚¦‚é–â‘è‚ÌC³ + + (db/) + skill_db.txt + (map/) + clif.c + clif_parse_LoadEndAck() C³ + battle.c + battle_calc_damage() C³ + skill.c + skill_status_change_timer() C³ + skill_status_change_start() C³ + +-------------------- +//0980 by (“Ê) +E—á‚É‚æ‚Á‚Ä“]¶ƒXƒLƒ‹‚ƃ‚ƒ“ƒNŠÖ˜A + ƒXƒiƒCƒp[ ƒVƒƒ[ƒvƒVƒ…[ƒeƒBƒ“ƒO ƒNƒŠƒeƒBƒJƒ‹—¦’²®H + ƒnƒCƒEƒBƒU[ƒh ƒ\ƒEƒ‹ƒhƒŒƒCƒ“ MSP‘—Ê‚ÆMob‚ð“|‚µ‚½‚Æ‚«‚ÉSP(mobLv*(65+15*SkillLv)/100)‰ñ•œB‚Å‚à–{“–‚͔͈ÍUŒ‚‚Ìꇂ͉ñ•œ‚µ‚È‚¢‚炵‚¢H + ƒnƒCƒEƒBƒU[ƒh –‚–@—Í‘• Žg‚Á‚½‚çMATK‚ªSkillLv%‘—ÊBŽŸ‚̃XƒLƒ‹Žg—pŽž‚ÉŒ³‚É–ß‚é + ƒ‚ƒ“ƒN ‹C’D ‚¿‚å‚Á‚ÆæŽæ‚肵‚Ä20%‚ÌŠm—¦‚Å“G‚ÌLv*2‚ÌSP‚ð‹zŽûB¬Œ÷‚µ‚½‚Æ‚«‚̓^[ƒQƒbƒg‚ðŽæ“¾‚·‚é‚悤‚É‚µ‚Ä‚Ý‚½ +EƒAƒCƒeƒ€–¼‚ðjROƒEƒ“ƒoƒ‰‚É€‹’‚³‚¹‚Ä‚Ý‚½‚‚à‚è + + (db/) + cast_db.txt + item_db.txt + (map/) + battle.c + battle_calc_pc_weapon_attack() •ÏX + mob.c + mob_damage() •ÏX + pc.c + pc_calcstatus() •ÏX + skill.c + skill_castend_nodamage_id() •ÏX + skill_use_id() •ÏX + skill_use_pos() •ÏX + skill_status_change_end() •ÏX + skill_status_change_timer() •ÏX + skill_status_change_start() •ÏX + +-------------------- +//0979 by (“Ê) +E“]¶ƒXƒLƒ‹‚ð‚¿‚å‚Á‚Æ’²® + ƒnƒCƒEƒBƒU[ƒh ƒ}ƒWƒbƒNƒNƒ‰ƒbƒVƒƒ[ •ŠíUŒ‚‚ÅBaseATKŒvŽZ‚ðMATK2‚Å‚µ‚Ä‚Ý‚é +E‘§‚ð–{ŽIŽd—l•—‚ÉHP‚ÆSP‚̉ñ•œƒ^ƒCƒ}[‚𕪂¯‚ÄÀ‚Á‚Ä‚¢‚È‚‚Ä‚à“®‚©‚È‚¯‚ê‚΃^ƒCƒ}[‚ªi‚ނ悤‚É‚µ‚½ +Eˆ¢C—…Žg—pŒã‚ÉHP‚ÆSP‚ª5•ªŠÔŽ©‘R‰ñ•œ‚µ‚È‚¢–{ŽIŽg—p•—‚É‚µ‚½(csat_db.txt‚Ìupkeep_time2‚Å’²®‰Â”\) +EŒÃ‚¢gcc‚Åskill_unit_timer_sub_onplace()‚ ‚½‚è‚ŃRƒ“ƒpƒCƒ‹ƒGƒ‰[‚É‚È‚Á‚½‚Ì‚ðC³ + + (db/) + cast_db.txt + (map/) + battle.c + battle_calc_pet_weapon_attack() •ÏX + battle_calc_mob_weapon_attack() •ÏX + battle_calc_pc_weapon_attack() •ÏX + map.h + pc.c + pc_authok() •ÏX + pc_walk() •ÏX + pc_spirit_heal() íœ + pc_spirit_heal_hp() ’ljÁ + pc_spirit_heal_sp() ’ljÁ + pc_natural_heal_sub() •ÏX + skill.c + skill_additional_effect() •ÏX + skill_castend_damage_id() •ÏX + skill_status_change_start() •ÏX + skill_unit_timer_sub_onplace() C³ + +-------------------- +//0978 by (“Ê) +E“]¶ƒXƒLƒ‹‚ðC³‚µ‚½‚èFX + ƒXƒiƒCƒp[ ƒtƒ@ƒ‹ƒRƒ“ƒAƒTƒ‹ƒg ‚Æ‚è‚ ‚¦‚¸”ò‚Ô‚¾‚¯‚¾‚ÆŽv‚Á‚Ä‚‚¾‚³‚¢ + ƒXƒiƒCƒp[ ƒVƒƒ[ƒvƒVƒ…[ƒeƒBƒ“ƒO ƒ_ƒ[ƒW‘‰Á‚¾‚¯‚Ç1‘Ì‚¾‚¯ + ƒNƒ‰ƒEƒ“EƒWƒvƒV[ ƒAƒ[ƒoƒ‹ƒJƒ“ ƒ_ƒ[ƒW‘‰Á‚Æ9‰ñUŒ‚ + ƒnƒCƒEƒBƒU[ƒh ƒ}ƒWƒbƒNƒNƒ‰ƒbƒVƒƒ[ ƒGƒtƒFƒNƒg‚¾‚¯ + +EƒAƒCƒeƒ€ŒðŠ·‚Åd—Ê‚ÌŒvŽZ‚ªˆá‚Á‚Ä‚¢‚½‚Ì‚ðC³ + (doc/) + client_packet.txt ƒpƒPƒbƒg’·ƒe[ƒuƒ‹XV + (map/) + battle.c + battle_calc_misc_attack() •ÏX + battle_calc_pet_weapon_attack() •ÏX + battle_calc_mob_weapon_attack() •ÏX + battle_calc_pc_weapon_attack() •ÏX + clif.c ƒpƒPƒbƒg’·‚Ì’è‹`‚ðXV + skill.c + skill_castend_damage_id() •ÏX + trade.c + trade_tradeadditem() C³ + +-------------------- +//0977 by (“Ê) +E“]¶ƒXƒLƒ‹‚ðC³‚µ‚½‚èFX + ƒAƒTƒVƒ“ƒNƒƒX ƒƒeƒIƒAƒTƒ‹ƒg ƒGƒtƒFƒNƒg‚ªˆá‚¤H + ƒ[ƒhƒiƒCƒg ƒvƒŒƒbƒVƒƒ[ •K’†ƒ_ƒ[ƒW‚É‚µ‚Ä‚Ý‚½ + ƒ[ƒhƒiƒCƒg ƒI[ƒ‰ƒuƒŒ[ƒh‚Ì•K’†damage2‚ª‘¼‚Å‚à“K—p‚³‚ê‚Ä‚¢‚½‚Ì‚ðC³ + ƒ[ƒhƒiƒCƒg ƒSƒXƒyƒ‹ ƒGƒtƒFƒNƒgoŒ»ˆÊ’u‚Ì’²® + ƒnƒCƒvƒŠ[ƒXƒg ƒAƒVƒƒƒ“ƒvƒeƒBƒI Œø‰ÊŽÀ‘• + ƒnƒCƒvƒŠ[ƒXƒg ƒƒfƒBƒeƒCƒeƒBƒI Œø‰ÊŽÀ‘• + ƒnƒCƒvƒŠ[ƒXƒg ƒoƒWƒŠƒJ SG‚Ý‚½‚¢‚ÉMob‚ªN“ü‚µ‚悤‚Æ‚·‚é‚Æ‚«”ò‚΂³‚ê‚é‚悤‚É‚µ‚½ + ƒzƒƒCƒgƒXƒ~ƒX ƒJ[ƒgƒu[ƒXƒg Œø‰ÊŽÀ‘• + ƒzƒƒCƒgƒXƒ~ƒX ƒƒ‹ƒgƒ_ƒEƒ“ ƒGƒtƒFƒNƒg‚Æó‘ÔˆÙ펞ŠÔ‚¾‚¯(ŽÀÛ‚Ìó‘ԕω»‚Í–³‚µ) + ƒzƒƒCƒgƒXƒ~ƒX ƒNƒŠƒGƒCƒgƒRƒCƒ“ –¼‘O“ü‚è‚Ì‹à‰Ý‚Æ‚©ì‚ê‚邾‚¯ + ƒXƒg[ƒJ[ ƒŠƒWƒFƒNƒgƒ\[ƒh ƒGƒtƒFƒNƒg‚Æó‘ÔˆÙ펞ŠÔ‚¾‚¯(ŽÀÛ‚Ìó‘ԕω»‚Í–³‚µ) + ƒNƒ‰ƒEƒ“EƒWƒvƒV[ ƒ}ƒŠƒIƒlƒbƒgƒRƒ“ƒgƒ[ƒ‹ ƒGƒtƒFƒNƒg‚Æó‘ÔˆÙ펞ŠÔ‚¾‚¯(ŽÀÛ‚Ìó‘ԕω»‚Í–³‚µ) + ƒvƒƒtƒFƒbƒT[ ƒtƒHƒOƒEƒH[ƒ‹ ƒGƒtƒFƒNƒg‚Æ—LŒøŽžŠÔ‚¾‚¯ + ƒXƒiƒCƒp[ ƒEƒCƒ“ƒhƒEƒH[ƒN ‘¬“x㸂ÆQMAŽ„‚ð–Y‚ê‚È‚¢‚Å‚ª‚©‚©‚é‚Ɖ𜂳‚ê‚é‚悤‚É‚µ‚½ + ƒXƒiƒCƒp[ ƒgƒDƒ‹[ƒTƒCƒg QMAŽ„‚ð–Y‚ê‚È‚¢‚łʼn𜂳‚ê‚é‚悤‚É‚µ‚Ä‚Ý‚½ +EƒgƒDƒ‹[ƒTƒCƒg‚Ì’Ô‚èŠÔˆá‚¢‚ðC³ +Estorage.c‚ŃRƒ“ƒpƒCƒ‹Œx‚ªo‚È‚¢‚悤‚É‚µ‚½‚‚à‚è + + (db/) + cast_db.txt + skill_db.txt + skill_require_db.txt + produce_db.txt + (map/) + battle.c + battle_get_str() C³ + battle_get_agi() C³ + battle_get_vit() C³ + battle_get_int() C³ + battle_get_dex() C³ + battle_get_luk() C³ + battle_get_flee() C³ + battle_get_hit() C³ + battle_get_critical() C³ + battle_get_baseatk() C³ + battle_get_atk() C³ + battle_get_atk2() C³ + battle_get_def() C³ + battle_get_def2() C³ + battle_get_speed() C³ + battle_calc_damage() C³ + battle_calc_pet_weapon_attack() •ÏX + battle_calc_mob_weapon_attack() •ÏX + battle_calc_pc_weapon_attack() •ÏX + pc.c + pc_calcstatus() C³ + skill.c + skill_get_unit_id() C³ + skill_additional_effect() C³ + skill_castend_nodamage_id() C³ + skill_castend_pos2() C³ + skill_unit_group() C³ + skill_unit_onplace() C³ + skill_unit_onout() C³ + skill_castend_pos() C³ + skill_check_condition() C³ + skill_status_change_end() C³ + skill_status_change_start() C³ + skill_can_produce_mix() C³ + skill_produce_mix() C³ + skill.h C³ + storage.c + storage_comp_item() C³ + storage.h C³ + +-------------------- +//0976 by (“Ê) +E“]¶ƒXƒLƒ‹‚ðC³‚µ‚½‚èFX +E€”õ‚¾‚¯‚µ‚ÄŽÀ‘•‚Å‚«‚Ä‚È‚¢ƒXƒLƒ‹‚à‚ ‚è‚Ü‚· + ƒ[ƒhƒiƒCƒg ƒI[ƒ‰ƒuƒŒ[ƒh ‘½•ª‚±‚ñ‚ÈŠ´‚¶H + ƒ[ƒhƒiƒCƒg ƒpƒŠƒCƒ“ƒO ’µ‚Ë•Ô‚·‚¯‚ÇUŒ‚‚ð1‰ñŽ~‚ß‚é‚Ì‚Í–¢ŽÀ‘• + ƒ[ƒhƒiƒCƒg ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“ ƒCƒ“ƒfƒ…ƒA`‚Í—Ç‚•ª‚©‚ç‚È‚¢‚Ì‚Å•ú’u + ƒ[ƒhƒiƒCƒg ƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX ’Êíƒ_ƒ[ƒW‘‰Á‚Æd—ʃ_ƒ[ƒW‘‰Á‚ƈꉞ5‰ñUŒ‚(‚È‚ñ‚©ˆá‚¤‹C‚ª‚·‚é) + ƒ[ƒhƒiƒCƒg ƒwƒbƒhƒNƒ‰ƒbƒVƒ… ƒ_ƒ[ƒW‘‰Á‚ƃXƒe[ƒ^ƒX•ÏXH + ƒ[ƒhƒiƒCƒg ƒWƒ‡ƒCƒ“ƒgƒr[ƒg ƒ_ƒ[ƒW‘‰Á‚ƃXƒe[ƒ^ƒX•ÏXH + ƒAƒTƒVƒ“ƒNƒƒX ƒAƒhƒoƒ“ƒXƒhƒJƒ^[ƒ‹Œ¤‹† ‚½‚Ô‚ñ‚±‚ñ‚ÈŠ´‚¶H + ƒXƒiƒCƒp[ ƒgƒDƒ‹[ƒTƒCƒg ‚½‚Ô‚ñ‚±‚ñ‚ÈŠ´‚¶H + ƒXƒiƒCƒp[ ƒEƒBƒ“ƒhƒEƒH[ƒN ‚½‚Ô‚ñ‚±‚ñ‚ÈŠ´‚¶H‚Å‚à‘¬“x㸂Ƃ©‚Æ‹£‡‚µ‚½Žž‚̈—‚Í–¢ŽÀ‘• + ƒXƒpƒCƒ_[ƒEƒFƒbƒu ‚Æ‚è‚ ‚¦‚¸ƒAƒ“ƒNƒ‹ƒXƒlƒA‚Æ“¯‚¶‚悤‚ÈŠ´‚¶•‰ñ”𗦔¼Œ¸ + ƒ`ƒƒƒ“ƒsƒIƒ“ ‹¶‹CŒ÷ “K“–‚É‘‚₵‚Ä‚¢‚½‚Ì‚ð‚¿‚á‚ñ‚Æ‘‚â‚·‚悤‚É‚µ‚½ +EoŒŒó‘Ô‚ÆœÜó‘Ô‚ÌŽæ‚舵‚¢‚ª‚æ‚‚í‚©‚è‚Ü‚¹‚ñ‚ÁII + + (db/) + cast_db.txt + skill_db.txt + skill_require_db.txt + (doc/) + db_ref.txt + (map/) + battle.c + battle_get_str() C³ + battle_get_agi() C³ + battle_get_vit() C³ + battle_get_int() C³ + battle_get_dex() C³ + battle_get_luk() C³ + battle_get_flee() C³ + battle_get_hit() C³ + battle_get_critical() C³ + battle_get_baseatk() C³ + battle_get_atk() C³ + battle_get_atk2() C³ + battle_get_def() C³ + battle_get_def2() C³ + battle_get_speed() C³ + battle_calc_damage() C³ + clif.c + clif_parse_WalkToXY() C³ + mob.c + mob_can_move() C³ + mobskill_castend_pos() C³ + pc.c + pc_calcstatus() C³ + pc_checkallowskill() C³ + skill.c + skill_get_unit_id() C³ + skill_additional_effect() C³ + skill_castend_nodamage_id() C³ + skill_castend_pos2() C³ + skill_unit_group() C³ + skill_unit_onplace() C³ + skill_unit_onout() C³ + skill_castend_pos() C³ + skill_check_condition() C³ + skill_status_change_end() C³ + skill_status_change_start() C³ + skill_readdb() C³ + skill.h C³ +-------------------- +//0975 by Sin +E0973‚ÅŽÀ‘•‚³‚ꂽƒXƒNƒŠƒvƒg‚É‚æ‚éBaseLv, JobLv‚Ì•ÏXŽž‚ÉA +@ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚âƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðŽæ“¾‚Å‚«‚é‚悤‚ÉC³B +@¦Ž¿–âƒXƒŒpart5 >>115 ”Y‚ß‚él ‚³‚ñ‚Ìpc.c‚ðŽQl‚É‚³‚¹‚Ä’¸‚«‚Ü‚µ‚½B‘½ŽÓB + + (map/) + pc.c + pc_setparam() + case SP_BASELEVEL: C³ + case SP_JOBLEVEL: C³ +-------------------- +//0974 by latte +EƒOƒ‰ƒ“ƒhƒNƒƒX‚ð–{ŽI‚ÉŠî‚«C³ + ƒAƒ“ƒfƒbƒhˆ«–‚‹§ˆÃˆÅ•t—^ + ”½“®ƒ_ƒ[ƒW”¼Œ¸Aƒ‚[ƒVƒ‡ƒ“‚È‚µ + MOB(PC)‚ªd‚È‚Á‚½‚Æ‚«‚ÌHIT” + %UPŒn•ŠíƒJ[ƒhŒø‰Ê‚È‚µ + ‘®«‘Š«“ñdŒvŽZ + MOBƒ_ƒ[ƒW•\Ž¦”’ + + Œã”¼4€–Ú‚ÍÝ’è‰Â + +E퓬Šî–{ŒvŽZ‚ð–{ŽI‚ÉŠî‚«”÷C³iDEXƒTƒCƒY•â³A‹|Å’áƒ_ƒAPCƒTƒCƒY•â³j + +EŠ®‘S‰ñ”ð + ƒXƒ^ƒ““™‚ÅŠ®‘S‰ñ”ð‚ª”¶‚µ‚È‚©‚Á‚½‚Ì‚ðC³ + AGIVITƒyƒiƒ‹ƒeƒB‚ªŠ®‘S‰ñ”ð‚Ì“G‚àƒJƒEƒ“ƒg‚µ‚ÄŒvŽZ‚³‚ê‚Ä‚¢‚½‚Ì‚ðC³@Ý’è‰Â + ƒI[ƒgƒJƒEƒ“ƒ^[‚Í–¢C³ + +E‘qŒÉ‚ð•Â‚¶‚é‚Æ‚«AƒAƒCƒeƒ€ID‚Ń\[ƒg‚·‚é‚悤‚É‚µ‚½ + +Ekalen‚³‚ñ‚̃vƒ‚PŽ·Ž–NPCƒXƒNƒŠƒvƒg‚ð‰ü‘¢‚µ‚Ä + ¤‹Æ–h‰q’lA“ŠŽ‘‹àŠzA•ó” ‚Ì”‚ð–{ŽI‚É€‹’(¤‹Æ’l‚Í1~100) + ‘SÔ‚ÉÝ’u + + (/script/npc) + aldeg_cas01.txt ... prtg_cas05.txt C³ + (/script/npc/gvg) + aldeg_cas01.txt ... prtg_cas05.txt ’ljÁ + tbox.txt ’ljÁ + + (/conf) + battle_athena.conf + 6€–ڒljÁ + + (/map) + mob.c/mob.h + mob_attack() C³ + mob_counttargeted_sub(),mob_counttargeted() C³ + mobskill_use() C³iª‚̈ø”‚¾‚¯j + pc.c/pc.h + pc_counttargeted_sub(),pc_counttargeted() C³ + pc_attack_timer() C³ + pet.c + pet_attack() C³ + + map.h + pc_data, mob_data, map_data •Ï”‚P‚’ljÁ + enum1‚’ljÁ + map.c/map.h + map_count_oncell() ’ljÁ skill.c‚Å‚æ‚©‚Á‚½‚©‚àEEE + + skill.c + GXŠÖ˜AC³(skill_additional_effect(), skill_attack(), skill_castend_damage_id(), skill_unit_onplace()) + + battle.c C³ + battle.h C³ + + storage.c/storage.h + storage_comp_item() ’ljÁ + sortage_sortitem(), sortage_gsortitem() ’ljÁ + storage_storageclose(), storage_guild_storageclose() C³ +-------------------- +//0973 by Ž‚Žqo^.^o +EƒXƒNƒŠƒvƒg‚ÌBASELEVEL,JOBLEVEL–½—ߒljÁ + —á: set BASELEVEL,1; + —á: set JOBLEVEL,1; + (map/) + pc.c + pc_setparam() + case SP_BASELEVEL: €–ڒljÁ + case SP_JOBLEVEL: €–ڒljÁ + +-------------------- +//0972 by (“Ê) +E“]¶ƒXƒLƒ‹‚ðƒGƒtƒFƒNƒg‚¾‚¯‚¢‚‚‚©’ljÁ‚µ‚½‚è +Eó‘ԕω»‚Í‚»‚Ì‚¤‚¿’N‚©‚ª + ƒGƒtƒFƒNƒg(ƒXƒe[ƒ^ƒX•Ï‰»ƒAƒCƒRƒ“ŠÜ‚Þ)‚Ì‚Ý + SC_AURABLADE: /* ƒI[ƒ‰ƒuƒŒ[ƒh */ + SC_PARRYING: /* ƒpƒŠƒCƒ“ƒO */ + SC_CONCENTRATION: /* ƒRƒ“ƒZƒ“ƒgƒŒ[ƒVƒ‡ƒ“ */ + SC_TENSIONRELAX: /* ƒeƒ“ƒVƒ‡ƒ“ƒŠƒ‰ƒbƒNƒX */ + SC_BERSERK: /* ƒo[ƒT[ƒN */ + SC_ASSUMPTIO: /* */ + SC_TURESIGHT: /* ƒgƒDƒ‹[ƒTƒCƒg */ + SC_CARTBOOST: /* ƒJ[ƒgƒu[ƒXƒg */ + SC_WINDWALK: /* ƒEƒCƒ“ƒhƒEƒH[ƒN */ + + (db/) + cast_db.txt + (map/) + skill.h + skill.c + SkillStatusChangeTable[] €–ڒljÁ + skill_castend_nodamage_id() €–ڒljÁ + skill_status_change_end() €–ڒljÁ + skill_status_change_start() €–ڒljÁ + +-------------------- +//0971 by (“Ê) +Eatcommand.h‚ÉŽc‚Á‚Ä‚¢‚½jobchange2‚Æ‚©‚ÌŽcŠ[‚ðíœ +E“]¶ƒXƒLƒ‹‚ðƒGƒtƒFƒNƒg‚¾‚¯‚¢‚‚‚©’ljÁ‚µ‚½‚èƒ`ƒƒƒ“ƒsƒIƒ“‚Í‚»‚ê‚È‚è‚ɒljÁ‚µ‚½‚è + ƒGƒtƒFƒNƒg‚Ì‚Ý + ƒnƒCƒvƒŠ[ƒXƒg ƒoƒWƒŠƒJ(HP_BASILICA) + ƒzƒƒCƒgƒXƒ~ƒX ƒJ[ƒgƒu[ƒXƒg(WS_CARTBOOST) + ƒXƒiƒCƒp[ ƒgƒDƒ‹[ƒTƒCƒg(SN_SIGHT) + ƒWƒvƒV[ ŒŽ–¾‚è‚Ìò‚É—Ž‚¿‚é‰Ô‚Ñ‚ç(CG_MOONLIT) + ƒpƒ‰ƒfƒBƒ“ ƒSƒXƒyƒ‹(PA_GOSPEL) + ’ljÁƒ_ƒ[ƒW“™‚È‚µ + ƒ[ƒhƒiƒCƒg ƒwƒbƒhƒNƒ‰ƒbƒVƒ…(LK_HEADCRUSH) + ƒ[ƒhƒiƒCƒg ƒWƒ‡ƒCƒ“ƒgƒr[ƒg(LK_JOINTBEAT) + ƒ[ƒhƒiƒCƒg ƒXƒpƒCƒ‰ƒ‹ƒsƒA[ƒX(LK_SPIRALPIERCE) + ƒpƒ‰ƒfƒBƒ“ ƒvƒŒƒbƒVƒƒ[(PA_PRESSURE) + ƒpƒ‰ƒfƒBƒ“ ƒTƒNƒŠƒtƒ@ƒCƒX(PA_SACRIFICE) + ‚»‚ê‚È‚è(ƒRƒ“ƒ{‚ÍŒq‚ª‚è‚Ü‚·‚ªƒfƒBƒŒƒC‚Í“K“–Aƒ_ƒ[ƒW’ljÁ‚Í‚ ‚邯‚Ç‚»‚êˆÈŠO‚̒ljÁŒø‰Ê‚Í–³‚µ) + ƒ`ƒƒƒ“ƒsƒIƒ“ –ÒŒÕd”hŽR(CH_PALMSTRIKE) + ƒ`ƒƒƒ“ƒsƒIƒ“ •šŒÕŒ(CH_TIGERFIST) + ƒ`ƒƒƒ“ƒsƒIƒ“ ˜A’Œ•öŒ‚(CH_CHAINCRUSH) + ƒ`ƒƒƒ“ƒsƒIƒ“ ‹¶‹CŒ÷(CH_SOULCOLLECT) + + (db/) + cast_db.txt + skill_db.txt + skill_require_db.txt + (map/) + atcommand.h ƒSƒ~íœ + battle.c + battle_calc_pet_weapon_attack() •ÏX + battle_calc_mob_weapon_attack() •ÏX + battle_calc_pc_weapon_attack() •ÏX + clif.c + clif_parse_UseSkillToId() •ÏX + skill.c + skill_get_unit_id() €–ڒljÁ + skill_attack() ƒ`ƒƒƒ“ƒsƒIƒ“ƒRƒ“ƒ{ˆ—’ljÁ + skill_castend_damage_id() •ÏX + skill_castend_nodamage_id() •ÏX + skill_castend_id() •ÏX + skill_unitsetting() •ÏX + skill_check_condition() •ÏX + skill_use_id() •ÏX + +-------------------- +//0970 by (“Ê) +EƒhƒŒƒCƒN‚̃EƒH[ƒ^[ƒ{[ƒ‹‚ªˆÙí‚É’É‚¢(121”H‚炤)‚Ì‚ÅLv5ˆÈã‚ÌꇂÍ25”‚ɧŒÀ +EƒVƒOƒiƒ€ƒNƒ‹ƒVƒX‚ÌŒvŽZŽ®‚ð14+SkillLv‚©‚ç10+SkillLv*2•ÏX +Eƒ\[ƒX‚Ì‹C‚ªŒü‚¢‚½‚Æ‚±‚ë‚É—Ž‘‚« +EDBŠÖŒW‚ð‚Ü‚Æ‚ß‚Ä“¯« + + (map/) + battle.c ƒRƒƒ“ƒgQY(BB)¶·¶· + skill.c skill_status_change_start() + (db/) + cast_db.txt + item_db.txt + mob_skill_db.txt + skill_db.txt + skill_require_db.txt + skill_tree.txt + +-------------------- +//0969 by ‚Ò‚´‚Ü‚ñ + +E”’nŽæ‚èó‘ԂŕЕû‚ªŽ€–S‚µ‚½ê‡A•Ð•û‚Ì”’nŽæ‚肪‰ðœ‚³‚ê‚È‚¢–â‘èC³ +Ebattle_athena.conf‚É€–ڒljÁ +@ƒyƒbƒgEƒvƒŒƒCƒ„[Eƒ‚ƒ“ƒXƒ^[‚Ì–³‘®«’ÊíUŒ‚‚ð‘®«–³‚µ‚É‚·‚é‚©”Û‚©‚ðÝ’è‚Å‚«‚Ü‚· +@Ú‚µ‚‚Íconf_ref‚ðB +E—ƒRƒ}ƒ“ƒh@idsearchŽÀ‘• +@ƒ[ƒh‚µ‚½item_db‚©‚猟õŒê‹å‚Ƀ}ƒbƒ`‚·‚éƒAƒCƒeƒ€‚ÆID‚ð—…—ñ‚·‚éƒRƒ}ƒ“ƒh‚Å‚· +@—Ⴆ‚Îu@idsearch ƒŒƒCv‚Æ“ü—Í‚µ‚½ê‡AƒuƒŒƒCƒh‚⃌ƒCƒhƒŠƒbƒNƒJ[ƒh“™‚ªˆø‚Á‚©‚©‚è‚Ü‚· +EƒAƒVƒbƒhƒeƒ‰[‚ƃfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“ŽÀ‘• +@‘•”õ”j‰ó‚Í–¢ŽÀ‘•‚Å‚· +EƒCƒhƒDƒ“‚Ì—ÑŒç‚̉ñ•œŽd—l‚ðŠÛ‚²‚Æ•ÏXB + (map/) + battle.c + battle.h + ‘®«•â³‚ÌC³‚âƒAƒVƒbƒhƒeƒ‰[Eƒfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“‚̃_ƒ[ƒWŽZoŽ®’ljÁ“™B + battle_config‚É€–ڒljÁ + skill.c + skill_idun_heal()’ljÁBforeachinarea‚ň—‚·‚é‚悤‚É•ÏX + ƒAƒVƒbƒhƒeƒ‰[‚ƃfƒ‚ƒ“ƒXƒgƒŒ[ƒVƒ‡ƒ“‚̈—’ljÁB + atcommand.c + atcommand.h + @idsearch’ljÁB + +-------------------- +//0968 by ŒÓ’±—– + +EƒLƒƒƒ‰ƒNƒ^[ID‚ªŽg‚¢‚܂킳‚ê‚È‚¢‚悤‚ÉC³ +EƒLƒƒƒ‰ƒNƒ^[휎žAƒp[ƒeƒB[AƒMƒ‹ƒh‚ð’E‘Þ‚·‚é‚悤‚ÉC³ +EƒAƒJƒEƒ“ƒg휎žAƒLƒƒƒ‰ƒNƒ^[‚Æ‘qŒÉ‚ð휂·‚é‚悤‚ÉC³ +E‘qŒÉ/ƒMƒ‹ƒh‘qŒÉ휎žA‘qŒÉ“à‚̃yƒbƒg‚ð휂·‚é‚悤‚ÉC³ + E’ˆÓFƒƒOƒCƒ“‚µ‚Ä‚¢‚éƒAƒJƒEƒ“ƒg‚ð휂µ‚½ê‡‚Ì“®ì‚Í•s–¾ + + (char/) + char.c + ƒpƒPƒbƒg2730‚̈—Achar_delete()’ljÁA휈—C³‚È‚Ç + int_storage.c/int_party.c/int_guild.c/int_party.h/int_guild.h + inter_party_leave(),inter_guild_leave()’ljÁA + inter_storage_delete(),inter_guild_storage_delete()C³‚È‚Ç + (login/) + login.c + parse_admin()‚ðƒAƒJƒEƒ“ƒg휎ž‚ɃpƒPƒbƒg2730‚ð‘—‚é‚悤‚ÉC³ + +Eathena-start stop ‚Å’âŽ~‚³‚¹‚½ê‡Aƒf[ƒ^‚ª•Û‘¶‚³‚ê‚È‚¢–â‘è‚ðC³ + kill‚Å‘—‚éƒVƒOƒiƒ‹‚ðSIGKILL‚©‚çSIGTERM‚É•ÏXB + ‚Ç‚¤‚µ‚Ä‚àSIGKILL‚𑗂肽‚¢ê‡‚Í athena-start kill ‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B + + athena-start + stopC³Akill’ljÁ + +-------------------- +//0967 by Asong +Eƒ‚ƒ“ƒXƒ^[‚ÌŽc‰e‚ðŽÀ‘•B +@’Ê탂ƒ“ƒXƒ^[‚̓XƒLƒ‹‚É‚æ‚éƒtƒBƒ‹ƒ^[‚ª‚©‚©‚ç‚È‚¢‚Ì‚ÅŽc‘œ‚ªo‚Ü‚¹‚ñB +@‚o‚bŒ^ƒ‚ƒ“ƒXƒ^[‚É‚ÍŽc‘œ‚ªo‚Ü‚·B +Eƒ‚ƒ“ƒXƒ^[ƒXƒLƒ‹Žg—p‘ÎÛ‚ð’ljÁB +@around5`around8‚̓^[ƒQƒbƒg‚ÌŽü•ÓƒZƒ‹‚ð‘ÎÛ‚É‚µ‚Ü‚·B +@ +@ (map) +@ mob.c +@ mobskill_use() C³ +@ mob_readskill() C³ +@ mob.h C³ +@ skill.c +@ skill_castend_pos2() C³ + +-------------------- +//0966 by (“Ê) +EƒT[ƒo[snapshot +EƒfƒBƒŒƒNƒgƒŠ\‘¢‚ð•ÏX(common,login,char,map‚Í/srcˆÈ‰º‚Ɉړ]) +@‚»‚ê‚É”º‚¤Makefile“™‚̃pƒX‘‚«Š·‚¦ +Enpc_turtle.txt‚ðnpc_town_alberta.txt‚É“‡ +Eƒ‚ƒ“ƒN‚̃Rƒ“ƒ{‚ÉŠÖ‚·‚éƒfƒBƒŒƒC‚ð•ÏX +Ebattle_config.enemy_critical‚̃fƒtƒHƒ‹ƒg‚ðno‚É•ÏX +E“]¶E“™‚𖳌ø‚É‚·‚éenable_upper_class‚̒ljÁ +E@joblvup,@charjlvl‚ÅJobƒŒƒxƒ‹‚ªÅ‚‚Ì‚Æ‚«‚É•‰”‚ðŽw’肵‚Ä‚àƒŒƒxƒ‹‚ð‰º‚°‚ç‚ê‚È‚©‚Á‚½–â‘è‚ðC³ + + (conf) + battle_athena.conf C³ + (doc) + conf_ref.txt C³ + (map) + atcommand.c + atcommand_joblevelup() C³ + atcommand_character_joblevel() C³ + battle.c + battle_calc_attack() C³ + battle_config_read() C³ + battle.h C³ + pc.c + pc_calc_skilltree() C³ + pc_calc_base_job() C³ + pc_jobchange() C³ + pc_readdb() C³ + skill.c + skill_attack() C³ +-------------------- +//0965 by ‚Ò‚´‚Ü‚ñ +E@mapexitŽÀsŽž‘SƒZƒbƒVƒ‡ƒ“‚ðkick‚·‚é‚悤‚É•ÏXB +E”’nŽæ‚莞‚ɕЕû‚ª“|‚ê‚Ä‚àA‚à‚¤•Ð•û‚Ì”’n‚ª‰ðœ‚³‚ê‚È‚¢–â‘èC³B(–¢ƒeƒXƒg) +EƒXƒeƒB[ƒ‹î•ñŒöŠJ‹@”\ŽÀ‘•B(–¢ƒeƒXƒg) +@ƒXƒeƒB[ƒ‹‚ɬŒ÷‚·‚é‚ÆA‰½‚ðƒXƒeƒB[ƒ‹‚µ‚½‚Ì‚© +@‰æ–Ê“à‚ÌPTƒƒ“ƒo[‘Sˆõ‚É’m‚点‚é‹@”\‚Å‚·B +@battle_athena.conf‚Ìshow_steal_in_same_party‚ÅÝ’è‚Å‚«‚Ü‚·B +@ƒIƒŠƒWƒiƒ‹ƒAƒbƒvƒf[ƒg‚̈×AƒfƒtƒHƒ‹ƒg‚Íno‚É‚µ‚Ä‚¢‚Ü‚·B +EƒCƒhƒDƒ“‚Ì—ÑŒç‚̉ñ•œŒø‰ÊŽÀ‘•B + + (conf/) + battle_athena.conf‚É€–ڒljÁB + (map/) + atcommand.c + atcommand_mapexit() C³B + pc.c + pc_steal_item() C³B + pc_show_steal() ’ljÁB + skill.c + skill_unitsetting()Askill_unit_onplace() C³B + battle.c + battle_config_read() C³B + battle.h C³B + (doc/) + conf_ref.txt ”²‚¯‚Ä‚½‚Ì‚ðFX’ljÁB + +-------------------- +//0964 by (“Ê) + +E‚±‚Ì‘O’ljÁ‚µ‚½skill_tree2.txt‚ð”pŽ~‚µ‚½‚Ì‚Å휂µ‚Ä‚‚¾‚³‚¢ +Eskill_tree.txt‚̃tƒH[ƒ}ƒbƒg‚ð•ÏX•Kalen‚³‚ñ‚È‚Ç‚Ìî•ñ‚ðŒ³‚É“]¶ƒcƒŠ[‚ÌŒ©’¼‚µ +E‚»‚ê‚É‚Æ‚à‚È‚Á‚Äpc.c‚̃tƒ@ƒCƒ‹“Ç‚Ýo‚µ•”•ª‚È‚Ç‚ð•ÏX +EAthenaŽG’kƒXƒŒƒbƒh part3 >>14 miya‚³‚ñ‚ÌŽw“E‚ª‚ ‚é‚Ü‚Å‚·‚Á‚©‚è–Y‚ê‚Ä‚¢‚½atcommand_athena.conf‚ÌC³‚𓯫 + + (conf/) + atcommand_athena.conf C³ + (db/) + skill_tree.txt C³ + skill_tree2.txt ”pŽ~ + (map/) + map.h PC_CLASS_BASE“™’ljÁ + pc.c + pc_calc_skilltree() C³ + pc_allskillup() C³ + pc_readdb() C³ + +-------------------- +//0963 by (“Ê) + +E@jobchange2, @jobchange3”pŽ~ @jobchange‚Ɉø”’ljÁ @helpŽQÆ + —á: @jobchange2 10 ¨ @jobchange 10 1 +E“¯—l‚É@charjob2, @charjob3”pŽ~ @charjob‚Ɉø”’ljÁ @helpŽQÆ + —á: @charjob2 10 ‚Ù‚°‚Ù‚° ¨ @charjob 10 1 ‚Ù‚°‚Ù‚° +E“¯—l‚ɃXƒNƒŠƒvƒg‚Ìjobchange2, jobchange3–½—ß”pŽ~ jobchange‚Ɉø”’ljÁ script_ref.txtŽQÆ + —á: jobchange2 10; ¨ jobchange 10,1; +Eª‚Ç‚ê‚à’ljÁ‚³‚ꂽˆø”‚ÍÈ—ª‰Â”\‚Å‚·B‚È‚Ì‚ÅA“]¶ƒm[ƒrƒX‚ÍŒ»ó‚̃XƒNƒŠƒvƒg‚Å“]¶ˆêŽŸE‚É“]E‚Å‚«‚Ü‚·B + —á: Novice High ¨ @jobchange 10 ¨ Whitesmith + Novice ¨ @jobchange 10 ¨ Blacksmith +EƒXƒNƒŠƒvƒg‚©‚ç“]¶‚µ‚Ä‚¢‚é‚©”»’è‚·‚邽‚ß‚ÉUpper‚ð’ljÁ‚µ‚Ü‚µ‚½BUpper 0=’Êí, 1=“]¶, 2=—{Žq + Upper=0‚ÌŽž‚ÉBaseLevel=99‚È‚ç“]¶‚³‚¹‚é`‚Æ‚©‚»‚¤‚¢‚¤ƒXƒNƒŠƒvƒg’N‚©‘‚¢‚Ä‚‚¾‚³‚¢ + ‚»‚ÌŽž‚ÉŒ³‚ÌE‹Æ‚Í‹L‰¯‚µ‚Ä‚¢‚È‚¢‚̂ʼni‘±•Ï”‚Æ‚©‚ÅŠo‚¦‚³‚¹‚Ä”»’肳‚¹‚È‚¢‚Æ“]¶Œã‰½‚É‚Å‚à“]E‚Å‚«‚¿‚ႤH +EƒoƒCƒIƒvƒ‰ƒ“ƒg‚ƃXƒtƒBƒAƒ}ƒCƒ“‚ŌĂÑo‚³‚ê‚éMob‚Ì–¼‘O‚ð--ja--‚É‚µ‚Ämob_db.txt‚©‚ç“ǂނ悤‚É‚µ‚½ + + (conf/) + help.txt C³ + (db/) + const.txt + (doc/) + help.txt C³ + script_ref.txt C³ + (map/) + atcommand.c + atcommand_jobchange() C³ + atcommand_jobchange2() íœ + atcommand_jobchange3() íœ + atcommand_character_job() C³ + atcommand_character_job2() íœ + atcommand_character_job3() íœ + map.h C³ + pc.c + pc_readparam() C³ + pc_jobchange() C³ + pc.h C³ + script.c + buildin_jobchange() C³ + buildin_jobchange2() íœ + buildin_jobchange3() íœ + skill.c + skill_castend_pos2() C³ + +-------------------- +//0962 by (“Ê) + +EE‹Æ‚Í0`23‚ň—‚µ‚½‚¢‚Ì‚Å“]¶E—p‚̃XƒLƒ‹ƒcƒŠ[’ljÁAeAthena‚ðŽQl‚ÉŠg’£ + ‚Á‚Ä‚¢‚¤‚©ŠØ‘–{ƒT[ƒo‚Å‚ÌŽÀ‘•‚ÌŽ‘—¿‚ªŒ©“–‚½‚ç‚È‚¢‚Ì‚Å“K“– +Esakexe.exe‚ð‰ðÍ‚µ‚Äskill_db.txt•ÏXA‚±‚ê‚àeAthena‚ðŽQl‚ÉŠg’£ + ‚ǂꂪ–{ƒT[ƒo‚ÅŽÀ‘•‚³‚ê‚Ä‚¢‚éƒXƒLƒ‹‚©•ª‚©‚è‚Ü‚¹‚ñ‚ÁII +¦ƒXƒLƒ‹ƒcƒŠ[‚ª•\Ž¦‚³‚ꂽ‚©‚ç‚Æ‚¢‚Á‚ÄŽg‚¦‚é‚킯‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ÁII + + (common/) + mmo.h ’è”C³ + (db/) + skill_db.txt •ÏX + skill_require_db.txt •ÏX + skill_tree2.txt ’ljÁ + (map/) + skill.h ’è”C³ + pc.c + pc_calcstatus() C³ + pc_allskillup() C³ + pc_calc_skilltree() C³ + pc_readdb() C³ + +-------------------- +//0961 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚ɃTƒuƒ‹[ƒ`ƒ“/ƒ†[ƒU[’è‹`ŠÖ”‹@”\’ljÁ + Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚Æscript_ref.txt‚ð“Ç‚ñ‚Å‚‚¾‚³‚¢B + ’n–¡‚É‘å‰ü‘¢‚È‚Ì‚ÅAƒXƒNƒŠƒvƒgŠÖŒW‚ŃoƒO‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + + (map/) + map.h/map.c + struct map_session_data ‚ɃXƒNƒŠƒvƒgî•ñ‘Þ”ð—p‚̃ƒ“ƒo’ljÁ + map_quit()C³ + script.h/script.c + FXC³(run_script(),run_func()‚ªŽå) + npc.c + npc_parse_function()’ljÁ‘¼ + (conf/sample) + npc_test_func.txt + ƒ†[ƒU[’è‹`ŠÖ”/ƒTƒuƒ‹[ƒeƒBƒ“‚̃eƒXƒgƒXƒNƒŠƒvƒg + (doc/) + script_ref.txt + ƒTƒuƒ‹[ƒeƒBƒ“‚È‚Ç‚Ìà–¾’ljÁ + +-------------------- +//0960 by (“Ê) +E–{ŽI‘ŠˆáƒXƒŒƒbƒh part2 >>62 KK‚³‚ñ‚̃Aƒ“ƒNƒ‹ƒXƒlƒAC³‚𓯫 +EƒoƒO•ñƒXƒŒƒbƒh part5 >>14-16 rb‚³‚ñ‚̃oƒOC³‚𓯫 +EFor English User Forum >>15 Mugendai‚³‚ñ‚ÌŽw“E‚Å0x1d7‚ðŽg‚¤‚Ì‚ÍVal>255‚ÉC³(0xc3‚ÌVal‚Í1ƒoƒCƒg‚¾‚©‚ç0x1d7‚ðŽg‚¤‚Ì‚©‚Æ”[“¾) +Epc_calc_base_job()‚ð•ÏX‚µ‚ÄŒ³job‚¾‚¯‚Å‚È‚ƒmƒr‚©ˆêŽŸE‚©“ñŽŸE(type)A’Êí‚©“]¶‚©—{Žq(upper)‚ð•Ô‚·‚悤‚É‚µ‚½ + + (map/) + atcommand.c + atcommand_joblevelup() C³ + atcommand_character_joblevel() C³ + clif.c + clif_changelook() C³ + pc.h C³ + pc.c + pc_setrestartvalue() C³ + pc_equippoint() C³ + pc_isequip() C³ + pc_calc_skilltree() C³ + pc_calcstatus() C³ + pc_isUseitem() C³ + pc_calc_base_job() C³ + pc_allskillup() C³ + pc_damage() C³ + pc_jobchange() C³ + pc_equipitem() C³ + script.c + buildin_changesex() C³ + skill.c + skill_castend_nodamage_id() C³ + skill_unit_onplace() C³ + +-------------------- +//0959 by (“Ê) +Ehelp.txt‚ªdoc‚¶‚á‚È‚‚Äconf‚Ì‚ª“Ç‚Ýo‚³‚ê‚Ä‚½Q|P|› +Egamejoke‚ðŽQl‚É“]¶“ñŽŸE‚̃Xƒe[ƒ^ƒX‰Ád’l‚ðjob_db2-2.txt‚É‹Lq +EƒXƒNƒŠƒvƒg‚Éjobchange2‚Æjobchange3‚ð’ljÁ‚»‚ꂼ‚ê“]¶E‚Æ—{ŽqE‚Ö“]E‚³‚¹‚é–½—ß‚Å‚· + + (conf/) + help.txt C³ + (db/) + job_db2.txt C³ + job_db2-2.txt ’ljÁ + (doc/) + help.txt C³ + script_ref.txt C³ + (map/) + pc.c + pc_calcstatus() C³ + pc_readdb() C³ + script.c + buildin_jobchange() C³ + buildin_jobchange2() ’ljÁ + buildin_jobchange3() ’ljÁ + +-------------------- +//0958 by (“Ê) +E“]¶E•û–Ê‚ÌŽÀ‘•‚ðFX +Ed—ʧŒÀ‚Í—Ç‚•ª‚©‚ç‚È‚¢‚Ì‚ÅŒ³‚ÌE‹Æ‚Ì’l‚ð‚»‚Ì‚Ü‚ÜŽg‚Á‚Ä‚¢‚Ü‚·(ƒ‚ƒ“ƒNƒ`ƒƒƒ“ƒsƒIƒ““™) +E‘•”õ•i‚à“¯ãAHP‚âSP‚̃e[ƒuƒ‹‚à“¯ã‚È‚Ì‚ÅA“]¶‚µ‚Ä‚àHP‚È‚Ç‚ª‘‚¦‚È‚¢ƒKƒbƒJƒŠŽd—l‚Å‚· + + (map/) + atcommand.c + atcommand_joblevelup() C³ + atcommand_character_joblevel() C³ + pc.c + pc_setrestartvalue() C³ + pc_equippoint() C³ + pc_isequip() C³ + pc_calcstatus() C³ + pc_isUseitem() C³ + pc_calc_base_job() ’ljÁ + pc_damage() C³ + pc_jobchange() C³ + pc_equipitem() C³ + pc.h C³ + script.c + buildin_changesex() C³ + skill.c + skill_castend_nodamage_id() C³ + +-------------------- +//0957 by (“Ê) +E@charjob2‚Æ@charjob3‚ð’ljÁAŠÖŒW‚Æ‚µ‚Ä‚Í@charjobÌ@jobchangeA@charjob2Ì@jobchange2A(ry +E@mapexit‚ð’ljÁAmap-server‚ð—Ž‚Æ‚·ƒRƒ}ƒ“ƒh‚Å‚·atcommand_athena.conf‚Å‚Í99Ý’è‚É‚³‚ê‚Ä‚Ü‚·‚Ì‚ÅŽg—p‚É‚Í\•ª’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + + (map/) + atcommand.c + atcommand_character_job2() ’ljÁ + atcommand_character_job3() ’ljÁ + atcommand.h C³ + (conf/) + atcommand_athena.conf C³ + (doc/) + help.txt C³ + +-------------------- +//0956 by (“Ê) +E“]¶E‰¼ŽÀ‘•(@jobchange2)AŒ©‚½–Ú‚ÆŒoŒ±’lƒe[ƒuƒ‹‚¾‚¯‚Å‚· +E—{ŽqE‰¼ŽÀ‘•(@jobchange3)AŒ©‚½–Ú‚¾‚¯‚Å‚·Œ»ó‚Å‚ÍŒoŒ±’l‚Í“]¶“ñŽŸE‚Æ“¯‚¶‚Æ‚¢‚¤ƒ}ƒ]Žd—l +¦ã‹L2“_‚Í“]¶E‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚éƒNƒ‰ƒCƒAƒ“ƒg‚Å‚È‚¯‚ê‚ÎŽÀs‚·‚é‚ƃGƒ‰[—Ž‚¿‚·‚é‚Ì‚Å’ˆÓII +@‚»‚̌㒼ڃZ[ƒuƒf[ƒ^‚ð˜M‚ç‚È‚¢‚ƃLƒƒƒ‰ƒZƒŒ‚É‚às‚¯‚È‚‚È‚è‚Ü‚·II +EAthenaŽG’kƒXƒŒƒbƒh part2 >>149 ‹HŽ}‚³‚ñ‚Ì•ñ‚ðŒ³‚ÉƒK[ƒfƒBƒAƒ“‚ðC³ +EԈȊO‚ŃK[ƒfƒBƒAƒ“‚Æ‚©ƒGƒ“ƒyƒŠƒEƒ€‚ð‰£‚é‚Æmap-server‚ª—Ž‚¿‚Ä‚¢‚½‚Ì‚àC³(–¢Šm”F) +EƒXƒpƒmƒr‚ÌJobƒe[ƒuƒ‹‚ÍFor English User Forum >>13 kingbo‚³‚ñ‚̃f[ƒ^‚ðŒ³‚ÉC³ +E“]¶E‚ÌŒoŒ±’lƒe[ƒuƒ‹‚ÍOWN‚ðŽQÆ‚µ‚ÄBase99‚ÌŒoŒ±’l‚Í•s–¾‚¾‚Á‚½‚Ì‚Å“K“–‚ÉÝ’è + + (map/) + atcommand.c + atcommand_jobchange() C³ + atcommand_jobchange2() ’ljÁ + atcommand_jobchange3() ’ljÁ + atcommand.h C³ + clif.c + clif_changelook() C³ + pc.c + pc_nextbaseexp() C³ + pc_nextjobexp() C³ + pc_jobchange() C³ + pc_readdb() C³ + battle.c + battle_calc_damage() C³ + mob_can_reach() C³ + +-------------------- +//0955 by huge +Eƒyƒbƒg‚̃‹[ƒg‹@”\B + EŽd—l‚Ímob‚̃‹[ƒg‚É‹ß‚¢Š´‚¶‚Å‚·‚ªAŽË’ö‚ð’Z‚‚µ‚Ä‚Ü‚·B + EE‚Á‚½ƒAƒCƒeƒ€‚ÍAƒpƒtƒH[ƒ}ƒ“ƒX‚ð‚·‚é‚Æ°‚É—Ž‚Æ‚µ‚Ü‚·B + E—‘‚É–ß‚µ‚½‚èAƒƒOƒIƒt‚µ‚½‚Æ‚«‚ÍPC‚̎茳‚É“ü‚é‚悤‚É‚µ‚Ü‚µ‚½B(d—Ê’´‰ß‚̓hƒƒbƒv) + EE‚¦‚éŒÂ”‚̓‹[ƒgmob“¯—l‚Ì10ŒÂ‚Å‚·‚ªA11ŒÂ–Ú‚ÍE‚¢‚És‚«‚Ü‚¹‚ñB + Eƒ‹[ƒgŒ ‚Ì–â‘è‚©‚çAƒAƒCƒeƒ€‚Éfirst_id‚ª“ü‚Á‚Ä‚¢‚ÄA‚»‚ꂪŽ”‚¢ŽåˆÈŠO‚¾‚Á‚½‚çA‰½•bŒo‚Æ‚¤‚ÆE‚¢‚Ü‚¹‚ñB(–¢Šm”F) + E‚»‚ê‚ÆA‰×•¨Ž‚¿‚É‚³‚ê‚é‚Ɖˆ£‘z‚È‚Ì‚ÅAd—ʧŒÀ‚à‚‚¯‚Ü‚µ‚½B‚±‚ê‚Íconf‚ÅÝ’è‰Â”\‚Å‚·B +Eatcommand‚ÅA@where‚ª‚¤‚Ü‚“‚¢‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³(‚Ü‚½ƒEƒ`‚¾‚¯‚©‚È‚Ÿ¥¥¥j +E@memo‚Åmemo‚·‚鎞‚ÍAmapflag‚𖳎‹‚·‚é‚悤‚ÉB +EƒXƒtƒBƒAƒ}ƒCƒ“‚Ì–¼‘O‚¾‚¯C³B + + (conf/) + battle_athena.conf + pet_lootitem,pet_weight ’ljÁ + (doc/) + conf_ref.txt C³ + (map/) + atcommand.c + atcommand_memo() C³ + atcommand_where() C³ + battle.c + battle_config_read() C³ + battle.h C³ + map.c + map_quit() C³ + map.h + pet_data{} C³ + pc.c + pc_memo() C³ + pet.c + pet_performance() C³ + pet_return_egg() C³ + pet_data_init() C³ + pet_ai_sub_hard() C³ + pet_lootitem_drop() ’ljÁ + pet_delay_item_drop2() ’ljÁ + pet_ai_sub_hard_lootsearch() ’ljÁ + pet.h C³ + skill.c + skill_castend_pos2() C³ + +-------------------- +//0954 by (“Ê) +Eobject_del.bat‚ÅŠeserver.exe‚à휂·‚é‚悤‚É‚µ‚½ +EFor English User Forum >>11 kingbo‚³‚ñ‚ÌC³‚ðŽæ‚èž‚Ý +EƒoƒO•ñƒXƒŒƒbƒh part5 >>10 Sin‚³‚ñ‚ÌC³‚ðŽæ‚èž‚Ý +E‚‚¢‚Å‚ÉŒ©‚©‚¯‚½atcommand_character_joblevel‚Ì•s‹ï‡‚ðC³ +E@ƒRƒ}ƒ“ƒh‚ŃWƒ‡ƒuƒŒƒxƒ‹‚ðã‚°‚é‚Æ‚«‚ɃXƒpƒmƒr‚ÍJob70‚܂őΉž(–¢Šm”F) + + (/) + object_del.bat C³ + (map/) + atcommand.c + atcommand_joblevelup() C³ + atcommand_character_joblevel() C³ + atcommand_character_baselevel() C³ + + code by kingbo 2004/4/29 PM 06:15 + base on 0953 + now i sure it works well + (map/) + mob.c + mob_can_reach() fix + +-------------------- +//0953 by (“Ê) +Emob_skill_db.txt‚ÌðŒ’l‚É0ˆÈŠO“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ð’ù³ +Egcc 2.95‚ŃRƒ“ƒpƒCƒ‹‚Å‚«‚é‚悤‚É’ù³(by ƒoƒOƒXƒŒpart5 >>2 ˆ©‚³‚ñ) +Eª‚âLinux‚È‚Ç‚ðl—¶‚µ‚Ästart‚âMakefile‚Ȃǂ̉üs‚ðLF‚É•ÏX +E0952‚Åo‚½ƒRƒ“ƒpƒCƒ‹Œx‚ðo‚È‚¢‚悤‚ÉC³ +E0952‚ÅXV‚³‚ê‚È‚©‚Á‚½conf_ref.txt‚ðC³ + + (/) + start ‰üsƒR[ƒh•ÏX + athena-start ‰üsƒR[ƒh•ÏX + (db/) + mob_skill_db.txt C³ + (doc/) + conf_ref.txt C³ + (login/) + Makefile ‰üsƒR[ƒh•ÏX + (map/) + Makefile ‰üsƒR[ƒh•ÏX + atcommand.c + atcommand() 錾ˆÊ’uC³ + atcommand_where() 錾ˆÊ’uC³ + battle.c + battle_calc_pet_weapon_attack() C³ + battle_calc_mob_weapon_attack() C³ + battle_calc_pc_weapon_attack() C³ + battle_calc_magic_attack() C³ + clif.c + clif_skill_fail() 錾ˆÊ’uC³ + guild.c + guild_gvg_eliminate_timer() 錾ˆÊ’uC³ + mob.c + mob_damage() 錾ˆÊ’uC³ + script.c + buildin_deletearray() 錾ˆÊ’uC³ + buildin_getequipcardcnt() 錾ˆÊ’uC³ + buildin_successremovecards() 錾ˆÊ’uC³ + +-------------------- +//0952 by CG +Econf‚ÅDEF‚ÆMDEF‚ÌŒvŽZ•û–@‚ð‘I‘ð‚Å‚«‚é‚悤‚ÉB + + (conf/) + battle_athena.conf •ÏX + (map/) + battle.c + battle_calc_pet_weapon_attack() C³ + battle_calc_mob_weapon_attack() C³ + battle_calc_pc_weapon_attack() C³ + battle_calc_magic_attack() C³ + battle.h C³ + +-------------------- +//0951 by (“Ê) +EƒT[ƒo[snapshot +EƒoƒO•ñƒXƒŒƒbƒh part4 >>95 KAJIKEN‚³‚ñ‚ÌC³‚𓯫 +E“¯ >>138 ƒoƒO‚©‚ÈH‚³‚ñ‚ÌC³‚𓯫 +EAthenaŽG’kƒXƒŒƒbƒh part2 >>112 –¼–³‚µ‚³‚ñ‚ÌPVPƒiƒCƒgƒƒAƒ‚[ƒh‚̃Aƒ“ƒ_[ƒNƒƒXƒ}ƒbƒvƒ[ƒvƒ|ƒCƒ“ƒg‚𓯫 +E“¯ >>96 ‹HŽ}‚³‚ñ‚Ìnpc_gldcheck.txt‚𓯫 +EƒXƒiƒbƒvƒVƒ‡ƒbƒg‚Ésave/‚ð“ü‚ê‚é‚Ì‚ð‚â‚ß‚Ü‚µ‚½B–³‚¢ê‡‚Íathena-start‚ªì‚Á‚Ä‚‚ê‚Ü‚· +Eathena-start‚Ålog/‚ª–³‚¢ê‡‚Éì‚é‚悤‚É•ÏX +E‚»‚Ì‘¼H + + (/) + athena-start •ÏX + (db/) + mob_db.txt •ÏX + (conf/) + map_athena.conf •ÏX + (conf/extension/) + npc_gldcheck.txt ’ljÁ + (conf/npc/) + npc_event_ice.txt •ÏX + npc_job_alchemist.txt •ÏX + npc_event_valentine.txt •ÏX + npc_town_geffen.txt •ÏX + npc_event_whiteday.txt •ÏX + npc_event_potion.txt •ÏX + npc_town_comodo.txt •ÏX + (conf/warp/) + npc_warp_pvp.txt ’ljÁ + +-------------------- +//0950 by (“Ê) +Emob_db‚ÌModeƒtƒ‰ƒO‚Ɉȉº‚Ì•¨‚ð’ljÁ + 0x40(64) ƒ_ƒ[ƒW‚ð1‚ɌŒè(‘‚âƒNƒŠƒXƒ^ƒ‹‚È‚Ç) + 0x80(128) UŒ‚‚ðŽó‚¯‚½‚Æ‚«‚É”½Œ‚‚ð‚·‚é +Eã‹L‚Ì•ÏX‚Ì‚½‚ßmob_db.txt‚Ù‚Ú‘S•”•ÏXAmob_db2.txt‚ðì‚Á‚Ä‚¢‚él‚Í + ‘‚È‚Ç1ƒ_ƒŒÅ’è‚É‚ÍMode‚É64‚ð‘«‚³‚È‚¢‚Æ•’ʂɃ_ƒ[ƒW + ‚»‚Ì‘¼Mob‚ÍMode‚É128‚ð‘«‚³‚È‚¢‚Æ”½Œ‚‚µ‚Ä‚±‚È‚‚È‚é‚Ì‚Å’ˆÓ + + (db/) + mob_db.txt C³ + (map/) + battle.c + battle_calc_pet_weapon_attack() + battle_calc_mob_weapon_attack() + battle_calc_pc_weapon_attack() + battle_calc_magic_attack() + mob.c + mob_once_spawn() + mob_attack() + mob_target() + mob_ai_sub_hard() + +-------------------- +//0949 by ‚Ò‚´‚Ü‚ñ + +EƒXƒe[ƒ^ƒXˆÙí‘Ï«‘S–ÊC³B +@‘Ï«ŽZoŽ®‘S–ÊC³B +@ƒXƒe[ƒ^ƒXˆÙí‘Ï«100%‚̃Lƒƒƒ‰ƒNƒ^[‚É‚Íó‘ÔˆÙí‚ðs‚í‚È‚¢‚悤‚ÉC³B +EƒfƒBƒXƒyƒ‹‚ÌŽd—l•ÏXB +@‰ðœ‚µ‚½‚çƒVƒXƒeƒ€ã–â‘è‚Ì‚ ‚éƒXƒe[ƒ^ƒX•Ï‰»ˆÈŠO•Ð‚Á’[‚©‚ç‰ðœ‚·‚é‚悤‚ÉC³B +EƒtƒƒXƒgƒ_ƒCƒo[‚ÌŽd—l•ÏXB +@“€Œ‹—¦C³(ƒ}ƒWƒXƒŒƒeƒ“ƒvƒŒ€‹’)B +EƒŠƒJƒoƒŠ[‚ÌŽd—l•ÏXB +@ƒmƒ“ƒAƒNƒeƒBƒuƒ‚ƒ“ƒXƒ^[‚ÉŽg—p‚·‚é‚ƃ^[ƒQƒbƒg‚ªƒŠƒZƒbƒg‚³‚ê‚é‚悤‚ÉC³B +EƒNƒ@ƒOƒ}ƒCƒA‚ÌŽd—l‚ªƒAƒŒ‚¾‚Á‚½‚Ì‚ÅC³B +@‰‰‘t‚â‘®«ê‚Æ“¯—l‚Érange‚ň—‚·‚é‚悤‚ÉC³B +@DEX/AGI”¼Œ¸‚̉e‹¿‚ª‰r¥ˆÈŠO‚É‚à‹y‚Ô—l‚ÉC³B +EƒXƒLƒ‹ƒ^[ƒQƒbƒg’†‚ÉŽ€‚ñ‚¾U‚è‚ðŽg—p‚µ‚Ä‚àƒXƒLƒ‹‚ª‰ñ”ð‚Å‚«‚È‚¢–â‘èC³B +E”’nŽæ‚肪“®ì‚µ‚È‚¢–â‘èC³(cast_db‚ª”²‚¯‚Ä‚Ü‚µ‚½)B + (map/) + pc.c + pc_calcstatus()C³ + skill.c + skill_additional_effect()Askill_attack() C³ + skill_status_change_start()Askill_unitsetting() C³ + (db/) + cast_db.txt C³B + +-------------------- +//0948 by ŒÓ’±—– + +Ewarpwaitingpc‚ª³‚µ‚PC‚ð“]‘—‚Å‚«‚È‚¢–â‘è‚ðC³ +EƒXƒNƒŠƒvƒg‚Ì“Ç‚Ýž‚ÝŽž‚ɃGƒ‰[‚Ü‚½‚ÍŒx‚ªo‚éê‡AŒx‰¹‚ð–‚炷‚悤‚ÉB + i—¬‚ꂽƒƒO‚ðŒ©‚È‚¢l‘Îô‚Å‚·j + + (map/) + script.c + buildin_warpwaitingpc()C³ + disp_error_message()C³ + +Eatcommand.cC³ + Eatcommand_athena.conf‚Ìmapmove‚ð“ǂނ悤‚É + E@str‚È‚Ç‚ÌÈ—ªŽž‚Ì•K{ƒŒƒxƒ‹‚ð0‚ÉB + E@param‚ÍŽg‚í‚È‚¢‚̂ŃRƒƒ“ƒg‰» + + (map/) + atcommand.c + ŠY“–ŒÂŠC³ + +Emob‚ªÅ‘å15•b‚قLjړ®‚µ‚È‚¢ê‡‚ª‚ ‚é–â‘èC³ + EŽè”²‚«‚Å‚È‚¢mobˆ—‚ÅAˆÚ“®‚µ‚È‚¢ŽžŠÔ‚ª7•bˆÈ㑱‚©‚È‚¢‚悤‚ÉC³ + + (map/) + mob.c + mob_ai_sub_hard()C³ + +E‰õ‘¬‘Dˆõ‚̈ɓ¤`s‚«‚Ì”»•ÊŽ®C³ (by ID:F8nKKuY) + (conf/npc/) + npc_town_comodo.txt + +-------------------- +//0947 by (“Ê) +EŽæ‚芪‚«‚ÍŽæ‚芪‚«‚𢊫‚µ‚È‚¢‚悤‚ÉC³ +E˜I“V‚̔̔„‰¿Ši‚ÌãŒÀ‚ðbattle_athena.conf‚ÅÝ’è‚Å‚«‚é‚悤‚ÉC³ + + (conf/) + battle_athena.conf + vending_max_value’ljÁ + (doc/) + conf_ref.txt C³ + (map/) + skill.c + skill_castend_nodamage_id() C³ + battle.c + battle_config_read() C³ + battle.h C³B + vending.c + vending_openvending() C³B + +-------------------- +//0946 by Kalen +Eƒvƒ–kWarpŒ©’¼‚µ +ŽQlF–{ŽI(1F,2F)‚ç‚®‚Ȃ̉½‚©(3F) + (conf/warp/) + npc_warp.txt + +EŒê‚è•”‚Ì2T3T’ljÁ(‚Ç‚¤‚¹Œ©‚È‚¢‚ÆŽv‚¢‚Ü‚·‚ªc) + (conf/npc/) + npc_event_kataribe.txt + +-------------------- +//0945 by ŒÓ’±—– + +ENPCƒ^ƒCƒ}[ƒ‰ƒxƒ‹ƒf[ƒ^‚ª³‚µ‚ƒCƒ“ƒ|[ƒg‚³‚ê‚È‚¢–â‘è‚ðC³ +ENPCƒ^ƒCƒ}[‰Šú’l‚âƒ^ƒCƒ}[ID‚ª³‚µ‚‰Šú‰»‚³‚ê‚È‚¢–â‘è‚ðC³ +ENPC‚Ìduplicate‚ðs‚¤‚ƃAƒNƒZƒXˆá”½‚ª‹N‚±‚éꇂª‚ ‚é–â‘è‚ðC³ + + (map/) + npc.c + npc_parse_scriptC³ + +Eƒpƒbƒ`ƒAƒbƒvƒXƒŒ‚S‚Ì87‚Ìpc.c‚Ƃ肱‚Ý + (map/) + pc.c + ƒJ[ƒhd—ʧŒÀ‚ðŒ³‚É–ß‚µ‚½‚à‚Ì + +-------------------- +//0944 by huge +EƒMƒ‹ƒh‚Ìã”[ŒoŒ±’l‚ÌãŒÀ‚ðAconf‚ŧŒÀ‚Å‚«‚é‚悤‚ÉB +E˜I“X‚̔̔„‰¿Ši‚ð10M‚܂łɧŒÀB +EƒJ[ƒg‚Ìd—ʧŒÀ‚ªˆêŒ…‰º‚ª‚Á‚Ä‚½‚ñ‚Å‚·‚ªAƒEƒ`‚¾‚¯‚Å‚·‚©HC³‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªB + + (conf/) + battle_athena.conf + guild_exp_limit’ljÁ + (doc/) + conf_ref.txt C³ + (map/) + atcommand.c + ‘h¶Žž‚ÌSP‰ñ•œ‚ÅAׂ©‚¢C³B + battle.c + battle_config_read() C³ + battle.h C³B + guild.c + guild_change_position() C³B + pc.c + pc_calcstatus() C³B + vending.c + vending_openvending() C³B + +-------------------- +//0943 by (“Ê) +Ebattle_athena.conf‚Ådead_branch_active‚ðyes‚É‚·‚é‚ƌÖ؂̎}‚Å¢Š«‚³‚ê‚郂ƒ“ƒXƒ^[‚ªƒAƒNƒeƒBƒu‚É‚È‚é‚悤‚É•ÏX +E”÷–‚É•ÏX‚µ‚½client_packet.txt‚𓯫 + + (conf/) + battle_athena.conf + dead_branch_active’ljÁ + (doc/) + client_packet.txt C³ + conf_ref.txt C³ + (map/) + battle.c + battle_config_read() C³ + battle.h C³ + map.h C³ + mob.c + mob_once_spawn() C³ + mob_attack() C³ + mob_target() C³ + mob_ai_sub_hard_lootsearch() C³ + mob_ai_sub_hard() C³ + +E‰pŒêƒXƒŒ‚Ìkingbo‚³‚ñ‚Ì•ÏX‚𓯫 + code by kingbo 2004/4/16 PM 09:47 + + support guildcastle guardian + maybe still have problems..need to try + Good Luck Q^^Q + P.S: sorry my poor english ^^a + + (map/) + mob.c + mob_can_reach() fix + battle.c + battle_calc_damage() fix + + (conf/gvg/) + prtg_cas01_guardian.txt + +-------------------- +//0942 by ŒÓ’±—– + +EƒAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹‚Å•s³‚ȃƒ‚ƒŠ‚ɃAƒNƒZƒX‚·‚éꇂª‚ ‚éƒoƒO‚ðC³ + (login/) + login.c + check_ipmask()C³ + +EƒXƒNƒŠƒvƒgƒŠƒtƒ@ƒŒƒ“ƒX‚µ’ljÁ‚ÆC³ + (doc/) + script_ref.txt + C³ + +-------------------- +//0941 by (“Ê) + +Ee2‚³‚ñ‚Ì•ñ‚ðŒ³‚É¢Š«‚³‚ꂽŽè‰º‚̃Xƒs[ƒh‚𢊫Žå‚Æ“¯‚¶‚É‚µ‚Ä‚Ý‚é + + (map/) + battle.c + battle_get_speed() C³ + mob.c + mob_spawn() C³ + mob_summonslave() C³ + +-------------------- +//0940 by End_of_exam + +Eƒq[ƒ‹‚âƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚ðŽg—p‚µ‚Ä‚à‰ñ•œ‚µ‚È‚¢ƒoƒO‚ðC³(0938`)B + +@Thanks for Pepermint, reporting the bug that using PotionPitcher with +@BluePotion was no effective. +@iƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[{‚o‚ÅŒø‰Ê‚ª‚È‚¢Ž–‚ð•ñ‚µ‚Ä‚‚ꂽPepermintŽ‚ÉŠ´ŽÓj + + (map/) + battle.c + battle_heal() C³ + +-------------------- +//0939 by (“Ê) +EcutinƒpƒPƒbƒg‚ð0x145(ƒtƒ@ƒCƒ‹–¼16•¶Žš)‚©‚ç0x1b3(64•¶Žš)‚É•ÏX +E‚‚¢‚Å‚ÉŽG’kƒXƒŒ‚Éã‚°‚½athena-start‚𓯫 + + (/) + athena-start saveƒtƒ@ƒCƒ‹‚ª–³‚¢‚Æ‚«‚Éì‚é‚悤‚É + (map/) + clif.c + clif_cutin() –{ŽIƒpƒPƒbƒg€‹’‚É•ÏX + (doc/) + client_packet.txt C³ + +-------------------- +//0938 by ‚Ò‚´‚Ü‚ñ + +Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚Ń|‚ð“Š‚°‚Ä‚àƒGƒtƒFƒNƒg‚¾‚¯‚¾‚Á‚½ƒoƒOC³B +E˜I“XŠJÝ‚ª“Á’è‚̃AƒCƒeƒ€”z’u‚ÅŽ¸”s‚·‚éƒoƒOC³B +EƒXƒNƒŠƒvƒgŠÖ”getareadropitemŽÀ‘•B +@Žw’èƒGƒŠƒA“à‚̃hƒƒbƒvƒAƒCƒeƒ€‚ðƒJƒEƒ“ƒg‚·‚éŠÖ”‚Å‚· + +@‘Ž®Fgetareadropitem <mapname>,<x0>,<y0>,<x1>,<y1>,<item>; +@@mapnameF‘ÎÛƒ}ƒbƒv–¼(—áFprontera.gat) +@@x0‚Æx1F‘ÎÛXÀ•W”ÍˆÍ +@@y0‚Æy1F‘ÎÛYÀ•W”ÍˆÍ +@@itemFƒJƒEƒ“ƒg‚·‚é‘ÎÛƒAƒCƒeƒ€ + +@–ß‚è’lFmapname“àÀ•W(x0,y0)-(x1,y1)‚͈͓̔à‚É—Ž‚¿‚Ä‚¢‚éitem‚Ì‘ŒÂ” +@@@@@Žæ“¾Ž¸”sŽž‚É‚Í-1‚ð•Ô‚µ‚Ü‚·B +@Eitem‚Ì’l‚ÍID‚Å‚àƒAƒCƒeƒ€–¼("Red_Jemstone"‚Æ‚©)‚Å‚à‚¢‚¢‚Å‚·B + + (map/) + battle.c + battle_heal() C³B + vending.c + vending_openvending() C³B + script.c + ƒ[ƒJƒ‹ƒvƒƒgƒ^ƒCƒv錾C³B + struct buildin_func[] C³B + buildin_getareadropitem()Abuildin_getareadropitem_sub() ’ljÁB + +-------------------- +//0937 by netwarrior + +- Fix Japanese remarks problem in 0936 +- Fix minor problem in battle_heal() + +-------------------- +//0936 by Pepermint + +Retouch about problem of increase in quantity at the CART, +when enter the an minus quantity in the CLIENT. + +Retouch about problem of not recovery,use POTIONPITCHER skill. + + (map/) + battle.c + battle_heal() + + vending.c + vending_purchasereq() + +-------------------- +//0935 by ŒÓ’±—– + +E“à—e‚Ì“¯‚¶ƒXƒNƒŠƒvƒgNPC‚ð‰½“x‚à‹Lq‚µ‚È‚‚Ä‚àŒ¾‚¢‚悤‚ÉC³ + ENPC’è‹`‚Ì"script"‚Æ‘‚•”•ª‚ð"duplicate(NPC–¼)"‚Æ‚·‚é‚ÆA + ŠY“–‚ÌNPC‚ƃXƒNƒŠƒvƒg‚ð‹¤—L‚·‚é‚悤‚ÉBNPC–¼‚Í•\Ž¦–¼‚Å‚Í‚È‚ + ƒGƒNƒXƒ|[ƒg‚³‚ê‚é–¼‘O‚ðŽw’肵‚Ü‚·B + <—á> +prontera.gat,165,195,1 duplicate(ƒJƒvƒ‰Eˆõ) ƒJƒvƒ‰Eˆõ2 112 + + E‹¤—LŒ³‚ÌNPC‚Í“¯‚¶ƒ}ƒbƒvƒT[ƒo[‚É‘¶Ý‚·‚é•K—v‚ª‚ ‚邽‚ßA + “¯‚¶ƒ}ƒbƒv‚Å‚È‚¢ê‡‚Íduplicate‚·‚ׂ«‚Å‚Í‚È‚¢B + ‚½‚¾‚µANPC‚̈ʒu‚ð"-"‚É‚·‚邱‚Æ‚ÅAƒ}ƒbƒvã‚É‚Í‘¶Ý‚µ‚È‚¢‚ªA + ƒ}ƒbƒvƒT[ƒo[“à‚É‚Í‘¶Ý‚·‚éNPC‚ð쬂ł«‚é‚Ì‚ÅA + ‚»‚ÌNPC‚ð‹¤—LŒ³‚É‚·‚é‚Ì‚Å‚ ‚ê‚΂ǂ̃}ƒbƒv‚Ö‚à‹¤—L‚Å‚«‚éB + <—á> + +- script ƒeƒXƒg::test1 112,{ // ‚±‚ÌNPCƒOƒ‰ƒtƒBƒbƒNID‚ÍŽg—p‚µ‚È‚¢ +// (—ª) +} +prontera.gat,165,195,1 duplicate(test1) ƒeƒXƒg2 112 +geffen.gat,99,99,1 duplicate(test1) ƒeƒXƒg3 112 + + Eã‚̃}ƒbƒv‚É‘¶Ý‚µ‚È‚¢NPC‚̓Cƒxƒ“ƒg‚É‚à‚·‚邱‚Æ‚ª‚Å‚«‚éB + i‚ǂ̃}ƒbƒvƒT[ƒo[‚©‚ç‚Å‚à•K‚¸ŒÄ‚Ño‚¹‚éƒCƒxƒ“ƒg‚É‚È‚éj + + (map/) + map.h + struct npc_label_list’ljÁ,struct npc_dataC³ + npc.c + npc_parse_script()C³ + •s—v‚É‚È‚Á‚½ƒ‰ƒxƒ‹ƒf[ƒ^ƒx[ƒXŠÖ˜A‚ÌŠÖ”‚ðíœ + +-------------------- +//0934 by ‚Ò‚´‚Ü‚ñ + +EMOB‚Ìó‘ÔˆÙí‘Ï«‚ª‚₽‚ç‚‚©‚Á‚½‚Ì‚ðC³B +E‘¬“xŒ¸‚ÌŽd—l•ÏX(¬Œ÷—¦ŒvŽZŽ®•ÏXEŽ¸”sŽž‚ɂ̓GƒtƒFƒNƒg–³‚µ)B +E‰½Žž‚ÌŠÔ‚É‚©ó‘ÔˆÙí‚ÌŒp‚¬‘«‚µ‹ÖŽ~‚ªƒRƒƒ“ƒgƒAƒEƒg‚³‚ê‚Ä‚¢‚½‚Ì‚Å–ß‚µB +Eƒ|ƒCƒYƒ“ƒŠƒAƒNƒg‚̃AƒCƒRƒ“•\Ž¦‚ª–³‚‚È‚Á‚Ä‚¢‚½‚Ì‚ÅC³(‚Å‚ào‚邾‚¯c) +E”’nŽæ‚èŽÀ‘•B + + (map/) + battle.c + battle_weapon_attack() C³B + clif.c + clif_parse_WalkToXY()Aclif_parse_ActionRequest() C³B + clif_parse_TakeItem()Aclif_parse_UseItem() C³B + clif_parse_DropItem()Aclif_parse_EquipItem() C³B + clif_parse_UnequipItem() C³B + mob.c + mob_can_move()Amob_attack()Amob_ai_sub_hard() C³B + mobskill_use_id()Amobskill_use_pos() C³B + mobskill_castend_id()Amobskill_castend_pos() C³B + pc.c + pc_attack_timer()Apc_setpos() C³B + skill.c + SkillStatusChangeTable[] C³B + skill_additional_effect()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_check_condition() C³B + skill_status_change_start()Askill_status_change_end() C³B + skill_use_id() C³B + skill.h C³B + (db/) + cast_db.txt C³B + +-------------------- +//0933 by ŒÓ’±—– + +EƒEƒBƒU[ƒh“]EŠNPC‰¼ŽÀ‘• + Eeathena‚̃f[ƒ^‚Ì–|–óA‚¨‚æ‚Ñ–^Š‚Ì̂̃f[ƒ^‚ðŒ³‚Éì‚Á‚½‚Ì‚Å + ŠàŽI‚Æ‚Í”÷–‚ɈقȂÁ‚Ä‚é‚ÆŽv‚¢‚Ü‚·B + uŒÃ‚¢Šª•¨v‚Æ‚©Žg‚¦‚Ü‚¹‚ñ‚µB + EŒ»s‚Ìjob_2nd.txt‚ƈê‚É“Ç‚Ýž‚Þ‚ÆANPC‚ªd‚È‚é‚Ì‚ÅA + job_2nd.txt‚ÌŠY“–ƒXƒNƒŠƒvƒg‚ðƒRƒƒ“ƒg‰»‚µ‚Ä‚‚¾‚³‚¢B + ‚½‚¾‚µA‚»‚Ìꇂ̓Z[ƒW‚É“]E‚³‚¹‚Ä‚à‚炦‚È‚¢‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + + (conf/npc/) + npc_job_wizard.txt + ’ljÁ + (conf/warp/) + npc_warp_job.txt + ƒEƒBƒU[ƒh“]EŠ‚̃[ƒv‚ðƒRƒƒ“ƒg‰» + +EƒoƒOC³ + Egoto‚âmenu‚щƒxƒ‹‚ªŒ©‚‚©‚ç‚È‚¢‚Æ‚«ƒXƒNƒŠƒvƒg‚ÌŽÀs‚ð’†’f‚·‚é‚悤‚É. + E‚P‰ñ‚̃XƒNƒŠƒvƒg‚ÌŽÀs‚É‚¨‚¢‚ÄAŽÀs–½—ß”‚ª–ñ8000‚ð’´‚¦‚é‚©A + goto‚âmenu‚ÌŽÀs‰ñ”‚ª–ñ500‰ñ‚ð’´‚¦‚é‚ÆŽÀs‚ð’†’f‚·‚é‚悤‚ÉB + EŠÖ”/–½—ߎÀsŽž‚É‚àƒGƒ‰[ƒ`ƒFƒbƒN‚ð“ü‚ꂽ + EƒMƒ‹ƒh/ƒp[ƒeƒB/ƒyƒbƒg‚Ì–¼‘O‚É“ú–{Œê‚ªŽg‚¦‚È‚¢–â‘èC³ + + + (char/) + int_guild.c/int_party.c + –¼‘O–â‘èC³ + (map/) + pet.c + –¼‘O–â‘èC³ + script.c + C³ + +-------------------- +//0932 by End_of_exam + +E0930‚ŃMƒ‹ƒh‘qŒÉ‚Ì’†g‚ªÁ‚¦‚éƒoƒO‚ðC³B + + (char/) + int_storage.c guild_storage_tostr() C³B + +-------------------- +//0931 by (“Ê) +EƒT[ƒo[snapshot +EAthenaDBŒv‰æ‚©‚çXV‚Ì‚ ‚Á‚½•¨‚𔽉f +Eatcommand_athena.conf‚Éstr“™‚ð’ljÁ +Eƒ[ƒvƒ|[ƒ^ƒ‹‚Ì–{ŽI‘Šˆá“_‚ðC³ +E–¶‚³‚ñ‚Ìaldeg_cas03`05‚𓯫 +Ep‚³‚ñ‚Ìnpc_event_kataribe.txt“¯« +EKAJIKEN‚³‚ñ‚Ìnpc_warp_louyang.txt“¯« + + (db/) + item_db.txt •ÏX + (conf/) + atcommand_athena.conf •ÏX + map_athena.conf •ÏX + (conf/gvg/) + aldeg_cas03.txt •ÏX + aldeg_cas04.txt •ÏX + aldeg_cas05.txt •ÏX + (conf/mob/) + npc_monster.txt •ÏX + (conf/npc/) + npc_event_kataribe.txt ’ljÁ + (conf/warp/) + npc_warp_louyang.txt ’ljÁ + (map/) + pc.c pc_memo() •ÏX + +-------------------- +//0930 by ŒÓ’±—– + + Šù‘¶‚Ì char/ ‚É‚ ‚élock.c‚Ælock.h‚Í휂µ‚Ä‚‚¾‚³‚¢B + ‚±‚ê‚ç‚Í common/ ‚Ɉړ®‚³‚ê‚Ü‚·B + +EƒXƒNƒŠƒvƒg’ljÁC³ + Esetarrayi”z—ñ‚ÖƒŠƒXƒg‘ã“üj’ljÁ + Ecleararrayi”z—ñ‚ðŽw’è’l‚ŃNƒŠƒAj’ljÁ + Ecopyarrayi”z—ñ‚ðƒRƒs[j’ljÁ + Egetarraysizei”z—ñ‚Ì—LŒø‚È—v‘f”‚ð‹‚ß‚éj’ljÁ + Edeletearrayi”z—ñ‚Ì—v‘f‚ð휂µ‚Â߂éj’ljÁ + EwarpwaitingpcFl”‚âƒAƒJƒEƒ“ƒgID‚ðƒ}ƒbƒv•Ï”‚ɃZƒbƒg‚·‚é‚悤‚ÉC³ + + (map/) + script.c + FX + (doc/) + script_ref.txt + –½—ߒljÁ‚È‚Ç + (npc/sample/) + npc_test_array.txt + ”z—ñŒnƒeƒXƒg—pNPCƒXƒNƒŠƒvƒg + +EƒoƒOC³‚È‚Ç + EƒLƒƒƒ‰ƒNƒ^[–¼/ƒAƒJƒEƒ“ƒg–¼/ƒp[ƒeƒB–¼/ƒMƒ‹ƒh–¼/ƒyƒbƒg–¼‚É + ƒRƒ“ƒgƒ[ƒ‹ƒR[ƒh‚ðŽg‚¦‚È‚¢‚悤‚ÉC³B + Echar.c‚È‚Ç‚Ì•Û‘¶‚ÌŒø—¦‚ðX‚ɃAƒbƒvB + E‘qŒÉƒtƒ@ƒCƒ‹/ƒMƒ‹ƒh‘qŒÉƒtƒ@ƒCƒ‹‚É‹ós‚ªŽc‚ç‚È‚¢‚悤‚ÉC³ + Elock.*‚ðcommon/‚Ɉړ®Aƒtƒ@ƒCƒ‹‚ª•Û‘¶‚Å‚«‚È‚‚È‚éƒoƒOC³A + ƒAƒJƒEƒ“ƒg‚ƃ}ƒbƒv•Ï”‚Ì•Û‘¶‚É‚àlock_fopen‚ðŽg‚¤‚悤‚ÉB + + (common/) + lock.c/lock.h + ƒtƒHƒ‹ƒ_ˆÚ“®Alock_fopenC³ + (login/) + login.c + mmo_auth_new()C³ + (char/) + char.c + mmo_char_tostr(),make_new_char()C³ + int_storage.c + storage_tostr(),guild_storage_tostr(), + inter_storage_save_sub(),inter_guild_storage_save_sub()C³ + int_party.c + int_guild.c + –¼‘O–â‘èC³ + (map/) + pet.c + –¼‘O–â‘èC³ + +-------------------- +//0929 by ‚Ò‚´‚Ü‚ñ + +Eƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[Š®‘SŽÀ‘•B +Eƒvƒƒ{ƒbƒN‚̃XƒLƒ‹Žd—l•ÏX(‰r¥–WŠQE“€Œ‹AΉ»A‡–°‰ðœ)B +EƒŠƒJƒoƒŠ[‚̃XƒLƒ‹Žd—l•ÏX(ƒAƒ“ƒfƒbƒh‚ÉŽg—p‚·‚é‚ƈê’èŠm—¦‚ňÈŌø‰Ê)B +Eó‘ÔˆÙí’†‚Å‚à‘•”õ‚ÌØ‚è‘Ö‚¦‚ªo—ˆ‚é‚悤‚É•ÏXB +EƒAƒCƒeƒ€Ž©“®Žæ“¾’†‚É@killmonster‚ðŽg—p‚·‚é‚Æ—Ž‚¿‚éƒoƒOC³B +EŒÓ’±—–‚³‚ñ‚ªã‚°‚Ä‚¢‚½npc.c‚𓯫‚µ‚Ü‚µ‚½B +Eskill_db‚Å‹C‚É‚È‚Á‚Ä‚½‚Æ‚±‚ð‚¿‚å‚±‚Á‚ÆC³B + + (map/) + clif.c + clif_parse_EquipItem() C³B + skill.c + skill_castend_nodamage_id() C³B + skill_unitsetting()Askill_unit_onplace() C³B + skill_landprotector() ’ljÁB + mob.c + mob_delay_item_drop()Amob_delay_item_drop2() C³B + npc.c C³ + + (db/) + skill_db.txt C³B + +-------------------- +//0928 by End_of_exam + +EƒLƒƒƒ‰‚â‘qŒÉ“àƒAƒCƒeƒ€‚ªÁ‚¦‚é–â‘è‚ÉŽb’è‘ΈiƒLƒƒƒ‰ŽI‚̉ü—ÇjB + +@1.ƒLƒƒƒ‰ƒf[ƒ^E‘qŒÉƒf[ƒ^‚̃f[ƒ^•ÏŠ·ˆ—‚ð‰ü—ÇB +@@(char/char.c , char/int_storage.c) + +@2.ƒtƒ@ƒCƒ‹‘‚«o‚µ‚ªI‚í‚é‚Ü‚ÅA‹Œƒtƒ@ƒCƒ‹‚ðŽc‚·‚悤‚ÉC³B +@ichar/lock.c, char/lock.h ‚̒ljÁBƒƒCƒNƒtƒ@ƒCƒ‹‚ÌC³B +@@char/int_storage.c,int_guild.c,int_party.c,int_pet.c,char.c,inter.c +@@“à‚É‚ ‚éAƒf[ƒ^‘‚«o‚µˆ—‚ð•ÏXBj + +-------------------- +//0927 by ‚Ò‚´‚Ü‚ñ + +E•ŠíUŒ‚ˆÈŠO‚ÉŽí‘°•â³‚ª“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B +E‰‰‘t’†‚ÉŠyŠíE•ÚˆÈŠO‚Ì•Ší‚ÉŽ‚¿•Ï‚¦‚é‚Ɖ‰‘t‚ªŽ~‚Ü‚é—l‚ÉC³B +E‰‰‘t‚ÌŒø‰Ê‚ª‰‰‘tŽÒŽ©g‚É‚Í‚©‚©‚ç‚È‚¢‚悤‚ÉC³B +EƒAƒCƒeƒ€Ž©“®Žæ“¾‹@”\ŽÀ‘• +@“G‚ð“|‚µ‚½Žž‚ÉAƒAƒCƒeƒ€‚ªƒhƒƒbƒv‚³‚ê‚é‚Ì‚Å‚Í‚È‚A‚»‚Ì“G‚Ɉê”Ô‘½‚‚̃_ƒ[ƒW‚ð +@—^‚¦‚½l(ƒ‹[ƒgŒ 1ˆÊ‚Ìl)‚ɃhƒƒbƒvƒAƒCƒeƒ€‚ªŽ©“®‚Å—^‚¦‚ç‚ê‚é‹@”\‚Å‚·B +@battle_athena.conf‚Ìitem_auto_get‚ÅÝ’è‚Å‚«‚Ü‚·B +@ƒIƒŠƒWƒiƒ‹ƒAƒbƒvƒf[ƒg‚̈×Abattle_athena.conf‚ł̃fƒtƒHƒ‹ƒg‚Å‚Íno‚É‚µ‚Ä‚¢‚Ü‚·B +E‘®«ê(ƒfƒŠƒ…[ƒWEƒoƒCƒIƒŒƒ“ƒgƒQƒCƒ‹Eƒ{ƒ‹ƒP[ƒmEƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[)‰¼ŽÀ‘• +@ˆê•”‚Ì‹@”\‚ª–¢ŽÀ‘•‚Å‚· +@@ƒfƒŠƒ…[ƒWF…ê‚ð—p‚¢‚½ƒEƒH[ƒ^[ƒ{[ƒ‹ +@@ƒoƒCƒIƒŒƒ“ƒgƒQƒCƒ‹Fƒtƒ@ƒCƒA[ƒEƒH[ƒ‹‚ÌŽ‘±ŽžŠÔ•â³ +@@ƒ{ƒ‹ƒP[ƒmFƒAƒCƒXƒEƒH[ƒ‹‹ÖŽ~ +@@ƒ‰ƒ“ƒhƒvƒƒeƒNƒ^[FƒIƒuƒWƒFƒNƒgÝ’uŒnƒXƒLƒ‹‹ÖŽ~(‚‚܂èo‚邾‚¯‚ÌLP‚Å‚·) + + (map/) + battle.c + battle_calc_damage()Abattle_calc_magic_attack() C³B + battle_calc_misc_attack()Abattle_config_read() C³B + mob.c + mob_delay_item_drop()Amob_delay_item_drop2() C³B + pc.c + pc_calcstatus()Apc_equipitem() C³B + skill.c + ƒ[ƒJƒ‹ƒvƒƒgƒ^ƒCƒv錾C³B + SkillStatusChangeTable[] C³B + skill_castend_nodamage_id()Askill_castend_pos2() C³B + skill_unitsetting()Askill_unit_onplace() C³B + skill_unit_onout()Askill_unit_ondelete() C³B + skill_status_change_start()Askill_status_change_end() C³B + skill_clear_element_field() ’ljÁB + battle.h C³B + skill.h C³B + (conf/) + battle_athena.conf + item_auto_get€–Ú‚ð’ljÁB + (db/) + cast_db.txt C³B + +-------------------- +//0926 by ŒÓ’±—– + +EƒMƒ‹ƒhé‚̉Šú‰»•û–@•ÏX + E‘S‚ẴMƒ‹ƒhéi{è‹’ƒMƒ‹ƒhî•ñj‚ðŠ“¾‚µ‚½‚Æ‚«‚ÉOnAgitInit‚ª + ‚æ‚΂ê‚é‚悤‚ÉBGetCastleData‚âRequestGuildInfo‚Ì•K—v‚ª‚È‚‚È‚è‚Ü‚·B + ]‚Á‚ÄAŒ»Ý‚ÌgvgƒXƒNƒŠƒvƒg‚ÌOnInterIfInit‚âOnRecvCastleXXX‚Í + •K—v‚È‚‚È‚è‚Ü‚·Bi‚¨‚»‚ç‚Œ»s‚̃XƒNƒŠƒvƒg‚à“®ì‚͉”\‚Å‚·j + ‰Šú‰»‚ª•K—v‚ÈNPC‚Í•Ï‚í‚è‚ÉOnAgitInit‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B + ‚È‚¨A•s—v‚É‚È‚Á‚½–½—ß‚È‚Ç‚ð휂·‚é—\’è‚Í‚ ‚è‚Ü‚¹‚ñB + + (char/) + inter.c/inter.h/char.c/int_guild.c/int_guild.h + ƒ}ƒbƒvƒT[ƒo[Ú‘±Žž‚Ɉ—‚ðs‚¦‚é‚悤‚ÉC³ + Ú‘±Žž‚ɃMƒ‹ƒhéƒf[ƒ^‚ð‘—M‚·‚é‚悤‚É + (map/) + intif.c/guild.c/guild.h + Ú‘±Žž‚̃Mƒ‹ƒhéƒf[ƒ^ˆêŠ‡ŽóMˆ—•ƒMƒ‹ƒhî•ñ—v‹A + OnAgitInit‚̌ĂÑo‚µ‚È‚Ç + chrif.c + ‹ŒOnAgitInit‚̌ĂÑo‚µíœ + (doc/) + inter_server_packet.txt + ƒMƒ‹ƒhéƒf[ƒ^ˆêŠ‡‘—MƒpƒPƒbƒg0x3842’ljÁ + +EƒXƒNƒŠƒvƒg‚ÉNPCŽå‘̃Cƒxƒ“ƒgŽÀs–½—ߒljÁ + Edonpcevent(NPCŽå‘̃Cƒxƒ“ƒgŽÀs)’ljÁ + ‚±‚¿‚ç‚Ídoevent‚ƈႢƒuƒ[ƒhƒLƒƒƒXƒg‰Â”\‚Å‚·BÚׂÍscript_refB + Eisloggedin‚̃Rƒ“ƒpƒCƒ‹Œx‚ª‚Å‚È‚¢‚悤‚ÉC³ + (map/) + script.c + buildin_donpcevent()’ljÁ‚È‚Ç + (doc/) + script_ref.txt + doevent,donpcevent,OnAgitInit’ljÁ‚È‚Ç + +E‚»‚Ì‘¼C³ + (map/) + clif.c + clif_parse_GMReqNoChat()’ljÁ + + +-------------------- +//0925 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚̃oƒOC³ + Emonster,areamonster‚Ì–â‘èC³ + ‚±‚ê‚ç‚Íscript_rid2sd‚ðŽg—p‚µ‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B + sd‚ªNULL‚Ì‚Æ‚«AƒŒƒxƒ‹ƒ`ƒFƒbƒN‚ðs‚í‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B + + (map/) + script.c/mob.c + buildin_monster(),buildin_areamonster(),mob_once_spawn()‘¼ + +EƒXƒNƒŠƒvƒg‚Ì‹@”\’ljÁ + Edetachrid–½—ßiƒvƒŒƒCƒ„[‚̃fƒ^ƒbƒ`j’ljÁ + EisloggedinŠÖ”iƒvƒŒƒCƒ„[‚̃ƒOƒCƒ“ƒ`ƒFƒbƒNj’ljÁ + Egetitem,getitem2–½—ß,countitem,checkweightŠÖ”‚Å + nameid‚ɃAƒCƒeƒ€‚Ì–¼‘O‚ðŽw’è‰Â”\‚ÉB + (item_db‚ȂǂɈˑ¶‚·‚邽‚ßAŽg—p‚·‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªAˆê‰ž) + + (map/) + script.c + FX + (doc/) + script_ref.txt + •ÏX•”•ª‚ƃGƒ‰[à–¾C³ + +Eathena-start‚Æstart‚ðC³ + Eathena-start stop‚ŃvƒƒZƒX‚ªI—¹‚·‚é‚܂ő҂‚悤‚É + Estart‚ÅÄ‹N“®‚³‚¹‚é‚Æ‚«athena-start restart‚ðŒÄ‚Ԃ悤‚ÉB + +-------------------- +//0924 by (“Ê) + +EƒoƒO•ñƒXƒŒƒbƒh part4 >>66‚Ìnpc‚ðŽæ‚èž‚Ý +E“¯ >>51‚Ìguild.c‚𔽉f +E“¯ >>38‚Ìatcommand_athena.conf‚Ö‚Ì•ÏX‚ðŽæ‚èž‚Ý +E‚È‚º‚©npcƒtƒHƒ‹ƒ_‚É‚ ‚Á‚Ämap_athena.conf‚È‚¢ƒtƒ@ƒCƒ‹‚ðˆê——‚ɒljÁB‚‚¢‚łɃMƒ‹ƒhƒtƒ‰ƒbƒO‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ +Econf/npc/npc_job_1st.txt npc_script2.txt npc_shop3.txt‚̓XƒiƒbƒvƒVƒ‡ƒbƒg‚©‚ç휂µ‚Ä‚‚¾‚³‚¢ + + (map/) + guild.c C³ + (conf/) + map_athena.conf C³ + atcommand_athena.conf C³ + (conf/npc/) + npc_event_hat.txt C³ + npc_event_oni.txt C³ + npc_job_1st.txt íœ + npc_script2.txt íœ + npc_shop3.txt íœ + +-------------------- +//0923 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚̃oƒOC³ +Escript_rid2sd‚ªŽ¸”s‚µ‚Ä‚àƒT[ƒo[‚ðI—¹‚µ‚È‚¢‚悤‚É•ÏX + Emonster,areamonster‚È‚Ç‚ªŽÀs‚Å‚«‚È‚¢–â‘èC³ + + (map/) + script.c/mob.c + buildin_monster()‚È‚ÇC³ + + (doc/) + script_ref.txt + ƒ‰ƒxƒ‹‚ƃGƒ‰[‚Ìà–¾C³ + +-------------------- +//0922 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒgƒGƒ‰[‚Ìs”Ô†‚ª³‚µ‚•\Ž¦‚³‚ê‚é‚悤‚É + + (map/) + itemdb.c / npc.c + itemdb_readdb(),npc_parse_script()C³ + +EƒLƒƒƒ‰ƒNƒ^[î•ñ‚ɃAƒNƒZƒX‚Å‚«‚È‚¢ó‘ԂŃAƒNƒZƒX‚·‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉC³ +Egoto/menu‚щƒxƒ‹‚ªŽw’肳‚ê‚éꊂɃ‰ƒxƒ‹ˆÈŠO‚ªŽw’肳‚ê‚é‚ÆŒx‚ðo‚·‚悤‚É +Escript_ref‚ɃGƒ‰[ƒƒbƒZ[ƒW‚Ìà–¾’ljÁ +EƒCƒxƒ“ƒg‹N“®‚³‚ꂽƒXƒNƒŠƒvƒg‚ŃLƒƒƒ‰ƒNƒ^[‚ðŽg—p‚Å‚«‚é‚悤‚É‚·‚éŠÖ”’ljÁ + EattachridiŽw’肵‚½ID‚Ìî•ñ‚ðŽg—p‚Å‚«‚é‚悤‚É‚·‚éj’ljÁ + Egetcharidi3‚ŃAƒJƒEƒ“ƒgID‚ðŠ“¾‚Å‚«‚é‚悤‚ÉjC³ + (map/) + script.c + script_rid2sd(),buildin_attachrid()’ljÁ + ‘½XC³B + (doc/) + script_ref.txt + ƒGƒ‰[ƒƒbƒZ[ƒW‚Ìà–¾’ljÁA•Ï”/ƒ‰ƒxƒ‹‚Ìà–¾C³ + ‘¼C³ + +-------------------- +//0921 by RR +EƒXƒNƒŠƒvƒgƒoƒOC³(‚²–À˜f‚ð‚¨‚©‚¯‚µ‚Ü‚µ‚½) + (conf/npc/) + npc_event_tougijou.txt + +Esteal—¦C³(Ž©DEX - “GDEX + SLv*3 +10‚Ì•”•ª‚ňê“x”»’è‚ð‚µ‚Ä‚¢‚½‚Ì‚Å) +E0918‚Å0914ˆÈ‘O‚ÉŠª‚«–ß‚Á‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½•”•ª‚ðŒ³‚É–ß‚µ‚½ + (map/) + pc.c + pc_steal_item() C³ + itemdb.c + pet.c + skill.c C³ + +-------------------- +//0920 by Ž‚Žqo^.^o +E Steal—¦ = Drop—¦ * (Ž©DEX - “GDEX + SLv*3 +10) /100 + (map/) + pc.c + int pc_steal_item()C³ + +-------------------- +//0919 by RR +Eatcommand‚Ìlvup‚ðŽg‚¤‚Ǝ擾ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ª‚¨‚©‚µ‚¢–â‘è‚ÌC³ +EƒoƒOC³(ƒoƒO•ñƒXƒŒ‚ÅC³‚Ìo‚½‚à‚Ì‚ÌŽæ‚èž‚Ý@ŒÓ’±—–‚³‚ñAp‚³‚ñA‹¤‚É‚¨”æ‚ê—l‚Å‚·) + (map/) + atcommand.c + atcommand_baselevelup()C³ + guild.c + guild_gvg_eliminate_timer()C³ + pc.c + pc_setreg(),pc_setregstr()C³ + (login/) + login.c + parse_login()C³ +-------------------- +//0918 by ¹ +Eitem_dbŽ©‘Ì‚ªƒI[ƒo[ƒ‰ƒCƒh‰Â”\‚É‚È‚Á‚½‚Ì‚ÅAclass_equip_db.txt‚Ì”pŽ~B +Epet_db.txtAproduce_db.txt‚àƒI[ƒo[ƒ‰ƒCƒh‰Â”\‚ÉC³B + (map/) + itemdb.c + do_init_itemdb() C³B + pet.c + read_petdb() C³B + skill.c + skill_readdb() C³B + +-------------------- +//0917 by RR +EƒXƒNƒŠƒvƒgC³ + “‘¾˜YƒCƒxƒ“ƒg‚Æ“¬‹ZêƒCƒxƒ“ƒg‚ðNPCƒ^ƒCƒ}[‚É•ÏX + (conf/npc/) + npc_event_momotarou.txt + npc_event_tougijou.txt C³ +EƒXƒLƒ‹ƒcƒŠ[C³(ƒoƒO•ñƒXƒŒ25‚æ‚è) + (db/) + skill_db.txt C³ + +-------------------- +//0916 by (“Ê) +Enpc_monster‚Énpc_mob_job‚ð“‡Bnpc_mob_job.txt‚Í휂µ‚Ä‚©‚Ü‚¢‚Ü‚¹‚ñ + + (conf/) + map_athena.conf npc_mob_job‚ðíœ + (conf/mob/) + npc_monster.txt XV + +-------------------- +//0915 by ŒÓ’±—– + +ENPCƒ^ƒCƒ}[ŠÖŒW‚Ì–½—ߒljÁ•C³‘¼ + EdelwaitingroomiNPCƒ`ƒƒƒbƒgI—¹jˆø”‚ðŒ©‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³ + EinitnpctimeriNPCƒ^ƒCƒ}[‰Šú‰»j’ljÁ + EstopnpctimeriNPCƒ^ƒCƒ}[’âŽ~j’ljÁ + EstartnpctimeriNPCƒ^ƒCƒ}[ŠJŽnj’ljÁ + EgetnpctimeriNPCƒ^ƒCƒ}[î•ñŠ“¾j’ljÁ + EsetnpctimeriNPCƒ^ƒCƒ}[’lÝ’èj’ljÁ + + Šù‘¶‚Ìaddtimer‚Ȃǂ̓vƒŒƒCƒ„[’PˆÊ‚Ì‚½‚ßANPC’PˆÊ‚̃^ƒCƒ}[‚ðì‚è‚Ü‚µ‚½B + ‚±‚¿‚ç‚ÍAaddtimer‚ȂǂƂ͈ႢAOnTimerXXX‚Æ‚¢‚¤•—‚Ƀ‰ƒxƒ‹‚ðŽw’肵‚Ü‚·B + Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚Æscrit_ref.txt‚ðŽQÆB + + (map/) + map.h + struct npc_data C³Astruct npc_timerevent_list’ljÁ + npc.c / npc.h + npc_timerevent(),npc_timerevent_start(),npc_timerevent_stop(), + npc_gettimerevent_tick(),npc_settimerevent_tick()’ljÁ + npc_parse_script()C³ + script.c + buildin_*npctimer()’ljÁ‚È‚Ç + (conf/sample/) + npc_test_npctimer.txt + NPCƒ^ƒCƒ}[Žg—pƒTƒ“ƒvƒ‹ + (doc/) + script_ref.txt + NPCƒ^ƒCƒ}[ŠÖŒW‚Ì–½—ß/ŠÖ”’ljÁA’蔃‰ƒxƒ‹‚Ìà–¾C³ + +ESage‚̃A[ƒXƒXƒpƒCƒN‚ÌŠ“¾ðŒC³ + (db/) + skill_tree.txt + ƒA[ƒXƒXƒpƒCƒN‚ÌsiƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“‚ðLv1‚Éj + +-------------------- +//0914 by p +E”͈̓XƒLƒ‹Žg—pŽž‚ɉð•úς݃ƒ‚ƒŠ‚ðŽQÆ‚µ‚Ä‚¢‚½–â‘è‚ɑΉž +Eƒƒ‚ƒŠ‚ð‰Šú‰»‚¹‚¸‚ÉŽg—p‚µ‚Ä‚¢‚½—̈æ‚ðA‰Šú‰»‚µ‚Ä‚©‚çŽg—p‚·‚é‚悤‚É•ÏX + (common/) + db.c + grfio.c + socket.c + timer.c + (char/) + char.c + int_guild.c + int_party.c + int_pet.c + int_storage.c + inter.c + (login/) + login.c + (map/) + ‚Ù‚Æ‚ñ‚Ç.c + +-------------------- +//0913 by Kalen + +EGVGScript‚ÌC³ +@911‘Ήž +@ƒtƒ‰ƒO‚©‚çƒAƒWƒg‚Ö–ß‚é‹@”\’ljÁ +@–ß‚é‚Æ‚«‚É•·‚©‚ê‚é‚悤‚ÉC³(TESTscript) +@Ԏ擾Žž::OnRecvCastleXXX‚𔓮‚·‚é‚悤‚ÉC³ + (conf/gvg/) + ‚Ù‚Æ‚ñ‚Ç.txt + +-------------------- +//0912 by (“Ê) +E‚±‚̃tƒ@ƒCƒ‹‚Ì•¶Žš‰»‚¯‚ÆTEST_prtg_cas01_AbraiJ‚Ì•¶Žš‰»‚¯‚ðC³ +EƒoƒO•ñƒXƒŒ‚Ì>>19-20‚ðŽæ‚èž‚Ý +EÌ‚â‚Á‚¿‚Ü‚Á‚½battle_athena.conf‚̌뎚‚Ì’ù³ + + (common) + mmo.h + #define MAX_STAR 3‚ÉC³ + (conf) + battle_athena.conf + (conf/gvg/) + TEST_prtg_cas01_AbraiJ.txt + (map) + atcommand.c + get_atcommandinfo_byname() C³ + + +-------------------- +//0911 by Michael_Huang + + Mounting Emblem of the Flag-NPC. + (Added Script Command: FlagEmblem). + +(conf/gvg/) + TEST_prtg_cas01_AbraiJ.txt (FlagEmblem Test) + + (map/) + map.h struct npc_data{} + clif.c clif_npc0078() + script.c buildin_flagemblem() + +-------------------- +//0910 by RR +EƒXƒNƒŠƒvƒg‚̊ԈႢ‚ðC³ +(conf/gvg/) + ev_agit_payg.txt + ev_agit_gefg.txt + +E‚ЂÈÕ‚è‚Ɉê“x“ü‚Á‚½‚çƒ}ƒbƒv•Ï”‚ªŽc‚Á‚½‚Ü‚Ü‚É‚È‚é‚Ì‚ÅAƒ}ƒbƒv•Ï”‚ðŽg‚í‚È‚¢‚悤•ÏX +(ˆêŽž“Iƒ}ƒbƒv•Ï”‚É‚·‚ê‚Ζâ‘è‚È‚¢‚Æ‚àŒ¾‚¦‚Ü‚·‚ªA +town_guide‚Ætown_kafra‚ÉŽžŠúŒÀ’è‚Ì•¨‚ªí’“‚µ‚Ä‚µ‚Ü‚¤‚Ì‚ª‹C‚É‚È‚Á‚½‚Ì‚ÅA +‚»‚ê‚ç‚ðevent_hinamatsuri‚ÖˆÚ“®‚µA•’i‚Ì‚ðdisable‚µ‚Ä‚¢‚Ü‚·) + (conf/npc/) + npc_event_hinamatsuri + npc_town_guide + npc_town_kafra + +EƒXƒLƒ‹ƒŠƒZƒbƒgŽž‚̃XƒLƒ‹Žæ“¾§ŒÀ”»’è‚ðƒXƒLƒ‹ƒ|ƒCƒ“ƒg48ˆÈãÁ”ï‚©‚çA + ƒXƒLƒ‹ƒ|ƒCƒ“ƒg58ˆÈãÁ”ï‚©Žc‚èƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ªJOBLEVEL‚æ‚謂³‚‚È‚Á‚½‚Æ‚«‚É•ÏX +E@modelŽž‚Ì•žFõF§ŒÀ‚ðŠÉ˜a(’jƒAƒTAƒ[ƒO‚Ì‚Ý‚Ö) + (map/) + pc.c pc_calc_skilltree() + atcommand.c atcommand_model() + + +-------------------- +//0909 by ŒÓ’±—– + +ENPCƒ`ƒƒƒbƒgŠÖŒW‚Ì–½—ߒljÁ + EwaitingroomiNPCƒ`ƒƒƒbƒgì¬jC³iƒCƒxƒ“ƒg‚ð‹N‚±‚·l”‚ðŽw’è‰Â”\j + EdelwaitingroomiNPCƒ`ƒƒƒbƒgI—¹j’ljÁ + EenablewaitingroomeventiNPCƒ`ƒƒƒbƒgƒCƒxƒ“ƒg—LŒø‰»j’ljÁ + EdisablewaitingroomeventiNPCƒ`ƒƒƒbƒgƒCƒxƒ“ƒg–³Œø‰»j’ljÁ + EgetwaitingroomstateiNPCƒ`ƒƒƒbƒgó‘ÔŠ“¾j’ljÁ + EwarpwaitingpciNPCƒ`ƒƒƒbƒgƒƒ“ƒo[ƒ[ƒvjC³ + Ú‚µ‚‚Íscript_ref.txt‚ðŽQÆ + + (map/) + script.c/npc.c/npc.h/chat.c/chat.h/clif.c + ‘½XC³ + (doc/) + script_ref.txt + C³ + (conf/sample/) + npc_test_chat.txt + ’ljÁ–½—߂̃eƒXƒgƒXƒNƒŠƒvƒg + +EƒXƒNƒŠƒvƒg‚̊ԈႢ‚ðC³ + (conf/npc/) + npc_event_skillget.txt + npc_event_yuno.txt + npc_town_lutie.txt + npc_turtle.txt + “ä–½—ßadditem‚ðgetitem‚É’uŠ· + npc_town_guide.txt + “ä–½—ßscriptlabel‚ðƒRƒƒ“ƒg‰» + npc_event_momotaro.txt + npc_job_swordman.txt + npc_job_magician.txt + ';'•t‚¯–Y‚êC³ + (conf/gvg/) + ev_agit_aldeg.txt + @GID4‚ð@GIDa4‚É’uŠ· + ev_agit_gefg.txt + ev_agit_payg.txt + Annouce‚ÉFŽw’è‚Æ';'‚Ì•t‚¯–Y‚ê‚ðK« + + +EAthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚ÝA‚»‚Ì‘¼C³ + ˆÀ’肵‚Ä‚¢‚éƒf[ƒ^‚©‚Ç‚¤‚©‚í‚©‚è‚Ü‚¹‚ñ‚ªB + + (db/) + item_db.txt/mob_db.txt/mob_skill_db.txt + AthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚Ý + mob_skill_db.txt.orig + ˆÈ‘O‚̃f[ƒ^iƒRƒƒ“ƒg•”•ª‚È‚Ç‚ÌŽQl‚Éj + (conf/) + water_height.txt/mapflag.txt + AthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚Ý + map_athena.conf + npc_monster3*.txt‚ðíœ + ’ljÁƒ}ƒbƒvƒf[ƒ^ (by ID:UVsq5AE) + (conf/mob/) + npc_monster.txt + AthenaDBŒv‰æ‚̃f[ƒ^‚Ƃ肱‚Ý + +-------------------- +//0908 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚̃Gƒ‰[ƒ`ƒFƒbƒNˆ—‚ð‘‚₵‚½ + E•¶Žš—ñ‚Ì“r’†‚ʼnüs‚ª‚ ‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉB + EŠÖ”ŒÄ‚Ño‚µ‰‰ŽZŽq'('‚Ì’¼‘O‚ÉŠÖ”–¼ˆÈŠO‚ª‚ ‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉB + E–½—ß‚ª‚ ‚é‚ׂ«‚Æ‚±‚ë‚ÉŠÖ”–¼ˆÈŠO‚ª‚ ‚é‚ƃGƒ‰[‚ðo‚·‚悤‚ÉB + E–½—ß‚¨‚æ‚ÑŠÖ”‚̈ø”‹æØ‚è‚Ì','‚ðÈ—ª‚·‚é‚ÆŒx‚ðo‚·‚悤‚ÉB + E–½—ß‚¨‚æ‚ÑŠÖ”‚̈ø”‚Ì”‚ªˆÙ‚È‚é‚ÆŒx‚ðo‚·‚悤‚ÉB + + (map/) + script.c + FXC³ + +ENPCƒXƒNƒŠƒvƒgC³ + (conf/npc/) + npc_town_guide.txt + ‚Ss–Ú‚Í‚¢‚ç‚È‚¢‚悤‚Ȃ̂ŃGƒ‰[‚ªo‚È‚¢‚悤‚ɃRƒƒ“ƒg‰» + npc_event_hat.txt + ƒRƒ‚ƒh‚̉¼–ÊEl‚ƃtƒFƒCƒˆƒ“‚Ì”N (by ID:dS8kRnc) + (conf/sample/) + npc_card_remover.txt + @menu‚ðŽg‚Á‚Ä’Z‚‚µ‚½••¶Í‚µC³ + +E‚»‚Ì‘¼ + (db/) + skill_tree.txt + Sage‰ž‹}Žè“– + +-------------------- +//0907 by p +Eatcommand() ‚Ì”ì‘剻‚ª‚Ђǂ¢‚̂ŃŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO + @ ƒRƒ}ƒ“ƒh‚ð’ljÁ‚·‚éꇂÍAatcommand.h “à‚Œ蔂ðAatcommand.c “à‚Å + ŠÖ”’è‹`ƒ}ƒNƒ‚ƃ}ƒbƒsƒ“ƒOƒe[ƒuƒ‹Aˆ——p‚ÌŠÖ”‚ð‹Lq‚µ‚Ä‚‚¾‚³‚¢B +Eglobal •Ï”‚Ì atcommand_config ‚ðÁ‹ŽB + @ ƒRƒ}ƒ“ƒh–ˆ‚̃Œƒxƒ‹‚Í get_atcommand_level() ‚Ŏ擾‚µ‚Ä‚‚¾‚³‚¢B +Eˆê•”‚̃Lƒƒƒ‰–¼‚ðŽæ‚é @ ƒRƒ}ƒ“ƒh‚ÅA”¼ŠpƒXƒy[ƒX‚ðŠÜ‚Þ–¼‘O‚̃Lƒƒƒ‰‚ð + ³í‚Ɉ—‚Å‚«‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ðC³B + ‚±‚̉e‹¿‚É‚æ‚èA@rura+ ‚È‚ÇAƒLƒƒƒ‰–¼‚ªƒpƒ‰ƒ[ƒ^‚Ì“r’†‚É‚ ‚Á‚½‚à‚Ì‚Í + ‘S‚ÄÅŒã‚ɉñ‚³‚ê‚Ä‚¢‚Ü‚·B +E@ ƒRƒ}ƒ“ƒh‚Ì•¶Žš—ñ‚ð³í‚Ɏ擾‚Å‚«‚È‚©‚Á‚½ê‡‚ÉAƒoƒbƒtƒ@‚Ì“à—e‚ð + ƒ`ƒFƒbƒN‚¹‚¸‚Ɉ—‚ðs‚¨‚¤‚Æ‚µ‚Ä‚¢‚½•”•ª‚ðC³‚µ‚Ü‚µ‚½B + + (common/) + mmo.h + (map/) + atcommand.h + atcommand.c + clif.h + clif.c + +-------------------- +//0906 by Selena +EŒÓ’±—–‚³‚ñ‚ÌC³‚É‚ ‚킹‚ÄAƒoƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚PˆÈŠO‚̃XƒNƒŠƒvƒg‚ÌC³B +E@ƒRƒ}ƒ“ƒh“ü—̓~ƒX‚ÌۂɃGƒ‰[ƒƒbƒZ[ƒW‚ð•\Ž¦B + (conf/gvg/) + ev_agit_aldeg.txt + ev_agit_gefg.txt + ev_agit_payg.txt + ev_agit_prtg.txt + aldeg_cas01`05.txt + gefg_cas01`05.txt + payg_cas01`05.txt + prtg_cas02`05.txt + (map/) + atcommand.c + +-------------------- +//0905 by ŠÇ—l + +EƒT[ƒo[snapshot +E‘OƒXƒŒ‚̃tƒ@ƒCƒ‹Žæ‚è–Y‚ꂽl‚ª‚¢‚é‚©‚à‚µ‚ê‚È‚¢‚Ì‚Å + +-------------------- +//0904 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒgˆ—C³ + Echar/interƒT[ƒo[‚ÉÚ‘±‚µ‚½Žž‚ÉOnCharIfInit/OnInterIfInitƒCƒxƒ“ƒg‚ª + ŒÄ‚΂ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + OnAgitInit‚ÍOnInterIfInit‚É•ÏX‚·‚ׂ«‚Å‚·B + Egetcastledata–½—ß‚Å‘æ‚Qƒpƒ‰ƒ[ƒ^‚ª0‚Ì‚Æ‚«A‘æ‚Rƒpƒ‰ƒ[ƒ^‚É + ƒCƒxƒ“ƒg–¼‚ðÝ’è‚Å‚«‚Ü‚·B‚±‚̃Cƒxƒ“ƒg‚̓Mƒ‹ƒhé‚̃f[ƒ^‚ð + InterƒT[ƒo[‚©‚犓¾Š®—¹‚µ‚½‚Æ‚«‚ÉŽÀs‚³‚ê‚Ü‚·B + E‹N‚±‚·NPCƒCƒxƒ“ƒg–¼‚ð"::"‚ÅŽn‚ß‚é‚ÆA“¯–¼ƒ‰ƒxƒ‹‚ðŽ‚‘SNPC‚̃Cƒxƒ“ƒg + ‚ðŽÀs‚Å‚«‚Ü‚·B + ‚½‚Æ‚¦‚ÎAgetcastledata "prtg_cas01.gat",0,"::OnRecvCastleP01"; + ‚Æ‚·‚é‚Æ‘S‚Ä‚ÌNPC‚Ì OnRecvCastleP01ƒ‰ƒxƒ‹‚ªŽÀs‚³‚ê‚Ü‚·B + Erequestguildinfo–½—ߒljÁB“Á’èƒMƒ‹ƒh‚Ìî•ñ‚ðInterƒT[ƒo[‚É + —v‹‚Å‚«‚Ü‚·B‘æ‚Pƒpƒ‰ƒ[ƒ^‚̓Mƒ‹ƒhIDA‘æ‚Qƒpƒ‰ƒ[ƒ^‚̓Cƒxƒ“ƒg–¼‚Å + ‚±‚̃Cƒxƒ“ƒg‚̓Mƒ‹ƒhî•ñ‚ðInterƒT[ƒo[‚©‚犓¾Š®—¹‚µ‚½‚Æ‚«‚É + ŽÀs‚³‚ê‚Ü‚·B + + (map/) + guild.c/guild.h/npc.c/npc.h/script.c/intif.c/chrif.c + FXC³ + +EƒMƒ‹ƒhéŠÖ˜ANPCC³ + iƒoƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚P‚Ì‚ÝC³B‘¼‚Ìé‚̃XƒNƒŠƒvƒg‚ÍŠeŽ©‚ŘM‚Á‚Ä‚‚¾‚³‚¢B + ‚Æ‚¢‚¤‚©A‚Þ‚µ‚ë˜M‚Á‚½‚ç‚ ‚Á‚Õ‚µ‚Ü‚µ‚傤j + E‰Šú‰»ˆ—‚ðOnAgitInit‚Å‚È‚OnInterIfInit‚É•ÏXB + Eéƒf[ƒ^Š“¾Š®—¹ˆ—‚Æ‚µ‚ÄOnRecvCastleP01‚ð’ljÁB + EŽIÄ‹N“®ŽžAƒMƒ‹ƒhê‘®ƒJƒvƒ‰‚ª³‚µ‚•\Ž¦‚³‚ê‚é‚悤‚ÉB + EƒMƒ‹ƒhê‘®ƒJƒvƒ‰‚Ì–¼‘O‚ð"ƒJƒvƒ‰Eˆõ::kapra_prtg01"‚É•ÏXB + i"::"ˆÈ~‚̓GƒNƒXƒ|[ƒg‚³‚ê‚é–¼‘O‚ÅA"::"ˆÈ‘O‚ª•\Ž¦–¼j + "ƒJƒvƒ‰Eˆõ#prt"‚æ‚è–¼‘O‚ð’·‚‚µ‚Ä‹£‡‚µ‚É‚‚‚·‚邽‚ß‚Å‚·B + ‚±‚ÌŠÖŒW‚ÅAdisablenpc‚Ȃǂ̃pƒ‰ƒ[ƒ^‚ð"kapra_prtg01"‚ÉC³B + (conf/gvg/) + prtg_cas01.txt + ƒMƒ‹ƒhê‘®ƒJƒvƒ‰C³ + ev_agit_prtg.txt + ‰Šú‰»ˆ—C³iƒoƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚P‚Ì‚Ýj + TEST_prtg_cas01_AbraiJ.txt + ƒMƒ‹ƒhê‘®ƒJƒvƒ‰ŒÙ—p/é”jŠüC³ + +ENPC‚ÌC³ + (conf/npc/) + npc_job_swordman.txt + npc_event_hat.txt + C³ + +EƒAƒJƒEƒ“ƒg‚ð휂µ‚Ä‚àƒAƒJƒEƒ“ƒgID‚ðÄ—˜—p‚µ‚È‚¢‚悤‚ÉC³ +EƒMƒ‹ƒh/ƒp[ƒeƒB‚ɂ‚¢‚Ä‚àˆê‰ž“¯“™‚̈—’ljÁiƒRƒƒ“ƒg‰»‚³‚ê‚Ä‚¢‚Ü‚·B + ƒMƒ‹ƒh‚âƒp[ƒeƒB‚ÍID‚ðÄ—˜—p‚µ‚Ä‚à‚¨‚»‚ç‚–â‘è‚È‚¢‚½‚ßj + + (login/) + login.c + “Ç‚Ýž‚Ý/•Û‘¶ˆ—C³ + (char/) + int_guild.c/int_party.c + “Ç‚Ýž‚Ý/•Û‘¶ˆ—C³ + +-------------------- +//0903 by ŒÓ’±—– + +El14/l15‚¨‚æ‚уvƒŒƒtƒBƒbƒNƒXl‚ð"„§‚³‚ê‚È‚¢(deprecated)"‹@”\‚Æ‚µ‚Ü‚µ‚½B + E‚Ü‚¾Žg—p‚Å‚«‚Ü‚·‚ªA¡Œã‚Ì“®ì‚ª•ÛႳ‚ê‚È‚¢‚Ì‚ÅA‘¬‚â‚©‚É‘ã‘Ö‹@”\‚ð + Žg—p‚·‚é‚悤‚ɈÚs‚µ‚Ä‚‚¾‚³‚¢B + EƒvƒŒƒtƒBƒbƒNƒX'l'‚Í‘ã‘Ö‹@”\‚̃vƒŒƒtƒBƒbƒNƒX'@'‚ðŽg—p‚µ‚Ä‚‚¾‚³‚¢B + El15‚Í‘ã‘Ö‹@”\‚Ì@menu‚ðŽg—p‚µ‚Ä‚‚¾‚³‚¢B + El14‚Í‘ã‘Ö‹@”\‚Í‚ ‚è‚Ü‚¹‚ñBinput–½—߂̈ø”‚ðÈ—ª‚µ‚È‚¢‚ʼnº‚³‚¢B + E‚±‚ê‚ç‚Ì„§‚³‚ê‚È‚¢‹@”\‚ðŽg—p‚·‚é‚ÆŒxƒƒbƒZ[ƒW‚ª‚Å‚Ü‚·B + + (map/) + script.c + parse_simpleexpr()C³ + (conf/warp/) + npc_warp.txt/npc_warp25.txt/npc_warp30.txt + •Ï”–¼l0‚ð@warp0‚ÉC³ + (conf/npc/) + npc_event_hat.txt + •Ï”–¼l15‚ð@menu‚ÉC³ + (doc/) + script_ref.txt + ”z—ñ•Ï”‚Ìà–¾’ljÁ + •Ï”‚̃vƒŒƒtƒBƒbƒNƒX'l'Ainput–½—ß‚Ìl14Amenu–½—ß‚Ìl15‚Ì + à–¾‚ðC³ + +-------------------- +//0902 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚ª”z—ñ•Ï”‚ɑΉžB + Earray[number]‚̂悤‚ÉŽg‚¢‚Ü‚·B”’lŒ^A•¶Žš—ñŒ^—¼•ûŽg‚¦‚Ü‚·B + EŽg‚¦‚éƒvƒŒƒtƒBƒbƒNƒX‚Í @, $, $@ ‚Å‚·B + iˆêŽž“IƒLƒƒƒ‰ƒNƒ^[•Ï”AˆêŽž“I/‰i‘±“Iƒ}ƒbƒvƒT[ƒo[•Ï”j + Enumber==0‚Í”z—ñ‚¶‚á‚È‚¢•Ï”‚Æ’l‚ð‹¤—L‚µ‚Ü‚·B + i@hoge[0]‚Æ@hoge‚Í“¯‚¶•Ï”‚ð•\‚·j + E‚Ü‚¾‰¼ŽÀ‘•’iŠK‚Ȃ̂ŃoƒO•ñ‚æ‚낵‚‚¨Šè‚¢‚µ‚Ü‚·B +Eƒ}ƒbƒvƒT[ƒo[•Ï”‚Ì“Çž’†‚ÉCtrl+C‚ð‚·‚é‚ƃf[ƒ^”j‘¹‚̉”\«‚ª‚ ‚é–â‘è‚ðC³. +Eƒ}ƒbƒvƒtƒ@ƒCƒ‹“Ç‚Ýž‚݉æ–Ê‚ª‚³‚Ñ‚µ‚¢‚Ì‚Å‚¹‚߂ătƒ@ƒCƒ‹–¼‚ð•\Ž¦‚·‚é‚悤‚ÉB + + (conf/sample/) + npc_test_array.txt + ”z—ñ•Ï”ƒeƒXƒgƒXƒNƒŠƒvƒg + (map/) + script.c + buildin_set(),buildin_input(),get_val(), + parse_simpleexpr()C³ + buildin_getelementofarray()’ljÁ + do_final_script()C³‚È‚Ç + map.c + map_readmap(),map_readallmap()C³ + +-------------------- +//0901 by ‚Ò‚´‚Ü‚ñ + +E˜I“XƒoƒO‚ÌC³ + + (map/) + pc.c + pc_cartitem_amount() ’ljÁB + vending.c + vending_openvending() C³B + clif.c + clif_parse_NpcClicked() C³B + pc.h C³B + +-------------------- +//0900 by ‚Ò‚´‚Ü‚ñ + +EƒAƒuƒ‰ƒJƒ_ƒuƒ‰‚̃‰ƒ“ƒ_ƒ€ƒXƒLƒ‹”“®—¦‚ðabra_db.txt‚ÅÝ’è‚Å‚«‚é‚悤‚ÉB +EƒXƒtƒBƒA[ƒ}ƒCƒ“‚ƃoƒCƒIƒvƒ‰ƒ“ƒg‚Ì”÷C³B +ENoreturnƒ}ƒbƒv‚Å’±‚ªÁ”‚¯‚³‚ê‚éƒoƒOC³B +Eˆê•”‚̃Aƒuƒ‰ŒÅ—LƒXƒLƒ‹‚ª³‚µ‚“®ì‚µ‚È‚©‚Á‚½ƒoƒOC³B + (map/) + mob.c + mob_damage()Amobskill_use() C³B + mob_skillid2skillidx() ’ljÁB + skill.c + skill_readdb()Askill_abra_dataset() C³B + skill_castend_nodamage_id()Askill_castend_pos2() C³B + script.c + buildin_warp() C³B + + skill.h C³B + map.h C³B + (db/) + abra_db.txt ’ljÁB + skill_db.txt C³B + +-------------------- +//0899 by ŒÓ’±—– + +EŽæ‚芪‚«MOB‚̈—C³ + EŽæ‚芪‚«¢Š«‚ŃRƒA‚ð“f‚ƒoƒOC³ + EŽå‚ª•Êƒ}ƒbƒv‚É”ò‚Ô‚ÆAƒeƒŒƒ|[ƒg‚Å’Ç‚¢‚©‚¯‚é‚悤‚ÉC³ + EŽæ‚芪‚«ˆ—‚ð‚æ‚èŒy‚•ÏX + + (map/) + mob.c + mob_ai_sub_hard_mastersearch()‚ðmob_ai_sub_hard_slavemob() + ‚É–¼‘O‚ð•Ï‚¦‚Ĉ—C³B + mob_summonslave()C³ + +-------------------- +//0898 by ŒÓ’±—– + +Eeathena‚©‚çCardRemoverNPC‚ÌŽæ‚èž‚Ý + NPCƒf[ƒ^‚à“ú–{Œê–󂵂Ă܂·‚ªA‚©‚È‚è“K“–‚Å‚·B + + (map/) + script.c + buildin_getequipcardcnt(),buildin_successremovecards() + buildin_failedremovecards()’ljÁ + (conf/sample/) + npc_card_remover.txt + ƒJ[ƒhŽæ‚èŠO‚µNPC‚Ì“ú–{Œê–ó + ƒvƒƒ“ƒeƒ‰‚̸˜BŠ‚Ì’†‚̶‰º‚Ì•”‰®‚É‚¢‚Ü‚· + +Eƒ|[ƒ^ƒ‹‚ŕʃ}ƒbƒv‚É”ò‚΂µ‚½MOB‚ª‚»‚̃}ƒbƒv‚É•¦‚«’¼‚·ƒoƒOC³ + (map/) + map.h + struct mob_data‚Émƒƒ“ƒo’ljÁ + mob.c + mob_spawn(),mob_once_spawn()C³ + npc.c + npc_parse_mob()C³ + + +-------------------- +//0897 by ‚Ò‚´‚Ü‚ñ + +Eׂ©‚¢’²® +EƒXƒgƒŠƒbƒvŒn‚ƃPƒ~ƒJƒ‹ƒvƒƒeƒNƒVƒ‡ƒ“ŒnƒXƒLƒ‹‚Ì‘SŽÀ‘• +@–{ŽI‚Å‚Ìׂ©‚¢Žd—l‚ª•ª‚Á‚½‚Ì‚ÅŽÀ‘•‚µ‚Ü‚µ‚½B +@Šm—¦‚ÍŽb’è‚Å‚·B + + (map/) + pc.c + pc_isequip() C³ + skill.c + skill_status_change_start()Askill_castend_nodamage_id() C³B + skill_abra_dataset() C³B + battle.c + battle_get_def()Abattle_get_atk2() C³B + battle_get_vit()Abattle_get_int() C³B + (db/) + const.txt C³B + skill_db.txt C³B + cast_db.txt C³B + +-------------------- +//0896 by ŒÓ’±—– + +E‰i‘±“Iƒ}ƒbƒv•Ï”‹@”\’ljÁ +Eƒ}ƒbƒv•Ï”‚𕶎š—ñŒ^•Ï”‚Æ‚µ‚Ä‚àŽg—p‚Å‚«‚é‚悤‚É‚µ‚½ + E¡‚܂ł̃vƒŒƒtƒBƒbƒNƒX $ ‚͉i‘±“I‚É‚È‚è‚Ü‚·B + ˆêŽž“Iƒ}ƒbƒv•Ï”‚ðŽg—p‚·‚éꇂ̓vƒŒƒtƒBƒbƒNƒX $@ ‚ðŽw’肵‚Ä‚‚¾‚³‚¢. + + E‰i‘±“I/ˆêŽž“I‚Æ‚à‚É•¶Žš—ñŒ^‚ɑΉž‚µ‚Ä‚¢‚Ü‚·B + •¶Žš—ñŒ^‚̃|ƒXƒgƒtƒBƒbƒNƒX‚Í$‚Å‚·B + + <—á> $@hoge ”’lŒ^ˆêŽžƒ}ƒbƒv•Ï”A$hoge$ •¶Žš—ñŒ^‰i‘±ƒ}ƒbƒv•Ï” + E‰i‘±ƒ}ƒbƒv•Ï”‚̓fƒtƒHƒ‹ƒg‚Å‚Í save/mapreg.txt ‚É•Û‘¶‚³‚ê‚Ü‚·B + ‚±‚ê‚Ímap_athena.conf‚Ìmapreg_txt‚ÅÝ’è‚Å‚«‚Ü‚·B + +Estr_data‚ªÄŠ„‚è“–‚Ä‚³‚ê‚é‚ƃ}ƒbƒv•Ï”‚ª³í‚ÉŽg—p‚Å‚«‚È‚¢ƒoƒOC³ + Estrdb‚©‚çnumdb‚É‚µ‚ÄA•Ï”–¼‚Ístr_buf‚É“ü‚ê‚é‚悤‚ÉB + +Emap_athena.conf‚Ìdelnpc,npc:clear‚ª³‚µ‚“‚©‚È‚¢ƒoƒOC³ + + (map/) + npc.c + npc_delsrcfile(),npc_clearsrcfile()C³ + script.c / script.h + ƒ}ƒbƒv•Ï”Œn‚©‚È‚èC³ + map.c + map_read_config()C³‚È‚Ç + (conf/) + map_athena.conf + mapreg_txt’ljÁ + (doc/) + conf_ref.txt + mapreg_txt,help_txt,motd_txt’ljÁ + script_ref.txt + •¶Žš—ñŒ^•Ï”‚Ìà–¾C³ + +-------------------- +//0895 by Selena + +Emapflag‚Énozenypenalty‚ð’ljÁB +@GVG‚âŠX’†‚̃eƒ‚È‚Ç‚ÅŽ€–S‚µ‚½Û‚ÉAZenyƒyƒiƒ‹ƒeƒB[”¶‚ðŠO‚·—pB + + (map/) + pc.c + pc_setrestartvalue() C³ + script.c + buildin_setmapflag()Abuildin_removemapflag() C³ + npc.c + npc_parse_mapflag() C³ + map.h + map_data() C³ + (db/) + const.txt C³B + +-------------------- +//0894 by ‚Ò‚´‚Ü‚ñ + +EƒR[ƒ}ˆÈŠO‚̃Aƒuƒ‰ƒJƒ_ƒuƒ‰ŒÅ—LƒXƒLƒ‹‘SŽÀ‘•B +@ƒI[ƒgƒXƒyƒ‹‚ɂ̓Œƒxƒ‹ƒAƒbƒvˆÈŠO‘½•ª‘S•”悹‚ê‚Ü‚·B(ƒI[ƒgƒXƒyƒ‹ƒŒƒxƒ‹ƒAƒbƒv‚Í–¢ƒeƒXƒg) +EƒAƒuƒ‰ƒJƒ_ƒuƒ‰‰¼ŽÀ‘• +@”“®ƒXƒLƒ‹‚ªƒŒƒxƒ‹ˆË‘¶‚¶‚á‚ ‚è‚Ü‚¹‚ñB +@‘S‚Ä‚Ì”“®—¦‚ª—˜_ã‹Ïˆê‚Å‚·B +@ƒAƒCƒeƒ€ƒXƒLƒ‹‚ðŽg‚Á‚ÄŽÀ‘•‚µ‚Ä‚¢‚é‚̂ňꕔ‚ÌŽg—pðŒ‚𖳎‹‚µ‚Ü‚·iƒWƒFƒ€ã©‹C‹…“™j +EƒAƒCƒeƒ€ƒXƒLƒ‹‚ªƒLƒƒƒXƒgEƒfƒBƒŒƒC–³‚µ‚¾‚Á‚½‚Ì‚ðC³B + + (map/) + skill.c + skill_castend_nodamage_id()Askill_use_id()Askill_use_pos() C³B + skill_abra_dataset() ’ljÁB + (db/) + skill_db.txt C³B + +-------------------- +//0893 by ŒÓ’±—– + +E‘¼ƒ}ƒbƒv‚©‚çƒ|[ƒ^ƒ‹‚Ìã‚Ƀ[ƒv‚µ‚Ä‚«‚½PC‚ªƒ[ƒv‚µ‚È‚¢–â‘è‚ðC³ +Eƒ`ƒƒƒbƒg’†‚ÌPC‚ðƒ[ƒvƒ|[ƒ^ƒ‹‚Å”ò‚΂·‚©‚Ç‚¤‚©Ý’è‰Â”\‚É +EMOB‚ðƒ[ƒvƒ|[ƒ^ƒ‹‚Å”ò‚΂·‚©‚Ç‚¤‚©Ý’è‰Â”\‚É + MOB‚̃[ƒvƒ|[ƒ^ƒ‹‚ð‹–‰Â‚·‚é‚ÆAƒeƒ‚ªŠÈ’P‚É‚Å‚«‚é‚Ì‚Å’ˆÓB + +EƒAƒJƒEƒ“ƒg•Ï”•ÏX‚Æ“¯Žž‚Ƀtƒ@ƒCƒ‹‚É‘‚«o‚·‚悤‚ÉC³ +Eƒ}ƒbƒvƒf[ƒ^‚̃[ƒh•”•ª‚̃ƒO•\Ž¦‚Í‚ ‚Ü‚èd—v‚¶‚á‚È‚¢‚ÆŽv‚¤‚Ì‚Å•ÏXB + + (char/) + inter.c + mapif_parse_AccReg()‚Åinter_accreg_save()‚ðŒÄ‚Ԃ悤‚ÉC³ + (map/) + mob.c/mob.h + mob_warp()‚̈ø”•ÏX‚ÆC³ + battle.c/battle.h + mob_warp()ŒÄ‚Ño‚µ‚̈ø”C³ + battle_configŠÖ˜A + map.c + map_readallmap(),map_readmap()C³ + pc.c + pc_setpos()C³ + skill.c + mob_warp()ŒÄ‚Ño‚µ‚̈ø”C³ + skill_unit_onplace()C³ + (conf/) + battle_athena.conf + chat_warpportal,mob_warpportal‚̒ljÁ + (doc/) + conf_ref.txt + chat_warpportal,mob_warpportal‚̒ljÁ + +-------------------- +//0892 by ŒÓ’±—– + +EŠeŽíconfƒtƒ@ƒCƒ‹‚ŕʃtƒ@ƒCƒ‹‚ðƒCƒ“ƒ|[ƒg‚Å‚«‚é‚悤‚É‚µ‚½ + EŽ©•ª‚̃T[ƒo[—p‚ÌÝ’è‚ð•Êƒtƒ@ƒCƒ‹‚É‹Lq‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B + E‘S‚Äuimport: ƒtƒ@ƒCƒ‹–¼vŒ`Ž®‚Å‹Lq‚µ‚Ü‚·B + EŠeŽíconfƒtƒ@ƒCƒ‹ilogin,char,map,inter,atcommand,battlej‚ÌÅŒã‚É + conf/import/*_conf ‚ð“ǂނ悤‚ÉŽw’肵‚½‚Ì‚ÅA‚»‚±‚ÉŽ©•ª—p‚ÌÝ’è‚ð + ‘‚¢‚Ä‚¨‚¯‚ÎA•ÏX•”•ª‚̂݃I[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B + msg,script‚Ìconf‚ɂ‚¢‚Ä‚ÍA‚±‚ÌŒÀ‚è‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªAimport–½—ß‚Ì + ˆ—‚͒ljÁ‚³‚ê‚Ä‚¢‚é‚Ì‚ÅAŽ©•ª‚Åimport–½—߂𑂯‚Γ®‚«‚Ü‚·B + EV‚µ‚¢ƒXƒiƒbƒvƒVƒ‡ƒbƒg‚ªo‚½ê‡‚È‚Ç‚ÉA‚±‚Ìconf/importƒtƒHƒ‹ƒ_‚ð + Ì‚ÌAthena‚©‚çƒRƒs[‚·‚邾‚¯‚ÅŽ©•ª—p‚ÌÝ’è‚ð“K—p‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·. + +Emap_athena.conf‚Ìmap‚Ænpc‚ŒljÁ‚µ‚½ƒtƒ@ƒCƒ‹‚ð휂ł«‚é‚悤‚É‚µ‚½ + Eã‚ÉŠÖ˜A‚·‚é•ÏX‚Å‚·B + Edelmap,delnpc–½—ß‚ðŽg—p‚·‚ê‚ÎAmap,npc–½—߂ŒljÁ‚µ‚½ƒtƒ@ƒCƒ‹‚ð + “Ç‚Ýž‚Ü‚È‚¢‚悤‚ÉŽw’è‚Å‚«‚Ü‚·B‚±‚±‚Ńtƒ@ƒCƒ‹–¼‚Å‚Í‚È‚A + all ‚ÆŽw’è‚·‚é‚Æ‚»‚ê‚Ü‚Å‚ÉŽw’肳‚ꂽƒtƒ@ƒCƒ‹‚ð‘S‚Ä“Ç‚Ýž‚Ü‚È‚‚µ‚Ü‚·. + Emap,npc–½—ß‚ÅAƒtƒ@ƒCƒ‹–¼‚Éclear‚ðŽw’è‚·‚é‚ÆA + delmap,delnpc‚Ìall‚Æ“¯“™‚Ì“®ì‚ð‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + +Elogin_athena.conf‚Ìallow‚Ædeny‚ðƒNƒŠƒA‚Å‚«‚é‚悤‚É‚“‚½ + Eallow‚¨‚æ‚Ñdeny–½—ß‚Åclear‚ðŽw’è‚·‚é‚ƈȑO‚̃zƒXƒgî•ñ‚ð‘S휂µ‚Ü‚·. + + (conf/) + ŠeŽíconfƒtƒ@ƒCƒ‹‚ÌÅŒã‚Éimport–½—ߒljÁ + (conf/import) + *.txt + ƒCƒ“ƒ|[ƒg‚³‚ê‚éƒtƒ@ƒCƒ‹B‚±‚ê‚ç‚ÉŽ©•ª—p‚ÌÝ’è‚ð‘‚‚Æ‚æ‚¢B + (login/) + login.c + login_read_config()C³ + (char/) + char.c/inter.c + char_read_config(),inter_read_config()C³ + (map/) + map.c + map_read_config(),map_addmap()C³Amap_delmap()’ljÁ + npc.c + npc_addsrcfile()C³,npc_delsrcfile(),npc_clearsrcfile()’ljÁ + battle.c/atcommand.c/script.c + battle_read_config(),atcommand_read_config(), + msg_read_config(),script_read_config()C³ + (doc/) + conf_ref.txt + C³ + +-------------------- +//0891 by (“Ê) + +EuƒXƒLƒ‹Žg—p‚ÌŒã‚ÍA‚µ‚΂炂¨‘Ò‚¿‚‚¾‚³‚¢v‚ð•\Ž¦‚·‚é‚©‚Ç‚¤‚©Ý’è‚Å‚«‚é‚悤‚É‚µ‚½B + E–{ŽI‘ŠˆáƒXƒŒƒbƒh@‘´‚̇U>>5‚³‚ñ‚̃R[ƒh‚ðƒpƒNƒŠ‚Ü‚µ‚½B + (doc/) + conf_ref.txt C³B + (conf/) + battle_athena.conf C³B + (map/) + battle.h C³B + battle.c + battle_config_read() C³B + clif.c + clif_skill_fail() C³B + +-------------------- +//0890 by Ž€_ + +EƒMƒ‹ƒh‘qŒÉ‚ðˆê“x‚Ɉêl‚¾‚¯‚ªŽg—p‚·‚é‚悤‚É•ÏXB(–¢ƒeƒXƒg) +Ebattle_athena.conf‚©‚çplayer_undead_nofreeze íœB +E@ƒRƒ}ƒ“ƒh@gstorage ’ljÁB +EƒXƒNƒŠƒvƒgguildstorage‚ðguildopenstorage‚É•ÏXB +E‚»‚Ì‘¼×‚©‚¢ƒoƒOC³B + (doc/) + conf_ref.txt C³B + script_ref.txt C³B + (conf/) + atcommand_athena.conf C³B + battle_athena.conf C³B + help.txt C³B + (conf/sample/) + gstorage_test.txt ’ljÁB + (char/) + makefile C³B + int_storage.h C³B + int_storage.c + inter_storage_delete()Ainter_guild_storage_delete() ’ljÁB + int_guild.c + guild_check_empty()Amapif_parse_BreakGuild() C³B + (map/) + makefile C³B + battle.h C³B + battle.c + battle_config_read() C³B + guild.c + guild_broken() C³B + storage.h C³B + storage.c + storage_guild_storageopen() C³B + storage_delete()Aguild_storage_delete() ’ljÁB + script.c + buildin_guildstorage() ‚ð buildin_guildopenstorage()‚É•ÏXB + intif.c + intif_parse_LoadGuildStorage() C³B + mob.c + mob_summonslave()Amob_damage()Amob_delete() C³B + mob_catch_delete()Amob_readdb() C³B + skill.c + skill_castend_nodamage_id()Askill_status_change_start() C³B + clif.c + clif_parse_ActionRequest() C³B + atcommand.h C³B + atcommand.c + atcommand() C³B + +-------------------- +//0889 by ŒÓ’±—– + +E•¶Žš—ñŒ^ˆêŽž“IƒLƒƒƒ‰ƒNƒ^[•Ï”‹@”\’ljÁB + EƒvƒŒƒtƒBƒbƒNƒX@,ƒ|ƒXƒgƒtƒBƒbƒNƒX$‚ðŽg—p‚µ‚Ü‚·Bi@hoge$‚È‚Çj + Einput‚Å•¶Žš—ñ•Ï”‚ðŽw’è‚·‚é‚Æ•¶Žš—ñ“ü—Í‚É‚È‚è‚Ü‚·B + EŠÖŒW‰‰ŽZŽqi”äŠr‰‰ŽZŽqj‚Å•¶Žš—ñ‚Ç‚¤‚µ‚ðŽw’è‚·‚é‚Æ•¶Žš—ñ‚Ì”äŠr‚ª + ‚Å‚«‚Ü‚·B”’l‚Æ•¶Žš—ñ‚𬂺‚Ä”äŠr‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB + E‚Æ‚è‚ ‚¦‚¸ƒTƒ“ƒvƒ‹•t‚¯‚Ä‚Ü‚·B + + (map/) + map.h + struct map_session_data‚Énpc_str,regstr,regstr_numƒƒ“ƒo’ljÁ + script.c + buildin_set(),get_val(),buildin_input(),op_2num()‚È‚ÇC³ + op_2str(),op_2()’ljÁ + clif.c / clif.h + 01d5ƒpƒPƒbƒg’·C³ + clif_parse_NpcStringInput(),clif_scriptinputstr()’ljÁ + pc.c / pc.h + pc_readregstr(),pc_setregstr()’ljÁ + (doc/) + script_ref.txt + ‰‰ŽZŽq‚Ìà–¾’ljÁA•Ï”‚Ìà–¾C³Ainput,menuC³ + (conf/sample/) + npc_test_str.txt + •¶Žš—ñ•Ï”‚ðŽg—p‚µ‚½ƒXƒNƒŠƒvƒg‚Ì—áB + •¶Žš—ñ‚Ì‘ã“üAŒ‹‡A”äŠrA“ü—͂Ȃǂ̃eƒXƒg‚ðs‚¤‚à‚ÌB + +-------------------- +//0888 by Ž€_ + +EÝŒv‚©‚çŠÔˆá‚Á‚Ä‚¢‚½ƒMƒ‹ƒh‘qŒÉC³B(‚½‚¾•¡”l‚ÌŽg—p‚É‚æ‚éƒoƒO‚ª‚ ‚é‰Â”\«‚Í‚Ü‚¾‚ ‚è‚Ü‚·B) +Eׂ©‚¢ƒoƒOC³B + (doc/) + inter_server_packet.txt C³B + conf_ref.txt C³B + (conf/) + inter_athena.conf C³B + help.txt C³B + (common/) + mmo.h C³B + (char/) + makefile C³B + int_storage.h C³B + int_storage.c + account2storage()Ainter_storage_init()Astorage_fromstr() C³B + inter_storage_save()Amapif_load_storage() C³B + mapif_parse_SaveStorage() C³B + guild_storage_fromstr()Aguild_storage_tostr() ’ljÁB + inter_storage_save_sub()Ainter_guild_storage_save_sub() ’ljÁB + inter_guild_storage_save()Amapif_parse_LoadGuildStorage() ’ljÁB + mapif_parse_SaveGuildStorage()Amapif_load_guild_storage() ’ljÁB + mapif_save_guild_storage_ack()Aguild2storage() ’ljÁB + int_party.c + inter_party_init() C³B + int_guild.h C³B + int_guild.c + inter_guild_init() C³B + inter_guild_search() ’ljÁB + int_pet.c + inter_pet_init() C³B + inter.c + inter_init()Ainter_save()Ainter_config_read() C³B + (map/) + makefile C³B + map.h C³B + map.c + map_quit()Ado_init() C³B + pc.c + pc_setpos() C³B + storage.h C³B + storage.c + do_init_storage()Ado_final_storage()Aaccount2storage() C³B + storage_storageopen()Astorage_storageadd()Astorage_storageget() C³B + storage_storageaddfromcart()Astorage_storagegettocart() C³B + storage_storageclose()Astorage_storage_quit() C³B + storage_storage_save() C³B + guild2storage()Astorage_guild_storageopen() ’ljÁB + guild_storage_additem() Aguild_storage_delitem() ’ljÁB + storage_guild_storageadd()Astorage_guild_storageget() ’ljÁB + storage_guild_storageaddfromcart()Astorage_guild_storagegettocart() ’ljÁB + storage_guild_storageclose()Astorage_guild_storage_quit() ’ljÁB + intif.h C³B + intif.c + intif_send_storage()Aintif_parse_LoadStorage()Aintif_parse() C³B + intif_request_guild_storage()Aintif_send_guild_storage() ’ljÁB + intif_parse_SaveGuildStorage()Aintif_parse_LoadGuildStorage() ’ljÁB + clif.h C³B + clif.c + clif_additem()Aclif_parse_MoveToKafra() C³B + clif_parse_MoveFromKafra()Aclif_parse_MoveToKafraFromCart() C³B + clif_parse_MoveFromKafraToCart()Aclif_parse_CloseKafra() C³B + clif_parse_LoadEndAck() C³B + clif_guildstorageitemlist()Aclif_guildstorageequiplist() ’ljÁB + clif_updateguildstorageamount()Aclif_guildstorageitemadded() ’ljÁB + guild.c + guild_broken() C³B + script.c + buildin_openstorage()Abuildin_guildstorage() C³B + skill.c + skill_castend_nodamage_id() C³B + mob.c + mob_summonslave()Amob_damage() C³B + atcommand.c + atkillmonster_sub()Aatcommand() C³B + +-------------------- +//0887 by Ž‚Žqo^.^o + +E(db/) + skill_tree.txt C³ + +-------------------- +//0886 by ‚Ò‚´‚Ü‚ñ + +EƒT[ƒo[snapshot +Eƒtƒ@ƒCƒ‹’²® + +-------------------- +//0885 by huge + +EƒMƒ‹ƒh‹¤—L‘qŒÉ‚ÌŽÀ‘•Bguildstorage‚ÅŠJ‚¯‚Ü‚·B + Ž©•ª‚ÌŽI‚ÅŽÀŒ±‚Í‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªA‰ß‘a’n‚È‚Ì‚Å‘½l”ƒMƒ‹ƒh‚É‚È‚é‚Æ‚Ç‚¤“®‚‚©•ª‚©‚è‚Ü‚¹‚ñB + (”O‚Ì‚½‚߃oƒbƒNƒAƒbƒv‚Í•K‚¸Žæ‚Á‚Ä‚¨‚¢‚ĉº‚³‚¢) +Eareawarp‚ÅA‘ÎÛƒ}ƒbƒv–¼‚ð"Random"‚É‚·‚é‚ÆA“¯ƒ}ƒbƒv“à‚щƒ“ƒ_ƒ€‚É”ò‚Ԃ悤‚ÉC³B +EGMƒRƒ}ƒ“ƒh‚Ŷ‚«•Ô‚µ‚½‚Æ‚«‚ÉSP‚à‘S‰ñ•œ‚·‚é‚悤‚ÉC³B +EƒfƒBƒ{[ƒVƒ‡ƒ“‚ÌðŒ‚ð‚¿‚å‚Á‚ÆC³B + + (char/) + int_storage.c + mapif_load_storage() C³B + mapif_parse_SaveStorage() C³B + inter.c + inter_send_packet_length[] C³B + inter_recv_packet_length[] C³B + (map/) + atcommand.c + @alive,@raise,@raisemap C³B + intif.c + packet_len_table[] C³B + intif_request_storage() C³B + intif_send_storage() C³B + intif_parse_LoadStorage() C³B + + map.h + map_session_data state‚Éstorage_flag ’ljÁB + script.c + buildin_areawarp_sub() C³B + buildin_openstorage() C³B + buildin_guildstorage() ’ljÁB + skill.c + skill_castend_nodamage_id() C³B + storage.c + account2storage() C³B + storage_storageopen() C³B + storage_storage_save() C³B + +-------------------- +//0884 by Ž€_ + +Eׂ©‚¢ƒoƒOC³B +Ebattle_athena.conf‚Épet_strAzeny_penaltyAresurrection_exp ’ljÁB +E0878‚Ì‹âsŠÖŒW‚̃R[ƒh‚Í‚à‚¤‚¢‚ç‚È‚¢‚Ì‚Å‘S‚ÄíœB +Ezeny_penalty‚ðݒ肵‚ÄŽg‚¤ê‡‚ÍŽè”—¿‚Í‚È‚‚µ‚½•û‚ª‚¢‚¢‚©‚àB +Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚Åpercentheal‚É‚àPP‚ÆLP‚É‚æ‚é‰ñ•œƒ{[ƒiƒX‚ª•t‚‚悤‚É•ÏXB(‚½‚¾vit‚âintAHPRAMPR‚É‚æ‚é‰ñ•œƒ{[ƒiƒX‚ª•t‚«‚Ü‚¹‚ñB) +E‚Ù‚Æ‚ñ‚Ç–¢ƒeƒXƒgB + (common/) + mmo.h C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + map.c + do_init()Ado_final() C³B + script.c + buildin_openbank() íœB + buildin_failedrefitem() C³B + storage.h C³B + storage.c + do_init_bank()Ado_final_bank()Aaccount2bank() íœB + storage_bank()Astorage_readbank() íœB + skill.c + skill_castend_nodamage_id()Askill_attack() C³B + battle.h C³B + battle.c + battle_calc_pet_weapon_attack()Abattle_config_read() C³B + pc.c + pc_setrestartvalue() C³B + clif.c + clif_skill_nodamage()Aclif_refine() C³B + itemdb.c + itemdb_isequip3() C³B + atcommand.c + atcommand() C³B + +-------------------- +//0883 by Kalen + +EWarpFXC³ + EƒAƒTƒVƒ“ƒMƒ‹ƒhŽü‚èC³(̂̂܂܂̃Šƒ“ƒN‚¾‚Á‚½‚Ì‚ÅŒ»Ý‚Ìó‘Ô‚ÉC³B) + EYuno‚ÌWarp‘S–ÊŒ©’¼‚µ(YumilLoopC³ASageCastleRandomWarp’ljÁA—ˆã‚³‚ñ‚̉ƒljÁ) + Eƒ‚ƒ“ƒNƒMƒ‹ƒhŽü‚è’ljÁ +ENPCFXC³ + E–XŽqì¬NPC‚ð•Êƒtƒ@ƒCƒ‹‚ÖBˆê•”’ljÁ(ep2.5’ljÁ•ª) + @ŽQlData(R.O.M776): ttp://green.sakura.ne.jp/~youc/ro/data/itemmaking.html#04 + EƒAƒTƒVƒ“ƒMƒ‹ƒhC³ + E“ñŽŸE“]EŠÖŒWNPCˆê•”’ljÁ(‚±‚ê‚ŃRƒ‚ƒh¬Œ€ê‚Ös‚¯‚Ü‚·) + Eƒ}ƒXƒ^[ƒAƒ‹ƒPƒ~ƒXƒg‚̑䎌C³ + EƒAƒ‹ƒfƒoƒ‰ƒ“‚̈ēà—vˆõ‚ðˆÚ“®&‘䎌C³&ƒCƒ[ƒW’ljÁ + EBBS‚É‚ ‚ª‚Á‚Ä‚¢‚½ƒRƒ‚ƒhƒXƒNƒŠƒvƒg’ljÁ(event_hat“™‚Ö•ªŽU) + EƒRƒ“ƒƒ“ƒNƒGƒXƒgŠÖŒWNPCˆê•”’ljÁ(—ˆã[yuno]Aƒlƒ‹[prontera]) + (conf/warp/) + npc_warp.txt + npc_warp30.txt + npc_warp_job.txt + (conf/npc/) + npc_event_hat.txt(V‹K) + npc_job_2nd.txt + npc_job_alchemist.txt + npc_town_aldebaran.txt + npc_town_comodo.txt + npc_town_gonryun.txt + npc_town_guide.txt + npc_town_yuno.txt + npc_town_lutie.txt + +-------------------- +//0882 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚É0881‘Š“–‚̃AƒJƒEƒ“ƒg‹¤—L•Ï”‹@”\‚̃vƒŒƒtƒBƒbƒNƒX•ÏX + E0881‚̃AƒJƒEƒ“ƒg•Ï”‚̓vƒŒƒtƒBƒbƒNƒX##‚É‚È‚è‚Ü‚µ‚½B + E0881‚̃AƒJƒEƒ“ƒg•Ï”‚Í‘Sƒ[ƒ‹ƒh‚Å‹¤—L‚³‚ê‚Ü‚·B + E•Ï”‚̌”‚Ímmo.h‚ÌACCOUNT_REG2_NUM‚Å’è‹`‚³‚ê‚Ä‚¢‚Ü‚·(16)B +Eƒ[ƒ‹ƒh“à‚̃AƒJƒEƒ“ƒg‹¤—L•Ï”‹@”\’ljÁ + E•Ï”–¼‚̃vƒŒƒtƒBƒbƒNƒX‚Í#‚Å‚·B + E•Ï”‚̌”‚Ímmo.h‚ÌACCOUNT_REG_NUM‚Å’è‹`‚³‚ê‚Ä‚¢‚Ü‚·(16)B + E0881‚Ì‹âsƒXƒNƒŠƒvƒg‚Í‚±‚¿‚ç‚ðŽg—p‚·‚é‚悤‚É‚È‚è‚Ü‚·B + ‚æ‚Á‚ĈȑO‚̃f[ƒ^‚ª‚‚©‚¦‚È‚¢‚Ì‚Å‚ ‚ç‚©‚¶‚߈ø‚«o‚µ‚Ä‚¨‚¢‚Ä‚‚¾‚³‚¢. + E•Ï”ƒf[ƒ^‚Í save/accreg.txt ‚É•Û‘¶‚³‚ê‚Ü‚·B + ‚±‚̃tƒ@ƒCƒ‹–¼‚Í inter_athena.conf ‚Å•ÏX‰Â”\‚Å‚·Bconf_ref.txtŽQÆB + + (common/) + mmo.h + ACCOUNT_REG_NUM‚ð16‚ÉAACCOUNT_REG_NUM2’ljÁ + struct mmo_charstatus‚Éaccount_reg2_num,account_reg2ƒƒ“ƒo’ljÁ + (login/) + login.c + account_reg‚ð‘S‚Äaccount_reg2‚É’u‚«Š·‚¦ + (char/) + char.c + account_reg‚ð‘S‚Äaccount_reg2‚É’u‚«Š·‚¦ + inter.c + ƒ[ƒ‹ƒh“àƒAƒJƒEƒ“ƒg•Ï”‹@”\’ljÁB + inter_accreg*()’ljÁAaccreg_db’ljÁ‚È‚ÇB + (map/) + chrif.c/chrif.h + account_reg‚ð‘S‚Äaccount_reg2‚É’u‚«Š·‚¦ + 0881‚ł̃oƒO‚ðC³ + intif.c/intif.h + ƒ[ƒ‹ƒh“àƒAƒJƒEƒ“ƒg•Ï”‹@”\’ljÁB + pc.c/pc.h + pc_*accountreg()=>pc_*accountreg2()‚ÉB + pc_setaccountreg(),pc_readaccountreg()’ljÁB + script.c + buildin_set(),buildin_get_val(),buildin_input()C³ + (doc/) + inter_server_packet.txt + ƒ[ƒ‹ƒh“àƒAƒJƒEƒ“ƒg•Ï”ŠÖŒW + conf_ref.txt + accreg_txt’ljÁ + +-------------------- +//0881 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚ɃAƒJƒEƒ“ƒg‹¤—L•Ï”‹@”\’ljÁ + E•Ï”–¼‚ɃvƒŒƒtƒBƒbƒNƒX#‚ð•t‚¯‚邱‚ƂŃAƒJƒEƒ“ƒg‹¤—L•Ï”‚É‚È‚è‚Ü‚·B + EƒAƒJƒEƒ“ƒg•Ï”‚Í•ÏX‚µ‚½Žž“_‚Å‘SƒT[ƒo[‚Ƀ|ƒXƒg‚³‚ê‚é‚Ì‚Å + •p”É‚É‘‚«Š·‚¦‚é‚ƃT[ƒo[ŠÔ’ÊM‚ª”ì‘剻‚µ‚Ü‚·B + EƒAƒJƒEƒ“ƒg•Ï”‚Í•ÏX‚µ‚½Žž“_i‚»‚µ‚Ä‚»‚ꂪloginŽI‚É“Í‚¢‚½Žž“_j‚Å + account.txt‚É‘‚«o‚³‚ê‚Ü‚·B + EƒOƒ[ƒoƒ‹•Ï”i‰i‘±•Ï”j‚̌”‚ð96‚ÉŒ¸‚炵AŒ¸‚Á‚½32ŒÂ•ª‚ð + ƒAƒJƒEƒ“ƒg•Ï”‚É‚µ‚Ä‚¢‚Ü‚·‚ªAmmo_charstatus‚̃TƒCƒY‚ª + 16000byte‚ð’´‚¦‚È‚¢ŒÀ‚è‘‚â‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·Bƒ0879‚Ì•ÏX‚ðŽQÆ + •Ï”‚̌”‚Ímmo.h‚ÌACCOUNT_REG_NUM‚Å’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B + E0878‚Ì‹âs‚ðƒAƒJƒEƒ“ƒg•Ï”‚ðŽg—p‚·‚é‚悤‚ÉC³ + bank.txt‚̃f[ƒ^‚ªŽg‚¦‚È‚‚È‚é‚Ì‚Å‚ ‚ç‚©‚¶‚߈ø‚«o‚µ‚Ä‚¨‚¢‚ĉº‚³‚¢B + + (common/) + mmo.h + GLOBAL_REG_NUM‚ð96‚ÉAACCOUNT_REG_NUM‚ð’ljÁ + struct mmo_charstatus‚Éaccount_reg_num,account_regƒƒ“ƒo’ljÁ + (login/) + login.c + ƒpƒPƒbƒg2728ˆ—’ljÁ + (char/) + char.c + ƒpƒPƒbƒg2729,2b10ˆ—’ljÁ + (map/) + chrif.c + chrif_saveaccountreg(),chrif_accountreg() + (ƒpƒPƒbƒg2b10,2b11ˆ—)’ljÁB + pc.c/pc.h + pc_readaccountreg(),pc_setaccountreg()’ljÁ + script.c + buildin_set(),buildin_get_val(),buildin_input()C³ + (conf/sample/) + bank_test.txt + ƒAƒJƒEƒ“ƒg•Ï”Žg—p”Å‚Ì‹âsƒXƒNƒŠƒvƒg + +-------------------- +//0880 by Ž€_ + +Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚𳂵‚ŽÀ‘•‚Æ‚¿‚å‚Á‚Æ‹@”\Šg’£B +Eƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚ŃŒƒxƒ‹•Ê‚ÉŽg‚¦‚éƒAƒCƒeƒ€‚ðskill_require_db.txt‚ÉÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B‚½‚¾ƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚ÅŽg‚¦‚éƒAƒCƒeƒ€‚ÍitemhealApercenthealAsc_startAsc_endˆÈŠO‚Ì•¨‚ª“ü‚Á‚Ä‚¢‚é‚Ƴ‚µ‚“®ì‚µ‚Ü‚¹‚ñB +ƒŒƒxƒ‹5‚Ü‚Å‚Í–{ŽI‚ɇ‚킹‚Ä‚¢‚Ü‚·‚ªÅ‘僌ƒxƒ‹‚ð10‚Ü‚ÅŠg’£‚·‚é‚ƃŒƒxƒ‹6 - ƒ}ƒXƒeƒ‰‚ÌŽÀA7 - ƒ[ƒ„ƒ‹ƒ[ƒŠ[A8 - ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽíA9 - ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀA10 - ƒo[ƒT[ƒNƒ|[ƒVƒ‡ƒ“‚Éݒ肵‚Ä‚¢‚Ü‚·Bskill_db.txt‚ðC³‚·‚ê‚΂±‚ꂪ—LŒø‚É‚È‚è‚Ü‚·B(‚Ç‚±‚ðC³‚·‚é‚©‚à‚í‚©‚ç‚È‚¢l‚Í’ú‚߂邱‚Æ‚Å‚·B) ƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[‚É‚æ‚éƒAƒCƒeƒ€Žg—p‚ÍŽg—pðŒ‚𖳎‹‚µ‚Ü‚·B‚µ‚̓Aƒ‹ƒPƒ~ƒXƒg‚ÉŠó–]‚ª‚Å‚«‚½‚©‚à...(‘½•ª–³—...) +Ebattle_athane.conf‚Éproduce_item_name_inputAproduce_potion_name_inputAmaking_arrow_name_inputAholywater_name_input ’ljÁB +Eƒp[ƒeƒBˆõ‚É‚¾‚¯Žg‚¤ƒXƒLƒ‹‚ƃMƒ‹ƒhˆõ‚É‚¾‚¯Žg‚¤ƒXƒLƒ‹‚ðÝ’è‚Å‚«‚é‚悤‚ÉC³B +E‚»‚Ì‘¼×‚©‚¢C³B + (conf/) + battle_athane.conf C³B + (doc/) + conf_ref.txt C³B + db_ref.txt C³B + (db/) + skill_db.txt C³B + skill_require_db.txt C³B + (map/) + map.h C³B + skill.h C³B + skill.c + skill_status_change_timer()Askill_attack()Askill_use_id() C³B + skill_castend_nodamage_id()Askill_castend_damage_id() C³B + skill_castend_id()Askill_castend_pos()Askill_produce_mix() C³B + skill_arrow_create()Askill_check_condition() C³B + skill_status_change_clear()Askill_readdb() C³B + mob.c + mobskill_use_id()Amob_changestate() C³B + pc.c + pc_itemheal()Apc_percentheal()Apc_calcstatus() C³B + battle.h C³B + battle.c + battle_delay_damage()Abattle_damage()Abattle_heal() C³B + battle_get_adelay()Abattle_get_amotion() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_weapon_attack()Abattle_config_read() C³B + clif.c + clif_skill_fail() C³B + script.c + buildin_sc_start()Abuildin_sc_end() C³B + makefile C³B + +-------------------- +//0879 by ŒÓ’±—– + +E‘—MFIFO‚̃oƒbƒtƒ@ƒI[ƒo[ƒtƒ[‚ÌÆŽã«‚ÌC³ + E2048ƒoƒCƒgˆÈã‚̃pƒPƒbƒg‚ð‘—‚é‚Æ‚«AFIFO‚ª–ž”t‚É‹ß‚¯‚ê‚Î + ƒoƒbƒtƒ@ƒI[ƒo[ƒtƒ[‚É‚æ‚é•s³ƒAƒNƒZƒX‚ª‹N‚±‚Á‚Ä‚¢‚½–â‘èC³B + EFIFO‚ª–ž”t‚É‹ß‚¢‚Æ‚«WFIFOSET‚³‚ꂽƒpƒPƒbƒg‚ªŽÌ‚Ä‚ç‚ê‚Ä‚¢‚½–â‘èC³B + EFIFO‚ªƒI[ƒo[ƒtƒ[‚·‚éê‡AŽ©“®“I‚ÉFIFO‚ðŠg’£‚·‚é‚悤‚É‚µ‚½B + i‚½‚¾‚µAˆê“x‚ÉWFIFOSET‚·‚éƒpƒPƒbƒg‚ª16384ƒoƒCƒgˆÈ‰º‚Ɖ¼’肵‚Ä‚¢‚éj + Eusocket: ? wdata expanded to ???? bytesv‚ÍFIFO‚ªŠg’£‚³‚ꂽ‚Æ‚«‚É + ‚ł郃O‚¾‚ªAƒGƒ‰[‚Å‚Í‚È‚AƒpƒPƒbƒg‚ͳ‚µ‚‘—M‚³‚ê‚éB + Eusocket: ? wdata lost !!v‚̓pƒPƒbƒg‚ª‘rŽ¸‚µ‚½‚±‚Æ‚ð•\‚·ƒƒO‚ÅA + ƒGƒ‰[‚Å‚ ‚邪64KB‚ð’´‚¦‚é’´‹‘å‚ȃpƒPƒbƒg‚ðWFIFOSET‚µ‚È‚¢‚Æo‚È‚¢B + E16384ƒoƒCƒg‚ð’´‚¦‚éƒpƒPƒbƒg‚ðWFIFOSET‚·‚é‚ƃGƒ‰[ƒƒbƒZ[ƒW‚È‚µ‚ÉA + •s³ƒAƒNƒZƒX‚ª‹N‚±‚é‰Â”\«‚ª‚ ‚é‚Ì‚ÅA’´‚¦‚È‚¢‚悤‚É‚·‚邱‚ÆB + + (common/) + socket.c /socket.h + WFIFOSET()‚ðƒ}ƒNƒ‚©‚çŠÖ”‚É•ÏX + realloc_fifo()’ljÁ + +EƒT[ƒo[ŠÔ’ÊMFIFO‚̃oƒbƒtƒ@ƒTƒCƒY‚ð‘å‚«‚‚µ‚½ + E‘å—ʂ̃f[ƒ^‚ª’ÊM‚³‚ꂽ‚Æ‚«‚Ƀf[ƒ^ˆ—’x‰„‚ª‹N‚«‚É‚‚‚·‚邽‚ßB + Eƒƒ‚ƒŠŽg—p—Ê‚ª‘‚¦‚½B(‚¬‚肬‚è‚Ìl‚Í65536‚ÉÝ’è‚·‚é‚ÆŒ³’Ê‚è‚É‚È‚é) + EƒT[ƒo[ŠÔ’ÊM‚ÌFIFOƒTƒCƒY‚Í mmo.h ‚Å’è‹`‚³‚ê‚Ä‚¢‚éB + •ÏX‚·‚éꇂÍ64KB(65536)ˆÈã‚Ì’l‚É‚·‚邱‚ÆB + ‘å‚«‚‚·‚é‚Æ‹‘åƒf[ƒ^ŽóMŽž‚Ì’x‰„‚ªŒ¸‚邪ƒƒ‚ƒŠ‚𑽂Žg‚¤B + E@kickallŽž‚ȂǂɃf[ƒ^‘—M‚ªŒƒ‚µ‚‚È‚é‚Ì‚Å•ÏX‚µ‚½‚ªA + “¯ŽžƒƒOƒCƒ“l”‚ª‚È‚¢‚Æ‘‚₵‚Ä‚àˆÓ–¡‚Í–³‚¢B + + (common/) + mmo.h + FIFOSIZE_SERVERLINKƒ}ƒNƒ’ljÁB + (login/) + login.c + 2710ƒpƒPƒbƒg‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É + (char/) + char.c + 2af8ƒpƒPƒbƒg‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É + check_connect_login_server()‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É + (map/) + chrif.c + check_connect_char_server()‚Årealloc_fifo()‚ðŒÄ‚Ԃ悤‚É + +-------------------- +//0878 by huge + +EƒJƒvƒ‰‹âsƒT[ƒrƒXB + Ž©•ª‚ÌŽI‚ÅŽÀ‘•‚µ‚Ä‚½‚ñ‚Å‚·‚ªAˆÓŠO‚ÆDŠ´G‚¾‚Á‚½‚Ì‚Åo‚µ‚Ä‚Ý‚Ü‚·B + NPCscript‚ÅAopenbank(0);‚Å—a‹àŠz‚ð•Ô‚µ‚ÄA’†‚É”Žš‚ð“ü‚ê‚é‚Æo‚µ“ü‚ꂵ‚Ü‚·B + Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚𓯕•‚µ‚½‚Ì‚ÅA‚»‚ê‚ðŽQÆB + + (common/) + mmo.h + struct bank ’ljÁB + (map/) + map.c + do_final(),do_init() C³B + script.c + buildin_openbank() ’ljÁB + storage.c + storage.h + ƒOƒ[ƒoƒ‹•Ï”’ljÁB + do_init_bank(),do_final_bank(),account2bank() ’ljÁB + storage_bank(),storage_readbank() ’ljÁB + +-------------------- +//0877 by ŒÓ’±—– + +EloginŽI‚̃AƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹‚ªƒlƒbƒgƒ}ƒXƒN•\‹L‚ɑΉž + 192.168.0.0/24 ‚â 192.168.0.0/255.255.0.0 ‚Æ‚¢‚Á‚½•\‹L‚ɑΉžB +Ebattle_athena.conf‚ÉGM‚ª–³ðŒ‚Å‘•”õ•i‚ð‘•”õ‚Å‚«‚é• + –³ðŒ‚ŃXƒLƒ‹‚ðŽg—p‚Å‚«‚éÝ’è’ljÁ + ‚±‚ê‚ç‚̓fƒoƒO—p‚È‚Ì‚Å“®ì‚É•s“s‡‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + + (login/) + login.c + check_ip()C³,check_ipmask()’ljÁ + (map/) + battle.c/battle.h + battle_config‚Égm_allequip,gm_skilluncond’ljÁ + battle_config_read()C³X + skill.c + skill_check_conditio()C³ + pc.c + pc_isequp()C³ + (doc/) + conf_ref.txt + allow•ÏXAgm_all_equipmentAgm_skill_unconditional’ljÁ + +-------------------- +//0876 by Ž€_ + +Eׂ©‚¢ƒoƒOC³B +E@ƒRƒ}ƒ“ƒh‚ɃeƒXƒg‚ׂ̈ɓü‚ê‚Ä‚¢‚½•¨‚ª“ü‚Á‚Ä‚¢‚½‚Ì‚ÅC³B +Eƒnƒ“ƒ}[ƒtƒH[ƒ‹‚ÌŽË’ö‚ð5‚©‚ç4‚ÉC³(–{ŽIŽË’ö‚Í•s–¾)‚ƃŠƒUƒŒƒNƒVƒ‡ƒ“‚ª–³‘®«‚¾‚Á‚½‚̂𹑮«‚ÉC³B + (db/) + skill_db.txt C³B + (map/) + mob.c + mob_catch_delete()Amob_stop_walking() C³B + storage.c + storage_additem() C³B + pc.c + pc_damage()Apc_stop_walking() C³B + clif.c + clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B + battle.c + battle_calc_magic_attack() C³B + skill.c + skill_check_condition() C³B + atcommand.c C³B + +-------------------- +//0875 by ŒÓ’±—– + +Eparty_share_level‚ðinter_athena.conf‚Ɉڂµ‚½ + (ƒp[ƒeƒBŠÖ˜A‚̈—‚ÌŠÇŠ‚ªinterŽI‚Ì‚½‚ß) +Einter_athena.conf‚Éinter_log_file€–ڒljÁ +EƒMƒ‹ƒhì¬/‰ðŽU/éè—Ì/é”jŠü‚ªƒƒO‚ÉŽc‚é‚悤‚É +EƒMƒ‹ƒh‰ðŽUŽž‚Ƀƒ‚ƒŠƒŠ[ƒN‚µ‚Ä‚¢‚½–â‘è‚ðC³ + (char/) + char.c/char.h + party_share_levelŠÖ˜A + (inter/) + inter.c/inter.h + party_share_level / inter_log_file ŠÖ˜A + ƒƒOo—Í—p‚Éinter_log()’ljÁ + int_guild.c + ì¬/‰ðŽU/éè—Ì/é”jŠü‚ðƒƒO‚Éo—Í + ƒƒ‚ƒŠƒŠ[ƒNC³ + (doc/) + conf_ref.txt + C³ + +EƒT[ƒo[ó‘ÔŠm”F—pCGIƒXƒNƒŠƒvƒg“Y•t‚È‚Ç + EŽ©ŒÈÓ”C•Úׂȉðà–³‚µAŽ¿–₳‚ê‚Ä‚àƒXƒ‹[‚·‚é‰Â”\«—L‚è + EƒGƒfƒBƒ^‚ÅŠJ‚¢‚½‚ç‚µà–¾—L‚è + ECGIÝ’u‚ÌŠî–{‚³‚¦‚í‚©‚ê‚Ζâ‘è‚È‚¢‚Í‚¸ + + (tool/cgi/) + serverstatus.cgi + ƒT[ƒo[ó‘ÔŠm”F—pCGIƒXƒNƒŠƒvƒg + addaccount.cgi + à–¾C³ + +-------------------- +//0874 by Kalen +EWhiteDayƒCƒxƒ“ƒg’ljÁ + conf/npc/npc_event_whiteday.txt(V‹K) + ‚½‚¾A‚¨‰ÙŽq”„‚Á‚Ă邾‚¯‚Ý‚½‚¢cGM‚ª‚È‚É‚â‚é‚Ì‚©‚Í’m‚è‚Ü‚¹‚ñ‚ªB + sakRO‚Ì‚Ù‚¤‚ł̓zƒƒCƒgƒ`ƒ‡ƒR‚炵‚«‚à‚Ì‚ª’ljÁ‚³‚ꂽ‚Ì‚É + jRO‚ŒljÁ‚³‚ꂽ‚Ì‚Í—’d“P‹Žƒpƒbƒ`‚Ì‚Ý(*L„t`;)c + +EAlchemistƒMƒ‹ƒh‚Å“û”«A»‘¢‘‚ð•Ï‚¦‚é‚悤‚É + conf/npc/npc_job_alchemist.txt(V‹K) + “]EƒNƒGƒXƒg‚ª•ª‚©‚ç‚È‚©‚Á‚½‚̂ʼn·‚ß‚Ä‚¢‚Ü‚µ‚½‚ª + ”ƒ‚¦‚È‚¢‚Æ•s•Ö‚Æ•·‚¢‚½‚Ì‚ÅA’ljÁ + +EõFNPCŽÀ‘• + conf/npc/npc_event_dye.txt(XV) + ”¯Œ^•ÏX‚ªsakRO‚É—ˆ‚½‚炵‚¢‚Ì‚Å + ‚È‚ñ‚Æ‚È[‚XV + +-------------------- +//0873 by Ž€_ + +E@ƒRƒ}ƒ“ƒhitem2‚Ækillmonster ’ljÁB +EƒXƒNƒŠƒvƒggetitem2‚Ækillmonsterall ’ljÁB +E–î쬂Åì‚ç‚ꂽ–î‚໑¢ŽÒ‚Ì–¼‘O‚ª•t‚‚悤‚ÉC³B +Ebattle_athena.conf‚Émonster_class_change_full_recover’ljÁB +E‘•”õƒXƒNƒŠƒvƒg‚ÉbWeaponComaEle‚ÆbWeaponComaRace ’ljÁB +E‚µŠÔˆá‚¢‚ª‚ ‚Á‚½ƒ_ƒ[ƒWŒvŽZŽ®C³B +EbInfiniteEndure‚̈—‚ðƒCƒ“ƒfƒ…ƒA•\Ž¦‚È‚µ‚Å“à•”ˆ—‚·‚é‚悤‚É•ÏXB +EƒI[ƒgƒXƒyƒ‹‚Åcastend_nodamage_id()‚ðŒÄ‚ÔƒXƒLƒ‹‚àŽg—p‚Å‚«‚é‚悤‚ÉC³B +E‚»‚Ì‘¼×‚©‚¢C³‚ƃoƒOC³B +E‚Ù‚Æ‚ñ‚Ç–¢ƒeƒXƒg‚Ȃ̂ŃoƒO‚ª‚ ‚Á‚½‚ç•ñ‚¨Šè‚¢‚µ‚Ü‚·B + (conf/) + help.txt C³B + atcommand_athena.conf C³B + battle_athena.conf C³B + char_athena.conf C³B + (db/) + const.txt C³B + item_db.txt C³B + (doc/) + item_bonus.txt C³B + script_ref.txt C³B + conf_ref.txt C³B + (map/) + map.h C³B + map.c + map_quit() C³B + skill.h C³B + skill.c + skill_castend_nodamage_id()Askill_status_change_clear() C³B + skill_castend_id()Askill_castend_pos()Askill_arrow_create() C³B + skill_status_change_timer() C³B + pc.c + pc_calcstatus()Apc_bonus2()Apc_equipitem() C³B + pc_unequipitem()Apc_damage() C³B + battle.h C³B + battle.c + battle_get_dmotion()Abattle_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_calc_magic_attack()Abattle_config_read() C³B + clif.c + clif_parse_LoadEndAck()Aclif_damage()Aclif_skill_damage() C³B + clif_skill_damage2() C³B + itemdb.h C³B + itemdb.c + itemdb_isequip3() ’ljÁB + mob.h C³B + mob.c + mob_delay_item_drop()Amob_damage()Amob_changestate() C³B + mob_class_change()Amob_delete()Amob_catch_delete() C³B + script.c + buildin_getitem() C³B + buildin_killmonsterall_sub()Abuildin_killmonsterall() ’ljÁB + atcommand.h C³B + atcommand.c + atcommand() C³B + atkillmonster_sub() ’ljÁB + +-------------------- +//0872 by ElFinLazz + +EƒXƒLƒ‹ƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[C³ +EƒXƒLƒ‹ƒMƒ€ƒ\ƒoƒ“ƒOƒhƒ“ƒ{ƒ‹ƒIƒbƒl‹ïŒ» +EƒXƒLƒ‹ƒAƒuƒ‰ƒJƒ_ƒu‚È‚ç‹`ƒR[ƒ}‹ïŒ» +EƒR[ƒ}‚Ì•ŠíƒIƒvƒVƒ‡ƒ“’ljÁ(Ží‘°, 番—¦) +EƒIƒvƒVƒ‡ƒ“à–¾’ljÁ + (db/) + const.txt C³. + (doc/) + item_bonus.txt C³. + (map/) + map.h C³. + skill.c + skill_castend_nodamage_id(), skill_unit_group(), skill_status_change_start() C³. + pc.c + pc_calcstatus(), pc_bonus2(), pc_gainexp() C³. + battle.c + battle_weapon_attack() C³. + +-------------------- +//0871 by Ž€_ + +E0869‚̃oƒOC³B +Echar_athena.conf‚Ælogin_athena.conf‚É€–ڒljÁB(ƒLƒƒƒ‰ŽI‚ƃƒOƒCƒ“ŽI‚̃ƒOƒtƒ@ƒCƒ‹‚ð•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½BƒfƒtƒHƒ‹ƒg‚Ålog/ƒtƒHƒ‹ƒ_[‚É“ü‚é‚Ì‚ÅlogƒtƒHƒ‹ƒ_[‚ðì‚é•K—v‚ª‚ ‚è‚Ü‚·B) +EƒGƒiƒW[ƒR[ƒg‚̈—‚ð‚µC³Bƒ‚ƒ“ƒXƒ^[‚ªŽg‚Á‚½ê‡‚̓XƒLƒ‹ƒŒƒxƒ‹*6%‚Ì•¨—ƒ_ƒ[ƒW‚ðŒ¸‚ç‚·‚悤‚É•ÏXB +E•ŠíˆÈŠO‚Ì•¨‚ł໑¢ŽÒ‚Ì–¼‘O‚ð•\Ž¦‚·‚é‚悤‚É•ÏXB(–{ŽI‚ł̓vƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒX‚ÆŽèì‚èƒ`ƒ‡ƒRƒŒƒbƒgˆÈŠO‚Í•\Ž¦‚³‚ê‚Ü‚¹‚ñ‚ªƒpƒPƒbƒg‚Í‚ ‚邱‚Æ‚¾‚µ“ü‚ê‚Ä‚Ý‚Ü‚µ‚½B) +E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B +E@ƒRƒ}ƒ“ƒhˆê‚‚ƃXƒNƒŠƒvƒgˆê‚‚ð’ljÁ‚µ‚Ü‚µ‚½‚ªà–¾‚ÍŒã‚̃pƒbƒ`‚Å‘‚«‚Ü‚·B + (conf/) + char_athena.conf C³B + login_athena.conf C³B + (doc/) + conf_ref.txt C³B + (login/) + login.c + parse_login()Alogin_config_read()Alogin_log() C³B + (char/) + char.h C³B + char.c + char_config_read()Amake_new_char()Aparse_char() C³B + int_party.c C³B + int_storage.c C³B + int_guild.c C³B + int_pet.c C³B + (map/) + map.h C³B + skill.c + skill_status_change_start()Askill_additional_effect() C³B + skill_castend_nodamage_id()Askill_check_condition() C³B + skill_status_change_clear()Askill_produce_mix() C³B + skill_status_change_timer() C³B + pc.c + pc_calcstatus()Apc_insert_card()Apc_additem()Apc_cart_additem() C³B + storage.c + storage_additem() C³B + battle.c + battle_get_adelay()Abattle_get_amotion()Abattle_calc_damage() C³B + clif.c + clif_additem()Aclif_equiplist()Aclif_storageequiplist() C³B + clif_tradeadditem()Aclif_storageitemadded()Aclif_use_card() C³B + clif_cart_additem()Aclif_cart_equiplist()Aclif_vendinglist() C³B + clif_openvending()Aclif_arrow_create_list() C³B + clif_skill_produce_mix_list()Aclif_parse_SelectArrow() C³B + clif_parse_ProduceMix() C³B + script.c + buildin_produce() C³B + buildin_getitem2() ’ljÁB + atcommand.c + atcommand() C³B + +-------------------- +//0870 by shuto + +Emapflag‚ÌUéíMAP‚Énomemo’ljÁ +EƒMƒ‹ƒh•ó” ‚ÅA•ó” oŒ»‚Æ“¯Žž‚ÉMAPŽI‚ª—Ž‚¿‚é–â‘èC³(by ‚Ò‚´‚Ü‚ñ) + +-------------------- +//0869 by Ž€_ + +Ebattle_athena.conf‚Éplayer_land_skill_limitAmonster_land_skill_limitAparty_skill_penaly ’ljÁB +Echar_athena.conf‚Éparty_share_level ’ljÁB +E‚»‚Ì‘¼×‚©‚¢C³B + (conf/) + char_athena.conf C³B + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (char/) + char.h C³B + char.c + char_config_read() C³B + int_party.c + party_check_exp_share() C³B + (map/) + map.h C³B + skill.c + skill_attack()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_status_change_start() C³B + skill_castend_pos() C³B + pc.c + pc_calcstatus() C³B + mob.c + mobskill_castend_pos() C³B + battle.h + battle.c + battle_get_adelay()Abattle_get_amotion()Abattle_calc_damage() C³B + battle_config_read() C³B + pet.c + pet_data_init() C³B + +-------------------- +//0868 by Ž€_ + +Eƒ}ƒWƒbƒNƒƒbƒhŽÀ‘•‚ƃXƒyƒ‹ƒuƒŒƒCƒJ[C³B +Eƒ}ƒWƒbƒNƒƒbƒh‚Ìꇖ{ŽI‚ÅŽg‚Á‚Ä‚à‚È‚ñ‚Ì•\Ž¦‚à‚È‚”“®‚Ì‘O‚É‚ÍŽg‚Á‚½‚©‚Ç‚¤‚©‚ÌŠm”F‚ª‚Å‚«‚È‚¢‚̂ŃXƒLƒ‹‰r¥ƒpƒPƒbƒg(0x13e)‚ð—˜—p‚µ‚ÄŽg—p‚·‚鎞ƒXƒLƒ‹–¼‚ªo‚é‚悤‚É‚µ‚Ä‚¢‚Ü‚·B(–{ŽI‚ƈႤ‚¼‚Æ‚©‚Å•¶‹å‚ª‚±‚È‚¢‚悤‚É) +EƒXƒyƒ‹ƒuƒŒƒCƒJ[‰r¥ƒLƒƒƒ“ƒZƒ‹‚ÉŠÖŒW‚È‚skill_db.txt‚Éݒ肳‚ê‚Ä‚éskill_type‚ªmagic‚̃XƒLƒ‹‚Ì‚Ý”j‚邱‚Æ‚ª‚Å‚«‚Ü‚·B(ƒ‰ƒOƒiƒQ[ƒg‚Ìà–¾‚ð“K—p) +Eskill_db.txt‚Ì‘Ž®‚ª•Ï‚í‚Á‚½‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢BƒmƒbƒNƒoƒbƒN‹——£‚ÌÝ’è‚à‚Å‚«‚Ü‚·‚ª”O‚ׂ̈ɂ¢‚Á‚Ä‚¨‚«‚Ü‚·‚ªAŽI‚ł̃eƒXƒg‚ÅFW‚̃mƒbƒNƒoƒbƒN‹——£‚Í2‚ŃTƒ“ƒN‚à2‚Å‚ ‚邱‚Æ‚ðŠm”F‚µ‚Ä‚¢‚Ü‚·BŠØ‘‚Ì2003”N11ŒŽ19“úƒpƒbƒ`‘O‚ÌŽI‚Å‚Í‚ ‚è‚Ü‚·‚ª2-2‚Í“K—p‚³‚ê‚Ä‚¢‚銂Ȃ̂Ŗ{ŽI‚̈Ⴂ‚Í‚È‚¢‚ÆŽv‚¢‚Ü‚·B +E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B +E0867‚Å‘‚«–Y‚êBƒ‚ƒ“ƒXƒ^[‚̃q[ƒ‹‚ŃAƒ“ƒfƒbƒhƒ‚ƒ“ƒXƒ^[‚ªUŒ‚‚³‚ê‚ÄŽ©–Å‚·‚é‚̂Ńq[ƒ‹‚⃊ƒU‚Ìê‡mob_skill_db.txt‚Ìval1(’l1)‚É1‚ð“ü‚ê‚é‚ƃAƒ“ƒfƒbƒhƒ‚ƒ“ƒXƒ^[‚àUŒ‚‚ðŽó‚¯‚¸‰ñ•œ‚·‚é‚悤‚É‚È‚è‚Ü‚·B–{ŽI‚ł̓‚ƒ“ƒXƒ^[‚̃q[ƒ‹‚̓Aƒ“ƒfƒbƒh‚ÉŠÖŒW‚È‚‰ñ•œ‚·‚é‚悤‚Å‚·B‚½‚¾ŒÂl“I‚ɂ̓]ƒ“ƒr‚ªƒq[ƒ‹‚µ‚ÄŽ©–Å‚·‚é•û‚ª³‚µ‚¢‚ÆŽv‚¤‚Ì‚Åmob_skill_db.txt‚ÅÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ä‚¨‚è‚Ü‚·B + (doc/) + db_ref.txt C³B + (db/) + cast_db.txt C³B + skill_db.txt C³B + (map/) + skill.h C³B + skill.c + skill_status_change_start()Askill_status_change_end() C³B + skill_castend_damage_id()Askill_castend_nodamage_id() C³B + skill_attack()Askill_status_change_timer()Askill_castcancel() C³B + skill_unit_onplace()Askill_use_id()Askill_castend_id() C³B + skill_readdb() C³B + skill_get_blewcount() ’ljÁB + mob.c + mobskill_use_id()Amob_spawn()Amob_attack() C³B + battle.c + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B + battle_calc_misc_attack()Abattle_weapon_attack() C³B + clif.c + clif_damage() C³B + pet.c + pet_attack() C³B + pc.c + pc_attack_timer()Apc_authok() C³B + pc_spirit_heal()Apc_natural_heal_sub() C³B + +-------------------- +//0867 by Ž€_ + +EƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B +Ebattle_athena.conf‚Éplayer_undead_nofreeze’ljÁB +EV‚µ‚¢ƒAƒCƒeƒ€ƒpƒPƒbƒg‚ɑΉžB(PACKETVER‚ð5ˆÈã‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B) +Emob_avail.txt‚ŃvƒŒƒCƒ„[‚ÌŽp‚ðŽw’肵‚½ŽžƒyƒRƒyƒR‚â‘é‚ð•t‚¯‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É•ÏXB“ª‰º’iŽŸ‚ɃIƒvƒVƒ‡ƒ“‚ðÝ’è‚Å‚«‚Ü‚·B(‚½‚¾ƒnƒCƒfƒBƒ“ƒO‚ƃNƒ[ƒLƒ“ƒO‚ÍŽw’è‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B) + makefile C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + client_packet.txt C³B + (map/) + battle.h C³B + battle.c + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_config_read() C³B + clif.c + clif_mob_class_change()Aclif_spawnmob()Aclif_spawnpet() C³B + clif_damage()Aclif_skill_damage()Aclif_skill_damage2() C³B + clif_itemlist()Aclif_cart_itemlist()Aclif_storageitemlist() C³B + clif_mob0078()Aclif_mob007b()Aclif_pet0078()Aclif_pet007b() C³B + pc.c + pc_attack_timer() C³B + skill.c + skill_castend_nodamage_id()Askill_additional_effect() C³B + skill_status_change_start() C³B + mob.h C³B + mob.c + mobskill_castend_id()Amob_getfriendstatus_sub() C³B + mob_readdb_mobavail() C³B + +-------------------- +//0866 by ‚Ò‚´‚Ü‚ñ + +EMOTD‚̃ƒbƒZ[ƒW‚ð‘S‚Ä•ÒW‚Å‚«‚é‚悤‚É•ÏXB +EƒNƒ[ƒ“ƒXƒLƒ‹ŽÀ‘•B +@ƒhƒ‹•ž‚̃q[ƒ‹ƒAƒ^ƒbƒN‚É‚æ‚éƒq[ƒ‹K“¾‚Í–¢ƒeƒXƒg‚Å‚·B +EƒMƒ‹ƒh•ó” ‰¼ŽÀ‘•B +@ƒ”ƒ@ƒ‹ƒLƒŠ[‚P‚Ì‚Ý‚Å‚·B +@¤‹Æ“ŠŽ‘‚É‚æ‚é•ó” ŒÂ”‚ÌŽZoŽ®‚Í“K“–‚Å‚·(‰ŠúŒÂ”4ŒÂ‚Æ‚µ‚©’m‚ç‚È‚¢‚Ì‚Å)B +@OnclockƒCƒxƒ“ƒg‚Å“®ì‚³‚¹‚Ä‚¢‚Ü‚·B”CˆÓ‚ÌŽž‚É•ÏX‚µ‚Ä‚‚¾‚³‚¢B +EAthenaDBŒv‰æ‚Ìmob_db.txt‚Æmapflag.txt‚ð“ü‚ê‚Ä‚¨‚«‚Ü‚µ‚½B + + (map/) + pc.c + pc_makesavestatus()Apc_calc_skilltree() C³B + pc_allskillup()Apc_calc_skillpoint() C³B + pc_resetskill()Apc_authok() C³B + skill.c + skill_attack() C³B + map.h C³B + (conf/) + gvg/TEST_prtg_cas01_AbraiJ.txt C³B + motd.txt C³B + mapflag.txt C³B + (db/) + mob_db.txt C³B + +-------------------- +//0865 by ‚Ò‚´‚Ü‚ñ + +EŽ©•ª‚ªè—Ì‚µ‚Ä‚¢‚éƒAƒWƒg‚̃Gƒ“ƒyƒŠƒEƒ€‚ðUŒ‚‚Å‚«‚½ƒoƒOC³B +EƒAƒuƒ‰ƒC‚ªè—̃Mƒ‹ƒhƒƒ“ƒo[‘Sˆõ‚ðƒ}ƒXƒ^[‚Æ‚Ý‚È‚µ‚Ä‚¢‚½ƒoƒOC³B +@‚±‚ÌC³‚É”º‚Á‚ăXƒNƒŠƒvƒgƒŠƒtƒ@ƒŒƒ“ƒX‚ɉü•Ï‚ª‚ ‚è‚Ü‚·B + Egetcharid(0)‚ÅAŽ©•ª‚ÌcharID‚ð•Ô‚·‚悤‚ÉB + Egetguildmasterid(<n>)’ljÁB + @<n>=ƒMƒ‹ƒhID + @ŠY“–ƒMƒ‹ƒh‚̃}ƒXƒ^[‚ÌcharID‚ð•Ô‚µ‚Ü‚·B + + (map/) + guild.c + guild_mapname2gc() ’ljÁB + battle.c + battle_calc_damage() C³B + script.c + buildin_getcharid() C³B + buildin_getguildmasterid() ’ljÁB + ƒ[ƒJƒ‹ƒvƒƒgƒ^ƒCƒv錾‚̈ꕔ‚ðC³A’ljÁB + guild.h C³B + +-------------------- +//0864 by ŒÓ’±—– + +EinterŽI‚Ìwis‚̈—•ÏX + EŽ©‘OƒŠƒ“ƒNƒŠƒXƒg‚©‚çdb.h‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ðŽg—p‚·‚é‚悤‚É + EWIS‚ÌID‚ð16ƒrƒbƒg‚©‚ç32ƒrƒbƒg‚É‘‚₵‚½iƒpƒPƒbƒg‚àC³j + EƒƒbƒZ[ƒW‚̃TƒCƒYƒ`ƒFƒbƒN‚ð“ü‚ꂽ + EƒpƒPƒbƒgƒXƒLƒbƒv‚ª“ñ‰ñs‚í‚ê‚é‰Â”\«‚ª‚ ‚éƒoƒOC³ + + (char/) + inter.c + wisŠÖŒW‘å••ÏX + (map/) + intif.c + wisŠÖŒW‚ÌC³BŽå‚ɃpƒPƒbƒgˆ—B + (doc/) + inter_server_packet.txt + ƒpƒPƒbƒg3002,3801‚ð•ÏX + +-------------------- +//0863 by Ž€_ + +Eׂ©‚¢C³B +Ebattle_athena.conf‚Éplayer_attack_direction_change’ljÁB +Emob_skill_db.txt‚ðC³‚·‚鎞’§”‚ÌC³‚ðŠÔˆá‚Á‚ÄC³B +Eƒ‚ƒ“ƒXƒ^[‚̃XƒLƒ‹Ž©”š–â‘èC³B(–¢ƒeƒXƒg) + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (db/) + mob_skill_db.txt C³B + (map/) + mob.c + mobskill_use_id()Amobskill_use()Amobskill_castend_id() C³B + pc.c + pc_skill()Apc_attack_timer() C³B + skill.c + skill_castend_damage_id() C³B + battle.h C³B + battle.c + battle_weapon_attack()Abattle_config_read() C³B + +-------------------- +//0862 by ŒÓ’±—– + +EmobƒXƒLƒ‹Žg—pðŒ’ljÁ + Efriendhpltmaxrate : –¡•û‚ÌHP‚ªŽw’è“–¢–ž‚Ì‚Æ‚«(ƒeƒXƒgÏ‚Ý) + Efriendstatuson : –¡•û‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚é‚Æ‚« + Efriendstatusoff : –¡•û‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚È‚¢‚Æ‚« + Emystatuson : Ž©•ª‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚é‚Æ‚« + Emystatusoff : Ž©•ª‚ªŽw’肵‚½ƒXƒe[ƒ^ƒXˆÙí‚É‚È‚Á‚Ä‚¢‚È‚¢‚Æ‚« + ƒXƒe[ƒ^ƒXŒn‚Í–¢ƒeƒXƒg‚Å‚·Bmob_skill_db.txt‚ÉŽw’è•û–@‚ð‘‚¢‚Ä‚¢‚Ü‚·B + ‚½‚Æ‚¦‚ÎŽ©•ª‚ª“Å‚©‚Ç‚¤‚©‚Í mystatus,poison ‚ÅA + ƒnƒCƒfƒBƒ“ƒO’†‚©‚Ç‚¤‚©‚Í mystatuson,hiding ‚ÅŽw’肵‚Ü‚·B +EmobƒXƒLƒ‹Žg—pƒ^[ƒQƒbƒg’ljÁ + Efriend : –¡•û + Earound : Ž©•ª‚ÌŽüˆÍiŒ»Ý‚ÌŽd—l‚Å‚ÍŽüˆÍ81ƒ}ƒXj‚Ì‚Ç‚ê‚© + Earound1`around4 : Ž©•ª‚ÌŽüˆÍ‚X,25,49,81ƒ}ƒX‚Ì‚Ç‚ê‚©(”͈͂𖾎¦) + friend‚ÍðŒ‚ªfriendŒn(friendhpltmaxrate‚È‚Ç)‚Ì‚Æ‚«‚ÉŽg—p‰Â”\B + aroundŒn‚Íꊎw’èƒXƒLƒ‹‚ÅŽg—p‰Â”\B + + (map/) + mob.c / mob.h + mob_getfriend*()’ljÁAmobskill_use()C³‚È‚Ç + (db/) + mob_skill_db.txt + ʼn‚Ìà–¾‚Ì‚ÝC³Bƒf[ƒ^‚ÍC³‚µ‚Ä‚¢‚Ü‚¹‚ñB + +-------------------- +//0861 by ‚¢‚Ç + +EƒT[ƒo[snapshot + +-------------------- +//0860 by J + +EŽ€_‚³‚ñ‚̎艺¢Š«‚ÌC³‚ɇ‚킹‚ÄMOBƒXƒLƒ‹DB‚ðC³ +(/conf) + mob_skill_db.txt C³B + +-------------------- +//0859 by Ž‚Žqo^.^o +Alchemist warp C³(AegisŽQl) +(/conf) + (/warp) + npc_warp_job.txt C³ + +-------------------- +//0858 by Ž€_ + +Eׂ©‚¢C³B +EMAX_MOBSKILL‚ð24‚©‚ç32‚É•ÏXB(‚½‚¾‚µ‚Å‚·‚ª‚Ü‚½ƒƒ‚ƒŠ[Žg—p—Ê‚ª‘‚¦‚Ü‚·B) +Eƒvƒƒ{ƒP[ƒVƒ‡ƒ“‚ÅŽæ‚és“®‚ðmob_skill_db.txt‚Ìval1(’l1)‚ÅÝ’è‚Å‚«‚é‚悤‚ÉC³B +EŽè‰º¢Š«‚Å•¡”‚ÌŽí—Þ‚ðÝ’èoØ‚é‚悤‚ÉC³B(Å‘å5‚‚܂Å) +Eƒƒ^ƒ‚ƒ‹ƒtƒH[ƒVƒX‚ƃgƒ‰ƒ“ƒXƒtƒH[ƒ[ƒVƒ‡ƒ“‚à•¡”‚ÌŽí—Þ‚ðÝ’è‚Å‚«‚é‚悤‚ÉC³B + (db/) + skill_db.txt C³B + mob_skill_db.txt C³B + (map/) + skill.c + skill_castend_damage_id()Askill_castend_nodamage_id() C³B + map.h C³B + mob.h C³B + mob.c + mob_readskilldb()Amob_summonslave()Amob_class_change() C³B + +-------------------- +//0857 by J + +EOWN Ragnarok‚É‚Ì‚Á‚Ä‚¢‚½î•ñ‚ðŒ³‚ÉMOBƒXƒLƒ‹‚ðC³B +Echase(“ËŒ‚)‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚é‚Æ‚Ì‚±‚Æ‚È‚Ì‚Å“ËŒ‚(?)‚ðchase‚É‚©‚¦‚Ä +ƒRƒƒ“ƒgƒAƒEƒg‚ð‚Í‚¸‚µ‚Ü‚µ‚½B +EŽ€_‚³‚ñ‚ªŽÀ‘•‚µ‚½MOBƒXƒLƒ‹‚ðŽg—p‚·‚郂ƒ“ƒXƒ^[‚ðŽëêî•ñ‚ÉÚ‚Á‚Ä‚éî•ñ‚ðŒ³‚ÉŽÀ‘•B + (/conf) + mob_skill_db.txt + +-------------------- +//0856 by Ž€_ + +EƒoƒOC³‚Æׂ©‚¢C³B +Ebattle_athena.conf‚Émonster_attack_direction_change’ljÁB +Ebattle_athena.conf‚Ìbasic_skill_check‚ƃJƒvƒ‰‚Ì‘qŒÉ—˜—p‚ð‡‚킹‚Ä‚¢‚Ü‚µ‚½‚ª‚¢‚‚̂܂ɂ©‚È‚‚È‚Á‚½‚Ì‚ÅŽæ‚è–ß‚µB(basic_skill_check‚ªno‚È‚çŠî–{‹@”\ƒXƒLƒ‹ƒŒƒxƒ‹‚ÉŠÖŒW‚È‚‘qŒÉ‚ðŽg‚¦‚Ü‚·B) +EƒsƒA[ƒVƒ“ƒOƒAƒ^ƒbƒN‚ÌŽË’ö‚ð3ƒZƒ‹‚É•ÏX‚µ‚Ä‹ßÚUŒ‚‚Æ‚µ‚Ä”FŽ¯‚·‚é‚悤‚ÉC³B +EAŽI‚ł̃eƒXƒg‚ŃAƒ“ƒfƒbƒh‚Ì”FŽ¯‚ð‘®«‚É‚æ‚Á‚Ä‚·‚邱‚Æ‚ª‚í‚©‚Á‚½‚Ì‚Åundead_detect_type‚̃fƒtƒHƒ‹ƒg‚ð0‚É•ÏXB +Eƒƒ^ƒ‚ƒ‹ƒtƒH[ƒVƒX‚âƒgƒ‰ƒ“ƒXƒtƒH[ƒ[ƒVƒ‡ƒ“‚ÅŒ©‚½–Ú‚ªƒvƒŒƒCƒ„[‚È‚ç0x1b0ƒpƒPƒbƒg‚ð‘—‚ç‚È‚¢‚悤‚É•ÏXB +Eƒjƒ…[ƒ}ƒoƒO‚ÍC³‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªƒXƒLƒ‹ƒ†ƒjƒbƒg‚ÌŽžŠÔ‚É‚æ‚éì“®Žd—l‚Í‚Ü‚¾•ªÍ‚ªŠ®‘S‚¶‚á‚È‚¢‚Ì‚Å‘¼‚Ì•s‹ï‡‚ªo‚Ä‚‚é‚©‚à... + (conf/) + battle_athena.conf C³B + mapflag.txt C³B(•’ʂ̃_ƒ“ƒWƒ‡ƒ“‚ªƒV[ƒYƒ‚[ƒh‚Å‚ ‚é‚Í‚¸‚ª‚È‚¢‚Ì‚Å) + (conf/npc/) + npc_town_kafra.txt C³B + (db/) + skill_db.txt C³B + (doc/) + conf_ref.txt C³B + script_ref.txt C³B + (map/) + pc.c + pc_modifybuyvalue()Apc_modifysellvalue() C³B + battle.h + battle.c + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_weapon_attack() C³B + battle_config_read() C³B + skill.c + skill_unitsetting()Askill_castend_damage_id() C³B + skill_castend_nodamage_id() C³B + mob.c + mob_attack() C³B + pet.c + pet_attack() C³B + clif.c + mob_class_change() C³B + +-------------------- +//0855 by asong + +Eƒƒ^ƒ‚ƒ‹ƒtƒH[ƒVƒX‚Å‚o‚b‚Æ‚µ‚Ä•\Ž¦‚·‚é‚l‚n‚a‚ðŽw’肵‚½ê‡‘q—Ž‚¿‚·‚éƒoƒO‚ðuŽb’èvC³B +E0x1b0ƒpƒP‚Å‚Í–³‚0x7b‚ðŽg‚¤‚±‚Ƃʼn½‚Æ‚©‚µ‚Ä‚¢‚Ü‚·B +EŽg‚¢•ª‚¯‚ð‚µ‚½‚¢‚Æ‚±‚ë‚Å‚·‚ª“–•û‚b‚Ì’mŽ¯‚ª–³‚ðŒ•ªŠò‚ªãŽè‚‚¢‚«‚Ü‚¹‚ñ‚Å‚µ‚½B +E‚à‚µ‚©‚µ‚½‚çƒvƒp‚Ì›z‰»i‰H‰»Hj‚ª‚¨‚©‚µ‚‚È‚Á‚Ä‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + (/map) + clif.c + mob_class_change() C³B + +-------------------- +//0854 by Kalen + +E•s‘«‚µ‚Ä‚¢‚½ˆêŽŸE“]EƒNƒGƒXƒg’ljÁ‹y‚ÑA‚»‚ê‚É”º‚¤WarpAMobC³) + (/conf) + (/npc) + npc_job_archer.txt + npc_job_swordman.txt + npc_job_thief.txt(‘䎌C³A“_”ˆ—•ÏX) + npc_job_magician.txt + (/warp) + npc_warp25.txt(ˆê•”ˆÚ“®) + npc_warp.txt(ˆê•”ˆÚ“®) + npc_warp_job.txt(VÝ) + (/mob) + npc_mob_job.txt +E—Õ‚èQuest’ljÁ‹y‚ÑA‚»‚ê‚É”º‚¤NPCC³BƒAƒ}ƒcs‚«‘D‚Å—¿‹à‚ðŽæ‚ç‚È‚©‚Á‚½–â‘èC³ + (/conf) + npc_event_hinamatsuri.txt + npc_town_amatsu.txt + npc_town_guide.txt + npc_town_kafra.txt + —Õ‚è‚ð—LŒø‚É‚·‚é‚ƃAƒ}ƒcƒJƒvƒ‰‚ðW‚ÉA + ƒAƒ‹ƒxƒ‹ƒ^“ìƒJƒvƒ‰‚ð휂ɂ·‚é‚悤‚É‚µ‚Ä‚¢‚Ü‚·B + +-------------------- +//0853 by Ž€_ + +EƒoƒOC³‚ÆNPCƒXƒLƒ‹ŠÖŒW‚ÌC³B +Eƒ_[ƒNƒuƒŒƒX‚ðMISCUŒ‚‚É•ÏXB(‚½‚¾–½’†”»’è—L‚è) +EƒNƒŠƒeƒBƒJƒ‹ƒXƒ‰ƒbƒVƒ…AƒRƒ“ƒ{ƒAƒ^ƒbƒNAƒKƒCƒfƒbƒhƒAƒ^ƒbƒNAƒXƒvƒ‰ƒbƒVƒ…ƒAƒ^ƒbƒNAƒuƒ‰ƒCƒ“ƒhƒAƒ^ƒbƒNAƒJ[ƒXƒAƒ^ƒbƒNAƒyƒgƒŠƒtƒ@ƒCƒAƒ^ƒbƒNAƒ|ƒCƒYƒ“ƒAƒ^ƒbƒNAƒTƒCƒŒƒ“ƒXƒAƒ^ƒbƒNAƒXƒŠ[ƒvƒAƒ^ƒbƒNAƒXƒ^ƒ“ƒAƒ^ƒbƒNAƒ‰ƒ“ƒ_ƒ€ƒAƒ^ƒbƒNAƒ_[ƒNƒlƒXƒAƒ^ƒbƒNAƒtƒ@ƒCƒAƒAƒ^ƒbƒNAƒOƒ‰ƒEƒ“ƒhƒAƒ^ƒbƒNAƒz[ƒŠ[ƒAƒ^ƒbƒNAƒ|ƒCƒYƒ“ƒAƒ^ƒbƒNAƒeƒŒƒLƒlƒXƒAƒ^ƒbƒNAƒEƒH[ƒ^[ƒAƒ^ƒbƒNAƒEƒBƒ“ƒhƒAƒ^ƒbƒNAƒ}ƒWƒJƒ‹ƒAƒ^ƒbƒNAƒuƒ‰ƒbƒhƒhƒŒƒCƒ“Aƒƒ“ƒ^ƒ‹ƒuƒŒƒCƒJ[‚̓‚ƒ“ƒXƒ^[‚Ì•ŠíŽË’ö‚É•ÏXB‚»‚µ‚Ä‚±‚ê‚ç‚̃XƒLƒ‹‚ðƒ‚ƒ“ƒXƒ^[‚ÌUŒ‚ŽË’ö‚É‚æ‚Á‚ĉ“‹——£UŒ‚‚Æ‹ß‹——£UŒ‚‚É‚È‚é‚悤‚É•ÏXB +EƒsƒA[ƒVƒ“ƒOƒAƒ^ƒbƒN‚Í•ŠíŽË’ö+2‚É•ÏXB +EƒGƒiƒW[ƒhƒŒƒCƒ“Aƒnƒ‹ƒVƒl[ƒVƒ‡ƒ“‚Í–‚–@ŽË’ö‚É•ÏXB +Eƒ_[ƒNƒuƒŒƒbƒVƒ“ƒO‚ÌŽË’ö‚ð4‚É•ÏX‚Æ‚©‚©‚éŠm—¦‚ð50+ƒXƒLƒ‹ƒŒƒxƒ‹*5%‚É•ÏXB(ˆê‰ž‚±‚ê‚à–‚–@‚È‚Ì‚Å‚µŽË’ö‚ðL‚‚µ‚Ü‚µ‚½BŠî–{–‚–@ŽË’ö‚Å‚ ‚é8‚É•Ï‚¦‚é‚ׂ«‚È‚Ì‚©‚Ç‚¤‚©‚Í”÷–...) +EƒKƒCƒfƒbƒhƒAƒ^ƒbƒN‚̓ZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚𖳌ø‚É‚·‚é•ñ‚ª‚ ‚è‚Ü‚µ‚½‚̂ŃZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚ªŒø‚©‚È‚¢‚悤‚ÉC³B +EƒfƒBƒtƒFƒ“ƒ_[‚̓GƒtƒFƒNƒg‚¾‚¯o‚é‚悤‚ÉC³B(ƒXƒLƒ‹‚ÌŽd—l“™‚ð‚í‚©‚é•û‚Íî•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B) +Eƒgƒ‰ƒ“ƒXƒtƒH[ƒ[ƒVƒ‡ƒ“ŽÀ‘•B(ƒƒ^ƒ‚[ƒtƒHƒVƒX‚Æ“¯‚¶•¨‚¾‚»‚¤‚Å‚·B‚½‚¾‚±‚ê‚Í‘S‘RŠÖŒW‚È‚¢•Ê‚̃‚ƒ“ƒXƒ^[‚ɂȂ镨‚炵‚¢‚Å‚·Bƒjƒtƒ‹ƒwƒCƒ€‚ÉŽg‚¤‚â‚‚ª‚¢‚é‚Ý‚½‚¢‚Å‚·B) +EAthenaŽG’kƒXƒŒƒbƒh ‘´‚Ì“ó‚Ì80‚ðscript_ref.txt‚Æ‚µ‚ĒljÁ‚Æ‚¿‚å‚Á‚ÆC³B + (db/) + skill_db.txt C³B + (doc/) + script_ref.txt ’ljÁB + (map/) + battle.c + battle_calc_damage()Abattle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_calc_magic_attack()Abattle_calc_misc_attack() C³B + skill.c + castend_damage_id()Acastend_nodamage_id()Askill_use_pos() C³B + clif.c + clif_spawnnpc()Aclif_parse_Restart()Aclif_parse_QuitGame() C³B + mob.c + mobskill_castend_id()Amobskill_castend_pos() C³B + mobskill_use_id()Amobskill_use_pos() C³B + +-------------------- +//0852 by ‚Ò‚´‚Ü‚ñ + +E‹T“‡4FE‹aD2FEƒAƒ}ƒcD1F‚ðƒeƒŒƒ|•s‰ÂAƒV[ƒYƒ‚[ƒh‚É•ÏXB +Enosave‚̈ø”‚ÉSavePoint‚ªŽw’è‚Å‚«‚Ä‚È‚©‚Á‚½‚̂ŒljÁB +EPVP‚Ìmapflag‚ðmapflag.txt‚É“‡B + (map/) + npc.c + npc_parse_mapflag() C³B + (conf/) + mapflag.txt C³B + npc/npc_pvp.txt C³B + +-------------------- +//0851 by ŒÓ’±—– + +EƒƒOƒCƒ“Žž‚̈Ɖ»key‚ªí‚É“¯‚¶‚Æ‚¢‚¤‘å‚«‚È–â‘肪‚ ‚Á‚½‚Ì‚ÅC³ +EƒƒOƒCƒ“ŠÇ—ŽÒƒƒOƒCƒ“(ladmin‚ÅŽg—p)‚ŃpƒXƒ[ƒh‚̈Ɖ»‚ɑΉž + (login/) + login.c + login_session_dataì¬AˆÃ†‰»key‚ðƒNƒ‰ƒCƒAƒ“ƒg‚²‚Æ‚Éì¬‚È‚Ç + (tool/) + ladmin + ver.1.05‚ÉBƒfƒtƒHƒ‹ƒg‚ŃpƒXƒ[ƒh‚ðˆÃ†‰»‚·‚é‚悤‚ÉB + ˆÃ†‰»‚Ì‚½‚ß‚ÉDigest::MD5ƒ‚ƒWƒ…[ƒ‹‚ðŽg—p‚µ‚Ü‚·B + Digest::MD5‚ª–³‚¢ê‡‚̓pƒXƒ[ƒh‚̈Ɖ»‚ðs‚¢‚Ü‚¹‚ñB + (doc/) + admin_packet.txt + ƒƒOƒCƒ“ƒT[ƒo[ŠÇ—ƒƒOƒCƒ“•”•ª•ÏX + +-------------------- +//0850 by Ž€_ + +ENPCƒXƒLƒ‹ŽÀ‘•B(ƒnƒ‹ƒVƒl[ƒVƒ‡ƒ“AƒL[ƒsƒ“ƒOAƒŠƒbƒNAƒƒ“ƒ^ƒ‹ƒuƒŒƒCƒJ[Aƒvƒƒ{ƒP[ƒVƒ‡ƒ“AƒoƒŠƒ„[Aƒ_[ƒNƒuƒŒƒbƒVƒ“ƒOAƒ_[ƒNƒuƒŒƒX) +EƒXƒLƒ‹Ž©”š‚̧ŒÀ‚Ímob_skill_db.txt‚Å‚â‚ê‚΂¢‚¢‚à‚Ì‚È‚Ì‚ÅŽæ‚è–ß‚µB +Ebattle_athena.conf‚Épet_hungry_friendly_decrease’ljÁB +Eƒyƒbƒg‚Ì• ‚ªŠ®‘S‚ÉŒ¸‚é‚ÆŽx‰‡UŒ‚‚𒆎~‚·‚é‚悤‚É•ÏXB +E‘®«•ÏXƒXƒLƒ‹‚ªì“®‚µ‚È‚©‚Á‚½–â‘èC³B +Eƒƒ“ƒ^ƒ‹ƒuƒŒƒCƒJ[‚Í10+ƒXƒLƒ‹ƒŒƒxƒ‹*5%‚ÌSP‚ðŒ¸‚ç‚·B(UŒ‚‚Í’Êí•ŠíƒXƒLƒ‹UŒ‚) +EƒŠƒbƒN‚Í•K’†‚ÅSP-100AƒXƒ^ƒ“Šm—¦ƒXƒLƒ‹ƒŒƒxƒ‹*5%B(ƒ_ƒ[ƒW‚Í–³‚µAbNoWeaponDamage‚Å–³Œø) +Eƒvƒƒ{ƒP[ƒVƒ‡ƒ“‚̓‚[ƒVƒ‡ƒ“‚ª€”õ‚³‚ê‚Ä‚È‚¢ƒ‚ƒ“ƒXƒ^[‚Í“ü‚ê‚Ä‚à‚È‚ñ‚ÌŒø‰Ê‚à‚È‚µB +Eƒ_[ƒNƒuƒŒƒbƒVƒ“ƒO‚Í‚©‚©‚é‚ÆHP‚ª1‚É‚È‚éB‘Ï«‚Í–‚–@–hŒä‚Å“K—pB +Eƒ_[ƒNƒuƒŒƒX‚Í500+(ƒXƒLƒ‹ƒŒƒxƒ‹-1)*1000+rand(0,1000)‚̃_ƒ[ƒWB‰ñ”ð‚Å‚«‚邪–hŒä–³Ž‹‚Å‹ß‹——£•¨—UŒ‚‚¾‚ªƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚Í–³Ž‹‚µ‚Ĉő®«UŒ‚B(–{ŽI‚ÌŒvŽZŽ®‚É‚ ‚Á‚Ä‚¢‚é‰Â”\«‚Í‚È‚¢‚©‚àB‚½‚¾ƒ_ƒ[ƒW—Ê‚Æ–½’†•â³ˆÈŠO‚Í–{ŽI‡‚킹) +ENPCƒXƒLƒ‹‚̈ێŽžŠÔ‚Í“K“x‚ÉÝ’èB +Eƒ‚ƒ“ƒXƒ^[‚Ì‘®«UŒ‚‚ƃKƒCƒfƒbƒhƒAƒ^ƒbƒN‚ªƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚𖳎‹‚·‚é‚Æ‚Ì•ñ‚ðŽó‚¯‚½‚Ì‚Å‚·‚ªC³‚·‚é‚©‚Ç‚¤‚©‚Í‚¿‚å‚Á‚Æ”÷–B(ƒXƒvƒ‰ƒbƒVƒ…ƒAƒ^ƒbƒN‚àƒZƒCƒtƒeƒBƒEƒH[ƒ‹–³Ž‹‚©‚à) + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (db/) + cast_db.txt C³B + skill_db.txt C³B + (map/) + mob.c + mob_damage() C³B + clif.h C³B + clif.c + clif_skill_estimation()Aclif_damage()Aclif_skill_damage() C³B + clif_skill_damage2()Aclif_pet_performance() C³B + pet.c + pet_performance()Apet_target_check()Apet_hungry() C³B + skill.h C³B + skill.c + skill_additional_effect()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_status_change_start() C³B + battle.h C³B + battle.c + battle_get_def()Abattle_get_mdef()Abattle_calc_damage() C³B + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_config_read() C³B + +-------------------- +//0849 by lapis + +EŠX’†‚̃eƒXƒgƒMƒ‹ƒhƒtƒ‰ƒO‚Ì•\Ž¦‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³B +EƒMƒ‹ƒhƒƒ“ƒo[‚ÍŠø‚©‚çƒAƒWƒg‚É”ò‚ׂé‚悤‚ÉC³B + (conf/gvg) + TEST_prtg_cas01_AbraiJ.txt C³B + +-------------------- +//0848 by huge + +EƒXƒLƒ‹Ž©”š‚ðAHP‚ª‘S‰ñ•œ‚µ‚Ä‚¢‚鎞‚ÍŽg‚¦‚È‚¢‚悤C³B +EƒXƒtƒBƒAƒ}ƒCƒ“EƒoƒCƒIƒvƒ‰ƒ“ƒgEEEƒ^[ƒQƒbƒg•ÏX‚Å‚«‚È‚¢...B +Emob‚Ƀ^[ƒQƒbƒg–³Ž‹ID‚ðÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B(Gv—pmob‚ÉŽg‚¦‚éH) + (map/) + map.h C³B + mob_data‚É int exclusion_src,exclusion_party,exclusion_guild ’ljÁB + mob.h C³B + mob.c + mob_exclusion_add() ’ljÁB + mob_exclusion_check() ’ljÁB + mob_timer_delete() ’ljÁB + mob_attack() C³B + mob_target() C³B + mob_ai_sub_hard_activesearch() C³B + mob_ai_sub_hard_mastersearch() C³B + mob_ai_sub_hard() C³B + skill.c + skill_castend_damage_id() C³B + skill_castend_pos2() C³B + +-------------------- +//0847 by Ž€_ + +E˜I“XƒoƒOC³B + (map/) + clif.c + clif_vendinglist()Aclif_openvending() C³B + vending.c + vending_openvending() C³B + skill.c + skill_castend_nodamage_id() C³B + +-------------------- +//0846 by Ž€_ + +EƒoƒOC³‚Æׂ©‚¢C³B +Ebattle_athena.conf‚Ìenemy_str‚ªƒyƒbƒg‚É‚à“K—p‚·‚é‚悤‚É•ÏXB +EbHPDrainRate‚ÆbSPDrainRate‚Åx‚ªƒ}ƒCƒiƒX‚Å‚àì“®‚·‚é‚悤‚É•ÏXB +EPC‚âNPC‚ÌŽp‚ð‚µ‚½ƒ‚ƒ“ƒXƒ^[‚àŽ€‚Ê‚Æ5•bŒãƒ}ƒbƒv‚©‚çÁ‚¦‚é‚悤‚É•ÏXB + (map/) + battle.c + battle_calc_pet_weapon_attack()Abattle_weapon_attack() C³B + skill.c + skill_attack()Askill_castend_damage_id() C³B + pc.c + pc_allskillup() C³B + clif.h C³B + clif.c + clif_openvending()Ado_init_clif() C³B + clif_clearchar_delay()Aclif_clearchar_delay_sub() ’ljÁB + mob.c + mob_damage() C³B + +-------------------- +//0845 by ‚Û‚Û‚Û + +Emob_avail.txt‚ÅPCƒOƒ‰ƒtƒBƒbƒN(0`23)‚ðŽw’肵‚½ƒyƒbƒg‚ªoŒ»‚µ‚½‚Æ‚«ƒNƒ‰ƒCƒAƒ“ƒgƒGƒ‰[‚ª‚Å‚é‚Ì‚ðŽb’èC³B +Emob_avail.txt‚Ńyƒbƒg‚É‚àPCƒLƒƒƒ‰‚Ì«•ÊE”¯Œ^&FE•ŠíE‚E“ª‘•”õ‚ðŽw’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B +EMOB‚ÌATKŒvŽZ‚ÉSTR‚ð“K—p‚·‚é‚©‚Ç‚¤‚©Ý’è‰Â”\‚É‚µ‚½B + (map/) + clif.c + clif_pet0078()Aclif_pet007b()Aclif_spawnpet()C³B + battle.hC³B + battle.c + battle_config_read()Abattle_calc_mob_weapon_attack()C³B + +-------------------- +//0844 by ‚Û‚Û‚Û + +Emob_avail.txt‚ÅPCƒOƒ‰ƒtƒBƒbƒN(0`23)‚ðŽw’肵‚½MOB‚ªoŒ»‚µ‚½‚Æ‚«ƒNƒ‰ƒCƒAƒ“ƒgƒGƒ‰[‚ª‚Å‚é‚Ì‚ðŽb’èC³B +Emob_avail.txt‚ÅPCƒLƒƒƒ‰‚Ì«•ÊE”¯Œ^&FE•ŠíE‚E“ª‘•”õ‚ðŽw’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B +@ƒOƒ‰ƒtƒBƒbƒN‚·‚è‘Ö‚¦æID‚ª0`23‚ÌŽž‚¾‚¯—LŒø‚ÅAŽw’è•û–@‚Í + MOB-ID,ƒOƒ‰ƒtƒBƒbƒN‚·‚è‘Ö‚¦æID,«•Ê(0=female,1=male),”¯Œ^,”¯F,•Ší,‚,ã’i“ª‘•”õ,’†’i“ª‘•”õ,‰º’i“ª‘•”õ +@‚Æ‚È‚è‚Ü‚·B‘•”õ‚Íitem_db‚ÌView—“ŽQÆ‚Ì‚±‚ÆB + (map/) + clif.c + clif_mob_0078()Aclif_mob007b()Aclif_spawnmob()C³B + mob.hC³B + mob.c + mob_get_sex()Amob_get_hair()Amob_get_hair_color()Aob_get_weapon()A + mob_get_shield()Amob_get_head_top()Amob_get_head_mid()Amob_get_head_buttom()’ljÁB + mob_readdb()Amob_readdb_mobavail()C³B + +-------------------- +//0843 by Ž€_ + +EƒŠƒtƒŒƒNƒgƒV[ƒ‹ƒhŽÀ‘•B +EƒAƒCƒeƒ€ƒXƒNƒŠƒvƒg‚ÉbShortWeaponDamageReturn‚Æ +bLongWeaponDamageReturn ’ljÁB +E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚⑼‚ÌŠC³B + (db/) + item_db.txt C³B + skill_db.txt C³B + cast_db.txt C³B + const.txt C³B + (doc/) + item_bonus.txt C³B + (map/) + map.h C³B + battle.c + battle_get_def()Abattle_get_def2()Abattle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_weapon_attack()Abattle_calc_magic_attack() C³B + pc.c + pc_calcstatus()Apc_bonus()Apc_bonus2()Apc_equipitem() C³B + pc_unequipitem()Apc_checkallowskill() C³B + skill.c + skill_attack()Askill_unit_onplace()Askill_status_change_start() C³B + skill_status_change_end()Askill_status_change_timer() C³B + skill_castend_nodamage_id() C³B + clif.c + clif_additem()Aclif_equiplist()Aclif_storageequiplist() C³B + clif_tradeadditem()Aclif_storageitemadded()Aclif_cart_additem() C³B + clif_cart_equiplist()Aclif_vendinglist()Aclif_openvending() C³B + clif_damage()Aclif_skill_damage()Aclif_parse_LoadEndAck() C³B + +-------------------- +//0842 by Ž€_ + +EƒXƒLƒ‹ŠÖŒW‚ÌC³‚Æׂ©‚¢C³B +EaegisŽI‚ÅFX‚ÆŒŸØ‚µ‚½•¨‚ð“K—pB +EƒƒeƒI‚͈̔͂ð7*7ALoV13*13ASG11*11AFN5*5‚ÉC³B +EƒVƒOƒiƒ€ŽÀ‘•B(‚½‚¾PVP‚ŃvƒŒƒCƒ„[‚É‚©‚©‚é‚©‚Ç‚¤‚©‚ª‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚Å +‚©‚©‚é•ûŒü‚ÅŽÀ‘•B)‚±‚ê‚Å1ŽŸE‹Æ‚̃XƒLƒ‹‚̓NƒŠƒA‚©‚à... +E‘•”õƒXƒNƒŠƒvƒg‚ÉbHPDrainRate‚ÆbSPDrainRate’ljÁB +E‚»‚Ì‘¼×‚©‚¢C³‚µB + (doc/) + item_bonus.txt C³B + (db/) + cast_db.txt C³B + item_db.txt C³B + const.txt C³B + (map/) + map.h C³B + skill.c + skill_castend_damage_id()Askill_castend_nodamage_id() C³B + skill_unitsetting()Askill_castend_pos2()Askill_castend_id() C³B + skill_status_change_start()Askill_status_change_timer() C³B + skill_status_change_end()Askill_unit_onplace() C³B + skill_frostjoke_scream()Askill_attack() C³B + skill_attack_area() ’ljÁB + battle.c + battle_calc_magic_attack()Abattle_get_element()Abattle_get_def() C³B + battle_get_def2()Abattle_get_mdef()Abattle_damage() C³B + battle_calc_damage()Abattle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_weapon_attack() C³B + mob.c + mobskill_castend_id() C³B + pc.c + pc_calcstatus()Apc_bonus2()Apc_attack_timer() C³B + clif.c + clif_spawnmob()Aclif_spawnpet()Aclif_spawnnpc() C³B + clif_parse_ActionRequest() C³B + +-------------------- +//0841 by Kalen + +E…—n‰t‚ªì‚ê‚È‚©‚Á‚½‚̂ŒljÁ + conf/npc/npc_job_magician.txt + +-------------------- +//0840 by Kalen + +E‹SƒCƒxƒ“ƒg’ljÁ + conf/npc/npc_event_oni.txt + +Emap_athena.confC³(ƒoƒŒƒ“ƒ^ƒCƒ“ƒRƒƒ“ƒgƒAƒEƒgB‹S’ljÁ) + conf/map_athena.conf + +-------------------- +//0839 by shuto + +EƒRƒ“ƒƒ“NPC’ljÁ(ƒJƒ“ ƒ\ƒ“ƒ\ƒ“‚ª”²‚¯‚Ä‚½) + +-------------------- +//0838 by Ž€_ + +EƒXƒLƒ‹ƒTƒCƒgƒ‰ƒbƒVƒƒ[ŽÀ‘•B +Eƒ‚ƒ“ƒXƒ^[‚̃Nƒ[ƒLƒ“ƒO‚ƃ}ƒLƒVƒ}ƒCƒYƒpƒ[‚ÍŽ‘±ŽžŠÔ‚ðƒŒƒxƒ‹*5•b‚É•ÏXB +E‚»‚Ì‘¼×‚©‚¢ƒoƒOC³B + (db/) + skill_db.txt C³B + (map/) + skill.c + skill_castend_damage_id()Askill_castend_nodamage_id() C³B + skill_castend_pos2()Askill_unitsetting()Askill_get_unit_id() C³B + skill_status_change_start() C³B + battle.c + battle_calc_magic_attack() C³B + +-------------------- +//0837 by Ž€_ + +EƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B +EƒtƒƒXƒgƒmƒ”ƒ@‚ðƒ†ƒjƒbƒgÝ’uŽ®‚É•ÏXB +Eƒ[ƒhƒIƒuƒ”ƒ@[ƒ~ƒŠƒIƒ“‚͈̔͂ð11*11‚ÉC³‚Æ40ƒqƒbƒg‚·‚é‚悤‚É•ÏXB(ƒ‰ƒOƒiƒQ[ƒg‚Ìî•ñB +13*13à‚à‚ ‚è‚Ü‚·‚ª...) +Eƒ†ƒsƒeƒ‹ƒTƒ“ƒ_[‚̃mƒbƒNƒoƒbƒN‚ð2~7‚É•ÏXB +EƒXƒg[ƒ€ƒKƒXƒg‚ÌUŒ‚‰ñ”‚ðƒŒƒxƒ‹ˆË‘¶‚©‚ç10‰ñ‚ɌŒèB +EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚̃mƒbƒNƒoƒbƒN‚ð3‚©‚ç2‚É•ÏXB(aegisŽI‚ŃmƒbƒNƒoƒbƒN‚ª‚ ‚邱‚Æ‚ÍŠm”F‚µ‚Ü‚µ‚½‚ª‚Ç‚ê‚®‚ç‚¢‚È‚Ì‚©‚ª•s–¾‚¾‚Á‚½‚Ì‚Å‚µŒ¸‚炵‚Ä‚Ý‚Ü‚µ‚½B) +Eƒ‚ƒ“ƒXƒ^[‚̉r¥ŽžŠÔ‚ª‘‚‚È‚Á‚Ä‚¢‚½–â‘èC³B(dex•â³‚ª“ü‚Á‚Ä‚µ‚Ü‚Á‚½‚¹‚¢‚Å‚·B) +E‚»‚Ì‘¼ƒI[ƒgƒXƒyƒ‹“–‚½‚è‚Ìׂ©‚¢C³B + (db/) + skill_db.txt C³B + (map/) + skill.c + skill_castfix()Askill_delayfix()Askill_timerskill() C³B + skill_castend_pos2()Askill_unitsetting()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_get_unit_id()Askill_attack() C³B + battle.c + battle_calc_magic_attack()Abattle_weapon_attack() C³B + +-------------------- +//0836 by Žß‘¸ + +Eƒ‚ƒ“ƒXƒ^[‚ÌŽæ‚芪‚«¢ŠÒ‚ÌŠÔŠu‚𒆃{ƒXˆÈŠOŠ®‘SC³B + (db/) + mob_skill_db.txt C³B + +-------------------- +//0835 by (“Ê) + +E”’nŽæ‚è‚Ń|[ƒY‚ð‚Æ‚é‚悤‚É‚µ‚½B +(ƒ|[ƒY‚¾‚¯‚È‚Ì‚ÅAŽÀÛ‚ÉUŒ‚‚ðŽó‚¯Ž~‚ß‚½‚è‚Í‚Å‚«‚Ü‚¹‚ñ) +clif_bladestop()‚ðŒÄ‚Ô‚±‚Æ‚Å”’nŽæ‚èó‘Ô‚ÌONAOFF‚̃pƒPƒbƒg‚ª‘—‚ê‚Ü‚·B + + (map/) + clif.h C³B + clif,c + clif_bladestop() ’ljÁ + skill.c + skill_castend_nodamage_id() C³B + +-------------------- +//0834 by Žß‘¸ + +Eƒ‚ƒ“ƒXƒ^[Žæ‚芪‚«¢ŠÒ‚ÌŠÔŠu‚ª’Z‚·‚¬‚é‚Æ‚ÌŽ–‚ʼnž‹}ˆ’uB(¡‰ñ‚͉©‹à峂̂Ý) + (db/) + mob_skill_db.txt C³B + +-------------------- +//0833 by (“Ê) + +Ememo‹ÖŽ~’nˆæ‚Å/memoŽž‚ÌC³B +E‚‚¢‚Å‚Éitem_db‚ðXVB + + (doc/) + client_packet.txt + R 0189 XVB + (db/) + item_db.txt ÅV”Å‚ÖXVB + (map/) + pc.c + pc_memo() C³B + +-------------------- +//0832 by Ž€_ + +EƒR[ƒhÅ“K‰»‚Æׂ©‚¢C³B +EƒI[ƒgƒXƒyƒ‹‚ð’n–Ê–‚–@‚ɑΉžB +EƒTƒ“ƒ_[ƒXƒg[ƒ€‚ƃwƒ”ƒ“ƒYƒhƒ‰ƒCƒu‚ðƒ†ƒjƒbƒgÝ’uŽ®‚É•ÏXB +EƒfƒBƒtƒFƒ“ƒ_[‚ÌUŒ‚‘¬“x’ቺ‚ð–{ŽI‚É‚ ‚킹B +E‚»‚Ì‘¼×‚©‚¢C³B + (doc/) + item_bonus.txt C³B + (db/) + skill_require_db.txt C³B + cast_db.txt C³B + (map/) + map.h C³B + path.c + calc_index()Apath_search() C³B + skill.c + skill_unitsetting()Askill_castend_pos2()Askill_get_unit_id() C³B + skill_status_change_timer_sub()Askill_castend_nodamage_id() C³B + skill_additional_effect()Askill_frostjoke_scream() C³B + pc.c + pc_calcstatus()Apc_skill()Apc_allskillup() C³B + battle.c + battle_get_speed()Abattle_get_adelay()Abattle_get_amotion() C³B + battle_weapon_attack() C³B + +-------------------- +//0831 by Ž€_ + +E‚µC³B +EƒI[ƒgƒXƒyƒ‹C³B‘•”õ‚É‚æ‚镨‚ƃXƒLƒ‹‚É‚æ‚镨‚ð•ÊX‚É“K—pA”“®Šm—¦C³B +E‘•”õ‚É‚æ‚éƒI[ƒgƒXƒyƒ‹‚ÍŽw’肵‚½ƒŒƒxƒ‹‚æ‚è2‚‰º‚Ü‚Å”»’è‚ð‚µ‚Ü‚·B‚‚܂背ƒxƒ‹5‚ðÝ’è‚·‚é‚ƃŒƒxƒ‹3‚©‚ç5‚Ü‚Å”“®‚µ‚Ü‚·B +Ebattle_athana.conf‚Ìplayer_cloak_check_wallAmonster_cloak_check_wall‚ðplayer_cloak_check_typeAmonster_cloak_check_type‚É•ÏXB +EƒAƒCƒeƒ€ƒ‹[ƒgŒ ŒÀŽžŠÔ‚ð–{ŽI‚ɇ‚킹‚ÄC³B +E‚»‚Ì‘¼ƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³B + (doc/) + conf_ref.txt C³B + db_ref.txt C³B + item_bonus.txt C³B + (conf/) + battle_athana.conf C³B + (db/) + item_db.txt C³B + (map/) + map.h + map.c + block_free_maxABL_LIST_MAX C³B + skill.h C³B + skill.c + skill_additional_effect()Askill_attack()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_unit_onplace() C³B + skill_status_change_end()Askill_status_change_start() C³B + skill_initunitgroup()Askill_unitsetting()Askill_castfix() C³B + skill_delayfix()Askill_autospell()Askill_use_id()Askill_use_pos() C³B + skill_check_cloaking()Askill_unit_timer_sub()Askill_check_condition() C³B + battle.h C³B + battle.c + battle_damage()Abattle_get_agi()Abattle_get_speed() C³B + battle_get_adelay()Abattle_get_amotion()Abattle_get_flee() C³B + battle_weapon_attack()Abattle_calc_magic_attack() C³B + battle_config_read() C³B + mob.c + mob_attack()Amob_damage()Amobskill_use_id() C³B + mobskill_use_pos()Amob_spawn()Amob_class_change() C³B + mob_can_move() C³B + pc.c + pc_attack_timer()Apc_checkweighticon()Apc_calcstatus() C³B + pc_damage()Apc_equipitem()Apc_unequipitem() C³B + pc_bonus2()Apc_bonus3()Apc_memo()Apc_authok() C³B + pc_isUseitem() C³B + clif.h C³B + clif.c + clif_changeoption()Aclif_parse_LoadEndAck()Aclif_autospell() C³B + clif_skill_memo() C³B + clif_skill_teleportmessage() ’ljÁB + script.c + buildin_sc_start() C³B + atcommnad.c + atcommand() C³B + +-------------------- +//0830 by huge + +EƒI[ƒgƒXƒyƒ‹‚ÅAŽ©•ª‚ÌK“¾‚µ‚Ă郌ƒxƒ‹‚æ‚è‚à‚‚¢ƒŒƒxƒ‹‚Å + –‚–@‚ª”“®‚µ‚Ä‚¢‚½‚Å‚ ‚낤–â‘è‚ðC³B +EƒI[ƒgƒXƒyƒ‹‚Å‚àA‚¿‚á‚ñ‚ÆSP‚ªŒ¸‚é‚悤‚ÉC³(‚Ç–Y‚ê) + (map/) + battle.c + battle_weapon_attack() C³B + skill.c + skill_autospell() C³B + +-------------------- +//0829 by Kalen + +Emob_dbC³ + Ž©ŽI—p‚Ì‚ÆŠÔˆá‚Á‚ÄUP‚µ‚Ä‚µ‚Ü‚Á‚½‚悤‚Å‚·B + –{—ˆ‚Ì‚à‚Ì‚É’¼‚µ‚Ü‚µ‚½B + +-------------------- +//0828 by ¹ + +EƒT[ƒo‚ÌSnapshot +EMVPƒ{ƒXŒn‚©‚çƒoƒJƒ“ƒXƒ`ƒPƒbƒg‚ª‘å—Ê‚Éo‚Ä‚¢‚½–â‘è‚ðC³B + (common/) + version.h C³B + (db/) + mob_db.txt C³B + +-------------------- +//0827 by J + +EŒÅ’èMOB‚Ì‚Í‚¸‚̃ƒKƒŠƒX‚Æl–Ê“Ž÷‚ª•à‚¢‚Ä‚¢‚½‚Ì‚ðC³B +E“¬‹Zê‚ÌMOB‚ɃXƒLƒ‹‚ðŽÀ‘•B +EƒpƒTƒi‚ƃtƒ@ƒ‰ƒI‚ªƒXƒLƒ‹‚ªÝ’肳‚ê‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðŽÀ‘•B + (db/) + mob_db.txt C³B + mob_skill_db.txt C³B + +-------------------- +//0826 by ‚Ò‚´‚Ü‚ñ + +Eˆê•”‚̉‰‘tƒXƒLƒ‹‚ðŽg‚¤‚ÆŽI‚ª—Ž‚¿‚éƒoƒOC³B +EƒNƒ[ƒLƒ“ƒO’†‚ɃXƒLƒ‹‚ðŽg—p‚Å‚«A +@Žg—p‚·‚é‚ƃNƒ[ƒLƒ“ƒO‚ª‰ðœ‚³‚ê‚é‚悤‚ÉC³B +EKalen‚³‚ñ‚Ìmob_db.txt‚ð‚Ü‚Æ‚ß‚Ü‚µ‚½B + (map/) + skill.c + skill_unit_onplace()Askill_unit_onout() C³B + skill_status_change_start()Askill_status_change_timer() C³B + skill_use_id()Askill_use_pos() C³B + (db/) + mob_db.txt C³B + +-------------------- +//0825 by Ž€_ + +Eׂ©‚¢C³B(ׂ©‚¢‚±‚Æ‚Ì‚í‚è‚É‚ÍC³‚µ‚½Š‚ª‘½‚¢‚¯‚Ç...) +Eƒ[ƒvƒ|[ƒ^ƒ‹‚Ì’†‚ÉŽ~‚Ü‚Á‚½ŽžˆÈŠO‚̓[ƒv‚µ‚È‚¢‚悤‚ÉC³B +Ebattle_athena.conf‚Éplayer_skill_nofootsetAmonster_skill_nofootset ’ljÁB +ENPC‚ðƒNƒŠƒbƒN‚µ‚½Œã˜I“X‚ðƒNƒŠƒbƒN‚µ‚ĘI“X‚ð•Â‚¶‚é‚Æ“®‚¯‚È‚‚È‚éƒoƒOC³B +‚½‚¾˜I“X‚ð•Â‚¶‚鎞‰½‚̃pƒPƒbƒg‚à“]‘—‚µ‚Ä‚±‚È‚¢‚̂ŘI“X‚ðƒNƒŠƒbƒN‚·‚é‚ÆNPC‚̈—‚©‚甲‚¯‚é‚悤‚É‚µ‚Ü‚µ‚½B(–{ŽI‚Å‚ÍNPC‚̈—‚ª”²‚¯‚È‚¢‚炵‚¢‚Å‚·‚ª‚»‚êˆÈŠO•û–@‚ª‚È‚©‚Á‚½‚Ì‚Á‚ÅB) +Ekillmonster‚ÌAll‚Å¢Š«‚³‚ꂽƒ‚ƒ“ƒXƒ^[‚¾‚¯Á‚·‚悤‚É•ÏXB +Eƒ\[ƒXÅ“K‰»‚âƒXƒLƒ‹ŠÖŒW‚Ìׂ©‚¢C³‘½”B + (doc/) + conf_ref.txt C³B + db_ref.txt C³B + (conf/) + battle_athana.conf C³B + atcommnad_athena.conf C³B + (db/) + item_db.txt C³B + skill_db.txt C³B + (login/) + parse_fromchar() C³B + (map/) + map.h C³B + clif.c + clif_closevendingboard()Aclif_parse_VendingListReq() C³B + clif_mob0078()Aclif_mob007b()Aclif_pet0078()Aclif_pet007b() C³B + skill.h C³B + skill.c + skill_check_condition()Askill_castend_pos2() C³B + skill_castend_damage_id()Askill_castend_nodamage_id() C³B + skill_castend_id()Askill_status_change_start()Askill_castfix() C³B + skill_delayfix()Askill_check_unit_range_sub() C³B + skill_check_unit_range()Askill_castend_pos()Askill_stop_dancing() C³B + skill_unit_onplace()Askill_readdb()Askill_timerskill()Askill_blown() C³B + skill_check_unit_range2_sub()Askill_check_unit_range2() ’ljÁB + skill_get_maxcount() ’ljÁB + mob.c + mobskill_castend_id()Amobskill_castend_pos()Amob_deleteslave() C³B + mob_stop_walking()Amob_walk()Amob_damage() C³B + pc.c + pc_calcstatus()Apc_checkskill()Apc_stop_walking() C³B + pc_walk()Apc_damage() C³B + npc.c + npc_touch_areanpc() C³B + pet.c + pet_stop_walking() C³B + script.c + buildin_killmonster()Abuildin_killmonster_sub() C³B + battle.h + battle.c + battle_calc_magic_attack()Abattle_get_flee()Abattle_get_flee2() C³B + battle_get_adelay()Abattle_get_amotion()Abattle_get_max_hp() C³B + battle_get_hit()Abattle_get_critical()Abattle_get_atk2() C³B + battle_damage()Abattle_config_read() C³B + atcommand.h C³B + atcommand.c C³B + +-------------------- +//0824 by ‚Ò‚´‚Ü‚ñ + +EƒZƒCƒtƒeƒBƒEƒH[ƒ‹Eƒjƒ…[ƒ}‚Ì‘«Œ³’u‚«‚ª‚Å‚«‚È‚©‚Á‚½–â‘èC³B +EƒGƒ“ƒyƒŠƒEƒ€‚Ƀq[ƒ‹“™‚ÌŽx‰‡ƒXƒLƒ‹‚ªŒø‚¢‚Ä‚¢‚½–â‘èC³B +E“¬‹Zê‚Ń‚ƒ“ƒXƒ^[ƒŠƒZƒbƒg‚ª‚Å‚«‚È‚©‚Á‚½–â‘èC³B +@killmonster‚Í"killmonster <mapname>,<eventname>"‚Æ‹Lq‚µ‚Ä +@ŠY“–eventname‚ðŽ‚ƒ‚ƒ“ƒXƒ^[‚ð휂µ‚Ü‚·‚ª +@eventname‚ÉAll‚Æ“ü‚ê‚é‚ÆŠY“–MAP‚Ì‘Sƒ‚ƒ“ƒXƒ^[‚ðÁ‹Ž‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B + + (map/) + skill.c + skill_check_unit_range_sub()Askill_castend_nodamage_id() C³B + script.c + buildin_killmonster()Abuildin_killmonster_sub() C³B + (conf/npc/) + npc_event_tougijou.txt C³B + +-------------------- +//0823 by Kalen + +E“¬‹Zêƒf[ƒ^‘µ‚Á‚½‚Ì‚ÅAŠ®¬ + conf/npc/npc_event_tougijou.txt + ‚½‚¾‚µA‚±‚¿‚ç‚Ń`ƒFƒbƒN‚µ‚½‚Æ‚±‚ëkillmonster‚ª‚¤‚Ü‚‚¢‚©‚¸A + Ž¸”sAŽžŠÔ؂ꂵ‚½ê‡ƒ‚ƒ“ƒXƒ^[ƒŠƒZƒbƒg‚ªo—ˆ‚Ü‚¹‚ñB + ƒCƒxƒ“ƒg‚ªÝ’肳‚ê‚Ä‚¢‚郂ƒ“ƒXƒ^[‚͈—‚Å‚«‚È‚¢‚Ì‚©‚ÆŽv‚¢‚Ü‚µ‚½‚ª + Agit‚Ì‚Ù‚¤‚̃Gƒ“ƒy‚ÌKillmonster‚Í‚¿‚á‚ñ‚Æ“®‚¢‚Ä‚Ü‚·‚µc + Œ´ˆö•ª‚©‚é•û‚¨Šè‚¢‚µ‚Ü‚·<(_ _)> + +Egon_test‚Ìmapflag’ljÁ + conf/mapflag.txt + +Emob_dbXV + 1419`1491‚ªŠù‘¶‚ÌMob‚Ì’è‹`‚΂©‚è‚Ȃ̂ŒljÁ‚µ‚Ü‚¹‚ñ‚Å‚µ‚½‚ªA + ’²‚ׂ½Š“¬‹Zê‚ÌMob‚̃f[ƒ^‚Å‚ ‚邱‚Æ‚ª•ª‚©‚è‚Ü‚µ‚½(Drop‚ð˜M‚Á‚½‚à‚Ì) + –{ŽI‚ł͈łè‚ñ‚²‚ª•ñ‚³‚ê‚Ä‚¢‚Ü‚·B‚ªA‚±‚¿‚ç‚ÍDrop‹ó”’‚ň—‚µ‚Ü‚µ‚½B + ƒNƒ‰ƒCƒAƒ“ƒgã‚Å‚Í“¯–¼‚Å‚µ‚½‚ªA‹æ•Ê‚Ì‚½‚ßÚ“ª‚ÉG_‚ð‚‚¯‚Ä‹æ•Ê‚µ‚Ä‚Ü‚·B + mob_skill_db‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚µ‚½« + +-------------------- +//0822 by ‚Ò‚´‚Ü‚ñ + +E‰‰‘tƒXƒLƒ‹‚ł̕Ⳃðƒ_ƒ“ƒT[‚É‚à“K—pB +EƒTƒ“ƒNƒ`ƒ…ƒAƒŠƒoƒOC³B +EKalen‚³‚ñ‚ÌMOBƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚ð‚Ü‚Æ‚ß‚Æ‚«‚Ü‚µ‚½B + + (map/) + skill.c + skill_status_change_start()Askill_unit_onplace() C³B + battle.c + battle_get_critical()Abattle_get_hit() C³B + pc.c + pc_calcstatus() C³B + +-------------------- +//0821 by huge + +EƒI[ƒgƒXƒyƒ‹‰¼ŽÀ‘•B +Etimer‚Å”»’肵‚悤‚©‚Æ‚àŽv‚¢‚Ü‚µ‚½‚ªA‘•”õ‚Ì–³ŒÀƒI[ƒgƒXƒyƒ‹‚ׂ̈Ésc_[].val1‚ÅŒ©‚ă}ƒXB +Ebonus2 bAutoSpell’ljÁBˆê‰ž‚Ç‚ñ‚ȃXƒLƒ‹‚Å‚àŽw’è‚Å‚«‚é‚悤‚É‚µ‚Ä‚Ü‚·‚ª(”Ô†‚Ískill_treeŽQÆ) + skill_castend_damage_id‚̃^ƒCƒvˆÈŠO‚̃XƒLƒ‹‚ðŽw’肵‚È‚¢‚Å‚‚¾‚³‚¢B + ”“®Šm—¦‚ÍALv1:50%ALv2:35%ALv3:15%A‚»‚êˆÈã‚Í 5%ŒÅ’è‚Å‚·B + ‚ ‚ÆAƒXƒLƒ‹ƒŒƒxƒ‹‚àŽw’è‚Å‚«‚Ü‚·‚ªAŒÀŠE‚ð’´‚¦‚½”Žš‚ð“ü‚ê‚é‚Æ’Ä‚¿‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB +¡‘‚«•û—áFiƒtƒ@ƒCƒAƒ{ƒ‹ƒgLv3‚ÌŽžjbonus2 bAutoSpell 19,3; + + (db/) + const.txt C³B + (map/) + battle.c + battle_weapon_attack() C³B + clif.h + clif.c + packet_len_table C³B + clif_autospell() ’ljÁB + clif_parse_AutoSpell() ’ljÁB + map.h C³B + pc.c + pc_bonus2() C³B + pc_equipitem() C³B + pc_unequipitem() C³B + skill.h + skill.c + skill_castend_nodamage_id() C³B + skill_autospell() ’ljÁB + skill_status_change_end() C³B + skill_status_change_start() C³B + status_change‚̔Ԇƒe[ƒuƒ‹C³B + +-------------------- +//0820 by ‚Ò‚´‚Ü‚ñ + +EƒAƒhƒŠƒu‚̃ƒbƒZ[ƒW‚ª“ü‚Á‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³ +Eƒo[ƒh‚̉‰‘tƒXƒLƒ‹‚ÅŠyŠí‚Ì—ûK‚⎩ƒXƒe[ƒ^ƒX‚̕Ⳃª“ü‚Á‚Ä‚È‚©‚Á‚½‚Ì‚ðC³B +@struct status_change‚Ìval‚ª3‚•K—v‚¾‚Á‚½‚Ì‚Å(val4‚Í—\–ñ‚³‚ê‚Ä‚½‚Á‚Û‚¢‚Ì‚Å)val5‚ð’ljÁ‚µ‚Ü‚µ‚½ + (map/) + map.h C³B + skill.c + skill_status_change_start()Askill_castend_nodamage_id() C³B + skill_castfix()Askill_delayfix() C³B + battle.c + battle_get_flee()Abattle_get_max_hp() C³B + battle_get_adelay()Abattle_get_amotion() C³B + battle_calc_misc_attack() C³B + pc.c + pc_calcstatus() C³B + +-------------------- +//0819 by Kalen + +EƒRƒ“ƒƒ“(NPCAWarp)C³ + conf/npc/npc_town_gonryun.txt(ˆÄ“àˆõ•â[) + conf/npc/npc_event_tougijou.txt + conf/warp/npc_warp_gonryun.txt(h2F‚ÆD2F‚È‚Ç) + +EMOBC³ + conf/mob/npc_monster30.txt(ˆê”½–Ø–È•s‘«’ljÁ) + conf/mob/npc_monster35.txt(ƒRƒ“ƒƒ“Mob’ljÁ) + +EDBC³ + db/mob_db.txt(ƒRƒ“ƒƒ“[‘S‚Ä]+ƒEƒ“ƒoƒ‰[’è‹`]’ljÁBAspeed“™“K“–‚Å‚·B‚Ü‚Ÿ–³‚¢‚æ‚è‚Ü‚µ‚Æ‚¢‚¤‚±‚Æ‚Å) + db/mob_skill_db.txt(î•ñ‚ðŒ³‚ÉƒRƒ“ƒƒ“‚ÌMob•ª’ljÁ) + db/item_db.txt(Athena DB Project 2/19 21:10DL•ª) + +-------------------- +//0818 by ‚ ‚ä‚Ý + +EƒeƒŒƒ|[ƒgƒXƒLƒ‹Lv1‚ÅA‘I‘ðƒEƒCƒ“ƒhƒE‚ªo‚Ä‚±‚È‚¢ƒoƒO‚ðC³B +Ed—Ê‚ª90“ˆÈã‚ÌꇂłàAˆê•”‚̃XƒLƒ‹‚ªŽg—p‰Â”\‚¾‚Á‚½ƒoƒO‚ðC³B +E@allskillƒRƒ}ƒ“ƒh‚ÌC³‚Æ‚©B + + (conf/) + msg_athena.conf C³B + (map/) + atcommand.c + atcommand() C³B + pc.c + pc_allskillup() C³B + skill.c + skill_castend_nodamage_id() C³B + skill_check_condition() C³B + +-------------------- +//0817 by huge + +EƒfƒBƒ{[ƒVƒ‡ƒ“‚̈—C³ + EŽ…‚Ìo‚µ•û‚̓pƒP‚ð–á‚Á‚½‚Ì‚Å‚Å‚«‚Ü‚µ‚½‚ªAƒAƒCƒRƒ“‚Ì•û‚Í‚Ü‚¾•ª‚©‚ç‚È‚¢‚Å‚·B + E‚ ‚ÆAŽ©•ª‚̊‹«‚Å2lˆÈã‚É“¯Žž‚ÉŠ|‚¯‚ê‚È‚©‚Á‚½‚Ì‚ÅA•¡”l‚É‚©‚¯‚½ê‡ + ‘½•ª0‚Ì—…—ñ‚ÌŠ‚É2l–ÚA3l–ÚEEE‚ÌID‚ª“ü‚é‚ñ‚¶‚á‚È‚¢‚©‚È‚Ÿ‚Æ‚¢‚¤—\‘ª‚Å‚â‚Á‚Ä‚Ü‚·B +EƒnƒCƒfƒBƒ“ƒO’†A‹y‚уNƒ[ƒLƒ“ƒO’†‚Ƀ_ƒ[ƒW‚ðŽó‚¯‚é‚Æ‰ð‚¯‚é‚悤C³B + + (map/) + battle.c + battle_damage() C³B + clif.c + clif_devotion() C³B + pc.c + pc_walk() C³B + skill.c + skill.h + skill_castend_nodamage_id() C³B + skill_devotion() skill_devotion2() C³B + skill_devotion3()skill_devotion_end() C³B + +-------------------- +//0816 by ‚Ò‚´‚Ü‚ñ +Eƒtƒ@ƒCƒA[ƒEƒH[ƒ‹3–‡§ŒÀŽÀ‘•B +Ed‚Ë’u‚«‹ÖŽ~‚ðƒvƒŒƒCƒ„[Eƒ‚ƒ“ƒXƒ^[‚É‚à“K—p‚·‚é‚悤‚ÉC³B +EŠ¦‚¢ƒWƒ‡[ƒNEƒXƒNƒŠ[ƒ€‚ÌPvPEGvG‚ÅAŒø‰Ê‚ªŽ©•ª‚É‚à‹y‚ÔƒoƒOC³B +@‚‚¢‚Å‚ÉPTƒƒ“ƒo[‚É‚Í’áŠm—¦‚Å‚©‚©‚é‚Ì‚àŽÀ‘•B +EŠ¦‚¢ƒWƒ‡[ƒNEƒXƒNƒŠ[ƒ€EƒXƒsƒAƒu[ƒƒ‰ƒ“‚̃fƒBƒŒƒCC³B +@ƒ~ƒ…[ƒWƒJƒ‹ƒXƒgƒ‰ƒCƒNE–‚¿‚̉r¥ŽžŠÔC³B + (map/) + skill.c + skill_check_condition()Askill_check_unit_range_sub() C³B + skill_check_unit_range()Askill_delunitgroup() C³B + skill_castend_pos2()Askill_frostjoke_scream() C³B + map.h C³B + (db/) + cast_db.txt C³B + +-------------------- +//0815 by Ž€_ + +E0814‚̃oƒOC³‚Æׂ©‚¢C³B +Emapflag monster_noteleportAnoreturn’ljÁ‚Ænoteleport‚ÌŽd—l•ÏXB +noteleport‚̓vƒŒƒCƒ„[‚̃nƒG‚ƃeƒŒƒ|[ƒgAƒ[ƒvƒXƒLƒ‹‚̧ŒÀ‚ð‚·‚é‚ª’±‚ͧŒÀ‚µ‚È‚¢‚悤‚É•ÏXAmonster_noteleport‚̓‚ƒ“ƒXƒ^[‚̃eƒŒƒ|[ƒg‚ð§ŒÀ‚·‚镨‚Ånoreturn‚Í’±‚ÌŽg—p‚ð§ŒÀ‚·‚镨‚Å‚·B‚½‚¾mapflag.txt‚ÍC³‚µ‚Ä‚¢‚Ü‚¹‚ñB(noreturn‚ðÝ’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B) +Ebattle_athena.conf‚Ìplayer_auto_counter_type‚Æmonster_auto_counter_type‚ªà–¾’Ê‚è‚É‹@”\‚µ‚È‚©‚Á‚½–â‘èC³B +Ebattle_athena.conf‚Éplayer_cloak_check_wall ‚Æmonster_cloak_check_wall ’ljÁB +Eƒ{ƒXƒ‚ƒ“ƒXƒ^[‚Ì”FŽ¯‚ðMVPŒoŒ±‚Æmode‚Ì0x20‚Ås‚È‚Á‚Ä‚¢‚½•¨‚ðmode‚¾‚¯‚É‚·‚é‚悤‚É•ÏXB(–{ŽI‚̃Cƒxƒ“ƒgƒ‚ƒ“ƒXƒ^[‚ÅMVPŒoŒ±‚ð‚‚ê‚邪ó‘ÔˆÙí‚ÉŠ|‚©‚é‚â‚‚ª‚ ‚Á‚½‚炵‚C³BHP‚ª1‰‚à‚ ‚Á‚Ä“Å‚¶‚á‚È‚¢‚Æ“|‚¹‚È‚©‚Á‚½‚炵‚¢‚Ì‚Å...) ‚‚܂èMVPŒoŒ±‚ª‚ ‚Á‚Ä‚àƒ{ƒXˆµ‚¢‚Å‚Í‚È‚¢ƒ‚ƒ“ƒXƒ^[‚ðì‚邱‚Æ‚à‰Â”\‚Å‚·B +Eó‘ÔˆÙí‚ÉŠ|‚©‚Á‚½ó‘Ô‚ÅÚ‘±Ø’f‚ª‚Å‚«‚È‚¢‚悤‚ÉC³B(‚½‚¾ƒ^ƒCƒ}[ƒ`ƒFƒbƒN‚Å‚Í‚È‚opt1‚Æopt2‚ðƒ`ƒFƒbƒN‚·‚邾‚¯‚È‚Ì‚ÅŒ©‚½–Ú‚ª•Ï‚í‚éó‘ÔˆÙ킾‚¯‚É“K—p‚³‚ê‚Ü‚·B) +E¡‚³‚ç‚Å‚·‚ªÌ‚ÌyareCVS(2003”N9ŒŽƒo[ƒWƒ‡ƒ“)‚Å“K—p‚³‚ê‚Ä‚¢‚½ƒ‰ƒO‚ðŒ¸‚ç‚·ˆ×‚̈—‚ð“ü‚ê‚Ä‚Ý‚Ü‚µ‚½B‚Ç‚ñ‚ÈŒø‰Ê‚ª‚ ‚é‚©‚ÍŽ©•ª‚Å‚à‚í‚©‚è‚Ü‚¹‚ñB(‚½‚¾“ü‚ê‚Ä‚Ý‚½‚¾‚¯...) +EƒV[ƒYƒ‚[ƒh‚ÆPVP‚Å‹ÖŽ~‘•”õ‚ªŠO‚³‚ê‚Ä‚àŒø‰Ê‚ªÁ‚¦‚È‚¢ƒoƒOC³B +E‚»‚Ì‘¼×‚©‚¢C³B +E–¢ƒeƒXƒg‚Ì•¨‚à‚©‚È‚è‚ ‚è‚Ü‚·B + (common/) + socket.c + connect_client()Amake_listen_port()Amake_connection() C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + battle.h C³B + battle.c + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_calc_magic_attack()Abattle_config_read() C³B + skill.c + skill_unit_onplace()Askill_status_change_timer() C³B + skill_castend_nodamage_id()Askill_use_id() C³B + skill_check_unit_range_sub()Askill_timerskill() C³B + skill_additional_effect()Askill_attack()Askill_status_change_start() C³B + skill_check_cloaking() C³B + clif.c + clif_item_identify_list()Aclif_parse_QuitGame()Aclif_GM_kick() C³B + pc.c + pc_attack_timer()Apc_isUseitem()Apc_checkitem C³B + mob.c + mob_warp()Amob_walk()Amob_attack()Amob_target() C³B + mob_ai_sub_hard_activesearch()Amob_ai_sub_hard_mastersearch() C³B + mob_ai_sub_lazy()Amob_damage() C³B + npc.c + npc_parse_mapflag() C³B + map.h C³B + +-------------------- +//0814 by Ž€_ + +EƒoƒOC³‚Æׂ©‚¢C³B +Ebattle_athena.conf‚Ìplayer_auto_counter_type‚Æmonster_auto_counter_type‚ÌŽd—l‚ð•ÏXB(–{ŽI‚ł̓XƒLƒ‹”½Œ‚‚Í‚Å‚«‚È‚¢‚Ý‚½‚¢‚È‚Ì‚ÅÝ’è‚Å‚«‚é‚悤‚É•ÏXB) +E“Å‚ÆΉ»‚É‚æ‚éHPŒ¸‚ð–{ŽI‚ɇ‚킹‚ÄC³‚ÆŠ®‘SΉ»‚Ì‘O‚Å‚Í“®‚¯‚é‚悤‚É•ÏXB(“Å‚Í1•b‚É3+Å‘åHP‚Ì1.5%(ƒ‚ƒ“ƒXƒ^[‚Í0.5%)AΉ»‚Í5•b‚É1%) –¢ƒeƒXƒg +EMVPŒoŒ±’l‚Í–{ŽI‚Å‚¢‚‚à“ü‚é‚悤‚É‚È‚Á‚½‚Ì‚ÅC³B +EƒXƒeƒB[ƒ‹‚ÌŠm—¦‚ð‚µ‰º‚°B +Eƒ‚ƒ“ƒXƒ^[‚̃nƒCƒfƒBƒ“ƒOAƒNƒ[ƒLƒ“ƒOAƒ}ƒLƒVƒ}ƒCƒYƒpƒ[‚ª‚·‚®‚ɉ𜂳‚ê‚é–â‘èC³B(ƒ‚ƒ“ƒXƒ^[‚É‚ÍSP‚ª‚È‚¢‚¹‚¢‚Å‚·BŽæ‚芸‚¦‚¸ƒNƒ[ƒLƒ“ƒO‚̓nƒCƒfƒBƒ“ƒO‚ÌŽžŠÔ‚ð“K—p‚µ‚ă}ƒLƒVƒ}ƒCƒYƒpƒ[‚̓EƒGƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“‚ÌŽžŠÔ‚ð“K—p‚µ‚Ü‚·B) –¢ƒeƒXƒg +EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ðl”‚©‚ç‰ñ”‚É•ÏXB +EPVP‚ÅŽ©•ª‚̃gƒ‰ƒbƒv‚ÉUŒ‚‘ÎÛ‚É‚È‚é‚悤‚É•ÏXB +Evitƒyƒiƒ‹ƒeƒB‚Ì“K—p‚ÅæŽZ–hŒä‚àŒ¸‚é‚悤‚É•ÏXB(–¢ƒeƒXƒg) +E‚»‚Ì‘¼×‚©‚¢ƒoƒOC³B + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + (db/) + skill_db.txt + (map/) + map.h C³B + script.c + buildin_itemskill() C³B + mob.c + mob_can_move()Amob_ai_sub_hard()Amob_damage() C³B + skill.c + skill_unitsetting()Askill_unit_onplace()Askill_castend_nodamage_id() C³B + skill_attack()Askill_status_change_start() C³B + skill_status_change_timer()Askill_status_change_timer_sub() C³B + skill_addtimerskill()Askill_cleartimerskill() C³B + skill_check_unit_range_sub() C³B + battle.c + battle_calc_damage()Abattle_check_target() C³B + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack() C³B + pc.c + pc_steal_item() C³B + clif.c + clif_parse_WalkToXY()Aclif_closevendingboard() C³B + +-------------------- +//0813 by Kalen +EƒRƒ“ƒƒ“NPC’ljÁ + conf/npc/npc_town_gonryun.txt(ƒNƒGƒXƒg‚Í•s–¾ + conf/npc/npc_town_kafra.txt + conf/npc/npc_town_guide.txt + (conf/npc/npc_event_tougijou.txt)ƒf[ƒ^•s‘« + +E‘SGvGMAP‚ÌMobƒf[ƒ^’ljÁ + conf/mob/npc_monster_gvg.txt + +ETESTmob‚©‚çƒeƒXƒgƒMƒ‹ƒhƒtƒ‰ƒOˆÚ“® + conf/gvg/TEST_prtg_cas01_AbraiJ.txt + +-------------------- +//0812 by huge + +EƒfƒBƒ{[ƒVƒ‡ƒ“‚̉¼ŽÀ‘• + EƒpƒPƒbƒg‚ª‘S‘R•ª‚©‚è‚Ü‚¹‚ñ‚Å‚µ‚½‚Ì‚ÅA + ‚¢Ž…‚ào‚È‚¢‚µAƒAƒCƒRƒ“‚·‚ç•\Ž¦‚Å‚«‚Ü‚¹‚ñB + Eƒ_ƒˆÚ“®‚¾‚¯‚ÅAƒmƒbƒNƒoƒbƒNEƒI[ƒgƒK[ƒh‚Í“K‰ž‚³‚ê‚Ü‚¹‚ñB + + (map/) + clif.c + clif.h + clif_devotion() ’ljÁB + skill.c + skill_castend_nodamage_id() C³B + skill_devotion() skill_devotion2() ’ljÁB + skill_devotion3() skill_devotion_end() ’ljÁB + skill_status_change_end() C³B + skill_status_change_start() C³B + skill_brandishspear_first() C³B + skill_brandishspear_dir() C³B + pc.c + pc_authok() C³B + pc_walk() C³B + pc_damage() C³B + battle.c + battle_damage() C³B + map.h + map_session_data{} + struct square dev ’ljÁB + skill.h ‚Ìbrandish‚ðsquare‚ɉü–¼‚µA + (common/) mmo.h ‚Ɉړ® + +-------------------- +//0811 by ‚Ò‚´‚Ü‚ñ + +EUé’†‚Í’±‚ªŽg‚¦‚é‚悤‚ÉC³ +EŠ¦‚¢ƒWƒ‡[ƒNEƒXƒNƒŠ[ƒ€ŽÀ‘•(PTƒƒ“ƒo[‚É’áŠm—¦‚ʼn]X‚Í–¢ŽÀ‘•‚Å‚·) +EGVGƒXƒNƒŠƒvƒg‚ðC³(ŽŽsöŒë‚µ‚·‚¬‚Ä‚Ç‚±‚ð‚Ç‚¤‚µ‚½‚©Šo‚¦‚Ä‚Ü‚¹‚ñc) +@GVGƒXƒNƒŠƒvƒg‚ÉŠÖ‚µ‚Ä‚Å‚·‚ªAŠù’m‚̃oƒO‚ª‚ ‚è‚Ü‚· +@‚»‚ê‚ÍAè—̃Mƒ‹ƒhƒ}ƒXƒ^[ˆÈŠO‚ÌPC‚ªAè—̃Mƒ‹ƒhƒ}ƒXƒ^[‚æ‚èæ‚ÉNPC‚ɘb‚µŠ|‚¯‚é‚Æ +@ƒ}ƒbƒvƒT[ƒo‚ª—Ž‚¿‚é‚Æ‚¢‚¤‚à‚Ì‚Å‚·B +@‚±‚ê‚ÍAgetguildmasterEgetguildname‚ðŽg—p‚µ‚Ä‚¢‚éƒXƒNƒŠƒvƒg‚·‚ׂĂɋN‚±‚蓾‚邱‚Æ‚Å‚ ‚è +@æ‚Éè—̃Mƒ‹ƒhƒ}ƒXƒ^[ˆÈŠO‚Řb‚µŠ|‚¯‚é‚ÆAguild_search‚ª‰½ŒÌ‚©(ŠY“–ID‚̃Mƒ‹ƒh‚ª‚ ‚é‚É‚àŠÖ‚í‚炸) +@NULL‚ð•Ô‚·Ž–‚É‹Nˆö‚µ‚Ü‚·B +@³’¼ƒXƒNƒŠƒvƒgŠÖŒW‚Í‚æ‚‚í‚©‚Á‚Ä‚¢‚È‚¢‚Ì‚ÅA‚±‚ê‚ÍŽ„‚Ì‹Zp‚Å‚ÍC³‚Ì‚µ‚悤‚ª‚ ‚è‚Ü‚¹‚ñB +@Žb’è“I‚ȑΈ‚Æ‚µ‚ÄNULL‚ð•Ô‚µ‚ÄMAPŽI‚ª—Ž‚¿‚é‚‚ç‚¢‚Ȃ當Žš—ñunullv‚ð•Ô‚·‚悤‚É‚µ‚Ü‚µ‚½B + + (map/) + skill.c + skill_frostjoke_scream() ’ljÁB + skill_additional_effect()Askill_timerskill() C³B + skill_castend_nodamage_id() C³B + pc.c + pc_isUseitem() C³B + script.c + buildin_getpartyname()Abuildin_getguildname() C³B + buildin_getguildmaster() C³B + (db/) + cast_db.txt C³B + (conf/gvg/) + ev_*.txtˆÈŠO‚Ìtxt‘S‚Ä‚ðC³B + +-------------------- +//0810 by ¹ + +EMVP‚̈—‚ð•ÏXB(Šm—¦‚Å10000‚ª‚ ‚Á‚Ä‚àA‘¼‚̃AƒCƒeƒ€‚ào‚é‚悤‚É‚µ‚Ü‚µ‚½) +EMVP‚Å‘•”õ‚ð“üŽè‚µ‚½ê‡AŠÓ’èÏ‚Ý‚Å“üŽè‚µ‚Ä‚¢‚½–â‘è‚ðC³B +EƒXƒLƒ‹‰r¥’†‚ɃCƒO—t‚âŠg‘勾‚ðŽg‚¤‚ƃvƒŒ[ƒ„[‚ÌŽg—p‰Â”\‚È +@‘SƒXƒLƒ‹‚ÌLV‚ª1‚ɌŒ肳‚ê‚Ä‚µ‚Ü‚¤–â‘è‚ðC³B +EƒI[ƒNƒA[ƒ`ƒƒ[“™Aƒ‚ƒ“ƒXƒ^[‚É‚æ‚é㩃XƒLƒ‹‚Ì—LŒøŠúŒÀ‚ªØ‚ꂽ‚Æ‚«‚ÉA +@Ý’u—pƒgƒ‰ƒbƒv‚ªo‚é–â‘è‚ðC³B +EƒƒOƒCƒ“ƒGƒ‰[(ƒpƒXƒ[ƒh“ü—̓~ƒX‚âBAN“™)‚̃Gƒ‰[ƒƒbƒZ[ƒW‚ª +@³‚µ‚ƒNƒ‰ƒCƒAƒ“ƒg‚É’Ê’m‚³‚ê‚È‚¢–â‘è‚ðC³B +E‚»‚Ì‘¼×‚©‚ÈC³B + (common/) + version.h C³B + (login/) + login.c + parse_login() C³B + parse_fromchar() C³B + (char/) + int_guild.c + mapif_parse_GuildLeave() C³B + (map/) + itemdb.c + itemdb_read_itemnametable() C³B + atcommand.c + atcommand() C³B + skill.c + skill_unit_timer_sub() C³B + script.c + buildin_itemskill() C³B + mob.c + mob_damage() C³B + +-------------------- +//0809 by Kalen + +E“ŒŒÎéƒ[ƒvƒ|ƒCƒ“ƒgC³ +EƒAƒ}ƒcŽõŽi‰®C³ +EƒoƒOƒXƒŒ129‚Ì–â‘èC³H + + +-------------------- +//0808 by ‚Ò‚´‚Ü‚ñ + +E‘•”õ§ŒÀ‚ªãŽè‚“®ì‚µ‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B +Eƒ‚ƒ“ƒnƒEƒMƒ‹ƒh‚ÍGvGŠJŽnŽž‚Éì‚ç‚ê‚é‚悤‚É•ÏXB +EGvGŠJŽnŽž‚ÉŠY“–ƒ}ƒbƒv‚É‚¢‚é‘SPC(è—̃Mƒ‹ƒhˆõˆÈŠO)‚ðƒZ[ƒuƒ|ƒCƒ“ƒg‚É–ß‚·‚悤‚ÉC³B +Eƒ‚ƒ“ƒnƒEƒMƒ‹ƒhƒAƒWƒg‚ŃGƒ“ƒy‚ð‰ó‚·‚ÆAƒ‚ƒ“ƒnƒE‚ªÁ‚¦‚é‚悤‚ÉC³B +@‚±‚ÌC³‚É”º‚Á‚Ämaprespawnguildid‚̈ø”‚Ìflag‚ÌŽd—l‚ð•ÏX‚µ‚Ü‚µ‚½ +@flag‚̓rƒbƒgƒtƒ‰ƒO‚É‚È‚èA +@@1ƒrƒbƒg–ÚFè—̃Mƒ‹ƒhˆõ‚ðƒZ[ƒuƒ|ƒCƒ“ƒg‚É–ß‚·‚© +@@2ƒrƒbƒg–ÚFè—̃Mƒ‹ƒhˆõˆÈŠO‚ðƒZ[ƒuƒ|ƒCƒ“ƒg‚É–ß‚·‚© +@@3ƒrƒbƒg–ÚFƒGƒ“ƒyEƒK[ƒfƒBƒAƒ“ˆÈŠO‚ÌMOB‚ðÁ‚·‚© +@‚¢‚¸‚ê‚àA0=NOA1=YES‚É‚È‚è‚Ü‚· + + (conf/gvg/) + ev_agit_aldeg.txt C³B + ev_agit_gefg.txt C³B + ev_agit_payg.txt C³B + ev_agit_prtg.txt C³B + TEST_prtg_cas01_AbraiJ.txt C³B + TEST_prtg_cas01_mob.txt C³B + (map/) + pc.c + pc_checkitem() C³B + script.c + buildin_maprespawnguildid_sub() C³B + buildin_maprespawnguildid() C³B + +-------------------- +//0807 by Ž€_ + +E0805‚ÅFD_SETSIZE‚ðC³‚·‚銂ðŠÔˆá‚Á‚½‚Ì‚ÅC³‚µ‚Ü‚µ‚½B56–¼Ž~‚܂肪Ž¡‚é‚ÆŒ¾‚¤•ÛØ‚Í‚ ‚è‚Ü‚¹‚ñ‚ª... +Eˆê“x‚É“]‘—‚·‚éƒpƒPƒbƒg‚Ì’·‚³‚ð32768bytes‚©‚ç65536bytes‚É•ÏXB + (common/) + mmo.h C³B + socket.h C³B + socket.c C³B + +-------------------- +//0806 by Kalen + +EagitƒtƒHƒ‹ƒ_¨gvgƒtƒHƒ‹ƒ_‚ÖˆÚs + ”ˆÓŒ©‚ ‚é‚ÆŽv‚¢‚Ü‚·‚ªAjRO‚Å‚ÍUéí‚ðgvg‚ƌĂԂ±‚Æ‚ªˆê”Ê“I‚È‚Ì‚Å‚±‚¿‚ç‚É“‡‚µ‚Ü‚·B + conf/gvg/ + ###agitƒtƒHƒ‹ƒ_‚ð휂µ‚Ä‚‚¾‚³‚¢###@(Please delete the "agit" folder.) + getmaster‘Ήž + +EƒAƒ}ƒc‚ÌŽõŽi‰®ƒoƒOC³‚Æ€–ڒljÁ(thx 114 + conf/npc/npc_town_amatsu.txt + +Emap_flagÄC³ + conf/map_flag.txt + [GVGMAP]Šm‚©‚Éí‚ɃV[ƒYƒ‚[ƒh‚È‚ç–â‘è‚È‚¢‚Å‚·‚ªA휂³‚ê‚Ü‚µ‚½‚Ì‚Å + í‚ɃV[ƒYƒ‚[ƒh‚Å‚Í‚ ‚è‚Ü‚¹‚ñB]‚Á‚ĉ𜎞(ŽžŠÔŠO)‚É‚ÍŽ}AƒeƒŒƒ|‚ªŽg‚¦‚Ü‚· + ŽžŠÔ‘O‚ÉŽ}ŽT‚«A‚Ü‚¾ŽÀ‘•‚µ‚Ä‚Ü‚¹‚ñ‚ª•ó” ’DŽæ‚à‰Â”\‚É‚È‚é‚Ì‚ÅŽ}AƒeƒŒƒ|‚Íí‚ÉŽg—p•s‰Â‚Å–â‘è‚È‚¢‚ÆŽv‚¢‚Ü‚·B + +Œã‘O‰ñ‘‚«–Y‚ê‚Ü‚µ‚½‚ªAmomotaroƒCƒxƒ“ƒg‚Å‚·‚ªA‚¿‚å‚Á‚Æ•sˆÀ’è‚ȉ”\«‚ª‚ ‚è‚Ü‚·B +Œ´ˆö‚ª‚í‚©‚ç‚È‚¢‚Ì‚Å‚·‚ªAƒ‹[ƒv‚µ‚Ä‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñBˆê‰žƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚ ‚è‚Ü‚· + +-------------------- +//0805 by Ž€_ + +E•¶Žš‰»‚¯C³B +EƒV[ƒYƒ‚[ƒh‚ł̃eƒŒƒ|[ƒg‹ÖŽ~‚âŒÃ–Ø‚ÌŽ}Žg—p‹ÖŽ~‚̓\[ƒXƒŒƒxƒ‹‚Å +ˆ—‚µ‚Ä‚¢‚é‚Ì‚Åmapflag.txt‚©‚çíœB(ˆö‚Ý‚Énopenalty‚àƒ\[ƒXƒŒƒxƒ‹‚Å +ˆ—‚µ‚Ä‚¢‚Ü‚·B) +Ebattle_athena.conf‚Ìagit_eliminate_time‚ðgvg_eliminate_time‚É•ÏXB +E@ƒRƒ}ƒ“ƒh@GMíœB +EFD_SETSIZE‚©cygwin‚Å64‚Éݒ肳‚ê‚Ä‚¢‚½‚Ì‚¹‚¢‚ÅÅ‘åÚ‘±l”‚ª56–¼‚ð +‰z‚¦‚é‚ƃ}ƒbƒvŽI‚ª–³ŒÀƒ‹[ƒv‚·‚é–â‘èC³B(‚½‚¾ƒeƒXƒg‚ª‚Å‚«‚È‚©‚Á‚½•¨‚È‚Ì‚Å–{“–‚É‘åä•v‚É‚È‚Á‚½‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·B‚ ‚‚Ü‚Å‚àŽ©•ª‚Ì—\‘ª‚É‚·‚¬‚È‚¢•¨‚Å‚·‚ª...) +E•¶Žš‰»‚¯‚Ì‚¹‚¢‚Å‚Ç‚±‚ð‚Ç‚¤C³‚µ‚½‚©Šo‚¦‚Ä‚È‚¢‚Ì‚ÅC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯B + (conf/) + atcommand_athena.conf + battle_athena.conf + mapflag.txt + (db/) + castle_db.txt + (doc/) + conf_ref.txt + (common/) + mmo.h + (login/) + login.c + (char/) + inter.c + int_guild.c + (map/) + atcommand.h + atcommand.c + battle.h + battle.c + chrif.c + guild.h + guild.c + intif.h + intif.c + map.h + map.c + mob.c + npc.c + npc.h + script.c + skill.c + pc.c + makefile + +-------------------- +//0804 by Žß‘¸ + +EƒAƒ‹ƒxƒ‹ƒ^‚Ì‚Ê‚¢‚®‚é‚݃Cƒxƒ“ƒg‚Å‚¤‚³‚¬‚Ì‚Ê‚¢‚®‚é‚Ý‚ð‚ ‚°‚é‚ƃT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³ + + (conf/npc/) + npc_event_doll.txt C³B + +-------------------- +//0803 by ‚Ò‚´‚Ü‚ñ + + GvG‚ŃGƒ“ƒyƒŠƒEƒ€•ö‰óŽžgvg_eliminate_time‚Ì’l‚ÉŠÖ‚í‚炸‘¦À‚É‘Þ‹Ž‚³‚¹‚ç‚ê‚Ä‚¢‚½ƒoƒOC³ + GvG‚̃ZƒŠƒt‚ðˆê•”C³ + interŽI‚Åcastle.txt‚ª‚È‚¢‚Æ‹N‚±‚éFX‚ȃGƒ‰[‚ðC³ + help.txt‚ðC³(@gvgstart¨@agitstart‰]X) + + (conf/) + gvg/TEST_prtg_cas01_AbraiJ.txt C³B + agit/ev_agit_prtgJ.txt C³B + help.txt C³B + (map/) + int_guild.c + inter_guild_init() C³B + +-------------------- +//0802 by Michael_Huang + + Added NPC Script - 'GetGuildMaster' Command. + (common/) + version.h + Mod_Version 0802 + (map/) + script.c + buildin_getguildmaster_sub() buildin_getguildmaster() + +-------------------- +//0801 by Kalen +EƒAƒ}ƒcC³ +@@ŽÀ‘•‘O‚̃f[ƒ^A”²‚¯‚Ä‚éƒf[ƒ^‚Ȃǂ𒲸‚µC³ + conf/npc/npc_town_guide.txt + conf/npc/npc_town_amatsu.txt + conf/npc/npc_event_momotaro.txt + conf/npc/npc_event_alchemist.txt + conf/mob/npc_monster35.txt + conf/warp/npc_warp_amatsu.txt +Emap_flagC³ + [GVGMAP]Ž}AƒeƒŒƒ|‚Íí‚ÉŽg—p•s‰Â +EGVGŠÖŒW + 0800‚̃Rƒ}ƒ“ƒh‚ɑΉž + +-------------------- +//0800 by Michael_Huang + + Added Agit NPC Script & Command. + Fix FreeBSD GCC compatibility. + Attachment Agit Demo NPCs. + + (char/) + int_guild.c + mapif_guild_castle_dataload() mapif_guild_castle_datasave() + int mapif_parse_GuildCastleDataLoad() int mapif_parse_GuildCastleDataSave() + inter_guild_parse_frommap() inter_guildcastle_tostr() inter_guildcastle_fromstr() + inter.c + inter_send_packet_length[] inter_recv_packet_length[] + (common/) + mmo.h + GLOBAL_REG_NUM, struct global_reg {} + version.h + Mod_Version 0799. + (conf/) + atcommand_athena.conf + agitstart: 1,agitend: 1 + battle_athena.conf + agit_eliminate_time: 7000 + map_athena.conf + conf/agit/ev_agit_*.txt + (doc/) + conf_ref.txt + battle_athena.cnf + agitdb_ref.txt + (login/) + login.c + parse_login() + (map/) + atcommand.h + agitster, agitend + + atcommand.c + @agitstart, @agitend + battle.h + battle_config.agit_eliminate_time + battle.c + battle_config_read() + chrif.c + chrif_changedsex() chrif_connectack() + guild.h + guild_agit_start() guild_agit_end() guild_agit_break() + guild.c + guild_read_castledb() do_init_guild() + guild_agit_start() guild_agit_end() guild_agit_eliminate_timer() guild_agit_break() + intif.h + intif_guild_castle_dataload() intif_guild_castle_datasave() + intif.c + packet_len_table[] intif_guild_castle_dataload() intif_guild_castle_datasave() + intif_parse_GuildCastleDataLoad() intif_parse_GuildCastleDataSave() intif_parse() + map.h + agit_flag + map.c + agit_flag + npc.h + npc_event_doall() npc_event_do() + npc.c + npc_event_do_sub() npc_event_do() + script.c + buildin_maprespawnguildid() buildin_agitstart() buildin_agitend() + buildin_getcastlename() buildin_getcastledata() buildin_setcastledata() + skill.c + skill_unit_onplace() + skill_gangster_count() + +-------------------- +//0799 by ‚Ò‚´‚Ü‚ñ + +EGvGŽÀ‘•‚ׂ̈Éinter-mapŠÔ‚Ì’ÊMŽd—l•ÏX +E0798‚̃Rƒ“ƒpƒCƒ‹ƒGƒ‰[C³(byƒoƒO•ñƒXƒŒ82Ž) + (login/) + login.c + parse_login() C³B + (map/) + intif.c + packet_len_table[] C³B + intif_parse_GuildCastleInfo() C³B + intif_parse_GuildCastleChange()‚ðintif_parse_GuildCastleChangeErr()‚ɉü–¼EC³B + intif_parse() C³B + guild.c + guild_read_castledb() C³B + + (char/) + inter.c + inter_send_packet_length[] C³B + int_guild.c + inter_guildcastle_tostr() C³B + inter_guildcastle_fromstr() C³B + mapif_parse_GuildChangeCastle() C³B + mapif_parse_GuildCastleInfo() C³B + mapif_guild_castle_info() C³B + mapif_guild_change_castle()‚ðmapif_guild_change_castle_err()‚ɉü–¼EC³B + (common/) + mmo.h C³B + version.h C³B + +-------------------- +//0798 by ŒÓ’±—– + +Elogin-server‚̃ƒOƒCƒ“Ž¸”sƒpƒPƒbƒg‚Ì’·‚³‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³ +Elogin-server‚ɃAƒNƒZƒXƒRƒ“ƒgƒ[ƒ‹‹@”\’ljÁ + Elogin_athena.cnf‚Éorder,allow,deny‚ð‹Lq‚·‚邱‚Æ‚ÅA + IP’PˆÊ(‘O•ûˆê’v)‚ŃAƒNƒZƒX‚ð‹ÖŽ~‚·‚é‹@”\B + EŽw’è•û–@‚Í doc/conf_ref.txt ‚ðŽQÆ + + (doc/) + conf_ref.txt + login_athena.cnf‚Ì•”•ªC³ + (login/) + login.c + ƒOƒ[ƒoƒ‹•Ï” access_* ’ljÁ + parse_login()C³,check_ip()’ljÁ + +EƒAƒJƒEƒ“ƒg쬗pCGIƒXƒNƒŠƒvƒg’ljÁ + EŽ©ŒÈÓ”C•Úׂȉðà–³‚µAŽ¿–₳‚ê‚Ä‚àƒXƒ‹[‚·‚é‰Â”\«—L‚è + EƒGƒfƒBƒ^‚ÅŠJ‚¢‚½‚ç‚µà–¾—L‚è + ECGIÝ’u‚ÌŠî–{‚³‚¦‚í‚©‚ê‚Ζâ‘è‚È‚¢‚Í‚¸ + EƒƒbƒZ[ƒW‚͉pŒêA“ú–{Œê—¼‘Ήž + iAccept-Language‚ªja‚È‚ç“ú–{Œê‚É•ÏŠ·‚µ‚Ü‚·j + EŠÇ—ŽÒƒpƒXƒ[ƒh‚È‚µ‚Å“®‚‚̂ŃZƒLƒ…ƒŠƒeƒB‚É‚Í’ˆÓ(.htaccess‚È‚Ç„§) + + (tool/cgi/) + addaccount.cgi + ƒAƒJƒEƒ“ƒg쬗pCGIB + +E‚»‚Ì‘¼ + (tool/) + backup + castle.txt‚àƒoƒbƒNƒAƒbƒv‚·‚é‚悤‚É + +-------------------- +//0797 by Ž€_ + +E‚µC³B +Ebattle_athena.conf‚Ì€–Ú•ÏXB(lootitem_time íœAitem_first_get_timeA +item_second_get_timeAitem_third_get_timeAmvp_item_first_get_timeA +mvp_item_second_get_timeAmvp_item_third_get_time ’ljÁB) +EƒAƒCƒeƒ€ƒ‹[ƒgŒ ŒÀ‚𳂵‚ŽÀ‘•BʼnUŒ‚‚Å‚Í‚È‚—^‚¦‚½ƒ_ƒ[ƒW‚Ì +—Ê‚É‚æ‚Á‚ÄŽû“¾Œ ŒÀ‚ð—^‚¦‚é‚悤‚É•ÏXB(ʼnŽû“¾Œ ŒÀ‚̂݃eƒXƒg) +ƒp[ƒeƒB‚Ìꇃp[ƒeƒB‚ÌÝ’è‚ɇ‚킹‚é•K—v‚ª‚ ‚è‚Ü‚·‚ª‚Ü‚¾ƒpƒPƒbƒg‚ª +•s–¾‚ÈŠ‚ª‚ ‚éˆ×“¯‚¶ƒp[ƒeƒB‚È‚çŽû“¾‚Å‚«‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B +Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚̃oƒOC³B(‘½•ªC³‚³‚ꂽ‚Í‚¸...) +E‘•”õƒXƒNƒŠƒvƒgbonus‚ÉbSplashRange‚ÆbSplashAddRange’ljÁB +bSplashRange‚ÆbSplashAddRange‚Í•Ší‚Ń_ƒ[ƒW‚ð—^‚¦‚½Žž‚Ì‚Ý”“®A’Êí‚Ì•ŠíUŒ‚ˆµ‚¢‚È‚Ì‚Å”ð‚¯‚ç‚ê‚邪(Flee2‚É‚æ‚銮‘S‰ñ”ð‚Í•s‰Â”\)ƒNƒŠ‚Ío‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ä•Ší‚É‚æ‚éó‘ÔˆÙí‚Í”¶‚µ‚Ü‚¹‚ñB–{ŽIŽd—l‚È‚ñ‚Ä’m‚è‚Ü‚¹‚ñB +EƒXƒLƒ‹‚Ìd‚Ë’u‚«ˆ—‚ð–{ŽI‚ɇ‚킹‚ÄC³B +Emapflag‚Ìgvg‚Í‚¢‚‚à‚È‚Á‚Ä‚¢‚é‚킯‚¶‚á‚È‚¢‚Ì‚ÅíœB +E‚»‚Ì‘¼×‚©‚¢C³B + athena-start C³B + (common/) + mmo.h C³B + (conf/) + mapflag.txt C³B + battle_athena.conf C³B + (db/) + const.txt C³B + item_db.txt C³B + (doc/) + conf_ref.txt C³B + item_bonus.txt C³B + (map/) + mob.c + mob_spawn()Amob_damage()Amob_class_change()Amob_warp() C³B + mob_delay_item_drop()Amob_delay_item_drop2() C³B + mobskill_castend_pos() C³B + pc.c + pc_takeitem()Apc_dropitem()Apc_equipitem() C³B + pc_calcstatus()Apc_bonus() C³B + skill.c + skill_attack()Askill_additional_effect()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_produce_mix() C³B + skill_arrow_create()Askill_unit_timer_sub()Askill_castend_pos() C³B + map.h C³B + map.c + map_addflooritem() C³B + script.c + buildin_getitem() C³B + pet.c + pet_return_egg()Apet_get_egg()Apet_unequipitem() C³B + battle.h C³B + battle.c + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack() C³B + battle_weapon_attack()Abattle_config_read() C³B + +-------------------- +//0796 by huge + +Eׂ©‚¢C³ + (conf/npc/) + npc_event_valentine.txt C³B + + (map/) + pc.c + pc_takeitem() C³B + skill.c + skill_unit_timer_sub() C³B + +-------------------- +//0795 by Kalen + +EŽG’k341‚Ìnpc_warp_niflheim.txt’ljÁ + conf/warp/npc_warp_niflheim.txt + +Emapflag.txtC³(GVGMAPÝ’è) + @nosave‚Í‚µ‚Ä‚¢‚Ü‚¹‚ñ + +Emap_athena.conf‚ÌC³ + @umbala niflheim“™‚̒ljÁ + @ƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚ ‚è‚Ü‚·B + +EƒoƒŒƒ“ƒ^ƒCƒ“ƒXƒNƒŠƒvƒg’ljÁ + conf/npc/npc_event_valentine.txt + @ƒ`ƒ‡ƒR’B‚ÌDrop‚͘M‚Á‚Ä‚¢‚Ü‚¹‚ñB‚¨D‚Ý‚Å‚Ç‚¤‚¼ + @®AŽèì‚èƒ`ƒ‡ƒR‚ðH‚ׂ½‚Æ‚«‚̃GƒtƒFƒNƒg‚Í + @ÅVƒNƒ‰ƒCƒAƒ“ƒg‚É‚·‚ê‚ÎŒ©‚¦‚Ü‚·B + +EGVGScript’ljÁ + conf/gvg/ˆÈ‰º + @WeissŽž‘ã‚É쬂µ‚½‚à‚Ì‚ðAthena—p‚ɃRƒ“ƒo[ƒg&‘䎌C³ + @prtg_cas01ˆÈŠO‚ÍŠø‚Ì‚Ý‚Å‚·B + @GVGDATA‚ÍŽIÄ‹N“®‚ÅÁ–Å‚µ‚Ü‚·B + @ƒGƒ‰[‚ªo‚é‚悤‚È‚çƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚‚¾‚³‚¢B + @MobDataAŽ·Ž–Script‚àprtg_cas01‚Ì‚Ý‚Å‚·B(TestScript) + @‚ ‚‚܂ŃeƒXƒgƒXƒNƒŠƒvƒg‚Å‚·BGVGŽÀ‘•‚ÌŽQl‚É‚Ç‚¤‚¼ + +-------------------- +//0794 by DRG + +Eskillused‚ÅŽw’肵‚½IW,QM‚È‚Ç‚É‚Ì‚Á‚Ä‚éŠÔMOBƒXƒLƒ‹‚ðŽg—p‚·‚é‚悤‚É•ÏX +EƒAƒbƒvƒXƒŒ‚R‚Ì7‚Ìathena-start‚ðˆê‰žŠÜ‚ß‚Æ‚«‚Ü‚µ‚½ + + athena-start + (map/) + skill.c + skill_unit_onplace() C³B + +-------------------- +//0793 by huge + +EƒT[ƒo[snapshot +EƒT[ƒo[‚ªƒNƒ‰ƒbƒVƒ…‚·‚éƒoƒO‚ðC³ +E”“®‚¹‚¸‚Éã©‚ªÁ‚¦‚½‚çAÝ’u—pƒgƒ‰ƒbƒv‚ª•Ô‚Á‚Ä‚‚é‚悤‚ÉC³B +Eƒ‹[ƒgŒ ŒÀ‚ÅA“¯‚¶ƒp[ƒeƒB[‚̃Lƒƒƒ‰‚Í‚·‚®E‚¦‚é‚悤‚ÉC³B +EƒoƒO•ñƒXƒŒ‚R >>54 ‚̃oƒOC³B +EƒƒOƒCƒ“Žž‚ɃT[ƒo[‘¤‚ÉID‚ð•\Ž¦‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B + (login/) + login.c + parse_login() C³B + (conf/npc/) + npc_event_doll.txt C³B + (map/) + skill.c + skill_unit_timer_sub() C³B + mob.c + mob_spawn_dataset() C³B + mob_damage() C³B + pc.c + pc_additem() C³B + +-------------------- +//0791 by ¹ + +Eƒ}ƒbƒvƒT[ƒo‚ªƒNƒ‰ƒbƒVƒ…‚·‚éƒoƒOC³B +EƒCƒO—t‚ðŽg‚Á‚Ä‚àƒWƒFƒ€‚ª•K—v‚É‚È‚é–â‘è‚ðC³B +EPvP‹§‘—ŠÒŽÀ‘•B +EPvP‚ŃŠƒUƒŒƒNƒVƒ‡ƒ“‚ªo—ˆ‚È‚©‚Á‚½–â‘è‚ðC³B +E‚»‚Ì‘¼×‚©‚ÈC³B + (map/) + guild.c + mob.c + pc.c + skill.c + +-------------------- +//0790 by Ž€_ + +EƒoƒOC³B + (conf/) + battle_athena.conf ŒëŽšC³B + (doc/) + conf_ref.txt ŒëŽšC³B + (common/) + mmo.h C³B + (map/) + itemdb.h C³B + map.h C³B + skill.c + skill_check_condition()Askill_use_pos()Askill_unit_onplace() C³B + +-------------------- +//0789 by huge + +EƒhƒƒbƒvƒAƒCƒeƒ€‚Ƀ‹[ƒgŒ ŒÀ‚ðŽÀ‘•B +Eʼn‚ÉUŒ‚‚µ‚½lˆÈŠO‚ªƒhƒƒbƒvƒAƒCƒeƒ€‚ðE‚¦‚é‚Ü‚Å‚ÌŽžŠÔ‚ðÝ’è‚Å‚«‚é‚悤‚ÉB + (/conf) + battle_athena.conf €–ڒljÁB + + (/doc) + conf_doc.txt à–¾’ljÁB + + (/map) + battle.h + Battle_Config{} C³B + battle.c + battle_config_read() C³B + itemdb.h + item_data {} C³B + map.h + flooritem_data {} C³B + mob_data {} C³B + map.c + map_addflooritem() C³B + mob.c + delay_item_drop{} C³B + mob_spawn() C³B + mob_damage() C³B + mob_delay_item_drop() C³B + mob_warp() C³B + pc.c + pc_takeitem() C³B + +-------------------- +//0788 by ‚ ‚ä‚Ý + +EcardƒXƒLƒ‹‚̈—H‚ðC³B +E@allskillƒRƒ}ƒ“ƒh‚ÌÄC³B + + (map/) + pc.c + pc_skill() C³B + pc_allskillup() C³B + +-------------------- +//0787 by ‚Û‚Û‚Û + +Eƒyƒbƒg‚É‚àmob_avail.txt‚ÌÝ’è‚ð“K—p‚·‚é‚悤‚É‚µ‚½B +EMOBƒXƒLƒ‹‚Ìskillused‚Åval1‚É0‚ð“ü‚ê‚é‚Æ‚ ‚ç‚ä‚éƒXƒLƒ‹‚ɑ΂µ‚Ä”“®‚·‚é‚悤‚É‚µ‚½B +Eskillused‚Å”“®‚µ‚½ƒXƒLƒ‹‚Ì‘ÎÛ‚ðA”“®‚³‚¹‚½PC‚É‚·‚é‚©‚Ç‚¤‚©Ý’è‚Å‚«‚é‚悤‚É‚µ‚½(‘ÎIWƒnƒ‚È‚ÇH)B + (/map) + clif.c + clif_pet0078()Aclif_pet007b()C³B + mob.c + mobskill_use()C³B + skill.c + skill_attack() Askill_castend_damage_id()C³B + battle.h + battle.c + battle_config_read()C³B + +-------------------- +//0786 by huge + +EBDSC³ + ‘O‚©‚ç‚«”ò‚΂µ‚Äs‚‚Æ—Ç‚‚È‚¢‚©‚à‚µ‚ê‚È‚¢‚Ì‚ÅAŒã‚ë‚©‚爗 + —LŒø”͈͂ÌC³ + + (/map) + + skill.h + skill.c + skill_castend_damage_id() C³B + skill_castend_nodamage_id() C³B + skill_brandishspear_first() C³B + skill_brandishspear_dir() C³B + +-------------------- +//0785 by Ž€_ + +E–{ŽI‚ɇ‚킹‚ÄC³B(ŠØ‘ˆÆ‚̃pƒbƒ`notice‚ðŽQl‚µ‚ÄC³‚µ‚Ü‚µ‚½B) +EBB‚ÆBS‚̃LƒƒƒXƒeƒBƒ“ƒOŽžŠÔ‚ð0.7•b‚É‚µ‚ăfƒBƒŒƒC‚Í0‚É•ÏXB +Eghost‚Ì•Ï‚í‚è‚Ƀ}ƒbƒvˆÚ“®Œã‚Ì–³“GŽžŠÔ‚ðÝ’èB‚±‚ÌŽžŠÔ‚ÌŠÔ‚Í‚Ç‚ñ‚ÈUŒ‚‚àŽó‚¯‚È‚¢‚ªˆÚ“®‚âUŒ‚AƒXƒLƒ‹Žg—pAƒAƒCƒeƒ€Žg—p‚Å‚±‚ÌŽžŠÔ‚Í‚È‚‚È‚è‚Ü‚·BƒV[ƒYƒ‚[ƒh‚Å‚Í‚±‚Ì–³“GŽžŠÔ‚ð2”{‚Æ‚µ‚Ä“K—pB +EƒV[ƒYƒ‚[ƒh‚ÅŽ€‚ñ‚Å‚àŒoŒ±‚ªŒ¸‚ç‚È‚¢‚悤‚ÉC³B(mapflag‚Ìnopenalty‚ðÝ’è‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB) +EƒXƒLƒbƒh‚ÅŠŠ‚ׂ鋗—£‘‰ÁB +EŠù‚É’¾–Ù‚É‚©‚©‚Á‚Ä‚é‘ÎۂɃŒƒbƒNƒXƒfƒBƒr[ƒi‚ðŽg‚¤‚Æ’¾–Ù‚ª‰ðœ‚³‚ê‚é‚悤‚É•ÏXB +EŽô‚¢‚É‚©‚©‚é‚ƈړ®‘¬“x‚àŒ¸‚é‚悤‚ÉC³B +Ebattle_athena.conf‚É€–Ú•ÏXB +EƒXƒLƒ‹‚Ìd‚Ë’u‚«‚ð”»’fˆ—‚ð‚µ•ÏXB +EHP‚ÌŽ©‘R‰ñ•œŽžŠÔ‚ª4•b‚Å‚Í‚È‚6•b‚¾‚Æ‚í‚©‚Á‚½‚̂ŃfƒtƒHƒ‹ƒgC³‚Æbattle_athena.confC³B +E‚»‚Ì‘¼×‚©‚¢C³‚âƒoƒOC³B +E–w‚ǃeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB + (conf/) + atcommand_athena.conf C³B + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (db/) + cast_db.txt C³B + (map/) + atcommand.c C³B + clif.c + clif_mob0078()Aclif_mob007b()Aclif_skill_estimation() C³B + clif_mob_class_change()Aclif_parse_WalkToXY() C³B + clif_parse_ActionRequest()Aclif_parse_LoadEndAck() C³B + clif_parse_UseItem()Aclif_parse_UseSkillToId() C³B + clif_parse_UseSkillToPos()Aclif_parse_UseSkillMap() C³B + mob.h C³B + mob.c + mob_get_viewclass()Amob_attack()Amob_target() C³B + mob_ai_sub_hard_activesearch()Amob_ai_sub_hard() C³B + mobskill_castend_id()Amobskill_castend_pos() C³B + skill.h C³B + skill.c + skill_can_produce_mix()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_castend_id() C³B + skill_castend_pos()Askill_use_id()Askill_readdb() C³B + skill_check_condition()Askill_unit_onplace()Askill_unitsetting() C³B + skill_additional_effect()Askill_check_unit_range() C³B + skill_check_unit_range_sub()Askill_status_change_end() C³B + skill_status_change_start() C³B + pc.h + pc.c + pc_ghost_timer()Apc_setghosttimer()Apc_delghosttimer() íœB + pc_gvg_invincible_timer() -> pc_invincible_timer()‚É•ÏXB + pc_setgvginvincibletimer() -> pc_setinvincibletimer()‚É•ÏXB + pc_delgvginvincibletimer() -> pc_delinvincibletimer()‚É•ÏXB + pc_authok()Apc_attack_timer()Apc_calcstatus() C³B + pc_setrestartvalue()Apc_damage()Apc_allskillup() C³B + do_init_pc() C³B + battle.h C³B + battle.c + battle_config_read()Abattle_weapon_attack()Abattle_check_target() C³B + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_get_speed() C³B + map.h C³B + map.c + map_quit() C³B + +-------------------- +//0784 by ‚ ‚ä‚Ý + +EƒJ[ƒhƒXƒLƒ‹‚ðŠo‚¦‚Ä‚¢‚éó‘Ô‚Å@allskillƒRƒ}ƒ“ƒh‚ðŽg—p‚·‚é‚Æmap-server‚ª–\‘–‚·‚é–â‘è‚ðC³B + + (map/) + pc.c + pc_allskillup() C³B + +-------------------- +//0783 by huge + +Eƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒA‚ÌC³ + ”͈͎w’èAŽÎ‚ß‚ÌÛ‚ÌŠiŽq”͈ÍAUŒ‚—ÍŒvŽZ + ‘½•ª‡‚Á‚Ä‚é‚ÆŽv‚¤‚ñ‚Å‚·‚¯‚ÇAƒCƒ}ƒCƒ`Ž©M‚ªŽ‚Ä‚È‚¢EEE + (ŽQl)‚Ý‚·‚Ƃꑃ -ƒXƒLƒ‹ŠÖ˜A“¤î•ñ +EƒXƒyƒ‹ƒuƒŒƒCƒJ[‚ð‚¿‚å‚Á‚ÆC³ +Eƒvƒƒ{ƒbƒN‚ðMVPmob‚ÉŒø‚©‚È‚¢‚悤C³ +EƒoƒO•ñƒXƒŒ‚R >>8 ‚Å•ñ‚³‚ꂽ‚à‚Ì‚ÌŽæ‚èž‚Ý + + (/db) + create_arrow.txt C³B + skill_db.txt C³B + + (/map) + battle.c + battle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack() C³B + + skill.h + skill.c + skill_brandishspear_first() ’ljÁB + skill_brandishspear_dir() ’ljÁB + skill_castend_nodamage_id() C³B + skill_castend_damage_id() C³B + skill_unit_group() C³B + +-------------------- +//0782 by ‚Ò‚´‚Ü‚ñ +E@allskillƒRƒ}ƒ“ƒh‚ÌŽg—pðŒ‚ªŽQÆ‚³‚ê‚Ä‚¢‚È‚©‚Á‚½ƒoƒOC³ + (/map) + atcommand.c + atcommand() C³B + +-------------------- +//0781 by Chunglyeng +Eƒoƒh, ƒ_ƒ“ƒT[‰¹Šy‹ïŒ» + (/map) + skill.c C³B + +-------------------- +//0780 by reia +EƒyƒRƒyƒR‚Ì—‘‚È‚Ç‚ª›z‰»‚·‚é‚ƃmƒr‚É‚È‚Á‚Ä‚µ‚Ü‚¤–â‘èC³B +EGMƒRƒ}ƒ“ƒhu@kickallv‚ª‰½Žž‚ÌŠÔ‚É‚©–³Œø‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ÅC³B + + (/conf) + atcommand_athena.conf C³B + (db/) + mob_skill_db.txt C³B + (map/) + atcommand.c + atcommand_config_read() C³B + +-------------------- +//0779 by ‚ ‚ä‚Ý + +E‘SƒXƒLƒ‹Žæ“¾ƒRƒ}ƒ“ƒh‚̒ljÁB + EGM‚Å‘SƒXƒLƒ‹‚ðŠo‚¦‚ç‚ê‚é‚悤‚É‚µ‚Ä‚¢‚éꇂâAƒXƒLƒ‹‚Ì”‚ª‘½‚¢E‹Æ‚͈ꕔ‚̃XƒLƒ‹•\Ž¦‚ª‚¨‚©‚µ‚‚È‚è‚Ü‚·B‚»‚Ìꇂ̓ŠƒƒO‚µ‚ĉº‚³‚¢B + @allskill : Œ»Ý‚ÌE‹Æ‚Ŏ擾‰Â”\‚È‘SƒXƒLƒ‹‚ðŽæ“¾‚·‚éB(ƒNƒGƒXƒgƒXƒLƒ‹ŠÜ‚Þ) + + (conf/) + battle_athena.conf C³B + help.txt C³B + (map/) + atcommand.h C³B + atcommand.c + atcommand() C³B + pc.h C³B + pc.c + pc_allskillup() ’ljÁB + (doc/) + conf_ref.txt C³B + help.txt C³B + +-------------------- +//0778 by huge + +EƒXƒyƒ‹ƒuƒŒƒCƒJ[‚ÌC³ + EƒLƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚Ì–³‚¢ƒXƒLƒ‹‚É‚ÍŒø‚©‚È‚¢‚悤‚ÉC³B + EŽg—p‚³‚ꂽ‘ŠŽè‚ÌÁ”ïSP‚ÌC³B + + (map/) + skill.c + skill_castend_nodamage_id() C³B + +-------------------- +//0777 by ‚Ò‚´‚Ü‚ñ + +EƒMƒ‹ƒhUé퉼ŽÀ‘• +@EŠî–{“I‚È•”•ª‚¾‚¯‚µ‚©ŽÀ‘•‚µ‚Ä‚È‚¢ãA‚¢‚‚‚©‚Ì“_‚Å–{ŽI‚Æ‘Šˆá‚ª‚ ‚è‚Ü‚·B +@EUéíŠJŽn‚ÆI—¹‚Í@ƒRƒ}ƒ“ƒh‚Ås‚¢‚Ü‚· + @gvgstart : UéíŠJŽn + @gvgend : UéíI—¹ +@Ebattle_athena.conf‚É€–ڒljÁB + (char/) + int_guild.c + inter_guild_init()Ainter_guild_readdb()Ainter_guild_save() C³B + inter_castle_save_sub()Amapif_guild_castle_info() ’ljÁB + mapif_guild_change_castle()Amapif_parse_GuildCastleInfo() ’ljÁB + mapif_parse_GuildChangeCastle() ’ljÁB + inter.c + inter_config_read() C³B + inter_send_packet_length[]Ainter_recv_packet_length[] C³B + int_guild.h C³B + (map/) + atcommand.c + atcommand()Aatcommand_config_read() C³B + battle.c + battle_config_read() C³B + guild.c + guild_castle_search()Aguild_read_castledb()’ljÁB + do_init_guild() C³B + guild_gvg_init()Aguild_gvg_final()Aguild_gvg_final_sub() ’ljÁB + guild_gvg_eliminate()Aguild_gvg_eliminate_sub() ’ljÁB + guild_gvg_eliminate_timer()Aguild_gvg_empelium_pos() ’ljÁB + guild_gvg_break_empelium() ’ljÁB + intif.c + intif_parse()Apacket_len_table[] C³B + intif_parse_GuildCastleInfo()Aintif_parse_GuildCastleChange() ’ljÁB + intif_guild_castle_info()Aintif_guild_castle_change() ’ljÁB + mob.c + mob_damage() C³B + atcommand.h C³B + battle.h C³B + guild.h C³B + intif.h C³B + mob.h C³B + (common/) + mmo.h C³B + (conf/) + battle_athena.conf C³B + inter_athena.conf C³B + msg_athena.conf C³B + atcommand_athena.conf C³B + (db/) + castle_db.txt ’ljÁB +-------------------- +//0776 by Ž€_ + +ENPCƒXƒLƒ‹›z‰»ŽÀ‘•B(mob_skill_db.txt‚Ìval1‚ðŽg‚¢‚Ü‚·B) +Emob_skill_db.txt‚ÌŠm—¦‚ð番—¦‚©‚ç–œ•ª—¦‚É•ÏXB(‚½‚¾mob_skill_db.txt‚ÌC³‚Í‚µ‚Ä‚Ü‚¹‚ñB) +Eƒ‚ƒ“ƒXƒ^[‚ªƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚·‚é–â‘èC³B(C³‚³‚ꂽ‚©‚Ç‚¤‚©‚ÌŽ©M‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...) +E‚»‚Ì‘¼×‚©‚¢C³B + (db/) + mob_skill_db.txt C³B + skill_db.txt C³B + (map/) + map.h C³B + mob.h C³B + mob.c + mob_spawn_dataset()Amob_spawn() C³B + mob_changestate()Amobskill_use() C³B + mob_class_change() ’ljÁB + npc.c + npc_parse_mob() C³B + battle.c + battle_check_target() C³B + clif.h C³B + clif.c + clif_mob_class_change() ’ljÁB + skill.c + skill_castend_nodamage_id() C³B + +-------------------- +//0775 by Ž€_ + +EƒV[ƒYƒ‚[ƒh‚̈—C³B +EƒV[ƒYƒ‚[ƒh‚Ì–³“GŽžŠÔ‚ÌŠÔ‚Í‚Ç‚ñ‚ÈUŒ‚‚àŽó‚¯‚È‚¢‚悤‚ÉC³B +EƒV[ƒYƒ‚[ƒh‚Ì–³“GŽžŠÔ‚ªŽžŠÔØ‚ê‚É‚È‚é‘O‚ɂ͉𜂳‚ê‚È‚¢‚悤‚ÉC³B +Ebattle_athena.conf‚É€–ڒljÁB +E@hide‚â/hide‚É‚æ‚éGMƒnƒCƒfƒBƒ“ƒO’†‚ÍŽ©•ª‚ÉŽ©“®Žg—p‚³‚ê‚éƒXƒLƒ‹ˆÈŠO‚̃XƒLƒ‹Žg—p‚âUŒ‚‚ðŽó‚¯‚È‚¢‚悤‚ÉC³B +EƒnƒCƒfƒBƒ“ƒO’†’n‘®«ƒXƒLƒ‹ˆÈŠO‚ÌUŒ‚‚ðŽó‚¯‚È‚¢‚悤‚ÉC³B(ƒgƒ‰ƒbƒv‚âƒNƒ@ƒOƒ}ƒCƒA“™‚̃XƒLƒ‹‚͉e‹¿‚ðŽó‚¯‚é‚©‚Ç‚¤‚©•s–¾‚È‚Ì‚Å¡‚Ü‚Å‚Æ“¯‚¶‚悤‚ɉe‹¿‚ðŽó‚¯‚é‚悤‚Ɉ—B) +Eƒgƒ“ƒlƒ‹ƒhƒ‰ƒCƒu‚̈ړ®‘¬“x‚ð–{ŽI‚ɇ‚킹‚Ü‚µ‚½B +E‚»‚Ì‘¼ƒoƒOC³‚âׂ©‚¢C³B(–w‚Ç–¢ƒeƒXƒg) + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + battle.h C³B + battle.c + battle_check_target()Abattle_calc_damage() C³B + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B + battle_calc_misc_attack() C³B + battle_config_read()Abattle_weapon_attack() C³B + pc.h C³B + pc.c + do_init_pc()Apc_authok() C³B + pc_attack()Apc_attack_timer() C³B + pc_setgvg_ghosttimer()Apc_delgvg_ghosttimer()‚ð + pc_setgvginvincibletimer()Apc_delgvginvincibletimer()‚ÉC³B + pc_gvg_invincible_timer() ’ljÁB + pc_attack_timer()Apc_steal_item()Apc_calcstatus() C³B + clif.c + clif_parse_ActionRequest()Aclif_parse_UseItem() C³B + clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B + clif_parse_UseSkillMap()Aclif_parse_WalkToXY() C³B + map.h C³B + map.c + map_quit() C³B + mob.c + mob_attack()Amob_target()Amob_ai_sub_hard_activesearch() C³B + mob_ai_sub_hard_mastersearch()Amob_ai_sub_hard() C³B + mob_damage()Amobskill_castend_id()Amobskill_castend_pos() C³B + skill.c + skill_castend_damage_id()Askill_attack() C³B + skill_castend_id()Askill_castend_pos()Askill_castend_map() C³B + +-------------------- +//0774 by Ž‚Žqo^.^o +EMonk job bouns C³ +EƒhƒPƒr C³ +(db/) + job_db2.txt C³ + pet_db.txt C³ + +-------------------- +//0773 by ¹ + +Eׂ©‚¢ƒoƒOC³ + (map/) + skill.c C³B + battle.c C³B + +-------------------- +//0772 by ‚Ò‚´‚Ü‚ñ + +EƒV[ƒYƒ‚[ƒh‰º‚ňȉº‚Ì“_‚ðC³ +@E˜A‘±‚µ‚ÄUŒ‚‚Å‚«‚È‚‚È‚Á‚Ä‚¢‚½ƒoƒOC³ +@Eƒ_ƒ[ƒWŒyŒ¸—¦‚ª³‚µ‚Ý’è‚Å‚«‚È‚©‚Á‚½ƒoƒOC³ +@E–³“GŽžŠÔŽÀ‘•Bbattle_athena.conf‚Ìgvg_ghost_time‚ÅÝ’è‚Å‚«‚Ü‚· + +EƒnƒCƒfƒBƒ“ƒO‚Å–‚–@UŒ‚“™‚ð‰ñ”ð‚Å‚«‚È‚©‚Á‚½ƒoƒOC³ + + (map/) + skill.c + skill_attack()Askill_unit_onplace()Askill_check_condition() C³B + clif.c + clif_parse_ActionRequest()Aclif_parse_UseItem() C³B + clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B + clif_parse_UseSkillMap()Aclif_parse_WalkToXY() C³B + pc.c + do_init_pc()Apc_authok() C³B + pc_attack()Apc_attack_timer() C³B + pc_setgvg_ghosttimer()Apc_delgvg_ghosttimer() ’ljÁB + pc_gvg_ghost_timer() ’ljÁB + map.c + map_quit() C³ + battle.c + battle_config_read()Abattle_weapon_attack() C³B + battle.h C³B + pc.h C³B + +-------------------- +//0771 by huge + +EƒXƒyƒ‹ƒuƒŒƒCƒJ[ŽÀ‘• + (map/) + skill.c + skill_castend_nodamage_id() C³B + (db/) + skill_db.txt C³B + +-------------------- +//0770 by ¹ + +E” Œn‚̈—•ÏX +E‚»‚Ì‘¼ƒoƒOC³ + (map/) + battle.c C³B + itemdb.c C³B + mob.c C³B + script.c C³B + +-------------------- +//0769 by Ž€_ + +EƒV[ƒYƒ‚[ƒhC³B +E–³“GŽžŠÔ‚Ì•û‚Íghost_timerˆÈŠO‚Ì•û–@‚ÅŽÀ‘•‚·‚é‚‚à‚è‚È‚Ì‚Å¡‚Í휂µ‚Ä‚¢‚Ü‚·B +EƒXƒNƒŠƒvƒgviewpoint‚ª³‚µ‚“®ì‚µ‚È‚¢–â‘èC³B +Eproduce_db.txt‚ðC³B(“û”«‚Ískill_require_db.txt‚ň—‚µ‚Ä‚¢‚Ü‚·B‚»‚µ‚ăAƒCƒeƒ€‚Ì”‚ð0‚É‚·‚ê‚ÎÁ–Õ‚Í‚³‚ê‚È‚¢‚¯‚Çì‚鎞•K—v‚ȃAƒCƒeƒ€‚É‚È‚è‚Ü‚·B) +E‚»‚Ì‘¼×‚©‚¢C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (db/) + produce_db.txt C³B + (map/) + battle.h C³B + battle.c + battle_calc_damage()Abattle_calc_weapon_attack() C³B + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B + battle_calc_misc_attack()Abattle_check_target()Abattle_config_read() C³B + skill.c + skill_unit_onplace()Askill_castend_damage_id()Askill_castend_id() C³B + skill_use_id()Askill_use_pos()Askill_check_condition() C³B + skill_can_produce_mix() C³B + pc.c + pc_attack_timer()Apc_attack()Apc_isUseitem()Apc_delitem() C³B + pc_damage() C³B + mob.c + mob_damage()Amobskill_use_id()Amobskill_use_pos() C³B + script.c + buildin_viewpoint()Abuildin_emotion() C³B + makefile C³B + +-------------------- +//0768 by ‚Ò‚´‚Ü‚ñ + +EƒV[ƒYƒ‚[ƒh‰º‚ÅAˆÈ‰º‚Ì“_‚ðC³ +@EŽ€–S‚µ‚½‚çƒZ[ƒuƒ|ƒCƒ“ƒg‚É‹§‘—ŠÒ‚·‚é‚悤‚ÉC³ +@E“Á’è‚̃AƒCƒeƒ€‚ªŽg—p‚Å‚«‚È‚¢‚悤‚ÉC³(ƒAƒ“ƒeƒBƒyƒCƒ“ƒƒ“ƒgEƒnƒG‚̉H) +@E“Á’è‚̃XƒLƒ‹‚ªŽg—p‚Å‚«‚È‚¢‚悤‚ÉC³(ƒ[ƒvƒ|[ƒ^ƒ‹EƒoƒbƒNƒXƒeƒbƒvEƒCƒ“ƒeƒBƒ~ƒfƒCƒgEƒeƒŒƒ|[ƒgEƒCƒ“ƒfƒ…ƒA) +@E“¯–¿ƒMƒ‹ƒh‚É‚Í–³ðŒ‚ÅUŒ‚‚Å‚«‚È‚¢‚悤‚ÉC³ +@E“G‘΃Mƒ‹ƒh‚É‚Í–³ðŒ‚ÅUŒ‚‚Å‚«‚é‚悤‚ÉC³ +@E–³“GŽžŠÔ’†‚Í—¼ŽÒ‚Æ‚àUŒ‚‚Å‚«‚È‚¢‚悤‚ÉC³ + +ƒ\[ƒXƒŒƒxƒ‹‚ŃeƒŒƒ|AƒnƒG‚ÌŽg—p‚ð‹Ö‚¶‚Ä‚¢‚邽‚ßUéíMAP‚Ìmapflag‚Énoteleport‚Í•K—v‚ ‚è‚Ü‚¹‚ñ +‚Ü‚½A–³“GŽžŠÔ‚Íghost_timerˆË‘¶‚Å‚·B‚‚܂èbattle_athena.conf“à‚Ìghost_time‚ª–³“GŽžŠÔ‚É‚È‚è‚Ü‚· + + (map/) + skill.c + skill_castend_damage_id()Askill_castend_id() C³ + skill_check_condition() C³ + pc.c + pc_damage() C³ + battle.c + battle_weapon_attack() C³ + +-------------------- +//0767 by huge + +Eƒtƒ@[ƒ}ƒV[‚ÅA»‘¢‚Ì‘‚ªŒ¸‚é–â‘è‚ðC³ +E•Ší»‘¢DB‚ÅA‚¢‚‚‚©”²‚¯‚Ä‚¢‚½‚Ì‚ðC³ + + (map/) + skill.c C³B + (db/) + produce_db.txt C³B + +-------------------- +//0766 by ‚Ò‚´‚Ü‚ñ + +EƒV[ƒYƒ‚[ƒh‰º‚ÅAˆÈ‰º‚Ì“_‚ðC³ +@E³‹KƒMƒ‹ƒh³”F‚ª‚È‚¢‚ƃGƒ“ƒyƒŠƒEƒ€‚ÉUŒ‚‚ªŒø‚©‚È‚¢‚悤‚ÉC³ +@EƒGƒ“ƒyƒŠƒEƒ€‚ɑ΂·‚éƒXƒLƒ‹UŒ‚‚ªŒø‚©‚È‚¢‚悤‚ÉC³ +@E–‚–@UŒ‚A‰“‹——£UŒ‚A㩂̃_ƒ[ƒW•â³‚ðŽÀ‘• +@@–‚–@UŒ‚F50%@‰“‹——£UŒ‚F75%@ã©F60% +@@‚±‚ê‚Íl‚É‚àƒGƒ“ƒyƒŠƒEƒ€‚É‚à“K—p‚³‚ê‚Ü‚· + (map/) + battle.c + #include "guild.h" ’ljÁ + battle_calc_damage()Abattle_calc_weapon_attack() C³ + +-------------------- +//0765 by ‚Ò‚´‚Ü‚ñ + +E‘•”õ§ŒÀŽÀ‘• +E‘•”õ§ŒÀ‚ª‚©‚©‚Á‚½‘•”õ•i‚ÍŠY“–ƒ}ƒbƒv‚Ɉړ®‚µ‚½Û‚ÉŽ©“®“I‚É‘•”õ‚ªŠO‚êA +@Ä‘•”õ‚à‚Å‚«‚È‚‚È‚è‚Ü‚· +E§ŒÀ‚Å‚«‚é‚Ì‚Í‘•”õ•i‚Ì‚Ý‚Å‚·BƒJ[ƒh—ނͧŒÀ‚Å‚«‚Ü‚¹‚ñ + (db/) + item_noequip.txt ’ljÁ + (map/) + itemdb.h C³ + itemdb.c + do_init_itemdb()Aitemdb_search() C³ + itemdb_read_noequip ’ljÁ + pc.c + pc_checkitem()Apc_isequip() C³ + +-------------------- +//0764 by Ž€_ + +E‘S‚Ẵ_ƒ[ƒW‚ª1‚É‚È‚é–hŒä‚ð10000‚©‚ç1000000‚É•ÏXB +Ebattle_athena.conf‚É€–ڒljÁB +Eƒ‚ƒ“ƒXƒ^[‚©‚çŒoŒ±’l‚ð–Ⴄˆ—‚ð–{ŽI‚̂悤‚ÉC³B +EƒXƒLƒ‹ƒXƒ[ƒ|ƒCƒYƒ“ŽÀ‘•B +EŒðŠ·ƒoƒOC³B +E‚»‚Ì‘¼×‚©‚¢C³B +EƒeƒXƒg‚Í–w‚Ç‚µ‚Ä‚Ü‚¹‚ñB + (db/) + mob_db.txt C³B + skill_db.txt C³B + (doc/) + conf_ref.txt C³B + db_ref.txt C³B + (conf/) + battle_athena.conf C³B + (map/) + makefile C³B + battle.h C³B + battle.c + battle_get_def()Abattle_get_mdef() C³B + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_calc_magic_attack() C³B + battle_calc_misc_attack()Abattle_config_read() C³B + skill.h C³B + skill.c + skill_castend_nodamage_id()Askill_castend_damage_id() C³B + skill_check_condition()Askill_status_change_timer() C³B + skill_status_change_end()Askill_status_change_start() C³B + skill_additional_effect()Askill_produce_mix()Askill_unit_timer_sub() C³B + skill_check_unit_sub()‚ð skill_check_unit_range_sub()‚É•ÏXB + skill_check_unit_range() ’ljÁB + skill_castend_pos()Askill_area_sub_count() C³B + mob.c + mobskill_castend_pos()Amob_damage() C³B + clif.c + clif_parse_TradeRequest()Aclif_parse_TradeAck() C³B + clif_parse_TradeAddItem()Aclif_parse_TradeOk() C³B + clif_parse_TradeCansel()Aclif_parse_TradeCommit() C³B + map.h C³B + map.c + do_init() C³B + pc.c + pc_calc_skilltree()Apc_calcstatus() C³B + tarde.c + trade_tradeack() C³B + +-------------------- +//0763 by ŒÓ’±—– + +EƒT[ƒo[snapshot + ƒtƒHƒ‹ƒ_‚ð®—‚µ‚½‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + ˆÈ‘O‚̃Z[ƒuƒf[ƒ^(account.txt‚È‚Ç)‚ÍsaveƒtƒHƒ‹ƒ_‚É’u‚¢‚Ä‚‚¾‚³‚¢ + cnfƒtƒ@ƒCƒ‹‚ÍŠeŽíƒtƒ@ƒCƒ‹‚̃pƒX‚ª•Ï‚í‚Á‚Ä‚é‚Ì‚ÅA + ‚±‚̌¢‚à‚Ì‚ðƒRƒs[‚Å‚Í‚È‚AV‚µ‚‘‚«Š·‚¦‚È‚¨‚µ‚Ä‚‚¾‚³‚¢B + +EƒtƒHƒ‹ƒ_®— + confƒtƒHƒ‹ƒ_ + NPCŠÖ˜A‚ðconf/npc/AMOB”z’uŠÖ˜A‚ðconf/mob/AWARPŠÖ˜A‚ðconf/warp/ + ƒeƒXƒg‚âƒTƒ“ƒvƒ‹‚ðconf/sample/‚Ɉړ®‚µ‚Ü‚µ‚½B + dbƒtƒHƒ‹ƒ_ + sampleƒtƒHƒ‹ƒ_‚Ì‚¤‚¿dbŠÖŒW‚ð db/sample‚Ɉړ®‚µ‚Ü‚µ‚½B + help.txt/motd.txt + confƒtƒHƒ‹ƒ_‚Ɉړ®‚µ‚Ü‚µ‚½ + account.txt/athena.txt/guild.txt/party.txt/pet.txt/storage.txt + saveƒtƒHƒ‹ƒ_‚Ɉړ®‚µ‚Ü‚µ‚½ + tool/backup + ƒpƒXC³ + +Emotd.txt/help.txt‚̃pƒX‚ðmap_athena.cnf‚ÅŽw’è‚Å‚«‚é‚悤‚É + map.h/map.c/atcommand.c/atcommand.hC³ + +Eathena-start‚ÉrestartƒIƒvƒVƒ‡ƒ“’ljÁ + ./athena-start restart‚ÅAthena‚ðÄ‹N“®‚µ‚Ü‚· + +-------------- +//0761 by ‚Û‚Û‚Û + +EMOB‚ÌMDEF‚É10000ˆÈãŽw’肵‚Ä‚àƒtƒ@ƒCƒAƒsƒ‰[‚Å•’ʂɃ_ƒ[ƒW‚ð—^‚¦‚Ä‚µ‚Ü‚¤‚Ì‚ðC³B + (map/) + battle.c + +-------------- +//0760 by ll3y + +E•¶Žš‰»‚¯C³ + (map/) + script.c + +-------------- +//0759 by Ž‚Žqo^.^o +EƒXƒsƒAƒNƒCƒbƒPƒ“ C³ +EDancer skill tree C³ +(db/) + cast_db.txt C³ + skill_tree.txt C³ + +-------------- +//0758 by hack +EPut GM messages into msg_table which is loaded from msg_athena.conf. +(Easy to translate into other language) + (map/) + atcommand.h + atcommand.c + msg_conf_read() Read conf/msg_athena.conf + Put messages into msg_table which is loaded from msg_athena.conf. + map.c + do_init() + (conf/) + msg_athena.conf Store the message of atcommand, easy to translate into other language. + +-------------- +//0757 by Michael + (map/) + script.c + buildin_viewpoint() + Fix packet sequence of viewpoint command. + +-------------- +//0756 by ll3y + +EInterix(Windows Services for Unix 3.5)‚ŃRƒ“ƒpƒCƒ‹‚ª’Ê‚é‚悤‚ÉC³ + Interop Systems(http://www.interopsystems.com/)‚æ‚ègmake‚Æzlib‚ðŽæ‚Á‚Ä‚‚é‚©A + Ž©‘O‚ÅInterix—p‚ð—pˆÓ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + (common/) + socket.h C³B + +-------------- +//0755 by Ž€_ + +EƒoƒOC³‚Æà–¾’ljÁB(•ñ‚³‚ꂽ‚Ì‚Í‘½•ª‘S‚ÄC³‚³‚ꂽ‚Ì‚©‚Æ...) +E0751‚ŃXƒLƒ‹‚Ìő僌ƒxƒ‹‚ð100‚Ü‚ÅÝ’è‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B +Ecast_db.txt‚É“ü‚Á‚Ä‚¢‚éó‘ÔˆÙí‚̈ێŽžŠÔ‚ÍŽ©•ª‚ª“K“x‚É“ü‚ꂽ•¨‚Å‚·B–{ŽI‚ÌŽd—l‚È‚ñ‚Ä’m‚è‚Ü‚¹‚ñ‚Ì‚ÅB + (doc/) + db_ref.txt C³B + (db/) + cast_db.txt C³B + skill_db.txt C³B + (map/) + skill.h C³B + skill.c + skill_check_unit_sub()Askill_castend_id()Askill_use_id() C³B + skill_status_change_end()Askill_status_change_start() C³B + skill_castend_map() C³B + mob.c + mobskill_castend_id()Amobskill_castend_pos() C³B + pc.c + pc_calcstatus() C³B + battle.c + battle_calc_pc_weapon_attack() + battle_calc_mob_weapon_attack() + battle_calc_magic_attack() + +-------------- +//0754 by Ž‚Žqo^.^o +(db/) + cast_db.txt C³ + +-------------- +//0753 by ¹ + +EIW‚Ì”¶ƒ|ƒCƒ“ƒg‚ðŽw’è‚·‚é‚ƃƒeƒI‚̃GƒtƒFƒNƒg‚ªˆêØo‚È‚‚È‚é +@–â‘肪•œŠˆ‚µ‚Ä‚¢‚½‚Ì‚ÅC³B +Ewarning‚ðo‚È‚¢‚悤‚ɃR[ƒhC³B + (map/) + skill.c + skill_castend_pos2() C³B + chrif.h + +-------------- +//0752 by ‚Ò‚´‚Ü‚ñ + +EchangesexƒXƒNƒŠƒvƒgŽÀ‘•B«•Ê‚𔽓]‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚· +@«•Ê”½“]¬Œ÷Œã‚ÍA‚»‚̃vƒŒƒCƒ„[‚Í‹§“I‚ÉÚ‘±‚ðØ’f‚³‚ê‚Ü‚· +@‚Ü‚½Aƒ_ƒ“ƒT[Eƒo[ƒh‚̌݊·«‚Í‚©‚È‚è‰ö‚µ‚¢‚Å‚· +@ƒ_ƒ“ƒT[Eƒo[ƒh‚ªƒXƒƒbƒg“à‚Ç‚±‚©‚É‹‚éƒAƒJƒEƒ“ƒg‚Å‚Ì”½“]‚ÍAˆÈ‰º‚Ì“_‚É’ˆÓ‚µ‚ĉº‚³‚¢ +@E•K‚¸”½“]‚³‚¹‚é‘O‚É‚»‚̃Lƒƒƒ‰ƒNƒ^[‚ðƒXƒLƒ‹ƒŠƒZƒbƒg‚µ‚Ä‚‚¾‚³‚¢ +@@‚»‚Ì‚Ü‚Ü”½“]‚³‚¹‚é‚ÆA‹¤’Ê‚·‚éƒXƒLƒ‹(ŠyŠí‚Ì—ûK“™)‚µ‚©Žc‚ç‚È‚‚È‚Á‚Ä‚µ‚Ü‚¢‚Ü‚· +@Eƒ_ƒ“ƒT[Eƒo[ƒhê—p•Ší‚ð‘•”õ‚µ‚Ä‚¢‚éꇂÍAŠO‚µ‚Ä‚©‚甽“]‚³‚¹‚Ä‚‚¾‚³‚¢ +@@‚»‚Ì‚Ü‚Ü”½“]‚³‚¹‚é‚ÆA‚»‚̃Lƒƒƒ‰ƒNƒ^[‚ÌŠJŽnŽž‚É +@@ƒNƒ‰ƒCƒAƒ“ƒgƒGƒ‰[‚ªo‚Ü‚·io‚邾‚¯‚ÅA—Ž‚¿‚邱‚Æ‚Í‚È‚¢‚Ì‚Å‚·‚ªcj +Eƒf[ƒ^ƒx[ƒXC³ by Ž‚Žqo^.^o + (map/) + chrif.c + packet_len_table[]Achrif_parse()C³ + chrif_changesex()Achrif_changedsex()’ljÁ + chrif.h C³ + (char/) + char.c + parse_frommap()Aparse_tologin()C³ + (login/) + login.c + parse_fromchar()C³ + (db/) + cast_db.txt C³ + skill_require_db.txt C³ + +-------------- +//0751 by Ž€_ + +Eskill_db.txt‚Æcast_db.txt‚Ì•ÏX‚Æskill_require_db.txt‚̒ljÁB +E“Å‚É‚©‚©‚é‚ÆHP‚ªŒ¸‚é‚悤‚É•ÏXBHP‚Í1•b‚ÉÅ‘åHP‚Ì1%Œ¸‚è‚Ü‚·B(–¢ƒeƒXƒg) +EΉ»‚ðis’†‚Ì•¨‚ÆŠ®‘S‚È•¨‚É•ª‚¯‚ÄHP‚ªŒ¸‚é‚悤‚É•ÏXB(1•b‚ÉÅ‘åHP‚Ì1%)ƒuƒŒƒbƒVƒ“ƒO‚ÅŠ®‘SΉ»‚¾‚¯Ž¡‚¹‚é‚悤‚ÉC³B(–¢ƒeƒXƒg) +Eƒnƒ“ƒ^[‚̃gƒ‰ƒbƒv‚ɃGƒtƒFƒNƒgŽÀ‘•B‚½‚¾ƒ‰ƒ“ƒhƒ}ƒCƒ“‚ƃVƒ‡ƒbƒNƒEƒF[ƒu‚Í”š”ƒGƒtƒFƒNƒg‚ªo‚È‚¢‚悤‚Å‚·Bƒ‰ƒ“ƒhƒ}ƒCƒ“‚̓tƒ@ƒCƒAƒsƒ‰[‚Ì”š”ƒGƒtƒFƒNƒg‚ªo‚é‚悤‚É•Ï‚¦‚Ä‚¢‚Ü‚·B +EƒI[ƒgƒJƒEƒ“ƒ^[‚Ì•ûŒüƒ`ƒFƒbƒN‚ð‚·‚é‚悤‚É•ÏX‚Æ–{ŽIŽd—l‚ɇ‚킹‚Ü‚µ‚½B +EƒoƒbƒNƒXƒ^ƒu‚à•ûŒüƒ`ƒFƒbƒN‚ð‚·‚é‚悤‚É•ÏXB +EƒCƒ“ƒeƒBƒ~ƒfƒCƒg‚̈—•ÏXB +EƒfƒBƒtƒFƒ“ƒ_[‚̈ړ®‘¬“xŒ¸‚ð–{ŽI‚ɇ‚킹‚Ü‚µ‚½BASPD‚ÍŸŽè‚È‚ª‚ç +(30 - (skilllv*5))%‚ªŒ¸‚é‚悤‚É‚µ‚Ü‚µ‚½‚ª–{ŽI‚Å‚¢‚‚ç’öŒ¸‚é‚Ì‚©‚Ìî•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B +Eƒgƒ“ƒlƒ‹ƒhƒ‰ƒCƒuLV1‚ňړ®‘¬“x‚ª150‚©‚ç312‚É‚È‚é‚Ì‚ªŠm”F‚³‚ê‚ÄŒvŽZ‚ð•ÏX‚µ‚Ü‚µ‚½‚ªƒŒƒxƒ‹‚É‚æ‚Á‚Ä‚Ç‚ê‚®‚ç‚¢‘‰Á‚·‚é‚©‚Í•s–¾‚Å‚·Bî•ñ‚ð‹‚ß‚Ü‚·B(¡‚ÌŒvŽZŽ®‚Í“K“x‚Éì‚Á‚½•¨‚Å‚·B) +Eƒ|[ƒVƒ‡ƒ“»‘¢‚ÌŒvŽZŽ®•ÏX‚Æ‚¿‚å‚Á‚ÆC³B +Eˆê•”’n–ʃXƒLƒ‹‚Ìd‚Ë’u‚«‚ð‹ÖŽ~B +EbNoMagicDamage‚Å–‚–@‚É‚æ‚éˆÙí‚âƒXƒe[ƒ^ƒXƒAƒbƒvŒø‰Ê‚ªo‚È‚¢‚悤‚ÉC³B(ƒŠƒUƒŒƒNƒVƒ‡ƒ“ˆÈŠO‚Ì–‚–@‚Í–³Œø‚É‚È‚è‚Ü‚·B) +Ebattle_athena.conf‚É€–ڒljÁB +E‚»‚Ì‘¼FX‚ÆC³B +E•ÏX‚³‚ꂽskill_db.txtAcastdb.txt‚ƒljÁ‚³‚ꂽskill_require_db.txt‚Ì\‘¢‚Í¡‚ÌŠŽ©•ª‚µ‚©’m‚ç‚È‚¢‚Ì‚Ådb_ref.txt‚Éà–¾‚ð’ljÁ‚·‚é—\’è‚È‚Ì‚Å‚»‚ê‚Ü‚Å‚Í‚±‚ê‚ç‚Ì•ÏX‚ÍT‚¦‚Ä‚‚¾‚³‚¢B + (char/) + int_guild.c C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (db/) + skill_db.txt C³B + skill_require_db.txt C³B + cast_db.txt C³B + (map/) + battle.h C³B + battle.c + battle_counttargeted()Abattle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_weapon_attack()Abattle_config_read() C³B + skill.h C³B + skill.c + skill_attack()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_status_change_start() C³B + skill_check_condition()Askill_castend_pos() C³B + skill_use_id()Askill_use_pos() C³B + skill_status_change_timer()Askill_status_change_start() C³B + skill_check_unit_sub() ’ljÁB + pc.h C³B + pc.c + pc_damage()Apc_counttargeted()Apc_counttargeted_sub() C³B + mob.h C³B + mob.c + mob_countslave()Amob_counttargeted()Amob_counttargeted_sub() C³B + mobskill_use()Amob_can_move()Amob_damage() C³B + mobskill_use_id()Amobskill_use_pos()Amobskill_castend_id() C³B + mobskill_castend_pos() C³B + map.c + map_quit() C³B + +-------------- +//0750 by CHRIS + +EƒXƒLƒ‹ŠÖŒW‚ÌDB‚ð’²® + (db/) + skill_db.txt + cast_db.txt + skill_require_db.txt + +-------------- +//0749 by Ž€_ + +EFX‚Æ•ÏX‚ÆC³B +EƒXƒLƒ‹‚ÌŽd—l•ÏX‚âŽÀ‘•Aó‘ÔˆÙí‚ÌŽd—l•ÏX‚âŽÀ‘•B +EƒXƒLƒ‹‚ÌŽg—pðŒ‚ðdb‚ÉÝ’è‚Å‚«‚é‚悤‚É•ÏXB +Eskill_db.txt‚Æcast_db.txt‚ÌŽd—l•ÏXB +Eƒ}ƒbƒvŽI‚Ì–³ŒÀƒ‹[ƒv‰Â”\«‚ª‚ ‚é•”•ª‚ðC³B(‚ ‚‚Ü‚Å‚à‰Â”\«‚ª +‚ ‚Á‚½‚¾‚¯‚Ì•¨‚Å‚·B–³ŒÀƒ‹[ƒv‚ÌŒ´ˆö‚Æ‚Í’fŒ¾‚Å‚«‚Ü‚¹‚ñB) +Eƒgƒ‰ƒbƒv‚Ì”“®ŽÀ‘•B(‚½‚¾ŽÀÛ‚É“®ì‚Í‚Ü‚¾C³‚µ‚Ä‚¢‚Ü‚¹‚ñB +Œ©‚½–Ú‚ª•Ï‚í‚Á‚½‚¾‚¯‚Å‚·B) +Ebattle_athena.conf‚É€–ڒljÁ‚ðíœB +E0748‚ÌC³íœ‚Æ•¶Žš‰»‚¯C³B +Eskill_db.txtAcast_db.txtAskill_require_db.txt‚Ì•û‚ª‚Ü‚¾Š®¬‚³‚ê‚Ä‚¢‚È‚¢‚Ì‚Å +‚©‚È‚è‚̗ʂ̃XƒLƒ‹‚ª³‚µ‚“®ì‚µ‚Ü‚¹‚ñB(db_ref.txt‚ÉÝ’è•û–@‚ð“ü‚ê‚È‚¢‚Æ + ‚¯‚È‚¢‚Ì‚Å‚·‚ªŽžŠÔ‚ª‚È‚©‚Á‚½‚Ì‚Å...) ‚»‚µ‚ÄC³‚Í‚µ‚Ü‚µ‚½‚ªƒeƒXƒg‚Í +–w‚ñ‚Ç‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + (char/) + char.c C³B + int_party.h C³B + int_party.c C³B + int_guild.h C³B + int_guild.c C³B + int_pet.h C³B + int_pet.c C³B + int_storage.h C³B + int_storage.c C³B + char‚Ì•û‚͑債‚½C³‚Í‚µ‚Ä‚Ü‚¹‚ñB + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (db/) + skill_db.txt C³B + cast_db.txt C³B + skill_require_db.txt ’ljÁB + produce_db.txt C³B + (map/) + map.h C³B + map.c + map_check_dir() ’ljÁB + map_readmap()Amap_addblock()Amap_delblock() C³B + map_foreachinarea()Amap_foreachinmovearea() C³B + map_addflooritem() C³B + pc.h C³B + pc.c + pc_spiritball_timer()Apc_addspiritball()Apc_delspiritball() C³B + pc_steal_item()Apc_steal_coin()Apc_calcstatus() C³B + pc_checkallowskill()Apc_jobchange()Apc_checkweighticon() C³B + pc_damage()Apc_equipitem()Apc_walk()Apc_stop_walking() C³B + pc_authok()Apc_counttargeted()Apc_counttargeted_sub() C³B + pc_damage()Apc_setpos() C³B + skill.h C³B + skill.c + skill_get_range()Askill_get_sp()Askill_get_num() C³B + skill_get_cast()Askill_get_delay() C³B + skill_get_hp()Askill_get_zeny()Askill_get_time() ’ljÁB + skill_get_time2()Askill_get_weapontype() ’ljÁB + skill_get_unit_id()Askill_blown()Askill_additional_effect() C³B + skill_attack()Askill_castend_damage_id() C³B + skill_castend_nodamage_id()Askill_castend_id() C³B + skill_castend_pos()Askill_unit_onplace() C³B + skill_unit_timer_sub_onplace()Askill_unitsetting() C³B + skill_use_id()Askill_use_pos()Askill_check_condition() C³B + skill_status_change_end()Askill_status_change_timer() C³B + skill_status_change_start()Askill_can_produce_mix() C³B + skill_produce_mix()Askill_gangsterparadise() C³B + skill_gangster_out()Askill_gangster_in() C³B + skill_gangster_count() ’ljÁB + skill_readdb() C³B + battle.h C³B + battle.c + distance()Abattle_counttargeted()Abattle_get_range() ’ljÁB + battle_get_dir() ’ljÁB + battle_get_maxhp()Abattle_get_str()Abattle_get_agi() C³B + battle_get_vit()Abattle_get_dex()Abattle_get_int() C³B + battle_get_luk()Abattle_get_flee()Abattle_get_hit() C³B + battle_get_flee2()Abattle_get_critical()Abattle_get_baseatk() C³B + battle_get_atk()Abattle_get_atk2()Abattle_get_def() C³B + battle_get_def2()Abattle_get_mdef()Abattle_get_speed() C³B + battle_get_adelay()Abattle_get_amotion()Abattle_get_party_id() C³B + battle_get_guild_id()Abattle_get_size() C³B + battle_check_undead() ’ljÁB + battle_check_target()Abattle_addmastery() C³B + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_weapon_attack() C³B + clif.h C³B + clif.c + clif_skillinfo()Aclif_skillinfoblock()Aclif_skillup() C³B + clif_item_skill()Aclif_changeoption()Aclif_parse_LoadEndAck() C³B + clif_01ac() ’ljÁB + clif_parse_WalkToXY()Aclif_parse_ActionRequest() C³B + clif_parse_TakeItem()Aclif_parse_DropItem() C³B + mob.h C³B + mob.c + mobskill_castend_id()Amobskill_castend_pos() C³B + mobskill_use_id()Amobskill_use_pos()Amob_heal() C³B + mob_spawn()Amob_damage()Amob_walk() C³B + mob_stop_walking()Amob_warp()Amob_counttargeted() C³B + mob_counttargeted_sub()Amob_countslave() C³B + mob_attack()Amob_target()Amob_ai_sub_hard_activesearch() C³B + mob_ai_sub_hard_mastersearch()Amob_ai_sub_hard() C³B + script.c + buildin_sc_start() C³B + path.c + can_move() C³B + pet.c + pet_data_init()Apet_stop_walking() C³B + npc.c + npc_parse_warp()Anpc_parse_shop()Anpc_parse_script() C³B + +-------------- +//0748 by Michael + (map/) + pc.c + pc_walk(); + Fix Player cannot move in ICEWALL but have Path. + mob.c + mob_walk(); + Fix Monster cannot move in ICEWALL but have Path. + path.c + can_move(); + Fix Player&Monster cannot move in ICEWALL. + +-------------- +//0747 by ¹ +Eƒyƒbƒg‚ªƒGƒ‚‚ðo‚·‚Æmap-server‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚Á‚½–â‘è‚ðC³B + (map/) + clif_parse_SendEmotion() C³B + +-------------- +//0746 by Michael + (map/) + script.c + Add Script command - checkoption(type); + Attach a npc_testchkoption.txt npc script! + +-------------- +//0745 by ‚Ò‚´‚Ü‚ñ +EƒMƒƒƒ“ƒOƒXƒ^[ƒpƒ‰ƒ_ƒCƒXŽÀ‘• +EPvPƒGƒŠƒA‚Ìmapflag‚ðC³(“¯Žm“¢‚¿‚ª–³‚‚È‚Á‚½‚©‚ÆŽv‚¢‚Ü‚·) +EƒV[ƒYƒ‚[ƒh‚ŃmƒbƒNƒoƒbƒN‚ª‚ ‚Á‚½ƒoƒO‚ðC³ +EƒCƒ“ƒeƒBƒ~‚Ì’x‰„ŽžŠÔ‚ð‚µ’²® + (map/) + skill.c + skill_attack()Askill_additional_effect()C³ + skill_gangsterparadise()Askill_gangster_in()Askill_gangster_out()’ljÁ + clif.c + clif_parse_ActionRequest()C³ + mob.c + mob_target()Amob_attack()C³ + mob_ai_sub_hard()Amob_ai_sub_hard_mastersearch()C³ + mob_ai_sub_hard_activesearch()C³ + map.h C³ + skill.h C³ + (conf/) + npc_pvp.txt C³ + +-------------- +//0744 by ¹ + +EƒAƒCƒXƒEƒH[ƒ‹AƒƒeƒIƒXƒg[ƒ€‚̃Rƒ“ƒ{‚ŃƒeƒIƒXƒg[ƒ€‚̃GƒtƒFƒNƒg‚ª•\Ž¦‚³‚ê‚È‚‚È‚é–â‘è‚ðC³B +EHP‹zŽûƒXƒLƒ‹‚̃GƒtƒFƒNƒgC³B +Ebattle_athena.conf‚É€–ڒljÁB +EƒpƒPŽü‚è‚Ìׂ©‚¢C³B + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + (map/) + battle.c + battle.h + clif.c + pc.c + pet.c + skill.c + +-------------- +//0743 by J + +EŽæ‚芪‚«¢Š«‚È‚Ç‚ð–{ŽI‚ÉŽ—‚¹‚éˆ×‚ÌC³B +@‚ ‚Æ–{ŽI‘ŠˆáƒXƒŒ‚É‚ ‚Á‚½ƒSƒXƒŠƒ“‚ÌŽæ‚芪‚«‚ðC³B +@ƒfƒŠ[ƒ^[‚Ì‹ó‚Æ’n‚̃XƒLƒ‹‚ª‹t‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³B + (db/) + mob_skill_db.txt C³ + +-------------- +//0742 by ‚Ò‚´‚Ü‚ñ + +EƒCƒ“ƒeƒBƒ~ƒfƒCƒg‚ðŽÀ‘• +@UŒ‚‚ƃ[ƒv‚Ì•ª•Ê‚ª‚¤‚Ü‚‚¢‚©‚È‚©‚Á‚½‚Ì‚Å +@SC_INTIMIDATE‚ðŽg‚Á‚Ä’x‰„ˆ—‚ð‚µ‚Ü‚µ‚½ +Eskill_db‚̌뎚“™‚ðC³ + (map/) + skill.c + skill_additional_effect()Askill_castend_map()C³ + skill_castend_nodamage_id()AC³ + skill_status_change_start()Askill_status_change_end()C³ + map.h C³ + skill.h C³ + (db/) + skill_db.txt C³ + +-------------------- +//0741 by whitedog + +snapshot + +-------------- +//0740 by ‚Û‚Û‚Û +EPC‚ªMOB‚Ƀ^ƒQ‚ç‚ꂽ‚Æ‚«3•C–Ú‚©‚ç–hŒä‚Ɖñ”ð‚ªŒ¸‚é‚悤‚É‚µ‚½B +@1•C‚ɂ‚«‰ñ”ð‚Í10%A–hŒä‚Í5%Œ¸‚è‚Ü‚·B + (map/) + pc.h + pc.c + pc_counttargeted()Apc_counttargeted_sub()’ljÁ + battle.c + battle_get_flee()Abattle_get_def()Abattle_get_def2()C³B + +-------------- +//0739 by ¹ +Eƒtƒ@ƒCƒA[ƒEƒH[ƒ‹“™‚ÌÝ’uŒnƒXƒLƒ‹‚ª³‚µ‚•\Ž¦‚³‚ê‚È‚¢–â‘è‚ðC³B +Eƒ}ƒŠƒ“ƒXƒtƒBƒA‚ªŽ©”š‚·‚é‚ƃTƒ“ƒ_[ƒXƒg[ƒ€“™‚̃_ƒ[ƒW‚ª•\Ž¦‚³‚ê‚È‚‚È‚é–â‘è‚ðC³B +EHP‹zŽûŒnƒXƒLƒ‹‚Å“G‚ª‰ñ•œ‚µ‚Ä‚éƒGƒtƒFƒNƒg‚ªo‚é‚悤C³B + (map/) + skill.c + skill_castend_damage_id() C³B + battle.c + battle_calc_misc_attack() C³B + clif.c + clif_getareachar_skillunit() C³B + clif_skill_setunit() C³B + +-------------- +//0738 by ‚Ò‚´‚Ü‚ñ +EƒXƒg[ƒ€ƒKƒXƒg‚ðŠ®‘S‚É–{ŽIŽd—l‚ÉC³(3‰ñ‚Åâ‘Γ€Œ‹•“€Œ‹ó‘Ô‚Ì“G‚ÍSG‚ð‚‚ç‚í‚È‚¢) +EƒTƒtƒ‰ƒMƒEƒ€‚ªŽ©•ª‚É‚©‚¯‚ç‚ê‚éƒoƒOC³ + (map/) + skill.c + skill_additional_effect()Askill_attack()C³ + skill_castend_nodamage_id()C³ + map.h C³ + +-------------- +//0737 by ‚Û‚Û‚Û +EƒAƒ“ƒNƒ‹‚ª•à‚¢‚Ä‚¢‚é“G‚ÉŒø‚©‚È‚¢&•¡”‚Ì“G‚ÉŒø‚‚Ì‚ðC³B + (map/) + skill.c + skill_unit_onplace()Askill_unit_onout()C³ + mob.c + mob_stop_walking()C³ + +-------------- +//0736 by ‚Ò‚´‚Ü‚ñ +Eó‘ÔˆÙí‘Ï«‚ªŒø‰ÊŽžŠÔ‚É‚à‹y‚Ô—l‚ÉC³B”“®—¦‚Æ“¯—¦‚ÅŒø‰ÊŽžŠÔ‚ªŠ„‚èˆø‚©‚ê‚Ü‚· +EƒXƒg[ƒ“ƒJ[ƒX‚ÌŒø‰ÊŽžŠÔ‚ð‰i‹v‚©‚çƒ}ƒWƒXƒŒƒeƒ“ƒvƒŒ€‹’‚É +EUŒ‚‚ðŽó‚¯‚½Žž‚Ƀyƒbƒg‚ÌŽx‰‡UŒ‚‚ðŽó‚¯‚ç‚ê‚È‚¢‚悤C³(ƒRƒƒ“ƒgƒAƒEƒg‚µ‚½‚¾‚¯) +@‚±‚ê‚ÍVITŒ^‚Ƀyƒbƒg‚ð•t‚¯‚Ä•ú’u‚·‚邾‚¯‚ÅŽ©“®‚ŃŒƒxƒ‹ã‚°‚ª‚Å‚«‚é‚Ì‚ð +@–h‚®‚½‚ß‚ÌŽb’è“I‚Ȉ’u‚Å‚· + (map/) + skill.c + skill_castend_nodamage_id()Askill_addisional_effect()C³ + skill_status_change_start()C³ + pc.c + pc_damage() C³ + +-------------- +//0735 by ‚Û‚Û‚Û + +E“G‚ð“|‚µ‚ăŒƒxƒ‹‚ªã‚ª‚Á‚½‚Æ‚«PTŒö•½”͈͂̃`ƒFƒbƒN‚ð‚·‚é‚悤‚É‚µ‚½B +EƒI[ƒgƒJƒEƒ“ƒ^[‰¼ŽÀ‘•B +@Œü‚«‚âŽË’öƒ`ƒFƒbƒN‚Í‚µ‚Ä‚¢‚Ü‚¹‚ñB‚Ü‚½ƒ^ƒCƒ~ƒ“ƒO‚ª‚¨‚©‚µ‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB +@MOBƒXƒLƒ‹‚Æ‚µ‚ÄŽg‚¤‚Æ‚«‚̓^[ƒQƒbƒg‚ðself‚É‚µ‚Ä‚‚¾‚³‚¢B + (conf/) + battle_athena.conf€–ڒljÁ + (doc/) + conf_refC³ + (map/) + battle.h + battle.c + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() + battle_config_read()C³ + pc.c + pc_checkbaselevelup()Apc_attack_timer()C³ + skill.c + skill_castend_nodamage_id()Askill_status_change_start()C³ + clif.c + clif_parse_WalkToXY()C³ + mob.c + mob_attack()C³ + +-------------- +//0734 by Ž€_ + +Eplayer_skillup_limit‚̈—C³‚Æׂ©‚¢C³B +Eplayer_skillup_limit‚ªyes‚Ìê‡skill_tree.txt‚Åݒ肳‚ê‚Ä‚é‚»‚̉ºˆÊE‹Æ‚Ì +ƒXƒLƒ‹ƒcƒŠ[‚ðŽg‚¢‚Ü‚·‚Ì‚Å‚»‚ÌE‹Æ‚Å‚Í–³‚‚È‚é‚Í‚¸‚̃XƒLƒ‹‚ªo‚邱‚Æ‚ª +‚ ‚è‚Ü‚·‚ª‚±‚ê‚ÍŽd—l‚Å‚ ‚èƒoƒO‚Å‚Í‚ ‚è‚Ü‚¹‚ñBƒoƒO•ñ‚³‚ê‚Ä‚à–³Ž‹‚µ‚Ü‚·B + (doc/) + conf_ref.txt C³B + (char/) + char.c + mmo_char_sync_timer()Ado_init() C³B + inter.c + inter_init() C³B + inter_save_timer() íœB + (map/) + pc.c + pc_calc_skilltree() C³B + pc_resetskill() C³B + +-------------- +//0733 by Ž€_ + +EƒoƒOC³‚Æׂ©‚¢C³B +EŽ€‚ñ‚¾Œã‚É‚·‚®‚ɃZ[ƒuƒ|ƒCƒ“ƒg‚ɖ߂炸‚É‚µ‚΂炕ú’u‚µ‚Ä‚é‚ÆA +•ú’u‚µ‚Ă鎞ŠÔ‚É‚æ‚Á‚ÄŒoŒ±’l‚ªŒ¸‚·‚éƒoƒOC³B(–¢ƒeƒXƒg) +Emob_availe.txt‚Åݒ肵‚½ƒ‚ƒ“ƒXƒ^[‚Ƀ‚ƒ“ƒXƒ^[î•ñ‚ðŽg‚¤‚¿ˆÆ—Ž‚¿‚·‚é–â‘èC³B +Ebattle_athena.conf‚É€–ڒljÁB +E‚»‚Ì‘¼×‚©‚¢C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + clif.c + clif_skill_estimation()Aclif_parse_Restart() C³B + pc.c + pc_setrestartvalue()Apc_makesavestatus() C³B + pc_read_gm_account()Apc_calc_skilltree() C³B + pc_calc_skillpoint() ’ljÁB + map.c + map_quit() C³B + mob.c + mob_damage() C³B + skill.c + skill_unit_timer_sub()Askill_unit_timer() C³B + battle.h C³B + battle.c + battle_config_read() C³B + +-------------- +//0732 by Kalen + +Enpc_town_kafra.txt‚Ì‘S–ÊŒ©’¼‚µ + ƒJƒvƒ‰—˜—pŒ”‚Ì”pŽ~ + ‘qŒÉ—˜—p—¿‚ð–{ŽI(jRO)‚Æ“¯ˆê‰¿Ši‚É’²® + ƒJ[ƒgŽg—p—¿‚ð–{ŽI(jRO)‚Æ“¯ˆê‰¿Ši‚É’²® + ƒ|ƒCƒ“ƒgŽQÆ•ÏX + ƒWƒ…ƒm[‚̃Z[ƒuƒ|ƒCƒ“ƒgC³ + ƒAƒ}ƒc‚̃Z[ƒuƒ|ƒCƒ“ƒgC³ + +-------------- +//0731 by ‚Û‚Û‚Û + +E•ž‚ÌF‚ð•Û‘¶‚·‚é‚©battle_athena.conf‚Å‘I‘ð‚Å‚«‚é‚悤‚ÉB +@•¾ŠQ‚ª‚ ‚é‚Ì‚Å•Û‘¶‚µ‚È‚¢‚悤‚É‚Æ‘‚¢‚Ä‚ ‚Á‚½‚̂ŃfƒtƒHƒ‹ƒg‚Å‚Í•Û‘¶‚µ‚Ü‚¹‚ñB +EƒXƒNƒŠƒvƒg’ljÁ +@strcharinfo(1) Ž©•ª‚̃p[ƒeƒB[–¼‚ðŽæ“¾‚µ‚Ü‚·B +@strcharinfo(2) Ž©•ª‚̃Mƒ‹ƒh–¼‚ðŽæ“¾‚µ‚Ü‚·B +@getcharid(1) Ž©•ª‚̃p[ƒeƒB[ID‚ðŽæ“¾‚µ‚Ü‚·B +@getcharid(2) Ž©•ª‚̃Mƒ‹ƒhID‚ðŽæ“¾‚µ‚Ü‚·B +@getpartyname(ID) ID‚ÅŽw’肵‚½ƒp[ƒeƒB[‚Ì–¼‘O‚ðŽæ“¾‚µ‚Ü‚·B +@getguildname(ID) ID‚ÅŽw’肵‚½ƒMƒ‹ƒh‚Ì–¼‘O‚ðŽæ“¾‚µ‚Ü‚·B + (map/) + battle.h + battle.c + battle_config_read()C³ + pc.c + pc_makesavestatus()C³ + script.c + buildin_strcharinfo()C³ + buildin_getcharid()Abuildin_getpartyname()Abuildin_getpartyname_sub() + buildin_getguildname()Abuildin_getguildname_sub()’ljÁ + +-------------- +//0730 by ‚Ò‚´‚Ü‚ñ + +EƒXƒg[ƒ€ƒKƒXƒg‚Ì“€Œ‹ŽžŠÔ‚ð–{ŽI‚É‚ ‚킹‚ÄC³(ƒXƒLƒ‹ƒŒƒxƒ‹‚ÉŠÖŒW‚È‚ˆê’è‚Ì“€Œ‹ŽžŠÔ(10•b)‚É‚È‚è‚Ü‚·) +EƒXƒ^ƒ“AˆÃˆÅA’¾–ÙA“Å‚Ìó‘ÔˆÙ펞ŠÔ‚ÌuŒp‚¬‘«‚µv‚ª‚Å‚«‚È‚¢‚悤‚ÉC³ +Eó‘ÔˆÙ킪Š|‚©‚è‚É‚‚·‚¬‚Ä‚½‚Ì‚ÅMOB‚Ìó‘ÔˆÙí‘Ï«‚ðŠÉ˜a(‚Ü‚½’²®‚·‚é‚©‚à) + (map/) + skill.c + skill_castend_nodamage_id()Askill_addisional_effect()C³ + skill_status_change_start()C³ + +-------------- +//0729 by DRG + +EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚ªƒJ[ƒg‚È‚µ‚ÅŽg‚¦‚½•s‹ï‡‚ÌC³ +EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚ªJOBLV30‚ÅŠo‚¦‚ꂽ‚Ì‚ðC³ + (conf/) + npc_event_skillget.txt + ƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“€C³ + (map/) + skill.c + skill_check_condition()C³ + +-------------- +//0728 by ‚Û‚Û‚Û + +EE‚ª•Ï‚í‚Á‚Ä‚àƒMƒ‹ƒh‚ÌE‹Æ—“‚ªXV‚³‚ê‚È‚¢•s‹ï‡‚ÌC³B + + (char/) + inter.c + ƒpƒPƒbƒg’·ƒŠƒXƒgC³B + int_guild.c + mapif_guild_memberinfoshort()Amapif_parse_GuildChangeMemberInfoShort()A + inter_guild_parse_frommap()C³ + (map/) + intif.h + intif.c + intif_guild_memberinfoshort()Aintif_parse_GuildMemberInfoShort() + intif_parse()C³ + guild.h + guild_send_memberinfoshort()Aguild_recv_memberinfoshort()C³ + + +-------------- +//0727 by ¹ + +E•ŠíŒ¤‹†ƒXƒLƒ‹‚É‚æ‚Á‚ăzƒ‹ƒOƒŒƒ“‚Ȃǂ̸˜BNPC‚ª +@³í‚É“®ì‚µ‚È‚¢–â‘è‚ðC³B + + (map/) + pc.c + pc_percentrefinery() C³B + +-------------- +//0726 by ŒÓ’±—– + +Emob_skill_db2.txt‚ª‚ ‚ê‚Îmob_skill_db.txt‚ðƒI[ƒo[ƒ‰ƒCƒh‚·‚é‚悤‚ÉC³ + ƒIƒŠƒWƒiƒ‹‚ÌMOBŽg—pŽž‚âAŒ»sMOB‚ÌŽg—pƒXƒLƒ‹‚ð•ÏX‚µ‚½‚¢ê‡‚ÉB + +Emob_skill_db.txt‚Åmob_id‚ÌŽŸ‚̃_ƒ~[•¶Žš—ñ‚ª"clear"‚¾‚Á‚½ê‡A + ‚»‚ÌMOB‚̃XƒLƒ‹‚ð‰Šú‰»‚·‚é‹@”\’ljÁB + Emob_skill_db2.txt‚Å‚ ‚éMOB‚̃XƒLƒ‹‚ðŠ®‘S‚É‘‚«Š·‚¦‚é‚Æ‚«‚ÉŽg—p‚µ‚Ä + ‚‚¾‚³‚¢B + Eclear‚µ‚È‚©‚Á‚½ê‡‚Ímob_skill_db.txt‚Ì‚à‚̂ɒljÁ‚³‚ê‚Ü‚·B + + mob.c + mob_readskilldb()C³ + + +EƒAƒCƒeƒ€–¼/MOB–¼‚ª‘SŠp12•¶Žši24ƒoƒCƒgj‚ ‚éƒAƒCƒeƒ€/MOB‚ªA + @ƒRƒ}ƒ“ƒh‚ÅŽæ‚èŠñ‚¹/¢Š«‚Å‚«‚È‚¢–â‘èC³B + mob.c + mobdb_searchname()C³ + itemdb.c + itemdb_searchname_sub()C³ + +EŒ»ÝŽž‚ŃCƒxƒ“ƒg‚ð‹N‚±‚·uŽžŒvƒCƒxƒ“ƒgv‹@”\‚ð’ljÁ + EOnInit‚Æ“¯‚¶‚悤‚É‚»‚ꂼ‚ê‚ÌNPC‚ÅAOn`‚ÅŽn‚܂郉ƒxƒ‹‚ð’è‹`‚µ‚Ü‚·B + OnMinute?? F–ˆŽžA??•ª‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B(0-59) + OnHour?? F–ˆ“úA??Žž‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B(0-23) + OnClock???? F–ˆ“úA??Žž??•ª‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B + OnDate???? F–ˆ”NA??ŒŽ??“ú‚ɃCƒxƒ“ƒg‚ð‹N‚±‚µ‚Ü‚·B + EÚ‚µ‚‚Í npc_test_ev.txt ‚ðŽQÆ + + (conf/) + npc_test_ev.txt + “à—e’ljÁ + (map/) + npc.c + FXC³ + +E‚»‚Ì‘¼ + clif.c + ƒRƒ“ƒpƒCƒ‹Œx‚ªo‚È‚¢‚悤‚ÉC³ + +-------------- +//0725 by Ž€_ + +EŽI—Ž‚¿ƒoƒOC³B +Eƒ‚ƒ“ƒXƒ^[‚ɃCƒxƒ“ƒg‚ªÝ’肳‚ê‚Ä‚¢‚ÄŽ©ŽE‚â‚È‚É‚©‚Ń_ƒ[ƒW‚ð—^‚¦‚½ +•¨‚ª‚È‚¢ê‡ŽI—Ž‚¿Šm’è‚È‚Ì‚Å‚»‚̃}ƒbƒv‚É‚ ‚éƒvƒŒƒCƒ„[‚ð—˜—p‚µ‚Ä +ƒCƒxƒ“ƒgƒXƒNƒŠƒvƒg‚ðŽÀs‚·‚é‚悤‚É•ÏXB + (map/) + makefile C³B + mob.c + mob_timer()Amob_damage() C³B + +-------------- +//0724 by Ž€_ + +EƒoƒOC³‚ƈÀ’艻‚ׂ̈ÌC³B +Eƒyƒbƒg‚ÌUŒ‚‚ŃCƒxƒ“ƒg‚ªˆ—‚³‚ꂸŽI—Ž‚¿‚É‚È‚é–â‘èC³B(–¢ƒeƒXƒg) +Eƒ‚ƒ“ƒXƒ^[‚Ì‘å—Ê”¶‚ÅŽI‚ª—Ž‚¿‚é–â‘èC³B(ƒ‚ƒ“ƒXƒ^[‚ð10000•C‚ðŒÄ‚ñ‚Å +–‚–@‚Å“|‚·‚±‚Æ‚ð5‰ñ’öƒeƒXƒgB‚½‚¾“®‚©‚È‚¢‚â‚‚̂ÝB) +EŽæ‚芪‚«‚ªƒ{ƒX‚ƈê‚ÉŽ€‚ÊŽžƒAƒCƒeƒ€‚ð—Ž‚Æ‚³‚È‚¢‚悤‚É•ÏXB(–¢ƒeƒXƒg) +Ebattle_athena.conf‚Ìpc_skillflee‚ðplayer_skillfree‚É•ÏX‚µ‚Ĉ—‚ð•ÏXB +EƒAƒCƒXƒEƒH[ƒ‹‚Éskill_unit_setting‚ðŽg‚¤ƒXƒLƒ‹‚ÅUŒ‚‚Å‚«‚È‚¢‚悤‚ÉC³B +E‚»‚Ì‘¼×‚©‚¢C³‚µBˆÀ’艻‚³‚ꂽ‚©‚Ç‚¤‚©‚Í‚Ü‚¾‚í‚©‚è‚Ü‚¹‚ñ‚ªXP1800+A512MAƒ‚ƒ“ƒXƒ^[”z’u50%‚Å10000•C¢Š«‚µ‚ĈÙí‚È‚©‚Á‚½‚Ì‚Å‘åä•v‚É‚È‚Á‚½‚ÆŽv‚¢‚Ü‚·B‘åä•v‚¶‚á‚È‚‚Ä‚àÓ”C‚Í‚Æ‚ê‚Ü‚¹‚ñ‚ª... + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + mob.h C³B + mob.c + mob_timer()Amob_deleteslave_sub()Amob_damage() C³B + npc.c + npc_event() C³B + skill.c + skill_area_sub()Askill_unit_onplace()Askill_castend_nodamage_id() C³B + clif.c + clif_parse_GMKick() C³B + battle.h + battle.c + battle_damage()Abattle_check_target()Abattle_config_read() C³B + pc.c + pc_calc_skilltree()Apc_checkskill() C³B + map.h C³B + map.c + map_foreachinarea()Amap_foreachinmovearea() C³B + map_foreachobject() C³B + +-------------- +//0723 by DRG + +E0719‚ÌC³ + (map/) + pc.c pc_calc_skilltree()C³ + +-------------- +//0722 by ƒpƒCƒ“ + +Egcc 2.29Œn—ñ‚Å‚àƒRƒ“ƒpƒCƒ‹‚ª’Ê‚é‚悤‚ÉC³B +@‚±‚ê‚͈ȑO‚É‚à’¼‚µ‚½‚Í‚¸‚È‚Ì‚Å‚·‚ªA‚È‚º‚©Œ³‚É–ß‚Á‚Ä‚¢‚Ü‚µ‚½‚Ì‚Å +@ŠF‚³‚ñ’ˆÓ‚ð‚¨Šè‚¢‚µ‚Ü‚·B +@‚ ‚ÆAgcc3Œn—ñ‚È‚ç’蔂͂ǂ±‚É‘‚¢‚Ä‚à–â‘è‚È‚¢‚Ì‚Å‚·‚ªA +@gcc2.29Œn—ñ‚Å‚Íu•K‚¸ƒuƒƒbƒN—v‘f‚̈ê”Ôʼnv‚É‘‚©‚È‚¢‚ƃRƒ“ƒpƒCƒ‹‚ª +@’Ê‚è‚Ü‚¹‚ñ‚Ì‚Å‚±‚¿‚ç‚à‚²’ˆÓŠè‚¢‚Ü‚·B + +ƒRƒ“ƒpƒCƒ‹‚ª’Ê‚é—á +void hoge() { + const char booboo = 1; + c + +ƒRƒ“ƒpƒCƒ‹‚ª’Ê‚ç‚È‚¢—á +void hoge() { + c + const char booboo = 1; + c + + (map/) + skill.h ƒ}ƒNƒ‚ðC³ + skill.c skill_addisional_effect()C³ + +-------------- +//0721 by ¹ + +Eƒ{ƒX‚ɃŒƒbƒNƒXƒfƒr[ƒi‚ªŒø‚¢‚½–â‘è‚ðC³B +Eƒ{ƒX‚ɃJ[ƒh‚É‚æ‚éó‘ÔˆÙ킪Œø‚©‚È‚©‚Á‚½–â‘è‚ðC³B +@–{ŽI‚ł̓}ƒŠƒiƒJ[ƒh“™‚ŃI[ƒNƒq[ƒ[‚È‚Ç‚ð‰£‚é‚ÆŽžX“€Œ‹‚µ‚Ü‚·B +@(Œ‹\”÷–‚ÈŽÀ‘••û–@‚È‚Ì‚ÅA‰½‚©–â‘肪‚ ‚Á‚½ê‡ +@ ‚»‚Ì•ÓÚ‚µ‚¢•û‚¨‚è‚Ü‚µ‚½‚çC³‚µ‚Ä‚â‚Á‚Ä‚‚¾‚³‚¢(^^; )) + +-------------- +//0720 by ŒÓ’±—– + +EPC‚ÉIW‚ðd‚Ë‚é‚ÆMOB‚ªUŒ‚‚µ‚Ä‚±‚È‚¢–â‘è‚ðC³ + EIW‚Éd‚È‚Á‚Ä‚¢‚Ä‚àA—×ډ”\‚È‚çMOB‚ª‹ßŠñ‚Á‚Ä‚«‚Ü‚· + E‚Ç‚ñ‚È’nŒ`‚É‚¢‚Ä‚àA—×Ú‚µ‚Ä‚¢‚é‚È‚çUŒ‚‰Â”\‚É‚È‚è‚Ü‚· + E‚½‚¾‚µAMOB‚ª‰“‹——£UŒ‚‰Â”\‚ÅAUŒ‚”͈͓à‚ÉPC‚ª‚¢‚Ä‚àA + —×Ú•s‰Â”\‚È‚çUŒ‚‚µ‚Ä‚«‚Ü‚¹‚ñB‚±‚ê‚Ì‰ðŒˆ‚Í‚©‚È‚è–Ê“|‚È‚Ì‚ÅB + + mob.c + mob_can_reach()C³ + battle.c + battle_check_range()C³ + +-------------- +//0719 by DRG + +E‰ºˆÊƒXƒLƒ‹‚ª‚È‚¢ê‡‚ÍãˆÊƒXƒLƒ‹‚ª‚Ó‚ê‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B +@battle_athena.conf‚Ìskillflee‚ÅÝ’è‰Â”\‚Å‚·B +@‰ºˆÊƒXƒLƒ‹‚ª‚È‚¢‚Ü‚ÜãˆÊƒXƒLƒ‹‚ð‚Ó‚Á‚½ó‘Ô‚ÅA‚±‚̃IƒvƒVƒ‡ƒ“‚ðŽg‚¤ê‡‚̓XƒLƒ‹ƒŠƒZƒbƒg‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B +@ˆê”ʃAƒJ‚ɃXƒLƒ‹ƒŠƒZƒbƒg‚ð‰ð•ú‚µ‚½‚¢‚Æ‚«‚ÉŽg‚Á‚Ä‚â‚Á‚ĉº‚³‚¢B + (conf/) + battle_athena.conf + (map/) + battle.c + battle.h + pc.c pc_calc_skilltree(),pc_checkskill()C³ + +-------------- +//0718 by Ž€_ + +EFX‚ÆC³B +E“Å‚É‚æ‚Á‚Ä–hŒä‚ªŒ¸‚é‚悤‚É•ÏXB(HP‚Í‚Ü‚¾Œ¸‚è‚Ü‚¹‚ñB) +EƒAƒCƒXƒEƒH[ƒ‹‚ÉUŒ‚‚Å‚«‚é‚悤‚É•ÏXB(¡‚Í‘S‚Ä‚ÌUŒ‚‚É“–‚½‚è‚Ü‚·B) +‚½‚¾ˆÆ‚̃oƒO‚炵‚ƒAƒCƒXƒEƒH[ƒ‹‚ðƒNƒŠƒbƒN‚·‚é‚ƈƂ©‚ç0x89ƒpƒPƒbƒg‚ª30‰ñˆÈã˜A‘±‚Å‘—‚Á‚Ä‚‚邱‚Æ‚ª‹N‚±‚è‚Ü‚·‚ªŒ´ˆö‚Í•s–¾‚Å‚·B‘½•ªˆÆ‚̃oƒO‚¾‚ÆŽv‚¢‚Ü‚·‚ª...) +E퓬‚ÉŠÖ‚í‚éŒvŽZ“™‚ðC³B +Eƒ[ƒj‚ª‘‚¦‚éƒoƒOC³B(‘½•ª‚±‚ê‚Å‚±‚̃oƒO‚Í‚È‚‚È‚é‚ÆŽv‚¢‚Ü‚·‚ª‚Ç‚¤‚È‚Ì‚©•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B) +E“ñ“—¬‚̶Žè•Ší‚ÌŽí‘°A‘®«ASize‚̃_ƒ[ƒW•â³‚ð‰EŽè•Ší‚É“K—p‚·‚é‚©‚Ç‚¤‚©‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB +E‚»‚Ì‘¼C³‚Í‚µ‚½‚Í‚¸‚Å‚·‚ªŠo‚¦‚Ä‚Ü‚¹‚ñB(C³‚µ‚Ä‚È‚¢•¨‚à‚ ‚è‚Ü‚·‚ªdiff“–‚Ä‚Ì“r’†‚Å‚Ç‚ê‚ðì‹Æ‚µ‚½‚Ì‚©‚ð–Y‚ꂽ‚Ì‚Å...) + (common/) + mmo.h C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + battle.h C³B + battle.c + battle_get_baseatk()Abattle_get_speed()Abattle_get_adelay() ’ljÁB + battle_get_amotion() Abattle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_get_atk()Abattle_get_atk_()Abattle_get_atk2() C³B + battle_get_attack_element()Abattle_get_attack_element2() C³B + battle_get_str()Abattle_get_agi()Abattle_get_vit()Abattle_get_int() C³B + battle_get_dex()Abattle_get_luk()Abattle_get_flee() C³B + battle_get_flee2()Abattle_get_hit()Abattle_get_critical() C³B + battle_get_def()Abattle_get_def2()Abattle_get_mdef() C³B + battle_get_element()Abattle_check_target()Abattle_check_range() C³B + battle_weapon_attack()Abattle_config_read() C³B + clif.c + clif_skill_estimation()Aclif_mob0078()Aclif_mob007b() C³B + pc.c + pc_attack_timer()Apc_attack()Apc_calcstatus()Apc_payzeny() C³B + pc_getzeny() C³B + npc.c + npc_buylist()Anpc_selllist() C³B + pet.c + pet_attack()Apet_randomwalk()Apet_ai_sub_hard() C³B + mob.h C³B + mob.c + calc_next_walk_step()Amob_attack()Amobskill_castend_id() C³B + mobskill_use_id()Amobskill_use_pos()Amob_ai_sub_hard() C³B + mob_damage()Amob_changestate() C³B + mob_get_adelay()Amob_get_speed() íœB + skill.h C³B + skill.c + skill_unitsetting()Askill_unit_ondamaged()Askill_unit_timer_sub() C³B + skill_unit_timer()Askill_area_sub()Askill_unit_onplace() C³B + skill_status_change_start() C³B + chat.c C³B + makefile C³B + chrif.c C³B + guild.c C³B + itemdb.c C³B + map.c C³B + party.c C³B + script.c C³B + path.c C³B + +-------------- +//0717 by ¹ + +E‘å—ʂɃ‚ƒ“ƒXƒ^[‚ð¢ŠÒ‚µ‚Ĉê“x‚É“|‚·‚Æmap-server‚ª—Ž‚¿‚é–â‘è‚ðC³B +@(ƒJƒz‚ð100‘Ì‚¸‚¢ŠÒ‚µ‚Ä50‰ñƒeƒXƒg‚ð‚µ‚½‚Ì‚Å‹°‚ç‚‘åä•v‚¾‚ÆŽv‚¢‚Ü‚·B) +E‚»‚Ì‘¼Œ‹\ׂ©‚¢C³ + (common/) + mmo.h + (map/) + chat.c + chrif.c + clif.c + guild.c + itemdb.c + map.c + mob.c + npc.c + party.c + path.c + pc.c + pet.c + script.c + skill.c + skill.h + +-------------- +//0716 by ¹ + +E¸˜B¬Œ÷—¦‚ɑ΂µ‚ÄBS‚Ì•ŠíŒ¤‹†‚ª³‚µ‚“K—p‚³‚ê‚Ä‚¢‚È‚©‚Á‚½–â‘è‚ðC³B + (map/) + pc.c + pc_percentrefinery() C³B + +-------------- +//0715 by Ž€_ + +Eƒ}ƒbƒvƒT[ƒo[‚©‚ç•\Ž¦‚³‚ê‚镨‚ð•\Ž¦‚·‚é‚©‚Ç‚¤‚©‚Ìݒ肪‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½BƒXƒLƒ‹•\Ž¦‚¾‚¯‚Å‚à‚È‚‚µ‚Ä‚â‚é‚ƃT[ƒo[‚ª‚©‚È‚èŠy‚É‚È‚Á‚½‚è‚à‚µ‚Ü‚·B +ŠJ”‚âƒoƒOƒgƒŒ[ƒX‚ÌŽž‚Í•\Ž¦‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B +E‚»‚Ì‘¼×‚©‚¢C³B +EC³‚µ‚½Š‚ð‘S‚Ä‘‚¯‚È‚¢‚̂Ńtƒ@ƒCƒ‹‚¾‚¯B + (doc/) + conf_ref.txt + (conf/) + battle_athena.conf + (map/) + makefile + skill.c + script.c + pet.c + pc.c + path.c + party.c + npc.c + itemdb.c + intif.c + guild.c + chat.c + battle.h + battle.c + chrif.c + atcommand.c + clif.c + mob.c + map.c + +-------------- +//0714 by Ž€_ + +Eׂ©‚¢C³B +EƒV[ƒ‹ƒhƒu[ƒƒ‰ƒ“‚Å‚‚Ìd—ʂƸ˜B‚É‚æ‚Á‚ă_ƒ[ƒW‚ª‘‚¦‚é‚悤‚ÉC³B¸˜Bƒ_ƒ[ƒW‚ð‘«‚·Žž“K—p‚Ń_ƒ[ƒW+d—Ê+‚¸˜B*4(‚±‚Ì4‚Írefine_db.txt‚Ì–h‹ï‚̉ß踘Bƒ{[ƒiƒX‚ðŽg‚Á‚Ä‚é‚Ì‚Å•ÏX‰Â”\‚Å‚·B)‚É‚È‚è‚Ü‚·B +EƒXƒLƒ‹‚É‚æ‚é‚«”ò‚΂µˆ—‚Å0x88ƒpƒPƒbƒg‚ðŽg‚Á‚Ä‚¢‚Ü‚µ‚½‚ª‚»‚̃pƒPƒbƒg‚Ì—D懈ʂª‚©‚È‚è’á‚¢‚炵‚Œã‚Å—ˆ‚éƒpƒPƒbƒg‚É‚æ‚Á‚Ä–³Ž‹‚³‚ê‚邱‚Æ‚à‚ ‚é‚悤‚Ȃ̂ŃvƒŒƒCƒ„[‚¾‚¯‚É“K—p‚µ‚ă‚ƒ“ƒXƒ^[‚É‚Í0x78‚ðŽg‚¤‚悤‚É•ÏX‚µ‚Ü‚µ‚½B +‚Å‚àˆÊ’u‚¸‚ê‚ÍŠ®‘S‚É‚È‚‚È‚ç‚È‚¢‚悤‚Å‚·B(‹°‚炈Ƃ̃oƒO‚¾‚ÆŽv‚¢‚Ü‚·BŽI‚Ì +À•W‚ðŠm”F‚µ‚Ä‚Ý‚Ü‚µ‚½‚ªŽI‚Ì•û‚Í–â‘肪‚ ‚è‚Ü‚¹‚ñ‚Å‚µ‚½B) +ƒvƒŒƒCƒ„[‚Ìê‡0x78(PACKETVER‚ª4ˆÈã‚È‚ç0x1d8)‚ªŽg‚¦‚Ü‚¹‚ñB•ªg‚ðì‚Á‚Ä‚µ‚Ü‚¤‚Ì‚Å... +EƒoƒO•ñƒXƒŒƒbƒh2 ‚Ì47‚ðŽæ‚èž‚Ý‚Ü‚µ‚½B +E‚»‚Ì‘¼C³‚µ‚½Š‚µ‚ ‚èB + (db/) + refine_db.txt C³B + item_db.txt C³B + (map/) + battle.c + battle_stopattack()Abattle_stopwalking() C³B + battle_get_attack_element2()Abattle_calc_pc_weapon_attack() C³B + battle_weapon_attack() C³B + path.c + path_blownpos() C³B + pc.h C³B + pc.c + pc_stop_walking()Apc_damage() C³B + pc_getrefinebonus() ’ljÁB + mob.c + mob_damage() C³B + pet.c + pet_target_check()Apet_stop_walking()Apet_performance() C³B + skill.c + skill_attack()Askill_blown()Askill_status_change_start() C³B + skill_castend_damage_id() C³B + makefile C³B + +-------------- +//0713 by ‚Û‚Û‚Û + +Emob_avail.txt’ljÁBitem_avail.txt‚Æ“¯—l‚ÌŽw’è‚Ń‚ƒ“ƒXƒ^[‚ÌŒ©‚½–ڂ𑼂ÌID‚Ì‚à‚Ì‚É•ÏX‚µ‚Ü‚·B +@ƒ‚ƒ“ƒXƒ^[‚ÌIDˆÈŠO‚ðŽw’肵‚½‚è‚·‚é‚ÆPC‚âNPC‚ÌŽp‚ð‚µ‚½MOB‚Ɉê•û“I‚ÉUŒ‚‚³‚ê‚éꇂª‚ ‚é‚Ì‚Å’ˆÓB + (db/) + mob_avail.txt ’ljÁB + (map/) + clif.c + clif_mob0078()Aclif_mob007b() C³B + mob.h C³B + mob.c + mob_readdb_mobavail()Amob_get_viewclass()’ljÁB + do_init_mob()Amob_readdb() C³B + +-------------- +//0712 by Ž€_ + +EƒV[ƒ‹ƒhƒ`ƒƒ[ƒWAƒV[ƒ‹ƒhƒu[ƒƒ‰ƒ“ŽÀ‘•B +EƒI[ƒgƒK[ƒh‚Í‚Æ‚è‚ ‚¦‚¸ƒGƒtƒFƒNƒg‚ªo‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B +E0708‚Å‘‚«–Y‚êBƒfƒBƒtƒFƒ“ƒ_[‚ðŽg‚Á‚½ŽžASPD‚ƈړ®‘¬“x‚Í20%’ቺ‚µ‚Ü‚·B +–{ŽI‚Œቺ‚·‚é‚Ì‚ÍŠm‚©‚̂悤‚Å‚·‚ª‚Ç‚ê‚®‚ç‚¢‰º‚ª‚é‚Ì‚©‚Í‚³‚Á‚Ï‚è‚í‚©‚è‚Ü‚ñ‚Ì‚Å... +E‚»‚Ì‘¼×‚©‚¢C³B + (db/) + cast_db.txt C³B + skill_db.txt C³B + (map/) + battle.h C³B + battle.c + battle_calc_damage()Abattle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_calc_magic_attack()Abattle_calc_misc_attack() C³B + skill.c + skill_additional_effect()Askill_attack()Askill_castend_nodamage_id() C³B + skill_check_condition()Askill_status_change_start() C³B + skill_castend_damage_id() C³B + pc.h C³B + pc.c + pc_calcstatus()Apc_checkallowskill()Apc_unequipitem() C³B + +-------------- +//0711 by npc + +Ezλ‘¢ƒGƒtƒFƒNƒg‚ÌC³ +EƒXƒNƒŠƒvƒg–„‚ßž‚Ý•Ï”‚ÉHp,MaxHp,Sp,MaxSp‚ð’ljÁ(“Ç‚Ýž‚Ý‚Ì‚Ý) + (map/) + skill.c + skill_produce_mix()C³B + pc.c + pc_readparam()C³B + (db/) + const.txt C³B + +-------------- +//0710 by ŒÓ’±—– + +E–¼‘O‚É”¼ŠpƒXƒy[ƒX‚ª“ü‚Á‚½ƒp[ƒeƒB[‚ð쬂µ‚½‚Æ‚«A‚¨‚æ‚ÑA + ”¼ŠpƒXƒy[ƒX‚ª“ü‚Á‚½–¼‘O‚ÌPC‚ðƒp[ƒeƒBƒƒ“ƒo‚É‚µ‚½‚Æ‚«A + party.txt‚ª³‚µ‚“Ç‚Ýž‚ß‚È‚‚È‚é–â‘è‚ðC³ + + (char/) + int_party.c + inter_party_fromstr()C³ + +EMessage of the Day ‹@”\’ljÁ + EƒƒOƒCƒ“‚µ‚½ƒ†[ƒU[‚ÉMOTD‚ð•\Ž¦‚³‚¹‚邱‚Æ‚ªo—ˆ‚Ü‚·B + Emap-server.exeŽÀsŽž‚̃JƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠihelp.txt‚Æ“¯‚¶ + ƒfƒBƒŒƒNƒgƒŠj‚Émotd.txt‚ðì‚é‚Æ•\Ž¦‚µ‚Ü‚·B + EMOTD‚ª•\Ž¦‚³‚ê‚éƒ^ƒCƒ~ƒ“ƒO‚ÍA + uƒ}ƒbƒvƒT[ƒo[‚ɃƒOƒCƒ“‚µ‚½’¼Œã‚ÌAƒ}ƒbƒvƒ[ƒhŠ®—¹Žžv‚Å‚·B + ‚‚܂èAƒƒOƒCƒ“’¼ŒãAƒLƒƒƒ‰ƒZƒŒ’¼Œã‚¨‚æ‚ÑA + ƒ}ƒbƒvƒT[ƒo[ŠÔˆÚ“®‚ÌŽž(ƒ}ƒbƒvƒT[ƒo[‚Ì•ªŽU‚ðs‚Á‚Ä‚¢‚éꇂ̂Ý) + ‚̃}ƒbƒvƒ[ƒh‚ªI‚í‚Á‚½Žž‚É•\Ž¦‚³‚ê‚Ü‚·B + E•\Ž¦•û–@‚Íhelp.txt‚Æ“¯‚¶‚Å•’ʂ̃ƒbƒZ[ƒW‚Æ‚µ‚Ä‘—M‚µ‚Ü‚·B + iƒMƒ‹ƒh’mƒƒbƒZ[ƒW‚Í•¶Žš”§ŒÀ‚ª‚ ‚èAGMƒAƒiƒEƒ“ƒX‚Í’·ŽžŠÔ + ‰æ–Ê‚Ìã•”‚É•\Ž¦‚³‚ê‚Ä‚µ‚Ü‚¤‚½‚ßj + E‰ï˜b‚Æ‹æ•Ê‚ª‚‚‚悤‚ÉA"< Message of the Day >"A"< End of MOTD >" + ‚Ì•¶‚Å㉺‚ðˆÍ‚¢‚Ü‚·B + + (map/) + pc.c + pc_authok()C³ + + +-------------- +//0709 by ‚Û‚Û‚Û + +EƒXƒNƒŠƒvƒg‚Éemotion’ljÁ +@emotion n;‚ÆŽg‚¤‚ÆNPC‚ªƒGƒ‚‚ðo‚µ‚Ü‚·Bn‚Í0`33‚ªŽg—p‰Â”\B +E¸˜B‚ÆŠXƒKƒCƒh‚ÌNPC‚ð–{ŽI‚̑䎌‚ɇ‚킹‚ÄC³B + (conf/) + npc_town_refine.txtAnpc_town_guide.txt C³B + (map/) + script.c + buildin_emotion() ’ljÁB + +-------------- +//0708 by Ž€_ + +EƒXƒLƒ‹ƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹AƒfƒBƒtƒFƒ“ƒ_[AƒI[ƒgƒK[ƒhŽÀ‘•B +EƒI[ƒgƒK[ƒh‚ÌꇃK[ƒh‚µ‚Ä‚àƒGƒtƒFƒNƒg‚Ío‚Ü‚¹‚ñBƒ~ƒX‚ɂȂ邾‚¯‚Å‚·B–{ŽI‚Ì•û‚Í•\Ž¦‚³‚ê‚é‚©‚Ç‚¤‚©‚à‚í‚©‚ç‚È‚¢‚µƒpƒPƒbƒgî•ñ‚à‚È‚¢‚Ì‚Å... +EƒfƒBƒtƒFƒ“ƒ_[‚Í–¢ƒeƒXƒgBbLongAtkDef‚ðŽg‚Á‚Ä‚é‚̂Ńzƒ‹ƒ“ƒJ[ƒh‚̂悤‚ÉbLongAtkDef‚ðã‚°‚镨‚ð‘•”õ‚µ‚ÄŽg‚¤‚Ɖ“‹——£•¨—UŒ‚‚ð‘S‚Ä–³Œø‚É‚Å‚«‚Ü‚·B(‚±‚ê‚à–{ŽI‚ÌŽd—l‚ª‚Ç‚¤‚È‚Ì‚©‚Í‚í‚©‚è‚Ü‚¹‚ñB) +E‚»‚Ì‘¼×‚©‚¢C³B + (db/) + cast_db.txt C³B + (map/) + map.h C³B + map.c + map_quit() C³B + skill.h C³B + skill.c + skill_castend_nodamage_id()Askill_use_id()Askill_check_condition() C³B + skill_castend_id()Askill_castend_nodamage_id()Askill_castcancel() C³B + pc.c + pc_calcstatus()Apc_setpos()Apc_damage() C³B + battle.c + battle_calc_damage()Abattle_damage() C³B + clif.c + clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B + mob.c + mob_damage() C³B + itemdb.c + itemdb_searchrandomid() C³B + +-------------- +//0707 by Ž€_ + +E0705‚̈¢C—…”e–PŒ‚̃oƒOC³B + (db/) + skill_db.txt + (map/) + skill.c + skill_castend_id() + skill_castend_pos() + battle.c + battle_calc_pc_weapon_attack() + clif.c + clif_parse_UseSkillToId() + +-------------- +//0706 by kalen +EC³ + conf/npc_warp_umbala.txt + +-------------- +//0705 by Ž€_ + +EFX‚ÆC³B +EƒvƒŒƒCƒ„[‚̃NƒŠƒeƒBƒJƒ‹ŒvŽZ‚ɃoƒO‚ª‚ ‚Á‚½‚Ì‚ÅC³B +E”š—ô”g“®‚̈—C³B +Eƒ‚ƒ“ƒN‚̃Rƒ“ƒ{‚ðC³B +Eˆ¢C—…”e–PŒ‚ÌŽg—p‚É‚æ‚Á‚ă}ƒbƒvŽI‚Ì–³ŒÀƒ‹[ƒvƒoƒOC³B(‚±‚ê‚©‚È‚è’v–½“I‚È•¨‚¾‚Á‚½‚悤‚Å‚·B) +EƒRƒ“ƒ{‚ÅŽg‚¤ˆ¢C—…”e–PŒ‚Í“G‚ðƒNƒŠƒbƒN‚·‚é•K—v‚ª‚È‚¢‚悤‚ÉC³B +E–Ò—´Œ‚Å“G‚ð‚«”ò‚΂·‹——£‚ð5ƒZƒ‹‚É•ÏXB‚æ‚Á‚ăRƒ“ƒ{‚ÅŽg‚¤ˆ¢C—…”e–PŒ‚Í‹——£ƒ`ƒFƒbƒN‚ð‚µ‚Ü‚¹‚ñB5ƒZƒ‹”ò‚΂³‚ꂽ“G‚͈¢C—…”e–PŒ‚ÌŽË’ö‚©‚ç—£‚ꂽ‚킯‚È‚Ì‚Å‹——£ƒ`ƒFƒbƒN‚È‚µ‚Å”“®‚µ‚Ü‚·B(–{ŽI‚ÌŽd—l‚È‚ñ‚Ä’m‚è‚Ü‚¹‚ñB) +Eƒ}ƒbƒv‚Ì–¼‘O‚ð16byte‚©‚ç24bytes‚É•ÏXB(‘債‚½ˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñ‚ªˆÀ‘S‚ׂ̈̕¨‚Å‚·B) +EƒEƒFƒfƒBƒ“ƒOƒLƒƒƒ‰‚É‚æ‚éˆÆ—Ž‚¿‚ð–h‚®ˆ×‚ÉC³B +E‚»‚Ì‘¼‚µC³B(ƒeƒXƒg‚Í–w‚ñ‚Ç‚µ‚Ä‚Ü‚¹‚ñB) + (conf/) + battle_athena.conf C³B + (db/) + skill_db.txt C³B + (common/) + mmo.h C³B + (doc/) + conf_ref.txt C³B + item_bonus.txt C³B + (map/) + battle.h C³B + battle.c + battle_get_flee2()Abattle_calc_pet_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_weapon_attack()Abattle_calc_magic_attack() C³B + battle_config_read() C³B + skill.h C³B + skill.c + skill_status_change_start()Askill_castend_damage_id() C³B + skill_check_condition()Askill_use_id()Askill_blown() C³B + skill_castend_map()Askill_unit_onlimit()Askill_attack() C³B + pc.c + pc_attack_timer()Apc_setpos()Apc_setsavepoint() C³B + pc_movepos()Apc_calcstatus()Apc_bonus() C³B + clif.h C³B + clif.c + clif_set0078()Aclif_set007b() C³B + clif_updatestatus()Aclif_initialstatus()Aclif_parse_UseSkillToId() C³B + clif_skillinfo() ’ljÁB + map.h C³B + map.c + map_setipport()Amap_addmap() C³B + ‚»‚Ì‘¼”²‚¯‚½Š‚µ‚ ‚èB + +-------------------- +//0704 by kalen + +EUmbala Warp’ljÁ + conf/npc_warp_umbala.txt + +-------------------- +//0703 by ‚¢‚Ç + +EƒT[ƒo[snapshot + +-------------- +//0702 by ‚Û‚Û‚Û + +Eƒtƒ@[ƒ}ƒV[‚̃GƒtƒFƒNƒg‚ð–{—ˆ‚Ì‚à‚Ì‚É•ÏX +EƒXƒNƒŠƒvƒg‚Å‚Ì–„‚ßž‚Ý•Ï”‚ÉBaseExp,JobExp,NextBaseExp,NextJobExp’ljÁ + (map/) + skill.c + skill_produce_mix() C³B + pc.c + pc_readparam()Apc_setparam() C³B + (db/) + const.txt C³B + +-------------- +//0701 by ‚Ò‚´‚Ü‚ñ + +EƒXƒe[ƒ^ƒXˆÙí”»•ÊŽ®“±“üBŠeƒXƒe[ƒ^ƒXˆÙí‚Ì”“®—¦‚ªVIT/INT/MDEF‚ɉe‹¿‚·‚é‚悤‚É‚È‚è‚Ü‚·BŽ‘±ŽžŠÔ’Zk‚Í‚Ü‚½¡“x‚Å_|P|› +E•sŽ€‚É“€Œ‹‚ªŒø‚¢‚½ƒoƒOC³B + (map/) + skill.c + skill_additional_effect()Askill_castend_nodamage_id() C³B + +-------------- +//0700 by “ì + +E697‚̃oƒOC³B +@@@@(db/) + mob_db.txt + +-------------- +//0699 by Ž€_ + +E‘•”õ‚̃{[ƒiƒXƒNƒŠƒeƒBƒJƒ‹‚ÍŽ©•ª‚̊ԈႢ‚¾‚Á‚½‚Ì‚ÅbCriticalRate‚ðbCritical‚É•ÏXB‚»‚ê‚Æ0695‚Å‘‚«–Y‚ê‚Å‚·‚ªASPD‚ðã‚°‚éƒJ[ƒh‚â‘•”õ‚̈ꕔ‚ðbAspdAddRate‚©‚çbAspdRate‚É•ÏX‚µ‚Ü‚µ‚½B‚Ý‚·‚Ƃꑃ‚̃Vƒ~ƒ…ƒŒ[ƒ^[‚É‚æ‚é‚ƃhƒbƒyƒ‹ƒJ[ƒh‚Í•¡”‚Å‚àˆê‚‚µ‚©“K—p‚³‚ê‚È‚¢‚Ý‚½‚¢‚¾‚Á‚½‚Ì‚ÅB + (db/) + item_db.txt + +-------------- +//0698 by Ž€_ + +Eˆê•”‚̃Lƒƒƒ‰‚Éd—Ê‚ª‚O‚É‚È‚Á‚ăJƒvƒ‰‚Ȃlj½‚à‚o‚bC‚m‚b‚o‚ª•\Ž¦‚³‚ê‚È‚‚È‚éƒoƒOC³B(‚»‚ꂾ‚¯) + (common/) + mmo.h C³B + (map/) + clif.c + clif_updatestatus() C³B + pc.c + pc_calcstatus() C³B + +-------------- +//0697 by “ì + +Emob_dbC³ +@ƒhƒƒbƒv‚ð’†S‚ÉC³B +@@@@(db/) + mob_db.txt + +-------------- +//0696 by Ž€_ + +EƒoƒOC³B +EƒeƒŒƒ|[ƒg‚âƒ[ƒv“™‚ÌŽžƒXƒLƒ‹ƒ†ƒjƒbƒg‚©‚甲‚¯‚鈗‚ª“ü‚Á‚Ä +‚È‚©‚Á‚½‚Ì‚ÅSAFETYWALL“™‚É‚æ‚Á‚ÄŽI—Ž‚¿‚ª‹N‚±‚Á‚½‚悤‚Å‚·B(Šm‚©•ñ‚à +‚ ‚Á‚½‚ÆŽv‚¢‚Ü‚·‚ª...) ‚æ‚Á‚ÄC³‚Í‚µ‚Ü‚µ‚½‚ªŠm”F‚Í‚µ‚Ä‚Ü‚¹‚ñB•ñ‚ð +‚¨Šè‚¢‚µ‚Ü‚·B +EƒXƒLƒ‹‚É‚æ‚é‚«”ò‚΂µˆ—‚ð‚¿‚å‚Á‚ÆC³‚ƃ‚ƒ“ƒXƒ^[‚̃R[ƒh‚ð‚µC³B +‘½•ª•Ï‚É‚È‚Á‚½‚±‚Æ‚Í‚È‚¢‚ÆŽv‚¢‚Ü‚·‚ª•Ï‚¾‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B +E‚»‚Ì‘¼×‚©‚¢C³B + (map/) + skill.h C³B + skill.c + skill_blown()Askill_attack()Askill_unit_move() C³B + skill_castend_nodamage_id()Askill_castend_damage_id() C³B + skill_unit_out_all()Askill_unit_out_all_sub() ’ljÁB + mob.c + mob_stop_walking()Amob_spawn()Amob_warp() C³B + mob_can_move()Amob_changestate() C³B + map.h C³B + pc.c + pc_setpos() C³B + battle.c + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack() C³B + +-------------- +//0695 by Ž€_ + +E‚µC³B +EƒvƒŒƒCƒ„[‚ÌŠî–{ƒpƒ‰ƒ[ƒ^‚ð2byte‚ÉŠg’£B +Eitem_db.txt‚ðƒ‰ƒOƒiƒQ[ƒg‚Ìà–¾‚ɇ‚킹‚ÄC³B +EbAddEff‚ÆbResEff‚ÌŠm—¦‚ð•S•ª—¦‚©‚ç–œ•ª—¦‚É•ÏXB +EƒXƒNƒŠƒvƒgstatusup‚Æstatusup2’ljÁB +statusup bStr; ‚̂悤‚ÉŽg‚Á‚Ä‹@”\‚̓Xƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ðŒ¸‚ç‚µ‚Ä +Šî–{ƒpƒ‰ƒ[ƒ^‚ð1ã‚°‚éB +statusup2 bInt,n; ‚̂悤‚ÉŽg‚Á‚Ä‹@”\‚̓Xƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ðŒ¸‚ç‚³‚¸‚É +Šî–{ƒpƒ‰ƒ[ƒ^‚ðnã‚°‚éB +E‚»‚Ì‘¼×‚©‚¢C³B + (conf/) + battle_athena.conf C³B + (db/) + item_db.txt C³B + const.txt C³B + (doc/) + item_bonus.txt C³B + conf_ref.txt C³B + (common/) + mmo.h C³B + (char/) + char.c + mmo_char_send006b()Aparse_char() C³B + (map/) + map.h C³B + clif.h C³B + clif.c + clif_initialstatus()Aclif_updatestatus() C³B + pc.h C³B + pc.c + pc_bonus()Apc_calcstatus()Apc_equippoint()Apc_equipitem() C³B + pc_jobchange()Apc_checkbaselevelup()Apc_statusup() C³B + pc_statusup2() ’ljÁB + battle.h C³B + battle.c + battle_calc_pet_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pc_weapon_attack()Abattle_config_read() C³B + skill.c + skill_additional_effect()Askill_status_change_start() C³B + script.c + buildin_statusup()Abuildin_statusup2() ’ljÁB + atcommnad.c C³B + +-------------- +//0694 by Ž€_ + +EƒoƒOC³‚Æׂ©‚¢C³B +EbCriticalRate‚ª³‚µ‚“K—p‚³‚ê‚È‚©‚Á‚½–â‘èC³B +Eƒyƒbƒg‚É‚æ‚éƒXƒe[ƒ^ƒXƒ{[ƒiƒX’ljÁBƒXƒe[ƒ^ƒXƒ{[ƒiƒX‚Í‘•”õ‚Ì +ƒXƒNƒŠƒvƒg‚É‚æ‚Á‚Äݒ肵‚Ü‚·B‚½‚¾ƒyƒbƒg‚É‚æ‚éƒ{[ƒiƒX‚̓J[ƒh‚É‚æ‚镨‚Æ“¯‚¶ˆµ‚¢‚ð‚µ‚Ü‚·B‚»‚µ‚Ä‘®«‚Ì“K—p‚͈ê”Ô—D懈ʒႢ‚Å‚·B¡‚͉½‚à“ü‚Á‚Ä‚Ü‚¹‚ñ‚ª... + (conf/) + battle_athena.conf C³B + (db/) + const.txt C³B + pet_db.txt C³B + (doc/) + item_bonus.txt C³B + conf_ref.txt C³B + db_ref.txt C³B + (map/) + map.h C³B + map.c + map_quit() C³B + battle.h C³B + battle.c + battle_calc_pc_weapon_attack()Abattle_weapon_attack() C³B + battle_calc_magic_attack()Abattle_calc_misc_attack() C³B + battle_config_read() C³B + pc.c + pc_calcstatus()Apc_bonus()Apc_setpos()Apc_authok() C³B + pc_damage()Apc_autosave_sub() C³B + pet.h C³B + pet.c + pet_hungry()Apet_birth_process()Apet_recv_petdata()Apet_food() C³B + pet_return_egg()Apet_ai_sub_hard()Aread_petdb() C³B + clif.c + clif_sendegg()Aclif_parse_LoadEndAck() C³B + atcommand.c C³B + makefile C³B + +-------------- +//0693 by ŒÓ’±—– + +ESC_*‚Ì—ñ‹“•\‚ðƒŠƒiƒ“ƒoƒŠƒ“ƒO + ƒNƒ‰ƒCƒAƒ“ƒg‚É’Ê’m‚·‚é‚Ì‚ð64–¢–ž‚©‚ç128–¢–ž‚É‘‚₵‚½ + ƒpƒPƒbƒgî•ñ‚ɇ‚¤‚悤‚ɃŠƒiƒ“ƒo[ + StatusChange‚Ì”z—ñ‚ð128‚©‚ç192‚É‘‚₵‚½‚̂Ńƒ‚ƒŠŽg—p—Ê‚ª‘‚¦‚Ü‚·B + + (db/) + const.txt + SC_* ‚Ì”’l‚ð•ÏX + (map/) + skill.h + SC_* ‚Ì—ñ‹“‚Ì”’l‚ð•ÏX + map.h + MAX_STATUSCHANGE‚ð128‚©‚ç192‚É‘‚₵‚½ + skill.c + skill_status_change_start(),skill_status_change_end(), + skill_status_change_clear()‚Ì’Ê’mˆ—‚ð•ÏX + +E‰‰‘t/ƒ_ƒ“ƒX‚̈—‚ð•ÏX + ‰‰‘t/ƒ_ƒ“ƒX’†‚©‚Ç‚¤‚©‚ðSC_DANCING‚Å”»’è‚·‚é‚悤‚É•ÏX + i”»’舗‚ª‘½‚‘¬‰»‚³‚ꂽ‚Í‚¸j + ƒ[ƒv(ƒ}ƒbƒvˆÚ“®‚┈‚È‚Ç)‚·‚é‚Ɖ‰‘t/ƒ_ƒ“ƒX‚ð’†’f‚·‚é‚悤‚É•ÏX + + skill.h/skill.c + skill_check_dancing()íœAskill_stop_dancing()’ljÁ + skill_delunitgroup(),skill_initunitgroup()•ÏX + skill_status_change_start()•ÏX + skill_castend_nodamage_id()•ÏX + ‘‚«‘¹‚¶‚ª‚ ‚é‚©‚àEE + pc.c + pc_calcstatus(),pc_setpos(),pc_damage()•ÏX + +E•s‹¦˜a‰¹ƒXƒLƒ‹‚ÌC³ + (db/) + skill_db.txt + •s‹¦˜a‰¹ƒXƒLƒ‹‚ÌHIT”C³ + (map/) + skill.c + skill_status_change_timer()•ÏX + battle.c + battle_calc_misc_attack()C³ + +-------------- +//0692 by ŒÓ’±—– + +EƒAƒhƒŠƒuƒXƒLƒ‹‚ªŽg—p‚Å‚«‚È‚¢–â‘èC³iskill_db‚Ì“Y•t‚µ–Y‚êj + (db/) + skill_db.txt + ƒAƒhƒŠƒu‚ÌÁ”ïSP‚ð1‚ÉC³ + +Emob_db2.txt‚ª‚ ‚ê‚Îmob_db.txt‚ɃI[ƒo[ƒ‰ƒCƒh‚·‚é‚悤‚É + ƒIƒŠƒWƒiƒ‹mob‚ðì‚Á‚Ä‚él‚ÍŽg‚¤‚Æ•Ö—˜‚©‚à‚µ‚ê‚Ü‚¹‚ñB + + mob.c + mob_readdb() + +EŽI—Ž‚¿ƒoƒO•ñŽž‚Ì‚½‚߂̃Xƒ^ƒbƒNƒoƒbƒNƒgƒŒ[ƒXƒƒOŠ“¾•û–@‚ðЉî + ŽI—Ž‚¿ƒoƒO‚Ì•ñŽž‚ÉA‚±‚Ìî•ñ‚ðƒRƒsƒy‚·‚é‚ÆŠJ”ŽÒ‚ªŠì‚Ñ‚Ü‚·B + Cygwin‚Åcore‚Ì“f‚©‚¹‚é•û–@‚àЉ‚Ä‚Ü‚·B + + (doc/) + coredump_report.txt + +-------------- +//0691 by ŒÓ’±—– + +Eitem_db2.txt‚ª‚ ‚ê‚Îitem_db.txt‚ɃI[ƒo[ƒ‰ƒCƒh‚·‚é‚悤‚É + ƒIƒŠƒWƒiƒ‹ƒAƒCƒeƒ€‚ðì‚Á‚Ä‚él‚ÍŽg‚¤‚Æ•Ö—˜‚©‚à‚µ‚ê‚Ü‚¹‚ñB + + itemdb.c + itemdb_readdb()C³ + +E‰‰‘t/ƒ_ƒ“ƒXŒnƒXƒLƒ‹‰¼ŽÀ‘• + E‰‰‘t/ƒ_ƒ“ƒX’†‚͈ړ®‚ª’x‚AƒXƒLƒ‹‚àŽg‚¦‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½ + EƒAƒhƒŠƒuƒXƒLƒ‹‚ʼn‰‘t/ƒ_ƒ“ƒX‚ð’†’f‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + E‰‰‘t/ƒ_ƒ“ƒX‚ÍΉ»‚Ȃǂ̈ÙíAMHP‚Ì1/4ˆÈã‚̃_ƒ[ƒW‚Å’†’f‚µ‚Ü‚· + EƒLƒƒƒ‰ƒNƒ^[ƒOƒ‰ƒtƒBƒbƒN‚͉‰‘t/ƒ_ƒ“ƒX‚µ‚Ü‚¹‚ñ + E‰‰‘t/ƒ_ƒ“ƒX’†‚ÌSPÁ”ï‚Í–¢ŽÀ‘•‚Å‚· + EˆÚ“®‚µ‚Ä‚àŒø‰Ê”͈͂͂‚¢‚Ä‚«‚Ü‚¹‚ñ + Ed•¡‚µ‚Ä‚à•s‹¦˜a‰¹‚Ȃǂɕω»‚µ‚Ü‚¹‚ñ + EƒGƒtƒFƒNƒg‚ªo‚Ä‚àŒø‰Ê‚Í–¢ŽÀ‘•‚Ì‚à‚Ì‚ª‚ ‚è‚Ü‚· + E‚Ù‚Æ‚ñ‚Ç–¢ƒeƒXƒg‚È‚Ì‚Å‘½”‚Ì•s“s‡‚ª‚ ‚é‚ÆŽv‚¢‚Ü‚· + + skill.h + SC_* ‚Ì—ñ‹“•\‚ðC³ + skill.c + skill_check_dancing()’ljÁ + SkillStatusChangeTable[]C³ + skill_unit_onout(), skill_status_change_start(), + skill_status_change_timer(),skill_unitsetting(), + skill_castend_id(),skill_castend_pos(),skill_castend_map(), + skill_castend_nodamage_id()C³ + ‚»‚Ì‘¼‚Í–Y‚ê‚Ü‚µ‚½ + pc.c + pc_calcstatus(),pc_damage()C³ + +-------------- +//0690 by ”g˜Q + +Eׂ©‚¢C³ + (db/) + item_db.txt ‚ƃƒMƒ“ƒMƒ‡ƒ‹ƒh‚Ìbonus‚ðC³B + (doc/) + item_bonus.txt C³B + +-------------- +//0689 by Ž€_ + +E‘qŒÉƒoƒOC³‚Æׂ©‚¢C³B + (map/) + pc.c + pc_modifybuyvalue()Apc_modifysellvalue() C³B + storage.c + storage_storageopen() C³B + storage_storage_quit()Astorage_storage_save() C³B + +-------------- +//0688 by ¹ + +EƒfƒBƒXƒJƒEƒ“ƒgAƒRƒ€ƒpƒ‹ƒVƒ‡ƒ“ƒfƒBƒXƒJƒEƒ“ƒgAƒI[ƒo[ƒ`ƒƒ[ƒW‚ª“K—p‚³‚ê‚È‚©‚Á‚½–â‘è‚ðC³B + (map/) + pc.c + pc_modifybuyvalue() C³B + pc_modifysellvalue() C³B + +-------------- +//0687 by Ž€_ + +E‚µC³B +Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚Å) +Eitem_avail.txt‚̈—‚ð•ÏXBƒAƒCƒeƒ€ID‚ÌŒã‚É0‚ð“ü‚ê‚é‚Æ¡‚Ü‚Å’Ê‚è‚ÉŽg—p•s‰Â”\‚ɂȂ邪0ˆÈŠO‚Ì”’l‚ð“ü‚ê‚é‚ÆŽg—p•s‰Â”\‚Å‚Í‚È‚‚»‚Ì”’l‚ðƒAƒCƒeƒ€‚ÌID‚Æ‚µ‚ÄŒ©‚½–Ú‚¾‚¯‚ð‚»‚ê‚É•ÏX‚µ‚Ü‚·B‚æ‚Á‚ĈƗŽ‚¿ƒAƒCƒeƒ€‚ð•Ê‚Ì•¨‚É•\Ž¦‚µ‚ĈƗŽ‚¿‚ð–h‚®‚±‚Æ‚ª‚Å‚«‚Ü‚·B(•\Ž¦‚¾‚¯•Ï‚¦‚ÄŽI‚̈—‚Í–{“–‚̃AƒCƒeƒ€ID‚Ì•¨‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚·BC³‚Í‘S‚Ä‚µ‚½‚ÆŽv‚¢‚Ü‚·‚ª”²‚¯‚½Š‚ª‚ ‚é‚©‚à’m‚è‚Ü‚¹‚Ì‚ÅŒ©‚½–Ú•ÏX‚µ‚½ƒAƒCƒeƒ€‚ňƗŽ‚¿‚ª‹N‚±‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B) ŽI‚̈—‚Í‚±‚ꂪŒÀŠE‚Å‚·B(‚È‚‚Æ‚àŽ©•ª‚É‚Í) ƒAƒCƒeƒ€‚ª“¯‚¶•¨‚ª“ñ‚•\Ž¦‚³‚ê‚ĊԈႢˆÀ‚¢‚Æ‚©‚Ç‚¤‚±‚¤‚Æ‚©‚Ì•¶‹å‚ðŒ¾‚¢‚½‚¢l‚͈Æì‚ê‚æBˆÈãB +EƒWƒ‹ƒ^ƒX‚ƃAƒŠƒX‚̃Rƒ}ƒ“ƒgƒAƒEƒg‰ðœBitem_avail.txt‚Å—‘‚ðƒ‹ƒr[‚ƃAƒNƒAƒ}ƒŠƒ“‚Å•\Ž¦‚µ‚ĕߊlƒAƒCƒeƒ€‚à‘¼‚Ì•¨‚É•\Ž¦‚·‚é‚悤‚É•ÏX‚µ‚Ä‚¢‚Ü‚·B +Eƒ_ƒ[ƒWŒvŽZ‚̃oƒOC³B(‘債‚½•¨‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ª‹|‚¾‚¯‚¿‚å‚Á‚Æ–â‘肪‚ ‚Á‚½‚悤‚Å‚·B) +E” “™‚̃AƒCƒeƒ€‚Å“¾‚½‘•”õ•i‚Í–¢ŠÓ’è‚É‚È‚é‚悤‚É•ÏXB +E‘•”õƒ{[ƒiƒX‚Ì“à•”ˆ—C³‚Æ‚µ•ÏXB(Ú‚µ‚¢‚±‚Æ‚Íitem_bonus.txt‚Å) +EƒLƒƒƒ‰ŽI‚Ƀe[ƒ^‚𑗂鎞ƒLƒƒƒ‰A‘qŒÉAƒyƒbƒg‚̃e[ƒ^‚𓯎ž‚É‘—‚é‚悤‚É•ÏXB(ƒLƒƒƒ‰ŽI‚ƃ}ƒbƒvŽI‚ÌŠÔ‚Ì“]‘——Ê‚ª‘‚¦‚é‚©‚à’m‚è‚ê‚Ü‚¹‚ñ‚ªƒf[ƒ^‚𓯊ú‰»‚ׂ̈ł·B) +EFW‚Ì“®ìŠÔŠu‚ð0.25•b‚©‚ç0.1•b‚É•ÏXB(‚±‚ê‚Å ‚蔲‚Í‚µŒ¸‚é‚Í‚¸‚Å‚·B) +EƒJ[ƒgƒŒƒ{ƒŠƒ…ƒVƒ‡ƒ“‚Å‚Ç‚ñ‚Èó‘ÔˆÙí‚à‚©‚©‚ç‚È‚¢‚悤‚É•ÏXB + (conf/) + battle_athena.conf C³B + (db/) + const.txt C³B + item_avail.txt C³B + pet_db.txt C³B + (doc/) + conf_ref.txt C³B + item_bonus.txt C³B + (map/) + map.h C³B + map.c + map_quit() C³B + battle.h C³B + battle.c + battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pet_weapon_attack()Abattle_calc_magic_attack() C³B + battle_get_dmotion()Abattle_config_read() C³B + pc.c + pc_calcstatus()Apc_bonus()Apc_bonus3()Apc_setpos() C³B + pc_makesavestatus()Apc_autosave_sub()Apc_modifybuyvalue() C³B + pc_modifysellvalue()Apc_stop_walking() C³B + skill.c + skill_additional_effect()Askill_unitsetting() C³B + clif.c + clif_buylist()Aclif_selllist()Aclif_set009e()Aclif_set0078() C³B + clif_set007b()Aclif_additem()Aclif_itemlist()Aclif_equiplist() C³B + clif_storageitemlist()Aclif_storageequiplist()Aclif_changelook() C³B + clif_arrow_create_list()Aclif_useitemack()Aclif_tradeadditem() C³B + clif_storageitemadded()Aclif_getareachar_item() C³B + clif_skill_produce_mix_list()Aclif_cart_additem()Aclif_cart_itemlist() C³B + clif_cart_equiplist()Aclif_vendinglist()Aclif_openvending() C³B + clif_produceeffect()Aclif_sendegg()Aclif_pet_equip()Aclif_mvp_item() C³B + clif_pet0078()Aclif_pet007b() C³B + itemdb.h C³B + itemdb.c + itemdb_searchrandomid()Aitemdb_search()Aitemdb_readdb() C³B + itemdb_read_itemavail()Aitemdb_read_itemvaluedb() C³B + itemdb_equippoint() íœB + storage.h C³B + storage.c + storage_storage_quitsave() ->storage_storage_quit()‚É•ÏX‚ÆC³B + storage_storageclose() C³B + atcommand.c C³B + pet.c + pet_change_name()Apet_equipitem()Apet_unequipitem() C³B + pet_birth_process()Apet_return_egg() C³B + script.c + buildin_getitem() C³B + mob.c + mob_stop_walking() C³B + makefile C³B + +-------------- +//0686 by ¹ + +Eׂ©‚¢C³B + (map/) + pc.h C³B + +-------------- +//0685 by ”g˜Q + +E0683A0684‚Å‚Ìbonus‚̒ljÁ‚É‚Æ‚à‚È‚Á‚Äitem_db.txt‚ðC³ +E‘¼FXC³ + (db/) + item_db.txt C³B + (doc/) + item_bonus.txt C³B + +-------------- +//0684 by Ž€_ + +Eׂ©‚¢C³B +EŽ€‚ñ‚¾‚Ó‚è‚ÌŽžƒXƒLƒ‹‚ƃAƒCƒeƒ€‚ªŽg‚¦‚È‚¢‚悤‚É•ÏXB +EbInfiniteEndure’ljÁB‹@”\‚Í–³ŒÀƒCƒ“ƒfƒ…ƒAB +Eƒ_ƒ[ƒW•\Ž¦‚̈—‚µ•ÏXB + (db/) + const.txt C³B + (doc/) + item_bonus.txt C³B + (map/) + map.h C³B + pc.c + pc_calcstatus() C³B + pc_equipitem()Apc_unequipitem() C³B + clif.c + clif_parse_UseItem()Aclif_parse_UseSkillToId() C³B + clif_parse_UseSkillToPos()Aclif_parse_UseSkillMap() C³B + clif_damage()Aclif_skill_damage()Aclif_skill_damage2() C³B + clif_parse_LoadEndAck() C³B + skill.c + skill_status_change_timer() C³B + +-------------- +//0683 by Ž€_ + +EƒoƒOC³‚Æbonus’ljÁB +E‘qŒÉƒoƒOA‘®«ƒoƒOC³‚Æ‚»‚Ì‘¼‚̃oƒOC³B +EƒXƒNƒŠƒvƒgbonus3’ljÁB¡‚ÍbAddMonsterDropItem‚¾‚¯‚ª‘Ήž‚É‚È‚Á‚Ä‚¢‚Ü‚·B +Ebonus bRestartFullRecover;n;“™‚Ån‚Í–³ˆÓ–¡‚¾‚¯‚ÇÁ‚·‚Ì‚Í‚¿‚å‚Á‚Æ‚Ü‚¸‚¢‚Å‚·‚Ì‚Å0‚É‚µ‚Ä“ü‚ꂽ•û‚ª‚¢‚¢‚Å‚·Bbonus‚Í2‚‚̔’l‚ª•K—v‚ȃXƒNƒŠƒvƒg‚È‚Ì‚ÅB +EbDefRatioAtk‚ð–hŒä–³Ž‹‚É•ÏXB +E0677‚Å‘‚«–Y‚êB +E•Ší‚Ì‘®«“K—p—D懈ʂ𻑢>ƒJ[ƒh>•Ší‚É•ÏXB»‘¢‚ªÅ—Dæ‚Å‚·B(‘®«‚ª‚ ‚鎞‚ɘb‚Å‚·B‘®«‚ª‚È‚¢ê‡‘®«‚ ‚镨‚Éã‘‚«‚³‚ꂽ‚è‚Í‚µ‚Ü‚¹‚ñB) +E‘•”õ‚Å“K—p‚³‚ê‚éŒø‰Ê‚Ì—D懈ʂð‰EŽè>¶Žè>‘Ì>“ªã>“ª’†>“ª‰º>ƒ[ƒu>ŒC>ƒAƒNƒZƒTƒŠ[1>ƒAƒNƒZƒTƒŠ[2>–î‚ÉÝ’èB(–{ŽIŽd—l‚ª‚Ç‚¤‚È‚Ì‚©•ª‚©‚邱‚Æ‚ª‚Å‚«‚»‚¤‚È•¨‚Å‚à‚È‚¢‚̂ŃAƒeƒi‚ÌŽd—l‚ÆŒ¾‚¤‚±‚Æ‚ÅB) ‰EŽè‚ªÅ—Dæ‚Å‚·B +E•Ší‚ÌŽË’ö‚ð‰EŽè‚ƶŽè‚Ì•Ší‚Ì’†‚Å’·‚¢•¨‚ð“K—p‚·‚é‚悤‚É•ÏXB + (db/) + const.txt C³B + (doc/) + item_bonus.txt C³B + (map/) + map.h C³B + battle.c + battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_calc_pet_weapon_attack()Abattle_calc_magic_attack() C³B + battle_damage() C³B + pc.c + pc_autosave_sub()Apc_calcstatus() C³B + pc_bonus()Apc_bonus2() C³B + pc_bonus3() ’ljÁB + script.c + buildin_bonus3() ’ljÁB + mob.c + mob_once_spawn()Amob_damage() C³B + storage.h C³B + storage.c + storage_storage_save() ’ljÁ + atcommand.c C³B + +-------------- +//0682 by ¹ + +EƒXƒs[ƒhƒAƒbƒvƒ|[ƒVƒ‡ƒ“Œn‚̃oƒOC³ + (map/) + pc.c + pc_calcstatus() C³B + +-------------- +//0681 by Ž€_ + +E‘•”õƒoƒOC³B + (map/) + pc.c + pc_equipitem() C³B + +-------------- +//0680 by ¹ + +Eׂ©‚¢C³B +Eu@monstervƒRƒ}ƒ“ƒh‚Ń‚ƒ“ƒXƒ^[ID‚ÌŽw’è‚Éu-1vAu-2v“™‚ðŽw’è‚·‚é‚Æ +@ƒ‚ƒ“ƒXƒ^[‚ðƒ‰ƒ“ƒ_ƒ€‚Å¢ŠÒ‚Å‚«‚é‹@”\‚ð’ljÁB + (map/) + mob.c + atcommand.c + +-------------- +//0679 by ”g˜Q + +E0676‚ÅV‚µ‚¢ƒAƒCƒeƒ€Œø‰Ê‚ªŽÀ‘•‚³‚ꂽ‚Ì‚ÅAitem_db.txt‚ðC³(bonus bAddMonsterDropItem,n,x; ‚ÍAŽí‘°”»’肪‚Å‚«‚È‚¢‚Ì‚Å‚Æ‚è‚ ‚¦‚¸•Û—¯‚µ‚Ü‚µ‚½B) +E‘¼FXC³ + (db/) + item_db.txt + job_db1.txt + (doc/) + item_bonus.txt + +-------------- +//0678 by ¹ + +E¢ŠÒŠÖ˜A‚Ìׂ©‚¢C³B + (map/) + mob.c + mob_once_spawn_area() C³B + +-------------- +//0677 by Ž€_ + +Eׂ©‚¢C³B +EƒAƒCƒeƒ€”„”ƒ‚É‚æ‚Á‚Ä“¾‚ç‚ê‚éŒoŒ±’l‚ðƒJ[ƒh‚É‚æ‚éƒXƒLƒ‹‚Å‚Í“¾‚ç‚ê‚È‚¢‚悤‚ÉC³B +E“Å‚ÉŠ|‚©‚é‚ÆŽ©‘R‰ñ•œ‚Å‚«‚È‚¢‚悤‚ÉC³B +E0676‚Å‘‚«–Y‚êB»‘¢•Ší‚Ìꇻ‘¢‚É‚æ‚Á‚Ä—^‚¦‚½‘®«‚ª•Ší‚Ì‘®«‚æ‚è—D悵‚Ä“K—p‚³‚ê‚é‚悤‚É•ÏXB(»‘¢•Ší‚ª–³‘®«‚Ìꇂ͓K—p‚³‚ê‚Ü‚¹‚ñB) + (doc/) + item_bonus.txt ŒëŽšC³B + (map/) + npc.c + npc_buylist()Anpc_selllist() C³B + pc.c + pc_calcstatus()Apc_natural_heal_sub() C³B + +-------------- +//0676 by Ž€_ + +EFX‚ÆC³B +Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚Å) +E‚Ý‚·‚Ƃꑃ‚ðŽQl‚µ‚ă_ƒ[ƒWŒvŽZ‚ð‚µC³B +E‘•”õbonus‚ÉFX‚ƒljÁB(Ú‚µ‚¢‚±‚Æ‚Íitem_bonus.txt‚Å) +EŽ©“®ƒZ[ƒu‚·‚鎞(ƒLƒƒƒ‰ŽI‚Ƀf[ƒ^‚𑗂鎞)‘qŒÉ‚̃f[ƒ^‚à‘—‚é‚悤‚É•ÏXB +E0667‚ÅŒ¾‚¢–Y‚êBƒJ[ƒg‚ðŠO‚µ‚Ä‚àƒAƒCƒeƒ€‚ªÁ‚¦‚È‚¢‚悤‚É•ÏXB(–{ŽI‚ÅÁ‚¦‚é‚Ì‚ªŽd—l‚¾‚ÆŽv‚Á‚Ä‚¢‚½‚¯‚ÇC³‚³‚ꂽ‚Ý‚½‚¢‚È‚Ì‚ÅB) +EŽæˆø—v¿‚ðŽó‚¯‚鑤‚ÍŠî–{ƒXƒLƒ‹‚ðƒ`ƒFƒbƒN‚µ‚È‚¢‚悤‚ÉC³B(Žó‚¯‚鑤‚ÌŠî–{ƒXƒLƒ‹ƒ`ƒFƒbƒN‚ÍŽ©•ª‚ª“ü‚ꂽ•¨‚Å‚Í‚È‚¢‚Å‚·B‚¢‚‚̊Ԃɂ©“ü‚Á‚Ä‚¢‚½‚Ì‚Å휂µ‚Ü‚µ‚½B) +E–h‹ï‚̸˜Bƒ{[ƒiƒX‚ð’[”–³Ž‹‚É•ÏXB(‚±‚ꂪ–{ŽI‚ÌŽd—l‚Ý‚½‚¢‚È‚Ì‚Å) +EƒAƒ“ƒNƒ‹‚̈—‚µ•ÏXB(‚©‚©‚ç‚È‚¢‚ÆŒ¾‚¤•ñ‚ª‚ ‚è‚Ü‚µ‚½‚Ì‚Å...) +EƒvƒŒƒCƒ„[‚̃Xƒe[ƒ^ƒXŒvŽZ‚Å–â‘è‚ ‚è‚»‚¤‚ÈŠC³B +EƒJ[ƒh‚ÌID‚Å‹@”\‚ªŒˆ‚Ü‚Á‚Ä‚¢‚½ƒJ[ƒh‚àƒXƒNƒŠƒvƒg‚É‚æ‚Á‚Ä•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É•ÏXB(Ú‚µ‚¢‚±‚Æ‚Íitem_bonus.txt‚Å) +EaspdŒvŽZ•û–@‚µ•ÏXB +E–î‚ÉbCriticalAbAtkEleAbHitAbAddEleAbAddRaceAbAddSizeAbAddEff‚ð“K—p‚Å‚«‚é‚悤‚É•ÏXB–î‚ðŽg‚¤ƒXƒLƒ‹‚â‹|‚É‚æ‚éUŒ‚‚¾‚¯‚É–î‚ÌbCriticalAbAtkEleAbHitAbAddEleAbAddRaceAbAddSizeAbAddEff‚ª“K—p‚³‚ê‚é‚悤‚ÉC³B +EƒLƒŠ‚ÌŽÀ‘•‚ɈׂÉC³‚Í‚µ‚Ü‚µ‚½‚ªƒLƒŠ‚ª–hŒä–³Ž‹‚È‚Ì‚©‚Ç‚¤‚©‚ª‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚Å–hŒä–³Ž‹‚Í‚µ‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B +EƒeƒXƒg‚µ‚½•¨‚ÍbAddMonsterDropItem‚ÆbGetZenyNum‚¾‚¯‚Ȃ̂ųí‚É“®ì‚·‚é‚©‚Ç‚¤‚©‚Ì•ñ‚ª—~‚µ‚¢Š‚Å‚·B(‚‚¢‚Å‚Éitem_db‚ÌC³‚à...‚±‚ê‚Å‹zŽûŒn‚ƃI[ƒgƒXƒyƒ‹ŒnˆÈŠO‚Í–w‚ÇŽÀ‘•‚Å‚«‚é‚Í‚¸‚Å‚·B‘½•ª...) +E‚»‚Ì‘¼‚ÍŠo‚¦‚Ä‚È‚¢‚¯‚ÇC³‚µ‚½Š‚ª‚µ‚ ‚é‚©‚à... + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + item_bonus.txt C³B + (db/) + const.txt C³B + (char/) + inter.c + inter_init() C³B + int_storage.c + mapif_parse_SaveStorage() C³B + (map/) + trade.c + trade_traderequest() C³B + pc.h C³B + pc.c + pc_autosave_sub()Apc_calcstatus() C³B + pc_bonus()Apc_bonus2() C³B + pc_setrestartvalue()Apc_setequipindex() C³B + pc_check_equip_wcard()Apc_check_equip_dcard()Apc_check_equip_card() íœ + ‚»‚Ì‘¼C³B + skill.h C³B + skill.c C³B + skill_castend_nodamage_id()Askill_unit_onplace() C³B + skill_check_condition()Askill_additional_effect() C³B + skill_attack()Askill_status_change_start() C³B + map.h C³B + battle.h C³B + battle.c + battle_get_def()Abattle_get_mdef2() C³B + battle_weapon_attack()Abattle_damage() C³B + battle_calc_magic_attack()Abattle_calc_pc_weapon_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pet_weapon_attack() C³B + battle_calc_misc_attack()Abattle_config_read() C³B + mob.c + mob_damage() C³B + pet.c + pet_target_check() C³B + clif.c + clif_set0078()Aclif_set007b()Aclif_changelook() C³B + atcommand.c C³B + +-------------- +//0675 by ”g˜Q + +EŠØŽI‚Å‘º³‚ÌŒø‰Ê‚ª•ÏX‚³‚ꂽ‚Ì‚Å•ñ‚ðŒ³‚Éitem_db.txt‚ðC³ +Ejob_db1.txt‚ðC³ + (db/) + item_db.txt + job_db1.txt + +-------------- +//0674 by npc + +Eƒtƒ@[ƒ}ƒV[‚̉¼ŽÀ‘•B + (db/) + produce_db.txt + (map/) + skill.c + +-------------- +//0673 by “ì + +EW’†—ÍŒüã‚É‘•”õ•i‚̕Ⳃª“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B +@@@@@(map/)@@@ +@@@@@ pc.c + +-------------- +//0672 by “ì + +EW’†—ÍŒüã‚É‘•”õ•i‚̕Ⳃª“ü‚Á‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B +@@@@@(map/)@@@ +@@@@@ pc.c + +-------------- +//0672 by ¹ + +Eƒ‚ƒ“ƒXƒ^[Œn‚̃oƒOC³(‚·‚Ý‚Ü‚¹‚ñA‚Ü‚¾Žc‚Á‚Ä‚Ü‚µ‚½(^^; ) + (map/) + mob.c + +-------------- +//0671 by ¹ + +EIDƒ`ƒFƒbƒN”͈͂ÌC³‘¼B +E@monster‚Å”‚ðŽw’肵‚È‚‚Ăࢊ҂ł«‚é‚悤‚ÉC³B + (map/) + atcommand.c + battle.c + battle.h + mob.c + pet.c + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + +-------------- +//0670 by RR + +Eƒ‚ƒ“ƒXƒ^[ƒhƒƒbƒv—¦‚ðC³(–{ŽI€‹’ADB‚Å‚ÌÝ’è+1/10000)B +E—Ž‰º—¦‚O‚Éݒ肵‚½ƒAƒCƒeƒ€‚ð—Ž‚Æ‚·‚©‚Ç‚¤‚©‚ðbattle_athena.conf‚ÅÝ’è‰Â”\‚ÉB + (map/) + mob.c + mob_damage() C³B + battle.c + battle.h + (conf/) + battle_athena.conf + +-------------- +//0669 by ¹ + +Eƒ‚ƒ“ƒXƒ^[ƒhƒƒbƒv‚ÌC³B + (map/) + mob.c + mob_damage() C³B + +-------------- +//0668 by ¹ + +Eƒ‚ƒ“ƒXƒ^[ID‚͈̔̓`ƒFƒbƒN‚ðC³B + (map/) + mob.c + mob_dbAmob_once_spawn()Amob_once_spawn_area()A + mob_summonslave()Amob_read_randommonster()Amob_readdb() C³B + +-------------- +//0667 by Ž€_ + +EÅ‘åHPŒvŽZŽ®‚ðƒ~ƒXƒgƒŒ‘ƒ‚ðŽQl‚µ‚ÄC³B(‘½•ª‚±‚ê‚Å–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚ÆŽv‚¢‚Ü‚·B) +E–h‹ï‚̸˜Bƒ{[ƒiƒX‚ð0.7‚É•ÏXB(¡‚Í’[”‚ðŽlŽÌŒÜ“ü‚µ‚Ä‚¢‚Ü‚·‚ª–{ŽI‚ª’[”–³Ž‹‚È‚çC³‚µ‚Ä‚¨‚«‚Ü‚·B) +E@refineƒRƒ}ƒ“ƒh‚Å‘•”õêŠID‚É0‚ð“ü‚ê‚é‚Æ‘•”õ‚µ‚Ä‚¢‚é‘S‚Ä‚Ì‘•”õ‚ð¸˜B‚·‚é‚悤‚É•ÏXB +E‚»‚Ì‘¼×‚©‚¢C³B + (db/) + item_db.txt + 7140A7142‚ðŒ³‚É–ß‚µ‚Ä0666‚Ì•¨‚̓Rƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½B + job_db1.txt C³B + refine_db.txt C³B + (map/) + mob.c + mob_once_spawn() C³B + itemdb.c + itemdb_read_randomitem() C³B + pet.c + pet_food() C³B + pc.c + pc_readdb()Ado_init_pc()Apc_calcstatus()Apc_setoption() C³B + pc_calc_sigma() ’ljÁB + ‚»‚Ì‘¼C³B + map.h C³B + battle.c + battle_calc_magic_attack()Abattle_calc_misc_attack() C³B + atcommand.c C³B + +-------------- +//0666 by ¹ + +Eƒ‰ƒ“ƒ_ƒ€ƒAƒCƒeƒ€‚Ìׂ©‚¢C³B +Ebattle_athena.conf‚Ì€–ڒljÁB +EŒÃ–Ø‚ÌŽ}‚Å¢ŠÒ‚·‚郂ƒ“ƒXƒ^[‚ÌŠm—¦‚ðÝ’èo—ˆ‚é‚悤‚É‚µ‚Ü‚µ‚½B +Eƒ‚ƒ“ƒXƒ^[¢ŠÒƒAƒCƒeƒ€‚ð•¡”ì‚鎖‚ªo—ˆ‚é‚悤‚É‚µ‚Ü‚µ‚½B +E¢ŠÒƒAƒCƒeƒ€‚̃Tƒ“ƒvƒ‹‚Æ‚µ‚Ä +@¶–½‚ÌŽíŽq‚ðƒ|ƒŠƒ“Œn¢ŠÒA +@ƒGƒ“ƒuƒŠƒI‚ðMVPƒ{ƒXŒn¢ŠÒ‚É‚µ‚Ä‚Ý‚Ü‚µ‚½B +@‚ ‚Ü‚è‚¢‚¢ƒTƒ“ƒvƒ‹‚ðŽv‚¢‚‚©‚È‚©‚Á‚½‚Ì‚ÅA +@‰½‚©‚¢‚¢ˆÄ‚ðŽv‚¢‚‚¢‚½l‚Í‘‚«Š·‚¦‚Ä‚â‚Á‚Ä‚‚¾‚³‚¢(^^; + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + (map/) + mob.h + mob_db C³B + mob.c + mob_once_spawn()Amob_makedummymobdb()Amob_readdb() C³B + mob_readbranch() -> mob_read_randommonster()‚É•ÏXB + battle.h + battle_config C³B + battle.c + battle_config_read() C³B + itemdb.c + itemdb_read_randomitem() C³B + (db/) + item_db.txt + item_bluebox.txt + item_cardalbum.txt + item_giftbox.txt + item_scroll.txt + item_violetbox.txt + mob_branch.txt + mob_poring.txt ’ljÁB + mob_boss.txt ’ljÁB + +-------------- +//0665 by J + +E‰…—ì•Žm‚ÌŽæ‚芪‚«‚ªƒJƒuƒL”EŽÒ‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðŽð“V‹ç‚ÉC³B +EƒIƒbƒg[‚ɃtƒFƒCƒNƒGƒ“ƒWƒFƒ‹‚ªo‚·‚Í‚¸‚ÌŽæ‚芪‚«‚ª‚‚¢‚Ä‚½‚Ì‚ðC³B + (db/) + mob_skill_db.txt + +-------------- +//0664 by ¹ + +E¸˜BŽ¸”sŽž‘¼‚̃vƒŒ[ƒ„[‚É‚àƒGƒtƒFƒNƒg‚ª•\Ž¦‚³‚ê‚é‚悤‚ÉC³B + (map/) + script.c + buildin_failedrefitem() C³B + +-------------- +//0663 by lide + +Eƒuƒ‰ƒ“ƒfƒBƒbƒVƒ…ƒXƒsƒAC³ + (map/) + battle.c + skill.c + +-------------- +//0662 by Ž€_ + +Eׂ©‚¢C³‚ƃoƒOC³B +Eƒvƒƒ{ƒbƒN‚É‚æ‚Á‚ă‚ƒ“ƒXƒ^[‚ÍæŽZ–hŒä‚ÆŒ¸ŽZ–hŒä‚ªŒ¸‚é‚悤‚ÉC³‚µ‚ăvƒŒƒCƒ„[‚ÍŒ¸ŽZ–hŒä‚¾‚¯Œ¸‚é‚悤‚ÉC³B +EƒXƒNƒŠƒvƒggetgmlevel’ljÁB‹@”\‚Í‚»‚ÌNPC‚Ƙb‚µ‚Ä‚¢‚éƒvƒŒƒCƒ„[‚ÌGMƒŒƒxƒ‹‚ð•Ô‚µ‚Ü‚·B +E0659‚Ì‘‚«–Y‚ê‚Å‚·‚ªƒyƒbƒg‚̃pƒtƒHƒ}ƒ“ƒX‚ÌŽí—Þ‚ªe–§“x‚É‚æ‚Á‚Ä‘‚¦‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B + (map/) + clif.c + pc.c + script.c + +-------------- +//0661 by Ž€_ + +Eׂ©‚¢C³B +EÚ‘±‚µ‚½Žž‚̃yƒbƒg‚̃ƒbƒZ[ƒW‚ðe–§“x‚ª‚«‚í‚ß‚Äe‚µ‚¢‚ÌŽž‚Ì‚Ý‚Éo‚é‚悤‚É•ÏXB +E0659‚Å‘‚«–Y‚ê‚Å‚·‚ªƒyƒbƒg‚ÌŽx‰‡UŒ‚‚Íe–§“x‚ª‚«‚í‚ß‚Äe‚µ‚¢‚ÌŽž‚Ì‚Ý‚É”¶‚µ‚Ü‚·B(‚»‚ê‚Æe–§“x‚É‚æ‚Á‚ÄŽx‰‡UŒ‚Šm—¦‚ª‚µ•Ï‰»‚µ‚Ü‚·B) +EƒWƒ‹ƒ^ƒX‚ƃAƒŠƒX‚Ì—‘‚ÌID‚ðitem_db.txt‚ɇ‚킹‚Ü‚µ‚½B(Ž©•ª‚ªì‚Á‚½pet_db.txt‚Ì•û‚ªŽ©•ªŸŽè‚Éݒ肵‚Ä‚¢‚½•¨‚Å‚µ‚½‚Ì‚ÅB‚ÄŒ¾‚¤‚©–¢ŽÀ‘•ƒAƒCƒeƒ€‚¾‚©‚ç”Ô†‚ª‚í‚©‚ç‚È‚©‚Á‚½‚¾‚¯‚Å‚·‚ª...) +Epet_db.txt‚Ìattack_rate‚ª³‚µ‚“K—p‚³‚ê‚È‚©‚Á‚½ƒoƒOC³B + (db/) + pet_db.txt + (map/) + clif.c + clif_parse_LoadEndAck() C³B + pc.c + pc_attack_timer() C³B + +-------------------- +//0660 by ‚¢‚Ç + +EƒT[ƒo[snapshot + +-------------- +//0659 by Ž€_ + +Eƒyƒbƒg‚ðFX‚ÆC³B(ƒyƒbƒg‚̃R[ƒh‚ð‚Ù‚Æ‚ñ‚Ç•Ï‚¦‚Ü‚µ‚½B) +EŽè“®“I‚¾‚Á‚½ƒyƒbƒg‚Ì“®‚«‚ðƒ‚ƒ“ƒXƒ^[‚̂悤‚ÉAI‚Æ‚µ‚Ĉ—B +EÚ‘±‚µ‚½Žž‚̃yƒbƒg‚̃ƒbƒZ[ƒWŽÀ‘•B(–{ŽI‚Í‚Ç‚¤‚È‚Ì‚©‚í‚©‚è‚Ü‚¹‚ñ‚ª +Athena‚ÍÚ‘±‚·‚é‚Æ100%˜b‚·‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B) +Eƒyƒbƒg‚̃XƒyƒVƒƒƒ‹ƒpƒtƒHƒ}ƒ“ƒXŽÀ‘•B(‚½‚¾‘䎌‚ª‚¿‚å‚Á‚Æ•Ï‚Å‚·B‚¢‚‚ç’T‚µ‚Ä‚àŠY“–‚·‚éƒpƒPƒbƒg‚ªŒ©‚‚©‚ç‚È‚©‚Á‚½‚Ì‚ÅB) +Eƒyƒbƒg‚̑䎌‚𑼂̃yƒbƒg‚Ì•¨‚É•ÏX‚·‚é‹@”\’ljÁB(Ú‚µ‚¢‚±‚Æ‚Ídb_ref.txt‚Æpet_db.txt‚ÅB) +Eƒyƒbƒg‚É‚æ‚éŽx‰‡UŒ‚•ÏXBpet_db.txt‚ÅUŒ‚‚·‚鎞‚ÆUŒ‚‚ðŽó‚¯‚½Žž‚ÌŽx‰‡UŒ‚ +Šm—¦‚ð•ÊX‚ÉÝ’è‚Å‚«‚Ü‚·BUŒ‚‚·‚鎞‚Ìê‡UŒ‚‚·‚é“x‚Ƀ`ƒFƒbƒN‚ð‚µ‚Ü‚·‚Ì‚Å +UŒ‚‘¬“x‚ª‘¬‚¢‚ÆŽx‰‡UŒ‚‚ðŽó‚¯‚â‚·‚‚È‚è‚Ü‚·BUŒ‚‚ðŽó‚¯‚½Žž‚à“¯‚¶‚Å‚·B(‚±‚¿‚ç‚̓_ƒ[ƒW‚ð‹ò‚炤“x‚É‚È‚è‚Ü‚·‚ªB) Žx‰‡UŒ‚Šm—¦‚̓\ƒq[AƒWƒ‹ƒ^ƒXAƒAƒŠƒX‚¾‚¯Ž©•ªŸŽè‚Éݒ肵‚Ä‚¢‚Ü‚·B(‘¼‚Ì‚Í‘S•”1%‚ÉBƒyƒbƒg‚ÌŽx‰‡UŒ‚‚Í“¯‚¶ƒ‚ƒ“ƒXƒ^[‚É‚Í‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚»‚µ‚ăyƒbƒg‚Ì퓬”\—͂̓‚ƒ“ƒXƒ^[‚Æ“¯‚¶‚Å‚·B) +E/hideƒRƒ}ƒ“ƒhŽÀ‘•B +Eƒvƒƒ{ƒbƒN‚É‚æ‚Á‚ÄæŽZ–hŒä‚àŒ¸‚é‚悤‚ÉC³B +EƒtƒŠ[ƒLƒƒƒXƒg‚̃oƒOC³B +Eƒm[ƒrƒX‚̃Xƒe[ƒ^ƒXƒ{[ƒiƒXíœB +Ebattle_athena.conf‚Ì€–ڒljÁ‚ÆíœB +EC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯B–¢ƒeƒXƒg‚µ‚½•¨‚à‚©‚È‚è‚ ‚è‚Ü‚·‚Ì‚Å–â‘肪‚ ‚Á‚½‚ç•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + db_ref.txt ’ljÁB(¡à–¾‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚Ípet_db.txt‚Ì‚Ý‚Å‚·B ) + client_packet.txt + (db/) + pet_db.txt + job_db2.txt + (map) + clif.h + clif.c + map.h + map.c + pet.h + pet.c + pc.c + mob.h + mob.c + npc.c + atcommand.c + skill.c + battle.h + battle.c + +-------------- +//0658 by huge + +Eƒyƒbƒg‚ª‚Æ‚Ç‚ß‚ð‚³‚·‚ÆAŽ”‚¢Žå‚ÉŒoŒ±’l‚ª“ü‚é‚悤‚É‚µ‚Ü‚µ‚½B +EŒÅ’è’lƒ_ƒ[ƒW‚¶‚á–¡‚ª–³‚¢‚Ì‚ÅATK1`ATK2‚ÌŠÔ‚Å—”‚ðŽæ‚é‚悤‚É‚µ‚Ü‚µ‚½B +E‚ ‚ÆAƒyƒbƒg‚ª‚Æ‚Ç‚ß‚ð‚³‚·‚©‚Ç‚¤‚©‚ÌÝ’è‚ðAbattle_athena.conf‚ɉÁ‚¦‚Ü‚µ‚½B + + (conf/) + battle_athena.conf pet_finish’ljÁB + (map/) + battle.c + battle_config_read() C³B + battle.h C³B + pet.c + pet_attack() C³B + (doc/) + conf_ref.txt à–¾’Ç‹LB + +-------------- +//0657 by huge + +Eƒyƒbƒg‚É‚æ‚éUŒ‚‚ðŽÀ‘•B +Eƒyƒbƒg‚ðŽ‚Á‚Ä‚¢‚ÄAƒyƒbƒg‚ª‘•”õ•i‚ð‚‚¯‚Ä‚ÄA‚³‚ç‚Ƀ‰ƒ“ƒ_ƒ€‚É‚æ‚é”»’è‚Å”“®‚µ‚Ü‚·B +E‚½‚¾‚Ì—V‚ÑS‚Å‚·‚— +Ebattle_athena.conf‚Å•p“x‚ðÝ’è‚Å‚«‚Ü‚·BÚׂÍdoc‚ÅB + + (conf/) + battle_athena.conf pet_attack’ljÁB + + (map/) + battle.c + battle_config_read() C³B + battle.h C³B + pc.c + pc_attack_timer() C³B + pet.c + pet.h + pet_attack() ’ljÁB + (doc/) + conf_ref.txt à–¾’Ç‹LB + + ‚Æ‚è‚ ‚¦‚¸Aƒyƒbƒg‚ª“®‚¢‚Ä‚é‚È‚Ÿ‚Á‚ÄŠ´‚¶‚ÆAƒ_ƒ‰ñ”‚ð‘‚₵‚½’ö“x‚Å‚·B + +-------------- +//0656 by Ž€_ + +EƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌC³B(‚¨‚¢‚¨‚¢‰½“x–Ú‚¾...) +EƒOƒ‰ƒ“ƒhƒNƒƒXŒvŽZŽ®ŠÔˆá‚¢‚ÅC³B(€3‚ª‚Ü‚¸‚©‚Á‚½‚Ý‚½‚¢‚Å‚·B) +‚Å‚à‚Ü‚¾”½ŽËƒ_ƒ[ƒW‚ª‚Ý‚·‚Ƃꑃ‚æ‚è‚¿‚å‚Á‚Æ‚‚¢‚Å‚·B(10‚®‚ç‚¢‚¾‚©‚ç +ŠÖŒW‚È‚¢‚©‚à) +Eƒ‚ƒ“ƒN‚Ì‹C‹…‚ð•K’†‚ÉC³B(Ž©•ª‚̊ԈႢ‚̂悤‚Å‚·‚Ì‚Å...) + (map/) + skill.c C³B + battle.c C³B + +-------------- +//0655 by Ž€_ + +EƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌC³B +EŽ©•ª‚È‚è‚Éî•ñ‚ðŽûW‚µ‚Ä‚Ý‚½Œ‹‰ÊƒOƒ‰ƒ“ƒhƒNƒƒX”½ŽËƒ_ƒ[ƒW‚Í +ƒvƒŒƒCƒ„[ƒLƒƒƒ‰‚ª‚»‚̃Lƒƒƒ‰Ž©g‚ɃOƒ‰ƒ“ƒhƒNƒƒX‚ðŽg‚Á‚½Žž‚Ì +ƒ_ƒ[ƒW‚¾‚»‚¤‚È‚Ì‚ÅC³‚µ‚Ü‚µ‚½B(‚Ý‚·‚Ƃꑃ‚ÌŒvŽZ‚Æ‚Í‚©‚È‚èˆá‚¤‚悤‚È +‹C‚à‚µ‚Ü‚·‚ª...) +E–‚–@‚ƃgƒ‰ƒbƒvA‘é‚ÌUŒ‚‚É‚à‘®«‘Ï«‚ÆŽí‘°‘Ï«‚ð“K—p‚·‚é‚悤‚ÉC³B +(–{ŽI‚ÌŽd—l‚É‚ ‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·‚ª“K—p‚µ‚½•û‚ª³‚µ‚¢‚ÆŽv‚Á‚½‚Ì‚Å +C³‚µ‚Ü‚µ‚½B) + (map/) + skill.c C³B + map.h C³B + battle.c C³B + +-------------- +//0654 by Ž€_ + +EƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌC³‚Æׂ©‚¢C³B(ŒvŽZŽ®ŠÔˆá‚¢‚ÅC³B) +E0653‚Å‘‚«–Y‚êB‹CŒ÷‚É‚æ‚é’ljÁƒ_ƒ[ƒW‚Í•K’†‚Å‚Í‚È‚¢‚炵‚¢‚Ì‚Å +C—û‚̉ÁŽZ‚Æ“¯‚¶Š‚ÉŒvŽZ‚·‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B +EƒJ[ƒg‚ɃoƒO‚ª‚ ‚è‚»‚¤‚¾‚Á‚½‚Ì‚Å‚¿‚å‚Á‚ÆC³B +Eƒ_ƒ[ƒWŒvŽZ‚ð‚Ù‚ñ‚Ì‚µC³B(ƒ_ƒ[ƒW—Ê‚ª•Ï‚í‚Á‚½‚è‚Í‚µ‚Ü‚¹‚ñB) + (map/) + battle.c + battle_calc_magic_attack() C³B + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + skill.c + pc_damage_feedback() -> skill_damage_feedback()‚É•ÏXB + skill_unit_timer() C³B + pc.c + pc_setoption() C³B + atcommand.c C³B + +-------------- +//0653 by Ž€_ + +E0652‚ÌC³‚Æׂ©‚¢C³B¡‚Ü‚Å’Ê‚è–¢ƒeƒXƒg‚à‘½‚¢‚Å‚·B +EƒOƒ‰ƒ“ƒhƒNƒƒX‚̈—C³B(–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚©‚Ç‚¤‚©‚ÌŽ©g‚Í‚ ‚è‚Ü‚¹‚ñB) +ƒ‰ƒOƒi[ƒQ[ƒg‚Ìà–¾‚É‚æ‚é‚ÆŽn‚ß‚ÉŒ»ÝHP‚Ì20%‚ªÁ–Õ‚³‚ê‚Ä‚»‚ÌŒã“G‚É—^‚¦‚½ +ƒ_ƒ[ƒW‚Ì’†‚ňê”Ô‚‚¢•¨‚ª–ß‚Á‚Ä‚‚é‚悤‚Å‚·B‚»‚µ‚Ä‚»‚Ì–ß‚Á‚Ä‚«‚½ +ƒ_ƒ[ƒW‚͹‚Ì‘®«‚ðŽ‚¿ƒgƒ‰ƒXƒg‚É‚æ‚Á‚Ĺ‚Ì‘Ï«‚ª50%‚É‚È‚Á‚Ä‚¢‚é‚Ì‚Å +”¼•ª‚ð‹ò‚炤‚±‚Æ‚É‚È‚é‚悤‚Å‚·B(¹‚̑ϫオ‚é‘•”õ‚ð‚µ‚Ä‚¢‚ê‚Ζ߂Á‚Ä‚‚é +ƒ_ƒ[ƒW‚͎󂯂Ȃ¢‚悤‚Å‚·B) +–â‘è‚Ȃ̂̓vƒŒƒCƒ„[‚Ì–hŒä‘®«‚ðŒvŽZ‚·‚é‚©‚Ç‚¤‚©‚Å‚·B¡‚Í–hŒä‘®«ŒvŽZ‚Ì +Œã‚Ź‚Ì‘®«‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·B‚»‚µ‚Ä–ß‚Á‚Ä‚‚éƒ_ƒ[ƒW‚ÍHPƒo[‚ÍŒ¸‚邯‚Ç +•\Ž¦‚Í‚³‚ê‚Ü‚¹‚ñB–{ŽI‚Ì•û‚ª‚Ç‚¤‚È‚Ì‚©•s–¾‚È‚Ì‚Å... +‚»‚ê‚ƈꉞƒ‚ƒ“ƒXƒ^[‚àƒOƒ‰ƒ“ƒhƒNƒƒX‚ÌŽg—p‚ª‰Â”\‚Å‚·B‚½‚¾ƒ‚ƒ“ƒXƒ^[‚Ìê‡ +Œ»ÝHP‚Ì20%Á–Õ‚ÌŒã‚̃_ƒ[ƒW‚͎󂯂܂¹‚ñB(ƒ‚ƒ“ƒXƒ^[‚ªŽg‚¤ +ƒOƒ‰ƒ“ƒhƒNƒƒX‚̃eƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB) +Eƒ_ƒ[ƒW‚É‚æ‚éƒfƒBƒŒƒC’†‚É‚Ü‚½ƒfƒBƒŒƒC‚ª‚©‚©‚ç‚È‚¢‚悤‚ÉC³B(‘債‚½ˆÓ–¡‚Í‚È‚¢‚©‚à...) +E’l’i‚ªƒ[ƒ‚̃AƒCƒeƒ€‚à”„‚ê‚é‚悤‚É•ÏXB +E@ƒRƒ}ƒ“ƒhheal‚̈—‚µC³B +EˆÚ“®ƒR[ƒh‚µC³B + (map/) + clif.c + clif_selllist() C³B + battle.c + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_calc_magic_attack()Abattle_calc_misc_attack() C³B + skill.c + skill_additional_effect()Askill_unit_onplace() C³B + skill_status_change_start()Askill_unit_onplace() C³B + skill_castend_damage_id()Askill_castend_id()Askill_attack() C³B + skill_unitsetting()Askill_check_condition() C³B + skill_use_id()Askill_use_pos() C³B + npc.c + npc_parse_script() C³B + pc.h C³B + pc.c + pc_walk()Apc_walktoxy_sub()Apc_stop_walking() C³B + map.h C³B + mob.h C³B + mob.c + mob_stop_walking()Amob_changestate()Amob_walk() C³B + pet.c + pet_changestate() C³B + atcommand.c C³B + (db/) + skill_db.txt ƒOƒ‰ƒ“ƒhƒNƒƒXC³B + cast_db.txt ƒOƒ‰ƒ“ƒhƒNƒƒXC³B + +-------------- +//0652 by ŒŽ‰r‚Ý + +EƒOƒ‰ƒ“ƒhƒNƒƒX‚ð‰¼ŽÀ‘• + (db/) + skill_db.txt + cast_db.txt + (map/) + battle.c + Damage battle_calc_misc_attack + Damage battle_calc_magic_attack + skill.c + skill_additional_effect + skill_castend_damage_id + skill_castend_pos2 + skill_unit_group *skill_unitsetting + skill_unit_onplace + skill_check_condition + +-------------- +//0651 by ”g˜Q + +Eitem_db.txt‚ðC³ + (db/) + item_db.txt + ‘•”õ•i‚̃AƒCƒeƒ€Œø‰Ê‚ðC³ + +-------------- +//0650 by Ž€_ + +EŽO’i¶‚Ì”“®ðŒ‚ð‹|‚Æ“ñ“—¬ˆÈŠO‚É•ÏXB +E•\Ž¦‚ð‚¹‚¸‚É“à•”‚ň—‚¾‚¯‚·‚éNPC‚ÌCLASS‚ð111‚©‚ç32767‚É•ÏXB +Eׂ©‚¢C³B + (map/) + clif.c + clif_getareachar_npc()Aclif_spawnnpc()Aclif_pcoutsight() C³B + npc.h C³B + battle.c + battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + +-------------- +//0649 by ”g˜Q + +EDB‚ÆDOCC³ + (db/) + item_db.txt + ƒOƒ“ƒOƒj[ƒ‹‚ÍLV4•Ší‚È‚Ì‚ÅAŠØ‘‚̃f[ƒ^‚É‚ ‚킹‚Ä•—‘®«‚Å‚Í‚È‚‚µ‚Ü‚·B + mob_db.txt + size_fix.txt + ŠyŠí‚Í‘åŒ^‚ɑ΂µ‚Ä75%‚¾‚»‚¤‚Å‚·B + (doc/) + item_bonus.txt + +-------------- +//0648 by Ž€_ + +EƒVƒ‡ƒbƒv‚Ì’l’i‚É-‚ð“ü‚ê‚é‚ÆŽI‚ª—Ž‚¿‚é–â‘èC³B(itemdb‚̉Šú‰»‚ðnpc‚æ‚è +æ‚É‚·‚é‚悤‚É•ÏXB) ‚»‚ꂾ‚¯‚Å‚·B + (map/) + map.c + do_init() + +-------------- +//0647 by nini + +Eitem_dbC³ +EƒXƒiƒbƒ`ƒƒ[Žd—l•ÏXB‹|ˆÈŠO‚Ì‚·‚ׂĂ̕Ší‚Åo‚é‚悤‚É‚È‚Á‚Ä‚Ü‚·B + (/map/) + battle.c + ŽO’i¶‚Ì”“®ðŒ’ljÁ + skill.c + ƒXƒiƒbƒ`ƒƒ[‚Ì”“®ðŒ’ljÁ + (/db/) + item_db.txt + ƒVƒ‹ƒNƒnƒbƒg‚ÉSP㸒ljÁ + +-------------- +//0646 by last + +Eitem_db.txt‚ÌC³(‘®«ŠÖ˜A) + (/db/) + item_db.txt + +-------------- +//0645 by ‚é‚é‚éi•ree_ronj + +Eitem_value_db.txt‚ɃfƒBƒXƒJƒEƒ“ƒg•ƒI[ƒo[ƒ`ƒƒ[ƒW“™‚̃XƒLƒ‹‚É‚æ‚鉿Ši•Ï“®‚ðŽó‚¯‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒOƒƒ“ƒg‚ð’ljÁB +@ŽÀÛ‚ÌŒ`Ž®‚̓Tƒ“ƒvƒ‹‚Æ‚µ‚Ä—pˆÓ‚µ‚½item_value_db.sample.txt‚ðŒ©‚Ä‚‚¾‚³‚¢Biݒ艿Ši‚ÍŠ®‘S‚É“Æ’f‚Æ•ÎŒ©‚Å‚·j +@“¯—l‚̃Tƒ“ƒvƒ‹‚Æ‚µ‚Ä‚m‚o‚bÝ’uƒXƒNƒŠƒvƒg‚à“Y•t‚µ‚Ä‚¨‚«‚Ü‚·B +Eitem_value_db.txt‚̃AƒCƒeƒ€‰¿ŠiÝ’è‚ÅA”„’l‚Æ”ƒ’l‚ÌÝ’è‚ð“Æ—§Biitem_db.txt‚Í]—ˆ‚Ç‚¨‚蔃’l‚Í”„’l‚Ì”¼Šz‚Æ‚µ‚ÄŽ©“®ˆ—j +E‚m‚o‚bƒVƒ‡ƒbƒv‚É‚ÄA‚P‚m‚o‚b‚ňµ‚¦‚éƒAƒCƒeƒ€”‚ðÅ‘å64‚©‚çÅ‘å100‚É•ÏXBiƒNƒ‰Ž©‘Ì‚Í120‚®‚ç‚¢‚܂ʼn”\‚Å‚·‚ªj + (/db) + item_value_db.txt + ƒJƒ‰ƒ€”‚ð®—‚µ‚½‚¾‚¯‚Å‚·B“à—e‚Í‚Ü‚Á‚½‚•ÏX‚µ‚Ä‚¢‚Ü‚¹‚ñB + (/map/) + clif.c + clif_buylist() clif_selllist() •ÏX + itemdb.h + item_data \‘¢‘Ì•ÏX + itemdb_value_buy() itemdb_value_sell() itemdb_value_notdc() itemdb_value_notoc() ƒ}ƒNƒ’ljÁ + itemdb.c + itemdb_search() itemdb_readdb() itemdb_read_itemvaluedb() •ÏX + itemdb_sellvalue() íœ + npc.c + npc_buylist() npc_selllist() npc_parse_shop() •ÏX + (/sample/) + ƒIƒ}ƒP‚Å‚·BŽŸ‰ñSnapShot‚É‚ÍŠÜ‚Ü‚È‚¢‚Å‹X‚µ‚¢‚Å‚·B + +ƒRƒƒ“ƒg +Œ´Œ^‚ÍŽ„‚Ì—Flree_ron‚ªs‚¢AŽ„‚ªX‚Éׂ©‚¢ƒ~ƒX‚𒼂µ‚½‚¾‚¯‚Å‚·‚ªAƒeƒXƒg‚Í‚µ‚Ü‚µ‚½‚Ì‚Å‘åä•v‚Å‚µ‚傤B +Œ³X‚±‚̈—‚𓱓ü‚·‚é——R‚Æ‚µ‚ÄA“Á’èƒAƒCƒeƒ€‚Ì”„’l‚ª1zŒÅ’è‚É‚Å‚«‚È‚¢‚à‚Ì‚©A‚Æ‚¢‚¤“_‚¾‚Á‚½‚©‚ç‚Å‚·B +‚»‚µ‚Ä‚â‚Á‚Ä‚¢‚‚¤‚¿‚ÉA‚m‚o‚bƒVƒ‡ƒbƒv‚ð—˜—p‚µ‚½ƒŒƒAƒAƒCƒeƒ€‚̔̔„‚Æ‚©‚Å–{ŽI˜I“X‚É‹ß‚¢‚±‚Æ‚ªo—ˆ‚é‚Ì‚Å‚Í‚È‚¢‚©A +‚Æ‚¢‚¤‚±‚Æ‚ª”»‚Á‚Ä‚«‚½‚킯‚Å‚·B +‚»‚ê‚ňꉞ‚̓f[ƒ^‚ð—pˆÓ‚µ‚Ü‚µ‚½‚ªA‚ ‚‚Ü‚Å‚àƒTƒ“ƒvƒ‹‚Æ‚µ‚Ä—˜—p‚µ‚Ä‚‚¾‚³‚¢B‚à‚µ‰Â”\‚È‚ç‚ÎA +‚³‚ç‚ÉC³‚ð‰Á‚¦‚ăAƒeƒi“ÆŽ©‚Æ‚µ‚Ä–{Ì—p‚Æ‚µ‚½ƒf[ƒ^‚ðƒpƒbƒ`ƒAƒbƒv‚µ‚Ä‚‚ê‚ê‚΂ƂàŽv‚¢‚Ü‚·‚ª‚— + + +-------------- +//0644 by nini + +EDB‚̊ԈႢA643‚ŒljÁ‚³‚ꂽƒXƒNƒŠƒvƒg’ljÁB + (/db/) + item_db.txt + cast_db.txt + ƒ`ƒƒ[ƒWƒAƒ[‚̃LƒƒƒXƒg’ljÁB + exp_guild.txt + 46-50‚Ü‚Å‚Ìexp”²‚¯‚ɒljÁB + size_fix.txt + ŠyŠíA•ÚAƒiƒbƒNƒ‹‚̃TƒCƒY•â³C³B + +-------------- +//0643 by Ž€_ + +EFX‚ÆC³B +EbMVPaddAtkRateíœBbAddRace‚ň—‚·‚é‚悤‚É•ÏXB +EbIgnoreDefEle‚ÆbIgnoreDefRace’ljÁB +bonus bIgnoreDefEle,n; n‘®«‚Ì“G‚Ì–hŒä–³Ž‹ +bonus bIgnoreDefRace,n; nŽí‘°‚Ì“G‚Ì–hŒä–³Ž‹ +EbMatkRate’ljÁB–‚–@UŒ‚—Í‚ð+n%ã‚°‚Ü‚·B‚æ‚Á‚Äbattle.c‚ÅŒvŽZ‚µ‚Ä‚¢‚½ƒƒbƒh‚É‚æ‚é–‚–@UŒ‚—Í‘•‚ÌŒvŽZ‚Í‚È‚‚µ‚Ü‚µ‚½BƒXƒe[ƒ^ƒX‰æ–Ê‚Éオ‚Á‚½”’l‚Í•\Ž¦‚³‚ê‚Ü‚¹‚ñBƒ_ƒ[ƒWŒvŽZ‚ÌŽž‚É“K—p‚µ‚Ä‚¢‚Ü‚·B +EbCriticalDef‚É-‚ð“ü‚ê‚é‚ƃNƒŠƒeƒBƒJƒ‹‚ð‹ò‚炤Šm—¦‚ªã‚ª‚é‚悤‚É•ÏXB +ENPC”Ô†111‚Í“§–¾NPC‚Å‚·‚ª—Ž‚Æ‚µŒŠ“™‚Ì‚±‚Æ‚ðl‚¦‚Ä•\Ž¦‚ðˆêØ‚¹‚¸‚É +“à•”‚ň—‚¾‚¯‚·‚é‚悤‚É•ÏXB(flag‚ðŽg‚¤‚Ɖ½‚Æ‚©‚È‚è‚»‚¤‚Å‚·‚ª‚»‚Ì +ˆ—‚ª‘S‘R‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚Å“§–¾NPC‚ɃNƒŠƒbƒN‚â–¼‘O‚Ì•\Ž¦‚à‚Å‚«‚È‚¢‚悤‚É•ÏX‚µ‚Ü‚µ‚½B) +EƒVƒ‡ƒbƒv‚Ì’l’i‚É-‚ð“ü‚ê‚é‚Æitem_db.txt‚à‚µ‚‚Íitem_value_db.txt‚Ì•¨‚ðŽg‚¤‚悤‚É•ÏXB +EƒXƒLƒ‹ƒ‹ƒAƒt‚̃GƒtƒFƒNƒg‚ªƒTƒCƒg‚Æ“¯‚¶‚¾‚Á‚½‚Ì‚ÅC³B‚‚¢‚łɃ‹ƒAƒt‚Ì +ƒ_ƒ[ƒW‚àC³B +E‚Ý‚·‚Ƃꑃ‚É‚æ‚é‚ƃ‚ƒ“ƒXƒ^[î•ñ‚Å•\Ž¦‚³‚ê‚é–hŒä‚Æ–‚–@–hŒä‚ÍæŽZ‚Å‚Í‚È‚Œ¸ŽZ‚Ý‚½‚¢‚È‚Ì‚ÅC³B +E‘¼—Í–{Šè‚Å‚·‚ªitem_db.txt‚ÌC³‚ð‚¨Šè‚¢‚µ‚Ü‚·B(‘S‚Ẵƒbƒh‚Ébonus bMatkRate,15; ‚ð“ü‚ê‚é•K—v‚ª‚ ‚è‚Ü‚·B‚»‚Ì‘¼‚ÌC³‚à•K—v‚Å‚·B) +EƒeƒXƒg‚µ‚Ä‚¢‚È‚¢•¨‚à‚©‚È‚è‚ ‚è‚Ü‚·‚Ì‚Å–â‘肪‚ ‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B + (map/) + map.h C³B + map.c + map_quit() C³B + pc.h C³B + pc.c + pc_walk()Apc_stop_walking()Apc_setpos()Apc_authok() C³B + pc_calcstatus()Apc_bonus()Apc_natural_heal_sub() C³B + npc.h C³B + npc.c + npc_touch_areanpc()Anpc_parse_shop() C³B + clif.c + clif_quitsave()Aclif_getareachar_npc()Aclif_spawnnpc() C³B + clif_skill_estimation() C³B + battle.c + battle_calc_magic_attack()Abattle_calc_pc_weapon_attack() C³B + battle_calc_mob_weapon_attack() C³B + mob.c + mobskill_use() C³B + skill.c + skill_status_change_end()Askill_status_change_timer() C³B + skill_status_change_start() C³B + (db/) + const.txt C³B + (doc/) + item_bonus.txt C³B + +-------------- +//0642 by Ž€_ + +E‘•”õƒoƒOC³B(‚»‚ꂾ‚¯) + (map/) + pc.c + pc_authok()Apc_checkitem() C³B + +-------------- +//0641 by Ž€_ + +EbAspdRate‚ÆbSpeedRate‚̃oƒOC³B(‚»‚ꂾ‚¯)0640‚ÅŒvŽZ‚ð‚¿‚å‚Á‚Æ•Ï‚¦‚ÄŒ©‚Ü‚µ‚½‚ª‚»‚ꂪ‚Ü‚¸‚©‚Á‚½‚Ý‚½‚¢‚Å‚·B¡“x‚àŒvŽZŽ®‚ð•Ï‚¦‚Ü‚µ‚½‚ª‚à‚¤‘åä•v‚¾‚ÆŽv‚¢‚Ü‚·B(‘½•ª) + (map/) + pc.c + pc_calcstatus()Apc_bonus()Apc_delitem() + +-------------- +//0640 by Ž€_ + +EƒoƒOC³‚Æ‚µC³B +E‚Ý‚·‚Ƃꑃ‚ðŽQl‚µ‚ă_ƒ[ƒWŒvŽZ‚ð‚µC³B +Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚Å) +EƒLƒƒƒ‰‚ÌHP‚ÆSP‚ð2byte‚©‚ç4byte‚É•ÏXB(ƒeƒXƒg‚Í‚µ‚Ä‚¢‚Ü‚·‚ªƒoƒO‚ªo‚é +‰Â”\«‚à‚©‚È‚è‚ ‚è‚Ü‚·B‚½‚¾ƒLƒƒƒ‰ƒZƒŒƒNƒg‰æ–Ê‚ÅHP‚âSP‚ª32768‚ð‰z‚¦‚鎞 +•\Ž¦‚Í32768‚ɂȂ邯‚Ç“à•”‚̈—‚ͳí‚É“®‚«‚Ü‚·‚Ì‚Å‚»‚ê‚̓oƒO‚Å‚Í‚ ‚è‚Ü‚¹‚ñB +ƒpƒPƒbƒg‚Ì’·‚³‚Ì‚¹‚¢‚Å‚»‚êˆÈŠOŽè’i‚ª‚È‚©‚Á‚½‚Ì‚Å...) +EbCriticalDef(ƒNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚í‚È‚¢Šm—¦+n%)‚̈—•ÏXB100‚É‚·‚ê‚Î +ƒNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚í‚È‚¢‚悤‚É‚È‚è‚Ü‚·B) +EbInnerAtk‚ðbBaseAtk‚É•ÏXB‚Ý‚·‚Ƃꑃ‚ŃJ[ƒh‚ÌUŒ‚‚ÍŠî–{UŒ‚—Í‚Ì•û‚É‘«‚³‚ê‚é‚Æ‚ ‚è‚Ü‚µ‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½B¡“x‚Íオ‚Á‚½UŒ‚—Í‚ª•\Ž¦‚³‚ê‚Ü‚·B +EbDoubleRate‚̈—•ÏXBŠm—¦‚ð‘«‚³‚¸‚Ɉê”Ô‚‚¢•¨‚¾‚¯“K—p‚µ‚Ü‚·B‚»‚ê‚ƶŽè +‘•”õ‚Ìꇖ³Ž‹‚·‚é‚悤‚É•ÏX‚µ‚Ü‚½B(¶Žè‚̓_ƒuƒ‹‚ª“K—p‚³‚ê‚Ü‚¹‚ñ‚Ì‚Å) +EbDoubleAddRate’ljÁB‹@”\‚̓_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦+n%(•Ší–³Ž‹)‚Å‚·B +¶Žè‘•”õ‚Í–³Ž‹‚³‚ê‚Ü‚·B +E0635‚ÅUŒ‚—Í•\Ž¦‚ð–{ŽI‚É‚ ‚킹‚Ü‚µ‚½B‚»‚µ‚Ä¡“x‚Í‹|‚¾‚¯‚Å‚Í‚È‚ +ŠyŠí‚ƃ€ƒ`‚àdex‚É‚æ‚Á‚ÄUŒ‚—Í‚ªã‚ª‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½B +E‘•”õ‚µ‚½•Ší‚ªÁ‚¦‚éƒoƒOC³‚ׂ̈ɂµC³‚Í‚µ‚Ü‚µ‚½‚ª–{“–‚É +‘åä•v‚È‚Ì‚©‚Í•s–¾‚Å‚·B•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B + (conf/) + battle_athena.conf C³B + (db/) + const.txt C³B + item_db.txt C³B + (doc/) + item_bonus.txt C³B + conf_ref.txt C³B + (map/) + map.h C³B + pc.c + pc_calcstatus()Apc_bonus()Apc_equipitem() C³B + battle.h C³B + battle.c + battle_calc_mob_weapon_attack()Abattle_calc_pc_weapon_attack() C³B + battle_config_read() C³B + clif.c + clif_updatestatus()Aclif_parse_LoadEndAck()Aclif_party_hp() C³B + (common/) + mmo.h C³B + (char/) + char.c + mmo_char_send006b()Aparse_char() C³B + +-------------- +//0639 by ŒÓ’±—– + +Eladmin‚ÌC³‚È‚Ç + Eƒvƒƒ“ƒvƒg‚Ì“ü—Í‚ÉTerm::ReadLine‚ðŽg‚¤‚悤‚É‚µ‚½ + @i“ü—Í—š—ð‚âƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Ì•ÒW‚ª‰Â”\‚Éj + EPOSIXŠÖŒW‚̈—‚Ì—áŠOƒGƒ‰[‚ðƒgƒ‰ƒbƒv‚·‚é‚悤‚É‚µ‚Ü‚µ‚½ + @iPOSIX‚ª‘S‚Žg‚¦‚È‚¢ŠÂ‹«‚Å‚àÅ’áŒÀA“®‚‚悤‚É‚È‚Á‚½‚©‚à‚µ‚ê‚È‚¢j + Eו”C³ + + (tool/) + ladmin + Ver.1.04‚ÉB + +EMODƒo[ƒWƒ‡ƒ“‚ª‚¨‚©‚µ‚¢–â‘è‚ðC³ + (common/) + version.h + ATHENA_MOD_VERSION‚ª‚Wi”‚Å‹Lq‚³‚ê‚Ä‚¢‚é–â‘è‚ðC³ + ”Žš‚Ì“ª‚É0‚ð‚‚¯‚é‚Æ‚Wi”‚É‚È‚é‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢ + +-------------- +//0638 by ”g˜Q + +E0635E0637‚ÅV‚µ‚ƒAƒCƒeƒ€Œø‰Ê‚ªŽÀ‘•‚³‚ꂽ‚Ì‚ÅA‚»‚ê‚É”º‚Á‚Äitem_db.txt‚ðC³ +Eitem_bonus.txt‚ðC³ + (db/) + item_db.txt C³ + (doc/) + item_bonus.txt C³ + +-------------- +//0637 by Ž€_ + +E0635‚̃oƒOC³B +Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚ðŒ©‚Ä‚‚¾‚³‚¢B) +EŽžŠÔ‚ª’x‚·‚¬‚Ä0635‚Åà–¾‚µ‚Ä‚È‚©‚Á‚½‚Å‚·B(Q•s‘«‚¾‚Á‚½‚Ì‚Å...) +‚Ü‚¸Žd—l‚ª•Ï‚í‚Á‚½‚Ì‚Í“ñ“—¬‚̃_ƒ[ƒW‚ð•Ší•Ê‚ÉŠ®‘S‚É•ª‚¯‚Äs‚¤‚悤‚É +•ÏX‚ƃAƒTƒVƒ“‚¶‚á‚È‚‚ĂඎèC—û‚ðŠo‚¦‚Ä‚¢‚ê‚Γñ“—¬‚ðŽg‚¦‚é‚悤‚É +•ÏX‚µ‚Ü‚µ‚½B‚»‚ê‚ƃ_ƒ[ƒW‚ÌŒvŽZ‚ð‚¿‚å‚Á‚ÆC³B +‚»‚µ‚Äbonus‚ɒljÁ‚³‚ꂽ‚Ì‚Í +bonus bInnerAtk,n; “à•”UŒ‚—Í+n +ƒJ[ƒh‚̈ø‚«ã‚°ƒ_ƒ[ƒW—p‚Å‚·B•\Ž¦‚Í‚³‚ê‚È‚¢‚¯‚ǃ_ƒ[ƒW‚ÉŒvŽZ‚³‚ê‚Ü‚·B +bonus bSpeed,n; ˆÚ“®‘¬“x+n +ˆÚ“®‘¬“x‚ðnã‚°‚Ü‚·B +bonus bAspd,n; UŒ‚‘¬“x+n +UŒ‚‘¬“x‚ðnã‚°‚Ü‚·B +bonus bSpeedRate,n; ˆÚ“®‘¬“x+n% +ˆÚ“®‘¬“x‚ðn%ã‚°‚Ü‚·B +bonus bAspdRate,n; UŒ‚‘¬“x+n% +UŒ‚‘¬“x‚ðn%ã‚°‚Ü‚·B +bonus bHPrecovRate,n; HPŽ©“®‰ñ•œ—¦+n% +Ž©“®‰ñ•œ‚·‚éHP‚Ì—Ê‚ðn%ã‚°‚Ü‚·BƒXƒLƒ‹‚É‚æ‚é‰ñ•œ‚ɂ͉e‹¿‚ª‚ ‚è‚Ü‚¹‚ñB–{ŽI‚ÌŽd—l‚Æ‚ ‚Á‚Ä‚¢‚é‚©‚Í•s–¾‚Å‚·B +bonus bSPrecovRate,n; SPŽ©“®‰ñ•œ—¦+n% +Ž©“®‰ñ•œ‚·‚éSP‚Ì—Ê‚ðn%ã‚°‚Ü‚·BƒXƒLƒ‹‚É‚æ‚é‰ñ•œ‚ɂ͉e‹¿‚ª‚ ‚è‚Ü‚¹‚ñB–{ŽI‚ÌŽd—l‚Æ‚ ‚Á‚Ä‚¢‚é‚©‚Í•s–¾‚Å‚·B +bonus bCriticalDef,n; ƒNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚í‚È‚¢Šm—¦+n% +ƒNƒŠƒeƒBƒJƒ‹‚Ì‘Ï«‚ðnã‚°‚Ü‚·B10000ˆÈã‚É‚·‚é‚ƃNƒŠƒeƒBƒJƒ‹‚ð‹ò‚ç‚¢‚Ü‚¹‚ñB +bonus bMVPaddAtkRate,n; MVPƒ‚ƒ“ƒXƒ^[‚Én%‚̒ljÁƒ_ƒ[ƒW +ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚Én%‚̒ljÁƒ_ƒ[ƒW‚ð—^‚¦‚Ü‚·B[•£‚Ì‹RŽmƒJ[ƒh—pB +bonus bNearAtkDef,n; ‹ß‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚ç‚· +‘S‚Ä‹ß‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚炵‚Ü‚·B(–‚–@‚ƃgƒ‰ƒbƒvA‘é‚ðœ‚) +bonus bLongAtkDef,n; ‰“‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚ç‚· +‘S‚ĉ“‹——£UŒ‚‚̃_ƒ[ƒW‚ðn%‚ÌŒ¸‚炵‚Ü‚·B(–‚–@‚ƃgƒ‰ƒbƒvA‘é‚ðœ‚) +bonus bDoubleRate,n; ƒ_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦+n%(•Ší–³Ž‹) +•Ší‚ÉŠÖŒW‚È‚”“®‚·‚éƒ_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦‚ðn%ã‚°‚Ü‚·B +ƒ_ƒuƒ‹ƒAƒ^ƒbƒNƒXƒLƒ‹‚Æ•Ê‚Ì”»’è‚ðs‚¤ˆ×ƒ_ƒuƒ‹ƒAƒ^ƒbƒNƒXƒLƒ‹‚ª +‚ ‚Á‚Ä‚àƒXƒLƒ‹‚É‚æ‚éƒ_ƒuƒ‹ƒAƒ^ƒbƒNŠm—¦‚ªã‚ª‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB +ƒTƒCƒhƒƒCƒ“ƒ_[ƒJ[ƒh—pB + (map/) + pc.c + pc_bonus()Apc_calcstatus() C³B + pc_natural_heal_sub() C³B + battle.h + struct Battle_Config {} C³B + battle.c + battle_calc_pc_weapon_attack()Abattle_calc_mob_weapon_attack() C³B + battle_config_read() C³B + (db/) + skill_db.txt + ƒXƒeƒB[ƒ‹‚ÌSP‚ð10‚ÉC³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + +-------------- +//0636 by Sin + +EƒfƒoƒbƒO—pƒ|ƒ^Žq‚³‚ñƒXƒNƒŠƒvƒg(npc_pota.txt)‚̃Aƒ}ƒcEƒRƒ“ƒƒ“‚ւ̑ΉžB +@‚·‚Å‚ÉŽ©—ÍŽÀ‘•‚³‚ê‚Ä‚¢‚ç‚Á‚µ‚á‚é•ûX‚à‘½‚¢‚©‚ÆŽv‚¢‚Ü‚·‚ªcB +@ƒRƒ“ƒƒ“ƒ_ƒ“ƒWƒ‡ƒ“‚Ì–¼‘O‚ª‚í‚©‚ç‚È‚¢‚½‚ßu›À›ÄD1v‚È‚Ç‚Æ‚³‚¹‚Ä‚¢‚½‚¾‚¢‚Ä‚¢‚Ü‚·B + (conf/) npc_pota.txt + +-------------- +//0635 by Ž€_ + +Ebattle_athena.conf‚É€–ڒljÁB(Ú‚µ‚¢‚±‚Æ‚Íconf_ref.txt‚ðŒ©‚Ä‚‚¾‚³‚¢B) +Ebonus‚ÉbInnerAtk(ƒJ[ƒh“™‚Å•\Ž¦‚Í‚³‚ê‚È‚¢‚¯‚ÇŽÀÛ‚É‚ÍUŒ‚—Í‚É”½‰f‚³‚ê‚镨—p‚Å‚·B)“™‚ð’ljÁB‘¼‚Ì‚Íitem_bonus.txt‚ðŒ©‚Ä‚‚¾‚³‚¢B(’ljÁ‚Í‚µ‚½‚¯‚Çitem_db.txt‚Í–w‚ñ‚ÇC³‚µ‚Ä‚Ü‚¹‚ñB) +E‚»‚Ì‘¼ƒoƒOC³‚âŽd—l•ÏX‚à‚â‚è‚Ü‚µ‚½‚ªˆêX‘‚ŽžŠÔ‚ª‚È‚¢‚Ì‚Å... + (map/) + makeile C³B + pc.c C³B + map.h C³B + clif.c C³B + battle.h C³B + battle.c C³B + itemdb.c C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + item_bonus.txt C³B + (db/) + const.txt C³B + item_db.txt C³B + +-------------- +//0634 by Ž€_ + +EweddingƒNƒ‰ƒX‚É‚Í“]E‚Å‚«‚È‚¢‚悤‚ÉC³B +EƒX[ƒp[ƒm[ƒrƒX‚ׂ̈Éexpƒe[ƒuƒ‹‚ðbase 4‚Âjob 4‚‚Ɋg’£B +exp.txt‚ª•Ï‚í‚èƒX[ƒp[ƒm[ƒrƒX‚¾‚¯‚ÌŒoŒ±’l‚ðÝ’è‚Å‚«‚Ü‚·B(exp.txt‚Ì +4‚–ڂªƒX[ƒp[ƒm[ƒrƒX‚Ìbase exp‚Å8‚–ڂªjob exp‚Å‚·B¡‚Í2ŽŸE‹Æ‚Ì•¨‚ð +ƒRƒs[‚µ‚½•¨‚ɉ߂¬‚Ü‚¹‚ñ‚ªB) exp.txt‚ÌÝ’è•û–@‚à’m‚ç‚È‚¢•û‚Í‚¢‚È‚¢‚Æ +Žv‚¢‚Ü‚·‚Ì‚Åà–¾‚ÍÈ—ª‚µ‚Ü‚·B +EƒX[ƒp[ƒm[ƒrƒX‚Í“]¶‚̃eƒXƒg‚ׂ̈ɊؑƒTƒNƒ‰ƒC‚¾‚¯ŽÀ‘•‚µ‚Ä‚¢‚镨‚Æ +Žv‚í‚ê‚Ü‚·‚ª(“]¶‚ªŽÀ‘•‚³‚ê‚ê‚΂Ȃ‚È‚é‚Æ—\‘ª‚µ‚Ä‚¢‚Ü‚·B)‚»‚ê‚ð +ŽÀ‘•‚µ‚Ä‚¢‚¢‚Ì‚©‚ÆŽv‚Á‚½‚è‚à‚µ‚Ü‚·‚ª... +EŒ‹¥ˆßÖ‚ÍŠù‚É0629‚ÅŽÀ‘•‚µ‚Ä‚¢‚é‚Ì‚É‚Ü‚½ƒpƒbƒ`‚Æ‚µ‚Ä +ƒAƒbƒv‚³‚ê‚é‚Ì‚à‚¿‚å‚Á‚Æ•Ï(H)‚Å‚·‚ËB‚»‚¤‚¢‚¦‚Îà–¾‚µ‚Ä‚È‚©‚Á‚½‚ñ‚Å‚·‚ËB +E‘•”õê—pƒXƒNƒŠƒvƒg‚Å‚ ‚échangebase‚̒ljÁ‚É‚æ‚Á‚ă^ƒLƒV[ƒh‚Æ +ƒEƒFƒfƒBƒ“ƒOƒhƒŒƒX‚ªŽÀ‘•‚µ‚Ä‚¢‚Ü‚·B‚±‚ê‚ÍE‹Æ‚ð•ÏX‚¹‚¸‚ÉŒ©‚½–Ú‚¾‚¯ +•Ï‚¦‚镨‚Å‚·BweddingƒNƒ‰ƒXˆÈŠO‚Ì“K—p‚à‰Â”\‚Å•Ï‘•ƒZƒbƒg‚Æ‚©‚àì‚ê‚é +‚킯‚Å‚·‚ª“à•”ˆ—‚Í•ÏX‚¹‚¸‚ÉŒ©‚½–Ú‚¾‚¯•Ï‚¦‚Ä‚¢‚é‚Ì‚Å0631‚Åà–¾‚µ‚½‚悤‚É +‘•”õ‚Å‚«‚È‚¢•¨‚ð‘•”õ‚µ‚Ä‚¢‚éꇈƗŽ‚¿‚ª‹N‚±‚é‰Â”\«‚ª‚ ‚è‚Ü‚·‚Ì‚Å +‘¼‚ÌE‹Æ‚ÅŽg‚¤‚Ì‚Í‚¨Š©‚ß‚µ‚Ü‚¹‚ñB‰¼ŽÀ‘•‚È‚Ì‚Í¡‚ÌŽd—l‚̓^ƒLƒV[ƒh‚Æ +ƒEƒFƒfƒBƒ“ƒOƒhƒŒƒX‚ð‘•”õ‚·‚邾‚¯‚ÅŒ©‚½–Ú‚ª•Ï‚í‚é‚©‚ç‚Å‚·BŠØ‘ƒTƒNƒ‰ƒC‚Ì +•û‚ł͉½‚©‚ÌðŒ‚ª•K—v‚¾‚ÆŽv‚Á‚Ä‚¢‚é‚Ì‚Å‚»‚ÌðŒ‚ª‚Ü‚¾ŽÀ‘•‚³‚ê‚¢‚È‚¢‚©‚ç +‰¼ŽÀ‘•‚Å‚·B‚»‚ê‚ÉweddingƒNƒ‰ƒX‚ðE‹Æ‚É‚µ‚Ä‚µ‚Ü‚¤‚ÆŒ‹¥‚·‚é‚ƃXƒLƒ‹“™‚ª +ƒŠƒZƒbƒg‚³‚ê‚é‚©•Ï‚É‚È‚é‚©‚Ì‚Ç‚¿‚ç‚È‚Ì‚Å•Ï‚¾‚ÆŽv‚Á‚Ä‚È‚©‚Á‚½‚Ì‚Å‚µ‚傤‚©H + help.txt C³B + (db/) + job_db1.txt C³B + exp.txt C³B + (map/) + pc.c + pc_jobchange()Apc_readdb() C³B + pc_nextbaseexp()Apc_nextjobexp() C³B + +-------------- +//0633 by ”g˜Q + +E‘•”õ‚ÌÝ’èC³BŒ‹¥ˆßÖ‚ÌE‚ÍAŽÀÛ‚É“]E‚·‚é‚Ì‚Å‚Í‚È‚ƒyƒRƒiƒCƒg(13)AƒyƒRƒNƒ‹ƒZ(21)‚̂悤‚ɉ摜‚ðŽg‚¤‚¾‚¯‚¾‚ÆŽv‚¤‚Ì‚Å +@‰½‚à‘•”õ‚Å‚«‚È‚¢Ý’è‚É‚µ‚Ü‚µ‚½BƒXƒpƒmƒr‚̓mƒr‚ª‘•”õ‚Å‚«‚é‚à‚Ì‚¾‚¯Ý’肵‚Ü‚µ‚½B +EŒÃ–Ø‚ÌŽ}‚ÌoŒ»ƒ‚ƒ“ƒXƒ^[‚ð’ljÁ +EƒAƒ}ƒc‚̃‚ƒ“ƒX‚Ì•¦‚«‹ï‡‚ð–{ŽI‚É‹ß‚‚È‚é‚悤‚ÉC³(‚Ü‚¾‚Ü‚¾ˆá‚¢‚Ü‚·‚ªEEE) + (conf/) + npc_monster.txt ƒ‚ƒ“ƒX–¼C³ + npc_monster_amatsu.txt C³ + (db/) + item_avail.txt ˆÆ—Ž‚¿ƒAƒCƒeƒ€’ljÁ + item_db.txt ‘•”õÝ’è‚ðC³A‘¼‘½” + mob_branch.txt C³ + mob_db.txt ƒ‚ƒ“ƒX–¼C³ + skill_tree.txt C³ + +-------------- +//0632 by nini + +E@jobchange‚ÅŒ‹¥ˆßւƃX[ƒp[ƒm[ƒrƒX‚É‚È‚ê‚é‚悤‚ÉB(’ˆÓFŠØ‘÷ˆäƒNƒ‰ƒCƒAƒ“ƒg‚Ì‚Ý) +ESƒmƒr‚̃XƒeAƒXƒLƒ‹‚È‚Ç‚àŽb’è’ljÁB(ƒm[ƒrƒX‚̃Rƒs[‚Å‚·‚ª) +@‚Æ‚è‚ ‚¦‚¸Œ©‚½–Ú‚¾‚¯‚Æ‚¢‚¤‚±‚Æ‚ÅAŒ‹¥ˆßÖ‚Å‚àUŒ‚‚Å‚«‚Ü‚·‚ª(‚½‚¾‚µƒm[ƒ‚[ƒVƒ‡ƒ“)A–{—ˆ‚Í‚Å‚«‚Ü‚¹‚ñB +Eã‚É‚ ‚킹‚Äitem_db•ÒWB +@Œ‹¥ˆßÖ‚Å•Ší‚à‚‚ÆactAsprƒGƒ‰[o‚·‚Ì‚ÅAŒ‹¥ˆßÖ‚Å‚Í•Ší‚ðŽ‚Ä‚È‚¢‚悤‚É‚µ‚½(‚Í‚¸)B + (db/) + job_db1.txt + job_db2.txt + item_db.txt + Œ‹¥ˆßÖASƒmƒr‚̃f[ƒ^ + skill_tree.txt + Sƒmƒr‚̃XƒLƒ‹ + (map/) + map.h + MAX_PC_CLASS‚ɒljÁ + +-------------- +//0631 by Ž€_ + +Eׂ©‚¢C³B +Eƒ^ƒLƒV[ƒh‚ƃEƒFƒfƒBƒ“ƒOƒhƒŒƒX‚Ì•\Ž¦‚ðbattle_athena.conf‚ÅÝ’è‚Å‚«‚é +‚悤‚É•ÏXB +E•ŠíƒOƒ‰ƒpƒbƒ`‚ɂ‚¢‚Ä‚Å‚·‚ªƒpƒbƒ`‘O‚ÍŽg‚¦‚È‚¢E‹Æ‚ª‘•”õ‚ð‚µ‚Ä‚à•\Ž¦‚Í +‚³‚ê‚È‚¢‚¾‚¯‚ňƗŽ‚¿‚Ü‚Å‚Í‹N‚±‚ç‚È‚©‚Á‚½‚¯‚Ç•ŠíƒOƒ‰ƒpƒbƒ`‚ÌŒã‚Í‚»‚Ì•Ší‚ð +‘•”õ‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢E‹Æ(–{ŽI‚Å)‚ª‘•”õ‚µ‚Ä‚µ‚Ü‚Á‚½ê‡ˆÆ—Ž‚¿‚ª‹N‚±‚é +‚±‚Æ‚ª‚ ‚è‚Ü‚·‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + (db/) + item_db.txt + 1161A2338A7170 C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + battle.h + struct Battle_Config‚Éwedding_modifydisplay ’ljÁB + battle.c + battle_config_read() C³B + pc.h + pc_cart_delitem() C³B + pc.c + pc_jobchange()Apc_additem()Apc_delitem()Apc_cart_delitem() C³B + pc_checkitem()Apc_getitemfromcart() C³B + clif.c + clif_changelook()Aclif_send()Aclif_parse_GlobalMessage() C³B + script.c + buildin_changebase() C³B + storage.c + storage_storageaddfromcart() C³B + vending.c + vending_purchasereq() C³B + +-------------- +//0630 by ˆø‘Þl + +EƒMƒ‹ƒh’E‘ÞŽž‚ÉcharƒT[ƒo‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚é‚Ì‚ðC³ +Ewater_height.txt‚ðXV +E0627‚ÉŠÖ˜A‚µ‚ÄmodifydisplayŠÖ˜A‚ðíœ + (char/) + int_guild.c + mapif_guild_leaved()‚̃oƒbƒtƒ@—e—Ê‚ª‘«‚è‚È‚©‚Á‚½‚Ì‚ÅA + unsigned char buf[64]; -> unsigned char buf[128]; + ‚ÆC³B + (conf/) + battle_athena.conf + equip_modifydisplay‚ðíœ + water_height.txt + prt_fild04.gat‚Æmoc_fild01.gat‚Ì•ª‚ð’ljÁ + (doc/) + conf_ref.txt + equip_modifydisplay‚Ìà–¾‚ðíœ + (map/) + battle.h + struct Battle_Config ‚©‚çequip_modifydisplay‚ðíœ + +-------------- +//0629 by Ž€_ + +E0627‚̃oƒOˆê•”C³‚ÆV‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚ɑΉžB(Ž©•ª‚̊ԈႢ‚Å‚µ‚½B +ƒ‚ƒ“ƒXƒ^[‚âNPC‚àV‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚ðŽg‚¤‚ÆŽv‚Á‚Ä‚¢‚½‚Ì‚Å‚·‚ª +V‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚̓vƒŒƒCƒ„[‚݂̂̂悤‚Å‚·B) +Eƒ^ƒLƒV[ƒh‚ƃEƒFƒfƒBƒ“ƒOƒhƒŒƒX‰¼ŽÀ‘•B(ŠØ‘‚̃TƒNƒ‰ƒCˆÆ‚¶‚á‚È‚¢‚Æ +ˆÆ—Ž‚¿‚³‚ê‚Ü‚·BŽg—p‚·‚鎞‚Íitem_db.txt‚̃Rƒ}ƒ“ƒgƒAƒEƒg‚³‚ê‚Ä‚¢‚é +2338‚Æ7170‚ð‰ðœ‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B) +ESP‰ñ•œƒAƒCƒeƒ€‚àint‚É‚æ‚Á‚ÄŒø‰Ê‚ª‘‚¦‚é‚悤‚É•ÏXB +E0627‚Å‘‚«–Y‚ê‚Å‚·‚ªƒJ[ƒg‚̃AƒCƒeƒ€ŒvŽZ‚Æitemdb_‚ðŒÄ‚Ô‚Ì‚ðŬ‰»‚·‚é +ˆ—‚ð“ü‚Á‚Ă邹‚¢‚Åpc_additem()Apc_delitem()Apc_cart_additem()Apc_cart_delitem()ˆÈŠO‚Ì•û–@‚ŃJ[ƒgƒAƒCƒeƒ€‚âƒAƒCƒeƒ€‚É•Ï“®‚ª‚ ‚éê‡ +³í‚É“®ì‚·‚é•ÛØ‚ª‚È‚¢‚Ì‚ÅC³‚Ì‚³‚¢‚É‚Í’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + readme0754‚ðreadme0574‚ÉC³B + makefile C³B + (map/) + map.h C³B + clif.c C³B + pc.c C³B + battle.c C³B + mob.c C³B + script.c C³B + (db/) + item_db.txt C³B + class_equip_db.txt C³B + skill_db.txt C³B(ŒëŽš‚ðŽ¡‚µ‚½‚¾‚¯‚Å‚·B) + (conf/) + npc_event_doll.txt C³B(—¬˜Ql‚³‚ñ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B) + +-------------- +//0628 by NOCTURNE + +Esnapshot +Esnapshot‚©‚çsnapshot‚Ü‚Å‚ÌReadme•ªŠ„ +E—v–]‚ª‘½‚©‚Á‚½‚Ì‚Åsnapì¬iƒvƒƒOƒ‰ƒ€“I‚È•ÏX“_‚Í–³‚µ + +-------------- +//0627 by Ž€_ + +EƒR[ƒh‚ÌÅ“K‰»‚Æ‚µC³B(‚µ‚ÍŒy‚‚È‚é‚ÆŽv‚¢‚Ü‚·B) +E @modifydisplayƒRƒ}ƒ“ƒhíœB +EV‚µ‚¢ˆÚ“®ƒpƒPƒbƒg‚ɑΉž‚¾‚ÆŽv‚Á‚½‚ç0x1d8A0x1d9A0x1daƒpƒPƒbƒg‚̈ꕔ‚ª +0x78A0x79A0x7b‚Æ•Ï‚í‚Á‚Ä‚é‚Ý‚½‚¢‚Å‚·B‚‚܂衂̂܂܂ł͑Ήž‚Å‚«‚Ü‚¹‚ñB +X,Y‚ÌÀ•W‚Ì•”•ª‚Ì‘Ž®‚ª•Ï‚í‚Á‚½‚Ì‚©‚Æ—\‘ª‚Í‚µ‚Ä‚¢‚Ü‚·‚ª... +î•ñ‚ð‹‚Ý‚Ü‚·B(makefile‚ÌDPACKETVER‚ð4‚É‚·‚ê‚Î0x1d8A0x1d9A0x1da‚ð +Žg‚¢‚Ü‚·‚ªÀ•W‚ª‚¸‚ꂽ‚炵‚‰½‚à•WŽ¦‚³‚ê‚Ü‚¹‚ñB) +E100000‚©‚炾‚Á‚½char_id‚ð150000‚©‚ç‚É•ÏXB(ƒyƒbƒg‚Ì—‘‚Ì–â‘è‚Å•Ší‚Ì–¼‘O‚ª‚¿‚å‚Á‚Æ•Ï‚É‚È‚Á‚½‚Ì‚ÅC³‚µ‚Ü‚µ‚½B) +Eƒyƒbƒg‚̃R[ƒh‚µC³B(pet_id‚ðcard[2]‚Æcard[3]‚©‚çcard[1]‚Æcard[2]‚É•ÏX‚µ‚Ü‚µ‚½B‚æ‚Á‚Ä‘O‚Éì‚Á‚½—‘‚ÍŽg‚¦‚Ü‚¹‚ñBˆÆ‚Åcard[3]‚Ì‹@”\‚ª•Ï‚í‚Á‚½‚Ì‚Å +Žd•û‚È‚C³‚µ‚Ü‚µ‚½B¡“x‚Íconvertƒc[ƒ‹‚ª‚ ‚è‚Ü‚¹‚ñBì‚鎞ŠÔ‚ª‚È‚©‚Á‚½‚Ì‚Å...) +EÅ“K‰»‚ׂ̈ÉC³‚µ‚½Š‚ª‘½‚¢‚Å‚·‚ª‘S‚ij퓮삷‚é•ÛØ‚Í‚ ‚è‚Ü‚¹‚ñB +ŽI—Ž‚¿ƒoƒO‚ª”¶‚µ‚½‚ç•ñ‚¨Šè‚¢‚µ‚Ü‚·B(batte.c‚Í‚Ü‚¾Å“K‰»‚µ‚Ä‚Ü‚¹‚ñB) +ƒJ[ƒg‚̃AƒCƒeƒ€ŒvŽZ‚âƒAƒCƒeƒ€‚Ìd—Ê‚ÌŒvŽZ‚ðʼn‚É‚¾‚¯‚·‚é‚悤‚É‚µ‚Ä‚¢‚é‚Ì‚Å•\Ž¦‚É‚µ–â‘肪‚ ‚é‚©‚à... +EC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯‘‚¢‚Ä‚¨‚«‚Ü‚·B + makefile + help.txt + (common/) + mmo.h + (map/) + map.h + atcommnad.h + atcommnad.c + pc.h + pc.c + clif.c + script.c + trade.c + itemdb.h + itemdb.c + battle.h + battle.c + pet.c + map.c + mob.c + (char/) + char.c + (conf/) + battle_athena-conf + atcommand_athena.conf + +-------------- +//0626 by ˆø‘Þl + +EƒpƒPƒbƒg’·ƒe[ƒuƒ‹iVˆÚ“®ƒpƒPƒbƒg‚È‚ÇjC³ + (doc/) + client_packet.txt ƒpƒPƒbƒg‰ð̓XƒŒ M‚³‚ñ‚Ìî•ñ‚𔽉f + conf_ref.txt 0624‚ɇ‚킹‚ÄC³ + (map/) + clif.c + packet_len_table[] client_packet.txt‚ɇ‚킹‚ÄC³ + +-------------- +//0625 by ˆø‘Þl + +E@hide“§–¾‰»‚ðBOSS‚È‚Ç‚ÉŒ©”j‚ç‚ê‚È‚¢‚悤‚ÉC³ + (map/) + pc.h + #define pc_iscarton(sd) C³ + #define pc_isinvisible(sd) ’ljÁ + mob.c + mob_attack() + mob_target() + mob_ai_sub_hard_activesearch() + mob_ai_sub_hard_mastersearch() + mob_ai_sub_hard() + “§–¾ipc_isinvisible(sd)!=0j‚ÅŽ€l‚Æ“¯—l‚É”»’肳‚ê‚é‚悤‚ÉC³ + (conf/) + npc_cTower.txt C³ithx to holyzard‚³‚ñj + +-------------- +//0624 by ‚é‚é‚é + +E•Ší‰æ‘œ•\Ž¦ˆ—‚̈êViVˆÚ“®ƒpƒPƒbƒgŽg—pj +Eã‚ÆŠÖ˜A‚µ‚ÄA@modifydisplayƒRƒ}ƒ“ƒh‚ðÝ‚¯‚½ +@@@@‹@”\‚Æ‚µ‚Ä‚ÍAŒ»Ý‚̃AƒTƒVƒ“•Ší‚È‚Ç‚Ì‚ª‚¨‚©‚µ‚¢ê‡‚ÉA‚Ü‚½‚Í‹C‚É“ü‚ç‚È‚¢‚Æ‚©‚ÅA +@@@@ƒLƒƒƒ‰–ˆ‚É‹ŒƒpƒP‚ðŽg—p‚·‚é‚悤‚É‚µ‚Ä‚¢‚éB + + (map/) + atcommand.c + atcommand() @modifydisplayƒRƒ}ƒ“ƒh‚ð’ljÁ + atcommand.h + struct Atcommand_Config { +'7d •ÏX + clif.c + clif_set0078_and01d8() , clif_set007b_and01da() ŠÖ”–¼•ˆ—‚Ì•ÏX + clif_spawnpc() , clif_movechar() , clif_changelook() , clif_getareachar_pc() , + clif_fixpcpos() , clif_parse_LoadEndAck() •ÏX + map.h + struct map_session_data Eb} •ÏX + pc.c + pc_setnewpc() , pc_calcstatus() , pc_equiplookall() , pc_changelook() •ÏX + + (conf/) + atcommand_athena.conf + equip_modifydisplay ’ljÁ + + •ÏX‰ÓŠ‚Í‘S‚ăL[ƒ[ƒhumodifydisplayv‚ŃT[ƒ`‚·‚ê‚΂قڂ킩‚é‚©‚ÆB + +ƒRƒƒ“ƒgF‚à‚¤‚±‚ê‚Å–â‘è‚Í–³‚¢‚Í‚¸BŽÀ‚Í‘å‚¢‚Ȃ銨ˆá‚¢‚ð‚µ‚Ä‚½ŒÂŠ‚ª‚ ‚Á‚½‚Ì‚Í“àiƒ}ƒew + +-------------- +//0623 by ˆø‘Þl + +E@hide‚Å“§–¾‰»iŒ©‚ç‚ê‚È‚¢•MOB‚Ƀ^ƒQ‚ç‚ê‚È‚¢j‚·‚é‚悤‚ÉC³‚È‚Ç + (map/) + atcommand.c + @hide‚ÌoptionÝ’è‚ð0x04‚©‚ç0x40‚É•ÏX + mob.c + mob_attack() + mob_target() + mob_ai_sub_hard_activesearch() + mob_ai_sub_hard_mastersearch() + mob_ai_sub_hard() + option”»’è‚ð0x06‚©‚ç0x46‚ÉC³ + (conf/) + npc_event_potion.txt MORISON_MEATC³ithx to holyzard‚³‚ñj + +-------------- +//0622 by ˆø‘Þl + +Emob‚ªƒXƒLƒ‹Žg—p‚ÉŽ¸”s‚µ‚½ê‡A’ÊíUŒ‚‚·‚é‚悤‚É + (map/) + mob.c + mobskill_use_id() ƒXƒLƒ‹Žg—pŽ¸”s‚Å0A¬Œ÷‚Å1‚ð•Ô‚·‚悤‚ÉC³ + mobskill_use_pos() ƒXƒLƒ‹Žg—pŽ¸”s‚Å0A¬Œ÷‚Å1‚ð•Ô‚·‚悤‚ÉC³ + mobskill_use() ã‹L‚𔽉f‚µ‚ÄŽ¸”sŽž‚É‚Í0‚ð•Ô‚·‚悤‚ÉC³ + +-------------- +//0621 by ŒÓ’±—– + +EƒAƒCƒeƒ€ƒ`ƒFƒbƒN‚ðs‚¤‚©‚Ç‚¤‚©conf/battle_athena.cnf‚É‘‚¯‚é‚悤‚É +EƒAƒCƒeƒ€ƒ`ƒFƒbƒN‚Å•s³‚Æ”»’f‚·‚é‚©‚Ç‚¤‚©‚ðdb/item_avail.txt‚É‘‚¯‚é‚悤‚É +E@itemcheck‚Å–¾Ž¦“I‚ɃAƒCƒeƒ€ƒ`ƒFƒbƒN‚Å‚«‚é‚悤‚É + + ƒfƒoƒO‚âƒeƒXƒg‚È‚Ç‚ÅFX‚ȃAƒCƒeƒ€ID‚ðŽg—p‚µ‚½‚¢ê‡‚Í + ƒAƒCƒeƒ€ƒ`ƒFƒbƒN‚𖳌ø‚É‚µ‚ĉº‚³‚¢B(item_check: off) + –³Œø‚É‚µ‚½ê‡‚Å‚à@itemcheckƒRƒ}ƒ“ƒh‚Ń`ƒFƒbƒN‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B + cnfƒtƒ@ƒCƒ‹‚Í—pˆÓ‚µ‚Ä‚È‚¢‚Ì‚Å•K—v‚È‚çŠeŽ©“K“–‚É‘‚«Š·‚¦‚Ä‚‚¾‚³‚¢B + + (db/) + item_avail.txt + V‹K’ljÁB•s³ƒAƒCƒeƒ€‚Ì—ñ‹“‚ÉŽg—pB–¢Š®¬B‘¼—Í–{ŠèB + item_db.txt‚É’è‹`‚³‚ê‚Ă邪ŽÀÛ‚É‚ÍŽg—p‚Å‚«‚È‚¢ƒAƒCƒeƒ€‚ð‘‚B + (doc/) + conf_ref.txt + battle_athena.cnf‚Æatcommand_athena.cnf‚Ìà–¾C³ + (map/) + itemdb.c/itemdb.h + itemdb_availableƒ}ƒNƒ’ljÁ + itemdb_read_itemavail()’ljÁ + itemdb_readdb()‚Åavailable=1‚É‚·‚é‚悤‚É + itemdb_search()‚Å‘¶Ý‚µ‚È‚¢ID‚Íavailable=0‚Ńf[ƒ^‚ðì‚é‚悤‚É + do_init_itemdb()‚Åitemdb_read_itemavail()‚ðŒÄ‚Ԃ悤‚É + pc.c/pc.h + pc_checkitem()‚ðƒGƒNƒXƒ|[ƒg + pc_checkitem()‚Åavailable‚Æbattleconfig‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É + atcommand.c/atcommand.h + @item‚Åbattleconfig‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É + @itemcheckƒRƒ}ƒ“ƒh’ljÁ + atcommandconfig‚Éitemcheckƒƒ“ƒo’ljÁ + battle.c/battle.h + battle_config‚Éitem_checkƒƒ“ƒo’ljÁ + +Eladmin‚ÌC³‚È‚Ç + ƒAƒJƒEƒ“ƒg’ljÁAƒpƒXƒ[ƒh•ÏX‚ÌۂɃpƒXƒ[ƒh‚ðÈ—ª‚·‚é‚ÆA + ƒpƒXƒ[ƒh—p‚̃GƒR[‚µ‚È‚¢ê—pƒvƒƒ“ƒvƒg‚Å“ü—Í‚Å‚«‚Ü‚·i•“ü—ÍŠm”FjB + ’ljÁ‚ÌۂɃpƒXƒ[ƒh‚ª•\Ž¦‚³‚ꂽ‚碂éꇂȂǂÉB + ƒpƒXƒ[ƒh“ü—Í’†‚ÍCtrl+C‚ªŒø‚©‚È‚¢‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + + ƒpƒXƒ[ƒh‚Ì•s³•¶Žš‚Ì•\Ž¦‚ªA‰½•¶Žš–Ú‚©‚Å•\Ž¦‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + ‚»‚Ì‘¼”÷–‚Ƀ`ƒFƒbƒN’ljÁ‚È‚ÇB + + Cygwin‚Å‚µ‚©“®ìŠm”F‚µ‚Ä‚¢‚Ü‚¹‚ñBPOSIXƒ‚ƒWƒ…[ƒ‹‚ðŽg‚Á‚Ä‚¢‚é‚Ì‚ÅA + POSIX‚Å‚È‚¢(•ƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“‚à‚Å‚«‚È‚¢)ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚¾‚Æ + “®‚©‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB + UNIXŒn‚Å‚Ínkf‚ȂǂʼnüsƒR[ƒh‚ð•ÏŠ·‚µ‚È‚¢‚Æ‚¾‚ß‚©‚àH + + (tool/) + ladmin + Ver.1.03‚ÉB + +------------- +//0620 by ŒŽ‰r‚Ý + +Eƒz[ƒŠ[ƒNƒƒXŽÀ‘• + + (db) + skill_db.txt C³ + (map) + skill.c + skill_additional_effect()C³(ƒRƒƒ“ƒg‚Ì‚Ý) + battle.c + Damage battle_calc_weapon_attack()C³ + +------------- +//0619 by ‚é‚é‚é + +Eƒpƒbƒ`0617‚Ì‚Å‚â‚è–Y‚ê‚Æ”÷–‚ÈC³ + + clif.c + clif_movechar(),clif_parse_LoadEndAck() C³ + +-------------- +//0618 by nini + +EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚̉r¥AƒfƒBƒŒƒC’ljÁB‰ñ•œ—ÊC³B +EÁ”ïSPC³ +EƒAƒ[ƒVƒƒƒ[‚͈̔͂ð5*5‚É‚µ‚Ä2ƒZƒ‹‚«”ò‚΂µB +Eƒ`ƒƒ[ƒWƒAƒ[‚ÌŽg—p•ŠíðŒ–³‚µB +EƒXƒsƒAƒXƒ^ƒu‚Ì”ò‹——£‚ð6ƒZƒ‹‚ÉB + (/db) + cast_db.txt C³ + skill_db.txt C³ + (/map) + battle.c + battle_calc_weapon_attack() C³ + skill.c + skill_castend_damage_id() C³ + skill_check_condition() C³ + skill_castend_nodamage_id() C³ + +-------------- +//0617 by ‚é‚é‚é + +E•Ší‰æ‘œ•\Ž¦‚Å‘¼ƒLƒƒƒ‰‚ª•\Ž¦‚³‚ê‚È‚¢‚Ì‚ðu‚Æ‚è‚ ‚¦‚¸vC³ +EŒC•\Ž¦‚̃pƒPƒbƒg‚ð‘—M’âŽ~iŒ»Žž“_‚ł̓€ƒ_BƒRƒƒ“ƒg‚µ‚½‚¾‚¯‚Å‚·‚ªj + clif.c + clif_spawnpc(),clif_getareachar_pc(),clif_fixpcpos(),clif_changelook()C³ + pc.c + clif_changelook()‚ª‚ ‚é•”•ª‚ðC³i•Ší[„‚‚Ƈ‚É‚È‚é‚悤‚Ɉ—‚Ì“ü‚ê‘Ö‚¦j + +ƒRƒƒ“ƒgB +Vƒ}ƒbƒvˆÚ“®ƒpƒP(0x1d8`0x1daj‚ðFX‚Æ‚â‚Á‚½‚ªA‚»‚̃pƒP‚P‚‚ŕŠí•\Ž¦‚ªVŽ®‚̂ɑΉž‚µ‚Ä‚é +‚Æ‚¢‚¤‚킯‚Å‚Í‚È‚¢‚Á‚Û‚¢B‹ŒˆÚ“®ƒpƒP‚¾‚ÆŽ©•ªˆÈŠO‚̃Lƒƒƒ‰‚ªˆÚ“®‚·‚é‚Æ‹ŒŽ®•\Ž¦‚É‚È‚Á‚Ä‚µ‚È‚¤B +X‚ÉAV•Ší•\Ž¦ƒpƒP‚Í•Ší‚Æ‚‚Ì“¯Žžˆ—‚ªo—ˆ‚Ä‚È‚¢B‚¨‚»‚炃Nƒ‰ƒCƒAƒ“ƒg‚Ì–â‘肾‚ÆŽv‚¤B +‚Æ‚è‚ ‚¦‚¸AƒLƒƒƒ‰‚ª“®‚‚½‚Ñ‚ÉV•ŠíƒpƒP„‹Œ‚ƒpƒP‚Ì‚Q‚‚̑•”õƒpƒP‚𑗂邱‚Æ‚Å‰ðŒˆ‚³‚¹‚Ä‚¢‚éB +–{ŽI‚Å‚Í‚Ç‚¤‚È‚Ì‚©‚ÌŽÀÛ‚Ì‚Æ‚±‚ë‚̃f[ƒ^‚ª–³‚¢‚½‚ßA‚±‚êˆÈã‚Ì‚±‚Ƃ̓€ƒŠB + +-------------- +//0616 by ŒÓ’±—– + +Ewater_height.txt‚ð“Ç‚ñ‚Å‚¢‚È‚¢‚ƃT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³ + map.c + map_waterheight()C³ + +EPC‚̃}ƒbƒvˆÚ“®Žž‚̃AƒCƒeƒ€ƒ`ƒFƒbƒN‚ŃAƒCƒeƒ€ID‚Ì‘¶Ý‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³ +Eˆê•”‚Ì—ƒRƒ}ƒ“ƒh‚ŃAƒCƒeƒ€ID‚Ì‘¶Ý‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³ + pc.c + pc_checkitem()C³ + pc_authok()C³ pc_checkitem()’ljÁ + clif.c + clif_parse_LoadEndAck()C³ + itemdb.c + itemdb_exists()’ljÁiitemdb_search‚Æ“¯‚¶‚¾‚ªAdb‚É‘¶Ý‚µ‚È‚¢ + ꇂÍV‚µ‚¢ƒf[ƒ^‚ðì‚炸‚ÉNULL‚ð•Ô‚·j + itemdb_read_classequipdb()C³ itemdb_search=>itemdb_exists + itemdb_read_itemnametable()C³ itemdb_search=>itemdb_exists + itemdb_read_itemvaluedb()C³ itemdb_search=>itemdb_exists + atcommand.c + @itemC³ itemdb_search=>itemdb_exists + @produceC³ itemdb_exists‚Ń`ƒFƒbƒN‚·‚é‚悤‚É + +-------------- +//0615 by ”g˜Q + +EƒAƒCƒeƒ€DATA‘å•C³ +@Žå‚ÈC³‰ÓŠ‚ÍA‰ñ•œƒAƒCƒeƒ€‚̉ñ•œ—Ê‚ÌC³AÁ”ïƒAƒCƒeƒ€‚ðclass_equip_db.txt–³‚µ‚Å‚àŽg—p‚Å‚«‚é—l‚ÉC³A +@‘•”õ•i‚Ì‘•”õ‰Â”\E‚ð‘S‚ÄC³AƒJ[ƒhŒø‰Ê‚ðC³AetcEEE‚Å‚·B + +-------------- +//0614 by Nikita + +EƒAƒCƒeƒ€DATA‚ÌC³iŽå‚ɉñ•œ—Êj +EƒXƒLƒ‹‰ð“Å‚ÌŽË’öC³ +E0612‚Ìׂ©‚¢C³ + (conf/) + npc_town_prontera.txt C³ + (db/) + item_db.txt C³ + skill_db.txt C³ + +-------------- +//0613 by ˆø‘Þl +EcheckweightC³ + (conf/) + npc_event_making.txt checkweight•”•ª‚ðC³ + npc_event_potion.txt ƒ|[ƒVƒ‡ƒ“AƒWƒ…[ƒXNPC‚ÌcheckweightC³ + +-------------- +//0612 by nini + +EƒAƒCƒeƒ€DATAC³ + (db/) + item_db.txt C³ + (conf/) + npc_town_***.txt C³ + R.O.M776‚³‚ñ‚ðŽQÆ‚µ‚Ü‚µ‚½B + +-------------- +//0611 by Ž€_ + +EƒAƒCƒeƒ€Žg—pðŒ‚ª‚ ‚í‚È‚¢Žž0xa8ƒpƒPƒbƒg‚ð‘—‚é‚悤‚É•ÏXB(ƒoƒO•ñƒXƒŒƒbƒh 243‚Ìno name‚³‚ñî•ñ’ñ‹Ÿ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B) +EQM‚ÅW’†—ÍŒüã‚Æ‘¬“xã¸AƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…Aƒ‰ƒEƒhƒ{ƒCƒXAƒXƒsƒAƒNƒCƒbƒPƒ“Aƒc[ƒnƒ“ƒhƒNƒCƒbƒPƒ“‚ð‰ðœ‚·‚é‚悤‚ÉC³B +E‘¬“x㸂Ƒ¬“xŒ¸‚Å‹t‚̃XƒLƒ‹‚ª‰ðœ‚³‚ê‚é‚悤‚ÉC³B +E0609‚Å‘‚«–Y‚êBƒ‚ƒ“ƒXƒ^[‚ªQM‚͈̔͂©‚甲‚¯‚Ä‚àŒø‰Ê‚ªˆÛŽ‚·‚é‚悤‚É +•ÏX‚ƃuƒŒƒbƒVƒ“ƒO‚ÅŽô‚¢‚ÆΉ»‚ª‰ðœ‚³‚ê‚é‚悤‚ÉC³B + clif.c + clif_useitemack() C³B + skill.c + skill_status_change_start() C³B + pc.c + pc_insert_card() C³B(‚±‚ê‚̓J[ƒhƒoƒO‚Æ‚ÍŠÖŒW‚È‚¢C³‚Å‚·B‚»‚̃oƒO‚ÌC³‚ÍŽ©•ª‚ª05xx“–‚½‚è‚ÅC³‚µ‚Ü‚µ‚½‚Ì‚ÅB) + +-------------- +//0610 by ”g˜Q + +EƒAƒCƒeƒ€DATAC³ + (db/) + item_db.txt C³ + +-------------- +//0609 by Ž€_ + +EFX‚ÆC³B +Eƒ‚ƒ“ƒXƒ^[‚ªŽ~‚Ü‚é‚悤‚É“®‚–â‘èC³B +EŽw’e‚̃fƒBƒŒƒCC³B +E–î쬂̃R[ƒh•Ð•t‚¯B +E“G‚ªƒXƒLƒ‹”͈͂©‚瓦‚°‚½ê‡ƒXƒLƒ‹‚ªŽ¸”s‚·‚é‚悤‚É•ÏXB +Eclass_equip_db.txt‚ÌŽd—l•ÏXB + «•Ê‚Æ‘•”õƒŒƒxƒ‹‚àÝ’è‰Â”\‚É•ÏX‚ÆŽg—pƒAƒCƒeƒ€‚ÌŽg—pE‹ÆA«•Ê‚ÆŽg—p + ƒŒƒxƒ‹‚Ìݒ肪‚Å‚«‚é‚悤‚É•ÏXB(‚½‚¾ƒf[ƒ^‚ª‘½‚¢‚¹‚¢‚ÅC³‚µ‚½ + class_equip_db.txt‚̓Tƒ“ƒvƒ‹’ö“x‚Ì•¨‚Å‚·B–„‚ß‚Ä‚‚¾‚³‚¢B‘¼—Í–{Šè‚Å‚·‚ª...) + ‚»‚ê‚ƃAƒCƒeƒ€Žg—pðŒ‚ª‚ ‚í‚È‚¢‚ƃAƒCƒeƒ€‚ªŽg‚í‚È‚¢‚悤‚É‚µ‚Ä‚Í + ‚¢‚Ü‚·‚ª01c8ƒpƒPƒbƒg‚Ì<type>‚ð0‚É‚µ‚Ä‚àƒAƒCƒeƒ€‚ðŽg—p‚µ‚½Žž‚Æ“¯‚¶ + ƒGƒtƒFƒNƒg‚ªo‚Ü‚·B–{ŽI‚̃AƒCƒeƒ€Žg—pƒpƒPƒbƒg‚ª•ª‚©‚ç‚È‚¢‚Ü‚Ü‚¶‚á + ‚±‚¤‚·‚邵‚©‚È‚©‚Á‚½‚Ì‚Å‚·‚ª... +Ebattle_athena.conf‚É€–ڒljÁB +E‚»‚Ì‘¼ƒXƒLƒ‹‚µC³‚Æׂ©‚¢C³B +EC³‚µ‚½Š‚ð‘S‚ÄŠo‚¦‚Ä‚Ü‚¹‚ñ‚̂Ńtƒ@ƒCƒ‹‚¾‚¯B + (map/) + clif.c C³B + mob.c C³B + mob.h C³B + pc.c C³B + map.h C³B + skill.c C³B + skill.h C³B + itemdb.c C³B + battle.c C³B + battle.h C³B + (conf/) + battle_athena.conf C³B + (db/) + cast_db.txt C³B + skill_db.txt C³B + create_arrow_db.txt C³B + class_equip_db.txt C³B + item_db.txt C³B + (doc/) + client_packet.txt C³B + conf_ref.txt C³B + +-------------- +//0608 by sk +EƒAƒ}ƒcNPC’ljÁ + (conf/) + npc_town_amatsu.txt é“àNPC’ljÁ + npc_warp_amatsu.txt é“àƒ[ƒvƒ|ƒCƒ“ƒg’ljÁ + +-------------- +//0607 by J +EƒAƒTƒ‹ƒgƒ^[ƒgƒ‹‚̎艺¢Š«‚̃oƒOC³(•ñ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚· ‚é‚é‚邳‚ñ) + (db/) + mob_skill_db.txt ƒAƒTƒ‹ƒg‚ÌC³‚‚¢‚łɃeƒŒƒ|‚ðŽg‚¤MOB‚̃XƒLƒ‹ƒfƒBƒŒƒC‚àC³ + +-------------- +//0606 by ˆø‘Þl +EƒXƒLƒ‹ƒŒƒxƒ‹Å‘å’lˆÈã‚ɃNƒŠƒbƒN‚µ‚½Žž“_‚Å‘¼ƒXƒLƒ‹‚ªã‚°‚ç‚ê‚È‚‚È‚éƒoƒO‚ðC³iThanx to 227‚³‚ñj + (map/) + clif.c + clif_skillup() + ƒXƒLƒ‹ƒŒƒxƒ‹‚ªÅ‘å’l‚Ì‚Æ‚«AƒpƒPƒbƒg––”ö‚ð0‚É‚·‚é‚悤‚ÉC³ + +-------------- +//0605 by ‚é‚é‚é + +E•Ší‘®«•t—^ƒXƒLƒ‹‚Ì•s“s‡C³ + •Ší‚ðŽ‚¿‘Ö‚¦‚½‚èŠO‚µ‚½‚肵‚½ê‡‚àA‘®«•t—^‚ð‰ðœ‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B + ’A‚µA‘fŽè„•Ší‘•”õ‚Ì‚Ýó‘ÔˆÛŽ‚µ‚Ü‚·B +EƒXƒsƒAƒNƒCƒbƒPƒ“‚̃Xƒe[ƒ^ƒXƒAƒCƒRƒ“‚𳂵‚•\Ž¦ +E‚Q‚g‚pAƒXƒsƒAƒNƒCƒbƒPƒ“AƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…‚ÅŠY“–ˆÈŠO‚Ì•ŠíŽ‚¿‘Ö‚¦‚Åó‘ÔÁ–Å + ƒXƒsƒAƒNƒCƒbƒPƒ“‚Í–¢Šm”F‚Å‚·‚ªA‚Q‚g‚p‚ÍŠmŽÀ‚È‚Ì‚Å‚Q‚g‚p‚Æ•sŒö•½‚ÈŽd—l‚Æ‚Í + l‚¦‚É‚‚¢‚Ì‚Å“¯—l‚ȃpƒ^[ƒ“‚Æ‚µ‚Ü‚µ‚½B–{ŽI‚Æ‘Šˆá‚ª‚ ‚éꇂ͕ñŠè‚¢‚Ü‚·B +E“G‚Ì‚p‚l‚ÅW’†—ÍŒüã‚Æ‘¬“x㸂ð‰ðœ + ‚p‚l‚ʼne‹¿‚·‚éƒXƒLƒ‹‚Í‚±‚ê‚Q‚‚¾‚¯‚©‚ÈH@Ž„‚Ì‹L‰¯‚ÆŒfŽ¦”‚ł̕ñ‚Æ‚Å + ”»’f‚µ‚½‚Ì‚Å‚·‚ªA‚à‚µ‘Šˆá‚ª‚ ‚è‚Ü‚µ‚½‚ç•ñŠè‚¢‚Ü‚·B + + (map/) + clif.c + clif_parse_UnequipItem() C³ + pc.c + pc_checkallowskill() pc_equipitem() C³ + skill.h + skill_encchant_eremental_end() ’ljÁ + skill.c + skill_status_change_start() skill_status_change_end() + skill_status_change_clear() skill_encchant_eremental_end() C³ + ‚»‚Ì‘¼×‚©‚¢‚Æ‚±‚ëX + +-------------- +//0604 by J +EMOBƒXƒLƒ‹ÄC³ +EMOBDBC³ + (db/) + mob_skill_db.txt + ƒA[ƒNƒGƒ“ƒWƒFƒŠƒ“ƒO‚ƃ^[ƒgƒ‹ƒWƒFƒlƒ‰ƒ‹‚ª1‰ñ‚É2Ží—Þ‚Ü‚Å‚µ‚© + MOB‚ðo‚³‚È‚©‚Á‚½‚Ì‚ðC³ + mob_db.txt + ƒ[ƒhƒIƒuƒfƒX‚̃hƒƒbƒv‚ŃGƒ‰[‚ªo‚é‚Ì‚ðC³(–¢Šm”F) + ‰…—ì•Žm‚̃hƒƒbƒv‚ÆMVP‚ð’ljÁ(–¢Šm”F) +-------------- +//0603 by ˆø‘Þl +EV‹KƒAƒCƒeƒ€Žž‚É‚àŠŽ‰Â”\ŒÂ”ƒ`ƒFƒbƒN‚ð‚·‚é‚悤‚ÉC³ + (map/) + pc.c + pc_checkadditem() + V‹KƒAƒCƒeƒ€Žž‚ÉMAX_AMOUNT‚ð’´‚¦‚Ä‚¢‚½‚ç + ADDITEM_OVERAMOUNT‚ð•Ô‚·‚悤‚ÉC³ + +-------------- +//0602 by ˆø‘Þl +EGeffen’b–艮‚Å—Ž‚¿‚é–â‘è‚ðC³ + (conf/) + npc_town_geffen.txt if (!checkweight(,)) ‚©‚ç if (!(checkweight(,))) ‚ÉC³ + +-------------- +//0601 by J +EMOBƒXƒLƒ‹‚ÌŠë‚È‚¢Š‚ð‚¢‚‚ç‚©C³ +EŠoÁ‚Æ‹¶‹C‚ÌŽg‚¦‚éE‚ðC³ +EƒQƒtƒFƒjƒAƒ_ƒ“ƒWƒ‡ƒ“‚Ì”z’u‚ðƒJƒ{ƒ`ƒƒƒCƒxƒ“ƒg‚Å“ü‚ꂽ‚Æ‚«‚Ì”z’u‚ÉC³ + ‚½‚¾‚µƒ{ƒX‚ªDOP2‘Ì‚Å‚Í‚È‚ƒhƒ‰ƒLƒ…ƒ‰‚É‚µ‚Ä‚¢‚Ü‚·B + (conf/) + npc_monster.txt ƒ‚ƒ“ƒXƒ^[”z’u”÷•ÏX + (db/) + mob_skill_db.txt ‰ö‚µ‚¢Ý’è‚È‚Ç‚ÌC³ + item_db.txt ‘‘¬POT‚ÌC³ + +-------------- +//0600 by ˆø‘Þl +Eƒvƒƒ“ƒeƒ‰¸˜BŠ‚̉¡‚̃tƒ@ƒ“‚ɘb‚µŠ|‚¯‚é‚ƌł܂é–â‘è‚ðC³ +EMOBƒXƒLƒ‹Žæ‚èž‚ÝiThanx to J‚³‚ñj + (conf/) + npc_event_skillget.txt ƒtƒ@ƒ“‚ÌLabel‚ðC³ + npc_town_prontera.txt ƒtƒ@ƒ“‚ªd•¡‚µ‚Ä‚¢‚½‚Ì‚Åíœ + (db/) + mob_skill_db.txt ƒWƒ…ƒm[ˆÈ~‚ÌMOBƒXƒLƒ‹’ljÁ + +-------------- +//0599 by ‚é‚é‚é + +EƒZ[ƒW‚Ì•Ší‘®«•t—^ƒXƒLƒ‹‚Ì•s“s‡C³‚ƃXƒe[ƒ^ƒXƒAƒCƒRƒ“•\Ž¦ + ƒAƒXƒyƒ‹ƒVƒI‚ƃGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“‚Æ‚Å‘½d‚É‚©‚©‚Á‚Ä‚µ‚Ü‚Á‚Ä‚½‚Ì‚ÅA + ÅŒã‚É•t—^‚µ‚½‚à‚Ì‚P‚‚ɂȂé‚悤‚É‚µ‚Ü‚µ‚½B + ‚»‚̂‚¢‚łɃXƒe[ƒ^ƒXƒAƒCƒRƒ“‚à•\Ž¦‚·‚é‚悤‚É‚à‚µ‚Ü‚µ‚½B + i–¢ƒeƒXƒg‚Å‚·‚ªAƒAƒCƒRƒ“o‚È‚©‚Á‚½ƒXƒsƒAƒNƒCƒbƒPƒ“‚à‚Å‚é‚Í‚¸‚Å‚·Bj +EƒAƒCƒeƒ€DB‚É‚ÄA‘‘¬ƒ|[ƒVƒ‡ƒ“‚ÌŽg—p§ŒÀ‚ð’ljÁ + Jazz‚³‚ñ’ñ‹Ÿ‚Å‚·B + ‚»‚ê‚ÆŽ„‚ÌŽï–¡‚щƒOƒiƒƒNTƒVƒƒƒc‚ðƒAƒŒƒiƒj‚µ‚Ü‚µ‚½‚ª‚—@‹C‚É“ü‚ç‚È‚¯‚ê‚Î + Á‚·‚Ȃ茳’Ê‚è‚ÉC³‚·‚é‚Ȃ肵‚Ä‚µ‚¿‚á‚Á‚Ä‚‚¾‚³‚¢‚Ü‚¹`B + + (conf/) + battle_athena.conf 598‚Å‚Ì“ü‚ê–Y‚ê + (map/) + skill_encchant_eremental_end() ’ljÁ + skill_status_change_end() skill_status_change_start() skill_status_change_clear() C³ + (db/) + iten_db.txt C³ + +-------------- +//0598 by ‚é‚é‚é + +E‘•”õ•Ší‚̉摜•ÏX‚ɑΉž + ˆê‰ž‚È‚ª‚çƒNƒ‹ƒZƒCƒ_[‚Ì—¼Žè‘„‚Æ‚©ƒvƒŠ[ƒXƒg‚Ì“ÝŠí‚Æ‚©‚̓eƒXƒg‚µ‚Ü‚µ‚½‚ªA + ‘S‚Ä‚ÌE‚ðƒ`ƒFƒbƒN‚Í‚¢‚Ü‚¹‚ñB‚Ü‚½‚±‚ÌŽž“_‚ł̓Nƒ‰ƒCƒAƒ“ƒgŽ©‘Ì‚Ì•\Ž¦ƒf[ƒ^‚É + –â‘è‚Ì—L‚é‚Ì‚ª‘½‚¢‚Ì‚à•t‚¯‰Á‚¦‚Ä‚¨‚«‚Ü‚·B + ‚ ‚ÆAŒC‚àˆê‰ž‚͑Ήž‚µ‚Ü‚µ‚½B’A‚µ‚±‚ê‚ÍŒ»Žž“_‚Å‚Í–{ŽI‚·‚ç‚à–¢‘Ήž‚È‚Ì‚Å‚·‚ªB + •\Ž¦‚ª‰»‚¯‚ÄŒ™‚¾‚Æ‚¢‚¤ê‡‚Í]—ˆ‚Ì‚â‚è•û‚ào—ˆ‚Ü‚·B + + (conf/) + battle_athena.conf + ƒIƒvƒVƒ‡ƒ“ equip_modifydisplay ‚ð’ljÁ + (map/) + battle.h + Battle_Config C³ + battle.c + battle_config_read() C³ + clif.c + packet_len_table[] clif_changelook() C³ + map.h + enum {} C³ + pc.c + pc_calcstatus() pc_equiplookall() pc_changelook() C³ + (common/) + mmo.h + mmo_charstatus {} C³ + +-------------- +//0597 by ”g˜Q + +EƒAƒ}ƒc‚ÉŠÖ‚·‚éC³•”÷C³ + (conf/) + npc_mob_job.txt + npc_monster.txt + npc_monster30.txt + ƒ‚ƒ“ƒX–¼C³ + npc_monster_amatsu.txt + ’ljÁiƒ‚ƒ“ƒX”‚ª‚©‚È‚èŽè”²‚«‚Å‚·EEE + npc_town_amatsu.txt + ƒVƒ‡ƒbƒvNPC‚ð“‡inpc_shop3.txt‚ðÁ‚µ‚Ä‚àOK‚Å‚· + (db/) + mob_db.txt + ƒAƒ}ƒc‚̃‚ƒ“ƒXƒf[ƒ^‚ðŒ»Ý•ª‚©‚é”͈͂ÅC³•‘‚Æ‚«‚Ì‚±‚Ìdef,mdef‚ðC³ + +-------------- +//0596 by Ž€_ + +E0595‚ÌC³‚Æׂ©‚¢C³B +EƒtƒŠ[ƒLƒƒƒXƒg‚ŃLƒƒƒXƒg‚µ‚Ä‚¢‚éŠÔ‚ÍUŒ‚‰Â”\‚Å‚·‚ªƒLƒƒƒXƒg‚µ‚½Œã‚Ì +ƒfƒBƒŒƒCƒ^ƒCƒ€‚Å‚ÍUŒ‚‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·B–{ŽI‚ÌŽd—l‚ª‚Ç‚¤‚È‚Ì‚©‚Í +‚í‚©‚è‚Ü‚¹‚ñB +E“®‚¢‚Ä‚¢‚éPC‚Ƀ‚ƒ“ƒXƒ^[‚ªUŒ‚‚Å‚«‚È‚¢–â‘èC³B(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñ‚ª +‘½•ª‚±‚ê‚Å‘åä•v‚©‚ÆB) + (map/) + skill.h + SC_FREECAST íœB + skill.c + skill_use_id()Askill_use_pos() C³B + skill_castend_id()Askill_castend_pos() C³B + ‚»‚Ì‘¼‚µC³B + pc.c + calc_next_walk_step()Apc_attack_timer()Apc_calcstatus() C³B + clif.c + clif_parse_ActionRequest()Aclif_parse() C³B + map.h + struct map_session_data‚Éprev_speed’ljÁB + mob.c + mob_ai_sub_hard()Amob_changestate()Amob_attack() C³B + +-------------- +//0595 by PRevEv +EƒtƒŠ[ƒLƒƒƒXƒgC³AŽÀ‘•(ƒLƒƒƒXƒeƒBƒ“ƒO’†UŒ‚‚à‚Å‚«‚Ü‚·B) + (/map) + pc.c + pc_calcstatus() C³B + calc_next_walk_step() C³B + pc_attack_timer() C³B + skill.c + skill_castend_id()Askill_castend_pos()Askill_use_id()Askill_use_pos() C³B + +-------------- +//0594 by Ž€_ + +EŠØ‘ˆÆ‚̃p[ƒeƒB–â‘èC³‚Æׂ©‚¢C³B +E@partyƒRƒ}ƒ“ƒhC³‚Æ@guildƒRƒ}ƒ“ƒh’ljÁB +Ebattle_athena.conf‚Éguild_emperium_check’ljÁB +EƒXƒLƒ‹Žg—p‚ªŽ¸”s‚µ‚Ä‚àƒfƒBƒŒƒC‚ª‚©‚©‚é–â‘èC³B + help.txt C³B + (map/) + clif.c + clif_parse_CreateParty2() ’ljÁB + clif_parse_ItemIdentify() C³B + ‚»‚Ì‘¼‚µC³B + atcommand.hAatcommand.c C³B + battle.h + struct Battle_Config‚Éguild_emperium_check’ljÁB + battle.c + battle_config_read() C³B + guild.c + guild_create()Aguild_created() C³B + skill.c + skill_castend_id()Askill_castend_pos() C³B + Makefile C³B + (doc/) + client_packet.txt + ƒpƒPƒbƒg0x01e8 ’ljÁB + conf_ref.txt C³B + (conf/) + atcommand_athena.conf C³B + battle_athena.conf C³B + +-------------- +//0593 by Ž€_ + +EƒƒeƒI‚ƃoƒ~ƒŠƒIƒ“‚̃_ƒ[ƒWC³‚Æׂ©‚¢C³B +EƒƒeƒI‚Ìè¦Î‚ª—Ž‚¿‚Ä‚‚é”͈͂ð7*7‚©‚ç5*5‚É•ÏXB(‚±‚ê‚Å’†‰›‚Í‘S‚Ä‚Ìè¦Î‚Ì +ƒ_ƒ[ƒW‚ðŽó‚¯‚邱‚Æ‚É‚È‚è‚Ü‚·B) +EŽ©“®‰ñ•œŒvŽZŽ®•ÏXB + ƒXƒLƒ‹ƒŒƒxƒ‹*5 + (max_hp/50)‚©‚ç + ƒXƒLƒ‹ƒŒƒxƒ‹*5 + (max_hp*ƒXƒLƒ‹ƒŒƒxƒ‹/500)‚É•ÏXB(SP‚Æ‘§‚à“¯‚¶‚悤‚É•ÏXB) +EGM‰EƒNƒŠƒbƒN–½—ßuŽg—pŽÒ‹§I—¹v‚Åatcommand_athena.conf‚Ìkick‚Ì +ƒŒƒxƒ‹‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É•ÏXB + (db/) + skill_db.txt + ƒXƒLƒ‹‹CŒ÷‚Ìsp‚ð10‚©‚ç8‚ÉC³B + (map/) + map.c + NO_WATER‚ð100‚©‚ç1000000‚É•ÏXB + battle.c + battle_calc_magic_attack() C³B + skill.c + skill_castend_pos2() C³B + pc.c + pc_natural_heal_hp()Apc_natural_heal_sp()Apc_spirit_heal() C³B + clif.c + clif_parse_GMKick() C³B + (doc/) + conf_ref.txt C³B + +-------------- +//0592 by ˆø‘Þl + +E…ê‚Ì—L‚è–³‚µ‚ðwater_height.txt‚¾‚¯‚ÅŒˆ‚ß‚é‚悤‚É•ÏXBnpc_water.txt‚Í•s—v‚ÉB +EƒJ[ƒhƒXƒLƒ‹‚ł̓Œƒxƒ‹ã‚°‚Å‚«‚È‚¢‚悤‚É‚È‚Á‚½‚½‚ß•s—v‚É‚È‚Á‚½ˆ—‚ðíœB + (conf/) + map_athena.conf + npc: conf/npc_water.txt Á‹Ž + water_height.txt + ƒfƒtƒHƒ‹ƒg‚‚³3‚̃}ƒbƒv•ª‚ð’ljÁ•all_water‚ð‚‚³-100‚Æ‚µ‚ăRƒƒ“ƒg‚ŒljÁ + (map/) + map.c + waterlist‚Ímap_readwater()“à‚Ńƒ‚ƒŠŠm•Û + gatÝ’èŒã‚Í•s—v‚È‚Ì‚Åmap_readallmap()‚Ńƒ‚ƒŠŠJ•ú‚µ‚Ä‚¢‚Ü‚· + map.h + struct map_data‚Ìflag‚©‚çwater_flag‚ðÁ‹Ž + npc.c + npc_parse_mapflag() + ƒ}ƒbƒvƒtƒ‰ƒOwater‚Æall_water‚ðÁ‹Ž + pc.c + pc_skillup() + — ‚ŃXƒLƒ‹LvUP‚Å‚«‚È‚‚È‚Á‚½‚Ì‚Åskill[id].flag‚Ì•ª‚ÍÁ‹Ž + skill.c + skill_check_condition() + map_getcell‚Å…ê”»’è‚·‚é‚悤‚ÉC³ + +-------------- +//0591 by CHRIS + +Eƒ‚ƒ“ƒN‚ªŸ†’e‚ð‚à‚Á‚Ä‚¢‚é‚Æ‚«AŸ†’e*3‚Ì•K’†ƒ_ƒ[ƒW‚ª“ü‚é—l‚É‚È‚è‚Ü‚µ‚½B„Ÿ@battle.cC³ +Eƒ‚ƒ“ƒNƒXƒLƒ‹uŽw’ev‚Æu”™¤v‚Æu‹CEv‚̉r¥ŽžŠÔ‚ª³‚µ‚C³‚³‚ê‚Ü‚µ‚½B„Ÿ@cast_db.txtC³ + +-------------- +//0590 by Ž€_ + +Egrf-files.txt‚âconfƒtƒ@ƒCƒ‹Aaccount.txtƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ƈʒu‚ð•Ï‚¦‚é‚悤‚É•ÏXB +Eƒ}ƒbƒvˆÚ“®‚É‚æ‚éŽI—Ž‚¿‚ð–h‚®ˆ×‚ÉC³B(ƒ}ƒbƒv‚ª“ñ“xƒ[ƒh‚³‚ê‚ÄŽI—Ž‚¿‚ª +‹N‚±‚Á‚½‚Æ‚Ì•ñ‚ðŽó‚¯‚½‚Ì‚ÅB) +E0586‚ð‚¿‚å‚Á‚ÆC³B‘•”õ‚É‚æ‚éƒXƒLƒ‹‚ÌꇃŒƒxƒ‹ã‚°‚ª‚Å‚«‚È‚¢‚悤‚ÉC³B +‚½‚¾‘•”õ‚É‚æ‚éƒXƒLƒ‹‚ðƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðŽg‚Á‚Äã‚°‚鎞‚Í‘•”õ‚ðŠO‚·•K—v‚ª +‚ ‚è‚Ü‚·B +E@party‚¿‚å‚Á‚ÆC³B(–¼‘O‚É‹ó”’‚ª‚ ‚Á‚Ä‚à‘åä•v‚Ȃ悤‚ÉB) +E…ê‚Ì‚‚³‚ðwater_height.txt‚Å“Ç‚Ýž‚ނ悤‚É•ÏXB +Econfƒtƒ@ƒCƒ‹‚ÅÝ’è‚·‚镨‚ðƒtƒ@ƒCƒ‹‚̃pƒX‚É‹ó”’‚ª‚ ‚Á‚Ä‚à‘åä•v‚È +‚悤‚É•ÏXB +EGM‰EƒNƒŠƒbƒN–½—ßuŽg—pŽÒ‹§I—¹v‚Ń‚ƒ“ƒXƒ^[‚ð“|‚¹‚é‚悤‚É•ÏXB +(Œ´ˆö‚Í•s–¾‚Å‚·‚ª‚±‚ê‚Ń‚ƒ“ƒXƒ^[‚ðŽE‚·‚ÆŽI‚ª‚ß‚¿‚á‚‚¿‚á‚É’x‚‚Ȃ邱‚Æ‚ª +‚ ‚è‚Ü‚·B) +E‚»‚Ì‘¼‚µC³B +EƒeƒXƒg‚Í–w‚ñ‚Ç‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + athena-start C³B + (map/) + pc.c + pc_skill()Apc_resetskill()Apc_setpos()Apc_read_gm_account() C³B + pc_set_gm_account_fname() ’ljÁB + pc.h + pc_set_gm_account_fname() ’ljÁB + clif.c + clif_skillinfoblock()Aclif_parse_LoadEndAck()Aclif_parse_GMKick() C³B + clif_changemap() C³B + atcommand.c + @partty C³B + skill.c + skill_castend_nodamage_id() C³B + map.c + map_config_read()Amap_readwater() C³B + script.c + script_config_read()Ado_init_script() C³B + script.h + script_config_read() ’ljÁB + (common/) + version.h C³B + grfio.h + grfio.c + grfio_init() C³B + mmo.h + GRF_PATH_FILENAME ’ljÁB + (conf/) + map_athena.conf C³B + npc_water.txt C³B + water_height.txt ’ljÁB + login_athena.conf C³B + (login/) + login.c + login_config_read()Aread_gm_account() C³B + (char/) + char.c + do_init() C³B + char_config_read() ’ljÁB + inter.c + inter_config_read() C³B + (doc/) + conf_ref.txt C³B + +-------------- +//0589 by ŒÓ’±—– + +EGM‚̉EƒNƒŠƒbƒN‚ÅØ’f‚³‚ê‚é–â‘è‚ðC³ + ‚Æ‚è‚ ‚¦‚¸01dfƒpƒPƒbƒg‚𖳎‹‚·‚é‚悤‚É‚µ‚Ü‚µ‚½B + ‚È‚ñ‚Æ‚È‚‚±‚̃pƒPƒbƒg‚̓`ƒƒƒbƒg‹ÖŽ~‰ñ”‚Æ‚ÍŠÖŒW–³‚¢‚悤‚È‹C‚àcc + + clif.c + clif_parse_GMReqNoChatCount()’ljÁ + +Estart‚ðathena.sh‚Å‚È‚athena-start‚ðŽg‚¤‚悤‚É•ÏX + start + athena.sh => athena-start start‚É’u‚«Š·‚¦‚µ‚½‚¾‚¯ + +-------------- +//0588 by Kalen + +EAmatsuNPC’ljÁ + +-------------- +//0587 by ŒÓ’±—– + +EloginƒT[ƒo[‚ÌŠÇ—ƒpƒPƒbƒg‚ÌŽd—l‚ð•ÏXi0579‚̃ƒOƒCƒ“‹‘”Ûî•ñ‚ɑΉžj + (login/) + login.c + ƒAƒJƒEƒ“ƒgƒoƒ“ó‘Ô•ÏXƒpƒPƒbƒg’ljÁ(7936,7937) + ƒAƒJƒEƒ“ƒgƒŠƒXƒgŠ“¾ƒpƒPƒbƒgC³(7921) + (doc/) + admin_packet.txt + +Eladmin‚Ì‹@”\’ljÁ + Eƒoƒ“ó‘Ô‚ð•ÏX‚·‚éƒRƒ}ƒ“ƒh’ljÁ + EƒŠƒXƒg•\Ž¦‚ÆŒŸõ‚Ńoƒ“ó‘Ô‚à•\Ž¦‚³‚ê‚é‚悤‚É‚È‚Á‚½ + E"?"‚Å‚àƒwƒ‹ƒv‚ªo‚é‚悤‚ÉC³ + EƒVƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚Éstateaccount‚ª’ljÁ‚³‚ê‚Ü‚µ‚½B + Žg‚¤l‚Íladmin‚Ì--makesymlink‚ð‚à‚¤ˆê“xŽÀs‚µ‚Ä‚‚¾‚³‚¢ + + (tool/) + ladmin + ‹@”\’ljÁ + +-------------- +//0586 by ˆø‘Þl +EƒJ[ƒhƒXƒLƒ‹‚ðC³ + (/map) + pc.c + pc_calc_skilltree() + pc_skill() + Šo‚¦‚ç‚ê‚È‚¢ƒXƒLƒ‹‚È‚çskill[id].flag=1‚Æ‚·‚é + ‚Ü‚½‚Ískill[id].flag‚É–{—ˆ‚Ìlv‚ð+2‚µ‚Ä‹L‰¯ + pc_skillup() + skill[id].flag‚à‘‚â‚· + clif.c + clif_skillinfoblock() + skill[id].flag==1‚È‚çŠo‚¦‚ç‚ê‚È‚¢ƒXƒLƒ‹ + (/char) + char.c + mmo_char_tostr() + skill[id].flag‚©‚ç–{—ˆ‚Ìlv’l‚ð•Û‘¶‚·‚é + +-------------- +//0585 by kalen +EscriptC³ + npc_town_guid.txt ŠOŒ©•ÏX + +-------------- +//0584 by ˆø‘Þl +EƒJ[ƒhƒXƒLƒ‹‚ðC³ + (/map) + pc.c + pc_calc_skilltree() cardƒXƒLƒ‹‚ð–Y‚ꂳ‚¹‚鈗‚ð’ljÁ + pc_skill() ®— + +-------------- +//0583 by kalen +EscriptC³ + npc_event_doll.txt ”²‚¯‚Ä‚¢‚½•”•ª‚̉ï˜b’ljÁ + npc_town_guid.txt ’¬‚̈ēà—vˆõ‚̉摜‚ð•\Ž¦‚Å‚«‚é‚悤‚ÉC³ + Šî–{“I‚ÉÅVjRO‚Å–â‘è‚È‚µ‚Å‚·B + +-------------- +//0582 by PRevEv +E580‚̃oƒOC³B + (/map) + skill.c + skill_use_pos() C³B +-------------- +//0581 by ˆø‘Þl +E…ê‚‚³Ý’èŠÖ˜A‚ð‚µC³ + (/map) + map.c + map_waterheight() + map_readwater() + map_readmap() + waterlist[512] -> *waterlist‚É‚µ‚ÄAmalloc‚Ńƒ‚ƒŠŠm•Û‚·‚é‚悤‚ÉC³B + map_readallmap() + free(waterlist);’ljÁ + +EƒoƒO•ñƒXƒŒƒbƒh‚ÌC³ƒpƒbƒ`‚ðŽæ‚èž‚Ý + (conf/) + npc_town_refine.txt ƒZƒ~ƒRƒƒ“”²‚¯C³ + (db/) + item_db.txt 1161,ƒoƒ‹ƒ€ƒ“C³ + +-------------- +//0580 by PRevEv +EƒtƒŠ[ƒLƒƒƒXƒg‰¼ŽÀ‘•(ƒLƒƒƒXƒeƒBƒ“ƒO’†UŒ‚‚Í•s‰Â”\) + (/map) + clif.c + clif_parse_WalkToXY() C³B + pc.c + pc_calcstatus() C³B + skill.c + skill_castend_id()Askill_castend_pos()Askill_use_id()Askill_use_pos() C³B +-------------- +//0579 by A‚Ìl +EƒƒOƒCƒ“‚ð’e‚ˆ—‚ð‰¼ŽÀ‘• + conf/login.c + auth_dat\‘¢‘Ì‚Éstate‚ð’ljÁ + mmo_authŠÖ”C³ + mmo_auth_newŠÖ”C³ + mmo_auth_syncŠÖ”C³ + mmo_auth_initŠÖ”C³ + + ‚±‚Ì’l‚ð•ÏX‚·‚éƒc[ƒ‹A‰ü‘PôB‘¼—Í–{Šè‚Å‚·i„ƒG +-------------- +//0578 by ˆø‘Þl +EƒoƒO•ñƒXƒŒƒbƒh‚ÌC³ƒpƒbƒ`‚ðŽæ‚èž‚Ý‚È‚Çithanx to ‚é‚é‚邳‚ñ,Athefans‚³‚ñ,sage‚³‚ñ,zupport‚³‚ñj + help.txt @go‚Ìà–¾‚¿‚å‚Á‚ÆC³ + (conf/) + npc_mob_job.txt ‘æ4—ñ–Ú‚ðTab‹æØ‚è‚ÉC³ + npc_water.txt …ê‚‚³C³ + (db/) + item_db.txt 640,...,{ pet 1155; },{},,‚ÉC³ + mob_db.txt 1162,RAFFLESIA,ƒ‰ƒtƒŒƒVƒA...C³ + +-------------- +//0577 by ‚é‚é‚é +E@ƒRƒ}ƒ“ƒh‚ð’ljÁ•C³ + atcommand.c + atcommand() @itemresetƒRƒ}ƒ“ƒh’ljÁ @goƒRƒ}ƒ“ƒhC³iƒAƒ}ƒcEƒRƒ“ƒƒ“‚ð’ljÁj + atcommand_config_read() ã‚ɇ‚킹‚ÄitemresetŽg—pƒŒƒxƒ‹Žw’è‚ð’ljÁ + + doc/conf_ref.txt + conf/atcommand_athena.conf itemresetŽg—pƒŒƒxƒ‹Žw’è‚ð’ljÁ + help.txt @itemreset‚Ìà–¾’ljÁ‚Æ@go‚Ìà–¾C³ + +------------- +//0576 by V&S +EƒS[ƒXƒgƒŠƒ“ƒOƒJ[ƒh‚ƃo[ƒXƒŠ[ƒJ[ƒh‚ÌŒø‰Ê‚ª‹t‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³ + { bonus bDefEle,7; }¨ƒS[ƒXƒgƒŠƒ“ƒOƒJ[ƒh(”O) + { bonus bDefEle,8; }¨ƒo[ƒXƒŠ[ƒJ[ƒh(ˆÅ) + ª‚¾‚Á‚½‚Ì‚ð«‚ÉC³ + { bonus bDefEle,7; }¨ƒo[ƒXƒŠ[ƒJ[ƒh(ˆÅ) + { bonus bDefEle,8; }¨ƒS[ƒXƒgƒŠƒ“ƒOƒJ[ƒh(”O) + + |“S‚Ìd—Ê‚ðC³ + +-------------- +//0575 by ˆø‘Þl +E…êƒtƒ@ƒCƒ‹‚ª"conf/npc_water.txt"ŒÅ’肾‚Á‚½‚Ì‚ðC³ +iconf/map_athena.conf‚Ìnpc:‚É‘‚©‚ê‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ð‚Ý‚Ä…ê‚‚³Ý’è‚·‚é‚悤‚Éj + map.c + struct waterlist[512]; V‹K’ljÁBƒ}ƒbƒvƒtƒ@ƒCƒ‹–¼‚Æ…ê‚‚³‚ð‹L‰¯B + map_waterheight() V‹K’ljÁB…ê‚Ì‚‚³‚ð•Ô‚·B + map_readwater() …êƒtƒ@ƒCƒ‹‚ð‚Ý‚Äwaterlist‚ðÝ’è‚·‚é‚悤‚ÉC³B + map_readmap() map_waterheight()‚ðŒÄ‚Ԃ悤‚ÉC³B + map_config_read() "npc"‚Åmap_readwater(w2);’ljÁB + +-------------- +//0574 by ‚¢‚Ç + +EƒT[ƒo[Snapshot +Econf/shop_*.txt‚Ì“à—e‚ðconf/npc_town_*.txt‚É“‡ + +-------------- +//0573 by Jazz + +Emap‚Ì penalty, nomemo, noteleport, nobranch‚Ì option‚ðÝ’èB +Emap ƒT[ƒo[‚ª cpu‚𖳌Àè—L‚·‚邱‚Æ‚ðŒŸ¸‚·‚邽‚ß‚Ì script “Y•t. cygwinŠÂ‹«‚Å쬂ƎÀŒ±‚ð‚µ‚Ü‚µ‚½. + (/conf) + mapflag.txt ’ljÁB + (/tool) + mapcheck.sh ’ljÁB + +-------------- +//0572 by ˆø‘Þl +E"conf/npc_water.txt"‚Ì‘æ4—ñ‚Å…ê‚‚³Ý’è +@i‚¿‚á‚ñ‚Æ‚µ‚½…ê”»’肪ŽÀ‘•‚³‚ê‚é‚܂ł̂‚Ȃ¬‚Æ‚µ‚ÄEEEj + (/conf) + npc_water.txt ƒTƒ“ƒvƒ‹C³B + E‘æ4—ñ‚Å…ê‚Ì‚‚³‚ðݒ肵‚Ü‚·B + E‚‚³‚ð‘‚©‚È‚©‚Á‚½ê‡‚̃fƒtƒHƒ‹ƒg’l‚Í3‚É‚È‚è‚Ü‚·B + (/map) + map.c + E…ê‚‚³Ý’èŠÖ” map_readwater() ’ljÁB + +-------------- +//0571 by code +“V’ÃtƒB[ƒ‹ƒh‚ÌMOB‚Ì”z’u‚ƃ[ƒvƒ|ƒCƒ“ƒg‚ÌÝ’è‚ÌC³ +“V’Ãpƒbƒ`‚É›À›Ä‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚Ì‚ðŠm”F‚µ‚½‚Ì‚Å›À›Ä‚̃[ƒv‚Æmob‚ð”z’u + +conf/npc_monster35.txt + mob‚Ì”z’u + +conf/npc_warp_amatsu.txt +@@ “V’Ãwarp point‚ÌÝ’u + +conf/npc_warp_gonryun.txt + ›À›Äwarp point‚ÌÝ’u + +conf/npc_town_amatsu.txt +@@ Žb’è“I‚Ƀvƒƒ“ƒeƒ‰•¬…‘O©¨“V’Ã`^ƒvƒƒ“ƒeƒ‰•¬…‘O©¨›À›Ä‚ÌÚ‘±NPC + +-------------- +//0570 by code +“V’ÃtƒB[ƒ‹ƒh‚ÌMOB‚Ì”z’u‚ƃ[ƒvƒ|ƒCƒ“ƒg‚ÌÝ’è‚Å‚·B +conf/npc_monster35.txt + mob‚Ì”z’u + +conf/npc_warp_amatsu.txt +@@ warp point‚ÌÝ’u + +conf/npc_town_amatsu.txt +@@ Žb’è“I‚Ƀvƒƒ“ƒeƒ‰•¬…‘O©¨“V’Ã`‚ÌÚ‘±NPC + +-------------- +//0569 by Ž€_ + +E0561‚Ì@jobcange ‚Å‚ÌŠƒo[ƒh•‰ƒ_ƒ“ƒT[‚É‚æ‚éˆÆ—Ž‚¿–hŽ~‚ðpc_jobchange()‚Å‚·‚é‚悤‚É•ÏXB +E@ƒRƒ}ƒ“ƒh@party’ljÁBƒp[ƒeƒB‚ðì‚é–½—ß‚Å‚·BŠØ‘ˆÆ‚ðŽg‚¤‚ƃp[ƒeƒB‚ðì‚鎞Ž~‚Ü‚é‚Ì‚Å—ÕŽž“I‚É‚±‚ê‚ðŽg‚Á‚ăp[ƒeƒB‚ðì‚Á‚Ä‚‚¾‚³‚¢B +E…‚Ì”»’fˆ—C³B +Eƒ}ƒbƒvƒtƒ‰ƒO‚Éwater‚Æall_water’ljÁBÚ‚µ‚‚Ínpc_water.txt‚ðŽQl‚µ‚Ä‚‚¾‚³‚¢B +iz_dun0x‚¾‚¯“ü—Í‚µ‚Ä‚¢‚Ü‚·‚Ì‚Å‘¼‚Ì‚Í–„‚ß‚Ä‚‚¾‚³‚¢Bƒ}ƒbƒvƒtƒ‰ƒOwater‚©all_water‚ª“ü‚Á‚Ä‚È‚¢‚ƃZƒ‹‚Ìtype‚ª3‚Å‚à…‚Æ‚µ‚Ä”FŽ¯‚µ‚Ü‚¹‚ñB‚»‚µ‚Ä…‚¾‚炯‚Ìiz_dun02‚©‚ç04‚Ü‚Å‚Í‘S‚Ä…‚Æ‚µ‚Ä”FŽ¯‚·‚é‚悤‚Éall_water‚ð“ü‚ê‚Ä‚¢‚Ü‚·B(‚±‚êˆÈŠO‚Í•û–@‚ª‚È‚©‚Á‚½‚Ì‚Å...) +Ebattle_athena.conf‚É€–ڒljÁBˆê•”‚ÍWeiss‚ðŽQl‚µ‚Äì‚Á‚½•¨‚Å‚·B +EƒeƒXƒg‚µ‚Ä‚È‚¢•¨‚à‚µ‚ ‚è‚Ü‚·B + (/conf) + atcommand_athena.conf C³B + battle_athena.conf C³B + map_athena.conf C³B + npc_water.txt ’ljÁB + (/doc) + conf_ref.txt C³B + (/map) + atcommand.hAatcommand.c C³B + battle.h C³B + battle.c + battle_config_read() C³B + pc.c + pc_jobchange()Apc_stop_walking() C³B + npc.c + npc_parse_warp()Ado_init_npc()Anpc_parse_mapflag() C³B + mob.c + mob_ai_sub_hard() C³B + pet.c + pet_food() C³B + skill.c + skill_check_condition() C³B + map.h + struct map_data C³B + +-------------- +//0568 by ˆø‘Þl + +EƒAƒNƒAƒxƒlƒfƒBƒNƒ^…ê”»’è‚È‚Ç +EƒEƒH[ƒ^[ƒ{[ƒ‹…ê”»’èiread_gat(m,x,y)==3‚Å…ê‚Æ”»’èj + skill.c + skill_castend_nodamage_id() + case AL_HOLYWATER: ƒAƒNƒAƒxƒlƒfƒBƒNƒ^i¹…Žæ“¾j + skill_check_condition() + case AL_HOLYWATER: ƒAƒNƒAƒxƒlƒfƒBƒNƒ^i…ê”»’èj + case WZ_WATERBALL: ƒEƒH[ƒ^[ƒ{[ƒ‹i…ê”»’èj + +-------------- +//0567 by ‚é‚é‚é + +EƒAƒRƒ‰ƒCƒg‚̃AƒNƒAƒxƒlƒfƒBƒNƒ^‚ð‰¼ŽÀ‘•i…êŒÀ’èŽg—p‚Ì‚Ý–¢ŽÀ‘•j +EƒvƒŠ[ƒXƒg‚̃AƒXƒyƒ‹ƒVƒIAƒZ[ƒW‚̃tƒŒƒCƒ€ƒ‰ƒ“ƒ`ƒƒ[‚ŃXƒLƒ‹Žg—pŽž‚ɃAƒCƒeƒ€Á”ï +Eƒ~ƒXƒgƒŒƒXƒJ[ƒh‘•”õŽž‚ɃZ[ƒW‚Ì‘®«Œ´Î•ƒnƒ“ƒ^[‚Ìã©‚ªÁ”‚ê‚È‚¢ƒoƒO‚ðC³ + + (/map) + skill.c + skill_check_condition() C³ + +-------------- +//0566 by ƒpƒCƒ“ + +E0563‚̃XƒLƒ‹‰ðœðŒ‚ªŠÔˆá‚Á‚Ä‚¢‚½‚Ì‚ÅC³B•Ší‚ð‚Í‚¸‚·&•Ší‚ð•Ï‚¦‚½ê‡‚Í +@–³ðŒ‚ʼn𜂷‚é‚悤‚É‚µ‚½B + +# pc_checkallowskill ‚ɂ‚¢‚Ä(‘O‰ñà–¾‘‚‚Ì‚ð–Y‚ê‚Ä‚¢‚½‚Ì‚Åc) +@ˆê‰ž¡Œã‚ÌŠÜ‚Ý‚Æ‚µ‚Äreturn‚ð•Ô‚·‚悤‚É‚µ‚Ä‚¢‚Ü‚·‚ªAŒ»Ý‚Í(–ß‚èæ‚Å‚Í)Žg‚Á‚Ä‚¢‚Ü‚¹‚ñB +@¡Œ»Ý‚Í‹RŽmEƒNƒ‹ƒZƒCƒ_[‚‚ç‚¢‚µ‚©ƒXƒLƒ‹Žg—pŽž‚Ì•Ší§ŒÀ‚ª‚ ‚è‚Ü‚¹‚ñ‚ªA¡Œão‚Ä‚±‚È‚¢ +@‚Æ‚àŒÀ‚ç‚È‚¢‚Ì‚ÅA‚à‚µ(2ŽŸãˆÊ‚©3ŽŸH)o‚Ä‚«‚½‚炱‚±‚Ń`ƒFƒbƒN‚µ‚Ä‚‚¾‚³‚¢B + + (/map) + pc.c + pc_checkallowskill() C³ + +-------------- +//0565 by ˆø‘Þl + +Eƒ}ƒbƒvˆÚ“®Žž‚É–î‘•”õ‚ªŠO‚ê‚È‚¢‚悤‚ÉC³ +EƒƒOƒCƒ“Žž‚É–î‘•”õ‚ª•\Ž¦‚³‚ê‚é‚悤‚ÉC³ + (/common) + mmo.h + i–î‘•”õ‚Í0x8000‚È‚Ì‚Åjshort‚¾‚Æint‚ւ̃LƒƒƒXƒgŽž‚È‚Ç‚É + •‰’l‚Æ‚È‚Á‚Ä‚µ‚Ü‚¤‚½‚ßunsigned short‚ÉC³ + struct item + short equip; -> unsigned short equip; + (/map) + clif.c + clif_itemlist() ƒAƒCƒeƒ€ƒŠƒXƒg‚Ì–î‚̂‚¢‚Å‚É–î‘•”õ‚àƒ`ƒFƒbƒN + clif_arrowequip() ƒVƒ“ƒvƒ‹‰» + pc.c + pc_equipitem() C³ + +-------------- +//0564 by g—t + +E@model‚Ì•žõ‚ß•s‰Â”\”»’èC³B +E@model‚ÅA‘I‚ׂéƒnƒY‚Ì”¯Œ`‚É•ÏXo—ˆ‚È‚©‚Á‚½•”•ª‚ðC³B +@ã‹L•ÏX“_‚ɇ‚킹‚Ähelp.txt‚ÌC³B + +-------------- +//0563 by ƒpƒCƒ“ + +EMOB‚̈ÈŃXƒLƒ‹‚ðH‚ç‚Á‚½Œã‚ɉñ•œ‚µ‚È‚¢‚Ì‚ðC³Bc‚È‚ñ‚¾‚¯‚ÇA“K³‚È’l‚ª•ª‚©‚ç‚È‚¢‚Ì‚Å +@“Å‚â’¾–Ù‚Æ“¯‚¶ŽžŠÔ‚É‚µ‚Ä‚ ‚è‚Ü‚· +@¡ŒãA‚Ü‚½Žè‚ð‰Á‚¦‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB +E2HQ‚ƃXƒsƒAƒNƒCƒbƒPƒ“‚ðŽg—p’†‚É•Ší‚ð•Ï‚¦‚½ê‡‚͉𜂷‚é‚悤‚É•ÏXB + + (/map) + skill.c + skill_castend_damage_id() C³B + skill_status_change_timer() C³B + pc.c + pc_checkallowskill() VÝB + pc_equipitem() C³B + pc.h + pc_checkallowskill() VÝB + +-------------- +//0562 by huge + +E–î‚ð‹|‘•”õŽžˆÈŠO‚Å‚à‘•”õ‚Å‚«‚é‚悤‚É–ß‚µ‚Ü‚µ‚½B +E–î‚Ì‘®«‚ð“K—p‚·‚é‚Ì‚ð‹|‘•”õŽž‚Ì‚Ý‚ÉC³B + + pc.c + pc_equipitem() C³B + pc_calcstatus() C³B + +-------------- +//0561 by ˆø‘Þl + +ELinux‚Å‚àƒRƒ“ƒpƒCƒ‹‚Å‚«‚é‚悤‚É + (/map) + skill.c + skill_castend_damage_id() •Ï”dx,dy‚Ì錾ˆÊ’u•ÏX + Makefile + LIBS ‚É -lm ’ljÁ + +E@jobcange ‚Å‚ÌŠƒo[ƒh•‰ƒ_ƒ“ƒT[‚É‚æ‚éˆÆ—Ž‚¿–hŽ~B by (no name)‚³‚ñ + atcommand.c + @jobchange,@charjob‚É«•Êƒ`ƒFƒbƒN’ljÁ + +// ƒiƒiƒX‚³‚ñC³ +Eclif.c“à‚Åatcommand.h‚ð‚Q“xinclude‚µ‚Ä‚¢‚½‚̂ňê‚ÂíœB +Eƒp[ƒeƒB[‰ï˜bAƒMƒ‹ƒh‰ï˜b‚Å‚à@ƒRƒ}ƒ“ƒh‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³B + (/map) + clif.c + clif_parse_PartyMessage()Aclif_parse_GuildMessage C³B + +-------------- +//0560 by ƒpƒCƒ“ + +E0559 ‚Ì athena-start ‚ð Unix Like OS ‚Å‚à“®‚‚悤‚ɃŠƒtƒ@ƒCƒ“B + +-------------- +//0559 by rowla + +Eathena.sh‚ð‘S–Ê“I‚É‘‚«’¼‚µAathena-start‚ÉBathena-start start‚ÅŠJŽnAathena-start stop‚ŃT[ƒo[’âŽ~Bcygwin‚ŃeƒXƒgA*BSD|Linux‚Å‚Í–¢ƒeƒXƒg(ŠÂ‹«‚ª‚È‚¢‚½‚ß)B + +-------------- +//0558 by Ž€_ + +EƒuƒŠƒbƒcƒr[ƒg‚ðŽ©“®‚¾‚¯‹|‚ð‘•”õ‚µ‚Ä‚¢‚È‚¢‚Æ”“®‚Å‚«‚È‚¢‚悤‚É•ÏXB(Žè“®‚Í•Ší‚ÉŠÖŒW‚È‚Žg‚¦‚Ü‚·B) –¢ƒeƒXƒgB +Eƒgƒ‰ƒbƒv‚Ìd‚³C³B(‰½ŒÌ‚©‚Í’m‚ç‚È‚¢‚¯‚Ç100‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ð10‚ÉC³Bˆö‚Ý‚É‘q‚Ì•\Ž¦‚Í100‚ª10‚Å10‚ª1‚Å‚·B) +E‹|‚ÅŽg‚¤ƒXƒLƒ‹‚ÌꇖŒ¸‚ç‚È‚¢‚Ì‚ªŽd—l‚¾‚Á‚½‚ÆŠo‚¦‚Ä‚¢‚é‚Ì‚Å–î‚ðƒ`ƒFƒbƒN‚µ‚È‚¢‚悤‚ÉC³B +Eƒ‚ƒ“ƒNƒXƒLƒ‹ŽO’i¶‚Ì•\Ž¦‚ðƒpƒbƒVƒu‚É•ÏXB +Eƒ}ƒbƒvƒtƒ‰ƒO‚ðƒZƒbƒg‚·‚鎞dummy‚ª‚È‚‚Ä‚àƒZƒbƒg‚Å‚«‚é‚悤‚ÉC³B +(mapflag nomomo dummy‚©‚çmapflag nomemo‚Å‚à‘åä•v‚Ȃ悤‚É•ÏXB) +–¢ƒeƒXƒgB + (/db) + item_db.txt C³B + skill_db.txt C³B + (/map) + skill.c + skill_check_condition()Askill_additional_effect() C³B + skill_status_change_start() C³B + npc.c + do_init_npc() C³B + +-------------- +//0557 by huge + +E–î‚ðA‹|‘•”õŽž‚Ì‚Ý‘•”õ‚Å‚«‚é‚悤‚ÉC³B +E‹|‚ð‘•”õ‚©‚çŠO‚µ‚½‚çA–î‚àŠO‚ê‚é‚悤‚ÉC³B +E–î‚ðÁ”ï‚·‚éƒXƒLƒ‹‚ð‚¢‚‚‚©C³B +E‘é‚ðA‹|‚ð‘•”õ‚µ‚Ä‚¢‚é‚Æ‚«‚Ì‚Ý”“®‚·‚é‚悤‚ÉC³B(–¢ƒeƒXƒg) + + pc.c + pc_equipitem() C³B + pc_unequipitem() C³B + skill.c + skill_additional_effect() C³B + skill_check_condition() C³B + +-------------- +//0555 by Ž€_ + +Eׂ©‚¢C³‚ƃvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒXAŒÃ‚¢Šª•¨‚̃oƒOC³B +E@ƒRƒ}ƒ“ƒh@refineA@produce‚µC³B +EƒT[ƒo[‚ÌIP‚ÉDNS–¼‚ðŽg‚¦‚é‚悤‚É•ÏXB(¡‚³‚ç‚Å‚·‚ªYare‚©‚ç +Ž‚Á‚Ä‚«‚½•¨‚Å‚·B) +EƒXƒeƒB[ƒ‹ŒvŽZŽ®•ÏX‚ÆMVPƒAƒCƒeƒ€ˆ—•ÏXB +E“XNPC‚ð—˜—p‚É‚æ‚éƒWƒ‡ƒuŒoŒ±’lŠl“¾ŒvŽZŽ®•ÏXB + Šl“¾ƒWƒ‡ƒuŒoŒ±’l = ln(‹à*ƒXƒLƒ‹ƒŒƒxƒ‹) * shop_exp / 100 +E‚Ù‚Æ‚ñ‚ǃeƒXƒg‚µ‚Ä‚È‚¢‚̂ŃoƒO‚̉”\«‚ª‚ ‚è‚Ü‚·B + help.txt C³B + (/conf) + atcommand_athena.conf C³B + battle_athena.conf C³B + (/db) + item_db.txt C³B + (/doc) + conf_ref.txt C³B + (/char) + char.c + do_init()Acheck_connect_login_server() C³‚Æ‚µC³B + (/map) + mob.c + mob_damage() C³B + pc.c + pc_getitemfromcart()Apc_steal_item() C³B + pet.c + pet_return_egg()Apet_get_egg()Apet_unequipitem() C³B + script.c + buildin_getitem() C³B + skill.c + skill_produce_mix() C³B + storage.c + storage_storageget() C³B + atcommand.c C³B + map.c + map_config_read() C³‚Æ‚µC³B + chrif.c + check_connect_char_server()Ado_init_chrif()Achrif_setip() C³‚Æ‚µC³B + npc.c + npc_buylist()Anpc_selllist() C³B + +-------------- +//0554 by NOCTURNE +EƒT[ƒo[SnapShot +Etoo/addaccount‚Ìíœ +Ehelp.txt‚ÌXV + +-------------- +//0553 by ŒÓ’±—– + +Eladmin‚̃oƒOC³‚Æ‹@”\’ljÁ + EƒL[ƒ[ƒh‚É‚æ‚éƒAƒJƒEƒ“ƒgŒŸõ‹@”\’ljÁ + EƒVƒFƒ‹ƒRƒ}ƒ“ƒh‚Æ‚µ‚ÄŽg—p‚Å‚«‚é‚悤‚Ƀvƒƒ“ƒvƒg‚ðŽg‚í‚È‚¢ƒ‚[ƒh’ljÁ + E’ljÁ‹@”\‚ɂ‚¢‚Ä‚Íladmin‚ðŒ©‚Ä‚‚¾‚³‚¢ + E ladmin‚Ì--makesymlink‚É‚æ‚èAƒVƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN‚Æ‚µ‚Äaddaccount‚ð + 쬂·‚邽‚ßAˆÈ‘O‚Ìaddaccount‚Í휂·‚é•K—v‚ª‚ ‚è‚Ü‚·B + ‚±‚ê‚ç‚̃Vƒ“ƒ{ƒŠƒbƒNƒŠƒ“ƒN(Cygwin‚ł̓Vƒ‡[ƒgƒJƒbƒg)‚ÆA + ŒÃ‚¢addaccount‚ÍŽIsnapshot‚É‚ÍŠÜ‚Ü‚È‚¢‚ʼnº‚³‚¢B + + (tool/) + ladmin + ‹@”\’ljÁ‚ÆC³ + +E—«ƒAƒJƒEƒ“ƒg‚µ‚©ì¬‚Å‚«‚È‚¢ƒoƒOC³ +EladminAcheckversionŽg—pŽžloginƒT[ƒo[‚ª–\‘–‚·‚éƒoƒOC³ +EGMƒAƒJƒEƒ“ƒgŽü•Ó‚ÌID‚ð”ð‚¯‚é‚½‚ß‚ÉSTART_ACCOUNT_NUM‚ð•ÏX + (Šù‚ÉGMƒAƒJƒEƒ“ƒg‚Í”ð‚¯‚éŽd—l‚É‚È‚Á‚Ä‚¢‚Ü‚·‚ªA¬—–hŽ~‚Ì‚½‚ß) + + (login/) + login.h + START_ACCOUNT_NUM‚ð500000‚©‚ç2000000‚É•ÏX + login.c + 7532(Ø’f)ƒpƒPƒbƒg‚̈—C³ + mmo_auth_new()C³ + +Ebackup‚ªƒoƒbƒNƒAƒbƒv‚·‚éƒtƒ@ƒCƒ‹‚Épet.txt‚ð’ljÁ + (tool/) + backup + ƒtƒ@ƒCƒ‹’ljÁC³ + +-------------- +//0552 by Ž€_ + +EˆÀ’è«‚ðã‚°‚éˆ×‚ÌC³‚Å‚·‚ª–{“–‚ɈÀ’è«ã‚ª‚Á‚½‚© +‚Ç‚¤‚©‚Í•s–¾‚Å‚·B +EPVP‚É‚æ‚èƒNƒ‰ƒCƒAƒ“ƒg‚ª—Ž‚¿‚é–â‘èC³B + atcommand.c + @pvpoffA@pvponA@gvgonA@gvgoff C³B + script.c + buildin_pvpon()Abuildin_pvpoff()Abuildin_gvgon()Abuildin_gvgoff() C³B + clif.c + clif_pvpset() C³B + skill.c + skill_attack()Askill_unit_onplace()Askill_unit_onout() C³B + skill_unit_ondelete() C³B + +-------------- +//0551 by Kalen +EDBC³ + db/create_arrow_db.txt Š®¬ + SourceID‡‚Ƀ\[ƒg‚µ‚Ü‚µ‚½B + +-------------- +//0550 by huge + +E–î쬃XƒLƒ‹ŽÀ‘• + + clif.c + clif.h + clif_arrow_create_list() ’ljÁ + clif_arrow_created() ’ljÁ + clif_parse() C³ + + pc.c + pc_search_inventory() C³ + + skill.c + skill.h + skill_arrow_db() ’ljÁ + skill_readdb() C³ + skill_castend_damage_id() C³ + + db/create_arrow_db.txt ’ljÁ + db/skill_db.txt C³ + + ‚Ü‚¾db‚Í–¢Š®¬‚Å‚·B + +-------------- +//0549 by Kalen + +Emap_athena.conf + ƒIƒŠƒWƒiƒ‹ƒXƒNƒŠƒvƒgA‹GߌÀ’èƒXƒNƒŠƒvƒg‚ð®“Ú + shop3.txt’ljÁ + +EŠeŽíNPC’ljÁ•C³ + npc_event_yuno.txt [’ljÁ]ƒWƒ…ƒm[ƒCƒxƒ“ƒg(ÂÎ5ŒÂGET) + npc_cTower.txt [’ljÁ]’nã’n‰º‚ÌŒ®NPC + npc_town_yuno.txt [C³]‘䎌C³ + + npc_event_carnival.txt [’ljÁ]‹ŒŽIƒJ[ƒjƒoƒ‹ƒCƒxƒ“ƒgŽž‚ÌNPC + +-------------- +//0548 by huge + +E–î‚ð‘•”õ‚µ‚½Žž‚Ì•\Ž¦ƒoƒO–â‘è‚ðC³B + clif.c + clif_arrowequip() C³B + pc.c + pc_equipitem() C³B + +‚ ‚Æ‚ÍAƒ}ƒbƒv‚ðˆÚ“®‚·‚邽‚Ñ‚É‘•”õ‚ªŠO‚ê‚¿‚Ⴄ“_‚Å‚·‚ËEEEB + +-------------- +//0547 by Ž€_ + +EˆÀ’è«‚ðã‚°‚éˆ×‚ÌC³‚Æׂ©‚¢C³B +EƒXƒLƒ‹ƒ†ƒjƒbƒg‚Ì”»’è‚ð‚µ‚Ä‚¢‚éŠÔƒƒ‚ƒŠ[‚ð‰ðœ‚Å‚«‚È‚¢‚悤‚É•ÏXB + map.c + map_foreachinarea()Amap_foreachinmovearea() C³B + map_foreachobject() C³B + block_free_max‚ð32000‚©‚ç50000‚É•ÏXB + pc.c + pc_calcstatus() C³B + skill.c + do_init_skill()Askill_unit_timer()Askill_status_change_clear() C³B + skill.cAbattle.cAbattle.h + struct battle_config‚Ìsanctury_type‚ðsanctuary_type‚É•ÏXB + (‰pŒêƒXƒyƒ‹ŠÔˆá‚¢‚ÅC³B) + battle_athena.conf + sanctury_type‚ðsanctuary_type‚É•ÏXB + conf_ref.txt + sanctury_type‚ðsanctuary_type‚É•ÏXB + +-------------- +//0546 by Ž‚Žqo^.^o + +conf/npc_shop2.txt +DƒoˆêƒhAƒ_ƒ“ƒTˆê—p‚Ì•ŠíBƒRƒ‚ƒh‚Ì•Ší‰®‚Ŕ̔„‚µ‚Ä‚¢‚éB +Dƒ‚ƒ“ƒN—p‚Ì•ŠíBƒJƒsƒgˆêƒŠƒiC“¹‰@‚Ŕ̔„‚µ‚Ä‚¢‚éB + +-------------- +//0545 by Ž€_ + +EƒuƒŠƒbƒc‚̃_ƒ[ƒW‚ðŽ©“®‚Å•ªŽUAŽè“®‚Å•’Ê‚É‚È‚é‚悤‚É•ÏXB +EƒI[ƒgƒuƒŠƒbƒcƒoƒOC³B(‚±‚ê‚Å‘åä•v‚¾‚Æ‚¢‚¢‚¯‚Ç...) + map.c + block_free_max‚ð16000‚©‚ç32000‚ÉC³B + block_list_max‚ð4096‚©‚ç5120‚ÉC³B + battle.c + battle_weapon_attack() C³B + skill.c + skill_attack()Askill_castend_damage_id() C³B + +-------------- +//0544 by Diex +E–Ò—´Œ‚©‚爢C—…”e™€Œ‚ւ̃Rƒ“ƒ{ŽÀ‘•B +Eˆ¢C—…”e™€Œ”“®ŒãA“G‚Ì”wŒã‚Ɉړ®‚·‚é‚悤AC³B +EŽO’i¶‚̃_ƒ[ƒWC³B + (/map) + skill.c + skill_castend_damage_id() C³B + skill_check_condition() C³B + skill_use_id() C³B + pc.c + pc_attack_timer() C³B + pc_authok() C³B + battle.c + battle_calc_weapon_attack() C³B + battle.h + struct Battle_Config C³B + map.h + struct map_session_data C³B + (/conf) + battle_athena.conf C³B + +‚Í‚Á‚«‚è‚¢‚Á‚ăRƒ“ƒ{Œq‚°‚Â炢‚Å‚·B‚»‚Ì‚½‚߈¢C—…‚ւ̃Rƒ“ƒ{‚Í‚©‚È‚èŠÃ‚¢”»’è‚É +‚µ‚Ä‚Ü‚·iˆêŽž“I‚É‚Å‚·‚ªjBŒq‚°‚Â炯‚ê‚Îbattle_athena.conf‚Ì‚Ù‚¤‚Ńfƒ…ƒŒƒCŽž +ŠÔ‚ð‘å‚«‚‚µ‚Ä‚Ý‚Ä‚‚¾‚³‚¢B + “®‰æŒ©‚Ä‚Ä‹C‚¢‚½‚Ì‚Å‚·‚ªAˆ¢C—…”e™€Œ‚Í–Ò—´Œ‚ª”“®‚µ‚½ŒãA‘¦Žž”“®‚̃XƒL +ƒ‹‚É•Ï‚í‚Á‚Ä‚é‚悤‚È‚Ì‚Å‚·B‘¼—Í–{Šè‚Å‚·‚ªAˆ¢C—…‚܂ł̃Rƒ“ƒ{‚̃pƒP‚ð‹L˜^‚µ‚½ +•¨‚ð‚Ç‚È‚½‚©ƒAƒbƒv‚µ‚Ä‚à‚炦‚È‚¢‚Å‚µ‚傤‚©HÚׂª‚í‚©‚莟‘æAC³‚µ‚Ü‚·B + +-------------- +//0543 by Ž€_ + +EƒuƒŠƒbƒc‚̃_ƒ[ƒW‚𕪎U‚³‚ê‚é‚悤‚É•ÏXB +E•’ʂ̃AƒJƒEƒ“ƒgì‚è‚Å‚ÍGMƒAƒJƒEƒ“ƒg‚ðì‚ê‚È‚¢‚悤‚É•ÏXB +(‘O‚ÉŽ©•ª‚ª“ü‚ꂽ•¨‚ª‚È‚‚È‚Á‚½‚Ì‚Å–ß‚µ‚½‚¾‚¯‚Å‚·‚ª...) +EŽæ‚芪‚«‚ªŽå‚ƈê‚ÉŽ€‚ʂ悤‚É•ÏXB(‚½‚¾‚¿‚å‚Á‚Æd‚‚È‚é +‰Â”\«‚ª‚ ‚è‚Ü‚·B) –¢ƒeƒXƒgB +EMVPŒoŒ±’l‚ª•\Ž¦‚¾‚¯‚³‚ê‚ÄŽÀÛ‚É‚Í“ü‚Á‚Ä‚È‚¢–â‘èC³B + (/login) + login.c + mmo_auth_new() C³B + (/map) + skill.c + skill_castend_damage_id() C³B + battle.c + battle_calc_misc_attack() C³B + mob.c + mob_damage() C³B + mob_deleteslave()Amob_deleteslave_sub() ’ljÁB + +-------------- +//0542 by Ž€_ + +EƒI[ƒgƒuƒŠƒbƒcƒoƒOC³B(¡“x‚±‚»‘åä•v‚Ì‚Í‚¸...) +EŽ©•ª‚ÉŽg‚Á‚½ƒq[ƒ‹‚Å‚ÍŒoŒ±‚ª“ü‚ç‚È‚¢‚悤‚É•ÏXB +E“XNPC‚ð—˜—p‚É‚æ‚éƒWƒ‡ƒuŒoŒ±’lŠl“¾ŒvŽZŽ®•ÏXB + Šl“¾ƒWƒ‡ƒuŒoŒ±’l = ln(‹à) * shop_exp / 100 +‚É‚È‚è‚Ü‚·B +log‚ðŽg‚¤‚±‚Æ‚Å‹à‚ª‘½‚‚Ä‚à“ü‚éŒoŒ±’l‚ª‘½‚“ü‚ç‚È‚¢‚悤‚É•ÏX‚µ‚Ü‚µ‚½B + (/map) + battle.c + battle_damage() C³B + skill.c + skill_attack()Askill_castend_damage_id() C³B + skill_castend_nodamage_id C³B + npc.c + npc_buylist()Anpc_selllist() C³B + map.c + map_foreachinarea()Amap_foreachinmovearea()Amap_foreachobject() + C³B(‘債‚½C³‚Å‚Í‚È‚¢‚Å‚·B) + (/conf) + battle_athena.conf C³B + (/doc) + conf_ref.txt C³B + +-------------- +//0541 by huge + +E–î‚ð‚Ü‚Æ‚ß‚ÄŽ‚Ä‚é‚悤‚ÉC³B +E‹|‚ÅUŒ‚‚µ‚½‚Æ‚«‚ÉA‘•”õ‚µ‚Ä‚¢‚é–î‚ðÁ”ï‚·‚é‚悤‚ÉC³B + + itemdb.c + itemdb_search() C³ + itemdb_isequip() C³ + + battle.c + battle_weapon_attack() C³ + battle_calc_weapon_attack() C³ + + clif.c + clif.h + clif_arrow_fail() ’ljÁ + clif_parse_EquipItem() C³ + +-------------- +//0540 by Ž€_ + +EƒoƒOC³‚Æ–â‘è‚ ‚è‚»‚¤‚ÈŠC³B(‚±‚ê‚ÅWZ_FIREPILLAR‚ƃuƒŠƒbƒc‚É +‚æ‚éŽIƒ_ƒEƒ“‚Í‚È‚‚È‚é‚Í‚¸...) + map.c + map_foreachinarea()Amap_foreachinmovearea() C³B + skill.c + skill_unitsetting()Askill_delunitgroup() C³B + pc.c + pc_damage() C³B + battle.c + battle_damage() C³B + npc.c + npc_parse_mob() C³B + mob.c + mob_spawn_dataset() C³B + +-------------- +//0539 by Ž€_ + +Eclif_pvpset()‚ðƒ}ƒbƒv‚©‚çAREA‚©ƒ}ƒbƒv‚©‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB(pvp‚ÌŽž‚̈—‚Í0535ˆÈ‘O‚Ì•¨‚É–ß‚»‚Ü‚µ‚½BŽ©•ª‚¾‚¯‚É“]‘—‚µ‚Ä‚à‚¢‚¢‚悤‚È‹C‚à‚µ‚Ü‚·‚ª...) + clif.hAclif.c + clif_pvpset() C³B + clif_parse_LoadEndAck() C³B + script.c + buildin_pvpoff() C³B + buildin_pvpon() C³B + atcommand.c C³B +EUŒ‚“r’†‚ŃAƒCƒeƒ€‚ðE‚¤‚ÆUŒ‚‚ªŽ~‚Ü‚é‚悤‚ÉC³B + pc.c + pc_takeitem() C³B +E0535à–¾‚ª”š—ô”g“®‚É‚È‚Á‚Ä‚¢‚邪‚»‚ê‚Í‹à„‚ÉŠÔˆá‚¢‚Å‚·B +E0537‚Åà–¾‚ð–Y‚ê‚Ü‚µ‚½‚ªƒ‚ƒ“ƒXƒ^[‚Ìdef‚Æmdef‚ð10000ˆÈã‚ÉÝ’è‚·‚ê‚ΑS‚Ä‚ÌUŒ‚‚É1ƒ_ƒ[ƒW‚ɂȂ郂ƒ“ƒXƒ^[‚É‚È‚è‚Ü‚·B‚»‚µ‚ă‚ƒ“ƒXƒ^[î•ñ‚Ådef‚Æ +mdef‚ª10000ˆÈã‚Ìê‡def 100Amdef 99‚É•\Ž¦‚·‚é‚悤‚É•ÏXB–{ŽIŽd—l‚É +‚·‚é‚É‚Ímob_db.txt‚ðC³‚µ‚Ä‚‚¾‚³‚¢B + +-------------- +//0538 by huge + +EƒOƒŠƒ€ƒgƒD[ƒX‚ð”͈ÍUŒ‚‚ÉC³ +EƒTƒvƒ‰ƒCƒYƒAƒ^ƒbƒNŽÀ‘• (—LŒø”͈͂Á‚ÄA‚±‚ê‚Å‚ ‚Á‚Ä‚é‚Ì‚©‚ÈH) +EƒoƒbƒNƒXƒ^ƒu‚̉¼ŽÀ‘• + –{ŽI‚Å‚â‚Á‚Ä‚él‚©‚ç˜b‚ð•·‚¢‚ÄAꊎw’肶‚á‚È‚‚Ä + ƒ^ƒQŽæ‚Á‚Ä‚à—Ç‚³‚»‚¤‚¾‚Á‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½Bi‚â‚è‚â‚·‚©‚Á‚½‚Ì‚Å (^^; + ‚Ü‚¾Amob‚ÌŒã‚ë‚É‹‚é‚©‚Ç‚¤‚©‚Ì”»’è‚Í“ü‚Á‚Ä‚Ü‚¹‚ñB + +Ebattle.c + battle_calc_weapon_attack() C³ + +Eskill.c + skill_additional_effect() C³ + skill_castend_damage_id() C³ + skill_check_condition() C³ + skill_use_id() C³ + skill_castend_nodamage_id() C³ + +Eskilldb.txt + ƒoƒbƒNƒXƒ^ƒu‚ÌŽí—Þ‚ð[êŠ]‚©‚ç[“G]‚Ö•ÏX + +-------------- +//0537 by Ž€_ + +EƒXƒeƒB[ƒ‹ƒoƒOC³‚Æbattle_athena.conf‚Ì€–ڒljÁAŽd—l•ÏX‚Æׂ©‚¢C³‚Å‚·B +(ƒXƒeƒB[ƒ‹‚ÍŒvŽZŽ®‚É–â‘肪‚ ‚Á‚½‚Ì‚ÅC³‚µ‚ÄŠm—¦‚ðX‚É—Ž‚Æ‚µ‚Ü‚µ‚½B) + battle.h + finger_offencive_type‚ðfinger_offensive_type‚ÉC³B(‰pŒêƒXƒyƒ‹ŠÔˆá‚¢‚ÅC³‚µ‚Ü‚µ‚½B) + struct battle_config‚Érestart_hp_rateArestart_sp_rate ’ljÁB + battle.c + battle_calc_weapon_attack()Abattle_calc_magic_attack() C³B + skill.c + skill_attack() C³B + clif_skill_nodamage()‚ɃXƒLƒ‹ƒŒƒxƒ‹‚ð‘—‚é‚悤‚É•ÏXB(M‚³‚ñ‚ÌŽw“E‚É‚æ‚èC³B) + clif.c + clif_skill_estimation() C³B + conf_ref.txt + finger_offencive_type‚ðfinger_offensive_type‚ÉC³‚Æ‚µ’ljÁB + mob.c + mob_ai_sub_hard()Amob_target()Amob_damage() C³B + pc.c + pc_steal_item() C³B + atcommnad.cAatcommnd.h + @ƒRƒ}ƒ“ƒh@gvgon , @gvgoff ’ljÁB + battle_athena.conf + finger_offencive_type‚ðfinger_offensive_type‚ÉC³‚Æ‚µ’ljÁB + +-------------- +//0536 by hogefuga3 (Athena staff) + +EVGRFƒtƒ@ƒCƒ‹ƒtƒH[ƒ}ƒbƒg‘Ήž +@- Athena staff —l‚Ì쬂³‚ꂽƒpƒbƒ`‚ð“K—p‚µ‚Ü‚µ‚½B + XV—š—ð‚Ì•”•ª‚̓pƒbƒ`ƒ~ƒX‚É‚È‚Á‚½‚Ì‚ÅŽè“®‚Å‘g‚Ýž‚ÝB + +i•ÏXj + common/ + grfio.c + +-------------- +//0535 by Ž€_ + +E0533‚Ì–â‘肪‚ ‚è‚»‚¤‚È•”•ª‘S‚ÄC³BC³‚µ‚½Š‚ð‘S•”ƒ`ƒFƒbƒN‚µ‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯... +EƒXƒNƒŠƒvƒgsetmapflagnosave ’ljÁB + setmapflagnosave ƒ}ƒbƒv–¼AƒZ[ƒu‚·‚éƒ}ƒbƒv–¼AÀ•W(XAY) + nosaveƒtƒ‰ƒO‚ðon‚É‚µ‚Ü‚·B +Ebattle_athena.conf‚ɒljÁ‚ƈꕔŽd—l•ÏXB(Ú‚µ‚‚Íconf_ref.txt‚ðŽQl‚µ‚Ä‚‚¾‚³‚¢B) +Eƒ‚ƒ“ƒXƒ^[‚Ìdef‚Æmdef‚ª10000ˆÈã‚ÌꇑS‚Ä‚ÌUŒ‚(ƒNƒŠƒeƒBƒJƒ‹ŠÜ‚ß‚Ä)‚ª1ƒ_ƒ[ƒW‚É‚È‚é‚悤‚É•ÏXB(ƒgƒ‰ƒbƒv‚âƒuƒŠƒbƒc‚Ìꇗ¼•û‚ª10000ˆÈã‚Ìꇂ̂Ý1‚É‚È‚è‚Ü‚·B) ‘‚ƃLƒmƒR‚É‚Pƒ_ƒ[ƒWŒÅ’è‚Í휂µ‚Ü‚µ‚½B(Œ³X–{ŽI‚Å‚à1ŒÅ’è‚Å‚Í‚È‚¢‚Å‚·B¸—û“™‚É‚æ‚éˆø‚«ã‚°ƒ_ƒ[ƒW‚Í‚»‚Ì‚Ü‚Üo‚Ü‚·‚Ì‚Å... ŒÅ’肵‚½‚¢‚Ì‚È‚çdef‚Æmdef‚ð10000‚É‚µ‚Ä‚‚¾‚³‚¢BŽÀ‚Í‚±‚ê‚̓NƒŠƒXƒ^ƒ‹‚ɈׂÉì‚낤‚Æ‚µ‚½•¨‚Å‚·‚ª...) +E”š—ô”g“®‚ÌŽžƒAƒCƒeƒ€‚É‚æ‚éƒXƒLƒ‹‚ÍŽg—p‚Å‚«‚é‚悤‚ÉC³B +E‚»‚Ì‘¼‚µC³B(C³‚Ì•¨‚Ì’†‚ɃeƒXƒg‚µ‚Ä‚È‚¢•¨‚à‚ ‚è‚Ü‚·B) + (/doc) + conf_ref.txt C³B + (/conf) + battle_athena.conf C³B + (/map) + battle.h C³B + battle.c C³B + mob.h C³B + mob.c C³B + skill.c C³B + npc.c C³B + pc.c C³B + script.c C³B + clif.c C³B + chrif.c C³B + +-------------- +//0534 by Diex + +EƒRƒ“ƒ{ƒVƒXƒeƒ€‰¼ŽÀ‘• + map/ + battle.c + battle_weapon_attack() C³B + clif.c + clif.h + clif_combo_delay()@ŠÖ”’ljÁB + map.h + map_session_data@•Ï”’ljÁB + pc.c + pc_authok()@•Ï”’ljÁB + pc_attack_timer()@C³B + skill.c + skill_castend_damage_id()@C³B + skill_check_condition@C³B + skill_use_id@C³B + db/ + skill_db.txt@C³B + +’j–Ò—´Œ‚©‚爢C—…”e–PŒ‚É‚Í‚Ü‚¾‚‚Ȃ°‚Ü‚¹‚ñB + ˆ¢C—…”e–PŒ‚ð•ú‚Á‚½ŒãAPC‚ÍMOB‚Ì”wŒã(?)‚Ɉړ®‚µ‚Ä‚é‚Á‚Û‚¢‚Ì‚Å‚·‚ªA +@@‚»‚±‚ç‚Ö‚ñ‚Ìî•ñ‚ª‘«‚è‚Ü‚¹‚ñBî•ñ’ñ‹Ÿ‚¨Šè‚¢‚µ‚Ü‚·B + +-------------- +//0533 by ‚é‚é‚é + +E‘‚ƃLƒmƒR‚É‚Pƒ_ƒ[ƒWŒÅ’è +battle.c ‚Ì battle_weapon_attack() ‚Æ battle_calc_attack() ‚ðC³ +battle.c ‚Ì battle_get_mobid() ‚ð’ljÁ +mob.c ‚Ì mob_makedummymobdb() ‚Æ mob_readdb() ‚ðC³ + +EƒXƒLƒ‹ƒƒO‚Ƀ‚ƒu‚̌ŗL”Ô†•‚o‚b‚Ì‚h‚c”Ô†‚ð•\Ž¦ +ibattle.c ‚Ì battle_get_mobid() ‚ð’ljÁ‚µ‚½‚Ì‚Å‚»‚̂‚¢‚Å‚Éj +mob.c skill.c ‚Ì•ÏX‰ÓŠ‘½”iŠ¾ +i"MOB %d" ‚à‚µ‚‚Í "PC %d" ‚ÅŒŸõ‚·‚ê‚ΕÏX‰ÓŠ‚ª‚í‚©‚é‚©‚Æj + +Eƒnƒ“ƒ^[‚Ìã©‚ðŽg‚Á‚½ƒXƒLƒ‹‚Åã©‚ðÁ”ï‚·‚é‚悤‚É‚µ‚½ +batttle.c ‚Ì skill_check_condition() ‚ðC³ +iƒWƒFƒ€Á”‚Ì—¬—p‚Á‚Û‚¢‚±‚Æ‚ð‚â‚Á‚Ä‚é‚ñ‚¾‚¯‚Lj—’†g‚Í—‰ð‚µ‚Ä‚È‚¢‚—j + +EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ•ƒ}ƒOƒkƒX‚̃_ƒ[ƒW”»’è‚ð•sŽ€‘®«•ˆ«–‚Ží‘°‚ÉÄ“xC³ +0532‚ÅÄ‚ÑŒ³‚É–ß‚Á‚Ä‚µ‚Ü‚Á‚½‚Ì‚ð‚È‚¨‚µ‚Ü‚µ‚½B +‚½‚¾‚µA‰ñ”•l””»’è‚É‚ÍŽè‚ð‰Á‚¦‚Ä‚¢‚Ü‚¹‚ñi‚Á‚Ä‚©Ž©•ª‚É‚Í‚Ü‚¾ƒ€ƒŠj + +ˆÈãB +Ø‚Á‚½“\‚Á‚½‚ÌŒ©—lŒ©^Ž—‚Å‚â‚Á‚½‚Ì‚ÅŒ¾Œê“I‚ɉʂ½‚µ‚Ä‚±‚ê‚Å‚æ‚¢‚Ì‚©BBB +‚à‚µˆ—•û–@‚É–â‘è—L‚肾‚Á‚½‚çC³‚È‚è‚ð‚µ‚Ä‚¢‚½‚¾‚¯‚é‚ÆŠð‚µ‚¢‚Å‚·B + +-------------- +//0532 by Ž€_ + +EC³‚µ‚½Š‚ð‘S‘Rƒ`ƒFƒbƒN‚µ‚Ä‚È‚©‚Á‚½‚Ì‚ÅC³‚µ‚½ƒtƒ@ƒCƒ‹‚¾‚¯...Š¾ +Emapflag‚Énopenalty’ljÁBŽg—p•û–@‚Í + mapflag nopenalty dummy +‚Å‚·B‹@”\‚Í‚»‚̃}ƒbƒv‚ÅŽ€‚ñ‚¾ŽžŒoŒ±‚ªŒ¸‚ç‚È‚¢‚悤‚É‚µ‚Ü‚·B +Emapflag‚Épvp_nopartyApvp_noguildAgvgAgvg_noparty’ljÁB +pvp_noparty‚ÍPVPƒ‚[ƒh‚Å“¯‚¶ƒp[ƒeƒB‚ÉUŒ‚‚ª“–‚½‚ç‚È‚¢Apvp_noguild‚ÍPVPƒ‚[ƒh‚Å“¯‚¶ƒMƒ‹ƒh‚ÉUŒ‚‚ª“–‚½‚ç‚È‚¢Agvg‚̓V[ƒYƒ‚[ƒh‚ÉAgvg_noparty‚̓V[ƒYƒ‚[ƒh‚Å“¯‚¶ƒp[ƒeƒB‚ÉUŒ‚‚ª“–‚½‚ç‚È‚¢•¨‚Å‚·B +E‰Â“®‚µ‚Ä‚È‚¢ƒ^ƒCƒ}[‚Í‘S‚Ä-1‚É‚È‚é‚悤‚É•ÏXB +E‚«”ò‚΂µˆ—C³B +Eƒ}ƒbƒvƒ[ƒh’¼Œã‹CŒ÷‚ªŒ©‚¦‚È‚¢–â‘èC³B +EŽc‰e‚̈—C³B +Eƒ}ƒbƒv‚ðƒ[ƒh‚·‚é‚ÆŽ€‚ñ‚¾‚ӂ肪‰ðœ‚³‚ê‚é‚悤‚É•ÏXB +EPVP‚ð‚µ•ÏXB +EŒÃ–Ø‚ÌŽ}‚Åo‚郂ƒ“ƒXƒ^[‚ðŽ©•ª‚̃Œƒxƒ‹‚æ‚è‚‚¢•¨‚Ío‚È‚¢‚悤‚É•ÏXB +E‰Á‘¬ƒ|[ƒVƒ‡ƒ“‚Ìsc_start SC_SpeedPot0,1,0;‚ðsc_start SC_SpeedPot0,1800,0;‚̂悤‚É•ÏXBSC_SpeedPotH‚ÌŒã‚Ì”’l‚ÍŽ‘±ŽžŠÔ‚Å‚·B(’PˆÊ‚Í•b) +E@ƒRƒ}ƒ“ƒh@pvp‚ð@pvpon‚É•ÏX‚Æ@pvpon‚Æ@pvpoffA@gat‚Ì‹@”\•ÏXB +Ebattle_athena.conf‚ÌpvpíœB +Ebattle_athena.conf‚Édeath_penalty_type’ljÁB +Eƒyƒiƒ‹ƒeƒB‚Ì“K—p‚ðŽ€‚ñ‚¾Žž‚©‚玀‚ñ‚¾ŒãƒŠƒXƒ^[ƒg‚µ‚½Žž‚É•ÏXB(ƒŠƒU‚Å•œŠˆ‚·‚é‚ÆŒoŒ±‚ªŒ¸‚è‚Ü‚¹‚ñB–{ŽI‚ÌŽd—l‚ª‚©‚È‚è‹C‚É‚¢‚ç‚È‚©‚Á‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½B) +EƒXƒNƒŠƒvƒgsetmapflagAremovemapflagApvponApvpoffAgvgonAgvgoff’ljÁB + setmapflag ƒ}ƒbƒv–¼Aƒ}ƒbƒvƒtƒ‰ƒOƒ^ƒCƒv + Žw’肵‚½ƒ}ƒbƒvƒtƒ‰ƒO‚ðon‚µ‚Ü‚·B(‚½‚¾pvpAgvg‚ÍpvponAgvgon‚Å‚Å‚«‚é‚Ì‚ÅŽw’肵‚Ä‚à“®ì‚µ‚Ü‚¹‚ñB‚ ‚Ænosave‚Ìꇈ—‚ª‚¿‚å‚Á‚Æ•¡ŽG‚É‚È‚é‚̂őΉž‚µ‚Ä‚Ü‚¹‚ñB) + removemapflag ƒ}ƒbƒv–¼Aƒ}ƒbƒvƒtƒ‰ƒOƒ^ƒCƒv + Žw’肵‚½ƒ}ƒbƒvƒtƒ‰ƒO‚ðoff‚µ‚Ü‚·B(‚½‚¾pvpAgvg‚ÍpvpoffAgvgoff‚Å‚Å‚«‚é‚Ì‚ÅŽw’肵‚Ä‚à“®ì‚µ‚Ü‚¹‚ñB‚±‚¿‚ç‚Ínosave‚à‰Â”\‚Å‚·B) + pvpon ƒ}ƒbƒv–¼ + Žw’肵‚½ƒ}ƒbƒv‚ðPVPƒ‚[ƒh‚É‚µ‚Ü‚·B + pvpoff ƒ}ƒbƒv–¼ + Žw’肵‚½ƒ}ƒbƒv‚ÌPVPƒ‚[ƒh‚ð‰ðœ‚µ‚Ü‚·B + gvgon ƒ}ƒbƒv–¼ + Žw’肵‚½ƒ}ƒbƒv‚ðƒV[ƒYƒ‚[ƒh‚É‚µ‚Ü‚·B + gvgoff ƒ}ƒbƒv–¼ + Žw’肵‚½ƒ}ƒbƒv‚̃V[ƒYƒ‚[ƒh‚ð‰ðœ‚µ‚Ü‚·B +‚½‚¾‘S‚ẴXƒNƒŠƒvƒg‚Ì“®ì‚ÍŠm”F‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B +EƒTƒ“ƒNƒ`ƒ…ƒAƒŠAƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€‚̈—‚ð0529‚É–ß‚µ‚Ü‚µ‚½B +Ž©•ª‚Ì’²¸‚ł̓Tƒ“ƒNƒ`ƒ…ƒAƒŠ‚Íl”‚̧ŒÀ‚ª‚ ‚è‚Ü‚·B(ƒŒƒxƒ‹1‚Å4–¼‚Å +1ƒŒƒxƒ‹‚Ɉêl‚¸‚‘‚¦‚Ü‚·B) +E‚»‚̌サC³B(‚µ‚½‚Í‚¸...) + (db/) + const.txt C³B + item_db.txt C³B + (conf/) + battle_athena.conf C³B + (doc/) + conf_ref.txt C³B + (map/) + clif.hAclif.c C³B + mob.c C³B + pc.hApc.c C³B + skill.c C³B + pet.c C³B + npc.c C³B + map.hAmap.c C³B + battle.hAbattle.c C³B + atcommand.hAatcommand.c C³B + script.c C³B + makefile C³B + +-------------- +//0531 by Ž‚Žqo^.^o + +conf/npc_turtle.txt +Dƒ^[ƒgƒ‹ƒAƒCƒ‰ƒ“ƒh‚És‚ŽžAƒTˆêƒoˆê‚ð—Ž‚Á‚Ä–â‘èC³ +Dnpc_turtle.txt‚Ì508s–Ú +set Zeny - 10000,0; --> set Zeny,Zeny-10000; C³ + +-------------- +//0530 by RR +EƒXƒLƒ‹uƒTƒ“ƒNƒ`ƒ…ƒAƒŠv‚ÅUŒ‚‘ÎÛ‚ðƒAƒ“ƒfƒbƒg/ˆ«–‚Ží‘°‚©‚ç•sŽ€‘®«/ˆ«–‚Ží‘°‚É•ÏX +EƒXƒLƒ‹uƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€v‚ÅUŒ‚‘ÎÛ‚ðƒAƒ“ƒfƒbƒg/ˆ«–‚Ží‘°‚©‚ç•sŽ€‘®«/ˆ«–‚Ží‘°‚É•ÏX +EƒXƒLƒ‹uƒTƒ“ƒNƒ`ƒ…ƒAƒŠv‚̉ñ•œ‰ñ”‚ðl”‚©‚çƒJƒEƒ“ƒg‚É•ÏX + skill.c + skill_unit_onplace()C³ + skill_unit_onout()C³ + +‘½•ª‚±‚ÌŽd—l‚Ň‚Á‚Ä‚é‚Í‚¸‚Å‚·cB + +-------------- +//0529 by ŒÓ’±—– + +EMOB‚ªƒXƒLƒ‹uƒq[ƒ‹v‚ðŽg—p‚·‚é‚ƃT[ƒo[‚ª—Ž‚¿‚éꇂª‚ ‚Á‚½–â‘è‚ðC³ +EƒXƒLƒ‹uƒTƒ“ƒNƒ`ƒ…ƒAƒŠv‚ÅUŒ‚‘ÎÛ‚ð•sŽ€‘®«‚©‚çƒAƒ“ƒfƒbƒg/ˆ«–‚Ží‘°‚É•ÏX + + skill.c + skill_unit_onplace()C³ + skill_castend_nodamage_id()C³ + +EƒƒOƒCƒ“ƒT[ƒo[‚̃AƒJƒEƒ“ƒgƒf[ƒ^ƒx[ƒX•ÛŽçƒc[ƒ‹‚ð“Y•t + Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B + Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B + Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B + + “Á‚É——R‚ª–³‚¢ŒÀ‚èƒAƒJƒEƒ“ƒgì¬‚à‚±‚¿‚ç‚̃c[ƒ‹‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B + addaccount‚̓pƒPƒbƒg‚Ì“s‡ãƒpƒXƒ[ƒh•¶Žš”‚̧ŒÀ‚ª‚«‚‚¢‚Ì‚ÅB + + ƒAƒJƒEƒ“ƒg‚ð휂µ‚Ä‚àƒLƒƒƒ‰ƒNƒ^[ƒf[ƒ^A‘qŒÉƒf[ƒ^A + ‚»‚Ì‘¼‚̃AƒJƒEƒ“ƒgˆÈŠO‚̃f[ƒ^‚ÍÁ‚¦‚Ü‚¹‚ñB‘ŠŽè‚ªƒƒOƒCƒ“’†‚¾‚Á‚½ê‡ + ‹§Ø’f‚Í‚³‚ê‚Ü‚¹‚ñ‚ªAŽŸ‰ñ‚©‚ç‚̓ƒOƒCƒ“‚Å‚«‚È‚¢‚Í‚¸‚Å‚·B + i‚‚܂è‚ÍA’P‚Élogin-serverã‚̃AƒJƒEƒ“ƒg‚ðÁ‚µ‚Ä‚¢‚邾‚¯‚Å‚·j + + (login/) + login.c + parse_admin()’ljÁAparse_login()C³ + (doc/) + admin_packet.txt + V‹K’ljÁBŠÇ—ƒpƒPƒbƒgî•ñ + (tool/) + ladmin + login-server administration tool‚ÌPerlƒXƒNƒŠƒvƒg + + +-------------- +//0528 by RR +EƒXƒLƒ‹uƒq[ƒ‹v‚ðŽg—p‚µ‚½Û‚ɉñ•œ—Ê‚É”ä—Ⴕ‚½•ª‚¾‚¯ƒWƒ‡ƒuŒoŒ±’l‚ªŠl“¾‚Å‚«‚é‚悤‚É•ÏX +E¤lŒnE‹Æ‚ª“XNPC‚ð—˜—p‚µ‚½Û‚ɃWƒ‡ƒuŒoŒ±’l‚ªŠl“¾‚Å‚«‚é‚悤‚É•ÏX +E—¼•û‚Æ‚àbattle_athena.conf‚Å’²®‰Â”\‚É‚µ‚Ü‚µ‚½B‰ŠúÝ’è‚Í0”{i”ñ“K—pj +Emap_athena.conf‚É‚Ä‚©‚Ú‚¿‚áƒNƒGƒXƒg‚Ì‚à‚Ì‚ª“ü‚Á‚Ä‚È‚©‚Á‚½‚̂ŃRƒƒ“ƒgƒAƒEƒg‚µ‚È‚ª‚ç’ljÁB + + map_athena.conf + + battle.c battle_config_read() + battle.h Battle_Config + battle_athena.conf + ˆÈãAbattle_athena.conf—˜—p‚½‚ß‚É•ÏX + + pc.c pc_heal() + –ß‚è’l‚ðhp+sp‚ÉB–ß‚è’l‚ð—˜—p‚µ‚Ä‚é•”•ª‚ª‚È‚³‚»‚¤‚¾‚Á‚½‚Ì‚ÅŽg‚킹‚Ä–á‚¢‚Ü‚µ‚½BƒoƒO‚ª‹N‚«‚½‚ç‚·‚Ý‚Ü‚¹‚ñB + + skill.c skill_casted_nodamage_id()‚̃q[ƒ‹•”‚ɂăWƒ‡ƒuŒoŒ±’lŠl“¾‚·‚é‚悤•ÏX + + npc.c npc_buylist() + npc_selllist() •ÏX + ‚±‚ê‚ç‚Æ‚ÌŒ“‚ˇ‚¢‚Åskill.h‚ðincludeB + + +¤l‚Ì“X—˜—pƒWƒ‡ƒuŒoŒ±’lŠl“¾‚Å‚·‚ªAŒvŽZŽ®‚Í‚Ü‚¾l‚¦’†‚Ȃ̂ʼn¼‚ÅB +ŒvŽZŽ®‚̓AƒCƒeƒ€w“ü‚ª@‘ã‹à * ƒXƒLƒ‹ƒŒƒxƒ‹iƒfƒBƒXƒJƒEƒ“ƒgj/ ((1{300/ƒAƒCƒeƒ€ŒÂ”) * 4000) +ƒAƒCƒeƒ€”„‹p‚ª@‘ã‹à * ƒXƒLƒ‹ƒŒƒxƒ‹iƒI[ƒo[ƒ`ƒƒ[ƒWj / ((1{500/ƒAƒCƒeƒ€ŒÂ”) * 4000)‚Å‚·B +í‚É–î‚ð‚½‚‚³‚ñˆê‚Éw“ü‚·‚邱‚Æ‚ÅŒoŒ±’l‚𑽗ʂɉ҂®‚±‚Æ‚ª‰Â”\‚Å‚·‚ËcB +‚Ç‚È‚½‚©‚¢‚¢Ž®‚ðŽv‚¢‚‚¢‚½‚ç•ÏX‚¨Šè‚¢‚µ‚Ü‚·B + +‚Æ‚±‚ë‚Å“]ENPC‚ªˆê•”‚©‚Ô‚Á‚Ä‚é‚ñ‚Å‚·‚ªC³‚µ‚È‚¢‚Å‚¢‚¢‚ñ‚Å‚µ‚傤‚©H + +-------------- +//0527 by Ž€_ + +E0526‚̃oƒOC³B(ƒeƒXƒg‚ׂ̈ɕς¦‚Ä‚¢‚½•¨‚ð“ü‚ꂽ‚܂܃Aƒbƒv‚µ‚Ä‚µ‚Ü‚Á‚½‚Ì‚ªŒ´ˆö‚Å‚µ‚½B) + skill.c C³B + pc.c C³B + mob.c C³B + clif.c C³B + +-------------- +//0526 by Ž€_ + +E0525‚̃ŠƒUƒŒƒNƒVƒ‡ƒ“‚ðŽ€‚ñ‚¾ƒLƒƒƒ‰‚ÉŽg‚¦‚È‚¢ƒoƒOC³B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñ‚ªŽ¡‚Á‚½‚Í‚¸‚Å‚·B‘½•ª...) + skill.c C³B + clif.c C³B + +-------------- +//0525 by Ž€_ + +Edmotion‚̊Ԃ̓Lƒƒƒ‰‚ª“®‚©‚È‚¢‚悤‚É•ÏXB(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB) +EƒƒeƒI‚̃_ƒ[ƒW•\Ž¦ƒ^ƒCƒ~ƒ“ƒOC³B(‚µ’x‚¢‹C‚à‚µ‚Ü‚·‚ª...) +EƒoƒbƒNƒXƒ‰ƒCƒfƒBƒ“ƒO‚ÌŽž‚Ƀ‚[ƒVƒ‡ƒ“‚ªo‚é‚悤‚É•ÏXB(ƒXƒLƒ‹Žg—pŒã +0.2•bŒã‚ɃXƒLƒ‹Žg—pƒpƒPƒbƒg‚ð‘—‚é‚悤‚É•ÏX‚µ‚Ü‚µ‚½Bƒ‰ƒO“™‚É‚æ‚Á‚Ä•Ï‚È“®ì‚ð‚·‚é‰Â”\«‚à‚ ‚è‚Ü‚·B) +E0524‚ÌC³B +EƒnƒCƒfƒBƒ“ƒO‚µ‚Ä‚¢‚鎞Ž©‘R‰ñ•œ‚µ‚È‚¢‚悤‚É•ÏXB +E0519‚ÅŠÔˆá‚Á‚½conf‚ÌC³‚Æׂ©‚¢ŠC³B + map.h + struct map_session_data‚Ìcanmove_tick‚ðcanact_tick‚É•ÏXB + skillcanmove_tick‚ðcanmove_tick‚É•ÏXB + skill.c C³B + pc.c C³B + pc.h C³B + clif.c C³B + battle.c C³B + battle.h C³B + mob.c C³B + mob.h C³B + char_athena.conf C³B + map_athena.conf C³B + +-------------- +//0524 by huge + +Eƒ[ƒO ƒgƒ“ƒlƒ‹ƒhƒ‰ƒCƒuŽÀ‘• + clif.c + clif_parse_WalkToXY() + pc.c + pc_calcstatus() + + ‚Ç‚Ì‚‚ç‚¢‘¬“xŒ¸‚·‚é‚Ì‚©•ª‚©‚ç‚È‚©‚Á‚½‚Ì‚ÅAŽb’è“I‚É + speed += speed * (20-ƒXƒLƒ‹ƒŒƒxƒ‹)/40 + ‚ÆA‚µ‚Ü‚µ‚½B–{ŽIŽd—l‚ª•ª‚©‚é•û‹‚Ü‚µ‚½‚çC³‚¨Šè‚¢‚µ‚Ü‚·B + +-------------- +//0523 by NOCTURNE + +Enpc_event_rental.txt‚ɃNƒ‹ƒZƒCƒ_[—p‚̃yƒRƒyƒRŠÇ—•º‚ð’ljÁ +-------------- +//0522 by ”g˜Q + +Emob_db.txt‚ðƒWƒ…ƒm[Œã‚̃f[ƒ^‚ÉC³ + +-------------- +//0521 by ŒÓ’±—– + +EmapƒT[ƒo[‚ÉŒq‚ª‚ç‚È‚¢–â‘è‚ðC³ + clif.c + clif_parse()‚ÌC³ + +-------------- +//0520 by ŒÓ’±—– + +EcharƒT[ƒo[ƒƒO‚Ìuset map X.Y HOGE.gatv‚ª•\Ž¦‚³‚ê‚È‚‚È‚è‚Ü‚µ‚½ + •Ï‚í‚è‚ÉAuset map M from XX.YY.ZZ.WW:PP (CC maps)v + ‚Æ‚¢‚¤‚Ó‚¤‚ɉ½ŒÂ‚̃}ƒbƒv‚ðƒZƒbƒg‚µ‚½‚©‚¾‚¯‚ð•\Ž¦‚·‚é‚悤‚É‚È‚è‚Ü‚·B + + char/char.c + parse_frommapC³ + +E•¡”mapƒT[ƒo[‚ɉ¼‘Ήž + ENPC‚̃}ƒbƒvƒT[ƒo[•Ï”‚ÍŽIŠÔ‚Å‚Í‹¤—L‚³‚ê‚Ü‚¹‚ñB‹¤—L‚·‚ׂ«•Ï”‚ð + Ž‚ÂNPC‚ª‚¢‚éƒ}ƒbƒv“¯Žm‚Í“¯‚¶mapƒT[ƒo[‚Å“®‚©‚·‚ׂ«‚Å‚·B + ‚¨‚»‚ç‚PC‚̃Oƒ[ƒoƒ‹•Ï”‚Í‹¤—L‚Å‚«‚é‚ÆŽv‚¢‚Ü‚·(–¢ƒeƒXƒg) + EŽb’è“I‚É“®‚‚悤‚É‚µ‚½‚¾‚¯‚È‚Ì‚ÅA•s“s‡‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + “Á‚ÉAƒp[ƒeƒB/ƒMƒ‹ƒh/‘qŒÉ/ƒyƒbƒg/Wis‚È‚Ç‚ÌinterƒT[ƒo[‚ðŽg‚¤‹@”\‚ª + ³‚µ‚ì“®‚·‚é‚©‘S‚ƒ`ƒFƒbƒN‚µ‚Ä‚¢‚Ü‚¹‚ñB + Eurecv map on XX.YY.ZZ.WW:PP (CC maps)v‚Æ‚¢‚¤ƒƒO‚ª•\Ž¦‚³‚ê‚Ü‚·B + ‚±‚ê‚Í‘¼‚ÌmapƒT[ƒo[‚ª’S“–‚·‚éƒ}ƒbƒv‚̃ŠƒXƒg‚ªA‚±‚ÌmapƒT[ƒo[‚É + ³í‚ÉŽóM‚³‚ꂽ‚Æ‚¢‚¤ˆÓ–¡‚Å‚·B + + (char/) + char.c/char.h + parse_frommap()C³ + mapif_sendallwos()’ljÁ + (map/) + map.c/map.h + map_setipport()‚ðC³ + struct map_session_data‚Ìstateƒƒ“ƒo‚Éwaitingdisconnect’ljÁ + chrif.c/chrif.h + FX’ljÁ + clif.c + waitingdisconnect‚ª‚P‚È‚çƒpƒPƒbƒg‚𖳎‹‚·‚é‚悤‚É‚µ‚½ + pc.c + pc_setpos()C³iƒ}ƒbƒvƒT[ƒo[•ÏXˆ—‚È‚Çj + pc_setnewpc()C³ + +-------------- +//0519 by Ž€_ + +EƒT[ƒo[snapshot‚ÆFXC³B +EŽ€‚ñ‚¾ƒLƒƒƒ‰‚ÉUŒ‚‚ª“–‚½‚éƒoƒOC³B(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB–{“–‚ÉŽ¡‚Á‚½‚©‚Ç‚¤‚©•ñ‚¨Šè‚¢‚µ‚Ü‚·B) +E0517‚̃AƒCƒXƒEƒH[ƒ‹‚̈—‚ð‚µ•ÏXB +EƒƒeƒI‚ðƒ‚ƒ“ƒXƒ^[‚àŽg‚¦‚é‚悤‚É•ÏXB(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñB•ñ‚¨Šè‚¢‚µ‚Ü‚·B) ‚Å‚à‚¿‚å‚Á‚ƃƒ‚ƒŠ[‚ÌŽg—p—Ê‚ª‘‚¦‚Ü‚µ‚½B(–ñ10M’öオ‚é‚悤‚Å‚·B) +Eƒ{ƒX‚ÌŽæ‚芪‚«‚ªƒ{ƒX‚ƈê‚És“®‚·‚é‚悤‚É•ÏXB(ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñ‚Ì‚Å‚Ç‚ñ‚È“®‚«‚ð‚·‚é‚©‚ÍŠm”F‚µ‚Ä‚Ü‚¹‚ñBUŒ‚‚àŽó‚¯‚Ä‚È‚¢‚̂Ƀ{ƒX‚ׂ̗©‚矎è‚É—£‚ê‚é‚©‚Ç‚¤‚©‚ÌŠm”F‚ð‚¨Šè‚¢‚µ‚Ü‚·B) +E‚»‚Ì‘¼×‚©‚¢•¨C³B + client-packet.txt C³B + map.h + AREA_SIZE‚ð15‚©‚ç20‚É•ÏXB + struct map_session_dataAstruct mob_dataAstruct skill_timerskill C³B + map.c + map_quit() C³B + clif.h + clif_changemapcell() C³B + clif.c + clif_getareachar_skillunit()Aclif_clearchar_skillunit()Aclif_changemapcell() C³B + skill.c + skill_unitsetting()Askill_unit_onlimit()Askill_castend_pos2() C³B + skill_castend_nodamage_id()Askill_check_condition()Askill_attack() C³B + skill_timerskill()Askill_addtimerskill()Askill_cleartimerskill() C³B + ‚»‚Ì‘¼‚µC³B + skill.h + skill_addtimerskill()Askill_cleartimerskill() C³B + pc.c + pc_movepos()Apc_walk()Apc_authok() C³B + mob.c + mob_spawn_dataset()Amob_spawn() C³B + mob_changestate()Amob_damage() C³B + mob_ai_sub_hard_mastersearch()Amob_ai_sub_hard() C³B + ‚»‚Ì‘¼‚µC³B + battle.c + battle_calc_weapon_attack()Abattle_weapon_attack() C³B + ‚»‚Ì‘¼‚µC³B + +-------------- +//0518 by Kalen +EEvent_pumpkinŠÖ˜A‚̃tƒ‰ƒO•s‹ï‡C³ + +-------------- +//0517 by Ž€_ + +EƒAƒCƒXƒEƒH[ƒ‹‚Å ‚蔲‚é–â‘èC³‚Æ‚µC³B(M‚³‚ñƒpƒPƒbƒg‚Ì’ñ‹Ÿ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B) + clif.h + clif_changemapcell() ’ljÁB + clif.c + clif_changemapcell() ’ljÁB + skill.h + SC_STEELBODY‚ð84‚©‚ç87‚É•ÏXB + skill.c + skill_unitsetting()Askill_unit_onlimit() C³B + skill_status_change_end()Askill_status_change_start() C³B + client_packet.txt C³B + +-------------- +//0516 by Ž€_ + +Eƒ‚ƒ“ƒXƒ^[‚̃ƒeƒI‚É‚æ‚éŽIƒ_ƒEƒ“‚ð—ÕŽž‚É–h‚¢‚Å’u‚«‚Ü‚µ‚½B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB) ƒ‚ƒ“ƒXƒ^[‚̃XƒLƒ‹‚ɂ‚¢‚Ä‚¿‚å‚Á‚Æ•ªÍ•s‘«‚Å‚·‚Ì‚Å•ªÍ‚µ‚½Œã‚ÉC³‚µ‚Ä’u‚«‚Ü‚·B +EƒXƒLƒ‹Žw’e‚ÌŽd—l‚ðbattle_athena.conf‚ÅŒˆ‚ß‚é‚悤‚É•ÏXB(0515‚Ì•¨‚ª‚¿‚å‚Á‚Æ‚à‚Á‚½‚¢‚È‚©‚Á‚½‚Ì‚Å...) + skill.c + skill_castend_pos2() C³B + battlc.hAbattle.c + battle_config‚Éfinger_offencive_type ’ljÁB + battle_calc_weapon_attack() C³B + battle_athena.conf C³B + conf_ref.txt C³B + +-------------- +//0515 by Ž€_ + +EƒXƒLƒ‹ƒƒeƒI‚ÆŽw’eC³‚ƃpƒPƒbƒgC³A0512‚Ì—Ž‚Æ‚µ•¨C³‚Æ‚µ‚¾‚¯‚ÌŽd—l•ÏX‚Å‚·B +EŽw’e‚Ìê‡à–¾‚ðŒ©‚Ä‚±‚ñ‚ÈŠ´‚¶‚©‚È‚ÆŽv‚Á‚Äì‚Á‚½•¨‚Å‚·BˆÈ‘O‚Ì•¨‚ª–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚Ȃ猳‚É–ß‚µ‚Ü‚·B +EƒƒeƒI‚Ì1”‚͈̔͂Í5*5ƒZƒ‹(range = 2)‚Å‚·B +EƒAƒCƒeƒ€Žg—pƒpƒPƒbƒg‚ðV‚µ‚¢•¨‚É•ÏX‚µ‚½‚ªƒGƒtƒFƒNƒg‚ªo‚È‚¢•¨‚Ío‚È‚¢‚悤‚Å‚·B(FXƒGƒtƒFƒNƒg‚ª“ü‚Á‚Ä‚¢‚é‚Ý‚½‚¢‚¾‚©‚çŒã‚ÍŽg‚Á‚ÄŠm”F‚Å‚·‚¯‚Ç‚ËB) +E0512‚Åhitrate‚ª10000ˆÈã‚Å•K’†‚Å‚Í‚È‚100000ˆÈã‚Å•K’†‚Å‚·‚̂ŃR[ƒh‚ÌC³‚Ì‚³‚¢‚É‚Í‹C‚ð‚Á‚‚¯‚Ä‚‚¾‚³‚¢B +Ebattle_athena‚Éݒ肳‚ê‚Ä‚¢‚é•Ší‚Ì»‘¢—¦‚ƃyƒbƒg‚̕ߊlŠm—¦‚ÌŒvŽZ•û–@‚ð‚µ•Ï‚¦‚Ü‚µ‚½B(‹C‚É‚·‚é•K—v‚à‚È‚¢•¨‚Å‚·‚¯‚Ç‚ËB) + skill.h + skill_addtimerskill()Askill_cleartimerskill ’ljÁB + skill.c + skill_attack() fixAskill_use_id()Askill_use_pos() C³B + skill_castend_damage_id()Askill_castend_nodamage_id() C³B + skill_timerskill()Askill_addtimerskill()Askill_cleartimerskill ’ljÁB + skill_castcancel()Askill_castend_pos2()Askill_unitsetting() C³B + skill_produce_mix()Ado_init_skill() C³B + mob.c + mob_damage() C³B + battle.c + battle_calc_weapon_attack() C³B + map.h + struct skill_timerskill ’ljÁB + struct map_session_data C³B + map.c + map_quit() C³B + pc.c + pc_authok() C³B + pc_damage() C³B + clif.c + clif_parse_WalkToXY() C³B + clif_useitemack() C³B(Ž‘—¿’ñ‹Ÿ: Kalen‚³‚ñ) + pet.c + pet_catch_process2() C³B + skill_db.txt + ‹CŒ÷‚ÌSP‚ð10‚É•ÏXB(ƒlƒbƒg‚ÌŒŸõ‚Å‚Í10‚¾‚Á‚½‚Ì‚Å•ÏX‚µ‚Ü‚µ‚½BŠØ‘‘ ‚Å‚Í15‚Æ•\Ž¦‚³‚ê‚Ü‚·‚ª...) + client_packet.txt + 01c8‚Ì•ÏX‚Å‚·BKalen‚³‚ñî•ñ’ñ‹Ÿ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·B + +-------------- +//0514 by Kalen + +EscriptC³+’ljÁ + + conf/npc_event_pumpkin.txt (V‹K)ƒJƒ{ƒ`ƒƒƒCƒxƒ“ƒg + conf/npc_town_guide.txt (C³)Juno‚Ìu+vƒAƒCƒRƒ“ƒJƒ‰[C³ + conf/npc_town_lutie.txt (ˆê•”’ljÁ)ƒJƒ{ƒ`ƒƒƒCƒxƒ“ƒg‚ɉe‹¿‚·‚éNPC‚̉ï˜b’ljÁ + +-------------- +//0513 by RR + +E“]EŽž‚É‘•”õ‚ª‘S‚ÄŠO‚ê‚é‚悤‚É‚µ‚Ü‚µ‚½BŠÖ”ˆÊ’u‚Ì•ÏX‚µ‚Ä‚È‚¢‚Ì‚ÅA‚Ђå‚Á‚Æ‚µ‚½‚炨‚©‚µ‚‚È‚Á‚Ä‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB‚¤‚¿‚̊‹«(win2k cygwin)‚Å‚Í•½‹C‚Å‚µ‚½‚Ì‚Å‚»‚Ì‚Ü‚Ü‚É‚µ‚Ä‚ ‚è‚Ü‚·BB +Eƒm[ƒrƒXŽž‚ÌŽ€–S‚Å‚ÍAÅ‘åHP‚Ì‚Q•ª‚Ì‚P‚Å•œŠˆ‚Å‚«‚é‚悤C³B(ƒXƒLƒ‹‚É‚æ‚é•œŠˆ‚Í–¢Šm”F) +EƒfƒXƒyƒiƒ‹ƒeƒB‚É‚æ‚éŒoŒ±’lŒ¸‚ð’ljÁBbattle_athena.conf‚É‚ÄAŒ¸—¦‚ð•ÏX‚Å‚«‚é‚悤‚ÉÝ’èBŒ¸‚éŒoŒ±’l‚ͬ”“_ˆÈ‰ºØ‚èŽÌ‚Ä‚È‚Ì‚ÅA•K—vŒoŒ±’l‚ª’á‚¢‚¤‚¿‚É‚Í‚¿‚傤‚Ç‚»‚Ì“•ªˆø‚©‚ê‚é‚Æ‚¢‚¤•—‚É‚Í‚È‚è‚Ü‚¹‚ñB + battle.h + Battle_Config‚Édeath_penalty_base‚Ædeath_penalty_job‚ð’ljÁB + battle.c + battle_config_read‚Ådeath_penalty_base‚Ædeath_penalty_job‚ð“ǂނ悤‚ÉC³B + pc.c + pc_makesavestatus() C³B + pc_damege() C³B + pc_jobchange() C³B + battle_athena.conf + death_penalty_base,death_penalty_job’ljÁB + +-------------- +//0512 by Ž€_ + +E–â‘è‚É‚È‚è‚»‚¤‚È•”•ª‚ÌC³‚ÆV‚µ‚¢ƒpƒPƒbƒg‚̑Ήž‚ªƒƒCƒ“‚Å‚·BŒãƒoƒO‚à‚µŽ¡‚µ‚Ü‚µ‚½B(“®‚¯‚È‚¢ó‘ÔˆÙí‚É‚È‚Á‚Ä‚à“®‚–â‘è‚ÌC³“™‚Å‚·B) + athena.sh C³B(‚¢‚‚àŽI‚ðŒÂ•Ê‚ÉŽÀs‚µ‚Ä‚¢‚½‚Ì‚Å‹C‚ª‚‚«‚Ü‚¹‚ñ‚Å‚µ‚½B) + makefile + DPACKETVER‚ð2‚©‚ç3 ‚ÉC³BƒWƒ…[ƒmˆÈŒã‚Ì‘ ‚ðŽg‚¤‚Ì‚È‚ç3‚É‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B(‚»‚̈ȑO‚È‚ç2‚©1) + clif.c + DPACKETVER=3‚ɑΉž(¡‚ÌŠ0x114‚ð0x1de‚É•ÏŠ·‚Æ0x11f‚ð01c9‚É•ÏŠ·‚·‚é‚̂ݑΉž) + clif_skill_damage3() íœB + clif_skillcastcancel() ’ljÁB + clif_skill_damage()Aclif_getareachar_skillunit()Aclif_skill_setunit() C³B + clif_fixmobpos()Aclif_fixpetpos()Aclif_fixpcpos() C³B + ‘¼‚É‚µC³B + clif.h + clif_skill_damage3() íœB + clif_skillcastcancel() ’ljÁB + battle.c + battle_calc_weapon_attack() C³B + hitrate‚ð10000ˆÈã‚É‚·‚ê‚ΕK’†‚É‚È‚é‚悤‚É•ÏXB(¡‚ÌŽd—l‚ł̓‚ƒ“ƒXƒ^[‚Ì•K’†UŒ‚ˆÈŠO‚Í•K’†‚É‚È‚è‚Ü‚¹‚ñB) + ‘¼‚É‚µC³B + client_packet.txt + V‚µ‚¢ƒpƒPƒbƒgî•ñ’ljÁB + pc.c + pc_spiritball_timer()Apc_delspiritball() C³B + pc_damage()Apc_skill() C³B + skill.h + SC_EXPLOSIONSPIRITS‚ð89‚©‚ç86‚É•ÏXB(86 = 0x56) + SC_DELUGE‚ð86‚©‚ç89‚É•ÏXB + skill.c + skill_castcancel()Askill_use_id()Askill_use_pos() C³B + skill_check_condition() C³B + skill_castend_damage_id()Askill_castend_nodamage_id C³B + skill_status_change_end()Askill_status_change_start() C³B + skill_db.txt + ‹CŒ÷‚ÌÁ”ïSP‚ðC³B(‘O‚Ì15‚ª–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚Ý‚½‚¢‚Å‚·‚Ì‚Å...) + mob.c + mobskill_use_id()Amobskill_use_pos() C³B + map.c + map_quit() C³B + atcommand.h + atcommand.c + @ƒRƒ}ƒ“ƒh@spiritball’ljÁB(‹@”\‚ÍŽg‚¦‚΂킩‚è‚Ü‚·B‚½‚¾1000ˆÈã‚Í“ü‚ê‚È‚¢•û‚ª‚¢‚¢‚Å‚·B‘ ‚ªƒpƒ“ƒN‚µ‚Ü‚·‚Ì‚Å...) + atcommand_athena.conf + C³B + conf_ref.txt + C³B +E0x196ƒpƒPƒbƒg‚ÉV‚µ‚¢•¨‚ª’ljÁ‚³‚ê‚Ä‚¢‚é‚Ì‚Åó‘ԕω»‚É’¼Ú‚ÉŠÖŒW‚È‚¢SC_xxxx‚̔Ԇ‚ð’²®‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B(¡‚ÍSC_EXPLOSIONSPIRITS‚É‚¾‚¯‘Ήž‚µ‚Ü‚µ‚½B) ‚»‚ê‚Æskill_status_change_end()Askill_status_change_start()‚Åclif_status_change()‚ðŒÄ‚Ôtype‚͈̔͂ª64(0x40)–¢–ž‚É‚È‚Á‚Ä‚¢‚邪‚»‚ê‚à’ljÁ‚³‚ê‚Ä‚¢‚镨‚ɇ‚킹‚ÄC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚·‚ª’ljÁ‚³‚ê‚Ä‚¢‚镨‚ª‘S‚Ä‚í‚©‚Á‚½‚킯‚Å‚à‚È‚¢‚Ì‚ÅSC_EXPLOSIONSPIRITS‚É‚¾‚¯‘Ήž‚µ‚Ü‚µ‚½B¡“x‚©‚ç‚Í”š—ô”g“®‚̉𜂪³Šm‚ÉŒ©‚¦‚Ü‚·B‹à„‚̓f[ƒ^‚ðŒ©‚Â‚¯‚ç‚ê‚Ü‚¹‚ñ‚Å‚µ‚½B +¦V‚µ‚¢ƒpƒPƒbƒg‚ɑΉž‚·‚éì‹Æ‚ð‚µ‚Ä‚¢‚Ü‚·‚ªî•ñ‚ª•s‘«‚Å‚·B +ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚âƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚̃GƒtƒFƒNƒg‚ªo‚é‚悤‚É‚·‚éˆ×‚É01c8‚ðŽg‚Á‚Ä‚Ý‚Ü‚µ‚½‚ª‘Ê–Ú‚Å‚µ‚½Bclient_packet.txt‚̃f[ƒ^‚ł͉½‚à‹N‚±‚ç‚È‚¢‚̂ʼn½•û‚ª–{ŽI‚ŃCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚âƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚ðŽg‚Á‚½Žž‚̃pƒPƒbƒg‚ð’ñ‹Ÿ‚µ‚Ä‚‚ê‚Ü‚¹‚ñ‚©HS 00a7‚ÌŒã00a8‚ª—ˆ‚é‚Ì‚©‚»‚ê‚Æ‚à01c8‚ª—ˆ‚é‚Ì‚©‚ÌŠm”F‚Æ00a8‚ÌŒã‚É01c8‚ª—ˆ‚é‚Ì‚©‚ÌŠm”F‚ª‚Å‚«‚ê‚Ή½‚Æ‚©‚È‚é‚ÆŽv‚¢‚Ü‚·‚ª... +‚»‚ê‚Æ01c9‚ÌŒã‚É—ˆ‚é?.81b‚ª‚í‚©‚ê‚΃AƒCƒXƒEƒH[ƒ‹‚ð ‚蔲‚é–â‘è‚à‰ðŒˆ‚Å‚«‚é‚ÆŽv‚¢‚Ü‚·‚ª... +î•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B + +-------------- +//0511 by Diex + +EŽw’e‚ÌUŒ‚‰ñ”C³B +Eˆ¢C—…”e–PŒA”™¤‚ªC—û‚𖳎‹‚µA–³‘®«‚É‚È‚é‚悤‚ÉC³B +E‹à„Žg—pŽžAMDEF‚ª³‚µ‚•\Ž¦‚³‚ê‚Ä‚È‚©‚Á‚½ƒoƒO‚ðC³B +E‹CŒ÷‚ÌÁ”ïSP‚ðC³B + pc.c + pc_calcstatus() C³B + battle.c + battle_calc_weapon_attack() C³B + skill.c + skill_check_condition() C³B + + skill_db.txt C³B + +-------------- +//0510 by Diex + +EŽO’i¶‚Ì•\Ž¦ƒoƒOC³ +EŽw’e‚ª‹C’e‚ª–³‚‚Ä‚àŒ‚‚Ä‚éƒoƒO‚ðC³ + map.h + struct map_session_data‚Éspiritball_old•Ï”’ljÁB + skill.c + skill_check_condition() C³B + clif.c + clif_skill_damage3() C³B + battle.c + battle_weapon_attack()Abattle_calc_weapon_attack C³B + +-------------- +//0509 by + +Enpc_warp.txt + ƒvƒé¨ƒvƒƒtƒB[ƒ‹ƒh‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðA + ƒvƒé¨ƒ”ƒ@ƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚ÉC³B + ƒvƒƒtƒB[ƒ‹ƒh¨ƒvƒé‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðƒvƒƒtƒB[ƒ‹ƒh¨ƒ”ƒ@ƒ‹ƒLƒŠ[ƒŒƒ‹ƒ€‚ÉC³ + +-------------- +//0508 by Ž€_ + +EƒoƒOC³‚Æ‘§A‹CŒ÷A‹C’D‚ÌC³‚ªƒƒCƒ“‚Å‚·B(¡“x‚©‚ç‚Í‘¼‚Ìl‚É‚à‹C‚ª‚¿‚á‚ñ‚ÆŒ©‚¦‚Ü‚·B) +EŽ€‚ñ‚¾ƒLƒƒƒ‰‚ÉŒoŒ±’l‚ª“ü‚é–â‘èC³B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB‚Ç‚¤‚È‚Ì‚©•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B) + pc.h + pc_addspiritball()Apc_delspiritball() ’ljÁB + pc_is50overweight() C³B + pc.c + pc_gainexp() C³B + pc_insert_card()Apc_item_identify() C³B(‘債‚½C³‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ª...) + pc_authok() C³B + pc_addspiritball()Apc_delspiritball() ’ljÁB + pc_spiritball_timer() ’ljÁB + do_init_pc()Apc_calcstatus()C³B + pc_spirit_heal() ’ljÁB + pc_natural_heal()‚ÉŠÖ‚í‚镨‚ÌC³B + map.h + struct map_session_data C³B + map.c + map_quit() C³B + map_addflooritem() C³B + clif.h + clif_spiritball_int()‚ðclif_spiritball()‚É•ÏXB + clif_spiritball_ext() íœB + clif.c + clif_spiritball_int() ‚ðclif_spiritball()‚É•Ï‚¦‚ÄC³B + clif_spiritball_ext() íœB + clif_set01e1() ’ljÁB + clif_getareachar_pc() C³B + skill.h + SC_CALLSPIRITS íœB + skill.c + SC_CALLSPIRITS íœB + skill_castend_nodamage_id()Askill_check_condition() C³B + skill_status_change_start() C³B +E°‚É—Ž‚¿‚½ƒAƒCƒeƒ€‚ªÁ‚¦‚é‚Ü‚Å‚ÌŽžŠÔ‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB + battle.hAbattle.c + battle_config_read() C³B + conf_ref.txt C³B + battle_athena.conf C³B + +-------------- +//0507 by Diex +0505‚ÌC³ +EŽO’i¶‚̃GƒtƒFƒNƒgŽÀ‘• + +-------------- +//0506 by hoenny +‘S‘Ì“I‚É‚µŽ®C³ +ƒZƒCƒW‚̃XƒLƒ‹‚ªƒAƒCƒeƒ€‚ðÁ–Õ‚·‚é‚悤‚ÉC³ +(ƒXƒLƒ‹‚ÌDB‚É zeny, spiritball, item, equip‚ð“ü‚ꂽ‚¢‚ªŽžŠÔ‚ª‚È‚‚Ä—ÕŽž“I‚É ...) + +-------------- +//0505 by Diex + +Eˆ¢C—…”e–PŒ‚̃_ƒ[ƒWC³ +E–Ò—´Œ‚̃_ƒ[ƒWC³ +EŽw’eŽÀ‘• +E”™¤ŽÀ‘• +E‹à„‚ªŒ¸ŽZDEF‚ÆŒ¸ŽZMDEF‚ª90‚ɌŒ肳‚ê‚Ä‚¢‚½‚Ì‚ðæŽZDEF‚ÆæŽZMDEF‚ª90‚É‚È‚é‚悤‚ÉC³ +EŽO’i¶ŽÀ‘•i‚½‚¾‚µƒRƒ“ƒ{‚Í–¢ŽÀ‘•j + map/clif.c + map/clif.h + clif_skill_damage3()’ljÁ + map/pc.c + map/skill.c + map/battle.c + C³E‹y‚ђljÁ +iŒvŽZŽ®‚Í+ Acolyte Maniax +‚ðŽQl‚É‚µ‚Ü‚µ‚½Bj + +-------------- +//0504 by Ž€_ + +Eatcommand.c C³B(‚½‚Á‚½2•¶Žš‚ð’ljÁ‚µ‚½‚¾‚¯‚Å‚·B) +atcommnad_gm_only‚ªno‚¶‚á‚È‚‚Ä‚àŽg—pƒŒƒxƒ‹Ý’è‚ð0‚É‚µ‚½ƒRƒ}ƒ“ƒh‚ÍGM‚¶‚á‚È‚¢ƒLƒƒƒ‰‚Å‚àŽg‚¦‚Ü‚·BƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB + +-------------- +//0503 by nabe + +E¸˜BC³‚ÆLinux—p‚É‚¿‚å‚Á‚Æ•ÏX‚È‚Ç + conf/map_athena.conf + npc_event_doll.txt, + npc_turtle.txt, + //npc_pota.txt€–ڒljÁ + conf/npc_pota.txt’ljÁisocie‚³‚ñì‚̃_ƒ“ƒWƒ‡ƒ“ƒ|ƒ^Žq‚³‚ñj + conf/npc_shop.txt + ƒCƒYƒ‹[ƒh•Ší¤l‚̉¿ŠiC³ + conf/script_athena.conf + 0499‚Å‚Ì•¶Žš‰»‚¯HC³ + login/login.c + #include <time.h>’ljÁ + map/script.c + buildin_getequipname() + ¸˜Bƒƒjƒ…[‚Ìmalloc‚ðC³ + buildin_getequipisenableref() + ¸˜B‰Â”\ðŒC³iAthefans‚³‚ñ‚ÌðŒ•¶‚É‚µ‚Ä‚Ý‚Ü‚µ‚½j + map/skill.c + skill_check_condition()•Ï”錾ˆÊ’u‚Ì•ÏX‚Ì‚Ý + +-------------- +//0502 by Ž€_ + +EƒJƒvƒ‰‚Ì‘qŒÉ‚àbattle_athena.conf‚Ìbasic_skill_check‚É‚æ‚Á‚ÄŠî–{ƒXƒLƒ‹‚ª‘«‚è‚È‚‚Ä‚àŽg—p‚·‚邱‚Æ‚ª‚Å‚«‚é‚悤‚ÉC³‚µ‚Ü‚µ‚½B(ƒvƒƒ“ƒeƒ‰’†‰›‚̃Jƒvƒ‰‚Ì‚ÝŠm”FB) +EƒNƒFƒXƒgƒXƒLƒ‹‚̎擾‚Í0492‚Ì‚¹‚¢‚Å‚·B0481‚Éskill‚ÌŌオ,2‚¶‚á‚È‚,0‚¾‚Æ‘‚¢‚½‚Ì‚Å‚·‚ª‰½ŒÌ‚©0492‚Å,2‚É‚È‚Á‚Ä‚¢‚½‚Ì‚Å,0‚ÉC³‚µ‚Ü‚µ‚½B +EƒXƒNƒŠƒvƒggetbaseskillcheck‚ðbaseskillcheck‚É•ÏX‚ÆŽ©•ª‚ÅC³‚µ‚Ü‚µ‚½‚ª–½—ß‚ÌŒã‚É‚È‚ñ‚Ì”’l‚à“ü‚ç‚È‚¢ê‡‚̓XƒNƒŠƒvƒg‚ª³‚µ‚ì“®‚µ‚È‚©‚Á‚½‚Ì‚ÅŽg—p‚·‚éꇂÍbaseskillcheck(0)‚É‚µ‚ÄŽg‚í‚È‚¢‚Ƴ‚µ‚¢Œ‹‰Ê‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB +(Ú‚µ‚‚Ínpc_town_kafra.txtŽQÆB) + npc_event_skillget.txt C³B + npc_town_kafra.txt C³B + script.c C³B +EGM_account.txt‚ÉŽ©•ª‚ªƒeƒXƒg‚ׂ̈Ɏg‚Á‚Ä‚¢‚½500000‚ª“ü‚Á‚Ä‚¢‚½‚Ì‚Å휂µ‚Ü‚µ‚½B(GM_account.txtì‚Á‚½——R‚ÍŽ©•ªŸŽè‚ɃAƒJƒEƒ“ƒg‚ðGM‚É‚·‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚·‚éˆ×‚Å‚·B‚‚܂èGM‚Æ‚µ‚Ä•\Ž¦‚³‚ê‚È‚‚Ä‚àGM‚Æ‚µ‚ÄF‚ñ‚ÈŒ ŒÀ‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚³‚·‚ª‚ÉGMê—p‚̉EƒNƒŠƒbƒNƒRƒ}ƒ“ƒh‚ÍŽg‚¦‚Ü‚¹‚ñ‚ª... ‚Å‚à‚±‚ê‚ðŠˆ—p‚µ‚Ä‚¢‚é•û‚Í‚¢‚È‚¢‚Ý‚½‚¢‚È‚ñ‚Å‚·‚Ë...) + +-------------- +//0501 by hoenny + +E500‚Ì–â‘è“_C³ +-HP‰ñ•œ—ÍŒüã,SP‰ñ•œ—ÍŒüã + map/pc.c + pc_natural_heal_hp()C³ + pc_natural_heal_sp()C³ + +500SP‰ñ•œ—ÍŒüã +-------------- +//0500 by hoenny + +EC“¹‘m‚Ì‘§ŽÀ‘• +-Šî–{“I‚ÉÀ‚Á‚½Žž 10•b‚²‚Ƃɉñ•œ‚µ‚Ü‚·. +-ŠŽ—Ê‚ª 50%‚ðƒI[ƒo[‚µ‚½ê‡ 20•b‚²‚Ƃɉñ•œ‚µ‚Ü‚·. +EC“¹‘m‚Ì‹C’DŽÀ‘• +-‘¼‚ÌC“¹‘m‚ÌŸ†‹…‚à‹zŽû‚ª‰Â”\‚Å‚·. +EC“¹‘m‚Ì‹à„ŽÀ‘• +-‹à„ó‘Ô‚Å‚Í‚·‚ׂẴAƒNƒeƒBƒuƒXƒLƒ‹‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚È‚¢‚Å‚·. + db/skill_db.txt + ‹C’DC³ + ‹à„C³ + map/pc.h + pc_is50overweight()’ljÁ + pc_is90overweight()’ljÁ + map/pc.c + pc_calcstatus()C³ + pc_spheal()C³ + pc_hpheal()C³ + pc_natural_heal_hp()C³ + pc_natural_heal_sp()C³ + pc_natural_heal_sub()C³ + map/skill.c + skill_check_condition()C³ + skill_castend_nodamage_id()C³ + skill_status_change_start()C³ + +-------------- +//0499 by Ž€_ + +EƒT[ƒo[snapshot‚ƃoƒOC³B +EƒXƒeƒB[ƒ‹ƒRƒCƒ“‚̃[ƒj—Ê‚ðƒ‚ƒ“ƒXƒ^[ƒŒƒxƒ‹*10 + rand(100)‚É•ÏXB +EƒLƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚ª‚È‚¢ƒXƒLƒ‹‚̓^ƒCƒ}[‚ðŽg‚í‚È‚¢‚悤‚É•ÏXB +EƒJ[ƒh‚ÌŽg—p‚É‚æ‚éƒ}ƒbƒvŽIƒ_ƒEƒ“‚ð–h‚®ˆ×‚ÉC³B(¡“x‚±‚»Ž¡‚Á‚½‚Í‚¸...) ‚»‚µ‚ÄŠg‘勾‚à“¯‚¶‚悤‚È‚±‚Æ‚ª‚Å‚«‚é‚Ì‚ÅC³B(‚±‚ê‚ÍŽIƒ_ƒEƒ“‚Ü‚Å‚Í‹N‚±‚³‚È‚¢‚悤‚Å‚·‚ª...) +EƒLƒƒƒ‰‚Ƀ}ƒbƒv‚̃[ƒh‚ªI‚í‚é‚܂Ńyƒbƒg‚̃f[ƒ^‚ª—ˆ‚È‚¢‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚é–â‘èC³B(–Å‘½‚È‚±‚Æ‚ª‚È‚¢ŒÀ‚è‹N‚±‚ç‚È‚¢‚Å‚·‚¯‚Ç‚ËB) +EƒI[ƒgƒo[ƒT[ƒNAd‚³‚̃AƒCƒRƒ“‚ƃ`ƒFƒbƒN‚ª³‚µ‚“K—p‚³‚ê‚é‚悤‚ÉC³B +E‘‘¬ƒ|[ƒVƒ‡ƒ“‚Ì“K—p‡”Ô•ÏXB¡‚܂ł̓Xƒs[ƒhƒAƒbƒvƒ|[ƒVƒ‡ƒ“‚ªÅ—Dæ‚ÅŽŸ‚ªƒnƒCƒXƒs[ƒhƒ|[ƒVƒ‡ƒ“AŌオƒo[ƒT[ƒNƒ|[ƒVƒ‡ƒ“‚¾‚Á‚½‚Ì‚Å‚·‚ª‡”Ô‚ð‹t‚É•ÏX‚µ‚Ü‚µ‚½B +EƒAƒCƒeƒ€‚ÅŽg‚¤ƒXƒLƒ‹‚̓LƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚ƃfƒBƒŒƒC‚ª0‚É‚È‚é‚悤‚É•ÏXB +EƒAƒCƒeƒ€‚ÅŽg‚¤ƒXƒLƒ‹‚̃Œƒxƒ‹‚ªitem_db‚Éݒ肵‚Ä‚¢‚郌ƒxƒ‹‚æ‚è‚‚‚È‚éƒoƒOC³B + pc.h + pc_move()‚ðpc_movepos()‚É•ÏXB + pc.c + pc_steal_coin()Apc_insert_card()Apc_item_identify()Apc_authok()A + pc_calcstatus()Apc_checkweighticon()Apc_damage() C³B + skill.c + skill_castend_pos2()Askill_check_condition()Askill_use_id()A + skill_use_pos() C³B + pet.c + pet_recv_petdata()Apet_change_name() C³B + map.h + struct map_session_data‚Éskillitemlv ’ljÁB + script.c + buildin_itemskill() C³B + clif.c + clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos()A + clif_parse_LoadEndAck() C³B + mob.c + mobskill_use_id()Amobskill_use_pos() C³B + +-------------- +//0498 by hoenny + +DŸ†‹…‚ª‚·‚Á‚©‚茩‚¦‚é‚悤‚ÉC³(Á–ÕƒXƒLƒ‹Žg—p‚ÌŽžÁ–Õ‚·‚é‚悤‚ÉC³) +DƒXƒLƒ‹Žc‰e‚ðŽg—p‚ÌŽžŸ†‹…‚ðÁ–Õ‚·‚é‚悤‚ÉC³ + doc/client_packet.txt + 0x1d0’ljÁ + map/map.h + sd‚Ìstructure‚É spiritball’ljÁ + map/clif.h + clif_spiritball_del() -> clif_spiritball_int()C³ + clif_spiritball_cre() -> clif_spiritball_ext()C³ + map/clif.c + packet_len_table[]C³ + clif_spiritball_del() -> clif_spiritball_int()C³ + clif_spiritball_cre() -> clif_spiritball_ext()C³ + map/pc.h + pc_item_steal() -> pc_steal_item()C³ + pc_coin_steal() -> pc_steal_coin()C³ + map/pc.c + pc_item_steal() -> pc_steal_item()C³ + pc_coin_steal() -> pc_steal_coin()C³ + pc_calcstatus()C³ + map/skill.c + skill_check_conditon()C³ + +-------------- +//0497 by Ž€_ + +E0491‚̃XƒLƒ‹Žc‰e‚̃oƒOC³‚ƃXƒeƒB[ƒ‹‚ƃXƒeƒB[ƒ‹ƒRƒCƒ“AƒXƒiƒbƒ`ƒƒ[‚ÌC³Amob_target‚̃oƒOC³B +EŒðŠ·AÀ‚èAƒp[ƒeƒBŒ‹¬“™‚ÌŽž‚ÉŠî–{ƒXƒLƒ‹‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚ÉC³B(battle_athena.conf‚Ń`ƒFƒbƒN‚·‚é‚©‚Ç‚¤‚©‚ðŒˆ‚ß‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B) +‚½‚¾ƒJƒvƒ‰‚Ì‘qŒÉ‚̓XƒNƒŠƒvƒg‚ŧŒÀ‚ð‚©‚¯‚邵‚©‚ ‚è‚Ü‚¹‚ñB +EƒXƒNƒŠƒvƒggetbasicskillcheck’ljÁB + Žg—p•û–@„ getbasicskillcheck + –ß‚è’l‚Íbattle_athena.conf‚Ìbasic_skill_check‚Å‚·B0‚Ìꇂ͊î–{ƒXƒLƒ‹‚̃`ƒFƒbƒN‚È‚µ‚Å1‚Ìꇂ͊î–{ƒXƒLƒ‹‚ðƒ`ƒFƒbƒN‚·‚é‚Ì‚ðˆÓ–¡‚µ‚Ü‚·B + skill.c + skill_castend_pos2() C³B + skill_additional_effect() C³B + pc.c + pc_move() ’ljÁB + pc_item_steal()Apc_coin_steal() C³B + pc.h + pc_move() ’ljÁB + map.h + struct mob_data C³B + mob.c + mob_spawn() C³B + mob_target() C³B + clif.c + clif_pcinsight()Aclif_pcoutsight() C³B + clif_parse_ActionRequest()Aclif_parse_Emotion()A + clif_parse_TradeRequest()Aclif_parse_CreateParty()A + clif_parse_ReplyPartyInvite() C³B + battle_athena.conf C³B + conf_ref.txt C³B + skill_db.txt + ƒXƒeƒB[ƒ‹‚ÌŽË’ö‚ð3‚©‚ç1‚ÉC³B + battle.hAbattle.c + battle_config‚Ébasic_skill_check ’ljÁB + battle_config_read() C³B + trade.c + trade_traderequest() C³B + script.c + buildin_getbasicskillcheck() ’ljÁB + map/makefile C³B +¦ƒXƒeƒB[ƒ‹‚ƃXƒeƒB[ƒ‹ƒRƒCƒ“‚ÌŒvŽZŽ®‚Í“K“–‚Éì‚Á‚½•¨‚Å‚·B–{ŽI‚Ì•û‚ª‚Ç‚¤‚È‚Ì‚©‘S‘R‚í‚©‚ç‚È‚¢‚Ì‚Å... + + ƒXƒeƒB[ƒ‹—¦ = (ƒ‚ƒ“ƒXƒ^[‚̃AƒCƒeƒ€drop—¦ * (ƒLƒƒƒ‰ƒŒƒxƒ‹*0.5 + dex*0.4 +ƒXƒLƒ‹ƒŒƒxƒ‹*5))% + ƒXƒeƒB[ƒ‹ƒRƒCƒ“—¦ = (ƒXƒLƒ‹ƒŒƒxƒ‹ + (ƒLƒƒƒ‰ƒŒƒxƒ‹ - ƒ‚ƒ“ƒXƒ^[‚̃Œƒxƒ‹)*0.3 + dex*0.2 + luk*0.2)% + ƒXƒiƒbƒ`ƒƒ[”“®—¦ = (5.5 + ƒXƒLƒ‹ƒŒƒxƒ‹*1.5 +ƒXƒeƒB[ƒ‹‚̃XƒLƒ‹ƒŒƒxƒ‹)% + +–{ŽI‚ÌŒvŽZŽ®‚ª‚í‚©‚é•û‚Íî•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B +ƒXƒeƒB[ƒ‹ƒRƒCƒ“‚̃[ƒj‚̗ʂ̓‚ƒ“ƒXƒ^[‚̃Œƒxƒ‹*100‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚±‚ê‚ɂ‚¢‚Ä‚àî•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B +¦Žc‰e‚Ìꇎg‚Á‚½Œã•’Ê‚É•à‚‘O‚ɂ̓yƒbƒg‚Ì‘•”õ‚ªŒ©‚¦‚È‚¢ƒoƒO‚ª‚ ‚è‚Ü‚·‚ªŒ´ˆö‚ª‚í‚©‚ç‚È‚¢‚Ì‚Å•ú’u‚·‚邱‚Æ‚É‚µ‚Ü‚µ‚½B +¦Šî–{ƒXƒLƒ‹‚ª‘«‚è‚È‚¢Žžo‚郃bƒZ[ƒW‚Í–w‚LJ‚킹‚Ä‚¢‚Ü‚·‚ªƒp[ƒeƒB‚É“ü‚鎞‚ÉŠî–{ƒŒƒxƒ‹‚ª‘«‚è‚È‚¢Žž‚ɇ‚¤•¨‚ª‚È‚©‚Á‚½‚̂Ńp[ƒeƒB‚ðì‚ê‚È‚¢(Šî–{ƒXƒLƒ‹ƒŒƒxƒ‹7‚Ì•¨)‚Æ•\Ž¦‚µ‚ÄŠ©—U‚µ‚½•û‚É‚Í‹‘₳‚ꂽ‚Æ•\Ž¦‚³‚ê‚Ü‚·B + +-------------- +//0496 by hoenny + +DWZ‚̃ƒeƒIƒXƒg[ƒ€ŽÀ‘• +DƒXƒeƒB[ƒ‹ƒRƒCƒ“C³ + db/skill_db.txt + ƒƒeƒIƒXƒg[ƒ€C³ + map/pc.c + pc_coin_steal()C³ + map/skill.c + skill_castend_pos2()C³ + +-------------- +//495 by nini + +EAR‚ª•ÐŽè•€A—¼Žè•€‚Å‚µ‚©”“®‚µ‚È‚©‚Á‚½‚Æ‚±‚ëC³¨•ÐŽè•€A—¼Žè•€A“ÝŠí + map/skill.c + skill_check_condition()@C³ + +‘O‰ñC³‚Ì‚Æ‚«“ÝŠí“ü‚ê–Y‚ê‚Ä‚½‚悤‚Å‚·B + +-------------- +//0494 by Ž‚Žqo^.^o + +conf/mpc_warp.txt +Dƒnƒ“ƒ^ˆê“]E’no‚Ä‚¢‚È‚¢C³ + +-------------- +//0493 by ”g˜Q + +EscriptC³ + npc_town_comodo.txt ƒRƒ‚ƒhˆÄ“à—vˆõ•”•ª‚ðíœ(npc_town_guide.txt‚Æd•¡‚µ‚Ä‚¢‚½‚Ì‚Å) + npc_town_guide.txt ƒWƒ…ƒm[ˆÄ“à—vˆõ‚ð’ljÁ(viewpoint‚ÌF‚ªc) + npc_town_kafra.txt ƒWƒ…ƒm[ƒJƒvƒ‰•”•ª‚ðnpc_town_yuno.txt‚©‚çˆÚ“® + npc_town_refine.txt ƒWƒ…ƒm[¸˜BŠ•”•ª‚ðnpc_town_yuno.txt‚©‚çˆÚ“® + npc_town_yuno.txt ˆÄ“à—vˆõ‚ƃJƒvƒ‰‚Ƹ˜BŠ•”•ª‚ðíœ + npc_turtle.txt ‰ï˜b‚ð”÷C³ + +-------------- +//0492 by Kalen + +EscriptC³+’ljÁ + + conf/npc_event_doll.txt (V‹K) + conf/npc_turtle.txt (V‹K)‹T“‡ŠÖ˜ANPC+‹T“‡ƒNƒGƒXƒg(qŠC“úŽ)’ljÁ + + conf/npc_event_skillget.txt (C³)‰ž‹}ˆ’u‚Ì•s‹ï‡+‚Ö‚ñ‚Ètabíœetc.. + conf/npc_town_alberta.txt (C³)Turtle•ª—£A‚¿‚Ñ‚ÁŽqíœ(Event_doll‚ÖˆÚ“®) + conf/npc_town_guide.txt (C³)‘䎌‚ª‚©‚È‚è•ÏX‚³‚ê‚Ä‚¢‚½‚Ì‚ÅAC³ + + +-------------- +//0491 by Ž€_ + +EƒXƒLƒ‹Žc‰e(ŠØ‘ƒNƒ‰ƒCƒAƒ“ƒg‚Å‚Í‹|gœ[‰e)ŽÀ‘•B(‚½‚¾‹C’e‚̃`ƒFƒbƒN‚Í‚µ‚Ä‚Ü‚¹‚ñB) + pc.h + pc.c + pc_can_reach() ’ljÁB + skill.c + skill_check_condition()Askill_castend_pos2() C³B + skill_db.txt + Žc‰eC³B +Escript.c + set_posword() C³B +¦ˆêl‚ŃeƒXƒg‚ÍÏ‚ñ‚Å‚¢‚Ü‚·‚ª‘¼‚Ìl‚ɳ‚µ‚Œ©‚¦‚é‚©‚Ç‚¤‚©‚Í–¢Šm”F‚Å‚·B +•Ï‚È‚Ì‚©‚Ç‚¤‚©•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B + +-------------- +//0490 by nabe + +EꊃXƒLƒ‹ƒGƒtƒFƒNƒg‚Ń}ƒbƒvŽI‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚Á‚½‚Ì‚ðC³B + clif.c + clif_skill_poseffect()‚Ì + unsigned char buf[16];‚ðAunsigned char buf[32];‚ÉC³B + +-------------- +//0489 by Ž€_ + +E0483‚̃oƒOC³Bbattle_athena.conf‚Ìquest_skill_learn‚ª³‚µ‚“K—p‚³‚ê‚é‚悤‚É•ÏX‚Æ–â‘肪‚ ‚Á‚½•”•ª‚ÌC³B(ƒeƒXƒgÏ‚Ý) + pc.c + pc_calc_skilltree()Apc_skill() C³B + atcommand.c + @lostskill ‚µC³B +EƒJ[ƒh‚ÌŽg—p‚É‚æ‚éƒ}ƒbƒvŽIƒ_ƒEƒ“‚ð–h‚®‚½‚ß‚É‚µC³B(‚½‚¾ƒJ[ƒh‚ÌŽg—p‚É‚æ‚éƒ}ƒbƒvŽIƒ_ƒEƒ“‚ðÄŒ»‚Å‚«‚È‚©‚Á‚½‚Ì‚Å–{“–‚ÉŽ¡‚Á‚½‚©‚Ç‚¤‚©‚Í•s–¾...Š¾) + pc.c + pc_insert_card() C³B +Epc.h + pc_ishiding() C³B + +-------------- +//0488 by hoenny + +ERG‚̃XƒeƒB[ƒ‹ƒRƒCƒ“ŽÀ‘• +EƒXƒeƒB[ƒ‹C³ +(“ñƒXƒLƒ‹ŠFˆê“xƒXƒ`[ƒ‹‚µ‚½ê‡‚Ü‚½ƒXƒ`[ƒ‹‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢.‚»‚µ‚ăXƒLƒ‹¬Œ÷‚ÌŽžƒ‚ƒ“ƒXƒ^[‚ÍUŒ‚‚·‚é‚悤‚ÉC³‚µ‚½.ƒGƒtƒFƒNƒg‚ͬŒ÷‚ÌŽž‚¾‚¯o‚é‚悤‚ÉC³‚µ‚½.) + db/skill_db.txt + ƒXƒeƒB[ƒ‹ƒRƒCƒ“C³ + map/pc.h + pc_coin_steal()’ljÁ + map/pc.c + pc_coin_steal()’ljÁ + pc_item_steal()C³ + map/skill.c + skill_castend_nodamage_id()C³ + +-------------- +//0487 by hoenny + +E485‚Ì–â‘è“_‚¿‚å‚Á‚ÆC³ + map/pc.c + pc_item_steal()C³ + map/skill.c + skill_castend_nodamage_id()C³ + +-------------- +//0486 by Ž‚Žqo^.^o + +db/class_equip_db.txtC³ +—ô‚¯‚½‘å’n‚Ì‘A”R‚¦‚鑾—z‚Ì‘AŠ£‚¢‚Ä‚é•—‚Ì‘AàÒŽ¦˜^AƒvƒŠ[ƒXƒg‚Í‘•”õ‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢–â‘èC³ + +-------------- +//0485 by hoenny + +E RG‚̃Xƒiƒbƒ`ƒƒ[ŽÀ‘• +E ƒXƒeƒB[ƒ‹C³ +E ˜I“XŠJÝ‚ÌŽž skill_check_condition‚Åó‘Ô‚ðƒ`ƒFƒN‚·‚é‚悤‚ÉC³ + map/pc.h + pc_ishiding()’ljÁ + pc_item_steal()’ljÁ + map/pc.c + pc_item_steal()’ljÁ + map/skill.c + skill_castend_nodamage_id()C³ + skill_additional_effect()C³ + skill_check_condition()C³ + +-------------- +//0484 by ŒÓ’±—– + +EŠo‚¦‚Ä‚È‚¢ƒNƒGƒXƒgƒXƒLƒ‹‚ɃXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðU‚ê‚é–â‘èC³ + pc.c + pc_calc_skilltree()‚ŃNƒGƒXƒgƒXƒLƒ‹‚̃`ƒFƒbƒN’ljÁ + skill.c + skill_readdb()‚Åinf2‚ð“ǂނ悤‚ÉC³ + +EƒyƒRƒyƒR‹RæAƒtƒ@ƒ‹ƒRƒ“‚̃AƒCƒRƒ“‚ªƒƒOƒCƒ“’¼Œã‚É‚Í•\Ž¦‚³‚ê‚È‚¢–â‘èC³ + clif.c + clif_parse_LoadEndAck()C³ + +-------------- +//0483 by Ž€_ + +E0482‚Ì“K—pB + npc_event_skillget.txt C³B + script.c C³B + skill.c C³B + pc.c C³B + +-------------- +//0482 by ŒÓ’±—– + +EƒNƒGƒXƒgƒXƒLƒ‹‚̃XƒNƒŠƒvƒg‚µC³ +EƒXƒNƒŠƒvƒggetskilllv‚ðŒÄ‚Ԃƃ}ƒbƒvƒT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³ + (conf/) + npc_event_skillget.txt + o—ˆ‚邾‚¯•Ï”‚ðŽg‚í‚È‚¢‚悤‚ÉC³i–¢ƒeƒXƒgj + (map/) + script.c + buildin_getskilllv()C³ + +EƒXƒeƒB[ƒ‹‚ÅŽ¸”sŽž‚̃GƒtƒFƒNƒg•ÏX +E“¯‚¶MOB‚É‚Í‚P‰ñ‚µ‚©ƒXƒeƒB[ƒ‹‚Å‚«‚È‚¢‚悤‚ÉC³ + (map/) + skill.c + skill_castend_nodamage_id()C³ + map.h + struct mob_data‚Ésteal_countƒƒ“ƒo’ljÁ + mob.c + mob_spawn()C³Asteal_count‚ð0‚ɉŠú‰»‚·‚é‚悤‚É + +EƒCƒhƒDƒ“‚Ì—ÑŒç‚ÅHP‚ª32767‚ð’´‚¦‚é‚ƃT[ƒo[‚ª—Ž‚¿‚éƒoƒOC³i–¢ƒeƒXƒgj + (map/) + pc.c + pc_calcstatus()C³ + +-------------- +//0481 by Ž€_ + +E‚±‚ê‚Ì“K—p‚É‚Í‹C‚ð‚‚¯‚Ä‚‚¾‚³‚¢B0478‚̌Ӓ±—–‚³‚ñ‚Ì•¨‚ð Athena.txt‚̃f[ƒ^Œ`Ž®•ÏX‚¹‚¸‚ɃNƒFƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚é‚悤‚Éì‚Á‚½•¨‚Å‚·BŽ©•ª‚ªì‚Á‚Ä‚éÅ’†‚ɌӒ±—–‚³‚ñ‚ª“¯‚¶•¨‚ðƒAƒbƒv‚µ‚Ä‚‚ꂽ‚Ì‚Å‚·‚ªƒf[ƒ^‚Í•Ï‚¦‚È‚¢•û‚ª‚¢‚¢‚ÆŽv‚Á‚ÄŽ©•ª‚Ì•¨‚àƒAƒbƒv‚µ‚Ü‚µ‚½B’ˆÓ‚·‚邱‚Æ‚Í0478‚Ìathena.txt‚ÍŽg‚¦‚È‚¢‚ÆŒ¾‚¤‚±‚Æ‚Å‚·B0478‘O‚Ì•¨‚ðŽg‚Á‚Ä‚‚¾‚³‚¢B +Eskill_db.txt‚Éinf2‚ð’ljÁ‚µ‚Ä‚±‚ê‚ðŽg‚Á‚ăNƒFƒXƒgƒXƒLƒ‹‚©‚Ç‚¤‚©‚ð”»’f‚·‚éŽd‘g‚Ý‚Å‚·B + skill.h C³B + skill.c + skill_readdb()C³‚Æ‚µC³B + skill_get_inf2() ’ljÁB + skill_db.txt C³B + skill_tree.txt C³B(0478‘O‚Ì•¨) + clif.c + clif_skillinfoblock() C³B + char.c C³B(0478‘O‚Ì•¨) +Ebattle_athena.conf‚Équest_skill_learn’ljÁB + battle.h C³B + battle.c + battle_config_read() C³B + battle_athena.conf C³B +E/resetskill‚ðbattle_athena.conf‚Équest_skill_learn‚ÌÝ’è‚ɇ‚킹‚Äquest_skill_learn‚ªyes‚Ìꇂ̓XƒLƒ‹ƒ|ƒCƒ“ƒg‚ɉÁŽZ‚µ‚Äquest_skill_learn‚ªno‚Ȃ烊ƒZƒbƒg‚Í‚³‚ê‚邪ƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ɉÁŽZ‚³‚ê‚Ü‚¹‚ñB + pc.c + pc_skill()Apc_resetskill() C³‚Æ‚µC³B + pc.h C³B + atcommand.c C³B + atcommnad_athena.conf C³B +EƒXƒNƒŠƒvƒg‚ÌskillƒRƒ}ƒ“ƒh‚ŃNƒGƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚ç‚ê‚é‚Ì‚Í“¯‚¶‚Å‚·‚ªÅŒã‚̃tƒ‰ƒO‚ª2‚©‚ç0‚É•Ï‚í‚Á‚Ä‚Ü‚·‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + npc_test_skill.txt C³B + npc_event_skillget.txt C³B + conf_ref.txt C³B + client_packet.txt C³B + +-------------- +//0480 by Kalen + +EEventskill’ljÁ + conf/npc_event_skillget.txt + +Emap_athena.conf•ÏX + warp.txt‚Ì“Ç‚Ýž‚Ý—Dæ“x‚ð•ÏX + prt_castle“™A‹ŒEP‚̃[ƒv‚ƈقȂéꊂɕÏX‚³‚ê‚½ê‡ + æ‚É“Ç‚Ýž‚ñ‚¾•û‚ª—D悳‚ê‚é‚Ì‚ÅAEP‚Ì‚‚¢‡‚Ì‚ª‚æ‚낵‚¢‚©‚Æ + conf/map_athena.conf + +-------------- +//0478 by ŒÓ’±—– + +*** + Athena.txt‚̃f[ƒ^Œ`Ž®•ÏX!! (Ž©“®“I‚É•ÏŠ·‚³‚ê‚Ü‚·) + ƒoƒbƒNƒAƒbƒv‚ð–Y‚ꂸ‚É! + Data format of athena.txt is changed!! (convert automatically) + DONT FORGET BACKUP!! +*** + +EƒNƒGƒXƒgƒXƒLƒ‹ŽÀ‘• +EƒXƒNƒŠƒvƒg‚ŃXƒLƒ‹ƒŒƒxƒ‹‚ðƒ`ƒFƒbƒN‚Å‚«‚é‚悤‚É + EƒXƒNƒŠƒvƒg‚ÌskillƒRƒ}ƒ“ƒh‚ŃNƒGƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚ç‚ê‚Ü‚·B + Žg—p•û–@„ skill ƒXƒLƒ‹ID,ƒXƒLƒ‹LV[,ƒtƒ‰ƒO] + ƒtƒ‰ƒO‚ÍÈ—ª‰Â”\‚ÅAÈ—ª‚·‚é‚Æ‚P‚ðŽw’肵‚½‚±‚Æ‚É‚È‚è‚Ü‚·B + ‚P‚Å‘•”õ•i‚É‚æ‚éˆêŽž“I‚ÈK“¾A‚Q‚ŃNƒGƒXƒg‚É‚æ‚éP‹v“I‚ÈK“¾‚Å‚·B + P‹v“I‚ÈK“¾‚Ìê‡Askill_tree.txt‚Ɉˑ¶‚µ‚Ü‚· + EgetskilllvƒRƒ}ƒ“ƒh’ljÁ + Žg—p•û–@„ getskilllv(ƒXƒLƒ‹ID) –ß‚è’l‚̓Œƒxƒ‹‚Å‚·B0‚Å–¢K“¾B + + (conf/) + npc_test_skill.txt + ƒTƒ“ƒvƒ‹ + (db/) + skill_tree.txt + ƒNƒGƒXƒgƒXƒLƒ‹‚Æ‚µ‚Ä•K—vƒXƒLƒ‹ID‚É-1‚ðÝ’èB + (char/) + char.c + ƒtƒ‰ƒO‚àathena.txt‚É•Û‘¶‚·‚é‚悤‚ÉB + ˆÈ‘O‚ÌŒ`Ž®‚̃f[ƒ^‚à“Ç‚Ýž‚ß‚Ü‚·B + (map/) + pc.c/pc.h + pc_skill(),pc_calc_skilltree()‚È‚ÇC³ + script.c + buildin_skill(),buildin_getskillid()‚È‚ÇC³ + +E@questskill,@lostskill’ljÁ + E@questskill ƒXƒLƒ‹ID ‚ŃNƒGƒXƒgƒXƒLƒ‹‚ðŠo‚¦‚Ü‚·B(ƒNƒGƒXƒgƒXƒLƒ‹‚Ì‚Ý) + E@lostskill ƒXƒLƒ‹ID ‚ŃXƒLƒ‹‚ð–Y‚ê‚Ü‚·B(ƒNƒGƒXƒgƒXƒLƒ‹ˆÈŠO‚àOK) + + atcommand.c/atcommand.h + struct Atcommand_Config‚Élostskill,questskillƒƒ“ƒo’ljÁ + @questskill,@lostskillˆ—’ljÁ + +-------------- +//0477 by nabe + +Eˆê•”•Ï”‚Ì錾ˆÊ’u‚Ì•ÏX‚Ì‚ÝiLinux“™‚ŃRƒ“ƒpƒCƒ‹‚µ‚â‚·‚¢‚悤‚ÉjB + atcommand.c,battle.c,clif.c,mob.c,npc.c,skill.c + +-------------- +//0476 by nabe + +Econf/ ‚¿‚å‚Á‚Æ®— + conf/map_athena.confC³B + tortoise.txt‚ðnpc_town_alberta.txt’†‚Ɉړ®B + npc_script2.txt‚̃Rƒ‚ƒhƒKƒCƒh‚ðnpc_town_comodo.txt’†‚Ɉړ®B + +Enpc‚ªƒLƒƒƒ‰–¼‚ð’‚é‚Æ‚«‚̃oƒOC³ + map/script.c + buildin_strcharinfo()‚ŃLƒƒƒ‰–¼—p‚̃ƒ‚ƒŠ‚ð + static‚ÉŠm•Û‚µ‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½‚Ì‚ðAmalloc‚ÉC³B + +-------------- +//0475 by hoenny + +“D–_‚̃XƒeƒB[ƒ‹ŽÀ‘•B +ƒMƒ‹ƒh¶¬‚ÌŽžƒGƒ“ƒyƒŠƒEƒ€Á–Õ‚·‚é‚悤‚ÉC³B + map/guild.c + guild_create()C³B + guild_created()C³B + map/skill.c + skill_castend_nodamage_id()C³B + +-------------- +//0474 by Ž€_ + +E0471‚̸—û‚ÌŽž•\Ž¦‚³‚ê‚镶Žš‚ÌÝ’è‚ðmap_athena.conf‚©‚çscript_athena.conf‚É•ÏXB + script.c + do_init_script() C³‚Æ‚µC³B + script.h C³B + script_athena.conf ’ljÁB + map_athena.conf C³B + map.c + map_config_read() C³B +EŒÃ‚¢Šª•¨AƒvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒXŽÀ‘•‚Æ‚µŽd—l•ÏXB +ƒ‰ƒ“ƒ_ƒ€‚ŃAƒCƒeƒ€‚𓾂镨‚ɃfƒtƒHƒ‹ƒg‚Åo‚éƒAƒCƒeƒ€‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏXB¡‚ÌŽd—l‚Å‚Í1000‰ñ‚܂ŃAƒCƒeƒ€‚ª‘I‘ð‚³‚ê‚È‚©‚Á‚½‚çƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ªo‚é‚悤‚É‚È‚Á‚Ä‚¢‚Ü‚·BƒfƒtƒHƒ‹ƒgƒAƒCƒeƒ€‚ª0‚Ìꇂ̓AƒCƒeƒ€‚𓾂ç‚ê‚Ü‚¹‚ñB +Ý’è‚·‚éŠm—¦‚ð*1000‚©‚ç*10000‚É•ÏXB‚½‚¾item_~.txt‚ÌC³‚Í‚â‚Á‚Ä‚¢‚Ü‚¹‚ñB’N‚©‚â‚Á‚Ä‚‚¾‚³‚¢B(‘¼—Í–{Šè) + itemdb.c + temdb_read_randomitem() C³B + itemdb_searchrandomid() C³B + item_purplebox.txt ‚©‚ç item_violetbox.txt ‚ÉC³B + item_giftbox.txtAitem_scroll.txt ’ljÁB(move‚³‚ñ‚ ‚肪‚Æ‚¤B) + item_db.txt + ŒÃ‚¢Šª•¨AƒvƒŒƒ[ƒ“ƒgƒ{ƒbƒNƒX C³B +Etrade.c + trade_tradecommit() C³Bpc_delitem()‚ðŽg‚¤‚悤‚É•ÏXB +¦ƒeƒXƒg‚Í‚â‚Á‚Ä‚¢‚Ü‚¹‚ñ‚Ì‚Å–â‘肪‚ ‚Á‚½‚ç•ñ‚µ‚Ä‚‚¾‚³‚¢B + +-------------- +//0473 by Kuro + +Eclass_equip_db‚ðˆê•”C³ + db/class_equip_db.txt + +-------------- +//0471 by hoenny + +»˜B‚ÌŽžo‚镶‚ð•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½.(map_athena.conf‚Å’²ß‰Â”\) +‹CŒ÷‚Ì”Žš‚ªŽsœD‚ÌŽžŽÀÛ…˜H•\Ž¦}—ÎC³ + conf/map_athena.conf + refine_posword:’ljÁB + map/map.c + map_config_read()C³B + map/script.h + do_set_posword()’ljÁB + map/script.c + do_set_posword()’ljÁB + buildin_getequipname()C³B + map/skill.c + skill_status_change_start()C³B + +-------------- +//0470 by Ž€_ + +E»‘¢‚ÌŽž‘®«Î‚ª“ñ“xŒ¸‚é–â‘èC³B(ŽÀ‚Í“ñ“xŒ¸‚é‚悤‚ÉŒ©‚¦‚邾‚¯‚Ń}ƒbƒv‚ðˆÚ“®‚·‚é‚Ƴ‚µ‚•\Ž¦‚³‚ê‚Ü‚·‚ª...) + pc.hApc.c + pc_delitem() C³B + npc.cAscript.cAstorage.cApet.c + pc_delitem()‚ð‘S‚ÄC³B + skill.c + skill_produce_mix() C³B + +-------------- +//469 by ”g˜Q + +Enpc_mob_job.txtAnpc_monster.txtAnpc_monster30.txtAmob_db.txt‚̃‚ƒ“ƒX–¼‚ðC³ +Eitem_db.txt‚̉ñ•œƒAƒCƒeƒ€‚̉ñ•œ—Ê‚ðƒWƒ…ƒm[Œã‚Ì‚à‚Ì‚ÉC³ + +-------------- +//468 by Kuro + +E–‚Œ•»ìƒNƒGƒXƒg’ljÁ + conf/npc_event_ma_sword.txt + +-------------- +//467 by nini + +EBB‚ª—¼ŽèŒ•‚Å‚µ‚©”“®‚µ‚È‚©‚Á‚½‚Æ‚±‚ëC³¨‚·‚ׂĂ̕Ší‚Å +EAR‚ª—¼Žè•€‚Å‚µ‚©”“®‚µ‚È‚©‚Á‚½‚Æ‚±‚ëC³¨•ÐŽè•€A—¼Žè•€A“ÝŠí +EƒXƒsƒAƒNƒCƒbƒPƒ“”“®‚ð‘„‚¾‚¯‚É +EƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹‚³‚ê‚È‚¢‚à‚̂ɃOƒ‰ƒ“ƒhƒNƒƒXAƒ[ƒO‚̃XƒgƒŠƒbƒvƒVƒŠ[ƒY’ljÁ +EƒuƒŠƒbƒcƒr[ƒg‚ªƒLƒƒƒXƒgƒLƒƒƒ“ƒZƒ‹‚³‚ê‚È‚‚È‚Á‚Ä‚½“_C³ + map/skill.c + skill_use_id()@C³ + skill_check_condition()@C³ +E2-2EƒXƒLƒ‹‚̃LƒƒƒXƒgEƒfƒBƒŒƒC’ljÁ + db/cast_db.txt + + +-------------- +//466 by hoenny + +Eˆ¢C—…”e–PŒC³(ŒöŽ®C³‹y‚Ñ spÁ–Õ‚ª‚·‚®Œ©‚¦‚é‚悤‚É) +E’~‹C‚ÌŽž‹C’e‚ªŒ©‚¦‚é‚悤‚ÉC³(Mr.NO NAME—l‚̃pƒPî•ñ‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚·.‹C’e‚ªÁ‚¦‚éƒpƒPî•ñ‚ª•s‘«‚Å‚·.) +EƒpƒŠ‚̉H‚âƒeƒŒƒ|[ƒg1‚ð˜A‘±Žg—p‚ÌŽž,ŽIƒI[ƒo[‚ª”¶‚µ‚È‚¢‚悤‚ɉ¼‰‚ß‚ÅC³ + doc/client_packet.txt + 0x1e1ƒpƒPî•ñ’ljÁ + map/battle.c + battle_calc_weapon_attack()C³ + map/clif.h + clif_spiritball_cre()’ljÁ + clif_spiritball_del()’ljÁ + map/clif.c + packet_len_table[]C³ + clif_spiritball_cre()’ljÁ + clif_spiritball_del()’ljÁ + clif_changemap()C³ + map/skill.c + skill_castend_nodamage_id()C³ + skill_check_condition()C³ + +-------------- +//0465 by Ž€_ + +EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ƃnƒCƒfƒBƒ“ƒOAƒuƒŠƒbƒcƒr[ƒg‚̃oƒOC³B(ƒuƒŠƒbƒcƒr[ƒg‚Í•ñ‚Í‚È‚©‚Á‚½‚Ì‚Å‚·‚ª•ªÍ‚µ‚½‚ç–â‘肪‚ ‚Á‚½‚Ì‚ÅC³B) + skill.c + skill_use_id() C³B + skill_castend_nodamage_id() C³B +E0455‚ÌNPC‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B + npc_event_ice.txt C³B + npc_event_potion.txt C³B + npc_town_geffen.txt C³Bi454‚Ì•¨‚É–ß‚µ‚Ü‚µ‚½Bj +E0451‚̃¿ƒ}ƒbƒv‚ðƒRƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½B•K—v‚È•û‚̓Rƒ}ƒ“ƒgƒAƒEƒg‚ð‚È‚‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B + map_athena.conf C³B +EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚Í0442‚Ì–â‘è‚ŃnƒCƒfƒBƒ“ƒOAƒuƒŠƒbƒcƒr[ƒg‚Í0445‚Ì–â‘è‚Å‚µ‚½B‚»‚ê‚Æ0445‚ÌC³‚ŃXƒLƒ‹”Ô†‚ðenum‚Å錾‚µ‚½•¶Žš‚É•Ï‚¦‚Ä‚¢‚Ü‚·‚ª‚»‚ê‚É—Ž‚Æ‚µ‚ª‚ ‚é‚悤‚Å‚·B(ƒnƒCƒfƒBƒ“ƒOAƒuƒŠƒbƒcƒr[ƒg‚Í‚»‚Ì‚¹‚¢‚Å‚µ‚½B)‘O‚̔Ԇƒ\[ƒX‚Æ”ä‚ׂĖâ‘肪‚ ‚é•”•ª‚ÍC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B‚¿‚å‚Á‚Æ–Ê“|‚Å‚·‚ª... + +-------------- +//464 by ”g˜Q + +Eƒ‚ƒ“ƒNƒXƒLƒ‹‚Ì•”•ª‚ɂ‚¢‚ÄC³(–¢ŽÀ‘•ƒXƒŒ‚É‘‚©‚ê‚Ä‚¢‚½‚à‚Ì‚ð’ljÁ‚µ‚½‚¾‚¯‚Å‚·B + skill.c + skill_use_id()C³ + cast_db.txt + ƒ‚ƒ“ƒNƒXƒLƒ‹’ljÁ + +-------------- +//463 by ŒÓ’±—– + +E462‚̃oƒOC³ + ENPC‚ÌSHOP‚Ì•s“s‡C³ + EREADME‚̊ԈႢC³iwarpwaitingpc‚ªwarpwaitingroom‚É‚È‚Á‚Ä‚¢‚½j + + map.h + struct npc_data‚Ìchat_id‚̈ʒu‚ðC³ + +-------------- +//462 by ŒÓ’±—– + +ENPCƒ`ƒƒƒbƒgì¬ + Ewaitingroom–½—ß‚ÅNPCƒ`ƒƒƒbƒg‚ð쬂µ‚Ü‚·B + ˆø”‚Í waitingroom "ƒ`ƒƒƒbƒg–¼",§ŒÀl”,ƒCƒxƒ“ƒg–¼ ‚Å‚·B + ƒCƒxƒ“ƒg–¼‚Íl”‚ªÅ‘å‚É‚È‚Á‚½‚Æ‚«‚É‹N‚±‚·ƒCƒxƒ“ƒg–¼‚ÅAÈ—ª‰Â”\B + Ewarpwaitingpc–½—ß‚ÅAƒ`ƒƒƒbƒg“à‚É‚¢‚éPC‘Sˆõ‚ðƒ[ƒv‚Å‚«‚Ü‚·B + ˆø”‚Íwarp‚Æ“¯‚¶‚ÅAwarpwaitingpc "ƒ}ƒbƒv–¼",x,y ‚Å‚·B + + map.h + struct npc_data‚Æchat_data‚ðC³ + script.c + buildin_waitingroom(),buildin_warpwaitingpc()’ljÁ + chat.c/chat.h + FXC³ + clif.c + clif_getareachar_npc()Aclif_joinchatok()‚È‚ÇC³ + +ENPC‚ÌOnInitƒCƒxƒ“ƒg‚ðƒT[ƒo[‹N“®Žž‚ɌĂԂ悤‚ÉB +EƒGƒNƒXƒ|[ƒg‚·‚é‚Æ‚«‚ÌNPC–¼‚Æ•\Ž¦ã‚ÌNPC–¼‚ð•ÊX‚ÉÝ’è‰Â”\‚ÉB + E“¯‚¶NPC–¼‚̃Cƒxƒ“ƒg‚Íd•¡‚Å‚«‚È‚¢‚½‚ßAƒGƒNƒXƒ|[ƒg—pNPC–¼‚ðŽg‚¢A + “¯‚¶NPC–¼‚Å‚à•Ê‚ÌNPC‚Æ‚µ‚ÄŽ¯•Ê‚Å‚«‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB + (‚à‚¿‚ë‚ñAƒCƒxƒ“ƒgˆ—‚ðs‚í‚È‚¢ê‡‚Í‚»‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñB) + Enpc_*.txt‚Ìscript–½—ß‚ÅNPC‚Ì–¼‘O‚ðÝ’è‚·‚é‚Æ‚«A + u•\Ž¦–¼::ƒGƒNƒXƒ|[ƒg–¼v‚Æ‚·‚é‚ÆA•\Ž¦‚·‚é–¼‘O‚ÆAƒCƒxƒ“ƒg—p‚É + ƒGƒNƒXƒ|[ƒg‚·‚é–¼‘O‚ð•ÊX‚ÉŽw’è‚Å‚«‚Ü‚·B + •\Ž¦–¼‚ª‘S‚“¯‚¶•ÊX‚ÌNPC‚ŃCƒxƒ“ƒg‚ð“®ì‚³‚¹‚é‚Æ‚«‚ÉŽg—p‚µ‚Ü‚·B + E‚â‚₱‚µ‚¢‚Ì‚ÅPVP‚ÌnpcƒXƒNƒŠƒvƒg‚ðŒ©‚ÄƒCƒ[ƒW‚ð’Í‚ñ‚Å‚‚¾‚³‚¢B + + npc.c/npc.h + npc_parse_*()‚ÌC³ + npc_event_do_oninit(),npc_event_do_oninit_sub()‚ȂǒljÁ + map.c/map.h + do_init()‚Ånpc_event_do_oninit()‚ðŒÄ‚Ԃ悤‚É + struct npc_dataC³ + +EƒXƒNƒŠƒvƒggetmapusersAgetareausers‚Ì’v–½“I‚ȃoƒOC³ + EŠY“–ƒ}ƒbƒv‚ª‘¶Ý‚µ‚È‚¢ê‡Aƒ}ƒbƒvƒT[ƒo[‚ª—Ž‚¿‚é‚Ì‚ðC³B + Eƒ}ƒbƒv‚ª‘¶Ý‚µ‚È‚¢‚ÆA-1‚ð•Ô‚·‚悤‚É‚µ‚½B + + script.c + buildin_getmapusers(),buildin_getareausers()C³ + +Epvp‚̃XƒNƒŠƒvƒgC³ + Eƒ`ƒƒƒbƒgƒ‹[ƒ€‚ðì‚é‚悤‚É‚µ‚½ + + (conf/) + npc_pvproom.txt + ‘S‚Ä‚ÌNPC‚̃GƒNƒXƒ|[ƒg–¼(pvp??r)Ý’è + OnInit:‚Åwaitingroom‚ðŽÀs‚·‚é‚悤‚É + +-------------- +//461 by Kuro +EƒAƒRƒ‰ƒCƒg“]EƒNƒGƒXƒgˆê•”C³ + conf/npc_job_aco.txt + +-------------- +//460 by sagitarius +Eitem_db‚̊ԈႢC³ + 4032,Ambernite_Card,ƒAƒ“ƒo[ƒiƒCƒgƒJ[ƒh,6,20,,10,,2,,,,,32,,,,{},{},,C³ + +-------------- +//459 by hoenny +EƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…Žg—p‚ÌŽž•€ƒ`ƒFƒbƒN(Ž©•ª‚¾‚¯) +EOld_Blue_Box‚ÌŠm—¦‚ª‚‚¢‚Æ‚¢‚¤•ñ‚É‚æ‚Á‚ÄC³ +EScript.c‚Í0455ˆÈ‘O‚±‚ƂňøŠ·(NPC‚ð‚±‚±‚ɇ‚킹‚ÄC³‚µ‚Ä‚‚¾‚³‚¢) +Eˆ¢C—…”e–PŒC³(ŒöŽ®‚ðC³‚µ‚½‚ñ‚Å‚·‚ª, ³Šm‚©‚Í‚æ‚•ª‚©‚ç‚È‚¢‚Å‚·‚Ë.) +EC“¹‘m‚Ì’~‹C,”šŠú‚̉¼ŽÀ‘•.(ˆ¢C—…”e–PŒŽg—p‚ÌŽž’~‹C,”šŠúó‘Ô‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·. ) +EƒyƒRƒyƒR‚Éæ‚Á‚½Œã‚ÉAADPD‚ªŠÔˆá‚Á‚½‚±‚ÆC³(ƒoƒO‚𒼂µ‚Ä‚ ‚°‚½‚ª, ’¼‚·‘O‚±‚Æ‚É•Ï‚í‚邹‚¢‚Å‚Ü‚½C³) +‚»‚ÌŠO‚É‚àC³‚ð‚µ‚½‚悤‚È‚Ì‚ÉŠo‚¦‚È‚¢‚Å‚·‚Ë.‚»‚µ‚ÄŒë‚Á‚½•”•ª‚ª‚ ‚ê‚ÎŽw“E‚µ‚Ä‚‚¾‚³‚¢. + conf/npc_event_ice.txt + checkweightC³ + conf/npc_town_geffen.txt + checkweightC³ + db/item_purplebox.txt + Old_Blue_BoxC³ + map/battle.c + battle_calc_weapon_attack()C³ + map/pc.c + pc_spheal()C³ + pc_calcstatus()C³ + map/script.c + buildin_checkweight()C³ + map/skill.h + SC_ EXPLOSIONSPIRITS’ljÁ + map/skill.c + SkillStatusChangeTable[]C³ + skill_castend_nodamage_id()C³ + skill_check_condition()C³ + +-------------- +//458 by Kuro +EƒAƒRƒ‰ƒCƒg“]EƒNƒGƒXƒg’ljÁ + conf/npc_job_aco.txt + ‰ï˜b•¶‚ª•ª‚©‚ç‚È‚©‚Á‚½‚Ì‚Å“K“–‚É‚µ‚Ä‚ ‚è‚Ü‚·B‚Ü‚½ANPC‚ÌŠOŒ©‚Ì•Ï‚¦•û‚ª•ª‚©‚ç‚È‚©‚Á‚½‚Ì‚Å“K“–‚É‚µ‚Ä‚ ‚è‚Ü‚·B + •ª‚©‚é•û‚ÍC³‚µ‚Ä‚¨‚¢‚ĉº‚³‚¢B + +-------------- +//0457 by Kalen + +EPVPŠÖ˜A‚ÌNPC’ljÁ + conf/npc_pvp.txt + conf/npc_pvproom.txt + +-------------- +//0456 by Ž€_ + +Eƒ‚ƒ“ƒXƒ^[‚ÌʼnUŒ‚ŽžŠÔ‚ª’·‚·‚¬‚é–â‘èC³B +ƒ‚ƒ“ƒXƒ^[‚ÌʼnUŒ‚ŽžŠÔ‚ð¡‚Ü‚Å‚Ímob_db‚ÌaDelay‚ðŽg‚Á‚Ä‚¢‚Ü‚µ‚½‚ª‚±‚ê‚ðaMotion‚É•ÏX‚µ‚Ü‚µ‚½B¡‚Ü‚Å‚Ímob_db‚ÌaMotion‚̓Sƒ~‚Å‚µ‚½‚ª¡“x‚©‚ç‚̓Sƒ~‚Å‚Í‚ ‚è‚Ü‚¹‚ñBaMotion‚³‚¦³‚µ‚¯‚ê‚΃‚ƒ“ƒXƒ^[‚ÌUŒ‚‚̃‚[ƒVƒ‡ƒ“‚Ì‘O‚Ƀ_ƒ[ƒW‚ªo‚Ä‚‚é–â‘è‚à‚È‚‚È‚é‚Í‚¸‚Å‚·B + mob.c + mob_changestate() C³B +EƒAƒCƒeƒ€‚ð“üŽè‚Å‚«‚È‚¢Žž‚»‚Ì——R‚É“–‚½‚郃bƒZ[ƒW‚ªo‚é‚悤‚É•ÏXB + pc.c + pc_additem() C³B +Ejob_db1.txt‚Ì‚Å–â‘è‚É‚È‚Á‚½.‚ð,‚ÉC³B + +-------------- +//455 by Mr.NO NAME +ENPC‚Ƃ̃AƒCƒeƒ€ŒðŠ·‚┃‚¢•¨ŠÖŒW‚ÌScript‚ªo—ˆã‚ª‚Á‚½“–‰‚Ì +@NPCƒf[ƒ^(npc_event_making.txtAnpc_town_geffen.txt“™)‚Éæ‚ÁŽæ‚èAˆÈ‰º‚ðC³B + conf/npc_event_ice.txt + npc_event_potion.txt + npc_town_geffen.txti454ˆÈ‘O‚Ì•¨‚É–ß‚µ‚Ü‚µ‚½Bj + map/script.c + buildin_checkweight()‚ðC³B + +-------------- +//454 by Kuro +EƒQƒbƒtƒFƒ“’b–艮‚Å”ƒ‚¢•¨‚ªo—ˆ‚é‚悤‚ÉC³ + conf/npc_town_geffen.txt + +-------------- +//0451 by code +E ¡X‚Å‚·‚ªƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚ɑΉž(ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚Ìdata.grf‚ðadata.grf‚Æ‚µ‚Ägrf-files.txt‚Ìadata‚Ì‚Æ‚±‚ë‚É‘‚¢‚Ä‚‚¾‚³‚¢) + common/grfio.c + grfio_setadatafile()’ljÁ + /grfio.h + grfio_setadatafile()’ljÁ + conf/map_athena.conf + ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚̃}ƒbƒv‚ð“Ç‚Ýž‚ނ悤‚É•ÏX + /npc_warp_a.txt + ƒ¿ƒ}ƒbƒv‚̃[ƒvƒ|ƒCƒ“ƒg‚ÌÝ’è(‚¿‚å‚Á‚Æ‚¸‚ê‚Ä‚é‚©‚à) + /grf-files.txt + ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚Ìdata.grf‚ðadata.grf‚Æ‚µ‚Ä“Ç‚Ýž‚ނ悤‚ÉÝ’è + adata: ‚É‹Lq +¦ƒ¿ƒNƒ‰ƒCƒAƒ“ƒg‚Í +@ttp://www.castledragmire.com/ragnarok/ +@‚ ‚½‚è‚©‚ç“üŽè‚µ‚Ä‚‚¾‚³‚¢B + +-------------- +//0450 by hoenny +E ‹R•ºC—ûŽÀ‘• +E ƒRƒ€ƒpƒ‹ƒVƒ‡ƒ“ƒfƒBƒXƒJƒEƒ“ƒgŽÀ‘• +E ƒfƒBƒXƒJƒEƒ“ƒgEƒI[ƒo[ƒ`ƒƒ[ƒWC³(”‚ª‚‚¢ê‡ŒvŽZ–@‚ªŠÔˆá‚Á‚½‚±‚Ƃ𒼂µ‚Ü‚µ‚½.) +E “SŒC³(‘fŽè‚ÈŽž‚à“K—p‚³‚ê‚é‚悤‚É) +E •€C—ûC³(•ÐŽè•€‚ÈŽž‚à“K—p‚³‚ê‚é‚悤‚É) +E ƒ{ƒ“ƒSƒ“‚ªUŒ‚‚·‚é‚悤‚ÉC³ + map/pc.c + pc_calcstatus()C³ + pc_modifybuyvalue()C³ + pc_modifysellvalue()C³ + map/battle.c + battle_addmastery()C³ + db/mob_db.txt + ƒ{ƒ“ƒSƒ“C³ + +-------------- +//0449 by Ž€_ + +E•Ï‚É‚È‚Á‚½ŠC³B + const.txt + bAtk‚ÆbDef ’ljÁB + battle.c + battle_calc_weapon_attack()‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B(0445‚Ì•¨) + map.h + map_session_data‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B(0445‚Ì•¨) + pc.c + pc_calcstatus() C³B + pc_bonus() C³B + item_db.txt‚ðŒ³‚É–ß‚µ‚Ü‚µ‚½B(0446‚Ì•¨) + +-------------- +//0448 by hoenny +E‘‘¬C³(pc_walk()‚©‚ç pc_calcstatus()‚Ɉړ®) +Eő劎—ÊC³ + map/pc.c + pc_calcstatus()C³B + +-------------- +//0447 by ‚䂤 +E“ñ“—¬E–î‚Ì‘®«‚𳂵‚“K‰ž +EATK‚Ìオ‚éƒJ[ƒh‚ÌŒø‰Ê‚ð•ŠíƒTƒCƒYC³‚È‚µ‚Ì’êã‚°‚É•ÏX +EATKEDEF‚Ìオ‚éƒJ[ƒh‚ÌŒø‰Ê‚Ì“K‰ž‚ÌŽd•û‚ð•ÏX + +map.h + map_session_data‚Écatk(ƒJ[ƒhATK)‚ð’ljÁ + +pc.c + pc_calcstatus() + ƒAƒTƒVƒ“‚Ì“ñ“—¬‚ÌUŒ‚‘¬“x‚ðC³‚µ‚½ + ƒXƒNƒŠƒvƒg‚É‚æ‚é‘®«‚ð¶‰E³‚µ‚“K‰ž‚·‚é‚悤‚É‚µ‚½ + –î‚Ì‘®«‚𳂵‚“K‰ž‚·‚é‚悤‚É‚µ‚½i‹|‚Ì‘®«—Dæj + ‚½‚¾‚µA–‚·‚ׂĂÌUŒ‚‚É“K‰ž‚³‚ê‚Ü‚· + ƒJ[ƒhATK‚̈—‚ð’ljÁ‚µ‚½ + +battle.c + battle_calc_weapon_attack() + ƒJ[ƒgATK‚ð’êã‚°ƒ_ƒ[ƒW‚Æ‚µ‚ÄŒvŽZ‚·‚é‚悤‚É‚µ‚½ + +item_db.txt + ƒJ[ƒh‚Ì bonus bAtkAbDef ‚ðíœ + ‚©‚í‚è‚ÉA‘•”õ‚Æ“¯—l‚ÉATK‚ÆDEF‚ðÝ’è + i•ÏX‘O‚ðitem_db2.txt‚Æ‚µ‚Ä‚¢‚é‚Ì‚ÅA•s‹ï‡‚ª‚ ‚ê‚Ζ߂µ‚Ä‚‚¾‚³‚¢j + + +-------------- +//0446 by hoenny +Eƒ~ƒXƒgƒŒƒXƒJ[ƒhŽÀ‘•B +EƒXƒLƒ‹Žg—p‚ÌŽžƒWƒFƒ€ƒXƒg[ƒ“Á”ïB +EƒXƒLƒ‹Žg—p‚ÌŽž‘•”õƒ`ƒFƒbƒNB(ƒnƒ“ƒ}[ƒtƒH[ƒ‹‚¾‚¯C³‚µ‚悤‚Æ‚µ‚½‚ª...) +Eƒnƒ“ƒ}[ƒtƒH[ƒ‹‚͈̔͂𠔼Œa5ƒZƒ‹(‘S25ƒZƒ‹)ƒC³ + map/skill.c + skill_check_condition()C³B + skill_castend_pos2()C³B + +Eƒ~ƒXƒgƒŒƒXƒJ[ƒhC³B + db/item_db.txt + +-------------- +//0445 by Aya + +EŠî–{ASPD‚ÆŒvŽZˆ—‚ðC³B + db/job_db1.txt + map/pc.c +ESPŒW”‚ÆŒvŽZˆ—‚ðC³B + db/job_db1.txt + map/pc.c +EƒXƒLƒ‹–¼‚ðenum‚Å錾‚µA‚»‚ê‚ðŽg‚¤‚悤‚É•ÏXB + map/skill.h + map/battle.c + map/pc.c + map/skill.c +EƒŠƒJƒoƒŠ[‚̃XƒLƒ‹ID‚ªƒXƒ[ƒ|ƒCƒYƒ“‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³B + map/skill.c +EW’†—ÍŒüã‚ɃJ[ƒhŒø‰Ê‚ª“K—p‚³‚ê‚Ä‚¢‚½–â‘è‚ÌC³B + map/pc.c +EƒŠƒ€[ƒuƒgƒ‰ƒbƒvAƒXƒvƒŠƒ“ƒOƒgƒ‰ƒbƒvAƒ|ƒCƒYƒ“ƒŠƒAƒNƒg‚̃^[ƒQƒbƒg‚ðC³B + db/skill_db.txt +EGMƒAƒJƒEƒ“ƒg‚ðjRO‚Ìclientinfo.xml‚©‚ç’ljÁB + conf/GM_account.txt +EwarningC³B + map/party.c +EƒLƒƒƒ‰ƒZƒŒ”FØŽž‚Élogin_id2‚̓`ƒFƒbƒN‚µ‚È‚¢‚悤‚É•ÏXB + login/login.c +Eobject_def.batˆÈŠO‘Sƒtƒ@ƒCƒ‹‚̉üsƒR[ƒh‚ðLF‚É•ÏXB +E*.cnfƒtƒ@ƒCƒ‹‚ð*.confƒtƒ@ƒCƒ‹‚É–¼‘O•ÏXB + +-------------- +//0444 by Ž€_ + +EGMƒRƒ}ƒ“ƒh‚â@ƒRƒ}ƒ“ƒh‚ɃRƒ}ƒ“ƒh•Ê‚ÉŽg—pƒŒƒxƒ‹‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏX‚Æ@ƒRƒ}ƒ“ƒh‚µC³B(@where‚Æ@dayA@night‚ÌC³‚Æ‘¼‚̃Lƒƒƒ‰‚ÉŽg‚¤ƒRƒ}ƒ“ƒh‚Ìê‡GMƒŒƒxƒ‹‚ªŽ©•ªˆÈã‚Ìꇎg‚¦‚È‚¢‚悤‚ÉC³B) + atcommand.h C³B + atcommand.c C³B + clif.c C³B + map/makefile C³B + map.c + do_init() C³B + conf/atcommand_athena.cnf ’ljÁB +Eׂ©‚¢C³B + pc.c + pc_setghosttimer()Apc_skill() C³B + script.c + buildin_skill() C³B +Econf_ref.txt C³B +Eitem_db.txt + ”Þ—‚Ì‘z‚¢C³B + +-------------- +//0442 by ŒÓ’±—– + +E‘‘¬ƒ|[ƒVƒ‡ƒ“ŽÀ‘• + ELv‚âE‹Æ”»’è‚Ís‚¢‚Ü‚¹‚ñ + + (db/) + const.txt + SC_SpeedPot0,SC_SpeedPot1,SC_SpeedPot2’ljÁ + item_db.txt + ‘‘¬ƒ|[ƒVƒ‡ƒ“‚̃XƒNƒŠƒvƒg’ljÁ + (map/) + skill.c + skill_status_change_start()C³ + pc.c + pc_calcstatus()C³ + +EPvPƒVƒXƒeƒ€‚̉¼ŽÀ‘• + Epvpƒ}ƒbƒv‚Å‚ÍŽ©“®“I‚ÉAPC‚Ìpvpƒtƒ‰ƒOonA‡ˆÊ’Ê’m‚È‚Ç‚ðs‚¢‚Ü‚·B + Eƒ}ƒbƒv‚Épvpƒtƒ‰ƒO‚ð‚‚¯‚éƒTƒ“ƒvƒ‹‚ðnpc_pvp.txt‚Æ‚µ‚Ä“Y•t‚µ‚Ä‚¢‚Ü‚·B + Epvp‚ÌÚ‚µ‚¢ƒ‹[ƒ‹‚ª‚æ‚‚í‚©‚ç‚È‚©‚Á‚½‚Ì‚ÅAŽŸ‚̂悤‚É‚µ‚Ä‚¢‚Ü‚·B + Eʼn‚ÌŽ‚¿“_‚Í5“_A“|‚·‚Æ1“_A“|‚³‚ê‚é‚Æ-5“_B + E0“_ˆÈ‰º‚ÌPC‚̓ŠƒUƒŒƒNƒVƒ‡ƒ“‚ªŠ|‚©‚ç‚È‚¢ + EGM‚Ípvpƒ}ƒbƒv‚É‚¢‚Ä‚à‘«Œ³‚ɃT[ƒNƒ‹‚ªoŒ»‚µ‚È‚¢‚悤‚Å‚·B + iƒNƒ‰ƒCƒAƒ“ƒg‚ÌŽd—lHj + Epvpƒ}ƒbƒv‚Å@pvpoff/@pvp‚·‚é‚Æ‹xŒe‚µ‚½‚èA‹xŒe‚ð‚â‚ß‚½‚è‚Å‚«‚Ü‚·‚ªA + Žg—p‚·‚é‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB + + (conf/) + npc_pvp.txt + pvpƒtƒ‰ƒO‚ð“ü‚ê‚éƒTƒ“ƒvƒ‹B + nosaveƒtƒ‰ƒO‚âŽó‚¯•t‚¯npc‚È‚Ç‚ð’ljÁ‚·‚é‚Æ‚æ‚¢‚ÆŽv‚í‚ê‚éB + (map/) + clif.c + clif_parse_LoadEndAck()C³ + npc.c + npc_parse_mapflag()C³ + skill.c + skill_castend_nodamage_id()C³ + pc.c + pc_damage()ˆø”C³ + atcommand.c + pc_damage()ˆø”C³‚É”º‚¤C³ + battle.c + +E‚»‚Ì‘¼C³ + E@pvpoff/@pvp‚ŇˆÊ‚âƒT[ƒNƒ‹‚Ì•\Ž¦‚ð‚â‚ß‚½ + E@jumpto‚ŃXƒy[ƒX‚Ì“ü‚Á‚½ƒLƒƒƒ‰ƒNƒ^[‚àŽw’è‚Å‚«‚é‚悤‚É + E@kamibƒRƒ}ƒ“ƒh•œŠˆi•¶Žš“V‚̺j + E”ñPVP‚Ì‚Æ‚«‚ÉA‘ÎÛ‚ª“G‚̃XƒLƒ‹Žg—pŽžA“G–¡•û”»’è‚ðs‚¤‚悤‚É + + skill.c + skill_castend_id()‚Å“G–¡•û”»’è + atcommand.c + ŠeƒRƒ}ƒ“ƒhC³ + +-------------- +//0440 by ’†‚Ìl + +E–{‰Æ‚ðÄŒ»‚·‚é•ûŒü‚È‚çˆÓ–¡‚Í‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ª +@pc.cuƒXƒNƒŠƒvƒg‚É‚æ‚éƒXƒLƒ‹Š“¾v‚ðŽáŠ±•ÏX‚µ‚Ä + ƒJ[ƒh‚É‚æ‚éƒXƒLƒ‹ˆêŽžK“¾‚ÌÛ‚Å‚à1ƒŒƒxƒ‹ˆÈã‚ðÝ’è‚Å‚«‚é‚悤‚É’v‚µ‚Ü‚µ‚½B + +@’Pƒ‚É•„†‚ð•Ï‚¦‚Ä‚²‚Ü‚©‚µ‚½‚¾‚¯‚Å‚·‚Ì‚Å +@•K—v‚É‚ ‚킹‚ÄC³‚ð‚µ‚Ä‰º‚³‚¢B + +-------------- +//0439 by hoenny +Eˆ¢C—…”e–PŒ‚ÌC³B + db/skill_db.txt +Eƒ‚ƒ“ƒXƒ^[î•ñ‚ÌC³B + map/clif.c +EŒ©Ø‚è‚ÌŽÀ‘•B + map/pc.c + +-------------- +//0438 by ‚`‚Ìl +EŒÃ–Ø‚ÌŽ}‚ªŽg‚¦‚éꊂð‚m‚o‚bƒXƒNƒŠƒvƒg‚©‚秌ä‰Â”\ +@mapflag‚Énobranch‚Æ‚·‚ê‚΂»‚̃}ƒbƒv‚͌Ö؂̎}Žg—p•s‰Â‚É‚È‚è‚Ü‚·B + map.h + enum‚ÉMF_NOBRANCH ’ljÁB + npc.c + npc_parse_mapflag() C³B + pc.c + pc_useitem() C³B +ƒ\[ƒX‰˜‚‚µ‚Ä‚µ‚Ü‚Á‚½‚©‚àEEE. +•×‹•s‘«‚Å‚· + +-------------- +//0437 by ”g˜Q +Eitem_db.txt‚̉p–¼‚ð‘å•C³B(s•t‚«‚Æ‚»‚¤‚Å‚È‚¢•Ší‚̉p–¼‚ª‚¢‚‚̊Ԃɂâ‚ç +@“¯‚¶‚É‚È‚Á‚Ä‚¢‚½‚Ì‚Å‚»‚ê‚𒼂·‚‚¢‚Å‚É‘¼‚Ì•”•ª‚àC³‚µ‚Ü‚µ‚½B + ‚Ü‚Á‚½‚ˆá‚¤–¼‘O‚É‚È‚Á‚Ä‚é‚à‚Ì‚à‚ ‚è‚Ü‚·‚ªA‚±‚Á‚¿‚Ì•û‚ª³‚µ‚¢‚ÆŽv‚¢‚Ü‚·B +Eitem_purplebox.txt‚ð–{‰ÆŽd—l‚Á‚Û‚ì¬(‘å‘Ì‚±‚ñ‚ÈŠ´‚¶‚©‚Æ +EƒAƒ‹ƒxƒ‹ƒ^‚ƃCƒYƒ‹[ƒhNPC‚ðC³ + +-------------- +//0436 by hoenny +Emorocc •óΤl‚ÌC³ + conf/npc_shop.txt +Eƒnƒ“ƒ}[ƒtƒH[ƒ‹‚ÌŽÀ‘•(AlchemistŽƒ\[ƒX‚ðŽQÆ‚ ‚肪‚Æ‚¤I) + map/skill.c +ˆÈ‘O‚É•¶Žš‰»‚¯‚Í’á‚Ì‚¹‚¢! +ŽŸ‚©‚ç‹C‚ð•t‚¯‚Ü‚·. + +-------------- +//0434 by Avethes + +Eƒ^[ƒgƒ‹ƒAƒCƒ‰ƒ“ƒh‚Ös‚NPCC³ +Eƒ†ƒm[NPCC³ +i‘O‰ñ‚̃oƒO‚Í‚·‚Ý‚Ü‚¹‚ñ‚Å‚µ‚½j + +-------------- +//0433 by Ž€_ + +E»‘¢ƒoƒOC³B + ‰½ŒÌ‚©‚Í‚í‚©‚ç‚È‚¢‚ªskill.c‚Ìskill_readdb()‚ª•Ï‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ÅC³B(Ž©•ª‚ª‚â‚Á‚½C³‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...) + skill.c + skill_readdb() C³B + +-------------- +//0432 by Ž€_ + +E0429‚ňꕔ‚̃AƒCƒeƒ€‚̃XƒLƒ‹‚ªo‚È‚¢–â‘èC³B + clif.c + clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B +Eskill.c + skill_use_id() C³B(‘債‚½C³‚Å‚Í‚È‚¢‚Å‚·B) +Eitem_db.txt‚Ì•¶Žš‰»‚¯C³BŒ¾Œêݒ肪“ú–{Œê‚Å‚Í‚È‚¢ê‡•Û‘¶‚·‚鎞‚É‚Í‹C‚ð‚‚¯‚Ü‚µ‚傤B +EUŒ‚‚³‚ꂽƒ‚ƒ“ƒXƒ^[‚Ì”½Œ‚‚ª‘‚·‚¬‚é–â‘èC³BŽn‚ß‚Ä‚ÌUŒ‚‚ªƒ‚ƒ“ƒXƒ^[‚ÌUŒ‚ƒfƒBƒŒƒC‚ÉŠÖŒW‚È‚100msŒã‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ÅUŒ‚ƒfƒBƒŒƒC‚ɇ‚킹‚é‚悤‚É•ÏXB(‚½‚¾‚µ”½Œ‚‚ª’x‚¢‚ÆŽv‚í‚ꂽ‚è‚à‚µ‚Ü‚·‚ª...) + mob.c + mob_changestate() C³B +EŽI‚ÉÚ‘±‚·‚éÅ‘ål”‚ðŒˆ‚ß‚é‚悤‚É•ÏXB + char.c C³B + conf_ref.txt C³B + char_athena.cnf C³B + +-------------- +//0430 by Avethes + +E‚m‚o‚bŠÖŒWB‚Ù‚Æ‚ñ‚ǃeƒXƒgB +–{‰Æ‰ï˜bî•ñ‚ª‘µ‚¦‚ÎC³B + +-------------- +//0429 by Ž€_ + +EƒMƒ‹ƒh‚̃Œƒxƒ‹ƒAƒbƒv‚ðƒLƒƒƒ‰‚̃Œƒxƒ‹ƒAƒbƒv‚̂悤‚É•ÏXB + int_guild.c + guild_calcinfo() C³B + guild_next_exp() ’ljÁB + exp_guild.txt C³B(ƒŒƒxƒ‹‚ªã‚ª‚ç‚È‚¢‚悤‚É‚µ‚½‚¢ƒŒƒxƒ‹‚Ìexp‚É0‚ð“ü‚ê‚ê‚΂»‚êˆÈã‚ɃŒƒxƒ‹‚ªã‚ª‚ç‚È‚‚È‚è‚Ü‚·B) +EƒXƒNƒŠƒvƒgresetstatusAresetskill ’ljÁB + pc.c + pc_resetskill() C³B + script.c + buildin_resetstatus()Abuildin_resetskill() ’ljÁB +E0425‚Ì‘±‚«‚Å‚µC³B + clif.c + clif_parse_ ‚ð‚µC³B +EƒVƒ‡[ƒgƒJƒbƒg‚ÉŠo‚¦‚Ä‚¢‚éƒXƒLƒ‹ƒŒƒxƒ‹ˆÈã‚̃XƒLƒ‹‚ª“o˜^‚³‚ê‚Ä‚¢‚Ä‚àŠo‚¦‚Ä‚¢‚éƒXƒLƒ‹ƒŒƒxƒ‹‚܂ł̃XƒLƒ‹‚ðŽg‚¤‚悤‚É•ÏXB + clif.c + clif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() C³B +Eƒƒ‚‚Ìő唂ð10ŒÂ‚É•ÏXB(‚ ‚‚Ü‚Å‚àŠg’£‚ׂ̈̕¨‚Å‚·B‚Ü‚¾‹@”\‚Í‚µ‚Ü‚¹‚ñB) + mmo.h + struct mmo_charstatus‚Ìmemo_point‚ð3‚©‚ç10‚É•ÏXB + char.c + mmo_char_tostr() C³B +Emob,c + mob_once_spawn()Amob_summonslave() C³B(•Ê‚ɈӖ¡‚ª‚ ‚éC³‚¶‚á‚ ‚è‚Ü‚¹‚ñ‚ª...) +E@monster ƒRƒ}ƒ“ƒh‚ÅÀ•W‚ðŽw’肵‚È‚¢Žžƒ‚ƒ“ƒXƒ^[‚ªˆê‚©Š‚ÉW’†‚µ‚Äo‚é‚Ì‚ðƒLƒƒƒ‰‚Ì10*10ƒ}ƒXˆÈ“à‚Ƀ‰ƒ“ƒ_ƒ€‚ÅŒ»‚ê‚é‚悤‚É•ÏXB + atcomand.c C³B + +-------------- +//0428 by Avethes + +Econf/npc_smilegirl.txt + ƒXƒ}ƒCƒ‹ƒ}ƒXƒNƒK[ƒ‹ƒXƒNƒŠƒvƒgB + 0427‚Ì‚¨‚©‚µ‚¢•”•ª‚Æ‚©C³B + ’ñ‹Ÿ‚³‚ꂽŠe“sŽs‚ÌÀ•W‚É”z’uBiNONAME‚³‚ñ’ñ‹Ÿ‚ ‚肪‚Æ‚¤Ij + +-------------- +//0426 by ŒÓ’±—– + +EƒAƒCƒeƒ€‚Ì–¼‘O‚ðdata.grf‚©‚ç“Ç‚Ýž‚ނ悤‚É‚µ‚½ + itemdb.c‚ÌITEMDB_OVERRIDE_NAME‚ð’è‹`‚µ‚È‚¯‚ê‚Γǂݞ‚Ý‚Ü‚¹‚ñB + ITEMDB_OVERRIDE_NAME_VERBOSE‚Íitemdb.txt‚̃fƒoƒO—p‚É‚Ç‚¤‚¼B + •’Ê‚Í•Ï‚¦‚é•K—v‚Í‚È‚¢‚ÆŽv‚¤‚Ì‚Åbattle_config‚É‚Í“ü‚ê‚Ä‚¢‚Ü‚¹‚ñB + + itemdb.c + itemdb_read_itemnametable()’ljÁ + do_init_itemdb()C³ + +Eƒf[ƒ^ƒx[ƒX“Ç‚Ýž‚Ý•”‚Ì•sˆÀ’è«‚ÌC³(Œ‹\’v–½“I‚¾‚Á‚½‚Ý‚½‚¢‚Å‚·) + ‚È‚‚Ä‚à–â‘è‚È‚¢DBiitem_value_db.txt‚È‚Çj‚̃tƒ@ƒCƒ‹‚ª‚È‚¢ê‡‚É + ŽI‚ª—Ž‚¿‚½‚è‚·‚錻ۂª”¶‚µ‚Ä‚¢‚½ê‡‚Í‚±‚ê‚Å’¼‚Á‚Ä‚¢‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ. + + skill.c + skill_readdb()‚ÅNULLƒ|ƒCƒ“ƒ^ƒ`ƒFƒbƒN‚ð’ljÁ + itemdb.c + item_readdb()‚ð•¡”‚É•ª‚¯‚½B + ƒ‰ƒ“ƒ_ƒ€ƒAƒCƒeƒ€ƒf[ƒ^ƒx[ƒX‚Ì“Ç‚Ýž‚Ý•”‚ð‚P‚‚ɓZ‚ß‚½B + do_init_itemdb()C³ + +Eׂ©‚¢ƒoƒOC³ + Eƒ[ƒvƒ|[ƒ^ƒ‹‚ÌŠJ‚‚Ü‚Å‚Ì•b”’²® + + skill.c + skill_unitsetting()C³ + +E‚»‚Ì‘¼C³iby –^MŽj + db/job_db1.txt + ‚¿‚傱‚Á‚ÆC³ + db/job_db2.txt + 2-2ŽŸE‚Ì‘«‚è‚È‚¢Jobƒ{[ƒiƒX‚ð’ljÁ(ŽQl:R.O.M 776) + conf/npc_town_kafra.txt + ƒI[ƒND‘O‚Æ’Yz‘O‚ɃJƒvƒ‰”z’u(“®ì–¢Šm”F) + conf/npc_shop3.txt + ƒWƒ…[ƒm”Ì”„NPC(E‚¢•¨) + conf/npc_town_yuno.txt + ƒWƒ…[ƒmNPC(E‚¢•¨‚ð‰ü—ÇB“®ì–¢Šm”F) + +-------------- +//0425 by Ž€_ + +E0419‚Å‘‚«–Y‚ꂽ•¨‚Å‚·‚ªƒXƒLƒ‹ƒ‰[ƒjƒ“ƒOƒ|[ƒVƒ‡ƒ“‚ªSP‰ñ•œƒAƒCƒeƒ€‚É‚àŒø‰Ê‚ª‚ ‚é‚悤‚É•ÏXB +E¡“x‚̓oƒOC³‚ªƒƒCƒ“‚Å‚·BŽI—Ž‚¿‚ª‚È‚è‚»‚¤‚ÈŠ‚ÌC³‚ƃeƒŒƒ|[ƒg‚ÌŽžŽ€‚ñ‚¾‚܂܈ړ®‚Å‚«‚é–â‘è‚Æ0419‚ŃAƒNƒeƒBƒuƒ‚ƒ“ƒXƒ^[‚ÌæU–â‘èC³AŽ€‚ñ‚Å‚¢‚é‚Ì‚É‘¼‚Ìl‚É‚ÍŽ€‚ñ‚¾‚悤‚ÉŒ©‚¦‚È‚¢–â‘è‚ÌC³‚Å‚·B‚µƒeƒXƒg‚Í‚µ‚Ü‚µ‚½‚ª–{“–‚ÉŽ¡‚Á‚½‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·B•ñ‚ð‚¨Šè‚¢‚µ‚Ü‚·B + pc.c + pc_attack_timer()Apc_damage()Apc_walk() C³B + map.c + map_quit() C³B + mob_db.txt + ƒrƒbƒOƒtƒbƒg‚Ìmode‚ðC³(ƒAƒNƒeƒBƒu‚É‚È‚Á‚Ä‚¢‚½ˆ×) + clif.c + clif_parse_WalkToXY()Aclif_pcoutsight()Aclif_pcinsight()A + clif_getareachar_pc()Aclif_getareachar_mob()Aclif_getareachar_pet() C³B + mob.c + mob_ai_sub_hard_activesearch()Amob_ai_sub_hard_mastersearch()A + mob_walk() C³B + pet.c + pet_walk() C³B + +-------------- +//0424 by hoenny + +EƒNƒŠƒbƒvƒ{[ƒiƒX SP 10’ljÁ + db/item_db.txt +Ewarp_test_yuno.txt‚ð npc_warp30.txt‚ÉŠÜ‚ñ‚Å, ‚¿‚å‚Á‚ÆC³ + conf/npc_warp30.txt +E‘¼‚̃T[ƒo[‚ª—Ž‚¿‚Ä‚à•œ‹Œ‚³‚ê‚é‚悤‚ÉC³ + /startƒNƒŠƒbƒv + +-------------- +//0420 by g—t + +EEP 3.0‚ł̃J[ƒhŒø‰Ê•ÏX‚ɉð‚é”͈͂őΉžB +@‚Ù‚Ú‘S‚Ä‚Ì•ÏX“_‚ɂ‚¢‚ÄAo—ˆ‚éŒÀ‚èC³‚µ‚Ä‚ ‚è‚Ü‚·B +@ATKC³‚ª³‚µ‚“K—p‚³‚ê‚Ä‚¢‚é‚悤‚Ȃ̂ŒljÁ‚µ‚Ä‚ ‚è‚Ü‚·B(ƒAƒ“ƒhƒŒC‚È‚Ç) + +-------------- +//0419 by Ž€_ + +E0414‚Å‘‚«–Y‚ꂽ•¨‚Å‚·‚ª MOB‚Ìmode‚Å0x20(32)‚𕜊ˆ‚³‚¹‚Ü‚µ‚½Bƒ{ƒX‚¶‚á‚È‚‚Ä‚àmode‚É0x20‚ª“ü‚Á‚Ä‚¢‚éꇕ’Ê‚ÌMOB‚Å‚àŽ€‚ñ‚¾‚Ó‚è‚ð”j‚ê‚Ü‚·B +(¡‚ÌŠ‹@”\‚Í‚»‚ꂾ‚¯‚Å‚·B–{ŽI‚ÍAI‹‰»‚Ý‚½‚¢‚Å‚·‚ª...) ‚½‚¾ƒS[ƒXƒg‚̓{ƒX‚Å‚à”j‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB +‚»‚ê‚ÆŽæ‚芪‚«‚ÌAI‚ÅŽæ‚芪‚«‚ªƒ^[ƒQƒbƒg‚µ‚½ŽžŽå‚ªƒ^[ƒQƒbƒg‚µ‚Ä‚È‚¢‚Ǝ傪Žæ‚芪‚«‚̃^[ƒQƒbƒg‚ðƒ^[ƒQƒbƒg‚·‚é•”•ª‚ðƒRƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½B(‚±‚ꂪ–{ŽI‚É‚ ‚Á‚Ä‚¢‚é‚ÆŽv‚¢‚Ü‚µ‚½‚Ì‚Å...) +EŒÃ‚¢Â‚¢” AŒÃ‚¢Ž‡F‚Ì” AŒÃ‚¢ƒJ[ƒh’Ÿ‚Åo‚éƒAƒCƒeƒ€‚ðƒtƒ@ƒCƒ‹‚ÅÝ’è‚Å‚«‚é‚悤‚É•ÏXB + script.c + buildin_getitem() C³B + item_db.txt + ŒÃ‚¢Â‚¢” AŒÃ‚¢Ž‡F‚Ì” AŒÃ‚¢ƒJ[ƒh’ŸC³B + item_bluebox.txtAitem_purplebox.txtAitem_cardalbum.txt ’ljÁB(Žg—p—á’ö“x‚Ì•¨‚Å‚·B‚ǂ̃AƒCƒeƒ€‚ªo‚é‚悤‚É‚·‚é‚©‚ÍŽ©•ª‚Åݒ肵‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B‚½‚¾ƒNƒ‰ƒCƒAƒ“ƒg‚ð—Ž‚Æ‚·ƒAƒCƒeƒ€‚Ío‚È‚¢‚悤‚Éݒ肵‚Ä‚‚¾‚³‚¢B) + itemdb.h + struct random_item_data ’ljÁB + itemdb.c + itemdb_searchrandomid()Aitemdb_readdb() C³B +Emob.c + mob_target()Amob_ai_sub_hard() C³B(–â‘肪‚ ‚è‚»‚¤‚È•”•ª‚¾‚¯C³B) +Epc.c + pc_itemheal()Apc_walktoxy_sub() C³B +Eƒyƒbƒg‚ÌoŒ»‚ðMOB‚Æ“¯‚¶‚悤‚É•ÏXB + clif.c + clif_spawnpet() C³B + pet.c + pet_change_name() C³B +E0418‚ð‚µC³B(if•¶‚ÌðŒ‚ð‚µC³‚µ‚½‚¾‚¯‚Å‚·B) + +-------------- + +//0418 by hoenny +E /mm(/mapmove) /nb /b /bb /resetskill /resetstate GM –½—ߌêŽg—p‚̧ŒÀ +clif_parse_MapMove ,clif_parse_ResetChar ,clif_parse_GMmessage C³ + map/clif.c + +-------------- +//0417 by ‚ê‚ + +E0412‚Åitem_db.txt‚ª‚¨‚©‚µ‚‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³ + +-------------- +//0416 by g—t + +EƒWƒ…ƒm[Žü•Ó‚̃[ƒv’è‹`‚Æ“G‚Ì”z’uB +@ƒ[ƒv’è‹`‚Ínpc_warp30.txt‚Æ‚µA’ljÁ‚·‚éŒ`‚É‚µ‚Ä‚ ‚è‚Ü‚·B +@“G‚Ì”z’u‚ɂ‚¢‚Ä‚ànpc_monster.txt‚Æ‚Í“‡‚¹‚¸Anpc_monster30.txt‚Æ‚µ‚Ä‚ ‚è‚Ü‚·B +@–â‘肪–³‚¢‚悤‚Å‚ ‚ê‚Γ‡‚µ‚ĉº‚³‚¢B +Eã‹L’è‹`ƒtƒ@ƒCƒ‹’ljÁ‚É]‚¢map_athena.cnf‚ð•ÏXB +E@goƒRƒ}ƒ“ƒh‚ÖƒWƒ…ƒm[’ljÁB +@—v–]‚ª‚ ‚Á‚½‚悤‚Ȃ̂ŒljÁ‚µ‚Ü‚µ‚½B + +-------------- +//0415 by ’†‚Ìl + +E¡‚Í–S‚«‹ŒROƒGƒ~ƒ…ŽIŠJ”ƒXƒŒƒbƒh Lv02‚Å‚ÌŽ€_Ž‚Ìà–¾‚É]‚Á‚Ä +@ƒ‚ƒ“ƒXƒ^[’è‹`ƒf[ƒ^‚ðŽáŠ±•ÏX‚³‚¹‚Ä’¸‚«‚Ü‚µ‚½B + E‰ß‹Ž‚Ìnpc_monster.txt‚©‚ç’Êíƒ}ƒbƒvãiƒ‹ƒeƒBƒG“™œ‚j‚É‚¢‚éƒTƒ“ƒ^ƒ|ƒŠƒ“AƒAƒ“ƒ\ƒj‚ð’Šo‚µ + @V‚½‚Éì‚Á‚½unpc_x-masmonster.txtv‚Ɉړ] + Eã‹L‚ÌC³‚É‚ ‚킹‚Ämap_athena.cnf‚ðC³B + @map_athena‚ɃRƒƒ“ƒgƒAƒEƒgó‘Ô‚Åunpc: conf/npc_x-masmonster.txtv‚ð’ljÁ‚µ‚Ü‚µ‚½B + @•K—v‚É‚ ‚킹‚ăRƒƒ“ƒgƒAƒEƒg‚ð‚µ‚Ä‰º‚³‚¢B + +-------------- +//0414 by Ž€_ + +Estrcasecmp‚ðstrcmpi‚É•ÏXB +Edb‚âÝ’èƒtƒ@ƒCƒ‹‚ð“Ç‚ÞŽž// ‚ðƒRƒ}ƒ“ƒgƒAƒEƒg‚Æ‚µ‚Ä”FŽ¯‚·‚é‚悤‚ÉC³B +Eƒyƒbƒg‚Æ—£‚ê‚·‚¬‚é‚ƃyƒbƒg‚ª‘‚“®‚‚悤‚É•ÏXB(ƒLƒƒƒ‰‚Ì2”{‚Ì‘¬“x‚Å“®‚«‚Ü‚·B) +Eƒ‹[ƒgƒ‚ƒ“ƒXƒ^[‚ªƒAƒCƒeƒ€‚ðƒ^[ƒQƒbƒg‚µ‚½ŽžUŒ‚‚ðŽó‚¯‚Ä‚àUŒ‚‚µ‚Ä‚±‚È‚¢–â‘èC³B +E“¯‘°ƒ‚ƒ“ƒXƒ^[‚ÌAI‚ð•ÏXB¡‚Ü‚Å‚Ítraget_id‚ðŽg‚¤‚¹‚¢‚Ń‚ƒ“ƒXƒ^[‚ªUŒ‚‚µ‚½‘ŠŽè‚ðUŒ‚‚·‚éŽd‘g‚Ý‚¾‚Á‚½‚ª¡“x‚Íattacked_id‚ðŽg‚¤ˆ×UŒ‚‚µ‚Ä‚«‚½‘ŠŽè‚ðUŒ‚‚·‚é‚悤‚É•ÏXB +‚½‚¾¡‚ÌŽd—l‚¾‚Æ“¯‘°ƒ‚ƒ“ƒXƒ^[‚ðUŒ‚‚µ‚Ä“¦‚°‚éê‡UŒ‚‚ðŽó‚¯‚½Žž‚»‚Ìê‚É‚È‚©‚Á‚½ƒ‚ƒ“ƒXƒ^[‚͂‚¢‚Ä—ˆ‚È‚‚È‚Á‚Ä‚¢‚Ü‚·B–{ŽI‚ÌŽd—l‚É‚ ‚Á‚Ä‚é‚©‚Ç‚¤‚©‚Í•s–¾‚Å‚·‚Ì‚Åî•ñ’ñ‹Ÿ‚ð‚¨Šè‚¢‚µ‚Ü‚·B(attacked_id‚Í‚¢‚Â‚àƒŠƒZƒbƒg‚³‚ê‚éˆ×‚Å‚·B‘Îô‚ª‚¢‚È‚¢‚킯‚Å‚à‚È‚¢‚Å‚·‚ª–{ŽI‚ÌŽd—l‚ð’m‚ç‚È‚¢‚Ì‚Å...) +Eƒƒ‚ƒŠ[‚ÌŽg—p—Ê‚ðŒ¸‚ç‚·ˆ×struct mob_data‚Æstruct npc_data‚ð•ÏXB(0412‚Å +map-server‚̃ƒ‚ƒŠ[‚ÌŽg—p—Ê‚ª164???KBytes‚¾‚Á‚½‚ª0414‚Å‚Í152???KBytes‚É‚È‚è‚Ü‚µ‚½B‚Ù‚ñ‚Ì‚µŒ¸‚Á‚½‚¾‚¯‚Å‚·‚ª‘‚¦‚é‚æ‚è‚Í‚Ü‚µ‚¾‚ÆŽv‚¢‚Ü‚·‚Ì‚Å...) +EƒS[ƒXƒgƒ^ƒCƒ€ŽÀ‘•B + ƒ}ƒbƒvˆÚ“®‚âƒeƒŒƒ|[ƒgA•œŠˆ‚µ‚½Žž‚É“G‚É‘_‚í‚ê‚È‚¢ŽžŠÔ‚ðd—͂ł̓S[ƒXƒgƒ^ƒCƒ€ŒÄ‚ñ‚Å‚¢‚Ü‚·B‚»‚̃S[ƒXƒgƒ^ƒCƒ€‚ÌŽÀ‘•‚Å‚·B +battle_athena.cnf‚ÅŽžŠÔ‚ðÝ’è‚Å‚«‚Ü‚·BŽžŠÔ‚ð0‚É‚·‚é‚ƃS[ƒXƒgƒ^ƒCƒ€‚Íì“®‚µ‚Ü‚¹‚ñB‚½‚¾‚±‚̃S[ƒXƒgƒ^ƒCƒ€‚ÍUŒ‚s“®AƒXƒLƒ‹Žg—pAƒAƒCƒeƒ€Žg—p‚ð‚·‚é‚Æ‚È‚‚È‚è‚Ü‚·B + char/int_guild.c + char/int_party.c + conf/battle_athena.cnf + db/mob_db.txt + doc/conf_ref.txt + login/login.c + map/atcommand.c + map/battle.c + map/battle.h + map/clif.c + map/itemdb.c + map/map.c + map/map.h + map/mob.c + map/npc.c + map/pc.c + map/pc.h + map/pet.c + map/skill.c ‚ðC³B(db/mob_db.txt‚Í//‚ð“ü‚ꂽ‚¾‚¯‚Å‚·‚ª...) + C³‚µ‚½Š‚ð‘S‚ÄŠo‚¦‚Ä‚Ü‚¹‚ñ‚̂Ńtƒ@ƒCƒ‹‚¾‚¯’m‚点‚Ü‚·B + +-------------- +//0412 by ‚¢‚Ç + +Eƒ‚ƒ“ƒXƒ^[’è‹`ƒf[ƒ^(“ú–{Œê)‚ÌÄ®— +@ ‹ŒŒfŽ¦”‚Ŏw“E‚Ì‚ ‚Á‚½Ž–€‚ɂ‚¢‚Ä‘å‘͈̂̔͂ÅC³ + snapshot387‚̃o[ƒWƒ‡ƒ“‚ðƒx[ƒX‚ÉC³‚µ‚Ü‚µ‚½B + conf/npc_monster.txt + +EƒAƒCƒeƒ€–¼‚Ì’è‹`‚ð‘å•C³ + (root) + item.list + (db/) + item_db.txt + item_value_db.txt + +Eƒ}ƒbƒvƒf[ƒ^‚Ì’è‹`‚ŃRƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚¢‚½ƒWƒ…ƒm[ŠÖ˜Aƒ}ƒbƒv‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ + conf/map_athena.cnf + +-------------- +//0411 by Ž€_ + +EŽIsnapshot‚Å‚·B‚»‚ê‚Ælogin_portAchar_portAmap_port‚Ìݒ肪‚È‚‚Ä‚à +ƒfƒtƒHƒ‹ƒg‚Å6900A6121A5121‚ðŽg‚¤‚悤‚É•ÏXB +Elogin.cAchar.cAchrif.cAclif.c ‚µC³B +Econf_ref.txt C³B +Elogin_port‚ð6900‚©‚瑼‚Ì•¨‚É•Ï‚¦‚½ê‡‚Íclientinfo.xml‚ð•Ï‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B + +-------------- +//0410 by Ž€_ + +GM—p‰EƒNƒŠƒbƒNƒƒjƒ…[uinamejŽg—pŽÒ‹§I—¹vŽÀ‘•B(ƒeƒXƒg‚Í‚µ‚Ä‚Ü‚¹‚ñB@ƒRƒ}ƒ“ƒh‚̓eƒXƒgÏ‚Ý‚Å‚·‚ª...) +0407‚ÌEXP‚ÉŠÖ‚·‚éC³‚É–â‘肪‚ ‚é‚炵‚¢‚Ì‚ÅC³‚µ‚Ü‚µ‚½B¡“x‚̓eƒXƒgÏ‚Ý‚Å‚·B +GM‚̃AƒJƒEƒ“ƒgID‚ðÝ’è‚Å‚«‚é‚悤‚É•ÏX‚ÆGM‚ðƒŒƒxƒ‹•Ê‚É•ª‚¯‚é‚悤‚É•ÏXB +(GM‚̃Œƒxƒ‹‚É‚æ‚é@ƒRƒ}ƒ“ƒh“™‚ɧŒÀ‚ð‚©‚¯‚é‚‚à‚è‚Å‚·‚ª¡§ŒÀ‚ª‚©‚¯‚Ä‚¢‚镨‚Í@kickA@kickall‚Ì‚Ý‚É‚È‚Á‚Ä‚¢‚Ü‚·B) +Epc.c + pc_readdb()Apc_gainexp()Apc_nextbaseexp()Apc_nextjobexp()A + pc_checkbaselevelup()Apc_checkjoblevelup() C³B + pc_isGM()Apc_read_gm_account() ’ljÁB +Epc.h + pc_isGM() C³B + pc_read_gm_account() ’ljÁB +Eexp.txt + ƒŒƒxƒ‹‚ªã‚ª‚ç‚È‚¢”’l‚ð999999999‚©‚ç0ˆÈ‰º‚É•ÏXB + ƒŒƒxƒ‹‚ðã‚°‚éˆ×‚É•K—v‚ÈEXP‚ð999999999ˆÈã‚É‚·‚邱‚Æ‚à‰Â”\B +Eclif.c + clif_GM_kickack()Aclif_GM_kick()Aclif_parse_GMKick() ’ljÁB +Eclif.h + clif_GM_kickack()Aclif_GM_kick() ’ljÁB +Eatcomand.c + strncmpi‚ðstrcmpi‚É•ÏXB + @kickA@kickall ƒRƒ}ƒ“ƒh’ljÁB + @kick <ƒLƒƒƒ‰–¼> + Ž©•ªˆÈŠO‚̃Lƒƒƒ‰‚ÌÚ‘±‚ð‹§I—¹‚³‚¹‚éB(Ž©•ª‚æ‚èGMƒŒƒxƒ‹‚ª + ’á‚¢ƒLƒƒƒ‰‚É‚µ‚©Žg‚¦‚È‚¢BGM‚Å‚Í‚È‚¢ƒLƒƒƒ‰‚ÌGMƒŒƒxƒ‹‚Í0) + @kickall + ŽI‚ÉÚ‘±‚µ‚Ä‚¢‚é‘S‚ẴLƒƒƒ‰‚ÌÚ‘±‚ð‹§I—¹‚³‚¹‚éB(Ž©•ª‚Æ + GM‚ðŠÜ‚ß‚Ä) ŽIƒ_ƒEƒ“—p‚̃Rƒ}ƒ“ƒh‚Å‚·BGMƒŒƒxƒ‹‚ª99‚¶‚á‚È‚¢‚Æ + Žg‚¦‚È‚¢B +Econf/GM_account.txt ’ljÁB + GM‚Æ‚µ‚Ä”FŽ¯‚·‚éƒAƒJƒEƒ“ƒgID‚ðÝ’è‚·‚éƒtƒ@ƒCƒ‹‚Å‚·B +Emmo.h + DEFAULT_WALK_SPEED‚ð140‚©‚ç150‚É•ÏXB(‚±‚ꂪ–{ŽI‚É‚ ‚Á‚Ä‚é”’l + ‚Ý‚½‚¢‚Å‚·‚Ì‚Å...) + struct gm_account ’ljÁB +Eclient_packet.txt + ƒpƒPƒbƒg0x00cd ’ljÁB +Elogin_port‚ðcnf‚œǂނ悤‚É•ÏXB(‚½‚¾6900‚©‚çƒ|[ƒg‚ð•Ï‚¦‚é‚ƃNƒ‰ƒCƒAƒ“ƒg‚ª”FŽ¯‚Å‚«‚È‚¢–Í—l‚È‚Ì‚Å–³‘Ê‚È‚±‚Æ‚¾‚Á‚½‚è‚à‚µ‚Ü‚·‚ª...) + char.cAlogin.cAchar_athena.cnfAlogin_athena.cnf C³B +E•’ʂ̃AƒJƒEƒ“ƒg쬂łÍGM‚É‚È‚ê‚È‚¢‚悤‚Élogin.c‚ð•ÏXB +Elogin/makefileAmap/makefile C³B + +-------------- +//0408 by ŒÓ’±—– + +E405‚ÌV‚µ‚¢—ƒRƒ}ƒ“ƒh‚ðˆÈ‘O‚Ìatcommand.c‚ÉŽæ‚èž‚Ý‚Ü‚µ‚½B + E@kami‚ðC³ + E@kill,@recall,@charjob,@revive,@charstats,@charoption,@charsave, + @night,@day,@doom,@doommap,@raise,@raisemap,@charbaselvl,@charjlvl + ‚ð’ljÁ•ƒƒbƒZ[ƒW‚ð“ú–{Œê‚É•ÏX•‚µC³ + + atcommand.c + ’ljÁ‚ÆC³ + +Eˆê•”‚̃XƒLƒ‹‚ÌŒø‰ÊŽÀ‘• + E•sŽ€g‚̃W[ƒNƒtƒŠ[ƒhAƒCƒhƒDƒ“‚Ì—ÑŒçAK‰^‚̃LƒXA + ƒtƒŒƒCƒ€ƒ‰ƒ“ƒ`ƒƒ[AƒtƒƒXƒgƒEƒFƒ|ƒ“Aƒ‰ƒCƒgƒjƒ“ƒOƒ[ƒ_[A + ƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“ + + map.h + struct skill_unit‚Érange‚ð’ljÁB + skill.c + FXC³ + skill.h + enum‚ÌC³‚È‚Ç +-------------- +//0407 by Ž€_ + +Eƒyƒbƒg‚̃oƒOC³B(‚½‚¾Ž©•ª‚ÅÄŒ»‚Å‚«‚È‚©‚Á‚½‚Ì‚Å–â‘è‚É‚È‚è‚»‚¤‚ÈŠ‚¾‚¯C³‚µ‚Ü‚µ‚½B) +Eƒyƒbƒg‚̈ړ®‘¬“x‚ðpet_db‚ɒljÁB + pet.h + struct pet_db‚Éspeed’ljÁB + pet.c + pet_catch_process2()Aread_petdb() C³B + pet_db.txt + ˆÚ“®‘¬“x’ljÁB + (ƒRƒ}ƒ“ƒgƒAƒEƒg‚µ‚Ä‚¢‚é‚̂̓Wƒ‹ƒ^ƒX‚ƃAƒŠƒX‚Å‚·B•ßŠl—p‚Ì + ƒAƒCƒeƒ€‚ª‘¶Ý‚·‚邱‚ƂƃpƒtƒH[ƒ}ƒ“ƒX‚ð‚·‚é‚±‚Æ‚©‚çl‚¦‚Ä + ’ljÁ‚³‚ê‚é—\’è‚Ì•¨‚Æl‚¦‚ç‚ê‚Ü‚·B‚½‚¾‚»‚̕ߊl—p‚̃AƒCƒeƒ€‚ª + ‚ ‚é‚ƃNƒ‰ƒCƒAƒ“ƒg‚ð—Ž‚¿‚Ü‚·‚Ì‚Å’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B’ljÁ‚µ‚Ä‚à + ‘䎌‚̓|ƒŠƒ“‚Ì•¨‚Å‚·‚Ì‚Å... •ßŠl—p‚̃AƒCƒeƒ€ˆÈŠO‚Í“K“–‚É“ü‚ꂽ + •¨‚Å‚·B) +Epc.cAclif.c + pc_equipitem() C³B + clif_parse_EquipItem() C³B + pc_equipitem()‚Ì–¢ŠÓ’èƒAƒCƒeƒ€‚̃`ƒFƒbƒN‚ðclif_parse_EquipItem()‚É + ˆÚ“®‚µ‚Ü‚µ‚½B(ƒyƒbƒg‚Ì‘•”õ‚à‚ ‚è‚Ü‚·‚Ì‚Å...) +EƒŒƒxƒ‹‚ð99ˆÈã‚É‚ ‚°‚é‚悤‚É•ÏX‚ÆE‹Æ•Ê‚Ƀx[ƒXƒŒƒxƒ‹‚ÌŒÀŠEƒŒƒxƒ‹‚ðÝ’è‚Å‚«‚é‚悤‚ÉC³B + map.h + MAX_LEVEL’ljÁB + pc.c + pc_nextbaseexp(), pc_nextjobexp() C³B + pc_readdb() C³B +Eexp.txt C³BE‹ÆƒŒƒxƒ‹‚Æ“¯‚¶‚悤‚Ƀx[ƒXƒŒƒxƒ‹‚àEXPƒe[ƒuƒ‹‚ð3‚Âì‚è‚Ü‚µ‚½BƒŒƒxƒ‹ƒAƒbƒv‚ðŽ~‚ß‚½‚¢ƒŒƒxƒ‹‚Ìexp‚ð999999999‚É‚·‚ê‚΂»‚êˆÈヌƒxƒ‹‚ªã‚ª‚è‚Ü‚¹‚ñB‚‚܂ènoviceA1ŽŸE‹Æ‚Æ2ŽŸE‹Æ‚̃x[ƒXƒŒƒxƒ‹‚ÌŒÀŠE‚ðˆá‚¤‚悤‚ÉÝ’è‚Å‚«‚Ü‚·B‚»‚µ‚ăx[ƒXƒŒƒxƒ‹99ˆÈã‚Éオ‚é‚悤‚É‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B(exp.txt‚ÌC³‚ª•K—v‚Å‚·‚ª–{ŽI‚ƈႤ‚悤‚Éݒ肵‚½‚¢ê‡‚ÉC³‚µ‚ÄŽg‚Á‚Ä‚‚¾‚³‚¢B) +E‘®«‚É‚æ‚é‰ñ•œ‚ðbattle_athena.cnf‚ÅÝ’è‚Å‚«‚é‚悤‚É•ÏXB + attr_fix.txt C³B + battle.h + struct Battle_Config‚Éattr_recover ’ljÁB + battle.c + battle_config_read() C³B + battle_athena.cnf C³B +Econf_ref.txt C³B +Eclient_packet.txt C³BƒyƒbƒgƒpƒPƒbƒg’ljÁ‚Æ‚µC³B + +-------------- +//0402 by ŒÓ’±—– + +E400‚̃oƒO‚ðˆê•”C³ + EŠ|‚©‚Á‚Ä‚È‚¢ƒXƒLƒ‹Œø‰Ê‚É‚æ‚éƒXƒe[ƒ^ƒXŒvŽZ‚ªs‚í‚ê‚Ä‚µ‚Ü‚¤ƒoƒOC³ + EŒø‰ÊC³F‚ ‚‚Ü‚ÅŒø‰Ê‚ÌŒvŽZ‚ÌC³‚ÅAŽg‚¦‚È‚¢ƒXƒLƒ‹‚ÍŽg‚¦‚Ü‚¹‚ñB + ƒXƒsƒAƒNƒBƒbƒPƒ“Aƒvƒƒ”ƒBƒfƒ“ƒXA푾ŒÛ‚Ì‹¿‚«A + —[—z‚̃AƒTƒVƒ“ƒNƒƒXAŒû“JA•sŽ€g‚̃W[ƒNƒtƒŠ[ƒhA + ƒCƒhƒDƒ“‚Ì—ÑŒçAƒT[ƒrƒXƒtƒH[ƒ†[AK‰^‚̃LƒX + EŒø‰Ê’ljÁF‚ ‚‚Ü‚ÅŒø‰Ê‚ÌŒvŽZ‚̒ljÁ‚ÅAŽg‚¦‚È‚¢ƒXƒLƒ‹‚ÍŽg‚¦‚Ü‚¹‚ñB + ƒnƒ~ƒ“ƒOAŽ„‚ð–Y‚ê‚È‚¢‚ÅcAƒj[ƒxƒ‹ƒ“ƒO‚ÌŽw—Ö(•ŠíƒŒƒxƒ‹–³Ž‹)A + ƒGƒ^[ƒiƒ‹ƒJƒIƒXAƒhƒ‰ƒSƒmƒƒW[ + EŒø‰Ê•t‰ÁŒn‚Í‚¿‚å‚Á‚Æ‚Å‚à‰ö‚µ‚¢ƒXƒLƒ‹‚Í‘S‚ÄŽg—p‚Å‚«‚È‚¢‚悤‚ÉC³ + EUŒ‚ŒnƒXƒLƒ‹‚Í‚Ù‚Æ‚ñ‚ÇŒ©‚Ä‚È‚¢‚Ì‚Å‚½‚Ô‚ñƒoƒO‘½‚¢‚Å‚·B + E‘S‚Ä–¢ƒeƒXƒg‚Å‚·B‰ö‚µ‚·‚¬‚é•”•ª‚ðC³‚µ‚½‚¾‚¯‚Å‚·B + + map.h + MAX_STATUSCHANGE‚ð128‚ÉC³ + pc.c + pc_calcstatus()C³ + skill.c/skill.h + enum‚ðC³ + skill_status_change_start()C³ + battle.c + battle_calc_weapon_attack()‚È‚ÇC³ + +-------------- +//0400 by AppleGirl + +Can Someone Help Me. +2-2 Skills added. +All The Mastery Skills. +SpearQuicken,Providence +New Bard Skill Assassin Cross Of Sunset +Providence +Frost Joke +Apple of Idun +Service For You +Meteor Strike (Different Style) +Assassin Cross Of Sunset (not tested) +All Masteries Done +Providence +Musical Strike +Throw Arrow +Frost Weapon << (Problems with elements)? +Flame Launcher << (Problems with elements)? +Seismic Weapon << (Problems with elements)? +Lightning Loader << (Problems with elements)? +Spirit Recovery +Potion Pitcher (Tato) +Axe Mastery (Tato) +Spear Quicken +Not Totally Working: +Combo Finish +Quadruple strike +Triple Attack +(skills in skill.c) (need to be finished.) +CP_ARMOR +CP_HELM +CP_SHIELD +CP_WEAPON +STRIP_HELM +STRIP_WEAPON +STRIP_SHIELD +STRIP_ARMOR + +* “K“–‚Șa–ó * +2-2ŽŸEƒXƒLƒ‹‚ð’ljÁ‚µ‚Ü‚µ‚½ +‘S‚Ä‚ÌC—ûƒXƒLƒ‹AƒXƒsƒAƒNƒCƒbƒPƒ“Aƒvƒƒ”ƒBƒfƒ“ƒXA +—[—z‚̃AƒTƒVƒ“ƒNƒƒXi–¢ƒeƒXƒgjAŠ¦‚¢ƒWƒ‡[ƒNAƒCƒhƒDƒ“‚Ì—ÑŒçA +ƒT[ƒrƒXƒtƒH[ƒ†[AƒƒeƒIƒXƒgƒ‰ƒCƒNi‚µˆá‚¤jA +ƒ~ƒ…[ƒWƒJƒ‹ƒXƒgƒ‰ƒCƒNA–‚¿AƒtƒƒXƒgƒEƒFƒ|ƒ“(‘®«‚ª–â‘è‚ ‚èH) +ƒtƒŒ[ƒ€ƒ‰ƒ“ƒ`ƒƒ[(V)AƒTƒCƒYƒ~ƒbƒNƒEƒFƒ|ƒ“(V)Aƒ‰ƒCƒgƒjƒ“ƒOƒ[ƒ_[(V) +‘§Aƒ|[ƒVƒ‡ƒ“ƒsƒbƒ`ƒƒ[ +Š®‘S‚É‚Í“‚©‚È‚¢ƒXƒLƒ‹F +–Ò—´ŒA—øŠÂ‘Sg¶AŽO’i¶ +(skills in skill.c) (Š®—¹‚³‚ê‚é•K—v‚ª‚ ‚é) +ƒPƒ~ƒJƒ‹ƒA[ƒ}[ƒ`ƒƒ[ƒWAƒPƒ~ƒJƒ‹ƒwƒ‹ƒ€ƒ`ƒƒ[ƒWA +ƒPƒ~ƒJƒ‹ƒV[ƒ‹ƒhƒ`ƒƒ[ƒWAƒPƒ~ƒJƒ‹ƒEƒFƒ|ƒ“ƒ`ƒƒ[ƒWA +ƒXƒgƒŠƒbƒvƒwƒ‹ƒ€AƒXƒgƒŠƒbƒvƒEƒFƒ|ƒ“ +ƒXƒgƒŠƒbƒvƒV[ƒ‹ƒhAƒXƒgƒŠƒbƒvƒA[ƒ}[ + +*’ˆÓ !! CAUTION !! by ŒÓ’±—–* +‚±‚Ì400‚ɂ̓oƒO‚ª‘å—Ê‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B +there are many many BUGS in this update(400) !! Be careful !! + +-------------- +//0399 by ŒÓ’±—– + +EMOBƒXƒLƒ‹Žg—pðŒ‚âs“®‚ðC³ + E–³s“®MOB‚ª‘Ò‹@Žž‚̃XƒLƒ‹‚ðŽg—p‚Å‚«‚È‚¢–â‘è‚ðC³ + EðŒƒXƒLƒ‹”½‰ž(skillused)‚ª‚ǂ̃XƒLƒ‹‚É‚à”½‰ž‚µ‚Ä‚¢‚½ƒoƒOC³ + E”ñˆÚ“®MOB‚ª’ÇŒ‚‚µ‚Ä‚‚é–â‘è‚ðC³ + + mob.c + mob_ai_sub_hard()C³ + mobskill_event()C³ + mobskill_use()C³ + skill.c + skill_attack()C³ + +EMOBƒXƒLƒ‹ˆê•”ŽÀ‘• + EŽ©Œˆ(ƒGƒtƒFƒNƒg–³‚µ?)AŽ©”šAƒ^ƒoƒR‚ð‹z‚¤A”͈ÍUŒ‚ + HP‹zŽû‚Q‚Â(’Êí/–‚–@ji‰ñ•œƒGƒtƒFƒNƒg–³‚µ?jŽÀ‘• + + (db) + skill_db.txt + ƒXƒ‚[ƒLƒ“ƒO‚È‚Ç‚ðC³ + (map/) + skill.c + skill_castend_damage_id(),skill_castend_nodamage_id()C³ + battle.c + battle_calc_misc_damage()C³ + +E–¢ŠÓ’èƒAƒCƒeƒ€‚ª‘•”õ‚Å‚«‚È‚‚È‚è‚Ü‚µ‚½ +E–¢ŠÓ’èƒAƒCƒeƒ€‚ɃJ[ƒh‚ª‚³‚¹‚È‚‚È‚è‚Ü‚µ‚½ + + pc.c + pc_equipitem(),pc_insert_card()C³ + clif.c + clif_use_card()C³ + +Ebattle_athena.cnf‚ÉMOB‚Ì”z’uŠ„‡‚ð’è‹`‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + E”z’u”‚ª‚P‚ÌMOB‚ɂ‚¢‚Ä‚Í“K—p‚³‚ê‚Ü‚¹‚ñ + EŒvŽZŒã‚Ì”z’u”‚ª‚P–¢–ž‚ÌꇂP‚ÉC³‚³‚ê‚Ü‚·B + + (conf/) + battle_athena.cnf + mob_count_rate’ljÁ + (doc/) + conf_ref.txt + C³ + (map/) + battle.c/battle.h + struct BattleConfig ‚É mob_count_rate ƒƒ“ƒo’ljÁ + npc.c + npc_parse_mob()‚ÌC³ + +Eƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…‚ª‘ŠŽè‚ª‚P•C‚Å‚à‚Æ‚è‚ ‚¦‚¸“–‚½‚é‚悤‚É‚È‚Á‚½B + + skill.c + skill_castend_damage_id()C³ + +EŠw¶–X쬃Cƒxƒ“ƒg‚ÌC³ + + (conf/) + npc_event_making.txt + ƒAƒƒGƒxƒ‰(606)‚ðƒAƒƒG(704)‚ÉB + +EƒpƒPƒbƒgî•ñC³ + + (doc/) + client_packet.txt + 0199ƒpƒPƒbƒgC³ + +-------------- +//0397 by ‚¢‚Ç + +Eƒ‚ƒ“ƒXƒ^[’è‹`ƒf[ƒ^(“ú–{Œê)‚Ì®— + Enpc_monster25.txt‚ðnpc_monster.txt‚ɃŠƒl[ƒ€‚µA“à—e‚ð®—(Œ»Ýmob”:13450) + E‚»‚ÌŒy—ʔłƂµ‚Änpc_monster_lite.txt‚ðì¬(Œ»Ýmob”:11959) + Eã‹L‚ÌC³‚É‚ ‚킹‚Ämap_athena.cnf‚ðC³ + +-------------- +//0395 by ŒÓ’±—– + +EŽæ‚芪‚«MOB‚Ìs“®C³ + EƒAƒ“ƒNƒ‹‚Ȃǂňړ®‚Å‚«‚È‚¢ê‡Žå‚ɋ߂©‚È‚¢‚悤‚ÉC³ + EƒƒbƒN‚µ‚Ä‚¢‚é‚ÆŽå‚ɋߊñ‚鈗‚ð‚µ‚È‚¢‚悤‚ÉC³ + EŽå‚ªƒeƒŒƒ|[ƒg‚·‚é‚Æ’Ç‚¢‚©‚¯‚é‚悤‚ÉC³(•t‹ß10x10ƒ}ƒX’ö“x) + EŽå‚Ì‚»‚΂ɂ¢‚é‚Æ‚«‚̓‰ƒ“ƒ_ƒ€•às‚ð‚µ‚È‚¢‚悤‚ÉC³ + + mob.c + mob_ai_sub_hard_mastersearch()C³ + mob_can_move()’ljÁ + mob_ai_sub_hard()C³ + +EMOB‚Ìs“®C³ + EƒXƒLƒ‹Žg—pƒfƒBƒŒƒCˆ—‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³ + E‰r¥‚Ì‚È‚¢ƒXƒLƒ‹‚Ítimer‚ðŽg‚í‚È‚¢‚悤‚ÉC³(Ž€–SŽžˆ—‘Îô) + + mob.c + mobskill_use(),mobskill_use_id()C³ + +EMOBƒGƒ‚[ƒVƒ‡ƒ“‚ÌŽÀ‘• + EƒGƒ‚[ƒVƒ‡ƒ“‚ÌŽí—Þ‚ª‚í‚©‚ç‚È‚¢‚à‚Ì‚Í‘S‚Äu!v‚É‚È‚è‚Ü‚·B + ”²‚¯‚Ä‚¢‚éƒf[ƒ^‚ð–„‚ß‚Ä‚‚ê‚é‚Æ‚¤‚ꂵ‚¢‚Å‚·B + + (db/) + mob_skill_db.txt + ‚¢‚‚‚©‚ÌMOB‚̃Gƒ‚[ƒVƒ‡ƒ“‚Ì€–Ú‚Ì’l1‚ÉŽí—Þ‚ð“ü‚ꂽB + + (map/) + skill.c + skill_castend_nodamage_id()C³ + clif.c/clif.h + clif_emotion()’ljÁ + +EƒpƒPƒbƒg‰ðÍ.txt‚ðclient_packet.txt‚ɉü–¼•C³ + + (doc/) + client_packet.txt + ƒGƒ‚[ƒVƒ‡ƒ“‚Ìà–¾’ljÁ + +E‚Ç‚¤‚â‚çŽæ‚芪‚«MOB‚ÌŽí—ނ͌¢ƒf[ƒ^‚¾‚Á‚½‚Á‚Û‚¢‚Å‚·B + ‚µ‚©‚àMOB¢Š«‚ł͎艺¢Š«‚ƈႤMOB‚𢊫‚·‚é‚Ý‚½‚¢‚Å‚·‚ËB + Ú‚µ‚¢l‚Ímob_skill_db.txt‚𒼂µ‚Ä‚‚ê‚é‚ÆB + +-------------- +//0393 by ‚¢‚Ç + +EcharŽI‚Å‚ÌloginŽI‚̃|[ƒgÝ’è‚ð6900‚ɌŒ肵A•ÏX‚Å‚«‚È‚¢‚悤‚É‚µ‚½ +@(login‘¤‚Ń|[ƒg6900ŒÅ’è‚É‚È‚Á‚Ä‚¢‚½‚Ì‚Åchar‘¤‚à‚»‚ê‚ɇ‚킹‚Ü‚µ‚½B) + char/char.c + conf/char_athena.cnf + doc/conf_ref.txt + +-------------- +//0392 by ŒÓ’±—– + +EMOB‚Ìs“®C³ + E‰½ŒÌ‚©last_thinktick‚ª‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢–â‘èC³ + Eã‚ÉŠÖ˜A‚µ‚ÄPC‚ª‹ß‚‚É‚¢‚Ä‚àŽè”²‚«ˆ—‚ªs‚í‚ê‚é–â‘èC³ + i‚Ç‚¤‚â‚牊ú‚©‚ç‚̃oƒO‚¾‚Á‚½–Í—lH ‚±‚̃oƒO‚ÆA + V‚µ‚¢Žè”²‚«ˆ—‚ÌŽd—l‚ªƒ^ƒbƒO‚ð‘g‚ñ‚ÅŽc‘œ‚ðì‚Á‚Ä‚¢‚½–Í—lj + EŽæ‚芪‚«MOB—p‚ÌAIˆ—’ljÁi‚Ü‚¾‰ö‚µ‚¢‚Å‚·j + EMOB‚̃XƒLƒ‹ƒfƒBƒŒƒC‚ðƒXƒLƒ‹€–Ú‚²‚Æ‚ÉŽ‚‚悤‚É•ÏX + EƒXƒLƒ‹ƒfƒBƒŒƒC‚ª‘å‚«‚È€–ڂł̓I[ƒo[ƒtƒ[‚µ‚Ä‚¢‚½–â‘è‚ðC³ + + map.h + struct mob_data‚Ì skilldelay‚ð”z—ñ‚É‚µ‚Äunsigned int‚É•ÏX + mob.h + struct mob_skill‚Ìcasttime,delay‚ðint‚É•ÏX + mob.c + mob_ai_sub_hard_mastersearch()’ljÁ + mob_changestate(),mob_delete(),mob_catch_delete(),mob_damage(), + mobskill_use(),mobskill_use_id(),mobskill_use_pos(), + mobskill_castend_id(),mobskill_castend_pos(), + mob_ai_sub_hard(),mob_ai_sub_lazy()‚È‚ÇC³ + +EMOBƒXƒLƒ‹‚̎艺¢Š«‚ƃ‚ƒ“ƒXƒ^[¢Š«ŽÀ‘• + Emob_skill_db.txt‚Ì‘Ž®•ÏXiÅŒã‚É’l‚ð‚P‚’ljÁAŽæ‚芪‚«MOB‚ÌIDj + EŽæ‚芪‚«MOB‚ª‚í‚©‚ç‚È‚©‚Á‚½‚à‚̂̓Rƒƒ“ƒg‰»‚µ‚Ä‚¢‚Ü‚· + ‚í‚©‚él‚Í“ü—Í‚æ‚낵‚‚¨Šè‚¢‚µ‚Ü‚·B + EŒ»Ý‚ÍŽæ‚芪‚«‚͈ê“x“|‚µ‚½‚畦‚«‚È‚¨‚µ‚Ü‚¹‚ñB + Eƒ{ƒX‚ªƒeƒŒƒ|[ƒg‚µ‚Ä‚àŽæ‚芪‚«‚Í’Ç‚¢‚©‚¯‚Ü‚¹‚ñB + E–{ŽI‚Å‚Ç‚¤‚È‚Á‚Ä‚é‚Ì‚©’m‚ç‚È‚¢‚Ì‚ÅAŠÔˆá‚Á‚Ä‚éꇂ͋³‚¦‚Ä‚‚¾‚³‚¢B + + (db/) + mob_skill_db.txt + Žè‰º¢Š«‚Ȃǂ̃f[ƒ^C³ + + (map/) + skill.c + skill_castend_nodamage_id()C³ + +-------------- +//0391 by Ž€_ + +Eƒyƒbƒg‚̈ړ®’†‚ɃpƒtƒH[ƒ}ƒ“ƒX‚ð‚·‚é‚ƃyƒbƒg‚ª’âŽ~‚·‚é‚悤‚É•ÏXB + (ƒyƒbƒg‚̈ʒu‚ª‚¸‚ê‚邽‚ßC³‚µ‚Ü‚µ‚½B) + pet.c + pet_performance() C³B +EŽ€‚ñ‚¾ƒ‚ƒ“ƒXƒ^[‚Í‚Ç‚ñ‚Ès“®‚à‚Æ‚ê‚È‚¢‚悤‚É•ÏXB(‚±‚ê‚Å–³“G + ƒ‚ƒ“ƒXƒ^[‚ª‚¢‚È‚‚È‚é‚Æ‚¢‚¢‚Å‚·‚ª...) + mob.c + mob_changestate(),mob_delete(),mob_catch_delete(),mob_damage(), + mob_ai_sub_hard(),mob_ai_sub_lazy() C³B +EPCANPCA°ƒAƒCƒeƒ€‚ªŽg‚¤ID‚͈̔͂𒲮B + °ƒAƒCƒeƒ€‚Í0‚©‚ç500000‚Ü‚Å‚ÅPC‚Í500000‚©‚ç100000000ANPC + (ƒ‚ƒ“ƒXƒ^[‚ðŠÜ‚ß‚Ä)‚Í110000000‚©‚ç–ñ21‰‚Ü‚Å‚É‚È‚è‚Ü‚·B + (-‚ðŠÜ‚ß‚é‚Æ‚à‚Á‚Ɣ͈͂ªL‚‚È‚è‚Ü‚·‚ª‚³‚·‚ª‚É‚»‚±‚Ü‚Å‚Í•K—v‚È‚¢‚Æ + Žv‚¢‚Ü‚·‚Ì‚Å...) + map.h + MAX_FLOORITEM ’ljÁ(‚±‚ê‚ð•Ï‚¦‚é‚Æ°ƒAƒCƒeƒ€‚Ìő唂ð•Ï‚¦‚é + ‚±‚Æ‚ª‚Å‚«‚Ü‚·B¡‚Í100000‚É‚È‚Á‚Ä‚¢‚Ü‚·B‚½‚¾‚±‚ê‚Í•K‚¸ + 500000ˆÈ‰º‚É‚µ‚Ä‚‚¾‚³‚¢B‚»‚¤‚µ‚È‚¢‚Ƴ‚µ‚“®‚‚©‚Ç‚¤‚© + •ÛØ‚Å‚«‚Ü‚¹‚ñB) + map.c + map.h‚ɇ‚킹‚Ä‚µC³B + npc.h + START_NPC_NUM ’ljÁB + npc.c + npc.h‚ɇ‚킹‚Ä‚µC³B + login.h + START_ACCOUNT_NUM‚ÆEND_ACCOUNT_NUM ’ljÁB + login.c + login.h‚ɇ‚킹‚ÄC³BEND_ACCOUNT_NUMˆÈã‚Éaccount‚ð + ì‚ê‚È‚¢‚悤‚É•ÏXB +EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚É•ŠíŒ¤‹†‚ð‚Q‰ñ“K—p‚·‚é‚悤‚É•ÏXB + (Œ‹‹Ç‚ÍŒ³‚É–ß‚·‚±‚Æ‚É‚È‚è‚Ü‚µ‚½...^^;) + battle.c + Damage battle_calc_weapon_attack() C³B +Emob‚̃XƒLƒ‹Žg—p‚ðbattle_athena.cnf‚ÅŒˆ‚ß‚é‚悤‚É•ÏXB + mob.c + mobskill_use() C³B + battle.h + battle.c + struct Battle_Config‚Émob_skill_use’ljÁB + battle_athena.cnf + mob_skill_use’ljÁB(ݒ肵‚È‚¢‚Æno‚Å‚·B) +Ebattle_athena.cnf + mob‚ð“ñd‚Å“Ç‚ß‚È‚¢‚悤‚Énpc: conf/npc_monster.txt‚ðíœB + (ÅV‚Ínpc_monster25.txt‚È‚Ì‚Å...) + +-------------- +//390 by ŒÓ’±—– + +Eƒo[ƒWƒ‡ƒ“î•ñŠ“¾•”•ª‚ð‚µ•ÏX + EMODƒo[ƒWƒ‡ƒ“‚ð’è‹`‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½BÚׂÍversion.h‚ðB + ‹C‚ªŒü‚¢‚½‚Æ‚«‚©A‘å‚«‚ÈXV‚ª‚ ‚é‚Æ‚«‚È‚Ç‚É•ÏX‚µ‚Ä‚‚¾‚³‚¢B + Eƒo[ƒWƒ‡ƒ“checkŽž‚Ìset eofƒƒO‚ªo‚È‚¢‚悤‚ɃpƒPƒbƒg7532’ljÁB + + (common/) + version.h + MODƒo[ƒWƒ‡ƒ“‚ð’è‹`‚Å‚«‚é‚悤‚ÉB + (tool/) + checkversion + MODƒo[ƒWƒ‡ƒ“‚ð•\Ž¦‚·‚é‚悤‚ÉB + (login/char/map) + login.c/char.c/clif.c + MODƒo[ƒWƒ‡ƒ“‚̈—’ljÁA + ƒpƒPƒbƒg7532iØ’fjˆ—’ljÁB + +E‚»‚Ì‘¼FXC³ + E‚±‚Ü‚²‚Ü‚µ‚½C³‚΂©‚è‚Å‚·‚ªA‚ ‚Ü‚èŠo‚¦‚Ä‚¢‚Ü‚¹‚ñB + EMOBƒXƒLƒ‹ðŒ‚Åslavelt,attackpcgtˆ—ŽÀ‘•i–¢ƒeƒXƒgjB + EMOB‚̎艺¢Š«‚Ì‚½‚ß‚Ì‹@\’ljÁi‚Ü‚¾¢Š«‚Å‚«‚Ü‚¹‚ñjB + E”͈̓XƒLƒ‹Œø‰Ê”͈͂Ɏ€–SPC‚ª‚¢‚é‚ÆŽI‚ª—Ž‚¿‚éƒoƒOC³B + EMOBŽc‘œ‚ªo‚È‚c‚È‚Á‚Ä‚½‚ç‚¢‚¢‚ÈB + + (map/) + mob.c/mob.h/map.h/battle.c + FX’ljÁ + + (db/) + mob_skill_db.txt + ƒ‹[ƒgŽžˆ—‚ÆA‘®«•ÏXƒXƒLƒ‹‚̃Rƒƒ“ƒg‚ðŠO‚µ‚½B + i‘®«•ÏX‚Í–{ŽI‚Å“®‚¢‚Ä‚È‚¢‚炵‚¢‚à‚Ì‚àƒRƒƒ“ƒg‚ðŠO‚µ‚Ä‚Ü‚·B + –â‘肪‚ ‚éꇂÍĂуRƒƒ“ƒg‰»‚µ‚Ä‚‚¾‚³‚¢j + +-------------- +//389 by ‚¢‚Ç + +E388‚Ì•ÏX + ƒo[ƒWƒ‡ƒ“î•ñ‚ðcommon/version.h“à‚̒蔂ðŽg—p‚·‚é‚悤‚É•ÏX + +-------------- +//388 by ŒÓ’±—– + +Eƒo[ƒWƒ‡ƒ“î•ñŠ“¾ƒc[ƒ‹“Y•t + Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B + Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B + Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B + + ƒo[ƒWƒ‡ƒ“‚ðŠm”F‚·‚é—p“r‚æ‚è‚ÍAƒT[ƒo[‚̶‘¶Šm”F—p‚Æ‚¢‚Á‚½‚©‚ñ‚¶‚Å‚· + ƒpƒPƒbƒg7530/7531‚ÌÚׂ̓\[ƒX‚ðŒ©‚Ä‚‚¾‚³‚¢B + + (tool/) + checkversion + ƒo[ƒWƒ‡ƒ“Šm”Fƒc[ƒ‹PerlƒXƒNƒŠƒvƒg + + (login/) + login.c + ƒpƒPƒbƒg7530/7531‚̈—’ljÁ + (char/) + char.c + ƒpƒPƒbƒg7530/7531‚̈—’ljÁ + (map/) + clif.c + ƒpƒPƒbƒg7530/7531‚̈—’ljÁ + +E384ˆÈ‘O‚Ìathena.txt‚à“Ç‚Ýž‚ß‚é‚悤‚É‚µ‚Ü‚µ‚½ + Econvert‚ª–Ê“|‚ÈlŒü‚¯B + E³‚µ‚“Ç‚Ýž‚ß‚é•ÛØ–³‚µBƒoƒbƒNƒAƒbƒv‚ð–Y‚ꂸ‚ÉB + + (char/) + char.c + 384‚Ì•ûŽ®‚Å“Ç‚Ýž‚ß‚È‚¢ƒf[ƒ^‚Í384ˆÈ‘O‚Ì•ûŽ®‚àŽŽ‚·‚悤‚ÉB + +Econf_ref.txt/help.txt/getaccountC³ + help.txt + petƒRƒ}ƒ“ƒh‚Ìà–¾’ljÁ + (doc/) + conf_ref.txt + petŠÖ˜A‚ÌÝ’è‚Ìà–¾’ljÁ + (tool/) + getlogincount + •\Ž¦‚ÌC³ + +-------------- +//387 by ‚¢‚Ç +EconfƒtƒHƒ‹ƒ_“à‚ÌNPC’è‹`ƒf[ƒ^‚Ì®— + ˆÈ‰º‚̃tƒ@ƒCƒ‹‚ð휂µ‚Ü‚µ‚½ + npc_kafraJ.txt + npc_mind_prtmons.txt + npc_script2J.txt(npc_event_mobtim.txt‚É“¯‚¶‚à‚Ì‚ª‚ ‚Á‚½‚½‚ß) + npc_testJ.txt(‚Ù‚Ú“¯‚¶‚±‚Æ‚ª@ƒRƒ}ƒ“ƒh‚Åo—ˆ‚邽‚ß) + npc_warp25.txt(npc_warp.txt‚É“‡) + + ˆÈ‰º‚̃tƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ÏX‚µ‚Ü‚µ‚½ + npc_monster3.txt -> nop_monster2E.txt + npc_monster3J.txt -> npc_monster25.txt + npc_monster.txt -> npc_monsterE.txt + npc_monsterJ.txt -> npc_monster.txt + npc_sampleJ.txt -> npc_sample.txt + npc_script3j.txt -> npc_script2.txt + npc_script25J.txt -> npc_town_lutie.txt + npc_shop1J.txt -> npc_shop_test.txt + npc_shop2J.txt -> npc_shop_mobtim.txt + npc_shop3J.txt -> npc_shop2.txt + npc_shop.txt -> npc_shopE.txt + npc_shopJ.txt -> npc_shop.txt + npc_testJ.txt -> npc_test.txt + npc_warp3.txt -> npc_warp2.txt + npc_warp4.txt -> npc_warp25.txt + +Eƒ}ƒbƒv’è‹`‚̒ljÁ + ƒWƒ…ƒm[ƒAƒbƒvƒf[ƒg‚ŒljÁ‚³‚ê‚éƒ}ƒbƒv‚ÆAŠØŽI“ÆŽ©(?)‚̃NƒCƒYƒ][ƒ“ + (ƒRƒ‚ƒhƒAƒbƒvƒf[ƒg)‚Æ“V’ÃAƒbƒvƒf[ƒg‚̃}ƒbƒv’è‹`‚ð’ljÁ + Œ»ÝA“úˆÆ‚É–³‚¢‚à‚Ì‚ÉŠÖ‚µ‚Ă̓Rƒƒ“ƒgƒAƒEƒg‚µ‚Ä‚¢‚ÜB + conf/map_athena.cnf + +-------------- +//385 by ŒÓ’±—– + +EMOB‚Ìs“®C³ + EŽè”²‚«ˆ—‚ňړ®‚µ‚È‚¢ƒ‚[ƒh‚ÌMOB‚à•à‚–â‘èC³ + EMOB‚ð“|‚µ‚½‚Æ‚«AÄspawnŽž‚ª‚¨‚©‚µ‚È’l‚É‚È‚éꇂª‚ ‚é–â‘èC³ + iMOB‚ª•¦‚©‚È‚‚È‚é–â‘肪C³‚³‚ꂽ‚Í‚¸j + EMOB‚̃[ƒv‚ÅꊌŸõ‚É1000‰ñŽ¸”s‚µ‚½‚猳‚ÌꊂÉo‚é‚悤‚ÉC³ + EMOB‚ð‰r¥’†‚É“|‚·‚ÆAƒ^ƒCƒ}[‚ð휂·‚é‚悤‚ÉC³ + + mob.c + mob_delete(),mob_catch(),mob_damage(), + mob_ai_sub_lazy(),mob_ai_sub_hard()‚È‚ÇC³ + mobskill_deltimer()’ljÁ + +-------------- +//0384 by Ž€_ + +EƒyƒbƒgŽÀ‘•B +Žv‚Á‚½‚æ‚è’·‚‚©‚©‚è‚Ü‚µ‚½BˆêŽü‚à‚©‚©‚Á‚½‚¹‚¢‚ʼn½ˆ‚ðC³‚µ‚½‚© +Šo‚¦‚Ä‚È‚¢–â‘肪‚ ‚è‚Ü‚·‚ª... ‚»‚ê‚Å”O‚ׂ̈Émap‚Æchar‚̃tƒ@ƒCƒ‹‚Í‘S‚Ä +ŠÜ‚߂ăAƒbƒv‚µ‚Ü‚·B +‚»‚ê‚Æmakefile‚Æathena.sh‚ÍŽ©•ª‚ªŽg‚Ä‚¢‚镨‚Å‚·B +Yare-launcher‚ÍŽg‚Ä‚Ü‚¹‚ñ‚ª‚¢‚‚àŽI‚ÌŽÀsƒtƒ@ƒCƒ‹‚ÅŽÀs‚µ‚Ä‚¢‚Ü‚·‚Ì‚Å... + char/char.cAchar/char.hAchar/inter.cAchar/makefile C³B + char/int_pet.cAchar/int_pet.h ’ljÁB + map/makefile C³B + map/intif.cAmap/intif.hAmap/map.cAmap/map.hAmap/mob.cAmap/mob.hA + map/npc.cAmap/npc.hAmap/battle.cAmap/battle.hAatcomand.cAmap/pc.cA + map/clif.cAmap/clif.hAmap/script.c FXC³B + map/pet.cAmap/pet.h ‚Í–w‚Ç‚ðŽ©•ª‚Ì•¨‚É‘‚«Š·‚¦‚Ü‚µ‚½B + common/mmo.h C³B + db/pet_db.txt C³B + db/item_db.txt C³B(Œg‘Ñ—‘›z‰»‹@‚Ìbpet ƒXƒNƒŠƒvƒg‚ª”²‚¯‚Ä‚¢‚½‚Ì‚Å + “ü‚ꂽ‚¾‚¯‚Å‚·‚ª...) + doc/INTERŽIƒpƒPƒbƒg.txt‚Ì–¼‘O‚ðinter_server_packet.txt‚É•ÏX‚ƃyƒbƒg‚Ì + •Û‘¶“™‚ÉŽg‚¤ƒpƒPƒbƒg‚ð’ljÁB +* ¡“x‚̃yƒbƒgŽÀ‘•‚É‚æ‚èƒLƒƒƒ‰ƒtƒ@ƒCƒ‹‚Ì\‘¢‚ª•Ï‚í‚èˆÈ‘O‚Ì•¨‚ƌ݊·‚Å‚«‚È‚¢ + ‚Ì‚Å tool/convert.c ‚ð’ljÁ‚µ‚Ü‚µ‚½B + ’P“ƂŃRƒ“ƒpƒCƒ‹‚Å‚«‚Ü‚·‚̂ŃRƒ“ƒpƒCƒ‹‚µ‚½‚ ‚ÆŽÀs‚µ‚ăLƒƒƒ‰ + ƒtƒ@ƒCƒ‹‚ð•ÏŠ·‚µ‚Ä‚‚¾‚³‚¢B‚»‚¤‚µ‚È‚¢‚ƃLƒƒƒ‰‚ª‘S•””ò‚Ñ‚Ü‚·‚Ì‚Å... +* ƒyƒbƒg‚Ìe–§“x‚ª0‚É‚È‚é‚ƃyƒbƒg‚Í‚»‚Ìê‚Å“®‚¯‚È‚‚È‚è‚»‚Ìó‘Ô‚Å‘¼‚Ì + ƒ}ƒbƒv‚Ɉړ®‚·‚é‚©I—¹‚·‚é‚ƃyƒbƒg‚ÍÁ–Å‚µ‚Ü‚·Bˆê‰žƒyƒbƒg‚Ì“¦‘–‚ð + ŽÀ‘•‚·‚é‚‚à‚è‚Åì‚Á‚½‚Ì‚Å‚·‚ª–{ŽI‚É‚ ‚Á‚Ä‚é‚©‚Ç‚¤‚©‚Í‚í‚©‚è‚Ü‚¹‚ñB +* ˆÚ“®‘¬“x‚ª’x‚¢ƒyƒbƒg‚Ìꇗ£‚ê‰ß‚¬‚é‚Ƃ‚¢‚Ä—ˆ‚ê‚È‚‚È‚è‚Ü‚·B‚Å‚à + ‚±‚Ìꇃ}ƒbƒv‚ðˆÚ“®‚µ‚Ä‚à‚¿‚á‚ñ‚Ƃ‚¢‚Ä—ˆ‚Ü‚·B + Á–Å‚µ‚½‚è‚Í‚µ‚Ü‚¹‚ñB +* ˆÚ“®‘¬“x‚ª‘¬‚¢ƒyƒbƒg‚̓Lƒƒƒ‰‚æ‚èæ‚Ɉړ®‚µ‚Ü‚·B–{ŽI‚Ì•û‚ª‚Ç‚¤‚È‚Ì‚© + ‚í‚©‚ç‚È‚¢‚̂Ńyƒbƒg‚̈ړ®‚̓‚ƒ“ƒXƒ^[‚̈ړ®‘¬“x‚ňړ®‚·‚é + ‚悤‚É‚µ‚Ü‚µ‚½B +Ebattle_athena.cnf +pet_catch_rate ’ljÁB + ƒyƒbƒg‚̕ߊl”{—¦‚ðݒ肵‚Ü‚·B(ݒ肵‚È‚¢‚Æ100) + Šî–{“I‚Ƀyƒbƒg‚̕ߊl‚ÉŽg‚Á‚Ä‚éŒöŽ®‚Í + (pet_db.txt‚̕ߊl—¦ + (ƒLƒƒƒ‰ƒŒƒxƒ‹ - ƒ‚ƒ“ƒXƒ^[ƒŒƒxƒ‹)*0.3 + luk *0.2) + * (2 - ƒ‚ƒ“ƒXƒ^[‚ÌŒ»ÝHP/ƒ‚ƒ“ƒXƒ^[‚ÌÅ‘åHP) + ‚É‚È‚è‚Ü‚·BŽ©•ª‚È‚è‚Éì‚Á‚½•¨‚Å‚·‚Ì‚Å–{ŽI‚Æ‚Í‚©‚È‚è‚Ì + ˆá‚¢‚ª‚ ‚é‚©‚à’m‚ê‚Ü‚¹‚ñB(ƒ‚ƒ“ƒXƒ^[‚ÌHP‚ðŒ¸‚ç‚¹‚ÎŒ¸‚ç‚·’ö•ßŠl—¦‚ª + オ‚éŽd‘g‚Ý‚Å‚·‚ª...) +pet_rename ’ljÁB + ƒyƒbƒg‚Ì–¼‘O‚ð•ÏX‚·‚é‚©‚Ç‚¤‚©‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æno) + yes‚͉½“x‚Å‚à–¼‘O‚Ì•ÏX‚ª‰Â”\B + no‚͈ê“x•ÏX‚·‚é‚Æ‚à‚¤•ÏX•s‰Â”\‚É‚È‚é +pet_hungry_delay_rate ’ljÁB + ƒyƒbƒg‚Ì• ‚ªŒ¸‚鎞ŠÔ‚Ì”{—¦‚Å‚·B(ݒ肵‚È‚¢‚Æ100) + ”{—¦‚ª‚‚¢‚Æ• ‚ªŒ¸‚è“ï‚‚È‚è‚Ü‚· +mvp_exp_rate •ÏXB + ‚·‚Å‚Éstruct mob_db‚Ìmexpper‚̓Sƒ~‚É‚È‚Á‚Ä‚¢‚é‚Ì‚Å(MVP EXP‚Í + MVPƒAƒCƒeƒ€‚ªŽæ‚ê‚È‚©‚Á‚½ê‡“ü‚é‚̂ňӖ¡‚ª‚ ‚è‚Ü‚¹‚ñB) + MVP EXP‚Ì—Ê‚Ì”{—¦‚É‚È‚é‚悤‚É•ÏXB(mob.c‚ðC³) +Echar_athena.cnf +autosave_time ’ljÁB + Ž©“®•Û‘¶‚·‚鎞ŠÔ‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æ300) + šdˆÊ‚Í•b‚Å‚·B(ƒtƒ@ƒCƒ‹‚É•Û‘¶‚·‚鎞ŠÔ‚ÌŠÔŠu‚Å‚·B) +Emap_athena.cnf +autosave_time ’ljÁB + Ž©“®•Û‘¶‚·‚鎞ŠÔ‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æ60) + šdˆÊ‚Í•b‚Å‚·B(ƒLƒƒƒ‰ŽI‚Ƀf[ƒ^‚𑗂鎞ŠÔ‚ÌŠÔŠu‚Å‚·B‚±‚ê‚Í + ƒtƒ@ƒCƒ‹‚É•Û‘¶‚·‚鎞ŠÔ‚ÌŠÔŠu‚¶‚á‚ ‚è‚Ü‚¹‚ñB) +Einter_athena.cnf +pet_txt ’ljÁB + ƒyƒbƒg‚̃f[ƒ^‚ð•Û‘¶‚·‚éƒtƒ@ƒCƒ‹‚ðŒˆ‚ß‚Ü‚·B(ݒ肵‚È‚¢‚Æpet.txt) +E@makepet ƒRƒ}ƒ“ƒh’ljÁB + ƒyƒbƒg‚ÌŽÀ‘•‚É‚æ‚Á‚Ä@item‚Åì‚Á‚½—‘‚ÍŽg‚Á‚Ä‚à–³‘Ê‚É‚È‚è‚Ü‚·‚Ì‚Å + ‚±‚ê‚ðŽg‚Á‚Ä—‘‚ðì‚Á‚Ä‚‚¾‚³‚¢B + @makepet <ƒ‚ƒ“ƒXƒ^[‚ÌID or —‘‚ÌID> +E@petfriendly ƒRƒ}ƒ“ƒh’ljÁB + @petfriendly <”Žš> + ƒyƒbƒg‚ð˜A‚ê‚Ä‚¢‚鎞‚Ƀyƒbƒg‚Ìe–§“x‚ð•ÏXB(0~1000) +E@pethungry ƒRƒ}ƒ“ƒh’ljÁB + @pethungry <”Žš> + ƒyƒbƒg‚ð˜A‚ê‚Ä‚¢‚鎞‚Ƀyƒbƒg‚Ì–ž• “x‚ð•ÏXB(0~100) +E@petrename ƒRƒ}ƒ“ƒh’ljÁB + @petrename + ƒyƒbƒg‚ð˜A‚ê‚Ä‚¢‚鎞‚Ƀyƒbƒg‚Ì–¼‘O‚ð•ÏX‚Å‚«‚é‚悤‚É•ÏXB +Eint_guild.cAint_party.c “Ç‚Ýž‚Þƒtƒ@ƒCƒ‹‚ɃGƒ‰[‚ª‚ ‚Á‚Ä‚àƒvƒƒOƒ‰ƒ€‚ð + I—¹‚¹‚¸‚Éi‚ނ悤‚É•ÏXB +Epc_walk 123 != 1234 “™‚̃Gƒ‰[‚ªo‚È‚¢‚悤‚É + if((i=calc_next_walk_step(sd))>0) { + sd->walktimer=add_timer(tick+i/2,pc_walk,id,sd->walkpath.path_pos); + ‚ð + if((i=calc_next_walk_step(sd))>0) { + i = i/2; + if(i <= 0) + i = 1; + sd->walktimer=add_timer(tick+i,pc_walk,id,sd->walkpath.path_pos); + ‚̂悤‚É•ÏX‚µ‚Ü‚µ‚½B + tick‚ª“¯‚¶”’l‚É‚È‚é‚Ì‚ð–h‚¢‚½‚Ì‚Å‚·‚ª‚±‚ê‚Å‚Ç‚ñ‚ȉe‹¿‚ªo‚é‚©‚Í + ‚³‚Á‚Ï‚è‚í‚©‚è‚Ü‚¹‚ñB + pc.cAmob.c‚ðC³B + ‚Å‚à‚±‚ÌC³‚ð‚µ‚Ä‚à˜A‘±‚ŃNƒŠƒbƒN‚µ‚½‚è‚·‚é‚ƃLƒƒƒ‰‚ª‚µ‚Î‚ç‚ + Ž~‚Ü‚é‚悤‚Å‚·B(ƒyƒbƒg‚Ì‚¹‚¢‚ÆŽv‚¢‚Ü‚µ‚½‚ªƒyƒbƒg‚ª‚È‚‚Ä‚à + “¯‚¶‚¾‚Á‚½‚Ì‚Å‘¼‚ÌŒ´ˆö‚©‚Æ...) +* doc/code_ref.txt‚Æhelp.txt‚Í–Ê“|‚‚³‚¢‚Ì‚ÅC³‚µ‚Ä‚Ü‚¹‚ñB +Egm_all_skill: yes‚Å2-2‚̃XƒLƒ‹‚à•\Ž¦‚³‚ê‚é‚悤‚É•ÏXB(ŽŽ‚¢‚¹‚Í‚¢‚Ü‚¹‚ñ‚ª...) + pc.c + pc_calc_skilltre() C³B +EƒJ[ƒgƒŒƒ{ƒŠƒ…[ƒVƒ‡ƒ“‚̃_ƒ[ƒWŒvŽZ‚ðC³B + •ŠíŒ¤‹†‚ð“ñdŒvŽZ‚µ‚Ä‚¢‚½‚Ì‚ÅC³B + battle.c + Damage battle_calc_weapon_attack() C³B + +-------------- +//381 by ŒÓ’±—– + +EMOB‚Ìs“®C³ + EPC‚Ì‚¢‚È‚¢ƒ}ƒbƒv‚ÌMOB‚ÍŽžXƒ[ƒv‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + EPC‚Ì‚¢‚éƒ}ƒbƒv‚ÌMOB‚Í•à‚ˆÈŠO‚ÉAŽžX•¦‚«’¼‚·‚悤‚É‚È‚è‚Ü‚µ‚½ + i‚±‚ê‚Ü‚½ƒpƒtƒH[ƒ}ƒ“ƒX‚ɉe‹¿‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñF‚µd‚‚È‚é‚©‚àj + EŽè”²‚«ˆ—‚ŃuƒƒbƒN‚Ì—LŒø”»’è‚ðs‚¤‚悤‚É‚µ‚Ü‚µ‚½ + iHP–³ŒÀMOB–â‘èC³Hj + Eƒ‹[ƒgŽžƒXƒLƒ‹Žg—p‹@\ŽÀ‘• + + mob.c/mob.h + mob_ai_sub_lazy(),mob_ai_sub_hard()C³ + MSS_LOOT’ljÁ,mob_readskilldb()C³ + +EMOBƒXƒLƒ‹‚Ì‘®«•ÏX‚ðŽÀ‘•‚µ‚Ü‚µ‚½B + + map.h + struct mob_data‚É def_eleƒƒ“ƒo’ljÁ + mob.c + mob_spawn()‚Ådef_ele‚ðƒZƒbƒg‚·‚é‚悤‚É•ÏX + battle.c + battle_get_element()‚Ådef_ele‚ð“ǂނ悤‚É•ÏX + skill.c + skill_castend_nodamage_id()C³ + +EƒNƒ@ƒOƒ}ƒCƒA‚ÌŒø‰Ê”͈͂©‚ço‚é‚ÆŒø‰Ê‚ªØ‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + + skill.c + ƒ†ƒjƒbƒgŒnˆ—C³ + +-------------- +//380 by ‚`‚Ìl + +EƒJ[ƒgƒŒƒ”ƒHƒŠƒ…[ƒVƒ‡ƒ“‚̃_ƒ[ƒWŒvŽZŽÀ‘• + battle.c‚ð•ÏXB + +CHRIS‚³‚ñA‚ ‚肪‚Æ‚¤ŒäÀ‚¢‚Ü‚·B +ƒmƒbƒNƒoƒbƒNŽÀ‘•‚Å‚«‚È‚‚ÄA¢‚Á‚Ä‚Ü‚µ‚½i„ƒG + +-------------- +//379 by CHRIS + +EƒJ[ƒgƒŒƒ”ƒHƒŠƒ…[ƒVƒ‡ƒ“‚ÌŽÀ‘• + skill.c‚Æbattle.c‚ð•ÏXB + +Eƒ}ƒOƒiƒ€ƒuƒŒƒCƒN‚ɃmƒbƒNƒoƒbƒN‚ð’ljÁB + battle.c‚ð•ÏXB + +iƒ\[ƒX‚ð˜M‚Á‚½‚͉̂‚ß‚Ä‚È‚Ì‚ÅA—L‚Á‚Ä‚é‚©‚Ç‚¤‚©•ª‚©‚è‚Ü‚¹‚ñ‚ªAŽ©•ª‚Å‚Ío—ˆ‚Ü‚µ‚½Bj +iƒvƒƒOƒ‰ƒ€ŠÖŒW‚̑Ђ𔃂Á‚ĕ׋‚µ‚ĉ‚߂ĘM‚Á‚½‚Ì‚Å‚·EEEBƒKƒ“ƒoƒŠƒ}ƒXIBj + +-------------- +//377 by ŒÓ’±—– + +EMOB‚Ìs“®C³ + E‹ß‚‚ÉPC‚Ì‚¢‚È‚¢MOB‚ªŽžXƒ[ƒv‚·‚éŽd—l‚ðŽ~‚ß‚Ü‚µ‚½B + EPC‚Ì‚¢‚È‚¢ƒ}ƒbƒv‚ÌMOB‚Í‘S‚“®‚©‚È‚‚È‚è‚Ü‚µ‚½B + EPC‚Ì‚¢‚éƒ}ƒbƒv‚ÅA‹ß‚‚ÉPC‚Ì‚¢‚È‚¢MOB‚ÍŽžX•à‚‚悤‚É‚È‚è‚Ü‚µ‚½B + E‚»‚Ì‘¼×‚©‚¢‚Æ‚±‚ëC³ + iƒpƒtƒH[ƒ}ƒ“ƒX‚ɉe‹¿‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñF‚µd‚‚È‚é‚©‚àj + + mob.c + mob_randomwalk()’ljÁ + mob_ai_sub_lazy(),mob_ai_sub_hard()C³‚È‚Ç + +EƒXƒLƒ‹C³ + EMOB‚ªƒeƒŒƒ|[ƒg‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + + mob.c + mob_warp()’ljÁ + skill.c + skill_castend_nodamage_id()C³ + +EƒXƒe[ƒ^ƒXˆÙí‚̈ꕔ‚ðŽÀ‘•/C³ + EPC/MOB‚Æ‚à‚É‘¬“xŒ¸‚ÌŒø‰Ê‚ªŒ»‚ê‚é‚悤‚ÉiAGI‚Ì•\Ž¦‚Í•Ï‚í‚炸j + EPC‚̃Gƒ“ƒWƒFƒ‰ƒXAƒCƒ“ƒ|ƒVƒeƒBƒIƒ}ƒkƒXA‘¬“x㸂̌ø‰Ê‚ðC³ + EMOB‚Ì2HQAƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…AƒGƒ“ƒWƒFƒ‰ƒXAƒCƒ“ƒ|ƒVƒeƒBƒIƒ}ƒkƒXA + ‘¬“xã¸/Œ¸AƒOƒƒŠƒAAƒuƒŒƒbƒVƒ“ƒO‚È‚Ç‚ÌŒø‰ÊŽÀ‘• + E‡–°A“€Œ‹AƒXƒ^ƒ“‚Ì•K’†Œø‰ÊŽÀ‘• + E‡–°‚̃NƒŠƒeƒBƒJƒ‹”{Œø‰ÊŽÀ‘• + EˆÃ•‚Ì–½’†—¦A‰ñ”𗦌¸Œø‰ÊŽÀ‘• + EŽô‚¢‚ÌATKŒ¸Œø‰ÊALUKŒ¸Œø‰ÊŽÀ‘• + + battle.c + battle_get_*()C³ + battle_calc_weapon_damage()C³ + mob.c + mob_get_speed(),mob_get_adelay()’ljÁ + pc.c + pc_calcstatus()C³ + +Eitem_value_db.txt‚ŃAƒCƒeƒ€‚̉¿Ši‚ðÝ’è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + E‰¿Šiƒf[ƒ^‚ðƒI[ƒo[ƒ‰ƒCƒh‚Å‚«‚é‚悤‚É‚µ‚Ü‚µ‚½B + E‚±‚ê‚Åitem_db2.txt‚ð—pˆÓ‚·‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñB + + (db/) + item_value_db2.txt + item_db2.txt‚̉¿Šiƒf[ƒ^B + item_value_db.txt‚ɃŠƒl[ƒ€‚·‚é‚Æ“Ç‚Ýž‚Ý‚Ü‚·B + (map/) + itemdb.c + itemdb_readdb()C³ + +EŒÃ–Ø‚ÌŽ}‚ðŽg‚¤‚ÆMOB‚Ì–¼‘O‚ª 0 ‚É‚È‚é–â‘è‚ÌC³ + + (db/) + item_db.txt + ŒÃ–Ø‚ÌŽ}‚̃f[ƒ^C³ + +-------------- +//375 by ŒÓ’±—– + +EMOBê—pƒXƒLƒ‹‚ÌŒø‰Ê‚ð‚¢‚‚‚©ŽÀ‘• + ‘½’iUŒ‚A“łȂǂ̒ljÁŒø‰Ê•t—^UŒ‚A‘®«•t‚«UŒ‚A–‚–@‘ÅŒ‚UŒ‚ + •K’†UŒ‚A–hŒä–³Ž‹UŒ‚Aƒ‰ƒ“ƒ_ƒ€ATKUŒ‚‚È‚ÇB + ‚½‚¾‚µA**‘S‚ƒeƒXƒg‚µ‚Ä‚Ü‚¹‚ñ**B + + (db/) + skill_db.txt + MOB—pƒXƒLƒ‹‚̃f[ƒ^‚ðC³ + mob_skill_db.txt + ‚µ’ljÁ + (map/) + skill.c + skill_castend_damage_id()C³ + skill_status_change_start()C³ + skill_additional_effect()C³ + battle.c + battle_calc_weapon_attack()C³ + +EƒXƒLƒ‹‚ð‚µC³ + EƒEƒH[ƒ^[ƒ{[ƒ‹‚Å“G‚ªŽ€‚ñ‚Å‚¢‚Ä‚àŒ‚‚ƒ‚[ƒVƒ‡ƒ“‚ð‚·‚é–â‘èC³ + + skill.c + skill_status_change_timer()C³ + +EMOBƒf[ƒ^‚ª•Ï‚È‚Ì‚Å–^‚v‚̃f[ƒ^ƒx[ƒX‚ð—¬—p‚µ‚Ä‚Ý‚é + Eƒf[ƒ^‚Ì•À‚ч‚Æ‚©‘S‚“¯‚¶‚È‚ñ‚Å‚·‚Ë + + (db/) + mob_db.txt + –^‚v‚Ìmob_db.txt + +EŠeŽíconf‚̃Šƒtƒ@ƒŒƒ“ƒX‚ð“Y•t + ‚ ‚‚܂ŃŠƒtƒ@ƒŒƒ“ƒX‚È‚Ì‚ÅAHowTo‚È‚ñ‚©‚Í‘‚¢‚Ä‚Ü‚¹‚ñB + + (doc/) + conf_ref.txt + conf‚̃Šƒtƒ@ƒŒƒ“ƒX{ƒ¿ + + +-------------- +//373 by ŒÓ’±—– + +EMOBƒXƒLƒ‹Žg—p‹@\‰¼ŽÀ‘• + EƒXƒLƒ‹Žg—pŽž‚̈—‚̓vƒŒƒCƒ„[‚Æ‹¤—p(skill.c)‚Å‚·B + E•s“s‡‚ª‘½‚¢‚ÆŽv‚¤‚Ì‚Å•ñ‚¨Šè‚¢‚µ‚Ü‚·B + Emob_skill_db.txt‚ð–„‚ß‚Ä‚‚ê‚él‚à•åWB + ‚±‚̃f[ƒ^‚Íuƒ‰ƒOƒiƒƒN‚Ì‚½‚Ü‚²v‚ðŽQl‚É‚µ‚Ä‚¢‚Ü‚·B + + (db/) + mob_skill_db.txt + MOBƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX(–¢Š®¬) + ƒeƒXƒg—p‚̃f[ƒ^‚µ‚©“ü‚Á‚Ä‚Ü‚¹‚ñB + (map/) + mob.c/mob.h + mobskill_*’ljÁA‚»‚Ì‘¼‘½”C³ + map.h + struct mob_data ‚É skill* ’ljÁ + skill.c/skill.h + skill_castcancel()‚âƒXƒLƒ‹ƒ†ƒjƒbƒgˆ—‚ðMOB‚ɑΉž‚³‚¹‚½ + battle.c + battle_calc_damage()‚È‚ÇC³ + +EƒMƒ‹ƒh‚̃XƒLƒ‹‚ªG‚ê‚È‚¢–â‘èC³ + E‚¢‚‚̂܂ɂ©pc_skillup‚ªŒÃ‚¢‚à‚Ì‚É•Ï‚í‚Á‚Ä‚¢‚½‚Ì‚ÅC³ + + pc.c + pc_skillup(),pc_checkskill()C³ + +-------------- +//368 by ŒÓ’±—– + +EMOBŒn‚ÌC³‚È‚Ç + EMOB‚ªô“G”͈͓à‚ÌPC/ƒAƒCƒeƒ€‚𓙊m—¦‚ŃƒbƒN‚·‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + iƒAƒNƒeƒBƒuAƒ‹[ƒgF‚¢‚Ü‚Ü‚Å‚ÍŠY“–ƒuƒƒbƒN‚̃Šƒ“ƒNƒŠƒXƒg‚̇‚È‚Ç‚É + ˆË‘¶‚µ‚Ä‚¢‚½j + EŽË’ö”ÍˆÍ“à‚©‚ÂA“ž’B•s‰Â”\’n‘Ñ‚ÌPC‚ðMOB‚ªƒƒbƒN‚·‚é‚ÆA + MOB‚ª’âŽ~‚µ‚½‚èA‚»‚Ìê‚Å–\‚ꂾ‚µ‚½‚è‚·‚é–â‘è‚ÌC³ + EMOBƒƒbƒN’†‚ÉIW‚È‚Ç‚Å“ž’B•s‰Â”\‚É‚È‚Á‚½ê‡AƒƒbƒN‚ð‰ðœ‚·‚é‚悤‚ÉB + EAEGIS•ûŽ®‚Å“G‚̈ړ®‚ðŒvŽZ‚µ‚Ĉړ®•s‰Â”\‚È‚çAAthenaŽ®‚ÅŒvŽZ‚·‚é‚悤‚É + EƒƒbƒN‚ª‰ðœ‚³‚ê‚é‚Æ‚«‚É”•b‚»‚Ìê‚Å’âŽ~‚·‚é‚悤‚É‚µ‚½ + E•às‚ª’x‚¢MOB‚ª‚Æ‚Ü‚ç‚È‚¢/ŽŸ‚Ì•àsŠJŽn‚ª‘‚·‚¬‚é–â‘è‚ðC³‚µ‚Ü‚µ‚½ + Eƒ‹[ƒgŠÖ˜Aˆ—‚ð‚µC³ + + mob.c + mob_ai_sub_hard*()C³ + mob_can_reach()’ljÁ + +EƒXƒLƒ‹Žg—pŽž‚Ƀ^[ƒQƒbƒgƒuƒƒbƒN‚Ì—LŒø«”»’è‚ðs‚¤‚悤‚ÉC³ +Eƒ‹ƒAƒt‚̃_ƒ[ƒW‚ª•ŠíŒvŽZ‚É‚È‚Á‚Ä‚¢‚é‚̃oƒO‚ð–‚–@ŒvŽZ‚ÉC³ + + skill.c + skill_castend_id()C³ + skill_status_change_timer_sub()C³ + + +---------- +//364 by ‚¢‚Ç +EˆÈ‰º‚̃pƒPƒbƒg‚Ìà–¾‚ð•ÏX + doc/ƒpƒPƒbƒg‰ðÍ.txt + R 006a <error No>.B + R 0081 <type>.B + +E363‚Ńrƒ‹ƒhŽž‚Éwarning‚ªo‚é•s‹ï‡‚ðC³ + map/guild.h + +-------------- +//363 by ŒÓ’±—– + +EƒMƒ‹ƒh‚ÌC³ + EƒƒOƒCƒ“‚µ‚Ä‚¢‚È‚¢PC‚ð’Ç•ú‚·‚é‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚éƒoƒOC³ + Eƒƒ“ƒo[’ljÁ’¼Œã‚ɒljÁ‚³‚ꂽPC‚ªƒMƒ‹ƒh•\Ž¦‚ɒljÁ‚³‚ê‚È‚¢–â‘èC³ + E“¯‚¶ƒMƒ‹ƒh‚É“¯C•ÊƒLƒƒƒ‰‚ª—v‚éPC‚ª’E‘Þ‚·‚é/’Ç•ú‚³‚ê‚é‚ƕʃLƒƒƒ‰‚ª + ’E‘Þ‚µ‚Ä‚µ‚Ü‚¤ê‡‚ª‚ ‚éƒoƒOC³ + Eƒƒ“ƒo[‚ª‚¢‚é‚̂ɉðŽU‚µ‚悤‚Æ‚·‚é‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚éƒoƒOC³ + + (char/) + int_guild.c + guild_calcinfo(),mapif_parse_GuildAddMember()C³ + (map/) + guild.c + guild_member_leaved(),guild_member_added() + guild_recv_info(),guild_break()C³ + +-------------- +//362 by ŒÓ’±—– + +EƒMƒ‹ƒh‰ðŽUŽÀ‘• + + (char/) + int_guild.c + ‰ðŽUˆ—‚ð’ljÁ + (map/) + guild.c/guild.h + guild_break(),guild_broken(),guild_broken_sub()‚ȂǒljÁ + clif.c/clif.h + clif_guild_broken(),clif_parse_GuildBreak()’ljÁ + intif.c/intif.h + intif_parse_GuildBroken()’ljÁ + +-------------- +//361 by ‚¢‚Ç + +E360‚Å‚Ì@heal‚Ì•ÏXŠÔˆá‚¢‚ð’ù³ + map/atcommand.c + +-------------- +//360 by ‚¢‚Ç + +E353‚ÌC³‚ðíœ +E@heal‚Å•ÏXŒã‚Ì’l‚ªƒ}ƒCƒiƒX‚É‚È‚ç‚È‚¢‚悤‚ÉC³ + +-------------- +//359 by ‚¢‚Ç + +Eclass_equip_db.txt‚Ì•¶Žš‰»‚¯C³ + +-------------- +//358 by ŒÓ’±—– + +EƒƒOƒCƒ“Žž‚Ìdelete_timer‚̃Gƒ‰[‚ðo‚È‚¢‚悤‚É‚µ‚½ + pc.c + pc_authok()‚ÌC³ + +EƒMƒ‹ƒhŠÖŒW‚ÌC³ + Eƒƒ“ƒoŠ©—UŽž‚ÉÅ‘ål”‚ÌŠm”F‚ðs‚¤‚悤‚É + Eƒf[ƒ^’Ê’mˆ—‚ð‚¢‚‚‚©C³ + + (char/) + int_guild.c + FXC³ + (map/) + clif.c/clif.h + clif_guild_inviting_refused()‚ðclif_guild_inviteack()‚ɉü–¼ + guild.c/intif.c + FXC³ + +E@guildlvupƒRƒ}ƒ“ƒhì¬BƒMƒ‹ƒhƒŒƒxƒ‹‚ª’²®‚Å‚«‚Ü‚·B + + (char/) + int_guild.c + FXC³ + (map/) + atcommand.c + @guildlvupˆ—’ljÁ + +EMakefike‚Ìclean•”•ª‚ðC³ + + (char/ map/ login/) + Makefile + E휂·‚éŽÀsƒtƒ@ƒCƒ‹‚̃pƒX‚ð ../athena/ ‚©‚ç ../ ‚ÉC³ + +-------------- +//357 by ŒÓ’±—– + +Epc.c‚Ì•¶Žš‰»‚¯C³ + •¶Žš‰»‚¯‚µ‚½ƒtƒ@ƒCƒ‹‚ðƒAƒbƒv‚·‚é‚Ì‚àA‚»‚ê‚ð‰ü‘¢‚·‚é‚Ì‚à‹ÖŽ~‚µ‚Ü‚¹‚ñ‚©H + ’¼‚·‚Ì–Ê“|‚‚³‚·‚¬‚Ü‚·B + + pc.c + •¶Žš‰»‚¯‚ÌC³ + +Eƒp[ƒeƒB‚âƒMƒ‹ƒh‚ÉŠ©—U‚³‚ꂽó‘ԂŃ}ƒbƒvˆÚ“®‚⃃OƒAƒEƒg‚·‚é‚ÆA + Š©—U‚ð‹‘”Û‚·‚é‚悤‚ÉC³ + + pc.c + pc_setpos()C³ + map.c + map_quit()C³ + +EI-AthenaŽ©“®•œ‹ŒƒVƒXƒeƒ€(B-NSJŽì)‚ðAthena—p‚ɉü‘¢‚µ‚Ä“Y•t‚µ‚Ü‚µ‚½ + ƒvƒƒOƒ‰ƒ€‚Ì«Ž¿ã./toolƒtƒHƒ‹ƒ_‚Å‚Í‚È‚./‚É‚ ‚è‚Ü‚·B + athena.sh‚Ì•Ï‚í‚è‚Éstart‚Å‹N“®‚·‚é‚ÆmapŽI‚ª—Ž‚¿‚Ä‚à10•b’ö“x‚Å•œ‹Œ‚µ‚Ü‚· + ƒvƒƒZƒX‚Íumapv‚Å’²‚ׂĂ܂·‚ª‘¼‚̃vƒƒZƒX‚É”½‰ž‚·‚é‚Æ‚«‚Í + umap-serverv‚È‚Ç‚É•Ï‚¦‚Ä‚Ý‚Ä‚‚¾‚³‚¢B + + start + mapŽIŽ©“®•œ‹ŒƒVƒXƒeƒ€‚̃VƒFƒ‹ƒXƒNƒŠƒvƒg + + +-------------- +//0356 by Ž€_ + +Eathena.sh‚ðŽg‚í‚È‚‚Ä‚àYare-launcher‚ðŽg‚¦‚é‚悤‚É•ÏXB(Ž©•ªŽŽ‚µ‚Ä‚Ü‚µ‚½‚ª +ˆê‰ž“®‚«‚Ü‚µ‚½B‚Å‚à‘‹‚Ìê‡login-server.exe‚ªlogin-server.ex‚É“o˜^‚³‚ê‚Ä‚µ‚Ü‚¢ +Yare-launcher‚ªlogin-server.exe‘±‚¯‚ÄŽÀs‚·‚é–â‘肪‚ ‚è‚Ü‚·B‚±‚ê‚Íathena‚Ì +–â‘è‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...) + comm/makefileˆÈŠO‚Ìmakefile‘S‚Ä‚ðC³B + athena.shC³B + ŽÀsƒtƒ@ƒCƒ‹‚Í.,/athena ƒtƒHƒ‹ƒ_[‚¶‚á‚È‚./ ƒtƒHƒ‹ƒ_[‚Éì‚ç‚ê‚Ü‚·B +E V‹Kaccount‚Ì‹–—e‚·‚é‚©‚Ç‚¤‚©‚ðlogin_athena.cnf‚ÅŒˆ‚ß‚é‚悤‚É•ÏXB(‚±‚ê‚Í + YareCVS‚ðŽQl‚µ‚½•¨‚Å‚·B) + login.c + int mmo_auth() C³B + login_athena.cnf + new_account ’ljÁB +Echar.cAlogin.cAinter.cAmap.cAbattle.c‚ňꕔ‚Ìstrcmp‚ðstrcmpi‚É•ÏXB + +-------------- +//355 by ‚䂤 + +E¶Žè‘•”õ‚àl—¶‚µ‚½“ñ“—¬‚ÉC³ +@iƒ_ƒ[ƒWŒvŽZ‚Ì‚Ý‚ÅŒ©‚½–Ú“™‚Í•ÏX‚È‚µj + +map.h + map_session_data‚ɶŽè—p‚Ì•Ï”‚ð’ljÁ + +battle.h + battle_get_attack_element2()’ljÁ + +battle.c + battle_get_attack_element2()’ljÁ + battle_calc_weapon_attack()‚É + @“ñ“—¬‚̈—‚ð’ljÁC³ + @ƒNƒŠƒeƒBƒJƒ‹‚æ‚èƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ðæ‚É”»’è‚·‚é‚悤‚ÉC³ + @‰ß踘B‚̒ljÁƒ_ƒ[ƒW‚ð¸˜Bƒ_ƒ[ƒW‚ÌŽŸ‚Ɉ—‚·‚é‚悤‚ÉC³ + @i‚±‚ê‚ç‚Í“ÆŽ©‚É’²‚ׂ½‚à‚Ì‚ÅŠÔˆá‚Á‚Ä‚¢‚é‰Â”\«‚ ‚èj + +pc.c + pc_calcstatus()‚ɶŽè—p‚Ì•Ï”‚É’l‚ð“ü‚ê‚鈗‚ð’ljÁ + pc_equipitem()‚Ì“ñ“—¬‘•”õ‚Ìꊂª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðC³ + +-------------- +//353 by ‚¢‚Ç + +EYare-launcher‚ðŽg‚¤‚±‚Æ‚ªo—ˆ‚é‚悤‚ÉMakefile‚Æathena.sh‚ð•ÏX + +-------------- +//352 by ŒÓ’±—– + +E‰r¥’†‚ɃNƒ‰ƒCƒAƒ“ƒg‚ðI—¹‚·‚é‚ÆmapŽI‚ª—Ž‚¿‚é–â‘è‚ÌC³ + skill.c + skill_castend_id(),skill_castend_pos(),skill_castend_map()C³ + map.c + map_quit()C³ + + +Eƒf[ƒ^ƒoƒbƒNƒAƒbƒv—p‚̃c[ƒ‹“Y•t + Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B + Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B + Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B + ƒf[ƒ^‚ªÁ‚¦‚Ä‚àÓ”C‚ÍŽ‚¿‚Ü‚¹‚ñ + + (tool/) + backup + ƒf[ƒ^ƒoƒbƒNƒAƒbƒv—pPerlƒXƒNƒŠƒvƒg + +-------------- +//0351 by Ž€_ +skill.c + skill_use_id()‚ɉr¥”½‰žƒ‚ƒ“ƒXƒ^[‚̈—‚ð•ÏXB(UŒ‚ó‘ԈȊO‚Ìê‡ + ‰r¥”½‰ž‚ðÅ—Dæ‚É‚µ‚Ü‚·B) +mob.c + mob_ai_sub_hard_castsearch() ‰r¥”½‰žƒ‚ƒ“ƒXƒ^[‚ð“ñdˆ—‚µ‚Ä + ‚¢‚½‚Ì‚ÅíœB + mob_ai_sub_hard() ‰r¥”½‰žƒ‚ƒ“ƒXƒ^[‚ð“ñdˆ—‚µ‚È‚¢‚悤‚É•ÏXB +pet.c - 0344‚É–ß‚µ‚Ü‚µ‚½B(C³‚Í‚µ•ªÍ‚ð‚µ‚Ä‚©‚ç‚É‚µ‚Ü‚·B) +pet.h - 0344‚É–ß‚µ‚Ü‚µ‚½B +char.h + CHAR_CONF_NAME ’ljÁB +char.c + do_init() ŽÀs‚·‚鎞ƒtƒ@ƒCƒ‹–¼‚ª“ü—Í‚³‚ê‚Ä‚¢‚È‚¢‚ÆCHAR_CONF_NAME‚ð + Žg‚¤‚悤‚É•ÏXB +map.h + MAP_CONF_NAME ’ljÁB +map.c + do_init() ŽÀs‚·‚鎞ƒtƒ@ƒCƒ‹–¼‚ª“ü—Í‚³‚ê‚Ä‚¢‚È‚¢‚ÆMAP_CONF_NAME‚ð + Žg‚¤‚悤‚É•ÏXB +‚±‚ê‚Ålogin.exeAchar.exeAmap.exe‚ðathenaƒtƒHƒ‹ƒ_[‚ɃRƒs[‚µ‚½Œã–¼‘O‚ð +login-server.exeAchar-server.exeAmap-server.exe‚É•ÏX‚·‚é‚ÆYare-launcher‚ðŽg‚¤ +‚±‚Æ‚ª‚Å‚«‚Ü‚·B‚±‚ê‚ðŽg‚¤‚ÆŽI‚ª—Ž‚¿‚é“x‚ÉŽ©“®“I‚ÉÄŽÀs‚µ‚Ä‚‚ê‚Ü‚·B + +-------------- +//0345 by Ž€_ +EƒLƒƒƒXƒeƒBƒ“ƒO’T’mŽÀ‘•B + mob.c + mob_ai_sub_hard_lootsearch() C³B + mob_ai_sub_hard() C³B + mob_ai_sub_hard_castsearch() ’ljÁB + mob_target(), mob_ai_sub_hard_activesearch() ƒ{ƒXƒ‚ƒ“ƒXƒ^[‚ð + mvpŒoŒ±’l‚É‚æ‚Á‚Ä”FŽ¯‚·‚é‚悤‚É•ÏXB + mob_ai_sub_hard_linksearch() C³B + mob_attack() Ž€‚ñ‚¾‚Ó‚èAƒnƒCƒfƒBƒ“ƒO‚ðƒ`ƒFƒbƒN‚·‚é‚悤‚É•ÏXB + mob_readdb() C³B +Epet.h + MAX_PET_DB‚ð100‚É•ÏXB +Epet.c + read_petdb() C³B + +-------------- +//0344 by@‰ß‹Ž‚Ìli1 +E@ƒyƒbƒg• Œ¸‚èŽÀ‘•‚¨‚æ‚Ñ‚»‚Ì‚Ù‚©FXC³ +E@ƒyƒbƒg‰a‚â‚èŽÀ‘• + + pet.c + pet_calcrate(struct map_session_data *sd); + ƒyƒbƒg‚ÌŠl“¾Šm—¦ŒvŽZ + pet_food(struct map_session_data *sd); + ƒyƒbƒg‰a‚â‚èƒVƒXƒeƒ€ + pet_hungry_change( int tid, unsigned int tick, int id,int data ); + ƒyƒbƒg‚ª• ‚ðŒ¸‚éƒƒWƒbƒN + pet_status_int(struct map_session_data *sd); + e–§“xŒvŽZ + pet_status_hungry(struct map_session_data *sd); + –ž• “xŒvŽZ + pet_status_1a3(struct map_session_data *sd); + ƒpƒPƒbƒg1a3Ý’èŠÖ” + pet_initstate(struct map_session_data *sd); + ƒyƒbƒg‚ª‰‚߂Ķ‚܂ꂽ‚Æ‚«‚̉ŠúƒXƒe[ƒ^ƒXÝ’è + pet.h + int pet_calcrate(struct map_session_data *sd); + int pet_food(struct map_session_data *sd); + int pet_hungry_change( int tid, unsigned int tick, int id,int data ); + int pet_status_int(struct map_session_data *sd); + int pet_status_hungry(struct map_session_data *sd); + int pet_status_1a3(struct map_session_data *sd); + int pet_initstate(struct map_session_data *sd); + ‚ð’ljÁ + clif.c + clif_pet_emotion(int fd,struct map_session_data *sd) + ‰a‚ð‚ ‚°‚½‚Æ‚«‚ɃGƒ‚[ƒVƒ‡ƒ“‚ðs‚¤ + clif.h + clif_pet_emotion(int fd,struct map_session_data *sd); + +-------------- +//0341 by Ž€_ +Eƒ‹[ƒgƒ‚ƒ“ƒXƒ^[ŽÀ‘•B + map.h + LOOTITEM_SIZE‚ð20‚ÉC³B + struct mob_data‚Éint lootitem_count ’ljÁB + mob.c + mob_spawn() ‚µC³B + mob_ai_sub_hard_lootsearch() ’ljÁB + mob_ai_sub_hard() C³B + struct delay_item_drop2 ’ljÁB + mob_delay_item_drop2() ’ljÁB + mob_damage() C³B + battle.h + struct Battle_Config‚Éint monster_loot_type ’ljÁB + battle.c + battle_config_read() C³B + battle_athena.cnf + monster_loot_type: 0 ’ljÁB(Šî–{“I‚É0‚É‚È‚Á‚Ä‚¢‚Ü‚·B + 0‚ÌꇂÍLOOTITEM_SIZE‚܂ŃAƒCƒeƒ€‚ðH‚ׂĂà + ‚Ü‚½ƒAƒCƒeƒ€‚ðH‚ׂđO‚̃AƒCƒeƒ€‚ªÁ‚¦‚éŽd—l‚Å‚·B + 1‚ÌꇂÍLOOTITEM_SIZE‚܂ŃAƒCƒeƒ€‚ðH‚ׂé‚Æ + ‚à‚¤ƒAƒCƒeƒ€‚ðH‚ׂȂ‚È‚è‚Ü‚·B + +-------------- +//0340 by Ž€_ +EmvpƒoƒOC³B + mob.c + mob_damage()‚Åj‚É•Ï‚¦‚½‚Í‚¸‚Ì•¨‚ÉŒ©—Ž‚Æ‚µ‚ ‚è‚Ü‚µ‚½‚Ì‚Å + C³‚µ‚Ü‚µ‚½B‚±‚ê‚ÅmvpƒAƒCƒeƒ€‚Å•Ï‚È•¨‚ªo‚È‚‚È‚é‚Í‚¸‚Å‚·B +Eclass_equip_db.txt + EUC-JIS‚ðS-JIS‚É•ÏXB(ˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñ‚ª‘¼‚̃tƒ@ƒCƒ‹‚Í + ‘S•”S-JIS‚¾‚Á‚½‚Ì‚Å...’P‚È‚éƒ~ƒX‚Å‚·‚ª...) + +---------- +//339 by ‚¢‚Ç + +E338‚ð“K—p‚µ‚½ó‘ԂŃrƒ‹ƒhƒGƒ‰[‚ª”¶‚·‚é•s‹ï‡‚ðC³ + +---------- +//338 by ‰ß‹Ž‚Ìli1 + +E@pet_db.txt‚ɑΉž‚µ‚Ü‚µ‚½B +E@pet_db‚ð‚‚©‚Á‚½ƒvƒƒOƒ‰ƒ€‚Ì‘‚«•û‚ÉC³‚µ‚Ü‚µ‚½B +E@ƒyƒbƒg‚Ì–¼‘O‚ð•ÏX‚·‚鎖‚ªo—ˆ‚Ü‚· +E@ƒyƒbƒg‚ɃAƒNƒZƒTƒŠ[‚ð‚‚¯‚鎖‚ªo—ˆ‚Ü‚·B +E@Œ»Ýƒyƒbƒg‰a‚â‚èis’† + + (map/) + clif.c/clif.h + E petŠÖ˜A‚ÌŠÖ”‚ð‚Ù‚ÚC³‹y‚ђljÁ‚¢‚½‚µ‚Ü‚µ‚½B + E clif_parse_EquipItem()“à•”‚Ńyƒbƒg—p‘•”õ‚Å‚ ‚é‚©‚Ç‚¤‚©‚Ì”»’è‚ðs‚Á‚Ä‚Ü‚· + E clif_parse()‚ðC³‚µ‚Ü‚µ‚½B + + battle.h/battle.c + E@battle_config.pet_rate•Ï”‚ð‘‚₵‚Ü‚µ‚½Bmob‚ɑ΂·‚é—‘‚ÌŠl“¾—¦ + @@‚ðÝ’è‚·‚鎖‚ª‰Â”\‚Æ‚È‚è‚Ü‚· + + pet.c/pet.h + E pet_initstate(struct map_session_data *sd); + @‰Šú‚̃yƒbƒgƒXƒe[ƒ^ƒX‚ðÝ’è‚·‚éŠÖ”‚Å‚· + E pet_npcid(struct map_session_data *sd,int egg_name_id); + @ƒyƒbƒg‚ÉŠ„‚è“–‚Ä‚ç‚ꂽnpc_id‚ð•Ô‚µ‚Ü‚· + E pet_itemid(struct map_session_data *sd,int mob_id); + @ƒ‚ƒ“ƒXƒ^[ID‚©‚ç—‘‚ÌID‚ðŠ„‚èo‚µ‚Ü‚· + E pet_equip(struct map_session_data *sd,int equip_id); + @ƒyƒbƒg‚̃AƒNƒZƒTƒŠ[‘•”õ‚Å‚· + E pet_unequip(struct map_session_data *sd); + @ƒyƒbƒg‚̃AƒNƒZƒTƒŠ[‰ðœ‚Å‚· + E pet_calcrate(struct map_session_data *sd); + @—‘Šl“¾Šm—¦ŒvŽZ‚ðs‚¢1or0‚ð•Ô‚µ‚Ü‚·B + E pet_food(struct map_session_data *sd); + @ƒyƒbƒg‰a‚â‚èlˆÄ‚Å‚·B‚Ü‚¾³í‚É“®ì‚µ‚Ü‚¹‚ñB + E read_petdb() + @pet_db.txt‚ð“Ç‚Ýž‚Ýpet_db[]‚É’l‚ð“ü‚ê‚éŠÖ”‚Å‚· + + E do_init_pet() + @mapŽI‰Šú‰»‚Å‚æ‚Ñ‚¾‚µpet_db[]‚ðŽg‚¦‚é‚悤‚É‚·‚éˆ×‚Ì + ƒyƒbƒgî•ñ‰Šú‰»ŠÖ”‚Å‚·B + + map.c/map.h + E@BL_PET•Ï”‚ð‰Á‚¦‚Ü‚µ‚½ + E@mapŽI‰Šú‰»‚ÌŽž‚Édo_init_pet()‚ðŒÄ‚Ño‚µ‚Ü‚·B + + mmo.h + E@s_pet\‘¢‘Ì‚É•Ï”’ljÁBƒLƒƒƒ‰ƒNƒ^[‚ªƒyƒbƒg‚̃f[ƒ^‚ð•ÛŽ‚·‚éˆ×‚̃VƒXƒeƒ€ + @‚̈סŒã‚à•Ï”‚Í‚»‚̂‚Ǒ‰Á‚·‚é—\’è + + npc.c + ‰ü‘P‚µ‚Ü‚µ‚½B + + (conf/) + battle_athena.cnf‚É—‘‚ÌŠl“¾Šm—¦pet_rate‚ð‰Á‚¦‚Ü‚µ‚½B + +---------- +//337 by ŒÓ’±—– + +EƒMƒ‹ƒh‚̒ljÁ‚ÆC³ + EƒMƒ‹ƒh‚ÉŒoŒ±’l‚ðã”[‚·‚é‚ÆAã”[‚³‚ê‚éEXP‚ªˆÙí‚È’l‚É‚È‚éƒoƒOC³ + EƒMƒ‹ƒh‚Ì“G‘Ί֌W‚̒ljÁ + + guild.c/guild.h + guild_payexp()‚ÌC³(ã”[EXPˆ—) + guild_opposition()’ljÁ + guild_allianceack(),guild_reqalliance(), + guild_reply_reqalliance()‚ÌC³ + clif.c/clif.h + clif_guild_oppositionack(),clif_parse_GuildOpposition’ljÁ + +EƒfƒBƒŒƒCŽžŠÔ‚ªdex‚̉e‹¿‚ðŽó‚¯‚é‚©‚Ç‚¤‚©‚ðbattle_athena.cnf‚É‘‚¯‚é‚悤‚É + + (conf/) + battle_athena.conf + delay_dependon_dex ‚ð’ljÁ + (map/) + skill.c + skill_delay_fix()‚ÌC³ + battle.c/battle.h + struct Battle_Config‚Édelay_dependon_dex’ljÁ + battle_config_read()‚ÌC³(“Ç‚Ýž‚݈—‚à•Ï‚¦‚Ä‚Ü‚·) + +-------------- +//0336 by Ž€_ +EƒXƒLƒ‹ƒCƒ“ƒfƒ…ƒA‚ð‚µC³B +Eclif.c + clif_skill_damage()Aclif_skill_damage2() ƒCƒ“ƒfƒ…ƒA‡‚킹‚ÄC³B + (‚½‚¾ƒXƒLƒ‹‚â–‚–@‚É‚È‚é‚ƃ‚[ƒVƒ‡ƒ“‚ªo‚È‚¢ƒpƒPƒbƒg‚ð + Œ©‚‚¯‚È‚©‚Á‚½‚Ì‚ÅŠ®‘S‚¶‚á‚ ‚è‚Ü‚¹‚ñB) + clif_parse_ActionRequest()Aclif_parse_UseSkillToId()Aclif_parse_UseSkillToPos() + ƒXƒLƒ‹ƒfƒBƒŒƒC‚ÌŽž‚ɃƒbƒZ[ƒW‚ªo‚é‚悤‚ÉC³B +EƒoƒbƒNƒXƒeƒbƒvŽÀ‘•AƒIƒŠƒfƒIƒRƒ“Œ¤‹†ŽÀ‘•B +Eskill.c + skill_castend_damage_id()‚É‚ ‚Á‚½ƒXƒLƒ‹ƒoƒbƒNƒXƒeƒbƒv‚̈—‚ð + skill_castend_nodamage_id()‚Ɉړ®‚µ‚Ü‚µ‚½B + ƒXƒLƒ‹ƒoƒbƒNƒXƒeƒbƒv‚̈—‚Åclif_skill_damage2()‚ðŒÄ‚Ô‚Ì‚ðclif_fixpos()‚ð + ŒÄ‚Ԃ悤‚É•ÏXB(‚±‚ê‚Ń_ƒ[ƒW‚̃‚[ƒVƒ‡ƒ“‚ªo‚¸‚É + ˆÚ“®‚Å‚«‚Ü‚·B) + ƒoƒbƒNƒXƒeƒbƒv‚Æ‹©‚Ԃ悤‚É•ÏXB + skill_produce_mix() ƒIƒŠƒfƒIƒRƒ“Œ¤‹†“K—pB•ŠíƒŒƒxƒ‹‚ª3ˆÈã‚ÌŽž‚É + ƒXƒLƒ‹ƒŒƒxƒ‹*1%‚ªƒ{[ƒiƒX‚Æ‚µ‚Ä»‘¢Šm—¦‚É•t‚«‚Ü‚·B + ƒGƒ‹ƒjƒEƒ€‚ÌŠm—¦”»’è’ljÁB +Eskill_db.txt - ƒoƒbƒNƒXƒeƒbƒv‚Ìnk‚ð0‚©‚ç1‚É•ÏXB(ƒXƒLƒ‹”Ô†150‚Ì•¨‚Å‚·B) +Eproduce_db.txt ƒIƒŠƒfƒIƒRƒ“,ƒGƒ‹ƒjƒEƒ€‚ð’ljÁB(‚±‚ê‚Í–{ŽI‚É‚Í‚È‚¢•¨‚Å‚·B + ‚æ‚Á‚ăNƒ‰ƒCƒAƒ“ƒg‚É‚Í•K—v‚ȃAƒCƒeƒ€‚ª•\Ž¦‚³‚ê‚Ü‚¹‚ñB) + ƒIƒŠƒfƒIƒRƒ“Œ¤‹†‚ð‚µŽg‚¦‚镨‚É‚·‚邽‚߂ɒljÁ‚µ‚Ü‚µ‚½B + ƒIƒŠƒfƒIƒRƒ“‚Ìꇂ̓IƒŠƒfƒIƒRƒ“Œ´Î3‚‚ÆÎ’Y1‚‚ª•K—v‚Å + ƒGƒ‹ƒjƒEƒ€‚̓Gƒ‹ƒjƒEƒ€Œ´Î3‚‚ÆÎ’Y1‚‚ª•K—v‚Å‚·B +Epc.c ‚µC³B + pc_heal()pc_percentheal() ‚µ‚¾‚¯C³B + pc_gainexp() ƒMƒ‹ƒh‚Éexp‚ðã”[‚·‚鎞‚Éexp‚ªƒ}ƒCƒiƒX‚É‚È‚ç‚È‚¢‚悤‚É + C³B“¯Žž‚É2‚ˆÈã‚̃Œƒxƒ‹‚ªã‚ª‚é‚悤‚É•ÏXB + ő僌ƒxƒ‹ˆÈã‚ɃŒƒxƒ‹‚ªã‚ª‚ç‚È‚¢‚悤‚ÉC³B + pc_checkbaselevelup()Apc_checkjoblevelup() ’ljÁBƒŒƒxƒ‹ƒAƒbƒv‚ð + ƒ`ƒFƒbƒN‚µ‚Ü‚·B + pc_itemheal() ’ljÁBƒAƒCƒeƒ€‚ðŽg‚¤Žž‚ÉVIT‚ƃXƒLƒ‹‚É‚æ‚Á‚ă{[ƒiƒX‚ª + •t‚•¨‚Å‚·BƒXƒLƒ‹ƒ‰[ƒjƒ“ƒOƒ|[ƒVƒ‡ƒ“ŽÀ‘•B +Epc.h + pc_checkbaselevelup(),pc_checkjoblevelup() ’ljÁB + pc_itemheal() ’ljÁB +Escript.c - ƒXƒNƒŠƒvƒgfixheal‚𜋎Bitemheal‚ð’ljÁBheal‚ªfixheal‚Ì‹@”\‚ð‚·‚é + ‚悤‚É•ÏXB + buildin_fixheal() ‚ðÁ‚µbuildin_heal()‚ðŒ³‚Ì•¨‚É–ß‚µ‚Ü‚µ‚½B(‚‚܂è + buildin_heal()‚ªbuildin_fixheal()‚É‚È‚è‚Ü‚µ‚½B) + buildin_itemheal() ’ljÁBƒAƒCƒeƒ€‚É‚æ‚é‰ñ•œ‚Í‚±‚ê‚ðŒÄ‚Ԃ悤‚É‚µ‚Ä + ‚‚¾‚³‚¢B + buildin_heal()‚©‚çƒ{[ƒiƒX‚ÌŒvŽZ‚𜋎B +Eitem_db.txtA item_db2.txt - heal‚ðitemheal‚É•ÏXB +Emob.c + mob_damage() 0335‚Åmvp‚É‚µŠÔˆá‚¢‚ª‚ ‚è‚Ü‚µ‚½‚Ì‚ÅC³‚µ‚Ü‚µ‚½B +Eskill.h + MAX_SKILL_PRODUCE_DB‚ð64‚©‚ç100‚É•ÏXB + + +//0335 by Ž€_ +Echar/char2.c‚̈ꕔ‚ÉRETCODE‚ª“K—p‚³‚ê‚Ä‚È‚©‚Á‚½‚Ì‚Å‚»‚ê‚ðC³B +Echar/char2.c‚Ìparse_char()‚ŃLƒƒƒ‰‚ðÁ‚·Žž‚É–â‘肪‚ ‚è‚»‚¤‚ÈŠ‚ðC³B +Echar/cha2.c,login/ login2.c‚ðchar/cha.c, login/login.c‚É•ÏXB +Echar/makefile,login/makefile‚ð•ÏXB +Emakefile‚Æcommon/mmo.h‚ð•ÏX‚µ‚ÄOS‚ðŽ©“®”FŽ¯‚µ‚ÄRETCODE‚ðŽ©“®‚É + “K—p‚·‚é‚悤‚É•ÏXB +Ecommon/grfio.c‚Ìgrfio_init()‚ðC³B(ƒR[ƒh‚ð‚¿‚å‚Á‚Æ‚«‚ê‚¢(H)‚É + ‚µ‚½‚¾‚¯‚Å‚·‚ª,,,) +EƒCƒ“ƒfƒ…ƒAŽÀ‘•B‚æ‚Á‚ăAƒ“ƒeƒBƒyƒCƒ“ƒƒ“ƒg‚àŽÀ‘•B +Emap/clif.c + clif_parse_LoadEndAck() ŠØ‘ƒNƒ‰ƒCƒAƒ“ƒg‚̃pƒbƒ`‚ɇ‚킹‚Ä‚µ•ÏXB + (ƒ}ƒbƒv‚ª•Ï‚í‚é“x‚É•Ší‚ƃV[ƒ‹ƒh‚ªŒ©‚¦‚È‚‚Ȃ邽‚ß‚Å‚·B‚Ü‚¾ + “ú–{ƒNƒ‰‚Æ‚ÍŠÖŒW‚ ‚è‚Ü‚¹‚ñ‚ª...) + clif_skillinfoblock() up‚Í‚¢‚ç‚È‚¢‚ÆŽv‚¤‚Ì‚ÅÁ‚µ‚Ü‚µ‚½BƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ª + 256A512“™‚ÌŽžƒXƒLƒ‹ƒcƒŠ[‚ª³‚µ‚•\Ž¦‚³‚ê‚È‚¢‚±‚Æ‚Í + ‚à‚¤‚ ‚è‚Ü‚¹‚ñB + clif_guild_skillinfo() “¯‚¶‚悤‚Éup‚ðÁ‚µ‚Ü‚µ‚½B + clif_birthpet() pc_delitem() ŒÄ‚Ԃ悤‚É•ÏXB + clif_damage() ƒCƒ“ƒfƒ…ƒA‚ɑΉž‚·‚é‚悤‚É•ÏXB +Emap/pc.c + pc_percentheal() ƒ}ƒCƒiƒX‚ð“ü‚ê‚Ä‚à“®‚‚悤‚É•ÏXB‚µC³B + pc_heal() ‚µC³B + natual_heal() ‚µC³B + do_init_pc() natual_heal‚ÌC³‚ɇ‚킹‚Ä•ÏXB + pc_calcstatus() ‹|‚ð‘•”õ‚µ‚Ä‚È‚¢‚ƃƒV‚Ì–Ú‚ª“K—p‚³‚ê‚È‚¢‚悤‚É•ÏXB + ƒgƒ‰ƒXƒgŽÀ‘•B + pc_damage() ƒCƒ“ƒfƒ…ƒA‚ɑΉž‚·‚é‚悤‚É•ÏXB +Emap/pc.h + pc_checkoverhp(), pc_checkoversp()‚ð’ljÁB +Emap/map.h + MAX_PC_CLASS‚ð+1‚ÉB +Emap/atcomand.c + comand‚ðcommand‚É•ÏXB + strncmp‚ðstrcmpi‚É•ÏXB‚æ‚Á‚ăRƒ}ƒ“ƒh‚ª‘啶ŽšA¬•¶Žš‚ð‹æ•Ê‚·‚é + •K—v‚ª‚È‚‚È‚è‚Ü‚µ‚½B +Emap/npc.h + npc_parse_mob()‚ð’ljÁB(ˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñ‚ª...) +Emap/temdb.c + itemdb_readdb()‚Åclass_equip_db.txt‚ð“ǂނ悤‚É•ÏXB +Edb/class_equip_db.txt ‚ð’ljÁB‚±‚±‚Å‘•”õ‚·‚éƒNƒ‰ƒX‚ðŽw’肵‚Ü‚·B‚È‚¢ê‡‚Í + item_db.txt‚É‚ ‚éjob‚ðŽg‚¢‚Ü‚·BŠÜ‚Ü‚ê‚Ă镨‚ÍŠ®‘S‚È•¨‚Å‚Í‚È‚ + Žg—p—á’ö‚Ì•¨‚Å‚·B +Emap/skill.c - skill_status_change_start() ƒCƒ“ƒfƒ…ƒA‚ÌŽžŠÔ‚𳂵‚•ÏXB +Emap/battle.h + battle_config‚Ìexp_rate‚ðbase_exp_rate‚É•ÏXB,job_exp_rate‚ð’ljÁB + battle_get_mexp()‚ð’ljÁB +Emap/battle.c + battle_config‚Ìexp_rate‚ðbase_exp_rate‚É•ÏXB,job_exp_rate‚ð’ljÁB + battle_get_mexp()‚ð’ljÁB + battle_calc_magic_attack()‚ð•ÏXBƒ_[ƒ“ƒAƒ“ƒfƒbƒh‚Ń{ƒX‚Ì”FŽ¯‚ðmvp + exp‚Å‚·‚é‚悤‚É•ÏXB +Emap/mob.c + mob_readdb() base_exp_rate,job_exp_rate‚ɑΉžB + mob_readdb() ƒ{ƒX‚Ì”FŽ¯‚ðmvpŒoŒ±’l‚Å‚·‚é‚悤‚É•ÏXB + mob_damage() mvp‚ðŽæ‚鎞‚̈—‚ð•ÏXBd‚³‚ª50%‚ð‰z‚¦‚é‚Æ°‚É + —Ž‚¿‚é‚悤‚É•ÏX‚ÆFXB +Econf/battle_athena.cnf + base_exp_rateA,job_exp_rate‚ð’ljÁB +E0308‚Å–Y‚ꂽ•¨ + ŒÃ‚‚¢” AŒÃ‚¢ƒJ[ƒh’ŸAŒÃ‚¢Ž‡F‚Ì” ‚ÌŽg—p‚Å“¾‚ç‚ꂽƒAƒCƒeƒ€‚ð + Ž‚Á‚Ä‚È‚‚È‚Á‚½‚çƒAƒCƒeƒ€‚ð°‚É—Ž‚Æ‚·‚悤‚É•ÏXB + »‘¢‚Í‚·‚Å‚É0302‚Å“K—pB + +---------- +//334 by C}{RIS + +E‚ ‚Ղ낾‚Ì332.txt‚ðpet_db.txt‚Æ‚µ‚Ä“¯«B + +EŠeŽíƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚̃~ƒX‚ðC³ + Eattr_fix.txt@‘®«C³‚ªƒ}ƒCƒiƒX‚É“‚¢‚Ä“G‚ª‰ñ•œ‚·‚é–â‘è‚ðC³B + „Œ³‚̉ñ•œŽd—l‚É–ß‚µ‚½‚¢ê‡attr_fix.txt‚ðƒŠƒl[ƒ€‚µAattr_fix_old.txt‚ðattr_fix.txt‚ɃŠƒl[ƒ€‚µ‚ĉº‚³‚¢B + Emob_db.txt@ƒ‚ƒ“ƒXƒ^[‚Ì“ú–{Œê–¼‚ð–{ŽI‚Æ“ˆêB + Ecast_db.txt@‰r¥ŽžŠÔAƒfƒBƒŒƒC‚ð–{ŽI‚Æ“ˆêB + +---------- +//333 by ŒÓ’±—– + +EƒMƒ‹ƒh‹@”\’ljÁ + EƒMƒ‹ƒh‚Ì“¯–¿‚Æ“¯–¿‰ðÁ + + (char/) + inter.c/int_guild.c + ƒpƒPƒbƒg’·/ƒMƒ‹ƒhˆ—’ljÁ + (map/) + clif.c/clif.h + clif_guild_reqalliance,clif_guild_allianceack, + clif_guild_delalliance,clif_parse_GuildRequestAlliance, + lif_parse_GuildReplyAlliance,clif_parse_GuildDelAlliance’ljÁ + iƒMƒ‹ƒh“¯–¿ŠÖŒW‚̃pƒPƒbƒgˆ—j + intif.c/intif.h + ƒMƒ‹ƒh“¯–¿ŠÖŒW‚̃pƒPƒbƒgˆ—’ljÁ + guild.c/guild.h + ƒMƒ‹ƒh“¯–¿ŠÖŒW‚̈—’ljÁ + map.h + struct map_session_data‚Éguild_alliance,guild_alliance_account’ljÁ + +EƒMƒ‹ƒhƒGƒ“ƒuƒŒƒ€‚Ì•ÏX‚ªƒ}ƒbƒvŽI‚ðÄ‹N“®‚µ‚È‚¢‚Æ—LŒø‚É‚È‚ç‚È‚¢ƒoƒOC³ + + guild.c/guild.h + guild_emblem_changed‚ÌC³ + +---------- +//331 by ‰ß‹Ž‚Ìli1 + +EƒyƒbƒgƒVƒXƒeƒ€C³(Š®¬“x25%) + + EŠeŽí•ßŠl—pƒAƒCƒeƒ€‚ð‚»‚ê‚¼‚ê‘Ήž‚·‚é“G‚ɑ΂µ‚ÄŽg—p‚·‚邱‚Æ‚Å + @³‚µ‚—‘‚ªŽè‚É“ü‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + EŠeŽí•ßŠl—pƒAƒCƒeƒ€‚ð‘Ήž‚µ‚È‚¢“G‚ÉŽg—p‚µ‚½ê‡‚̓‹[ƒŒƒbƒg‚ª•K‚¸Ž¸”s‚µ‚Ü‚·B + Eƒyƒbƒg‚ªuŽž‚É•\Ž¦‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + Eƒyƒbƒg‚ð‰EƒNƒŠƒbƒN‚·‚é‚ƃƒjƒ…[‚ªo‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + E‘¼FXŠëŒ¯‚È—v‘f‚ðC³‚µ‚Ü‚µ‚½B(ƒAƒCƒeƒ€‚Ì”‚ÌŒ¸“™‚̃oƒO‚𒼂µ‚Ü‚µ‚½) + + (db/) + item_db.txt + ŠeŽí•ßŠl—pƒAƒCƒeƒ€‚ɑΉž‚·‚é‚悤petƒRƒ}ƒ“ƒh‚𳂵‚‘‚«‚Ü‚µ‚½B + + (common/) + mmo.h + s_pet ƒyƒbƒg\‘¢‘Ì‚Épet_item_id‚ð’ljÁ + + (map/) + clif.c + clif_birthpet()‚ðC³B³‚µ‚—‘‚ªŒ¸‚éA³‚µ‚¢—‘‚ÌID‚ðŽæ“¾‚·‚é‚悤C³ + ‚±‚ê‚É‚æ‚Á‚ÄA³‚µ‚npc_petŠÖ”‚ª“®‚«‚Ü‚·B + + clif_spawnnpc()‚ðC³iWBUFPOS(buf,36,nd->bl.x,nd->bl.y)‚ÆA”’l‚ð26‚©‚ç36‚Ö•ÏX‚µ‚Ü‚µ‚½) + ‚±‚ê‚É‚æ‚Á‚ăyƒbƒg‚ªuŽž‚É•\Ž¦‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + + npc.c + npc_pet()‚ðC³B + + pet.c/pet.h + ƒyƒbƒgŠÖ˜A‚Ìׂ©‚ÈŠÖ”‚ð‚±‚¿‚ç‚É‚Ü‚Æ‚ß‚éˆ×A’ljÁ‚µ‚Ü‚µ‚½B + Œ»Ý‚̓yƒbƒg‚Ì”»’èŠÖŒW‚ð‚Ü‚Æ‚ß‚Ä‚ ‚è‚Ü‚·B + + script.c + “Á‚É‘å‚«‚ÈC³‚Í‚ ‚è‚Ü‚¹‚ñB +---------- +//330 by ‰ß‹Ž‚Ìli1 + +EƒyƒbƒgƒVƒXƒeƒ€“±“ü(Š®¬“x‚Q‚O“) + E“G‚ɑ΂µ‚ĕߊl—pƒAƒCƒeƒ€‚ðŽg—p‚·‚鎖‚ª‰Â”\‚Æ‚È‚è‚Ü‚µ‚½B + @(‚Ü‚¾n‚µ‚Ä‚¢‚È‚¢ƒŠƒ“ƒS‚Ì‚ÝŽg—p‰Â”\A“G‚ɂ‚©‚Á‚Ä‚àƒ|ƒŠƒ“‚Ì—‘‚ªŽè‚É“ü‚è‚Ü‚·B) + EŠeŽí—‘‚ɑ΂µ‚ăyƒbƒg‚ð•\Ž¦‚·‚鎖‚ª‚Å‚«‚Ü‚·A‚½‚¾‚µ‚È‚º‚©ˆê“x‰æ–ÊŠO‚É + @‚Å‚È‚¢‚ƃyƒbƒg‚ª•\Ž¦‚³‚ê‚Ü‚¹‚ñB + @(‹°‚炃yƒbƒg•\Ž¦‚ÌÛ‚És‚Á‚Ä‚¢‚éNPCƒXƒe[ƒ^ƒX‚ª³‚µ‚“ü‚Á‚Ä‚¢‚È‚¢) + E•\Ž¦‚³‚ꂽƒyƒbƒg‚ªƒpƒtƒH[ƒ}ƒ“ƒX‚ðs‚¢‚Ü‚·B + + (db/) + item_db.txt + Œg‘Ñ—‘›z‰»‹@‚ðŽg—p‰Â”\‚É bpetƒRƒ}ƒ“ƒh(Œg‘Ñ—‘›z‰»‹@Žg—p) + u‚Ü‚¾n‚µ‚Ä‚È‚¢ƒŠƒ“ƒSv‚ðŽg—p‰Â”\‚É petƒRƒ}ƒ“ƒh(‚ ‚émob‚ɑ΂µ‚ÄŽg—p‰Â”\‚É‚·‚é) + (common/) + mmo.h + s_pet@ƒyƒbƒg\‘¢‘̒ljÁ + mmo_charstatus@ƒyƒbƒg\‘¢‘Ì錾•Ï”’ljÁ(pet) + (map/) + clif.c/clif.h + + int clif_catchpet(struct map_session_data *sd,int pet_id); + void clif_ruletpet(int fd,struct map_session_data *sd); + int clif_judgepet(struct map_session_data *sd,int target_id); + int clif_sendegg(struct map_session_data *sd); + void clif_listpet(int fd,struct map_session_data *sd); + int clif_birthpet(struct map_session_data *sd,int pet_id); + void clif_menupet(int fd,struct map_session_data *sd); + + ˆÈã‚ÌŠÖ”‚ð’ljÁ‚µƒyƒbƒg‚ÉŠÖ‚·‚鈗‚ðs‚Á‚Ä‚¨‚è‚Ü‚·B + (ƒ‹[ƒŒƒbƒgA—‘‘I‘ð‘‹AƒpƒtƒH[ƒ}ƒ“ƒXA‚»‚Ì‚Ù‚©FX) + + npc.c/npc.h + int npc_pet(struct map_session_data *sd,int name_id); + ƒyƒbƒg•\Ž¦‚ׂ̈̊֔‚ð’ljÁ + (‚±‚ÌŠÖ”“à•”‚Ńyƒbƒg‚Ì•\Ž¦ˆ—‚ðs‚Á‚Ä‚¢‚Ü‚·B“KØ‚ÉC³‚µ‚Ä‚‚¾‚³‚¢) + + script.c + int buildin_catchpet(struct script_state *st); + int buildin_birthpet(struct script_state *st); + ‚ð’ljÁ‚µ‚Ü‚µ‚½BƒXƒNƒŠƒvƒg‚Épet,bpet‚ð’ljÁ‚µ‚Ü‚µ‚½B +---------- +//329 by ŒÓ’±—– + +EƒMƒ‹ƒh‹@”\’ljÁ + EƒMƒ‹ƒh‚Ö‚ÌEXP‚Ìã”[ + EƒMƒ‹ƒhƒŒƒxƒ‹ƒAƒbƒv + EƒMƒ‹ƒhƒXƒLƒ‹‚ÌŠ„‚èU‚è + + (db/) + exp_guild.txt + ƒMƒ‹ƒhƒŒƒxƒ‹‚ÌŒoŒ±’lƒf[ƒ^ƒx[ƒX + (common/) + mmo.h + GBI_*,GMI_*‚Ì’è‹`‚̒ljÁ‚È‚Ç + (char/) + int_guild.c + EXP‚⃌ƒxƒ‹ƒAƒbƒvAƒXƒLƒ‹ƒAƒbƒvˆ—’ljÁ‚È‚Ç + inter.c + ƒpƒPƒbƒg’·’ljÁ + (map/) + guild.c/guild.h + ƒMƒ‹ƒhˆ—’ljÁ + intif.c/intif.h + ƒMƒ‹ƒhƒpƒPƒbƒgˆ—’ljÁ + clif.c + clif_guild_skillinfo()C³ + clif_guild_skillup()’ljÁ + pc.c + pc_skillup()‚ŃMƒ‹ƒhƒXƒLƒ‹‚ÌꇂÍguild_skillup()‚ðŒÄ‚Ԃ悤‚É + pc_gainexp()‚Åã”[EXP‚Ì‚½‚ß‚Éguild_payexp()‚ðŒÄ‚Ԃ悤‚É + +EƒMƒ‹ƒh‹@”\C³ + EƒMƒ‹ƒhƒƒ“ƒo[‚ªƒƒOƒCƒ“‚⃃OƒAƒEƒg‚·‚é‚ÆA + ƒƒOƒCƒ“’†‚̃Mƒ‹ƒhƒƒ“ƒo[‚ɃMƒ‹ƒhŒnƒpƒPƒbƒg‚ª‘—‚ç‚ê‚È‚‚È‚é–â‘èC³ + + guild.c + guild_recv_memberinfoshort()‚ÌC³ + +---------- +//328 by ŒÓ’±—– + +EƒMƒ‹ƒh‹@”\‚̒ljÁ‚È‚Ç + E’Ç•ú‹@”\‰¼ŽÀ‘•i’Ç•ú‚µ‚½ƒLƒƒƒ‰‚àĉÁ“ü‰Â”\•ˆê•”î•ñ‚ªƒ_ƒ~[j + EƒXƒLƒ‹‚Ì•\Ž¦i•\Ž¦‚¾‚¯‚Å‚·Bã‚°‚½‚è‚Ío—ˆ‚Ü‚¹‚ñj + + (common/) + mmo.h + struct guild_explusion‚Ì•ÏX + (char/) + int_guild.c + ’Ç•úˆ—’ljÁ + ‹óƒMƒ‹ƒhƒ`ƒFƒbƒN‚ȂǒljÁ + (map/) + guild.c/guild.h + ƒMƒ‹ƒhƒXƒLƒ‹ŠÖŒW‚̃AƒNƒZƒT‚ȂǒljÁ + clif.c + clif_guild_skillinfo()‚ÌC³ + clif_guild_explusionlist()’ljÁ + +Eƒ^[ƒ“ƒAƒ“ƒfƒbƒh‚ªƒ{ƒXŒnƒAƒ“ƒfƒbƒh‚ÅMISS‚É‚È‚éƒoƒOC³ + Eƒ^[ƒ“ƒAƒ“ƒfƒbƒhŽ¸”sŽž‚̃_ƒ[ƒW‚ªŽg‚í‚ê‚Ü‚· + + battle.c + battle_calc_magic_damage()‚ÌC³ + +---------- +//327 by ‚¢‚Ç +EŒoŒ±’lƒe[ƒuƒ‹‚É‚P‰ÓŠŠÔˆá‚¢‚ª‚ ‚Á‚½‚Ì‚ÅC³ + db/exp.txt + +---------- +//326 by ‚¢‚Ç +EcharŽI‚ÌVŽI,ƒƒ“ƒeƒiƒ“ƒX’†‚̃tƒ‰ƒOî•ñ‚ðÝ’è‚Å‚«‚é‚悤‚É‚µ‚½ +EcharŽI‚ÌŽI–¼‚Ì’·‚³‚ª16ƒoƒCƒg‚É‚È‚Á‚Ä‚¢‚½•”•ª‚ð20ƒoƒCƒg‚ÉC³ + + (login/) + login2.c + parse_login()‚ÌC³ + login.h + struct mmo_char_server‚ÌC³ + (char/) + char2.c + check_connect_login_server(),do_init()‚ÌC³ + (conf/) + char_athena.cnf +@ Echar_maintenance‚ð1‚É‚·‚é‚ƃƒOƒCƒ“l”‚ÌŒã‚ë‚É(“_ŒŸ’†)‚ª‚‚ +@ Echar_new‚ð1‚É‚·‚é‚ÆŽI–¼‚Ì‘O‚É[V]‚ª‚‚ + (doc/) + ƒpƒPƒbƒg‰ðÍ.txt + E¡‰ñ‚Ì•ÏX‚É”º‚¤ˆê•”C³ + +---------- +//325 by Mind Twist(224&0293) +E“G(NPC)ƒXƒLƒ‹‚̒ljÁiƒcƒŠ[‚ɒljÁ‚Ì‚Ýj + db/skill_db.txt + EƒMƒ‹ƒhƒXƒLƒ‹‘Š•Ï‚í‚炸•s–¾c‚±‚ÌŒ`Ž®‚¶‚á‚È‚¢‚Ì‚©‚ÈH + +---------- +//324 by non + +Emob‚̃^[ƒQƒbƒgŒãˆÚ“®‚ðC³ +Emob‚̈ړ®‘¬“x‚ðDB‚©‚甽‰f‚³‚¹‚é‚悤‚É + + (map/) + mob.c + mob_ai_sub_hard()‚ÌC³ + +EŽÎ‚ß”»’è‚ðC³ + EFW“™‚ł̎΂ߔ͈͂ð–{ŽIŽd—l‚É + + (map/) + map.c + map_calc_dir()‚ÌC³ + +---------- +//322 by ŒÓ’±—– + +EƒƒOƒCƒ“Žž‚É•K‚¸ƒp[ƒeƒB[‚©‚眖¼‚³‚ê‚éƒoƒOC³ + E0318‚Ìuƒp[ƒeƒB‚𜖼‚³‚ꂽ‚Ì‚É`v‚Å‚ÌC³ƒ~ƒX + + (char/) + int_party.c + ƒp[ƒeƒB[‹£‡Žž‚̃ƒbƒZ[ƒW‚ɉüs’ljÁ + (map/) + party.c + party_check_member()‚ÌC³ + +EƒMƒ‹ƒh‰ï˜bŽÀ‘••C³‚È‚Ç + (char/) + int_guild.c + ƒMƒ‹ƒh‹£‡Žž‚̃ƒbƒZ[ƒW‚ɉüs’ljÁ + (map/) + guild.c/guild.c + guild_send_message(),guild_recv_message()‚ȂǒljÁ + intif.c/intif.h + intif_parse_GuildMessage()‚ȂǒljÁ + clif.c/clif.h + clif_guild_message(),clif_parse_GuildMessage()‚ȂǒljÁ + clif_guild_basicinfo()‚̃pƒPƒbƒg‚ð0150‚©‚ç01b6‚É•ÏX + +EƒoƒbƒNƒXƒeƒbƒv‚ª‚à‚Ì‚·‚²‚‰ö‚µ‚¢‚¯‚lj¼ŽÀ‘• + EŽg‚¤‚ƃ_ƒ[ƒW‚ð‚P‹ò‚ç‚Á‚½‚悤‚ÉŒ©‚¦‚Ü‚·B(ŽÀۂ̓_ƒ[ƒW‚O‚Å‚·) + + skill.c + skill_castend_damage_id()C³ + +------------------ +//321 by@‰ß‹Ž‚Ìli +E‹|–î‘•”õŒø‰Ê‚Ì‚ÝŽÀ‘•(‘½X‚¨‚©‚µ‚¢“_‚Í‘¶Ý‚·‚邪‘•”õ‚ªo—ˆA–î‚ÌŒø‰Ê‚ªo‚é) + map/clif.c map/clif.h + clif_itemlist()’ljÁ + Ž‚¿•¨‚Ì’†‚Å‹|–î‚ÉŠ„‚è“–‚Ä‚éƒpƒPƒbƒg”Ô†‚ð0x8000‚Æ‚·‚鈗’ljÁ + + clif_arrowequip(struct map_session_data *sd,int val); //self + ‚ð’ljÁB‚±‚Ì’†‚Å‹|–î‘•”õƒpƒPƒbƒgˆ—‚ðs‚Á‚Ä‚Ü‚· + map/pc.c + pc_equipitem()@‹|–î‘•”õ’ljÁ + + Žc‚³‚ꂽ–â‘è“_F + E@–Œ¸‚ç‚È‚¢ + E@ƒŠƒƒO‚·‚é‚Ɩ‚P‚É‚È‚é + E@‘•”õ‚µ‚Ä‚¢‚é–•\Ž¦‚³‚ê‚È‚¢(©‘½•ª‘•”õpos‚ÌÝ’è‚ð‚µ‚Ä‚¢‚È‚¢ˆ×‚©‚Æ) + E@–î‚ð‘•”õ‰ðœ‚Å‚«‚È‚¢(‘¼‚Ì–î‚ð‘•”õ‚µ‚È‚¨‚¹‚Α•”õ‚µ‚½–î‚ÌŒø‰Ê‚É‚È‚è‚Ü‚· + +---------- +//320 by ‚¢‚Ç +EˆÈ‰º‚̃pƒPƒbƒg‚̃Gƒ‰[ƒR[ƒh‚Ìà–¾‚ð’ljÁ + doc/ƒpƒPƒbƒg‰ðÍ.txt + R 006a <error No>.B + R 0070 <error No>.B + R 0081 <type>.B + +---------- +//319 by mk +ENPC‚Ƃ̉ï˜b’†‚É‘•”õ•ÏXAƒAƒCƒeƒ€AƒXƒLƒ‹‚ðŽg—p‚Å‚«‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½ + map/clif.c + ŠeŠ‚Åsd->npc_id‚ðƒ`ƒFƒbƒN‚µ‚Ä‚Ü‚· + +Eˆê•”‚Ì”í‚蕨‚łธBŒã‚É‘•”õ‰ÓŠ‚ª‚¨‚©‚µ‚‚È‚éƒoƒO‚ðC³ + map/script.c + buildin_successrefitem ‚̃R[ƒh‚ðC³ + +EƒJ[ƒh‚É‚æ‚é’ljÁŒø‰Ê‚¨‚æ‚шÙí‘Ï«”“®ˆ—‚ÌC³ + map/skill.c + ƒCƒ“ƒfƒbƒNƒX‰Šú’l‚ªŠÔˆá‚Á‚Ä‚¢‚é‚ÆŽv‚í‚ê‚é‚Ì‚ÅC³iSC_POISON -> SC_STONEj + +Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚̉¼ŽÀ‘•AƒOƒŠƒ€ƒgƒD[ƒX‚ÌŽg—pðŒ’ljÁ + Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚ð‰¼ŽÀ‘•B‚«”ò‚΂µˆ—‚â‚Á‚Ä‚é‚Ì‚Å + @battle.c ‚Ìblewcount‚ðƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ü‚µ‚½ + EƒOƒŠƒ€ƒgƒD[ƒX‚ÌŽg—pðŒiƒnƒCƒfƒBƒ“ƒO•ƒJƒ^[ƒ‹‘•”õjƒ`ƒFƒbƒN’ljÁ + @‚±‚ñ‚ÈŠ´‚¶‚Å‘¼‚̃XƒLƒ‹Žg—pðŒ‚à’ljÁ‚µ‚Ä‚à‚æ‚¢‚Ì‚©‚ÈH + Eskill_blown ‚Ì‚«”ò‚΂µ•ûŒü‚ðƒ^[ƒQƒbƒg‚Ƃ̈ʒu‚ªd‚È‚Á‚Ä‚¢‚é‚Æ‚«‚Í + @ƒ‰ƒ“ƒ_ƒ€‚Å‚Í‚È‚ƒLƒƒƒ‰ƒNƒ^[‚ðŒã‚ë‚Ö‚«”ò‚΂·‚悤‚É•ÏX‚µ‚Ü‚µ‚½ + map/skill.c + skill_castend_damage_id()•ÏX + skill_check_condition()•ÏX + skill_blown()•ÏX + +EƒAƒTƒVƒ““ñ“—¬ˆ—‚ÉŠÖ‚·‚éC³? + E‘•”õˆê——‚Ödrag&dropŽž‚É—¼Žè‚ªÔ‚ƒ}[ƒLƒ“ƒO‚³‚ê‚é‚悤‚ÉC³ + @ƒAƒTƒVƒ“‚Å‚Í•Ší‘•”õ‰ÓŠ‚ª—¼Žè‚É‚È‚é‚悤item_equippoint‚ð•ÏX + @‚»‚ê‚É”º‚¢pc.c‚Ìpc_equipitem‚ðC³ + E‹tŽèƒ_ƒ[ƒW‚ð•\Ž¦‚µ‚Ä‚Ý‚Ü‚µ‚½ + @‚Ü‚Æ‚à‚Ƀ_ƒ[ƒWŒvŽZ‚â‚Á‚Ä‚È‚¢‚Ì‚ÅUŒ‚‰ñ”‚ÌŠm”F‚¾‚¯‚Å‚· + EƒJƒ^[ƒ‹’ÇŒ‚‚ƶŽèUŒ‚‚ÌMISS‚ð–³—‚â‚è•\Ž¦ + (map/) + itemdb.c (itemdb.hAclif.cApc.c) + itemdb_equippoint() ‚ð•ÏX i“ñ“—¬‚ðl—¶j + ˆø”‚ð(int nameid) -> (struct map_session_data *sd,int nameid)‚É + ˆø”•ÏX‚É”º‚¢éŒ¾(itemdb.h)‚ƌĂÑo‚µ‘¤(clif.c ,pc.c)‚à•ÏX + pc.c + pc_equipitem(), pc_checkitem()‘•”õƒ`ƒFƒbƒN‚ðC³ + battle.c + battle_calc_weapon_attack(),battle_weapon_attack() + ã‚É‚à‘‚«‚Ü‚µ‚½‚ª¶Žè‚̃_ƒ[ƒWŒvŽZ‚Ís‚Á‚Ä‚Ü‚¹‚ñ + (ƒJ[ƒhA‘®«“™‚à–¢“K—p)‰EŽè‚Æ“¯‚¶ƒ_ƒ[ƒW“ü‚ê‚Ķ‰EC—û“K—p‚µ‚Ä‚Ü‚· + ƒJƒ^[ƒ‹’ÇŒ‚‚ƶŽèƒ_ƒ[ƒW‚ðƒ~ƒX‚³‚¹‚é•û–@(ƒpƒPƒbƒg?)‚ª‚í‚©‚ç‚È‚¢‚Ì‚Å + ŒvŽZŒã‚̃_ƒ[ƒW‚ª-1‚Ìê‡Adamage=0‚ð‘—‚é‚悤‚É‚µ‚Ä‚¢‚Ü‚· + ‚à‚Á‚Æ‚æ‚¢•û–@‚ª‚ ‚é‚Ì‚Å‚µ‚½‚çC³‚¨Šè‚¢‚µ‚Ü‚· + +EŠ®‘S‰ñ”ð‚ÌŒvŽZ‚ðLuk‚Å‚Í‚È‚Flee2‚Å”»’f‚·‚é‚悤‚ÉC³ + map/battle.c + battle_calc_weapon_attack() + + (db) + item_db.txtAitem_db2.txt + ‘•”õ•i‚̈ꕔƒ{[ƒiƒXŒø‰Ê‚ð’ljÁ + mob_db.txt + –^Š‚Å‚¤‚‚³‚ê‚Ä‚¢‚½‚à‚Ì‚ð‚µC³ + ‚Ü‚¾Mode‚âDrop‚É–â‘è“_‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ + +---------- +//0318 by ŒÓ’±—– + +E‚ ‚éŒö•½•ª”zPT‚Æ‚»‚ÌPT‚É‘®‚³‚È‚¢PC‚ª‹¤“¬‚·‚é‚ÆŽI‚ª–\‘–‚·‚éƒoƒOC³ + + mob.c + mob_damage()‚ÌEXP•ª”zˆ—C³ + +Eƒp[ƒeƒB‚𜖼‚³‚ꂽ‚Ì‚ÉŠ‘®‚µ‚Ä‚¢‚é‚悤‚ÉŒ©‚¦‚éƒoƒOC³ + EŠY“–ƒLƒƒƒ‰‚ªƒƒOƒAƒEƒgó‘Ô‚ÌŽž‚Éœ–¼‚³‚êA‚»‚ÌŒãA“¯C•ÊƒLƒƒƒ‰‚ª + “¯ƒp[ƒeƒB‚ÉŠ‘®‚µ‚È‚¨‚µA‚³‚ç‚ÉŒ³‚̃Lƒƒƒ‰‚ŃƒOƒCƒ“‚·‚é‚ÆA + œ–¼”»’è‚ÉŽ¸”s‚µ‚ăp[ƒeƒB‚ÉŠ‘®‚µ‚½‚Ü‚Ü‚Å‚ ‚é‚Æ‚³‚ê‚Ä‚µ‚Ü‚¤–â‘èC³ + + party.c + party_check_member()‚ÌC³ + + +---------- +//0317 by nabe + +Eu`‚³‚ñ‚©‚çŽæˆø‚ð—v¿‚³‚ê‚Ü‚µ‚½Bv‚ªŽ©•ª‚Ì–¼‘O‚É‚È‚Á‚Ä‚¢‚½‚Ì‚ðC³ + trade.c/clif.c/clif.h + clif_traderequest()‚ÅŽæˆø‘ŠŽè‚̃Lƒƒƒ‰–¼‚ð“n‚·‚悤‚É•ÏX + +---------- +//0316 by nabe + +E—¼Žè•Ší‚ð¸˜B‚·‚é‚Æ•ÐŽè‘•”õ‚É‚È‚éƒoƒO‚ðC³ + script.c + buildin_successrefitem()‚ÅA—¼Žè•Ší‚Ìꇓ™‚É‘•”õ‰ÓŠƒ`ƒFƒbƒN + +---------- +//0315 by ŒÓ’±—– + +EPC‚ÌSPAWNƒ^ƒCƒ~ƒ“ƒO‚ð•ÏX + Eƒ}ƒbƒvˆÚ“®(ƒƒOƒCƒ“)ŽžAƒ[ƒfƒBƒ“ƒOI—¹Œã‚ÉSPAWN‚·‚é‚悤‚ÉB + Eƒ[ƒh’†‚ÉUŒ‚‚³‚ꂽ‚肵‚È‚‚È‚è‚Ü‚·B + EƒMƒ‹ƒh/ƒp[ƒeƒBî•ñ“Ç‚Ýž‚Ý‘O‚É–¼‘O‰ðŒˆƒpƒPƒbƒg‚ª—ˆ‚é–â‘è‚à + C³‚³‚ê‚é‚Í‚¸‚Å‚·B + + pc.c + pc_setpos()‚Åmap_addblock,clif_spawnpc‚̌ĂÑo‚µ‚ðŽ~‚ß‚½B + clif.c + clif_parse_LoadEndAck‚Åmap_addblock,clif_spawnpc‚ðŒÄ‚Ԃ悤‚ÉB + +EinterŽIƒpƒPƒbƒgˆ—‚Ìd‘å‚È–â‘è‚ðC³ + Eˆê“x‚ɃpƒPƒbƒg‚ð‘—M‚Å‚«‚È‚©‚Á‚½ê‡A–³ŒÀƒ‹[ƒv‚Ɋׂé–â‘èC³ + + (char/) + char2.c + parse_frommap()C³ + inter.c + inter_parse_frommap()C³ + (map/) + chrif.c + chrif_parse()C³ + intif.c + intif_parse()C³ + +EƒMƒ‹ƒh‚Ì‹@”\’ljÁ + E‘¼l‚̃Gƒ“ƒuƒŒƒ€‚ªŒ©‚¦‚é‚悤‚ÉB + EƒƒOƒCƒ“’¼Œã‚ÌŽ©•ª‚̃Gƒ“ƒuƒŒƒ€‚ªŒ©‚¦‚é‚悤‚ÉB + E’E‘Þ‚Å‚«‚é‚悤‚ÉBi’Ç•ú‚Í‚Ü‚¾‚Å‚·j + + <ƒpƒPƒbƒgî•ñˆø‚«‘±‚«–ÍW> + E016c,016d,0163,015c‚È‚Ç‚ÌÚׂÈî•ñ + EƒMƒ‹ƒhƒXƒLƒ‹‚ÌID‚ª‚í‚©‚élA‹³‚¦‚Ä‚Ù‚µ‚¢‚Å‚·B + 158,205,331‚ ‚½‚è’²‚ׂ܂µ‚½‚ªƒ_ƒ‚È–Í—lB + + (common/) + mmo.h + MAX_GUILD‚ð36‚ÉB + (char/) + int_guild.c + ’E‘ނ̃pƒPƒbƒg•ÏX + inter.c + ƒpƒPƒbƒg’·C³ + (map/) + clif.c/clif.h + clif_set0078,clif_set007b‚ÌC³ + clif_guild_belonginfo‚ÌC³ + clif_guild_skillinfo’ljÁ + guild.c/guild.h + ’E‘ނȂǂ̈—’ljÁ + intif.c/intif.h + ’E‘ނȂǂ̈—’ljÁ‚È‚Ç + + +---------- +//0314 by ‚¢‚Ç + +EcharŽI‚ÆmapŽI‚ÌŽI”ãŒÀ‚ð30‚Ɉø‚«ã‚° + login/login.h + char/char.h + +Emap_athena1.cnf‚ðmap_athena.cnf‚ɃŠƒl[ƒ€ +@‚»‚ê‚É”º‚¢Aathena.sh‚ð•ÏX + +EƒpƒPƒbƒg‰ðÍŽ‘—¿‚ðdoc/‚Ɉړ® + + +---------- +//0313 by ŒÓ’±—– + +EƒMƒ‹ƒh‚Ì‹@”\’ljÁ + EƒMƒ‹ƒhŠ©—U/–ðE“à—e•ÏX/ƒƒ“ƒo[‚Ì–ðE•ÏX‚È‚Ç + Eguild.txt‚Ì‘Ž®‚ª‚Ü‚½•Ï‚í‚è‚Ü‚µ‚½‚ªA‘O‚̃f[ƒ^‚à“Ç‚Ýž‚ß‚é‚Í‚¸‚Å‚·B + + <ƒpƒPƒbƒgî•ñˆø‚«‘±‚«–ÍW> + E016c,016d,0163,015c‚È‚Ç‚ÌÚׂÈî•ñ + EŽ©•ªˆÈŠO‚ÌPC‚ÌŠ‘®ƒMƒ‹ƒhID‚ð’Ê’m‚·‚éƒpƒPƒbƒg + + (common/) + mmo.h + struct guild ‚ð•ÏX + (char/) + int_guild.c/inter.c + ˆ—’ljÁ/ƒpƒPƒbƒg’·’ljÁ + (map/) + guild.c/guild.h/intif.c/intif.h + ˆ—’ljÁ + clif.c/clif.h + ƒMƒ‹ƒhŠÖŒW‚̃pƒPƒbƒgˆ—’ljÁ + +Ehelp.txt‚ðC³ + help.txt + +E0311‚É‚æ‚镶Žš‰»‚¯‚ðC³ + README + map/pc.c + +---------- +//0312 by ‚¢‚Ç + +E@hƒRƒ}ƒ“ƒh‚ð@help‚É•ÏX +E“Ç‚Ýž‚Þƒ}ƒbƒvƒf[ƒ^‚Ì’è‹`•”•ª‚ð•ÏX + +---------- +//0311 by tk44 +EAssassin “ñ“—¬‘•”õAASPD–â‘èC³ + - map\pc.c + pc_equipitem(), pc_calcstatus(), pc_checkitem() + +E“ñ“—¬ŠQŒvŽZC³‚Ü‚¾ˆ—’† + +---------- +//0310 by ŒÓ’±—– + +EƒƒO‚âƒf[ƒ^‚ÉŽg‚¤‰üsƒR[ƒh‚ðmmo.h‚ÅÝ’è‰Â”\‚É + (common/) + mmo.h + RETCODE‚ʼnüsƒR[ƒh‚𕶎š—ñ‚Å’è‹`‚µ‚Ü‚·B + WindowsŒn‚¾‚ÆCR/LF‚È‚Ì‚Å"\r\n",UNIXŒn‚¾‚Æ"\n"‚Å‚·B + •Ê‚ɳ‚µ‚Žw’肵‚È‚‚Ä‚àAthenaŽ©‘Ì‚Í–â‘è‚È‚“®ì‚·‚é‚Í‚¸‚Å‚·B + (login/) + login2.c + (char/) + char2.c/int_storage.c/int_party.c/int_guild.c + •Û‘¶‚·‚é‰üsƒR[ƒh‚ðRETCODEˆË‘¶‚É•ÏXB + ‰üsƒR[ƒh‚Ɉˑ¶‚¹‚¸‚É“Ç‚ß‚é‚悤‚ÉC³B + +EƒNƒ‰ƒCƒAƒ“ƒg‚©‚ç•s–¾‚ȃpƒPƒbƒg‚ª—ˆ‚½‚çƒ_ƒ“ƒv‚·‚é‚悤‚É + E#define DUMP_UNKNOWN_PACKET 1 ‚ðƒRƒƒ“ƒg‰»‚·‚ê‚΃_ƒ“ƒv‚µ‚Ü‚¹‚ñB + + clif.c + •s–¾ƒpƒPƒbƒg‚̈—‚Ń_ƒ“ƒvˆ—‚ð’ljÁB + +EƒMƒ‹ƒh‹@”\‚̒ljÁ + EƒGƒ“ƒuƒŒƒ€•ÏX/’m•ÏXŽÀ‘• + Eguild.txt‚Ì‘Ž®‚ª•Ï‚í‚è‚Ü‚µ‚½‚ªA‘O‚̃f[ƒ^‚à“Ç‚Ýž‚ß‚é‚Í‚¸‚Å‚· + + (char/) + int_guild.c/inter.c + ƒMƒ‹ƒhƒpƒPƒbƒgˆ—AƒpƒPƒbƒg’· + (map/) + guild.c/guild.h + ‹@”\’ljÁ + intif.c/intif.h + ƒMƒ‹ƒhŠÖŒWƒpƒPƒbƒg’ljÁ + clif.c/clif.h + ƒMƒ‹ƒhŠÖŒWƒpƒPƒbƒg’ljÁ + +---------- +//0309 by C}{RIS + +Eƒ{ƒEƒŠƒ“ƒOƒoƒbƒVƒ…‚ð”͈ÍUŒ‚‰»‚µ‚Ü‚µ‚½B +Eƒvƒƒ“ƒeƒ‰‚É‘•”õ•i”Ì”„NPC‚ð’ljÁ‚µ‚Ü‚µ‚½B + map_athena1.cnf‚Ì + npc_shop1J.txt‚ðƒRƒƒ“ƒgƒAƒEƒg‚·‚ê‚Ζ³Œø‚Éo—ˆ‚Ü‚·B +EƒAƒCƒeƒ€‚Ì–¼‘O‚ÆID‚ð‘‚¢‚½ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚ð“Y•tBiitem.listj + +---------- +//0308 by Ž€_ +EŽ©‘R‰ñ•œ‚̃vƒƒOƒ‰ƒ€‚ðC³‚µ‚Ü‚µ‚½B + ‚±‚ê‚Å‘åä•v‚¾‚Æ‚¢‚¢‚Å‚·‚ª... + pc.c + pc_natural_heal()“™‚ðC³B + pc_percentheal()‚ð‚µC³B + pc_checkskill()‚ð‚µC³BƒXƒLƒ‹‚ª‚È‚¢ê‡0‚ð•Ô‚·‚悤‚É + •ÏX‚µ‚Ü‚µ‚½B‘¼‚Ì.cƒtƒ@ƒCƒ‹‚àC³‚·‚é•K—v‚ª‚ ‚è‚Ü‚µ‚½‚Ì‚Å + C³‚µ‚Ü‚µ‚½B +E4l–Ú‚Æ5l–ڂ̃Lƒƒƒ‰‚ðÁ‚¹‚È‚¢–â‘è‚ðC³B +EŽn‚ß‚©‚çƒiƒCƒt‚ƃRƒbƒgƒ“ƒVƒƒƒc‚ðŽ‚‚悤‚É•ÏXB +ELOOK_SHEILD‚ðLOOK_SHIELD‚ÉC³B +Emmo_charstatus‚Ìsheild‚ðshield‚ÉC³B +E.logƒtƒ@ƒCƒ‹‚âaccount.txtƒtƒ@ƒCƒ‹‚ðnotepad‚ÅŠJ‚‚Æ—ñ‚ª‘S•”Œq‚¢‚Å‚¢‚é + –â‘è‚ðC³B +E—”‚ðŽžŠÔ‚É‚æ‚Á‚ĉŠú‰»‚·‚é‚悤‚É•ÏXB + map.c + do_init()‚ð‚µC³B + +‘¼‚É•ÏX‚µ‚½ƒtƒ@ƒCƒ‹‚à‚ ‚è‚Ü‚·‚ª‘S•”Šo‚¦‚Ä‚Ü‚¹‚ñ‚Ì‚Å... + +---------- +//0307 by ŒÓ’±—– + +EV‹KPC‚̉ŠúˆÊ’u‚ðchar_athena.cnf‚É‘‚¯‚é‚悤‚É‚µ‚½ + start_point: ƒ}ƒbƒv–¼,x,y ‚̂悤‚ÉŽw’肵‚Ü‚·B + <—á> start_point: new_1-1.gat,53,111 + + (char/) + char2.c + +EƒMƒ‹ƒh‚̈ꕔ‹@”\ + EƒMƒ‹ƒh쬂‚ç‚¢‚µ‚©“®‚«‚Ü‚¹‚ñ + EŠ©—U/’E‘Þ/‰ðŽU/î•ñ‚Ì•ÏX/ƒGƒ“ƒuƒŒƒ€/’m‚È‚Ç‚Í‚·‚ׂĖ¢ŽÀ‘•‚Å‚· + + <ØŽÀ‚È—v–]> + ƒMƒ‹ƒhŠÖŒW‚̃pƒPƒbƒgî•ñ‚ª‘S‘R‘«‚è‚Ü‚¹‚ñB‚í‚©‚él‚Í‹³‚¦‚Ä‚‚¾‚³‚¢B + Œ»Ý‚̂܂܂ł̓Gƒ“ƒuƒŒƒ€‚Æ’m‚‚ç‚¢‚µ‚©ŽÀ‘•‚Å‚«‚È‚¢‰Â”\«‚ªcB + + (common/) + mmo.h + ƒMƒ‹ƒhŠÖŒW‚Ì\‘¢‘̂ƒ蔒ljÁ + (char/) + inter.c + ƒpƒPƒbƒg’·î•ñ’ljÁ + int_guild.c/int_guild.h + ŽÀۂ̈—’ljÁ + (map/) + map.h + struct map_session_data‚ɃMƒ‹ƒhŠÖŒW‚̃ƒ“ƒo’ljÁ + guild.c/guild.h + V‹K’ljÁBƒMƒ‹ƒh‹@”\—p + pc.c + pc_authok()‚ŃMƒ‹ƒhŠ‘®ŽžAguild_request_info()‚ðŒÄ‚Ԃ悤‚ÉB + clif.c/clif.h + ƒMƒ‹ƒhƒpƒPƒbƒg’ljÁ + intif.c/intif.h + ƒMƒ‹ƒhƒpƒPƒbƒg’ljÁ + +E0303‚Å‚ÌC³uMAXHP‚È‚Ç‚ªƒT[ƒo[‚ƃNƒ‰ƒCƒAƒ“ƒg‚Å`v‚ðŒ³‚É–ß‚µ‚½ + EVPC‚ðì‚é‚Æ‚«‚ɳ‚µ‚HP‚È‚Ç‚ðŒvŽZ‚µ‚Ä‚‚ê‚é‚悤‚É‚È‚Á‚½‚Ì‚Å + –ß‚µ‚Ä‚à•½‹C‚¾‚낤‚Æ—\‘ªB + EƒƒOƒCƒ“’¼Œã‚Éd—ÊŒx‚ªo‚Ä‚µ‚Ü‚¤‚½‚ßB + + pc.c + pc_authok()‚ÌC³ + +E”͈͎w’蕦‚«‚̈—C³ + E‚Å‚«‚邾‚¯Žw’肵‚½”‚Æ“¯‚¶‚¾‚¯•¦‚‚悤‚É + (áŠQ•¨‚È‚Ç‚É‚æ‚镦‚«–WŠQ‚̉ñ”ðŽ¸”sŽžA‘O‚̉ñ”ðŒ‹‰Ê‚ðŽg‚¤) + + mob.c + mob_once_spawn_area()‚ÌC³ + +---------- +//0305 by ‚¢‚Ç +EV‹KPC‚̈ʒu‚ð‰SŽÒC—ûê‚É•ÏXB +EmapŽI‚ªcharŽI‚ÉÚ‘±‚Å‚«‚È‚¢•s‹ï‡‚ÌC³B + +---------- +//0304 by Ž€_ +EŽ©‘R‰ñ•œ‚Ì—Ê‚ÆŽžŠÔ‚ð•ÏXBŠØ‘ŽI‚É“K—p‚³‚ê‚Ă镨‚Å‚·‚ª“ú–{‚É‚à + “K—p‚³‚ê‚Ä‚é‚Í‚¸‚Å‚·B(‘½•ª... ‚â‚Á‚Ä‚Ü‚¹‚ñ‚Ì‚Å‚í‚©‚è‚Ü‚¹‚ñBŠ¾) + HP‚Í–ˆ4•b‚É 1 + vit/6 + max_hp/200 ‚ð‰ñ•œA + SP‚Í–ˆ8•b‚É 1 + int/6 + max_sp/100 ‚ð‰ñ•œ‚µ‚Ü‚·B +EƒXƒLƒ‹HP‰ñ•œ—ÍŒüã‚É‚æ‚é‰ñ•œ‚ð + ƒXƒLƒ‹ƒŒƒxƒ‹*5 + max_hp/50‚É•ÏXB +EƒXƒLƒ‹SP‰ñ•œ—ÍŒüã‚É‚æ‚é‰ñ•œ‚ð + ƒXƒLƒ‹ƒŒƒxƒ‹*3 + max_sp/50‚É•ÏXB +EƒXƒLƒ‹ˆÚ“®ŽžHP‰ñ•œŽÀ‘•B + ¡‚ÌŠŽ~‚Ü‚Á‚Ä‚é‚Ì‚Æ”ä‚ׂÄ1/4‚Ì—Ê‚ð‰ñ•œ‚µ‚Ü‚·B(ŽžŠÔ‚Í“¯‚¶‚Å‚·B) +Evit‚Æint‚É‚æ‚Á‚ĉñ•œŽžŠÔ‚ª’Z‚‚È‚é‚Ì‚Å‚Í‚È‚‰ñ•œ—Ê‚ª‘‚¦‚Ü‚·B +EÅ‘åHP‚ÆÅ‘åSP‚ÌŒvŽZŒöŽ®‚ð•ÏXB + map.h + int inchealtick‚Ì•Ï‚í‚è‚Éint inchealhptick;‚Æ int inchealsptick;‚ð’ljÁB + int parame[6] ‚ð’ljÁBÅ‘åSP‚ÌŒvŽZ‚ׂ̈̕¨‚Å‘•”õ‚É‚æ‚Á‚Äオ‚Á‚½ + ƒpƒ‰ƒ[ƒ^‚ðŽ‚Á‚ÂB + pc.c + pc_hpheal(),pc_spheal(),pc_natural_heal_sub(),pc_natural_heal()‚ð + Ž©•ª‚̃R[ƒh‚É‘‚«Š·‚¦‚Ü‚µ‚½‚ªˆê‰ž³í‚É“®‚«‚Ü‚·‚ª + ‘¼‚̃R[ƒh‚ɉe‹¿‚ª‚È‚¢‚©‚Ç‚¤‚©‚Í‚í‚©‚è‚Ü‚¹‚ñB + pc_additem()‚ð‚µ‚¾‚¯C³B + hp_coefficient‚ðint‚©‚çdouble‚É•ÏXB + pc_calcstatus()‚Æpc_readdb()‚ðC³B + job_db1.txt + E‹Æ‚ÌŒv”‚ð•ÏX‚µ‚Ü‚µ‚½B(ƒNƒ‹ƒZƒCƒ_[“™‚̃f[ƒ^‚Í + Š®‘S‚È•¨‚¶‚á‚ ‚è‚Ü‚¹‚ñB) + +Echar2.c‚ð‚µ‚¾‚¯•ÏXB + char2.c + make_new_char()‚ð‚µ‚¾‚¯•ÏXB(ì‚Á‚½’¼Œã‚ÉHP‚ÆSP‚ªŠ®‘S‚É + ‰ñ•œ‚µ‚Ä‚é‚悤‚É•Ï‚¦‚Ü‚µ‚½B) + parse_char()‚ð‚µ‚¾‚¯C³BŠØ‘‚̃Nƒ‰ƒCƒAƒ“ƒg‚ÅŒq‚¢‚Ä‚à + ˆÙ킪‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B(0x187ƒpƒPƒbƒg‚̈—‚ð“ü‚ꂽ‚¾‚¯ + ‚Å‚·‚ª... ‚±‚ê‚ÍYare‚©‚玂Á‚Ä‚«‚½•¨‚Å‚·B) +Estrcmpi“™‚Ìdefine‚ðatcomand.h‚©‚çmmo.h‚Ɉړ®‚µ‚Ü‚µ‚½B + atcomand.h, mmo.h C³B +E‰ñ•œƒAƒCƒeƒ€‚ðŽg—p‚·‚鎞vit‚ƃXƒLƒ‹HP‰ñ•œ—ÍŒüã‚É‚æ‚éƒ{[ƒiƒX‚ª•t‚ + ‚悤‚É•ÏXBƒ{[ƒiƒX‚Í + ‰ñ•œ—Ê *(1 + HP‰ñ•œ—ÍŒüãƒXƒLƒ‹ƒŒƒxƒ‹*0.1 + vit/100) + ‚É‚È‚è‚Ü‚·B +EƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚ƃCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚ð‰¼ŽÀ‘•B(‰ñ•œ‚Í‚µ‚Ü‚·‚ªƒGƒtƒFƒNƒg‚ª + o‚Ü‚¹‚ñBitem_db‚Ń^ƒCƒv‚ð•Ï‚¦‚Ä‚à‘Ê–Ú‚Å‚µ‚½B) + script.c + buildin_fixheal()‚Æbuildin_percentheal()‚ð’ljÁB + buildin_fixheal()‚Íbuildin_heal()‚ªƒXƒLƒ‹‚Ævit‚É‚æ‚Á‚ĉñ•œ—Ê‚ª•Ï‚í‚é + Žd—l‚É‚È‚Á‚½‚Ì‚ÅŒ³‚Ìbuildin_heal()‚Ì–¼‘O‚¾‚¯‚ð•Ï‚¦‚½•¨‚Å‚·B + buildin_percentheal()‚Í“ü—Í‚³‚ꂽ”Žš‚ð%‚Æ‚µ‚ÄHP‚ÆSP‚ðÅ‘åHP‚Æ + Å‘åSP‚ð %”ä—¦‚ɉñ•œ‚µ‚Ü‚·B + ƒXƒNƒŠƒvƒgfixheal A percentheal ’ljÁBŽg—p•û–@‚Íheal‚Æ“¯‚¶‚Å‚·B + fixheal‚Ívit‚ƃXƒLƒ‹HP‰ñ•œ—ÍŒüã‚É‚æ‚éƒ{[ƒiƒX‚ª‚È‚¢•¨‚Å + percentheal ‚ÍŒã‚Ì”Žš‚ð %‚É”FŽ¯‚µ‚Ü‚·B + pc.h + pc.c + pc_percentheal()‚ð’ljÁB + item_db.txtAitem_db2.txt + ƒCƒOƒhƒ‰ƒVƒ‹‚ÌŽÀ‚ƃCƒOƒhƒ‰ƒVƒ‹‚ÌŽí‚ð•ÏXB + +---------- +//0303 by ŒÓ’±—– + +E*.grf‚̃pƒX‚ðmap_athena.cnf‚É‚à‘‚¯‚é‚悤‚É‚µ‚½B + Emap_athena.cnf‚Éudata_grf: ../data/data.grfv‚â + usdata_grf: ../sakurai/sdata.grfv‚̂悤‚ɃpƒXŽw’è‚Å‚«‚Ü‚·B + Egrf-files.txt‚ª‚ ‚éꇂ»‚¿‚ç‚Ìݒ肪—D悳‚ê‚Ü‚· + + (common/) + grfio.c/grfio.h + grfio_setdatafile(),grfio_setsdatafile()’ljÁB + data_file,sdata_file‚ðƒtƒ@ƒCƒ‹ƒ[ƒJƒ‹‚ȃOƒ[ƒoƒ‹•Ï”‚É•ÏXB + +E@stpoint,@skpoint‚É•‰’lŽw’è‚͈̔̓`ƒFƒbƒN‚ð’ljÁ +E@zenyƒRƒ}ƒ“ƒh’ljÁiƒ[ƒj[‚Ì’²®j +E@str,@agi,@vit,@int,@dex,@lukƒRƒ}ƒ“ƒh’ljÁiŠî–{ƒpƒ‰ƒ[ƒ^’²®j + + atcommand.c + @stpoint,@skpointC³ + @zeny,@str,@agi,@vit,@int,@dex,@luk’ljÁ + +Eƒƒ}[ƒiƒCƒg‚ðŽg‚¤‚Æ‚Ú‚Á‚½‚‚ç‚ê‚Ä‚¢‚½–â‘è‚ðC³ +E•Ší»‘¢•”•ª‚̃R[ƒh‚𑽕ÏX + EÞ—¿Á”‚ðƒAƒCƒeƒ€‚ª•¡”ƒCƒ“ƒfƒbƒNƒX‚É•ª‚©‚ê‚Ä‚¢‚éꇂɑΉž‚³‚¹‚½ + i‚R–œŒÂŒÀŠE‚ð’´‚¦‚é‚ƕʃCƒ“ƒfƒbƒNƒX‚ðŽg‚¤Žd—l‚¾‚Á‚½‹C‚ª‚·‚é‚Ì‚Åj + EŽ¸”sŽž‚É‚àŽü‚è‚É’Ê’m‚·‚é‚悤‚É‚µ‚½ + + skill.c + skill_check_condition()‚ÌC³ + skill_produce_mix()‚ÌC³ + +E•Ší»‘¢Šm—¦‚ðconfƒtƒ@ƒCƒ‹‚Å”{—¦Žw’è‚Å‚«‚é‚悤‚ÉC³ + + (conf/) + battle_athena.cnf + weapon_produce_rate’ljÁ + (map/) + skill.c + skill_produce_mix()‚ÌC³ + +E•ŠíATKƒTƒCƒY•â³ƒe[ƒuƒ‹‚ðŠO•”‚©‚ç“Ç‚Ýž‚ނ悤‚É‚µ‚½ +E¸˜B¬Œ÷Šm—¦/¸˜Bƒ{[ƒiƒX‚È‚Ç‚ðŠO•”‚©‚ç“Ç‚Ýž‚ނ悤‚É‚µ‚½ +E‰ß踘Bƒ{[ƒiƒX‚É‚æ‚é’ljÁƒ_ƒ[ƒWŽÀ‘• + + (db/) + size_fix.txt + ƒTƒCƒY•â³ƒe[ƒuƒ‹ + refine_db.txt + ¸˜BŠÖŒWƒf[ƒ^ + (map/) + pc.c + pc_readdb()‚Å“Ç‚Ýž‚Ý + battle.c + battle_calc_weapon_attack()‚ɉß踘Bƒ{[ƒiƒXˆ—’ljÁ + +EMAXHP‚È‚Ç‚ªƒT[ƒo[‚ƃNƒ‰ƒCƒAƒ“ƒg‚ňႤ’l‚ÉŒ©‚¦‚éƒoƒOC³ + ƒƒOƒCƒ“’¼Œã‚̃Xƒe[ƒ^ƒXŒvŽZ‚ÌŒ‹‰Ê‚𒼂¿‚É‘—M‚·‚é‚悤‚É‚µ‚½ + + (map/) + pc.c + pc_authok()‚Å‚Ìpc_calcstatus()‚̃tƒ‰ƒO‚ð0‚É‚µ‚½ + ‚±‚ê‚Åpc_calcstatus()‚̃tƒ‰ƒOƒpƒ‰ƒ[ƒ^‚Í–¢Žg—pH + +Eitem_db‚Ìu”EŽÒƒX|ƒcv‚ðu”EŽÒƒX[ƒcv‚ÉC³ + (db/) + item_db.txt/item_db2.txt + ”EŽÒƒX[ƒc‚Ì–¼Ì•ÏX + +EƒƒOƒCƒ“l”‚𒲂ׂéƒc[ƒ‹‚ð“Y•t + Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B + Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B + Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B + + (tool/) + getlogincount + ƒƒOƒCƒ“l”Š“¾PerlƒXƒNƒŠƒvƒg + +---------- +//0302 by Ž€_ +EƒAƒCƒeƒ€»‘¢ Šm—¦”»’èŽÀ‘•B + “S‚ÌꇬŒ÷—¦‚Í + (20 + base_level*0.3 + DEX*0.2 + LUK*0.1 + —v‹ƒXƒLƒ‹ƒŒƒxƒ‹*6)% + |“S‚Æ‘®«ÎA¯‚Ì‚©‚¯‚ç‚Ìê‡ + (10 + base_level*0.3 + DEX*0.2 + LUK*0.1 + —v‹ƒXƒLƒ‹ƒŒƒxƒ‹*5)% + •Ší‚Í + ((2.5 + base_level*0.15 + DEX*0.1 + LUK*0.05 + —v‹ƒXƒLƒ‹ƒŒƒxƒ‹*5 + + ‹à•~ - ‘®«Î‚Ư‚Ì‚©‚¯‚ç) * (1 - (•ŠíƒŒƒxƒ‹ - 1)*0.2) + + ƒXƒLƒ‹•ŠíŒ¤‹†ƒŒƒxƒ‹*1)% + ‹à•~: ‚È‚¢ê‡ -5%‚Å‹à•~‚Í 0%AƒIƒŠƒfƒIƒRƒ“‚Ì‹à•~‚Í + 2.5%A‰©‹à‚Ì‹à•~‚Í 5%AƒGƒ“ƒyƒŠƒEƒ€‚Ì‹à•~‚Í 7.5% + ‘®«Î‚Ư‚Ì‚©‚¯‚ç: ‘®«Î‚ª‚ ‚éê‡ 5%‚ÅX‚É + ¯‚Ì‚©‚¯‚ç‚Ì” * 5%‚ð‘«‚µ‚Ü‚·B + ‚É‚È‚è‚Ü‚·‚ª‚¿‚å‚Á‚ÆŠm—¦‚ª’á‚·‚¬‚é‹C‚à‚µ‚Ü‚·‚Ì‚Å + base_level*0.3 + DEX*0.2 + LUK*0.1‚ðbase_level*0.5 + DEX*0.4 + LUK*0.3‚É + base_level*0.15 + DEX*0.1 + LUK*0.05‚ðbase_level*0.4 + DEX*0.3 + LUK*0.2 + ’ö“x‚É•Ï‚¦‚½•û‚ª‚¢‚¢‚©‚à’m‚è‚Ü‚¹‚ñB + skill.c + skill_can_produce_mix() ‚Æ skill_produce_mix() ‚ðC³B + produce_db.txt + ¯‚Ì‚©‚¯‚ç‚ðƒXƒLƒ‹‘®«Î»‘¢‚ª•K—v‚É•ÏXB +E*.grf“™‚ðÝ’u‚¹‚¸ƒfƒBƒŒƒNƒgƒŠ‚©‚ç‚Ì“Ç‚Ýž‚ނ悤‚ÉC³B(‚±‚ê‚ÍYare‚©‚ç + Ž‚¿ž‚ñ‚¾•¨‚Å‚·‚ª...) + grfio.c + grfio_init()‚ðC³B + grf-file.txt + V‹K’ljÁBgrfƒtƒ@ƒCƒ‹‚ª‚ ‚éƒfƒBƒŒƒNƒgƒŠÝ’è—pB +E“Ç‚Ýž‚Þƒ}ƒbƒv‚Ìő唂ð512‚ÉC³B + mmo.h + MAX_MAP_PER_SERVER‚ð384‚©‚ç512‚ÉC³B +Epc.c‚Épc_search_inventory()‚ð’ljÁB + ‹@”\‚Íitem_id‚̃AƒCƒeƒ€‚ðŽ‚Á‚Ä‚é‚©‚Ç‚¤‚©‚ðŠm”F‚µ‚Ä + Ž‚Á‚Ä‚éꇂ»‚Ìindex‚ð•Ô‚·B + item_id‚ª0‚Ìꇂ͋󂯂Ă銂Ìindex‚ð•Ô‚·B + pc_additem()‚Æpc_takeitem()‚¾‚¯‚ð‚µC³B +EGMƒRƒ}ƒ“ƒh‚É@stpoint‚Æ@skpoint‚ð’ljÁB + @stpoint ”Žš - ƒXƒe[ƒ^ƒXƒ|ƒCƒ“ƒg‚ðã‚°‚éB + @skpoint ”Žš - ƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðã‚°‚éB + atcomand.c + C³B + atcomand.h + strcmpi“™‚ðLinux‚Å‚àŽg‚¦‚é‚悤‚ÉC³B + +---------- +//0301 by ŒÓ’±—– + +EÅ‘åHP‚ª32767‚ð’´‚¦‚é‚ƈÙí‚È’l‚É‚È‚é–â‘è‚ÌC³ +ELv‚ª99‚ð’´‚¦‚é‚Æ‚«‚àƒGƒtƒFƒNƒg‚ðo‚·‚悤‚É‚µ‚½(Ž©•ª‚É‚ÍŒ©‚¦‚È‚¢–Í—l) +E”z’uMOB‚É‚æ‚éƒCƒxƒ“ƒg‚ŃCƒxƒ“ƒg–¼‚ª‚SƒoƒCƒgˆÈã‚Æ‚¢‚¤§ŒÀ‚ð‚‚¯‚½ +EteleportŽž‚ÉŽæˆø’†’fAƒ`ƒƒƒbƒg‘ÞŽºA‘qŒÉ•Û‘¶ˆ—‚ð‚·‚é‚悤‚É‚µ‚½ + + pc.c + pc_calcstatus()‚ÌC³(HPŒvŽZ) + pc_setpos()‚ÌC³(Žæˆø’†’f‚È‚Ç) + clif.c + clif_set0078(),clif_set007b(),clif_spawnpc()‚ÌC³(Lv99ƒGƒtƒFƒNƒg) + npc.c + npc_parse_mob()‚ÌC³ + +E@h‚Åhelp.txt‚ª“Ç‚ß‚È‚¢‚Æ‚«‚É—Ž‚¿‚éƒoƒOC³ +E@lvup/@joblvup‚Å•‰’l‚ð“ü‚ê‚é‚ÆLvƒ_ƒEƒ“‚ª‰Â”\‚É‚È‚Á‚½ + + atcommand.c + @h,@lvup,@joblvupˆ—‚ÌC³ + +EƒeƒŒƒ|[ƒg‚È‚Ç‚ÌÁ–ŃGƒtƒFƒNƒg‚ÌC³ + + skill.c + ƒeƒŒƒ|‚ÌÁ–ŃGƒtƒFƒNƒg‚ð•ÏX + +Eó‘ÔˆÙí‚ÉŠÖ‚·‚éƒXƒNƒŠƒvƒgŽÀ‘• [sc_start]‚Æ[sc_end]B +E—ÎPOTA—΃n[ƒu‚È‚ÇŽÀ‘• +E‘•”õƒ{[ƒiƒXƒf[ƒ^’ljÁ + + (db/) + item_db.txt/item_db2.txt + ‘•”õƒ{[ƒiƒXƒf[ƒ^‚ð’ljÁ + —ÎPOTA—΃n[ƒu‚Ȃǂ̃XƒNƒŠƒvƒg’ljÁ + (map/) + script.c + buildin_warp()‚ÅÁ–ŃGƒtƒFƒNƒg‚ð•ÏX + buildin_sc_start(),buildin_sc_end()’ljÁ + +---------- +//0299 by ŒÓ’±—– + +ENPCƒCƒxƒ“ƒg‚ŃGƒNƒXƒ|[ƒg‚³‚ꂽƒ‰ƒxƒ‹‚ðŽw’è‚Å‚«‚é‚悤‚É‚µ‚½ + NPCƒXƒNƒŠƒvƒg‚ÅOn`‚ÅŽn‚܂郉ƒxƒ‹‚ð’è‹`‚·‚é‚ÆAƒGƒNƒXƒ|[ƒg‚µ‚Ü‚·B + NPCƒCƒxƒ“ƒg‚Å"NPC–¼(orƒCƒxƒ“ƒg–¼)::ƒ‰ƒxƒ‹–¼"‚Æ‚·‚é‚ÆA + Žw’肵‚½ƒ‰ƒxƒ‹‚©‚çŽÀs‚Å‚«‚Ü‚·B + ƒ‰ƒxƒ‹–¼‚Í24ƒoƒCƒgˆÈ“à‚É‚µ‚ĉº‚³‚¢B + ‚ ‚ƃvƒƒOƒ‰ƒ€“I‚Ƀƒ‚ƒŠŒø—¦ˆ«‚¢‚Å‚·BŒã“úC³—\’è + <—á> + NPCutestv‚̃XƒNƒŠƒvƒg“à‚Å OnEvent: ‚ƃ‰ƒxƒ‹’è‹`‚µ‚½ê‡A + NPCƒCƒxƒ“ƒgutest::OnEventv‚ÅŽw’èˆÊ’u‚©‚çŽÀs‚Å‚«‚Ü‚·B + + (conf/) + npc_test_ev.txt + ƒ‰ƒxƒ‹Žw’è‚̃Tƒ“ƒvƒ‹‚à‚¿‚傱‚Á‚ƒljÁ + (map/) + script.c/script.h + script_get_label_db()‚Ȃǂ̒ljÁB + parse_script‚Åscriptlabel_db‚Ƀ‰ƒxƒ‹ƒf[ƒ^‚ð’ljÁ‚·‚é + npc.c/npc.h + npc_event_export()‚ȂǒljÁ + npc_parse_script‚щƒxƒ‹ƒf[ƒ^‚ðƒGƒNƒXƒ|[ƒg‚·‚é + map.h + struct map_session_data ‚Ìeventqueue‚̃Cƒxƒ“ƒg–¼‚̃TƒCƒY‚ð + 50ƒoƒCƒg‚É‚µ‚½B + +EAGI‚ÆDEX‚É‚æ‚éASPDŒvŽZ‚ÌÅ‘å’l‚ð180‚©‚ç190‚É•ÏX + pc.c + pc_calcstatus()‚ÌASPDŒvŽZC³ + +Eskill_db.txt/cast_db.txt‚Ì“Ç‚Ýž‚Ý‚ðskill.c‚É•ÏX + + pc.c + pc_readdb()‚ÌC³ + skill.c + skill_readdb()‚̒ljÁ + +EƒAƒCƒeƒ€»‘¢‰¼ŽÀ‘• + Šm—¦”»’肪–¢ŽÀ‘•‚Å‚·B•K‚¸¬Œ÷‚µ‚Ü‚·B + + (db/) + item_db.txt/item_db2.txt + ƒAƒCƒeƒ€»‘¢‚ɑΉžiŒg‘Ñ—p—nz˜FA‹à’Æ‚È‚Çj + produce_db.txt + V‹K’ljÁB»‘¢ƒŠƒXƒgB + (map/) + skill.c/skill.h + struct skill_produce_db’ljÁ + skill_readdb()‚Åproduce_db.txt‚ð“ǂނ悤‚É + clif.c/clif.h + clif_skill_produce_mix_list(),clif_parse_ProduceMix()’ljÁ + script.c/script.h + »‘¢—pƒRƒ}ƒ“ƒh[produce]ì¬B + ˆø”‚Í»‘¢—p”’l‚ÅA1-4‚ª•Ší»‘¢(Lv)A16‚ªzÎ + + +---------- +//0298 by ŒÓ’±—– + +ELoginŽI‚̃pƒXƒ[ƒhˆÃ†‰»ƒ^ƒCƒv‚ðŽ©“®”FŽ¯‚Å‚«‚é‚悤‚É•ÏX + login.h‚ÌPASSWORDENC‚ð3‚É‚·‚é‚ÆŽ©“®”FŽ¯‚µ‚Ü‚·B + ʼn‚Épasswordencrypt‚Ń`ƒFƒbƒN‚µAŽ¸”s‚·‚ê‚Î + passwordencrypt2‚Ń`ƒFƒbƒN‚µ‚Ü‚·B + + (login/) + login2.c/login.h + ˆÃ†‰»ƒpƒXƒ[ƒh‚ÌƇ•”•ª‚ðC³ + +EƒAƒJƒEƒ“ƒg쬃c[ƒ‹‚ð“Y•t + Perl»‚È‚Ì‚ÅŽÀs‚É‚ÍPerl‚ª•K—v‚Å‚·B + Žg—p•û–@‚Ȃǂ̓GƒfƒBƒ^‚ÅŠJ‚¢‚ÄŒ©‚Ä‚‚¾‚³‚¢B + Žg‚¢•û‚ª—Ç‚‚í‚©‚ç‚È‚¢l‚ÍŽè‚ðo‚³‚È‚¢‚Ù‚¤‚ª‚¢‚¢‚Å‚·B + + (tool/) + addaccount + ƒAƒJƒEƒ“ƒg쬃c[ƒ‹PerlƒXƒNƒŠƒvƒg + +EƒXƒLƒ‹‚̒ljÁC³ + Eƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹‚̉ñ”§ŒÀ‚ðƒOƒ‹[ƒv–ˆ‚©‚烆ƒjƒbƒg–ˆ‚ÉC³ + EƒNƒ@ƒOƒ}ƒCƒA‰¼ŽÀ‘• i“G‚̈ړ®‘¬“xAƒLƒƒƒ‰‚Ì•\Ž¦”’l‚͕ω»‚¹‚¸j + EƒEƒH[ƒ^[ƒ{[ƒ‹‰¼ŽÀ‘•i“®ì‚ª³‚µ‚¢‚Ì‚©•s–¾j + EƒtƒƒXƒgƒmƒ”ƒ@‰¼ŽÀ‘•iƒGƒtƒFƒNƒg‚ª—Ç‚‚í‚©‚ç‚È‚¢‚Ì‚Å“K“–j + Eƒxƒmƒ€ƒ_ƒXƒg‰¼ŽÀ‘•i”͈͂Ƃ©‚ª³‚µ‚¢‚©‚Ç‚¤‚©•sˆÀj + Eƒvƒƒ{ƒbƒNAƒI[ƒgƒo[ƒT[ƒNA¹‘Ì~•ŸA»‚Ü‚«AΓŠ‚°‚ÌŽÀ‘• + EƒGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“‚Ì“Å•t—^ŽÀ‘• + + *’ˆÓ* “Åó‘Ô‚ÍŒ©‚½–Ú‚¾‚¯‚ÅŒø‰Ê‚Í–¢ŽÀ‘• + + (db/) + skill_db.txt + »‚Ü‚«/ΓŠ‚°/ƒEƒH[ƒ^[ƒ{[ƒ‹‚È‚ÇC³ + (map/) + skill.c/skill.h + FXC³ + mob.c/mob.h + mob_target()’ljÁBMOB‚̃^ƒQ—p + battle.c + battle_get_*()ŒnC³‚È‚Ç + pc.c + pc_calcstatus()C³ + +---------- +//0297 by ŒÓ’±—– + +ELoginŽI‚ªƒpƒXƒ[ƒhˆÃ†‰»‚ɑΉž + ˆÃ†‰»key‚ÍŽI‹N“®Žž‚Ɉê“x‚¾‚¯ì¬‚µ‚Ü‚·B + + **’ˆÓ** + ˆÃ†‰»ƒpƒXƒ[ƒh‚ðŽg‚Á‚Ä‚¢‚éꇂÍAƒAƒJƒEƒ“ƒg‚ð쬂ł«‚Ü‚¹‚ñB + ƒAƒJƒEƒ“ƒg‚ðì‚éꇂÍclientinfo.xml‚ð•ÒW‚·‚é‚È‚Ç‚µ‚ÄA + ƒpƒXƒ[ƒh‚ðˆÃ†‰»‚µ‚È‚¢ƒNƒ‰ƒCƒAƒ“ƒg‚ðŽg‚¤•K—v‚ª‚ ‚è‚Ü‚·B + + (login/) + login2.c/login.h + ˆÃ†‰»ƒpƒXƒ[ƒh‚̃pƒPƒbƒgˆ—’ljÁ + ˆÃ†‰»key‚̶¬ˆ—’ljÁ + md5calc.c/md5calc.h + V‹K’ljÁBmd5ŒvŽZ—p + + +EƒXƒLƒ‹Žg—pƒfƒBƒŒƒC‚ÉDEX‚ª”½‰f‚³‚ê‚È‚¢‚悤‚ÉC³ + skill.c + skill_delay_fix()‚ÌC³ + +EŽ€–SŒã‚àˆê•”‚Ìó‘ÔˆÙí‚ÌŒø‰Ê‚ªŽ‘±‚·‚é–â‘è‚ðC³ + pc.c + pc_damage()‚ÅŽ€–SŽž‚Épc_calcstatus()‚ðŒÄ‚Ԃ悤‚ÉC³ + atcommand.c + Ž€–SŽžˆ—‚ðˆê–{‰»‚·‚邽‚ß@die‚Å‚Ípc_damage‚ðŒÄ‚Ԃ悤‚ÉC³ + + +---------- +//0295 by ŒÓ’±—– + +EƒNƒŒƒCƒ‚ƒA[ƒgƒ‰ƒbƒv‚ȂǂɃXƒLƒ‹‚ðŽg‚¤‚ƃ}ƒbƒvŽI‚ª—Ž‚¿‚é–â‘è‚ÌC³ + + battle.c + battle_get_*()‚È‚Ç‚ÅBL_PC,BL_MOB‚¶‚á‚È‚¢‚Æ‚«‚̈—‚ð’ljÁ + skill.c/skill.h + skill_unit_ondamage()’ljÁ + +E–ñ21Mz‚ð’´‚¦‚éƒAƒCƒeƒ€‚ðNPC‚ňµ‚¤‚Æ‚«OC,DCŒvŽZ‚Å’l’i‚ª‚¨‚©‚µ‚‚È‚éƒoƒOC³ + DC‚Å‚Í20MzAOC‚Å‚Í70Mz‚ð’´‚¦‚éƒAƒCƒeƒ€‚ÍdoubleŒ^‚É‚µ‚ÄŒvŽZ‚µ‚Ü‚· + + pc.c + pc_modifysellvalue(),pc_modifysellvalue()‚ÌC³ + +---------- +//0294 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh‚ŃGƒŠƒAŽw’è‚ÌMOB•¦‚«–½—ß‚ðì¬ + areamonster "ƒ}ƒbƒv–¼",x0,y0,x1,y1,"MOB•\Ž¦–¼",MOB‚Ìclass,”,"ƒCƒxƒ“ƒg–¼" + À•WŽw’肪(x0,y0)-(x1,y1)‚Ì”CˆÓƒ|ƒCƒ“ƒg‚ɂȂ邾‚¯‚Å‘¼‚Ímonster–½—ß‚Æ“¯‚¶‚Å‚· + + script.c + buildin_areamonster()’ljÁ + mob.c/mob.h + mob_once_spawn_area()’ljÁ + +EƒAƒCƒXƒEƒH[ƒ‹‚ÌŽI‘¤ˆ—‰¼ŽÀ‘• + UŒ‚‚Å‚«‚È‚¢‚È‚Ç‚Ì–â‘è‚Í‚ ‚é‚à‚Ì‚ÌAŽI‘¤‚Å‚Í‚Æ‚è‚ ‚¦‚¸“®‚«‚Ü‚·B + ‚½‚¾AƒNƒ‰ƒCƒAƒ“ƒg‚Éi“ü•s‰Â”\ƒGƒŠƒA‚ð‹³‚¦‚éƒpƒPƒbƒg‚ª‚í‚©‚ç‚È‚¢‚Ì‚ÅA + ŽI‘¤‚Å‚ÍIW‚̉ñ‚èž‚Ý‚ðs‚¤ê‡‚Å‚àAƒNƒ‰ƒCƒAƒ“ƒg‘¤‚Å‚Í‚·‚蔲‚¯‚Ä‚¢‚é + ‚悤‚ÉŒ©‚¦‚Ü‚·B + + skill.c + ŠY“–ˆ—’ljÁ‚È‚Ç + +---------- +//0293 +E2-2ŽŸE‚̃XƒLƒ‹ƒRƒƒ“ƒg‚ÌC³iˆê•”’ljÁj + (db/) + skill_db.txt + skill_tree.txt + + +---------- +//0292 by ŒÓ’±—– + +ESHOP NPC‚ɘb‚µŠ|‚¯‚é‚ÆNPC‚ª”½‰ž‚µ‚È‚‚È‚é–â‘è‚Ì‚Ü‚Æ‚à‚ÈHC³Part2 + E”„”ƒ‚Å‚«‚È‚©‚Á‚½–â‘èC³ + + map.h + struct map_session_data ‚Énpc_shopidƒƒ“ƒo’ljÁ + npc.c + npc_click()‚È‚ÇC³ + +EƒXƒNƒŠƒvƒg–½—ߒljÁ + EŽw’èƒGƒŠƒA‚̃†[ƒU[”‚ÌŠ“¾ + getareausers("ƒ}ƒbƒv–¼",x0,y0,x1,y1) + Žw’èƒ}ƒbƒv‚Ì(x0,y0)-(x1,y1)‚É‚¢‚éPC‚Ì”‚ðŒvŽZ + EŽw’èƒGƒŠƒA‚̃†[ƒU[‚̃[ƒv + areawarp "“]‘—Œ³ƒ}ƒbƒv–¼",x0,y0,x1,y1,"“]‘—æƒ}ƒbƒv–¼",x,y; + Žw’èƒ}ƒbƒv‚Ì(x0,y0)-(x1,y1)‚É‚¢‚é‘SPC‚ðŽw’èƒ}ƒbƒv‚Ì(x,y)‚É“]‘—B + + script.c + buildin_areawarp(),buildin_getareausers()’ljÁ + +EƒXƒLƒ‹C³ + EƒeƒŒƒ|[ƒgŽg—pŽž‚ÉuƒeƒŒƒ|[ƒg!!v‚Æ‹©‚Ԃ悤‚ÉB + EƒXƒg[ƒ“ƒJ[ƒX‚̬Œ÷—¦‚ª’á‚¢‚Ì‚ðC³ + + skill.c + skill_castend_nodamage_id()C³ + +---------- +//0291 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg–½—ߒljÁ + ENPC‚Ì—LŒø–³Œø‚ªØ‚è‘Ö‚¦‚ç‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + disablenpc "NPC–¼"‚Å–³Œø‰»Aenablenpc "NPC–¼"‚Å—LŒø‰»B + NPC–¼‚ªd•¡‚µ‚Ä‚¢‚é‚Æ‚«‚Ì“®ì‚Í•s’è‚Å‚·B + Žå‚Ƀ[ƒvƒ|ƒCƒ“ƒg‚𖳌ø‰»‚·‚é‚Æ‚«‚ÉŽg‚¢‚Ü‚·B + + Eƒ^ƒCƒ}[‚̃JƒEƒ“ƒg‚ð•ÏX‚·‚éƒXƒNƒŠƒvƒg–½—ߒljÁ + addtimercount "ƒCƒxƒ“ƒg–¼",ƒ~ƒŠ•b + ‚ÅAƒ^ƒCƒ}‚ÌŠúŒÀ‚ð‰„‚Î‚¹‚Ü‚·i•‰’l‚ðŽw’肵‚ÄŒ¸‚ç‚·‚±‚Æ‚ào—ˆ‚Ü‚·j + + EƒAƒiƒEƒ“ƒX‚ÌŠg’£ + mapannounce "ƒ}ƒbƒv–¼","ƒAƒiƒEƒ“ƒX•¶Žš—ñ",ƒtƒ‰ƒO + ‚ÅŽw’èƒ}ƒbƒv‚ɃAƒiƒEƒ“ƒX‚𗬂µ‚Ü‚·Bƒtƒ‰ƒO‚Í0‚ʼn©FA16‚Å‚ł·B + areaannounce "ƒ}ƒbƒv",x0,y0,x1,y1,"•¶Žš—ñ",ƒtƒ‰ƒO + ‚ÅŽw’èƒ}ƒbƒv‚Ì(x0,y0)-(x1,y1)‚̃GƒŠƒA‚ɃAƒiƒEƒ“ƒX‚𗬂µ‚Ü‚·B + ƒtƒ‰ƒO‚Ímapannounce‚Æ“¯‚¶‚ÅA0‚ʼn©FA0x10‚Å‚ł·B + + (conf/) + npc_test_arena.txt + ƒTƒ“ƒvƒ‹‚ÌC³ + (map/) + script.c + buildin_disablenpc(),buildin_enablenpc(), + buildin_mapannounce(),buildin_areaannounce(), + buildin_addtimercount()‚̒ljÁ + npc.c/npc.h + NPC‚Ì—LŒø–³Œøˆ—’ljÁ + map.h + struct npc_data‚Éflagƒƒ“ƒo’ljÁ(1ƒrƒbƒg–Ú‚ª–³Œøƒtƒ‰ƒO) + clif.c + clif_getareachar_npc()‚ÌC³ + pc.c/pc.h + pc_addeventtimercount()’ljÁ + +ESHOP NPC‚ɘb‚µŠ|‚¯‚é‚ÆNPC‚ª”½‰ž‚µ‚È‚‚È‚é–â‘è‚Ì‚Ü‚Æ‚à‚ÈHC³ + SHOP NPC‚ÆŽæˆø’†‚Å‚àƒCƒxƒ“ƒg‚ª‹N‚±‚é‚悤‚É‚È‚è‚Ü‚·B + ‚±‚ê‚ÍRO‚ÌŽd—lã”ð‚¯‚é‚Ì‚ª“‚¢‚½‚ß‚±‚̂悤‚ÈŒ‹‰Ê‚Å—Ž‚¿’…‚«‚Ü‚µ‚½B + + npc.c + npc_click()“™‚ÌC³ + +EƒXƒLƒbƒhƒgƒ‰ƒbƒv‚ÅŽc‘œ‚ªŽc‚é–â‘èC³ + skill.c + skill_blown()‚Åclif_walkok()‚È‚Ç‚ðŒÄ‚Ԃ悤‚ÉB + skill_unit_onplace()‚Ìclif_fix*pos()‚ðíœB + +---------- +//0290 by ŒÓ’±—– + +EƒXƒNƒŠƒvƒg‚ÅMAPŽI“à‹¤—L•Ï”‚ªŽg‚¦‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + •Ï”–¼‚ð$‚ÅŠJŽn‚·‚é‚ÆAMAPŽI“à‚Ì‘Sˆõ‚Å‹¤—L‚·‚é•Ï”‚É‚È‚è‚Ü‚·B + + Œ¾—t‚Ì–â‘è‚Å‚·‚ªAPC‚Ìglobalreg‚Íu‘åˆæ“Iv‚Æ‚¢‚¤‚æ‚èu‰i‘±«‚Ì‚ ‚év + •Ï”‚Å‚ ‚Á‚ÄAMAPŽI“à‹¤—L•Ï”‚Ì‚Ù‚¤‚ª‘åˆæ“I‚Á‚ăCƒ[ƒW‚ª‹‚¢‚ñ‚Å‚·‚ªc + + script.c + mapval_db’è‹` + buildin_set(),buildin_input()‚ÌC³ + do_init_script()’ljÁ + map.c + do_init()‚Ådo_init_script()‚ðŒÄ‚Ԃ悤‚ÉB + +EƒCƒxƒ“ƒgƒLƒ…[‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + EƒLƒ…[ƒTƒCƒY‚Í‚Q‚Å‚·B•K—v‚Ȃ瑂₵‚Ü‚·‚ªB + + ƒTƒ“ƒvƒ‹‚Ì[ev_doƒeƒXƒg]‚ª‚¿‚á‚ñ‚Æ“®‚‚悤‚É‚È‚Á‚½‚ÆŽv‚¢‚Ü‚·B + + map.h + struct map_session_data‚Éeventqueueƒƒ“ƒo’ljÁ + npc.c + npc_event_timer()’ljÁ + script.c + run_script()‚ÅENDˆ—‚ŃLƒ…[‚̈—’ljÁ + +EƒXƒNƒŠƒvƒg‚Ń^ƒCƒ}[‚ªŽg—p‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + Žg—p•û–@‚ÍAaddtimer ƒ~ƒŠ•b,"ƒCƒxƒ“ƒg–¼" ‚Ń^ƒCƒ}[’ljÁA + deltimer "ƒCƒxƒ“ƒg–¼" ‚Ń^ƒCƒ}[íœB + + (common/) + timer.c/timer.h + get_timer(),addtick_timer()’ljÁ + (map/) + map.c/map.h + struct map_session_data‚Éeventtimerƒƒ“ƒo’ljÁ + map_quit()‚Åpc_cleareventtimer()‚ðŒÄ‚Ԃ悤‚ÉB + pc.c + pc_addeventtimer(),pc_deleventtimer(),pc_eventtimer(), + pc_cleaereventtimer()’ljÁ + pc_authok()‚Åeventimer‚̉Šú‰» + script.c + buildin_addtimer(),buildin_deltimer()’ljÁ + +EƒXƒNƒŠƒvƒg‚̒ljÁ + Egetusers,getmapusers,killmonster‚̒ljÁ + getusers(x)‚̓†[ƒU[”Š“¾Ax=0‚ÅPC‚ÌMAP,1=‘SMAP,8=NPC‚ÌMAPB + getmapusers("ƒ}ƒbƒv–¼")‚ÍŽw’èƒ}ƒbƒv‚̃†[ƒU[”‚ðŠ“¾‚·‚éB + killmonster "ƒ}ƒbƒv–¼","ƒCƒxƒ“ƒg–¼"‚ÅŠY“–‚̃}ƒbƒv‚É‚¢‚éA + ŠY“–‚̃Cƒxƒ“ƒg‹ì“®Žw’胂ƒ“ƒXƒ^[‚ð‘S‚ÄíœB + EannounceƒRƒ}ƒ“ƒhŠg’£ + ƒtƒ‰ƒO‚Ì0x08ƒrƒbƒg‚ª1‚È‚çƒ}ƒbƒv‚âƒGƒŠƒAŒvŽZ‚ÉPC‚Å‚È‚NPC‚ðŽg‚¤ + + mob.c/mob.h + mob_delete()’ljÁ + script.c + buildin_getusers(),buildin_getmapusers(), + buildin_killmonster()’ljÁ + clif.c/clif.h + clif_GMmessage()‚̈ø”•ÏX + +EƒCƒxƒ“ƒgƒTƒ“ƒvƒ‹’ljÁ + ŠÈ’P‚ȃAƒŠ[ƒi‚̃Tƒ“ƒvƒ‹‚ð’ljÁB + + (conf/) + npc_test_ev.txt + ]—ˆ‚̃Tƒ“ƒvƒ‹‚ÌC³ + npc_test_arena.txt + ŠÈ’P‚ȃAƒŠ[ƒi‚̃Tƒ“ƒvƒ‹ + ƒ[ƒvƒ|ƒCƒ“ƒg‚Ì–³Œø‰»ƒRƒ}ƒ“ƒh‚È‚Ç‚ª•K—v‚ÆŽv‚í‚ê‚éB + +ESHOP NPC‚ɘb‚µŠ|‚¯‚é‚ÆNPC‚ª”½‰ž‚µ‚È‚‚È‚é–â‘èC³ + + npc.c + npc_buylist(),npc_selllist()C³ + +---------- +//0289 by ŒÓ’±—– + +EƒCƒxƒ“ƒg‹ì“®Œ^ƒXƒNƒŠƒvƒg‚ÌC³‚È‚Ç + E‘¼‚ÌNPC‚ɘb‚µŠ|‚¯‚Ä‚¢‚é‚Æ‚«‚̓Cƒxƒ“ƒg‚ª–³Ž‹‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + =>ƒLƒ…[‚É“ü‚ê‚é‚Ȃǂ̈—‚ª‚¢‚é‚ÆŽv‚í‚ê‚éB + + ‚±‚ÌŠÖŒW‚ÅAƒTƒ“ƒvƒ‹‚Ì[ev_doƒeƒXƒg]NPC‚ðƒNƒŠƒbƒN‚µ‚Ä‚à + IDƒGƒ‰[‚ªo‚ĉ½‚à‹N‚«‚Ü‚¹‚ñBƒCƒxƒ“ƒgƒLƒ…[‚ðì‚ê‚Î’¼‚é‚Í‚¸B + + npc.c + npc_event(),npc_click()‚Énpc_idƒ`ƒFƒbƒN‚ð’ljÁ + script.c + I—¹Žž‚Énpc_id‚ðƒNƒŠƒA‚·‚é‚悤‚É + +EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh[announce]‚̒ljÁ + EGMƒƒbƒZ[ƒW‚É‚æ‚éannounceB + ‘æ1ˆø”‚Í•¶Žš—ñA‘æ2ˆø”‚̓tƒ‰ƒO‚ÅA + ƒtƒ‰ƒO‚̉ºˆÊ‚Sƒrƒbƒg‚ª0=‘S‚ÄA1=“¯‚¶ƒ}ƒbƒvA + 2=‰æ–Ê“àA3=Ž©•ª‚Ì‚ÝA4=“¯‚¶ƒ}ƒbƒvŽI‚É‘—MB + ƒtƒ‰ƒO‚Ì‚Sƒrƒbƒg–Ú‚ÍFƒtƒ‰ƒO‚ÅA0x10=ÂA0x00=‰©F + + script.c + buildin_announce()‚̒ljÁ + clif.c + clif_send()‚ÅSELF‚̈—’ljÁ + clif_GMmessage()‚̈ø”•ÏX + intif.c + intif_GMmessage()‚̈ø”•ÏX + +Eƒƒ‚‹ÖŽ~AƒeƒŒƒ|‹ÖŽ~AƒZ[ƒu‹ÖŽ~ƒ}ƒbƒv‚ªŽw’è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + ENPC‚ÅAmapflag‚Æ‚¢‚¤ƒ^ƒCƒv‚ÅA–¼‘O‚ð nomemo A noteleport‚Å + ƒƒ‚‚ƃeƒŒƒ|‹ÖŽ~Bnosave ‚ÅAˆø”‚ɃZ[ƒu‚·‚éƒ}ƒbƒv–¼‚ÆÀ•W‚ðŽw’èB + + Ú‚µ‚‚Í“¯«‚Ìconf/npc_test_ev.txt‚ðŽQÆB + + (conf/) + npc_test_ev.txt + C³ + (map/) + map.h + struct map_data ‚Éflag,savemap,savex,saveyƒƒ“ƒo’ljÁ + npc.c + npc_parse_mapflag()’ljÁ + do_init_npc()‚ÌC³ + pc.c + pc_memo()‚Ńƒ‚‹ÖŽ~‚©‚Ç‚¤‚©‚ðŠm”F + pc_makesavestatus()‚ŃZ[ƒu‹ÖŽ~‚È‚çƒ}ƒbƒv‚ð•ÏX + pc_randomwarp()‚ŃeƒŒƒ|‹ÖŽ~‚©‚Ç‚¤‚©Šm”F + skill.c + ƒeƒŒƒ|‚ƃ|ƒ^‚ŃeƒŒƒ|‹ÖŽ~‚©Šm”F + + +Eƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹‚Å—Ž‚¿‚é–â‘èC³c‚¾‚Æ‚¢‚¢‚È + + skill.c + ‚³‚ç‚Ƀ`ƒFƒbƒN‚ð’ljÁ + skill_blown()‚É—Ž‚¿‚錴ˆö‚Á‚Û‚¢‚à‚Ì”Œ©‚µ‚½‚Ì‚ÅC³ + +---------- +//0288 by ŒÓ’±—– + +EŽ©“®‘锓®Žž‚ÉuƒuƒŠƒbƒcƒr[ƒg!!v‚Æ‹©‚΂Ȃ‚È‚è‚Ü‚µ‚½ + skill.c + skill_attack(),skill_additional_effect(), + skill_castend_damage_id()‚ÌC³ + +EƒCƒxƒ“ƒg‹ì“®Œ^ƒXƒNƒŠƒvƒg‚ª‹Lq‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ +Eƒ‚ƒ“ƒXƒ^[‚ð“|‚µ‚½‚Æ‚«‚ɃCƒxƒ“ƒgƒXƒNƒŠƒvƒg‚ð“®‚©‚¹‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + + NPC’è‹`‚Ìscript‚Å•\Ž¦ƒNƒ‰ƒX‚ð-1‚É‚·‚é‚ƃCƒxƒ“ƒgˆµ‚¢‚É‚È‚è‚Ü‚·B + NPC’è‹`‚Ìmonster‚ɃCƒxƒ“ƒg–¼‚ðÝ’è‚Å‚«‚Ü‚·B + ƒXƒNƒŠƒvƒg‚ÌmonsterƒRƒ}ƒ“ƒh‚ɃCƒxƒ“ƒg‚ð‹N‚±‚·ˆø”’ljÁB + Ú‚µ‚‚̓Tƒ“ƒvƒ‹‚ðŒ©‚Ä‚‚¾‚³‚¢B + ¡Œãƒ^ƒCƒ}[‚ŃCƒxƒ“ƒg‚ð‹N‚±‚¹‚é‚悤‚É‚µ‚悤‚ÆŽv‚Á‚Ä‚¢‚Ü‚·B + + Œ»ó‚Å‚ÍANPCƒEƒBƒ“ƒhƒE‘€ì’†‚ɃCƒxƒ“ƒg‚ª‚¨‚«‚ÄA + ‚»‚̃Cƒxƒ“ƒg‚̃XƒNƒŠƒvƒg‚ÅNPCƒEƒBƒ“ƒhƒE‚ðo‚·‚Æ–â‘肪‹N‚«‚Ü‚·B + ‚±‚Ì•Ó‚Í¡Œã‚̉ۑè‚Æ‚¢‚¤‚±‚Æ‚ÅB + + (db/) + item_db.txt/item_db2.txt + monsterƒRƒ}ƒ“ƒh‚Ì•ÏX‚É‚æ‚éC³iŒÃ–Ø‚ÌŽ}jB + (conf/) + npc_test_ev.txt + ƒTƒ“ƒvƒ‹ + (map/) + npc.c + npc_event()’ljÁ + npc_parse_script()C³ + npc_checknear()C³ + clif.c + clif_getareachar_npc()C³ + map.h + struct mob_data‚Énpc_eventƒƒ“ƒo’ljÁ + mob.c/mob.h + mob_once_spawn()‚̈ø”•ÏX + mob_damage()‚ÅŽ€–SŽž‚ɃCƒxƒ“ƒg‚ð‹N‚±‚·‚悤‚É + atcommand.h + mob_once_spawn()‚̈ø”•ÏX + script.c + buildin_monster()‚ÌC³ + +---------- +//0287 by ŒÓ’±—– + +Eƒ‚ƒ“ƒXƒ^[î•ñƒXƒLƒ‹‚Å‚g‚o‚ª65535‚ð‰z‚¦‚Ä‚¢‚é‚Ƴí‚È’l‚ªŒ©‚ê‚È‚¢ƒoƒOC³ + + clif.c + clif_skill_estimation()‚ÌC³ + +EŒÃ–Ø‚ÌŽ}ƒAƒCƒeƒ€‚ŃNƒ‰ƒCƒAƒ“ƒg‚ªƒŠƒ\[ƒXƒGƒ‰[‚ðo‚·–â‘肪C³‚³‚ê‚Ü‚µ‚½ +EŒÃ–Ø‚ÌŽ}ƒAƒCƒeƒ€‚Å¢Š«‚Å‚«‚é“G‚ªŽw’è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + + (db/) + mob_branch.txt + ¢Š«‰Â”\‚È“G‚̃ŠƒXƒg + (map/) + mob.c/mob.h + struct mob_data‚Ésummonflagƒƒ“ƒo’ljÁB¢Š«‰Â”\«B + mob_once_spawn()‚ÌC³ + mob_readbranch()‚̒ljÁ + do_init_mob()‚Åmob_readbranch()‚ðŒÄ‚Ԃ悤‚ÉB + +EŒÃ‚‚¢” AŒÃ‚¢Ž‡F‚Ì” ‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½B + ˆê•”‚Ì–¢ŽÀ‘•ƒAƒCƒeƒ€‚ào‚Ü‚·Bitem_db.txt‚É‚ ‚éƒf[ƒ^‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·B + ƒXƒNƒŠƒvƒggetitem‚Å•‰‚Ì’l‚ðŽw’è‚·‚é‚ÆA‚»‚Ìâ‘Î’l‚ðƒtƒ‰ƒO‚Æ‚µ‚Ä + ƒ‰ƒ“ƒ_ƒ€‚ɃAƒCƒeƒ€‚ð‘I‘ð‚µ‚Ü‚·B + + (db/) + item_db.txt/item_db2.txt + ŠY“–•”•ª‚̃XƒNƒŠƒvƒgC³ + (map/) + script.c + buildin_getitem()‚ÌC³ + itemdb.c/itemdb.h + itemdb_searchrandomid(),itemdb_searchrandomid_sub()’ljÁ + +E‰r¥ƒf[ƒ^‚̈ꕔC³ + (db/) + cast_db.txt + ‘¬“x㸂ȂǂÌC³ + +ENPC‚ÌŒü‚«C³‚È‚Ç + (conf/) + npc_*.txt + +---------- +//0286 by ŒÓ’±—– + +Eƒ‚ƒ“ƒXƒ^[î•ñƒXƒLƒ‹‚ŃNƒ‰ƒCƒAƒ“ƒg‚ª—Ž‚¿‚éƒoƒOC³ + clif.c + clif_skill_estimation()‚ÌC³ + +E‰r¥”½‰žƒ‚ƒ“ƒXƒ^[‚ª”½‰ž‚µ‚È‚¢‚±‚Æ‚ª‚ ‚é–â‘è‚ðC³ + skill.c + skill_use_id(),‰r¥”½‰žŽžAÅ’á’ÇÕ‹——£‚ð13‚ÉÝ’è‚·‚é‚悤‚ÉB + +EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh[warp]‚ŃZ[ƒuƒ|ƒCƒ“ƒgˆÚ“®‚⃉ƒ“ƒ_ƒ€ˆÚ“®‚ª‰Â”\‚É‚È‚è‚Ü‚µ‚½ +EƒnƒG‚̉HA’±‚̉HƒAƒCƒeƒ€‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + ƒXƒNƒŠƒvƒgwarp‚Ń}ƒbƒv–¼‚É"SavePoint"‚â"Random"‚ªŽw’è‚Å‚«‚Ü‚·B + + (db/) + item_db.txt/item_db2.txt + ƒnƒG‚̉HA’±‚̉H‚̃XƒNƒŠƒvƒgC³ + script.c + buildin_warp()‚ÌC³ + +E@monsterƒRƒ}ƒ“ƒh‚É‚æ‚éMOB‚ª•œŠˆ‚µ‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½ +EƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh[monster]‚ÅMOB‚𔶂³‚¹‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ +EŒÃ–Ø‚ÌŽ}ƒAƒCƒeƒ€‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + + ƒXƒNƒŠƒvƒgˆø”‚Í monster ƒ}ƒbƒv–¼,x,y,MOB–¼,MOB‚ÌID,” ‚Å‚·B + ƒ}ƒbƒv–¼‚ª"this"‚Ìê‡AƒXƒNƒŠƒvƒg‚ðŽÀs‚µ‚½ƒvƒŒƒCƒ„[‚Ì‚¢‚éƒ}ƒbƒvA + x,y‚ª-1‚È‚çƒvƒŒƒCƒ„[‚ÌÀ•Wi‚Ç‚¿‚ç‚©ˆê•û‚Ì‚Ý‚»‚낦‚邱‚Æ‚à‰Â”\jA + MOB–¼‚ª"--en--"‚Ìê‡A–{—ˆ‚̉pŒê–¼‚É‚È‚èA"--ja--"‚Ìê‡A + –{—ˆ‚Ì“ú–{Œê–¼‚É‚È‚è‚Ü‚·BMOB‚ÌID‚ª-1‚Ìê‡A“K“–‚ÈID‚É‚È‚è‚Ü‚·B + + (db/) + item_db.txt/item_db2.txt + ŒÃ–Ø‚ÌŽ}‚̃XƒNƒŠƒvƒgC³ + (map/) + mob.c/mob.h + mob_once_spawn()’ljÁ + mob_setdelayspwan()‚Å•œŠˆ‹ÖŽ~ˆ—’ljÁB + npc.c/npc.h + npc_get_new_npc_id()’ljÁ + script.c + buildin_monster()’ljÁ + atcommand.c + @monster‚ÌC³ + +E@itemƒRƒ}ƒ“ƒh‚ÌC³i‘•”õ•i‚È‚Ç‚Ì–â‘èj + + atcommand.c + @item‚ÌC³ + +---------- +//0284 by ŒÓ’±—– + +EáŠQ•¨‚ª‚ ‚é‚Ɖ“‹——£UŒ‚‚ª‚Å‚«‚È‚‚È‚è‚Ü‚µ‚½ +E‘Î’nƒXƒLƒ‹‚ªáŠQ•¨ã‚ÉŽg—p‚Å‚«‚È‚‚È‚è‚Ü‚µ‚½ + + path.c + path_search(),can_move()‚ÌC³Acan_place()‚̒ljÁ + battle.c/battle.h + battle_check_range()’ljÁAŽË’ö‚ÆáŠQ•¨”»’èB + battle_weapon_attack()‚Åbattle_check_range()‚ðŒÄ‚ÔB + skill.c + skill_use_id()Askill_use_pos()‚Åbattle_check_range()‚ðŒÄ‚ÔB + mob.c + mob_ai_sub_hard()‚̈—‚ðC³ + +E‰r¥”½‰ž/ƒŠƒ“ƒNƒ‚ƒ“ƒXƒ^[‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + skill.c + skill_use_id()‚ɉr¥”½‰žƒ‚ƒ“ƒX‚̈—’ljÁ + mob.c + mob_ai_sub_hard_linksearch()‚̒ljÁ + mob_ai_sub_hard()‚ɃŠƒ“ƒNˆ—‚ðC³ + +---------- +//0283 by ‚ê‚ +EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ÌC³ + 0282‚Ŷ‚«‚Ä‚é‚o‚b‚ɃŠƒU‚ª‚©‚¯‚ê‚é‚Ì‚ÉA + Ž€‚ñ‚Å‚é‚o‚b‚ɂ̓ŠƒU‚ª‚©‚©‚ç‚È‚‚È‚Á‚Ä + ‚¢‚½‚Ì‚ðC³‚µ‚Ü‚µ‚½B + +---------- +//0282 by ŒÓ’±—– + +EƒXƒLƒ‹‚ÌC³‚ƒljÁŽÀ‘• + EƒLƒŠƒGƒGƒŒƒCƒ\ƒ“‚̃GƒtƒFƒNƒg‚Ì–â‘èC³B + EƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ª¶‚«‚Ä‚¢‚éPC‚É‚ÍŠ|‚¯‚ç‚ê‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½ + Eƒ^[ƒ“ƒAƒ“ƒfƒbƒh/UŒ‚ƒŠƒUƒŒƒNƒVƒ‡ƒ“‚ªBOSS‚É‚ÍŒø‚©‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½ + Eƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹‚̃qƒbƒg”§ŒÀ‚ðŽÀ‘• + EƒXƒg[ƒ€ƒKƒXƒg‚ÌŽÀ‘• + ‚½‚¾‚µA–{ŽI‚ƈႢ“€Œ‹‚ÍŠm—¦‚Ì‚Ý‚ÅAÅ‘åƒqƒbƒg”‚È‚Ç‚ª•Ï‚Å‚·B + + skill.c + skill_castend_nodamage_id()‚ÌC³ + ƒXƒg[ƒ€ƒKƒXƒg‚̈—’ljÁ + +EƒXƒLƒ‹ƒ†ƒjƒbƒgˆ—‚ɈӒn‚É‚È‚Á‚ĈÀ‘S«ƒ`ƒFƒbƒN‚ð’ljÁB + i—Ž‚¿‚È‚‚È‚é“ú‚͉“‚¢HHj + + map.h + MAX_SKILLUNITGROUP‚ð32‚É‘‚₵‚½ + skill.c + skill_status_change_*()‚ÉNULLƒ`ƒFƒbƒN’ljÁ + battle.c + battle_calc_damage()‚ɶ‘¶ƒ`ƒFƒbƒN’ljÁ + map.c + map_freeblock_unlock()‚ɃƒbƒN”ƒ`ƒFƒbƒN‚ð’ljÁ + +E‚»‚Ì‘¼C³ + EPC‚ÌÅ‘åHP‚ª30000‚ɧŒÀ‚³‚ê‚Ü‚µ‚½B + EPC‚̉ñ•œˆ—‚ªC³‚³‚ê‚Ü‚µ‚½ + E‚«”ò‚΂µˆ—‚ÌC³ + E0281‚Ìitem_db.txt‚Ì•ÏX‚ðitem_db2.txt‚É‚à“K—p + + (map/) + pc.c + pc_heal(),pc_calcstatus()‚ÌC³ + path.c + path_blownpos()‚ÌC³ + (db/) + item_db2.txt + 0281‚Ì–¼‘OC³‚È‚Ç‚ð“K—p + +---------- +//0280 by ŒÓ’±—– + +EŠÇ—ŽÒ‚̃VƒXƒeƒ€‚ðì¬ + "conf/login_athena.cnf"‚Ìì¬AŠÇ—ŽÒƒpƒXAGMƒpƒX‚ÌÝ’èB + ƒAƒJƒEƒ“ƒg‚ðì‚é‚Æ‚«A + ƒ—á„ ID: hoge_M Pass: foobar@admin + ‚̂悤‚ÉAƒpƒXƒ[ƒh‚ÌŒã‚ë‚Éu@ŠÇ—ŽÒƒpƒXv‚ª•K—v‚ÉB + login_athena.cnf‚Ìadmin_pass‚Ì—“‚ðÁ‚¹‚ÎA¡‚܂ł̂悤‚É‚à‚‚©‚¦‚Ü‚·B + i‚»‚Ìê‡Aadmin_pass‚ÌŒã‚낾‚¯‚Å‚È‚As‚²‚ÆÁ‚µ‚Ä‚‚¾‚³‚¢j + + (login/) + login.h + Ý’èƒtƒ@ƒCƒ‹‚̃fƒtƒHƒ‹ƒg–¼’ljÁ + login2.c + ƒAƒJƒEƒ“ƒg쬂̂Ƃ±‚ë‚ðC³ + Ý’èƒtƒ@ƒCƒ‹‚Ì“Ç‚Ýž‚ݒljÁ + +E@GMƒRƒ}ƒ“ƒh•œŠˆ + ‚½‚¾‚µAu@gm GMƒpƒXv‚Æ‚µ‚ÄŽg‚¢‚Ü‚·B + GMƒpƒX‚Ílogin_athena.cnf‚Ì‚à‚Ì‚Å‚·B + ŽI‚ÌÄ‹N“®‚Ì•K—v‚Í‚ ‚è‚Ü‚¹‚ñ‚ªA + ƒNƒ‰ƒCƒAƒ“ƒg‚̓ŠƒƒO‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B + + ƒ’ˆÓ„ + “¯‚¶ƒAƒJƒEƒ“ƒg‚Ì‘S‚ẴLƒƒƒ‰‚ÍPT‚©‚甲‚¯‚Ä’u‚¢‚Ä‚‚¾‚³‚¢B + ‚Ü‚½A‘qŒÉ‚̃AƒCƒeƒ€‚Í‘S•”ˆø‚«o‚µ‚Ä’u‚¢‚Ä‚‚¾‚³‚¢B + ‚»‚¤‚µ‚È‚¢‚ƃSƒ~ƒf[ƒ^‚ªŽc‚è‚Ü‚·B + + (login/) + login2.c + ƒAƒJƒEƒ“ƒgID•ÏXˆ—’ljÁ + (char/) + char2.c + ƒAƒJƒEƒ“ƒgID•ÏXˆ—’ljÁ + (map/) + chrif.c/chrif.h + chrif_changegm(),chrif_changedgm()’ljÁ + +E@pvpoffƒRƒ}ƒ“ƒh•œŠˆ + clif.c/clif.h + clif_pvpoff()’ljÁ + atcommand.c + @pvpoff‚̈—’ljÁ + +E‹ó‚Ì‘qŒÉƒf[ƒ^‚Í•Û‘¶‚³‚ê‚È‚¢‚悤‚É•ÏX + (char/) + int_storage.c + inter_storage_save()Astorage_tostr()‚ðC³ + +E@memoƒRƒ}ƒ“ƒh’ljÁB + ”CˆÓ‚Ì‹L‰¯ˆæ‚Ƀƒ‚‚ðŽæ‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½B + + atcommand.c + @memo‚̈—’ljÁ + + +---------- +//0279 by ŒÓ’±—– + +EƒXƒLƒ‹ƒ†ƒjƒbƒgˆ—‚Ì–â‘è‘Îô + ‚Æ‚è‚ ‚¦‚¸‚Ђ½‚·‚çƒ`ƒFƒbƒN‚ð“ü‚ê‚Ü‚µ‚½B + + skill.c + skill_unit_timer_sub(),skill_unit_move_sub(), + skill_delunit()‚Ƀ†ƒjƒbƒg‚̶‘¶”»’è‚ð’ljÁB + skill_unitgrouptickset_search(),skill_unitgrouptickset_delete() + skill_delunitgroup()‚ÉNULLƒ|ƒCƒ“ƒ^ƒ`ƒFƒbƒN‚ð’ljÁB + +EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³ + ƒeƒŒƒ|[ƒgAƒ[ƒvƒ|[ƒ^ƒ‹‚ÌŽÀ‘• + ƒLƒŠƒGƒGƒŒƒCƒ\ƒ“‚ðMOB‚ÉŠ|‚¯‚é‚Æ—Ž‚¿‚éƒoƒOC³ + + (db/) + cast_db.txt + ƒ[ƒvƒ|[ƒ^ƒ‹‚̉r¥ŽžŠÔÝ’è + (map/) + map.h + struct skill_unit_group‚Ìvalstr‚ðƒ|ƒCƒ“ƒ^‚É•ÏX + clif.c/clif.h + clif_parse_UseSkillMap(),clif_skill_warppoint()A + clif_parse_Memo(),clif_skill_memo()’ljÁ + skill.c/skill.h + skill_castend_map(),skill_unit_onlimit()‚̒ljÁ + skill_unit_*Œn‚̈—‚¢‚ë‚¢‚ë’ljÁB + skill_status_change_start()‚̃LƒŠƒG‚̈—C³ + pc.c/pc.h + pc_randomwarp(),pc_memo()’ljÁ + +---------- +//0278 by nabe + +EƒXƒLƒ‹ƒ|ƒCƒ“ƒg‚ðU‚Á‚½‚Æ‚«‚ɃXƒe[ƒ^ƒX‚ðXV + pc.c + pc_skillup()‚Åpc_calc_skilltree()‚Ì‘ã‚í‚è‚Épc_calcstatus() +EŠŽ—Ê‘‰Á‚ðC³ + pc.c + pc_calcstatus()‚ÌŠŽ—Ê‘‰Á‚É‚æ‚émax_weight‘•ª‚ðskill*1000‚É + +---------- +//0277 by nabe + +E•t‘®•iiƒJ[ƒgA‘éAƒyƒRj‚Ì•t‚¯ŠO‚µ‚ð‰ü—Ç + (conf/) + npc_event_rental.txt + ‘éAƒyƒR‚ð•t‚¯‚éƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh‚ð•ÏX + (map/) + battle.c + battle_addmastery(),battle_calc_weapon_attack()‚Å + ƒyƒRƒyƒR‹R掞‚Ì‘„UŒ‚—͕ⳂðŽÀ‘• + clif.c + clif_parse_CartOff‚ðclif_parse_RemoveOption‚É•ÏX + pc.c/pc.h + pc_calcstatus()‚ŃJ[ƒgAƒyƒRƒyƒRæ‚è‚É‚æ‚鑬“x•Ï‰»‚ðŒvŽZ + pc_setoption(),pc_setcart()‰ü—Ç + pc_setfalcon(),pc_setriding()’ljÁ + pc.h‚Épc_isfalcon(),pc_isriding()ƒ}ƒNƒ’ljÁ + script.c + buildin_setfalcon() ‘é•t‰Á + buildin_setriding() ƒyƒRƒyƒRæ‚è + +---------- +//0276 by nabe + +E¸˜BNPCŽÀ‘• + (conf/) + npc_town_refine.txt + ¸˜BNPCƒXƒNƒŠƒvƒgƒtƒ@ƒCƒ‹V‹K’ljÁ + (map/) + pc.c/pc.h + ¸˜B¬Œ÷—¦‚Ì•\percentrefinery[5][10]‚ð’ljÁ + script.c‚©‚çŒÄ‚΂ê‚éŠÖ” + pc_percentrefinery() ¸˜B¬Œ÷—¦ + pc_equipitemindex() ‘•”õ•iƒCƒ“ƒfƒbƒNƒX + ‚ð’ljÁ + script.c + buildin_getequipname() ‘•”õ–¼•¶Žš—ñi¸˜Bƒƒjƒ…[—pj + buildin_getequipisequiped() ‘•”õƒ`ƒFƒbƒN + buildin_getequipisenableref() ‘•”õ•i¸˜B‰Â”\ƒ`ƒFƒbƒN + buildin_getequipisidentify() ‘•”õ•iŠÓ’èƒ`ƒFƒbƒN + buildin_getequiprefinerycnt() ‘•”õ•i¸˜B“x + buildin_getequipweaponlv() ‘•”õ•i•ŠíLV + buildin_getequippercentrefinery() ‘•”õ•i¸˜B¬Œ÷—¦ + buildin_successrefitem() ¸˜B¬Œ÷ + buildin_failedrefitem() ¸˜BŽ¸”s + ‚ð’ljÁ + +EƒXƒNƒŠƒvƒg‚ÉWeight,MaxWeightƒpƒ‰ƒ[ƒ^‚ð’ljÁ + const.txt + Weight,MaxWeight‚ð’ljÁ + +EƒXƒNƒŠƒvƒg‚ł̃Lƒƒƒ‰–¼•\Ž¦•ûŽ®‚ð•ÏX + (conf/) + npc_job_merchant.txt/npc_job_thief.txt/npc_town_kafra.txt + mes "$charaname"; ‚ð mes strcharinfo(0); ‚É•ÏX + (map/) + script.c + buildin_strcharinfo()‚ð’ljÁ + +---------- +//0275 by ŒÓ’±—– + +EMVP‚ÌŽÀ‘• + MVP‚Ì”»’è‚É‚Ídmglog‚ðŽg‚Á‚Ä‚Ü‚·B‚·‚È‚í‚¿—^ƒ_ƒ‚¾‚¯‚ªŒvŽZ‘ÎÛ‚Å‚·B + ”íƒ_ƒ‚Íl—¶‚³‚ê‚Ä‚Ü‚¹‚ñB + ŒoŒ±’l‚Í–³ðŒ‚Å“ü‚èAŠm—¦‚Å‚³‚ç‚ɃAƒCƒeƒ€‚ª“ü‚è‚Ü‚·B + ƒAƒCƒeƒ€‚Í•¡”Žè‚É“ü‚邱‚Æ‚à‚ ‚è‚Ü‚·B + + clif.c/clif.h + clif_mvp_effect(),clif_mvp_item(),clif_mvp_exp()’ljÁ + mob.c + mob_damage()‚ÉMVPˆ—’ljÁ + +EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³ + Eƒ}ƒOƒiƒ€ƒuƒŒƒCƒNAƒAƒ[ƒVƒƒƒ[ŽÀ‘• + E‚«”ò‚΂µŒnƒXƒLƒ‹‚ªˆê•”Žg—p‚³‚ê‚È‚¢ƒoƒOC³ + Eƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒO‚̃_ƒ[ƒWŒvŽZŽ®C³ + E•ŠíUŒ‚Œn‘®«•t‚«ƒXƒLƒ‹‚Å‘®«‚ª”½‰f‚³‚ê‚È‚¢–â‘èC³ + Eꊎw’èƒXƒLƒ‹‚ªUŒ‚‚µ‚È‚ª‚ç‰r¥‚Å‚«‚½–â‘è‚ðC³ + + battle.c + battle_calc_weapon_attack()‚ÌŠY“–ŒÂŠC³•’ljÁ + skill.c + skill_castend_damage_id()‚Ɉ—’ljÁ + skill_use_pos()‚ÉUŒ‚’âŽ~ˆ—’ljÁ + +EƒJ[ƒhƒXƒLƒ‹‚ªƒJ[ƒh‚ðŠO‚µ‚Ä‚àŽg—p‰Â”\‚È–â‘è‚ðC³ + pc.c + pc_calc_skilltree()‚ðC³ + +EƒAƒCƒeƒ€ƒhƒƒbƒv—¦AexpŠ“¾”{—¦‚È‚Ç‚Ì’²®‹@”\’ljÁ + battle_athena.cnf‚Å’²®‚Å‚«‚逖ڂª‘‚¦‚Ü‚µ‚½B + Ú‚µ‚‚Í‚»‚¿‚ç‚ðŽQÆ‚µ‚Ä‚‚¾‚³‚¢B + + (conf/) + battle_athena.cnf + mvp_hp_rate,item_rate,exp_rate,mvp_item_rate,mvp_exp_rate’ljÁ + (map/) + battle.c/battle.h + ‘‚¦‚½€–Ú‚ð“Ç‚Ýž‚ނ悤‚Ɉ—’ljÁ + mob.c + mob_db.txt“Ç‚Ýž‚ÝŽžAƒf[ƒ^‚ð’²®‚·‚鈗’ljÁ + +---------- +//0274 by ŒÓ’±—– + +EƒXƒLƒ‹‚̒ljÁŽÀ‘• + ƒXƒLƒbƒhƒgƒ‰ƒbƒvAƒ‰ƒ“ƒhƒ}ƒCƒ“Aƒuƒ‰ƒXƒgƒ}ƒCƒ“AƒNƒŒƒCƒ‚ƒA[ƒgƒ‰ƒbƒvA + ƒtƒŠ[ƒWƒ“ƒOƒgƒ‰ƒbƒvAƒTƒ“ƒhƒ}ƒ“AƒAƒ“ƒNƒ‹ƒXƒlƒA + + ‡–°‚â“€Œ‹‚È‚Ç‚ÌŠm—¦‚Í“K“–‚Å‚·B + ã©”“®Žž‚̃GƒtƒFƒNƒg‚ªo‚Ü‚¹‚ñB‚Ä‚¢‚¤‚©o‚µ•û‚ª‚í‚©‚è‚Ü‚¹‚ñB + ‚í‚©‚él‚Í‹³‚¦‚Ä‚‚¾‚³‚¢B‚à‚µ‚‚Í–{ŽI‚Åã©”“®Žž‚Ì•¡‡‰»Ï‚Ý‚Ì + ¶ƒpƒPƒbƒgƒf[ƒ^‚Å‚à‚¢‚¢‚Ì‚Å‹³‚¦‚Ä‚‚¾‚³‚¢B + + (db/) + skill_db.txt + ‘®«‚ÌC³ + (map/) + skill.c + ŠY“–ŒÂŠ + battle.c/battle.h + battle_calc_misc_damage()‚ÌŠY“–ŒÂŠ + battle_stopwalking()’ljÁ + clif.c/clif.h + clif_fixpcpos()’ljÁ + clif_parse_WalkToXY()‚ɃAƒ“ƒNƒ‹‚Å“®‚¯‚È‚‚·‚鈗’ljÁ + mob.c + mob_ai_sub_hard()‚ɃAƒ“ƒNƒ‹‚Å“®‚¯‚È‚‚·‚鈗’ljÁ + +E‘•”õ‚Ȃǂ̃NƒŠƒeƒBƒJƒ‹ƒ{[ƒiƒX‚ª1/10‚É‚È‚Á‚Ä‚¢‚éƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½ + battle.c + battle_calc_weapon_attack()‚ɒljÁ•ª‚ðŒvŽZ‚·‚鈗C³ + +EƒuƒŠƒbƒcƒr[ƒg‚ÌŒvŽZŽ®‚ª‘S‘Rˆá‚¤ƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½ + battle.c + battle_calc_attack()‚ÌBF_MISC‚̈’u‚ªŠÔˆá‚Á‚Ä‚¢‚½‚Ì‚ðC³ + +ESW‚ƃjƒ…[ƒ}‚ª•ŠíUŒ‚‚È‚ç‚Ç‚ñ‚ȃŒƒ“ƒW‚ÌUŒ‚‚Å‚à–h‚¢‚Å‚¢‚½–â‘è‚ðC³ + battle.c + battle_calc_damage()‚̃Œƒ“ƒW”»’è‚ðC³ + +EƒI[ƒo[ƒgƒ‰ƒXƒg‚ƃEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“‚ªPTƒƒ“ƒo‚É‚à‚©‚©‚é‚悤‚ÉC³B + Œø‰Ê‚ÍŽg—pŽÒ‚ÆPTƒƒ“ƒo‚ňႢ‚Í‚ ‚è‚Ü‚¹‚ñB + + skill.c + skill_castend_nodamage_id()‚ÌC³B + +---------- +//0273 by ŒÓ’±—– + +EƒLƒƒƒ‰ƒNƒ^[‚ªÁŽ¸‚µ‚½‚茶‰e‚ªo‚é–â‘肪C³‚³‚ê‚Ü‚µ‚½ + E‚«”ò‚΂µƒXƒLƒ‹‚ðŽó‚¯‚é‚Æ”¶‚µ‚Ä‚¢‚½ + EŽÎ‚߈ȊO‚Ì•às‚Å”¶‚µ‚Ä‚¢‚½ + + map.c + map_foreachinmovearea()‚ÌC³B + skill.c + skill_blown()‚É•\Ž¦”͈ÍXVˆ—‚ð’ljÁB + mob.c + mob_walk()‚Å•à‚«I‚í‚Á‚½‚Æ‚«‚Ɉʒu‚ðÄ‘—M‚·‚é‚悤‚ÉC³ + pc.c + pc_walk()‚Å•à‚«I‚í‚Á‚½‚Æ‚«‚Ɉʒu‚ðÄ‘—M‚·‚é‚悤‚ÉC³ + +EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³ + ƒtƒ@ƒCƒ„[ƒEƒH[ƒ‹Aƒtƒ@ƒCƒ„[ƒsƒ‰[‚ÌŽÀ‘• + ƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ł̃mƒbƒNƒoƒbƒN•ûŒü‚ðC³ + + (db/) + skill_db.txt + ƒtƒ@ƒCƒ„[ƒsƒ‰[AƒuƒŠƒbƒcƒr[ƒg‚̃qƒbƒg”C³ + (map/) + skill.c + skill_blown()‚É‘ÎÛ‚ÌŒü‚«‚É‚æ‚éƒmƒbƒNƒoƒbƒNˆ—’ljÁ + ‚»‚Ì‘¼•K—v‚ÈêŠC³ + mob.c + mob_walk(),mob_attack()‚ÅŒü‚«‚ð•Û‘¶ + pc.c + pc_walk(),pc_attck()‚ÅŒü‚«‚ð•Û‘¶ + map.c + map_calc_dir()’ljÁB‘Š‘ΓI‚È•ûŒü‚ð‹‚ß‚é + + +EƒNƒŠƒeƒBƒJƒ‹‘‰Á‘•”õ‚ªí“¬Žž‚ÉŒvŽZ‚³‚ê‚Ä‚È‚¢ƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½ + battle.c + battle_calc_weapon_attack()‚ɒljÁ•ª‚ðŒvŽZ‚·‚鈗’ljÁ + + +E–hŒäƒ†ƒjƒbƒgiSW/ƒjƒ…[ƒ}j‚ª“G‚ɉe‹¿‚ð‹y‚Ú‚·‚©‚Ç‚¤‚©‚ð + battle_athena.cnf‚ŧŒä‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + ƒfƒtƒHƒ‹ƒg‚Íu‹y‚Ú‚³‚È‚¢v‚Å‚·B + + (conf/) + battle_athena.cnf + €–Údefunit_not_enemy‚ð’ljÁ + (map/) + battle.c/battle.h + struct Battle_Config ‚É defnotenemyƒƒ“ƒo’ljÁB + battle_read_config()‚̈—‚ðC³B + skill.c + skill_unitsetting()‚ÅSW/ƒjƒ…[ƒ}‚̈—‚ðC³ + +EƒtƒFƒ“ƒJ[ƒh‘•”õŽžAŽ€‚ñ‚Å‚à‰r¥‚ª‘±‚ƒoƒO‚ðC³ + i‰r¥I—¹‘O‚É•œŠˆ‚·‚ê‚Ζ‚–@‚ª”“®‚·‚é–â‘è‚àC³‚É‚È‚è‚Ü‚·j + + pc.c + pc_damage()‚ÅŽ€–SŽžskill_castcancel()‚ðŒÄ‚Ԃ悤‚ÉC³ + +E“G–¡•û”»’舗‚ɃoƒO‚ª‚ ‚Á‚½‚Ì‚ðC³ + battle.c + battle_check_target()‚ÌC³ + +---------- +//0272 by ŒÓ’±—– + +EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³ + EƒZƒCƒtƒeƒBƒEƒH[ƒ‹Aƒjƒ…[ƒ}‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½B + Eƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“”“®’†‚ÉŒø‰Ê”͈͊O‚©‚ç”͈͓à‚É“ü‚Á‚Ä‚«‚½‚Æ‚«A + “G–¡•û‚Ì‹æ•Ê–³‚UŒ‚‚ª“–‚½‚é–â‘肪C³‚³‚ê‚Ü‚µ‚½B + EƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ÌŽË’ö‚ªC³‚³‚ê‚Ü‚µ‚½B + E”͈͖‚–@‚Å“|‚µ‚½“G‚ªHP0‚ÅŽc‚éꇂª‚ ‚é–â‘肪C³‚³‚ê‚Ü‚µ‚½B + + (db/) + skill_db.txt + ƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃTƒ“ƒNƒ`ƒ…ƒAƒŠ‚ÌŽË’ö‚ð8‚É•ÏX + (map/) + skill.c + skill_unit_onplace(),~ondelete(),~onout()‚È‚Ç‚ÉA + ƒZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚̈—’ljÁB + skill_unit_move()‚Ƀ^[ƒQƒbƒg‚Ì“G–¡•û”»’è‚ð’ljÁB + skill_unit_timer_onplace(),~ondelete()‚Ƀ†ƒjƒbƒg¶‘¶”»’è‚ð’ljÁ. + skill_clear_unitgroup()’ljÁBƒ†ƒjƒbƒgƒOƒ‹[ƒv‚Ì‘Síœ‚ð‚·‚éB + battle.c + battle_calc_damage()‚ɃZƒCƒtƒeƒBƒEƒH[ƒ‹‚ƃjƒ…[ƒ}‚̈—’ljÁB + map_foreachinarea()‚È‚ÇC³ + map.c + map_quit()‚Åskill_clear_unitgroup()‚ðŒÄ‚Ԃ悤‚ÉB + +EƒXƒLƒ‹‚Ì‚«”ò‚΂µˆ—‚ðŽÀ‘• + ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_[AƒTƒ“ƒNƒ`ƒ…ƒAƒŠAƒXƒsƒAƒXƒ^ƒuA + ƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ…Aƒ`ƒƒ[ƒWƒAƒ[‚Ì‚«”ò‚΂µˆ—ŽÀ‘• + + path.c/map.h + path_blownpos()’ljÁ + battle.c/battle.h + struct Damage‚Éblewcountƒƒ“ƒo’ljÁ + battle_calc_*_damage()‚Åblewcount‚ðƒZƒbƒg‚·‚é‚悤‚ÉB + skill.c/skill.h + skill_blown()’ljÁB‚«”ò‚΂µˆ—B + skill_attack()‚Åskill_blown()‚ðŒÄ‚Ԃ悤‚ÉB + skill_attack()‚Ìflag‚Ì‚«”ò‚΂µƒrƒbƒg‚Í–¢Žg—p‚ÉB + +E•às’†‚̃‚ƒ“ƒXƒ^[‚ÉUŒ‚‚µ‚½‚Æ‚«Aƒ‚ƒ“ƒXƒ^[‚ɃfƒBƒŒƒC‚ª“ü‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + iUŒ‚‚̃‚[ƒVƒ‡ƒ“‚Ì’x‰„‚ðl‚¦‚Ä‚È‚¢‚Ì‚Å‚ ‚ñ‚Ü‚èˆÓ–¡‚ª‚È‚¢‚©‚àHj + + (map/) + mob.c/mob.h + state‚ÉMS_DELAY‚ð’ljÁB + mob_damage(),mob_timer()‚È‚Ç‚ÌC³ + +E•às’†‚̃‚ƒ“ƒXƒ^[‚ÉUŒ‚‚µ‚½‚Æ‚«AˆÊ’u‚ª‚¸‚ê‚é–â‘è‚̉ž‹}ˆ’u + i‚Ü‚¾ˆÊ’u‚Í‚¸‚ê‚é‚悤‚Å‚·j + + clif.c/clif.h + clif_fixmobpos()‚ð’ljÁ + mob.c + mob_attack()‚Åclif_fixmobpos()‚ðŒÄ‚Ԃ悤‚ÉB + +E‚»‚Ì‘¼C³ + pc.c + pc_stop_walking()‚Åpath_len‚ð‰Šú‰»‚·‚é‚悤‚ÉB + +---------- +//0271 by ‚ê‚ + +EPT‚ÉŠÖ‚µ‚Ä‚µ‚¾‚¯C³ + Œö•½‚É‚µ‚Ä‚©‚çƒLƒƒƒ‰‚ð‰Á“ü‚³‚¹‚é‚ÆŒö•½‚ª‰ðœ‚³‚ê‚È‚¢ƒoƒO‚ðC³ + +---------- +//0270 by ŒÓ’±—– + +EƒXƒLƒ‹‚̒ljÁŽÀ‘•‚ÆC³ + ƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“AƒTƒ“ƒNƒ`ƒ…ƒAƒŠAƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€ + + (db/) + skill_db.txt + ƒ}ƒOƒkƒX‚̃qƒbƒg”A‘®«’²® + ƒTƒ“ƒNƒ`ƒ…ƒAƒŠ‚Ì‘®«’²® + (map/) + map.h + struct map_session_data‚ÌC³ + clif.c/clif.h + clif_skill_setunit(),clif_skill_delunit()A + clif_getareachar_skillunit(),clif_clearchar_skillunit()’ljÁ + clif_pcoutsight(),clif_pcinsight(),clif_getareachar()C³ + skill.c/skill.h + –Y‚ê‚é‚Ù‚Ç‘½”•ÏXBŽå‚ɃXƒLƒ‹ƒ†ƒjƒbƒgŠÖ˜A•”•ªB + pc.c + pc_authok()‚Åskillunit,skillunittick‚ð‰Šú‰»‚·‚é‚悤‚ÉB + pc_walk()‚Åskill_unit_move()‚ðŒÄ‚Ԃ悤‚ÉB + mob.c + mob_spwan()‚Åskillunittick‚ð‰Šú‰»‚·‚é‚悤‚ÉB + mob_walk()‚Åskill_unit_move()‚ðŒÄ‚Ԃ悤‚ÉB + battle.c/battle.h + battle_calc_magic_attack()C³ + battle_check_target()C³ + map.c + map_foreachobject()‚È‚ÇC³ + +E‚±‚Ü‚©‚¢ƒoƒOC³‚È‚Ç + Emob‚ª‰ñ•œ‚µ‚È‚¢–â‘èC³ + + battle.c + battle_damage()C³ + +---------- +//0266 by ŒÓ’±—– + +E–‚–@ŒvŽZŽ®‚ÌC³ + –‚–@”{—¦‚ðƒ_ƒ[ƒW‚ÉŠ|‚¯‚Ä‚¢‚½‚Ì‚ðMATK‚É‚©‚¯‚é‚悤‚É‚µ‚Ü‚µ‚½B + c‚±‚Á‚¿‚ª³‚µ‚¢‚Æ‚µ‚Ä‚¢‚¢‚Ì‚©‚ÈHˆá‚¤‚Ȃ狳‚¦‚Ä‚‚¾‚³‚¢B + + battle.c + battle_calc_magic_attack()‚ÌC³ + +EƒXƒLƒ‹‚̒ljÁŽÀ‘• + ƒTƒCƒgAƒ‹ƒAƒtAƒ[ƒhƒIƒuƒ”ƒ@[ƒ~ƒŠƒIƒ“ + + ƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“‚Í‚R‰ñ‚Ì”»’莞‚ɉr¥‰¹‚ª–‚è‚Ü‚·cB + clif_skill_damage()‚Ìtype‚ðFX•Ï‚¦‚Ä‚Ý‚Ü‚µ‚½‚ª‚Ç‚¤‚à‚¤‚Ü‚‚¢‚«‚Ü‚¹‚ñB + ’¼‚¹‚él‚Í’¼‚µ‚Ä‚‚ê‚é‚Æ‚¤‚ꂵ‚¢‚Å‚·B + i‚¤[‚ñA‚Ђå‚Á‚Æ‚µ‚½‚ç–{—ˆ‚̓Oƒ‰ƒtƒBƒbƒN‚Ì‚È‚¢ƒXƒLƒ‹ƒ†ƒjƒbƒg‚ð + Ý’u‚µ‚ÄA‚»‚̃†ƒjƒbƒg‚ÌID‚Ń_ƒ[ƒW‚ð—^‚¦‚é‚Ì‚©‚àHHj + + (db/) + skill_db.txt + ƒ[ƒhƒIƒuƒo[ƒ~ƒŠƒIƒ“‚̃qƒbƒg”‚ð‚R‚©‚ç10‚É•ÏXB + (map/) + skill.c + skill_status_change_timer_sub()’ljÁB + skill_status_change_*()‚Ɉ—’ljÁB + +Eblock‚̃ƒ‚ƒŠ‰ð•ú‚̈À‘S«‚ÌŒüã + map_foreachinarea,party_foreachsamemap‚ʼnñ‚Á‚Ä‚¢‚é‚Æ‚«‚É + block‚ðƒ`ƒFƒCƒ“‚©‚ç휂·‚é‚ÆA‚¤‚Ü‚‰ñ‚ç‚È‚¢‰Â”\«‚ª‚ ‚é–â‘èC³B + ‚³‚ç‚ÉAblock‚ðƒƒ‚ƒŠ‚©‚ç‰ð•ú‚·‚é‚Ɗ댯‚È–â‘è‚àC³B + + Eforeach“à‚ÅŠÖ”‚ðŒÄ‚Ô‘O‚Éblock‚ªƒ`ƒFƒCƒ“‚©‚çŠO‚ê‚Ä‚È‚¢‚©ƒ`ƒFƒbƒNB + Eforeach‚É“ü‚Á‚½‚Æ‚«‚ɃƒbƒN‚µ‚ăƒ‚ƒŠ‚©‚ç‰ð•ú‚³‚ê‚È‚¢‚悤‚É‚·‚éB + ‚±‚ê‚̓†[ƒU[‚ªfree‚¶‚á‚È‚map_freeblock‚É‚æ‚Á‚ĉð•ú‚·‚é‚悤‚É + ƒvƒƒOƒ‰ƒ€‚·‚é•K—v‚ª‚ ‚éBiƒ‹[ƒv‚©‚çŒÄ‚΂ê‚é‰Â”\«‚Ì‚ ‚éŠÖ”‚ðì‚é + ꇂ̂±‚Æ‚ÅA•’Ê‚Ífree‚Å‚à‚¢‚¿‚¨‚¤“®‚Bj + Emap_foreachinmovearea‚ɂ‚¢‚Ă͉ü—Ç‚µ‚Ä‚¢‚È‚¢‚ªA + ‚±‚̃‹[ƒv‚Åblock‚ð휂·‚邱‚Æ‚Í‚ ‚肦‚È‚¢‹C‚ª‚·‚é‚Ì‚Å‚¢‚¢‚Æ‚·‚éB + + ‚±‚ê‚Í¡Œã‚ðŒ©‰z‚µ‚½‰ü—Ç‚Å‚ ‚Á‚ÄAŒ»Ý‚Ì•sˆÀ’肳‚𒼂·‚à‚Ì‚Å‚Í‚È‚¢B + iŒ»Ý‚Íforeach“à‚Ńƒ‚ƒŠ‚ð‰ð•ú‚µ‚Ä‚¢‚È‚¢c‚Í‚¸‚È‚Ì‚ÅB + ‚½‚¾AƒXƒLƒ‹ƒ†ƒjƒbƒg‚ȂLjꎞƒIƒuƒWƒFƒNƒg‚𑽗p‚µŽn‚ß‚é‚ÆŒø‰Ê‚ª‚ ‚éj + + map.c + map_freeblock(),map_freeblock_lock(),~_unlock()’ljÁB + map_delobject()‚Ìfree()‚ðmap_freeblock()‚É’uŠ·B + map_foreachinarea‚ŃƒbƒN‚ƈÀ‘S«ƒ`ƒFƒbƒNB + party.c + party_foreachsamemap()‚ŃƒbƒN‚ƈÀ‘S«ƒ`ƒFƒbƒN + + +EƒXƒLƒ‹ƒ†ƒjƒbƒg‹@\ŽÀ‘• + Ý’uŒn‚̃XƒLƒ‹‚Ì‚½‚ß‚Ì‹@\ŽÀ‘•BŽÀۂ̃XƒLƒ‹‚ÌŽÀ‘•‚Í‚Ü‚¾‚Å‚·B + + skill.c + ‚È‚ñ‚©‚à‚¤FX’ljÁ‚µ‚Ü‚µ‚½B + map.c + do_init()‚Ådo_skill_init()‚ðŒÄ‚Ԃ悤‚ÉB + map.h + struct skill_unit,skill_unit_group‚ȂǒljÁB + map_session_data‚Ì‘‚«Š·‚¦‚È‚ÇB + +E‚»‚Ì‘¼×‚©‚¢‚Æ‚±‚ë‚ðC³‚µ‚½‚ÆŽv‚¤‚¯‚Ç–Y‚ê‚Ü‚µ‚½B + +---------- +//0264 by nabe + +E$charaname‚ð’‚éNPC‚Ƙb‚µ‚½ŽžAmapŽI‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B + script.c + replacestr()‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ðŽè’¼‚µ‚µ‚Ü‚µ‚½B + +---------- +//0263 by nabe + +E˜I“XŠJÝ’†‚ɃJ[ƒgƒAƒCƒeƒ€‚ðo‚µ“ü‚ê‚Å‚«‚È‚¢‚悤C³ + pc.c + pc_putitemtocart(),pc_getitemfromcart()‚ÉA˜I“X”»’è‚ð’ljÁ + +E˜I“XƒAƒCƒeƒ€w“ü‚̃`ƒFƒbƒN‚ð’ljÁ + vending.c + vending_purchasereq()‚Å”X‚ÌðŒ”»’è‚ð’ljÁ + +---------- +//0261 by ŒÓ’±—– + +EŠg‘勾AƒCƒOƒhƒ‰ƒVƒ‹‚Ì—t‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + ƒXƒNƒŠƒvƒg‚ÉitemskillƒRƒ}ƒ“ƒhì¬BˆêŽž“I‚ɃXƒLƒ‹‚ªŽg—p‚Å‚«‚Ü‚·B + + (map/) + script.c + buildin_itemskill()‚̒ljÁ‚È‚ÇB + skill.c + ƒAƒCƒeƒ€ƒXƒLƒ‹‚È‚çSP‚È‚Ç‚ðŒŸ¸•Á”‚È‚¢‚悤‚ÉC³ + clif.c/clif.h + clif_item_skill()‚̒ljÁB + (db/) + item_db.txt/item_db2.txt + ƒXƒLƒ‹Žg—pƒAƒCƒeƒ€‚̃XƒNƒŠƒvƒgC³ + +Eƒp[ƒeƒBƒXƒLƒ‹‚ÌŽÀ‘• + ƒAƒ“ƒ[ƒ‹ƒXAƒ}ƒOƒjƒtƒBƒJ[ƒgAƒOƒƒŠƒAAƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…‚ª + ‰æ–Ê“à‚̃p[ƒeƒB‘Sˆõ‚ÉŒø‰Ê‚ð‹y‚Ú‚·‚悤‚É‚È‚è‚Ü‚µ‚½B + + skill.c + skill_castend_nodamage_id()‚ÌŠY“–ŒÂŠ‚ÌC³ + party.c + party_foreachsamemap()‚ÌC³ + +EƒXƒLƒ‹ŠÖŒW‚ÌC³ + ƒLƒŠƒGƒGƒŒƒCƒ\ƒ“‚ª‘¦Žž”“®‚É‚È‚Á‚Ä‚¢‚é‚Ì‚ðC³B + ƒXƒg[ƒ“ƒJ[ƒX‚ŃGƒtƒFƒNƒg‚ª‘¶Ý‚µ‚È‚¢ƒoƒOC³B + + (db/) + skill_db.txt + ƒLƒŠƒGƒGƒŒƒCƒ\ƒCƒ“C³ + (map/) + skill.c/skill.h + skill_check_condition()’ljÁBƒXƒLƒ‹Žg—pðŒŒŸ¸‚̈ê–{‰»B + skill_castend_nodamage_id()‚ŃXƒg[ƒ“ƒJ[ƒXC³ + +EƒXƒNƒŠƒvƒg‚̃R[ƒh‚ð®— + get_val()‚Åconst.txt‚Ì’è”‚ðŠ“¾‚Å‚«‚é‚悤‚ÉC³B + + (map/) + script.c + get_val()‚ÌC³iconst.txt‚Ìtype==0‚Ì’l‚ªŠ“¾‰Â”\‚Éj + bonus(),bonus2()‚È‚Ç‚ÌC³B + (db/) + const.txt + type=1‚Å‚ ‚é•K—v‚ª–³‚¢‚à‚Ì‚ð0‚ÉB + item_db.txt/item_db.txt + const.txt‚Ì•ÏX‚É”º‚¤C³B + +---------- +//0260 by ŒÓ’±—– + +E퓬ŠÖŒW‚Ìݒ肪ƒtƒ@ƒCƒ‹‚É‘‚¯‚é‚É‚È‚è‚Ü‚µ‚½ + mapŽI‚Ì‘æ2ˆø”‚Ƀtƒ@ƒCƒ‹–¼‚ªÝ’肳‚ê‚Ä‚¢‚é‚ÆA‚»‚ê‚ðŽg‚¢A + ݒ肳‚ê‚Ä‚È‚¢ê‡‚Í "conf/battle_athena.cnf"‚ðŽg‚¢‚Ü‚·B + + ‚ ‚ÆAˆê‰ž”͈ÍUŒ‚ƒXƒLƒ‹‚ɂ‚¢‚Äà–¾B + ŽI‚ªí‚ÉPVP‚Éݒ肳‚ê‚Ä‚¢‚éê‡Aƒp[ƒeƒBƒƒ“ƒo‚¶‚á‚È‚¢PC‚É‚à”͈ÍUŒ‚‚ª + ‚ ‚½‚è‚Ü‚·BŒ™‚Èꇂ̓p[ƒeƒB‚ð‘g‚Þ‚©Aí‚ÉPVP‚ðoff‚É‚µ‚ĉº‚³‚¢B + í‚ÉPVP‚ªoff‚Å‚àA@pvp‚Åpvpƒtƒ‰ƒO‚ð“ü‚ꂽl‚ÌŠÔ‚Å‚ÍUŒ‚‚ª“–‚½‚è‚Ü‚·B + ‚½‚¾‚µAˆê“xpvp‚ðon‚É‚·‚é‚ÆAƒŠƒƒO‚·‚é‚Ü‚Åon‚Ì‚Ü‚Ü‚È‚Ì‚Å’ˆÓB + + (conf/) + battle_athena.cnf + ’†‚Éà–¾‘‚¢‚Ä‚é‚Ì‚ÅŠeŽ©D‚«‚Ȃ悤‚É‘‚«Š·‚¦‚Ä‚‚¾‚³‚¢B + + (map/) + battle.c/battle.h + struct Battle_Config‚Ì’è‹`B + battle_config_read()‚ȂǒljÁB + skill.c + CASTFIX,DELAYFIX‚Ì”pŽ~‚ÆBattle_Config‚É‚æ‚éC³‚̒ljÁB + atcommand.c + @pvpƒRƒ}ƒ“ƒh‚Åpvpƒtƒ‰ƒO‚ðƒZƒbƒg‚·‚é‚悤‚ÉB + iŽIÝ’è‚Ìí‚ÉPVP‚ªoff‚ÌŽžA—¼l‚ªpvp‚ðon‚É‚µ‚Ä‚½‚ç퓬‰Â”\j + map.c/map.h + struct map_session_data‚Épvp_flag‚ð’ljÁ + do_init()‚Åbattle_config_read()‚ð“ǂނ悤‚ÉB + +E퓬ŠÖŒW‚̃R[ƒh‚ª‚µ®—‚³‚ê‚Ü‚µ‚½ + battle.c/battle.h + battle_weapon_attack()’ljÁB + battle_calc_weapon_attack()‚̈ø”•ÏX + battle_calc_attack()‚ð’ljÁ‚µ‚Äbattle_calc_*_attack()‚ðˆê–{‰»B + skill.c/skill.h + skill_weapon_attack(),~_magic_~(),~_misc_~()‚Ì”pŽ~A + skill_attack()‚Ɉê–{‰»B + pc.c/mob.c + UŒ‚ˆ—‚ðbattle_weapon_attack()‚Ɉê–{‰»B + +EƒAƒCƒeƒ€ŠÓ’èƒXƒLƒ‹‚ðŽÀ‘• + ¤l‚̃XƒLƒ‹‚Ì•û‚Å‚·B’ŽŠá‹¾‚Í‚Ü‚¾‚Å‚·B + + skill.c + ƒXƒLƒ‹ˆ—’ljÁ + pc.c/pc.h + pc_item_identify()’ljÁ + clif.c/clif.h + clif_item_identify_list(),clif_item_identified()’ljÁ + clif_parse_ItemIdentify()’ljÁ + +EƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚̃Rƒƒ“ƒgC³ + (db/) + skill_db.txt + ¤l‚̃XƒLƒ‹‚̃Rƒƒ“ƒg‚ª‚¸‚ê‚Ä‚¢‚½‚Ì‚ðC³ + +---------- +//0259 by ‚ê‚ +Emob_db.txt‚ÌC³ + ‹T“‡ƒ‚ƒ“ƒXƒ^[‚âBOSS‚̃Xƒe[ƒ^ƒX’²® + ‹T“‡ƒ‚ƒ“ƒX‚É“K“–‚Ƀhƒƒbƒv‚ð•t‚¯‚Ü‚µ‚½B + –{ŽI‚ƈقȂ镨‚ð—Ž‚Æ‚·ê‡‚à‚ ‚è‚Ü‚·B + +---------- +//0258 by ŒÓ’±—– + +Eƒp[ƒeƒB‚ňê“xŒö•½‚É‚µ‚½‚çŠeŽ©Š“¾‚É–ß‚¹‚È‚¢ƒoƒOC³ + (char/) + int_party.c + mapif_parse_PartyChangeOption()‚Ì”»’èC³ + +EƒXƒLƒ‹‚̒ljÁŽÀ‘•iŽå‚ɔ͈ÍUŒ‚Œnj + ƒiƒp[ƒ€ƒr[ƒgi•ªŽU‘ΉžjAƒtƒ@ƒCƒ„[ƒ{[ƒ‹A + ƒTƒ“ƒ_[ƒXƒg[ƒ€Aƒwƒuƒ“ƒYƒhƒ‰ƒCƒuA + ƒuƒŠƒbƒcƒr[ƒgiŽ©“®‘éž‚ÝjAƒXƒ`[ƒ‹ƒNƒƒE + ƒXƒLƒ“ƒeƒ“ƒpƒŠƒ“ƒO + + (db/) + skill_db.txt/skill_tree.txt + ˆê•”C³ + (map/) + battle.c/battle.h + battle_check_target()‚ð’ljÁB‘ÎÛ‚É‚È‚é‚©‚ðŒŸ“¢‚·‚éB + battle_calc_magic_damage()‚̈ø”•ÏXBƒ_ƒ[ƒW•ªŽUˆ—’ljÁB + battle_calc_misc_damage()’ljÁB + battle_calc_weapon_damage()C³B + clif.c/clif.h + clif_skill_damage(),clif_skill_damage2()‚̈ø”•ÏXB + clif_skill_poseffect()’ljÁB + skill.c/skill.h + skill_weapon_attack(),skill_magic_attack()‚É”÷–‚Ɉ—‚ð“Z‚ß‚½. + skill_area_sub()’ljÁB”͈̓XƒLƒ‹—pB + skill_area_sub_count()’ljÁBskill_area_sub()—pA“GƒJƒEƒ“ƒgB + skill_castend_damage_id()C³Bˆø”‚ƈ—‚ð’ljÁB + skill_castend_nodamage_id()C³Bˆø”‚ƈ—‚ð’ljÁB + skill_misc_attack()’ljÁB + skill_additional_effect()C³iŽ©“®‘éj + skill_castend_pos()C³B + skill_castend_pos2()’ljÁB + +E‹|‚ÅUŒ‚‚µ‚½‚Æ‚«ŒvŽZ‚ÉDEX‚Å‚È‚STR‚ªŽg‚í‚ê‚é–â‘è‚ðC³B + battle.c + battle_calc_weapon_damage()C³B + +---------- +//0257 by ŒÓ’±—– + +Eitem_db.txt‚ÌE‹Æƒtƒ‰ƒO‚ÆAƒJ[ƒh‚Ì‘•”õŒÂŠƒtƒ‰ƒO‚ðC³ + ‘•”õ•i‚ÍI-Athena‚̃f[ƒ^‚ðŽQl‚É‚µ‚Ä‹@ŠB“I‚ɃRƒ“ƒo[ƒg‚³‚¹‚Ü‚µ‚½B + I-Athena‘¤‚É‚È‚¢‘•”õ•i‚ÍA‚ ‚«‚ç‚©‚É•Ï‚È‚Ì‚ÍC³‚µ‚Ü‚µ‚½‚ªA + ’m‚ç‚È‚¢‚à‚Ì‚ª‘½‚·‚¬‚ÄA‚Ù‚Æ‚ñ‚Ç•ú’u‚Å‚·B + ƒJ[ƒh‚ÍA•Ší—pƒJ[ƒh‚Ì‘•”õŒÂŠ‚ª0‚É‚È‚Á‚Ä‚é‚Ì‚ð2(¶Žè)‚ÉC³B + —¼Žè•Ší‚Ìꇂ͕ʂɔ»’肵‚Ä‚é‚Ì‚Å—¼Žè•Ší‚à–â‘è‚È‚¢‚Í‚¸B + + (db/) + item_db.txt/item_db2.txt + ŠY“–ŒÂŠC³ + +EƒJ[ƒh’ljÁŽÀ‘• + ƒXƒ^ƒ“‚Ȃǂ̒ljÁŒø‰ÊA‚»‚ê‚ç‚Ö‚Ì‘Ï«Œn“AƒI[ƒNƒq[ƒ[ƒJ[ƒhŽÀ‘• + + (db/) + item_db.txt/item_db2.txt + ƒXƒNƒŠƒvƒg‚ÌC³ + (map/) + map.h + struct map_session_data‚Éaddeff‚Ȃǂ̃ƒ“ƒo‚ð’ljÁ + pc.c + pc_calcstatus()Apc_bonus2()‚ÌC³ + pc_attack()‚Åskill_additional_effct()‚ðŒÄ‚Ԃ悤‚ÉB + skill.c/skill.h + skill_additional_effect()‚ŃJ[ƒh‚É‚æ‚é”»’è’ljÁ + skill_status_change_start()‚Å‘Ï«‚ð•t‚¯‚½B + battle.c + battle_calc_weapon_attack()‚ŃI[ƒNƒq[ƒ[ƒJ[ƒh + iƒNƒŠƒeƒBƒJƒ‹‘Ï«j‚̈—‚ð’ljÁ + +E‰ñ”ð”»’è‚ÌC³ + UŒ‚ŽÒ‚ªPC‚Ìê‡AÅ‘å–½’†—¦‚X‚T“§ŒÀ‚ð‚È‚µ‚É‚µ‚Ü‚µ‚½B + battle.c + battle_calc_weapon_attack()‚ðC³ + + +EŠ®‘S‰ñ”ð‚ðŽÀ‘• + ‚Ö‚ñ‚Ä‚±‚Ȉ—‚µ‚Ä‚Ü‚·•ŒvŽZŽ®“K“–‚Å‚·B + + battle.c + battle_calc_weapon_attack()‚Ɉ—’ljÁB + +E‘qŒÉ‚ðŠJ‚¢‚½‚܂܃ƒOƒAƒEƒg‚µ‚½‚Æ‚«mapŽI“à‚Å‚ÍŠJ‚«‚Á‚Ï‚È‚µ‚É‚È‚Á‚Ä‚é–â‘è‚ðC³ + storage.c + storage_storage_quitsave()‚ðC³ + +E@item,@monster,@produce‚Å–¼‘OŽw’è‚Å‚«‚é‚悤‚É•ÏX + ‰pŒê–¼A“ú–{Œê–¼‚Ç‚¿‚ç‚Å‚àOKB‰pŒê‚Ìꇂ͑啶Žš¬•¶Žš‹æ•Ê‚µ‚Ü‚¹‚ñB + + atcommand.c + ŠY“–ŒÂŠC³ + itemdb.c/itemdb.h + itemdb_searchname(),itemdb_searchname_sub()’ljÁ + mob.c/mob.h + mobdb_searchname()’ljÁ + +E@refine‚Åã‚°‚é”’l‚ðŽw’è‚Å‚«‚é‚悤‚É•ÏX + atcommand.c + ŠY“–ŒÂŠC³ + +E@produce‚É‚æ‚黑¢Žž‚̃GƒtƒFƒNƒg‚𳂵‚¢‚à‚Ì‚ÉC³ + clif.c/clif.h + clif_produceeffect()’ljÁ + atcommand.c + ŠY“–ŒÂŠC³ + +E˜I“XƒXƒLƒ‹Žg—pŽž‚̈—‚ð‚µC³ + skill.c + skill_castend_id()‚Å‚È‚Askill_castend_nodamage_id()‚Å + ˜I“XŠJÝ‚ðŒÄ‚Ԃ悤‚É‚µ‚½B + +Estricmp‚Ì•Ï‚í‚è‚Éstrcasecmp‚ðŽg‚¤‚悤‚É‚µ‚½ + i_WIN32‚©__EMX__‚ª’è‹`‚³‚ê‚Ä‚¢‚é‚Æstricmp‚ðŽg‚¢‚Ü‚·j + + (char/) + int_party.c + (map/) + itemdb.c/mob.c + ƒ}ƒNƒ’è‹`‚ÌC³‚È‚Ç + +EƒXƒLƒ‹‚ð‚µC³ + ƒOƒŠƒ€ƒgƒD[ƒX‚ªƒnƒCƒfƒBƒ“ƒO‚ÅŽg‚¦‚È‚¢–â‘èC³ + •ŠíŒ¤‹†‚Ì–½’†C³‚ðŽÀ‘• + + skill.c + skill_use_id()‚ÌC³ + pc.c + pc_calcstatus()‚Å•ŠíŒ¤‹†‚É]‚Á‚Ä–½’†C³ + +---------- +//0256 by nabe + +E˜I“XƒAƒCƒeƒ€w“ü‚̃oƒOC³ + clif.c + clif_vendinglist()‚Å”„‚è؂ꂽƒAƒCƒeƒ€‚Í•\Ž¦‚µ‚È‚¢‚悤‚É + +---------- +//0255 by nabe + +E˜I“XƒAƒCƒeƒ€w“ü‚̃oƒOC³ + vending.c + vending_purchasereq()‚Åzeny,weight•”•ªC³ + +---------- +//0254 by nabe + +E˜I“X‚ðŽÀ‘• + vending.c/vending.h + V‹K’ljÁB˜I“XƒƒCƒ“ˆ— + skill.c + skill_castend_id()‚ɘI“XŠJ݃XƒLƒ‹ˆ—‚ð’ljÁ + clif.h/clif.h + ˜I“XŠÖ˜AƒpƒPƒbƒgˆ—‚ð’ljÁ + map.h + struct map_session_data‚ÉA + int vender_id; + int vend_num; + char message[80]; + struct vending vending[12]; + ‚ð’ljÁ + +---------- +//0253 by ŒÓ’±—– + +Estricmp–¢’è‹`ƒGƒ‰[‚ª‚Å‚éŠÂ‹«—p‚ÌC³ + ƒGƒ‰[‚ªo‚½ê‡Aint_party.c‚Ìʼn‚̃}ƒNƒ’è‹`‚̃Rƒƒ“ƒg‰»‚Ì‚¤‚¿A + ‚Ç‚¿‚ç‚©‚ðŠO‚µ‚Ä‚â‚è’¼‚µ‚Ä‚Ý‚é‚ÆA‚¤‚Ü‚‚¢‚‚©‚àB + ň«A‰º‚ð—LŒø‚É‚µ‚½‚炤‚Ü‚‚¢‚‚Í‚¸Bi‘啶Žš¬•¶Žš‚ð‹æ•Ê‚·‚é‚悤‚É‚È‚è‚Ü‚·j + + (char/) + int_party.c + ƒRƒƒ“ƒg‰»Ï‚݂̃}ƒNƒ’è‹`’ljÁ + +---------- +//0252 by ŒÓ’±—– + +EƒJ[ƒh‚̈ꕔŽÀ‘• + iƒXƒe[ƒ^ƒX•Ï‰»‘S”ÊA•Ší‘®«AƒXƒLƒ‹‚Í‚·‚Å‚ÉŽÀ‘•Ï‚Ýj + –h‹ï‘®«A‰r¥ŽžŠÔ•Ï‰»A‘®«UŒ‚‘Ï«AŽí‘°‘Ï«AŽí‘°’ljÁƒ_ƒ[ƒWA + ‘®«’ljÁƒ_ƒ[ƒWAƒTƒCƒY’ljÁƒ_ƒ[ƒWAMAXHPAMAXSP‘Œ¸AŽg—pSP•Ï‰»ŒnA + ƒtƒFƒ“AƒhƒŒƒCƒNAƒzƒ‹ƒ“A[•£‚Ì‹RŽmA‰©‹àå³AƒIƒVƒŠƒXƒJ[ƒh‚ðŽÀ‘• + + (db/) + const.txt + bonus—p‚̒蔒ljÁAbonus2‚̒蔂à’ljÁ + item_db.txt/item_db2.txt + ƒJ[ƒh‚̃XƒNƒŠƒvƒg’ljÁ + (map/) + map.h + struct map_session_data‚Éhprate‚È‚Ç‘½”ƒƒ“ƒo’ljÁ + script.c + bonus2ƒRƒ}ƒ“ƒh’ljÁ + buildin_bonus2()’ljÁ + pc.c/pc.h + pc_bonus2()’ljÁ + pc_bonus()‚̈—’ljÁ + pc_calcstatus()‚ÅŠeŽí’ljÁƒƒ“ƒo‚̉Šú‰»‚ðs‚¤‚悤‚É‚µA + hprate‚âsprate‚É]‚¢max_hp,max_sp‚Ì’²®‚à‚·‚é‚悤‚É•ÏXB + pc_makesavestatus()‚ŃIƒVƒŠƒXƒJ[ƒhC³ + skill.c + skill_castfix()‚Åcastrate‚É]‚¢A‰r¥ŽžŠÔ‚ð’²®B + skill_castend_id()‚Ådsprate‚É]‚¢AŽg—pSP‚ð’²®B + skill_castend_nodamage_id()‚ŃJ[ƒhC³‚ð’ljÁ + battle.c + battle_calc_weapon_attack()‚ŃJ[ƒhC³‚ð’ljÁ + battle_calc_magic_attack()‚ŃJ[ƒhC³‚ð’ljÁ + battle_damage()‚ŃtƒFƒ“ƒJ[ƒhC³‚ð’ljÁ + +EƒXƒe[ƒ^ƒXŠ„‚èU‚è‚Ì•\Ž¦ã‚Ì–â‘èC³ + STR‚ðã‚°‚Ä‚àATK‚ª•Ï‚í‚ç‚È‚¢–â‘èAINT‚ðã‚°‚Ä‚àMATK‚ª•Ï‚í‚ç‚È‚¢–â‘èC³ + + map.h + struct map_session_data‚Ématk1,matk2ƒƒ“ƒo’ljÁ + pc.c + pc_calcstatus()‚ÌC³ + clif.c + clif_initialstatus()‚ÌC³ + battle.c + battle_calc_magic_attack()‚ÌC³ + + +---------- +//0251 by nabe + +E0250‚̃oƒOC³‚È‚Ç + ƒJ[ƒg‚ð•t‚¯‚¸‚ɃƒOƒCƒ“‚Ü‚½‚̓}ƒbƒvˆÚ“®‚µ‚½Œã‚ɃJ[ƒg‚ð•t‚¯‚é‚ÆA + ƒJ[ƒg‚Ì’†g‚ª2”{‚Ì—Ê‚É•\Ž¦‚³‚ê‚Ä‚µ‚Ü‚Á‚Ä‚¢‚½‚Ì‚ðC³B + ƒJ[ƒg‚̃AƒCƒeƒ€”‚ðXV‚·‚é‚悤‚ÉC³B + pc.h/pc.c + pc_iscarton()ƒ}ƒNƒ‚ð’ljÁ + pc_cart_additem(),pc_cart_delitem()‚É‚»‚ꂼ‚ê + sd->cart_num++;‚Æsd->cart_num--;ˆ—‚ð’ljÁ + clif.c + clif_parse_LoadEndAck()‚ÅA + ƒJ[ƒg‚ð•t‚¯‚Ä‚¢‚é‚Æ‚«‚̂݃J[ƒgî•ñ‚ð‘—M‚·‚é‚悤‚É‚µ‚½ + +---------- +//0250 by nabe + +EƒJ[ƒgOFFAƒ`ƒFƒ“ƒWƒJ[ƒgŽÀ‘•B + (map/) + pc.c/pc.h + pc_setcart()‚ð’ljÁ + script.c + buildin_setcart()‚ð’ljÁ + ƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒhusetcart;v‚ŃJ[ƒg‚ª‚‚ + clif.c/clif.h + clif_parse_CartOff()’ljÁBiƒJ[ƒg‚ð‚Í‚¸‚·j + clif_parse_ChangeCart()’ljÁBiƒ`ƒFƒ“ƒWƒJ[ƒg‚̃J[ƒg‘I‘ðj + (conf/) + npc_town_kafra.txt + ƒJ[ƒgƒT[ƒrƒX‚ðusetcart;v‚É’uŠ· + + +---------- +//0249 by ŒÓ’±—– + +Eƒp[ƒeƒB‚̃f[ƒ^ƒx[ƒX‚Ì–µ‚‚ðo—ˆ‚邾‚¯—}‚¦‚é‚悤‚ÉB + •¡”ƒp[ƒeƒB‚ÉŠ‘®‚µ‚Ä‚éƒf[ƒ^‚ÌŒŸ¸A’ljÁ‚ÉŽ¸”s‚µ‚½‚Æ‚«‚É’E‘Þ‚È‚ÇB + + (char/) + int_party.c + party_check_conflict(),party_check_conflict_sub(), + mapif_parse_PartyCheck()’ljÁ + inter.c + ƒpƒPƒbƒg’·ƒŠƒXƒg‚É0x3028’ljÁ + INTERŽIƒpƒPƒbƒg.txt + ƒpƒPƒbƒg0x3028’ljÁ + (map/) + party.c/party.h + party_check_conflict()’ljÁB + party_invite()‚Å“¯ƒAƒJƒEƒ“ƒgŠ‘®ƒ`ƒFƒbƒN‚ðs‚¤‚悤‚ÉB + party_member_added(),party_send_movemap()‚Å + party_check_conflict()‚ðŒÄ‚Ԃ悤‚ÉB + intif.c/intif.h + intif_party_checkconflict()’ljÁ + +Eƒp[ƒeƒB‚ÌÀ•WA‚g‚o’Ê’m‚ðŽÀ‘• + •Ï‰»‚ª‚ ‚ê‚΂P•b‚Ɉê‰ñ‘—MB + + map.h + struct map_session_data‚Éparty_x,~_y,~_hp‚Ì‚Rƒƒ“ƒo’ljÁ + party.c/party.h + party_send_xyhp_timer_sub(),party_send_xyhp_timer(), + party_send_xy_clear(),party_send_hp_check()’ljÁB + party_recv_movemap()‚Åsd->party_*‚ð‰Šú‰»‚·‚é‚悤‚ÉB + clif.c/clif.h + clif_send‚ÌPARTY*ƒtƒ‰ƒO‚ð—LŒø‚ÉB + iPARTY,PARTY_SAMEMAP,PARTY_AREA,PARTY*_WOS‚Ì‚UŽíj + clif_party_xy(),clif_party_hp()’ljÁB + pc.c/pc.h + pc_authok()‚Åsd->party_*‚ð‰Šú‰»‚·‚é‚悤‚ÉB + pc_walk()‚Ńp[ƒeƒBƒƒ“ƒo‚ªŽ‹ŠE“à‚É“ü‚Á‚Ä‚«‚½‚Æ‚«‚É + party_hp‚ð‰Šú‰»‚·‚é‚悤‚ÉB + +Eƒp[ƒeƒB‚ÌexpŒö•½•ª”z‚ðŽÀ‘• + party.c/party.h + party_share_exp()’ljÁ + mob.c/mob.h + mob_damage()‚ÅŒö•½•ª”zˆ—’ljÁ + +EƒXƒLƒ‹‚ÌC³‚ƒljÁŽÀ‘• + ƒoƒbƒVƒ…AƒsƒA[ƒX‚Ì–½’†—¦C³ŽÀ‘• + ƒsƒA[ƒX‚̃TƒCƒY‚É‚æ‚é‰ñ”•Ï“®ŽÀ‘•iƒvƒŒƒCƒ„[‚Í’†Œ^‚Ɖ¼’èj + ƒoƒbƒVƒ…Aƒ\ƒjƒbƒNƒuƒƒE‚̃Xƒ^ƒ“Œø‰ÊŽÀ‘• + ƒXƒg[ƒ“ƒJ[ƒXAƒtƒƒXƒgƒ_ƒCƒoAƒCƒ“ƒxƒiƒ€A + ƒAƒXƒyƒ‹ƒVƒIAƒGƒ“ƒ`ƒƒƒ“ƒgƒ|ƒCƒYƒ“AƒŒƒbƒNƒXƒfƒr[ƒiŽÀ‘• + + skill.c + skill_additional_effect()’ljÁ + skill_castend_damage_id()ŠY“–ŒÂŠC³ + skill_castend_nodamage_id()ŠY“–ŒÂŠC³ + skill_use_id(),skill_use_pos()‚ŃXƒLƒ‹‚ªŽg—p‚Å‚«‚È‚¢‚Æ‚«‚Í + ‰½‚à‚µ‚È‚¢‚悤‚ÉC³B + battle.c + battle_calc_weapon_attack()‚ÌŠY“–ŒÂŠC³ + battle_get_dmotion(),battle_get_attack_element()C³ + clif.c + clif_mob007b(),clif_mob0078‚Åoption‚È‚Ç‚ð‘—‚é‚悤‚ÉC³ + pc.c + pc_attack(),pc_walktoxy()‚Ås“®•s‰Â”\‚È‚Æ‚«‚͉½‚à‚µ‚È‚¢‚悤‚ÉB + mob.c + mob_stopattack()C³ + mob_ai_sub_hard()‚Ås“®•s”\‚È‚Æ‚«‚͉½‚à‚µ‚È‚¢‚悤‚ÉB + +EUŒ‚ŽË’ö‚Ì”»’è’ljÁ + ‘ŠŽè‚ªˆÚ“®‚µ‚Ä“Í‚©‚È‚¢‚Æ‚«‚ÍAˆÚ“®ƒpƒPƒbƒg‚ð‘—M + + clif.c/clif.h + clif_movetoattack()’ljÁ + pc.c + pc_attack()‚ÅŽË’ö”»’èA“Í‚©‚È‚¢‚È‚çclif_movetoattack()‚ðŒÄ‚ÔB + +---------- +//0248 by nabe + +Eƒp[ƒeƒB쬎ž‚ÉŠù‚Ƀp[ƒeƒB‚ÉŠ‘®‚µ‚Ä‚¢‚½ê‡‚̈—‚ð’ljÁ + party.c + party_create()‚ÉAŠù‚Ƀp[ƒeƒB‚ÉŠ‘®‚µ‚Ä‚¢‚½ê‡ + clif_party_created(sd,2)‚ð’ljÁ + +EƒfƒBƒXƒJƒEƒ“ƒgAƒI[ƒo[ƒ`ƒƒ[ƒW‚ðŒvŽZ + pc.c + pc_modifybuyvalue()Apc_modifysellvalue()‚Å’l’i‚ðŒvŽZ + + +---------- +//0247 by ŒÓ’±—– + +Eƒp[ƒeƒBŽÀ‘• + Œö•½•ª”z‚Íݒ肵‚Ä‚àŽÀÛ‚É‚ÍŒö•½•ª”z‚³‚ê‚Ä‚È‚¢B + ƒp[ƒeƒBƒXƒLƒ‹‚Í‚Ü‚¾Ž©•ª‚É‚µ‚©‚©‚©‚ç‚È‚¢ + + (char/) + int_party.c/int_party.h + ‚Ü‚Æ‚à‚ÉŽÀ‘• + inter.c + ƒpƒPƒbƒg’·ƒŠƒXƒg’ljÁ + INTERŽIƒpƒPƒbƒg.txt + ƒp[ƒeƒB‚̃pƒPƒbƒg’ljÁ + (map/) + party.c/party.h + V‹K’ljÁ + map.c/map.h + struct map_session_data‚Éparty_sendedƒƒ“ƒo’ljÁ + do_init()‚Ådo_party_init()‚ðŒÄ‚Ô + map_quit()‚Åparty_send_logout()‚ðŒÄ‚Ô + intif.c/intif.h + ƒp[ƒeƒBŠÖ˜A‚Ì•”•ª’ljÁ + clif.c/clif.h + ƒp[ƒeƒBŠÖ˜A‚Ì•”•ª’ljÁ + clif_parse_LoadEndAck()‚Åparty_send_movemap()‚ðŒÄ‚Ño‚· + pc.c + pc_authok()‚Åparty_request_info()‚ðŒÄ‚Ԃ悤‚É‚µA + party_sended‚ð‰Šú‰»‚·‚é‚悤‚ÉB + +E‰r¥–WŠQ‚³‚ꂽ‚Æ‚«‰æ–Êã‚ʼnr¥‚ð‚â‚ß‚é‚悤‚ÉC³ + (map/) + skill.c + skill_castcancel()‚ʼnr¥’†Ž~ƒpƒP(‡‚Á‚Ä‚é‚Ì‚©‚ÈH)‚ð‘—M + +E’´‰“‹——£UŒ‚‚¾‚Æ“G‚ª”½Œ‚‚µ‚Ä‚±‚È‚¢–â‘è‚ðC³ + (map/) + map.h + struct mob_data‚Émin_chaseƒƒ“ƒo’ljÁiÅ’á’ÇÕ‹——£j + mob.c + mob_attack()‚Åmin_chase‚ð13‚ɉŠú‰»‚·‚é + mob_walk()‚Åmin_chase‚ª13‚æ‚è‘å‚«‚¢‚Ȃ炵‚¸‚ˆø‚¢‚Ä‚¢‚ + mob_ai_sub_hard()‚Åmin_chase‚É‚æ‚è’ÇÕ‚ð”»’fA + UŒ‚‚ðŽó‚¯‚½Žž‚Émin_chase‚ð”މ䋗—£+13‚ÉÝ’è + +---------- +//0246 by ŒÓ’±—– + +EƒJ[ƒgŽÀ‘• + map.h + struct map_session_data‚Écart_weight‚È‚Ç‚S‚ƒƒ“ƒo’ljÁ + pc.c/pc.h + pc_cart_additem(),pc_cart_delitem(), + pc_cart_putitemtocart(),pc_cart_getitemfromcart()’ljÁ + pc_calcstatus()‚ŃJ[ƒgd—Ê‚âŒÂ”‚È‚Ç‚Ìî•ñ‚ðŒvŽZ + clif.c/clif.h + clif_cart_itemlist(),clif_cart_equiplist(), + clif_cart_additem(),clif_cart_delitem(), + clif_parse_PutItemToCart(),clif_parse_GetItemFromCart()’ljÁ + clif_parse_LoadEndAck()‚ŃJ[ƒgî•ñA“à—e‘—M + clif_updatestatus()‚ÅSP_CARTINFO‚ŃJ[ƒgî•ñ‚ð‘—‚ê‚é‚悤‚É + clif_parse_MoveFromKafraToCart(),~ToKafraFromCart()’ljÁ + storage.c/storage.h + storage_additem(),storage_delitem()’ljÁ + storage_storageadditemfromcart,~getitemtocart()’ljÁ + storage_storageadd(),storage_storageget()‚ÅA + storage_additem(),storage_delitem()‚ðŒÄ‚Ԃ悤‚É•ÏX + +EƒXƒLƒ‹‰r¥ƒfƒBƒŒƒC‚È‚ÇŽÀ‘• + clif.c + clif_parse_WalkToXY()‚Éskilltimer‚É‚æ‚éˆÚ“®‰Â”Û‚ð’ljÁ + clif_parse_UseSkillToId(),clif_parse_UseSkillToPos()‚É + canmove_tick‚É‚æ‚éUŒ‚‰Â”ےljÁ + skill.c/skill.h + skill_castcancel()‚ð’ljÁ + skill_use_id(),skill_use_pos()‚ŃfƒBƒŒƒCŽžŠÔŒvŽZ‚¨‚æ‚ÑA + canmove_tick‚ÌÝ’è + battle.c + battle_damage()‚Åskill_castcancel()‚̌ĂÑo‚µ’ljÁ + +E0245‚̃AƒCƒeƒ€ƒf[ƒ^ƒx[ƒXC³‚Ì’Ê퉿Ši”Å—pˆÓ + (db/) + item_db.txt + item_db2.txt‚É‘O‚Ìitem_db.txt‚̉¿Šiî•ñ‚ðƒ}[ƒW‚µ‚½‚¾‚¯‚Å‚·B + +---------- +//0245 by ‚ê‚ + ‚Ü‚½—á‚É‚æ‚Á‚ÄA‘ŠêC³”Å‚Ì‚Ý‚Å‚·B +Eitem_db2.txt‚ÌC³ + ‹T“‡V‘•”õ‚ÌŒø‰Ê‚ðŽÀ‘•‚µ‚Ü‚µ‚½B + ƒEƒBƒU[ƒh‚ªñ‚ð‘•”õ‚Å‚«‚È‚¢‚Ì‚ðC³ + ƒEƒBƒU[ƒh‚ªƒ}ƒWƒVƒƒƒ“ƒnƒbƒgA‚Æ‚ñ‚ª‚è–X‚ð + ‘•”õ‚Å‚«‚È‚¢‚Ì‚ðC³ +---------- +//0244 by ‚ê‚ +Emob_db.txt‚ÌC³ + ‹T“‡ƒ‚ƒ“ƒXƒ^[‚̃f[ƒ^‚ð‚¢‚ê‚Ü‚µ‚½B + ‚½‚¾AŠÔˆá‚Á‚Ä‚é•”•ª‚ª‚©‚È‚è‚ ‚è‚Ü‚·B + Speed,Delay‚Í“K“–‚Å‚·B + ‚Ü‚½A‚í‚©‚ç‚È‚¢‚Ì‚ÍŠØ‘”ł̃f[ƒ^‚È‚Ì‚Å + Mdef‚Æ‚©ˆÙí‚É‚‚¢‹C‚àB +---------- +//0242 by ŒÓ’±—– + +EŽæˆøŠÖ˜A‚Ì•ÏX‚ÆC³ + Žæˆø‚ÉŽg‚¤•Ï”‚ðmmo_charstatus‚©‚çmap_session_data‚Ɉړ®‚µ‚Ü‚µ‚½ + + (common/) + mmo.h + struct mmo_charstatus‚©‚çŽæˆøŠÖŒW‚̃ƒ“ƒoíœ + (map/) + map.h + struct map_session_data‚ÉŽæˆøŠÖŒW‚̃ƒ“ƒo’ljÁ + trade.c + \‘¢‘Ì‚Ì•ÏX‚É‚ ‚킹‚ÄC³ + map.c + map_quit()‚ÅŽæˆø’†‚È‚çƒLƒƒƒ“ƒZƒ‹‚·‚é‚悤‚É‚µ‚½ + +EƒJ[ƒh‚Ì‘g‚݇‚킹ŽÀ‘• + pc.c/pc.h + pc_insert_card()‚ŃJ[ƒh‚ðŽÀÛ‚É‘}“ü‚·‚é + clif.c/clif.h + clif_parse_UseCard(),clif_parse_InsertCard()’ljÁ + clif_use_card(),clif_insert_card()’ljÁ + +Eˆê•”‚̃J[ƒhŒø‰ÊŽÀ‘• + ƒXƒLƒ‹K“¾ƒJ[ƒhAƒXƒe[ƒ^ƒXƒ{[ƒiƒXƒJ[ƒh‚È‚ÇB + + (map/) + map.h + struct map_session_data‚É‘•”õƒJ[ƒhŒŸõ—p‚Ì•Ï”’ljÁ + pc.c/pc.h + pc_calcstatus()‚ŃJ[ƒh‚̈—’ljÁ + ‚ ‚éID‚̃J[ƒh‚ª‘•”õÏ‚Ý‚©ŒŸõ‚·‚邽‚ß‚ÌŠÖ”A + pc_equip_card(),pc_equip_wcard(),pc_equip_dcard()‚ð—pˆÓ + +Ed—ʃI[ƒo[/‘é/‹RæƒAƒCƒRƒ“‚Ì•\Ž¦ + (map/) + pc.c/pc.h + pc_checkweighticon()’ljÁAd—ʂ̃AƒCƒRƒ“ˆ— + clif.c + clif_updatestatus()‚Åd—Ê‘—MŽž‚Épc_checkweighticon()‚ÌŽÀs + clif_changeoption()‚Å‘é‚Æ‹Ræ‚̃AƒCƒRƒ“ˆ— + +E0241‚̃AƒCƒeƒ€ƒf[ƒ^ƒx[ƒXC³‚Ì’Ê퉿Ši”Å—pˆÓ + (db/) + item_db.txt + item_db2.txt‚É‘O‚Ìitem_db.txt‚̉¿Šiî•ñ‚ðƒ}[ƒW‚µ‚½‚¾‚¯‚Å‚·B + + +---------- +//0241 by ‚ê‚ +EƒAƒCƒeƒ€ƒf[ƒ^ƒx[ƒX‚ÌC³ + V“ª‘•”õ‚̃Oƒ‰ƒtƒBƒbƒN‚ªˆÙ‚È‚é‚Ì‚ðC³ + ‘•”õ‚ÌŒø‰Ê‚ÌŽÀ‘• + ã’iE’†’i‚ªŠÔˆá‚Á‚Ä‚½‚Ì‚ð‚µC³ + ‘¬•ñ”Å‚Á‚Ä‚±‚ƂŊԈႦ‘½‚¢‚©‚àB + ƒeƒXƒg‚à‚ ‚܂肵‚Ä‚Ü‚¹‚ñB + ‚ ‚ÆA‘Šê’²®”Å‚µ‚©—pˆÓ‚µ‚Ä‚Ü‚¹‚ñB + + item_db2.txt + ‹T“‡‚É‚ ‚킹‚Ä’²® + +---------- +//0240 by nabe + +EŽæˆø‚ðŽÀ‘•‚µ‚Ü‚µ‚½B + (common/) + mmo.h + struct mmo_charstatus ‚É + int trade_partner; + int deal_item_index[10]; + int deal_item_amount[10]; + int deal_zeny; + short deal_locked; + ‚ð’ljÁ + (map/) + clif.c,clif.h + clif_traderequest() : 0xe5iŽæ‚èˆø‚«—v¿Žó‚¯j + clif_tradestart() : 0xe7iŽæ‚èˆø‚«—v‹‰ž“šj + clif_tradeadditem() : 0xe9i‘ŠŽè•û‚©‚ç‚̃AƒCƒeƒ€’ljÁj + clif_tradeitemok() : 0xeaiƒAƒCƒeƒ€’ljÁ¬Œ÷j + clif_tradedeal_lock() : 0xeciok‰Ÿ‚µj + clif_tradecancelled() : 0xeeiŽæ‚èˆø‚«ƒLƒƒƒ“ƒZƒ‹j + clif_tradecompleted() : 0xf0iŽæ‚èˆø‚«Š®—¹j + ‚ð’ljÁB + trade.c,trade.h + trade_traderequest() : Žæˆø—v¿‚ð‘ŠŽè‚É‘—‚é + trade_tradeack() : Žæˆø—v¿ + trade_tradeadditem() : ƒAƒCƒeƒ€’ljÁ + trade_tradeok() : ƒAƒCƒeƒ€’ljÁŠ®—¹(ok‰Ÿ‚µ) + trade_tradecancel() : ŽæˆøƒLƒƒƒ“ƒZƒ‹ + trade_tradecommit() : Žæˆø‹–‘ø(trade‰Ÿ‚µ) + ‚ðŽÀ‘•B‚»‚ꂼ‚êclif.c::clif_parse_Trade*‚©‚çŒÄ‚΂ê‚éB + + +---------- +//0238 by ‚ê‚ + +E‘¬“x•ÏX‚ÉŠÖ‚µ‚Ä‚µC³ + atcommand.c + ‘¬“x•ÏX‚Ì•”•ª‚ð‚µC³ + ‚±‚ê‚ňꉞ“®‚‚Ý‚½‚¢H + pc.c + ‚‚¢‚Å‚É‚Å‚·‚ª + ‘¬“x㸂ŕàs‘¬“x‚ªã‚ª‚é‚悤‚É‚µ‚½B + ˆê‰ž“®‚‚Ý‚½‚¢‚Å‚·‚ª“K“–‚È‚Ì‚Å + ‚¨‚©‚µ‚È‚Æ‚±‚낪‚ ‚ê‚΂¨Šè‚¢‚µ‚Ü‚·B + +---------- +//0236 by nabe + +EƒXƒNƒŠƒvƒg‚Åmenu‚Å”ò‚ñ‚¾æ‚Å’¼‚®menu‚𑂂ƌ듮삷‚éƒoƒO‚ðC³‚µ‚Ü‚µ‚½B + script.c + goto“®ì‚ÌŒã‚ÌRERUNLINE‚ɑΈ‚·‚邽‚ßA + goto,menu‚Å”ò‚ñ‚¾Œã‚É‚ÍAst.state==GOTO‚Årerun_pos‚ðXVB + + +---------- +//0233 by nabe + +EƒAƒCƒeƒ€‚ð‘•”õ‚·‚éÛ‚Ì‘•”õ”»’è‚ð’ljÁ‚µ‚Ü‚µ‚½B + pc.c + pc_equipitem()‚É‘•”õ”»’èi«•Ê”»’èA‘•”õLV”»’èAE‹Æ”»’èj’ljÁ + +Ed—Ê”»’èƒXƒNƒŠƒvƒgƒRƒ}ƒ“ƒh‚ð’ljÁ‚µ‚Ü‚µ‚½B + if (checkweight(ƒAƒCƒeƒ€ID,ƒAƒCƒeƒ€”—Ê)) + ‚Å‚»‚̃AƒCƒeƒ€~”—Ê‚ðŽæ“¾‚Å‚«‚é‚©‚Ç‚¤‚©”»’è‚Å‚«‚Ü‚·B + script.c + buildin_checkweight()‚ð’ljÁ + +EƒXƒNƒŠƒvƒg‹l‚߇‚킹‚ðathena dev-2.1.1—p‚ɈÚA‚µ‚Ü‚µ‚½B + map_athena1.cnf + npc_event_*.txt ƒCƒxƒ“ƒgNPC + npc_job_*.txt “]ENPC + npc_mob_job.txt “]E—pƒ‚ƒ“ƒXƒ^[ + npc_town_*.txt ’¬NPC + + +---------- +//0232 by ŒÓ’±—– + +E‘•”õƒ{[ƒiƒX‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + ƒ{[ƒiƒX‚ÉŽg‚¤ƒXƒNƒŠƒvƒg(bonus,skill)‚ðŽÀ‘• + ƒXƒNƒŠƒvƒg‚ÍI-Athena‚̃f[ƒ^‚ðŽg‚Á‚ăRƒ“ƒo[ƒg‚µ‚Ü‚µ‚½B + i‚Ü‚¾ƒJ[ƒh‚ɂ͑Ήž‚µ‚Ä‚¢‚Ü‚¹‚ñj + + (common/) + mmo.h + struct skill‚Éflagƒƒ“ƒo’ljÁiƒJ[ƒhƒXƒLƒ‹‚©‚Ç‚¤‚©j + (map/) + map.h + struct map_session_data‚Éatk_ele‚Ȃǂ̃ƒ“ƒo’ljÁ + enum‚ÅSP_ATKELEMENT‚ȂǒljÁ + pc.c + pc_bonus()‚ÌŽÀ‘•Apc_skill()’ljÁ + script.c + buildin_skill()‚̒ljÁ + buildin_bonus()‚ÌC³(const.txt‚̒蔂ªŽg‚¦‚é‚悤‚É) + clif.c + clif_skillinfoblock()‚ÌC³(ƒJ[ƒhƒXƒLƒ‹‚Íã‚°‚ç‚ê‚È‚¢) + (db/) + const.txt + bonus‚ÉŽg‚¤‚½‚߂̒蔒ljÁ + item_db.txt + •W€‚̃f[ƒ^‚É‘•”õƒXƒNƒŠƒvƒg‚ð’ljÁ‚µ‚½‚à‚Ì + item_db2.txt + 0213‚Å‘Šê’²®‚³‚ꂽƒf[ƒ^‚É‘•”õƒXƒNƒŠƒvƒg‚ð’ljÁ‚µ‚½‚à‚Ì + +E‰r¥ŠÖŒW‚̃oƒO‚ªC³‚³‚ê‚Ü‚µ‚½ + (map/) + skill.c + skill_use_id(),skill_use_pos()‚ðC³ + (db/) + cast_db.txt + ‚µ’ljÁiƒuƒŠƒbƒcƒr[ƒg‚È‚Çj + +EUŒ‚‘®«‚ª“K—p‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½ +E¯‚Ì‚©‚¯‚ç‚ÌC³‚ª“K—p‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + map.h + struct map_session_data‚Éstarƒƒ“ƒo’ljÁ + pc.c + pc_calcstatus()‚Å‘®«‰Šú‰» + battle.c + battle_get_element(),battle_get_attack_element()C³ + battle_calc_weapon_damage()‚ÌŠY“–ŒÂŠC³ + +Eñ‘•”õŽž‚ÉMATK+15%‚ª“K—p‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + battle.c + battle_calc_magic_damage()‚ÌŠY“–ŒÂŠC³ + +E»‘¢•Ší‚̃Lƒƒƒ‰ƒNƒ^[–¼‚ª³‚µ‚•\Ž¦‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + + Œ´—‚Æ‚µ‚Ä‚ÍAmapŽI“à‚̃Lƒƒƒ‰ƒNƒ^–¼ƒf[ƒ^ƒx[ƒX‚ðŒŸõ‚µ‚ÄA + ‘¶Ý‚·‚ê‚Α¦•ÔMA‘¶Ý‚µ‚È‚¯‚ê‚ÎcharŽI‚É‰ðŒˆ—v‹‚ðo‚·B + ‚±‚Ì‚Æ‚«A–¼‘O‚ð—v‹‚µ‚Ä‚«‚½ƒNƒ‰ƒCƒAƒ“ƒg‚ÌID‚ðƒf[ƒ^ƒx[ƒX‚É“o˜^‚·‚éB + charŽI‚©‚ç–¼‘Oƒf[ƒ^‚ª‚‚é‚ÆA‘Ήž‚·‚éƒf[ƒ^ƒx[ƒX‚É–¼‘O‚ðƒZƒbƒg‚µA + —v‹‚µ‚Ä‚«‚½ƒNƒ‰ƒCƒAƒ“ƒg‚É–¼‘O‚ð•ÔM‚·‚éB + –¢‰ðŒˆ‚Ì“¯‚¶ƒLƒƒƒ‰ID‰ðŒˆ‚ð•¡”‚̃Nƒ‰ƒCƒAƒ“ƒg‚ª—v‹‚µ‚Ä‚«‚½ê‡A + ÅŒã‚É—v‹‚µ‚Ä‚«‚½ƒNƒ‰ƒCƒAƒ“ƒg‚É‚µ‚©•ÔM‚µ‚È‚¢‚ªA + •ÔM‚³‚ê‚È‚©‚Á‚½ƒNƒ‰ƒCƒAƒ“ƒg‚Í”•bŒã‚ÉÄ‚Ñ‰ðŒˆ—v‹‚ð‘—‚Á‚Ä‚‚é + i‚»‚µ‚Ä‚»‚Ì‚Æ‚«‚ÍmapŽI‚©‚瑦•ÔM‚³‚ê‚éj‚Ì‚Å‘å‚«‚È–â‘è‚Í‚È‚¢B + + ƒpƒPƒbƒg0x2b08,0x2b09‚ÅmapŽI‚ÆcharŽI‚ª’ÊM‚µ‚Ä‚Ü‚·B + + (char/) + char.h + UNKNOWN_CHAR_NAME’è‹`iƒLƒƒƒ‰ƒf[ƒ^‚ª–³‚¢‚Æ‚«‚É•Ô‚³‚ê‚é–¼‘Oj + char2.c + parse_frommap()‚ɃpƒPƒbƒg0x2b08‚̈—‚ð’ljÁ + + (map/) + chrif.c/chif.h + chrif_searchcharid()’ljÁ + chrif_parse()‚Å0x2b09‚̈—’ljÁ + map.c + ƒf[ƒ^ƒx[ƒX charid_db 錾 + struct charid2nick錾Bnick‚Í–¼‘OA + req_id‚Í0‚Å–¼‘O‰ðŒˆÏ‚ÝA0ˆÈŠO‚Å–¢‰ðŒˆ‚Å‰ðŒˆ‘Ò‚¿‚̃uƒƒbƒNID + map_addchariddb()’ljÁBƒf[ƒ^ƒx[ƒX‚Ö–¼‘O“o˜^A—v‹‚É•ÔMB + map_reqchariddb()’ljÁB—v‹‚ª‚ ‚Á‚½‚±‚Æ‚ðƒf[ƒ^ƒx[ƒX‚֒ljÁB + map_charid2nick()‚Ńf[ƒ^ƒx[ƒX‚ÌŒŸõ + do_init()‚Å charid_db ‚̉Šú‰»‚ð’ljÁ + clif.c/clif.h + clif_parse_SolveCharName(),clif_solved_charname()’ljÁ + + +---------- +//0231 by nabe + +EƒXƒNƒŠƒvƒg‚Å mes "$charaname"; “™‚Æ‘‚‚ƃLƒƒƒ‰‚Ì–¼‘O‚ð‚µ‚á‚ׂé‹@”\‚ð’ljÁB + script.c + buildin_mes()“à‚Å + mes“à•”‚Ì$charaname‚ðƒLƒƒƒ‰‚Ì–¼‘O‚É’uŠ·‚·‚鈗‚ð’ljÁB + ”“¯—l‚É‚µ‚Ä•Ï”‚Ì’l‚È‚Ç‚ðmes“à•”‚Å•\Ž¦‚·‚é‚悤‚É‚·‚邱‚Æ‚à + ”‚Å‚«‚Ü‚·‚ªA‚±‚ê‚ɂ‚¢‚Ä‚Í–¢ŽÀ‘•‚Å‚·EEEB + ”‚Æ‚è‚ ‚¦‚¸ + ” mes Global_Val; + ”‚̂悤‚É’¼Ú‘‚‚±‚ƂőΈ‚µ‚Ä‚‚¾‚³‚¢B + +E“G‚ÉUŒ‚‚³‚ꂽ‚Æ‚«‚ÉmapŽI‚ª—Ž‚¿‚邱‚Æ‚ª‚ ‚é‚Ì‚ðC³B + battle.c + battle_calc_weapon_attack()‚Ì + ƒfƒBƒoƒCƒ“ƒvƒƒeƒNƒVƒ‡ƒ“‚̃XƒLƒ‹ƒ`ƒFƒbƒN•”•ªA + pc_checkskill(sd,22)‚ðA + pc_checkskill(tsd,22)‚ÉB + +---------- +//0230 by nabe + +E‰ñ”𗦑‰ÁƒXƒLƒ‹‚ðƒXƒe[ƒ^ƒX‚É”½‰fB + pc.c + 0228‚Å‚Ìpc_calcstatus()‚̉ñ”𗦑‰Á•ª‚ðŒ³‚É–ß‚µflee‚ð‘‰ÁB + battle.c + battle_calc_weapon_attack()‚ÌhitrateŒvŽZ‚ʼnñ”𗦕ÛØ‚ðŒvŽZB +EƒOƒ[ƒoƒ‹•Ï”‚ðŽÀ‘•B +@ '@'‚à‚µ‚‚Í'l'‚ÅŽn‚Ü‚ç‚È‚¢•Ï”–¼‚ÍA‘S‚ăOƒ[ƒoƒ‹•Ï”‚Æ‚Ý‚È‚³‚ê‚Ü‚·B + mmo.h + struct mmo_charstatus ‚É + int global_reg_num; + struct global_reg global_reg[GLOBAL_REG_NUM]; + ‚ð’ljÁB + pc.c + pc_readglobalreg(),pc_setglobalreg()‚ð’ljÁB + script.c + get_val(),buildin_input(),buildin_set()‚É + ƒOƒ[ƒoƒ‹•Ï”‚Ì‚½‚߂̈—‚ð’ljÁB + char2.c + mmo_char_tostr(),mmo_char_fromstr()‚É + ƒOƒ[ƒoƒ‹•Ï”‚Ì‚½‚߂̈—‚ð’ljÁB + +---------- +//0229 by ŒÓ’±—– + +Eˆê•”ƒXƒLƒ‹‚ÌŽÀ‘•/C³ + ƒfƒBƒoƒCƒ“ƒvƒƒeƒNƒVƒ‡ƒ“Aƒf[ƒ‚ƒ“ƒxƒCƒ“Aƒr[ƒXƒgƒxƒCƒ“ŽÀ‘• + ƒGƒiƒW[ƒR[ƒgC³i–‚–@‚É‚æ‚éUŒ‚‚ɂ̓XƒLƒ‹‚ª“‚©‚È‚¢‚悤‚ÉC³j + •ŠíUŒ‚ŒnƒXƒLƒ‹C³iƒGƒtƒFƒNƒg‚ð’ÊíUŒ‚‚©‚çƒXƒLƒ‹‚É•ÏXj + + battle.c + battle_addmastery()‚ŃxƒCƒ“Œn’ljÁ + battle_calc_damage()‚ŃGƒiƒW[ƒR[ƒgC³ + skill.c + skill_castend_damage_id()‚Ì•ŠíUŒ‚ŒnƒXƒLƒ‹‚Ì•”•ª‚ðC³ + +E“GUŒ‚ŒvŽZ‚ðPC‚Ì‚à‚̂ƈê–{‰» + ‚±‚ê‚ÅPCvsPCAPCvsMOBAMOBvsPCAMOBvsMOB(!?)‚ð‚P‚‚̊֔‚ÅŒvŽZ‚Å‚«‚Ü‚· + + battle.c/battle.h + battle_calc_weapon_attack()‚ðC³ + battle_calc_weapon_attack_pc(),~mob()‚ðíœ + mob.c + mob_attack()‚ÅŒvŽZ‚Ébattle_calc_weapon_attack()‚ðŽg‚¤‚悤‚ÉC³ + +E‰r¥ŽžŠÔƒf[ƒ^‚ª‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg‚̉r¥ŽžŠÔ‚ð‚O‚É•ÏX + ¡‚Ü‚Å‚Í‚P•b‚É‚µ‚Ä‚Ü‚µ‚½‚ªAƒoƒbƒVƒ…‚Æ‚©‚ª‚¨‚©‚µ‚‚È‚é‚Ì‚ÅB + iƒoƒbƒVƒ…‚Æ‚©‚̃f[ƒ^‚ð—pˆÓ‚·‚ê‚΂±‚¤‚µ‚È‚‚Ä‚à’¼‚é‚ñ‚Å‚·‚ªj + + pc.c + pc_readdb()‚Å1000ms‚ðƒZƒbƒg‚·‚é‚Ì‚ðŽ~‚ß‚½ + +E‰“‹——£UŒ‚‚µ‚Ä‚±‚È‚¢ƒoƒOA‚»‚Ì‘¼‚ðC³ + mob.c + mob_attack()‚ÌŽË’ö‚ðC³‚µ–Y‚ê‚Ä‚¢‚½ + mob_ai_sub_hard()‚ÅŽË’ö‹——£ŠO‚ÌŽžA–³ˆÚ“®‚Ì“G‚Í + ƒ^[ƒQƒbƒg‚ðŠO‚·‚悤‚É‚µ‚½ + + +---------- +//0228 by nabe + +Eƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ÌSkillID‚ðC³B + battle.c + battle_calc_weapon_attack_pc()‚Å + pc_checkskill(sd,49) -> pc_checkskill(sd,48)‚ÉB +E‰ñ”𗦌üã‚ð—z‚É•\‚³‚È‚¢ + pc.c + pc_calcstatus()‚Å‚Ìflee‚̉ñ”𗦌ü㕪‚ð휂µA + mob.c + mob_attack()‚ÌhitrateŒvŽZ‚ʼnñ”𗦌üã‚ðŒvŽZB +E“å³A“峎“A“å³—Y‚ð³í‰»B + npc_monster3J.txt + mob_db.txt‚ɇ‚킹‚ÄA‚½‚Ô‚ñ³‚µ‚¢‚ÆŽv‚í‚ê‚éID‚ÉC³B + “å³ 1006 -> 1051 + “峎“ 1017 -> 1053 + “å³—Y 1021 -> 1054 +EƒfƒoƒbƒOƒƒbƒZ[ƒW‚ÌÁ‚µ–Y‚êiHj‚ðíœB + pc.c + printf("pc.c 63 clif_clearchar_area\n");‚ðƒRƒƒ“ƒgƒAƒEƒg + +---------- +//0227 by ŒÓ’±—– + +Eˆê•”‚̃XƒLƒ‹Œø‰Ê‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + HP‰ñ•œŒüãASP‰ñ•œŒüãAƒ}ƒOƒjƒtƒBƒJ[ƒgA + ƒnƒCƒfƒBƒ“ƒOAƒNƒ[ƒLƒ“ƒOAŽ€‚ñ‚¾‚Ó‚èA‰ž‹}Žè“– + + map.h + struct map_session_data ‚É inchealtick ƒƒ“ƒo’ljÁ + pc.c + pc_spheal()‚Ń}ƒOƒjƒtƒBƒJ[ƒgˆ—’ljÁ + pc_natual_heal_sub()‚ʼnñ•œŒüãƒXƒLƒ‹ˆ—’ljÁ + pc_authok()‚Åinchealtick‚ð‰Šú‰»‚·‚é‚悤‚É•ÏX + pc_walk()‚Åincheaktick‚ðÄÝ’è‚·‚é‚悤‚É•ÏX + pc_walk()‚ŃNƒ[ƒLƒ“ƒO‚ÌI—¹ðŒ‚𒲸‚·‚é‚悤‚É•ÏX + pc_walktoxy()‚Åó‘Ô‚É‚æ‚Á‚Ĉړ®•s‰Â”\‚É‚µ‚½ + skill.c/skill.h + skill_status_change_start(),~timer(),~end()‚Ɉ—’ljÁ + skill_check_cloaking()’ljÁAƒNƒ[ƒLƒ“ƒO‚ÌI—¹ðŒ‚ðŒŸ¸ + battle.c/battle.h + battle_stopattack()’ljÁ + battle_calc_weapon_attack()‚ÅUŒ‚‚ðŽ~‚߂鈗’ljÁ + mob.c + mob_ai_sub_hard()‚ÅUŒ‚‚ðŽ~‚߂鈗’ljÁ + +E’ÊíUŒ‚ˆ—A‘ÎMOBA‘ÎPC‚ð‹¤—p‚ÉB + pc.c + pc_attack_mob(),pc_attack_pc()íœ + pc_attack()‚ÉUŒ‚ˆ—’ljÁ + +Eƒ‚ƒ“ƒXƒ^[‚Ìs“®‚̈ꕔŽÀ‘• + ƒAƒNƒeƒBƒ”A–³”½‰žAˆÚ“®‚µ‚È‚¢A‰“‹——£UŒ‚ˆê•” + + mob.c + mob_ai_sub_hard()‚És“®’ljÁ + mob_ai_sub_hard_activesearch()’ljÁA‹ß‚‚ÌPC‚Ö‚Ìô“G + +EƒI[ƒo[ƒgƒ‰ƒXƒg‚Ì‘‰Á”{—¦‚ª100”{‚É‚È‚Á‚Ä‚¢‚éƒoƒO‚ªC³‚³‚ê‚Ü‚µ‚½ + battle.c + battle_calc_weapon_attack()‚ÅAŠY“–ŒÂŠ‚ðC³ + + +---------- +//0226 by ŒÓ’±—– + +‚â‚Á‚Ï‚èƒeƒXƒg‚Í‚ ‚ñ‚܂肵‚Ä‚¢‚Ü‚¹‚ñ + +Eˆê•”‚̃XƒLƒ‹Œø‰Ê‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + ‘¬“x‘‰ÁAƒGƒ“ƒWƒFƒ‰ƒXAƒLƒ…ƒA[ + ƒCƒ“ƒ|ƒVƒeƒBƒIƒ}ƒkƒXAƒTƒtƒ‰ƒMƒEƒ€AƒŠƒJƒoƒŠ[AƒOƒƒŠƒA + ‚Ó‚‚낤‚Ì–ÚAƒƒV‚Ì–ÚAW’†—ÍŒüãA‰ñ”𗦌üãA‰ð“Å + ŠŽ—Ê‘‰ÁAƒ‰ƒEƒhƒ{ƒCƒXAƒAƒhƒŒƒiƒŠƒ“ƒ‰ƒbƒVƒ…AƒI[ƒo[ƒgƒ‰ƒXƒg + ƒEƒFƒ|ƒ“ƒp[ƒtƒFƒNƒVƒ‡ƒ“Aƒ}ƒLƒVƒ}ƒCƒYƒpƒ[A‚Q‚g‚p + + (map/) + map.h + struct map_session_data‚Éwatk2,def2‚ȂǒljÁ + pc.c + pc_calcstatus()‚ɃXƒLƒ‹C³’ljÁ + atk2‚È‚Ç‚à‘—M‚·‚é‚悤‚É•ÏX + battle.c/battle.h + battle_get_def2()‚È‚Ç‘½”’ljÁ + battle_calc_weapon_damage()‚Å“GŒ¸ŽZ–hŒä‚ÌŠ“¾‚ð + battle_get_def2()‚É•ÏX + battle_calc_magic_damage()‚Å“GŒ¸ŽZ–‚–@–hŒä‚ÌŠ“¾‚ð + battle_get_mdef2()‚É•ÏX + battle_calc_weapon_damage()‚ŃXƒLƒ‹C³‚ð’ljÁ + skill.c/skill.h + skill_use_nodamage_id()‚ÌŠY“–ŒÂŠ’ljÁ + skill_status_change_start()‚ÌŠY“–ŒÂŠ’ljÁ + clif.c + clif_updatestatus()‚Ìatk2‚Ȃǂ̈—’ljÁ + clif_initialstatus()‚Åatk2‚Ȃǂ̈µ‚¢•ÏXAaspd‚È‚Ç‘—M’ljÁ + +E¸˜Bƒ_ƒ[ƒWC³/¸˜B–hŒäC³‚ª“K—p‚³‚ê‚Ü‚µ‚½ + (map/) + pc.c + pc_calcstatus()‚Åwatk2‚Ædef‚̒ljÁŒvŽZ’ljÁ + battle.c + battle_calc_weapon_damage()‚Åwatk2‚ðƒ_ƒ[ƒW‚ɒljÁ + +EinterŽI‚̃pƒPƒbƒg‰ðÍ•”‚Ì’v–½“I‚È–â‘肪C³‚³‚ê‚Ü‚µ‚½ + TCP/IPƒvƒƒOƒ‰ƒ€‚Å‚â‚Á‚Ä‚Í‚¢‚¯‚È‚¢‚±‚Æ‚ð‚»‚Ì‚Ü‚Ü‚â‚Á‚Ä‚Ü‚µ‚½(Š¾ + interŽI‚̃pƒPƒbƒg’·ƒf[ƒ^‚ðinter.c‚ÉŽ‚‚悤‚ÉC³‚³‚ê‚Ü‚µ‚½B + + (char/) + inter.c/inter.h + ƒpƒPƒbƒg’·ƒf[ƒ^ inter_*_packet_length[] ‚ð’ljÁ + ƒpƒPƒbƒg’·ƒ`ƒFƒbƒN inter_check_length() ‚ð’ljÁ + mapif_parse_*()‚ÅRFIFOSKIP‚ð‚È‚µ‚É•ÏX + int_storage.c/int_storage.h + mapif_parse_*()‚ÅRFIFOSKIP‚ð‚È‚µ‚É•ÏX + int_party.c/int_guild.c + Žd—l•ÏX‚ɑΉž‚³‚¹‚½•ÏX + INTERŽIƒpƒPƒbƒg.txt + ƒpƒPƒbƒg’·ƒŠƒXƒg’ljÁ + +E‚¿‚å‚Á‚Æ‚µ‚½C³ + (char/) + inter.h + inter_cfgName‚ð"conf/inter_athena.cnf"‚ÉC³ + char2.c + char.exe‘æ‚Qˆø”È—ªŽžAinter_cfgName‚ðŽg‚¤‚悤‚ÉC³ + (db/) + cast_db.txt + ƒz[ƒŠ[ƒ‰ƒCƒg‚̉r¥ŽžŠÔ’ljÁiƒfƒBƒŒƒC‚Í“K“–j + Ú‚µ‚¢l’ljÁ‹‚Þ + +---------- +//0225 by ŒÓ’±—– + +‚È‚ñ‚©‚©‚È‚è˜M‚è‚Ü‚µ‚½‚ª‘Š•Ï‚í‚炸ƒeƒXƒg‚Í‚ ‚ñ‚܂肵‚Ä‚Ü‚¹‚ñB + +EƒXƒLƒ‹Žg—pŽž‚Ì•Ï”‚ð•ÏX + ‚æ‚Œ©‚½‚çʼn‚©‚ç—pˆÓ‚³‚ê‚Ä‚Ü‚µ‚½‚ËB + + map.h + struct map_session_data‚Ìcast_*‚ðíœ + skill.c + cast_*‚Ì•Ï”‚ðskill*‚É•ÏXB + +EƒXƒe[ƒ^ƒXˆÙíƒXƒLƒ‹‚̈—‚ð’ljÁiŒø‰Ê‚Í–¢ŽÀ‘•j + Œ©‚©‚¯ãAƒXƒe[ƒ^ƒXˆÙí‚ÉŠ|‚©‚Á‚½‚è‚Æ‚©‚¾‚¯B + Œø‰Ê‚Í‚Ü‚¾‚È‚µB + + skill.c/skill.h + skill_status_change_start(),~end(),~timer(),~clear()’ljÁB + ‚»‚ꂼ‚êƒXƒe[ƒ^ƒXˆÙí‚ÌŠJŽnAI—¹Aƒ^ƒCƒ}ˆ—A‘SÁ‹ŽB + map.c/map.h + map_quit()‚Åskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚É‚µ‚½B + struct map_session_data‚Ésc_data,sc_count’ljÁB + struct mob_data‚Ésc_data,sc_count,option,opt1,opt2’ljÁB + pc.c + pc_authok()‚Åsc_data,sc_count‚ð‰Šú‰»‚·‚é‚悤‚É‚µ‚½B + pc_setoption‚Åclif_changeoption()‚̈ø”•ÏXB + pc_damage()‚ÅŽ€–SŽž‚Éskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚ÉB + mob.c + mob_spawn()‚Åsc_data,sc_count‚ð‰Šú‰»‚·‚é‚悤‚É‚µ‚½B + mob_attack()‚Åbattle_calc_damage()‚ðŒÄ‚Ԃ悤‚É‚µ‚½B + mob_damage()‚ÅŽ€–SŽž‚Éskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚ÉB + battle.c/battle.h + battle_get_*()‚½‚‚³‚ñ’ljÁB + battle_calc_damage()’ljÁBÅI“I‚ȃ_ƒ[ƒWŒvŽZ—pB + battle_calc_magic_attack(),battle_calc_weapon_attack()‚Å + battle_calc_damage()‚ðŒÄ‚Ԃ悤‚É‚µ‚½B + clif.h/clif.c + clif_status_change()’ljÁBƒXƒe[ƒ^ƒXˆÙíƒAƒCƒRƒ“•\Ž¦—pB + clif_changeoption()‚̈ø”•ÏXB + atcommand.c + clif_changeoption()‚ðŒÄ‚ñ‚Å‚¢‚é‚Qƒ–Š‚ňø”•ÏXB + @die‚Åskill_status_change_clear()‚ðŒÄ‚Ԃ悤‚ÉB + +Eƒ}ƒOƒkƒXƒGƒNƒ\ƒVƒYƒ€‚ÌK“¾ðŒ‚ªŠÔˆá‚Á‚Ä‚¢‚é‚Ì‚ðC³B + db/skill_tree.txt + ŠY“–ŒÂŠC³BiƒŒƒbƒNƒXƒG[ƒeƒ‹ƒi‚Ì•K—vLv‚ð‚P‚Éj + +EƒAƒNƒeƒBƒu‚È“G‚ÍUŒ‚‚·‚é‚Æ‚«ŽžXƒ^[ƒQƒbƒg‚ª•Ï‚í‚é‚悤‚É‚È‚è‚Ü‚µ‚½ + mob.c + mob_ai_sub_hard()‚ÌUŒ‚‚³‚ꂽ‚©Šm”F‚·‚é•”•ª‚É + ƒAƒNƒeƒBƒu‚È‚ç25%‚ÌŠm—¦‚Ń^[ƒQƒbƒg‚ª•Ï‚í‚é‚悤‚É•ÏXB + +Eˆê•”‚̃XƒLƒ‹Œø‰Ê‚ªŽÀ‘•‚³‚ê‚Ü‚µ‚½ + ƒLƒŠƒGƒGƒŒƒCƒ\ƒ“AƒGƒiƒW[ƒR[ƒgAƒŒƒbƒNƒXƒG[ƒeƒ‹ƒiA + ƒz[ƒŠ[ƒ‰ƒCƒgAƒŠƒUƒŒƒNƒVƒ‡ƒ“Aƒ^[ƒ“ƒAƒ“ƒfƒbƒhAƒ‚ƒ“ƒXƒ^[î•ñ + + skill.c/skill.h + skill_castend_nodamage_id()‚ɃXƒLƒ‹‚̈—‚ð’ljÁB + skill_castend_*_id()‚̈ø”‚ð•ÏX + battle.c + battle_calc_damage()‚ɃXƒLƒ‹‚̈—‚ð’ljÁB + battle_damage(),battle_heal()‚̈ø”•ÏX + battle_calc_weapon_damage(),battle_calc_magic_damage()ˆø”•ÏX + clif.c/clif.h + clif_skill_estimation()’ljÁBƒ‚ƒ“ƒXƒ^[î•ñ‘—M—p + pc.c + battle_calc_weapon_damage()ŒÄ‚Ño‚µ‚̈ø”•ÏX + +Estorage.txt‚ª–³‚¢ê‡interŽI‚ª‹§I—¹‚·‚éŽd—l‚ð•ÏX‚µ‚Ü‚µ‚½ + (char/) + int_storage.c + inter_storage_init()‚Ńtƒ@ƒCƒ‹‚ª“Ç‚ß‚È‚¢‚Æexit‚µ‚Ä‚½‚Ì‚ðC³ + + +---------- +//0224 +E2-2ŽŸE‚̃XƒLƒ‹‚ðƒcƒŠ[‚ɒljÁ‚µ‚Ü‚µ‚½iŽÀ‘•‚Í‚Ü‚¾‚Å‚·j + (db/) + skill_db.txt + skill_tree.txt + + +---------- +//0223 by ŒÓ’±—– +EƒJƒvƒ‰‘qŒÉ‚ðinterŽI‚ɑΉž‚³‚¹‚Ü‚µ‚½ + ‚¢‚Ü‚Ü‚Å‚Ìstorage.txt‚Í‚»‚Ì‚Ü‚ÜŽg‚¦‚Ü‚·B + interŽI—p‚ÌÝ’èƒtƒ@ƒCƒ‹‚Æ‚µ‚Äconf/inter_athena.cnf‚ðŽg‚¢‚Ü‚·B + iÝ’èƒtƒ@ƒCƒ‹‚Íchar.exe‚Ì‘æ‚Qˆø”‚Å‘¼‚̃tƒ@ƒCƒ‹‚ðŽw’è‚Å‚«‚Ü‚·j + + ƒJƒvƒ‰‘qŒÉ‚ÌinterŽIŽÀ‘•‚ÌŠT—v + + interŽI‚Ístorage.txt‚Ì‘Sƒf[ƒ^‚ðŽ‚ÂBmapŽI‚̓AƒJƒEƒ“ƒg‚ª—v‹‚·‚é‚Ü‚Å + ‚»‚̃AƒJƒEƒ“ƒg‚Ì‘qŒÉƒf[ƒ^‚ðŽ‚½‚È‚¢BƒNƒ‰ƒCƒAƒ“ƒg‚©‚ç‘qŒÉ‚ðŠJ‚—v‹‚ª + ‚ ‚Á‚½‚Æ‚«AmapŽI‚͑Ήž‚·‚éƒAƒJƒEƒ“ƒg‚Ì‘qŒÉƒf[ƒ^‚ðinterŽI‚É—v‹‚·‚éB + interŽI‚©‚çƒf[ƒ^‚ª“Í‚‚ƃNƒ‰ƒCƒAƒ“ƒg‚É‘qŒÉƒf[ƒ^‚ð‘—‚éB + ‘qŒÉ‚Ìo‚µ“ü‚ê‚̓Nƒ‰ƒCƒAƒ“ƒg‚ÆmapŽIŠÔ‚Ì’ÊM‚¾‚¯‚Ås‚í‚ê‚éB + ƒNƒ‰ƒCƒAƒ“ƒg‚ª‘qŒÉ‚ð•Â‚¶‚é‚©I—¹‚·‚é‚ÆAmapŽI‚ÍŠY“–ƒAƒJƒEƒ“ƒg‚Ì + ‘qŒÉƒf[ƒ^‚ðinterŽI‚É‘—‚éB‚±‚Ì‚Æ‚«interŽI‚̉ž“š‚ð‘Ò‚½‚¸‚ɃNƒ‰ƒCƒAƒ“ƒg‚É + ‘qŒÉƒNƒ[ƒY‚ð‘—‚éBinterŽI‚Í‘qŒÉƒf[ƒ^‚ðŽó‚¯Žæ‚é‚ÆA + ‘Sˆõ•ª‚̃f[ƒ^‚ðƒtƒ@ƒCƒ‹‚É•Û‘¶‚µ‚ÄAmapŽI‚ɬŒ÷ƒXƒe[ƒ^ƒX‚ð•Ô‚·B + mapŽI‚ͬŒ÷ƒXƒe[ƒ^ƒX‚𖳎‹‚·‚éB(ƒfƒoƒbƒO—p‚ɉæ–Ê‚Éo—Í‚·‚邾‚¯) + interŽII—¹Žž‚É‚à‘qŒÉƒf[ƒ^‚ðƒtƒ@ƒCƒ‹‚É•Û‘¶‚·‚éB + + mapŽI‚Åaccount2storage‚ÅV‚µ‚¢‘qŒÉƒf[ƒ^‚ðì‚é‚Æ‚«A + ‚·‚łɕ‚¶‚ç‚ê‚Ä‚¢‚é‘qŒÉƒf[ƒ^‚̃ƒ‚ƒŠ‚ðŽg‚¢‚܂킵‚½‚Ù‚¤‚ªƒƒ‚ƒŠ‚ª + ß–ñ‚Å‚«‚é‚©‚àHi‚±‚ê‚ÍŽÀ‘•‚µ‚Ä‚¢‚Ü‚¹‚ñj + + (common/) + mmo.h + struct storage ‚ð map/storage.h ‚©‚çˆÚ“®B + interŽI‚ÆmapŽI—¼•û‚ÅŽg—p‚·‚邽‚ßB + (char/) + char2.c + do_final()‚ðì¬AI—¹Žž‚Émmo_char_sync()ˆÈŠO‚Éinter_save()‚ð + ŒÄ‚Ԃ悤‚É‚µ‚½i‚±‚ê‚Åinter_*_save()‚Í‘S•”ŒÄ‚΂ê‚Ü‚·j + inter_init()‚ðchar.exe‚Ì‘æ‚Qˆø”‚à‚µ‚‚Í"conf/inter.cnf"‚Å + ŒÄ‚Ԃ悤‚É‚µ‚½iathena.sh‚ÉinterŽIƒRƒ“ƒtƒBƒOƒtƒ@ƒCƒ‹‚ðŽw’è‚Å‚«‚Ü‚·j + inter.c/inter.h + inter_storage_init(),inter_storage_save(), + inter_storage_parse_frommap()‚ðŒÄ‚Ԃ悤‚ÉB + inter_init()‚ɃRƒ“ƒtƒBƒOƒtƒ@ƒCƒ‹–¼‚̈ø”‚ð•t‚¯‚½B + inter_config_read()’ljÁAƒRƒ“ƒtƒBƒOƒtƒ@ƒCƒ‹‚©‚ç + ‘qŒÉ‚ƃp[ƒeƒB[AƒMƒ‹ƒh‚̃tƒ@ƒCƒ‹–¼‚ð“Ç‚Ýž‚Ý‚Ü‚·B + int_storage.c/int_storage.h + V‹K’ljÁB‘qŒÉ•”•ª‚ÌinterŽI‹@”\B + int_party.h/int_party.c/int_guild.h/int_guild.c/ + ƒtƒ@ƒCƒ‹–¼•Ï”‚Ì錾’ljÁ + INTERŽIƒpƒPƒbƒg.txt + ‘qŒÉƒpƒPƒbƒg‚̉ðà’ljÁ + + (map/) + storage.h/storage.c + storage_fromstr(),storage_tostr()‚ðchar/int_storage.c‚Ɉړ®B + “¯‚¶‚do_init,do_final‚ł̃tƒ@ƒCƒ‹ˆ—‚àˆÚ“®B + do_final()‚͈—‚È‚µAdo_init()‚Í•Ï”‰Šú‰»‚Ì‚Ý‚É•ÏXB + storage_storageopen()‚Å‚Í’P‚Éintif_request_storage()‚ðŒÄ‚Ô‚¾‚¯‚ÉB + storage_storageclose()‚Éintif_send_storage()‚ð’ljÁ + storage_storage_quitsave()’ljÁBƒNƒ‰ƒCƒAƒ“ƒgI—¹Žž‚É + ƒJƒvƒ‰‘qŒÉ‚ªŠJ‚¢‚Ä‚¢‚ê‚Îintif_send_storage()‚ðŒÄ‚ÔŠÖ”B + intif.h/intif.c + intif_parse_LoadStorage(),intif_parse_SaveStorage(), + intif_send_storage(),intif_request_storage()’ljÁ + map.c + map_quit()‚Åstorage_storage_quitsave()‚ðŒÄ‚Ԃ悤‚ÉB + + (conf/) + inter_athena.cnf + V‹K’ljÁBinterŽI—p‚̃Rƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“ƒtƒ@ƒCƒ‹ + + +---------- +//0221 by ŒÓ’±—– + +EƒXƒLƒ‹ƒ^[ƒQƒbƒg‚ÌID‚ª³‚µ‚Š“¾‚Å‚«‚È‚¢–â‘èC³ + clif.c + clif_parse_UseSkillToId()‚ÅID‚ðWORD‚Æ‚µ‚Ĉµ‚Á‚Ä‚½‚Ì‚ðLONG‚ÉC³ + +EƒXƒLƒ‹‰r¥ŽžŠÔ‚Æ‘®«•\A‚¨‚æ‚Ñ–‚–@ŒnƒXƒLƒ‹‚Ì‘®«C³ŽÀ‘• + ‘®«ƒ_ƒ[ƒWC³‚Í battle_attr_fix() ‚ÅŒvŽZ‚µ‚Ü‚·B + atk_elem‚Í‘®«‚»‚Ì‚Ü‚ÜAdef_elem‚Íi‘®«lv*20{‘®«j‚Å‚·B + ‰r¥ŽžŠÔ‚Ískill.c‚ÌCASTFIX‚Ì’l‚ð•Ï‚¦‚邱‚Æ‚Å”{—¦‚ð’²®‚Å‚«‚Ü‚· + + pc.c + pc_readdb()‚Åcast_db.txt‚Æattr_fix.txt‚Ì“Ç‚Ýž‚ݒljÁ + skill.c/skill.h + struct skill_db ‚Écast,delay’ljÁA‚»‚ê‚ç‚̃AƒNƒZƒT‚à’ljÁ + ƒXƒLƒ‹‰r¥ŽžŠÔ‚ð skill_get_cast() ‚ÅŠ“¾‚·‚é‚悤‚É‚µ‚½ + battle.c/battle.h + attr_fix_table’è‹` + battle_attr_fix()’ljÁA‘®«C³‚ðŒvŽZ‚·‚é + ‘®«ŒnƒAƒNƒZƒT(battle_get_element()‚È‚Ç)‚ð’ljÁ + battle_calc_magic_damage()‚É‘®«C³‚ð’ljÁ + cast_db.txt + V‹K’ljÁB‰r¥ŽžŠÔ‚ƃfƒBƒŒƒC‚̃f[ƒ^ƒx[ƒX + ‘S‘R‘«‚è‚È‚¢‚Ì‚ÅA’N‚©’ljÁŠó–]B + attr_fix.txt + V‹K’ljÁB‘®«C³ƒe[ƒuƒ‹ + +Eƒq[ƒ‹‚ÌŽÀ‘• + clif.c/clif.h + clif_skill_nodamage()’ljÁAŽx‰‡Œn‚â‰ñ•œ‚̃GƒtƒFƒNƒg + skill.c/skill.h + skill_castend_damage_id()Askill_castend_nodamage_id()’ljÁA + UŒ‚Œn‚ÆŽx‰‡/‰ñ•œŒn‚ÅŠÖ”‚𕪂¯‚½ + ƒq[ƒ‹ŒvŽZƒ}ƒNƒ skill_calc_heal() ’ljÁ + battle.c + battle_calc_magic_damage()‚Ńq[ƒ‹‚̃_ƒ[ƒWŒvŽZ’ljÁ + + +---------- +//0220 by ‚ê‚ + +0216‚ÌC³ +HIT‚ÌŒvŽZ‚ª‚¨‚©‚µ‚©‚Á‚½‚Ì‚ÅC³‚µ‚Ä‚Ý‚Ü‚µ‚½B +ŠÔˆá‚Á‚Ä‚½‚炲‚ß‚ñ‚È‚³‚¢B + +Ebattle.c + 256s–Ú‚Ì + hitrate=battle_get_hit(&sd->bl) - battle_get_flee(&sd->bl) + 80; + ‚ª‚½‚Ô‚ñAŽ©•ª‚Ì‚g‚h‚s‚ÆŽ©•ª‚Ì‚e‚k‚d‚d‚ÅŒvŽZ‚µ‚Ä‚é‹C‚ª‚·‚é‚Ì‚Å + hitrate=battle_get_hit(&sd->bl) - battle_get_flee(target) + 80; + ‚ÉC³‚µ‚Ü‚µ‚½B + + +---------- +//0218 by ŒÓ’±—– + +ŽÀÛ‚É•ªŽU‚³‚¹‚ăeƒXƒg‚µ‚Ä‚¢‚È‚©‚Á‚½‚èB + +EmapŽI•ªŽUˆ——p‚ÉinterŽI‹@”\‚ð‚‚¯‚Ä‚Ý‚éi¡Œã‚Ì‚½‚ß‚ÌŠg’£j + charŽI‚ÉinterŽI‚ðŠñ¶‚³‚¹‚Ü‚µ‚½B•¡”‚ÌmapŽIŠÔ‚Ì’ÊM‚É—˜—p‚µ‚Ü‚·B + mapŽI‚𕪎U‚µ‚Ĉ—‚Å‚«‚é‚悤‚É‚·‚邽‚ß‚Ì‹@”\‚Å‚·B + ¡Œãparty‚âguildŽÀ‘•Žž‚É‚«‚Á‚Æ–ð‚É‚½‚Á‚Ä‚‚ê‚é‚©‚ÆB + + ‘qŒÉ‚ÌŽÀ‘•‚àinterŽI‚Ɉړ®‚·‚ׂ«‚©‚à‚µ‚ê‚Ü‚¹‚ñB + ‚ǂ̃Lƒƒƒ‰ƒNƒ^[‚ª‚Ç‚ÌmapŽI‚É‚¢‚é‚©ŒŸõ‚·‚é‹@”\‚à‚¢‚é‚©‚àB + + Žg‚¤ƒpƒPƒbƒg‚ÌID‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚· + mapŽI=>interŽI‚̓pƒPƒbƒg0x3000` + interŽI=>mapŽI‚̓pƒPƒbƒg0x3800` + ƒpƒPƒbƒg‚ðì‚Á‚½ê‡‚ÍAINTERŽIƒpƒPƒbƒg.txt‚É‘‚¢‚Ä‚‚¾‚³‚¢ + + ‚±‚Ì‹@”\‚É‚æ‚郃Šƒbƒg + mapŽI•ªŽU‚É‚à‘Ήž‚Å‚«‚é + ‚±‚Ì‹@”\‚É‚æ‚éƒfƒƒŠƒbƒg + interŽIŒo—R‚Ì‘S‚Ä‚Ì–½—ß‚Ì“®ì‘¬“x‚ª—Ž‚¿‚é + iˆê‰ñinterŽI‚Ü‚Å“n‚·‚½‚ßj + ŽI‚ƃNƒ‰ƒCƒAƒ“ƒg‚𓯂¶PC‚ÅŽg‚Á‚Ä‚¢‚é‚Ƃ‚炢‚©‚à + + (char/) + char2.c/char.h + mapif_sendall()’ljÁi‘SMAPŽI‚ɃpƒPƒbƒg‚ð‘—‚éj + mapif_send()’ljÁi“Á’èMAPŽI‚É‘—‚éF¶‘¶”»’è•t‚«j + parse_frommap()‚Åinter_parse_frommap()‚ðŒÄ‚Ԃ悤‚É‚µ‚½ + (interŽI‚ÌmapŽI‰ðÍ•”‚ðcharŽI‚ÉŠñ¶‚³‚¹‚½‚±‚Æ‚É‚È‚é) + inter.h/inter.c + V‹K’ljÁBinterŽI‚Ì’†ŠjB + inter_parse_frommap‚ÅMAPŽI‚©‚ç‚̃pƒPƒbƒg‚ð‰ðÍ‚µ‚Ü‚·B + int_party.h/int_party.c/int_guild.h/int_guild.c + V‹K’ljÁB¡Œã‚Ì‚½‚ß‚Ì—\–ñBƒp[ƒeƒB‚âƒMƒ‹ƒh‹@”\—p + init‚Ńf[ƒ^‚ð“Ç‚ñ‚ÅAsave‚Å•Û‘¶‚·‚ׂ«H + save‚Í‚Ü‚¾ŒÄ‚΂ê‚È‚¢Bparse‚ŃpƒPƒbƒg‰ðÍB + common/mmo.h‚ ‚½‚è‚Ńp[ƒeƒB[‚âƒMƒ‹ƒh‚Ì\‘¢‘Ì‚ð + ’è‹`‚·‚é•K—v‚ª‚ ‚é‚ÆŽv‚í‚ê‚éB + INTERŽIƒpƒPƒbƒg.txt + ƒpƒPƒbƒg‚̃ŠƒXƒg + + (map/) + intif.h/intif.c + interŽI‚Æ’ÊM‚·‚é•”•ªB + inter_parse()‚ÅinterŽI‚©‚ç‚̃pƒPƒbƒg‚ð‰ðÍ‚µ‚Ü‚·B + interŽI‚Öƒf[ƒ^‚ð‘—‚é‚Æ‚«‚Íinter_fd‚ðŽg‚¢‚Ü‚·B + chrif.h/chrif.c + chrif_parse()‚Åinter_parse()‚ðŒÄ‚Ԃ悤‚É‚µ‚½ + iintif.c‚ÌinterŽI‰ðÍ•”‚ðcharŽI‰ðÍ•”‚ÉŠñ¶‚³‚¹‚½‚±‚Æ‚É‚È‚é) + +E@kamiƒRƒ}ƒ“ƒh‚ðinterŽIŒo—R‚É•ÏX + Œ´—‚Æ‚µ‚Ä‚ÍŽŸ‚̂悤‚ÈŠ´‚¶‚Å‚· + ƒNƒ‰ƒCƒAƒ“ƒg„mapŽI„interŽI„‘SmapŽI„‘SƒNƒ‰ƒCƒAƒ“ƒg + + (char/) + inter.c + mapif_GMmessage()’ljÁ + (map/) + intif.h/intif.c + intif_GMmessage()’ljÁ + intif_parse‚ÅGMƒƒbƒZ[ƒW‚̈—‚ð’ljÁ + clif.c/clif.h + clif_GMmessage()‚̈ø”‚ð•ÏX + atcommand.c + @kami•”•ª‚Åintif_GMmessage()‚ðŒÄ‚Ԃ悤‚É‚µ‚½ + +EWis‚ðinterŽIŒo—R‚É•ÏX + Œ´—‚Æ‚µ‚Ä‚ÍŽŸ‚̂悤‚ÈŠ´‚¶‚Å‚· + + ‘—‚èŽåƒNƒ‰ƒCƒAƒ“ƒg„‘—‚èŽåmapŽI„interŽI„‘Sƒ}ƒbƒvŽI„(•ªŠòA) + [•ªŠòA] + 1.‘ŠŽè‚Ìl‚¢‚émapŽI„‘ŠŽè‚̃Nƒ‰ƒCƒAƒ“ƒg + @@@@V@@ @„interŽI„‘—‚èŽåmapŽI„‘—‚èŽåƒNƒ‰ƒCƒAƒ“ƒg + 2.‘ŠŽè‚Ì‚¢‚È‚¢mapŽI„interŽIi•ªŠòBj + [•ªŠòB] + 1.‘SmapŽI‚ª‰ž“š‚µ‚½interŽI „‘—‚èŽåmapŽI„‘—‚èŽåƒNƒ‰ƒCƒAƒ“ƒg + 2.(‘S•”‚͉ž“š‚µ‚Ä‚È‚¢‚Æ‚«‚ÍA‘SmapŽI‚̉ž“š‚ð‘Ò‚Â) + + ‚à‚Ì‚·‚²‚¢•¡ŽG‚É‚È‚Á‚Ä‚Ü‚·‚ËB + + (char/) + inter.c + struct WisList ’è‹`iWisƒf[ƒ^‚̃Šƒ“ƒNƒŠƒXƒgj + add_wislist(),del_wislist(),search_wislist(), + check_ttl_wislist()’ljÁ,ƒŠƒ“ƒNƒŠƒXƒg‚ðˆµ‚¤ŠÖ”ŒQ + mapif_wis_message(),mapif_wis_end()’ljÁ + (map/) + intif.h/intif.c + intif_wis_message(),intif_wis_end()’ljÁ + intif_parse_WisMessage()’ljÁ,intif_parse()‚©‚çŒÄ‚΂ê‚é‚悤‚É + clif.c/clif.h + clif_wis_message(),clif_wis_end()’ljÁ + clif_parse_Wis()‚ð•ÏX,intif_wis_message()‚ðŒÄ‚Ԃ悤‚É‚µ‚½ + +EƒXƒLƒ‹Žg—pŽž‚̃qƒbƒg”/Á”ïSPŠ“¾‚̃oƒOC³ + skill.c + skill_get_sp(),skill_get_num()‚ÅŽQÆ‚·‚é”z—ñƒCƒ“ƒfƒbƒNƒX‚ðlv-1‚É‚µ‚½ + + +---------- +//0216 by ŒÓ’±—– + +‚¢‚‚à‚Ç‚¨‚èƒeƒXƒg‚Ù‚Æ‚ñ‚Ç‚µ‚Ä‚È‚¢‚Ì‚ÅAƒoƒO‘å—Ê‚©‚àB + +E0213‚ÌC³H‚Ì‚æ‚‚í‚©‚ç‚È‚¢‚Æ‚±‚ëC³ + itemdb.c + ƒRƒ“ƒpƒCƒ‹‚ª’Ê‚ç‚È‚¢‚Ì‚Åitemdb_equipoint‚̈ø”ƒŠƒXƒg•ÏX + +EAthena dev 2.1.1‚Ì“K—p + dev-2.1.1‚Å“K—p‚³‚ꂽC³‚ð“K—p‚µ‚Ü‚µ‚½ + + timer.c + 2.1.1‚Ì‚à‚Ì‚Æ·‚µ‘Ö‚¦ + script.c + C_NE: ‚ÌC³‚Ì“K—p + README + ÅŒã‚Ì•¶Í‚ð2.1.1‚Ì‚à‚Ì‚É·‚µ‘Ö‚¦ + +EƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚ÌC³ + ˆê•”‚ÌÁ”ïSP‚âƒqƒbƒg”‚È‚Ç‚ðC³B + + skill_db.txt + ŠY“–ŒÂŠ‚ÌC³ + +EƒXƒLƒ‹UŒ‚‚ÌŽÀ‘••ÏX•’ljÁŽÀ‘• + ƒoƒbƒVƒ…Aƒƒ}[ƒiƒCƒgAƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒOAƒsƒA[ƒX + ƒXƒsƒAƒu[ƒƒ‰ƒ“AƒXƒsƒAƒXƒ^ƒuAƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ… + ƒ\ƒjƒbƒNƒuƒ[AƒOƒŠƒ€ƒgƒD[ƒX ‚È‚Ç‚ÌŽÀ‘••ÏX + + ƒiƒp[ƒ€ƒr[ƒgAƒ\ƒEƒ‹ƒXƒgƒ‰ƒCƒNA + ƒtƒ@ƒCƒ„[ƒ{ƒ‹ƒgAƒR[ƒ‹ƒhƒ{ƒ‹ƒgAƒ‰ƒCƒgƒjƒ“ƒOƒ{ƒ‹ƒgAƒA[ƒXƒXƒpƒCƒNA + ƒ†ƒsƒeƒ‹ƒTƒ“ƒ_[ ‚È‚Ç‚ð’ljÁŽÀ‘• + i‘S‚ÄA”͈ÍUŒ‚‚âƒXƒe[ƒ^ƒXˆÙí‚È‚Ç‚Í–¢ŽÀ‘•j + + pc.c/pc.h + 0213‚Ì•ÏX‚ð‚È‚©‚Á‚½‚±‚Æ‚É‚µ‚½ + pc_attack_mob()‚ÌC³AŒvŽZ‚Íbattle_calc_weapon_attack()‚É”C‚¹A + ‚»‚ÌŒvŽZŒ‹‰Ê‚ð“K—p‚·‚邾‚¯‚É•ÏX + clif.c/clif.h + clif_skill_fail(),clif_skill_damage(),clif_skill_damage2()’ljÁ + ‚»‚ꂼ‚êŽg—pŽ¸”sAŽg—pƒGƒtƒFƒNƒgA‚«”ò‚΂µ•t‚«Žg—pƒGƒtƒFƒNƒg + skill.c/skill.h + 0213‚Ì•ÏX‚ð‚È‚©‚Á‚½‚±‚Æ‚É‚µ‚½iƒ_ƒ[ƒW”{—¦ŒvŽZ‚ª‚¨‚©‚µ‚¢j + skill_castend_id()‚ÉSP/ZenyŠm”F‚ÆÁ”ï•”•ª‚ð’ljÁA + Ží—ޕʂɈ—‚ð’ljÁB + battle.c/battle.h + V‹K’ljÁ + •ŠíUŒ‚ŒvŽZ—p‚Ébattle_calc_weapon_attack(), + –‚–@UŒ‚ŒvŽZ—p‚Ébattle_calc_magic_attack()‚ð—pˆÓ + i‘o•û‚Æ‚àAMOB‚ÆPC—¼•ûŒvŽZ‰Â”\‚È‚Í‚¸j + ƒtƒ@ƒCƒ‹‘‚₵‚·‚¬‚Æ‚¢‚¤ˆÓŒ©‚àc(Š¾) + + +---------- +//0214 by ‚ê‚ +Eƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ª‚¨‚©‚µ‚©‚Á‚½‚Æ‚±‚ë‚ðC³B +EƒXƒLƒ‹‚̈ꕔŽÀ‘• + ƒoƒbƒVƒ…Eƒƒ}[ƒiƒCƒgEƒ_ƒuƒ‹ƒXƒgƒŒƒCƒtƒBƒ“ƒOEƒsƒA[ƒX + ƒXƒsƒAƒu[ƒƒ‰ƒ“EƒXƒsƒAƒXƒ^ƒuEƒ{[ƒŠƒ“ƒOƒoƒbƒVƒ… + ƒ\ƒjƒbƒNƒuƒ[EƒOƒŠƒ€ƒgƒD[ƒX‚È‚Ç‚Å‚·B + + “K“–‚È‚Ì‚Å‚Ç‚±‚©A•s‹ï‡‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB + ‚ ‚ÆAƒeƒXƒg‚à‚ ‚܂肵‚Ä‚Ü‚¹‚ñ‚Ì‚Å‚¨‚©‚µ‚¢‚Æ‚±‚낪‚ ‚Á‚½‚çC³‚ð‚¨Šè‚¢‚µ‚Ü‚·B + ‘¼‚É‚à–â‘肪‚ ‚Á‚½‚çŽè’¼‚µ‚ð‚¨Šè‚¢‚µ‚Ü‚·B + •ÏX“à—e‚͈ȉº‚Ì’Ê‚è‚Å‚·B + + clif.c,clif.h + clif_skill_damage()‚ð’ljÁ‚µ‚Ü‚µ‚½B + + pc.c,pc.h + pc_attack_mob()‚̈ø”‚ðˆê‚’ljÁB + ƒ_ƒuƒ‹ƒAƒ^ƒbƒN‚ª‚¨‚©‚µ‚©‚Á‚½‚̂ųí‚É“®ì‚·‚é‚悤‚ÉC³B + + skill.c + ˆê•”ƒXƒLƒ‹‚ÌŽÀ‘•‚ð‚µ‚Ä‚Ý‚Ü‚µ‚½B + + +---------- +//0213 by ‚ê‚ +E0208‚Ì—ƒRƒ}ƒ“ƒh‚Å‚µC³ + atcommand.c + @item‚Ō”Žw’肪–³‚¢ê‡A“üŽèŒÂ”‚ð‚PŒÂ‚É‚·‚é‚悤‚É‚µ‚½B + @item‚ÅID‚ÌŽw’肪–³‚¢ê‡AƒAƒCƒeƒ€‚ð“üŽè‚µ‚Ä‚½‚±‚Æ‚É‚È‚Á‚Ä + ‚¢‚½‚Ì‚ðC³ + itemdb.c + item_db.txt‚ÅSell‚Ì€–Ú‚ð“X”„‚è‚Ì’l’i‚Æ‚µ‚Ä‚Ý‚½B + item_db2.txt + ŽŽ‚µ‚ɃJ[ƒh‚⃌ƒAƒAƒCƒeƒ€‚Ì“X”„‚艿Ši‚ð’l’i‚ð–{ŽI‚Ì‘Šê‚É‚µ + ‚Ä‚Ý‚½‚à‚ÌBŽg—p‚·‚éꇂÍitem_db.txt‚Æ·‚µ‘Ö‚¦‚Ä‚‚¾‚³‚¢B + + +---------- +//0208 by nabe + +E—ƒRƒ}ƒ“ƒhŽÀ‘•B + atcommand.h,atcommand.c + ‚Ù‚ÚI-Athena‚Ì—ƒRƒ}ƒ“ƒh‘Š“–‚Å‚·‚ªA@GM‚ÆPVP‚Í–¢ŽÀ‘•‚Å‚·B + help.txt‚à“¯«‚µ‚Ä‚¢‚Ü‚·B + GMiƒAƒJƒEƒ“ƒgID704554`704583jê—p‚É‚·‚é‚É‚ÍA + atcommand.c‚ÌŠY“–•”•ª‚̃Rƒƒ“ƒgƒAƒEƒg‚ð‰ðœ‚µ‚ĉº‚³‚¢B + clif.h,clif.c + clif_displaymessage() + clif_GMmessage() + clif_heal() + clif_resurrection() + clif_pvpon() + clif_pvpset() + clif_refine() + ‚ð’ljÁ‚µ‚Ü‚µ‚½B + clif_parse_GlobalMessage()“à‚Åatcommand()‚ðŒÄ‚ñ‚Å‚¢‚Ü‚·B + +E‚¿‚å‚Á‚Æ‚¾‚¯C³B + script.c + {buildin_openstorage,"openstorage","s"}, + ‚©‚ç + {buildin_openstorage,"openstorage",""}, + ‚ÉC³‚µ‚Ü‚µ‚½B + + +---------- +//0206 by ŒÓ’±—– +EƒXƒLƒ‹ƒcƒŠ[/ƒXƒLƒ‹Žg—p‹@\‚ÌŽÀ‘• + mmo.h + MAX_SKILL‚ð‘‚₵‚½ + char2.c + mmo_char_fromstr() + mmo_charstatus‚Ìskill‚̃Cƒ“ƒfƒbƒNƒX‚ɃXƒLƒ‹”Ô†‚ðŽg‚¤‚悤‚É‚µ‚½ + =>ƒXƒLƒ‹‚ÌŒŸõ‚‘¬‰»‚Ì‚½‚ßi‚©‚í‚è‚Ƀƒ‚ƒŠŽg—p—Ê‚ª‘‚¦‚éj + pc.h/pc.c + pc_skillup(),pc_calc_skilltree()’ljÁ + pc_checkskill()•ÏXiƒCƒ“ƒfƒbƒNƒX‚ðƒXƒLƒ‹”Ô†‚Éj + pc_readdb()‚Åskill_db.txt‚à“ǂނ悤‚É‚µ‚½ + pc_authok()‚Åcast_timer‚ð‰Šú‰»‚·‚é‚悤‚É‚µ‚½ + pc_calcstatus()‚Åpc_calc_skilltree()‚Æclif_skillinfoblock()‚ð + ŒÄ‚Ԃ悤‚É‚µ‚½ + clif.c/clif.h + clif_skillinfoblock(),clif_skillcasting(), + clif_skillup()‚ð’ljÁ + clif_parse_SkillUp(),clif_parse_UseSkillToId(), + clif_parse_UseSkillToPos()‚ðŽÀ‘• + skill.h/skill.c + ƒtƒ@ƒCƒ‹’ljÁ(map/) + map.h + struct map_session_data‚Écast_*‚ð’ljÁ + skill_db.txt + ƒtƒ@ƒCƒ‹’ljÁ(db/) + (I-Athena0200‚Ìskill_info2.txt‚ðƒRƒ“ƒo[ƒg‚µ‚½‚à‚Ì) + (ƒXƒLƒ‹Žg—p•”•ªŠJ”ŽÒŒü‚¯î•ñ) + ƒXƒLƒ‹‚ÌŒø‰Ê‚ðŽÀ‘•‚·‚éꊂÍskill.c‚Ì + skill_castend_id(),skill_castend_pos()‚Å‚·B + ƒ^[ƒQƒbƒg‚âŽg—pƒXƒLƒ‹‚Í sd->cast_* ‚©‚瓾‚Ü‚· + ƒXƒLƒ‹ƒf[ƒ^ƒx[ƒX‚Ö‚Í skill_get_* ‚ŃAƒNƒZƒX‚µ‚Ä‚‚¾‚³‚¢ + ¡ŒãAƒLƒƒƒXƒeƒBƒ“ƒOƒ^ƒCƒ€‚àƒf[ƒ^ƒx[ƒX‚É“ü‚ê‚é—\’è + +---------- +//0205 by nabe + +Estorage.c‚̃oƒOƒtƒBƒNƒXB +E‘qŒÉƒf[ƒ^‚ðAƒ}ƒbƒvŽI‹N“®Žž‚É“Ç‚ÝAƒ}ƒbƒvŽII—¹Žž‚É‘‚‚悤‚É•ÏXB + storage.h,storage.c + storage_init()‚ðdo_init_storage()‚ɉü–¼B + storage_save()‚ðdo_final_storage()‚ɉü–¼B + fclose‚ð–Y‚ê‚Ä‚¢‚½‚Ì‚ð’ljÁB + map.c + #include "storage.h"‚ð’ljÁB + do_final()‚Édo_final_storage()‚ð’ljÁB + do_init()‚Édo_init_storage()‚ð’ljÁB + +---------- + +//0203(unofficial) by ‚È‚Ý + +item_db.txt‚Ì‘‚«Š·‚¦‚Ì‚Ý‚Å‚·B + +EƒAƒCƒeƒ€‚̉ñ•œ—Ê‚ð’ljÁ/•ÏX + Ôƒ|[ƒVƒ‡ƒ“@@@@@@@@@HP 30- 44 + gƒ|[ƒVƒ‡ƒ“@@@@@@@@@HP 70- 89 + ‰©F‚¢ƒ|[ƒVƒ‡ƒ“@@@@@@@HP 175-234 + ”’‚¢ƒ|[ƒVƒ‡ƒ“@@@@@@@@HP 350-429 + ‚¢ƒ|[ƒVƒ‡ƒ“@@@@@@@@SP 40- 99 + Ô‚¢ƒn[ƒu@@@@@@@@@@HP 12- 19 + ‰©F‚¢ƒn[ƒu@@@@@@@@@HP 21- 29 + ”’‚¢ƒn[ƒu@@@@@@@@@@HP 80-111 + ‚¢ƒn[ƒu@@@@@@@@@@SP 15- 44 + ƒŠƒ“ƒS@@@@@@@@@@@@HP 12- 15 + ƒoƒiƒi@@@@@@@@@@@@HP 11- 16 + ƒuƒhƒE@@@@@@@@@@@@SP 10- 24 + ‚¢‚à@@@@@@@@@@@@@HP 11- 15 + ‚É‚@@@@@@@@@@@@@HP 70- 99 + ƒnƒ`‚Ì–¨@@@@@@@@@@@HP 72- 97 / SP 20- 59 + ƒ~ƒ‹ƒN@@@@@@@@@@@@HP 25- 34 + ƒLƒƒƒ“ƒfƒB@@@@@@@@@@HP 31- 74 + ƒXƒeƒBƒbƒNƒLƒƒƒ“ƒfƒB@@@@@HP 46-109 + ƒŠƒ“ƒSƒWƒ…[ƒX@@@@@@¦@HP 28- 32 + ƒoƒiƒiƒWƒ…[ƒX@@@@@@@@HP 27- 33 + ƒuƒhƒEƒWƒ…[ƒX@@@@@@@@SP 15- 39 + ƒjƒ“ƒWƒ“ƒWƒ…[ƒX@@@@@¦@HP 29- 32 + ƒJƒ{ƒ`ƒƒ@@@@@@@@@@@HP 14 + ƒyƒbƒgƒt[ƒh@@@@@@@@@HP 53- 83 + ‚æ‚Ä‚¢‚½ƒNƒbƒL[@@@@@@HP 80-177 + ‚ЂƂ‚¿ƒP[ƒL[@@@@@@@HP 251-359 + ‚ЂȂ ‚ç‚ê@@@@@@@@@@HP 175-234 + •H–Ý@@@@@@@@@@@@@HP 350-429 + ƒŒƒbƒhƒXƒŠƒ€ƒ|[ƒVƒ‡ƒ“@@¦@HP 30- 44 + ƒCƒGƒƒXƒŠƒ€ƒ|[ƒVƒ‡ƒ“@@¦@HP 175-234 + ƒzƒƒCƒgƒXƒŠƒ€ƒ|[ƒVƒ‡ƒ“@¦@HP 350-429 +@Œ»Ý‚ÌAthena‚Å‚ÍVIT‚âƒXƒLƒ‹‚É‚æ‚éƒ{[ƒiƒX‚͉Á–¡‚³‚ê‚Ü‚¹‚ñB +@i“K—p‚·‚éꇂÍscript.c“à‚Ìbuildin_healŠÖ”‚ ‚½‚è‚É‚ÉŽè‚ð‰Á‚¦‚é•K—v‚ ‚èj +@‚È‚¨A¦•t‚̃AƒCƒeƒ€‚̃f[ƒ^‚Í“K“–‚Å‚·B +EŒÃ‚¢ƒJ[ƒh’Ÿ‚ðŽÀ‘•(UseScript) +E‚»‚Ì‘¼C³ +@@‚ЂȂ ‚ç‚ê@@@@@@@@@@d—Ê‚È‚µ¨d—Ê0.1‚ÉC³ +@@•H–Ý@@@@@@@@@@@@@d—Ê‚È‚µ¨d—Ê0.1‚ÉC³ +@@ƒoƒ‹ƒ€ƒ“@@@@@@@@@@@d—Ê0.1S4•ÐŽèŒ•¨d—Ê100S0—¼ŽèŒ•‚ÉC³ +@‚È‚¨ASell‚Ì€–Ú‚Í‚ ‚邾‚¯–³‘Ê‚Á‚Û‚¢‚Ì‚Å‘S•”Á‚µ‚Ü‚µ‚½B + +---------- + +//0202 by nabe + +EƒJƒvƒ‰‘qŒÉ‚Ìu“¯ˆêƒAƒJƒEƒ“ƒg‚È‚Ì‚É‹¤—L‚Å‚«‚È‚¢ƒoƒOv‚ð‰ü—Ç‚µ‚Ü‚µ‚½B + ŠeƒLƒƒƒ‰‚É‘qŒÉƒf[ƒ^‚ðŽ‚½‚¹‚é‚Ì‚Í–³‘Ê‚ª‘½‚¢‹C‚ª‚·‚é‚Ì‚ÅA + ƒAƒJƒEƒ“ƒgID‚ÅŠÇ—‚·‚é‚悤‚ÉŽd—l‚ð•ÏX‚µ‚Ü‚µ‚½B + ‚‚¢‚Å‚ÉA‘qŒÉƒf[ƒ^‚Í‘S‚Ästorage.c‚Å‚Ü‚©‚È‚¢A + charŽI‚ÍŠÖ—^‚µ‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B + ‚±‚ê‚É”º‚¢Achar_athena.cnf,mmo.h,char2.c‚ÍŒ³‚É–ß‚µ‚Ü‚µ‚½B + ‚Ü‚½A‘qŒÉƒtƒ@ƒCƒ‹–¼‚Ígstorage.txth‚ɌŒ肵‚Ä‚¢‚Ü‚·B + + ‰ü•ÏA’ljÁ‚µ‚½‚Ì‚ÍŽŸ‚̃tƒ@ƒCƒ‹‚Å‚·B + map/storage.h, + map/storage.c, + map/clif.h,//ˆø”•ÏX‚¾‚¯ + map/clif.c,//ˆø”•ÏX‚¾‚¯ + conf/char_athena.cnf,//Œ³‚É–ß‚µ‚½‚¾‚¯ + common/mmo.h,//Œ³‚É–ß‚µ‚½‚¾‚¯ + char/char2.c,//Œ³‚É–ß‚µ‚½‚¾‚¯ + map/itemdb.h,//itemdb_equippoint()ˆø”錾•ÏX‚¾‚¯ + map/itemdb.c,//itemdb_equippoint()ˆø”錾•ÏX‚¾‚¯ + map/pc.c,//itemdb_equippoint()ˆø”錾•ÏX‚¾‚¯ + +---------- + +//0201 by nabe + +EƒJƒvƒ‰‘qŒÉ‚ðŽÀ‘•‚µ‚Ü‚µ‚½B + + ƒXƒNƒŠƒvƒg‚©‚çŒÄ‚Ño‚·‚É‚ÍAƒXƒNƒŠƒvƒg“à‚Å + openstorage; + ‚Æ‚µ‚Ä‚‚¾‚³‚¢B + ƒTƒ“ƒvƒ‹‚Æ‚µ‚Änpc_kafraJ.txt‚ð•t‚¯‚Ä‚ ‚è‚Ü‚·B + •¹‚¹‚Änpc_script3J.txt‚ÌŠY“–•”•ª‚à‰ü•Ï‚µ‚Ü‚µ‚½B + + char_athena.cnf‚Ì + stor_txt: + ‚Å‘qŒÉƒtƒ@ƒCƒ‹–¼‚ðŽw’肵‚Ä‚¢‚Ü‚·B + + ‰ü•ÏA’ljÁ‚µ‚½‚Ì‚ÍŽŸ‚̃tƒ@ƒCƒ‹‚Å‚·B + map/Makefile, + map/storage.c, + map/storage.h, + map/clif.c, + map/clif.h, + map/script.c, + char/char2.c, + common/mmo,h + Ú‚µ‚‚ÍAã‹Lƒtƒ@ƒCƒ‹‚̃Rƒƒ“ƒg‚È‚Ç‚ðŽQl‚É‚µ‚Ä‚‚¾‚³‚¢B + +EƒJƒvƒ‰‘qŒÉŽÀ‘•‚É”º‚¢Amap_athena1.cnf‚ð‚µ‘‚«Š·‚¦‚Ü‚µ‚½B + +E‘S‚ẴRƒƒ“ƒg•¶‚ðEUC‚©‚çSJIS‚É•ÏŠ·‚µ‚Ü‚µ‚½B + +---------- + + Athena Dev. v2.1.1 Released: Middle July, 2003 + (c) 2003 Athena Project. + http://project-yare.de/ + +1. Athena(ƒAƒeƒi)‚ɂ‚¢‚Ä +2. ‚±‚̃ŠƒŠ[ƒX‚ɂ‚¢‚Ä +3. •K—v‚È•¨ +4. Žg‚¢•û +5. Œ»Ý‚ÌŽd—l +6. jŽ« +7. –ÆÓŽ–€ +8. •åW +9. English + + +1. ƒAƒeƒi‚ɂ‚¢‚Ä + ƒAƒeƒi‚Æ‚Í2003”N1ŒŽ”¼‚΂ɂł½0052.lzh‚ðƒx[ƒX‚Æ‚µ‚Äì‚ç‚ê‚Ä‚¢‚éƒGƒ~ƒ…ƒŒ[ƒ^‚̈ê‚‚ł·B + Šî–{“I‚ȃ‰ƒCƒZƒ“ƒX‚̓IƒŠƒWƒiƒ‹‚ªGPL‚̉º‚É”z•z‚³‚ê‚Ä‚¢‚éˆ×A + ‚±‚ê‚É]‚¢GPL‚̉º”z•z‚ð‹–‰Â‚µ‚Ü‚·B + /* + ‰ü—ǔłð”z•z‚·‚éꇂ͕K‚¸‚±‚ÌREADME‚ð‘‚«Š·‚¦‚Ä‚‚¾‚³‚¢B + ‰½ˆ‚ð‰ü—Ç‚µ‚½‚Ì‚©•ñ(athena@project-yare.de‚Ü‚Å)‚µ‚ĖႦ‚é‚Æ•‚©‚è‚Ü‚·B + ƒoƒCƒiƒŠ‚Ì‚Ý‚Ì”z•z‚ÍGPLˆá”½‚Å‚·‚Ì‚Å"•K‚¸"ƒ\[ƒX‚à“Y•t‚µ‚Ä‚‚¾‚³‚¢B + */ + “®ì‚ÌŠm”F‚͈ȉº‚Ì’Ê‚è‚Ì‚Ýs‚Á‚Ä‚¢‚Ü‚·B + // ‚½‚¾‚µŠ®àø‚É“®‚Ž–‚ð•ÛØ‚·‚é‚à‚Ì‚Å‚ ‚è‚Ü‚¹‚ñ + ‘ÎÛCPU: Intel PentiumŒn // PentiumIIˆÈã‚ÅŠm”F. + FreeBSD 4.8R, 4.6.2R + Linux RedHat 7.3 + cygwin + gcc 3.2 20020927 (prerelease) + ŠJ”Œ³URL: http://project-yare.de/ + + +2. ‚±‚̃ŠƒŠ[ƒX‚ɂ‚¢‚Ä + ¡‰ñ‚̃ŠƒŠ[ƒX‚Í‘O‰ñ(V2.1)“¯—lŠJ””ł̃ŠƒŠ[ƒX‚Ì‚Ý‚Å‚·B + 2.1‚É”ä‚׉º‹L‚Ì“_‚ªC³‚³‚ê‚Ä‚¢‚Ü‚·B + map‚̃fƒtƒHƒ‹ƒgݒ肪ŠØ‘data.grf‚̂ݳí‚É“®ì‚·‚é‚悤‚É‚È‚Á‚Ä‚¢‚½“_ + common/timer.c‚âmap/script.c‚ÌŠô‚‚©‚̃oƒO + + v‘¬‚ÉUpdate‚ð‹‚„§‚·‚é‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªŠeŽ©‚Ì”»’f‚Ås‚Á‚ĉº‚³‚¢B + + +3. •K—v‚È•¨ + data.grf //sdata.grf‚Í•K—v‚ɉž‚¶‚Ä + account.txt //‘¶Ý‚µ‚È‚¢ê‡athena.sh‚ªŽ©“®¶¬‚µ‚Ü‚· + conf/*.cnf //Map—p‚ÆChar—p‚Ì“ñŽí—Þ‚ ‚è‚Ü‚· + conf/npc*.txt //npcÝ’è—pƒtƒ@ƒCƒ‹‚Å‚·B•¡”‚̃tƒ@ƒCƒ‹‚É•ª‚¯‚邱‚Æ‚ª‰Â”\‚Å‚·B + db/*.txt //ƒAƒCƒeƒ€Ajobî•ñ‚È‚Ç + + +4. Žg‚¢•û + > tar xvfz athena-d?.?.tar.gz + > cd athena-d?.?.tar.gz + > make + > vi conf/char_athena.cnf //IP(127.0.0.1)‚Ì•”•ª‚ðŠÂ‹«‚ɇ‚킹‚Ä•ÏX‚µ‚Ä‚‚¾‚³‚¢ + > vi conf/map_athena.cnf //“¯ãA‚Ü‚½mapÝ’è‚È‚Ç‚ÍA‚±‚̃tƒ@ƒCƒ‹‚Ås‚¢‚Ü‚·B + > ./athena.sh + ã‹L‚ðs‚¦‚Î"‚½‚Ô‚ñ"‹N“®‚µ‚Ü‚·B + + •â‘«: + conf/npc_sampleJ.txt‚ɂ̓XƒNƒŠƒvƒg‚Ì‘‚«•û‚ɂ‚¢‚ÄFX‚Èà–¾‚ª‹LÚ‚³‚ê‚Ä‚¢‚Ü‚·B + ‚à‚µA“ÆŽ©‚ÌMapÝ’è‚ðs‚Á‚Ä‚Ý‚½‚¢l‚âAƒXƒNƒŠƒvƒg‚ð˜M‚肽‚¢•û‚ÍŽQl‚É‚µ‚Ä‚‚¾‚³‚¢B + ‚½‚¾‚µAŠJ”’†‚Ì‚½‚߃XƒNƒŠƒvƒg‚ÌŽd—l‚ª•ÏX‚³‚ê‚é‰Â”\«‚ª‚‚¢‚Å‚·B + command.txt‚É‚ÍŽÀ‘•Ï‚Ý‚Ì“ÁŽêƒRƒ}ƒ“ƒh‚ɂ‚¢‚Ä‚Ìà–¾‚ð‹LÚ‚µ‚Ä‚¢‚Ü‚·B + + +5. Œ»Ý‚ÌŽd—l + –{ŽI‚Æ”ä‚ׂè‚©‚µ‚¢(—Ⴆ‚΃vƒo‚ª•à‚Aƒ|ƒŠƒ“‚ªƒAƒCƒeƒ€‚ðE‚í‚È‚¢‚È‚Ç)“_‚ÍA + ‘S‚ÄŒ»ÝŠJ”’†‚Ɉö‚é‚à‚Ì‚Å‚·B + Œ»ó‚Æ‚µ‚ăLƒƒƒ‰ƒNƒ^Œn‹y‚у‚ƒ“ƒXƒ^[Œn‚̃oƒO•ñ‚Í–³Ž‹‚³‚ê‚é‰Â”\«‚ª‚‚¢‚Å‚·B + + ƒoƒO•ñ‚ɂ‚¢‚Ä•K‚¸”¶ðŒ‚ð‚¨‘‚«‰º‚³‚¢B + ‰º‚É‚ ‚é•ñ—pƒeƒ“ƒvƒŒ[ƒg‚ðŽg‚Á‚Ä•ñ‚µ‚Ä’¸‚‚Æ•‚©‚è‚Ü‚·B + •ñæ‚̓Gƒ~ƒ…”‚̊J”ƒXƒŒ‚É‚Å‚àB + ---- Athena v 2.0 (stable or develop) ---- + ygcc verzgcc -v‚ðŽÀsŽž‚É•\Ž¦‚³‚ê‚é“à—e + y“®ìƒVƒXƒeƒ€zFreeBSD, Linux(ƒfƒBƒXƒgƒŠƒrƒ…[ƒWƒ‡ƒ“‚à), cygwin‚È‚Ç + y”¶“à—ezmap‚ª—Ž‚¿‚Ä‚µ‚Ü‚Á‚½Žž‚Ì•\Ž¦‚³‚ê‚Ä‚¢‚½ƒfƒoƒbƒOî•ñ‚È‚Ç‹ï‘Ì“I‚É‘‚¢‚Ä‚‚¾‚³‚¢B + y‘€ì“à—ez‹ï‘Ì“I‚É‚Ç‚ñ‚È‘€ì‚ðs‚Á‚½‚©‚ð‘‚¢‚Ä‚‚¾‚³‚¢B + ------------------ END ------------------- + —‘z‚̓eƒ“ƒvƒŒ‚ɉÁ‚¦‚Ämap.core‚È‚Çcoreƒtƒ@ƒCƒ‹‚ðUploader‚ɃAƒbƒv‚µ‚Ä’¸‚‚±‚Æ‚Å‚·‚ª + –â‘è‚ÌMap‚¾‚¯‚Ìó‘Ô‚É‚µcore‚Ì“f‚—e—Ê‚É’ˆÓ‚µ‚Ä‚‚¾‚³‚¢B + /* + Šm”F‚µ‚½ŒÀ‚è‚Å‚Í324ŒÂ‚Ù‚Çmapƒf[ƒ^‚ð“Ç‚Ýž‚Ü‚¹‚é‚ÆA + 40MB‹ß‚¢coreƒtƒ@ƒCƒ‹‚ð“f‚«o‚µ‚Ü‚· @FreeBSD + cygwin‚ÌꇂÍstackdump‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚É‚È‚é‚»‚¤‚Å‚·B + ‚µ‚©‚µAcoreƒtƒ@ƒCƒ‹‚È‚Ç‚ðgzipˆ³k‚È‚Ç‚·‚ê‚Α啂ɬ‚³‚‚È‚è‚Ü‚·B + ‘å–}30MB‚Ìcoreƒtƒ@ƒCƒ‹‚ª2.9MB‚Ù‚Ç‚É‚È‚é‚悤‚Å‚·B + ‚Å‚·‚Ì‚ÅA‚à‚µƒAƒbƒvƒ[ƒh‚·‚éꇂÍgzipˆ³k‚È‚ÇŠeŽ©s‚Á‚Ä‚‚¾‚³‚¢B + */ + + ¡‰ñ‚̃ŠƒŠ[ƒX‚¾‚¯‚Å‚È‚HISTORY‚ð쬂·‚é‚Æ‘å—Ê‚É‹Lq‚ª•K—v‚Ȉ×È—ª‚µ‚Ä‚¢‚Ü‚·B + // ‘½‚¢“ú‚¾‚Æ–{“–‚ÉŒ‹\‚ ‚è‚Ü‚·‚Ì‚ÅddB + + +6. jŽ« + ¡‰ñ‚±‚ÌAthenaŠJ””Å‚ðo‚·‚É“–‚½‚Á‚ÄŠ´ŽÓ‚µ‚½‚¢•ûX(‡”Ô•s“¯) + LemmingŽ (Project YARE) + 0052Ž (Uploader) + 35Ž (ƒGƒ~ƒ…ŠJ”ƒXƒŒ) + Johan LindhŽ(Author of memwatch) + YARE forum‚ÌNPCî•ñ‚ð쬂µ‚½•ûX + weissŒ¤‹†‰ïBBS‚Ì—lX‚Èî•ñƒtƒ@ƒCƒ‹‚ð쬂µ‚½•ûX + ÅŒã‚ÉA.coreƒtƒ@ƒCƒ‹’B + + +7. –ÆÓŽ–€ + Athena Project‚͈êØAthena‚Ì“®ì‚ÉŠÖ‚·‚é•ÛØ“™‚Ís‚¢‚Ü‚¹‚ñB + ‚‚܂èAAthena‚Í–³•ÛØ‚Å‚·B + athena@project-yare.de‚É“®ìE‘€ì“™‚ÉŠÖ‚·‚鎿–â‚È‚Ç‚ð‘—‚ç‚ê‚Ä‚àˆêØ‚¨“š‚¦‚Å‚«‚Ü‚¹‚ñB + –”Athena‚ð—p‚¢‚½‚±‚Æ‚É‚æ‚趂¶‚½”íŠQE–â‘è“™‚ÌÓ”C‚͈êØAthena Project‚Í•‰‚¢‚Ü‚¹‚ñB + + +8. •åW + athena‚ÌŠJ”‚ÉŽQ‰Á‚µ‚½‚¢//‹»–¡‚ª‚ ‚é‚Æ‚¢‚¤•û‚²˜A—‰º‚³‚¢B + ‰äX‚Í‹M•û‚ÌŽQ‰Á‚ð‚¨‘Ò‚¿‚µ‚Ä‚¢‚Ü‚·B + // ÅV”Å‚ª—~‚µ‚¢‚¾‚¯‚ʼn½‚狦—Í‚µ‚Ä’¸‚¯‚È‚¢‚Æ‚¢‚¤•û‚Í‚¨’f‚è‚Å‚·;-) + [•åW—v€: ƒvƒƒOƒ‰ƒ}(2-3l)] + ”N—î: •s–â + «•Ê: •s–â + Œ¾Œê: “ú–{Œê‚ª—‰ð‰Â”\ + “à—e: CŒ¾Œê‚à‚µ‚‚ÍC++‚É‚æ‚éŠJ”B(“Á‚Ƀlƒbƒgƒ[ƒN‚âDB‚ÌŒoŒ±‚ª—L‚é•û‘å•åW!) + [•åW—v€: –|–ó(?l)] + ”N—î: •s–â + «•Ê: •s–â + Œ¾Œê: “ú–{ŒêA‰pŒê‚ª—‰ð‰Â”\ + “à—e: •§—–¼ŒêA“ƈíŒêA¼”ljåŒêAˆÉ‘¾—˜ˆŸŒêA‘×(ƒ^ƒC)ŒêA’©‘NŒêA’†‘Œê‚Ö•¶Œ£AƒTƒCƒg‚È‚Ç‚Ì–|–ó + ˜A—æ: athena@project-yare.de ŽG–±’S“–‚Ü‚ÅB + + +9. English + This release is just fixed some bugs in timer.c, script.c and map_athena1.conf. + + +(c) 2003 Athena Project. diff --git a/doc/history.txt b/doc/history.txt index f0d33b4..a6653d9 100644 --- a/doc/history.txt +++ b/doc/history.txt @@ -1,173 +1,173 @@ -Version 1.4.4
-===========================================================
-- Fixed a bug that caused the drop chance for all MVP drops
- to become 0 when the "View Mob" option was used in the
- Mob Drop List. (This was forgotten in the previous
- update.)
-- Finally updated the "item_descriptions.txt" file.
-
-Version 1.4.3
-===========================================================
-- Fixed a bug that caused the drop chance for all drops to
- become 0 when the "View Mob" option was used in the Mob
- Drop List.
-- Fixed a bug that caused other mob entries to show up when
- searching for a specific mob with an ID that can be found
- as a string subset within the other mob's entry.
-- Fixed a bug that caused all new entries to go into the
- "item_db2.txt" or "mob_db2.txt" files.
-- Tweaked some of the code for the Mob Skill Editor's
- interface to better help with editing/creating skill
- entries.
-
-Version 1.4.2
-===========================================================
-- Corrected the labels on the Mob Location Editor window.
- Thanks to ShadowLady for pointing this out.
-
-Version 1.4.1
-===========================================================
-- Added functionality to the "Locations" button in the Mob
- View. It will now open up the Mob Location Editor window.
-- Added a list of map names with a brief description to the
- "ID Helper.txt" file to be used with the Map Helper.
-- Added a new option in the "ADE.ini" file that points to
- the location of the files with the mobs' spawn points.
-- Fixed a bug with the Drop List feature that would keep
- the window open till it was closed by the cancel button
- or the window's close button.
-- Fixed a bug that caused the selected entry to not
- properly update when saved. Thanks to Taike for reporting
- this bug.
-- Redid the code for handling backups. So now when you
- restore the backup files, it won't reload both the item
- and mob related files, it only restores the backups for
- item related files while using the Item View and mob
- related files for the Mob View, and it will no longer
- rename files as a backup file if they have no backup to
- replace them with.
-
-Version 1.4.0
-===========================================================
-- Added the Mob Skill Editor feature to ADE. It is
- available through the Skills button in the Mob View.
- This adds handling of the "mob_skill_db.txt" file.
-- Fixed a bug with the Mob's Mode ID Helper that caused
- the value to keep increasing everytime it was opened
- beyond the first time. Thanks to Lupus for pointing this
- out.
-- Changed the font to Microsoft Sans Serif from MS Sans
- Serif to better support the garbled text some items,
- mobs, or other things may have.
-
-Version 1.3.2
-===========================================================
-- Edited the print functions related to the the following
- DB files: "item_bluebox.txt", "item_cardalbum.txt",
- "item_giftbox.txt", "item_violetbox.txt", and
- "mob_branch.txt". Thanks to ShadowLady for pointing out
- this problem, as well as mentioning the label change
- mentioned below.
-- Edited a label for Mob Modes in ID Helper from
- "Detects Hidden (Sensor)" to "Detects Hidden".
-- Redid some of the code in the data processing subroutine
- for the Item and Mob DB files. This should prevent any
- overflow/invalid index errors. Thanks to Cheex for
- pointing this out.
-- Fixed a bug that caused ADE to crash if any of the files
- it would normally create backups of weren't there. This
- is more common among eAthena 1.0 RCx Text installs, due
- to their lack of an "item_db2.txt" file. (This occured
- while trying to save changes.)
-
-Version 1.3.1
-===========================================================
-- Added an ID Helper for the Mob Mode ID section.
-- You can now see a list of all mobs that drop the selected
- item in ADE's Item View by clicking on the button in the
- upper right corner that's labeled "Mob Drop List".
-
-Version 1.3.0
-===========================================================
-- Added support for handling five more of the server's DB
- files. ADE now handles: "item_bluebox.txt",
- "item_cardalbum.txt", "item_giftbox.txt",
- "item_violetbox.txt", and "mob_branch.txt".
-- Added a "Restore Backup Files" option in the File menu.
-- Changed "Revert" to "Revert to Last Save".
-- ADE now inserts a blank comment line after the initial
- header line and the last line for most of the server
- files.
-- ADE will automatically set the compatability mode to
- support higher jobs, if it reads in a job ID for any such
- jobs while set for low jobs only.
-- Fixed a couple of minor bugs and tweaked some of the code.
-
-Version 1.2.0
-===========================================================
-- Added support for generating the item files related to
- card labels. The files are "cardpostfixnametable.txt" and
- "cardprefixnametable.txt". The file "card_labels.txt" is
- used to hold the card labels. (To create it, just copy
- any "cardprefixnametable.txt" file to the DB folder being
- used and rename it to "card_labels.txt".)
-- Fixed a bug found by Solid that caused the program to end
- when a Mob's entry had an invalid Race ID or Element ID.
- Also applied this same fix to some of the other IDs that
- were vunerable.
-- Resized the maximum entries allowed for both Items and
- Mobs. Items now have a current max of 15,000 entries and
- Mobs have a max of 1,000. Both used to have 10,000.
-- Included a minimum ID and max ID allowed when dealing
- with either Items or Mobs. The new Item ID range is 501
- to 15000, and the new Mob ID range is 1001 to 2000. Any
- entries with IDs out of the range won't be kept.
-- Slightly redid some of the code with printing the headers
- of all files made with the program.
-
-Version 1.1.1
-===========================================================
-- Fixed a bug that caused the duplicate scan process to be
- used again during adding and removing entries.
-- Replaced the text box for the Item's Sex ID with a combo
- box. (The Item's Sex ID is used to determine if the item
- is limited to a character's sex or can be used by all.)
-- Added the ID Helper for the Item View ID text box, and
- included a file called "Item Helper.txt" that contains
- the data for it.
-- Fixed a bug that caused the "Allow High Jobs" option for
- compatibility to be turned on when even with it set to
- being off by default.
-- Added a small bit of code to print "All Low Jobs" for
- the description files for any items that only allow
- characters with low jobs only to use the item.
-- Added a temp fix for any forms that can get stuck behind
- the main window by allowing them to show up in the
- taskbar.
-
-Version 1.1.0
-===========================================================
-- Added support for higher jobs like Knight Lord, Assassin
- Cross, High Priest, etc.
-- Added duplication scanning for the DB entries. This will
- remove duplicates found. (An entry is considered a
- duplicate if the ID or DBName is the same.)
-- Fixed a bug that would cause the program to keep loading
- if you closed the progress bar during startup.
-
-Version 1.0.1
-===========================================================
-- Fixed a bug that caused a null mob DB entry.
-- Added some code to let the program load even if it didn't
- find the files used for loading.
-- Redid small portions of the code to increase performance.
-
-Version 1.0.0
-===========================================================
-- Merged the previous programs.
-- Added a mob DB file editor.
-
-Version 0.X
-===========================================================
-- Created Stand-alone Item Database Editor.
-- Created Stand-alone Item File Generator.
+Version 1.4.4 +=========================================================== +- Fixed a bug that caused the drop chance for all MVP drops + to become 0 when the "View Mob" option was used in the + Mob Drop List. (This was forgotten in the previous + update.) +- Finally updated the "item_descriptions.txt" file. + +Version 1.4.3 +=========================================================== +- Fixed a bug that caused the drop chance for all drops to + become 0 when the "View Mob" option was used in the Mob + Drop List. +- Fixed a bug that caused other mob entries to show up when + searching for a specific mob with an ID that can be found + as a string subset within the other mob's entry. +- Fixed a bug that caused all new entries to go into the + "item_db2.txt" or "mob_db2.txt" files. +- Tweaked some of the code for the Mob Skill Editor's + interface to better help with editing/creating skill + entries. + +Version 1.4.2 +=========================================================== +- Corrected the labels on the Mob Location Editor window. + Thanks to ShadowLady for pointing this out. + +Version 1.4.1 +=========================================================== +- Added functionality to the "Locations" button in the Mob + View. It will now open up the Mob Location Editor window. +- Added a list of map names with a brief description to the + "ID Helper.txt" file to be used with the Map Helper. +- Added a new option in the "ADE.ini" file that points to + the location of the files with the mobs' spawn points. +- Fixed a bug with the Drop List feature that would keep + the window open till it was closed by the cancel button + or the window's close button. +- Fixed a bug that caused the selected entry to not + properly update when saved. Thanks to Taike for reporting + this bug. +- Redid the code for handling backups. So now when you + restore the backup files, it won't reload both the item + and mob related files, it only restores the backups for + item related files while using the Item View and mob + related files for the Mob View, and it will no longer + rename files as a backup file if they have no backup to + replace them with. + +Version 1.4.0 +=========================================================== +- Added the Mob Skill Editor feature to ADE. It is + available through the Skills button in the Mob View. + This adds handling of the "mob_skill_db.txt" file. +- Fixed a bug with the Mob's Mode ID Helper that caused + the value to keep increasing everytime it was opened + beyond the first time. Thanks to Lupus for pointing this + out. +- Changed the font to Microsoft Sans Serif from MS Sans + Serif to better support the garbled text some items, + mobs, or other things may have. + +Version 1.3.2 +=========================================================== +- Edited the print functions related to the the following + DB files: "item_bluebox.txt", "item_cardalbum.txt", + "item_giftbox.txt", "item_violetbox.txt", and + "mob_branch.txt". Thanks to ShadowLady for pointing out + this problem, as well as mentioning the label change + mentioned below. +- Edited a label for Mob Modes in ID Helper from + "Detects Hidden (Sensor)" to "Detects Hidden". +- Redid some of the code in the data processing subroutine + for the Item and Mob DB files. This should prevent any + overflow/invalid index errors. Thanks to Cheex for + pointing this out. +- Fixed a bug that caused ADE to crash if any of the files + it would normally create backups of weren't there. This + is more common among eAthena 1.0 RCx Text installs, due + to their lack of an "item_db2.txt" file. (This occured + while trying to save changes.) + +Version 1.3.1 +=========================================================== +- Added an ID Helper for the Mob Mode ID section. +- You can now see a list of all mobs that drop the selected + item in ADE's Item View by clicking on the button in the + upper right corner that's labeled "Mob Drop List". + +Version 1.3.0 +=========================================================== +- Added support for handling five more of the server's DB + files. ADE now handles: "item_bluebox.txt", + "item_cardalbum.txt", "item_giftbox.txt", + "item_violetbox.txt", and "mob_branch.txt". +- Added a "Restore Backup Files" option in the File menu. +- Changed "Revert" to "Revert to Last Save". +- ADE now inserts a blank comment line after the initial + header line and the last line for most of the server + files. +- ADE will automatically set the compatability mode to + support higher jobs, if it reads in a job ID for any such + jobs while set for low jobs only. +- Fixed a couple of minor bugs and tweaked some of the code. + +Version 1.2.0 +=========================================================== +- Added support for generating the item files related to + card labels. The files are "cardpostfixnametable.txt" and + "cardprefixnametable.txt". The file "card_labels.txt" is + used to hold the card labels. (To create it, just copy + any "cardprefixnametable.txt" file to the DB folder being + used and rename it to "card_labels.txt".) +- Fixed a bug found by Solid that caused the program to end + when a Mob's entry had an invalid Race ID or Element ID. + Also applied this same fix to some of the other IDs that + were vunerable. +- Resized the maximum entries allowed for both Items and + Mobs. Items now have a current max of 15,000 entries and + Mobs have a max of 1,000. Both used to have 10,000. +- Included a minimum ID and max ID allowed when dealing + with either Items or Mobs. The new Item ID range is 501 + to 15000, and the new Mob ID range is 1001 to 2000. Any + entries with IDs out of the range won't be kept. +- Slightly redid some of the code with printing the headers + of all files made with the program. + +Version 1.1.1 +=========================================================== +- Fixed a bug that caused the duplicate scan process to be + used again during adding and removing entries. +- Replaced the text box for the Item's Sex ID with a combo + box. (The Item's Sex ID is used to determine if the item + is limited to a character's sex or can be used by all.) +- Added the ID Helper for the Item View ID text box, and + included a file called "Item Helper.txt" that contains + the data for it. +- Fixed a bug that caused the "Allow High Jobs" option for + compatibility to be turned on when even with it set to + being off by default. +- Added a small bit of code to print "All Low Jobs" for + the description files for any items that only allow + characters with low jobs only to use the item. +- Added a temp fix for any forms that can get stuck behind + the main window by allowing them to show up in the + taskbar. + +Version 1.1.0 +=========================================================== +- Added support for higher jobs like Knight Lord, Assassin + Cross, High Priest, etc. +- Added duplication scanning for the DB entries. This will + remove duplicates found. (An entry is considered a + duplicate if the ID or DBName is the same.) +- Fixed a bug that would cause the program to keep loading + if you closed the progress bar during startup. + +Version 1.0.1 +=========================================================== +- Fixed a bug that caused a null mob DB entry. +- Added some code to let the program load even if it didn't + find the files used for loading. +- Redid small portions of the code to increase performance. + +Version 1.0.0 +=========================================================== +- Merged the previous programs. +- Added a mob DB file editor. + +Version 0.X +=========================================================== +- Created Stand-alone Item Database Editor. +- Created Stand-alone Item File Generator. diff --git a/doc/readme.txt b/doc/readme.txt index 59c7eb7..0fd0c89 100644 --- a/doc/readme.txt +++ b/doc/readme.txt @@ -1,122 +1,122 @@ -*************************** NOTICE ***************************
-**************************************************************
-
-This program is free to use for any non-commercial private RO
-server running an Athena based server, and is povided as-is.
-The author of this program is only responsible for errors
-that occur only to this program while it is in operation,
-provided the program has not been modified in any way. If you
-come across any errors or would like to leave comments and/or
-suggestions about this program, please feel free to notify the
-author of this program at spamrat42@gmail.com.
-
-Please make sure to create a backup of your current database
-files and your data folder prior to using this program.
-
-==============================================================
-
-This package contains the following files...
-
-ADE.ini
-Athena Database Editor.exe
-history.txt
-ID Helper.txt
-readme.txt
-
-sample data (empty folder)
-
-sample db (folder)
- card_labels.txt
- item_descriptions.txt
-
-sample mobs (empty folder)
-
-==============================================================
-= NOTE: All packages from 1.4.1 and newer will not include the
-= files from the latest eAthena server distribution. So
-= make sure to copy your current files from your server
-= into the appropriate folders listed above, or set the
-= correct paths in the ADE.ini file.
-==============================================================
-
-Thank you for downloading this tool I wrote for the eAthena
-817 Text based server, but it should work even with the more
-recent versions like eAthena 1.0 RC5. I hope you find this
-tool to be useful.
-
-The files in the db folder that come with this program are
-custom files that are to be used with ADE. To change the
-directory that this program looks in when opening or saving
-files, open the ADE.ini file and enter the full or relative
-path. The ADE.ini when first installed will already be
-pointing to the relative folders listed above. You can also
-simply copy your current db files to those folders, allowing
-you to edit them without editing the db files you're
-currently using.
-
-All entries that have been commented out will not be read,
-and won't be carried over into the new DB files. So please
-make sure to back them up before using this program for the
-first time. I will eventually add support for handling
-commented lines in future versions.
-
-One of the main features of this program will let you create
-updated files for the client's data folder as well as update
-the other relative db files for the server. When using this
-feature, the following files will be created...
-
-DB Folder - Server Files
-================================
-class_equip_db.txt
-item_value_db.txt
-
-Data Folder - Client Files
-================================
-cardpostfixnametable.txt
-cardprefixnametable.txt
-idnum2itemdesctable.txt
-idnum2itemdisplaynametable.txt
-itemslotcounttable.txt
-num2itemdesctable.txt
-num2itemdisplaynametable.txt
-
-Note: There is a checkbox that will say to click it if the
- descriptions are garbled. Please only check after
- trying the default description files it produces.
-
-If there are any files you think that were left out
-that should have been updated as well for the client's
-data folder, please let me know at the email address
-provided above.
-
-The item_descriptions.txt file is where all of the
-descriptions are stored. Please note if you're manually
-changing something in it, that you should the » character
-for a new line. (Use ALT + 175 to type it.) It should
-currently have the majority of the basic descriptions.
-You won't need to add how much defense or the attack
-power of equipment, as it will automatically be added
-when the files are created. (It gets the values directly
-from the item db files.)
-
-The card_labels.txt file is where all the card labels are
-stored. If you already have a custom set of card labels,
-just copy the cardprefixnametable.txt file from your data
-folder into the db folder and rename it to card_labels.txt.
-Any missing labels will or blank labels will result in the
-default label of "Carded" as a prefix.
-
-I will eventually try to update this program to try
-including other db files as well as to help make sure
-it works with all versions of the eAthena text based
-server from 817 to the current version. I'll also try
-to add more support for other files that are also needed
-to be generated for the client's data folder.
-
-==============================================================
-= NOTE 2: The item_descriptions.txt file that comes with this
-= package has incorrect and blank entries. Please make
-= sure to go over all the descriptions if you plan on
-= using it to generate description files for your
-= server's data folder.
-==============================================================
+*************************** NOTICE *************************** +************************************************************** + +This program is free to use for any non-commercial private RO +server running an Athena based server, and is povided as-is. +The author of this program is only responsible for errors +that occur only to this program while it is in operation, +provided the program has not been modified in any way. If you +come across any errors or would like to leave comments and/or +suggestions about this program, please feel free to notify the +author of this program at spamrat42@gmail.com. + +Please make sure to create a backup of your current database +files and your data folder prior to using this program. + +============================================================== + +This package contains the following files... + +ADE.ini +Athena Database Editor.exe +history.txt +ID Helper.txt +readme.txt + +sample data (empty folder) + +sample db (folder) + card_labels.txt + item_descriptions.txt + +sample mobs (empty folder) + +============================================================== += NOTE: All packages from 1.4.1 and newer will not include the += files from the latest eAthena server distribution. So += make sure to copy your current files from your server += into the appropriate folders listed above, or set the += correct paths in the ADE.ini file. +============================================================== + +Thank you for downloading this tool I wrote for the eAthena +817 Text based server, but it should work even with the more +recent versions like eAthena 1.0 RC5. I hope you find this +tool to be useful. + +The files in the db folder that come with this program are +custom files that are to be used with ADE. To change the +directory that this program looks in when opening or saving +files, open the ADE.ini file and enter the full or relative +path. The ADE.ini when first installed will already be +pointing to the relative folders listed above. You can also +simply copy your current db files to those folders, allowing +you to edit them without editing the db files you're +currently using. + +All entries that have been commented out will not be read, +and won't be carried over into the new DB files. So please +make sure to back them up before using this program for the +first time. I will eventually add support for handling +commented lines in future versions. + +One of the main features of this program will let you create +updated files for the client's data folder as well as update +the other relative db files for the server. When using this +feature, the following files will be created... + +DB Folder - Server Files +================================ +class_equip_db.txt +item_value_db.txt + +Data Folder - Client Files +================================ +cardpostfixnametable.txt +cardprefixnametable.txt +idnum2itemdesctable.txt +idnum2itemdisplaynametable.txt +itemslotcounttable.txt +num2itemdesctable.txt +num2itemdisplaynametable.txt + +Note: There is a checkbox that will say to click it if the + descriptions are garbled. Please only check after + trying the default description files it produces. + +If there are any files you think that were left out +that should have been updated as well for the client's +data folder, please let me know at the email address +provided above. + +The item_descriptions.txt file is where all of the +descriptions are stored. Please note if you're manually +changing something in it, that you should the » character +for a new line. (Use ALT + 175 to type it.) It should +currently have the majority of the basic descriptions. +You won't need to add how much defense or the attack +power of equipment, as it will automatically be added +when the files are created. (It gets the values directly +from the item db files.) + +The card_labels.txt file is where all the card labels are +stored. If you already have a custom set of card labels, +just copy the cardprefixnametable.txt file from your data +folder into the db folder and rename it to card_labels.txt. +Any missing labels will or blank labels will result in the +default label of "Carded" as a prefix. + +I will eventually try to update this program to try +including other db files as well as to help make sure +it works with all versions of the eAthena text based +server from 817 to the current version. I'll also try +to add more support for other files that are also needed +to be generated for the client's data folder. + +============================================================== += NOTE 2: The item_descriptions.txt file that comes with this += package has incorrect and blank entries. Please make += sure to go over all the descriptions if you plan on += using it to generate description files for your += server's data folder. +============================================================== diff --git a/misc/scripts/start b/misc/scripts/start index f73fafd..e80d507 100644 --- a/misc/scripts/start +++ b/misc/scripts/start @@ -1,32 +1,32 @@ -# /bin/bash
-
-./athena-start start
-sleep 30
-
-while [ true ] ; do
-if [ " 0" = "$(ps | grep -e login | wc -l)" ] ||
- [ " 0" = "$(ps | grep -e char | wc -l)" ] ||
- [ " 0" = "$(ps | grep -e map | wc -l)" ]; then
-printf "Error:"
-date
- sleep 10
- printf "Checking:"
- date
- if [ " 0" = "$(ps | grep -e login | wc -l)" ] ||
- [ " 0" = "$(ps | grep -e char | wc -l)" ] ||
- [ " 0" = "$(ps | grep -e map | wc -l)" ]; then
- printf "Error Confirmation:"
- date
- printf "Restoration:"
- date
- ./athena-start start
- else
- printf "Check Miss Sorry:"
- date
- fi
-else
-#printf "Check OK:"
-#date
-fi
-sleep 10
+# /bin/bash + +./athena-start start +sleep 30 + +while [ true ] ; do +if [ " 0" = "$(ps | grep -e login | wc -l)" ] || + [ " 0" = "$(ps | grep -e char | wc -l)" ] || + [ " 0" = "$(ps | grep -e map | wc -l)" ]; then +printf "Error:" +date + sleep 10 + printf "Checking:" + date + if [ " 0" = "$(ps | grep -e login | wc -l)" ] || + [ " 0" = "$(ps | grep -e char | wc -l)" ] || + [ " 0" = "$(ps | grep -e map | wc -l)" ]; then + printf "Error Confirmation:" + date + printf "Restoration:" + date + ./athena-start start + else + printf "Check Miss Sorry:" + date + fi +else +#printf "Check OK:" +#date +fi +sleep 10 done
\ No newline at end of file diff --git a/src/char/GNUmakefile b/src/char/GNUmakefile index dd21288..1725d51 100644 --- a/src/char/GNUmakefile +++ b/src/char/GNUmakefile @@ -1,17 +1,17 @@ -all: char-server
-txt: char-server
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/db.h ../common/lock.h ../common/timer.h ../common/malloc.h
-char-server: char.o inter.o int_party.o int_guild.o int_storage.o int_pet.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $^
-
-char.o: char.c char.h inter.h int_pet.h $(COMMON_H) ../common/version.h
-inter.o: inter.c inter.h int_party.h int_guild.h int_storage.h int_pet.h char.h $(COMMON_H)
-int_party.o: int_party.c int_party.h inter.h char.h $(COMMON_H)
-int_guild.o: int_guild.c int_guild.h int_storage.h inter.h char.h $(COMMON_H)
-int_storage.o: int_storage.c int_storage.h int_guild.h inter.h char.h $(COMMON_H)
-int_pet.o: int_pet.c int_pet.h inter.h char.h $(COMMON_H)
-
-clean:
- rm -f *.o ../../char-server
+all: char-server +txt: char-server + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/db.h ../common/lock.h ../common/timer.h ../common/malloc.h +char-server: char.o inter.o int_party.o int_guild.o int_storage.o int_pet.o $(COMMON_OBJ) + $(CC) -o ../../$@ $^ + +char.o: char.c char.h inter.h int_pet.h $(COMMON_H) ../common/version.h +inter.o: inter.c inter.h int_party.h int_guild.h int_storage.h int_pet.h char.h $(COMMON_H) +int_party.o: int_party.c int_party.h inter.h char.h $(COMMON_H) +int_guild.o: int_guild.c int_guild.h int_storage.h inter.h char.h $(COMMON_H) +int_storage.o: int_storage.c int_storage.h int_guild.h inter.h char.h $(COMMON_H) +int_pet.o: int_pet.c int_pet.h inter.h char.h $(COMMON_H) + +clean: + rm -f *.o ../../char-server diff --git a/src/char/Makefile b/src/char/Makefile index 6eaae48..65e2eb4 100644 --- a/src/char/Makefile +++ b/src/char/Makefile @@ -1,17 +1,17 @@ -all: char-server
-txt: char-server
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/db.h ../common/lock.h ../common/timer.h ../common/malloc.h
-char-server: char.o inter.o int_party.o int_guild.o int_storage.o int_pet.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $>
-
-char.o: char.c char.h inter.h int_pet.h $(COMMON_H) ../common/version.h
-inter.o: inter.c inter.h int_party.h int_guild.h int_storage.h int_pet.h char.h $(COMMON_H)
-int_party.o: int_party.c int_party.h inter.h char.h $(COMMON_H)
-int_guild.o: int_guild.c int_guild.h int_storage.h inter.h char.h $(COMMON_H)
-int_storage.o: int_storage.c int_storage.h int_guild.h inter.h char.h $(COMMON_H)
-int_pet.o: int_pet.c int_pet.h inter.h char.h $(COMMON_H)
-
-clean:
- rm -f *.o ../../char-server
+all: char-server +txt: char-server + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/db.h ../common/lock.h ../common/timer.h ../common/malloc.h +char-server: char.o inter.o int_party.o int_guild.o int_storage.o int_pet.o $(COMMON_OBJ) + $(CC) -o ../../$@ $> + +char.o: char.c char.h inter.h int_pet.h $(COMMON_H) ../common/version.h +inter.o: inter.c inter.h int_party.h int_guild.h int_storage.h int_pet.h char.h $(COMMON_H) +int_party.o: int_party.c int_party.h inter.h char.h $(COMMON_H) +int_guild.o: int_guild.c int_guild.h int_storage.h inter.h char.h $(COMMON_H) +int_storage.o: int_storage.c int_storage.h int_guild.h inter.h char.h $(COMMON_H) +int_pet.o: int_pet.c int_pet.h inter.h char.h $(COMMON_H) + +clean: + rm -f *.o ../../char-server diff --git a/src/char/diff.diff b/src/char/diff.diff index 61e91c7..d0f5d86 100644 --- a/src/char/diff.diff +++ b/src/char/diff.diff @@ -3,37 +3,37 @@ @@ -1,73 +1,100 @@ -// $Id: char.c,v 1.3 2004/09/13 16:52:16 Yor Exp $ -// original : char2.c 2003/03/14 11:58:35 Rev.1.5 -+// Copyright (c) Athena Dev Teams - Licensed under GNU GPL
-+// For more information, see LICENCE in the main folder
++// Copyright (c) Athena Dev Teams - Licensed under GNU GPL ++// For more information, see LICENCE in the main folder #include <sys/types.h> -#include <sys/socket.h> #include <stdio.h> #include <stdlib.h> -+
-+#ifdef _WIN32
-+#include <winsock.h>
-+typedef long in_addr_t;
-+#else
-+#include <sys/socket.h>
++ ++#ifdef _WIN32 ++#include <winsock.h> ++typedef long in_addr_t; ++#else ++#include <sys/socket.h> #include <netinet/in.h> -#include <sys/time.h> -#include <time.h> -+#include <arpa/inet.h>
-+#include <netdb.h>
++#include <arpa/inet.h> ++#include <netdb.h> #include <sys/ioctl.h> -+#include <sys/time.h>
++#include <sys/time.h> #include <unistd.h> -+#endif
-+
-+#include <time.h>
++#endif ++ ++#include <time.h> #include <signal.h> #include <fcntl.h> #include <string.h> -#include <arpa/inet.h> -#include <netdb.h> #include <stdarg.h> -+#include <limits.h>
++#include <limits.h> -#include "core.h" -#include "socket.h" @@ -42,18 +42,18 @@ -#include "version.h" -#include "lock.h" -#include "char.h" -+#include "../common/strlib.h"
-+#include "../common/core.h"
-+#include "../common/socket.h"
-+#include "../common/timer.h"
-+#include "../common/mmo.h"
-+#include "../common/db.h"
-+#include "../common/version.h"
-+#include "../common/lock.h"
-+#include "../common/showmsg.h"
-+#include "../common/malloc.h"
- -+#include "char.h"
++#include "../common/strlib.h" ++#include "../common/core.h" ++#include "../common/socket.h" ++#include "../common/timer.h" ++#include "../common/mmo.h" ++#include "../common/db.h" ++#include "../common/version.h" ++#include "../common/lock.h" ++#include "../common/showmsg.h" ++#include "../common/malloc.h" + ++#include "char.h" #include "inter.h" #include "int_pet.h" #include "int_guild.h" @@ -62,8 +62,8 @@ - -#ifdef MEMWATCH -#include "memwatch.h" -+#ifdef ENABLE_SC_SAVING
-+#include "int_status.h"
++#ifdef ENABLE_SC_SAVING ++#include "int_status.h" #endif struct mmo_map_server server[MAX_MAP_SERVERS]; @@ -77,28 +77,28 @@ char passwd[24]; char server_name[20]; -char wisp_server_name[24] = "Server"; -+char wisp_server_name[NAME_LENGTH] = "Server";
-+int login_ip_set_ = 0;
++char wisp_server_name[NAME_LENGTH] = "Server"; ++int login_ip_set_ = 0; char login_ip_str[16]; -int login_ip; -+in_addr_t login_ip;
++in_addr_t login_ip; int login_port = 6900; -+int char_ip_set_ = 0;
++int char_ip_set_ = 0; char char_ip_str[16]; -int char_ip; -+int bind_ip_set_ = 0;
-+char bind_ip_str[16];
-+in_addr_t char_ip;
++int bind_ip_set_ = 0; ++char bind_ip_str[16]; ++in_addr_t char_ip; int char_port = 6121; int char_maintenance; int char_new; -+int char_new_display;
++int char_new_display; int email_creation = 0; // disabled by default -char char_txt[1024]; -char backup_txt[1024]; //By zanetheinsane -+char char_txt[1024]="save/athena.txt";
-+char backup_txt[1024]="save/backup.txt"; //By zanetheinsane
-+char friends_txt[1024]="save/friends.txt"; // davidsiaw
++char char_txt[1024]="save/athena.txt"; ++char backup_txt[1024]="save/backup.txt"; //By zanetheinsane ++char friends_txt[1024]="save/friends.txt"; // davidsiaw char backup_txt_flag = 0; // The backup_txt file was created because char deletion bug existed. Now it's finish and that take a lot of time to create a second file when there are a lot of characters. => option By [Yor] char unknown_char_name[1024] = "Unknown"; char char_log_filename[1024] = "log/char.log"; @@ -106,27 +106,27 @@ -char lan_map_ip[128]; -int subneti[4]; -int subnetmaski[4]; -+char db_path[1024]="db";
-+
-+// Advanced subnet check [LuzZza]
-+struct _subnet {
-+ long subnet;
-+ long mask;
-+ long char_ip;
-+ long map_ip;
-+} subnet[16];
-+
-+int subnet_count = 0;
-+
++char db_path[1024]="db"; ++ ++// Advanced subnet check [LuzZza] ++struct _subnet { ++ long subnet; ++ long mask; ++ long char_ip; ++ long map_ip; ++} subnet[16]; ++ ++int subnet_count = 0; ++ int name_ignoring_case = 0; // Allow or not identical name for characters but with a different case by [Yor] int char_name_option = 0; // Option to know which letters/symbols are authorised in the name of a character (0: all, 1: only those in char_name_letters, 2: all EXCEPT those in char_name_letters) by [Yor] -+//The following are characters that are trimmed regardless because they cause confusion and problems on the servers. [Skotlex]
-+#define TRIM_CHARS "\032\t\n "
++//The following are characters that are trimmed regardless because they cause confusion and problems on the servers. [Skotlex] ++#define TRIM_CHARS "\032\t\n " char char_name_letters[1024] = ""; // list of letters/symbols authorised (or not) in a character name. by [Yor] -+int log_char = 1; // loggin char or not [devil]
-+int log_inter = 1; // loggin inter or not [devil]
-+
++int log_char = 1; // loggin char or not [devil] ++int log_inter = 1; // loggin inter or not [devil] ++ struct char_session_data{ int account_id, login_id1, login_id2, sex; int found_char[9]; @@ -134,35 +134,35 @@ int auth_fifo_pos = 0; int check_ip_flag = 1; // It's to check IP of a player between char-server and other servers (part of anti-hacking system) -+static int online_check = 1; //If one, it won't let players connect when their account is already registered online and will send the relevant map server a kick user request. [Skotlex]
-+
-+int char_id_count = START_CHAR_NUM;
-+struct character_data {
-+ struct mmo_charstatus status;
-+ int global_num;
-+ struct global_reg global[GLOBAL_REG_NUM];
-+} *char_dat;
++static int online_check = 1; //If one, it won't let players connect when their account is already registered online and will send the relevant map server a kick user request. [Skotlex] ++ ++int char_id_count = START_CHAR_NUM; ++struct character_data { ++ struct mmo_charstatus status; ++ int global_num; ++ struct global_reg global[GLOBAL_REG_NUM]; ++} *char_dat; -int char_id_count = 150000; -struct mmo_charstatus *char_dat; int char_num, char_max; int max_connect_user = 0; -+int gm_allow_level = 99;
++int gm_allow_level = 99; int autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; -+int save_log = 1;
++int save_log = 1; int start_zeny = 500; int start_weapon = 1201; -int start_armor = 1202; -+int start_armor = 2301;
-+
-+//Custom limits for the fame lists. [Skotlex]
-+int fame_list_size_chemist = MAX_FAME_LIST;
-+int fame_list_size_smith = MAX_FAME_LIST;
-+int fame_list_size_taekwon = MAX_FAME_LIST;
++int start_armor = 2301; ++ ++//Custom limits for the fame lists. [Skotlex] ++int fame_list_size_chemist = MAX_FAME_LIST; ++int fame_list_size_smith = MAX_FAME_LIST; ++int fame_list_size_taekwon = MAX_FAME_LIST; // Initial position (it's possible to set it in conf file) -struct point start_point = {"new_1-1.gat", 53, 111}; -+struct point start_point = { 0, 53, 111};
++struct point start_point = { 0, 53, 111}; struct gm_account *gm_account = NULL; int GM_num = 0; @@ -171,32 +171,32 @@ int online_gm_display_min_level = 20; // minimum GM level to display 'GM' when we want to display it -int *online_chars; // same size of char_dat, and id value of current server (or -1) -+//These are used to aid the map server in identifying valid clients. [Skotlex]
-+static int max_account_id = DEFAULT_MAX_ACCOUNT_ID, max_char_id = DEFAULT_MAX_CHAR_ID;
-+
-+struct online_char_data {
-+ int account_id;
-+ int char_id;
-+ short server;
-+ unsigned waiting_disconnect :1;
-+};
-+
-+struct dbt *online_char_db; //Holds all online characters.
-+
++//These are used to aid the map server in identifying valid clients. [Skotlex] ++static int max_account_id = DEFAULT_MAX_ACCOUNT_ID, max_char_id = DEFAULT_MAX_CHAR_ID; ++ ++struct online_char_data { ++ int account_id; ++ int char_id; ++ short server; ++ unsigned waiting_disconnect :1; ++}; ++ ++struct dbt *online_char_db; //Holds all online characters. ++ time_t update_online; // to update online files when we receiving information from a server (not less than 8 seconds) -+int console = 0;
-+
++int console = 0; ++ //------------------------------ // Writing function of logs file //------------------------------ int char_log(char *fmt, ...) { -+ if(log_char)
-+ {
++ if(log_char) ++ { FILE *logfp; va_list ap; - struct timeval tv; -+ time_t raw_time;
++ time_t raw_time; char tmpstr[2048]; va_start(ap, fmt); @@ -207,9 +207,9 @@ - gettimeofday(&tv, NULL); - strftime(tmpstr, 24, "%d-%m-%Y %H:%M:%S", localtime(&(tv.tv_sec))); - sprintf(tmpstr + 19, ".%03d: %s", (int)tv.tv_usec / 1000, fmt); -+ time(&raw_time);
-+ strftime(tmpstr, 24, "%d-%m-%Y %H:%M:%S", localtime(&raw_time));
-+ sprintf(tmpstr + 19, ": %s", fmt);
++ time(&raw_time); ++ strftime(tmpstr, 24, "%d-%m-%Y %H:%M:%S", localtime(&raw_time)); ++ sprintf(tmpstr + 19, ": %s", fmt); vfprintf(logfp, tmpstr, ap); } fclose(logfp); @@ -234,7 +234,7 @@ } - - return change; -+ return 0;
++ return 0; } //---------------------------------------------------------------------- @@ -243,10 +243,10 @@ for(i = 0; i < char_num; i++) { // Without case sensitive check (increase the number of similar character names found) - if (stricmp(char_dat[i].name, character_name) == 0) { -+ if (stricmp(char_dat[i].status.name, character_name) == 0) {
++ if (stricmp(char_dat[i].status.name, character_name) == 0) { // Strict comparison (if found, we finish the function immediatly with correct value) - if (strcmp(char_dat[i].name, character_name) == 0) -+ if (strcmp(char_dat[i].status.name, character_name) == 0)
++ if (strcmp(char_dat[i].status.name, character_name) == 0) return i; quantity++; index = i; @@ -255,148 +255,148 @@ if (index >= 0 && index < char_num) - return char_dat[index].name; -+ return char_dat[index].status.name;
++ return char_dat[index].status.name; return unknown_char_name; } -+static void * create_online_char_data(DBKey key, va_list args) {
-+ struct online_char_data* character;
-+ character = aCalloc(1, sizeof(struct online_char_data));
-+ character->account_id = key.i;
-+ character->char_id = -1;
-+ character->server = -1;
-+ return character;
-+}
-+
-+static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int data);
-+
++static void * create_online_char_data(DBKey key, va_list args) { ++ struct online_char_data* character; ++ character = aCalloc(1, sizeof(struct online_char_data)); ++ character->account_id = key.i; ++ character->char_id = -1; ++ character->server = -1; ++ return character; ++} ++ ++static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int data); ++ //------------------------------------------------- -// Function to create the character line (for save) -+// Set Character online/offline [Wizputer]
++// Set Character online/offline [Wizputer] //------------------------------------------------- -int mmo_char_tostr(char *str, struct mmo_charstatus *p) { -+
-+void set_char_online(int map_id, int char_id, int account_id) {
-+ struct online_char_data* character;
-+
-+ if ( char_id != 99 && (max_account_id < account_id || max_char_id < char_id))
-+ { //Notify map-server of the new max IDs [Skotlex]
-+ if (account_id > max_account_id)
-+ max_account_id = account_id;
-+ if (char_id > max_char_id)
-+ max_char_id = char_id;
-+ mapif_send_maxid(max_account_id, max_char_id);
-+ }
-+ character = idb_ensure(online_char_db, account_id, create_online_char_data);
-+ if (online_check && character->char_id != -1 && character->server > -1 && character->server != map_id)
-+ {
-+ ShowNotice("set_char_online: Character %d:%d marked in map server %d, but map server %d claims to have (%d:%d) online!\n",
-+ character->account_id, character->char_id, character->server, map_id, account_id, char_id);
-+ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2);
-+ }
-+ character->waiting_disconnect = 0;
-+ character->char_id = (char_id==99)?-1:char_id;
-+ character->server = (char_id==99)?-1:map_id;
-+
-+ if (login_fd <= 0 || session[login_fd]->eof)
-+ return;
-+ WFIFOHEAD(login_fd, 6);
-+ WFIFOW(login_fd,0) = 0x272b;
-+ WFIFOL(login_fd,2) = account_id;
-+ WFIFOSET(login_fd,6);
-+
-+ //printf ("set online\n");
-+}
-+void set_char_offline(int char_id, int account_id) {
-+ struct online_char_data* character;
-+
-+ if ((character = idb_get(online_char_db, account_id)) != NULL)
-+ { //We don't free yet to avoid aCalloc/aFree spamming during char change. [Skotlex]
-+ character->char_id = -1;
-+ character->server = -1;
-+ character->waiting_disconnect = 0;
-+ }
-+ if (login_fd <= 0 || session[login_fd]->eof)
-+ return;
-+ WFIFOHEAD(login_fd, 6);
-+ WFIFOW(login_fd,0) = 0x272c;
-+ WFIFOL(login_fd,2) = account_id;
-+ WFIFOSET(login_fd,6);
-+
-+}
-+
-+static int char_db_setoffline(DBKey key, void* data, va_list ap) {
-+ struct online_char_data* character = (struct online_char_data*)data;
-+ int server = va_arg(ap, int);
-+ if (server == -1) {
-+ character->char_id = -1;
-+ character->server = -1;
-+ character->waiting_disconnect = 0;
-+ } else if (character->server == server)
-+ character->server = -2; //In some map server that we aren't connected to.
-+ return 0;
-+}
-+
-+void set_all_offline(void) {
-+ online_char_db->foreach(online_char_db,char_db_setoffline,-1);
-+ if (login_fd <= 0 || session[login_fd]->eof)
-+ return;
-+ WFIFOHEAD(login_fd, 6);
-+ WFIFOW(login_fd,0) = 0x272c;
-+ WFIFOL(login_fd,2) = 99;
-+ WFIFOSET(login_fd,6);
-+
-+ //printf ("set all offline\n");
-+}
-+
-+/*---------------------------------------------------
-+ Make a data line for friends list
-+ --------------------------------------------------*/
-+
-+int mmo_friends_list_data_str(char *str, struct mmo_charstatus *p) {
++ ++void set_char_online(int map_id, int char_id, int account_id) { ++ struct online_char_data* character; ++ ++ if ( char_id != 99 && (max_account_id < account_id || max_char_id < char_id)) ++ { //Notify map-server of the new max IDs [Skotlex] ++ if (account_id > max_account_id) ++ max_account_id = account_id; ++ if (char_id > max_char_id) ++ max_char_id = char_id; ++ mapif_send_maxid(max_account_id, max_char_id); ++ } ++ character = idb_ensure(online_char_db, account_id, create_online_char_data); ++ if (online_check && character->char_id != -1 && character->server > -1 && character->server != map_id) ++ { ++ ShowNotice("set_char_online: Character %d:%d marked in map server %d, but map server %d claims to have (%d:%d) online!\n", ++ character->account_id, character->char_id, character->server, map_id, account_id, char_id); ++ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2); ++ } ++ character->waiting_disconnect = 0; ++ character->char_id = (char_id==99)?-1:char_id; ++ character->server = (char_id==99)?-1:map_id; ++ ++ if (login_fd <= 0 || session[login_fd]->eof) ++ return; ++ WFIFOHEAD(login_fd, 6); ++ WFIFOW(login_fd,0) = 0x272b; ++ WFIFOL(login_fd,2) = account_id; ++ WFIFOSET(login_fd,6); ++ ++ //printf ("set online\n"); ++} ++void set_char_offline(int char_id, int account_id) { ++ struct online_char_data* character; ++ ++ if ((character = idb_get(online_char_db, account_id)) != NULL) ++ { //We don't free yet to avoid aCalloc/aFree spamming during char change. [Skotlex] ++ character->char_id = -1; ++ character->server = -1; ++ character->waiting_disconnect = 0; ++ } ++ if (login_fd <= 0 || session[login_fd]->eof) ++ return; ++ WFIFOHEAD(login_fd, 6); ++ WFIFOW(login_fd,0) = 0x272c; ++ WFIFOL(login_fd,2) = account_id; ++ WFIFOSET(login_fd,6); ++ ++} ++ ++static int char_db_setoffline(DBKey key, void* data, va_list ap) { ++ struct online_char_data* character = (struct online_char_data*)data; ++ int server = va_arg(ap, int); ++ if (server == -1) { ++ character->char_id = -1; ++ character->server = -1; ++ character->waiting_disconnect = 0; ++ } else if (character->server == server) ++ character->server = -2; //In some map server that we aren't connected to. ++ return 0; ++} ++ ++void set_all_offline(void) { ++ online_char_db->foreach(online_char_db,char_db_setoffline,-1); ++ if (login_fd <= 0 || session[login_fd]->eof) ++ return; ++ WFIFOHEAD(login_fd, 6); ++ WFIFOW(login_fd,0) = 0x272c; ++ WFIFOL(login_fd,2) = 99; ++ WFIFOSET(login_fd,6); ++ ++ //printf ("set all offline\n"); ++} ++ ++/*--------------------------------------------------- ++ Make a data line for friends list ++ --------------------------------------------------*/ ++ ++int mmo_friends_list_data_str(char *str, struct mmo_charstatus *p) { int i; char *str_p = str; -+ str_p += sprintf(str_p, "%d", p->char_id);
-+
-+ for (i=0;i<MAX_FRIENDS;i++){
-+ if (p->friends[i].account_id > 0 && p->friends[i].char_id > 0 && p->friends[i].name[0])
-+ str_p += sprintf(str_p, ",%d,%d,%s", p->friends[i].account_id, p->friends[i].char_id, p->friends[i].name);
-+ else
-+ str_p += sprintf(str_p,",,,");
-+ }
-+
-+ str_p += '\0';
-+
-+ return 0;
-+}
-+
-+//-------------------------------------------------
-+// Function to create the character line (for save)
-+//-------------------------------------------------
-+int mmo_char_tostr(char *str, struct mmo_charstatus *p, struct global_reg *reg, int reg_num) {
-+ int i,j;
-+ char *str_p = str;
- -+ /* We shouldn't need this anymore... [Skotlex]
++ str_p += sprintf(str_p, "%d", p->char_id); ++ ++ for (i=0;i<MAX_FRIENDS;i++){ ++ if (p->friends[i].account_id > 0 && p->friends[i].char_id > 0 && p->friends[i].name[0]) ++ str_p += sprintf(str_p, ",%d,%d,%s", p->friends[i].account_id, p->friends[i].char_id, p->friends[i].name); ++ else ++ str_p += sprintf(str_p,",,,"); ++ } ++ ++ str_p += '\0'; ++ ++ return 0; ++} ++ ++//------------------------------------------------- ++// Function to create the character line (for save) ++//------------------------------------------------- ++int mmo_char_tostr(char *str, struct mmo_charstatus *p, struct global_reg *reg, int reg_num) { ++ int i,j; ++ char *str_p = str; + ++ /* We shouldn't need this anymore... [Skotlex] // on multi-map server, sometimes it's posssible that last_point become void. (reason???) We check that to not lost character at restart. - if (p->last_point.map[0] == '\0') { - memcpy(p->last_point.map, "prontera.gat", 16); -+ if (!p->last_point.map) {
-+ p->last_point.map = mapindex_name2id(MAP_PRONTERA);
++ if (!p->last_point.map) { ++ p->last_point.map = mapindex_name2id(MAP_PRONTERA); p->last_point.x = 273; p->last_point.y = 354; } - - str_p += sprintf(str_p, "%d\t%d,%d\t%s\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" -+ */
-+ str_p += sprintf(str_p, "%d\t%d,%d\t%s\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
++ */ ++ str_p += sprintf(str_p, "%d\t%d,%d\t%s\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" - "\t%s,%d,%d\t%s,%d,%d,%d\t", -+ "\t%s,%d,%d\t%s,%d,%d,%d,%d,%d,%d,%d\t",
++ "\t%s,%d,%d\t%s,%d,%d,%d,%d,%d,%d,%d\t", p->char_id, p->account_id, p->char_num, p->name, // - p->class, p->base_level, p->job_level, -+ p->class_, p->base_level, p->job_level,
++ p->class_, p->base_level, p->job_level, p->base_exp, p->job_exp, p->zeny, p->hp, p->max_hp, p->sp, p->max_sp, p->str, p->agi, p->vit, p->int_, p->dex, p->luk, @@ -407,44 +407,44 @@ - p->last_point.map, p->last_point.x, p->last_point.y, // - p->save_point.map, p->save_point.x, p->save_point.y, - p->partner_id); -+ mapindex_id2name(p->last_point.map), p->last_point.x, p->last_point.y, //
-+ mapindex_id2name(p->save_point.map), p->save_point.x, p->save_point.y,
-+ p->partner_id,p->father,p->mother,p->child,p->fame);
++ mapindex_id2name(p->last_point.map), p->last_point.x, p->last_point.y, // ++ mapindex_id2name(p->save_point.map), p->save_point.x, p->save_point.y, ++ p->partner_id,p->father,p->mother,p->child,p->fame); for(i = 0; i < 10; i++) - if (p->memo_point[i].map[0]) { - str_p += sprintf(str_p, "%s,%d,%d", p->memo_point[i].map, p->memo_point[i].x, p->memo_point[i].y); -+ if (p->memo_point[i].map) {
-+ str_p += sprintf(str_p, "%s,%d,%d", mapindex_id2name(p->memo_point[i].map), p->memo_point[i].x, p->memo_point[i].y);
++ if (p->memo_point[i].map) { ++ str_p += sprintf(str_p, "%s,%d,%d", mapindex_id2name(p->memo_point[i].map), p->memo_point[i].x, p->memo_point[i].y); } *(str_p++) = '\t'; for(i = 0; i < MAX_INVENTORY; i++) if (p->inventory[i].nameid) { - str_p += sprintf(str_p, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d ", -+ str_p += sprintf(str_p,"%d,%d,%d,%d,%d,%d,%d",
++ str_p += sprintf(str_p,"%d,%d,%d,%d,%d,%d,%d", p->inventory[i].id, p->inventory[i].nameid, p->inventory[i].amount, p->inventory[i].equip, - p->inventory[i].identify, p->inventory[i].refine, p->inventory[i].attribute, - p->inventory[i].card[0], p->inventory[i].card[1], p->inventory[i].card[2], p->inventory[i].card[3], - p->inventory[i].broken); -+ p->inventory[i].identify,p->inventory[i].refine,p->inventory[i].attribute);
-+ for(j=0; j<MAX_SLOTS; j++)
-+ str_p += sprintf(str_p,",%d",p->inventory[i].card[j]);
-+ str_p += sprintf(str_p," ");
++ p->inventory[i].identify,p->inventory[i].refine,p->inventory[i].attribute); ++ for(j=0; j<MAX_SLOTS; j++) ++ str_p += sprintf(str_p,",%d",p->inventory[i].card[j]); ++ str_p += sprintf(str_p," "); } *(str_p++) = '\t'; for(i = 0; i < MAX_CART; i++) if (p->cart[i].nameid) { - str_p += sprintf(str_p, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d ", -+ str_p += sprintf(str_p,"%d,%d,%d,%d,%d,%d,%d",
++ str_p += sprintf(str_p,"%d,%d,%d,%d,%d,%d,%d", p->cart[i].id, p->cart[i].nameid, p->cart[i].amount, p->cart[i].equip, - p->cart[i].identify, p->cart[i].refine, p->cart[i].attribute, - p->cart[i].card[0], p->cart[i].card[1], p->cart[i].card[2], p->cart[i].card[3], - p->cart[i].broken); -+ p->cart[i].identify,p->cart[i].refine,p->cart[i].attribute);
-+ for(j=0; j<MAX_SLOTS; j++)
-+ str_p += sprintf(str_p,",%d",p->cart[i].card[j]);
-+ str_p += sprintf(str_p," ");
++ p->cart[i].identify,p->cart[i].refine,p->cart[i].attribute); ++ for(j=0; j<MAX_SLOTS; j++) ++ str_p += sprintf(str_p,",%d",p->cart[i].card[j]); ++ str_p += sprintf(str_p," "); } *(str_p++) = '\t'; @@ -455,9 +455,9 @@ - for(i = 0; i < p->global_reg_num; i++) - if (p->global_reg[i].str[0]) - str_p += sprintf(str_p, "%s,%d ", p->global_reg[i].str, p->global_reg[i].value); -+ for(i = 0; i < reg_num; i++)
-+ if (reg[i].str[0])
-+ str_p += sprintf(str_p, "%s,%s ", reg[i].str, reg[i].value);
++ for(i = 0; i < reg_num; i++) ++ if (reg[i].str[0]) ++ str_p += sprintf(str_p, "%s,%s ", reg[i].str, reg[i].value); *(str_p++) = '\t'; *str_p = '\0'; @@ -466,68 +466,68 @@ // Function to set the character from the line (at read of characters file) //------------------------------------------------------------------------- -int mmo_char_fromstr(char *str, struct mmo_charstatus *p) { -+int mmo_char_fromstr(char *str, struct mmo_charstatus *p, struct global_reg *reg, int *reg_num) {
-+ char tmp_str[3][128]; //To avoid deleting chars with too long names.
++int mmo_char_fromstr(char *str, struct mmo_charstatus *p, struct global_reg *reg, int *reg_num) { ++ char tmp_str[3][128]; //To avoid deleting chars with too long names. int tmp_int[256]; - int set, next, len, i; -+ unsigned int tmp_uint[2]; //To read exp....
-+ int set, next, len, i, j;
++ unsigned int tmp_uint[2]; //To read exp.... ++ int set, next, len, i, j; // initilialise character memset(p, '\0', sizeof(struct mmo_charstatus)); - // If it's not char structure of version 1008 and after - if ((set = sscanf(str, "%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" -+ // If it's not char structure of version 1488 and after
-+ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
-+ "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
-+ "\t%127[^,],%d,%d\t%127[^,],%d,%d,%d,%d,%d,%d,%d%n",
-+ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0],
-+ &tmp_int[3], &tmp_int[4], &tmp_int[5],
-+ &tmp_uint[0], &tmp_uint[1], &tmp_int[8],
-+ &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12],
-+ &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18],
-+ &tmp_int[19], &tmp_int[20],
-+ &tmp_int[21], &tmp_int[22], &tmp_int[23], //
-+ &tmp_int[24], &tmp_int[25], &tmp_int[26],
-+ &tmp_int[27], &tmp_int[28], &tmp_int[29],
-+ &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34],
-+ tmp_str[1], &tmp_int[35], &tmp_int[36],
-+ tmp_str[2], &tmp_int[37], &tmp_int[38], &tmp_int[39],
-+ &tmp_int[40], &tmp_int[41], &tmp_int[42], &tmp_int[43], &next)) != 47)
-+ {
-+ tmp_int[43] = 0;
-+ // If it's not char structure of version 1363 and after
-+ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
-+ "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d"
-+ "\t%127[^,],%d,%d\t%127[^,],%d,%d,%d,%d,%d,%d%n",
-+ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], //
-+ &tmp_int[3], &tmp_int[4], &tmp_int[5],
-+ &tmp_uint[0], &tmp_uint[1], &tmp_int[8],
-+ &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12],
-+ &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18],
-+ &tmp_int[19], &tmp_int[20],
-+ &tmp_int[21], &tmp_int[22], &tmp_int[23], //
-+ &tmp_int[24], &tmp_int[25], &tmp_int[26],
-+ &tmp_int[27], &tmp_int[28], &tmp_int[29],
-+ &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34],
-+ tmp_str[1], &tmp_int[35], &tmp_int[36], //
-+ tmp_str[2], &tmp_int[37], &tmp_int[38], &tmp_int[39],
-+ &tmp_int[40], &tmp_int[41], &tmp_int[42], &next)) != 46)
-+ {
-+ tmp_int[40] = 0; // father
-+ tmp_int[41] = 0; // mother
-+ tmp_int[42] = 0; // child
-+ // If it's not char structure of version 1008 and before 1363
-+ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
++ // If it's not char structure of version 1488 and after ++ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" ++ "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" ++ "\t%127[^,],%d,%d\t%127[^,],%d,%d,%d,%d,%d,%d,%d%n", ++ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], ++ &tmp_int[3], &tmp_int[4], &tmp_int[5], ++ &tmp_uint[0], &tmp_uint[1], &tmp_int[8], ++ &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], ++ &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18], ++ &tmp_int[19], &tmp_int[20], ++ &tmp_int[21], &tmp_int[22], &tmp_int[23], // ++ &tmp_int[24], &tmp_int[25], &tmp_int[26], ++ &tmp_int[27], &tmp_int[28], &tmp_int[29], ++ &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34], ++ tmp_str[1], &tmp_int[35], &tmp_int[36], ++ tmp_str[2], &tmp_int[37], &tmp_int[38], &tmp_int[39], ++ &tmp_int[40], &tmp_int[41], &tmp_int[42], &tmp_int[43], &next)) != 47) ++ { ++ tmp_int[43] = 0; ++ // If it's not char structure of version 1363 and after ++ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" ++ "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" ++ "\t%127[^,],%d,%d\t%127[^,],%d,%d,%d,%d,%d,%d%n", ++ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], // ++ &tmp_int[3], &tmp_int[4], &tmp_int[5], ++ &tmp_uint[0], &tmp_uint[1], &tmp_int[8], ++ &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], ++ &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18], ++ &tmp_int[19], &tmp_int[20], ++ &tmp_int[21], &tmp_int[22], &tmp_int[23], // ++ &tmp_int[24], &tmp_int[25], &tmp_int[26], ++ &tmp_int[27], &tmp_int[28], &tmp_int[29], ++ &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34], ++ tmp_str[1], &tmp_int[35], &tmp_int[36], // ++ tmp_str[2], &tmp_int[37], &tmp_int[38], &tmp_int[39], ++ &tmp_int[40], &tmp_int[41], &tmp_int[42], &next)) != 46) ++ { ++ tmp_int[40] = 0; // father ++ tmp_int[41] = 0; // mother ++ tmp_int[42] = 0; // child ++ // If it's not char structure of version 1008 and before 1363 ++ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" - "\t%[^,],%d,%d\t%[^,],%d,%d,%d%n", - &tmp_int[0], &tmp_int[1], &tmp_int[2], p->name, // -+ "\t%127[^,],%d,%d\t%127[^,],%d,%d,%d%n",
-+ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], //
++ "\t%127[^,],%d,%d\t%127[^,],%d,%d,%d%n", ++ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], // &tmp_int[3], &tmp_int[4], &tmp_int[5], - &tmp_int[6], &tmp_int[7], &tmp_int[8], -+ &tmp_uint[0], &tmp_uint[1], &tmp_int[8],
++ &tmp_uint[0], &tmp_uint[1], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18], &tmp_int[19], &tmp_int[20], @@ -537,21 +537,21 @@ &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34], - p->last_point.map, &tmp_int[35], &tmp_int[36], // - p->save_point.map, &tmp_int[37], &tmp_int[38], &tmp_int[39], &next)) != 43) { -+ tmp_str[1], &tmp_int[35], &tmp_int[36], //
-+ tmp_str[2], &tmp_int[37], &tmp_int[38], &tmp_int[39], &next)) != 43)
-+ {
++ tmp_str[1], &tmp_int[35], &tmp_int[36], // ++ tmp_str[2], &tmp_int[37], &tmp_int[38], &tmp_int[39], &next)) != 43) ++ { tmp_int[39] = 0; // partner id // If not char structure from version 384 to 1007 - if ((set = sscanf(str, "%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" -+ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
++ if ((set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" - "\t%[^,],%d,%d\t%[^,],%d,%d%n", - &tmp_int[0], &tmp_int[1], &tmp_int[2], p->name, // -+ "\t%127[^,],%d,%d\t%127[^,],%d,%d%n",
-+ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], //
++ "\t%127[^,],%d,%d\t%127[^,],%d,%d%n", ++ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], // &tmp_int[3], &tmp_int[4], &tmp_int[5], - &tmp_int[6], &tmp_int[7], &tmp_int[8], -+ &tmp_uint[0], &tmp_uint[1], &tmp_int[8],
++ &tmp_uint[0], &tmp_uint[1], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18], &tmp_int[19], &tmp_int[20], @@ -561,21 +561,21 @@ &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34], - p->last_point.map, &tmp_int[35], &tmp_int[36], // - p->save_point.map, &tmp_int[37], &tmp_int[38], &next)) != 42) { -+ tmp_str[1], &tmp_int[35], &tmp_int[36], //
-+ tmp_str[2], &tmp_int[37], &tmp_int[38], &next)) != 42)
-+ {
++ tmp_str[1], &tmp_int[35], &tmp_int[36], // ++ tmp_str[2], &tmp_int[37], &tmp_int[38], &next)) != 42) ++ { // It's char structure of a version before 384 tmp_int[26] = 0; // pet id - set = sscanf(str, "%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" -+ set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d"
++ set = sscanf(str, "%d\t%d,%d\t%127[^\t]\t%d,%d,%d\t%u,%u,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" "\t%d,%d,%d\t%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" - "\t%[^,],%d,%d\t%[^,],%d,%d%n", - &tmp_int[0], &tmp_int[1], &tmp_int[2], p->name, // -+ "\t%127[^,],%d,%d\t%127[^,],%d,%d%n",
-+ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], //
++ "\t%127[^,],%d,%d\t%127[^,],%d,%d%n", ++ &tmp_int[0], &tmp_int[1], &tmp_int[2], tmp_str[0], // &tmp_int[3], &tmp_int[4], &tmp_int[5], - &tmp_int[6], &tmp_int[7], &tmp_int[8], -+ &tmp_uint[0], &tmp_uint[1], &tmp_int[8],
++ &tmp_uint[0], &tmp_uint[1], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18], &tmp_int[19], &tmp_int[20], @@ -585,8 +585,8 @@ &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], &tmp_int[34], - p->last_point.map, &tmp_int[35], &tmp_int[36], // - p->save_point.map, &tmp_int[37], &tmp_int[38], &next); -+ tmp_str[1], &tmp_int[35], &tmp_int[36], //
-+ tmp_str[2], &tmp_int[37], &tmp_int[38], &next);
++ tmp_str[1], &tmp_int[35], &tmp_int[36], // ++ tmp_str[2], &tmp_int[37], &tmp_int[38], &next); set += 2; //printf("char: old char data ver.1\n"); // Char structure of version 1007 or older @@ -594,34 +594,34 @@ } // Char structure of version 1008+ } else { -+ set += 3;
++ set += 3; //printf("char: new char data ver.3\n"); } - if (set != 43) -+ // Char structture of version 1363+
-+ } else {
-+ set++;
-+ //printf("char: new char data ver.4\n");
-+ }
-+ // Char structure of version 1488+
-+ } else {
-+ //printf("char: new char data ver.5\n");
-+ }
-+ if (set != 47)
++ // Char structture of version 1363+ ++ } else { ++ set++; ++ //printf("char: new char data ver.4\n"); ++ } ++ // Char structure of version 1488+ ++ } else { ++ //printf("char: new char data ver.5\n"); ++ } ++ if (set != 47) return 0; -+ memcpy(p->name, tmp_str[0], NAME_LENGTH-1); //Overflow protection [Skotlex]
++ memcpy(p->name, tmp_str[0], NAME_LENGTH-1); //Overflow protection [Skotlex] p->char_id = tmp_int[0]; p->account_id = tmp_int[1]; p->char_num = tmp_int[2]; - p->class = tmp_int[3]; -+ p->class_ = tmp_int[3];
++ p->class_ = tmp_int[3]; p->base_level = tmp_int[4]; p->job_level = tmp_int[5]; - p->base_exp = tmp_int[6]; - p->job_exp = tmp_int[7]; -+ p->base_exp = tmp_uint[0];
-+ p->job_exp = tmp_uint[1];
++ p->base_exp = tmp_uint[0]; ++ p->job_exp = tmp_uint[1]; p->zeny = tmp_int[8]; p->hp = tmp_int[9]; p->max_hp = tmp_int[10]; @@ -629,17 +629,17 @@ p->head_top = tmp_int[32]; p->head_mid = tmp_int[33]; p->head_bottom = tmp_int[34]; -+ p->last_point.map = mapindex_name2id(tmp_str[1]);
++ p->last_point.map = mapindex_name2id(tmp_str[1]); p->last_point.x = tmp_int[35]; p->last_point.y = tmp_int[36]; -+ p->save_point.map = mapindex_name2id(tmp_str[2]);
++ p->save_point.map = mapindex_name2id(tmp_str[2]); p->save_point.x = tmp_int[37]; p->save_point.y = tmp_int[38]; p->partner_id = tmp_int[39]; -+ p->father = tmp_int[40];
-+ p->mother = tmp_int[41];
-+ p->child = tmp_int[42];
-+ p->fame = tmp_int[43];
++ p->father = tmp_int[40]; ++ p->mother = tmp_int[41]; ++ p->child = tmp_int[42]; ++ p->fame = tmp_int[43]; // Some checks for(i = 0; i < char_num; i++) { @@ -647,19 +647,19 @@ - printf("\033[1;31mmmo_auth_init: ******Error: a character has an identical id to another.\n"); - printf(" character id #%d -> new character not readed.\n", p->char_id); - printf(" Character saved in log file.\033[0m\n"); -+ if (char_dat[i].status.char_id == p->char_id) {
-+ ShowError(CL_RED"mmmo_auth_init: a character has an identical id to another.\n");
-+ ShowError(" character id #%d -> new character not readed.\n", p->char_id);
-+ ShowError(" Character saved in log file."CL_RESET"\n");
++ if (char_dat[i].status.char_id == p->char_id) { ++ ShowError(CL_RED"mmmo_auth_init: a character has an identical id to another.\n"); ++ ShowError(" character id #%d -> new character not readed.\n", p->char_id); ++ ShowError(" Character saved in log file."CL_RESET"\n"); return -1; - } else if (strcmp(char_dat[i].name, p->name) == 0) { - printf("\033[1;31mmmo_auth_init: ******Error: character name already exists.\n"); - printf(" character name '%s' -> new character not readed.\n", p->name); - printf(" Character saved in log file.\033[0m\n"); -+ } else if (strcmp(char_dat[i].status.name, p->name) == 0) {
-+ ShowError(CL_RED"mmmo_auth_init: a character name already exists.\n");
-+ ShowError(" character name '%s' -> new character not read.\n", p->name);
-+ ShowError(" Character saved in log file."CL_RESET"\n");
++ } else if (strcmp(char_dat[i].status.name, p->name) == 0) { ++ ShowError(CL_RED"mmmo_auth_init: a character name already exists.\n"); ++ ShowError(" character name '%s' -> new character not read.\n", p->name); ++ ShowError(" Character saved in log file."CL_RESET"\n"); return -2; } } @@ -668,9 +668,9 @@ - printf("mmo_auth_init: ******WARNING: character name has wisp server name.\n"); - printf(" Character name '%s' = wisp server name '%s'.\n", p->name, wisp_server_name); - printf(" Character readed. Suggestion: change the wisp server name.\n"); -+ ShowWarning("mmo_auth_init: ******WARNING: character name has wisp server name.\n");
-+ ShowWarning(" Character name '%s' = wisp server name '%s'.\n", p->name, wisp_server_name);
-+ ShowWarning(" Character readed. Suggestion: change the wisp server name.\n");
++ ShowWarning("mmo_auth_init: ******WARNING: character name has wisp server name.\n"); ++ ShowWarning(" Character name '%s' = wisp server name '%s'.\n", p->name, wisp_server_name); ++ ShowWarning(" Character readed. Suggestion: change the wisp server name.\n"); char_log("mmo_auth_init: ******WARNING: character name has wisp server name: Character name '%s' = wisp server name '%s'." RETCODE, p->name, wisp_server_name); } @@ -679,9 +679,9 @@ for(i = 0; str[next] && str[next] != '\t'; i++) { - if (sscanf(str+next, "%[^,],%d,%d%n", p->memo_point[i].map, &tmp_int[0], &tmp_int[1], &len) != 3) -+ if (sscanf(str+next, "%[^,],%d,%d%n", tmp_str[0], &tmp_int[0], &tmp_int[1], &len) != 3)
++ if (sscanf(str+next, "%[^,],%d,%d%n", tmp_str[0], &tmp_int[0], &tmp_int[1], &len) != 3) return -3; -+ p->memo_point[i].map = mapindex_name2id(tmp_str[0]);
++ p->memo_point[i].map = mapindex_name2id(tmp_str[0]); p->memo_point[i].x = tmp_int[0]; p->memo_point[i].y = tmp_int[1]; next += len; @@ -690,7 +690,7 @@ for(i = 0; str[next] && str[next] != '\t'; i++) { - if (sscanf(str + next, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d%n", -+ if(sscanf(str + next, "%d,%d,%d,%d,%d,%d,%d%[0-9,-]%n",
++ if(sscanf(str + next, "%d,%d,%d,%d,%d,%d,%d%[0-9,-]%n", &tmp_int[0], &tmp_int[1], &tmp_int[2], &tmp_int[3], - &tmp_int[4], &tmp_int[5], &tmp_int[6], - &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &len) == 12) { @@ -702,8 +702,8 @@ - tmp_int[11] = 0; // broken doesn't exist in this version -> 0 - } else // invalid structure - return -4; -+ &tmp_int[4], &tmp_int[5], &tmp_int[6], tmp_str[0], &len) == 8)
-+ {
++ &tmp_int[4], &tmp_int[5], &tmp_int[6], tmp_str[0], &len) == 8) ++ { p->inventory[i].id = tmp_int[0]; p->inventory[i].nameid = tmp_int[1]; p->inventory[i].amount = tmp_int[2]; @@ -716,15 +716,15 @@ - p->inventory[i].card[2] = tmp_int[9]; - p->inventory[i].card[3] = tmp_int[10]; - p->inventory[i].broken = tmp_int[11]; -+
-+ for(j = 0; j < MAX_SLOTS && tmp_str[0] && sscanf(tmp_str[0], ",%d%[0-9,-]",&tmp_int[0], tmp_str[0]) > 0; j++)
-+ p->inventory[i].card[j] = tmp_int[0];
-+
++ ++ for(j = 0; j < MAX_SLOTS && tmp_str[0] && sscanf(tmp_str[0], ",%d%[0-9,-]",&tmp_int[0], tmp_str[0]) > 0; j++) ++ p->inventory[i].card[j] = tmp_int[0]; ++ next += len; if (str[next] == ' ') next++; -+ } else // invalid structure
-+ return -4;
++ } else // invalid structure ++ return -4; } - next++; @@ -736,15 +736,15 @@ - &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &len) == 12) { - // do nothing, it's ok - } else if (sscanf(str + next, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d%n", -+ if(sscanf(str + next, "%d,%d,%d,%d,%d,%d,%d%[0-9,-]%n",
++ if(sscanf(str + next, "%d,%d,%d,%d,%d,%d,%d%[0-9,-]%n", &tmp_int[0], &tmp_int[1], &tmp_int[2], &tmp_int[3], - &tmp_int[4], &tmp_int[5], &tmp_int[6], - &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10], &len) == 11) { - tmp_int[11] = 0; // broken doesn't exist in this version -> 0 - } else // invalid structure - return -5; -+ &tmp_int[4], &tmp_int[5], &tmp_int[6], tmp_str[0], &len) == 8)
-+ {
++ &tmp_int[4], &tmp_int[5], &tmp_int[6], tmp_str[0], &len) == 8) ++ { p->cart[i].id = tmp_int[0]; p->cart[i].nameid = tmp_int[1]; p->cart[i].amount = tmp_int[2]; @@ -757,15 +757,15 @@ - p->cart[i].card[2] = tmp_int[9]; - p->cart[i].card[3] = tmp_int[10]; - p->cart[i].broken = tmp_int[11]; -+
-+ for(j = 0; j < MAX_SLOTS && tmp_str && sscanf(tmp_str[0], ",%d%[0-9,-]",&tmp_int[0], tmp_str[0]) > 0; j++)
-+ p->cart[i].card[j] = tmp_int[0];
-+
++ ++ for(j = 0; j < MAX_SLOTS && tmp_str && sscanf(tmp_str[0], ",%d%[0-9,-]",&tmp_int[0], tmp_str[0]) > 0; j++) ++ p->cart[i].card[j] = tmp_int[0]; ++ next += len; if (str[next] == ' ') next++; -+ } else // invalid structure
-+ return -5;
++ } else // invalid structure ++ return -5; } next++; @@ -774,12 +774,12 @@ for(i = 0; str[next] && str[next] != '\t' && str[next] != '\n' && str[next] != '\r'; i++) { // global_regŽÀ‘•ˆÈ‘O‚Ìathena.txtŒÝŠ·‚Ì‚½‚߈ꉞ'\n'ƒ`ƒFƒbƒN - if (sscanf(str + next, "%[^,],%d%n", p->global_reg[i].str, &p->global_reg[i].value, &len) != 2) { -+ if (sscanf(str + next, "%[^,],%[^ ] %n", reg[i].str, reg[i].value, &len) != 2) {
++ if (sscanf(str + next, "%[^,],%[^ ] %n", reg[i].str, reg[i].value, &len) != 2) { // because some scripts are not correct, the str can be "". So, we must check that. // If it's, we must not refuse the character, but just this REG value. // Character line will have something like: nov_2nd_cos,9 ,9 nov_1_2_cos_c,1 (here, ,9 is not good) - if (str[next] == ',' && sscanf(str + next, ",%d%n", &p->global_reg[i].value, &len) == 1) -+ if (str[next] == ',' && sscanf(str + next, ",%[^ ] %n", reg[i].value, &len) == 1)
++ if (str[next] == ',' && sscanf(str + next, ",%[^ ] %n", reg[i].value, &len) == 1) i--; else return -7; @@ -788,106 +788,106 @@ next++; } - p->global_reg_num = i; -+ *reg_num = i;
++ *reg_num = i; return 1; } -+//---------------------------------
-+// Function to read friend list
-+//---------------------------------
-+
-+int parse_friend_txt(struct mmo_charstatus *p)
-+{
-+ char line[1024], temp[1024];
-+ int pos = 0, count = 0, next;
-+ int i,len;
-+ FILE *fp;
-+
-+ // Open the file and look for the ID
-+ fp = fopen(friends_txt, "r");
-+
-+ if(fp == NULL)
-+ return -1;
-+
-+ while(fgets(line, sizeof(line)-1, fp)) {
-+
-+ if(line[0] == '/' && line[1] == '/')
-+ continue;
-+ if (sscanf(line, "%d%n",&i, &pos) < 1 || i != p->char_id)
-+ continue; //Not this line...
-+ //Read friends
-+ len = strlen(line);
-+ next = pos;
-+ for (count = 0; next < len && count < MAX_FRIENDS; count++)
-+ { //Read friends.
-+ if (sscanf(line+next, ",%d,%d,%23[^,]%n",&p->friends[count].account_id,&p->friends[count].char_id, p->friends[count].name, &pos) < 3)
-+ { //Invalid friend?
-+ memset(&p->friends[count], 0, sizeof(p->friends[count]));
-+ break;
-+ }
-+ next+=pos;
-+ //What IF the name contains a comma? while the next field is not a
-+ //number, we assume it belongs to the current name. [Skotlex]
-+ //NOTE: Of course, this will fail if someone sets their name to something like
-+ //Bob,2005 but... meh, it's the problem of parsing a text file (encasing it in "
-+ //won't do as quotes are also valid name chars!)
-+ while(next < len && sscanf(line+next, ",%23[^,]%n", temp, &len) > 0)
-+ {
-+ if (atoi(temp))
-+ { //We read the next friend, just continue.
-+ break;
-+ } else { //Append the name.
-+ next+=len;
-+ if (strlen(p->friends[count].name) + strlen(temp) +1 < NAME_LENGTH)
-+ {
-+ strcat(p->friends[count].name, ",");
-+ strcat(p->friends[count].name, temp);
-+ }
-+ }
-+ } //End Guess Block
-+ } //Friend's for.
-+ break; //Finished reading.
-+ }
-+ /*
-+ //Character names must not exceed the 23+\0 limit. [Skotlex]
-+ sscanf(line, "%d,%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23s",&cid,
-+ &temp[0],p->friend_name[0],
-+ &temp[1],p->friend_name[1],
-+ &temp[2],p->friend_name[2],
-+ &temp[3],p->friend_name[3],
-+ &temp[4],p->friend_name[4],
-+ &temp[5],p->friend_name[5],
-+ &temp[6],p->friend_name[6],
-+ &temp[7],p->friend_name[7],
-+ &temp[8],p->friend_name[8],
-+ &temp[9],p->friend_name[9],
-+ &temp[10],p->friend_name[10],
-+ &temp[11],p->friend_name[11],
-+ &temp[12],p->friend_name[12],
-+ &temp[13],p->friend_name[13],
-+ &temp[14],p->friend_name[14],
-+ &temp[15],p->friend_name[15],
-+ &temp[16],p->friend_name[16],
-+ &temp[17],p->friend_name[17],
-+ &temp[18],p->friend_name[18],
-+ &temp[19],p->friend_name[19]);
-+ if (cid == p->char_id)
-+ break;
-+ }
-+ // No register of friends list
-+ if (cid == 0) {
-+ fclose(fp);
-+ return 0;
-+ }
-+
-+ // Fill in the list
-+
-+ for (i=0; i<MAX_FRIENDS; i++)
-+ p->friend_id[i] = temp[i];
-+*/
-+ fclose(fp);
-+ return count;
-+}
++//--------------------------------- ++// Function to read friend list ++//--------------------------------- ++ ++int parse_friend_txt(struct mmo_charstatus *p) ++{ ++ char line[1024], temp[1024]; ++ int pos = 0, count = 0, next; ++ int i,len; ++ FILE *fp; ++ ++ // Open the file and look for the ID ++ fp = fopen(friends_txt, "r"); ++ ++ if(fp == NULL) ++ return -1; ++ ++ while(fgets(line, sizeof(line)-1, fp)) { ++ ++ if(line[0] == '/' && line[1] == '/') ++ continue; ++ if (sscanf(line, "%d%n",&i, &pos) < 1 || i != p->char_id) ++ continue; //Not this line... ++ //Read friends ++ len = strlen(line); ++ next = pos; ++ for (count = 0; next < len && count < MAX_FRIENDS; count++) ++ { //Read friends. ++ if (sscanf(line+next, ",%d,%d,%23[^,]%n",&p->friends[count].account_id,&p->friends[count].char_id, p->friends[count].name, &pos) < 3) ++ { //Invalid friend? ++ memset(&p->friends[count], 0, sizeof(p->friends[count])); ++ break; ++ } ++ next+=pos; ++ //What IF the name contains a comma? while the next field is not a ++ //number, we assume it belongs to the current name. [Skotlex] ++ //NOTE: Of course, this will fail if someone sets their name to something like ++ //Bob,2005 but... meh, it's the problem of parsing a text file (encasing it in " ++ //won't do as quotes are also valid name chars!) ++ while(next < len && sscanf(line+next, ",%23[^,]%n", temp, &len) > 0) ++ { ++ if (atoi(temp)) ++ { //We read the next friend, just continue. ++ break; ++ } else { //Append the name. ++ next+=len; ++ if (strlen(p->friends[count].name) + strlen(temp) +1 < NAME_LENGTH) ++ { ++ strcat(p->friends[count].name, ","); ++ strcat(p->friends[count].name, temp); ++ } ++ } ++ } //End Guess Block ++ } //Friend's for. ++ break; //Finished reading. ++ } ++ /* ++ //Character names must not exceed the 23+\0 limit. [Skotlex] ++ sscanf(line, "%d,%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23[^,],%d,%23s",&cid, ++ &temp[0],p->friend_name[0], ++ &temp[1],p->friend_name[1], ++ &temp[2],p->friend_name[2], ++ &temp[3],p->friend_name[3], ++ &temp[4],p->friend_name[4], ++ &temp[5],p->friend_name[5], ++ &temp[6],p->friend_name[6], ++ &temp[7],p->friend_name[7], ++ &temp[8],p->friend_name[8], ++ &temp[9],p->friend_name[9], ++ &temp[10],p->friend_name[10], ++ &temp[11],p->friend_name[11], ++ &temp[12],p->friend_name[12], ++ &temp[13],p->friend_name[13], ++ &temp[14],p->friend_name[14], ++ &temp[15],p->friend_name[15], ++ &temp[16],p->friend_name[16], ++ &temp[17],p->friend_name[17], ++ &temp[18],p->friend_name[18], ++ &temp[19],p->friend_name[19]); ++ if (cid == p->char_id) ++ break; ++ } ++ // No register of friends list ++ if (cid == 0) { ++ fclose(fp); ++ return 0; ++ } ++ ++ // Fill in the list ++ ++ for (i=0; i<MAX_FRIENDS; i++) ++ p->friend_id[i] = temp[i]; ++*/ ++ fclose(fp); ++ return count; ++} //--------------------------------- // Function to read characters file @@ -900,7 +900,7 @@ char_max = 256; - char_dat = calloc(sizeof(struct mmo_charstatus) * 256, 1); -+ char_dat = (struct character_data*)aCalloc(sizeof(struct character_data) * 256, 1);
++ char_dat = (struct character_data*)aCalloc(sizeof(struct character_data) * 256, 1); if (!char_dat) { - printf("out of memory: mmo_char_init (calloc of char_dat).\n"); - exit(1); @@ -908,7 +908,7 @@ - online_chars = calloc(sizeof(int) * 256, 1); - if (!online_chars) { - printf("out of memory: mmo_char_init (calloc of online_chars).\n"); -+ ShowFatalError("out of memory: mmo_char_init (calloc of char_dat).\n");
++ ShowFatalError("out of memory: mmo_char_init (calloc of char_dat).\n"); exit(1); } - for(i = 0; i < char_max; i++) @@ -917,10 +917,10 @@ char_num = 0; fp = fopen(char_txt, "r"); -+
++ if (fp == NULL) { - printf("Characters file not found: %s.\n", char_txt); -+ ShowError("Characters file not found: %s.\n", char_txt);
++ ShowError("Characters file not found: %s.\n", char_txt); char_log("Characters file not found: %s." RETCODE, char_txt); char_log("Id for the next created character: %d." RETCODE, char_id_count); return 0; @@ -929,10 +929,10 @@ if (char_num >= char_max) { char_max += 256; - char_dat = realloc(char_dat, sizeof(struct mmo_charstatus) * char_max); -+ char_dat = (struct character_data*)aRealloc(char_dat, sizeof(struct character_data) * char_max);
++ char_dat = (struct character_data*)aRealloc(char_dat, sizeof(struct character_data) * char_max); if (!char_dat) { - printf("Out of memory: mmo_char_init (realloc of char_dat).\n"); -+ ShowFatalError("Out of memory: mmo_char_init (realloc of char_dat).\n");
++ ShowFatalError("Out of memory: mmo_char_init (realloc of char_dat).\n"); char_log("Out of memory: mmo_char_init (realloc of char_dat)." RETCODE); exit(1); } @@ -947,22 +947,22 @@ } - ret = mmo_char_fromstr(line, &char_dat[char_num]); -+ ret = mmo_char_fromstr(line, &char_dat[char_num].status, char_dat[char_num].global, &char_dat[char_num].global_num);
-+
-+ // Initialize friends list
-+ parse_friend_txt(&char_dat[char_num].status); // Grab friends for the character
-+
++ ret = mmo_char_fromstr(line, &char_dat[char_num].status, char_dat[char_num].global, &char_dat[char_num].global_num); ++ ++ // Initialize friends list ++ parse_friend_txt(&char_dat[char_num].status); // Grab friends for the character ++ if (ret > 0) { // negative value or zero for errors - if (char_dat[char_num].char_id >= char_id_count) - char_id_count = char_dat[char_num].char_id + 1; -+ if (char_dat[char_num].status.char_id >= char_id_count)
-+ char_id_count = char_dat[char_num].status.char_id + 1;
++ if (char_dat[char_num].status.char_id >= char_id_count) ++ char_id_count = char_dat[char_num].status.char_id + 1; char_num++; } else { - printf("mmo_char_init: in characters file, unable to read the line #%d.\n", line_count); - printf(" -> Character saved in log file.\n"); -+ ShowError("mmo_char_init: in characters file, unable to read the line #%d.\n", line_count);
-+ ShowError(" -> Character saved in log file.\n");
++ ShowError("mmo_char_init: in characters file, unable to read the line #%d.\n", line_count); ++ ShowError(" -> Character saved in log file.\n"); switch (ret) { case -1: char_log("Duplicate character id in the next character line (character not readed):" RETCODE); @@ -971,15 +971,15 @@ if (char_num == 0) { - printf("mmo_char_init: No character found in %s.\n", char_txt); -+ ShowNotice("mmo_char_init: No character found in %s.\n", char_txt);
++ ShowNotice("mmo_char_init: No character found in %s.\n", char_txt); char_log("mmo_char_init: No character found in %s." RETCODE, char_txt); } else if (char_num == 1) { - printf("mmo_char_init: 1 character read in %s.\n", char_txt); -+ ShowStatus("mmo_char_init: 1 character read in %s.\n", char_txt);
++ ShowStatus("mmo_char_init: 1 character read in %s.\n", char_txt); char_log("mmo_char_init: 1 character read in %s." RETCODE, char_txt); } else { - printf("mmo_char_init: %d characters read in %s.\n", char_num, char_txt); -+ ShowStatus("mmo_char_init: %d characters read in %s.\n", char_num, char_txt);
++ ShowStatus("mmo_char_init: %d characters read in %s.\n", char_num, char_txt); char_log("mmo_char_init: %d characters read in %s." RETCODE, char_num, char_txt); } @@ -988,26 +988,26 @@ //--------------------------------------------------------- void mmo_char_sync(void) { - char line[65536]; -+ char line[65536],f_line[1024];
++ char line[65536],f_line[1024]; int i, j, k; int lock; - FILE *fp; - int id[char_num]; -+ FILE *fp,*f_fp;
-+ //int *id = (int *) aMalloc(sizeof(int) * char_num);
-+ CREATE_BUFFER(id, int, char_num);
++ FILE *fp,*f_fp; ++ //int *id = (int *) aMalloc(sizeof(int) * char_num); ++ CREATE_BUFFER(id, int, char_num); // Sorting before save (by [Yor]) for(i = 0; i < char_num; i++) { id[i] = i; for(j = 0; j < i; j++) { - if ((char_dat[i].account_id < char_dat[id[j]].account_id) || -+ if ((char_dat[i].status.account_id < char_dat[id[j]].status.account_id) ||
++ if ((char_dat[i].status.account_id < char_dat[id[j]].status.account_id) || // if same account id, we sort by slot. - (char_dat[i].account_id == char_dat[id[j]].account_id && - char_dat[i].char_num < char_dat[id[j]].char_num)) { -+ (char_dat[i].status.account_id == char_dat[id[j]].status.account_id &&
-+ char_dat[i].status.char_num < char_dat[id[j]].status.char_num)) {
++ (char_dat[i].status.account_id == char_dat[id[j]].status.account_id && ++ char_dat[i].status.char_num < char_dat[id[j]].status.char_num)) { for(k = i; k > j; k--) id[k] = id[k-1]; id[j] = i; // id[i] @@ -1016,13 +1016,13 @@ fp = lock_fopen(char_txt, &lock); if (fp == NULL) { - printf("WARNING: Server can't not save characters.\n"); -+ ShowWarning("Server can't not save characters.\n");
++ ShowWarning("Server can't not save characters.\n"); char_log("WARNING: Server can't not save characters." RETCODE); } else { for(i = 0; i < char_num; i++) { // create only once the line, and save it in the 2 files (it's speeder than repeat twice the loop and create twice the line) - mmo_char_tostr(line, &char_dat[id[i]]); // use of sorted index -+ mmo_char_tostr(line, &char_dat[id[i]].status, char_dat[id[i]].global, char_dat[id[i]].global_num); // use of sorted index
++ mmo_char_tostr(line, &char_dat[id[i]].status, char_dat[id[i]].global, char_dat[id[i]].global_num); // use of sorted index fprintf(fp, "%s" RETCODE, line); } fprintf(fp, "%d\t%%newid%%" RETCODE, char_id_count); @@ -1031,34 +1031,34 @@ fp = lock_fopen(backup_txt, &lock); if (fp == NULL) { - printf("WARNING: Server can't not create backup of characters file.\n"); -+ ShowWarning("Server can't not create backup of characters file.\n");
++ ShowWarning("Server can't not create backup of characters file.\n"); char_log("WARNING: Server can't not create backup of characters file." RETCODE); -+ //aFree(id); // free up the memory before leaving -.- [Ajarn]
-+ DELETE_BUFFER(id);
++ //aFree(id); // free up the memory before leaving -.- [Ajarn] ++ DELETE_BUFFER(id); return; } for(i = 0; i < char_num; i++) { // create only once the line, and save it in the 2 files (it's speeder than repeat twice the loop and create twice the line) - mmo_char_tostr(line, &char_dat[id[i]]); // use of sorted index -+ mmo_char_tostr(line, &char_dat[id[i]].status,char_dat[id[i]].global, char_dat[id[i]].global_num); // use of sorted index
++ mmo_char_tostr(line, &char_dat[id[i]].status,char_dat[id[i]].global, char_dat[id[i]].global_num); // use of sorted index fprintf(fp, "%s" RETCODE, line); } fprintf(fp, "%d\t%%newid%%" RETCODE, char_id_count); lock_fclose(fp, backup_txt, &lock); } -+ // Friends List data save (davidsiaw)
-+ f_fp = lock_fopen(friends_txt, &lock);
-+ for(i = 0; i < char_num; i++) {
-+ mmo_friends_list_data_str(f_line, &char_dat[id[i]].status);
-+ fprintf(f_fp, "%s" RETCODE, f_line);
-+ }
-+
-+ lock_fclose(f_fp, friends_txt, &lock);
-+
-+ //aFree(id);
-+ DELETE_BUFFER(id);
-+
++ // Friends List data save (davidsiaw) ++ f_fp = lock_fopen(friends_txt, &lock); ++ for(i = 0; i < char_num; i++) { ++ mmo_friends_list_data_str(f_line, &char_dat[id[i]].status); ++ fprintf(f_fp, "%s" RETCODE, f_line); ++ } ++ ++ lock_fclose(f_fp, friends_txt, &lock); ++ ++ //aFree(id); ++ DELETE_BUFFER(id); ++ return; } @@ -1066,8 +1066,8 @@ // Function to save (in a periodic way) datas in files //---------------------------------------------------- int mmo_char_sync_timer(int tid, unsigned int tick, int id, int data) { -+ if (save_log)
-+ ShowInfo("Saving all files...\n");
++ if (save_log) ++ ShowInfo("Saving all files...\n"); mmo_char_sync(); inter_save(); return 0; @@ -1076,29 +1076,29 @@ //----------------------------------- int make_new_char(int fd, unsigned char *dat) { - int i, j; -+ int i;
++ int i; struct char_session_data *sd; -+ char name[NAME_LENGTH];
++ char name[NAME_LENGTH]; - sd = session[fd]->session_data; -+ sd = (struct char_session_data*)session[fd]->session_data;
++ sd = (struct char_session_data*)session[fd]->session_data; // remove control characters from the name - dat[23] = '\0'; - if (remove_control_chars(dat)) { -+ strncpy(name, dat, NAME_LENGTH);
-+ name[NAME_LENGTH-1] = '\0'; //Trunc name to max possible value (23)
-+
-+ trim(name,TRIM_CHARS); //Trim character name. [Skotlex]
-+
-+ //check name != main chat nick [LuzZza]
-+ if(strcmpi(name, main_chat_nick) == 0) {
-+ char_log("Create char failed (%d): this nick (%s) reserved for mainchat messages." RETCODE,
-+ sd->account_id, name);
-+ return -1;
-+ }
-+
-+ if (remove_control_chars((unsigned char *)name)) {
++ strncpy(name, dat, NAME_LENGTH); ++ name[NAME_LENGTH-1] = '\0'; //Trunc name to max possible value (23) ++ ++ trim(name,TRIM_CHARS); //Trim character name. [Skotlex] ++ ++ //check name != main chat nick [LuzZza] ++ if(strcmpi(name, main_chat_nick) == 0) { ++ char_log("Create char failed (%d): this nick (%s) reserved for mainchat messages." RETCODE, ++ sd->account_id, name); ++ return -1; ++ } ++ ++ if (remove_control_chars((unsigned char *)name)) { char_log("Make new char error (control char received in the name): (connection #%d, account: %d)." RETCODE, fd, sd->account_id); return -1; @@ -1106,7 +1106,7 @@ // check lenght of character name - if (strlen(dat) < 4) { -+ if (strlen(name) < 4) {
++ if (strlen(name) < 4) { char_log("Make new char error (character name too small): (connection #%d, account: %d, name: '%s')." RETCODE, fd, sd->account_id, dat); return -1; @@ -1116,18 +1116,18 @@ if (char_name_option == 1) { // only letters/symbols in char_name_letters are authorised - for (i = 0; dat[i]; i++) - if (strchr(char_name_letters, dat[i]) == NULL) { -+ for (i = 0; i < NAME_LENGTH && name[i]; i++)
-+ if (strchr(char_name_letters, name[i]) == NULL) {
++ for (i = 0; i < NAME_LENGTH && name[i]; i++) ++ if (strchr(char_name_letters, name[i]) == NULL) { char_log("Make new char error (invalid letter in the name): (connection #%d, account: %d), name: %s, invalid letter: %c." RETCODE, - fd, sd->account_id, dat, dat[i]); -+ fd, sd->account_id, name, name[i]);
++ fd, sd->account_id, name, name[i]); return -1; } } else if (char_name_option == 2) { // letters/symbols in char_name_letters are forbidden - for (i = 0; dat[i]; i++) - if (strchr(char_name_letters, dat[i]) != NULL) { -+ for (i = 0; i < NAME_LENGTH && name[i]; i++)
-+ if (strchr(char_name_letters, name[i]) != NULL) {
++ for (i = 0; i < NAME_LENGTH && name[i]; i++) ++ if (strchr(char_name_letters, name[i]) != NULL) { char_log("Make new char error (invalid letter in the name): (connection #%d, account: %d), name: %s, invalid letter: %c." RETCODE, fd, sd->account_id, dat, dat[i]); return -1; @@ -1137,8 +1137,8 @@ dat[30] >= 9 || // slots (dat[30] can not be negativ) - dat[33] <= 0 || dat[33] >= 20 || // hair style - dat[31] >= 12) { // hair color (dat[31] can not be negativ) -+ dat[33] <= 0 || dat[33] >= 24 || // hair style
-+ dat[31] >= 9) { // hair color (dat[31] can not be negativ)
++ dat[33] <= 0 || dat[33] >= 24 || // hair style ++ dat[31] >= 9) { // hair color (dat[31] can not be negativ) char_log("Make new char error (invalid values): (connection #%d, account: %d) slot %d, name: %s, stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d" RETCODE, fd, sd->account_id, dat[30], dat, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); return -1; @@ -1146,50 +1146,50 @@ fd, sd->account_id, dat[30], dat, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); return -1; } -+ } // now we know that every stat has proper value but we have to check if str/int agi/luk vit/dex pairs are correct
-+
-+ if( ((dat[24]+dat[27]) > 10) || ((dat[25]+dat[29]) > 10) || ((dat[26]+dat[28]) > 10) ) {
-+ if (log_char) {
-+ char_log("Make new char error (invalid stat value): (connection #%d, account: %d) slot %d, name: %s, stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d" RETCODE,
-+ fd, sd->account_id, dat[30], dat, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]);
-+ return -1;
++ } // now we know that every stat has proper value but we have to check if str/int agi/luk vit/dex pairs are correct ++ ++ if( ((dat[24]+dat[27]) > 10) || ((dat[25]+dat[29]) > 10) || ((dat[26]+dat[28]) > 10) ) { ++ if (log_char) { ++ char_log("Make new char error (invalid stat value): (connection #%d, account: %d) slot %d, name: %s, stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d" RETCODE, ++ fd, sd->account_id, dat[30], dat, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); ++ return -1; } -+ } // now when we have passed all stat checks
++ } // now when we have passed all stat checks for(i = 0; i < char_num; i++) { - if ((name_ignoring_case != 0 && strcmp(char_dat[i].name, dat) == 0) || - (name_ignoring_case == 0 && strcmpi(char_dat[i].name, dat) == 0)) { -+ if ((name_ignoring_case != 0 && strncmp(char_dat[i].status.name, name, NAME_LENGTH) == 0) ||
-+ (name_ignoring_case == 0 && strncmpi(char_dat[i].status.name, name, NAME_LENGTH) == 0)) {
++ if ((name_ignoring_case != 0 && strncmp(char_dat[i].status.name, name, NAME_LENGTH) == 0) || ++ (name_ignoring_case == 0 && strncmpi(char_dat[i].status.name, name, NAME_LENGTH) == 0)) { char_log("Make new char error (name already exists): (connection #%d, account: %d) slot %d, name: %s (actual name of other char: %d), stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d." RETCODE, - fd, sd->account_id, dat[30], dat, char_dat[i].name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); -+ fd, sd->account_id, dat[30], dat, char_dat[i].status.name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]);
++ fd, sd->account_id, dat[30], dat, char_dat[i].status.name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); return -1; } - if (char_dat[i].account_id == sd->account_id && char_dat[i].char_num == dat[30]) { -+ if (char_dat[i].status.account_id == sd->account_id && char_dat[i].status.char_num == dat[30]) {
++ if (char_dat[i].status.account_id == sd->account_id && char_dat[i].status.char_num == dat[30]) { char_log("Make new char error (slot already used): (connection #%d, account: %d) slot %d, name: %s (actual name of other char: %d), stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d." RETCODE, - fd, sd->account_id, dat[30], dat, char_dat[i].name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); -+ fd, sd->account_id, dat[30], dat, char_dat[i].status.name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]);
++ fd, sd->account_id, dat[30], dat, char_dat[i].status.name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); return -1; } } - if (strcmp(wisp_server_name, dat) == 0) { -+ if (strcmp(wisp_server_name, name) == 0) {
++ if (strcmp(wisp_server_name, name) == 0) { char_log("Make new char error (name used is wisp name for server): (connection #%d, account: %d) slot %d, name: %s (actual name of other char: %d), stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d." RETCODE, - fd, sd->account_id, dat[30], dat, char_dat[i].name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); -+ fd, sd->account_id, dat[30], name, char_dat[i].status.name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]);
++ fd, sd->account_id, dat[30], name, char_dat[i].status.name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); return -1; } if (char_num >= char_max) { char_max += 256; - char_dat = realloc(char_dat, sizeof(struct mmo_charstatus) * char_max); -+ char_dat = (struct character_data*)aRealloc(char_dat, sizeof(struct character_data) * char_max);
++ char_dat = (struct character_data*)aRealloc(char_dat, sizeof(struct character_data) * char_max); if (!char_dat) { - printf("Out of memory: make_new_char (realloc of char_dat).\n"); -+ ShowFatalError("Out of memory: make_new_char (realloc of char_dat).\n");
++ ShowFatalError("Out of memory: make_new_char (realloc of char_dat).\n"); char_log("Out of memory: make_new_char (realloc of char_dat)." RETCODE); exit(1); } @@ -1205,10 +1205,10 @@ char_log("Creation of New Character: (connection #%d, account: %d) slot %d, character Name: %s, stats: %d+%d+%d+%d+%d+%d=%d, hair: %d, hair color: %d." RETCODE, - fd, sd->account_id, dat[30], dat, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); -+ fd, sd->account_id, dat[30], name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]);
++ fd, sd->account_id, dat[30], name, dat[24], dat[25], dat[26], dat[27], dat[28], dat[29], dat[24] + dat[25] + dat[26] + dat[27] + dat[28] + dat[29], dat[33], dat[31]); - memset(&char_dat[i], 0, sizeof(struct mmo_charstatus)); -+ memset(&char_dat[i], 0, sizeof(struct character_data));
++ memset(&char_dat[i], 0, sizeof(struct character_data)); - char_dat[i].char_id = char_id_count++; - char_dat[i].account_id = sd->account_id; @@ -1257,51 +1257,51 @@ - char_dat[i].head_bottom = 0; - memcpy(&char_dat[i].last_point, &start_point, sizeof(start_point)); - memcpy(&char_dat[i].save_point, &start_point, sizeof(start_point)); -+ char_dat[i].status.char_id = char_id_count++;
-+ char_dat[i].status.account_id = sd->account_id;
-+ char_dat[i].status.char_num = dat[30];
-+ strcpy(char_dat[i].status.name,name);
-+ char_dat[i].status.class_ = 0;
-+ char_dat[i].status.base_level = 1;
-+ char_dat[i].status.job_level = 1;
-+ char_dat[i].status.base_exp = 0;
-+ char_dat[i].status.job_exp = 0;
-+ char_dat[i].status.zeny = start_zeny;
-+ char_dat[i].status.str = dat[24];
-+ char_dat[i].status.agi = dat[25];
-+ char_dat[i].status.vit = dat[26];
-+ char_dat[i].status.int_ = dat[27];
-+ char_dat[i].status.dex = dat[28];
-+ char_dat[i].status.luk = dat[29];
-+ char_dat[i].status.max_hp = 40 * (100 + char_dat[i].status.vit) / 100;
-+ char_dat[i].status.max_sp = 11 * (100 + char_dat[i].status.int_) / 100;
-+ char_dat[i].status.hp = char_dat[i].status.max_hp;
-+ char_dat[i].status.sp = char_dat[i].status.max_sp;
-+ char_dat[i].status.status_point = 0;
-+ char_dat[i].status.skill_point = 0;
-+ char_dat[i].status.option = 0;
-+ char_dat[i].status.karma = 0;
-+ char_dat[i].status.manner = 0;
-+ char_dat[i].status.party_id = 0;
-+ char_dat[i].status.guild_id = 0;
-+ char_dat[i].status.hair = dat[33];
-+ char_dat[i].status.hair_color = dat[31];
-+ char_dat[i].status.clothes_color = 0;
-+ char_dat[i].status.inventory[0].nameid = start_weapon; // Knife
-+ char_dat[i].status.inventory[0].amount = 1;
-+ char_dat[i].status.inventory[0].equip = 0x02;
-+ char_dat[i].status.inventory[0].identify = 1;
-+ char_dat[i].status.inventory[1].nameid = start_armor; // Cotton Shirt
-+ char_dat[i].status.inventory[1].amount = 1;
-+ char_dat[i].status.inventory[1].equip = 0x10;
-+ char_dat[i].status.inventory[1].identify = 1;
-+ char_dat[i].status.weapon = 1;
-+ char_dat[i].status.shield = 0;
-+ char_dat[i].status.head_top = 0;
-+ char_dat[i].status.head_mid = 0;
-+ char_dat[i].status.head_bottom = 0;
-+ memcpy(&char_dat[i].status.last_point, &start_point, sizeof(start_point));
-+ memcpy(&char_dat[i].status.save_point, &start_point, sizeof(start_point));
++ char_dat[i].status.char_id = char_id_count++; ++ char_dat[i].status.account_id = sd->account_id; ++ char_dat[i].status.char_num = dat[30]; ++ strcpy(char_dat[i].status.name,name); ++ char_dat[i].status.class_ = 0; ++ char_dat[i].status.base_level = 1; ++ char_dat[i].status.job_level = 1; ++ char_dat[i].status.base_exp = 0; ++ char_dat[i].status.job_exp = 0; ++ char_dat[i].status.zeny = start_zeny; ++ char_dat[i].status.str = dat[24]; ++ char_dat[i].status.agi = dat[25]; ++ char_dat[i].status.vit = dat[26]; ++ char_dat[i].status.int_ = dat[27]; ++ char_dat[i].status.dex = dat[28]; ++ char_dat[i].status.luk = dat[29]; ++ char_dat[i].status.max_hp = 40 * (100 + char_dat[i].status.vit) / 100; ++ char_dat[i].status.max_sp = 11 * (100 + char_dat[i].status.int_) / 100; ++ char_dat[i].status.hp = char_dat[i].status.max_hp; ++ char_dat[i].status.sp = char_dat[i].status.max_sp; ++ char_dat[i].status.status_point = 0; ++ char_dat[i].status.skill_point = 0; ++ char_dat[i].status.option = 0; ++ char_dat[i].status.karma = 0; ++ char_dat[i].status.manner = 0; ++ char_dat[i].status.party_id = 0; ++ char_dat[i].status.guild_id = 0; ++ char_dat[i].status.hair = dat[33]; ++ char_dat[i].status.hair_color = dat[31]; ++ char_dat[i].status.clothes_color = 0; ++ char_dat[i].status.inventory[0].nameid = start_weapon; // Knife ++ char_dat[i].status.inventory[0].amount = 1; ++ char_dat[i].status.inventory[0].equip = 0x02; ++ char_dat[i].status.inventory[0].identify = 1; ++ char_dat[i].status.inventory[1].nameid = start_armor; // Cotton Shirt ++ char_dat[i].status.inventory[1].amount = 1; ++ char_dat[i].status.inventory[1].equip = 0x10; ++ char_dat[i].status.inventory[1].identify = 1; ++ char_dat[i].status.weapon = 1; ++ char_dat[i].status.shield = 0; ++ char_dat[i].status.head_top = 0; ++ char_dat[i].status.head_mid = 0; ++ char_dat[i].status.head_bottom = 0; ++ memcpy(&char_dat[i].status.last_point, &start_point, sizeof(start_point)); ++ memcpy(&char_dat[i].status.save_point, &start_point, sizeof(start_point)); char_num++; mmo_char_sync(); @@ -1311,8 +1311,8 @@ //---------------------------------------------------- -char * job_name(int class) { - switch (class) { -+char * job_name(int class_) {
-+ switch (class_) {
++char * job_name(int class_) { ++ switch (class_) { case 0: return "Novice"; case 1: return "Swordsman"; case 2: return "Mage"; @@ -1335,21 +1335,21 @@ - - if (online_display_option == 0) // we display nothing, so return - return; -+static int create_online_files_sub(DBKey key, void* data, va_list va)
-+{
-+ struct online_char_data *character;
-+ int* players;
-+ int *id;
-+ int j,k,l;
-+ character = (struct online_char_data*) data;
-+ players = va_arg(va, int*);
-+ id = va_arg(va, int*);
++static int create_online_files_sub(DBKey key, void* data, va_list va) ++{ ++ struct online_char_data *character; ++ int* players; ++ int *id; ++ int j,k,l; ++ character = (struct online_char_data*) data; ++ players = va_arg(va, int*); ++ id = va_arg(va, int*); - //char_log("Creation of online players files." RETCODE); -+ // check if map-server is online
-+ if (character->server == -1 || character->char_id == -1) { //Character not currently online.
-+ return -1;
-+ }
++ // check if map-server is online ++ if (character->server == -1 || character->char_id == -1) { //Character not currently online. ++ return -1; ++ } - // Get number of online players, id of each online players - players = 0; @@ -1357,21 +1357,21 @@ - for(i = 0; i < char_num; i++) { - if (online_chars[i] != -1) { - id[players] = i; -+ j = character->server;
-+ if (server_fd[j] < 0) {
-+ server[j].users = 0;
-+ if (kick_on_disconnect)
-+ {
-+ character->char_id = -1;
-+ character->server = -1;
-+ }
-+ return -1;
-+ }
-+ // search position of character in char_dat and sort online characters.
-+ for(j = 0; j < char_num; j++) {
-+ if (char_dat[j].status.char_id != character->char_id)
-+ continue;
-+ id[*players] = j;
++ j = character->server; ++ if (server_fd[j] < 0) { ++ server[j].users = 0; ++ if (kick_on_disconnect) ++ { ++ character->char_id = -1; ++ character->server = -1; ++ } ++ return -1; ++ } ++ // search position of character in char_dat and sort online characters. ++ for(j = 0; j < char_num; j++) { ++ if (char_dat[j].status.char_id != character->char_id) ++ continue; ++ id[*players] = j; // use sorting option switch (online_sorting_option) { case 1: // by name (without case sensitive) @@ -1379,19 +1379,19 @@ - char *p_name = char_dat[i].name; //speed up sorting when there are a lot of players. But very rarely players have same name. - for(j = 0; j < players; j++) - if (stricmp(p_name, char_dat[id[j]].name) < 0 || -+ for(k = 0; k < *players; k++)
-+ if (stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0 ||
++ for(k = 0; k < *players; k++) ++ if (stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0 || // if same name, we sort with case sensitive. - (stricmp(p_name, char_dat[id[j]].name) == 0 && - strcmp(p_name, char_dat[id[j]].name) < 0)) { - for(k = players; k > j; k--) - id[k] = id[k-1]; - id[j] = i; // id[players] -+ (stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) == 0 &&
-+ strcmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0)) {
-+ for(l = *players; l > k; l--)
-+ id[l] = id[l-1];
-+ id[k] = j; // id[*players]
++ (stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) == 0 && ++ strcmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0)) { ++ for(l = *players; l > k; l--) ++ id[l] = id[l-1]; ++ id[k] = j; // id[*players] break; } - } @@ -1399,51 +1399,51 @@ case 2: // by zeny - for(j = 0; j < players; j++) - if (char_dat[i].zeny < char_dat[id[j]].zeny || -+ for(k = 0; k < *players; k++)
-+ if (char_dat[j].status.zeny < char_dat[id[k]].status.zeny ||
++ for(k = 0; k < *players; k++) ++ if (char_dat[j].status.zeny < char_dat[id[k]].status.zeny || // if same number of zenys, we sort by name. - (char_dat[i].zeny == char_dat[id[j]].zeny && - stricmp(char_dat[i].name, char_dat[id[j]].name) < 0)) { - for(k = players; k > j; k--) - id[k] = id[k-1]; - id[j] = i; // id[players] -+ (char_dat[j].status.zeny == char_dat[id[k]].status.zeny &&
-+ stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0)) {
-+ for(l = *players; l > k; l--)
-+ id[l] = id[l-1];
-+ id[k] = j; // id[*players]
++ (char_dat[j].status.zeny == char_dat[id[k]].status.zeny && ++ stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0)) { ++ for(l = *players; l > k; l--) ++ id[l] = id[l-1]; ++ id[k] = j; // id[*players] break; } break; case 3: // by base level - for(j = 0; j < players; j++) - if (char_dat[i].base_level < char_dat[id[j]].base_level || -+ for(k = 0; k < *players; k++)
-+ if (char_dat[j].status.base_level < char_dat[id[k]].status.base_level ||
++ for(k = 0; k < *players; k++) ++ if (char_dat[j].status.base_level < char_dat[id[k]].status.base_level || // if same base level, we sort by base exp. - (char_dat[i].base_level == char_dat[id[j]].base_level && - char_dat[i].base_exp < char_dat[id[j]].base_exp)) { - for(k = players; k > j; k--) - id[k] = id[k-1]; - id[j] = i; // id[players] -+ (char_dat[j].status.base_level == char_dat[id[k]].status.base_level &&
-+ char_dat[j].status.base_exp < char_dat[id[k]].status.base_exp)) {
-+ for(l = *players; l > k; l--)
-+ id[l] = id[l-1];
-+ id[k] = j; // id[*players]
++ (char_dat[j].status.base_level == char_dat[id[k]].status.base_level && ++ char_dat[j].status.base_exp < char_dat[id[k]].status.base_exp)) { ++ for(l = *players; l > k; l--) ++ id[l] = id[l-1]; ++ id[k] = j; // id[*players] break; } break; case 4: // by job (and job level) - for(j = 0; j < players; j++) - if (char_dat[i].class < char_dat[id[j]].class || -+ for(k = 0; k < *players; k++)
-+ if (char_dat[j].status.class_ < char_dat[id[k]].status.class_ ||
++ for(k = 0; k < *players; k++) ++ if (char_dat[j].status.class_ < char_dat[id[k]].status.class_ || // if same job, we sort by job level. - (char_dat[i].class == char_dat[id[j]].class && - char_dat[i].job_level < char_dat[id[j]].job_level) || -+ (char_dat[j].status.class_ == char_dat[id[k]].status.class_ &&
-+ char_dat[j].status.job_level < char_dat[id[k]].status.job_level) ||
++ (char_dat[j].status.class_ == char_dat[id[k]].status.class_ && ++ char_dat[j].status.job_level < char_dat[id[k]].status.job_level) || // if same job and job level, we sort by job exp. - (char_dat[i].class == char_dat[id[j]].class && - char_dat[i].job_level == char_dat[id[j]].job_level && @@ -1451,12 +1451,12 @@ - for(k = players; k > j; k--) - id[k] = id[k-1]; - id[j] = i; // id[players] -+ (char_dat[j].status.class_ == char_dat[id[k]].status.class_ &&
-+ char_dat[j].status.job_level == char_dat[id[k]].status.job_level &&
-+ char_dat[j].status.job_exp < char_dat[id[k]].status.job_exp)) {
-+ for(l = *players; l > k; l--)
-+ id[l] = id[l-1];
-+ id[k] = j; // id[*players]
++ (char_dat[j].status.class_ == char_dat[id[k]].status.class_ && ++ char_dat[j].status.job_level == char_dat[id[k]].status.job_level && ++ char_dat[j].status.job_exp < char_dat[id[k]].status.job_exp)) { ++ for(l = *players; l > k; l--) ++ id[l] = id[l-1]; ++ id[k] = j; // id[*players] break; } break; @@ -1465,58 +1465,58 @@ - int cpm_result; // A lot of player maps are identical. So, test if done often twice. - for(j = 0; j < players; j++) - if ((cpm_result = strcmp(char_dat[i].last_point.map, char_dat[id[j]].last_point.map)) < 0 || // no map are identical and with upper cases (not use stricmp) -+ const char *map1, *map2;
-+ map1 = mapindex_id2name(char_dat[j].status.last_point.map);
-+
-+ for(k = 0; k < *players; k++) {
-+ map2 = mapindex_id2name(char_dat[id[k]].status.last_point.map);
-+ if (!map1 || !map2 || //Avoid sorting if either one failed to resolve.
-+ stricmp(map1, map2) < 0 ||
++ const char *map1, *map2; ++ map1 = mapindex_id2name(char_dat[j].status.last_point.map); ++ ++ for(k = 0; k < *players; k++) { ++ map2 = mapindex_id2name(char_dat[id[k]].status.last_point.map); ++ if (!map1 || !map2 || //Avoid sorting if either one failed to resolve. ++ stricmp(map1, map2) < 0 || // if same map name, we sort by name. - (cpm_result == 0 && - stricmp(char_dat[i].name, char_dat[id[j]].name) < 0)) { - for(k = players; k > j; k--) - id[k] = id[k-1]; - id[j] = i; // id[players] -+ (stricmp(map1, map2) == 0 &&
-+ stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0)) {
-+ for(l = *players; l > k; l--)
-+ id[l] = id[l-1];
-+ id[k] = j; // id[*players]
++ (stricmp(map1, map2) == 0 && ++ stricmp(char_dat[j].status.name, char_dat[id[k]].status.name) < 0)) { ++ for(l = *players; l > k; l--) ++ id[l] = id[l-1]; ++ id[k] = j; // id[*players] break; } } -+ }
++ } break; default: // 0 or invalid value: no sorting break; } - players++; -+ (*players)++;
-+ break;
++ (*players)++; ++ break; } -+ return 0;
++ return 0; } -+//-------------------------------------------------------------
-+// Function to create the online files (txt and html). by [Yor]
-+//-------------------------------------------------------------
-+void create_online_files(void) {
-+ unsigned int k, j; // for loop with strlen comparing
-+ int i, l; // for loops
-+ int players; // count the number of players
-+ FILE *fp; // for the txt file
-+ FILE *fp2; // for the html file
-+ char temp[256]; // to prepare what we must display
-+ time_t time_server; // for number of seconds
-+ struct tm *datetime; // variable for time in structure ->tm_mday, ->tm_sec, ...
-+ int id[4096];
-+
-+ if (online_display_option == 0) // we display nothing, so return
-+ return;
-+
-+ // Get number of online players, id of each online players, and verify if a server is offline
-+ players = 0;
-+ online_char_db->foreach(online_char_db, create_online_files_sub, &players, &id);
++//------------------------------------------------------------- ++// Function to create the online files (txt and html). by [Yor] ++//------------------------------------------------------------- ++void create_online_files(void) { ++ unsigned int k, j; // for loop with strlen comparing ++ int i, l; // for loops ++ int players; // count the number of players ++ FILE *fp; // for the txt file ++ FILE *fp2; // for the html file ++ char temp[256]; // to prepare what we must display ++ time_t time_server; // for number of seconds ++ struct tm *datetime; // variable for time in structure ->tm_mday, ->tm_sec, ... ++ int id[4096]; ++ ++ if (online_display_option == 0) // we display nothing, so return ++ return; ++ ++ // Get number of online players, id of each online players, and verify if a server is offline ++ players = 0; ++ online_char_db->foreach(online_char_db, create_online_files_sub, &players, &id); // write files fp = fopen(online_txt_filename, "w"); @@ -1526,9 +1526,9 @@ - // If we display at least 1 player - if (players > 0) { -+ for (i = 0; i < players; i++) {
-+ // if it's the first player
-+ if (i == 0) {
++ for (i = 0; i < players; i++) { ++ // if it's the first player ++ if (i == 0) { j = 0; // count the number of characters for the txt version and to set the separate line fprintf(fp2, " <table border=\"1\" cellspacing=\"1\">\n"); fprintf(fp2, " <tr>\n"); @@ -1539,8 +1539,8 @@ - - // display each player. - for (i = 0; i < players; i++) { -+ }
-+ fprintf(fp2, " <tr>\n");
++ } ++ fprintf(fp2, " <tr>\n"); // get id of the character (more speed) j = id[i]; - fprintf(fp2, " <tr>\n"); @@ -1548,8 +1548,8 @@ if ((online_display_option & 1) || (online_display_option & 64)) { // without/with 'GM' display - strcpy(temp, char_dat[j].name); - l = isGM(char_dat[j].account_id); -+ strcpy(temp, char_dat[j].status.name);
-+ l = isGM(char_dat[j].status.account_id);
++ strcpy(temp, char_dat[j].status.name); ++ l = isGM(char_dat[j].status.account_id); if (online_display_option & 64) { if (l >= online_gm_display_min_level) fprintf(fp, "%-24s (GM) ", temp); @@ -1558,7 +1558,7 @@ if ((online_display_option & 64) && l >= online_gm_display_min_level) fprintf(fp2, "<b>"); - for (k = 0; temp[k]; k++) { -+ for (k = 0; k < strlen(temp); k++) {
++ for (k = 0; k < strlen(temp); k++) { switch(temp[k]) { case '<': // < fprintf(fp2, "<"); @@ -1567,20 +1567,20 @@ // displaying of the job if (online_display_option & 6) { - char * jobname = job_name(char_dat[j].class); -+ char * jobname = job_name(char_dat[j].status.class_);
++ char * jobname = job_name(char_dat[j].status.class_); if ((online_display_option & 6) == 6) { - fprintf(fp2, " <td>%s %d/%d</td>\n", jobname, char_dat[j].base_level, char_dat[j].job_level); - fprintf(fp, "%-18s %3d/%3d ", jobname, char_dat[j].base_level, char_dat[j].job_level); -+ fprintf(fp2, " <td>%s %d/%d</td>\n", jobname, char_dat[j].status.base_level, char_dat[j].status.job_level);
-+ fprintf(fp, "%-18s %3d/%3d ", jobname, char_dat[j].status.base_level, char_dat[j].status.job_level);
++ fprintf(fp2, " <td>%s %d/%d</td>\n", jobname, char_dat[j].status.base_level, char_dat[j].status.job_level); ++ fprintf(fp, "%-18s %3d/%3d ", jobname, char_dat[j].status.base_level, char_dat[j].status.job_level); } else if (online_display_option & 2) { fprintf(fp2, " <td>%s</td>\n", jobname); fprintf(fp, "%-18s ", jobname); } else if (online_display_option & 4) { - fprintf(fp2, " <td>%d/%d</td>\n", char_dat[j].base_level, char_dat[j].job_level); - fprintf(fp, "%3d/%3d ", char_dat[j].base_level, char_dat[j].job_level); -+ fprintf(fp2, " <td>%d/%d</td>\n", char_dat[j].status.base_level, char_dat[j].status.job_level);
-+ fprintf(fp, "%3d/%3d ", char_dat[j].status.base_level, char_dat[j].status.job_level);
++ fprintf(fp2, " <td>%d/%d</td>\n", char_dat[j].status.base_level, char_dat[j].status.job_level); ++ fprintf(fp, "%3d/%3d ", char_dat[j].status.base_level, char_dat[j].status.job_level); } } // displaying of the map @@ -1590,43 +1590,43 @@ - strncpy(temp, char_dat[j].last_point.map, 16); - if (strchr(temp, '.') != NULL) - temp[strchr(temp, '.') - temp] = '\0'; // suppress the '.gat' -+ memcpy(temp, mapindex_id2name(char_dat[j].status.last_point.map), MAP_NAME_LENGTH);
-+ temp[MAP_NAME_LENGTH] = '\0';
-+ if (strstr(temp, ".gat") != NULL) {
-+ temp[strstr(temp, ".gat") - temp] = 0; // suppress the '.gat'
-+ }
++ memcpy(temp, mapindex_id2name(char_dat[j].status.last_point.map), MAP_NAME_LENGTH); ++ temp[MAP_NAME_LENGTH] = '\0'; ++ if (strstr(temp, ".gat") != NULL) { ++ temp[strstr(temp, ".gat") - temp] = 0; // suppress the '.gat' ++ } // write map name - if (online_display_option & 16) { // map-name AND coordonates - fprintf(fp2, " <td>%s (%d, %d)</td>\n", temp, char_dat[j].last_point.x, char_dat[j].last_point.y); - fprintf(fp, "%-12s (%3d,%3d) ", temp, char_dat[j].last_point.x, char_dat[j].last_point.y); -+ if (online_display_option & 16) { // map-name AND coordinates
-+ fprintf(fp2, " <td>%s (%d, %d)</td>\n", temp, char_dat[j].status.last_point.x, char_dat[j].status.last_point.y);
-+ fprintf(fp, "%-12s (%3d,%3d) ", temp, char_dat[j].status.last_point.x, char_dat[j].status.last_point.y);
++ if (online_display_option & 16) { // map-name AND coordinates ++ fprintf(fp2, " <td>%s (%d, %d)</td>\n", temp, char_dat[j].status.last_point.x, char_dat[j].status.last_point.y); ++ fprintf(fp, "%-12s (%3d,%3d) ", temp, char_dat[j].status.last_point.x, char_dat[j].status.last_point.y); } else { fprintf(fp2, " <td>%s</td>\n", temp); fprintf(fp, "%-12s ", temp); } } - // displaying number of zenys -+ // displaying nimber of zenys
++ // displaying nimber of zenys if (online_display_option & 32) { // write number of zenys - if (char_dat[j].zeny == 0) { // if no zeny -+ if (char_dat[j].status.zeny == 0) { // if no zeny
++ if (char_dat[j].status.zeny == 0) { // if no zeny fprintf(fp2, " <td ALIGN=RIGHT>no zeny</td>\n"); fprintf(fp, " no zeny "); } else { - fprintf(fp2, " <td ALIGN=RIGHT>%d z</td>\n", char_dat[j].zeny); - fprintf(fp, "%13d z ", char_dat[j].zeny); -+ fprintf(fp2, " <td ALIGN=RIGHT>%d z</td>\n", char_dat[j].status.zeny);
-+ fprintf(fp, "%13d z ", char_dat[j].status.zeny);
++ fprintf(fp2, " <td ALIGN=RIGHT>%d z</td>\n", char_dat[j].status.zeny); ++ fprintf(fp, "%13d z ", char_dat[j].status.zeny); } } fprintf(fp, "\n"); fprintf(fp2, " </tr>\n"); } -+ // If we display at least 1 player
-+ if (players > 0) {
++ // If we display at least 1 player ++ if (players > 0) { fprintf(fp2, " </table>\n"); fprintf(fp, "\n"); } @@ -1636,8 +1636,8 @@ fprintf(fp, "No user is online.\n"); - // no display if only 1 player } else if (players == 1) { -+ fprintf(fp2, " <p>%d user is online.</p>\n", players);
-+ fprintf(fp, "%d user is online.\n", players);
++ fprintf(fp2, " <p>%d user is online.</p>\n", players); ++ fprintf(fp, "%d user is online.\n", players); } else { fprintf(fp2, " <p>%d users are online.</p>\n", players); fprintf(fp, "%d users are online.\n", players); @@ -1646,21 +1646,21 @@ int i, j, found_num; struct mmo_charstatus *p; -#ifdef NEW_006b -+//#ifdef NEW_006b
++//#ifdef NEW_006b const int offset = 24; -#else - const int offset = 4; -#endif -+//#else
-+// const int offset = 4;
-+//#endif
-+
-+ set_char_online(0, 99,sd->account_id);
++//#else ++// const int offset = 4; ++//#endif ++ ++ set_char_online(0, 99,sd->account_id); found_num = 0; for(i = 0; i < char_num; i++) { - if (char_dat[i].account_id == sd->account_id) { -+ if (char_dat[i].status.account_id == sd->account_id) {
++ if (char_dat[i].status.account_id == sd->account_id) { sd->found_char[found_num] = i; found_num++; if (found_num == 9) @@ -1668,22 +1668,22 @@ for(i = found_num; i < 9; i++) sd->found_char[i] = -1; -+ WFIFOHEAD(fd, offset + found_num * 106);
++ WFIFOHEAD(fd, offset + found_num * 106); memset(WFIFOP(fd,0), 0, offset + found_num * 106); WFIFOW(fd,0) = 0x6b; WFIFOW(fd,2) = offset + found_num * 106; for(i = 0; i < found_num; i++) { - p = &char_dat[sd->found_char[i]]; -+ p = &char_dat[sd->found_char[i]].status;
++ p = &char_dat[sd->found_char[i]].status; j = offset + (i * 106); // increase speed of code WFIFOL(fd,j) = p->char_id; - WFIFOL(fd,j+4) = p->base_exp; -+ WFIFOL(fd,j+4) = p->base_exp>LONG_MAX?LONG_MAX:p->base_exp;
++ WFIFOL(fd,j+4) = p->base_exp>LONG_MAX?LONG_MAX:p->base_exp; WFIFOL(fd,j+8) = p->zeny; - WFIFOL(fd,j+12) = p->job_exp; -+ WFIFOL(fd,j+12) = p->job_exp>LONG_MAX?LONG_MAX:p->job_exp;
++ WFIFOL(fd,j+12) = p->job_exp>LONG_MAX?LONG_MAX:p->job_exp; WFIFOL(fd,j+16) = p->job_level; WFIFOL(fd,j+20) = 0; @@ -1692,17 +1692,17 @@ WFIFOW(fd,j+48) = (p->max_sp > 0x7fff) ? 0x7fff : p->max_sp; WFIFOW(fd,j+50) = DEFAULT_WALK_SPEED; // p->speed; - WFIFOW(fd,j+52) = p->class; -+ WFIFOW(fd,j+52) = p->class_;
++ WFIFOW(fd,j+52) = p->class_; WFIFOW(fd,j+54) = p->hair; - WFIFOW(fd,j+56) = p->weapon; -+
-+ // pecopeco knights/crusaders crash fix
-+ if (p->class_ == 13 || p->class_ == 21 ||
-+ p->class_ == 4014 || p->class_ == 4022 ||
-+ p->class_ == 4036 || p->class_ == 4044)
-+ WFIFOW(fd,j+56) = 0;
-+ else WFIFOW(fd,j+56) = p->weapon;
-+
++ ++ // pecopeco knights/crusaders crash fix ++ if (p->class_ == 13 || p->class_ == 21 || ++ p->class_ == 4014 || p->class_ == 4022 || ++ p->class_ == 4036 || p->class_ == 4044) ++ WFIFOW(fd,j+56) = 0; ++ else WFIFOW(fd,j+56) = p->weapon; ++ WFIFOW(fd,j+58) = p->base_level; WFIFOW(fd,j+60) = p->skill_point; WFIFOW(fd,j+62) = p->head_bottom; @@ -1711,7 +1711,7 @@ WFIFOW(fd,j+72) = p->clothes_color; - memcpy(WFIFOP(fd,j+74), p->name, 24); -+ memcpy(WFIFOP(fd,j+74), p->name, NAME_LENGTH);
++ memcpy(WFIFOP(fd,j+74), p->name, NAME_LENGTH); WFIFOB(fd,j+98) = (p->str > 255) ? 255 : p->str; WFIFOB(fd,j+99) = (p->agi > 255) ? 255 : p->agi; @@ -1721,14 +1721,14 @@ -int set_account_reg2(int acc, int num, struct global_reg *reg) { - int i, c; -+// —£¥(char휎ž‚ÉŽg—p)
-+int char_divorce(struct mmo_charstatus *cs) {
-+ if (cs == NULL)
-+ return 0;
++// —£¥(char휎ž‚ÉŽg—p) ++int char_divorce(struct mmo_charstatus *cs) { ++ if (cs == NULL) ++ return 0; - c = 0; -+ if (cs->partner_id > 0){
-+ int i, j;
++ if (cs->partner_id > 0){ ++ int i, j; for(i = 0; i < char_num; i++) { - if (char_dat[i].account_id == acc) { - memcpy(char_dat[i].account_reg2, reg, sizeof(char_dat[i].account_reg2)); @@ -1748,15 +1748,15 @@ - int i, j; - for(i = 0; i < char_num; i++) { - if (char_dat[i].char_id == cs->partner_id && char_dat[i].partner_id == cs->char_id) { -+ if (char_dat[i].status.char_id == cs->partner_id && char_dat[i].status.partner_id == cs->char_id) {
++ if (char_dat[i].status.char_id == cs->partner_id && char_dat[i].status.partner_id == cs->char_id) { cs->partner_id = 0; - char_dat[i].partner_id = 0; -+ char_dat[i].status.partner_id = 0;
++ char_dat[i].status.partner_id = 0; for(j = 0; j < MAX_INVENTORY; j++) - if (char_dat[i].inventory[j].nameid == WEDDING_RING_M || char_dat[i].inventory[j].nameid == WEDDING_RING_F) - memset(&char_dat[i].inventory[j], 0, sizeof(char_dat[i].inventory[0])); -+ if (char_dat[i].status.inventory[j].nameid == WEDDING_RING_M || char_dat[i].status.inventory[j].nameid == WEDDING_RING_F)
-+ memset(&char_dat[i].status.inventory[j], 0, sizeof(char_dat[i].status.inventory[0]));
++ if (char_dat[i].status.inventory[j].nameid == WEDDING_RING_M || char_dat[i].status.inventory[j].nameid == WEDDING_RING_F) ++ memset(&char_dat[i].status.inventory[j], 0, sizeof(char_dat[i].status.inventory[0])); if (cs->inventory[j].nameid == WEDDING_RING_M || cs->inventory[j].nameid == WEDDING_RING_F) memset(&cs->inventory[j], 0, sizeof(cs->inventory[0])); return 0; @@ -1764,24 +1764,24 @@ return 0; } -+int char_married(int pl1,int pl2) {
-+ return (char_dat[pl1].status.char_id == char_dat[pl2].status.partner_id && char_dat[pl2].status.char_id == char_dat[pl1].status.partner_id);
-+}
-+
-+int char_child(int parent_id, int child_id) {
-+ return (char_dat[parent_id].status.child == char_dat[child_id].status.char_id &&
-+ ((char_dat[parent_id].status.char_id == char_dat[child_id].status.father) ||
-+ (char_dat[parent_id].status.char_id == char_dat[child_id].status.mother)));
-+}
-+
++int char_married(int pl1,int pl2) { ++ return (char_dat[pl1].status.char_id == char_dat[pl2].status.partner_id && char_dat[pl2].status.char_id == char_dat[pl1].status.partner_id); ++} ++ ++int char_child(int parent_id, int child_id) { ++ return (char_dat[parent_id].status.child == char_dat[child_id].status.char_id && ++ ((char_dat[parent_id].status.char_id == char_dat[child_id].status.father) || ++ (char_dat[parent_id].status.char_id == char_dat[child_id].status.mother))); ++} ++ //------------------------------------------------------------ // E-mail check: return 0 (not correct) or 1 (valid). by [Yor] //------------------------------------------------------------ -int e_mail_check(unsigned char *email) { -+int e_mail_check(char *email) {
++int e_mail_check(char *email) { char ch; - unsigned char* last_arobas; -+ char* last_arobas;
++ char* last_arobas; // athena limits if (strlen(email) < 3 || strlen(email) > 39) @@ -1790,7 +1790,7 @@ // disconnect player if online on char-server for(i = 0; i < fd_max; i++) { - if (session[i] && (sd = session[i]->session_data)) { -+ if (session[i] && (sd = (struct char_session_data*)session[i]->session_data)) {
++ if (session[i] && (sd = (struct char_session_data*)session[i]->session_data)) { if (sd->account_id == accound_id) { session[i]->eof = 1; return 1; @@ -1799,23 +1799,23 @@ for (j = 0; j < MAX_INVENTORY; j++) if (cs->inventory[j].card[0] == (short)0xff00) - inter_pet_delete(*((long *)(&cs->inventory[j].card[2]))); -+ inter_pet_delete(MakeDWord(cs->inventory[j].card[1],cs->inventory[j].card[2]));
++ inter_pet_delete(MakeDWord(cs->inventory[j].card[1],cs->inventory[j].card[2])); for (j = 0; j < MAX_CART; j++) if (cs->cart[j].card[0] == (short)0xff00) - inter_pet_delete(*((long *)(&cs->cart[j].card[2]))); -+ inter_pet_delete( MakeDWord(cs->cart[j].card[1],cs->cart[j].card[2]) );
++ inter_pet_delete( MakeDWord(cs->cart[j].card[1],cs->cart[j].card[2]) ); // ƒMƒ‹ƒh’E‘Þ if (cs->guild_id) inter_guild_leave(cs->guild_id, cs->account_id, cs->char_id); // ƒp[ƒeƒB[’E‘Þ if (cs->party_id) - inter_party_leave(cs->party_id, cs->account_id); -+ inter_party_leave(cs->party_id, cs->account_id, cs->char_id);
++ inter_party_leave(cs->party_id, cs->account_id, cs->char_id); // —£¥ if (cs->partner_id){ // —£¥î•ñ‚ðmap‚É’Ê’m - char buf[10]; -+ unsigned char buf[10];
++ unsigned char buf[10]; WBUFW(buf,0) = 0x2b12; WBUFL(buf,2) = cs->char_id; WBUFL(buf,6) = cs->partner_id; @@ -1823,30 +1823,30 @@ int parse_tologin(int fd) { int i; struct char_session_data *sd; -+ RFIFOHEAD(fd);
++ RFIFOHEAD(fd); // only login-server can have an access to here. // so, if it isn't the login-server, we disconnect the session (fd != login_fd). - if (fd != login_fd || session[fd]->eof) { -+ if (fd != login_fd)
-+ session[fd]->eof = 1;
-+ if(session[fd]->eof) {
++ if (fd != login_fd) ++ session[fd]->eof = 1; ++ if(session[fd]->eof) { if (fd == login_fd) { - printf("Char-server can't connect to login-server (connection #%d).\n", fd); -+ ShowWarning("Connection to login-server lost (connection #%d).\n", fd);
++ ShowWarning("Connection to login-server lost (connection #%d).\n", fd); login_fd = -1; } - close(fd); - delete_session(fd); -+ do_close(fd);
++ do_close(fd); return 0; } - sd = session[fd]->session_data; -+ sd = (struct char_session_data*)session[fd]->session_data;
++ sd = (struct char_session_data*)session[fd]->session_data; - while(RFIFOREST(fd) >= 2) { -+ while(RFIFOREST(fd) >= 2 && !session[fd]->eof) {
++ while(RFIFOREST(fd) >= 2 && !session[fd]->eof) { // printf("parse_tologin: connection #%d, packet: 0x%x (with being read: %d bytes).\n", fd, RFIFOW(fd,0), RFIFOREST(fd)); switch(RFIFOW(fd,0)) { @@ -1858,24 +1858,24 @@ - printf("The server communication passwords (default s1/p1) is probably invalid.\n"); - printf("Also, please make sure your accounts file (default: accounts.txt) has those values present.\n"); - printf("If you changed the communication passwords, change them back at map_athena.conf and char_athena.conf\n"); -+ ShowError("Can not connect to the login-server.\n");
-+ ShowError("The server communication passwords (default s1/p1) are probably invalid.\n");
-+ ShowInfo("Also, please make sure your accounts file (default: accounts.txt) has those values present.\n");
-+ ShowInfo("The communication passwords can be changed in map_athena.conf and char_athena.conf\n");
++ ShowError("Can not connect to the login-server.\n"); ++ ShowError("The server communication passwords (default s1/p1) are probably invalid.\n"); ++ ShowInfo("Also, please make sure your accounts file (default: accounts.txt) has those values present.\n"); ++ ShowInfo("The communication passwords can be changed in map_athena.conf and char_athena.conf\n"); exit(1); } else { - printf("Connected to login-server (connection #%d).\n", fd); -+ ShowStatus("Connected to login-server (connection #%d).\n", fd);
-+ if (kick_on_disconnect)
-+ set_all_offline();
++ ShowStatus("Connected to login-server (connection #%d).\n", fd); ++ if (kick_on_disconnect) ++ set_all_offline(); // if no map-server already connected, display a message... for(i = 0; i < MAX_MAP_SERVERS; i++) - if (server_fd[i] >= 0 && server[i].map[0][0]) // if map-server online and at least 1 map -+ if (server_fd[i] >= 0 && server[i].map[0]) // if map-server online and at least 1 map
++ if (server_fd[i] >= 0 && server[i].map[0]) // if map-server online and at least 1 map break; if (i == MAX_MAP_SERVERS) - printf("Awaiting maps from map-server.\n"); -+ ShowStatus("Awaiting maps from map-server.\n");
++ ShowStatus("Awaiting maps from map-server.\n"); } RFIFOSKIP(fd,3); break; @@ -1884,9 +1884,9 @@ // printf("parse_tologin 2713 : %d\n", RFIFOB(fd,6)); for(i = 0; i < fd_max; i++) { - if (session[i] && (sd = session[i]->session_data) && sd->account_id == RFIFOL(fd,2)) { -+ if (session[i] && (sd = (struct char_session_data*)session[i]->session_data) && sd->account_id == RFIFOL(fd,2)) {
++ if (session[i] && (sd = (struct char_session_data*)session[i]->session_data) && sd->account_id == RFIFOL(fd,2)) { if (RFIFOB(fd,6) != 0) { -+ WFIFOHEAD(i, 3);
++ WFIFOHEAD(i, 3); WFIFOW(i,0) = 0x6c; WFIFOB(i,2) = 0x42; WFIFOSET(i,3); @@ -1894,14 +1894,14 @@ sd->connect_until_time = (time_t)RFIFOL(fd,47); // send characters to player mmo_char_send006b(i, sd); -+ } else if(isGM(sd->account_id) >= gm_allow_level) {
-+ sd->connect_until_time = (time_t)RFIFOL(fd,47);
-+ // send characters to player
-+ mmo_char_send006b(i, sd);
++ } else if(isGM(sd->account_id) >= gm_allow_level) { ++ sd->connect_until_time = (time_t)RFIFOL(fd,47); ++ // send characters to player ++ mmo_char_send006b(i, sd); } else { // refuse connection: too much online players // printf("count_users(): %d < max_connect_use (%d) -> fail...\n", count_users(), max_connect_user); -+ WFIFOHEAD(fd, 3);
++ WFIFOHEAD(fd, 3); WFIFOW(i,0) = 0x6c; WFIFOW(i,2) = 0; WFIFOSET(i,3); @@ -1910,7 +1910,7 @@ return 0; for(i = 0; i < fd_max; i++) { - if (session[i] && (sd = session[i]->session_data)) { -+ if (session[i] && (sd = (struct char_session_data*)session[i]->session_data)) {
++ if (session[i] && (sd = (struct char_session_data*)session[i]->session_data)) { if (sd->account_id == RFIFOL(fd,2)) { memcpy(sd->email, RFIFOP(fd,6), 40); if (e_mail_check(sd->email) == 0) @@ -1918,40 +1918,40 @@ RFIFOSKIP(fd,50); break; -+ // login-server alive packet
-+ case 0x2718:
-+ if (RFIFOREST(fd) < 2)
-+ return 0;
-+ RFIFOSKIP(fd,2);
-+ break;
-+
-+ // Receiving authentification from Freya-type login server (to avoid char->login->char)
-+ case 0x2719:
-+ if (RFIFOREST(fd) < 18)
-+ return 0;
-+ // to conserv a maximum of authentification, search if account is already authentified and replace it
-+ // that will reduce multiple connection too
-+ for(i = 0; i < AUTH_FIFO_SIZE; i++)
-+ if (auth_fifo[i].account_id == RFIFOL(fd,2))
-+ break;
-+ // if not found, use next value
-+ if (i == AUTH_FIFO_SIZE) {
-+ if (auth_fifo_pos >= AUTH_FIFO_SIZE)
-+ auth_fifo_pos = 0;
-+ i = auth_fifo_pos;
-+ auth_fifo_pos++;
-+ }
-+ auth_fifo[i].account_id = RFIFOL(fd,2);
-+ auth_fifo[i].char_id = 0;
-+ auth_fifo[i].login_id1 = RFIFOL(fd,6);
-+ auth_fifo[i].login_id2 = RFIFOL(fd,10);
-+ auth_fifo[i].delflag = 2; // 0: auth_fifo canceled/void, 2: auth_fifo received from login/map server in memory, 1: connection authentified
-+ auth_fifo[i].char_pos = 0;
-+ auth_fifo[i].connect_until_time = 0; // unlimited/unknown time by default (not display in map-server)
-+ auth_fifo[i].ip = RFIFOL(fd,14);
-+ RFIFOSKIP(fd,18);
-+ break;
-+
++ // login-server alive packet ++ case 0x2718: ++ if (RFIFOREST(fd) < 2) ++ return 0; ++ RFIFOSKIP(fd,2); ++ break; ++ ++ // Receiving authentification from Freya-type login server (to avoid char->login->char) ++ case 0x2719: ++ if (RFIFOREST(fd) < 18) ++ return 0; ++ // to conserv a maximum of authentification, search if account is already authentified and replace it ++ // that will reduce multiple connection too ++ for(i = 0; i < AUTH_FIFO_SIZE; i++) ++ if (auth_fifo[i].account_id == RFIFOL(fd,2)) ++ break; ++ // if not found, use next value ++ if (i == AUTH_FIFO_SIZE) { ++ if (auth_fifo_pos >= AUTH_FIFO_SIZE) ++ auth_fifo_pos = 0; ++ i = auth_fifo_pos; ++ auth_fifo_pos++; ++ } ++ auth_fifo[i].account_id = RFIFOL(fd,2); ++ auth_fifo[i].char_id = 0; ++ auth_fifo[i].login_id1 = RFIFOL(fd,6); ++ auth_fifo[i].login_id2 = RFIFOL(fd,10); ++ auth_fifo[i].delflag = 2; // 0: auth_fifo canceled/void, 2: auth_fifo received from login/map server in memory, 1: connection authentified ++ auth_fifo[i].char_pos = 0; ++ auth_fifo[i].connect_until_time = 0; // unlimited/unknown time by default (not display in map-server) ++ auth_fifo[i].ip = RFIFOL(fd,14); ++ RFIFOSKIP(fd,18); ++ break; ++ case 0x2721: // gm reply if (RFIFOREST(fd) < 10) return 0; @@ -1963,27 +1963,27 @@ - if (char_dat[i].account_id == acc) { - int jobclass = char_dat[i].class; - char_dat[i].sex = sex; -+ for(i = 0; i < AUTH_FIFO_SIZE; i++) {
-+ if (auth_fifo[i].account_id == acc)
++ for(i = 0; i < AUTH_FIFO_SIZE; i++) { ++ if (auth_fifo[i].account_id == acc) auth_fifo[i].sex = sex; -+ }
-+ for (i = 0; i < char_num; i++) {
-+ if (char_dat[i].status.account_id == acc) {
-+ int jobclass = char_dat[i].status.class_;
-+ char_dat[i].status.sex = sex;
++ } ++ for (i = 0; i < char_num; i++) { ++ if (char_dat[i].status.account_id == acc) { ++ int jobclass = char_dat[i].status.class_; ++ char_dat[i].status.sex = sex; if (jobclass == 19 || jobclass == 20 || jobclass == 4020 || jobclass == 4021 || jobclass == 4042 || jobclass == 4043) { // job modification if (jobclass == 19 || jobclass == 20) { - char_dat[i].class = (sex) ? 19 : 20; -+ char_dat[i].status.class_ = (sex) ? 19 : 20;
++ char_dat[i].status.class_ = (sex) ? 19 : 20; } else if (jobclass == 4020 || jobclass == 4021) { - char_dat[i].class = (sex) ? 4020 : 4021; -+ char_dat[i].status.class_ = (sex) ? 4020 : 4021;
++ char_dat[i].status.class_ = (sex) ? 4020 : 4021; } else if (jobclass == 4042 || jobclass == 4043) { - char_dat[i].class = (sex) ? 4042 : 4043; -+ char_dat[i].status.class_ = (sex) ? 4042 : 4043;
++ char_dat[i].status.class_ = (sex) ? 4042 : 4043; } // remove specifical skills of classes 19, 4020 and 4042 for(j = 315; j <= 322; j++) { @@ -1991,10 +1991,10 @@ - char_dat[i].skill_point += char_dat[i].skill[j].lv; - char_dat[i].skill[j].id = 0; - char_dat[i].skill[j].lv = 0; -+ if (char_dat[i].status.skill[j].id > 0 && !char_dat[i].status.skill[j].flag) {
-+ char_dat[i].status.skill_point += char_dat[i].status.skill[j].lv;
-+ char_dat[i].status.skill[j].id = 0;
-+ char_dat[i].status.skill[j].lv = 0;
++ if (char_dat[i].status.skill[j].id > 0 && !char_dat[i].status.skill[j].flag) { ++ char_dat[i].status.skill_point += char_dat[i].status.skill[j].lv; ++ char_dat[i].status.skill[j].id = 0; ++ char_dat[i].status.skill[j].lv = 0; } } // remove specifical skills of classes 20, 4021 and 4043 @@ -2003,10 +2003,10 @@ - char_dat[i].skill_point += char_dat[i].skill[j].lv; - char_dat[i].skill[j].id = 0; - char_dat[i].skill[j].lv = 0; -+ if (char_dat[i].status.skill[j].id > 0 && !char_dat[i].status.skill[j].flag) {
-+ char_dat[i].status.skill_point += char_dat[i].status.skill[j].lv;
-+ char_dat[i].status.skill[j].id = 0;
-+ char_dat[i].status.skill[j].lv = 0;
++ if (char_dat[i].status.skill[j].id > 0 && !char_dat[i].status.skill[j].flag) { ++ char_dat[i].status.skill_point += char_dat[i].status.skill[j].lv; ++ char_dat[i].status.skill[j].id = 0; ++ char_dat[i].status.skill[j].lv = 0; } } } @@ -2014,22 +2014,22 @@ for (j = 0; j < MAX_INVENTORY; j++) { - if (char_dat[i].inventory[j].nameid && char_dat[i].inventory[j].equip) - char_dat[i].inventory[j].equip = 0; -+ if (char_dat[i].status.inventory[j].nameid && char_dat[i].status.inventory[j].equip)
-+ char_dat[i].status.inventory[j].equip = 0;
++ if (char_dat[i].status.inventory[j].nameid && char_dat[i].status.inventory[j].equip) ++ char_dat[i].status.inventory[j].equip = 0; } - char_dat[i].weapon = 0; - char_dat[i].shield = 0; - char_dat[i].head_top = 0; - char_dat[i].head_mid = 0; - char_dat[i].head_bottom = 0; -+ char_dat[i].status.weapon = 0;
-+ char_dat[i].status.shield = 0;
-+ char_dat[i].status.head_top = 0;
-+ char_dat[i].status.head_mid = 0;
-+ char_dat[i].status.head_bottom = 0;
-+
-+ if (char_dat[i].status.guild_id) //If there is a guild, update the guild_member data [Skotlex]
-+ inter_guild_sex_changed(char_dat[i].status.guild_id, acc, char_dat[i].status.char_id, sex);
++ char_dat[i].status.weapon = 0; ++ char_dat[i].status.shield = 0; ++ char_dat[i].status.head_top = 0; ++ char_dat[i].status.head_mid = 0; ++ char_dat[i].status.head_bottom = 0; ++ ++ if (char_dat[i].status.guild_id) //If there is a guild, update the guild_member data [Skotlex] ++ inter_guild_sex_changed(char_dat[i].status.guild_id, acc, char_dat[i].status.char_id, sex); } } // disconnect player if online on char-server @@ -2039,15 +2039,15 @@ else { - char buf[128]; - char message[RFIFOL(fd,4) + 1]; // +1 to add a null terminated if not exist in the packet -+ unsigned char buf[128];
-+ char message[4096]; // +1 to add a null terminated if not exist in the packet
++ unsigned char buf[128]; ++ char message[4096]; // +1 to add a null terminated if not exist in the packet int lp; char *p; memset(message, '\0', sizeof(message)); memcpy(message, RFIFOP(fd,8), RFIFOL(fd,4)); message[sizeof(message)-1] = '\0'; - remove_control_chars(message); -+ remove_control_chars((unsigned char *)message);
++ remove_control_chars((unsigned char *)message); // remove all first spaces p = message; while(p[0] == ' ') @@ -2066,12 +2066,12 @@ - } - set_account_reg2(acc, j, reg); - // “¯CƒƒOƒCƒ“‚ð‹ÖŽ~‚µ‚Ä‚¢‚ê‚Α—‚é•K—v‚Í–³‚¢ -+ { //Receive account_reg2 registry, forward to map servers.
-+ unsigned char buf[ACCOUNT_REG2_NUM*(256+32+2)+16];
++ { //Receive account_reg2 registry, forward to map servers. ++ unsigned char buf[ACCOUNT_REG2_NUM*(256+32+2)+16]; memcpy(buf, RFIFOP(fd,0), RFIFOW(fd,2)); - WBUFW(buf,0) = 0x2b11; -+// WBUFW(buf,0) = 0x2b11;
-+ WBUFW(buf,0) = 0x3804; //Map server can now receive all kinds of reg values with the same packet. [Skotlex]
++// WBUFW(buf,0) = 0x2b11; ++ WBUFW(buf,0) = 0x3804; //Map server can now receive all kinds of reg values with the same packet. [Skotlex] mapif_sendall(buf, WBUFW(buf,2)); RFIFOSKIP(fd,RFIFOW(fd,2)); -// printf("char: save_account_reg_reply\n"); @@ -2084,14 +2084,14 @@ for(i = 0; i < char_num; i++) { - if (char_dat[i].account_id == RFIFOL(fd,2)) { - char_delete(&char_dat[i]); -+ if (char_dat[i].status.account_id == RFIFOL(fd,2)) {
-+ char_delete(&char_dat[i].status);
++ if (char_dat[i].status.account_id == RFIFOL(fd,2)) { ++ char_delete(&char_dat[i].status); if (i < char_num - 1) { - memcpy(&char_dat[i], &char_dat[char_num-1], sizeof(struct mmo_charstatus)); -+ memcpy(&char_dat[i], &char_dat[char_num-1], sizeof(struct character_data));
++ memcpy(&char_dat[i], &char_dat[char_num-1], sizeof(struct character_data)); // if moved character owns to deleted account, check again it's character - if (char_dat[i].account_id == RFIFOL(fd,2)) { -+ if (char_dat[i].status.account_id == RFIFOL(fd,2)) {
++ if (char_dat[i].status.account_id == RFIFOL(fd,2)) { i--; // Correct moved character reference in the character's owner by [Yor] } else { @@ -2100,8 +2100,8 @@ for (j = 0; j < fd_max; j++) { - if (session[j] && (sd2 = session[j]->session_data) && - sd2->account_id == char_dat[char_num-1].account_id) { -+ if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) &&
-+ sd2->account_id == char_dat[char_num-1].status.account_id) {
++ if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) && ++ sd2->account_id == char_dat[char_num-1].status.account_id) { for (k = 0; k < 9; k++) { if (sd2->found_char[k] == char_num-1) { sd2->found_char[k] = i; @@ -2110,12 +2110,12 @@ return 0; { - char buf[32000]; -+ unsigned char buf[32000];
++ unsigned char buf[32000]; if (gm_account != NULL) - free(gm_account); - gm_account = calloc(sizeof(struct gm_account) * ((RFIFOW(fd,2) - 4) / 5), 1); -+ aFree(gm_account);
-+ gm_account = (struct gm_account*)aCalloc(sizeof(struct gm_account) * ((RFIFOW(fd,2) - 4) / 5), 1);
++ aFree(gm_account); ++ gm_account = (struct gm_account*)aCalloc(sizeof(struct gm_account) * ((RFIFOW(fd,2) - 4) / 5), 1); GM_num = 0; for (i = 4; i < RFIFOW(fd,2); i = i + 5) { gm_account[GM_num].account_id = RFIFOL(fd,i); @@ -2125,8 +2125,8 @@ } - printf("From login-server: receiving of %d GM accounts information.\n", GM_num); - char_log("From login-server: receiving of %d GM accounts information." RETCODE, GM_num); -+ ShowStatus("From login-server: receiving information of %d GM accounts.\n", GM_num);
-+ char_log("From login-server: receiving information of %d GM accounts." RETCODE, GM_num);
++ ShowStatus("From login-server: receiving information of %d GM accounts.\n", GM_num); ++ char_log("From login-server: receiving information of %d GM accounts." RETCODE, GM_num); create_online_files(); // update online players files (perhaps some online players change of GM level) // send new gm acccounts level to map-servers memcpy(buf, RFIFOP(fd,0), RFIFOW(fd,2)); @@ -2134,101 +2134,101 @@ RFIFOSKIP(fd,RFIFOW(fd,2)); break; -+ // Receive GM accounts [Freya login server packet by Yor]
-+ case 0x2733:
-+ // add test here to remember that the login-server is Freya-type
-+ // sprintf (login_server_type, "Freya");
-+ if (RFIFOREST(fd) < 7)
-+ return 0;
-+ {
-+ unsigned char buf[32000];
-+ int new_level = 0;
-+ for(i = 0; i < GM_num; i++)
-+ if (gm_account[i].account_id == RFIFOL(fd,2)) {
-+ if (gm_account[i].level != (int)RFIFOB(fd,6)) {
-+ gm_account[i].level = (int)RFIFOB(fd,6);
-+ new_level = 1;
-+ }
-+ break;
-+ }
-+ // if not found, add it
-+ if (i == GM_num) {
-+ // limited to 4000, because we send information to char-servers (more than 4000 GM accounts???)
-+ // int (id) + int (level) = 8 bytes * 4000 = 32k (limit of packets in windows)
-+ if (((int)RFIFOB(fd,6)) > 0 && GM_num < 4000) {
-+ if (GM_num == 0) {
-+ gm_account = (struct gm_account*)aMalloc(sizeof(struct gm_account));
-+ } else {
-+ gm_account = (struct gm_account*)aRealloc(gm_account, sizeof(struct gm_account) * (GM_num + 1));
-+ }
-+ gm_account[GM_num].account_id = RFIFOL(fd,2);
-+ gm_account[GM_num].level = (int)RFIFOB(fd,6);
-+ new_level = 1;
-+ GM_num++;
-+ if (GM_num >= 4000) {
-+ ShowWarning("4000 GM accounts found. Next GM accounts are not readed.\n");
-+ char_log("***WARNING: 4000 GM accounts found. Next GM accounts are not readed." RETCODE);
-+ }
-+ }
-+ }
-+ if (new_level == 1) {
-+ int len;
-+ ShowStatus("From login-server: receiving GM account information (%d: level %d).\n", RFIFOL(fd,2), (int)RFIFOB(fd,6));
-+ char_log("From login-server: receiving a GM account information (%d: level %d)." RETCODE, RFIFOL(fd,2), (int)RFIFOB(fd,6));
-+ //create_online_files(); // not change online file for only 1 player (in next timer, that will be done
-+ // send gm acccounts level to map-servers
-+ len = 4;
-+ WBUFW(buf,0) = 0x2b15;
-+
-+ for(i = 0; i < GM_num; i++) {
-+ WBUFL(buf, len) = gm_account[i].account_id;
-+ WBUFB(buf, len+4) = (unsigned char)gm_account[i].level;
-+ len += 5;
-+ }
-+ WBUFW(buf, 2) = len;
-+ mapif_sendall(buf, len);
-+ }
-+ }
-+ RFIFOSKIP(fd,7);
-+ break;
-+
-+ //Login server request to kick a character out. [Skotlex]
-+ case 0x2734:
-+ if (RFIFOREST(fd) < 6)
-+ return 0;
-+ {
-+ struct online_char_data* character;
-+ int aid = RFIFOL(fd,2);
-+ if ((character = idb_get(online_char_db, aid)) != NULL)
-+ { //Kick out this player.
-+ if (character->server > -1)
-+ { //Kick it from the map server it is on.
-+ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2);
-+ if (!character->waiting_disconnect)
-+ add_timer(gettick()+15000, chardb_waiting_disconnect, character->account_id, 0);
-+ character->waiting_disconnect = 1;
-+ } else { //Manual kick from char server.
-+ struct char_session_data *tsd;
-+ int i;
-+ for(i = 0; i < fd_max; i++) {
-+ if (session[i] && (tsd = (struct char_session_data*)session[i]->session_data) && tsd->account_id == aid)
-+ {
-+ WFIFOHEAD(fd, 3);
-+ WFIFOW(i,0) = 0x81;
-+ WFIFOB(i,2) = 2;
-+ WFIFOSET(i,3);
-+ break;
-+ }
-+ }
-+ if (i == fd_max) //Shouldn't happen, but just in case.
-+ set_char_offline(99, aid);
-+ }
-+ }
-+ RFIFOSKIP(fd,6);
-+ }
-+ break;
++ // Receive GM accounts [Freya login server packet by Yor] ++ case 0x2733: ++ // add test here to remember that the login-server is Freya-type ++ // sprintf (login_server_type, "Freya"); ++ if (RFIFOREST(fd) < 7) ++ return 0; ++ { ++ unsigned char buf[32000]; ++ int new_level = 0; ++ for(i = 0; i < GM_num; i++) ++ if (gm_account[i].account_id == RFIFOL(fd,2)) { ++ if (gm_account[i].level != (int)RFIFOB(fd,6)) { ++ gm_account[i].level = (int)RFIFOB(fd,6); ++ new_level = 1; ++ } ++ break; ++ } ++ // if not found, add it ++ if (i == GM_num) { ++ // limited to 4000, because we send information to char-servers (more than 4000 GM accounts???) ++ // int (id) + int (level) = 8 bytes * 4000 = 32k (limit of packets in windows) ++ if (((int)RFIFOB(fd,6)) > 0 && GM_num < 4000) { ++ if (GM_num == 0) { ++ gm_account = (struct gm_account*)aMalloc(sizeof(struct gm_account)); ++ } else { ++ gm_account = (struct gm_account*)aRealloc(gm_account, sizeof(struct gm_account) * (GM_num + 1)); ++ } ++ gm_account[GM_num].account_id = RFIFOL(fd,2); ++ gm_account[GM_num].level = (int)RFIFOB(fd,6); ++ new_level = 1; ++ GM_num++; ++ if (GM_num >= 4000) { ++ ShowWarning("4000 GM accounts found. Next GM accounts are not readed.\n"); ++ char_log("***WARNING: 4000 GM accounts found. Next GM accounts are not readed." RETCODE); ++ } ++ } ++ } ++ if (new_level == 1) { ++ int len; ++ ShowStatus("From login-server: receiving GM account information (%d: level %d).\n", RFIFOL(fd,2), (int)RFIFOB(fd,6)); ++ char_log("From login-server: receiving a GM account information (%d: level %d)." RETCODE, RFIFOL(fd,2), (int)RFIFOB(fd,6)); ++ //create_online_files(); // not change online file for only 1 player (in next timer, that will be done ++ // send gm acccounts level to map-servers ++ len = 4; ++ WBUFW(buf,0) = 0x2b15; ++ ++ for(i = 0; i < GM_num; i++) { ++ WBUFL(buf, len) = gm_account[i].account_id; ++ WBUFB(buf, len+4) = (unsigned char)gm_account[i].level; ++ len += 5; ++ } ++ WBUFW(buf, 2) = len; ++ mapif_sendall(buf, len); ++ } ++ } ++ RFIFOSKIP(fd,7); ++ break; ++ ++ //Login server request to kick a character out. [Skotlex] ++ case 0x2734: ++ if (RFIFOREST(fd) < 6) ++ return 0; ++ { ++ struct online_char_data* character; ++ int aid = RFIFOL(fd,2); ++ if ((character = idb_get(online_char_db, aid)) != NULL) ++ { //Kick out this player. ++ if (character->server > -1) ++ { //Kick it from the map server it is on. ++ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2); ++ if (!character->waiting_disconnect) ++ add_timer(gettick()+15000, chardb_waiting_disconnect, character->account_id, 0); ++ character->waiting_disconnect = 1; ++ } else { //Manual kick from char server. ++ struct char_session_data *tsd; ++ int i; ++ for(i = 0; i < fd_max; i++) { ++ if (session[i] && (tsd = (struct char_session_data*)session[i]->session_data) && tsd->account_id == aid) ++ { ++ WFIFOHEAD(fd, 3); ++ WFIFOW(i,0) = 0x81; ++ WFIFOB(i,2) = 2; ++ WFIFOSET(i,3); ++ break; ++ } ++ } ++ if (i == fd_max) //Shouldn't happen, but just in case. ++ set_char_offline(99, aid); ++ } ++ } ++ RFIFOSKIP(fd,6); ++ } ++ break; default: -+ ShowWarning("Unknown packet 0x%04x received from login-server, disconnecting.\n", RFIFOW(fd,0));
++ ShowWarning("Unknown packet 0x%04x received from login-server, disconnecting.\n", RFIFOW(fd,0)); session[fd]->eof = 1; return 0; } @@ -2241,16 +2241,16 @@ -//-------------------------------- -int map_anti_freeze_system(int tid, unsigned int tick, int id, int data) { - int i; -+int request_accreg2(int account_id, int char_id) {
-+ if (login_fd > 0) {
-+ WFIFOW(login_fd, 0) = 0x272e;
-+ WFIFOL(login_fd, 2) = account_id;
-+ WFIFOL(login_fd, 6) = char_id;
-+ WFIFOSET(login_fd, 10);
-+ return 1;
-+ }
-+ return 0;
-+}
++int request_accreg2(int account_id, int char_id) { ++ if (login_fd > 0) { ++ WFIFOW(login_fd, 0) = 0x272e; ++ WFIFOL(login_fd, 2) = account_id; ++ WFIFOL(login_fd, 6) = char_id; ++ WFIFOSET(login_fd, 10); ++ return 1; ++ } ++ return 0; ++} - //printf("Entering in map_anti_freeze_system function to check freeze of servers.\n"); - for(i = 0; i < MAX_MAP_SERVERS; i++) { @@ -2261,129 +2261,129 @@ - char_log("Map-server anti-freeze system: char-server #%d is freezed -> disconnection." RETCODE, - i); - session[server_fd[i]]->eof = 1; -+//Send packet forward to login-server for account saving
-+int save_accreg2(unsigned char* buf, int len) {
-+ if (login_fd > 0) {
-+ WFIFOHEAD(login_fd, len+4);
-+ memcpy(WFIFOP(login_fd,4), buf, len);
-+ WFIFOW(login_fd,0) = 0x2728;
-+ WFIFOW(login_fd,2) = len+4;
-+ WFIFOSET(login_fd,len+4);
-+ return 1;
++//Send packet forward to login-server for account saving ++int save_accreg2(unsigned char* buf, int len) { ++ if (login_fd > 0) { ++ WFIFOHEAD(login_fd, len+4); ++ memcpy(WFIFOP(login_fd,4), buf, len); ++ WFIFOW(login_fd,0) = 0x2728; ++ WFIFOW(login_fd,2) = len+4; ++ WFIFOSET(login_fd,len+4); ++ return 1; } -+ return 0;
++ return 0; } -+
-+//Receive Registry information for a character.
-+int char_parse_Registry(int account_id, int char_id, unsigned char *buf, int buf_len) {
-+ int i,j,p,len;
-+ for (i = 0; i < char_num; i++) {
-+ if (char_dat[i].status.account_id == account_id && char_dat[i].status.char_id == char_id)
-+ break;
-+ }
-+ if(i >= char_num) //Character not found?
-+ return 1;
-+ for(j=0,p=0;j<GLOBAL_REG_NUM && p<buf_len;j++){
-+ sscanf(WBUFP(buf,p), "%31c%n",char_dat[i].global[j].str,&len);
-+ char_dat[i].global[j].str[len]='\0';
-+ p +=len+1; //+1 to skip the '\0' between strings.
-+ sscanf(WBUFP(buf,p), "%255c%n",char_dat[i].global[j].value,&len);
-+ char_dat[i].global[j].value[len]='\0';
-+ p +=len+1;
-+ }
-+ char_dat[i].global_num = j;
-+ return 0;
++ ++//Receive Registry information for a character. ++int char_parse_Registry(int account_id, int char_id, unsigned char *buf, int buf_len) { ++ int i,j,p,len; ++ for (i = 0; i < char_num; i++) { ++ if (char_dat[i].status.account_id == account_id && char_dat[i].status.char_id == char_id) ++ break; ++ } ++ if(i >= char_num) //Character not found? ++ return 1; ++ for(j=0,p=0;j<GLOBAL_REG_NUM && p<buf_len;j++){ ++ sscanf(WBUFP(buf,p), "%31c%n",char_dat[i].global[j].str,&len); ++ char_dat[i].global[j].str[len]='\0'; ++ p +=len+1; //+1 to skip the '\0' between strings. ++ sscanf(WBUFP(buf,p), "%255c%n",char_dat[i].global[j].value,&len); ++ char_dat[i].global[j].value[len]='\0'; ++ p +=len+1; ++ } ++ char_dat[i].global_num = j; ++ return 0; } -+//Reply to map server with acc reg values.
-+int char_account_reg_reply(int fd,int account_id,int char_id) {
-+ int i,j,p;
-+ WFIFOHEAD(login_fd, GLOBAL_REG_NUM*288 + 13);
-+ WFIFOW(fd,0)=0x3804;
-+ WFIFOL(fd,4)=account_id;
-+ WFIFOL(fd,8)=char_id;
-+ WFIFOB(fd,12)=3; //Type 3: char acc reg.
-+ for (i = 0;i < char_num; i++) {
-+ if (char_dat[i].status.account_id == account_id && char_dat[i].status.char_id == char_id)
-+ break;
-+ }
-+ if(i >= char_num){ //Character not found? Sent empty packet.
-+ WFIFOW(fd,2)=13;
-+ }else{
-+ for (p=13,j = 0; j < char_dat[i].global_num; j++) {
-+ if (char_dat[i].global[j].str[0]) {
-+ p+= sprintf(WFIFOP(fd,p), "%s", char_dat[i].global[j].str)+1; //We add 1 to consider the '\0' in place.
-+ p+= sprintf(WFIFOP(fd,p), "%s", char_dat[i].global[j].value)+1;
-+ }
-+ }
-+ WFIFOW(fd,2)=p;
-+ }
-+ WFIFOSET(fd,WFIFOW(fd,2));
++//Reply to map server with acc reg values. ++int char_account_reg_reply(int fd,int account_id,int char_id) { ++ int i,j,p; ++ WFIFOHEAD(login_fd, GLOBAL_REG_NUM*288 + 13); ++ WFIFOW(fd,0)=0x3804; ++ WFIFOL(fd,4)=account_id; ++ WFIFOL(fd,8)=char_id; ++ WFIFOB(fd,12)=3; //Type 3: char acc reg. ++ for (i = 0;i < char_num; i++) { ++ if (char_dat[i].status.account_id == account_id && char_dat[i].status.char_id == char_id) ++ break; ++ } ++ if(i >= char_num){ //Character not found? Sent empty packet. ++ WFIFOW(fd,2)=13; ++ }else{ ++ for (p=13,j = 0; j < char_dat[i].global_num; j++) { ++ if (char_dat[i].global[j].str[0]) { ++ p+= sprintf(WFIFOP(fd,p), "%s", char_dat[i].global[j].str)+1; //We add 1 to consider the '\0' in place. ++ p+= sprintf(WFIFOP(fd,p), "%s", char_dat[i].global[j].value)+1; ++ } ++ } ++ WFIFOW(fd,2)=p; ++ } ++ WFIFOSET(fd,WFIFOW(fd,2)); return 0; } -+int search_mapserver(unsigned short map, long ip, short port);
-+
++int search_mapserver(unsigned short map, long ip, short port); ++ int parse_frommap(int fd) { int i, j; int id; -+ RFIFOHEAD(fd);
++ RFIFOHEAD(fd); for(id = 0; id < MAX_MAP_SERVERS; id++) if (server_fd[id] == fd) break; - if (id == MAX_MAP_SERVERS || session[fd]->eof) { -+ if(id==MAX_MAP_SERVERS)
-+ session[fd]->eof=1;
-+ if(session[fd]->eof){
++ if(id==MAX_MAP_SERVERS) ++ session[fd]->eof=1; ++ if(session[fd]->eof){ if (id < MAX_MAP_SERVERS) { - printf("Map-server %d (session #%d) has disconnected.\n", id, fd); - memset(&server[id], 0, sizeof(struct mmo_map_server)); -+ unsigned char buf[16384];
-+ ShowStatus("Map-server %d has disconnected.\n", id);
-+ //Notify other map servers that this one is gone. [Skotlex]
-+ WBUFW(buf,0) = 0x2b20;
-+ WBUFL(buf,4) = server[id].ip;
-+ WBUFW(buf,8) = server[id].port;
-+ j = 0;
-+ for(i = 0; i < MAX_MAP_PER_SERVER; i++)
-+ if (server[id].map[i])
-+ WBUFW(buf,10+(j++)*4) = server[id].map[i];
-+ if (j > 0) {
-+ WBUFW(buf,2) = j * 4 + 10;
-+ mapif_sendallwos(fd, buf, WBUFW(buf,2));
-+ }
++ unsigned char buf[16384]; ++ ShowStatus("Map-server %d has disconnected.\n", id); ++ //Notify other map servers that this one is gone. [Skotlex] ++ WBUFW(buf,0) = 0x2b20; ++ WBUFL(buf,4) = server[id].ip; ++ WBUFW(buf,8) = server[id].port; ++ j = 0; ++ for(i = 0; i < MAX_MAP_PER_SERVER; i++) ++ if (server[id].map[i]) ++ WBUFW(buf,10+(j++)*4) = server[id].map[i]; ++ if (j > 0) { ++ WBUFW(buf,2) = j * 4 + 10; ++ mapif_sendallwos(fd, buf, WBUFW(buf,2)); ++ } server_fd[id] = -1; - for(j = 0; j < char_num; j++) - if (online_chars[j] == fd) - online_chars[j] = -1; - create_online_files(); // update online players files (to remove all online players of this server) -+ online_char_db->foreach(online_char_db,char_db_setoffline,i); //Tag relevant chars as 'in disconnected' server.
++ online_char_db->foreach(online_char_db,char_db_setoffline,i); //Tag relevant chars as 'in disconnected' server. } - close(fd); - delete_session(fd); -+ do_close(fd);
-+ create_online_files();
++ do_close(fd); ++ create_online_files(); return 0; } - while(RFIFOREST(fd) >= 2) { -+ while(RFIFOREST(fd) >= 2 && !session[fd]->eof) {
++ while(RFIFOREST(fd) >= 2 && !session[fd]->eof) { // printf("parse_frommap: connection #%d, packet: 0x%x (with being read: %d bytes).\n", fd, RFIFOW(fd,0), RFIFOREST(fd)); switch(RFIFOW(fd,0)) { -+
-+ // map-server alive packet
-+ case 0x2718:
-+ if (RFIFOREST(fd) < 2)
-+ return 0;
-+ RFIFOSKIP(fd,2);
-+ break;
-+
++ ++ // map-server alive packet ++ case 0x2718: ++ if (RFIFOREST(fd) < 2) ++ return 0; ++ RFIFOSKIP(fd,2); ++ break; ++ // request from map-server to reload GM accounts. Transmission to login-server (by Yor) case 0x2af7: if (login_fd > 0) { // don't send request if no login-server -+ WFIFOHEAD(login_fd, 2);
++ WFIFOHEAD(login_fd, 2); WFIFOW(login_fd,0) = 0x2709; WFIFOSET(login_fd, 2); // printf("char : request from map-server to reload GM accounts -> login-server.\n"); @@ -2394,48 +2394,48 @@ - for(i = 4; i < RFIFOW(fd,2); i += 16) { - memcpy(server[id].map[j], RFIFOP(fd,i), 16); -// printf("set map %d.%d : %s\n", id, j, server[id].map[j]); -+ for(i = 4; i < RFIFOW(fd,2); i += 4) {
-+ server[id].map[j] = RFIFOW(fd,i);
++ for(i = 4; i < RFIFOW(fd,2); i += 4) { ++ server[id].map[j] = RFIFOW(fd,i); j++; } { unsigned char *p = (unsigned char *)&server[id].ip; - printf("Map-Server %d connected: %d maps, from IP %d.%d.%d.%d port %d.\n", -+ ShowStatus("Map-Server %d connected: %d maps, from IP %d.%d.%d.%d port %d.\n",
++ ShowStatus("Map-Server %d connected: %d maps, from IP %d.%d.%d.%d port %d.\n", id, j, p[0], p[1], p[2], p[3], server[id].port); - printf("Map-server %d loading complete.\n", id); -+ ShowStatus("Map-server %d loading complete.\n", id);
++ ShowStatus("Map-server %d loading complete.\n", id); char_log("Map-Server %d connected: %d maps, from IP %d.%d.%d.%d port %d. Map-server %d loading complete." RETCODE, id, j, p[0], p[1], p[2], p[3], server[id].port, id); -+ if (kick_on_disconnect)
-+ set_all_offline();
-+ if (max_account_id != DEFAULT_MAX_ACCOUNT_ID || max_char_id != DEFAULT_MAX_CHAR_ID)
-+ mapif_send_maxid(max_account_id, max_char_id); //Send the current max ids to the server to keep in sync [Skotlex]
++ if (kick_on_disconnect) ++ set_all_offline(); ++ if (max_account_id != DEFAULT_MAX_ACCOUNT_ID || max_char_id != DEFAULT_MAX_CHAR_ID) ++ mapif_send_maxid(max_account_id, max_char_id); //Send the current max ids to the server to keep in sync [Skotlex] } -+ WFIFOHEAD(fd, 3 + NAME_LENGTH);
++ WFIFOHEAD(fd, 3 + NAME_LENGTH); WFIFOW(fd,0) = 0x2afb; WFIFOB(fd,2) = 0; - memcpy(WFIFOP(fd,3), wisp_server_name, 24); // name for wisp to player - WFIFOSET(fd,27); -+ memcpy(WFIFOP(fd,3), wisp_server_name, NAME_LENGTH); // name for wisp to player
-+ WFIFOSET(fd,3+NAME_LENGTH);
-+ //WFIFOSET(fd,27);
++ memcpy(WFIFOP(fd,3), wisp_server_name, NAME_LENGTH); // name for wisp to player ++ WFIFOSET(fd,3+NAME_LENGTH); ++ //WFIFOSET(fd,27); { unsigned char buf[16384]; int x; if (j == 0) { - printf("WARNING: Map-Server %d have NO map.\n", id); -+ ShowWarning("Map-Server %d have NO map.\n", id);
++ ShowWarning("Map-Server %d have NO map.\n", id); char_log("WARNING: Map-Server %d have NO map." RETCODE, id); // Transmitting maps information to the other map-servers } else { WBUFW(buf,0) = 0x2b04; - WBUFW(buf,2) = j * 16 + 10; -+ WBUFW(buf,2) = j * 4 + 10;
++ WBUFW(buf,2) = j * 4 + 10; WBUFL(buf,4) = server[id].ip; WBUFW(buf,8) = server[id].port; - memcpy(WBUFP(buf,10), RFIFOP(fd,4), j * 16); -+ memcpy(WBUFP(buf,10), RFIFOP(fd,4), j * 4);
++ memcpy(WBUFP(buf,10), RFIFOP(fd,4), j * 4); mapif_sendallwos(fd, buf, WBUFW(buf,2)); } // Transmitting the maps of the other map-servers to the new map-server @@ -2445,11 +2445,11 @@ for(i = 0; i < MAX_MAP_PER_SERVER; i++) - if (server[x].map[i][0]) - memcpy(WFIFOP(fd,10+(j++)*16), server[x].map[i], 16); -+ if (server[x].map[i])
-+ WFIFOW(fd,10+(j++)*4) = server[x].map[i];
++ if (server[x].map[i]) ++ WFIFOW(fd,10+(j++)*4) = server[x].map[i]; if (j > 0) { - WFIFOW(fd,2) = j * 16 + 10; -+ WFIFOW(fd,2) = j * 4 + 10;
++ WFIFOW(fd,2) = j * 4 + 10; WFIFOSET(fd,WFIFOW(fd,2)); } } @@ -2458,10 +2458,10 @@ break; - // ”FØ—v‹ -+ //Packet command is now used for sc_data request. [Skotlex]
++ //Packet command is now used for sc_data request. [Skotlex] case 0x2afc: - if (RFIFOREST(fd) < 22) -+ if (RFIFOREST(fd) < 10)
++ if (RFIFOREST(fd) < 10) return 0; - //printf("auth_fifo search: account: %d, char: %d, secure: %08x-%08x\n", RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10), RFIFOL(fd,14)); - for(i = 0; i < AUTH_FIFO_SIZE; i++) { @@ -2471,12 +2471,12 @@ -#if CMP_AUTHFIFO_LOGIN2 != 0 - // here, it's the only area where it's possible that we doesn't know login_id2 (map-server asks just after 0x72 packet, that doesn't given the value) - (auth_fifo[i].login_id2 == RFIFOL(fd,14) || RFIFOL(fd,14) == 0) && // relate to the versions higher than 18 -+ {
-+#ifdef ENABLE_SC_SAVING
-+ int aid, cid;
-+ struct scdata *data;
-+ aid = RFIFOL(fd,2);
-+ cid = RFIFOL(fd,6);
++ { ++#ifdef ENABLE_SC_SAVING ++ int aid, cid; ++ struct scdata *data; ++ aid = RFIFOL(fd,2); ++ cid = RFIFOL(fd,6); #endif - (!check_ip_flag || auth_fifo[i].ip == RFIFOL(fd,18)) && - !auth_fifo[i].delflag) { @@ -2488,48 +2488,48 @@ - WFIFOL(fd,12) = (unsigned long)auth_fifo[i].connect_until_time; - char_dat[auth_fifo[i].char_pos].sex = auth_fifo[i].sex; - memcpy(WFIFOP(fd,16), &char_dat[auth_fifo[i].char_pos], sizeof(struct mmo_charstatus)); -+ RFIFOSKIP(fd, 10);
-+#ifdef ENABLE_SC_SAVING
-+ data = status_search_scdata(aid, cid);
-+ if (data->count > 0)
-+ { //Deliver status change data.
-+ int i;
-+
-+ WFIFOW(fd,0) = 0x2b1d;
-+ WFIFOW(fd,2) = 14 + data->count*sizeof(struct status_change_data);
-+ WFIFOL(fd,4) = aid;
-+ WFIFOL(fd,8) = cid;
-+ WFIFOW(fd,12) = data->count;
-+ for (i = 0; i < data->count; i++)
-+ memcpy(WFIFOP(fd,14+i*sizeof(struct status_change_data)), &data->data[i], sizeof(struct status_change_data));
++ RFIFOSKIP(fd, 10); ++#ifdef ENABLE_SC_SAVING ++ data = status_search_scdata(aid, cid); ++ if (data->count > 0) ++ { //Deliver status change data. ++ int i; ++ ++ WFIFOW(fd,0) = 0x2b1d; ++ WFIFOW(fd,2) = 14 + data->count*sizeof(struct status_change_data); ++ WFIFOL(fd,4) = aid; ++ WFIFOL(fd,8) = cid; ++ WFIFOW(fd,12) = data->count; ++ for (i = 0; i < data->count; i++) ++ memcpy(WFIFOP(fd,14+i*sizeof(struct status_change_data)), &data->data[i], sizeof(struct status_change_data)); WFIFOSET(fd, WFIFOW(fd,2)); - //printf("auth_fifo search success (auth #%d, account %d, character: %d).\n", i, RFIFOL(fd,2), RFIFOL(fd,6)); - break; -+ status_delete_scdata(aid, cid); //Data sent, so it needs be discarded now.
++ status_delete_scdata(aid, cid); //Data sent, so it needs be discarded now. } -+#endif
-+ break;
++#endif ++ break; } - if (i == AUTH_FIFO_SIZE) { - WFIFOW(fd,0) = 0x2afe; - WFIFOL(fd,2) = RFIFOL(fd,2); - WFIFOSET(fd,6); - printf("auth_fifo search error! account %d not authentified.\n", RFIFOL(fd,2)); -+
-+ //set MAP user count
-+ case 0x2afe:
-+ if (RFIFOREST(fd) < 4)
-+ return 0;
-+ if (RFIFOW(fd,2) != server[id].users) {
-+ server[id].users = RFIFOW(fd,2);
-+ ShowInfo("User Count: %d (Server: %d)\n", server[id].users, id);
++ ++ //set MAP user count ++ case 0x2afe: ++ if (RFIFOREST(fd) < 4) ++ return 0; ++ if (RFIFOW(fd,2) != server[id].users) { ++ server[id].users = RFIFOW(fd,2); ++ ShowInfo("User Count: %d (Server: %d)\n", server[id].users, id); } - RFIFOSKIP(fd,22); -+ RFIFOSKIP(fd, 4);
++ RFIFOSKIP(fd, 4); break; - - // MAPƒT[ƒo[ã‚̃†[ƒU[”ŽóM -+ //set MAP users
++ //set MAP users case 0x2aff: if (RFIFOREST(fd) < 6 || RFIFOREST(fd) < RFIFOW(fd,2)) return 0; @@ -2541,9 +2541,9 @@ - if (online_chars[i] == id) - online_chars[i] = -1; - // add online players in the list by [Yor] -+ // add online players in the list by [Yor], adapted to use dbs by [Skotlex]
-+ j = 0;
-+ online_char_db->foreach(online_char_db,char_db_setoffline,id); //Set all chars from this server as 'unknown'
++ // add online players in the list by [Yor], adapted to use dbs by [Skotlex] ++ j = 0; ++ online_char_db->foreach(online_char_db,char_db_setoffline,id); //Set all chars from this server as 'unknown' for(i = 0; i < server[id].users; i++) { - int char_id = RFIFOL(fd,6+i*4); - for(j = 0; j < char_num; j++) @@ -2551,19 +2551,19 @@ - online_chars[j] = id; - //printf("%d\n", char_id); - break; -+ int aid, cid;
-+ struct online_char_data* character;
-+ aid = RFIFOL(fd,6+i*8);
-+ cid = RFIFOL(fd,6+i*8+4);
-+ character = idb_ensure(online_char_db, aid, create_online_char_data);
-+ if (online_check && character->server > -1 && character->server != id)
-+ {
-+ ShowNotice("Set map user: Character (%d:%d) marked on map server %d, but map server %d claims to have (%d:%d) online!\n",
-+ character->account_id, character->char_id, character->server, id, aid, cid);
-+ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2);
++ int aid, cid; ++ struct online_char_data* character; ++ aid = RFIFOL(fd,6+i*8); ++ cid = RFIFOL(fd,6+i*8+4); ++ character = idb_ensure(online_char_db, aid, create_online_char_data); ++ if (online_check && character->server > -1 && character->server != id) ++ { ++ ShowNotice("Set map user: Character (%d:%d) marked on map server %d, but map server %d claims to have (%d:%d) online!\n", ++ character->account_id, character->char_id, character->server, id, aid, cid); ++ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2); } -+ character->char_id = cid;
-+ character->server = id;
++ character->char_id = cid; ++ character->server = id; } if (update_online < time(NULL)) { // Time is done update_online = time(NULL) + 8; @@ -2571,28 +2571,28 @@ // it set to 8 sec because is more than 5 (sec) and if we have more than 1 map-server, informations can be received in shifted. } - RFIFOSKIP(fd,6+i*4); -+ //If any chars remain in -2, they will be cleaned in the cleanup timer.
-+ RFIFOSKIP(fd,6+i*8);
++ //If any chars remain in -2, they will be cleaned in the cleanup timer. ++ RFIFOSKIP(fd,6+i*8); break; // ƒLƒƒƒ‰ƒf[ƒ^•Û‘¶ -+ // Recieve character data from map-server
++ // Recieve character data from map-server case 0x2b01: if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2)) return 0; for(i = 0; i < char_num; i++) { - if (char_dat[i].account_id == RFIFOL(fd,4) && - char_dat[i].char_id == RFIFOL(fd,8)) -+ if (char_dat[i].status.account_id == RFIFOL(fd,4) &&
-+ char_dat[i].status.char_id == RFIFOL(fd,8))
++ if (char_dat[i].status.account_id == RFIFOL(fd,4) && ++ char_dat[i].status.char_id == RFIFOL(fd,8)) break; } if (i != char_num) - memcpy(&char_dat[i], RFIFOP(fd,12), sizeof(struct mmo_charstatus)); -+ memcpy(&char_dat[i].status, RFIFOP(fd,13), sizeof(struct mmo_charstatus));
-+ if (RFIFOB(fd,12)) { //Flag, set character offline. [Skotlex]
-+ set_char_offline(RFIFOL(fd,8),RFIFOL(fd,4));
-+ }
++ memcpy(&char_dat[i].status, RFIFOP(fd,13), sizeof(struct mmo_charstatus)); ++ if (RFIFOB(fd,12)) { //Flag, set character offline. [Skotlex] ++ set_char_offline(RFIFOL(fd,8),RFIFOL(fd,4)); ++ } RFIFOSKIP(fd,RFIFOW(fd,2)); break; @@ -2609,10 +2609,10 @@ break; - // ƒ}ƒbƒvƒT[ƒo[ŠÔˆÚ“®—v‹ -+ // request "change map server"
++ // request "change map server" case 0x2b05: - if (RFIFOREST(fd) < 49) -+ if (RFIFOREST(fd) < 35)
++ if (RFIFOREST(fd) < 35) return 0; - if (auth_fifo_pos >= AUTH_FIFO_SIZE) - auth_fifo_pos = 0; @@ -2633,58 +2633,58 @@ - auth_fifo[auth_fifo_pos].char_pos = i; - auth_fifo_pos++; - WFIFOL(fd,6) = 0; -+ {
-+ unsigned short name;
-+ int map_id, map_fd = -1, i;
-+ struct online_char_data* data;
-+ struct mmo_charstatus* char_data;
-+
-+ name = RFIFOW(fd,18);
-+ map_id = search_mapserver(name, RFIFOL(fd,24), RFIFOW(fd,28)); //Locate mapserver by ip and port.
-+ if (map_id >= 0)
-+ map_fd = server_fd[map_id];
-+ for(i = 0; i < char_num; i++) {
-+ if (char_dat[i].status.account_id == RFIFOL(fd,2) &&
-+ char_dat[i].status.char_id == RFIFOL(fd,14))
++ { ++ unsigned short name; ++ int map_id, map_fd = -1, i; ++ struct online_char_data* data; ++ struct mmo_charstatus* char_data; ++ ++ name = RFIFOW(fd,18); ++ map_id = search_mapserver(name, RFIFOL(fd,24), RFIFOW(fd,28)); //Locate mapserver by ip and port. ++ if (map_id >= 0) ++ map_fd = server_fd[map_id]; ++ for(i = 0; i < char_num; i++) { ++ if (char_dat[i].status.account_id == RFIFOL(fd,2) && ++ char_dat[i].status.char_id == RFIFOL(fd,14)) break; } - if (i == char_num) - WFIFOW(fd,6) = 1; - WFIFOSET(fd,44); - RFIFOSKIP(fd,49); -+ char_data = i< char_num? &char_dat[i].status:NULL;
-+ //Tell the new map server about this player using Kevin's new auth packet. [Skotlex]
-+ if (map_fd>=0 && session[map_fd] && char_data)
-+ { //Send the map server the auth of this player.
-+ //Update the "last map" as this is where the player must be spawned on the new map server.
-+ char_data->last_point.map = RFIFOW(fd,18);
-+ char_data->last_point.x = RFIFOW(fd,20);
-+ char_data->last_point.y = RFIFOW(fd,22);
-+
-+ WFIFOW(map_fd,0) = 0x2afd;
-+ WFIFOW(map_fd,2) = 20 + sizeof(struct mmo_charstatus);
-+ WFIFOL(map_fd,4) = RFIFOL(fd, 2); //Account ID
-+ WFIFOL(map_fd,8) = RFIFOL(fd, 6); //Login1
-+ WFIFOL(map_fd,16) = RFIFOL(fd,10); //Login2
-+ WFIFOL(map_fd,12) = (unsigned long)0; //TODO: connect_until_time, how do I figure it out right now?
-+ memcpy(WFIFOP(map_fd,20), char_data, sizeof(struct mmo_charstatus));
-+ WFIFOSET(map_fd, WFIFOW(map_fd,2));
-+ data = idb_ensure(online_char_db, RFIFOL(fd, 2), create_online_char_data);
-+ data->char_id = char_data->char_id;
-+ data->server = map_id; //Update server where char is.
-+
-+ //Reply with an ack.
-+ WFIFOW(fd, 0) = 0x2b06;
-+ memcpy(WFIFOP(fd,2), RFIFOP(fd,2), 28);
-+ WFIFOSET(fd, 30);
-+ } else { //Reply with nak
-+ WFIFOW(fd, 0) = 0x2b06;
-+ memcpy(WFIFOP(fd,2), RFIFOP(fd,2), 28);
-+ WFIFOL(fd, 6) = 0; //Set login1 to 0.
-+ WFIFOSET(fd, 30);
-+ }
-+ RFIFOSKIP(fd, 35);
-+ }
++ char_data = i< char_num? &char_dat[i].status:NULL; ++ //Tell the new map server about this player using Kevin's new auth packet. [Skotlex] ++ if (map_fd>=0 && session[map_fd] && char_data) ++ { //Send the map server the auth of this player. ++ //Update the "last map" as this is where the player must be spawned on the new map server. ++ char_data->last_point.map = RFIFOW(fd,18); ++ char_data->last_point.x = RFIFOW(fd,20); ++ char_data->last_point.y = RFIFOW(fd,22); ++ ++ WFIFOW(map_fd,0) = 0x2afd; ++ WFIFOW(map_fd,2) = 20 + sizeof(struct mmo_charstatus); ++ WFIFOL(map_fd,4) = RFIFOL(fd, 2); //Account ID ++ WFIFOL(map_fd,8) = RFIFOL(fd, 6); //Login1 ++ WFIFOL(map_fd,16) = RFIFOL(fd,10); //Login2 ++ WFIFOL(map_fd,12) = (unsigned long)0; //TODO: connect_until_time, how do I figure it out right now? ++ memcpy(WFIFOP(map_fd,20), char_data, sizeof(struct mmo_charstatus)); ++ WFIFOSET(map_fd, WFIFOW(map_fd,2)); ++ data = idb_ensure(online_char_db, RFIFOL(fd, 2), create_online_char_data); ++ data->char_id = char_data->char_id; ++ data->server = map_id; //Update server where char is. ++ ++ //Reply with an ack. ++ WFIFOW(fd, 0) = 0x2b06; ++ memcpy(WFIFOP(fd,2), RFIFOP(fd,2), 28); ++ WFIFOSET(fd, 30); ++ } else { //Reply with nak ++ WFIFOW(fd, 0) = 0x2b06; ++ memcpy(WFIFOP(fd,2), RFIFOP(fd,2), 28); ++ WFIFOL(fd, 6) = 0; //Set login1 to 0. ++ WFIFOSET(fd, 30); ++ } ++ RFIFOSKIP(fd, 35); ++ } break; // ƒLƒƒƒ‰–¼ŒŸõ @@ -2693,20 +2693,20 @@ return 0; for(i = 0; i < char_num; i++) { - if (char_dat[i].char_id == RFIFOL(fd,2)) -+ if (char_dat[i].status.char_id == RFIFOL(fd,2))
++ if (char_dat[i].status.char_id == RFIFOL(fd,2)) break; } WFIFOW(fd,0) = 0x2b09; WFIFOL(fd,2) = RFIFOL(fd,2); if (i != char_num) - memcpy(WFIFOP(fd,6), char_dat[i].name, 24); -+ memcpy(WFIFOP(fd,6), char_dat[i].status.name, NAME_LENGTH);
++ memcpy(WFIFOP(fd,6), char_dat[i].status.name, NAME_LENGTH); else - memcpy(WFIFOP(fd,6), unknown_char_name, 24); - WFIFOSET(fd,30); -+ memcpy(WFIFOP(fd,6), unknown_char_name, NAME_LENGTH);
-+ WFIFOSET(fd,6+NAME_LENGTH);
-+ //WFIFOSET(fd,30);
++ memcpy(WFIFOP(fd,6), unknown_char_name, NAME_LENGTH); ++ WFIFOSET(fd,6+NAME_LENGTH); ++ //WFIFOSET(fd,30); RFIFOSKIP(fd,6); break; @@ -2715,12 +2715,12 @@ return 0; { - char character_name[24]; -+ char character_name[NAME_LENGTH];
++ char character_name[NAME_LENGTH]; int acc = RFIFOL(fd,2); // account_id of who ask (-1 if nobody) - memcpy(character_name, RFIFOP(fd,6), 24); - character_name[sizeof(character_name) -1] = '\0'; -+ memcpy(character_name, RFIFOP(fd,6), NAME_LENGTH-1);
-+ character_name[NAME_LENGTH -1] = '\0';
++ memcpy(character_name, RFIFOP(fd,6), NAME_LENGTH-1); ++ character_name[NAME_LENGTH -1] = '\0'; // prepare answer WFIFOW(fd,0) = 0x2b0f; // answer WFIFOL(fd,2) = acc; // who want do operation @@ -2730,17 +2730,17 @@ if (i >= 0) { - memcpy(WFIFOP(fd,6), search_character_name(i), 24); // put correct name if found - WFIFOW(fd,32) = 0; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline -+ memcpy(WFIFOP(fd,6), search_character_name(i), NAME_LENGTH); // put correct name if found
-+ WFIFOW(fd,6+NAME_LENGTH) = 0; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline
-+ //WFIFOW(fd,32) = 0; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline
++ memcpy(WFIFOP(fd,6), search_character_name(i), NAME_LENGTH); // put correct name if found ++ WFIFOW(fd,6+NAME_LENGTH) = 0; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline ++ //WFIFOW(fd,32) = 0; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline switch(RFIFOW(fd, 30)) { case 1: // block - if (acc == -1 || isGM(acc) >= isGM(char_dat[i].account_id)) { -+ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) {
++ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) { if (login_fd > 0) { // don't send request if no login-server WFIFOW(login_fd,0) = 0x2724; - WFIFOL(login_fd,2) = char_dat[i].account_id; // account value -+ WFIFOL(login_fd,2) = char_dat[i].status.account_id; // account value
++ WFIFOL(login_fd,2) = char_dat[i].status.account_id; // account value WFIFOL(login_fd,6) = 5; // status of the account WFIFOSET(login_fd, 10); // printf("char : status -> login: account %d, status: %d \n", char_dat[i].account_id, 5); @@ -2749,11 +2749,11 @@ break; case 2: // ban - if (acc == -1 || isGM(acc) >= isGM(char_dat[i].account_id)) { -+ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) {
++ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) { if (login_fd > 0) { // don't send request if no login-server WFIFOW(login_fd, 0) = 0x2725; - WFIFOL(login_fd, 2) = char_dat[i].account_id; // account value -+ WFIFOL(login_fd, 2) = char_dat[i].status.account_id; // account value
++ WFIFOL(login_fd, 2) = char_dat[i].status.account_id; // account value WFIFOW(login_fd, 6) = RFIFOW(fd,32); // year WFIFOW(login_fd, 8) = RFIFOW(fd,34); // month WFIFOW(login_fd,10) = RFIFOW(fd,36); // day @@ -2762,11 +2762,11 @@ break; case 3: // unblock - if (acc == -1 || isGM(acc) >= isGM(char_dat[i].account_id)) { -+ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) {
++ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) { if (login_fd > 0) { // don't send request if no login-server WFIFOW(login_fd,0) = 0x2724; - WFIFOL(login_fd,2) = char_dat[i].account_id; // account value -+ WFIFOL(login_fd,2) = char_dat[i].status.account_id; // account value
++ WFIFOL(login_fd,2) = char_dat[i].status.account_id; // account value WFIFOL(login_fd,6) = 0; // status of the account WFIFOSET(login_fd, 10); // printf("char : status -> login: account %d, status: %d \n", char_dat[i].account_id, 0); @@ -2775,11 +2775,11 @@ break; case 4: // unban - if (acc == -1 || isGM(acc) >= isGM(char_dat[i].account_id)) { -+ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) {
++ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) { if (login_fd > 0) { // don't send request if no login-server WFIFOW(login_fd, 0) = 0x272a; - WFIFOL(login_fd, 2) = char_dat[i].account_id; // account value -+ WFIFOL(login_fd, 2) = char_dat[i].status.account_id; // account value
++ WFIFOL(login_fd, 2) = char_dat[i].status.account_id; // account value WFIFOSET(login_fd, 6); // printf("char : status -> login: account %d, unban request\n", char_dat[i].account_id); } else @@ -2788,11 +2788,11 @@ break; case 5: // changesex - if (acc == -1 || isGM(acc) >= isGM(char_dat[i].account_id)) { -+ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) {
++ if (acc == -1 || isGM(acc) >= isGM(char_dat[i].status.account_id)) { if (login_fd > 0) { // don't send request if no login-server WFIFOW(login_fd, 0) = 0x2727; - WFIFOL(login_fd, 2) = char_dat[i].account_id; // account value -+ WFIFOL(login_fd, 2) = char_dat[i].status.account_id; // account value
++ WFIFOL(login_fd, 2) = char_dat[i].status.account_id; // account value WFIFOSET(login_fd, 6); // printf("char : status -> login: account %d, change sex request\n", char_dat[i].account_id); } else @@ -2802,15 +2802,15 @@ // character name not found - memcpy(WFIFOP(fd,6), character_name, 24); - WFIFOW(fd,32) = 1; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline -+ memcpy(WFIFOP(fd,6), character_name, NAME_LENGTH);
-+ WFIFOW(fd,8+NAME_LENGTH) = 1; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline
-+ //WFIFOW(fd,32) = 1; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline
++ memcpy(WFIFOP(fd,6), character_name, NAME_LENGTH); ++ WFIFOW(fd,8+NAME_LENGTH) = 1; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline ++ //WFIFOW(fd,32) = 1; // answer: 0-login-server resquest done, 1-player not found, 2-gm level too low, 3-login-server offline } // send answer if a player ask, not if the server ask if (acc != -1) { - WFIFOSET(fd, 34); -+ //WFIFOSET(fd, 34);
-+ WFIFOSET(fd, 10+NAME_LENGTH);
++ //WFIFOSET(fd, 34); ++ WFIFOSET(fd, 10+NAME_LENGTH); } RFIFOSKIP(fd, 44); break; @@ -2821,45 +2821,45 @@ - // account_reg•Û‘¶—v‹ - case 0x2b10: - if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2)) -+ //Packet 0x2b10 deprecated in favor of packet 0x3004 for registry saving. [Skotlex]
-+ //case 0x2b10:
-+
-+ // Recieve rates [Wizputer]
-+ case 0x2b16:
-+ if (RFIFOREST(fd) < 6 || RFIFOREST(fd) < RFIFOW(fd,8))
-+ return 0;
-+ // Txt doesn't need this packet, so just skip it
-+ RFIFOSKIP(fd,RFIFOW(fd,8));
-+ break;
-+
-+ // Character disconnected set online 0 [Wizputer]
-+ case 0x2b17:
-+ if (RFIFOREST(fd) < 6)
-+ return 0;
-+ //printf("Setting %d char offline\n",RFIFOL(fd,2));
-+ set_char_offline(RFIFOL(fd,2),RFIFOL(fd,6));
-+ RFIFOSKIP(fd,10);
-+ break;
-+
-+ // Reset all chars to offline [Wizputer]
-+ case 0x2b18:
-+ ShowNotice("Map server [%d] requested to set all characters offline.\n", id);
-+ set_all_offline();
-+ RFIFOSKIP(fd,2);
-+ break;
-+
-+ // Character set online [Wizputer]
-+ case 0x2b19:
-+ if (RFIFOREST(fd) < 6)
-+ return 0;
-+ //printf("Setting %d char online\n",RFIFOL(fd,2));
-+ set_char_online(id, RFIFOL(fd,2),RFIFOL(fd,6));
-+ RFIFOSKIP(fd,10);
-+ break;
-+
-+ // Request sending of fame list
-+ case 0x2b1a:
-+ if (RFIFOREST(fd) < 2)
++ //Packet 0x2b10 deprecated in favor of packet 0x3004 for registry saving. [Skotlex] ++ //case 0x2b10: ++ ++ // Recieve rates [Wizputer] ++ case 0x2b16: ++ if (RFIFOREST(fd) < 6 || RFIFOREST(fd) < RFIFOW(fd,8)) ++ return 0; ++ // Txt doesn't need this packet, so just skip it ++ RFIFOSKIP(fd,RFIFOW(fd,8)); ++ break; ++ ++ // Character disconnected set online 0 [Wizputer] ++ case 0x2b17: ++ if (RFIFOREST(fd) < 6) ++ return 0; ++ //printf("Setting %d char offline\n",RFIFOL(fd,2)); ++ set_char_offline(RFIFOL(fd,2),RFIFOL(fd,6)); ++ RFIFOSKIP(fd,10); ++ break; ++ ++ // Reset all chars to offline [Wizputer] ++ case 0x2b18: ++ ShowNotice("Map server [%d] requested to set all characters offline.\n", id); ++ set_all_offline(); ++ RFIFOSKIP(fd,2); ++ break; ++ ++ // Character set online [Wizputer] ++ case 0x2b19: ++ if (RFIFOREST(fd) < 6) ++ return 0; ++ //printf("Setting %d char online\n",RFIFOL(fd,2)); ++ set_char_online(id, RFIFOL(fd,2),RFIFOL(fd,6)); ++ RFIFOSKIP(fd,10); ++ break; ++ ++ // Request sending of fame list ++ case 0x2b1a: ++ if (RFIFOREST(fd) < 2) return 0; { - struct global_reg reg[ACCOUNT_REG2_NUM]; @@ -2868,27 +2868,27 @@ - for(p = 8, j = 0; p < RFIFOW(fd,2) && j < ACCOUNT_REG2_NUM; p += 36, j++) { - memcpy(reg[j].str, RFIFOP(fd,p), 32); - reg[j].value = RFIFOL(fd, p+32); -+ int i, j, k, len = 8;
-+ unsigned char buf[32000];
-+ struct fame_list fame_item;
-+ //struct mmo_charstatus *dat;
-+ //dat = (struct mmo_charstatus *)aCalloc(char_num, sizeof(struct mmo_charstatus *));
-+ CREATE_BUFFER(id, int, char_num);
-+
-+ // copy character list into buffer
-+ //for (i = 0; i < char_num; i++)
-+ // dat[i] = char_dat[i];
-+ // sort according to fame
-+ // qsort(dat, char_num, sizeof(struct mmo_charstatus *), sort_fame);
-+
-+ for(i = 0; i < char_num; i++) {
-+ id[i] = i;
-+ for(j = 0; j < i; j++) {
-+ if (char_dat[i].status.fame > char_dat[id[j]].status.fame) {
-+ for(k = i; k > j; k--)
-+ id[k] = id[k-1];
-+ id[j] = i; // id[i]
-+ break;
++ int i, j, k, len = 8; ++ unsigned char buf[32000]; ++ struct fame_list fame_item; ++ //struct mmo_charstatus *dat; ++ //dat = (struct mmo_charstatus *)aCalloc(char_num, sizeof(struct mmo_charstatus *)); ++ CREATE_BUFFER(id, int, char_num); ++ ++ // copy character list into buffer ++ //for (i = 0; i < char_num; i++) ++ // dat[i] = char_dat[i]; ++ // sort according to fame ++ // qsort(dat, char_num, sizeof(struct mmo_charstatus *), sort_fame); ++ ++ for(i = 0; i < char_num; i++) { ++ id[i] = i; ++ for(j = 0; j < i; j++) { ++ if (char_dat[i].status.fame > char_dat[id[j]].status.fame) { ++ for(k = i; k > j; k--) ++ id[k] = id[k-1]; ++ id[j] = i; // id[i] ++ break; } - set_account_reg2(acc, j, reg); - // loginƒT[ƒo[‚Ö‘—‚é @@ -2901,90 +2901,90 @@ - //memcpy(buf, RFIFOP(fd,0), RFIFOW(fd,2)); - //WBUFW(buf,0) = 0x2b11; - //mapif_sendall(buf, WBUFW(buf,2)); -+ }
-+
-+ // starting to send to map
-+ WBUFW(buf,0) = 0x2b1b;
-+ // add list for blacksmiths
-+ for (i = 0, j = 0; i < char_num && j < fame_list_size_smith; i++) {
-+ if (char_dat[id[i]].status.fame && (char_dat[id[i]].status.class_ == 10 ||
-+ char_dat[id[i]].status.class_ == 4011 ||
-+ char_dat[id[i]].status.class_ == 4033))
-+ {
-+ fame_item.id = char_dat[id[i]].status.char_id;
-+ fame_item.fame = char_dat[id[i]].status.fame;
-+ strncpy(fame_item.name, char_dat[id[i]].status.name, NAME_LENGTH);
-+
-+ memcpy(WBUFP(buf, len), &fame_item, sizeof(struct fame_list));
-+ len += sizeof(struct fame_list);
-+ j++;
-+ }
-+ }
-+ // add blacksmith's block length
-+ WBUFW(buf, 6) = len;
-+
-+ // add list for alchemists
-+ for (i = 0, j = 0; i < char_num && j < fame_list_size_chemist; i++) {
-+ if (char_dat[id[i]].status.fame && (char_dat[id[i]].status.class_ == 18 ||
-+ char_dat[id[i]].status.class_ == 4019 ||
-+ char_dat[id[i]].status.class_ == 4041))
-+ {
-+ fame_item.id = char_dat[id[i]].status.char_id;
-+ fame_item.fame = char_dat[id[i]].status.fame;
-+ strncpy(fame_item.name, char_dat[id[i]].status.name, NAME_LENGTH);
-+
-+ memcpy(WBUFP(buf, len), &fame_item, sizeof(struct fame_list));
-+ len += sizeof(struct fame_list);
-+ j++;
-+ }
-+ }
-+ // add alchemist's block length
-+ WBUFW(buf, 4) = len;
-+
-+ // adding list for taekwons
-+ for (i = 0, j = 0; i < char_num && j < fame_list_size_taekwon; i++) {
-+ if (char_dat[id[i]].status.fame && char_dat[id[i]].status.class_ == 4046)
-+ {
-+ fame_item.id = char_dat[id[i]].status.char_id;
-+ fame_item.fame = char_dat[id[i]].status.fame;
-+ strncpy(fame_item.name, char_dat[id[i]].status.name, NAME_LENGTH);
-+
-+ memcpy(WBUFP(buf, len), &fame_item, sizeof(struct fame_list));
-+ len += sizeof(struct fame_list);
-+ j++;
-+ }
-+ }
-+ // add total packet length
-+ WBUFW(buf, 2) = len;
-+
-+ // sending to all maps
-+ mapif_sendall(buf, len);
-+ // done!
-+ //aFree(dat);
-+ DELETE_BUFFER(id);
-+ RFIFOSKIP(fd,2);
-+ break;
-+ }
-+ //Request to save status change data. [Skotlex]
-+ case 0x2b1c:
-+ if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2))
-+ return 0;
-+ {
-+#ifdef ENABLE_SC_SAVING
-+ int count, aid, cid, i;
-+ struct scdata *data;
-+ aid = RFIFOL(fd, 4);
-+ cid = RFIFOL(fd, 8);
-+ count = RFIFOW(fd, 12);
-+ data = status_search_scdata(aid, cid);
-+ if (data->count != count)
-+ {
-+ data->count = count;
-+ data->data = aRealloc(data->data, count*sizeof(struct status_change_data));
-+ }
-+ for (i = 0; i < count; i++)
-+ memcpy (&data->data[i], RFIFOP(fd, 14+i*sizeof(struct status_change_data)), sizeof(struct status_change_data));
-+#endif
++ } ++ ++ // starting to send to map ++ WBUFW(buf,0) = 0x2b1b; ++ // add list for blacksmiths ++ for (i = 0, j = 0; i < char_num && j < fame_list_size_smith; i++) { ++ if (char_dat[id[i]].status.fame && (char_dat[id[i]].status.class_ == 10 || ++ char_dat[id[i]].status.class_ == 4011 || ++ char_dat[id[i]].status.class_ == 4033)) ++ { ++ fame_item.id = char_dat[id[i]].status.char_id; ++ fame_item.fame = char_dat[id[i]].status.fame; ++ strncpy(fame_item.name, char_dat[id[i]].status.name, NAME_LENGTH); ++ ++ memcpy(WBUFP(buf, len), &fame_item, sizeof(struct fame_list)); ++ len += sizeof(struct fame_list); ++ j++; ++ } ++ } ++ // add blacksmith's block length ++ WBUFW(buf, 6) = len; ++ ++ // add list for alchemists ++ for (i = 0, j = 0; i < char_num && j < fame_list_size_chemist; i++) { ++ if (char_dat[id[i]].status.fame && (char_dat[id[i]].status.class_ == 18 || ++ char_dat[id[i]].status.class_ == 4019 || ++ char_dat[id[i]].status.class_ == 4041)) ++ { ++ fame_item.id = char_dat[id[i]].status.char_id; ++ fame_item.fame = char_dat[id[i]].status.fame; ++ strncpy(fame_item.name, char_dat[id[i]].status.name, NAME_LENGTH); ++ ++ memcpy(WBUFP(buf, len), &fame_item, sizeof(struct fame_list)); ++ len += sizeof(struct fame_list); ++ j++; ++ } ++ } ++ // add alchemist's block length ++ WBUFW(buf, 4) = len; ++ ++ // adding list for taekwons ++ for (i = 0, j = 0; i < char_num && j < fame_list_size_taekwon; i++) { ++ if (char_dat[id[i]].status.fame && char_dat[id[i]].status.class_ == 4046) ++ { ++ fame_item.id = char_dat[id[i]].status.char_id; ++ fame_item.fame = char_dat[id[i]].status.fame; ++ strncpy(fame_item.name, char_dat[id[i]].status.name, NAME_LENGTH); ++ ++ memcpy(WBUFP(buf, len), &fame_item, sizeof(struct fame_list)); ++ len += sizeof(struct fame_list); ++ j++; ++ } ++ } ++ // add total packet length ++ WBUFW(buf, 2) = len; ++ ++ // sending to all maps ++ mapif_sendall(buf, len); ++ // done! ++ //aFree(dat); ++ DELETE_BUFFER(id); ++ RFIFOSKIP(fd,2); ++ break; ++ } ++ //Request to save status change data. [Skotlex] ++ case 0x2b1c: ++ if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2)) ++ return 0; ++ { ++#ifdef ENABLE_SC_SAVING ++ int count, aid, cid, i; ++ struct scdata *data; ++ aid = RFIFOL(fd, 4); ++ cid = RFIFOL(fd, 8); ++ count = RFIFOW(fd, 12); ++ data = status_search_scdata(aid, cid); ++ if (data->count != count) ++ { ++ data->count = count; ++ data->data = aRealloc(data->data, count*sizeof(struct status_change_data)); ++ } ++ for (i = 0; i < count; i++) ++ memcpy (&data->data[i], RFIFOP(fd, 14+i*sizeof(struct status_change_data)), sizeof(struct status_change_data)); ++#endif RFIFOSKIP(fd, RFIFOW(fd,2)); -// printf("char: save_account_reg (from map)\n"); break; @@ -2998,7 +2998,7 @@ } // inter serverˆ—‚Å‚à‚È‚¢ê‡‚ÍØ’f - printf("char: unknown packet 0x%04x (%d bytes to read in buffer)! (from map).\n", RFIFOW(fd,0), RFIFOREST(fd)); -+ ShowError("Unknown packet 0x%04x from map server, disconnecting.\n", RFIFOW(fd,0));
++ ShowError("Unknown packet 0x%04x from map server, disconnecting.\n", RFIFOW(fd,0)); session[fd]->eof = 1; return 0; } @@ -3007,7 +3007,7 @@ } -int search_mapserver(char *map) { -+int search_mapserver(unsigned short map, long ip, short port) {
++int search_mapserver(unsigned short map, long ip, short port) { int i, j; - char temp_map[16]; - int temp_map_len; @@ -3025,12 +3025,12 @@ - //printf("%s : %s = %d\n", server[i].map[j], map, strncmp(server[i].map[j], temp_map, temp_map_len)); - if (strncmp(server[i].map[j], temp_map, temp_map_len) == 0) { -// printf("found -> server #%d.\n", i); -+ for (j = 0; server[i].map[j]; j++)
-+ if (server[i].map[j] == map) {
-+ if (ip > 0 && server[i].ip != ip)
-+ continue;
-+ if (port > 0 && server[i].port != port)
-+ continue;
++ for (j = 0; server[i].map[j]; j++) ++ if (server[i].map[j] == map) { ++ if (ip > 0 && server[i].ip != ip) ++ continue; ++ if (port > 0 && server[i].port != port) ++ continue; return i; } @@ -3046,15 +3046,15 @@ -// Test to know if an IP come from LAN or WAN. by [Yor] -//----------------------------------------------------- -int lan_ip_check(unsigned char *p){ -+//--------------------------------------------
-+// Test to know if an IP come from LAN or WAN.
-+// Rewrote: Adnvanced subnet check [LuzZza]
-+//--------------------------------------------
-+int lan_subnetcheck(long *p) {
-+
++//-------------------------------------------- ++// Test to know if an IP come from LAN or WAN. ++// Rewrote: Adnvanced subnet check [LuzZza] ++//-------------------------------------------- ++int lan_subnetcheck(long *p) { ++ int i; - int lancheck = 1; -+ unsigned char *sbn, *msk, *src = (unsigned char *)p;
++ unsigned char *sbn, *msk, *src = (unsigned char *)p; -// printf("lan_ip_check: to compare: %d.%d.%d.%d, network: %d.%d.%d.%d/%d.%d.%d.%d\n", -// p[0], p[1], p[2], p[3], @@ -3064,82 +3064,82 @@ - if ((subneti[i] & subnetmaski[i]) != (p[i] & subnetmaski[i])) { - lancheck = 0; - break; -+ for(i=0; i<subnet_count; i++) {
-+
-+ if((subnet[i].subnet & subnet[i].mask) == (*p & subnet[i].mask)) {
-+
-+ sbn = (unsigned char *)&subnet[i].subnet;
-+ msk = (unsigned char *)&subnet[i].mask;
-+
-+ ShowInfo("Subnet check [%u.%u.%u.%u]: Matches "CL_CYAN"%u.%u.%u.%u/%u.%u.%u.%u"CL_RESET"\n",
-+ src[0], src[1], src[2], src[3], sbn[0], sbn[1], sbn[2], sbn[3], msk[0], msk[1], msk[2], msk[3]);
-+
-+ return subnet[i].map_ip;
++ for(i=0; i<subnet_count; i++) { ++ ++ if((subnet[i].subnet & subnet[i].mask) == (*p & subnet[i].mask)) { ++ ++ sbn = (unsigned char *)&subnet[i].subnet; ++ msk = (unsigned char *)&subnet[i].mask; ++ ++ ShowInfo("Subnet check [%u.%u.%u.%u]: Matches "CL_CYAN"%u.%u.%u.%u/%u.%u.%u.%u"CL_RESET"\n", ++ src[0], src[1], src[2], src[3], sbn[0], sbn[1], sbn[2], sbn[3], msk[0], msk[1], msk[2], msk[3]); ++ ++ return subnet[i].map_ip; } } - printf("LAN test (result): %s source\033[0m.\n", (lancheck) ? "\033[1;36mLAN" : "\033[1;32mWAN"); - return lancheck; -+
-+ ShowInfo("Subnet check [%u.%u.%u.%u]: "CL_CYAN"WAN"CL_RESET"\n", src[0], src[1], src[2], src[3]);
-+ return 0;
++ ++ ShowInfo("Subnet check [%u.%u.%u.%u]: "CL_CYAN"WAN"CL_RESET"\n", src[0], src[1], src[2], src[3]); ++ return 0; } int parse_char(int fd) { -+
++ int i, ch; -+ unsigned short cmd;
++ unsigned short cmd; char email[40]; -+ int map_fd;
++ int map_fd; struct char_session_data *sd; unsigned char *p = (unsigned char *) &session[fd]->client_addr.sin_addr; -+ long subnet_map_ip;
-+
-+ RFIFOHEAD(fd);
-+
-+ sd = (struct char_session_data*)session[fd]->session_data;
++ long subnet_map_ip; ++ ++ RFIFOHEAD(fd); ++ ++ sd = (struct char_session_data*)session[fd]->session_data; - if (login_fd < 0 || session[fd]->eof) { // disconnect any player (already connected to char-server or coming back from map-server) if login-server is diconnected. -+ if (login_fd < 0)
-+ session[fd]->eof = 1;
-+ if(session[fd]->eof) { // disconnect any player (already connected to char-server or coming back from map-server) if login-server is diconnected.
++ if (login_fd < 0) ++ session[fd]->eof = 1; ++ if(session[fd]->eof) { // disconnect any player (already connected to char-server or coming back from map-server) if login-server is diconnected. if (fd == login_fd) login_fd = -1; - close(fd); - delete_session(fd); -+ if (sd != NULL)
-+ {
-+ struct online_char_data* data = idb_get(online_char_db, sd->account_id);
-+ if (!data || data->server== -1) //If it is not in any server, send it offline. [Skotlex]
-+ set_char_offline(99,sd->account_id);
-+ }
-+ do_close(fd);
++ if (sd != NULL) ++ { ++ struct online_char_data* data = idb_get(online_char_db, sd->account_id); ++ if (!data || data->server== -1) //If it is not in any server, send it offline. [Skotlex] ++ set_char_offline(99,sd->account_id); ++ } ++ do_close(fd); return 0; } - sd = session[fd]->session_data; -+ while(RFIFOREST(fd) >= 2 && !session[fd]->eof) {
-+ cmd = RFIFOW(fd,0);
-+ // crc32‚̃XƒLƒbƒv—p
-+ if( sd==NULL && // –¢ƒƒOƒCƒ“orŠÇ—ƒpƒPƒbƒg
-+ RFIFOREST(fd)>=4 && // Å’áƒoƒCƒg”§ŒÀ • 0x7530,0x7532ŠÇ—ƒpƒPœ‹Ž
-+ RFIFOREST(fd)<=21 && // Å‘åƒoƒCƒg”§ŒÀ • ƒT[ƒo[ƒƒOƒCƒ“œ‹Ž
-+ cmd!=0x20b && // md5’Ê’mƒpƒPƒbƒgœ‹Ž
-+ (RFIFOREST(fd)<6 || RFIFOW(fd,4)==0x65) ){ // ŽŸ‚ɉ½‚©ƒpƒPƒbƒg‚ª—ˆ‚Ä‚é‚È‚çAÚ‘±‚Å‚È‚¢‚Æ‚¾‚ß
-+ RFIFOSKIP(fd,4);
-+ cmd = RFIFOW(fd,0);
-+ ShowDebug("parse_char : %d crc32 skipped\n",fd);
-+ if(RFIFOREST(fd)==0)
-+ return 0;
-+ }
++ while(RFIFOREST(fd) >= 2 && !session[fd]->eof) { ++ cmd = RFIFOW(fd,0); ++ // crc32‚̃XƒLƒbƒv—p ++ if( sd==NULL && // –¢ƒƒOƒCƒ“orŠÇ—ƒpƒPƒbƒg ++ RFIFOREST(fd)>=4 && // Å’áƒoƒCƒg”§ŒÀ • 0x7530,0x7532ŠÇ—ƒpƒPœ‹Ž ++ RFIFOREST(fd)<=21 && // Å‘åƒoƒCƒg”§ŒÀ • ƒT[ƒo[ƒƒOƒCƒ“œ‹Ž ++ cmd!=0x20b && // md5’Ê’mƒpƒPƒbƒgœ‹Ž ++ (RFIFOREST(fd)<6 || RFIFOW(fd,4)==0x65) ){ // ŽŸ‚ɉ½‚©ƒpƒPƒbƒg‚ª—ˆ‚Ä‚é‚È‚çAÚ‘±‚Å‚È‚¢‚Æ‚¾‚ß ++ RFIFOSKIP(fd,4); ++ cmd = RFIFOW(fd,0); ++ ShowDebug("parse_char : %d crc32 skipped\n",fd); ++ if(RFIFOREST(fd)==0) ++ return 0; ++ } - while (RFIFOREST(fd) >= 2) { -// if (RFIFOW(fd,0) < 30000) -// printf("parse_char: connection #%d, packet: 0x%x (with being read: %d bytes).\n", fd, RFIFOW(fd,0), RFIFOREST(fd)); -+//For use in packets that depend on an sd being present [Skotlex]
-+#define FIFOSD_CHECK(rest) { if(RFIFOREST(fd) < rest) return 0; if (sd==NULL) { RFIFOSKIP(fd,rest); return 0; } }
++//For use in packets that depend on an sd being present [Skotlex] ++#define FIFOSD_CHECK(rest) { if(RFIFOREST(fd) < rest) return 0; if (sd==NULL) { RFIFOSKIP(fd,rest); return 0; } } - switch(RFIFOW(fd,0)) { -+ switch(cmd){
++ switch(cmd){ case 0x20b: //20040622ˆÃ†‰»ragexe‘Ήž if (RFIFOREST(fd) < 19) return 0; @@ -3148,19 +3148,19 @@ int GM_value; if ((GM_value = isGM(RFIFOL(fd,2)))) - printf("Account Logged On; Account ID: %d (GM level %d).\n", RFIFOL(fd,2), GM_value); -+ ShowInfo("Account Logged On; Account ID: %d (GM level %d).\n", RFIFOL(fd,2), GM_value);
++ ShowInfo("Account Logged On; Account ID: %d (GM level %d).\n", RFIFOL(fd,2), GM_value); else - printf("Account Logged On; Account ID: %d.\n", RFIFOL(fd,2)); -+ ShowInfo("Account Logged On; Account ID: %d.\n", RFIFOL(fd,2));
++ ShowInfo("Account Logged On; Account ID: %d.\n", RFIFOL(fd,2)); if (sd == NULL) { - sd = session[fd]->session_data = calloc(sizeof(struct char_session_data), 1); - memset(sd, 0, sizeof(struct char_session_data)); - memcpy(sd->email, "no mail", 40); // put here a mail without '@' to refuse deletion if we don't receive the e-mail -+ sd = (struct char_session_data*)aCalloc(sizeof(struct char_session_data), 1);
-+ session[fd]->session_data = sd;
-+
-+// memset(sd, 0, sizeof(struct char_session_data)); aCalloc does this [Skotlex]
-+ strncpy(sd->email, "no mail", 40); // put here a mail without '@' to refuse deletion if we don't receive the e-mail
++ sd = (struct char_session_data*)aCalloc(sizeof(struct char_session_data), 1); ++ session[fd]->session_data = sd; ++ ++// memset(sd, 0, sizeof(struct char_session_data)); aCalloc does this [Skotlex] ++ strncpy(sd->email, "no mail", 40); // put here a mail without '@' to refuse deletion if we don't receive the e-mail sd->connect_until_time = 0; // unknow or illimited (not displaying on map-server) } sd->account_id = RFIFOL(fd,2); @@ -3168,7 +3168,7 @@ sd->login_id2 = RFIFOL(fd,10); sd->sex = RFIFOB(fd,16); // send back account_id -+ WFIFOHEAD(fd, 4);
++ WFIFOHEAD(fd, 4); WFIFOL(fd,0) = RFIFOL(fd,2); WFIFOSET(fd,4); // search authentification @@ -3176,44 +3176,44 @@ (!check_ip_flag || auth_fifo[i].ip == session[fd]->client_addr.sin_addr.s_addr) && auth_fifo[i].delflag == 2) { auth_fifo[i].delflag = 1; -+
-+ if (online_check)
-+ { // check if character is not online already. [Skotlex]
-+ struct online_char_data* character;
-+ character = idb_get(online_char_db, sd->account_id);
-+
-+ if (character)
-+ {
-+ if(character->server > -1)
-+ { //Kick it from the map server it is on.
-+ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2);
-+ if (!character->waiting_disconnect)
-+ add_timer(gettick()+20000, chardb_waiting_disconnect, character->account_id, 0);
-+ character->waiting_disconnect = 1;
-+ /* Not a good idea because this would trigger when you do a char-change from the map server! [Skotlex]
-+ } else { //Manual kick from char server.
-+ struct char_session_data *tsd;
-+ int i;
-+ for(i = 0; i < fd_max; i++) {
-+ if (session[i] && i!=fd && (tsd = (struct char_session_data*)session[i]->session_data) && tsd->account_id == sd->account_id)
-+ {
-+ WFIFOW(i,0) = 0x81;
-+ WFIFOB(i,2) = 2;
-+ WFIFOSET(i,3);
-+ break;
-+ }
-+ }
-+ if (i == fd_max) //Shouldn't happen, but just in case.
-+ set_char_offline(99, sd->account_id);
-+ */
-+ WFIFOW(fd,0) = 0x81;
-+ WFIFOB(fd,2) = 8;
-+ WFIFOSET(fd,3);
-+ break;
-+ }
-+ }
-+ }
-+
++ ++ if (online_check) ++ { // check if character is not online already. [Skotlex] ++ struct online_char_data* character; ++ character = idb_get(online_char_db, sd->account_id); ++ ++ if (character) ++ { ++ if(character->server > -1) ++ { //Kick it from the map server it is on. ++ mapif_disconnectplayer(server_fd[character->server], character->account_id, character->char_id, 2); ++ if (!character->waiting_disconnect) ++ add_timer(gettick()+20000, chardb_waiting_disconnect, character->account_id, 0); ++ character->waiting_disconnect = 1; ++ /* Not a good idea because this would trigger when you do a char-change from the map server! [Skotlex] ++ } else { //Manual kick from char server. ++ struct char_session_data *tsd; ++ int i; ++ for(i = 0; i < fd_max; i++) { ++ if (session[i] && i!=fd && (tsd = (struct char_session_data*)session[i]->session_data) && tsd->account_id == sd->account_id) ++ { ++ WFIFOW(i,0) = 0x81; ++ WFIFOB(i,2) = 2; ++ WFIFOSET(i,3); ++ break; ++ } ++ } ++ if (i == fd_max) //Shouldn't happen, but just in case. ++ set_char_offline(99, sd->account_id); ++ */ ++ WFIFOW(fd,0) = 0x81; ++ WFIFOB(fd,2) = 8; ++ WFIFOSET(fd,3); ++ break; ++ } ++ } ++ } ++ if (max_connect_user == 0 || count_users() < max_connect_user) { if (login_fd > 0) { // don't send request if no login-server // request to login-server to obtain e-mail/time limit @@ -3223,42 +3223,42 @@ case 0x66: // ƒLƒƒƒ‰‘I‘ð - if (RFIFOREST(fd) < 3) - return 0; -+ FIFOSD_CHECK(3);
-+ {
-+ int char_num = RFIFOB(fd,2);
-+ struct mmo_charstatus *cd;
-+ RFIFOSKIP(fd,3);
++ FIFOSD_CHECK(3); ++ { ++ int char_num = RFIFOB(fd,2); ++ struct mmo_charstatus *cd; ++ RFIFOSKIP(fd,3); // if we activated email creation and email is default email if (email_creation != 0 && strcmp(sd->email, "a@a.com") == 0 && login_fd > 0) { // to modify an e-mail, login-server must be online -+ WFIFOHEAD(fd, 3);
++ WFIFOHEAD(fd, 3); WFIFOW(fd, 0) = 0x70; WFIFOB(fd, 2) = 0; // 00 = Incorrect Email address WFIFOSET(fd, 3); - -+ break;
-+ }
++ break; ++ } // otherwise, load the character - } else { for (ch = 0; ch < 9; ch++) - if (sd->found_char[ch] >= 0 && char_dat[sd->found_char[ch]].char_num == RFIFOB(fd,2)) -+ if (sd->found_char[ch] >= 0 && char_dat[sd->found_char[ch]].status.char_num == char_num)
++ if (sd->found_char[ch] >= 0 && char_dat[sd->found_char[ch]].status.char_num == char_num) break; - if (ch != 9) { -+ if (ch == 9)
-+ { //Not found?? May be forged packet.
-+ break;
-+ }
-+ cd = &char_dat[sd->found_char[ch]].status;
++ if (ch == 9) ++ { //Not found?? May be forged packet. ++ break; ++ } ++ cd = &char_dat[sd->found_char[ch]].status; char_log("Character Selected, Account ID: %d, Character Slot: %d, Character Name: %s." RETCODE, - sd->account_id, RFIFOB(fd,2), char_dat[sd->found_char[ch]].name); -+ sd->account_id, char_num, cd->name);
-+
-+ cd->sex = sd->sex;
-+
++ sd->account_id, char_num, cd->name); ++ ++ cd->sex = sd->sex; ++ // searching map server - i = search_mapserver(char_dat[sd->found_char[ch]].last_point.map); -+ i = search_mapserver(cd->last_point.map,-1,-1);
++ i = search_mapserver(cd->last_point.map,-1,-1); // if map is not found, we check major cities if (i < 0) { - if ((i = search_mapserver("prontera.gat")) >= 0) { // check is done without 'gat'. @@ -3285,61 +3285,61 @@ - memcpy(char_dat[sd->found_char[ch]].last_point.map, "izlude.gat", 16); - char_dat[sd->found_char[ch]].last_point.x = 94; // savepoint coordonates - char_dat[sd->found_char[ch]].last_point.y = 103; -+ unsigned short j;
-+ ShowWarning("Unable to find map-server for '%s', resorting to sending to a major city.\n", mapindex_id2name(cd->last_point.map));
-+ if ((i = search_mapserver((j=mapindex_name2id(MAP_PRONTERA)),-1,-1)) >= 0) {
-+ cd->last_point.map = j;
-+ cd->last_point.x = 273; // savepoint coordinates
-+ cd->last_point.y = 354;
-+ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_GEFFEN)),-1,-1)) >= 0) {
-+ cd->last_point.map = j;
-+ cd->last_point.x = 120; // savepoint coordinates
-+ cd->last_point.y = 100;
-+ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_MORROC)),-1,-1)) >= 0) {
-+ cd->last_point.map = j;
-+ cd->last_point.x = 160; // savepoint coordinates
-+ cd->last_point.y = 94;
-+ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_ALBERTA)),-1,-1)) >= 0) {
-+ cd->last_point.map = j;
-+ cd->last_point.x = 116; // savepoint coordinates
-+ cd->last_point.y = 57;
-+ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_PAYON)),-1,-1)) >= 0) {
-+ cd->last_point.map = j;
-+ cd->last_point.x = 87; // savepoint coordinates
-+ cd->last_point.y = 117;
-+ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_IZLUDE)),-1,-1)) >= 0) {
-+ cd->last_point.map = j;
-+ cd->last_point.x = 94; // savepoint coordinates
-+ cd->last_point.y = 103;
++ unsigned short j; ++ ShowWarning("Unable to find map-server for '%s', resorting to sending to a major city.\n", mapindex_id2name(cd->last_point.map)); ++ if ((i = search_mapserver((j=mapindex_name2id(MAP_PRONTERA)),-1,-1)) >= 0) { ++ cd->last_point.map = j; ++ cd->last_point.x = 273; // savepoint coordinates ++ cd->last_point.y = 354; ++ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_GEFFEN)),-1,-1)) >= 0) { ++ cd->last_point.map = j; ++ cd->last_point.x = 120; // savepoint coordinates ++ cd->last_point.y = 100; ++ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_MORROC)),-1,-1)) >= 0) { ++ cd->last_point.map = j; ++ cd->last_point.x = 160; // savepoint coordinates ++ cd->last_point.y = 94; ++ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_ALBERTA)),-1,-1)) >= 0) { ++ cd->last_point.map = j; ++ cd->last_point.x = 116; // savepoint coordinates ++ cd->last_point.y = 57; ++ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_PAYON)),-1,-1)) >= 0) { ++ cd->last_point.map = j; ++ cd->last_point.x = 87; // savepoint coordinates ++ cd->last_point.y = 117; ++ } else if ((i = search_mapserver((j=mapindex_name2id(MAP_IZLUDE)),-1,-1)) >= 0) { ++ cd->last_point.map = j; ++ cd->last_point.x = 94; // savepoint coordinates ++ cd->last_point.y = 103; } else { - int j; // get first online server (with a map) i = 0; for(j = 0; j < MAX_MAP_SERVERS; j++) - if (server_fd[j] >= 0 && server[j].map[0][0]) { // change save point to one of map found on the server (the first) -+ if (server_fd[j] >= 0 && server[j].map[0]) { // change save point to one of map found on the server (the first)
++ if (server_fd[j] >= 0 && server[j].map[0]) { // change save point to one of map found on the server (the first) i = j; - memcpy(char_dat[sd->found_char[ch]].last_point.map, server[j].map[0], 16); - printf("Map-server #%d found with a map: '%s'.\n", j, server[j].map[0]); - // coordonates are unknown -+ cd->last_point.map = server[j].map[0];
-+ ShowInfo("Map-server #%d found with a map: '%s'.\n", j, mapindex_id2name(server[j].map[0]));
-+ // coordinates are unknown
++ cd->last_point.map = server[j].map[0]; ++ ShowInfo("Map-server #%d found with a map: '%s'.\n", j, mapindex_id2name(server[j].map[0])); ++ // coordinates are unknown break; } // if no map-server is connected, we send: server closed if (j == MAX_MAP_SERVERS) { -+ WFIFOHEAD(fd, 3);
++ WFIFOHEAD(fd, 3); WFIFOW(fd,0) = 0x81; - WFIFOL(fd,2) = 1; // 01 = Server closed -+ WFIFOB(fd,2) = 1; // 01 = Server closed
++ WFIFOB(fd,2) = 1; // 01 = Server closed WFIFOSET(fd,3); - RFIFOSKIP(fd,3); break; } } } -+ WFIFOHEAD(fd, 28);
++ WFIFOHEAD(fd, 28); WFIFOW(fd,0) = 0x71; - WFIFOL(fd,2) = char_dat[sd->found_char[ch]].char_id; - memcpy(WFIFOP(fd,6), char_dat[sd->found_char[ch]].last_point.map, 16); @@ -3347,16 +3347,16 @@ - printf("--Send IP of map-server. "); - if (lan_ip_check(p)) - WFIFOL(fd, 22) = inet_addr(lan_map_ip); -+ WFIFOL(fd,2) = cd->char_id;
-+ memcpy(WFIFOP(fd,6), mapindex_id2name(cd->last_point.map), MAP_NAME_LENGTH);
-+ ShowInfo("Character selection '%s' (account: %d, slot: %d).\n", cd->name, sd->account_id, ch);
-+
-+ // Andvanced subnet check [LuzZza]
-+ if((subnet_map_ip = lan_subnetcheck((long *)p)))
-+ WFIFOL(fd,22) = subnet_map_ip;
++ WFIFOL(fd,2) = cd->char_id; ++ memcpy(WFIFOP(fd,6), mapindex_id2name(cd->last_point.map), MAP_NAME_LENGTH); ++ ShowInfo("Character selection '%s' (account: %d, slot: %d).\n", cd->name, sd->account_id, ch); ++ ++ // Andvanced subnet check [LuzZza] ++ if((subnet_map_ip = lan_subnetcheck((long *)p))) ++ WFIFOL(fd,22) = subnet_map_ip; else WFIFOL(fd, 22) = server[i].ip; -+
++ WFIFOW(fd,26) = server[i].port; WFIFOSET(fd,28); if (auth_fifo_pos >= AUTH_FIFO_SIZE) @@ -3364,7 +3364,7 @@ - //printf("auth_fifo set #%d - account %d, char: %d, secure: %08x-%08x\n", auth_fifo_pos, sd->account_id, char_dat[sd->found_char[ch]].char_id, sd->login_id1, sd->login_id2); auth_fifo[auth_fifo_pos].account_id = sd->account_id; - auth_fifo[auth_fifo_pos].char_id = char_dat[sd->found_char[ch]].char_id; -+ auth_fifo[auth_fifo_pos].char_id = cd->char_id;
++ auth_fifo[auth_fifo_pos].char_id = cd->char_id; auth_fifo[auth_fifo_pos].login_id1 = sd->login_id1; auth_fifo[auth_fifo_pos].login_id2 = sd->login_id2; auth_fifo[auth_fifo_pos].delflag = 0; @@ -3373,33 +3373,33 @@ auth_fifo[auth_fifo_pos].connect_until_time = sd->connect_until_time; auth_fifo[auth_fifo_pos].ip = session[fd]->client_addr.sin_addr.s_addr; - auth_fifo_pos++; -+
-+ //Send NEW auth packet [Kevin]
-+ if ((map_fd = server_fd[i]) < 1 || session[map_fd] == NULL)
-+ { //0 Should not be a valid server_fd [Skotlex]
-+ ShowError("parse_char: Attempting to write to invalid session %d! Map Server #%d disconnected.\n", map_fd, i);
-+ server_fd[i] = -1;
-+ memset(&server[i], 0, sizeof(struct mmo_map_server));
-+ //Send server closed.
-+ WFIFOW(fd,0) = 0x81;
-+ WFIFOB(fd,2) = 1; // 01 = Server closed
-+ WFIFOSET(fd,3);
-+ break;
++ ++ //Send NEW auth packet [Kevin] ++ if ((map_fd = server_fd[i]) < 1 || session[map_fd] == NULL) ++ { //0 Should not be a valid server_fd [Skotlex] ++ ShowError("parse_char: Attempting to write to invalid session %d! Map Server #%d disconnected.\n", map_fd, i); ++ server_fd[i] = -1; ++ memset(&server[i], 0, sizeof(struct mmo_map_server)); ++ //Send server closed. ++ WFIFOW(fd,0) = 0x81; ++ WFIFOB(fd,2) = 1; // 01 = Server closed ++ WFIFOSET(fd,3); ++ break; } -+ WFIFOW(map_fd,0) = 0x2afd;
-+ WFIFOW(map_fd,2) = 20 + sizeof(struct mmo_charstatus);
-+ WFIFOL(map_fd,4) = auth_fifo[auth_fifo_pos].account_id;
-+ WFIFOL(map_fd,8) = auth_fifo[auth_fifo_pos].login_id1;
-+ WFIFOL(map_fd,16) = auth_fifo[auth_fifo_pos].login_id2;
-+ WFIFOL(map_fd,12) = (unsigned long)auth_fifo[auth_fifo_pos].connect_until_time;
-+ memcpy(WFIFOP(map_fd,20), cd, sizeof(struct mmo_charstatus));
-+ WFIFOSET(map_fd, WFIFOW(map_fd,2));
-+
-+ set_char_online(i, cd->char_id, cd->account_id);
-+ //Sets char online in the party and breaks even share if needed.
-+ inter_party_logged(cd->party_id, cd->account_id, cd->char_id);
-+
-+ auth_fifo_pos++;
++ WFIFOW(map_fd,0) = 0x2afd; ++ WFIFOW(map_fd,2) = 20 + sizeof(struct mmo_charstatus); ++ WFIFOL(map_fd,4) = auth_fifo[auth_fifo_pos].account_id; ++ WFIFOL(map_fd,8) = auth_fifo[auth_fifo_pos].login_id1; ++ WFIFOL(map_fd,16) = auth_fifo[auth_fifo_pos].login_id2; ++ WFIFOL(map_fd,12) = (unsigned long)auth_fifo[auth_fifo_pos].connect_until_time; ++ memcpy(WFIFOP(map_fd,20), cd, sizeof(struct mmo_charstatus)); ++ WFIFOSET(map_fd, WFIFOW(map_fd,2)); ++ ++ set_char_online(i, cd->char_id, cd->account_id); ++ //Sets char online in the party and breaks even share if needed. ++ inter_party_logged(cd->party_id, cd->account_id, cd->char_id); ++ ++ auth_fifo_pos++; } - RFIFOSKIP(fd,3); break; @@ -3407,41 +3407,41 @@ case 0x67: // ì¬ - if (RFIFOREST(fd) < 37) - return 0; -+ FIFOSD_CHECK(37);
-+
-+ if(char_new == 0) //turn character creation on/off [Kevin]
-+ i = -2;
-+ else
++ FIFOSD_CHECK(37); ++ ++ if(char_new == 0) //turn character creation on/off [Kevin] ++ i = -2; ++ else i = make_new_char(fd, RFIFOP(fd,2)); - if (i < 0) { -+
-+ if(i == -1){ //added some better faile reporting to client on the txt version [Kevin]
-+ //already exists
-+ WFIFOHEAD(fd, 3);
++ ++ if(i == -1){ //added some better faile reporting to client on the txt version [Kevin] ++ //already exists ++ WFIFOHEAD(fd, 3); WFIFOW(fd,0) = 0x6e; WFIFOB(fd,2) = 0x00; WFIFOSET(fd,3); RFIFOSKIP(fd,37); break; -+ }else if(i == -2){
-+ //denied
-+ WFIFOHEAD(fd, 3);
-+ WFIFOW(fd, 0) = 0x6e;
-+ WFIFOB(fd, 2) = 0x02;
-+ WFIFOSET(fd, 3);
-+ RFIFOSKIP(fd, 37);
-+ break;
-+ }else if(i == -3){
-+ //underaged XD
-+ WFIFOHEAD(fd, 3);
-+ WFIFOW(fd, 0) = 0x6e;
-+ WFIFOB(fd, 2) = 0x01;
-+ WFIFOSET(fd, 3);
-+ RFIFOSKIP(fd, 37);
-+ break;
++ }else if(i == -2){ ++ //denied ++ WFIFOHEAD(fd, 3); ++ WFIFOW(fd, 0) = 0x6e; ++ WFIFOB(fd, 2) = 0x02; ++ WFIFOSET(fd, 3); ++ RFIFOSKIP(fd, 37); ++ break; ++ }else if(i == -3){ ++ //underaged XD ++ WFIFOHEAD(fd, 3); ++ WFIFOW(fd, 0) = 0x6e; ++ WFIFOB(fd, 2) = 0x01; ++ WFIFOSET(fd, 3); ++ RFIFOSKIP(fd, 37); ++ break; } -+ WFIFOHEAD(fd, 108);
++ WFIFOHEAD(fd, 108); WFIFOW(fd,0) = 0x6d; memset(WFIFOP(fd,2), 0, 106); @@ -3450,16 +3450,16 @@ - WFIFOL(fd,2+8) = char_dat[i].zeny; - WFIFOL(fd,2+12) = char_dat[i].job_exp; - WFIFOL(fd,2+16) = char_dat[i].job_level; -+ WFIFOL(fd,2) = char_dat[i].status.char_id;
-+ WFIFOL(fd,2+4) = char_dat[i].status.base_exp>LONG_MAX?LONG_MAX:char_dat[i].status.base_exp;
-+ WFIFOL(fd,2+8) = char_dat[i].status.zeny;
-+ WFIFOL(fd,2+12) = char_dat[i].status.job_exp>LONG_MAX?LONG_MAX:char_dat[i].status.job_exp;
-+ WFIFOL(fd,2+16) = char_dat[i].status.job_level;
++ WFIFOL(fd,2) = char_dat[i].status.char_id; ++ WFIFOL(fd,2+4) = char_dat[i].status.base_exp>LONG_MAX?LONG_MAX:char_dat[i].status.base_exp; ++ WFIFOL(fd,2+8) = char_dat[i].status.zeny; ++ WFIFOL(fd,2+12) = char_dat[i].status.job_exp>LONG_MAX?LONG_MAX:char_dat[i].status.job_exp; ++ WFIFOL(fd,2+16) = char_dat[i].status.job_level; - WFIFOL(fd,2+28) = char_dat[i].karma; - WFIFOL(fd,2+32) = char_dat[i].manner; -+ WFIFOL(fd,2+28) = char_dat[i].status.karma;
-+ WFIFOL(fd,2+32) = char_dat[i].status.manner;
++ WFIFOL(fd,2+28) = char_dat[i].status.karma; ++ WFIFOL(fd,2+32) = char_dat[i].status.manner; WFIFOW(fd,2+40) = 0x30; - WFIFOW(fd,2+42) = (char_dat[i].hp > 0x7fff) ? 0x7fff : char_dat[i].hp; @@ -3487,31 +3487,31 @@ - WFIFOB(fd,2+102) = (char_dat[i].dex > 255) ? 255 : char_dat[i].dex; - WFIFOB(fd,2+103) = (char_dat[i].luk > 255) ? 255 : char_dat[i].luk; - WFIFOB(fd,2+104) = char_dat[i].char_num; -+ WFIFOW(fd,2+42) = (char_dat[i].status.hp > 0x7fff) ? 0x7fff : char_dat[i].status.hp;
-+ WFIFOW(fd,2+44) = (char_dat[i].status.max_hp > 0x7fff) ? 0x7fff : char_dat[i].status.max_hp;
-+ WFIFOW(fd,2+46) = (char_dat[i].status.sp > 0x7fff) ? 0x7fff : char_dat[i].status.sp;
-+ WFIFOW(fd,2+48) = (char_dat[i].status.max_sp > 0x7fff) ? 0x7fff : char_dat[i].status.max_sp;
-+ WFIFOW(fd,2+50) = DEFAULT_WALK_SPEED; // char_dat[i].status.speed;
-+ WFIFOW(fd,2+52) = char_dat[i].status.class_;
-+ WFIFOW(fd,2+54) = char_dat[i].status.hair;
-+
-+ WFIFOW(fd,2+58) = char_dat[i].status.base_level;
-+ WFIFOW(fd,2+60) = char_dat[i].status.skill_point;
-+
-+ WFIFOW(fd,2+64) = char_dat[i].status.shield;
-+ WFIFOW(fd,2+66) = char_dat[i].status.head_top;
-+ WFIFOW(fd,2+68) = char_dat[i].status.head_mid;
-+ WFIFOW(fd,2+70) = char_dat[i].status.hair_color;
-+
-+ memcpy(WFIFOP(fd,2+74), char_dat[i].status.name, NAME_LENGTH);
-+
-+ WFIFOB(fd,2+98) = (char_dat[i].status.str > 255) ? 255 : char_dat[i].status.str;
-+ WFIFOB(fd,2+99) = (char_dat[i].status.agi > 255) ? 255 : char_dat[i].status.agi;
-+ WFIFOB(fd,2+100) = (char_dat[i].status.vit > 255) ? 255 : char_dat[i].status.vit;
-+ WFIFOB(fd,2+101) = (char_dat[i].status.int_ > 255) ? 255 : char_dat[i].status.int_;
-+ WFIFOB(fd,2+102) = (char_dat[i].status.dex > 255) ? 255 : char_dat[i].status.dex;
-+ WFIFOB(fd,2+103) = (char_dat[i].status.luk > 255) ? 255 : char_dat[i].status.luk;
-+ WFIFOB(fd,2+104) = char_dat[i].status.char_num;
++ WFIFOW(fd,2+42) = (char_dat[i].status.hp > 0x7fff) ? 0x7fff : char_dat[i].status.hp; ++ WFIFOW(fd,2+44) = (char_dat[i].status.max_hp > 0x7fff) ? 0x7fff : char_dat[i].status.max_hp; ++ WFIFOW(fd,2+46) = (char_dat[i].status.sp > 0x7fff) ? 0x7fff : char_dat[i].status.sp; ++ WFIFOW(fd,2+48) = (char_dat[i].status.max_sp > 0x7fff) ? 0x7fff : char_dat[i].status.max_sp; ++ WFIFOW(fd,2+50) = DEFAULT_WALK_SPEED; // char_dat[i].status.speed; ++ WFIFOW(fd,2+52) = char_dat[i].status.class_; ++ WFIFOW(fd,2+54) = char_dat[i].status.hair; ++ ++ WFIFOW(fd,2+58) = char_dat[i].status.base_level; ++ WFIFOW(fd,2+60) = char_dat[i].status.skill_point; ++ ++ WFIFOW(fd,2+64) = char_dat[i].status.shield; ++ WFIFOW(fd,2+66) = char_dat[i].status.head_top; ++ WFIFOW(fd,2+68) = char_dat[i].status.head_mid; ++ WFIFOW(fd,2+70) = char_dat[i].status.hair_color; ++ ++ memcpy(WFIFOP(fd,2+74), char_dat[i].status.name, NAME_LENGTH); ++ ++ WFIFOB(fd,2+98) = (char_dat[i].status.str > 255) ? 255 : char_dat[i].status.str; ++ WFIFOB(fd,2+99) = (char_dat[i].status.agi > 255) ? 255 : char_dat[i].status.agi; ++ WFIFOB(fd,2+100) = (char_dat[i].status.vit > 255) ? 255 : char_dat[i].status.vit; ++ WFIFOB(fd,2+101) = (char_dat[i].status.int_ > 255) ? 255 : char_dat[i].status.int_; ++ WFIFOB(fd,2+102) = (char_dat[i].status.dex > 255) ? 255 : char_dat[i].status.dex; ++ WFIFOB(fd,2+103) = (char_dat[i].status.luk > 255) ? 255 : char_dat[i].status.luk; ++ WFIFOB(fd,2+104) = char_dat[i].status.char_num; WFIFOSET(fd,108); RFIFOSKIP(fd,37); @@ -3521,8 +3521,8 @@ case 0x68: // delete char //Yor's Fix - if (RFIFOREST(fd) < 46) - return 0; -+ FIFOSD_CHECK(46);
-+
++ FIFOSD_CHECK(46); ++ memcpy(email, RFIFOP(fd,6), 40); if (e_mail_check(email) == 0) strncpy(email, "a@a.com", 40); // default e-mail @@ -3531,7 +3531,7 @@ // we change the packet to set it like selection. for (i = 0; i < 9; i++) - if (char_dat[sd->found_char[i]].char_id == RFIFOL(fd,2)) { -+ if (char_dat[sd->found_char[i]].status.char_id == RFIFOL(fd,2)) {
++ if (char_dat[sd->found_char[i]].status.char_id == RFIFOL(fd,2)) { // we save new e-mail memcpy(sd->email, email, 40); // we send new e-mail to login-server ('online' login-server is checked before) @@ -3540,7 +3540,7 @@ // change value to put new packet (char selection) RFIFOW(fd, 0) = 0x66; - RFIFOB(fd, 2) = char_dat[sd->found_char[i]].char_num; -+ RFIFOB(fd, 2) = char_dat[sd->found_char[i]].status.char_num;
++ RFIFOB(fd, 2) = char_dat[sd->found_char[i]].status.char_num; // not send packet, it's modify of actual packet break; } @@ -3549,7 +3549,7 @@ for (i = 0; i < 9; i++) { struct mmo_charstatus *cs = NULL; - if ((cs = &char_dat[sd->found_char[i]])->char_id == RFIFOL(fd,2)) { -+ if ((cs = &char_dat[sd->found_char[i]].status)->char_id == RFIFOL(fd,2)) {
++ if ((cs = &char_dat[sd->found_char[i]].status)->char_id == RFIFOL(fd,2)) { char_delete(cs); // deletion process if (sd->found_char[i] != char_num - 1) { @@ -3559,8 +3559,8 @@ for (j = 0; j < fd_max; j++) { - if (session[j] && (sd2 = session[j]->session_data) && - sd2->account_id == char_dat[char_num-1].account_id) { -+ if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) &&
-+ sd2->account_id == char_dat[char_num-1].status.account_id) {
++ if (session[j] && (sd2 = (struct char_session_data*)session[j]->session_data) && ++ sd2->account_id == char_dat[char_num-1].status.account_id) { for (k = 0; k < 9; k++) { if (sd2->found_char[k] == char_num-1) { sd2->found_char[k] = sd->found_char[i]; @@ -3569,7 +3569,7 @@ break; } - if (i == MAX_MAP_SERVERS || strcmp(RFIFOP(fd,2), userid) || strcmp(RFIFOP(fd,26), passwd)){ -+ if (i == MAX_MAP_SERVERS || strcmp((char*)RFIFOP(fd,2), userid) || strcmp((char*)RFIFOP(fd,26), passwd)){
++ if (i == MAX_MAP_SERVERS || strcmp((char*)RFIFOP(fd,2), userid) || strcmp((char*)RFIFOP(fd,26), passwd)){ WFIFOB(fd,2) = 3; WFIFOSET(fd,3); RFIFOSKIP(fd,60); @@ -3596,30 +3596,30 @@ return 0; } -+// Console Command Parser [Wizputer]
-+int parse_console(char *buf) {
-+ char *type,*command;
-+
-+ type = (char *)aCalloc(64,1);
-+ command = (char *)aCalloc(64,1);
-+
-+// memset(type,0,64);
-+// memset(command,0,64);
-+
-+ ShowStatus("Console: %s\n",buf);
-+
-+ if ( sscanf(buf, "%[^:]:%[^\n]", type , command ) < 2 )
-+ sscanf(buf,"%[^\n]",type);
-+
-+ ShowDebug("Type of command: %s || Command: %s \n",type,command);
-+
-+ if(buf) aFree(buf);
-+ if(type) aFree(type);
-+ if(command) aFree(command);
-+
-+ return 0;
-+}
-+
++// Console Command Parser [Wizputer] ++int parse_console(char *buf) { ++ char *type,*command; ++ ++ type = (char *)aCalloc(64,1); ++ command = (char *)aCalloc(64,1); ++ ++// memset(type,0,64); ++// memset(command,0,64); ++ ++ ShowStatus("Console: %s\n",buf); ++ ++ if ( sscanf(buf, "%[^:]:%[^\n]", type , command ) < 2 ) ++ sscanf(buf,"%[^\n]",type); ++ ++ ShowDebug("Type of command: %s || Command: %s \n",type,command); ++ ++ if(buf) aFree(buf); ++ if(type) aFree(type); ++ if(command) aFree(command); ++ ++ return 0; ++} ++ // ‘S‚Ä‚ÌMAPƒT[ƒo[‚Ƀf[ƒ^‘—Mi‘—M‚µ‚½mapŽI‚Ì”‚ð•Ô‚·j int mapif_sendall(unsigned char *buf, unsigned int len) { int i, c; @@ -3627,16 +3627,16 @@ for(i = 0; i < MAX_MAP_SERVERS; i++) { int fd; if ((fd = server_fd[i]) >= 0) { -+ if (session[fd] == NULL)
-+ { //Could this be the crash's source? [Skotlex]
-+ ShowError("mapif_sendall: Attempting to write to invalid session %d! Map Server #%d disconnected.\n", fd, i);
-+ server_fd[i] = -1;
-+ memset(&server[i], 0, sizeof(struct mmo_map_server));
-+ continue;
-+ }
-+ WFIFOHEAD(fd, len);
-+ if (WFIFOSPACE(fd) < len) //Increase buffer size.
-+ realloc_writefifo(fd, len);
++ if (session[fd] == NULL) ++ { //Could this be the crash's source? [Skotlex] ++ ShowError("mapif_sendall: Attempting to write to invalid session %d! Map Server #%d disconnected.\n", fd, i); ++ server_fd[i] = -1; ++ memset(&server[i], 0, sizeof(struct mmo_map_server)); ++ continue; ++ } ++ WFIFOHEAD(fd, len); ++ if (WFIFOSPACE(fd) < len) //Increase buffer size. ++ realloc_writefifo(fd, len); memcpy(WFIFOP(fd,0), buf, len); WFIFOSET(fd,len); c++; @@ -3644,9 +3644,9 @@ for(i = 0; i < MAX_MAP_SERVERS; i++) { int fd; if ((fd = server_fd[i]) >= 0 && fd != sfd) { -+ WFIFOHEAD(fd, len);
-+ if (WFIFOSPACE(fd) < len) //Increase buffer size.
-+ realloc_writefifo(fd, len);
++ WFIFOHEAD(fd, len); ++ if (WFIFOSPACE(fd) < len) //Increase buffer size. ++ realloc_writefifo(fd, len); memcpy(WFIFOP(fd,0), buf, len); WFIFOSET(fd, len); c++; @@ -3654,9 +3654,9 @@ if (fd >= 0) { for(i = 0; i < MAX_MAP_SERVERS; i++) { if (fd == server_fd[i]) { -+ WFIFOHEAD(fd, len);
-+ if (WFIFOSPACE(fd) < len) //Increase buffer size.
-+ realloc_writefifo(fd, len);
++ WFIFOHEAD(fd, len); ++ if (WFIFOSPACE(fd) < len) //Increase buffer size. ++ realloc_writefifo(fd, len); memcpy(WFIFOP(fd,0), buf, len); WFIFOSET(fd,len); return 1; @@ -3665,11 +3665,11 @@ int send_users_tologin(int tid, unsigned int tick, int id, int data) { int users = count_users(); - char buf[16]; -+ unsigned char buf[16];
++ unsigned char buf[16]; if (login_fd > 0 && session[login_fd]) { // send number of user to login server -+ WFIFOHEAD(login_fd, 6);
++ WFIFOHEAD(login_fd, 6); WFIFOW(login_fd,0) = 0x2714; WFIFOL(login_fd,2) = users; WFIFOSET(login_fd,6); @@ -3677,57 +3677,57 @@ return 0; } -+static int send_accounts_tologin_sub(DBKey key, void* data, va_list ap) {
-+ struct online_char_data* character = (struct online_char_data*)data;
-+ int *i = va_arg(ap, int*);
-+ int count = va_arg(ap, int);
-+ if ((*i) >= count)
-+ return 0; //This is an error that shouldn't happen....
-+ if(character->server > -1) {
-+ WFIFOHEAD(login_fd, 8+count*4);
-+ WFIFOL(login_fd, 8+(*i)*4) =character->account_id;
-+ (*i)++;
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+int send_accounts_tologin(int tid, unsigned int tick, int id, int data) {
-+ int users = count_users(), i=0;
-+
-+ if (login_fd > 0 && session[login_fd]) {
-+ // send account list to login server
-+ WFIFOHEAD(login_fd, 8+users*4);
-+ WFIFOW(login_fd,0) = 0x272d;
-+ WFIFOL(login_fd,4) = users;
-+ online_char_db->foreach(online_char_db, send_accounts_tologin_sub, &i);
-+ WFIFOW(login_fd,2) = 8+ i*4;
-+ if (i > 0)
-+ WFIFOSET(login_fd,WFIFOW(login_fd,2));
-+ }
-+ return 0;
-+}
-+
++static int send_accounts_tologin_sub(DBKey key, void* data, va_list ap) { ++ struct online_char_data* character = (struct online_char_data*)data; ++ int *i = va_arg(ap, int*); ++ int count = va_arg(ap, int); ++ if ((*i) >= count) ++ return 0; //This is an error that shouldn't happen.... ++ if(character->server > -1) { ++ WFIFOHEAD(login_fd, 8+count*4); ++ WFIFOL(login_fd, 8+(*i)*4) =character->account_id; ++ (*i)++; ++ return 1; ++ } ++ return 0; ++} ++ ++int send_accounts_tologin(int tid, unsigned int tick, int id, int data) { ++ int users = count_users(), i=0; ++ ++ if (login_fd > 0 && session[login_fd]) { ++ // send account list to login server ++ WFIFOHEAD(login_fd, 8+users*4); ++ WFIFOW(login_fd,0) = 0x272d; ++ WFIFOL(login_fd,4) = users; ++ online_char_db->foreach(online_char_db, send_accounts_tologin_sub, &i); ++ WFIFOW(login_fd,2) = 8+ i*4; ++ if (i > 0) ++ WFIFOSET(login_fd,WFIFOW(login_fd,2)); ++ } ++ return 0; ++} ++ int check_connect_login_server(int tid, unsigned int tick, int id, int data) { if (login_fd <= 0 || session[login_fd] == NULL) { - printf("Attempt to connect to login-server...\n"); -+ ShowInfo("Attempt to connect to login-server...\n");
++ ShowInfo("Attempt to connect to login-server...\n"); login_fd = make_connection(login_ip, login_port); -+ if (login_fd == -1)
-+ { //Try again later... [Skotlex]
-+ login_fd = 0;
-+ return 0;
-+ }
++ if (login_fd == -1) ++ { //Try again later... [Skotlex] ++ login_fd = 0; ++ return 0; ++ } session[login_fd]->func_parse = parse_tologin; realloc_fifo(login_fd, FIFOSIZE_SERVERLINK, FIFOSIZE_SERVERLINK); -+ WFIFOHEAD(login_fd, 86);
++ WFIFOHEAD(login_fd, 86); WFIFOW(login_fd,0) = 0x2710; - memset(WFIFOP(login_fd,2), 0, 24); - memcpy(WFIFOP(login_fd,2), userid, strlen(userid) < 24 ? strlen(userid) : 24); - memset(WFIFOP(login_fd,26), 0, 24); - memcpy(WFIFOP(login_fd,26), passwd, strlen(passwd) < 24 ? strlen(passwd) : 24); -+ memcpy(WFIFOP(login_fd,2), userid, 24);
-+ memcpy(WFIFOP(login_fd,26), passwd, 24);
++ memcpy(WFIFOP(login_fd,2), userid, 24); ++ memcpy(WFIFOP(login_fd,26), passwd, 24); WFIFOL(login_fd,50) = 0; WFIFOL(login_fd,54) = char_ip; WFIFOL(login_fd,58) = char_port; @@ -3736,28 +3736,28 @@ WFIFOW(login_fd,80) = 0; WFIFOW(login_fd,82) = char_maintenance; - WFIFOW(login_fd,84) = char_new; -+
-+ WFIFOW(login_fd,84) = char_new_display; //only display (New) if they want to [Kevin]
-+
++ ++ WFIFOW(login_fd,84) = char_new_display; //only display (New) if they want to [Kevin] ++ WFIFOSET(login_fd,86); } return 0; } -+//------------------------------------------------
-+//Invoked 15 seconds after mapif_disconnectplayer in case the map server doesn't
-+//replies/disconnect the player we tried to kick. [Skotlex]
-+//------------------------------------------------
-+static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int data)
-+{
-+ struct online_char_data* character;
-+ if ((character = idb_get(online_char_db, id)) != NULL && character->waiting_disconnect)
-+ { //Mark it offline due to timeout.
-+ set_char_offline(character->char_id, character->account_id);
-+ }
-+ return 0;
-+}
-+
++//------------------------------------------------ ++//Invoked 15 seconds after mapif_disconnectplayer in case the map server doesn't ++//replies/disconnect the player we tried to kick. [Skotlex] ++//------------------------------------------------ ++static int chardb_waiting_disconnect(int tid, unsigned int tick, int id, int data) ++{ ++ struct online_char_data* character; ++ if ((character = idb_get(online_char_db, id)) != NULL && character->waiting_disconnect) ++ { //Mark it offline due to timeout. ++ set_char_offline(character->char_id, character->account_id); ++ } ++ return 0; ++} ++ //---------------------------------------------------------- // Return numerical value of a switch configuration by [Yor] // on/off, english, français, deutsch, español @@ -3773,11 +3773,11 @@ - struct hostent * h = NULL; - char line[1024], w1[1024], w2[1024]; - FILE *fp; -+//----------------------------------
-+// Reading Lan Support configuration
-+// Rewrote: Anvanced subnet check [LuzZza]
-+//----------------------------------
-+int char_lan_config_read(const char *lancfgName) {
++//---------------------------------- ++// Reading Lan Support configuration ++// Rewrote: Anvanced subnet check [LuzZza] ++//---------------------------------- ++int char_lan_config_read(const char *lancfgName) { - // set default configuration - strncpy(lan_map_ip, "127.0.0.1", sizeof(lan_map_ip)); @@ -3789,31 +3789,31 @@ - subnetmaski[j] = 255; - - fp = fopen(lancfgName, "r"); -+ FILE *fp;
-+ int line_num = 0;
-+ char line[1024], w1[64], w2[64], w3[64], w4[64], w5[64];
++ FILE *fp; ++ int line_num = 0; ++ char line[1024], w1[64], w2[64], w3[64], w4[64], w5[64]; - if (fp == NULL) { - printf("LAN support configuration file not found: %s\n", lancfgName); -+ if((fp = fopen(lancfgName, "r")) == NULL) {
-+ ShowWarning("LAN Support configuration file is not found: %s\n", lancfgName);
++ if((fp = fopen(lancfgName, "r")) == NULL) { ++ ShowWarning("LAN Support configuration file is not found: %s\n", lancfgName); return 1; } - printf ("---start reading of Lan Support configuration...\n"); -+ ShowInfo("Reading the configuration file %s...\n", lancfgName);
++ ShowInfo("Reading the configuration file %s...\n", lancfgName); while(fgets(line, sizeof(line)-1, fp)) { - if (line[0] == '/' && line[1] == '/') -+
-+ line_num++;
-+ if ((line[0] == '/' && line[1] == '/') || line[0] == '\n' || line[1] == '\n')
++ ++ line_num++; ++ if ((line[0] == '/' && line[1] == '/') || line[0] == '\n' || line[1] == '\n') continue; line[sizeof(line)-1] = '\0'; - if (sscanf(line, "%[^:]: %[^\r\n]", w1, w2) != 2) - continue; -+ if(sscanf(line,"%[^:]: %[^/]/%[^:]:%[^:]:%[^\r\n]", w1, w2, w3, w4, w5) != 5) {
++ if(sscanf(line,"%[^:]: %[^/]/%[^:]:%[^:]:%[^\r\n]", w1, w2, w3, w4, w5) != 5) { - remove_control_chars(w1); - remove_control_chars(w2); @@ -3849,8 +3849,8 @@ - } - printf("Sub-network mask of the map-server: %d.%d.%d.%d.\n", subnetmaski[0], subnetmaski[1], subnetmaski[2], subnetmaski[3]); - } -+ ShowWarning("Error syntax of configuration file %s in line %d.\n", lancfgName, line_num);
-+ continue;
++ ShowWarning("Error syntax of configuration file %s in line %d.\n", lancfgName, line_num); ++ continue; } - fclose(fp); @@ -3864,27 +3864,27 @@ - if (lan_ip_check(p) == 0) { - printf("\033[1;31m***ERROR: LAN IP of the map-server doesn't belong to the specified Sub-network.\033[0m\n"); - } -+ remove_control_chars((unsigned char *)w1);
-+ remove_control_chars((unsigned char *)w2);
-+ remove_control_chars((unsigned char *)w3);
-+ remove_control_chars((unsigned char *)w4);
-+ remove_control_chars((unsigned char *)w5);
-+
-+ if(strcmpi(w1, "subnet") == 0) {
-+
-+ subnet[subnet_count].subnet = inet_addr(w2);
-+ subnet[subnet_count].mask = inet_addr(w3);
-+ subnet[subnet_count].char_ip = inet_addr(w4);
-+ subnet[subnet_count].map_ip = inet_addr(w5);
-+
-+ subnet_count++;
++ remove_control_chars((unsigned char *)w1); ++ remove_control_chars((unsigned char *)w2); ++ remove_control_chars((unsigned char *)w3); ++ remove_control_chars((unsigned char *)w4); ++ remove_control_chars((unsigned char *)w5); ++ ++ if(strcmpi(w1, "subnet") == 0) { ++ ++ subnet[subnet_count].subnet = inet_addr(w2); ++ subnet[subnet_count].mask = inet_addr(w3); ++ subnet[subnet_count].char_ip = inet_addr(w4); ++ subnet[subnet_count].map_ip = inet_addr(w5); ++ ++ subnet_count++; } - printf("---End reading of Lan Support configuration...\n"); -+ ShowStatus("Information about %d subnetworks readen.\n", subnet_count);
-+ }
++ ShowStatus("Information about %d subnetworks readen.\n", subnet_count); ++ } -+ fclose(fp);
++ fclose(fp); return 0; } @@ -3893,11 +3893,11 @@ if (fp == NULL) { - printf("Configuration file not found: %s.\n", cfgName); -+ ShowFatalError("Configuration file not found: %s.\n", cfgName);
++ ShowFatalError("Configuration file not found: %s.\n", cfgName); exit(1); } -+ ShowInfo("Reading configuration file %s...\n", cfgName);
++ ShowInfo("Reading configuration file %s...\n", cfgName); while(fgets(line, sizeof(line)-1, fp)) { if (line[0] == '/' && line[1] == '/') continue; @@ -3909,95 +3909,95 @@ - remove_control_chars(w2); - if (strcmpi(w1, "userid") == 0) { - memcpy(userid, w2, 24); -+ remove_control_chars((unsigned char *)w1);
-+ remove_control_chars((unsigned char *)w2);
-+ if(strcmpi(w1,"timestamp_format") == 0) {
-+ strncpy(timestamp_format, w2, 20);
-+ } else if(strcmpi(w1,"console_silent")==0){
-+ msg_silent = 0; //To always allow the next line to show up.
-+ ShowInfo("Console Silent Setting: %d\n", atoi(w2));
-+ msg_silent = atoi(w2);
-+ } else if (strcmpi(w1, "userid") == 0) {
-+ strncpy(userid, w2, 24);
++ remove_control_chars((unsigned char *)w1); ++ remove_control_chars((unsigned char *)w2); ++ if(strcmpi(w1,"timestamp_format") == 0) { ++ strncpy(timestamp_format, w2, 20); ++ } else if(strcmpi(w1,"console_silent")==0){ ++ msg_silent = 0; //To always allow the next line to show up. ++ ShowInfo("Console Silent Setting: %d\n", atoi(w2)); ++ msg_silent = atoi(w2); ++ } else if (strcmpi(w1, "userid") == 0) { ++ strncpy(userid, w2, 24); } else if (strcmpi(w1, "passwd") == 0) { - memcpy(passwd, w2, 24); -+ strncpy(passwd, w2, 24);
++ strncpy(passwd, w2, 24); } else if (strcmpi(w1, "server_name") == 0) { memcpy(server_name, w2, sizeof(server_name)); server_name[sizeof(server_name) - 1] = '\0'; - printf("%s server has been intialized\n", w2); -+ ShowStatus("%s server has been initialized\n", w2);
++ ShowStatus("%s server has been initialized\n", w2); } else if (strcmpi(w1, "wisp_server_name") == 0) { if (strlen(w2) >= 4) { memcpy(wisp_server_name, w2, sizeof(wisp_server_name)); wisp_server_name[sizeof(wisp_server_name) - 1] = '\0'; } } else if (strcmpi(w1, "login_ip") == 0) { -+ login_ip_set_ = 1;
++ login_ip_set_ = 1; h = gethostbyname(w2); if (h != NULL) { - printf("Login server IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); -+ ShowStatus("Login server IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]);
++ ShowStatus("Login server IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); sprintf(login_ip_str, "%d.%d.%d.%d", (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); } else memcpy(login_ip_str, w2, 16); } else if (strcmpi(w1, "login_port") == 0) { login_port = atoi(w2); } else if (strcmpi(w1, "char_ip") == 0) { -+ char_ip_set_ = 1;
++ char_ip_set_ = 1; h = gethostbyname(w2); if (h != NULL) { - printf("Character server IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); -+ ShowStatus("Character server IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]);
++ ShowStatus("Character server IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); sprintf(char_ip_str, "%d.%d.%d.%d", (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); } else memcpy(char_ip_str, w2, 16); -+ } else if (strcmpi(w1, "bind_ip") == 0) {
-+ bind_ip_set_ = 1;
-+ h = gethostbyname(w2);
-+ if (h != NULL) {
-+ ShowStatus("Character server binding IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]);
-+ sprintf(bind_ip_str, "%d.%d.%d.%d", (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]);
-+ } else
-+ memcpy(bind_ip_str, w2, 16);
++ } else if (strcmpi(w1, "bind_ip") == 0) { ++ bind_ip_set_ = 1; ++ h = gethostbyname(w2); ++ if (h != NULL) { ++ ShowStatus("Character server binding IP address : %s -> %d.%d.%d.%d\n", w2, (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); ++ sprintf(bind_ip_str, "%d.%d.%d.%d", (unsigned char)h->h_addr[0], (unsigned char)h->h_addr[1], (unsigned char)h->h_addr[2], (unsigned char)h->h_addr[3]); ++ } else ++ memcpy(bind_ip_str, w2, 16); } else if (strcmpi(w1, "char_port") == 0) { char_port = atoi(w2); } else if (strcmpi(w1, "char_maintenance") == 0) { char_maintenance = atoi(w2); } else if (strcmpi(w1, "char_new") == 0) { char_new = atoi(w2); -+ } else if (strcmpi(w1, "char_new_display") == 0) {
-+ char_new_display = atoi(w2);
++ } else if (strcmpi(w1, "char_new_display") == 0) { ++ char_new_display = atoi(w2); } else if (strcmpi(w1, "email_creation") == 0) { email_creation = config_switch(w2); } else if (strcmpi(w1, "char_txt") == 0) { strcpy(char_txt, w2); -+ } else if (strcmpi(w1, "scdata_txt") == 0) { //By Skotlex
-+ strcpy(scdata_txt, w2);
++ } else if (strcmpi(w1, "scdata_txt") == 0) { //By Skotlex ++ strcpy(scdata_txt, w2); } else if (strcmpi(w1, "backup_txt") == 0) { //By zanetheinsane strcpy(backup_txt, w2); -+ } else if (strcmpi(w1, "friends_txt") == 0) { //By davidsiaw
-+ strcpy(friends_txt, w2);
++ } else if (strcmpi(w1, "friends_txt") == 0) { //By davidsiaw ++ strcpy(friends_txt, w2); } else if (strcmpi(w1, "backup_txt_flag") == 0) { // The backup_txt file was created because char deletion bug existed. Now it's finish and that take a lot of time to create a second file when there are a lot of characters. By [Yor] backup_txt_flag = config_switch(w2); } else if (strcmpi(w1, "max_connect_user") == 0) { max_connect_user = atoi(w2); if (max_connect_user < 0) max_connect_user = 0; // unlimited online players -+ } else if(strcmpi(w1, "gm_allow_level") == 0) {
-+ gm_allow_level = atoi(w2);
-+ if(gm_allow_level < 0)
-+ gm_allow_level = 99;
++ } else if(strcmpi(w1, "gm_allow_level") == 0) { ++ gm_allow_level = atoi(w2); ++ if(gm_allow_level < 0) ++ gm_allow_level = 99; } else if (strcmpi(w1, "check_ip_flag") == 0) { check_ip_flag = config_switch(w2); -+ } else if (strcmpi(w1, "online_check") == 0) {
-+ online_check = config_switch(w2);
++ } else if (strcmpi(w1, "online_check") == 0) { ++ online_check = config_switch(w2); } else if (strcmpi(w1, "autosave_time") == 0) { autosave_interval = atoi(w2)*1000; if (autosave_interval <= 0) autosave_interval = DEFAULT_AUTOSAVE_INTERVAL; -+ } else if (strcmpi(w1, "save_log") == 0) {
-+ save_log = config_switch(w2);
++ } else if (strcmpi(w1, "save_log") == 0) { ++ save_log = config_switch(w2); } else if (strcmpi(w1, "start_point") == 0) { char map[32]; int x, y; @@ -4005,34 +4005,34 @@ continue; if (strstr(map, ".gat") != NULL) { // Verify at least if '.gat' is in the map name - memcpy(start_point.map, map, 16); -+ start_point.map = mapindex_name2id(map);
-+ if (!start_point.map) {
-+ ShowError("Specified start_point %s not found in map-index cache.\n", map);
-+ start_point.map = 0;
-+ }
++ start_point.map = mapindex_name2id(map); ++ if (!start_point.map) { ++ ShowError("Specified start_point %s not found in map-index cache.\n", map); ++ start_point.map = 0; ++ } start_point.x = x; start_point.y = y; } -+ } else if(strcmpi(w1,"log_char")==0) { //log char or not [devil]
-+ log_char = atoi(w2);
++ } else if(strcmpi(w1,"log_char")==0) { //log char or not [devil] ++ log_char = atoi(w2); } else if (strcmpi(w1, "start_zeny") == 0) { start_zeny = atoi(w2); if (start_zeny < 0) start_zeny = 0; } else if (strcmpi(w1, "start_weapon") == 0) { - start_zeny = atoi(w2); -+ start_weapon = atoi(w2);
++ start_weapon = atoi(w2); if (start_weapon < 0) start_weapon = 0; } else if (strcmpi(w1, "start_armor") == 0) { - start_zeny = atoi(w2); -+ start_armor = atoi(w2);
++ start_armor = atoi(w2); if (start_armor < 0) start_armor = 0; } else if (strcmpi(w1, "unknown_char_name") == 0) { strcpy(unknown_char_name, w2); - unknown_char_name[24] = 0; -+ unknown_char_name[NAME_LENGTH-1] = '\0';
++ unknown_char_name[NAME_LENGTH-1] = '\0'; } else if (strcmpi(w1, "char_log_filename") == 0) { strcpy(char_log_filename, w2); } else if (strcmpi(w1, "name_ignoring_case") == 0) { @@ -4046,140 +4046,140 @@ - ANTI_FREEZE_INTERVAL = atoi(w2); - if (ANTI_FREEZE_INTERVAL < 5) - ANTI_FREEZE_INTERVAL = 5; // minimum 5 seconds -+ } else if(strcmpi(w1,"db_path")==0) {
-+ strcpy(db_path,w2);
-+ } else if (strcmpi(w1, "console") == 0) {
-+ if(strcmpi(w2,"on") == 0 || strcmpi(w2,"yes") == 0 )
-+ console = 1;
-+ } else if (strcmpi(w1, "fame_list_alchemist") == 0) {
-+ fame_list_size_chemist = atoi(w2);
-+ if (fame_list_size_chemist > MAX_FAME_LIST) {
-+ ShowWarning("Max fame list size is %d (fame_list_alchemist)\n", MAX_FAME_LIST);
-+ fame_list_size_chemist = MAX_FAME_LIST;
-+ }
-+ } else if (strcmpi(w1, "fame_list_blacksmith") == 0) {
-+ fame_list_size_smith = atoi(w2);
-+ if (fame_list_size_smith > MAX_FAME_LIST) {
-+ ShowWarning("Max fame list size is %d (fame_list_blacksmith)\n", MAX_FAME_LIST);
-+ fame_list_size_smith = MAX_FAME_LIST;
-+ }
-+ } else if (strcmpi(w1, "fame_list_taekwon") == 0) {
-+ fame_list_size_taekwon = atoi(w2);
-+ if (fame_list_size_taekwon > MAX_FAME_LIST) {
-+ ShowWarning("Max fame list size is %d (fame_list_taekwon)\n", MAX_FAME_LIST);
-+ fame_list_size_taekwon = MAX_FAME_LIST;
-+ }
++ } else if(strcmpi(w1,"db_path")==0) { ++ strcpy(db_path,w2); ++ } else if (strcmpi(w1, "console") == 0) { ++ if(strcmpi(w2,"on") == 0 || strcmpi(w2,"yes") == 0 ) ++ console = 1; ++ } else if (strcmpi(w1, "fame_list_alchemist") == 0) { ++ fame_list_size_chemist = atoi(w2); ++ if (fame_list_size_chemist > MAX_FAME_LIST) { ++ ShowWarning("Max fame list size is %d (fame_list_alchemist)\n", MAX_FAME_LIST); ++ fame_list_size_chemist = MAX_FAME_LIST; ++ } ++ } else if (strcmpi(w1, "fame_list_blacksmith") == 0) { ++ fame_list_size_smith = atoi(w2); ++ if (fame_list_size_smith > MAX_FAME_LIST) { ++ ShowWarning("Max fame list size is %d (fame_list_blacksmith)\n", MAX_FAME_LIST); ++ fame_list_size_smith = MAX_FAME_LIST; ++ } ++ } else if (strcmpi(w1, "fame_list_taekwon") == 0) { ++ fame_list_size_taekwon = atoi(w2); ++ if (fame_list_size_taekwon > MAX_FAME_LIST) { ++ ShowWarning("Max fame list size is %d (fame_list_taekwon)\n", MAX_FAME_LIST); ++ fame_list_size_taekwon = MAX_FAME_LIST; ++ } } else if (strcmpi(w1, "import") == 0) { char_config_read(w2); } } fclose(fp); -+ ShowInfo("done reading %s.\n", cfgName);
++ ShowInfo("done reading %s.\n", cfgName); return 0; } -+int chardb_final(int key, void* data, va_list va)
-+{
-+ aFree(data);
-+ return 0;
-+}
++int chardb_final(int key, void* data, va_list va) ++{ ++ aFree(data); ++ return 0; ++} void do_final(void) { - int i; - -+ ShowStatus("Terminating server.\n");
++ ShowStatus("Terminating server.\n"); // write online players files with no player - for(i = 0; i < char_num; i++) - online_chars[i] = -1; -+ online_char_db->clear(online_char_db, NULL); //clean the db...
++ online_char_db->clear(online_char_db, NULL); //clean the db... create_online_files(); - free(online_chars); -+ online_char_db->destroy(online_char_db, NULL); //dispose the db...
++ online_char_db->destroy(online_char_db, NULL); //dispose the db... mmo_char_sync(); inter_save(); -+ set_all_offline();
++ set_all_offline(); - if (gm_account != NULL) - free(gm_account); -+ if(gm_account) aFree(gm_account);
-+ if(char_dat) aFree(char_dat);
++ if(gm_account) aFree(gm_account); ++ if(char_dat) aFree(char_dat); - free(char_dat); delete_session(login_fd); delete_session(char_fd); -+#ifdef ENABLE_SC_SAVING
-+ status_final();
-+#endif
-+ inter_final();
-+ mapindex_final();
-+
++#ifdef ENABLE_SC_SAVING ++ status_final(); ++#endif ++ inter_final(); ++ mapindex_final(); ++ char_log("----End of char-server (normal end with closing of all files)." RETCODE); } -+void set_server_type(void)
-+{
-+ SERVER_TYPE = ATHENA_SERVER_CHAR;
-+}
-+
-+static int online_data_cleanup_sub(DBKey key, void *data, va_list ap)
-+{
-+ struct online_char_data *character= (struct online_char_data*)data;
-+ if (character->server == -2) //Unknown server.. set them offline
-+ set_char_offline(character->char_id, character->account_id);
-+ if (character->server < 0)
-+ //Free data from players that have not been online for a while.
-+ db_remove(online_char_db, key);
-+ return 0;
-+}
-+
-+static int online_data_cleanup(int tid, unsigned int tick, int id, int data)
-+{
-+ online_char_db->foreach(online_char_db, online_data_cleanup_sub);
-+ return 0;
-+}
-+
++void set_server_type(void) ++{ ++ SERVER_TYPE = ATHENA_SERVER_CHAR; ++} ++ ++static int online_data_cleanup_sub(DBKey key, void *data, va_list ap) ++{ ++ struct online_char_data *character= (struct online_char_data*)data; ++ if (character->server == -2) //Unknown server.. set them offline ++ set_char_offline(character->char_id, character->account_id); ++ if (character->server < 0) ++ //Free data from players that have not been online for a while. ++ db_remove(online_char_db, key); ++ return 0; ++} ++ ++static int online_data_cleanup(int tid, unsigned int tick, int id, int data) ++{ ++ online_char_db->foreach(online_char_db, online_data_cleanup_sub); ++ return 0; ++} ++ int do_init(int argc, char **argv) { int i; -+ mapindex_init(); //Needed here for the start-point reading.
-+ start_point.map = mapindex_name2id("new_1-1.gat");
-+ char_config_read((argc < 2) ? CHAR_CONF_NAME : argv[1]);
-+ char_lan_config_read((argc > 3) ? argv[3] : LOGIN_LAN_CONF_NAME);
-+
-+ if (strcmp(userid, "s1")==0 && strcmp(passwd, "p1")==0) {
-+ ShowError("Using the default user/password s1/p1 is NOT RECOMMENDED.\n");
-+ ShowNotice("Please edit your save/account.txt file to create a proper inter-server user/password (gender 'S')\n");
-+ ShowNotice("And then change the user/password to use in conf/char_athena.conf (or conf/import/char_conf.txt)\n");
-+ }
-+
++ mapindex_init(); //Needed here for the start-point reading. ++ start_point.map = mapindex_name2id("new_1-1.gat"); ++ char_config_read((argc < 2) ? CHAR_CONF_NAME : argv[1]); ++ char_lan_config_read((argc > 3) ? argv[3] : LOGIN_LAN_CONF_NAME); ++ ++ if (strcmp(userid, "s1")==0 && strcmp(passwd, "p1")==0) { ++ ShowError("Using the default user/password s1/p1 is NOT RECOMMENDED.\n"); ++ ShowNotice("Please edit your save/account.txt file to create a proper inter-server user/password (gender 'S')\n"); ++ ShowNotice("And then change the user/password to use in conf/char_athena.conf (or conf/import/char_conf.txt)\n"); ++ } ++ // a newline in the log... char_log(""); -+ // moved behind char_config_read in case we changed the filename [celest]
++ // moved behind char_config_read in case we changed the filename [celest] char_log("The char-server starting..." RETCODE); - char_config_read((argc < 2) ? CHAR_CONF_NAME : argv[1]); - lan_config_read((argc > 1) ? argv[1] : LOGIN_LAN_CONF_NAME); -+ if ((naddr_ != 0) && (login_ip_set_ == 0 || char_ip_set_ == 0)) {
-+ // The char server should know what IP address it is running on
-+ // - MouseJstr
-+ int localaddr = ntohl(addr_[0]);
-+ unsigned char *ptr = (unsigned char *) &localaddr;
-+ char buf[16];
-+ sprintf(buf, "%d.%d.%d.%d", ptr[0], ptr[1], ptr[2], ptr[3]);;
-+ if (naddr_ != 1)
-+ ShowStatus("Multiple interfaces detected.. using %s as our IP address\n", buf);
-+ else
-+ ShowStatus("Defaulting to %s as our IP address\n", buf);
-+ if (login_ip_set_ == 0)
-+ strcpy(login_ip_str, buf);
-+ if (char_ip_set_ == 0)
-+ strcpy(char_ip_str, buf);
-+
-+ if (ptr[0] == 192 && ptr[1] == 168)
-+ ShowWarning("Firewall detected.. edit lan_support.conf and char_athena.conf\n");
-+ }
++ if ((naddr_ != 0) && (login_ip_set_ == 0 || char_ip_set_ == 0)) { ++ // The char server should know what IP address it is running on ++ // - MouseJstr ++ int localaddr = ntohl(addr_[0]); ++ unsigned char *ptr = (unsigned char *) &localaddr; ++ char buf[16]; ++ sprintf(buf, "%d.%d.%d.%d", ptr[0], ptr[1], ptr[2], ptr[3]);; ++ if (naddr_ != 1) ++ ShowStatus("Multiple interfaces detected.. using %s as our IP address\n", buf); ++ else ++ ShowStatus("Defaulting to %s as our IP address\n", buf); ++ if (login_ip_set_ == 0) ++ strcpy(login_ip_str, buf); ++ if (char_ip_set_ == 0) ++ strcpy(char_ip_str, buf); ++ ++ if (ptr[0] == 192 && ptr[1] == 168) ++ ShowWarning("Firewall detected.. edit lan_support.conf and char_athena.conf\n"); ++ } login_ip = inet_addr(login_ip_str); char_ip = inet_addr(char_ip_str); @@ -4188,12 +4188,12 @@ } - mmo_char_init(); -+ online_char_db = db_alloc(__FILE__,__LINE__,DB_INT,DB_OPT_RELEASE_DATA,sizeof(int));
++ online_char_db = db_alloc(__FILE__,__LINE__,DB_INT,DB_OPT_RELEASE_DATA,sizeof(int)); -+ mmo_char_init();
-+#ifdef ENABLE_SC_SAVING
-+ status_init();
-+#endif
++ mmo_char_init(); ++#ifdef ENABLE_SC_SAVING ++ status_init(); ++#endif update_online = time(NULL); create_online_files(); // update online players files at start of the server @@ -4203,17 +4203,17 @@ set_defaultparse(parse_char); - char_fd = make_listen_port(char_port); -+ if (bind_ip_set_)
-+ char_fd = make_listen_bind(inet_addr(bind_ip_str),char_port);
-+ else
-+ char_fd = make_listen_bind(INADDR_ANY,char_port);
++ if (bind_ip_set_) ++ char_fd = make_listen_bind(inet_addr(bind_ip_str),char_port); ++ else ++ char_fd = make_listen_bind(INADDR_ANY,char_port); add_timer_func_list(check_connect_login_server, "check_connect_login_server"); add_timer_func_list(send_users_tologin, "send_users_tologin"); -+ add_timer_func_list(send_accounts_tologin, "send_accounts_tologin");
++ add_timer_func_list(send_accounts_tologin, "send_accounts_tologin"); add_timer_func_list(mmo_char_sync_timer, "mmo_char_sync_timer"); -+ add_timer_func_list(chardb_waiting_disconnect, "chardb_waiting_disconnect");
-+ add_timer_func_list(online_data_cleanup, "online_data_cleanup");
++ add_timer_func_list(chardb_waiting_disconnect, "chardb_waiting_disconnect"); ++ add_timer_func_list(online_data_cleanup, "online_data_cleanup"); - i = add_timer_interval(gettick() + 1000, check_connect_login_server, 0, 0, 10 * 1000); - i = add_timer_interval(gettick() + 1000, send_users_tologin, 0, 0, 5 * 1000); @@ -4222,21 +4222,21 @@ - if(anti_freeze_enable > 0) { - add_timer_func_list(map_anti_freeze_system, "map_anti_freeze_system"); - i = add_timer_interval(gettick() + 1000, map_anti_freeze_system, 0, 0, ANTI_FREEZE_INTERVAL * 1000); // checks every X seconds user specifies -+ add_timer_interval(gettick() + 600*1000, online_data_cleanup, 0, 0, 600 * 1000);
-+ add_timer_interval(gettick() + 1000, check_connect_login_server, 0, 0, 10 * 1000);
-+ add_timer_interval(gettick() + 1000, send_users_tologin, 0, 0, 5 * 1000);
-+ add_timer_interval(gettick() + 3600*1000, send_accounts_tologin, 0, 0, 3600*1000); //Sync online accounts every hour
-+ add_timer_interval(gettick() + autosave_interval, mmo_char_sync_timer, 0, 0, autosave_interval);
-+
-+ if(console) {
-+ set_defaultconsoleparse(parse_console);
-+ start_console();
++ add_timer_interval(gettick() + 600*1000, online_data_cleanup, 0, 0, 600 * 1000); ++ add_timer_interval(gettick() + 1000, check_connect_login_server, 0, 0, 10 * 1000); ++ add_timer_interval(gettick() + 1000, send_users_tologin, 0, 0, 5 * 1000); ++ add_timer_interval(gettick() + 3600*1000, send_accounts_tologin, 0, 0, 3600*1000); //Sync online accounts every hour ++ add_timer_interval(gettick() + autosave_interval, mmo_char_sync_timer, 0, 0, autosave_interval); ++ ++ if(console) { ++ set_defaultconsoleparse(parse_console); ++ start_console(); } char_log("The char-server is ready (Server is listening on the port %d)." RETCODE, char_port); - printf("The char-server is \033[1;32mready\033[0m (Server is listening on the port %d).\n\n", char_port); -+ ShowStatus("The char-server is "CL_GREEN"ready"CL_RESET" (Server is listening on the port %d).\n\n", char_port);
++ ShowStatus("The char-server is "CL_GREEN"ready"CL_RESET" (Server is listening on the port %d).\n\n", char_port); return 0; } diff --git a/src/char_sql/Makefile b/src/char_sql/Makefile index cefe36e..9c7b5e5 100644 --- a/src/char_sql/Makefile +++ b/src/char_sql/Makefile @@ -1,20 +1,20 @@ -all: char-server_sql
-sql: char-server_sql
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/db.h ../common/malloc.h
-
-char-server_sql: char.o inter.o int_party.o int_guild.o int_storage.o int_pet.o strlib.o itemdb.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $^ $(LIB_S)
-
-char.o: char.c char.h strlib.h itemdb.h
-inter.o: inter.c inter.h int_party.h int_guild.h int_storage.h int_pet.h ../common/mmo.h char.h ../common/socket.h
-int_party.o: int_party.c int_party.h inter.h ../common/mmo.h char.h ../common/socket.h ../common/timer.h ../common/db.h
-int_guild.o: int_guild.c int_guild.h inter.h ../common/mmo.h char.h ../common/socket.h ../common/db.h
-int_storage.o: int_storage.c int_storage.h char.h itemdb.h
-int_pet.o: int_pet.c int_pet.h inter.h char.h ../common/mmo.h ../common/socket.h ../common/db.h
-strlib.o: strlib.c strlib.h
-itemdb.o: itemdb.c itemdb.h ../common/db.h ../common/mmo.h
-
-clean:
- rm -f *.o ../../char-server_sql
+all: char-server_sql +sql: char-server_sql + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/db.h ../common/malloc.h + +char-server_sql: char.o inter.o int_party.o int_guild.o int_storage.o int_pet.o strlib.o itemdb.o $(COMMON_OBJ) + $(CC) -o ../../$@ $^ $(LIB_S) + +char.o: char.c char.h strlib.h itemdb.h +inter.o: inter.c inter.h int_party.h int_guild.h int_storage.h int_pet.h ../common/mmo.h char.h ../common/socket.h +int_party.o: int_party.c int_party.h inter.h ../common/mmo.h char.h ../common/socket.h ../common/timer.h ../common/db.h +int_guild.o: int_guild.c int_guild.h inter.h ../common/mmo.h char.h ../common/socket.h ../common/db.h +int_storage.o: int_storage.c int_storage.h char.h itemdb.h +int_pet.o: int_pet.c int_pet.h inter.h char.h ../common/mmo.h ../common/socket.h ../common/db.h +strlib.o: strlib.c strlib.h +itemdb.o: itemdb.c itemdb.h ../common/db.h ../common/mmo.h + +clean: + rm -f *.o ../../char-server_sql diff --git a/src/common/GNUmakefile b/src/common/GNUmakefile index 689ac3b..b5b8f7c 100644 --- a/src/common/GNUmakefile +++ b/src/common/GNUmakefile @@ -1,13 +1,13 @@ -txt sql all: core.o socket.o timer.o grfio.o db.o lock.o nullpo.o malloc.o
-
-core.o: core.c core.h
-socket.o: socket.c socket.h mmo.h
-timer.o: timer.c timer.h
-grfio.o: grfio.c grfio.h
-db.o: db.c db.h
-lock.o: lock.h
-nullpo.o: nullpo.c nullpo.h
-malloc.o: malloc.c malloc.h
-
-clean:
- rm -f *.o
+txt sql all: core.o socket.o timer.o grfio.o db.o lock.o nullpo.o malloc.o + +core.o: core.c core.h +socket.o: socket.c socket.h mmo.h +timer.o: timer.c timer.h +grfio.o: grfio.c grfio.h +db.o: db.c db.h +lock.o: lock.h +nullpo.o: nullpo.c nullpo.h +malloc.o: malloc.c malloc.h + +clean: + rm -f *.o diff --git a/src/common/Makefile b/src/common/Makefile index 689ac3b..b5b8f7c 100644 --- a/src/common/Makefile +++ b/src/common/Makefile @@ -1,13 +1,13 @@ -txt sql all: core.o socket.o timer.o grfio.o db.o lock.o nullpo.o malloc.o
-
-core.o: core.c core.h
-socket.o: socket.c socket.h mmo.h
-timer.o: timer.c timer.h
-grfio.o: grfio.c grfio.h
-db.o: db.c db.h
-lock.o: lock.h
-nullpo.o: nullpo.c nullpo.h
-malloc.o: malloc.c malloc.h
-
-clean:
- rm -f *.o
+txt sql all: core.o socket.o timer.o grfio.o db.o lock.o nullpo.o malloc.o + +core.o: core.c core.h +socket.o: socket.c socket.h mmo.h +timer.o: timer.c timer.h +grfio.o: grfio.c grfio.h +db.o: db.c db.h +lock.o: lock.h +nullpo.o: nullpo.c nullpo.h +malloc.o: malloc.c malloc.h + +clean: + rm -f *.o diff --git a/src/ladmin/GNUmakefile b/src/ladmin/GNUmakefile index ce19d9d..768626f 100644 --- a/src/ladmin/GNUmakefile +++ b/src/ladmin/GNUmakefile @@ -1,14 +1,14 @@ -all: ladmin
-txt: ladmin
-sql: ladmin
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/malloc.h
-
-ladmin: ladmin.o md5calc.o $(COMMON_OBJ)
- $(CC) -o ../../$@ ladmin.o md5calc.o $(COMMON_OBJ)
-ladmin.o: ladmin.c ladmin.h md5calc.h $(COMMON_H)
-md5calc.o: md5calc.c md5calc.h
-
-clean:
- rm -f *.o ../../ladmin
+all: ladmin +txt: ladmin +sql: ladmin + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/malloc.h + +ladmin: ladmin.o md5calc.o $(COMMON_OBJ) + $(CC) -o ../../$@ ladmin.o md5calc.o $(COMMON_OBJ) +ladmin.o: ladmin.c ladmin.h md5calc.h $(COMMON_H) +md5calc.o: md5calc.c md5calc.h + +clean: + rm -f *.o ../../ladmin diff --git a/src/ladmin/Makefile b/src/ladmin/Makefile index ce19d9d..768626f 100644 --- a/src/ladmin/Makefile +++ b/src/ladmin/Makefile @@ -1,14 +1,14 @@ -all: ladmin
-txt: ladmin
-sql: ladmin
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/malloc.h
-
-ladmin: ladmin.o md5calc.o $(COMMON_OBJ)
- $(CC) -o ../../$@ ladmin.o md5calc.o $(COMMON_OBJ)
-ladmin.o: ladmin.c ladmin.h md5calc.h $(COMMON_H)
-md5calc.o: md5calc.c md5calc.h
-
-clean:
- rm -f *.o ../../ladmin
+all: ladmin +txt: ladmin +sql: ladmin + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/malloc.h + +ladmin: ladmin.o md5calc.o $(COMMON_OBJ) + $(CC) -o ../../$@ ladmin.o md5calc.o $(COMMON_OBJ) +ladmin.o: ladmin.c ladmin.h md5calc.h $(COMMON_H) +md5calc.o: md5calc.c md5calc.h + +clean: + rm -f *.o ../../ladmin diff --git a/src/login/GNUmakefile b/src/login/GNUmakefile index df6cb21..d807238 100644 --- a/src/login/GNUmakefile +++ b/src/login/GNUmakefile @@ -1,13 +1,13 @@ -all: login-server
-txt: login-server
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/lock.h ../common/malloc.h
-
-login-server: login.o md5calc.o $(COMMON_OBJ)
- $(CC) -o ../../$@ login.o md5calc.o $(COMMON_OBJ)
-login.o: login.c login.h md5calc.h $(COMMON_H)
-md5calc.o: md5calc.c md5calc.h
-
-clean:
- rm -f *.o ../../login-server
+all: login-server +txt: login-server + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/lock.h ../common/malloc.h + +login-server: login.o md5calc.o $(COMMON_OBJ) + $(CC) -o ../../$@ login.o md5calc.o $(COMMON_OBJ) +login.o: login.c login.h md5calc.h $(COMMON_H) +md5calc.o: md5calc.c md5calc.h + +clean: + rm -f *.o ../../login-server diff --git a/src/login/Makefile b/src/login/Makefile index df6cb21..d807238 100644 --- a/src/login/Makefile +++ b/src/login/Makefile @@ -1,13 +1,13 @@ -all: login-server
-txt: login-server
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/lock.h ../common/malloc.h
-
-login-server: login.o md5calc.o $(COMMON_OBJ)
- $(CC) -o ../../$@ login.o md5calc.o $(COMMON_OBJ)
-login.o: login.c login.h md5calc.h $(COMMON_H)
-md5calc.o: md5calc.c md5calc.h
-
-clean:
- rm -f *.o ../../login-server
+all: login-server +txt: login-server + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/lock.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/lock.h ../common/malloc.h + +login-server: login.o md5calc.o $(COMMON_OBJ) + $(CC) -o ../../$@ login.o md5calc.o $(COMMON_OBJ) +login.o: login.c login.h md5calc.h $(COMMON_H) +md5calc.o: md5calc.c md5calc.h + +clean: + rm -f *.o ../../login-server diff --git a/src/login_sql/Makefile b/src/login_sql/Makefile index d1f2734..c245b79 100644 --- a/src/login_sql/Makefile +++ b/src/login_sql/Makefile @@ -1,17 +1,17 @@ -all: login-server_sql
-sql: login-server_sql
-
-shared_libs=all
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o
-COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/malloc.h
-
-login-server_sql: login.o md5calc.o strlib.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $^ $(LIB_S)
-
-login.o: login.c login.h md5calc.h strlib.h $(COMMON_H)
-md5calc.o: md5calc.c md5calc.h
-strlib.o: strlib.c strlib.h
-
-clean:
- rm -f *.o ../../login-server_sql
-
+all: login-server_sql +sql: login-server_sql + +shared_libs=all +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/db.o ../common/malloc.o +COMMON_H = ../common/core.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h ../common/db.h ../common/malloc.h + +login-server_sql: login.o md5calc.o strlib.o $(COMMON_OBJ) + $(CC) -o ../../$@ $^ $(LIB_S) + +login.o: login.c login.h md5calc.h strlib.h $(COMMON_H) +md5calc.o: md5calc.c md5calc.h +strlib.o: strlib.c strlib.h + +clean: + rm -f *.o ../../login-server_sql + diff --git a/src/map/GNUmakefile b/src/map/GNUmakefile index 4597c6d..a2bbb63 100644 --- a/src/map/GNUmakefile +++ b/src/map/GNUmakefile @@ -1,87 +1,87 @@ -LEX=flex
-BISON=bison
-
-all: txt sql
-
-txt: txtobj map-server
-
-sql: sqlobj map-server_sql
-
-txtobj:
- mkdir txtobj
-
-sqlobj:
- mkdir sqlobj
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/grfio.o ../common/db.o ../common/lock.o ../common/nullpo.o ../common/malloc.o
-LIBS = -lz -lm
-
-map-server: txtobj/magic-interpreter-lexer.o txtobj/magic-interpreter-parser.o txtobj/magic-interpreter-base.o txtobj/magic-expr.o txtobj/magic-stmt.o txtobj/magic.o txtobj/map.o txtobj/chrif.o txtobj/clif.o txtobj/pc.o txtobj/npc.o txtobj/chat.o txtobj/path.o txtobj/itemdb.o txtobj/mob.o txtobj/script.o txtobj/storage.o txtobj/skill.o txtobj/atcommand.o txtobj/battle.o txtobj/intif.o txtobj/trade.o txtobj/party.o txtobj/vending.o txtobj/guild.o txtobj/pet.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $^ $(LIBS)
-
-map-server_sql: sqlobj/map.o sqlobj/chrif.o sqlobj/clif.o sqlobj/pc.o sqlobj/npc.o sqlobj/chat.o sqlobj/path.o sqlobj/itemdb.o sqlobj/mob.o sqlobj/script.o sqlobj/storage.o sqlobj/skill.o sqlobj/atcommand.o sqlobj/battle.o sqlobj/intif.o sqlobj/trade.o sqlobj/party.o sqlobj/vending.o sqlobj/guild.o sqlobj/pet.o sqlobj/mail.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $^ $(LIB_S)
-
-txtobj/%.o: %.c
- $(COMPILE.c) -DTXT_ONLY $(OUTPUT_OPTION) $<
-
-sqlobj/%.o: %.c
- $(COMPILE.c) $(OUTPUT_OPTION) $<
-
-magic-interpreter-lexer.c: magic-interpreter.l
- $(LEX) -o magic-interpreter-lexer.c magic-interpreter.l
-
-magic-interpreter-parser.c: magic-interpreter-parser.y
- $(BISON) -v -d -o magic-interpreter-parser.c magic-interpreter-parser.y
-
-txtobj/magic-interpreter-lexer.o: magic-interpreter-lexer.c magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-interpreter-parser.o: magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-interpreter-base.o: magic-interpreter-base.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-expr.o: magic-expr.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-stmt.o: magic-stmt.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic.o: magic.c magic.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/clif.o: magic.h clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h
-txtobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h
-txtobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h
-txtobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h
-txtobj/path.o: path.c map.h battle.h ../common/mmo.h
-txtobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h
-txtobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h
-txtobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h
-txtobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h
-txtobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h
-txtobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h
-txtobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h
-txtobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h
-txtobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-
-sqlobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-sqlobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/clif.o: clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h
-sqlobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h
-sqlobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h
-sqlobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h
-sqlobj/path.o: path.c map.h battle.h ../common/mmo.h
-sqlobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h
-sqlobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h
-sqlobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h
-sqlobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h
-sqlobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h
-sqlobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h
-sqlobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h
-sqlobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h
-sqlobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h
-sqlobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/mail.o: mail.c mail.h
-
-clean:
- rm -rf *.o ../../map-server ../../map-server_sql sqlobj txtobj
+LEX=flex +BISON=bison + +all: txt sql + +txt: txtobj map-server + +sql: sqlobj map-server_sql + +txtobj: + mkdir txtobj + +sqlobj: + mkdir sqlobj + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/grfio.o ../common/db.o ../common/lock.o ../common/nullpo.o ../common/malloc.o +LIBS = -lz -lm + +map-server: txtobj/magic-interpreter-lexer.o txtobj/magic-interpreter-parser.o txtobj/magic-interpreter-base.o txtobj/magic-expr.o txtobj/magic-stmt.o txtobj/magic.o txtobj/map.o txtobj/chrif.o txtobj/clif.o txtobj/pc.o txtobj/npc.o txtobj/chat.o txtobj/path.o txtobj/itemdb.o txtobj/mob.o txtobj/script.o txtobj/storage.o txtobj/skill.o txtobj/atcommand.o txtobj/battle.o txtobj/intif.o txtobj/trade.o txtobj/party.o txtobj/vending.o txtobj/guild.o txtobj/pet.o $(COMMON_OBJ) + $(CC) -o ../../$@ $^ $(LIBS) + +map-server_sql: sqlobj/map.o sqlobj/chrif.o sqlobj/clif.o sqlobj/pc.o sqlobj/npc.o sqlobj/chat.o sqlobj/path.o sqlobj/itemdb.o sqlobj/mob.o sqlobj/script.o sqlobj/storage.o sqlobj/skill.o sqlobj/atcommand.o sqlobj/battle.o sqlobj/intif.o sqlobj/trade.o sqlobj/party.o sqlobj/vending.o sqlobj/guild.o sqlobj/pet.o sqlobj/mail.o $(COMMON_OBJ) + $(CC) -o ../../$@ $^ $(LIB_S) + +txtobj/%.o: %.c + $(COMPILE.c) -DTXT_ONLY $(OUTPUT_OPTION) $< + +sqlobj/%.o: %.c + $(COMPILE.c) $(OUTPUT_OPTION) $< + +magic-interpreter-lexer.c: magic-interpreter.l + $(LEX) -o magic-interpreter-lexer.c magic-interpreter.l + +magic-interpreter-parser.c: magic-interpreter-parser.y + $(BISON) -v -d -o magic-interpreter-parser.c magic-interpreter-parser.y + +txtobj/magic-interpreter-lexer.o: magic-interpreter-lexer.c magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-interpreter-parser.o: magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-interpreter-base.o: magic-interpreter-base.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-expr.o: magic-expr.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-stmt.o: magic-stmt.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic.o: magic.c magic.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/clif.o: magic.h clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h +txtobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h +txtobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h +txtobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h +txtobj/path.o: path.c map.h battle.h ../common/mmo.h +txtobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h +txtobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h +txtobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h +txtobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h +txtobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h +txtobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h +txtobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h +txtobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h +txtobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h + +sqlobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +sqlobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/clif.o: clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h +sqlobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h +sqlobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h +sqlobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h +sqlobj/path.o: path.c map.h battle.h ../common/mmo.h +sqlobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h +sqlobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h +sqlobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h +sqlobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h +sqlobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h +sqlobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h +sqlobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h +sqlobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h +sqlobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h +sqlobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/mail.o: mail.c mail.h + +clean: + rm -rf *.o ../../map-server ../../map-server_sql sqlobj txtobj diff --git a/src/map/Makefile b/src/map/Makefile index 70fc049..89ef2c2 100644 --- a/src/map/Makefile +++ b/src/map/Makefile @@ -1,87 +1,87 @@ -LEX=flex
-BISON=bison
-
-all: txt sql
-
-txt: txtobj map-server
-
-sql: sqlobj map-server_sql
-
-txtobj:
- mkdir txtobj
-
-sqlobj:
- mkdir sqlobj
-
-COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/grfio.o ../common/db.o ../common/lock.o ../common/nullpo.o ../common/malloc.o
-LIBS = -lz -lm
-
-map-server: txtobj/magic-interpreter-lexer.o txtobj/magic-interpreter-parser.o txtobj/magic-interpreter-base.o txtobj/magic-expr.o txtobj/magic-stmt.o txtobj/magic.o txtobj/map.o txtobj/chrif.o txtobj/clif.o txtobj/pc.o txtobj/npc.o txtobj/chat.o txtobj/path.o txtobj/itemdb.o txtobj/mob.o txtobj/script.o txtobj/storage.o txtobj/skill.o txtobj/atcommand.o txtobj/battle.o txtobj/intif.o txtobj/trade.o txtobj/party.o txtobj/vending.o txtobj/guild.o txtobj/pet.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $> $(LIBS)
-
-map-server_sql: sqlobj/map.o sqlobj/chrif.o sqlobj/clif.o sqlobj/pc.o sqlobj/npc.o sqlobj/chat.o sqlobj/path.o sqlobj/itemdb.o sqlobj/mob.o sqlobj/script.o sqlobj/storage.o sqlobj/skill.o sqlobj/atcommand.o sqlobj/battle.o sqlobj/intif.o sqlobj/trade.o sqlobj/party.o sqlobj/vending.o sqlobj/guild.o sqlobj/pet.o sqlobj/mail.o $(COMMON_OBJ)
- $(CC) -o ../../$@ $> $(LIB_S)
-
-txtobj/%.o: %.c
- $(COMPILE.c) -DTXT_ONLY $(OUTPUT_OPTION) $<
-
-sqlobj/%.o: %.c
- $(COMPILE.c) $(OUTPUT_OPTION) $<
-
-magic-interpreter-lexer.c: magic-interpreter.l
- $(LEX) -o magic-interpreter-lexer.c magic-interpreter.l
-
-magic-interpreter-parser.c: magic-interpreter-parser.y
- $(BISON) -v -d -o magic-interpreter-parser.c magic-interpreter-parser.y
-
-txtobj/magic-interpreter-lexer.o: magic-interpreter-lexer.c magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-interpreter-parser.o: magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-interpreter-base.o: magic-interpreter-base.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-expr.o: magic-expr.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic-stmt.o: magic-stmt.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/magic.o: magic.c magic.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/clif.o: magic.h clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h
-txtobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h
-txtobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h
-txtobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h
-txtobj/path.o: path.c map.h battle.h ../common/mmo.h
-txtobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h
-txtobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h
-txtobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h
-txtobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h
-txtobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h
-txtobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h
-txtobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h
-txtobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h
-txtobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h
-txtobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-txtobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-
-sqlobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h
-sqlobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/clif.o: clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h
-sqlobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h
-sqlobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h
-sqlobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h
-sqlobj/path.o: path.c map.h battle.h ../common/mmo.h
-sqlobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h
-sqlobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h
-sqlobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h
-sqlobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h
-sqlobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h
-sqlobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h
-sqlobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h
-sqlobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h
-sqlobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h
-sqlobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h
-sqlobj/mail.o: mail.c mail.h
-
-clean:
- rm -rf *.o ../../map-server ../../map-server_sql sqlobj txtobj
+LEX=flex +BISON=bison + +all: txt sql + +txt: txtobj map-server + +sql: sqlobj map-server_sql + +txtobj: + mkdir txtobj + +sqlobj: + mkdir sqlobj + +COMMON_OBJ = ../common/core.o ../common/socket.o ../common/timer.o ../common/grfio.o ../common/db.o ../common/lock.o ../common/nullpo.o ../common/malloc.o +LIBS = -lz -lm + +map-server: txtobj/magic-interpreter-lexer.o txtobj/magic-interpreter-parser.o txtobj/magic-interpreter-base.o txtobj/magic-expr.o txtobj/magic-stmt.o txtobj/magic.o txtobj/map.o txtobj/chrif.o txtobj/clif.o txtobj/pc.o txtobj/npc.o txtobj/chat.o txtobj/path.o txtobj/itemdb.o txtobj/mob.o txtobj/script.o txtobj/storage.o txtobj/skill.o txtobj/atcommand.o txtobj/battle.o txtobj/intif.o txtobj/trade.o txtobj/party.o txtobj/vending.o txtobj/guild.o txtobj/pet.o $(COMMON_OBJ) + $(CC) -o ../../$@ $> $(LIBS) + +map-server_sql: sqlobj/map.o sqlobj/chrif.o sqlobj/clif.o sqlobj/pc.o sqlobj/npc.o sqlobj/chat.o sqlobj/path.o sqlobj/itemdb.o sqlobj/mob.o sqlobj/script.o sqlobj/storage.o sqlobj/skill.o sqlobj/atcommand.o sqlobj/battle.o sqlobj/intif.o sqlobj/trade.o sqlobj/party.o sqlobj/vending.o sqlobj/guild.o sqlobj/pet.o sqlobj/mail.o $(COMMON_OBJ) + $(CC) -o ../../$@ $> $(LIB_S) + +txtobj/%.o: %.c + $(COMPILE.c) -DTXT_ONLY $(OUTPUT_OPTION) $< + +sqlobj/%.o: %.c + $(COMPILE.c) $(OUTPUT_OPTION) $< + +magic-interpreter-lexer.c: magic-interpreter.l + $(LEX) -o magic-interpreter-lexer.c magic-interpreter.l + +magic-interpreter-parser.c: magic-interpreter-parser.y + $(BISON) -v -d -o magic-interpreter-parser.c magic-interpreter-parser.y + +txtobj/magic-interpreter-lexer.o: magic-interpreter-lexer.c magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-interpreter-parser.o: magic-interpreter-parser.c magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-interpreter-base.o: magic-interpreter-base.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-expr.o: magic-expr.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic-stmt.o: magic-stmt.c magic-expr-eval.h magic-interpreter-aux.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/magic.o: magic.c magic.h magic-expr.h magic-interpreter.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/clif.o: magic.h clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h +txtobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h +txtobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h +txtobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h +txtobj/path.o: path.c map.h battle.h ../common/mmo.h +txtobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h +txtobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h +txtobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h +txtobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h +txtobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h +txtobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h +txtobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h +txtobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h +txtobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h +txtobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +txtobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h + +sqlobj/map.o: map.c map.h chrif.h clif.h npc.h pc.h mob.h chat.h skill.h itemdb.h storage.h party.h pet.h atcommand.h ../common/core.h ../common/timer.h ../common/db.h ../common/grfio.h ../common/mmo.h +sqlobj/chrif.o: chrif.c map.h battle.h chrif.h clif.h intif.h pc.h npc.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/clif.o: clif.c map.h chrif.h clif.h mob.h intif.h pc.h npc.h itemdb.h chat.h script.h storage.h party.h guild.h atcommand.h pet.h atcommand.h ../common/socket.h ../common/timer.h ../common/mmo.h ../common/version.h +sqlobj/pc.o: pc.c map.h clif.h intif.h pc.h npc.h mob.h itemdb.h battle.h skill.h script.h party.h guild.h pet.h trade.h storage.h chat.h vending.h ../common/timer.h ../common/mmo.h ../common/db.h +sqlobj/npc.o: npc.c map.h npc.h clif.h pc.h script.h mob.h itemdb.h battle.h ../common/db.h ../common/timer.h ../common/mmo.h +sqlobj/chat.o: chat.c map.h clif.h pc.h chat.h ../common/db.h ../common/mmo.h +sqlobj/path.o: path.c map.h battle.h ../common/mmo.h +sqlobj/itemdb.o: itemdb.c map.h battle.h itemdb.h ../common/db.h ../common/grfio.h ../common/mmo.h +sqlobj/mob.o: mob.c map.h clif.h intif.h pc.h mob.h skill.h battle.h npc.h itemdb.h ../common/timer.h ../common/socket.h ../common/mmo.h +sqlobj/script.o: script.c itemdb.h map.h pc.h mob.h clif.h intif.h npc.h script.h storage.h skill.h pet.h battle.h ../common/timer.h ../common/socket.h ../common/db.h ../common/mmo.h ../common/lock.h +sqlobj/storage.o: storage.c itemdb.h pc.h clif.h intif.h storage.h guild.h ../common/mmo.h ../common/db.h +sqlobj/skill.o: skill.c skill.h map.h clif.h pc.h mob.h battle.h itemdb.h script.h ../common/timer.h ../common/mmo.h +sqlobj/atcommand.o: atcommand.c atcommand.h itemdb.h pc.h map.h skill.h clif.h mob.h intif.h battle.h storage.h guild.h pet.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/battle.o: battle.c battle.h skill.h map.h mob.h pc.h pet.h guild.h ../common/timer.h ../common/mmo.h +sqlobj/intif.o: intif.c intif.h chrif.h clif.h party.h guild.h storage.h map.h battle.h pet.h ../common/socket.h ../common/mmo.h +sqlobj/trade.o: trade.c trade.h clif.h itemdb.h map.h pc.h npc.h ../common/mmo.h +sqlobj/party.o: party.c party.h clif.h intif.h pc.h map.h battle.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/vending.o: vending.c vending.h clif.h itemdb.h map.h pc.h ../common/mmo.h +sqlobj/guild.o: guild.c guild.h storage.h battle.h clif.h intif.h pc.h npc.h map.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/pet.o: pet.c pet.h map.h clif.h chrif.h intif.h pc.h itemdb.h battle.h mob.h npc.h script.h ../common/db.h ../common/socket.h ../common/timer.h ../common/mmo.h +sqlobj/mail.o: mail.c mail.h + +clean: + rm -rf *.o ../../map-server ../../map-server_sql sqlobj txtobj diff --git a/src/tmw-server.dev b/src/tmw-server.dev index 8098eb2..69fe2e9 100644 --- a/src/tmw-server.dev +++ b/src/tmw-server.dev @@ -1,169 +1,169 @@ -[Project]
-FileName=tmw-server.dev
-Name=tmw-server
-UnitCount=12
-Type=0
-Ver=1
-ObjFiles=
-Includes=
-Libs=
-PrivateResource=
-ResourceIncludes=
-MakeIncludes=
-Compiler=
-CppCompiler=
-Linker=
-IsCpp=1
-Icon=
-ExeOutput=
-ObjectOutput=
-OverrideOutput=0
-OverrideOutputName=
-HostApplication=
-Folders=
-CommandLine=
-UseCustomMakefile=0
-CustomMakefile=
-IncludeVersionInfo=0
-SupportXPThemes=0
-CompilerSet=0
-CompilerSettings=
-
-[Unit1]
-FileName=src\char\char.c
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit2]
-FileName=src\char\char.h
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit3]
-FileName=src\char\int_guild.c
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit4]
-FileName=src\char\int_guild.h
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit5]
-FileName=src\char\int_party.c
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit6]
-FileName=src\char\int_party.h
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit7]
-FileName=src\char\int_pet.c
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit8]
-FileName=src\char\int_pet.h
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit9]
-FileName=src\char\int_storage.c
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit10]
-FileName=src\char\int_storage.h
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit11]
-FileName=src\char\inter.c
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[Unit12]
-FileName=src\char\inter.h
-CompileCpp=1
-Folder=tmw-server
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
-[VersionInfo]
-Major=0
-Minor=1
-Release=1
-Build=1
-LanguageID=1033
-CharsetID=1252
-CompanyName=
-FileVersion=
-FileDescription=Developed using the Dev-C++ IDE
-InternalName=
-LegalCopyright=
-LegalTrademarks=
-OriginalFilename=
-ProductName=
-ProductVersion=
-AutoIncBuildNr=0
-
+[Project] +FileName=tmw-server.dev +Name=tmw-server +UnitCount=12 +Type=0 +Ver=1 +ObjFiles= +Includes= +Libs= +PrivateResource= +ResourceIncludes= +MakeIncludes= +Compiler= +CppCompiler= +Linker= +IsCpp=1 +Icon= +ExeOutput= +ObjectOutput= +OverrideOutput=0 +OverrideOutputName= +HostApplication= +Folders= +CommandLine= +UseCustomMakefile=0 +CustomMakefile= +IncludeVersionInfo=0 +SupportXPThemes=0 +CompilerSet=0 +CompilerSettings= + +[Unit1] +FileName=src\char\char.c +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit2] +FileName=src\char\char.h +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit3] +FileName=src\char\int_guild.c +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit4] +FileName=src\char\int_guild.h +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit5] +FileName=src\char\int_party.c +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit6] +FileName=src\char\int_party.h +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit7] +FileName=src\char\int_pet.c +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit8] +FileName=src\char\int_pet.h +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit9] +FileName=src\char\int_storage.c +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit10] +FileName=src\char\int_storage.h +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit11] +FileName=src\char\inter.c +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[Unit12] +FileName=src\char\inter.h +CompileCpp=1 +Folder=tmw-server +Compile=1 +Link=1 +Priority=1000 +OverrideBuildCmd=0 +BuildCmd= + +[VersionInfo] +Major=0 +Minor=1 +Release=1 +Build=1 +LanguageID=1033 +CharsetID=1252 +CompanyName= +FileVersion= +FileDescription=Developed using the Dev-C++ IDE +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion= +AutoIncBuildNr=0 + diff --git a/src/tmw-server.layout b/src/tmw-server.layout index 6a8b2b4..32cd14a 100644 --- a/src/tmw-server.layout +++ b/src/tmw-server.layout @@ -1,43 +1,43 @@ -[Editor_0]
-CursorCol=23
-CursorRow=94
-TopLine=85
-LeftChar=1
-Open=0
-Top=0
-[Editors]
-Focused=-1
-Order=
-[Editor_1]
-Open=0
-Top=0
-[Editor_2]
-Open=0
-Top=0
-[Editor_3]
-Open=0
-Top=0
-[Editor_4]
-Open=0
-Top=0
-[Editor_5]
-Open=0
-Top=0
-[Editor_6]
-Open=0
-Top=0
-[Editor_7]
-Open=0
-Top=0
-[Editor_8]
-Open=0
-Top=0
-[Editor_9]
-Open=0
-Top=0
-[Editor_10]
-Open=0
-Top=0
-[Editor_11]
-Open=0
-Top=0
+[Editor_0] +CursorCol=23 +CursorRow=94 +TopLine=85 +LeftChar=1 +Open=0 +Top=0 +[Editors] +Focused=-1 +Order= +[Editor_1] +Open=0 +Top=0 +[Editor_2] +Open=0 +Top=0 +[Editor_3] +Open=0 +Top=0 +[Editor_4] +Open=0 +Top=0 +[Editor_5] +Open=0 +Top=0 +[Editor_6] +Open=0 +Top=0 +[Editor_7] +Open=0 +Top=0 +[Editor_8] +Open=0 +Top=0 +[Editor_9] +Open=0 +Top=0 +[Editor_10] +Open=0 +Top=0 +[Editor_11] +Open=0 +Top=0 diff --git a/src/tool/Makefile b/src/tool/Makefile index 4ddcf8b..d2616a7 100644 --- a/src/tool/Makefile +++ b/src/tool/Makefile @@ -1,12 +1,12 @@ -CC=gcc -m32 -O0 -g
-BDIR=..
-COBJS=${BDIR}/common/timer.o ${BDIR}/common/malloc.o ${BDIR}/common/socket.o ${BDIR}/common/lock.o ${BDIR}/common/db.o ${BDIR}/char/int_pet.o ${BDIR}/char/int_storage.o ${BDIR}/char/inter.o ${BDIR}/char/int_party.o ${BDIR}/char/int_guild.o
-
-all:
- $(CC) -o adduser adduser.c
- $(CC) -I ${BDIR}/char -I ${BDIR}/common itemfrob.c -o itemfrob ${COBJS}
- $(CC) -I ${BDIR}/char -I ${BDIR}/common mapfrob.c -o mapfrob ${COBJS}
-
-clean:
- rm -f adduser itemfrob mapfrop
- rm -f *.exe
+CC=gcc -m32 -O0 -g +BDIR=.. +COBJS=${BDIR}/common/timer.o ${BDIR}/common/malloc.o ${BDIR}/common/socket.o ${BDIR}/common/lock.o ${BDIR}/common/db.o ${BDIR}/char/int_pet.o ${BDIR}/char/int_storage.o ${BDIR}/char/inter.o ${BDIR}/char/int_party.o ${BDIR}/char/int_guild.o + +all: + $(CC) -o adduser adduser.c + $(CC) -I ${BDIR}/char -I ${BDIR}/common itemfrob.c -o itemfrob ${COBJS} + $(CC) -I ${BDIR}/char -I ${BDIR}/common mapfrob.c -o mapfrob ${COBJS} + +clean: + rm -f adduser itemfrob mapfrop + rm -f *.exe diff --git a/src/tool/backup b/src/tool/backup index 2b5a958..939c7ee 100644 --- a/src/tool/backup +++ b/src/tool/backup @@ -1,100 +1,100 @@ -#!/usr/bin/perl
-
-##########################################################################
-# Athena—pƒf[ƒ^ƒoƒbƒNƒAƒbƒvƒc[ƒ‹
-#
-# @Athena‚ÌŠeŽíƒf[ƒ^ƒtƒ@ƒCƒ‹*.txt‚ðƒoƒbƒNƒAƒbƒv‚·‚éƒc[ƒ‹
-#
-#-------------------------------------------------------------------------
-# Ý’è•û–@
-# @ŽÀs‚·‚鎞‚̃JƒŒƒ“ƒgƒtƒHƒ‹ƒ_‚©‚ç‚̃f[ƒ^‚ւ̃pƒXAƒtƒ@ƒCƒ‹‚̃ŠƒXƒg‚ð
-# @³‚µ‚ݒ肵‚Ü‚·BƒoƒbƒNƒAƒbƒvæ‚̃tƒHƒ‹ƒ_‚ÍŽ©“®ì¬‚³‚ê‚È‚¢‚Ì‚ÅA
-# @Ž©•ª‚Å쬂µ‚Ä‚¨‚•K—v‚ª‚ ‚è‚Ü‚·B
-# @ƒtƒHƒ‹ƒ_‚ÌÅŒã‚Ìu/v‚ÍÈ—ª‚Å‚«‚Ü‚¹‚ñB
-#
-# @ƒtƒHƒ‹ƒ_‚͈ø”‚Å‚àŽw’è‚Å‚«‚Ü‚·B—á„./backup ../save/ ./backup_data/
-# @ƒtƒHƒ‹ƒ_‚ÌÅŒã‚Ìu/v‚ÍÈ—ª‚Å‚«‚Ü‚¹‚ñB
-#
-# @ŽÀs‚·‚é‚ƃoƒbƒNƒAƒbƒvæ‚̃tƒHƒ‹ƒ_‚ÖAƒtƒ@ƒCƒ‹–¼‚ÉŒ»Ý‚Ì“ú•t‚ÆŽž‚ð
-# @‚‚¯‚ătƒ@ƒCƒ‹‚ðƒRƒs[‚µ‚Ü‚·B
-#
-# * toolƒtƒHƒ‹ƒ_“à‚Ébackup_dataƒtƒHƒ‹ƒ_‚ð쬂µA
-# @ athena.sh‚Ì’†‚Éu./tool/backup ./save/ ./tool/backup_data/v
-# ‚Æ‚¢‚¤s‚ð’ljÁ‚·‚é‚ÆAathena‚ð‹N“®‚·‚邽‚тɃoƒbƒNƒAƒbƒv‚ªŽæ‚ê‚Ü‚·
-#
-# •œŒ³‚·‚é‚Æ‚«‚͈ø”‚Éu-r “ú•t‚ÆŽžv‚ðŽw’肵‚Ü‚·B
-# @‚Ü‚½‚»‚ÌŒã‚ë‚ɃtƒHƒ‹ƒ_‚ðŽw’è‚·‚邱‚Æ‚ào—ˆ‚Ü‚·
-# @—á‚P„ ./backup -r 200309191607
-# @—á‚Q„ ./backup -r 200309191607 ../save ./backup_data/
-# @‚±‚Ì—á‚Å‚Í2003/09/19‚Ì16:07•ª‚ɃoƒbƒNƒAƒbƒv‚µ‚½ƒf[ƒ^‚𕜌³‚µ‚Ä‚¢‚Ü‚·
-#
-# @•œŒ³‚·‚é‚Æ‚«AAthenaƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚éƒf[ƒ^‚Í *.bak ‚É–¼‘O‚ð•ÏX‚µ‚Ä
-# @Žc‚µ‚Ä‚¢‚é‚Ì‚ÅA‚¢‚ç‚È‚¢ê‡‚Í rm *.bak ‚È‚Ç‚ÅÁ‚µ‚Ä‚‚¾‚³‚¢B
-#
-##########################################################################
-
-$sdir="../save/"; #ƒoƒbƒNƒAƒbƒvŒ³(Athena‚̃fƒBƒŒƒNƒgƒŠ/save/)
-$tdir="./backup_data/"; #ƒoƒbƒNƒAƒbƒvæ
-
-@files=( #ƒtƒ@ƒCƒ‹‚̃ŠƒXƒg
- "account","athena","storage","party","guild","castle","pet"
-);
-
-
-#-------------------------------ݒ肱‚±‚Ü‚Å-----------------------------
-
-
-
-
-
-
-
-
-
-
-
-if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
- #•œŒ³ˆ—
-
- $file=$ARGV[1];
- $sdir=$ARGV[2]||$sdir;
- $tdir=$ARGV[3]||$tdir;
- &restorecopy($_) foreach @files;
- exit(0);
-}
-
-#ƒoƒbƒNƒAƒbƒvˆ—
-$sdir=$ARGV[0]||$sdir;
-$tdir=$ARGV[1]||$tdir;
-
-unless( -d $tdir ){
- print "$0: \"$tdir\" : No such directory\n";
- exit(1);
-}
-
-(undef,$min,$hour,$day,$month,$year)=localtime;
-
-$file=sprintf("%04d%02d%02d%02d%02d",
- $year+1900, $month+1, $day, $hour, $min );
-
-&backupcopy($_) foreach @files;
-exit(0);
-
-sub backupcopy {
- my($name)= @_;
- system("cp $sdir$name.txt $tdir$name$file.txt");
-}
-
-sub restorecopy {
- my($name)= @_;
- unless( -f "$sdir$name.txt" ){
- printf("$0: \"$sdir$name.txt\" not found!\n");
- return 0;
- }
- unless( -f "$tdir$name$file.txt" ){
- printf("$0: \"$tdir$name$file.txt\" not found!\n");
- return 0;
- }
- rename "$sdir$name.txt","$sdir$name.bak";
- system("cp $tdir$name$file.txt $sdir$name.txt");
-}
+#!/usr/bin/perl + +########################################################################## +# Athena—pƒf[ƒ^ƒoƒbƒNƒAƒbƒvƒc[ƒ‹ +# +# @Athena‚ÌŠeŽíƒf[ƒ^ƒtƒ@ƒCƒ‹*.txt‚ðƒoƒbƒNƒAƒbƒv‚·‚éƒc[ƒ‹ +# +#------------------------------------------------------------------------- +# Ý’è•û–@ +# @ŽÀs‚·‚鎞‚̃JƒŒƒ“ƒgƒtƒHƒ‹ƒ_‚©‚ç‚̃f[ƒ^‚ւ̃pƒXAƒtƒ@ƒCƒ‹‚̃ŠƒXƒg‚ð +# @³‚µ‚ݒ肵‚Ü‚·BƒoƒbƒNƒAƒbƒvæ‚̃tƒHƒ‹ƒ_‚ÍŽ©“®ì¬‚³‚ê‚È‚¢‚Ì‚ÅA +# @Ž©•ª‚Å쬂µ‚Ä‚¨‚•K—v‚ª‚ ‚è‚Ü‚·B +# @ƒtƒHƒ‹ƒ_‚ÌÅŒã‚Ìu/v‚ÍÈ—ª‚Å‚«‚Ü‚¹‚ñB +# +# @ƒtƒHƒ‹ƒ_‚͈ø”‚Å‚àŽw’è‚Å‚«‚Ü‚·B—á„./backup ../save/ ./backup_data/ +# @ƒtƒHƒ‹ƒ_‚ÌÅŒã‚Ìu/v‚ÍÈ—ª‚Å‚«‚Ü‚¹‚ñB +# +# @ŽÀs‚·‚é‚ƃoƒbƒNƒAƒbƒvæ‚̃tƒHƒ‹ƒ_‚ÖAƒtƒ@ƒCƒ‹–¼‚ÉŒ»Ý‚Ì“ú•t‚ÆŽž‚ð +# @‚‚¯‚ătƒ@ƒCƒ‹‚ðƒRƒs[‚µ‚Ü‚·B +# +# * toolƒtƒHƒ‹ƒ_“à‚Ébackup_dataƒtƒHƒ‹ƒ_‚ð쬂µA +# @ athena.sh‚Ì’†‚Éu./tool/backup ./save/ ./tool/backup_data/v +# ‚Æ‚¢‚¤s‚ð’ljÁ‚·‚é‚ÆAathena‚ð‹N“®‚·‚邽‚тɃoƒbƒNƒAƒbƒv‚ªŽæ‚ê‚Ü‚· +# +# •œŒ³‚·‚é‚Æ‚«‚͈ø”‚Éu-r “ú•t‚ÆŽžv‚ðŽw’肵‚Ü‚·B +# @‚Ü‚½‚»‚ÌŒã‚ë‚ɃtƒHƒ‹ƒ_‚ðŽw’è‚·‚邱‚Æ‚ào—ˆ‚Ü‚· +# @—á‚P„ ./backup -r 200309191607 +# @—á‚Q„ ./backup -r 200309191607 ../save ./backup_data/ +# @‚±‚Ì—á‚Å‚Í2003/09/19‚Ì16:07•ª‚ɃoƒbƒNƒAƒbƒv‚µ‚½ƒf[ƒ^‚𕜌³‚µ‚Ä‚¢‚Ü‚· +# +# @•œŒ³‚·‚é‚Æ‚«AAthenaƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚éƒf[ƒ^‚Í *.bak ‚É–¼‘O‚ð•ÏX‚µ‚Ä +# @Žc‚µ‚Ä‚¢‚é‚Ì‚ÅA‚¢‚ç‚È‚¢ê‡‚Í rm *.bak ‚È‚Ç‚ÅÁ‚µ‚Ä‚‚¾‚³‚¢B +# +########################################################################## + +$sdir="../save/"; #ƒoƒbƒNƒAƒbƒvŒ³(Athena‚̃fƒBƒŒƒNƒgƒŠ/save/) +$tdir="./backup_data/"; #ƒoƒbƒNƒAƒbƒvæ + +@files=( #ƒtƒ@ƒCƒ‹‚̃ŠƒXƒg + "account","athena","storage","party","guild","castle","pet" +); + + +#-------------------------------ݒ肱‚±‚Ü‚Å----------------------------- + + + + + + + + + + + +if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){ + #•œŒ³ˆ— + + $file=$ARGV[1]; + $sdir=$ARGV[2]||$sdir; + $tdir=$ARGV[3]||$tdir; + &restorecopy($_) foreach @files; + exit(0); +} + +#ƒoƒbƒNƒAƒbƒvˆ— +$sdir=$ARGV[0]||$sdir; +$tdir=$ARGV[1]||$tdir; + +unless( -d $tdir ){ + print "$0: \"$tdir\" : No such directory\n"; + exit(1); +} + +(undef,$min,$hour,$day,$month,$year)=localtime; + +$file=sprintf("%04d%02d%02d%02d%02d", + $year+1900, $month+1, $day, $hour, $min ); + +&backupcopy($_) foreach @files; +exit(0); + +sub backupcopy { + my($name)= @_; + system("cp $sdir$name.txt $tdir$name$file.txt"); +} + +sub restorecopy { + my($name)= @_; + unless( -f "$sdir$name.txt" ){ + printf("$0: \"$sdir$name.txt\" not found!\n"); + return 0; + } + unless( -f "$tdir$name$file.txt" ){ + printf("$0: \"$tdir$name$file.txt\" not found!\n"); + return 0; + } + rename "$sdir$name.txt","$sdir$name.bak"; + system("cp $tdir$name$file.txt $sdir$name.txt"); +} diff --git a/src/tool/checkversion b/src/tool/checkversion index 1351652..9e485d9 100644 --- a/src/tool/checkversion +++ b/src/tool/checkversion @@ -1,85 +1,85 @@ -#!/usr/bin/perl -w
-
-##########################################################################
-# INFORMATION TOOL ABOUT THE SERVERS VERSION OF ATHENA
-#
-# By connection on a server, this software display the version of the
-# designed server.
-#-------------------------------------------------------------------------
-# Usages:
-# ./checkversion IP:port
-# ./checkversion IP port
-# perl checkversion IP:port
-# perl checkversion IP port
-#
-# note: default port: 6900
-#
-# When successfull, the software return the value 0.
-#
-##########################################################################
-
-#------------------------- start of configuration ------------------------
-
-$connecttimeout = 10; # Connection Timeout (in seconds)
-
-#-------------------------- End of configuration -------------------------
-
-use IO::Socket;
-
-unless($ARGV[0]) {
- print "USAGE: $0 server_ip:port\n";
- exit(1);
-}
-
-$server = $ARGV[0];
-$port = $ARGV[1];
-$port = $1 if ($server =~ s/:(\d+)//);
-$port ||= 6900;
-
-# Connection to the server
-my($so,$er) = ();
-eval{
- $so = IO::Socket::INET->new(
- PeerAddr=> $server,
- PeerPort=> $port,
- Proto => "tcp",
- Timeout => $connecttimeout) or $er = 1;
-};
-
-if($er || $@) {
- print "Can't not connect to server [$server:$port] !\n";
- exit(2);
-}
-
-# Request for the server version
-print $so pack("v",30000); # 0x7530
-$so->flush();
-
-# Receiving of the answer of the server
-if (read($so,$buf,10) < 10) {
- print "Invalid answer. It isn't an athena server or it is a too old version.\n";
- exit(5);
-}
-
-# Sending end of connection to the server
-print $so pack("v",30002); # 0x7532
-$so->flush();
-
-# Analyse of the answer
-my($ret,$maver,$miver,$rev,$dev,$mod,$type,$mdver) = unpack("v c6 v",$buf);
-
-if ($ret != 30001) { # 0x7531
- print "Invalid answer. It isn't an athena server or it is a too old version.\n";
- exit(6);
-}
-
-my(@stype) = ();
-foreach $i(0..3) {
- push @stype,(("login","char","inter","map")[$i]) if( $type & (1<<$i) );
-}
-print " ".join("/",@stype)." server [$server:$port].\n";
-printf " Athena version %s-%d.%d", ("stable","dev")[$dev], $maver,$miver;
-printf " revision %d",$rev if $rev;
-printf "%s%d\n",("","-mod")[$mod],$mdver;
-
-exit(0);
+#!/usr/bin/perl -w + +########################################################################## +# INFORMATION TOOL ABOUT THE SERVERS VERSION OF ATHENA +# +# By connection on a server, this software display the version of the +# designed server. +#------------------------------------------------------------------------- +# Usages: +# ./checkversion IP:port +# ./checkversion IP port +# perl checkversion IP:port +# perl checkversion IP port +# +# note: default port: 6900 +# +# When successfull, the software return the value 0. +# +########################################################################## + +#------------------------- start of configuration ------------------------ + +$connecttimeout = 10; # Connection Timeout (in seconds) + +#-------------------------- End of configuration ------------------------- + +use IO::Socket; + +unless($ARGV[0]) { + print "USAGE: $0 server_ip:port\n"; + exit(1); +} + +$server = $ARGV[0]; +$port = $ARGV[1]; +$port = $1 if ($server =~ s/:(\d+)//); +$port ||= 6900; + +# Connection to the server +my($so,$er) = (); +eval{ + $so = IO::Socket::INET->new( + PeerAddr=> $server, + PeerPort=> $port, + Proto => "tcp", + Timeout => $connecttimeout) or $er = 1; +}; + +if($er || $@) { + print "Can't not connect to server [$server:$port] !\n"; + exit(2); +} + +# Request for the server version +print $so pack("v",30000); # 0x7530 +$so->flush(); + +# Receiving of the answer of the server +if (read($so,$buf,10) < 10) { + print "Invalid answer. It isn't an athena server or it is a too old version.\n"; + exit(5); +} + +# Sending end of connection to the server +print $so pack("v",30002); # 0x7532 +$so->flush(); + +# Analyse of the answer +my($ret,$maver,$miver,$rev,$dev,$mod,$type,$mdver) = unpack("v c6 v",$buf); + +if ($ret != 30001) { # 0x7531 + print "Invalid answer. It isn't an athena server or it is a too old version.\n"; + exit(6); +} + +my(@stype) = (); +foreach $i(0..3) { + push @stype,(("login","char","inter","map")[$i]) if( $type & (1<<$i) ); +} +print " ".join("/",@stype)." server [$server:$port].\n"; +printf " Athena version %s-%d.%d", ("stable","dev")[$dev], $maver,$miver; +printf " revision %d",$rev if $rev; +printf "%s%d\n",("","-mod")[$mod],$mdver; + +exit(0); diff --git a/src/tool/getlogincount b/src/tool/getlogincount index 6a20992..45c6f81 100644 --- a/src/tool/getlogincount +++ b/src/tool/getlogincount @@ -1,122 +1,122 @@ -#!/usr/bin/perl -w
-
-##########################################################################
-# INFORMATION TOOL ABOUT THE # OF ONLINE PLAYERS ON ATHENA SERVERS
-#
-# By connection on the athena login-server, this software displays the
-# number of online players.
-#
-#-------------------------------------------------------------------------
-# Software usage:
-# Configure the IP, the port and a valid account of the server.
-# After, use at your choice:
-# ./getlogincount - display the number of online players on all servers.
-# ./getlogincount --premier or
-# ./getlogincount --first -- display the number of online players of the
-# first server in the received list.
-# ./getlogincount [servername] -- display the number of online players
-# of the specified server.
-#
-# If successfull, the software return the value 0.
-#
-##########################################################################
-
-#------------------------------ CONFIGURATION ----------------------------
-
-$loginserverip = "127.0.0.1"; # IP of the login-server
-$loginserverport = 6900; # port of the login-server
-$loginaccount = "s1"; # a valid account name
-$loginpasswd = "p1"; # the password of the valid account name
-
-$connecttimeout = 10; # Connection timeout (in seconds)
-
-#-------------------------------------------------------------------------
-
-use IO::Socket;
-
-my($sname) = $ARGV[0];
-if (!defined($sname)) {
- $sname = "";
-}
-
-# Connection to the login-server
-my($so,$er) = ();
-eval{
- $so = IO::Socket::INET->new(
- PeerAddr=> $loginserverip,
- PeerPort=> $loginserverport,
- Proto => "tcp",
- Timeout => $connecttimeout) or $er=1;
-};
-if($er || $@){
- print "Can't not connect to the login-server [${loginserverip}:$loginserverport] !\n";
- exit(2);
-}
-
-# Request to connect on login-server
-print $so pack("v V a24 a24 C",0x0064,9,$loginaccount,$loginpasswd,3);
-$so->flush();
-
-# Fail to connect
-if(unpack("v", &soread(\$so,2)) != 0x0069) {
- print "Login error.\n";
- exit(3);
-}
-
-# Get length of the received packet
-my($plen) = unpack("v",&soread(\$so,2))-4;
-
-# Suppress information of the account (we need only information about the servers)
-&soread(\$so,43);
-$plen -= 43;
-
-# Check about the number of online servers
-if ($plen < 32) {
- printf "No server is connected to login-server.\n";
- exit(1);
-}
-
-# Read information of the servers
-my(@slist) = ();
-for(;$plen > 0;$plen -= 32) {
- my($name,$count) = unpack("x6 a20 V",&soread(\$so,32));
- $name = substr($name,0,index($name,"\0"));
- push @slist, [ $name, $count ];
-}
-
-# Display the result
-if($sname eq "--first" || $sname eq "--premier") { # If we ask only for the first server
- printf "%-20s : %5d\n",$slist[0][0],$slist[0][1];
-} elsif ($sname eq "") { # If we ask for all servers
- foreach $i(@slist) {
- printf "%-20s : %5d\n",$i->[0],$i->[1];
- }
-} else { # If we ask for a specified server (by its name)
- my($flag) = 1;
- foreach $i(@slist) {
- if($i->[0] eq $sname) {
- printf "%-20s : %5d\n",$i->[0],$i->[1];
- $flag = 0;
- }
- }
- if($flag) { # If the server doesn't exist
- printf "The server [$sname] doesn't exist.\n";
- exit(1);
- }
-}
-
-# End of the software
-$so->shutdown(2);
-$so->close();
-exit(0);
-
-# Sub-function: get data from the socket
-sub soread {
- my($so,$len) = @_;
- my($sobuf);
- if(read($$so,$sobuf,$len) < $len) {
- print "Socket read error.\n";
- exit(5);
- }
- return $sobuf;
-};
+#!/usr/bin/perl -w + +########################################################################## +# INFORMATION TOOL ABOUT THE # OF ONLINE PLAYERS ON ATHENA SERVERS +# +# By connection on the athena login-server, this software displays the +# number of online players. +# +#------------------------------------------------------------------------- +# Software usage: +# Configure the IP, the port and a valid account of the server. +# After, use at your choice: +# ./getlogincount - display the number of online players on all servers. +# ./getlogincount --premier or +# ./getlogincount --first -- display the number of online players of the +# first server in the received list. +# ./getlogincount [servername] -- display the number of online players +# of the specified server. +# +# If successfull, the software return the value 0. +# +########################################################################## + +#------------------------------ CONFIGURATION ---------------------------- + +$loginserverip = "127.0.0.1"; # IP of the login-server +$loginserverport = 6900; # port of the login-server +$loginaccount = "s1"; # a valid account name +$loginpasswd = "p1"; # the password of the valid account name + +$connecttimeout = 10; # Connection timeout (in seconds) + +#------------------------------------------------------------------------- + +use IO::Socket; + +my($sname) = $ARGV[0]; +if (!defined($sname)) { + $sname = ""; +} + +# Connection to the login-server +my($so,$er) = (); +eval{ + $so = IO::Socket::INET->new( + PeerAddr=> $loginserverip, + PeerPort=> $loginserverport, + Proto => "tcp", + Timeout => $connecttimeout) or $er=1; +}; +if($er || $@){ + print "Can't not connect to the login-server [${loginserverip}:$loginserverport] !\n"; + exit(2); +} + +# Request to connect on login-server +print $so pack("v V a24 a24 C",0x0064,9,$loginaccount,$loginpasswd,3); +$so->flush(); + +# Fail to connect +if(unpack("v", &soread(\$so,2)) != 0x0069) { + print "Login error.\n"; + exit(3); +} + +# Get length of the received packet +my($plen) = unpack("v",&soread(\$so,2))-4; + +# Suppress information of the account (we need only information about the servers) +&soread(\$so,43); +$plen -= 43; + +# Check about the number of online servers +if ($plen < 32) { + printf "No server is connected to login-server.\n"; + exit(1); +} + +# Read information of the servers +my(@slist) = (); +for(;$plen > 0;$plen -= 32) { + my($name,$count) = unpack("x6 a20 V",&soread(\$so,32)); + $name = substr($name,0,index($name,"\0")); + push @slist, [ $name, $count ]; +} + +# Display the result +if($sname eq "--first" || $sname eq "--premier") { # If we ask only for the first server + printf "%-20s : %5d\n",$slist[0][0],$slist[0][1]; +} elsif ($sname eq "") { # If we ask for all servers + foreach $i(@slist) { + printf "%-20s : %5d\n",$i->[0],$i->[1]; + } +} else { # If we ask for a specified server (by its name) + my($flag) = 1; + foreach $i(@slist) { + if($i->[0] eq $sname) { + printf "%-20s : %5d\n",$i->[0],$i->[1]; + $flag = 0; + } + } + if($flag) { # If the server doesn't exist + printf "The server [$sname] doesn't exist.\n"; + exit(1); + } +} + +# End of the software +$so->shutdown(2); +$so->close(); +exit(0); + +# Sub-function: get data from the socket +sub soread { + my($so,$len) = @_; + my($sobuf); + if(read($$so,$sobuf,$len) < $len) { + print "Socket read error.\n"; + exit(5); + } + return $sobuf; +}; diff --git a/src/tool/ladmin b/src/tool/ladmin index e3319d5..d0c0be4 100644 --- a/src/tool/ladmin +++ b/src/tool/ladmin @@ -1,3793 +1,3793 @@ -#!/usr/bin/perl
-use POSIX;
-##########################################################################
-# EAthena login-server remote administration tool
-# New ladamin by [Yor]
-##########################################################################
-#-------------------------------INSTRUCTIONS------------------------------
-# Set the 4 variables below:
-# IP of the login server.
-# Port where the login-server listens incoming packets.
-# Password of administration (same of config_athena.conf).
-# Displayed language of the sofware (if not correct, english is used).
-# IMPORTANT:
-# Be sure that you authorize remote administration in login-server
-# (see login_athena.conf, 'admin_state' parameter)
-#-------------------------------------------------------------------------
-my($loginserverip) = "127.0.0.1"; # IP of login-server
-my($loginserverport) = 6900; # Port of login-server
-my($loginserveradminpassword) = "admin"; # Administration password
-my($connecttimeout) = 10; # Timeout of connection (in seconds)
-my($passenc) = 2; # Encoding type of the password
-my($defaultlanguage) = "E"; # Default language (F: Français/E: English)
- # (if it's not 'F', default is English)
-
-#-------------------------------------------------------------------------
-# LIST of COMMANDs that you can type at the prompt:
-# To use these commands you can only type only the first letters.
-# You must type a minimum of letters (you can not type 'a',
-# because ladmin doesn't know if it's for 'aide' or for 'add')
-# <Example> q <= quit, li <= list, pass <= passwd, etc.
-#
-# Note: every time you must give a account_name, you can use "" or '' (spaces can be included)
-#
-# aide/help/?
-# Display the description of the commands
-# aide/help/? [command]
-# Display the description of the specified command
-#
-# add <account_name> <sex> <password>
-# Create an account with the default email (a@a.com).
-# Concerning the sex, only the first letter is used (F or M).
-# The e-mail is set to a@a.com (default e-mail). It's like to have no e-mail.
-# When the password is omitted, the input is done without displaying of the pressed keys.
-# <example> add testname Male testpass
-#
-# ban/banish yyyy/mm/dd hh:mm:ss <account name>
-# Changes the final date of a banishment of an account.
-# Same command of banset, except that account_name is at end
-#
-# banadd <account_name> <modifier>
-# Adds or substracts time from the final date of a banishment of an account.
-# Modifier is done as follows:
-# Adjustment value (-1, 1, +1, etc...)
-# Modified element:
-# a or y: year
-# m: month
-# j or d: day
-# h: hour
-# mn: minute
-# s: second
-# <example> banadd testname +1m-2mn1s-6y
-# this example adds 1 month and 1 second, and substracts 2 minutes and 6 years at the same time.
-# NOTE: If you modify the final date of a non-banished account,
-# you fix the final date to (actual time +- adjustments)
-#
-# banset <account_name> yyyy/mm/dd [hh:mm:ss]
-# Changes the final date of a banishment of an account.
-# Default time: 23:59:59
-# banset <account_name> 0
-# Set a non-banished account (0 = unbanished).
-#
-# block <account name>
-# Set state 5 (You have been blocked by the GM Team) to an account.
-# Same command of state <account_name> 5.
-#
-# check <account_name> <password>
-# Check the validity of a password for an account
-# NOTE: Server will never sends back a password.
-# It's the only method you have to know if a password is correct.
-# The other method is to have a ('physical') access to the accounts file.
-#
-# create <account_name> <sex> <email> <password>
-# Like the 'add' command, but with e-mail moreover.
-# <example> create testname Male my@mail.com testpass
-#
-# del <account name>
-# Remove an account.
-# This order requires confirmation. After confirmation, the account is deleted.
-#
-# email <account_name> <email>
-# Modify the e-mail of an account.
-#
-# getcount
-# Give the number of players online on all char-servers.
-#
-# gm <account_name> [GM_level]
-# Modify the GM level of an account.
-# Default value remove GM level (GM level = 0).
-# <example> gm testname 80
-#
-# id <account name>
-# Give the id of an account.
-#
-# info <account_id>
-# Display complete information of an account.
-#
-# kami <message>
-# Sends a broadcast message on all map-server (in yellow).
-# kamib <message>
-# Sends a broadcast message on all map-server (in blue).
-#
-# language <language>
-# Change the language of displaying.
-#
-# list/ls [start_id [end_id]]
-# Display a list of accounts.
-# 'start_id', 'end_id': indicate end and start identifiers.
-# Research by name is not possible with this command.
-# <example> list 10 9999999
-#
-# listBan/lsBan [start_id [end_id]]
-# Like list/ls, but only for accounts with state or banished
-#
-# listGM/lsGM [start_id [end_id]]
-# Like list/ls, but only for GM accounts
-#
-# listOK/lsOK [start_id [end_id]]
-# Like list/ls, but only for accounts without state and not banished
-#
-# memo <account_name> <memo>
-# Modify the memo of an account.
-# 'memo': it can have until 253 characters (with spaces or not).
-#
-# name <account_id>
-# Give the name of an account.
-#
-# passwd <account_name> <new_password>
-# Change the password of an account.
-# When new password is omitted, the input is done without displaying of the pressed keys.
-#
-# quit/end/exit
-# End of the program of administration
-#
-# reloadGM
-# Reload GM configuration file
-#
-# search <expression>
-# Seek accounts.
-# Displays the accounts whose names correspond.
-# search -r/-e/--expr/--regex <expression>
-# Seek accounts by regular expression.
-# Displays the accounts whose names correspond.
-#
-# sex <account_name> <sex>
-# Modify the sex of an account.
-# <example> sex testname Male
-#
-# state <account_name> <new_state> <error_message_#7>
-# Change the state of an account.
-# 'new_state': state is the state of the packet 0x006a + 1. The possibilities are:
-# 0 = Account ok 6 = Your Game's EXE file is not the latest version
-# 1 = Unregistered ID 7 = You are Prohibited to log in until %s
-# 2 = Incorrect Password 8 = Server is jammed due to over populated
-# 3 = This ID is expired 9 = No MSG
-# 4 = Rejected from Server 100 = This ID has been totally erased
-# 5 = You have been blocked by the GM Team
-# all other values are 'No MSG', then use state 9 please.
-# 'error_message_#7': message of the code error 6 = Your are Prohibited to log in until %s (packet 0x006a)
-#
-# timeadd <account_name> <modifier>
-# Adds or substracts time from the validity limit of an account.
-# Modifier is done as follows:
-# Adjustment value (-1, 1, +1, etc...)
-# Modified element:
-# a or y: year
-# m: month
-# j or d: day
-# h: hour
-# mn: minute
-# s: second
-# <example> timeadd testname +1m-2mn1s-6y
-# this example adds 1 month and 1 second, and substracts 2 minutes and 6 years at the same time.
-# NOTE: You can not modify a unlimited validity limit.
-# If you want modify it, you want probably create a limited validity limit.
-# So, at first, you must set the validity limit to a date/time.
-#
-# timeset <account_name> yyyy/mm/dd [hh:mm:ss]
-# Changes the validity limit of an account.
-# Default time: 23:59:59
-# timeset <account_name> 0
-# Gives an unlimited validity limit (0 = unlimited).
-#
-# unban/unbanish <account name>
-# Unban an account.
-# Same command of banset 0.
-#
-# unblock <account name>
-# Set state 0 (Account ok) to an account.
-# Same command of state <account_name> 0.
-#
-# version
-# Display the version of the login-server.
-#
-# who <account name>
-# Displays complete information of an account.
-#
-#-------------------------------------------------------------------------
-# Possibilities to execute ladmin in command line by usage of the software with a parameter:
-# ./ladmin --mode param1 ...
-#
-# --makesymlink -- Create the symbolic links for a use in shell
-# --add <account_name> <sex> <password> -- Create an account with the default email (or -a)
-# --ban yyyy/mm/dd hh:mm:ss <account_name> -- Change the final date of a banishment of an account (or -b)
-# --banadd <account_name> <modifier> -- Add or substract time from the final date of a banishment of an account (or - ba)
-# --banset <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the final date of a banishment of an account (or -bs)
-# --banset <account_name> 0 -- Unbanish an account (or -bs)
-# --block <account_name> -- Set state 5 to an account (or -bl)
-# --check <account_name> <password> -- Check the validity of a password for an account (or -check)
-# --create <account_name> <sex> <email> <password> -- Create an account with email (or -c)
-# --del <account_name> -- Remove an account (or -d)
-# --email <account_name> <email> -- Modify an email of an account (or -e)
-# --getcount -- Give the number of players online on all char-servers (or -g)
-# --gm <account_name> <GM_level> -- Change the GM level of an account (or -gm)
-# --id <account_name> -- Give the id of an account (or -i)
-# --info <account_id> -- Display complete information of an account (or -info)
-# --kami <message> -- Sends a broadcast message on all map-server (in yellow).
-# --kamib <message> -- Sends a broadcast message on all map-server (in blue).
-# --language <language> -- Change the language of displaying (-lang).
-# --list [First_id [Last_id]] -- Display a list of accounts (or -l)
-# --listBan [start_id [end_id]] -- Display a list of accounts with state or banished (or -lBan)
-# --listGM [First_id [Last_id]] -- Display a list of GM accounts (or -lGM)
-# --listOK [start_id [end_id]] -- Display a list of accounts without state and not banished (or -lOK)
-# --memo <account_name> <memo> -- Modify the memo of an account (or -e)
-# --name <account_id> -- Give the name of an account (or -n)
-# --passwd <account_name> <new_password> -- Change the password of an account (or -p)
-# --reloadGM -- Reload GM configuration file (or -r)
-# --search <expression> -- Seek accounts (or -s)
-# --search -e/-r/--expr/--regex <expression> -- Seek accounts by REGEX (or -s)
-# --sex <account_name> <sex> -- Change the sex of an account (or -sex)
-# --state <account_name> <new_state> <error_message_#7> -- Change the state of an account (or -t)
-# --timeadd <account_name> <modifier> -- Add or substract time from the validity limit of an account (or - ta)
-# --timeset <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the validify limit of an account (or -ts)
-# --timeset <account_name> 0 -- Give a unlimited validity limit (or -ts)
-# --unban/unbanish <account_name> -- Unban an account (or -uba)
-# --unblock <account_name> -- Set state 0 to an account (or -ubl)
-# --version -- Display the version of the login-server (or -v)
-# --who <account_name> -- Display complete information of an account (or -w)
-#
-# <example> ./ladmin --addaccount testname Male testpass
-#
-#-------------------------------------------------------------------------
-# Possibilities to execute ladmin with symbolic links in Shell
-# To create the symbolic links, execute ladmin with the '-- makesymlink' option.
-#
-# addaccount <account_name> <sex> <password> -- Create an account with the default email
-# banaccount yyyy/mm/dd hh:mm:ss <account_name> -- Change the final date of a banishment of an account
-# banaddaccount <account_name> <modifier> -- Add or substract time from the final date of a banishment of an account
-# bansetaccount <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the final date of a banishment of an account
-# bansetaccount <account_name> 0 -- Unbanish an account
-# blockaccount <account_name> -- Set state 5 (blocked by the GM Team) to an account
-# checkaccount <account_name> <password> -- Check the validity of a password for an account
-# createaccount <account_name> <sex> <email> <password> -- Create an account with email
-# delaccount <account_name> -- Remove an account
-# emailaccount <account_name> <email> -- Modify an email of an account
-# getcount -- Give the number of players online on all char-servers
-# gmaccount <account_name> <GM_level> -- Change the GM level of an account
-# idaccount <account_name> -- Give the id of an account
-# infoaccount <account_id> -- Display complete information of an account
-# kami <message> -- Sends a broadcast message on all map-server (in yellow).
-# kamib <message> -- Sends a broadcast message on all map-server (in blue).
-# ladminlanguage <language> -- Change the language of displaying.
-# listaccount [First_id [Last_id]] -- Display a list of accounts
-# listBanaccount [start_id [end_id]] -- Display a list of accounts with state or banished
-# listGMaccount [First_id [Last_id]] -- Display a list of GM accounts
-# listOKaccount [start_id [end_id]] -- Display a list of accounts without state and not banished
-# loginserverversion -- Display the version of the login-server
-# memoaccount <account_name> <memo> -- Modify the memo of an account
-# nameaccount <account_id> -- Give the name of an account
-# passwdaccount <account_name> <new_password> -- Change the password of an account
-# reloadGM -- Reload GM configuration file
-# searchaccount <expression> -- Seek accounts
-# searchaccount -e/-r/--expr/--regex <expression> -- Seek accounts by REGEX
-# sexaccount <account_name> <sex> -- Change the sex of an account (or -sex)
-# stateaccount <account_name> <new_state> <error_message_#7> -- Change the state of an account
-# timeaddaccount <account_name> <modifier> -- Add or substract time from the validity limit of an account
-# timesetaccount <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the validify limit of an account
-# timesetaccount <account_name> 0 -- Give a unlimited validity limit
-# unbanaccount <account_name> -- Unban an account
-# unblockaccount <account_name> -- Set state 0 (Account ok) to an account
-# whoaccount <account_name> -- Display complete information of an account
-# <exemple> ./addaccount testname Male testpass
-#
-#-------------------------------------------------------------------------
-# About the encoding:
-#
-# The Digest::MD5 module is necessary to use the encrypted password system.
-# When the software cannot found the Digest::MD5 module,
-# encoding is automatically disabled ($passenc=0), which allows
-# to use this program in any cases.
-#
-#-------------------------------------------------------------------------
-# How to use ladmin with UNIX:
-#
-# You excecute ladmin as a standard command.
-# <Example of preparation to have an access to ladmin>
-# $ mv ladmin ladmin_org
-# $ nkf -eLu ladmin_org > ladmin
-# $ chmod 700 ladmin
-# <Example to start directly ladmin>
-# $ perl ladmin
-#
-##########################################################################
-
-
-use strict;
-use IO::Socket;
-use Term::ReadLine;
-eval { use POSIX qw(:termios_h); };
-eval { use Digest::MD5 qw(md5); } if $passenc;
-$passenc = 0 if($@);
-
-my($ver) = "1.00";
-
-# Start of termios
-my($termios, $orgterml, $termlecho, $termlnoecho) = ();
-eval{
- $termios = POSIX::Termios->new();
- $termios->getattr(fileno(STDIN));
- $orgterml = $termios->getlflag();
- $termlecho = ECHO | ECHOK | ICANON;
- $termlnoecho = $orgterml & ~$termlecho;
-};
-
-# Modification of termios for the displaying of passwords (no displays for pressed keys)
-sub cbreak() {
- if ($termios) {
- $termios->setlflag($termlnoecho);
- $termios->setcc(VTIME, 1);
- $termios->setattr(fileno(STDIN), TCSANOW);
- }
-}
-# Modification of termios to return at the normal displaying (after input of the passwords)
-sub cooked() {
- if ($termios) {
- $termios->setlflag($orgterml);
- $termios->setcc(VTIME,0);
- $termios->setattr(fileno(STDIN),TCSANOW);
- }
-}
-END{ cooked() }
-
-if ($defaultlanguage eq "F") {
- print "Outil d'administration à distance de eAthena V.$ver\n";
-} else {
- print "EAthena login-server administration tool V.$ver\n";
-}
-
-# Creation of the symbolic links for call of the program in line command of the shell
-if ($ARGV[0] eq "--makesymlink") {
- symlink $0, "loginserverversion";
- symlink $0, "addaccount";
- symlink $0, "banaccount";
- symlink $0, "banaddaccount";
- symlink $0, "bansetaccount";
- symlink $0, "blockaccount";
- symlink $0, "checkaccount";
- symlink $0, "createaccount";
- symlink $0, "delaccount";
- symlink $0, "emailaccount";
- symlink $0, "getcount";
- symlink $0, "gmaccount";
- symlink $0, "idaccount";
- symlink $0, "infoaccount";
- symlink $0, "kami";
- symlink $0, "kamib";
- symlink $0, "ladminlanguage";
- symlink $0, "listaccount";
- symlink $0, "listBanaccount";
- symlink $0, "listGMaccount";
- symlink $0, "listOKaccount";
- symlink $0, "memoaccount";
- symlink $0, "nameaccount";
- symlink $0, "passwdaccount";
- symlink $0, "reloadGM";
- symlink $0, "searchaccount";
- symlink $0, "sexaccount";
- symlink $0, "stateaccount";
- symlink $0, "timeaddaccount";
- symlink $0, "timesetaccount";
- symlink $0, "unbanaccount";
- symlink $0, "unblockaccount";
- symlink $0, "whoaccount";
- if ($defaultlanguage eq "F") {
- print "Liens symbliques créés.\n";
- } else {
- print "Symbolic links created.\n";
- }
- exit(0);
-}
-
-# Connection to the login-server
-my($so,$er) = ();
-eval{
- $so = IO::Socket::INET->new(
- PeerAddr=> $loginserverip,
- PeerPort=> $loginserverport,
-# Proto => "tcp",
- Timeout => $connecttimeout) or $er = 1;
-};
-if ($er || $@) {
- if ($defaultlanguage eq "F") {
- print "\nImpossible de se connecter au serveur de login [${loginserverip}:$loginserverport] !\n";
- } else {
- print "\nImpossible to have a connection with the login-server [${loginserverip}:$loginserverport] !\n";
- }
- print "$!\n"; # Displaying of the error
- exit(2);
-}
-
-# Sending the administration password
-if ($passenc == 0) {
- print $so pack("v2a24",0x7918,0,$loginserveradminpassword);
- $so->flush();
-} else {
- print $so pack("v",0x791a);
- $so->flush();
- my($buf) = readso(4);
- if (unpack("v",$buf) != 0x01dc) {
- if ($defaultlanguage eq "F") {
- print "Erreur au login (échec de la création de la clef md5).\n";
- } else {
- print "Error at login (failure of the md5 key creation).\n";
- }
- }
- $buf = readso(unpack("x2v",$buf)-4);
- my($md5bin) = md5(($passenc == 1) ? $buf.$loginserveradminpassword : $loginserveradminpassword.$buf);
- print $so pack("v2a16",0x7918,$passenc,$md5bin);
- $so->flush();
-}
-
-# Waiting of the server reply
-my($buf) = readso(3);
-
-if (unpack("v",$buf) != 0x7919 || unpack("x2c",$buf) != 0) {
- if ($defaultlanguage eq "F") {
- print "Erreur de login:\n";
- print " - mot de passe incorrect,\n";
- print " - système d'administration non activé, ou\n";
- print " - IP non autorisée.\n";
- } else {
- print "Error at login:\n";
- print " - incorrect password,\n";
- print " - administration system not activated, or\n";
- print " - unauthorised IP.\n";
- }
- quit();
- exit(4);
-}
-
-if ($defaultlanguage eq "F") {
- print "Connexion établie.\n";
-} else {
- print "Established connection.\n";
-}
-
-#-------------------------------------------------------------------------
-# Here are checked the command lines with arguments and symbolic links (no prompt)
-
-if ($0 =~ /addaccount$/ ||
- (($ARGV[0] eq "-a" || $ARGV[0] eq "--add") && ((shift @ARGV), 1))) {
- my($r) = addaccount($ARGV[0], $ARGV[1], $ARGV[2]);
- quit();
- exit($r);
-} elsif ($0 =~ /banaccount$/ || $0 =~ /banishaccount$/ ||
- (($ARGV[0] eq "-b" || $ARGV[0] eq "--ban" || $ARGV[0] eq "--banish") && ((shift @ARGV), 1))) {
- my($r) = bansetaccount($ARGV[1], $ARGV[2], $ARGV[0]);
- quit();
- exit($r);
-} elsif ($0 =~ /banaddaccount$/ ||
- (($ARGV[0] eq "-ba" || $ARGV[0] eq "--banadd") && ((shift @ARGV), 1))) {
- my($r) = banaddaccount($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /bansetaccount$/ ||
- (($ARGV[0] eq "-bs" || $ARGV[0] eq "--banset") && ((shift @ARGV), 1))) {
- my($r) = bansetaccount($ARGV[0], $ARGV[1], $ARGV[2]);
- quit();
- exit($r);
-} elsif ($0 =~ /blockaccount$/ ||
- (($ARGV[0] eq "-bl" || $ARGV[0] eq "--block") && ((shift @ARGV), 1))) {
- my($r) = changestate($ARGV[0], 5, "");
- quit();
- exit($r);
-} elsif ($0 =~ /checkaccount$/ ||
- (($ARGV[0] eq "-check" || $ARGV[0] eq "--check") && ((shift @ARGV), 1))) {
- my($r) = checkaccount($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /createaccount$/ ||
- (($ARGV[0] eq "-c" || $ARGV[0] eq "--create") && ((shift @ARGV), 1))) {
- my($r) = createaccount($ARGV[0], $ARGV[1], $ARGV[2], $ARGV[3]);
- quit();
- exit($r);
-} elsif ($0 =~ /delaccount$/ ||
- (($ARGV[0] eq "-d" || $ARGV[0] eq "--del") && ((shift @ARGV), 1))) {
- my($r) = delaccount($ARGV[0]);
- quit();
- exit($r);
-} elsif ($0 =~ /emailaccount$/ ||
- (($ARGV[0] eq "-e" || $ARGV[0] eq "--email") && ((shift @ARGV), 1))) {
- my($r) = changeemail($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /getcount$/ ||
- (($ARGV[0] eq "-g" || $ARGV[0] eq "--getcount") && ((shift @ARGV), 1))) {
- my($r) = getlogincount();
- quit();
- exit($r);
-} elsif ($0 =~ /gmaccount$/ ||
- (($ARGV[0] eq "-gm" || $ARGV[0] eq "--gm") && ((shift @ARGV), 1))) {
- my($r) = changegmlevel($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /id$/ ||
- (($ARGV[0] eq "-i" || $ARGV[0] eq "--id") && ((shift @ARGV), 1))) {
- my($r) = idaccount($ARGV[0]);
- quit();
- exit($r);
-} elsif ($0 =~ /infoaccount$/ ||
- (($ARGV[0] eq "-info" || $ARGV[0] eq "--info") && ((shift @ARGV), 1))) {
- my($r) = infoaccount($ARGV[0]);
- quit();
- exit($r);
-} elsif ($0 =~ /kami$/ ||
- (($ARGV[0] eq "-kami" || $ARGV[0] eq "--kami") && ((shift @ARGV), 1))) {
- my($r) = sendbroadcast(0, $ARGV[0]);
- quit();
- exit($r);
-} elsif ($0 =~ /kamib$/ ||
- (($ARGV[0] eq "-kamib" || $ARGV[0] eq "--kamib") && ((shift @ARGV), 1))) {
- my($r) = sendbroadcast(0x10, $ARGV[0]);
- quit();
- exit($r);
-} elsif ($0 =~ /ladminlanguage$/ ||
- (($ARGV[0] eq "-lang" || $ARGV[0] eq "--language") && ((shift @ARGV), 1))) {
- my($r) = changelanguage($ARGV[0]);
- quit();
- exit($r);
-} elsif ($0 =~ /listaccount$/ ||
- (($ARGV[0] eq "-l" || $ARGV[0] eq "--list") && ((shift @ARGV), 1))) {
- my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 0); # 0: to list all
- quit();
- exit($r);
-} elsif ($0 =~ /listBanaccount$/ ||
- (($ARGV[0] eq "-lBan" || $ARGV[0] eq "--listBan") && ((shift @ARGV), 1))) {
- my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 3); # 3: to list only accounts with state or banished
- quit();
- exit($r);
-} elsif ($0 =~ /listGMaccount$/ ||
- (($ARGV[0] eq "-lGM" || $ARGV[0] eq "--listGM") && ((shift @ARGV), 1))) {
- my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 1); # 1: to list only GM
- quit();
- exit($r);
-} elsif ($0 =~ /listOKaccount$/ ||
- (($ARGV[0] eq "-lOK" || $ARGV[0] eq "--listOK") && ((shift @ARGV), 1))) {
- my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 4); # 4: to list only accounts without state and not banished
- quit();
- exit($r);
-} elsif ($0 =~ /loginserverversion$/ ||
- (($ARGV[0] eq "-v" || $ARGV[0] eq "--version") && ((shift @ARGV), 1))) {
- my($r) = checkloginversion();
- quit();
- exit($r);
-} elsif ($0 =~ /memoaccount$/ ||
- (($ARGV[0] eq "-m" || $ARGV[0] eq "--memo") && ((shift @ARGV), 1))) {
- my($r) = changememo($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /nameaccount$/ ||
- (($ARGV[0] eq "-n" || $ARGV[0] eq "--name") && ((shift @ARGV), 1))) {
- my($r) = nameaccount(int($ARGV[0]));
- quit();
- exit($r);
-} elsif ($0 =~ /passwdaccount$/ ||
- (($ARGV[0] eq "-p" || $ARGV[0] eq "--passwd") && ((shift @ARGV), 1))) {
- my($r) = changepasswd($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /reloadGM$/ ||
- (($ARGV[0] eq "-r" || $ARGV[0] eq "--reloadGM") && ((shift @ARGV), 1))) {
- my($r) = reloadGM();
- quit();
- exit($r);
-} elsif ($0 =~ /searchaccount$/ ||
- (($ARGV[0] eq "-s" || $ARGV[0] eq "--search") && ((shift @ARGV), 1))) {
- my($r) = searchaccount($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /sexaccount$/ ||
- (($ARGV[0] eq "-sex" || $ARGV[0] eq "--sex") && ((shift @ARGV), 1))) {
- my($r) = changesex($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /stateaccount$/ ||
- (($ARGV[0] eq "-t" || $ARGV[0] eq "--state") && ((shift @ARGV), 1))) {
- my($r) = changestate($ARGV[0], $ARGV[1], $ARGV[2]);
- quit();
- exit($r);
-} elsif ($0 =~ /timeaddaccount$/ ||
- (($ARGV[0] eq "-ta" || $ARGV[0] eq "--timeadd") && ((shift @ARGV), 1))) {
- my($r) = timeaddaccount($ARGV[0], $ARGV[1]);
- quit();
- exit($r);
-} elsif ($0 =~ /timesetaccount$/ ||
- (($ARGV[0] eq "-ts" || $ARGV[0] eq "--timeset") && ((shift @ARGV), 1))) {
- my($r) = timesetaccount($ARGV[0], $ARGV[1], $ARGV[2]);
- quit();
- exit($r);
-} elsif ($0 =~ /unbanaccount$/ || $0 =~ /unbanishaccount$/ ||
- (($ARGV[0] eq "-uba" || $ARGV[0] eq "--unban" || $ARGV[0] eq "--unbanish") && ((shift @ARGV), 1))) {
- my($r) = bansetaccount($ARGV[0], 0, "");
- quit();
- exit($r);
-} elsif ($0 =~ /unblockaccount$/ ||
- (($ARGV[0] eq "-ubl" || $ARGV[0] eq "--unblock") && ((shift @ARGV), 1))) {
- my($r) = changestate($ARGV[0], 0, "");
- quit();
- exit($r);
-} elsif ($0 =~ /whoaccount$/ ||
- (($ARGV[0] eq "-w" || $ARGV[0] eq "--who") && ((shift @ARGV), 1))) {
- my($r) = whoaccount($ARGV[0]);
- quit();
- exit($r);
-}
-
-#-------------------------------------------------------------------------
-if ($defaultlanguage eq "F") {
- print "Lecture de la version du serveur de login...\n";
-} else {
- print "Reading of the version of the login-server...\n";
-}
-checkloginversion();
-
-# Set the prompt line
-my($term) = new Term::ReadLine "ladmin";
-
-# Here begin the infinite loop to read prompts
-while(1) {
- # Displaying of the prompt
- print "\n";
- if ($defaultlanguage eq "F") {
- printf "\033[32mPour afficher les commandes, tapez 'Entrée'.\033[0m\n";
- } else {
- printf "\033[32mTo list the commands, type 'enter'.\033[0m\n";
- }
- my($cmd) = $term->readline("ladmin> ");
- # split and recovery of the input
- chomp $cmd; # remove cariage return
- $cmd =~ s/\x1b\[\d*\w//g; # remove (esc)[(number)(1alpha) = screen control sequence
- $cmd =~ s/[\x00-\x1f]//g; # remove control char
- my($command, $parameters) = split /\s+/,$cmd,2; # extract command and parameters
- $command = lc($command); # command in lowercase
- my(@paramlist) = split /\s+/,$parameters; # get list of parameters
-
- if ($command eq "?" || $command eq "") {
- $command = "aide" if ($defaultlanguage eq "F");
- $command = "help" if ($defaultlanguage ne "F");
- }
-
- # Analyse of the command
- eval {
-# help
- if ("aide" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'?
- displayhelp("aide", $paramlist[0]);
- } elsif ("help" =~ /^\Q$command/) {
- displayhelp("help", $paramlist[0]);
-
-# general commands
- } elsif ("add" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(.*)/)) {
- addaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> <sex> <password>
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- addaccount($paramlist[0], $paramlist[1], ""); # <account_name> <sex> <password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(.*)/)) {
- addaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> <sex> <password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- addaccount($paramlist[0], $paramlist[1], ""); # <account_name> <sex> <password>
- } else {
- @paramlist = split /\s+/,$parameters;
- addaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> <sex> <password>
- }
-
- } elsif ($command eq "ban" || ("banish" =~ /^\Q$command/ && length($command) >= 4)) {
- if (@paramlist = ($parameters =~ m/^(\S+)\s+(\S+)\s+"(.*)"/)) { # yyyy/mm/dd hh:mm:ss <account_name>
- bansetaccount($paramlist[2], $paramlist[0], $paramlist[1]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^(\S+)\s+(\S+)\s+'(.*)'/)) { # yyyy/mm/dd hh:mm:ss <account_name>
- bansetaccount($paramlist[2], $paramlist[0], $paramlist[1]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } else {
- @paramlist = split /\s+/,$parameters,3; # yyyy/mm/dd hh:mm:ss <account_name>
- bansetaccount($paramlist[2], $paramlist[0], $paramlist[1]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- }
-
- } elsif (("banadd" =~ /^\Q$command/ || $command eq "ba") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- banaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- banaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier>
- } else {
- @paramlist = split /\s+/,$parameters;
- banaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier>
- }
-
- } elsif (("banset" =~ /^\Q$command/ || $command eq "bs") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)/)) {
- bansetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- bansetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)/)) {
- bansetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- bansetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } else {
- @paramlist = split /\s+/,$parameters;
- bansetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- }
-
- } elsif ("block" =~ /^\Q$command/ && length($command) >= 2) {
- if (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- changestate($paramlist[0], 5, ""); # <account_name> <new_state> <error_message_#7>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- changestate($paramlist[0], 5, ""); # <account_name> <new_state> <error_message_#7>
- } else {
- @paramlist = split /\s+/,$parameters,1;
- changestate($paramlist[0], 5, ""); # <account_name> <new_state> <error_message_#7>
- }
-
- } elsif ("check" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(.*)/)) {
- checkaccount($paramlist[0], $paramlist[1]); # <account_name> <password>
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- checkaccount($paramlist[0], ""); # <account_name> <password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(.*)/)) {
- checkaccount($paramlist[0], $paramlist[1]); # <account_name> <password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- checkaccount($paramlist[0], ""); # <account_name> <password>
- } else {
- @paramlist = split /\s+/,$parameters;
- checkaccount($paramlist[0], $paramlist[1]); # <account_name> <password>
- }
-
- } elsif ("create" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)\s+(.*)/)) {
- createaccount($paramlist[0], $paramlist[1], $paramlist[2], $paramlist[3]); # <account_name> <sex> <email> <password>
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)/)) {
- createaccount($paramlist[0], $paramlist[1], $paramlist[2], ""); # <account_name> <sex> <email> <password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)\s+(.*)/)) {
- createaccount($paramlist[0], $paramlist[1], $paramlist[2], $paramlist[3]); # <account_name> <sex> <email> <password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)/)) {
- createaccount($paramlist[0], $paramlist[1], $paramlist[2], ""); # <account_name> <sex> <email> <password>
- } else {
- @paramlist = split /\s+/,$parameters;
- createaccount($paramlist[0], $paramlist[1], $paramlist[2], $paramlist[3]); # <account_name> <sex> <email> <password>
- }
-
- } elsif ("del" =~ /^\Q$command/ || "delete" =~ /^\Q$command/) {
- if (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- delaccount($paramlist[0]); # <account_name>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- delaccount($paramlist[0]); # <account_name>
- } else {
- @paramlist = split /\s+/,$parameters,1;
- delaccount($paramlist[0]); # <account_name>
- }
-
- } elsif ("email" =~ /^\Q$command/ && $command ne "e") { # check 1 letter command: 'email', 'end' or 'exit'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- changeemail($paramlist[0], $paramlist[1]); # <account_name> <email>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- changeemail($paramlist[0], $paramlist[1]); # <account_name> <email>
- } else {
- @paramlist = split /\s+/,$parameters;
- changeemail($paramlist[0], $paramlist[1]); # <account_name> <email>
- }
-
- } elsif ("getcount" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'?
- getlogincount();
-
- } elsif ("gm" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- changegmlevel($paramlist[0], int($paramlist[1])); # <account_name> <GM_level>
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- changegmlevel($paramlist[0], 0); # <account_name> <GM_level>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- changegmlevel($paramlist[0], int($paramlist[1])); # <account_name> <GM_level>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- changegmlevel($paramlist[0], 0); # <account_name> <GM_level>
- } else {
- @paramlist = split /\s+/,$parameters;
- changegmlevel($paramlist[0], int($paramlist[1])); # <account_name> <GM_level>
- }
-
- } elsif ("id" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'?
- if (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- idaccount($paramlist[0]); # <account_name>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- idaccount($paramlist[0]); # <account_name>
- } else {
- @paramlist = split /\s+/,$parameters,1;
- idaccount($paramlist[0]); # <account_name>
- }
-
- } elsif ("info" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'?
- infoaccount(int($paramlist[0])); # <account_id>
-
- } elsif ($command eq "kami") { # check all letters command: 'kami' or 'kamib'?
- @paramlist = split /\s+/,$parameters,1;
- sendbroadcast(0, $paramlist[0]); # <type> <message>
-
- } elsif ($command eq "kamib") { # check all letters command: 'kami' or 'kamib'?
- @paramlist = split /\s+/,$parameters,1;
- sendbroadcast(0x10, $paramlist[0]); # <type> <message>
-
- } elsif ("language" =~ /^\Q$command/ && $command ne "l") { # check 1 letter command: 'list' or 'language'?
- changelanguage($paramlist[0]); # <language>
-
- } elsif (("list" =~ /^\Q$command/ || $command eq "ls") && $command ne "l") { # check 1 letter command: 'list' or 'language'?
- listaccount(int($paramlist[0]), int($paramlist[1]), 0); # [start_id [end_id]] 0: to list all
-
- } elsif (("listban" =~ /^\Q$command/ || $command eq "lsban") && $command ne "l") { # need to specificaly write Ban to have this list # check 1 letter command: 'list' or 'language'?
- listaccount(int($paramlist[0]), int($paramlist[1]), 3); # [start_id [end_id]] 3: to list only accounts with state or banished
-
- } elsif (("listgm" =~ /^\Q$command/ || $command eq "lsgm") && $command ne "l") { # need to specificaly write GM to have this list # check 1 letter command: 'list' or 'language'?
- listaccount(int($paramlist[0]), int($paramlist[1]), 1); # [start_id [end_id]] 1: to list only GM
-
- } elsif (("listok" =~ /^\Q$command/ || $command eq "lsok") && $command ne "l") { # need to specificaly write OK to have this list # check 1 letter command: 'list' or 'language'?
- listaccount(int($paramlist[0]), int($paramlist[1]), 4); # [start_id [end_id]] 4: to list only accounts without state and not banished
-
- } elsif ("memo" =~ /^\Q$command/) {
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(.*)/)) {
- changememo($paramlist[0], $paramlist[1]); # <account_name> <memo>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(.*)/)) {
- changememo($paramlist[0], $paramlist[1]); # <account_name> <memo>
- } else {
- @paramlist = split /\s+/,$parameters,2;
- changememo($paramlist[0], $paramlist[1]); # <account_name> <memo>
- }
-
- } elsif ("name" =~ /^\Q$command/) {
- nameaccount(int($paramlist[0])); # <account_id>
-
- } elsif ("passwd" =~ /^\Q$command/ || "password" =~ /^\Q$command/) {
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(.*)/)) {
- changepasswd($paramlist[0], $paramlist[1]); # <account_name> <new_password>
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- changepasswd($paramlist[0], ""); # <account_name> <new_password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(.*)/)) {
- changepasswd($paramlist[0], $paramlist[1]); # <account_name> <new_password>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- changepasswd($paramlist[0], ""); # <account_name> <new_password>
- } else {
- @paramlist = split /\s+/,$parameters,2;
- changepasswd($paramlist[0], $paramlist[1]); # <account_name> <new_password>
- }
-
- } elsif ("reloadgm" =~ /^\Q$command/) {
- reloadGM();
-
- } elsif ("search" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'?
- $command ne "se") { # check 2 letters command: 'search' or 'sex'?
- if (@paramlist = ($parameters =~ m/^(-{1,2}[re]\S*)\s+(.*)/)) {
- searchaccount($paramlist[0], $paramlist[1]); # -r/-e/--expr/--regex <expression> | <expression>
- } else {
- @paramlist = split /\s+/,$parameters,1;
- searchaccount($paramlist[0], ""); # -r/-e/--expr/--regex <expression> | <expression>
- }
-
- } elsif ("sex" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'?
- $command ne "se") { # check 2 letters command: 'search' or 'sex'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- changesex($paramlist[0], $paramlist[1]); # <account_name> <sex>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- changesex($paramlist[0], $paramlist[1]); # <account_name> <sex>
- } else {
- @paramlist = split /\s+/,$parameters;
- changesex($paramlist[0], $paramlist[1]); # <account_name> <sex>
- }
-
- } elsif ("state" =~ /^\Q$command/ && $command ne "s") { # check 1 letter command: 'search', 'state' or 'sex'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\d+)\s+(.*)/)) {
- changestate($paramlist[0], int($paramlist[1]), $paramlist[2]); # <account_name> <new_state> <error_message_#7>
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\d+)/)) {
- changestate($paramlist[0], int($paramlist[1]), ""); # <account_name> <new_state> <error_message_#7>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\d+)\s+(.*)/)) {
- changestate($paramlist[0], int($paramlist[1]), $paramlist[2]); # <account_name> <new_state> <error_message_#7>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\d+)/)) {
- changestate($paramlist[0], int($paramlist[1]), ""); # <account_name> <new_state> <error_message_#7>
- } else {
- @paramlist = split /\s+/,$parameters,3;
- changestate($paramlist[0], int($paramlist[1]), $paramlist[2]); # <account_name> <new_state> <error_message_#7>
- }
-
- } elsif (("timeadd" =~ /^\Q$command/ || $command eq "ta") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- timeaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- timeaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier>
- } else {
- @paramlist = split /\s+/,$parameters;
- timeaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier>
- }
-
- } elsif (("timeset" =~ /^\Q$command/ || $command eq "ts") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'?
- if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)/)) {
- timesetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) {
- timesetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)/)) {
- timesetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) {
- timesetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } else {
- @paramlist = split /\s+/,$parameters;
- timesetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss]
- }
-
- } elsif ($command eq "unban" || ("unbanish" =~ /^\Q$command/ && length($command) >= 4)) {
- if (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- bansetaccount($paramlist[0], 0, ""); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- bansetaccount($paramlist[0], 0, ""); # <account_name> yyyy/mm/dd [hh:mm:ss]
- } else {
- @paramlist = split /\s+/,$parameters,1;
- bansetaccount($paramlist[0], 0, ""); # <account_name> yyyy/mm/dd [hh:mm:ss]
- }
-
- } elsif ("unblock" =~ /^\Q$command/ && length($command) >= 4) {
- if (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- changestate($paramlist[0], 0, ""); # <account_name> <new_state> <error_message_#7>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- changestate($paramlist[0], 0, ""); # <account_name> <new_state> <error_message_#7>
- } else {
- @paramlist = split /\s+/,$parameters,1;
- changestate($paramlist[0], 0, ""); # <account_name> <new_state> <error_message_#7>
- }
-
- } elsif ("version" =~ /^\Q$command/) {
- checkloginversion();
-
- } elsif ("who" =~ /^\Q$command/) {
- if (@paramlist = ($parameters =~ m/^"(.*)"/)) {
- whoaccount($paramlist[0]); # <account_name>
- } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) {
- whoaccount($paramlist[0]); # <account_name>
- } else {
- @paramlist = split /\s+/,$parameters,1;
- whoaccount($paramlist[0]); # <account_name>
- }
-
-# quit
- } elsif ("quit" =~ /^\Q$command/ ||
- (("end" =~ /^\Q$command/ || "exit" =~ /^\Q$command/) && $command ne "e")) { # check 1 letter command: 'email', 'end' or 'exit'?
- last;
-
-# unknown command
- } elsif ($command) {
- if ($defaultlanguage eq "F") {
- print "Commande inconnue [".$command."]\n";
- } else {
- print "Unknown command [".$command."]\n";
- }
- }
-# $term->addhistory($cmd) if $command;
- };
- if ($@) {
- if ($defaultlanguage eq "F") {
- print "Erreur [".$command."]\n$@";
- } else {
- print "Error [".$command."]\n$@";
- }
- }
-};
-
-# End of the software
-quit();
-
-if ($defaultlanguage eq "F") {
- print "Au revoir.\n";
-} else {
- print "Bye.\n";
-}
-exit(0);
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Displaying of the version of the login-server
-sub checkloginversion() {
- print $so pack("v",30000); # 0x7530
- $so->flush();
- $buf = readso(10);
- # Analyse du Packet
- my($ret, $maver, $miver, $rev, $dev, $mod, $type, $mdver) = unpack("vc6v", $buf);
- if ($ret != 30001) { #0x7531
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- exit(6);
- }
-
- print " Login-Server [$loginserverip:$loginserverport]\n";
- printf " eAthena version %s-%d.%d", ("stable", "dev")[$dev], $maver, $miver;
- printf " revision %d", $rev if $rev;
- printf "%s%d.\n", ("", "-mod")[$mod], $mdver;
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Displaying of the help
-sub displayhelp() {
- my($help, $receivedcommand) = @_;
-
- my($command) = lc($receivedcommand); # command in lowercase
-
- if ($command eq "") {
- $command = "not a command"; # any value that is not a command
- }
-
- if ($command eq "?") {
- $command = "aide" if ($defaultlanguage eq "F");
- $command = "help" if ($defaultlanguage ne "F");
- }
-
- if ($help eq "aide") {
- if ("aide" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'?
- printf "aide/help/?\n";
- printf " Affiche la description des commandes\n";
- printf "aide/help/? [commande]\n";
- printf " Affiche la description de la commande specifiée\n";
- } elsif ("help" =~ /^\Q$command/) {
- printf "aide/help/?\n";
- printf " Display the description of the commands\n";
- printf "aide/help/? [command]\n";
- printf " Display the description of the specified command\n";
- } elsif ("add" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'?
- printf "add <nomcompte> <sexe> <motdepasse>\n";
- printf " Crée un compte avec l'email par défaut (a\@a.com).\n";
- printf " Concernant le sexe, seule la première lettre compte (F ou M).\n";
- printf " L'e-mail est a\@a.com (e-mail par défaut). C'est comme n'avoir aucun e-mail.\n";
- printf " Lorsque motdepasse est omis, la saisie se fait sans que la frappe se voit.\n";
- printf " <exemple> add testname Male testpass\n";
- } elsif ($command eq "ban" || ("banish" =~ /^\Q$command/ && length($command) >= 4)) {
- printf "ban/banish aaaa/mm/jj hh:mm:ss <nomcompte>\n";
- printf " Change la date de fin de bannissement d'un compte.\n";
- printf " La différence avec banset est la position du nom du compte.\n";
- } elsif (("banadd" =~ /^\Q$command/ || $command eq "ba") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'?
- printf "banadd <nomcompte> <Modificateur>\n";
- printf " Ajoute ou soustrait du temps à la date de banissement d'un compte.\n";
- printf " Les modificateurs sont construits comme suit:\n";
- printf " Valeur d'ajustement (-1, 1, +1, etc...)\n";
- printf " Elément modifié:\n";
- printf " a ou y: année\n";
- printf " m: mois\n";
- printf " j ou d: jour\n";
- printf " h: heure\n";
- printf " mn: minute\n";
- printf " s: seconde\n";
- printf " <exemple> banadd testname +1m-2mn1s-6a\n";
- printf " Cette exemple ajoute 1 mois et une seconde, et soustrait 2 minutes\n";
- printf " et 6 ans dans le même temps.\n";
- printf "NOTE: Si vous modifez la date de banissement d'un compte non bani,\n";
- printf " vous indiquez comme date (le moment actuel +- les ajustements)\n";
- } elsif (("banset" =~ /^\Q$command/ || $command eq "bs") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'?
- printf "banset <nomcompte> aaaa/mm/jj [hh:mm:ss]\n";
- printf " Change la date de fin de bannissement d'un compte.\n";
- printf " Heure par défaut: 23:59:59\n";
- printf "banset <nomcompte> 0\n";
- printf " Débanni un compte (0 = de-banni).\n";
- } elsif ("block" =~ /^\Q$command/ && length($command) >= 2) {
- printf "block <nom compte>\n";
- printf " Place le status d'un compte à 5 (You have been blocked by the GM Team).\n";
- printf " La commande est l'équivalent de state <nom_compte> 5.\n";
- } elsif ("check" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'?
- printf "check <nomcompte> <motdepasse>\n";
- printf " Vérifie la validité d'un mot de passe pour un compte\n";
- printf " NOTE: Le serveur n'enverra jamais un mot de passe.\n";
- printf " C'est la seule méthode que vous possédez pour savoir\n";
- printf " si un mot de passe est le bon. L'autre méthode est\n";
- printf " d'avoir un accès ('physique') au fichier des comptes.\n";
- } elsif ("create" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'?
- printf "create <nomcompte> <sexe> <email> <motdepasse>\n";
- printf " Comme la commande add, mais avec l'e-mail en plus.\n";
- printf " <exemple> create testname Male mon\@mail.com testpass\n";
- } elsif ("del" =~ /^\Q$command/ || "delete" =~ /^\Q$command/) {
- printf "del <nomcompte>\n";
- printf " Supprime un compte.\n";
- printf " La commande demande confirmation. Après confirmation, le compte est détruit.\n";
- } elsif ("email" =~ /^\Q$command/ && $command ne "e") { # check 1 letter command: 'email', 'end' or 'exit'?
- printf "email <nomcompte> <email>\n";
- printf " Modifie l'e-mail d'un compte.\n";
- } elsif ("getcount" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'?
- printf "getcount\n";
- printf " Donne le nombre de joueurs en ligne par serveur de char.\n";
- } elsif ("gm" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'?
- printf "gm <nomcompte> [Niveau_GM]\n";
- printf " Modifie le niveau de GM d'un compte.\n";
- printf " Valeur par défaut: 0 (suppression du niveau de GM).\n";
- printf " <exemple> gm nomtest 80\n";
- } elsif ("id" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'?
- printf "id <nomcompte>\n";
- printf " Donne l'id d'un compte.\n";
- } elsif ("info" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'?
- printf "info <idcompte>\n";
- printf " Affiche les informations sur un compte.\n";
- } elsif ($command eq "kami") { # check all letters command: 'kami' or 'kamib'?
- printf "kami <message>\n";
- printf " Envoi un message général sur tous les serveurs de map (en jaune).\n";
- } elsif ($command eq "kamib") { # check all letters command: 'kami' or 'kamib'?
- printf "kamib <message>\n";
- printf " Envoi un message général sur tous les serveurs de map (en bleu).\n";
- } elsif ("language" =~ /^\Q$command/ && $command ne "l") { # check 1 letter command: 'list' or 'language'?
- printf("language <langue>\n");
- printf(" Change la langue d'affichage.\n");
- printf(" Langues possibles: 'Français' ou 'English'.\n");
- } elsif (("list" =~ /^\Q$command/ || $command eq "ls") && $command ne "l") { # check 1 letter command: 'list' or 'language'?
- printf "list/ls [Premier_id [Dernier_id]]\n";
- printf " Affiche une liste de comptes.\n";
- printf " 'Premier_id', 'Dernier_id': indique les identifiants de départ et de fin.\n";
- printf " La recherche par nom n'est pas possible avec cette commande.\n";
- printf " <example> list 10 9999999\n";
- } elsif (("listban" =~ /^\Q$command/ || $command eq "lsban") && $command ne "l") { # need to specificaly write Ban to have this list # check 1 letter command: 'list' or 'language'?
- printf "listBan/lsBan [Premier_id [Dernier_id]]\n";
- printf " Comme list/ls, mais seulement pour les comptes GM avec un statut ou bannis.\n";
- } elsif (("listgm" =~ /^\Q$command/ || $command eq "lsgm") && $command ne "l") { # need to specificaly write GM to have this list # check 1 letter command: 'list' or 'language'?
- printf "listGM/lsGM [Premier_id [Dernier_id]]\n";
- printf " Comme list/ls, mais seulement pour les comptes GM.\n";
- } elsif (("listok" =~ /^\Q$command/ || $command eq "lsok") && $command ne "l") { # need to specificaly write OK to have this list # check 1 letter command: 'list' or 'language'?
- printf "listOK/lsOK [Premier_id [Dernier_id]]\n";
- printf " Comme list/ls, mais seulement pour les comptes sans statut et non bannis.\n";
- } elsif ("memo" =~ /^\Q$command/) {
- printf "memo <nomcompte> <memo>\n";
- printf " Modifie le mémo d'un compte.\n";
- printf " 'memo': Il peut avoir jusqu'à 253 caractères (avec des espaces ou non).\n";
- } elsif ("name" =~ /^\Q$command/) {
- printf "name <idcompte>\n";
- printf " Donne le nom d'un compte.\n";
- } elsif ("passwd" =~ /^\Q$command/ || "password" =~ /^\Q$command/) {
- printf "passwd <nomcompte> <nouveaumotdepasse>\n";
- printf " Change le mot de passe d'un compte.\n";
- printf " Lorsque nouveaumotdepasse est omis,\n";
- printf " la saisie se fait sans que la frappe ne se voit.\n";
- } elsif ("reloadgm" =~ /^\Q$command/) {
- printf "reloadGM\n";
- printf " Reload GM configuration file\n";
- } elsif ("search" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'?
- $command ne "se") { # check 2 letters command: 'search' or 'sex'?
- printf "search <expression>\n";
- printf " Cherche des comptes.\n";
- printf " Affiche les comptes dont les noms correspondent.\n";
- printf "search -r/-e/--expr/--regex <expression>\n";
- printf " Cherche des comptes par expression regulière.\n";
- printf " Affiche les comptes dont les noms correspondent.\n";
- } elsif ("sex" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'?
- $command ne "se") { # check 2 letters command: 'search' or 'sex'?
- printf "sex <nomcompte> <sexe>\n";
- printf " Modifie le sexe d'un compte.\n";
- printf " <exemple> sex testname Male\n";
- } elsif ("state" =~ /^\Q$command/ && $command ne "s") { # check 1 letter command: 'search', 'state' or 'sex'?
- printf "state <nomcompte> <nouveaustatut> <message_erreur_7>\n";
- printf " Change le statut d'un compte.\n";
- printf " 'nouveaustatut': Le statut est le même que celui du packet 0x006a + 1.\n";
- printf " les possibilités sont:\n";
- printf " 0 = Compte ok\n";
- printf " 1 = Unregistered ID\n";
- printf " 2 = Incorrect Password\n";
- printf " 3 = This ID is expired\n";
- printf " 4 = Rejected from Server\n";
- printf " 5 = You have been blocked by the GM Team\n";
- printf " 6 = Your Game's EXE file is not the latest version\n";
- printf " 7 = You are Prohibited to log in until...\n";
- printf " 8 = Server is jammed due to over populated\n";
- printf " 9 = No MSG\n";
- printf " 100 = This ID has been totally erased\n";
- printf " all other values are 'No MSG', then use state 9 please.\n";
- printf " 'message_erreur_7': message du code erreur 6 =\n";
- printf " = Your are Prohibited to log in until... (packet 0x006a)\n";
- } elsif (("timeadd" =~ /^\Q$command/ || $command eq "ta") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'?
- printf "timeadd <nomcompte> <modificateur>\n";
- printf " Ajoute/soustrait du temps à la limite de validité d'un compte.\n";
- printf " Le modificateur est composé comme suit:\n";
- printf " Valeur modificatrice (-1, 1, +1, etc...)\n";
- printf " Elément modifié:\n";
- printf " a ou y: année\n";
- printf " m: mois\n";
- printf " j ou d: jour\n";
- printf " h: heure\n";
- printf " mn: minute\n";
- printf " s: seconde\n";
- printf " <exemple> timeadd testname +1m-2mn1s-6a\n";
- printf " Cette exemple ajoute 1 mois et une seconde, et soustrait 2 minutes\n";
- printf " et 6 ans dans le même temps.\n";
- printf "NOTE: Vous ne pouvez pas modifier une limite de validité illimitée. Si vous\n";
- printf " désirez le faire, c'est que vous voulez probablement créer un limite de\n";
- printf " validité limitée. Donc, en premier, fixé une limite de valitidé.\n";
- } elsif (("timeset" =~ /^\Q$command/ || $command eq "ts") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'?
- printf "timeset <nomcompte> aaaa/mm/jj [hh:mm:ss]\n";
- printf " Change la limite de validité d'un compte.\n";
- printf " Heure par défaut: 23:59:59\n";
- printf "timeset <nomcompte> 0\n";
- printf " Donne une limite de validité illimitée (0 = illimitée).\n";
- } elsif ($command eq "unban" || ("unbanish" =~ /^\Q$command/ && length($command) >= 4)) {
- printf "unban/unbanish <nom compte>\n";
- printf " Ote le banissement d'un compte.\n";
- printf " La commande est l'équivalent de banset <nom_compte> 0.\n";
- } elsif ("unblock" =~ /^\Q$command/ && length($command) >= 4) {
- printf "unblock <nom compte>\n";
- printf " Place le status d'un compte à 0 (Compte ok).\n";
- printf " La commande est l'équivalent de state <nom_compte> 0.\n";
- } elsif ("version" =~ /^\Q$command/) {
- printf "version\n";
- printf " Affiche la version du login-serveur.\n";
- } elsif ("who" =~ /^\Q$command/) {
- printf "who <nomcompte>\n";
- printf " Affiche les informations sur un compte.\n";
- } elsif ("quit" =~ /^\Q$command/ ||
- (("end" =~ /^\Q$command/ || "exit" =~ /^\Q$command/) && $command ne "e")) { # check 1 letter command: 'email', 'end' or 'exit'?\n";
- printf "quit/end/exit\n";
- printf " Fin du programme d'administration.\n";
- } else {
- if ($receivedcommand ne "") {
- printf "Commande inconnue [%s] pour l'aide. Affichage de toutes les commandes.\n", $receivedcommand;
- }
- print << "ENDOFAIDE";
- aide/help/? -- Affiche cet aide
- aide/help/? [commande] -- Affiche l'aide de la commande
- add <nomcompte> <sexe> <motdepasse> -- Crée un compte (sans email)
- ban/banish aaaa/mm/jj hh:mm:ss <nomcompte>-- Change la date finale de banismnt
- banadd/ba <nomcompte> <modificateur> -- Ajout/soustrait du temps à la
- exemple: ba moncompte +1m-2mn1s-2y date finale de banissement
- banset/bs <nomcompte> aaaa/mm/jj [hh:mm:ss] -- Change la date fin de banisemnt
- banset/bs <nomcompte> 0 -- Dé-banis un compte.
- block <nom compte> -- Mets le status d'un compte à 5 (blocked by the GM Team)
- check <nomcompte> <motdepasse> -- Vérifie un mot de passe d'un compte
- create <nomcompte> <sexe> <email> <motdepasse> -- Crée un compte (avec email)
- del <nomcompte> -- Supprime un compte
- email <nomcompte> <email> -- Modifie l'e-mail d'un compte
- getcount -- Donne le nb de joueurs en ligne
- gm <nomcompte> [Niveau_GM] -- Modifie le niveau de GM d'un compte
- id <nomcompte> -- Donne l'id d'un compte
- info <idcompte> -- Affiche les infos sur un compte
- kami <message> -- Envoi un message général (en jaune)
- kamib <message> -- Envoi un message général (en bleu)
- language <langue> -- Change la langue d'affichage.
- list/ls [Premier_id [Dernier_id] ] -- Affiche une liste de comptes
- listBan/lsBan [Premier_id [Dernier_id] ]-- Affiche une liste de comptes
- avec un statut ou bannis
- listGM/lsGM [Premier_id [Dernier_id] ] -- Affiche une liste de comptes GM
- listOK/lsOK [Premier_id [Dernier_id] ] -- Affiche une liste de comptes
- sans status et non bannis
- memo <nomcompte> <memo> -- Modifie le memo d'un compte
- name <idcompte> -- Donne le nom d'un compte
- passwd <nomcompte> <nouveaumotdepasse> -- Change le mot de passe d'un compte
- quit/end/exit -- Fin du programme d'administation
- reloadGM -- Recharger le fichier de config des GM
- search <expression> -- Cherche des comptes
- search -e/-r/--expr/--regex <expression> -- Cherche des comptes par REGEX
- sex <nomcompte> <sexe> -- Modifie le sexe d'un compte
- state <nomcompte> <nouveaustatut> <messageerr7> -- Change le statut d'1 compte
- timeadd/ta <nomcompte> <modificateur> -- Ajout/soustrait du temps à la
- exemple: ta moncompte +1m-2mn1s-2y limite de validité
- timeset/ts <nomcompte> aaaa/mm/jj [hh:mm:ss] -- Change la limite de validité
- timeset/ts <nomcompte> 0 -- limite de validité = illimitée
- unban/unbanish <nom compte> -- Ote le banissement d'un compte
- unblock <nom compte> -- Mets le status d'un compte à 0 (Compte ok)
- version -- Donne la version du login-serveur
- who <nomcompte> -- Affiche les infos sur un compte
-ENDOFAIDE
- printf(" Note: Pour les noms de compte avec des espaces, tapez \"<nom compte>\" (ou ').\n");
- }
- } else {
- if ("aide" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'?
- printf "aide/help/?\n";
- printf " Display the description of the commands\n";
- printf "aide/help/? [command]\n";
- printf " Display the description of the specified command\n";
- } elsif ("help" =~ /^\Q$command/) {
- printf "aide/help/?\n";
- printf " Display the description of the commands\n";
- printf "aide/help/? [command]\n";
- printf " Display the description of the specified command\n";
- } elsif ("add" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'?
- printf "add <account_name> <sex> <password>\n";
- printf " Create an account with the default email (a\@a.com).\n";
- printf " Concerning the sex, only the first letter is used (F or M).\n";
- printf " The e-mail is set to a\@a.com (default e-mail). It's like to have no e-mail.\n";
- printf " When the password is omitted,\n";
- printf " the input is done without displaying of the pressed keys.\n";
- printf " <example> add testname Male testpass\n";
- } elsif ($command eq "ban" || ("banish" =~ /^\Q$command/ && length($command) >= 4)) {
- printf "ban/banish yyyy/mm/dd hh:mm:ss <account_name>\n";
- printf " Changes the final date of a banishment of an account.\n";
- printf " The difference with banset is the position of the account name.\n";
- } elsif (("banadd" =~ /^\Q$command/ || $command eq "ba") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'?
- printf "banadd <account_name> <modifier>\n";
- printf " Adds or substracts time from the final date of a banishment of an account.\n";
- printf " Modifier is done as follows:\n";
- printf " Adjustment value (-1, 1, +1, etc...)\n";
- printf " Modified element:\n";
- printf " a or y: year\n";
- printf " m: month\n";
- printf " j or d: day\n";
- printf " h: hour\n";
- printf " mn: minute\n";
- printf " s: second\n";
- printf " <example> banadd testname +1m-2mn1s-6y\n";
- printf " this example adds 1 month and 1 second, and substracts 2 minutes\n";
- printf " and 6 years at the same time.\n";
- printf "NOTE: If you modify the final date of a non-banished account,\n";
- printf " you fix the final date to (actual time +- adjustments)\n";
- } elsif (("banset" =~ /^\Q$command/ || $command eq "bs") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'?
- printf "banset <account_name> yyyy/mm/dd [hh:mm:ss]\n";
- printf " Changes the final date of a banishment of an account.\n";
- printf " Default time: 23:59:59\n";
- printf "banset <account_name> 0\n";
- printf " Set a non-banished account (0 = unbanished).\n";
- } elsif ("block" =~ /^\Q$command/ && length($command) >= 2) {
- printf "block <account name>\n";
- printf " Set state 5 (You have been blocked by the GM Team) to an account.\n";
- printf " Same command of state <account_name> 5.\n";
- } elsif ("check" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'?
- printf "check <account_name> <password>\n";
- printf " Check the validity of a password for an account.\n";
- printf " NOTE: Server will never sends back a password.\n";
- printf " It's the only method you have to know if a password is correct.\n";
- printf " The other method is to have a ('physical') access to the accounts file.\n";
- } elsif ("create" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'?
- printf "create <account_name> <sex> <email> <password>\n";
- printf " Like the 'add' command, but with e-mail moreover.\n";
- printf " <example> create testname Male my\@mail.com testpass\n";
- } elsif ("del" =~ /^\Q$command/ || "delete" =~ /^\Q$command/) {
- printf "del <account_name>\n";
- printf " Remove an account.\n";
- printf " This order requires confirmation. After confirmation, the account is deleted.\n";
- } elsif ("email" =~ /^\Q$command/ && $command ne "e") { # check 1 letter command: 'email', 'end' or 'exit'?
- printf "email <account_name> <email>\n";
- printf " Modify the e-mail of an account.\n";
- } elsif ("getcount" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'?
- printf "getcount\n";
- printf " Give the number of players online on all char-servers.\n";
- } elsif ("gm" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'?
- printf "gm <account_name> [GM_level]\n";
- printf " Modify the GM level of an account.\n";
- printf " Default value remove GM level (GM level = 0).\n";
- printf " <example> gm testname 80\n";
- } elsif ("id" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'?
- printf "id <account_name>\n";
- printf " Give the id of an account.\n";
- } elsif ("info" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'?
- printf "info <account_id>\n";
- printf " Display complete information of an account.\n";
- } elsif ($command eq "kami") { # check all letters command: 'kami' or 'kamib'?
- printf "kami <message>\n";
- printf " Sends a broadcast message on all map-server (in yellow).\n";
- } elsif ($command eq "kamib") { # check all letters command: 'kami' or 'kamib'?
- printf "kamib <message>\n";
- printf " Sends a broadcast message on all map-server (in blue).\n";
- } elsif ("language" =~ /^\Q$command/ && $command ne "l") { # check 1 letter command: 'list' or 'language'?
- printf("language <language>\n");
- printf(" Change the language of displaying.\n");
- printf(" Possible languages: Français or English.\n");
- } elsif (("list" =~ /^\Q$command/ || $command eq "ls") && $command ne "l") { # check 1 letter command: 'list' or 'language'?
- printf "list/ls [start_id [end_id]]\n";
- printf " Display a list of accounts.\n";
- printf " 'start_id', 'end_id': indicate end and start identifiers.\n";
- printf " Research by name is not possible with this command.\n";
- printf " <example> list 10 9999999\n";
- } elsif (("listban" =~ /^\Q$command/ || $command eq "lsban") && $command ne "l") { # need to specificaly write Ban to have this list # check 1 letter command: 'list' or 'language'?
- printf "listBan/lsBan [start_id [end_id]]\n";
- printf " Like list/ls, but only for accounts with state or banished.\n";
- } elsif (("listgm" =~ /^\Q$command/ || $command eq "lsgm") && $command ne "l") { # need to specificaly write GM to have this list # check 1 letter command: 'list' or 'language'?
- printf "listGM/lsGM [start_id [end_id]]\n";
- printf " Like list/ls, but only for GM accounts.\n";
- } elsif (("listok" =~ /^\Q$command/ || $command eq "lsok") && $command ne "l") { # need to specificaly write OK to have this list # check 1 letter command: 'list' or 'language'?
- printf "listOK/lsOK [start_id [end_id]]\n";
- printf " Like list/ls, but only for accounts without state and not banished.\n";
- } elsif ("memo" =~ /^\Q$command/) {
- printf "memo <account_name> <memo>\n";
- printf " Modify the memo of an account.\n";
- printf " 'memo': it can have until 253 characters (with spaces or not).\n";
- } elsif ("name" =~ /^\Q$command/) {
- printf "name <account_id>\n";
- printf " Give the name of an account.\n";
- } elsif ("passwd" =~ /^\Q$command/ || "password" =~ /^\Q$command/) {
- printf "passwd <account_name> <new_password>\n";
- printf " Change the password of an account.\n";
- printf " When new password is omitted,\n";
- printf " the input is done without displaying of the pressed keys.\n";
- } elsif ("reloadgm" =~ /^\Q$command/) {
- printf "reloadGM\n";
- printf " Reload GM configuration file\n";
- } elsif ("search" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'?
- $command ne "se") { # check 2 letters command: 'search' or 'sex'?
- printf "search <expression>\n";
- printf " Seek accounts.\n";
- printf " Displays the accounts whose names correspond.\n";
- printf "search -r/-e/--expr/--regex <expression>\n";
- printf " Seek accounts by regular expression.\n";
- printf " Displays the accounts whose names correspond.\n";
- } elsif ("sex" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'?
- $command ne "se") { # check 2 letters command: 'search' or 'sex'?
- printf "sex <account_name> <sex>\n";
- printf " Modify the sex of an account.\n";
- printf " <example> sex testname Male\n";
- } elsif ("state" =~ /^\Q$command/ && $command ne "s") { # check 1 letter command: 'search', 'state' or 'sex'?
- printf "state <account_name> <new_state> <error_message_#7>\n";
- printf " Change the state of an account.\n";
- printf " 'new_state': state is the state of the packet 0x006a + 1.\n";
- printf " The possibilities are:\n";
- printf " 0 = Account ok\n";
- printf " 1 = Unregistered ID\n";
- printf " 2 = Incorrect Password\n";
- printf " 3 = This ID is expired\n";
- printf " 4 = Rejected from Server\n";
- printf " 5 = You have been blocked by the GM Team\n";
- printf " 6 = Your Game's EXE file is not the latest version\n";
- printf " 7 = You are Prohibited to log in until...\n";
- printf " 8 = Server is jammed due to over populated\n";
- printf " 9 = No MSG\n";
- printf " 100 = This ID has been totally erased\n";
- printf " all other values are 'No MSG', then use state 9 please.\n";
- printf " 'error_message_#7': message of the code error 6\n";
- printf " = Your are Prohibited to log in until... (packet 0x006a)\n";
- } elsif (("timeadd" =~ /^\Q$command/ || $command eq "ta") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'?
- printf "timeadd <account_name> <modifier>\n";
- printf " Adds or substracts time from the validity limit of an account.\n";
- printf " Modifier is done as follows:\n";
- printf " Adjustment value (-1, 1, +1, etc...)\n";
- printf " Modified element:\n";
- printf " a or y: year\n";
- printf " m: month\n";
- printf " j or d: day\n";
- printf " h: hour\n";
- printf " mn: minute\n";
- printf " s: second\n";
- printf " <example> timeadd testname +1m-2mn1s-6y\n";
- printf " this example adds 1 month and 1 second, and substracts 2 minutes\n";
- printf " and 6 years at the same time.\n";
- printf "NOTE: You can not modify a unlimited validity limit.\n";
- printf " If you want modify it, you want probably create a limited validity limit.\n";
- printf " So, at first, you must set the validity limit to a date/time.\n";
- } elsif (("timeset" =~ /^\Q$command/ || $command eq "ts") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'?
- printf "timeset <account_name> yyyy/mm/dd [hh:mm:ss]\n";
- printf " Changes the validity limit of an account.\n";
- printf " Default time: 23:59:59\n";
- printf "timeset <account_name> 0\n";
- printf " Gives an unlimited validity limit (0 = unlimited).\n";
- } elsif ($command eq "unban" || ("unbanish" =~ /^\Q$command/ && length($command) >= 4)) {
- printf "unban/unbanish <account name>\n";
- printf " Remove the banishment of an account.\n";
- printf " This command works like banset <account_name> 0.\n";
- } elsif ("unblock" =~ /^\Q$command/ && length($command) >= 4) {
- printf "unblock <account name>\n";
- printf " Set state 0 (Account ok) to an account.\n";
- printf " This command works like state <account_name> 0.\n";
- } elsif ("version" =~ /^\Q$command/) {
- printf "version\n";
- printf " Display the version of the login-server.\n";
- } elsif ("who" =~ /^\Q$command/) {
- printf "who <account_name>\n";
- printf " Displays complete information of an account.\n";
- } elsif ("quit" =~ /^\Q$command/ ||
- (("end" =~ /^\Q$command/ || "exit" =~ /^\Q$command/) && $command ne "e")) { # check 1 letter command: 'email', 'end' or 'exit'?\n";
- printf "quit/end/exit\n";
- printf " End of the program of administration.\n";
- } else {
- if ($receivedcommand ne "") {
- printf "Unknown command [%s] for help. Displaying of all commands.\n", $receivedcommand;
- }
- print << "ENDOFHELP";
- aide/help/? -- Display this help
- aide/help/? [command] -- Display the help of the command
- add <account_name> <sex> <password> -- Create an account with default email
- ban/banish yyyy/mm/dd hh:mm:ss <account_name> -- Change final date of a ban
- banadd/ba <account_name> <modifier> -- Add or substract time from the final
- example: ba apple +1m-2mn1s-2y date of a banishment of an account
- banset/bs <account_name> yyyy/mm/dd [hh:mm:ss] -- Change final date of a ban
- banset/bs <account_name> 0 -- Un-banish an account
- block <account name> -- Set state 5 (blocked by the GM Team) to an account
- check <account_name> <password> -- Check the validity of a password
- create <account_name> <sex> <email> <passwrd> -- Create an account with email
- del <account_name> -- Remove an account
- email <account_name> <email> -- Modify an email of an account
- getcount -- Give the number of players online
- gm <account_name> [GM_level] -- Modify the GM level of an account
- id <account_name> -- Give the id of an account
- info <account_id> -- Display all information of an account
- kami <message> -- Sends a broadcast message (in yellow)
- kamib <message> -- Sends a broadcast message (in blue)
- language <language> -- Change the language of displaying.
- list/ls [First_id [Last_id]] -- Display a list of accounts
- listBan/lsBan [First_id [Last_id]] -- Display a list of accounts
- with state or banished
- listGM/lsGM [First_id [Last_id]] -- Display a list of GM accounts
- listOK/lsOK [First_id [Last_id]] -- Display a list of accounts
- without state and not banished
- memo <account_name> <memo> -- Modify the memo of an account
- name <account_id> -- Give the name of an account
- passwd <account_name> <new_password> -- Change the password of an account
- quit/end/exit -- End of the program of administation
- reloadGM -- Reload GM configuration file
- search <expression> -- Seek accounts
- search -e/-r/--expr/--regex <expressn> -- Seek accounts by regular-expression
- sex <nomcompte> <sexe> -- Modify the sex of an account
- state <account_name> <new_state> <error_message_#7> -- Change the state
- timeadd/ta <account_name> <modifier> -- Add or substract time from the
- example: ta apple +1m-2mn1s-2y validity limit of an account
- timeset/ts <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the validify limit
- timeset/ts <account_name> 0 -- Give a unlimited validity limit
- unban/unbanish <account name> -- Remove the banishment of an account
- unblock <account name> -- Set state 0 (Account ok) to an account
- version -- Gives the version of the login-server
- who <account_name> -- Display all information of an account
-ENDOFHELP
- printf(" Note: To use spaces in an account name, type \"<account name>\" (or ').\n");
- }
- }
-
- return 0;
-}
-#--------------------------------------------------------------------------
-
-# Sub-function: Displaying of the accounts list
-sub listaccount() {
- my($st, $ed, $listflag) = @_;
- my($i);
- my($n) = (0);
- # 0123456789 01 01234567890123456789012301234 012345 0123456789012345678901234567
- if ($defaultlanguage eq "F") {
- print " id_compte GM nom_utilisateur sexe count statut\n";
- } else {
- print "account_id GM user_name sex count state\n";
- }
- print "-------------------------------------------------------------------------------\n";
- while(1) {
- print $so pack("vV2", 0x7920, $st, $ed);
- $so->flush();
- $buf = readso(4);
- if (unpack("v", $buf) != 0x7921) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- exit(10);
- }
- my($len) = unpack("x2v", $buf);
- last if ($len <= 4);
- for($i = 4; $i < $len; $i += 38) {
- my(@dat) = unpack("VCa24cVV", readso(38));
- $st = $dat[0] + 1;
- if ($listflag == 0 ||
- ($listflag == 1 && $dat[1] > 0) || # check GM flag
- ($listflag == 3 && $dat[5] != 0) || # check with state or banished
- ($listflag == 4 && $dat[5] == 0)) { # check without state and not banished
- printf "%10d %2s %-24s%-5s %6d %-27s\n", $dat[0],
- ($dat[1] == 0 ? " " : $dat[1]),
- $dat[2],
- ($defaultlanguage eq "F" ? ("Femme","Male","Servr")[$dat[3]] : ("Femal","Male","Servr")[$dat[3]]),
- $dat[4],
- (($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"),
- "Unregistered ID",
- "Incorrect Password",
- "This ID is expired",
- "Rejected from Server",
- "Blocked by the GM Team", # You have been blocked by the GM Team
- "Your EXE file is too old", # Your Game's EXE file is not the latest version
- "Banishement or\n Prohibited to login until %s", # You are Prohibited to log in until %s
- "Server is over populated", # Server is jammed due to over populated
- "No MSG",
- "This ID is totally erased")[$dat[5] == 100 ? 10 : $dat[5]]; # This ID has been totally erased
- $n++;
- }
- }
- }
- if ($defaultlanguage eq "F") {
- if ($n == 0) {
- print "Aucun compte trouvé.\n";
- } elsif ($n == 1) {
- print "1 compte trouvé.\n";
- } else {
- print "$n comptes trouvés.\n";
- }
- } else {
- if ($n == 0) {
- print "No account found.\n";
- } elsif ($n == 1) {
- print "1 account found.\n";
- } else {
- print "$n accounts found.\n";
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: add an account with the default e-mail
-sub addaccount() {
- my($userid, $sex, $passwd) = @_;
- if ($userid eq "" || !defined($userid)) {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> add nomtest Male motdepassetest\n";
- } else {
- print "Please input an account name.\n";
- print "<example> add testname Male testpass\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
-# if ($userid =~ /[^A-Za-z0-9\@-_]/) {
-# if ($defaultlanguage eq "F") {
-# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n";
-# } else {
-# print "Illegal character found in the account name ".$`."[${&}]${'}\n";
-# }
-# return 101;
-# }
- $sex = uc(substr($sex, 0, 1));
- if ($sex !~ /^[MF]$/) {
- if ($defaultlanguage eq "F") {
- print "Sexe incorrect [$sex]. Entrez M ou F svp.\n";
- } else {
- print "Illegal gender [$sex]. Please input M or F.\n";
- }
- return 103;
- }
- if ($passwd eq "") {
- return 108 if (($passwd = typepasswd()) eq "");
- }
- if (verify_password($passwd) == 0) {
- return 104;
- }
- print $so pack("va24a24a1a40", 0x7930, $userid, $passwd, $sex, "");
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7931) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 106;
- }
- $buf = readso(28);
- if (unpack("V", $buf) == -1 || unpack("V", $buf) == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec à la création du compte [$userid]. Un compte identique existe déjà.\n";
- } else {
- print "Account [$userid] creation failed. Same account already exists.\n";
- }
- return 107;
- } else {
- if ($defaultlanguage eq "F") {
- printf "Compte [$userid] créé avec succès [id: %d].\n", unpack("V",$buf);
- } else {
- printf "Account [$userid] is successfully created [id: %d].\n", unpack("V",$buf);
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: add an account with an e-mail
-sub createaccount() {
- my($userid, $sex, $email, $passwd) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> create nomtest Male mon\@email.com motdepassetest\n";
- } else {
- print "Please input an account name.\n";
- print "<example> create testname Male my\@mail.com testpass\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
-# if ($userid =~ /[^A-Za-z0-9\@-_]/) {
-# if ($defaultlanguage eq "F") {
-# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n";
-# } else {
-# print "Illegal character found in the account name ".$`."[${&}]${'}\n";
-# }
-# return 101;
-# }
- $sex = uc(substr($sex, 0, 1));
- if ($sex !~ /^[MF]$/) {
- if ($defaultlanguage eq "F") {
- print "Sexe incorrect [$sex]. Entrez M ou F svp.\n";
- } else {
- print "Illegal gender [$sex]. Please input M or F.\n";
- }
- return 103;
- }
- if (length($email) < 3) {
- if ($defaultlanguage eq "F") {
- print "Email trop courte [$email]. Entrez une e-mail valide svp.\n";
- } else {
- print "Email is too short [$email]. Please input a valid e-mail.\n";
- }
- return 109;
- }
- if (length($email) > 39) {
- if ($defaultlanguage eq "F") {
- print "Email trop longue [$email]. Entrez une e-mail de 39 caractères maximum svp.\n";
- } else {
- print "Email is too long [$email]. Please input an e-mail with 39 bytes at the most.\n";
- }
- return 109;
- }
- if (verify_email($email) == 0) {
- if ($defaultlanguage eq "F") {
- print "Email incorrecte [$email]. Entrez une e-mail valide svp.\n";
- } else {
- print "Invalid email [$email]. Please input a valid e-mail.\n";
- }
- return 109;
- }
- if ($passwd eq "") {
- return 108 if (($passwd = typepasswd()) eq "");
- }
- if (verify_password($passwd) == 0) {
- return 104;
- }
- print $so pack("va24a24a1a40", 0x7930, $userid, $passwd, $sex, $email);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7931) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 106;
- }
- $buf = readso(28);
- if (unpack("V", $buf) == -1 || unpack("V", $buf) == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec à la création du compte [$userid]. Un compte identique existe déjà.\n";
- } else {
- print "Account [$userid] creation failed. Same account already exists.\n";
- }
- return 107;
- } else {
- if ($defaultlanguage eq "F") {
- printf "Compte [$userid] créé avec succès [id: %d].\n", unpack("V",$buf);
- } else {
- printf "Account [$userid] is successfully created [id: %d].\n", unpack("V",$buf);
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: deletion of an account
-sub delaccount() {
- my($userid) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> del nomtestasupprimer\n";
- } else {
- print "Please input an account name.\n";
- print "<example> del testnametodelete\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- if ($defaultlanguage eq "F") {
- print "** Etes-vous vraiment sûr de vouloir SUPPRIMER le compte [$userid]? (o/n) ";
- } else {
- print "** Are you really sure to DELETE account [$userid]? (y/n) ";
- }
- if (lc(substr(<STDIN>, 0, 1)) !~ /[oy]/) {
- if ($defaultlanguage eq "F") {
- print "Suppression annulée\n.";
- } else {
- print "Deletion canceled\n";
- }
- return 121;
- }
- print $so pack("va24", 0x7932, $userid);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7933) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 122;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec de la suppression du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Account [$userid] deletion failed. Account doesn't exist.\n";
- }
- return 123;
- } else {
- if ($defaultlanguage eq "F") {
- print "Compte [$name][id: $id2] SUPPRIME avec succès.\n";
- } else {
- print "Account [$name][id: $id2] is successfully DELETED.\n";
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: modification of a password
-sub changepasswd() {
- my($userid, $passwd) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> passwd nomtest nouveaumotdepasse\n";
- } else {
- print "Please input an account name.\n";
- print "<example> passwd testname newpassword\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- if ($passwd eq "") {
- return 134 if (($passwd = typepasswd()) eq "");
- }
- if (verify_password($passwd) == 0) {
- return 131;
- }
- print $so pack("va24a24", 0x7934, $userid,$passwd);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7935) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 132;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec de la modification du mot de passe du compte [$userid].\n";
- print "Le compte [$userid] n'existe pas.\n";
- } else {
- print "Account [$userid] password changing failed.\n";
- print "Account [$userid] doesn't exist.\n";
- }
- return 133;
- } else {
- if ($defaultlanguage eq "F") {
- print "Modification du mot de passe du compte [$name][id: $id2] réussie.\n";
- } else {
- print "Account [$name][id: $id2] password successfully changed.\n";
- }
- }
- return 130;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: modification of an account e-mail
-sub changeemail() {
- my($userid, $email) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> email testname nouveauemail\n";
- } else {
- print "Please input an account name.\n";
- print "<example> email testname newemail\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- if (length($email) < 3) {
- if ($defaultlanguage eq "F") {
- print "Email trop courte [$email]. Entrez une e-mail valide svp.\n";
- } else {
- print "Email is too short [$email]. Please input a valid e-mail.\n";
- }
- return 109;
- }
- if (length($email) > 39) {
- if ($defaultlanguage eq "F") {
- print "Email trop longue [$email]. Entrez une e-mail de 39 caractères maximum svp.\n";
- } else {
- print "Email is too long [$email]. Please input an e-mail with 39 bytes at the most.\n";
- }
- return 109;
- }
- if (verify_email($email) == 0) {
- if ($defaultlanguage eq "F") {
- print "Email incorrect [$email]. Entrez une e-mail valide svp.\n";
- } else {
- print "Invalid email [$email]. Please input a valid e-mail.\n";
- }
- return 109;
- }
- print $so pack("va24a40", 0x7940, $userid, $email);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7941) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 162;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec de la modification de l'e-mail du compte [$userid].\n";
- print "Le compte [$userid] n'existe pas.\n";
- } else {
- print "Account [$userid] e-mail changing failed.\n";
- print "Account [$userid] doesn't exist.\n";
- }
- return 133;
- } else {
- if ($defaultlanguage eq "F") {
- print "Modification de l'e-mail du compte [$name][id: $id2] réussie.\n";
- } else {
- print "Account [$name][id: $id2] e-mail successfully changed.\n";
- }
- }
- return 160;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: search of accounts
-sub searchaccount() {
- my($p1, $p2) = @_;
- my($exp) = ("");
- if ($p1 eq "-e" || $p1 eq "-r" || $p1 eq "--regex" || $p1 eq "--expr") {
- if ($p2 eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez une expression régulière ou utilisez 'ls' pour avoir tous les comptes.\n";
- } else {
- print "Input a regular expression or use 'ls' to obtain all accounts.\n";
- }
- return 141;
- }
- $exp = $p2;
- } else {
- if ($p1 eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez une chaîne ou utilisez 'ls' pour avoir tous les comptes.\n";
- } else {
- print "Input a string or use 'ls' to obtain all accounts.\n";
- }
- return 141;
- }
- my($c) = 0;
- $exp = lc($p1);
- $exp =~ s/([\@])/\\$1/g;
- $c += $exp =~ s/([\-\[\]])/\\$1/g;
- $c += $exp =~ s/([\*\?])/.$1/g;
- $c += $exp =~ s/\\\[(.)\\\-(.)\\\]/[$1-$2]/g;
- $exp = "^$exp\$" if $c;
- }
- if (eval{ "" =~ /$exp/; }, $@) {
- if ($defaultlanguage eq "F") {
- print "Expression régulière non reconnue.\n";
- } else {
- print "Regular-Expression compiling failed.\n";
- }
- return 141;
- }
- my($i);
- my($n, $st) = (0, 0);
- # 0123456789 01 01234567890123456789012301234 012345 0123456789012345678901234567
- if ($defaultlanguage eq "F") {
- print " id_compte GM nom_utilisateur sexe count statut\n";
- } else {
- print "account_id GM user_name sex count state\n";
- }
- print "-------------------------------------------------------------------------------\n";
- while(1) {
- print $so pack("vV2", 0x7920, $st, 0);
- $so->flush();
- $buf = readso(4);
- if (unpack("v", $buf) != 0x7921) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- exit(10);
- }
- my($len) = unpack("x2v", $buf);
- last if ($len <= 4);
- for($i = 4; $i < $len; $i += 38) {
- my(@dat) = unpack("VCa24cVV", readso(38));
- $st = $dat[0] + 1;
- next if (lc($dat[2]) !~ /$exp/);
- printf "%10d %2s %-24s%-5s %6d %-27s\n", $dat[0],
- ($dat[1] == 0 ? " " : $dat[1]),
- $dat[2],
- ($defaultlanguage eq "F" ? ("Femme","Male","Servr")[$dat[3]] : ("Femal","Male","Servr")[$dat[3]]),
- $dat[4],
- (($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"),
- "Unregistered ID",
- "Incorrect Password",
- "This ID is expired",
- "Rejected from Server",
- "Blocked by the GM Team", # You have been blocked by the GM Team
- "Your EXE file is too old", # Your Game's EXE file is not the latest version
- "Banishement or\n Prohibited to login until %s", # You are Prohibited to log in until %s
- "Server is over populated", # Server is jammed due to over populated
- "No MSG",
- "This ID is totally erased")[$dat[5] == 100 ? 10 : $dat[5]]; # This ID has been totally erased
- $n++;
- }
- }
- if ($defaultlanguage eq "F") {
- if ($n == 0) {
- print "Aucun compte trouvé.\n";
- } elsif ($n == 1) {
- print "1 compte trouvé.\n";
- } else {
- print "$n comptes trouvés.\n";
- }
- } else {
- if ($n == 0) {
- print "No account found.\n";
- } elsif ($n == 1) {
- print "1 account found.\n";
- } else {
- print "$n accounts found.\n";
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: modify the sex of an account
-sub changesex() {
- my($userid, $sex) = @_;
- if ($userid eq "" || !defined($userid)) {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> sex nomtest Male\n";
- } else {
- print "Please input an account name.\n";
- print "<example> sex testname Male\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
-# if ($userid =~ /[^A-Za-z0-9\@-_]/) {
-# if ($defaultlanguage eq "F") {
-# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n";
-# } else {
-# print "Illegal character found in the account name ".$`."[${&}]${'}\n";
-# }
-# return 101;
-# }
- $sex = uc(substr($sex, 0, 1));
- if ($sex !~ /^[MF]$/) {
- if ($defaultlanguage eq "F") {
- print "Sexe incorrect [$sex]. Entrez M ou F svp.\n";
- } else {
- print "Illegal gender [$sex]. Please input M or F.\n";
- }
- return 103;
- }
- print $so pack("va24a1", 0x793c, $userid, $sex);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x793d) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec du changement du sexe du compte [$userid].\n";
- print "Le compte n'existe pas ou le sexe est déjà celui demandé.\n";
- } else {
- print "Account [$userid] sex changing failed.\n";
- print "Account doesn't exist or the sex is already the good sex.\n";
- }
- } else {
- if ($defaultlanguage eq "F") {
- print "Sexe du compte [$name][id: $id2] changé avec succès.\n";
- } else {
- print "Account [$name][id: $id2] sex successfully changed.\n";
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: modify the GM level of an account
-sub changegmlevel() {
- my($userid, $gm_level) = @_;
- if ($userid eq "" || !defined($userid)) {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> gm nomtest 80\n";
- } else {
- print "Please input an account name.\n";
- print "<example> gm testname 80\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
-# if ($userid =~ /[^A-Za-z0-9\@-_]/) {
-# if ($defaultlanguage eq "F") {
-# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n";
-# } else {
-# print "Illegal character found in the account name ".$`."[${&}]${'}\n";
-# }
-# return 101;
-# }
- $gm_level = int($gm_level);
- if ($gm_level < 0 || $gm_level > 99) {
- if ($defaultlanguage eq "F") {
- print "Niveau de GM incorrect [$gm_level]. Entrez une valeur de 0 à 99 svp.\n";
- } else {
- print "Illegal GM level [$gm_level]. Please input a value from 0 to 99.\n";
- }
- return 103;
- }
- print $so pack("va24C", 0x793e, $userid, $gm_level);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x793f) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec du changement du niveau de GM du compte [$userid].\n";
- print "Le compte n'existe pas, le niveau de GM est déjà celui demandé,\n";
- print "ou il est impossible de modifier le fichier des comptes GM.\n";
- } else {
- print "Account [$userid] GM level changing failed.\n";
- print "Account doesn't exist, the GM level is already the good GM level,\n";
- print "or it's impossible to modify the GM accounts file.\n";
- }
- } else {
- if ($defaultlanguage eq "F") {
- print "Niveau de GM du compte [$name][id: $id2] changé avec succès.\n";
- } else {
- print "Account [$name][id: $id2] GM level successfully changed.\n";
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Modification of a state
-sub changestate {
- my($userid, $s, $error_message) = @_;
- # Valid values: 0: ok, or value of the 0x006a packet + 1
- if ($s eq "" || (($s < 0 || $s > 9) && $s != 100)) {
- if ($defaultlanguage eq "F") {
- print "Entrez une des valeurs suivantes svp:\n";
- print " 0 = Compte ok 6 = Your Game's EXE file is not the latest version\n";
- } else {
- print "Please input one of these values:\n";
- print " 0 = Account ok 6 = Your Game's EXE file is not the latest version\n";
- }
- print " 1 = Unregistered ID 7 = You are Prohibited to log in until %s\n";
- print " 2 = Incorrect Password 8 = Server is jammed due to over populated\n";
- print " 3 = This ID is expired 9 = No MSG\n";
- print " 4 = Rejected from Server 100 = This ID has been totally erased\n";
- print " 5 = You have been blocked by the GM Team\n";
- if ($defaultlanguage eq "F") {
- print "<exemples> state nomtest 5\n";
- print " state nomtest 7 fin de votre ban\n";
- print " block <nom du compte>\n";
- print " unblock <nom du compte>\n";
- } else {
- print "<examples> state testname 5\n";
- print " state testname 7 end of your ban\n";
- print " block <account name>\n";
- print " unblock <account name>\n";
- }
- return 151;
- }
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemples> state nomtest 5\n";
- print " state nomtest 7 fin de votre ban\n";
- print " block <nom du compte>\n";
- print " unblock <nom du compte>\n";
- } else {
- print "Please input an account name.\n";
- print "<examples> state testname 5\n";
- print " state testname 7 end of your ban\n";
- print " block <account name>\n";
- print " unblock <account name>\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- if ($s != 7) {
- $error_message = "-";
- } else {
- if (length($error_message) < 1) {
- if ($defaultlanguage eq "F") {
- print "Message d'erreur trop court. Entrez un message de 1-19 caractères.\n";
- } else {
- print "Error message is too short. Please input a message of 1-19 bytes.\n";
- }
- return 102;
- }
- if (length($error_message) > 19) {
- if ($defaultlanguage eq "F") {
- print "Message d'erreur trop long. Entrez un message de 1-19 caractères.\n";
- } else {
- print "Error message is too long. Please input a message of 1-19 bytes.\n";
- }
- return 102;
- }
- }
- print $so pack("va24Va20", 0x7936, $userid, $s, $error_message);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7937) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(32);
- my(@dat) = unpack("Va24V", $buf);
- while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) {
- chop($dat[1]);
- };
- if ($dat[0] != -1 && $dat[0] != 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Statut du compte [$dat[1]][id: $dat[0]] changé avec succès en [";
- } else {
- print "Account [$dat[1]][id: $dat[0]] state successfully changed in [";
- }
- print ((($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"),
- "Unregistered ID",
- "Incorrect Password",
- "This ID is expired",
- "Rejected from Server",
- "You have been blocked by the GM Team",
- "Your Game's EXE file is not the latest version",
- "You are Prohibited to log in until %s",
- "Server is jammed due to over populated",
- "No MSG",
- "This ID has been totally erased")[$dat[2] == 100 ? 10 : $dat[2]]);
- print "].\n";
- } else {
- if ($defaultlanguage eq "F") {
- print "Echec du changement du statut du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Account [$userid] state changing failed. Account doesn't exist.\n";
- }
- }
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Displaying of the number of online players
-sub getlogincount {
- # Request to the login-server
- print $so pack("v", 0x7938);
- $so->flush();
-
- $buf = readso(4);
- # Connection failed
- if (unpack("v", $buf) != 0x7939) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- exit(3);
- }
-
- # Get length of the received packet
- my($len) = unpack("x2v", $buf) - 4;
-
- # Read information of the servers
- if ($len < 1) {
- if ($defaultlanguage eq "F") {
- printf " Aucun serveur n'est connecté au login serveur.\n";
- } else {
- printf " No server is connected to the login-server.\n";
- }
- } else {
- my(@slist) = ();
- for(; $len > 0; $len -= 32) {
- my($name, $count) = unpack("x6 a20 V", readso(32));
- $name = substr($name, 0, index($name, "\0"));
- push @slist, [ $name, $count ];
- }
- # Displaying of result
- my($i);
- if ($defaultlanguage eq "F") {
- printf " Nombre de joueurs en ligne (serveur: nb):\n";
- } else {
- printf " Number of online players (server: number).\n";
- }
- foreach $i(@slist) {
- printf " %-20s : %5d\n", $i->[0], $i->[1];
- }
- }
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Modification of a memo field
-sub changememo {
- my($userid, $memo) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> memo nomtest nouveau memo\n";
- } else {
- print "Please input an account name.\n";
- print "<example> memo testname new memo\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- if (length($memo) > 254) {
- if ($defaultlanguage eq "F") {
- print "Mémo trop long (".length($memo)." caractères).\n";
- print "Entrez un mémo de 254 caractères maximum svp.\n";
- } else {
- print "Memo is too long (".length($memo)." characters).\n";
- print "Please input a memo of 254 bytes at the maximum.\n";
- }
- return 102;
- }
- if (length($memo) == 0) {
- print $so pack("va24v", 0x7942, $userid, 0);
- } else {
- print $so pack("va24va".length($memo), 0x7942, $userid, length($memo), $memo);
- }
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7943) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec du changement du mémo du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Account [$userid] memo changing failed. Account doesn't exist.\n";
- }
- } else {
- if ($defaultlanguage eq "F") {
- print "Mémo du compte [$name][id: $id2] changé avec succès.\n";
- } else {
- print "Account [$name][id: $id2] memo successfully changed.\n";
- }
- }
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Request to obtain an account id
-sub idaccount() {
- my($userid) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> id nomtest\n";
- } else {
- print "Please input an account name.\n";
- print "<example> id testname\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- print $so pack("va24", 0x7944, $userid);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7945) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 122;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Impossible de trouver l'id du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Unabled to find the account [$userid] id. Account doesn't exist.\n";
- }
- return 123;
- } else {
- if ($defaultlanguage eq "F") {
- print "Le compte [$name] a pour id: $id2.\n";
- } else {
- print "The account [$name] have the id: $id2.\n";
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Request to obtain an account name
-sub nameaccount() {
- my($id) = @_;
- if ($id < 0) {
- if ($defaultlanguage eq "F") {
- print "Entrez un id ayant une valeur positive svp.\n";
- } else {
- print "Please input a positive value for the id.\n";
- }
- return 136;
- }
- print $so pack("vV", 0x7946, $id);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7947) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 122;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if (length($name) == 0 || $name eq "") {
- if ($defaultlanguage eq "F") {
- print "Impossible de trouver le nom du compte [id: $id2]. Le compte n'existe pas.\n";
- } else {
- print "Unabled to find the account [id: $id2] name. Account doesn't exist.\n";
- }
- return 123;
- } else {
- if ($defaultlanguage eq "F") {
- print "Le compte [id: $id2] a pour nom: $name.\n";
- } else {
- print "The account [id: $id2] have the name: $name.\n";
- }
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Set a validity limit of an account
-sub timesetaccount() {
- my($userid, $date, $time) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple>: timeset <nom_du_compte> aaaa/mm/jj [hh:mm:ss]\n";
- print " timeset <nom_du_compte> 0 (0 = illimité)\n";
- printf " Heure par défaut [hh:mm:ss]: 23:59:59\n";
- } else {
- print "Please input an account name.\n";
- print "<example>: timeset <account_name> yyyy/mm/dd [hh:mm:ss]\n";
- print " timeset <account_name> 0 (0 = unlimited)\n";
- printf " Default time [hh:mm:ss]: 23:59:59\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- my($year, $month, $day) = split(/[.\-\/]/, $date);
- my($hour, $minute, $second) = split(/:/, $time);
- if ($time eq "") {
- $hour = 23;
- $minute = 59;
- $second = 59;
- }
- my($timestamp);
- if ($year eq "" ||
- ($year != 0 && ($month eq "" || $day eq "" || $hour eq "" || $minute eq "" || $second eq ""))) {
- if ($defaultlanguage eq "F") {
- print "Entrez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n";
- } else {
- print "Please input 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n";
- }
- return 102;
- }
- if ($year == 0) {
- $timestamp = 0;
- } else {
- if ($year < 70) {
- $year = $year + 100;
- }
- if ($year >= 1900) {
- $year = $year - 1900;
- }
- if ($month < 1 || $month > 12) {
- if ($defaultlanguage eq "F") {
- print "Entrez un mois correct svp (entre 1 et 12).\n";
- } else {
- print "Please give a correct value for the month (from 1 to 12).\n";
- }
- return 102;
- }
- $month = $month - 1;
- if ($day < 1 || $day > 31) {
- if ($defaultlanguage eq "F") {
- print "Entrez un jour correct svp (entre 1 et 31).\n";
- } else {
- print "Please give a correct value for the day (from 1 to 31).\n";
- }
- return 102;
- }
- if ((($month == 3 || $month == 5 || $month == 8 || $month == 10) && $day > 30) ||
- ($month == 1 && $day > 29)) {
- if ($defaultlanguage eq "F") {
- print "Entrez un jour correct en fonction du mois svp.\n";
- } else {
- print "Please give a correct value for a day of this month.\n";
- }
- return 102;
- }
- if ($hour < 0 || $hour > 23) {
- if ($defaultlanguage eq "F") {
- print "Entrez une heure correcte svp (entre 0 et 23).\n";
- } else {
- print "Please give a correct value for the hour (from 0 to 23).\n";
- }
- return 102;
- }
- if ($minute < 0 || $minute > 59) {
- if ($defaultlanguage eq "F") {
- print "Entrez des minutes correctes svp (entre 0 et 59).\n";
- } else {
- print "Please give a correct value for the minutes (from 0 to 59).\n";
- }
- return 102;
- }
- if ($second < 0 || $second > 59) {
- if ($defaultlanguage eq "F") {
- print "Entrez des secondes correctes svp (entre 0 et 59).\n";
- } else {
- print "Please give a correct value for the seconds (from 0 to 59).\n";
- }
- return 102;
- }
- $timestamp = POSIX::mktime($second, $minute, $hour, $day, $month, $year, 0, 0, -1); # -1: no winter/summer time modification
- if ($timestamp == undef) {
- if ($defaultlanguage eq "F") {
- print "Date incorrecte.\n";
- print "Ajoutez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n";
- } else {
- print "Invalid date.\n";
- print "Please add 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n";
- }
- return 102;
- }
- }
-
- print $so pack("va24V", 0x7948, $userid, $timestamp);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7949) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(32);
- my(@dat) = unpack("Va24V", $buf);
- while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) {
- chop($dat[1]);
- };
- if ($dat[0] != -1 && $dat[0] != 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Limite de validité du compte [$dat[1]][id: $dat[0]] changée avec succès ".
- ($dat[2] == 0 ? "en [illimité].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2])));
- } else {
- print "Validity Limit of the account [$dat[1]][id: $dat[0]] successfully changed ".
- ($dat[2] == 0 ? "to [unlimited].\n" : "to be until ".(POSIX::ctime($dat[2])));
- }
- # localtime($dat[2]) is also possible to display instead of POSIX::ctime.
- } else {
- if ($defaultlanguage eq "F") {
- print "Echec du changement de la validité du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Account [$userid] validity limit changing failed. Account doesn't exist.\n";
- }
- }
-
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Add/substract time to the validity limit of an account
-sub timeaddaccount() {
- my($userid, $modif) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print " <exemple> timeadd nomtest +1m-2mn1s-6y\n";
- print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n";
- print " et 6 ans dans le même temps.\n";
- } else {
- print "Please input an account name.\n";
- print " <example> timeadd testname +1m-2mn1s-6y\n";
- print " this example adds 1 month and 1 second, and substracts 2 minutes\n";
- print " and 6 years at the same time.\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- my($year, $month, $day) = (0, 0 ,0);
- my($hour, $minute, $second) = (0, 0 ,0);
-
- $modif = lc($modif);
- while (length($modif) > 0) {
- my($value) = int($modif);
- if ($value == 0) {
- $modif = substr($modif, 1);
- } else {
- if (substr($modif, 0, 1) =~ /[\-\+]/) {
- $modif = substr($modif, 1);
- }
- while (length($modif) > 0 && substr($modif, 0, 1) =~ /[0-9]/) {
- $modif = substr($modif, 1);
- }
- if (index($modif, "s") == 0) {
- $second = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "mn") == 0) {
- $minute = $value;
- $modif = substr($modif, 2);
- } elsif (index($modif, "h") == 0) {
- $hour = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "d") == 0 || index($modif, "j") == 0) {
- $day = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "m") == 0) {
- $month = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "y") == 0 || index($modif, "a") == 0) {
- $year = $value;
- $modif = substr($modif, 1);
- } else {
- $modif = substr($modif, 1);
- }
- }
- }
-
- if ($defaultlanguage eq "F") {
- print " année: $year\n";
- print " mois: $month\n";
- print " jour: $day\n";
- print " heure: $hour\n";
- print " minute: $minute\n";
- print " seconde: $second\n";
- } else {
- print " year: $year\n";
- print " month: $month\n";
- print " day: $day\n";
- print " hour: $hour\n";
- print " minute: $minute\n";
- print " second: $second\n";
- }
-
- if ($year == 0 && $month == 0 && $day == 0 && $hour == 0 && $minute == 0 && $second == 0) {
- if ($defaultlanguage eq "F") {
- print "Vous devez entrer un ajustement avec cette commande, svp:\n";
- print " Valeur d'ajustement (-1, 1, +1, etc...)\n";
- print " Element modifié:\n";
- print " a ou y: année\n";
- print " m: mois\n";
- print " j ou d: jour\n";
- print " h: heure\n";
- print " mn: minute\n";
- print " s: seconde\n";
- print " <exemple> timeadd nomtest +1m-2mn1s-6y\n";
- print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n";
- print " et 6 ans dans le même temps.\n";
- } else {
- print "Please give an adjustment with this command:\n";
- print " Adjustment value (-1, 1, +1, etc...)\n";
- print " Modified element:\n";
- print " a or y: year\n";
- print " m: month\n";
- print " j or d: day\n";
- print " h: hour\n";
- print " mn: minute\n";
- print " s: second\n";
- print " <example> timeadd testname +1m-2mn1s-6y\n";
- print " this example adds 1 month and 1 second, and substracts 2 minutes\n";
- print " and 6 years at the same time.\n";
- }
- return 137;
- }
- if ($year > 127 || $year < -127) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement d'années correct (de -127 à 127), svp.\n";
- } else {
- print "Please give a correct adjustment for the years (from -127 to 127).\n";
- }
- return 137;
- }
- if ($month > 255 || $month < -255) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de mois correct (de -255 à 255), svp.\n";
- } else {
- print "Please give a correct adjustment for the months (from -255 to 255).\n";
- }
- return 137;
- }
- if ($day > 32767 || $day < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de jours correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the days (from -32767 to 32767).\n";
- }
- return 137;
- }
- if ($hour > 32767 || $hour < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement d'heures correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the hours (from -32767 to 32767).\n";
- }
- return 137;
- }
- if ($minute > 32767 || $minute < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de minutes correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the minutes (from -32767 to 32767).\n";
- }
- return 137;
- }
- if ($second > 32767 || $second < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de secondes correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the seconds (from -32767 to 32767).\n";
- }
- return 137;
- }
-
- print $so pack("va24vvvvvv", 0x7950, $userid, $year, $month, $day, $hour, $minute, $second);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7951) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(32);
- my(@dat) = unpack("Va24V", $buf);
- while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) {
- chop($dat[1]);
- };
- if ($dat[0] == -1 || $dat[0] == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec du changement de la validité du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Account [$userid] validity limit changing failed. Account doesn't exist.\n";
- }
- } elsif ($dat[2] == 0) {
- if ($defaultlanguage eq "F") {
- print "Limite de validité du compte [$dat[1]][id: $dat[0]] inchangée.\n";
- print "Le compte a une validité illimitée ou\n";
- print "la modification est impossible avec les ajustements demandés.\n";
- } else {
- print "Validity limit of the account [$dat[1]][id: $dat[0]] unchanged.\n";
- print "The account have an unlimited validity limit or\n";
- print "the changing is impossible with the proposed adjustments.\n";
- }
- } else {
- if ($defaultlanguage eq "F") {
- print "Limite de validité du compte [$dat[1]][id: $dat[0]] changée avec succès ".
- ($dat[2] == 0 ? "en [illimité].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2])));
- } else {
- print "Validity limit of the account [$dat[1]][id: $dat[0]] successfully changed ".
- ($dat[2] == 0 ? "to [unlimited].\n" : "to be until ".(POSIX::ctime($dat[2])));
- }
- # localtime($dat[2]) is also possible to display instead of POSIX::ctime.
- }
-
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Set the final date of a banishment of an account
-sub bansetaccount() {
- my($userid, $date, $time) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple>: banset <nom_du_compte> aaaa/mm/jj [hh:mm:ss]\n";
- print " banset <nom_du_compte> 0 (0 = dé-bani)\n";
- print " ban/banish aaaa/mm/jj hh:mm:ss <nom du compte>\n";
- print " unban/unbanish <nom du compte>\n";
- printf " Heure par défaut [hh:mm:ss]: 23:59:59\n";
- } else {
- print "Please input an account name.\n";
- print "<example>: banset <account_name> yyyy/mm/dd [hh:mm:ss]\n";
- print " banset <account_name> 0 (0 = un-banished)\n";
- print " ban/banish yyyy/mm/dd hh:mm:ss <account name>\n";
- print " unban/unbanish <account name>\n";
- printf " Default time [hh:mm:ss]: 23:59:59\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- my($year, $month, $day) = split(/[.\-\/]/, $date);
- my($hour, $minute, $second) = split(/:/, $time);
- if ($time eq "") {
- $hour = 23;
- $minute = 59;
- $second = 59;
- }
- my($timestamp);
- if ($year eq "" ||
- ($year != 0 && ($month eq "" || $day eq "" || $hour eq "" || $minute eq "" || $second eq ""))) {
- if ($defaultlanguage eq "F") {
- print "Entrez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n";
- } else {
- print "Please input 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n";
- }
- return 102;
- }
- if ($year == 0) {
- $timestamp = 0;
- } else {
- if ($year < 70) {
- $year = $year + 100;
- }
- if ($year >= 1900) {
- $year = $year - 1900;
- }
- if ($month < 1 || $month > 12) {
- if ($defaultlanguage eq "F") {
- print "Entrez un mois correct svp (entre 1 et 12).\n";
- } else {
- print "Please give a correct value for the month (from 1 to 12).\n";
- }
- return 102;
- }
- $month = $month - 1;
- if ($day < 1 || $day > 31) {
- if ($defaultlanguage eq "F") {
- print "Entrez un jour correct svp (entre 1 et 31).\n";
- } else {
- print "Please give a correct value for the day (from 1 to 31).\n";
- }
- return 102;
- }
- if ((($month == 3 || $month == 5 || $month == 8 || $month == 10) && $day > 30) ||
- ($month == 1 && $day > 29)) {
- if ($defaultlanguage eq "F") {
- print "Entrez un jour correct en fonction du mois svp.\n";
- } else {
- print "Please give a correct value for a day of this month.\n";
- }
- return 102;
- }
- if ($hour < 0 || $hour > 23) {
- if ($defaultlanguage eq "F") {
- print "Entrez une heure correcte svp (entre 0 et 23).\n";
- } else {
- print "Please give a correct value for the hour (from 0 to 23).\n";
- }
- return 102;
- }
- if ($minute < 0 || $minute > 59) {
- if ($defaultlanguage eq "F") {
- print "Entrez des minutes correctes svp (entre 0 et 59).\n";
- } else {
- print "Please give a correct value for the minutes (from 0 to 59).\n";
- }
- return 102;
- }
- if ($second < 0 || $second > 59) {
- if ($defaultlanguage eq "F") {
- print "Entrez des secondes correctes svp (entre 0 et 59).\n";
- } else {
- print "Please give a correct value for the seconds (from 0 to 59).\n";
- }
- return 102;
- }
- $timestamp = POSIX::mktime($second, $minute, $hour, $day, $month, $year, 0, 0, -1); # -1: no winter/summer time modification
- if ($timestamp == undef) {
- if ($defaultlanguage eq "F") {
- print "Date incorrecte.\n";
- print "Ajoutez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n";
- } else {
- print "Invalid date.\n";
- print "Please add 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n";
- }
- return 102;
- }
- }
-
- print $so pack("va24V", 0x794a, $userid, $timestamp);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x794b) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(32);
- my(@dat) = unpack("Va24V", $buf);
- while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) {
- chop($dat[1]);
- };
- if ($dat[0] != -1 && $dat[0] != 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Date finale de banissement du compte [$dat[1]][id: $dat[0]] changée avec succès ".
- ($dat[2] == 0 ? "en [dé-bannie].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2])));
- } else {
- print "Final date of banishment of the account [$dat[1]][id: $dat[0]] successfully changed ".
- ($dat[2] == 0 ? "to [unbanished].\n" : "to be until ".(POSIX::ctime($dat[2])));
- }
- # localtime($dat[2]) is also possible to display instead of POSIX::ctime.
- } else {
- if ($defaultlanguage eq "F") {
- print "Echec du changement de la date finale de banissement du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Account [$userid] final date of banishment changing failed. Account doesn't exist.\n";
- }
- }
-
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Add/substract time to the final date of a banishment of an account
-sub banaddaccount() {
- my($userid, $modif) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print " <exemple> banadd nomtest +1m-2mn1s-6y\n";
- print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n";
- print " et 6 ans dans le même temps.\n";
- } else {
- print "Please input an account name.\n";
- print " <example> banadd testname +1m-2mn1s-6y\n";
- print " this example adds 1 month and 1 second, and substracts 2 minutes\n";
- print " and 6 years at the same time.\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- my($year, $month, $day) = (0, 0 ,0);
- my($hour, $minute, $second) = (0, 0 ,0);
-
- $modif = lc($modif);
- while (length($modif) > 0) {
- my($value) = int($modif);
- if ($value == 0) {
- $modif = substr($modif, 1);
- } else {
- if (substr($modif, 0, 1) =~ /[\-\+]/) {
- $modif = substr($modif, 1);
- }
- while (length($modif) > 0 && substr($modif, 0, 1) =~ /[0-9]/) {
- $modif = substr($modif, 1);
- }
- if (index($modif, "s") == 0) {
- $second = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "mn") == 0) {
- $minute = $value;
- $modif = substr($modif, 2);
- } elsif (index($modif, "h") == 0) {
- $hour = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "d") == 0 || index($modif, "j") == 0) {
- $day = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "m") == 0) {
- $month = $value;
- $modif = substr($modif, 1);
- } elsif (index($modif, "y") == 0 || index($modif, "a") == 0) {
- $year = $value;
- $modif = substr($modif, 1);
- } else {
- $modif = substr($modif, 1);
- }
- }
- }
-
- if ($defaultlanguage eq "F") {
- print " année: $year\n";
- print " mois: $month\n";
- print " jour: $day\n";
- print " heure: $hour\n";
- print " minute: $minute\n";
- print " seconde: $second\n";
- } else {
- print " year: $year\n";
- print " month: $month\n";
- print " day: $day\n";
- print " hour: $hour\n";
- print " minute: $minute\n";
- print " second: $second\n";
- }
-
- if ($year == 0 && $month == 0 && $day == 0 && $hour == 0 && $minute == 0 && $second == 0) {
- if ($defaultlanguage eq "F") {
- print "Vous devez entrer un ajustement avec cette commande, svp:\n";
- print " Valeur d'ajustement (-1, 1, +1, etc...)\n";
- print " Element modifié:\n";
- print " a ou y: année\n";
- print " m: mois\n";
- print " j ou d: jour\n";
- print " h: heure\n";
- print " mn: minute\n";
- print " s: seconde\n";
- print " <exemple> banadd nomtest +1m-2mn1s-6y\n";
- print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n";
- print " et 6 ans dans le même temps.\n";
- } else {
- print "Please give an adjustment with this command:\n";
- print " Adjustment value (-1, 1, +1, etc...)\n";
- print " Modified element:\n";
- print " a or y: year\n";
- print " m: month\n";
- print " j or d: day\n";
- print " h: hour\n";
- print " mn: minute\n";
- print " s: second\n";
- print " <example> banadd testname +1m-2mn1s-6y\n";
- print " this example adds 1 month and 1 second, and substracts 2 minutes\n";
- print " and 6 years at the same time.\n";
- }
- return 137;
- }
- if ($year > 127 || $year < -127) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement d'années correct (de -127 à 127), svp.\n";
- } else {
- print "Please give a correct adjustment for the years (from -127 to 127).\n";
- }
- return 137;
- }
- if ($month > 255 || $month < -255) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de mois correct (de -255 à 255), svp.\n";
- } else {
- print "Please give a correct adjustment for the months (from -255 to 255).\n";
- }
- return 137;
- }
- if ($day > 32767 || $day < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de jours correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the days (from -32767 to 32767).\n";
- }
- return 137;
- }
- if ($hour > 32767 || $hour < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement d'heures correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the hours (from -32767 to 32767).\n";
- }
- return 137;
- }
- if ($minute > 32767 || $minute < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de minutes correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the minutes (from -32767 to 32767).\n";
- }
- return 137;
- }
- if ($second > 32767 || $second < -32767) {
- if ($defaultlanguage eq "F") {
- print "Entrez un ajustement de secondes correct (de -32767 à 32767), svp.\n";
- } else {
- print "Please give a correct adjustment for the seconds (from -32767 to 32767).\n";
- }
- return 137;
- }
-
- print $so pack("va24vvvvvv", 0x794c, $userid, $year, $month, $day, $hour, $minute, $second);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x794d) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(32);
- my(@dat) = unpack("Va24V", $buf);
- while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) {
- chop($dat[1]);
- };
- if ($dat[0] == -1 || $dat[0] == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Echec du changement de la date finale de banissement du compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Account [$userid] final date of banishment changing failed. Account doesn't exist.\n";
- }
- } else {
- if ($defaultlanguage eq "F") {
- print "Date finale de banissement du compte [$dat[1]][id: $dat[0]] changée avec succès ".
- ($dat[2] == 0 ? "en [dé-bannie].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2])));
- } else {
- print "Final date of banishment of the account [$dat[1]][id: $dat[0]] successfully changed ".
- ($dat[2] == 0 ? "to [unbanished].\n" : "to be until ".(POSIX::ctime($dat[2])));
- }
- # localtime($dat[2]) is also possible to display instead of POSIX::ctime.
- }
-
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Request to displaying information about an account (by its name)
-sub whoaccount() {
- my($userid) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> who nomtest\n";
- } else {
- print "Please input an account name.\n";
- print "<example> who testname\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
-
- print $so pack("va24", 0x7952, $userid);
- $so->flush();
-
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7953) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 122;
- }
- my($id2, $GM_level, $name, $sex, $count, $status, $error_message, $last_login, $last_ip, $email, $validite, $ban_date, $memo_size) = unpack("VCa24cVVa20a24a16a40VVv", readso(148));
- my($memo) = "";
- if ($memo_size > 0) {
- $memo = unpack("a".$memo_size, readso($memo_size));
- }
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- while (length($error_message) > 0 && substr($error_message, length($error_message)-1, 1) eq chr(0)) {
- chop($error_message);
- };
- while (length($last_login) > 0 && substr($last_login, length($last_login)-1, 1) eq chr(0)) {
- chop($last_login);
- };
- while (length($last_ip) > 0 && substr($last_ip, length($last_ip)-1, 1) eq chr(0)) {
- chop($last_ip);
- };
- while (length($email) > 0 && substr($email, length($email)-1, 1) eq chr(0)) {
- chop($email);
- };
- while (length($memo) > 0 && substr($memo, length($memo)-1, 1) eq chr(0)) {
- chop($memo);
- };
-
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Impossible de trouver le compte [$userid]. Le compte n'existe pas.\n";
- } else {
- print "Unabled to find the account [$userid]. Account doesn't exist.\n";
- }
- return 123;
- } else {
- if ($defaultlanguage eq "F") {
- print "Le compte [$userid] a les caractéristiques suivantes:\n";
- } else {
- print "The account [$userid] is set with:\n";
- }
- if ($GM_level == 0) {
- print " Id: $id2 (non-GM)\n";
- } else {
- if ($defaultlanguage eq "F") {
- print " Id: $id2 (GM niveau $GM_level)\n";
- } else {
- print " Id: $id2 (GM level $GM_level)\n";
- }
- }
- if ($defaultlanguage eq "F") {
- print " Nom: '$name'\n";
- print " Sexe: ".("Femme", "Male", "Serveur")[$sex]."\n";
- } else {
- print " Name: '$name'\n";
- print " Sex: ".("Female", "Male", "Server")[$sex]."\n";
- }
- print " E-mail: $email\n";
- if ($status == 7) {
- print " Statut: 7 [You are Prohibited to log in until $error_message]\n";
- } else {
- print " Statut: $status [".(
- ($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"),
- "Unregistered ID",
- "Incorrect Password",
- "This ID is expired",
- "Rejected from Server",
- "You have been blocked by the GM Team",
- "Your Game's EXE file is not the latest version",
- "You are Prohibited to log in until %s",
- "Server is jammed due to over populated",
- "No MSG",
- "This ID is totally erased")[$status == 100 ? 10 : $status]."]\n";
- }
- if ($defaultlanguage eq "F") {
- print " Banissement: ".($ban_date == 0 ? "non banni.\n" : "jusqu'au ".(POSIX::ctime($ban_date)));
- print " Compteur: $count connexion".("s", "")[$count > 1 ? 0 : 1]."\n";
- print " Dernière connexion le: $last_login (ip: $last_ip)\n";
- print " Limite de validité: ".($validite == 0 ? "illimité.\n" : "jusqu'au ".(POSIX::ctime($validite)));
- } else {
- print " Banishment: ".($ban_date == 0 ? "not banished.\n" : "until ".(POSIX::ctime($ban_date)));
- print " Count: $count connection".("s", "")[$count > 1 ? 0 : 1]."\n";
- print " Last connection at: $last_login (ip: $last_ip)\n";
- print " Validity limit: ".($validite == 0 ? "unlimited.\n" : "until ".(POSIX::ctime($validite)));
- }
- print " Memo: '$memo'\n";
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Request to displaying information about an account (by its id)
-sub infoaccount() {
- my($id) = @_;
- if ($id < 0) {
- if ($defaultlanguage eq "F") {
- print "Entrez un id ayant une valeur positive svp.\n";
- } else {
- print "Please input a positive value for the id.\n";
- }
- return 136;
- }
-
- print $so pack("vV", 0x7954, $id);
- $so->flush();
-
- $buf = readso(2);
- if (unpack("v", $buf) != 0x7953) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 122;
- }
- my($id2, $GM_level, $name, $sex, $count, $status, $error_message, $last_login, $last_ip, $email, $validite, $ban_date, $memo_size) = unpack("VCa24cVVa20a24a16a40VVv", readso(148));
- my($memo) = "";
- if ($memo_size > 0) {
- $memo = unpack("a".$memo_size, readso($memo_size));
- }
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- while (length($error_message) > 0 && substr($error_message, length($error_message)-1, 1) eq chr(0)) {
- chop($error_message);
- };
- while (length($last_login) > 0 && substr($last_login, length($last_login)-1, 1) eq chr(0)) {
- chop($last_login);
- };
- while (length($last_ip) > 0 && substr($last_ip, length($last_ip)-1, 1) eq chr(0)) {
- chop($last_ip);
- };
- while (length($email) > 0 && substr($email, length($email)-1, 1) eq chr(0)) {
- chop($email);
- };
- while (length($memo) > 0 && substr($memo, length($memo)-1, 1) eq chr(0)) {
- chop($memo);
- };
-
- if (length($name) == 0 || $name eq "") {
- if ($defaultlanguage eq "F") {
- print "Impossible de trouver le nom du compte [id: $id2]. Le compte n'existe pas.\n";
- } else {
- print "Unabled to find the account [id: $id2] name. Account doesn't exist.\n";
- }
- return 123;
- } else {
- if ($defaultlanguage eq "F") {
- print "Le compte [id: $id2] a les caractéristiques suivantes:\n";
- } else {
- print "The account [id: $id2] is set with:\n";
- }
- if ($GM_level == 0) {
- print " Id: $id2 (non-GM)\n";
- } else {
- if ($defaultlanguage eq "F") {
- print " Id: $id2 (GM niveau $GM_level)\n";
- } else {
- print " Id: $id2 (GM level $GM_level)\n";
- }
- }
- if ($defaultlanguage eq "F") {
- print " Nom: '$name'\n";
- print " Sexe: ".("Femme", "Male", "Serveur")[$sex]."\n";
- } else {
- print " Name: '$name'\n";
- print " Sex: ".("Female", "Male", "Server")[$sex]."\n";
- }
- print " E-mail: $email\n";
- if ($status == 7) {
- print " Statut: 7 [You are Prohibited to log in until $error_message]\n";
- } else {
- print " Statut: $status [".(
- ($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"),
- "Unregistered ID",
- "Incorrect Password",
- "This ID is expired",
- "Rejected from Server",
- "You have been blocked by the GM Team",
- "Your Game's EXE file is not the latest version",
- "You are Prohibited to log in until %s",
- "Server is jammed due to over populated",
- "No MSG",
- "This ID is totally erased")[$status == 100 ? 10 : $status]."]\n";
- }
- if ($defaultlanguage eq "F") {
- print " Banissement: ".($ban_date == 0 ? "non banni.\n" : "jusqu'au ".(POSIX::ctime($ban_date)));
- print " Compteur: $count connexion".("s", "")[$count > 1 ? 0 : 1]."\n";
- print " Dernière connexion le: $last_login (ip: $last_ip)\n";
- print " Limite de validité: ".($validite == 0 ? "illimité.\n" : "jusqu'au ".(POSIX::ctime($validite)));
- } else {
- print " Banishment: ".($ban_date == 0 ? "not banished.\n" : "until ".(POSIX::ctime($ban_date)));
- print " Count: $count connection".("s", "")[$count > 1 ? 0 : 1]."\n";
- print " Last connection at: $last_login (ip: $last_ip)\n";
- print " Validity limit: ".($validite == 0 ? "unlimited.\n" : "until ".(POSIX::ctime($validite)));
- }
- print " Memo: '$memo'\n";
- }
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Check the validity of a password
-# (Note: never send back a password with login-server!! security of passwords)
-sub checkaccount() {
- my($userid, $passwd) = @_;
- if ($userid eq "") {
- if ($defaultlanguage eq "F") {
- print "Entrez un nom de compte svp.\n";
- print "<exemple> check testname motdepasse\n";
- } else {
- print "Please input an account name.\n";
- print "<example> check testname password\n";
- }
- return 136;
- }
- if (verify_accountname($userid) == 0) {
- return 102;
- }
- if ($passwd eq "") {
- return 134 if (($passwd = typepasswd()) eq "");
- }
- if (verify_password($passwd) == 0) {
- return 131;
- }
- print $so pack("va24a24", 0x793a, $userid,$passwd);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x793b) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 132;
- }
- $buf = readso(28);
- my($id2, $name) = unpack("Va24", $buf);
- while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) {
- chop($name);
- };
- if ($id2 == -1 || $id2 == 4294967295) {
- if ($defaultlanguage eq "F") {
- print "Le compte [$userid] n'existe pas ou le mot de passe est incorrect.\n";
- } else {
- print "The account [$userid] doesn't exist or the password is incorrect.\n";
- }
- return 133;
- } else {
- if ($defaultlanguage eq "F") {
- print "Le mot de passe donné correspond bien au compte [$name][id: $id2].\n";
- } else {
- print "The proposed password is correct for the account [$name][id: $id2].\n";
- }
- }
- return 130;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Request to login-server to reload GM configuration file
-sub reloadGM() {
- print $so pack("v", 0x7955);
- $so->flush();
- if ($defaultlanguage eq "F") {
- print "Demande de recharger le fichier de configuration des GM envoyée.\n";
- print "Vérifiez les comptes GM actuels (après rechargement):\n";
- } else {
- print "Request to reload the GM configuration file sended.\n";
- print "Check the actual GM accounts (after reloading):\n";
- }
- &listaccount(0, 0, 1); # 1: to list only GM
- return 180;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Send a broadcast message
-sub sendbroadcast() {
- my($type, $message) = @_;
- if ($message eq "" || length($message) == 0) {
- if ($defaultlanguage eq "F") {
- print "Entrez un message svp.\n";
- if ($type == 0) {
- print "<exemple> kami un message\n";
- } else {
- print "<exemple> kamib un message\n";
- }
- } else {
- print "Please input a message.\n";
- if ($type == 0) {
- print "<example> kami a message\n";
- } else {
- print "<example> kamib a message\n";
- }
- }
- return 136;
- }
-
- print $so pack("vvVa".length($message), 0x794e, $type, length($message), $message);
- $so->flush();
- $buf = readso(2);
- if (unpack("v", $buf) != 0x794f) {
- if ($defaultlanguage eq "F") {
- print "Problème de connexion au serveur (réponse incorrecte).\n";
- } else {
- print "Connection error to the server (incorrect answer).\n";
- }
- return 152;
- }
- $buf = readso(2);
- my($answer) = unpack("v", $buf);
- if ($answer == -1 || $answer == 65535) {
- if ($defaultlanguage eq "F") {
- print "Echec de l'envoi du message. Aucun server de char en ligne.\n";
- } else {
- print "Message sending failed. No online char-server.\n";
- }
- } else {
- if ($defaultlanguage eq "F") {
- print "Message transmis au server de logins avec succès.\n";
- } else {
- print "Message successfully sended to login-server.\n";
- }
- }
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Change language of displaying
-sub changelanguage() {
- my($language) = @_;
- if ($language eq "" || length($language) == 0) {
- if ($defaultlanguage == 'F') {
- printf("Entrez une langue svp.\n");
- printf("<exemple> language english\n");
- printf(" language français\n");
- } else {
- printf("Please input a language.\n");
- printf("<example> language english\n");
- printf(" language français\n");
- }
- return 136;
- }
-
- $language = uc(substr($language, 0, 1));
- if ($language =~ /^[EF]$/) {
- $defaultlanguage = $language;
- if ($defaultlanguage == 'F') {
- printf("Changement de la langue d'affichage en Français.\n");
- } else {
- printf("Displaying language changed to English.\n");
- }
- } else {
- if ($defaultlanguage == 'F') {
- printf("Langue non paramétrée (langues possibles: 'Français' ou 'English').\n");
- } else {
- printf("Undefined language (possible languages: Français or English).\n");
- }
- }
-
- return 0;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: sending 'end of connection' packet
-sub quit() {
- print $so pack("v", 0x7532);
- $so->flush();
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Get datas from the socket
-sub readso() {
- my($len) = shift;
- my($buf);
- if (read($so, $buf, $len) < $len) {
- if ($defaultlanguage eq "F") {
- print "Erreur de lecture sur la Socket.\n";
- } else {
- print "Socket read error.\n";
- }
- exit(3);
- }
- return $buf;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Input of a password
-sub typepasswd {
- my($passwd1, $passwd2);
- cbreak();
- if ($defaultlanguage eq "F") {
- print "Entrez le mot de passe > "; $passwd1 = <STDIN>; chomp($passwd1); print "\n";
- print "Ré-entrez le mot de passe > "; $passwd2 = <STDIN>; chomp($passwd2); print "\n";
- } else {
- print "Type the password > "; $passwd1 = <STDIN>; chomp($passwd1); print "\n";
- print "Verify the password > "; $passwd2 = <STDIN>; chomp($passwd2); print "\n";
- }
- cooked();
- if ($passwd1 ne $passwd2) {
- if ($defaultlanguage eq "F") {
- print "Erreur de vérification du mot de passe: Saisissez le même mot de passe svp.\n";
- } else {
- print "Password verification failed. Please input same password.\n";
- }
- return "";
- }
- return $passwd1;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Return ordonal text of a number
-sub makeordinal {
- my($c) = shift;
- if ($defaultlanguage eq "F") {
- if ($c < 1) {
- return $c;
- }
- return $c.("er", "ème")[$c == 1 ? 0 : 1];
- } else {
- if ($c % 10 < 4 && $c % 10 != 0 && ($c < 10 || $c > 20)) {
- return $c.("st","nd","rd")[$c % 10 - 1];
- }
- return $c."th";
- }
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Test of the validity of an account name (return 0 if incorrect, and 1 if ok)
-sub verify_accountname {
- my($account_name) = @_; # Get the account_name
- if ($account_name =~ /[\x00-\x1f]/) { # remove control char
- my($c) = length($`) + 1;
- if ($defaultlanguage eq "F") {
- print "Caractère interdit trouvé dans le nom du compte (".makeordinal($c)." caractère).\n";
- } else {
- print "Illegal character found in the account name (".makeordinal($c)." character).\n";
- }
- return 0;
- }
- if (length($account_name) < 4) {
- if ($defaultlanguage eq "F") {
- print "Nom du compte trop court. Entrez un nom de compte de 4-23 caractères.\n";
- } else {
- print "Account name is too short. Please input an account name of 4-23 bytes.\n";
- }
- return 0;
- }
- if (length($account_name) > 23) {
- if ($defaultlanguage eq "F") {
- print "Nom du compte trop long. Entrez un nom de compte de 4-23 caractères.\n";
- } else {
- print "Account name is too long. Please input an account name of 4-23 bytes.\n";
- }
- return 0;
- }
- return 1;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Test of the validity of password (return 0 if incorrect, and 1 if ok)
-sub verify_password {
- my($password) = @_; # Get the password
- if ($password =~ /[\x00-\x1f]/) {
- my($c) = length($`) + 1;
- if ($defaultlanguage eq "F") {
- print "Caractère interdit trouvé dans le mot de passe (".makeordinal($c)." caractère).\n";
- } else {
- print "Illegal character found in the password (".makeordinal($c)." character).\n";
- }
- return 0;
- }
- if (length($password) < 4) {
- if ($defaultlanguage eq "F") {
- print "Mot de passe trop court. Entrez un mot de passe de 4-23 caractères.\n";
- } else {
- print "Password is too short. Please input a password of 4-23 bytes.\n";
- }
- return 0;
- }
- if (length($password) > 23) {
- if ($defaultlanguage eq "F") {
- print "Mot de passe trop long. Entrez un mot de passe de 4-23 caractères.\n";
- } else {
- print "Password is too long. Please input a password of 4-23 bytes.\n";
- }
- return 0;
- }
- return 1;
-}
-
-#--------------------------------------------------------------------------
-
-# Sub-function: Test of the validity of an e-mail (return 0 if incorrect, and 1 if ok)
-sub verify_email {
- my($email) = @_; # Get the e-mail
- # To ignore a '.' before the @ (wanadoo, a provider, do that)
- $email =~ s/\.\@/\@/;
- # If the e-mail is void, it's not correct -> return 0
- if ($email eq '') {
- return(0);
- }
- # If the e-mail have no "@", it's not correct -> return 0
- if ($email !~ /\@/) {
- return(0);
- }
- # If the e-mail have a ",", a space, a tab or a ";", it's not correct -> return 0
- if ($email =~ /[\,|\s|\;]/) {
- return(0)
- };
- # IF
- # (the e-mail contains 2 "@", or ".." or "@." or starts or finishes by a ".")
- # OR IF
- # (the e-mail doesn't contain "@localhost" AND
- # - it doesn't contain characters followed by "@" itself followed by letters itself followed by "." and 2 or more letters
- # - or an IP address)
- # -> so, it's not good ! (finish !)
- if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/ ||
- ($email !~ /^.+\@localhost$/ &&
- $email !~ /^.+\@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) {
- return(0); # non-valid email
- } else {
- # If not, the e-email address is correct
- return(1); # valid email
- }
+#!/usr/bin/perl +use POSIX; +########################################################################## +# EAthena login-server remote administration tool +# New ladamin by [Yor] +########################################################################## +#-------------------------------INSTRUCTIONS------------------------------ +# Set the 4 variables below: +# IP of the login server. +# Port where the login-server listens incoming packets. +# Password of administration (same of config_athena.conf). +# Displayed language of the sofware (if not correct, english is used). +# IMPORTANT: +# Be sure that you authorize remote administration in login-server +# (see login_athena.conf, 'admin_state' parameter) +#------------------------------------------------------------------------- +my($loginserverip) = "127.0.0.1"; # IP of login-server +my($loginserverport) = 6900; # Port of login-server +my($loginserveradminpassword) = "admin"; # Administration password +my($connecttimeout) = 10; # Timeout of connection (in seconds) +my($passenc) = 2; # Encoding type of the password +my($defaultlanguage) = "E"; # Default language (F: Français/E: English) + # (if it's not 'F', default is English) + +#------------------------------------------------------------------------- +# LIST of COMMANDs that you can type at the prompt: +# To use these commands you can only type only the first letters. +# You must type a minimum of letters (you can not type 'a', +# because ladmin doesn't know if it's for 'aide' or for 'add') +# <Example> q <= quit, li <= list, pass <= passwd, etc. +# +# Note: every time you must give a account_name, you can use "" or '' (spaces can be included) +# +# aide/help/? +# Display the description of the commands +# aide/help/? [command] +# Display the description of the specified command +# +# add <account_name> <sex> <password> +# Create an account with the default email (a@a.com). +# Concerning the sex, only the first letter is used (F or M). +# The e-mail is set to a@a.com (default e-mail). It's like to have no e-mail. +# When the password is omitted, the input is done without displaying of the pressed keys. +# <example> add testname Male testpass +# +# ban/banish yyyy/mm/dd hh:mm:ss <account name> +# Changes the final date of a banishment of an account. +# Same command of banset, except that account_name is at end +# +# banadd <account_name> <modifier> +# Adds or substracts time from the final date of a banishment of an account. +# Modifier is done as follows: +# Adjustment value (-1, 1, +1, etc...) +# Modified element: +# a or y: year +# m: month +# j or d: day +# h: hour +# mn: minute +# s: second +# <example> banadd testname +1m-2mn1s-6y +# this example adds 1 month and 1 second, and substracts 2 minutes and 6 years at the same time. +# NOTE: If you modify the final date of a non-banished account, +# you fix the final date to (actual time +- adjustments) +# +# banset <account_name> yyyy/mm/dd [hh:mm:ss] +# Changes the final date of a banishment of an account. +# Default time: 23:59:59 +# banset <account_name> 0 +# Set a non-banished account (0 = unbanished). +# +# block <account name> +# Set state 5 (You have been blocked by the GM Team) to an account. +# Same command of state <account_name> 5. +# +# check <account_name> <password> +# Check the validity of a password for an account +# NOTE: Server will never sends back a password. +# It's the only method you have to know if a password is correct. +# The other method is to have a ('physical') access to the accounts file. +# +# create <account_name> <sex> <email> <password> +# Like the 'add' command, but with e-mail moreover. +# <example> create testname Male my@mail.com testpass +# +# del <account name> +# Remove an account. +# This order requires confirmation. After confirmation, the account is deleted. +# +# email <account_name> <email> +# Modify the e-mail of an account. +# +# getcount +# Give the number of players online on all char-servers. +# +# gm <account_name> [GM_level] +# Modify the GM level of an account. +# Default value remove GM level (GM level = 0). +# <example> gm testname 80 +# +# id <account name> +# Give the id of an account. +# +# info <account_id> +# Display complete information of an account. +# +# kami <message> +# Sends a broadcast message on all map-server (in yellow). +# kamib <message> +# Sends a broadcast message on all map-server (in blue). +# +# language <language> +# Change the language of displaying. +# +# list/ls [start_id [end_id]] +# Display a list of accounts. +# 'start_id', 'end_id': indicate end and start identifiers. +# Research by name is not possible with this command. +# <example> list 10 9999999 +# +# listBan/lsBan [start_id [end_id]] +# Like list/ls, but only for accounts with state or banished +# +# listGM/lsGM [start_id [end_id]] +# Like list/ls, but only for GM accounts +# +# listOK/lsOK [start_id [end_id]] +# Like list/ls, but only for accounts without state and not banished +# +# memo <account_name> <memo> +# Modify the memo of an account. +# 'memo': it can have until 253 characters (with spaces or not). +# +# name <account_id> +# Give the name of an account. +# +# passwd <account_name> <new_password> +# Change the password of an account. +# When new password is omitted, the input is done without displaying of the pressed keys. +# +# quit/end/exit +# End of the program of administration +# +# reloadGM +# Reload GM configuration file +# +# search <expression> +# Seek accounts. +# Displays the accounts whose names correspond. +# search -r/-e/--expr/--regex <expression> +# Seek accounts by regular expression. +# Displays the accounts whose names correspond. +# +# sex <account_name> <sex> +# Modify the sex of an account. +# <example> sex testname Male +# +# state <account_name> <new_state> <error_message_#7> +# Change the state of an account. +# 'new_state': state is the state of the packet 0x006a + 1. The possibilities are: +# 0 = Account ok 6 = Your Game's EXE file is not the latest version +# 1 = Unregistered ID 7 = You are Prohibited to log in until %s +# 2 = Incorrect Password 8 = Server is jammed due to over populated +# 3 = This ID is expired 9 = No MSG +# 4 = Rejected from Server 100 = This ID has been totally erased +# 5 = You have been blocked by the GM Team +# all other values are 'No MSG', then use state 9 please. +# 'error_message_#7': message of the code error 6 = Your are Prohibited to log in until %s (packet 0x006a) +# +# timeadd <account_name> <modifier> +# Adds or substracts time from the validity limit of an account. +# Modifier is done as follows: +# Adjustment value (-1, 1, +1, etc...) +# Modified element: +# a or y: year +# m: month +# j or d: day +# h: hour +# mn: minute +# s: second +# <example> timeadd testname +1m-2mn1s-6y +# this example adds 1 month and 1 second, and substracts 2 minutes and 6 years at the same time. +# NOTE: You can not modify a unlimited validity limit. +# If you want modify it, you want probably create a limited validity limit. +# So, at first, you must set the validity limit to a date/time. +# +# timeset <account_name> yyyy/mm/dd [hh:mm:ss] +# Changes the validity limit of an account. +# Default time: 23:59:59 +# timeset <account_name> 0 +# Gives an unlimited validity limit (0 = unlimited). +# +# unban/unbanish <account name> +# Unban an account. +# Same command of banset 0. +# +# unblock <account name> +# Set state 0 (Account ok) to an account. +# Same command of state <account_name> 0. +# +# version +# Display the version of the login-server. +# +# who <account name> +# Displays complete information of an account. +# +#------------------------------------------------------------------------- +# Possibilities to execute ladmin in command line by usage of the software with a parameter: +# ./ladmin --mode param1 ... +# +# --makesymlink -- Create the symbolic links for a use in shell +# --add <account_name> <sex> <password> -- Create an account with the default email (or -a) +# --ban yyyy/mm/dd hh:mm:ss <account_name> -- Change the final date of a banishment of an account (or -b) +# --banadd <account_name> <modifier> -- Add or substract time from the final date of a banishment of an account (or - ba) +# --banset <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the final date of a banishment of an account (or -bs) +# --banset <account_name> 0 -- Unbanish an account (or -bs) +# --block <account_name> -- Set state 5 to an account (or -bl) +# --check <account_name> <password> -- Check the validity of a password for an account (or -check) +# --create <account_name> <sex> <email> <password> -- Create an account with email (or -c) +# --del <account_name> -- Remove an account (or -d) +# --email <account_name> <email> -- Modify an email of an account (or -e) +# --getcount -- Give the number of players online on all char-servers (or -g) +# --gm <account_name> <GM_level> -- Change the GM level of an account (or -gm) +# --id <account_name> -- Give the id of an account (or -i) +# --info <account_id> -- Display complete information of an account (or -info) +# --kami <message> -- Sends a broadcast message on all map-server (in yellow). +# --kamib <message> -- Sends a broadcast message on all map-server (in blue). +# --language <language> -- Change the language of displaying (-lang). +# --list [First_id [Last_id]] -- Display a list of accounts (or -l) +# --listBan [start_id [end_id]] -- Display a list of accounts with state or banished (or -lBan) +# --listGM [First_id [Last_id]] -- Display a list of GM accounts (or -lGM) +# --listOK [start_id [end_id]] -- Display a list of accounts without state and not banished (or -lOK) +# --memo <account_name> <memo> -- Modify the memo of an account (or -e) +# --name <account_id> -- Give the name of an account (or -n) +# --passwd <account_name> <new_password> -- Change the password of an account (or -p) +# --reloadGM -- Reload GM configuration file (or -r) +# --search <expression> -- Seek accounts (or -s) +# --search -e/-r/--expr/--regex <expression> -- Seek accounts by REGEX (or -s) +# --sex <account_name> <sex> -- Change the sex of an account (or -sex) +# --state <account_name> <new_state> <error_message_#7> -- Change the state of an account (or -t) +# --timeadd <account_name> <modifier> -- Add or substract time from the validity limit of an account (or - ta) +# --timeset <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the validify limit of an account (or -ts) +# --timeset <account_name> 0 -- Give a unlimited validity limit (or -ts) +# --unban/unbanish <account_name> -- Unban an account (or -uba) +# --unblock <account_name> -- Set state 0 to an account (or -ubl) +# --version -- Display the version of the login-server (or -v) +# --who <account_name> -- Display complete information of an account (or -w) +# +# <example> ./ladmin --addaccount testname Male testpass +# +#------------------------------------------------------------------------- +# Possibilities to execute ladmin with symbolic links in Shell +# To create the symbolic links, execute ladmin with the '-- makesymlink' option. +# +# addaccount <account_name> <sex> <password> -- Create an account with the default email +# banaccount yyyy/mm/dd hh:mm:ss <account_name> -- Change the final date of a banishment of an account +# banaddaccount <account_name> <modifier> -- Add or substract time from the final date of a banishment of an account +# bansetaccount <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the final date of a banishment of an account +# bansetaccount <account_name> 0 -- Unbanish an account +# blockaccount <account_name> -- Set state 5 (blocked by the GM Team) to an account +# checkaccount <account_name> <password> -- Check the validity of a password for an account +# createaccount <account_name> <sex> <email> <password> -- Create an account with email +# delaccount <account_name> -- Remove an account +# emailaccount <account_name> <email> -- Modify an email of an account +# getcount -- Give the number of players online on all char-servers +# gmaccount <account_name> <GM_level> -- Change the GM level of an account +# idaccount <account_name> -- Give the id of an account +# infoaccount <account_id> -- Display complete information of an account +# kami <message> -- Sends a broadcast message on all map-server (in yellow). +# kamib <message> -- Sends a broadcast message on all map-server (in blue). +# ladminlanguage <language> -- Change the language of displaying. +# listaccount [First_id [Last_id]] -- Display a list of accounts +# listBanaccount [start_id [end_id]] -- Display a list of accounts with state or banished +# listGMaccount [First_id [Last_id]] -- Display a list of GM accounts +# listOKaccount [start_id [end_id]] -- Display a list of accounts without state and not banished +# loginserverversion -- Display the version of the login-server +# memoaccount <account_name> <memo> -- Modify the memo of an account +# nameaccount <account_id> -- Give the name of an account +# passwdaccount <account_name> <new_password> -- Change the password of an account +# reloadGM -- Reload GM configuration file +# searchaccount <expression> -- Seek accounts +# searchaccount -e/-r/--expr/--regex <expression> -- Seek accounts by REGEX +# sexaccount <account_name> <sex> -- Change the sex of an account (or -sex) +# stateaccount <account_name> <new_state> <error_message_#7> -- Change the state of an account +# timeaddaccount <account_name> <modifier> -- Add or substract time from the validity limit of an account +# timesetaccount <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the validify limit of an account +# timesetaccount <account_name> 0 -- Give a unlimited validity limit +# unbanaccount <account_name> -- Unban an account +# unblockaccount <account_name> -- Set state 0 (Account ok) to an account +# whoaccount <account_name> -- Display complete information of an account +# <exemple> ./addaccount testname Male testpass +# +#------------------------------------------------------------------------- +# About the encoding: +# +# The Digest::MD5 module is necessary to use the encrypted password system. +# When the software cannot found the Digest::MD5 module, +# encoding is automatically disabled ($passenc=0), which allows +# to use this program in any cases. +# +#------------------------------------------------------------------------- +# How to use ladmin with UNIX: +# +# You excecute ladmin as a standard command. +# <Example of preparation to have an access to ladmin> +# $ mv ladmin ladmin_org +# $ nkf -eLu ladmin_org > ladmin +# $ chmod 700 ladmin +# <Example to start directly ladmin> +# $ perl ladmin +# +########################################################################## + + +use strict; +use IO::Socket; +use Term::ReadLine; +eval { use POSIX qw(:termios_h); }; +eval { use Digest::MD5 qw(md5); } if $passenc; +$passenc = 0 if($@); + +my($ver) = "1.00"; + +# Start of termios +my($termios, $orgterml, $termlecho, $termlnoecho) = (); +eval{ + $termios = POSIX::Termios->new(); + $termios->getattr(fileno(STDIN)); + $orgterml = $termios->getlflag(); + $termlecho = ECHO | ECHOK | ICANON; + $termlnoecho = $orgterml & ~$termlecho; +}; + +# Modification of termios for the displaying of passwords (no displays for pressed keys) +sub cbreak() { + if ($termios) { + $termios->setlflag($termlnoecho); + $termios->setcc(VTIME, 1); + $termios->setattr(fileno(STDIN), TCSANOW); + } +} +# Modification of termios to return at the normal displaying (after input of the passwords) +sub cooked() { + if ($termios) { + $termios->setlflag($orgterml); + $termios->setcc(VTIME,0); + $termios->setattr(fileno(STDIN),TCSANOW); + } +} +END{ cooked() } + +if ($defaultlanguage eq "F") { + print "Outil d'administration à distance de eAthena V.$ver\n"; +} else { + print "EAthena login-server administration tool V.$ver\n"; +} + +# Creation of the symbolic links for call of the program in line command of the shell +if ($ARGV[0] eq "--makesymlink") { + symlink $0, "loginserverversion"; + symlink $0, "addaccount"; + symlink $0, "banaccount"; + symlink $0, "banaddaccount"; + symlink $0, "bansetaccount"; + symlink $0, "blockaccount"; + symlink $0, "checkaccount"; + symlink $0, "createaccount"; + symlink $0, "delaccount"; + symlink $0, "emailaccount"; + symlink $0, "getcount"; + symlink $0, "gmaccount"; + symlink $0, "idaccount"; + symlink $0, "infoaccount"; + symlink $0, "kami"; + symlink $0, "kamib"; + symlink $0, "ladminlanguage"; + symlink $0, "listaccount"; + symlink $0, "listBanaccount"; + symlink $0, "listGMaccount"; + symlink $0, "listOKaccount"; + symlink $0, "memoaccount"; + symlink $0, "nameaccount"; + symlink $0, "passwdaccount"; + symlink $0, "reloadGM"; + symlink $0, "searchaccount"; + symlink $0, "sexaccount"; + symlink $0, "stateaccount"; + symlink $0, "timeaddaccount"; + symlink $0, "timesetaccount"; + symlink $0, "unbanaccount"; + symlink $0, "unblockaccount"; + symlink $0, "whoaccount"; + if ($defaultlanguage eq "F") { + print "Liens symbliques créés.\n"; + } else { + print "Symbolic links created.\n"; + } + exit(0); +} + +# Connection to the login-server +my($so,$er) = (); +eval{ + $so = IO::Socket::INET->new( + PeerAddr=> $loginserverip, + PeerPort=> $loginserverport, +# Proto => "tcp", + Timeout => $connecttimeout) or $er = 1; +}; +if ($er || $@) { + if ($defaultlanguage eq "F") { + print "\nImpossible de se connecter au serveur de login [${loginserverip}:$loginserverport] !\n"; + } else { + print "\nImpossible to have a connection with the login-server [${loginserverip}:$loginserverport] !\n"; + } + print "$!\n"; # Displaying of the error + exit(2); +} + +# Sending the administration password +if ($passenc == 0) { + print $so pack("v2a24",0x7918,0,$loginserveradminpassword); + $so->flush(); +} else { + print $so pack("v",0x791a); + $so->flush(); + my($buf) = readso(4); + if (unpack("v",$buf) != 0x01dc) { + if ($defaultlanguage eq "F") { + print "Erreur au login (échec de la création de la clef md5).\n"; + } else { + print "Error at login (failure of the md5 key creation).\n"; + } + } + $buf = readso(unpack("x2v",$buf)-4); + my($md5bin) = md5(($passenc == 1) ? $buf.$loginserveradminpassword : $loginserveradminpassword.$buf); + print $so pack("v2a16",0x7918,$passenc,$md5bin); + $so->flush(); +} + +# Waiting of the server reply +my($buf) = readso(3); + +if (unpack("v",$buf) != 0x7919 || unpack("x2c",$buf) != 0) { + if ($defaultlanguage eq "F") { + print "Erreur de login:\n"; + print " - mot de passe incorrect,\n"; + print " - système d'administration non activé, ou\n"; + print " - IP non autorisée.\n"; + } else { + print "Error at login:\n"; + print " - incorrect password,\n"; + print " - administration system not activated, or\n"; + print " - unauthorised IP.\n"; + } + quit(); + exit(4); +} + +if ($defaultlanguage eq "F") { + print "Connexion établie.\n"; +} else { + print "Established connection.\n"; +} + +#------------------------------------------------------------------------- +# Here are checked the command lines with arguments and symbolic links (no prompt) + +if ($0 =~ /addaccount$/ || + (($ARGV[0] eq "-a" || $ARGV[0] eq "--add") && ((shift @ARGV), 1))) { + my($r) = addaccount($ARGV[0], $ARGV[1], $ARGV[2]); + quit(); + exit($r); +} elsif ($0 =~ /banaccount$/ || $0 =~ /banishaccount$/ || + (($ARGV[0] eq "-b" || $ARGV[0] eq "--ban" || $ARGV[0] eq "--banish") && ((shift @ARGV), 1))) { + my($r) = bansetaccount($ARGV[1], $ARGV[2], $ARGV[0]); + quit(); + exit($r); +} elsif ($0 =~ /banaddaccount$/ || + (($ARGV[0] eq "-ba" || $ARGV[0] eq "--banadd") && ((shift @ARGV), 1))) { + my($r) = banaddaccount($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /bansetaccount$/ || + (($ARGV[0] eq "-bs" || $ARGV[0] eq "--banset") && ((shift @ARGV), 1))) { + my($r) = bansetaccount($ARGV[0], $ARGV[1], $ARGV[2]); + quit(); + exit($r); +} elsif ($0 =~ /blockaccount$/ || + (($ARGV[0] eq "-bl" || $ARGV[0] eq "--block") && ((shift @ARGV), 1))) { + my($r) = changestate($ARGV[0], 5, ""); + quit(); + exit($r); +} elsif ($0 =~ /checkaccount$/ || + (($ARGV[0] eq "-check" || $ARGV[0] eq "--check") && ((shift @ARGV), 1))) { + my($r) = checkaccount($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /createaccount$/ || + (($ARGV[0] eq "-c" || $ARGV[0] eq "--create") && ((shift @ARGV), 1))) { + my($r) = createaccount($ARGV[0], $ARGV[1], $ARGV[2], $ARGV[3]); + quit(); + exit($r); +} elsif ($0 =~ /delaccount$/ || + (($ARGV[0] eq "-d" || $ARGV[0] eq "--del") && ((shift @ARGV), 1))) { + my($r) = delaccount($ARGV[0]); + quit(); + exit($r); +} elsif ($0 =~ /emailaccount$/ || + (($ARGV[0] eq "-e" || $ARGV[0] eq "--email") && ((shift @ARGV), 1))) { + my($r) = changeemail($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /getcount$/ || + (($ARGV[0] eq "-g" || $ARGV[0] eq "--getcount") && ((shift @ARGV), 1))) { + my($r) = getlogincount(); + quit(); + exit($r); +} elsif ($0 =~ /gmaccount$/ || + (($ARGV[0] eq "-gm" || $ARGV[0] eq "--gm") && ((shift @ARGV), 1))) { + my($r) = changegmlevel($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /id$/ || + (($ARGV[0] eq "-i" || $ARGV[0] eq "--id") && ((shift @ARGV), 1))) { + my($r) = idaccount($ARGV[0]); + quit(); + exit($r); +} elsif ($0 =~ /infoaccount$/ || + (($ARGV[0] eq "-info" || $ARGV[0] eq "--info") && ((shift @ARGV), 1))) { + my($r) = infoaccount($ARGV[0]); + quit(); + exit($r); +} elsif ($0 =~ /kami$/ || + (($ARGV[0] eq "-kami" || $ARGV[0] eq "--kami") && ((shift @ARGV), 1))) { + my($r) = sendbroadcast(0, $ARGV[0]); + quit(); + exit($r); +} elsif ($0 =~ /kamib$/ || + (($ARGV[0] eq "-kamib" || $ARGV[0] eq "--kamib") && ((shift @ARGV), 1))) { + my($r) = sendbroadcast(0x10, $ARGV[0]); + quit(); + exit($r); +} elsif ($0 =~ /ladminlanguage$/ || + (($ARGV[0] eq "-lang" || $ARGV[0] eq "--language") && ((shift @ARGV), 1))) { + my($r) = changelanguage($ARGV[0]); + quit(); + exit($r); +} elsif ($0 =~ /listaccount$/ || + (($ARGV[0] eq "-l" || $ARGV[0] eq "--list") && ((shift @ARGV), 1))) { + my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 0); # 0: to list all + quit(); + exit($r); +} elsif ($0 =~ /listBanaccount$/ || + (($ARGV[0] eq "-lBan" || $ARGV[0] eq "--listBan") && ((shift @ARGV), 1))) { + my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 3); # 3: to list only accounts with state or banished + quit(); + exit($r); +} elsif ($0 =~ /listGMaccount$/ || + (($ARGV[0] eq "-lGM" || $ARGV[0] eq "--listGM") && ((shift @ARGV), 1))) { + my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 1); # 1: to list only GM + quit(); + exit($r); +} elsif ($0 =~ /listOKaccount$/ || + (($ARGV[0] eq "-lOK" || $ARGV[0] eq "--listOK") && ((shift @ARGV), 1))) { + my($r) = listaccount(int($ARGV[0]), int($ARGV[1]), 4); # 4: to list only accounts without state and not banished + quit(); + exit($r); +} elsif ($0 =~ /loginserverversion$/ || + (($ARGV[0] eq "-v" || $ARGV[0] eq "--version") && ((shift @ARGV), 1))) { + my($r) = checkloginversion(); + quit(); + exit($r); +} elsif ($0 =~ /memoaccount$/ || + (($ARGV[0] eq "-m" || $ARGV[0] eq "--memo") && ((shift @ARGV), 1))) { + my($r) = changememo($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /nameaccount$/ || + (($ARGV[0] eq "-n" || $ARGV[0] eq "--name") && ((shift @ARGV), 1))) { + my($r) = nameaccount(int($ARGV[0])); + quit(); + exit($r); +} elsif ($0 =~ /passwdaccount$/ || + (($ARGV[0] eq "-p" || $ARGV[0] eq "--passwd") && ((shift @ARGV), 1))) { + my($r) = changepasswd($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /reloadGM$/ || + (($ARGV[0] eq "-r" || $ARGV[0] eq "--reloadGM") && ((shift @ARGV), 1))) { + my($r) = reloadGM(); + quit(); + exit($r); +} elsif ($0 =~ /searchaccount$/ || + (($ARGV[0] eq "-s" || $ARGV[0] eq "--search") && ((shift @ARGV), 1))) { + my($r) = searchaccount($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /sexaccount$/ || + (($ARGV[0] eq "-sex" || $ARGV[0] eq "--sex") && ((shift @ARGV), 1))) { + my($r) = changesex($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /stateaccount$/ || + (($ARGV[0] eq "-t" || $ARGV[0] eq "--state") && ((shift @ARGV), 1))) { + my($r) = changestate($ARGV[0], $ARGV[1], $ARGV[2]); + quit(); + exit($r); +} elsif ($0 =~ /timeaddaccount$/ || + (($ARGV[0] eq "-ta" || $ARGV[0] eq "--timeadd") && ((shift @ARGV), 1))) { + my($r) = timeaddaccount($ARGV[0], $ARGV[1]); + quit(); + exit($r); +} elsif ($0 =~ /timesetaccount$/ || + (($ARGV[0] eq "-ts" || $ARGV[0] eq "--timeset") && ((shift @ARGV), 1))) { + my($r) = timesetaccount($ARGV[0], $ARGV[1], $ARGV[2]); + quit(); + exit($r); +} elsif ($0 =~ /unbanaccount$/ || $0 =~ /unbanishaccount$/ || + (($ARGV[0] eq "-uba" || $ARGV[0] eq "--unban" || $ARGV[0] eq "--unbanish") && ((shift @ARGV), 1))) { + my($r) = bansetaccount($ARGV[0], 0, ""); + quit(); + exit($r); +} elsif ($0 =~ /unblockaccount$/ || + (($ARGV[0] eq "-ubl" || $ARGV[0] eq "--unblock") && ((shift @ARGV), 1))) { + my($r) = changestate($ARGV[0], 0, ""); + quit(); + exit($r); +} elsif ($0 =~ /whoaccount$/ || + (($ARGV[0] eq "-w" || $ARGV[0] eq "--who") && ((shift @ARGV), 1))) { + my($r) = whoaccount($ARGV[0]); + quit(); + exit($r); +} + +#------------------------------------------------------------------------- +if ($defaultlanguage eq "F") { + print "Lecture de la version du serveur de login...\n"; +} else { + print "Reading of the version of the login-server...\n"; +} +checkloginversion(); + +# Set the prompt line +my($term) = new Term::ReadLine "ladmin"; + +# Here begin the infinite loop to read prompts +while(1) { + # Displaying of the prompt + print "\n"; + if ($defaultlanguage eq "F") { + printf "\033[32mPour afficher les commandes, tapez 'Entrée'.\033[0m\n"; + } else { + printf "\033[32mTo list the commands, type 'enter'.\033[0m\n"; + } + my($cmd) = $term->readline("ladmin> "); + # split and recovery of the input + chomp $cmd; # remove cariage return + $cmd =~ s/\x1b\[\d*\w//g; # remove (esc)[(number)(1alpha) = screen control sequence + $cmd =~ s/[\x00-\x1f]//g; # remove control char + my($command, $parameters) = split /\s+/,$cmd,2; # extract command and parameters + $command = lc($command); # command in lowercase + my(@paramlist) = split /\s+/,$parameters; # get list of parameters + + if ($command eq "?" || $command eq "") { + $command = "aide" if ($defaultlanguage eq "F"); + $command = "help" if ($defaultlanguage ne "F"); + } + + # Analyse of the command + eval { +# help + if ("aide" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'? + displayhelp("aide", $paramlist[0]); + } elsif ("help" =~ /^\Q$command/) { + displayhelp("help", $paramlist[0]); + +# general commands + } elsif ("add" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(.*)/)) { + addaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> <sex> <password> + } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + addaccount($paramlist[0], $paramlist[1], ""); # <account_name> <sex> <password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(.*)/)) { + addaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> <sex> <password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + addaccount($paramlist[0], $paramlist[1], ""); # <account_name> <sex> <password> + } else { + @paramlist = split /\s+/,$parameters; + addaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> <sex> <password> + } + + } elsif ($command eq "ban" || ("banish" =~ /^\Q$command/ && length($command) >= 4)) { + if (@paramlist = ($parameters =~ m/^(\S+)\s+(\S+)\s+"(.*)"/)) { # yyyy/mm/dd hh:mm:ss <account_name> + bansetaccount($paramlist[2], $paramlist[0], $paramlist[1]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^(\S+)\s+(\S+)\s+'(.*)'/)) { # yyyy/mm/dd hh:mm:ss <account_name> + bansetaccount($paramlist[2], $paramlist[0], $paramlist[1]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } else { + @paramlist = split /\s+/,$parameters,3; # yyyy/mm/dd hh:mm:ss <account_name> + bansetaccount($paramlist[2], $paramlist[0], $paramlist[1]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } + + } elsif (("banadd" =~ /^\Q$command/ || $command eq "ba") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + banaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + banaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier> + } else { + @paramlist = split /\s+/,$parameters; + banaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier> + } + + } elsif (("banset" =~ /^\Q$command/ || $command eq "bs") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)/)) { + bansetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + bansetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)/)) { + bansetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + bansetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss] + } else { + @paramlist = split /\s+/,$parameters; + bansetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } + + } elsif ("block" =~ /^\Q$command/ && length($command) >= 2) { + if (@paramlist = ($parameters =~ m/^"(.*)"/)) { + changestate($paramlist[0], 5, ""); # <account_name> <new_state> <error_message_#7> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + changestate($paramlist[0], 5, ""); # <account_name> <new_state> <error_message_#7> + } else { + @paramlist = split /\s+/,$parameters,1; + changestate($paramlist[0], 5, ""); # <account_name> <new_state> <error_message_#7> + } + + } elsif ("check" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(.*)/)) { + checkaccount($paramlist[0], $paramlist[1]); # <account_name> <password> + } elsif (@paramlist = ($parameters =~ m/^"(.*)"/)) { + checkaccount($paramlist[0], ""); # <account_name> <password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(.*)/)) { + checkaccount($paramlist[0], $paramlist[1]); # <account_name> <password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + checkaccount($paramlist[0], ""); # <account_name> <password> + } else { + @paramlist = split /\s+/,$parameters; + checkaccount($paramlist[0], $paramlist[1]); # <account_name> <password> + } + + } elsif ("create" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)\s+(.*)/)) { + createaccount($paramlist[0], $paramlist[1], $paramlist[2], $paramlist[3]); # <account_name> <sex> <email> <password> + } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)/)) { + createaccount($paramlist[0], $paramlist[1], $paramlist[2], ""); # <account_name> <sex> <email> <password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)\s+(.*)/)) { + createaccount($paramlist[0], $paramlist[1], $paramlist[2], $paramlist[3]); # <account_name> <sex> <email> <password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)/)) { + createaccount($paramlist[0], $paramlist[1], $paramlist[2], ""); # <account_name> <sex> <email> <password> + } else { + @paramlist = split /\s+/,$parameters; + createaccount($paramlist[0], $paramlist[1], $paramlist[2], $paramlist[3]); # <account_name> <sex> <email> <password> + } + + } elsif ("del" =~ /^\Q$command/ || "delete" =~ /^\Q$command/) { + if (@paramlist = ($parameters =~ m/^"(.*)"/)) { + delaccount($paramlist[0]); # <account_name> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + delaccount($paramlist[0]); # <account_name> + } else { + @paramlist = split /\s+/,$parameters,1; + delaccount($paramlist[0]); # <account_name> + } + + } elsif ("email" =~ /^\Q$command/ && $command ne "e") { # check 1 letter command: 'email', 'end' or 'exit'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + changeemail($paramlist[0], $paramlist[1]); # <account_name> <email> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + changeemail($paramlist[0], $paramlist[1]); # <account_name> <email> + } else { + @paramlist = split /\s+/,$parameters; + changeemail($paramlist[0], $paramlist[1]); # <account_name> <email> + } + + } elsif ("getcount" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'? + getlogincount(); + + } elsif ("gm" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + changegmlevel($paramlist[0], int($paramlist[1])); # <account_name> <GM_level> + } elsif (@paramlist = ($parameters =~ m/^"(.*)"/)) { + changegmlevel($paramlist[0], 0); # <account_name> <GM_level> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + changegmlevel($paramlist[0], int($paramlist[1])); # <account_name> <GM_level> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + changegmlevel($paramlist[0], 0); # <account_name> <GM_level> + } else { + @paramlist = split /\s+/,$parameters; + changegmlevel($paramlist[0], int($paramlist[1])); # <account_name> <GM_level> + } + + } elsif ("id" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'? + if (@paramlist = ($parameters =~ m/^"(.*)"/)) { + idaccount($paramlist[0]); # <account_name> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + idaccount($paramlist[0]); # <account_name> + } else { + @paramlist = split /\s+/,$parameters,1; + idaccount($paramlist[0]); # <account_name> + } + + } elsif ("info" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'? + infoaccount(int($paramlist[0])); # <account_id> + + } elsif ($command eq "kami") { # check all letters command: 'kami' or 'kamib'? + @paramlist = split /\s+/,$parameters,1; + sendbroadcast(0, $paramlist[0]); # <type> <message> + + } elsif ($command eq "kamib") { # check all letters command: 'kami' or 'kamib'? + @paramlist = split /\s+/,$parameters,1; + sendbroadcast(0x10, $paramlist[0]); # <type> <message> + + } elsif ("language" =~ /^\Q$command/ && $command ne "l") { # check 1 letter command: 'list' or 'language'? + changelanguage($paramlist[0]); # <language> + + } elsif (("list" =~ /^\Q$command/ || $command eq "ls") && $command ne "l") { # check 1 letter command: 'list' or 'language'? + listaccount(int($paramlist[0]), int($paramlist[1]), 0); # [start_id [end_id]] 0: to list all + + } elsif (("listban" =~ /^\Q$command/ || $command eq "lsban") && $command ne "l") { # need to specificaly write Ban to have this list # check 1 letter command: 'list' or 'language'? + listaccount(int($paramlist[0]), int($paramlist[1]), 3); # [start_id [end_id]] 3: to list only accounts with state or banished + + } elsif (("listgm" =~ /^\Q$command/ || $command eq "lsgm") && $command ne "l") { # need to specificaly write GM to have this list # check 1 letter command: 'list' or 'language'? + listaccount(int($paramlist[0]), int($paramlist[1]), 1); # [start_id [end_id]] 1: to list only GM + + } elsif (("listok" =~ /^\Q$command/ || $command eq "lsok") && $command ne "l") { # need to specificaly write OK to have this list # check 1 letter command: 'list' or 'language'? + listaccount(int($paramlist[0]), int($paramlist[1]), 4); # [start_id [end_id]] 4: to list only accounts without state and not banished + + } elsif ("memo" =~ /^\Q$command/) { + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(.*)/)) { + changememo($paramlist[0], $paramlist[1]); # <account_name> <memo> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(.*)/)) { + changememo($paramlist[0], $paramlist[1]); # <account_name> <memo> + } else { + @paramlist = split /\s+/,$parameters,2; + changememo($paramlist[0], $paramlist[1]); # <account_name> <memo> + } + + } elsif ("name" =~ /^\Q$command/) { + nameaccount(int($paramlist[0])); # <account_id> + + } elsif ("passwd" =~ /^\Q$command/ || "password" =~ /^\Q$command/) { + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(.*)/)) { + changepasswd($paramlist[0], $paramlist[1]); # <account_name> <new_password> + } elsif (@paramlist = ($parameters =~ m/^"(.*)"/)) { + changepasswd($paramlist[0], ""); # <account_name> <new_password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(.*)/)) { + changepasswd($paramlist[0], $paramlist[1]); # <account_name> <new_password> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + changepasswd($paramlist[0], ""); # <account_name> <new_password> + } else { + @paramlist = split /\s+/,$parameters,2; + changepasswd($paramlist[0], $paramlist[1]); # <account_name> <new_password> + } + + } elsif ("reloadgm" =~ /^\Q$command/) { + reloadGM(); + + } elsif ("search" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'? + $command ne "se") { # check 2 letters command: 'search' or 'sex'? + if (@paramlist = ($parameters =~ m/^(-{1,2}[re]\S*)\s+(.*)/)) { + searchaccount($paramlist[0], $paramlist[1]); # -r/-e/--expr/--regex <expression> | <expression> + } else { + @paramlist = split /\s+/,$parameters,1; + searchaccount($paramlist[0], ""); # -r/-e/--expr/--regex <expression> | <expression> + } + + } elsif ("sex" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'? + $command ne "se") { # check 2 letters command: 'search' or 'sex'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + changesex($paramlist[0], $paramlist[1]); # <account_name> <sex> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + changesex($paramlist[0], $paramlist[1]); # <account_name> <sex> + } else { + @paramlist = split /\s+/,$parameters; + changesex($paramlist[0], $paramlist[1]); # <account_name> <sex> + } + + } elsif ("state" =~ /^\Q$command/ && $command ne "s") { # check 1 letter command: 'search', 'state' or 'sex'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\d+)\s+(.*)/)) { + changestate($paramlist[0], int($paramlist[1]), $paramlist[2]); # <account_name> <new_state> <error_message_#7> + } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\d+)/)) { + changestate($paramlist[0], int($paramlist[1]), ""); # <account_name> <new_state> <error_message_#7> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\d+)\s+(.*)/)) { + changestate($paramlist[0], int($paramlist[1]), $paramlist[2]); # <account_name> <new_state> <error_message_#7> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\d+)/)) { + changestate($paramlist[0], int($paramlist[1]), ""); # <account_name> <new_state> <error_message_#7> + } else { + @paramlist = split /\s+/,$parameters,3; + changestate($paramlist[0], int($paramlist[1]), $paramlist[2]); # <account_name> <new_state> <error_message_#7> + } + + } elsif (("timeadd" =~ /^\Q$command/ || $command eq "ta") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + timeaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + timeaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier> + } else { + @paramlist = split /\s+/,$parameters; + timeaddaccount($paramlist[0], $paramlist[1]); # <account_name> <modifier> + } + + } elsif (("timeset" =~ /^\Q$command/ || $command eq "ts") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'? + if (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)\s+(\S+)/)) { + timesetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^"(.*)"\s+(\S+)/)) { + timesetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)\s+(\S+)/)) { + timesetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^'(.*)'\s+(\S+)/)) { + timesetaccount($paramlist[0], $paramlist[1], "23:59:59"); # <account_name> yyyy/mm/dd [hh:mm:ss] + } else { + @paramlist = split /\s+/,$parameters; + timesetaccount($paramlist[0], $paramlist[1], $paramlist[2]); # <account_name> yyyy/mm/dd [hh:mm:ss] + } + + } elsif ($command eq "unban" || ("unbanish" =~ /^\Q$command/ && length($command) >= 4)) { + if (@paramlist = ($parameters =~ m/^"(.*)"/)) { + bansetaccount($paramlist[0], 0, ""); # <account_name> yyyy/mm/dd [hh:mm:ss] + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + bansetaccount($paramlist[0], 0, ""); # <account_name> yyyy/mm/dd [hh:mm:ss] + } else { + @paramlist = split /\s+/,$parameters,1; + bansetaccount($paramlist[0], 0, ""); # <account_name> yyyy/mm/dd [hh:mm:ss] + } + + } elsif ("unblock" =~ /^\Q$command/ && length($command) >= 4) { + if (@paramlist = ($parameters =~ m/^"(.*)"/)) { + changestate($paramlist[0], 0, ""); # <account_name> <new_state> <error_message_#7> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + changestate($paramlist[0], 0, ""); # <account_name> <new_state> <error_message_#7> + } else { + @paramlist = split /\s+/,$parameters,1; + changestate($paramlist[0], 0, ""); # <account_name> <new_state> <error_message_#7> + } + + } elsif ("version" =~ /^\Q$command/) { + checkloginversion(); + + } elsif ("who" =~ /^\Q$command/) { + if (@paramlist = ($parameters =~ m/^"(.*)"/)) { + whoaccount($paramlist[0]); # <account_name> + } elsif (@paramlist = ($parameters =~ m/^'(.*)'/)) { + whoaccount($paramlist[0]); # <account_name> + } else { + @paramlist = split /\s+/,$parameters,1; + whoaccount($paramlist[0]); # <account_name> + } + +# quit + } elsif ("quit" =~ /^\Q$command/ || + (("end" =~ /^\Q$command/ || "exit" =~ /^\Q$command/) && $command ne "e")) { # check 1 letter command: 'email', 'end' or 'exit'? + last; + +# unknown command + } elsif ($command) { + if ($defaultlanguage eq "F") { + print "Commande inconnue [".$command."]\n"; + } else { + print "Unknown command [".$command."]\n"; + } + } +# $term->addhistory($cmd) if $command; + }; + if ($@) { + if ($defaultlanguage eq "F") { + print "Erreur [".$command."]\n$@"; + } else { + print "Error [".$command."]\n$@"; + } + } +}; + +# End of the software +quit(); + +if ($defaultlanguage eq "F") { + print "Au revoir.\n"; +} else { + print "Bye.\n"; +} +exit(0); + +#-------------------------------------------------------------------------- + +# Sub-function: Displaying of the version of the login-server +sub checkloginversion() { + print $so pack("v",30000); # 0x7530 + $so->flush(); + $buf = readso(10); + # Analyse du Packet + my($ret, $maver, $miver, $rev, $dev, $mod, $type, $mdver) = unpack("vc6v", $buf); + if ($ret != 30001) { #0x7531 + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + exit(6); + } + + print " Login-Server [$loginserverip:$loginserverport]\n"; + printf " eAthena version %s-%d.%d", ("stable", "dev")[$dev], $maver, $miver; + printf " revision %d", $rev if $rev; + printf "%s%d.\n", ("", "-mod")[$mod], $mdver; + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Displaying of the help +sub displayhelp() { + my($help, $receivedcommand) = @_; + + my($command) = lc($receivedcommand); # command in lowercase + + if ($command eq "") { + $command = "not a command"; # any value that is not a command + } + + if ($command eq "?") { + $command = "aide" if ($defaultlanguage eq "F"); + $command = "help" if ($defaultlanguage ne "F"); + } + + if ($help eq "aide") { + if ("aide" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'? + printf "aide/help/?\n"; + printf " Affiche la description des commandes\n"; + printf "aide/help/? [commande]\n"; + printf " Affiche la description de la commande specifiée\n"; + } elsif ("help" =~ /^\Q$command/) { + printf "aide/help/?\n"; + printf " Display the description of the commands\n"; + printf "aide/help/? [command]\n"; + printf " Display the description of the specified command\n"; + } elsif ("add" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'? + printf "add <nomcompte> <sexe> <motdepasse>\n"; + printf " Crée un compte avec l'email par défaut (a\@a.com).\n"; + printf " Concernant le sexe, seule la première lettre compte (F ou M).\n"; + printf " L'e-mail est a\@a.com (e-mail par défaut). C'est comme n'avoir aucun e-mail.\n"; + printf " Lorsque motdepasse est omis, la saisie se fait sans que la frappe se voit.\n"; + printf " <exemple> add testname Male testpass\n"; + } elsif ($command eq "ban" || ("banish" =~ /^\Q$command/ && length($command) >= 4)) { + printf "ban/banish aaaa/mm/jj hh:mm:ss <nomcompte>\n"; + printf " Change la date de fin de bannissement d'un compte.\n"; + printf " La différence avec banset est la position du nom du compte.\n"; + } elsif (("banadd" =~ /^\Q$command/ || $command eq "ba") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'? + printf "banadd <nomcompte> <Modificateur>\n"; + printf " Ajoute ou soustrait du temps à la date de banissement d'un compte.\n"; + printf " Les modificateurs sont construits comme suit:\n"; + printf " Valeur d'ajustement (-1, 1, +1, etc...)\n"; + printf " Elément modifié:\n"; + printf " a ou y: année\n"; + printf " m: mois\n"; + printf " j ou d: jour\n"; + printf " h: heure\n"; + printf " mn: minute\n"; + printf " s: seconde\n"; + printf " <exemple> banadd testname +1m-2mn1s-6a\n"; + printf " Cette exemple ajoute 1 mois et une seconde, et soustrait 2 minutes\n"; + printf " et 6 ans dans le même temps.\n"; + printf "NOTE: Si vous modifez la date de banissement d'un compte non bani,\n"; + printf " vous indiquez comme date (le moment actuel +- les ajustements)\n"; + } elsif (("banset" =~ /^\Q$command/ || $command eq "bs") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'? + printf "banset <nomcompte> aaaa/mm/jj [hh:mm:ss]\n"; + printf " Change la date de fin de bannissement d'un compte.\n"; + printf " Heure par défaut: 23:59:59\n"; + printf "banset <nomcompte> 0\n"; + printf " Débanni un compte (0 = de-banni).\n"; + } elsif ("block" =~ /^\Q$command/ && length($command) >= 2) { + printf "block <nom compte>\n"; + printf " Place le status d'un compte à 5 (You have been blocked by the GM Team).\n"; + printf " La commande est l'équivalent de state <nom_compte> 5.\n"; + } elsif ("check" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'? + printf "check <nomcompte> <motdepasse>\n"; + printf " Vérifie la validité d'un mot de passe pour un compte\n"; + printf " NOTE: Le serveur n'enverra jamais un mot de passe.\n"; + printf " C'est la seule méthode que vous possédez pour savoir\n"; + printf " si un mot de passe est le bon. L'autre méthode est\n"; + printf " d'avoir un accès ('physique') au fichier des comptes.\n"; + } elsif ("create" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'? + printf "create <nomcompte> <sexe> <email> <motdepasse>\n"; + printf " Comme la commande add, mais avec l'e-mail en plus.\n"; + printf " <exemple> create testname Male mon\@mail.com testpass\n"; + } elsif ("del" =~ /^\Q$command/ || "delete" =~ /^\Q$command/) { + printf "del <nomcompte>\n"; + printf " Supprime un compte.\n"; + printf " La commande demande confirmation. Après confirmation, le compte est détruit.\n"; + } elsif ("email" =~ /^\Q$command/ && $command ne "e") { # check 1 letter command: 'email', 'end' or 'exit'? + printf "email <nomcompte> <email>\n"; + printf " Modifie l'e-mail d'un compte.\n"; + } elsif ("getcount" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'? + printf "getcount\n"; + printf " Donne le nombre de joueurs en ligne par serveur de char.\n"; + } elsif ("gm" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'? + printf "gm <nomcompte> [Niveau_GM]\n"; + printf " Modifie le niveau de GM d'un compte.\n"; + printf " Valeur par défaut: 0 (suppression du niveau de GM).\n"; + printf " <exemple> gm nomtest 80\n"; + } elsif ("id" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'? + printf "id <nomcompte>\n"; + printf " Donne l'id d'un compte.\n"; + } elsif ("info" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'? + printf "info <idcompte>\n"; + printf " Affiche les informations sur un compte.\n"; + } elsif ($command eq "kami") { # check all letters command: 'kami' or 'kamib'? + printf "kami <message>\n"; + printf " Envoi un message général sur tous les serveurs de map (en jaune).\n"; + } elsif ($command eq "kamib") { # check all letters command: 'kami' or 'kamib'? + printf "kamib <message>\n"; + printf " Envoi un message général sur tous les serveurs de map (en bleu).\n"; + } elsif ("language" =~ /^\Q$command/ && $command ne "l") { # check 1 letter command: 'list' or 'language'? + printf("language <langue>\n"); + printf(" Change la langue d'affichage.\n"); + printf(" Langues possibles: 'Français' ou 'English'.\n"); + } elsif (("list" =~ /^\Q$command/ || $command eq "ls") && $command ne "l") { # check 1 letter command: 'list' or 'language'? + printf "list/ls [Premier_id [Dernier_id]]\n"; + printf " Affiche une liste de comptes.\n"; + printf " 'Premier_id', 'Dernier_id': indique les identifiants de départ et de fin.\n"; + printf " La recherche par nom n'est pas possible avec cette commande.\n"; + printf " <example> list 10 9999999\n"; + } elsif (("listban" =~ /^\Q$command/ || $command eq "lsban") && $command ne "l") { # need to specificaly write Ban to have this list # check 1 letter command: 'list' or 'language'? + printf "listBan/lsBan [Premier_id [Dernier_id]]\n"; + printf " Comme list/ls, mais seulement pour les comptes GM avec un statut ou bannis.\n"; + } elsif (("listgm" =~ /^\Q$command/ || $command eq "lsgm") && $command ne "l") { # need to specificaly write GM to have this list # check 1 letter command: 'list' or 'language'? + printf "listGM/lsGM [Premier_id [Dernier_id]]\n"; + printf " Comme list/ls, mais seulement pour les comptes GM.\n"; + } elsif (("listok" =~ /^\Q$command/ || $command eq "lsok") && $command ne "l") { # need to specificaly write OK to have this list # check 1 letter command: 'list' or 'language'? + printf "listOK/lsOK [Premier_id [Dernier_id]]\n"; + printf " Comme list/ls, mais seulement pour les comptes sans statut et non bannis.\n"; + } elsif ("memo" =~ /^\Q$command/) { + printf "memo <nomcompte> <memo>\n"; + printf " Modifie le mémo d'un compte.\n"; + printf " 'memo': Il peut avoir jusqu'à 253 caractères (avec des espaces ou non).\n"; + } elsif ("name" =~ /^\Q$command/) { + printf "name <idcompte>\n"; + printf " Donne le nom d'un compte.\n"; + } elsif ("passwd" =~ /^\Q$command/ || "password" =~ /^\Q$command/) { + printf "passwd <nomcompte> <nouveaumotdepasse>\n"; + printf " Change le mot de passe d'un compte.\n"; + printf " Lorsque nouveaumotdepasse est omis,\n"; + printf " la saisie se fait sans que la frappe ne se voit.\n"; + } elsif ("reloadgm" =~ /^\Q$command/) { + printf "reloadGM\n"; + printf " Reload GM configuration file\n"; + } elsif ("search" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'? + $command ne "se") { # check 2 letters command: 'search' or 'sex'? + printf "search <expression>\n"; + printf " Cherche des comptes.\n"; + printf " Affiche les comptes dont les noms correspondent.\n"; + printf "search -r/-e/--expr/--regex <expression>\n"; + printf " Cherche des comptes par expression regulière.\n"; + printf " Affiche les comptes dont les noms correspondent.\n"; + } elsif ("sex" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'? + $command ne "se") { # check 2 letters command: 'search' or 'sex'? + printf "sex <nomcompte> <sexe>\n"; + printf " Modifie le sexe d'un compte.\n"; + printf " <exemple> sex testname Male\n"; + } elsif ("state" =~ /^\Q$command/ && $command ne "s") { # check 1 letter command: 'search', 'state' or 'sex'? + printf "state <nomcompte> <nouveaustatut> <message_erreur_7>\n"; + printf " Change le statut d'un compte.\n"; + printf " 'nouveaustatut': Le statut est le même que celui du packet 0x006a + 1.\n"; + printf " les possibilités sont:\n"; + printf " 0 = Compte ok\n"; + printf " 1 = Unregistered ID\n"; + printf " 2 = Incorrect Password\n"; + printf " 3 = This ID is expired\n"; + printf " 4 = Rejected from Server\n"; + printf " 5 = You have been blocked by the GM Team\n"; + printf " 6 = Your Game's EXE file is not the latest version\n"; + printf " 7 = You are Prohibited to log in until...\n"; + printf " 8 = Server is jammed due to over populated\n"; + printf " 9 = No MSG\n"; + printf " 100 = This ID has been totally erased\n"; + printf " all other values are 'No MSG', then use state 9 please.\n"; + printf " 'message_erreur_7': message du code erreur 6 =\n"; + printf " = Your are Prohibited to log in until... (packet 0x006a)\n"; + } elsif (("timeadd" =~ /^\Q$command/ || $command eq "ta") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'? + printf "timeadd <nomcompte> <modificateur>\n"; + printf " Ajoute/soustrait du temps à la limite de validité d'un compte.\n"; + printf " Le modificateur est composé comme suit:\n"; + printf " Valeur modificatrice (-1, 1, +1, etc...)\n"; + printf " Elément modifié:\n"; + printf " a ou y: année\n"; + printf " m: mois\n"; + printf " j ou d: jour\n"; + printf " h: heure\n"; + printf " mn: minute\n"; + printf " s: seconde\n"; + printf " <exemple> timeadd testname +1m-2mn1s-6a\n"; + printf " Cette exemple ajoute 1 mois et une seconde, et soustrait 2 minutes\n"; + printf " et 6 ans dans le même temps.\n"; + printf "NOTE: Vous ne pouvez pas modifier une limite de validité illimitée. Si vous\n"; + printf " désirez le faire, c'est que vous voulez probablement créer un limite de\n"; + printf " validité limitée. Donc, en premier, fixé une limite de valitidé.\n"; + } elsif (("timeset" =~ /^\Q$command/ || $command eq "ts") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'? + printf "timeset <nomcompte> aaaa/mm/jj [hh:mm:ss]\n"; + printf " Change la limite de validité d'un compte.\n"; + printf " Heure par défaut: 23:59:59\n"; + printf "timeset <nomcompte> 0\n"; + printf " Donne une limite de validité illimitée (0 = illimitée).\n"; + } elsif ($command eq "unban" || ("unbanish" =~ /^\Q$command/ && length($command) >= 4)) { + printf "unban/unbanish <nom compte>\n"; + printf " Ote le banissement d'un compte.\n"; + printf " La commande est l'équivalent de banset <nom_compte> 0.\n"; + } elsif ("unblock" =~ /^\Q$command/ && length($command) >= 4) { + printf "unblock <nom compte>\n"; + printf " Place le status d'un compte à 0 (Compte ok).\n"; + printf " La commande est l'équivalent de state <nom_compte> 0.\n"; + } elsif ("version" =~ /^\Q$command/) { + printf "version\n"; + printf " Affiche la version du login-serveur.\n"; + } elsif ("who" =~ /^\Q$command/) { + printf "who <nomcompte>\n"; + printf " Affiche les informations sur un compte.\n"; + } elsif ("quit" =~ /^\Q$command/ || + (("end" =~ /^\Q$command/ || "exit" =~ /^\Q$command/) && $command ne "e")) { # check 1 letter command: 'email', 'end' or 'exit'?\n"; + printf "quit/end/exit\n"; + printf " Fin du programme d'administration.\n"; + } else { + if ($receivedcommand ne "") { + printf "Commande inconnue [%s] pour l'aide. Affichage de toutes les commandes.\n", $receivedcommand; + } + print << "ENDOFAIDE"; + aide/help/? -- Affiche cet aide + aide/help/? [commande] -- Affiche l'aide de la commande + add <nomcompte> <sexe> <motdepasse> -- Crée un compte (sans email) + ban/banish aaaa/mm/jj hh:mm:ss <nomcompte>-- Change la date finale de banismnt + banadd/ba <nomcompte> <modificateur> -- Ajout/soustrait du temps à la + exemple: ba moncompte +1m-2mn1s-2y date finale de banissement + banset/bs <nomcompte> aaaa/mm/jj [hh:mm:ss] -- Change la date fin de banisemnt + banset/bs <nomcompte> 0 -- Dé-banis un compte. + block <nom compte> -- Mets le status d'un compte à 5 (blocked by the GM Team) + check <nomcompte> <motdepasse> -- Vérifie un mot de passe d'un compte + create <nomcompte> <sexe> <email> <motdepasse> -- Crée un compte (avec email) + del <nomcompte> -- Supprime un compte + email <nomcompte> <email> -- Modifie l'e-mail d'un compte + getcount -- Donne le nb de joueurs en ligne + gm <nomcompte> [Niveau_GM] -- Modifie le niveau de GM d'un compte + id <nomcompte> -- Donne l'id d'un compte + info <idcompte> -- Affiche les infos sur un compte + kami <message> -- Envoi un message général (en jaune) + kamib <message> -- Envoi un message général (en bleu) + language <langue> -- Change la langue d'affichage. + list/ls [Premier_id [Dernier_id] ] -- Affiche une liste de comptes + listBan/lsBan [Premier_id [Dernier_id] ]-- Affiche une liste de comptes + avec un statut ou bannis + listGM/lsGM [Premier_id [Dernier_id] ] -- Affiche une liste de comptes GM + listOK/lsOK [Premier_id [Dernier_id] ] -- Affiche une liste de comptes + sans status et non bannis + memo <nomcompte> <memo> -- Modifie le memo d'un compte + name <idcompte> -- Donne le nom d'un compte + passwd <nomcompte> <nouveaumotdepasse> -- Change le mot de passe d'un compte + quit/end/exit -- Fin du programme d'administation + reloadGM -- Recharger le fichier de config des GM + search <expression> -- Cherche des comptes + search -e/-r/--expr/--regex <expression> -- Cherche des comptes par REGEX + sex <nomcompte> <sexe> -- Modifie le sexe d'un compte + state <nomcompte> <nouveaustatut> <messageerr7> -- Change le statut d'1 compte + timeadd/ta <nomcompte> <modificateur> -- Ajout/soustrait du temps à la + exemple: ta moncompte +1m-2mn1s-2y limite de validité + timeset/ts <nomcompte> aaaa/mm/jj [hh:mm:ss] -- Change la limite de validité + timeset/ts <nomcompte> 0 -- limite de validité = illimitée + unban/unbanish <nom compte> -- Ote le banissement d'un compte + unblock <nom compte> -- Mets le status d'un compte à 0 (Compte ok) + version -- Donne la version du login-serveur + who <nomcompte> -- Affiche les infos sur un compte +ENDOFAIDE + printf(" Note: Pour les noms de compte avec des espaces, tapez \"<nom compte>\" (ou ').\n"); + } + } else { + if ("aide" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'? + printf "aide/help/?\n"; + printf " Display the description of the commands\n"; + printf "aide/help/? [command]\n"; + printf " Display the description of the specified command\n"; + } elsif ("help" =~ /^\Q$command/) { + printf "aide/help/?\n"; + printf " Display the description of the commands\n"; + printf "aide/help/? [command]\n"; + printf " Display the description of the specified command\n"; + } elsif ("add" =~ /^\Q$command/ && $command ne "a") { # check 1 letter command: 'aide' or 'add'? + printf "add <account_name> <sex> <password>\n"; + printf " Create an account with the default email (a\@a.com).\n"; + printf " Concerning the sex, only the first letter is used (F or M).\n"; + printf " The e-mail is set to a\@a.com (default e-mail). It's like to have no e-mail.\n"; + printf " When the password is omitted,\n"; + printf " the input is done without displaying of the pressed keys.\n"; + printf " <example> add testname Male testpass\n"; + } elsif ($command eq "ban" || ("banish" =~ /^\Q$command/ && length($command) >= 4)) { + printf "ban/banish yyyy/mm/dd hh:mm:ss <account_name>\n"; + printf " Changes the final date of a banishment of an account.\n"; + printf " The difference with banset is the position of the account name.\n"; + } elsif (("banadd" =~ /^\Q$command/ || $command eq "ba") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'? + printf "banadd <account_name> <modifier>\n"; + printf " Adds or substracts time from the final date of a banishment of an account.\n"; + printf " Modifier is done as follows:\n"; + printf " Adjustment value (-1, 1, +1, etc...)\n"; + printf " Modified element:\n"; + printf " a or y: year\n"; + printf " m: month\n"; + printf " j or d: day\n"; + printf " h: hour\n"; + printf " mn: minute\n"; + printf " s: second\n"; + printf " <example> banadd testname +1m-2mn1s-6y\n"; + printf " this example adds 1 month and 1 second, and substracts 2 minutes\n"; + printf " and 6 years at the same time.\n"; + printf "NOTE: If you modify the final date of a non-banished account,\n"; + printf " you fix the final date to (actual time +- adjustments)\n"; + } elsif (("banset" =~ /^\Q$command/ || $command eq "bs") && $command ne "b") { # check 1 letter command: 'ba' or 'bs'? + printf "banset <account_name> yyyy/mm/dd [hh:mm:ss]\n"; + printf " Changes the final date of a banishment of an account.\n"; + printf " Default time: 23:59:59\n"; + printf "banset <account_name> 0\n"; + printf " Set a non-banished account (0 = unbanished).\n"; + } elsif ("block" =~ /^\Q$command/ && length($command) >= 2) { + printf "block <account name>\n"; + printf " Set state 5 (You have been blocked by the GM Team) to an account.\n"; + printf " Same command of state <account_name> 5.\n"; + } elsif ("check" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'? + printf "check <account_name> <password>\n"; + printf " Check the validity of a password for an account.\n"; + printf " NOTE: Server will never sends back a password.\n"; + printf " It's the only method you have to know if a password is correct.\n"; + printf " The other method is to have a ('physical') access to the accounts file.\n"; + } elsif ("create" =~ /^\Q$command/ && $command ne "c") { # check 1 letter command: 'check' or 'create'? + printf "create <account_name> <sex> <email> <password>\n"; + printf " Like the 'add' command, but with e-mail moreover.\n"; + printf " <example> create testname Male my\@mail.com testpass\n"; + } elsif ("del" =~ /^\Q$command/ || "delete" =~ /^\Q$command/) { + printf "del <account_name>\n"; + printf " Remove an account.\n"; + printf " This order requires confirmation. After confirmation, the account is deleted.\n"; + } elsif ("email" =~ /^\Q$command/ && $command ne "e") { # check 1 letter command: 'email', 'end' or 'exit'? + printf "email <account_name> <email>\n"; + printf " Modify the e-mail of an account.\n"; + } elsif ("getcount" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'? + printf "getcount\n"; + printf " Give the number of players online on all char-servers.\n"; + } elsif ("gm" =~ /^\Q$command/ && $command ne "g") { # check 1 letter command: 'getcount' or 'gm'? + printf "gm <account_name> [GM_level]\n"; + printf " Modify the GM level of an account.\n"; + printf " Default value remove GM level (GM level = 0).\n"; + printf " <example> gm testname 80\n"; + } elsif ("id" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'? + printf "id <account_name>\n"; + printf " Give the id of an account.\n"; + } elsif ("info" =~ /^\Q$command/ && $command ne "i") { # check 1 letter command: 'id' or 'info'? + printf "info <account_id>\n"; + printf " Display complete information of an account.\n"; + } elsif ($command eq "kami") { # check all letters command: 'kami' or 'kamib'? + printf "kami <message>\n"; + printf " Sends a broadcast message on all map-server (in yellow).\n"; + } elsif ($command eq "kamib") { # check all letters command: 'kami' or 'kamib'? + printf "kamib <message>\n"; + printf " Sends a broadcast message on all map-server (in blue).\n"; + } elsif ("language" =~ /^\Q$command/ && $command ne "l") { # check 1 letter command: 'list' or 'language'? + printf("language <language>\n"); + printf(" Change the language of displaying.\n"); + printf(" Possible languages: Français or English.\n"); + } elsif (("list" =~ /^\Q$command/ || $command eq "ls") && $command ne "l") { # check 1 letter command: 'list' or 'language'? + printf "list/ls [start_id [end_id]]\n"; + printf " Display a list of accounts.\n"; + printf " 'start_id', 'end_id': indicate end and start identifiers.\n"; + printf " Research by name is not possible with this command.\n"; + printf " <example> list 10 9999999\n"; + } elsif (("listban" =~ /^\Q$command/ || $command eq "lsban") && $command ne "l") { # need to specificaly write Ban to have this list # check 1 letter command: 'list' or 'language'? + printf "listBan/lsBan [start_id [end_id]]\n"; + printf " Like list/ls, but only for accounts with state or banished.\n"; + } elsif (("listgm" =~ /^\Q$command/ || $command eq "lsgm") && $command ne "l") { # need to specificaly write GM to have this list # check 1 letter command: 'list' or 'language'? + printf "listGM/lsGM [start_id [end_id]]\n"; + printf " Like list/ls, but only for GM accounts.\n"; + } elsif (("listok" =~ /^\Q$command/ || $command eq "lsok") && $command ne "l") { # need to specificaly write OK to have this list # check 1 letter command: 'list' or 'language'? + printf "listOK/lsOK [start_id [end_id]]\n"; + printf " Like list/ls, but only for accounts without state and not banished.\n"; + } elsif ("memo" =~ /^\Q$command/) { + printf "memo <account_name> <memo>\n"; + printf " Modify the memo of an account.\n"; + printf " 'memo': it can have until 253 characters (with spaces or not).\n"; + } elsif ("name" =~ /^\Q$command/) { + printf "name <account_id>\n"; + printf " Give the name of an account.\n"; + } elsif ("passwd" =~ /^\Q$command/ || "password" =~ /^\Q$command/) { + printf "passwd <account_name> <new_password>\n"; + printf " Change the password of an account.\n"; + printf " When new password is omitted,\n"; + printf " the input is done without displaying of the pressed keys.\n"; + } elsif ("reloadgm" =~ /^\Q$command/) { + printf "reloadGM\n"; + printf " Reload GM configuration file\n"; + } elsif ("search" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'? + $command ne "se") { # check 2 letters command: 'search' or 'sex'? + printf "search <expression>\n"; + printf " Seek accounts.\n"; + printf " Displays the accounts whose names correspond.\n"; + printf "search -r/-e/--expr/--regex <expression>\n"; + printf " Seek accounts by regular expression.\n"; + printf " Displays the accounts whose names correspond.\n"; + } elsif ("sex" =~ /^\Q$command/ && $command ne "s" && # check 1 letter command: 'search', 'state' or 'sex'? + $command ne "se") { # check 2 letters command: 'search' or 'sex'? + printf "sex <account_name> <sex>\n"; + printf " Modify the sex of an account.\n"; + printf " <example> sex testname Male\n"; + } elsif ("state" =~ /^\Q$command/ && $command ne "s") { # check 1 letter command: 'search', 'state' or 'sex'? + printf "state <account_name> <new_state> <error_message_#7>\n"; + printf " Change the state of an account.\n"; + printf " 'new_state': state is the state of the packet 0x006a + 1.\n"; + printf " The possibilities are:\n"; + printf " 0 = Account ok\n"; + printf " 1 = Unregistered ID\n"; + printf " 2 = Incorrect Password\n"; + printf " 3 = This ID is expired\n"; + printf " 4 = Rejected from Server\n"; + printf " 5 = You have been blocked by the GM Team\n"; + printf " 6 = Your Game's EXE file is not the latest version\n"; + printf " 7 = You are Prohibited to log in until...\n"; + printf " 8 = Server is jammed due to over populated\n"; + printf " 9 = No MSG\n"; + printf " 100 = This ID has been totally erased\n"; + printf " all other values are 'No MSG', then use state 9 please.\n"; + printf " 'error_message_#7': message of the code error 6\n"; + printf " = Your are Prohibited to log in until... (packet 0x006a)\n"; + } elsif (("timeadd" =~ /^\Q$command/ || $command eq "ta") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'? + printf "timeadd <account_name> <modifier>\n"; + printf " Adds or substracts time from the validity limit of an account.\n"; + printf " Modifier is done as follows:\n"; + printf " Adjustment value (-1, 1, +1, etc...)\n"; + printf " Modified element:\n"; + printf " a or y: year\n"; + printf " m: month\n"; + printf " j or d: day\n"; + printf " h: hour\n"; + printf " mn: minute\n"; + printf " s: second\n"; + printf " <example> timeadd testname +1m-2mn1s-6y\n"; + printf " this example adds 1 month and 1 second, and substracts 2 minutes\n"; + printf " and 6 years at the same time.\n"; + printf "NOTE: You can not modify a unlimited validity limit.\n"; + printf " If you want modify it, you want probably create a limited validity limit.\n"; + printf " So, at first, you must set the validity limit to a date/time.\n"; + } elsif (("timeset" =~ /^\Q$command/ || $command eq "ts") && $command ne "t") { # check 1 letter command: 'ta' or 'ts'? + printf "timeset <account_name> yyyy/mm/dd [hh:mm:ss]\n"; + printf " Changes the validity limit of an account.\n"; + printf " Default time: 23:59:59\n"; + printf "timeset <account_name> 0\n"; + printf " Gives an unlimited validity limit (0 = unlimited).\n"; + } elsif ($command eq "unban" || ("unbanish" =~ /^\Q$command/ && length($command) >= 4)) { + printf "unban/unbanish <account name>\n"; + printf " Remove the banishment of an account.\n"; + printf " This command works like banset <account_name> 0.\n"; + } elsif ("unblock" =~ /^\Q$command/ && length($command) >= 4) { + printf "unblock <account name>\n"; + printf " Set state 0 (Account ok) to an account.\n"; + printf " This command works like state <account_name> 0.\n"; + } elsif ("version" =~ /^\Q$command/) { + printf "version\n"; + printf " Display the version of the login-server.\n"; + } elsif ("who" =~ /^\Q$command/) { + printf "who <account_name>\n"; + printf " Displays complete information of an account.\n"; + } elsif ("quit" =~ /^\Q$command/ || + (("end" =~ /^\Q$command/ || "exit" =~ /^\Q$command/) && $command ne "e")) { # check 1 letter command: 'email', 'end' or 'exit'?\n"; + printf "quit/end/exit\n"; + printf " End of the program of administration.\n"; + } else { + if ($receivedcommand ne "") { + printf "Unknown command [%s] for help. Displaying of all commands.\n", $receivedcommand; + } + print << "ENDOFHELP"; + aide/help/? -- Display this help + aide/help/? [command] -- Display the help of the command + add <account_name> <sex> <password> -- Create an account with default email + ban/banish yyyy/mm/dd hh:mm:ss <account_name> -- Change final date of a ban + banadd/ba <account_name> <modifier> -- Add or substract time from the final + example: ba apple +1m-2mn1s-2y date of a banishment of an account + banset/bs <account_name> yyyy/mm/dd [hh:mm:ss] -- Change final date of a ban + banset/bs <account_name> 0 -- Un-banish an account + block <account name> -- Set state 5 (blocked by the GM Team) to an account + check <account_name> <password> -- Check the validity of a password + create <account_name> <sex> <email> <passwrd> -- Create an account with email + del <account_name> -- Remove an account + email <account_name> <email> -- Modify an email of an account + getcount -- Give the number of players online + gm <account_name> [GM_level] -- Modify the GM level of an account + id <account_name> -- Give the id of an account + info <account_id> -- Display all information of an account + kami <message> -- Sends a broadcast message (in yellow) + kamib <message> -- Sends a broadcast message (in blue) + language <language> -- Change the language of displaying. + list/ls [First_id [Last_id]] -- Display a list of accounts + listBan/lsBan [First_id [Last_id]] -- Display a list of accounts + with state or banished + listGM/lsGM [First_id [Last_id]] -- Display a list of GM accounts + listOK/lsOK [First_id [Last_id]] -- Display a list of accounts + without state and not banished + memo <account_name> <memo> -- Modify the memo of an account + name <account_id> -- Give the name of an account + passwd <account_name> <new_password> -- Change the password of an account + quit/end/exit -- End of the program of administation + reloadGM -- Reload GM configuration file + search <expression> -- Seek accounts + search -e/-r/--expr/--regex <expressn> -- Seek accounts by regular-expression + sex <nomcompte> <sexe> -- Modify the sex of an account + state <account_name> <new_state> <error_message_#7> -- Change the state + timeadd/ta <account_name> <modifier> -- Add or substract time from the + example: ta apple +1m-2mn1s-2y validity limit of an account + timeset/ts <account_name> yyyy/mm/dd [hh:mm:ss] -- Change the validify limit + timeset/ts <account_name> 0 -- Give a unlimited validity limit + unban/unbanish <account name> -- Remove the banishment of an account + unblock <account name> -- Set state 0 (Account ok) to an account + version -- Gives the version of the login-server + who <account_name> -- Display all information of an account +ENDOFHELP + printf(" Note: To use spaces in an account name, type \"<account name>\" (or ').\n"); + } + } + + return 0; +} +#-------------------------------------------------------------------------- + +# Sub-function: Displaying of the accounts list +sub listaccount() { + my($st, $ed, $listflag) = @_; + my($i); + my($n) = (0); + # 0123456789 01 01234567890123456789012301234 012345 0123456789012345678901234567 + if ($defaultlanguage eq "F") { + print " id_compte GM nom_utilisateur sexe count statut\n"; + } else { + print "account_id GM user_name sex count state\n"; + } + print "-------------------------------------------------------------------------------\n"; + while(1) { + print $so pack("vV2", 0x7920, $st, $ed); + $so->flush(); + $buf = readso(4); + if (unpack("v", $buf) != 0x7921) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + exit(10); + } + my($len) = unpack("x2v", $buf); + last if ($len <= 4); + for($i = 4; $i < $len; $i += 38) { + my(@dat) = unpack("VCa24cVV", readso(38)); + $st = $dat[0] + 1; + if ($listflag == 0 || + ($listflag == 1 && $dat[1] > 0) || # check GM flag + ($listflag == 3 && $dat[5] != 0) || # check with state or banished + ($listflag == 4 && $dat[5] == 0)) { # check without state and not banished + printf "%10d %2s %-24s%-5s %6d %-27s\n", $dat[0], + ($dat[1] == 0 ? " " : $dat[1]), + $dat[2], + ($defaultlanguage eq "F" ? ("Femme","Male","Servr")[$dat[3]] : ("Femal","Male","Servr")[$dat[3]]), + $dat[4], + (($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"), + "Unregistered ID", + "Incorrect Password", + "This ID is expired", + "Rejected from Server", + "Blocked by the GM Team", # You have been blocked by the GM Team + "Your EXE file is too old", # Your Game's EXE file is not the latest version + "Banishement or\n Prohibited to login until %s", # You are Prohibited to log in until %s + "Server is over populated", # Server is jammed due to over populated + "No MSG", + "This ID is totally erased")[$dat[5] == 100 ? 10 : $dat[5]]; # This ID has been totally erased + $n++; + } + } + } + if ($defaultlanguage eq "F") { + if ($n == 0) { + print "Aucun compte trouvé.\n"; + } elsif ($n == 1) { + print "1 compte trouvé.\n"; + } else { + print "$n comptes trouvés.\n"; + } + } else { + if ($n == 0) { + print "No account found.\n"; + } elsif ($n == 1) { + print "1 account found.\n"; + } else { + print "$n accounts found.\n"; + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: add an account with the default e-mail +sub addaccount() { + my($userid, $sex, $passwd) = @_; + if ($userid eq "" || !defined($userid)) { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> add nomtest Male motdepassetest\n"; + } else { + print "Please input an account name.\n"; + print "<example> add testname Male testpass\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } +# if ($userid =~ /[^A-Za-z0-9\@-_]/) { +# if ($defaultlanguage eq "F") { +# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n"; +# } else { +# print "Illegal character found in the account name ".$`."[${&}]${'}\n"; +# } +# return 101; +# } + $sex = uc(substr($sex, 0, 1)); + if ($sex !~ /^[MF]$/) { + if ($defaultlanguage eq "F") { + print "Sexe incorrect [$sex]. Entrez M ou F svp.\n"; + } else { + print "Illegal gender [$sex]. Please input M or F.\n"; + } + return 103; + } + if ($passwd eq "") { + return 108 if (($passwd = typepasswd()) eq ""); + } + if (verify_password($passwd) == 0) { + return 104; + } + print $so pack("va24a24a1a40", 0x7930, $userid, $passwd, $sex, ""); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7931) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 106; + } + $buf = readso(28); + if (unpack("V", $buf) == -1 || unpack("V", $buf) == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec à la création du compte [$userid]. Un compte identique existe déjà.\n"; + } else { + print "Account [$userid] creation failed. Same account already exists.\n"; + } + return 107; + } else { + if ($defaultlanguage eq "F") { + printf "Compte [$userid] créé avec succès [id: %d].\n", unpack("V",$buf); + } else { + printf "Account [$userid] is successfully created [id: %d].\n", unpack("V",$buf); + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: add an account with an e-mail +sub createaccount() { + my($userid, $sex, $email, $passwd) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> create nomtest Male mon\@email.com motdepassetest\n"; + } else { + print "Please input an account name.\n"; + print "<example> create testname Male my\@mail.com testpass\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } +# if ($userid =~ /[^A-Za-z0-9\@-_]/) { +# if ($defaultlanguage eq "F") { +# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n"; +# } else { +# print "Illegal character found in the account name ".$`."[${&}]${'}\n"; +# } +# return 101; +# } + $sex = uc(substr($sex, 0, 1)); + if ($sex !~ /^[MF]$/) { + if ($defaultlanguage eq "F") { + print "Sexe incorrect [$sex]. Entrez M ou F svp.\n"; + } else { + print "Illegal gender [$sex]. Please input M or F.\n"; + } + return 103; + } + if (length($email) < 3) { + if ($defaultlanguage eq "F") { + print "Email trop courte [$email]. Entrez une e-mail valide svp.\n"; + } else { + print "Email is too short [$email]. Please input a valid e-mail.\n"; + } + return 109; + } + if (length($email) > 39) { + if ($defaultlanguage eq "F") { + print "Email trop longue [$email]. Entrez une e-mail de 39 caractères maximum svp.\n"; + } else { + print "Email is too long [$email]. Please input an e-mail with 39 bytes at the most.\n"; + } + return 109; + } + if (verify_email($email) == 0) { + if ($defaultlanguage eq "F") { + print "Email incorrecte [$email]. Entrez une e-mail valide svp.\n"; + } else { + print "Invalid email [$email]. Please input a valid e-mail.\n"; + } + return 109; + } + if ($passwd eq "") { + return 108 if (($passwd = typepasswd()) eq ""); + } + if (verify_password($passwd) == 0) { + return 104; + } + print $so pack("va24a24a1a40", 0x7930, $userid, $passwd, $sex, $email); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7931) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 106; + } + $buf = readso(28); + if (unpack("V", $buf) == -1 || unpack("V", $buf) == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec à la création du compte [$userid]. Un compte identique existe déjà.\n"; + } else { + print "Account [$userid] creation failed. Same account already exists.\n"; + } + return 107; + } else { + if ($defaultlanguage eq "F") { + printf "Compte [$userid] créé avec succès [id: %d].\n", unpack("V",$buf); + } else { + printf "Account [$userid] is successfully created [id: %d].\n", unpack("V",$buf); + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: deletion of an account +sub delaccount() { + my($userid) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> del nomtestasupprimer\n"; + } else { + print "Please input an account name.\n"; + print "<example> del testnametodelete\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + if ($defaultlanguage eq "F") { + print "** Etes-vous vraiment sûr de vouloir SUPPRIMER le compte [$userid]? (o/n) "; + } else { + print "** Are you really sure to DELETE account [$userid]? (y/n) "; + } + if (lc(substr(<STDIN>, 0, 1)) !~ /[oy]/) { + if ($defaultlanguage eq "F") { + print "Suppression annulée\n."; + } else { + print "Deletion canceled\n"; + } + return 121; + } + print $so pack("va24", 0x7932, $userid); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7933) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 122; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec de la suppression du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Account [$userid] deletion failed. Account doesn't exist.\n"; + } + return 123; + } else { + if ($defaultlanguage eq "F") { + print "Compte [$name][id: $id2] SUPPRIME avec succès.\n"; + } else { + print "Account [$name][id: $id2] is successfully DELETED.\n"; + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: modification of a password +sub changepasswd() { + my($userid, $passwd) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> passwd nomtest nouveaumotdepasse\n"; + } else { + print "Please input an account name.\n"; + print "<example> passwd testname newpassword\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + if ($passwd eq "") { + return 134 if (($passwd = typepasswd()) eq ""); + } + if (verify_password($passwd) == 0) { + return 131; + } + print $so pack("va24a24", 0x7934, $userid,$passwd); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7935) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 132; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec de la modification du mot de passe du compte [$userid].\n"; + print "Le compte [$userid] n'existe pas.\n"; + } else { + print "Account [$userid] password changing failed.\n"; + print "Account [$userid] doesn't exist.\n"; + } + return 133; + } else { + if ($defaultlanguage eq "F") { + print "Modification du mot de passe du compte [$name][id: $id2] réussie.\n"; + } else { + print "Account [$name][id: $id2] password successfully changed.\n"; + } + } + return 130; +} + +#-------------------------------------------------------------------------- + +# Sub-function: modification of an account e-mail +sub changeemail() { + my($userid, $email) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> email testname nouveauemail\n"; + } else { + print "Please input an account name.\n"; + print "<example> email testname newemail\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + if (length($email) < 3) { + if ($defaultlanguage eq "F") { + print "Email trop courte [$email]. Entrez une e-mail valide svp.\n"; + } else { + print "Email is too short [$email]. Please input a valid e-mail.\n"; + } + return 109; + } + if (length($email) > 39) { + if ($defaultlanguage eq "F") { + print "Email trop longue [$email]. Entrez une e-mail de 39 caractères maximum svp.\n"; + } else { + print "Email is too long [$email]. Please input an e-mail with 39 bytes at the most.\n"; + } + return 109; + } + if (verify_email($email) == 0) { + if ($defaultlanguage eq "F") { + print "Email incorrect [$email]. Entrez une e-mail valide svp.\n"; + } else { + print "Invalid email [$email]. Please input a valid e-mail.\n"; + } + return 109; + } + print $so pack("va24a40", 0x7940, $userid, $email); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7941) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 162; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec de la modification de l'e-mail du compte [$userid].\n"; + print "Le compte [$userid] n'existe pas.\n"; + } else { + print "Account [$userid] e-mail changing failed.\n"; + print "Account [$userid] doesn't exist.\n"; + } + return 133; + } else { + if ($defaultlanguage eq "F") { + print "Modification de l'e-mail du compte [$name][id: $id2] réussie.\n"; + } else { + print "Account [$name][id: $id2] e-mail successfully changed.\n"; + } + } + return 160; +} + +#-------------------------------------------------------------------------- + +# Sub-function: search of accounts +sub searchaccount() { + my($p1, $p2) = @_; + my($exp) = (""); + if ($p1 eq "-e" || $p1 eq "-r" || $p1 eq "--regex" || $p1 eq "--expr") { + if ($p2 eq "") { + if ($defaultlanguage eq "F") { + print "Entrez une expression régulière ou utilisez 'ls' pour avoir tous les comptes.\n"; + } else { + print "Input a regular expression or use 'ls' to obtain all accounts.\n"; + } + return 141; + } + $exp = $p2; + } else { + if ($p1 eq "") { + if ($defaultlanguage eq "F") { + print "Entrez une chaîne ou utilisez 'ls' pour avoir tous les comptes.\n"; + } else { + print "Input a string or use 'ls' to obtain all accounts.\n"; + } + return 141; + } + my($c) = 0; + $exp = lc($p1); + $exp =~ s/([\@])/\\$1/g; + $c += $exp =~ s/([\-\[\]])/\\$1/g; + $c += $exp =~ s/([\*\?])/.$1/g; + $c += $exp =~ s/\\\[(.)\\\-(.)\\\]/[$1-$2]/g; + $exp = "^$exp\$" if $c; + } + if (eval{ "" =~ /$exp/; }, $@) { + if ($defaultlanguage eq "F") { + print "Expression régulière non reconnue.\n"; + } else { + print "Regular-Expression compiling failed.\n"; + } + return 141; + } + my($i); + my($n, $st) = (0, 0); + # 0123456789 01 01234567890123456789012301234 012345 0123456789012345678901234567 + if ($defaultlanguage eq "F") { + print " id_compte GM nom_utilisateur sexe count statut\n"; + } else { + print "account_id GM user_name sex count state\n"; + } + print "-------------------------------------------------------------------------------\n"; + while(1) { + print $so pack("vV2", 0x7920, $st, 0); + $so->flush(); + $buf = readso(4); + if (unpack("v", $buf) != 0x7921) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + exit(10); + } + my($len) = unpack("x2v", $buf); + last if ($len <= 4); + for($i = 4; $i < $len; $i += 38) { + my(@dat) = unpack("VCa24cVV", readso(38)); + $st = $dat[0] + 1; + next if (lc($dat[2]) !~ /$exp/); + printf "%10d %2s %-24s%-5s %6d %-27s\n", $dat[0], + ($dat[1] == 0 ? " " : $dat[1]), + $dat[2], + ($defaultlanguage eq "F" ? ("Femme","Male","Servr")[$dat[3]] : ("Femal","Male","Servr")[$dat[3]]), + $dat[4], + (($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"), + "Unregistered ID", + "Incorrect Password", + "This ID is expired", + "Rejected from Server", + "Blocked by the GM Team", # You have been blocked by the GM Team + "Your EXE file is too old", # Your Game's EXE file is not the latest version + "Banishement or\n Prohibited to login until %s", # You are Prohibited to log in until %s + "Server is over populated", # Server is jammed due to over populated + "No MSG", + "This ID is totally erased")[$dat[5] == 100 ? 10 : $dat[5]]; # This ID has been totally erased + $n++; + } + } + if ($defaultlanguage eq "F") { + if ($n == 0) { + print "Aucun compte trouvé.\n"; + } elsif ($n == 1) { + print "1 compte trouvé.\n"; + } else { + print "$n comptes trouvés.\n"; + } + } else { + if ($n == 0) { + print "No account found.\n"; + } elsif ($n == 1) { + print "1 account found.\n"; + } else { + print "$n accounts found.\n"; + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: modify the sex of an account +sub changesex() { + my($userid, $sex) = @_; + if ($userid eq "" || !defined($userid)) { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> sex nomtest Male\n"; + } else { + print "Please input an account name.\n"; + print "<example> sex testname Male\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } +# if ($userid =~ /[^A-Za-z0-9\@-_]/) { +# if ($defaultlanguage eq "F") { +# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n"; +# } else { +# print "Illegal character found in the account name ".$`."[${&}]${'}\n"; +# } +# return 101; +# } + $sex = uc(substr($sex, 0, 1)); + if ($sex !~ /^[MF]$/) { + if ($defaultlanguage eq "F") { + print "Sexe incorrect [$sex]. Entrez M ou F svp.\n"; + } else { + print "Illegal gender [$sex]. Please input M or F.\n"; + } + return 103; + } + print $so pack("va24a1", 0x793c, $userid, $sex); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x793d) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec du changement du sexe du compte [$userid].\n"; + print "Le compte n'existe pas ou le sexe est déjà celui demandé.\n"; + } else { + print "Account [$userid] sex changing failed.\n"; + print "Account doesn't exist or the sex is already the good sex.\n"; + } + } else { + if ($defaultlanguage eq "F") { + print "Sexe du compte [$name][id: $id2] changé avec succès.\n"; + } else { + print "Account [$name][id: $id2] sex successfully changed.\n"; + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: modify the GM level of an account +sub changegmlevel() { + my($userid, $gm_level) = @_; + if ($userid eq "" || !defined($userid)) { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> gm nomtest 80\n"; + } else { + print "Please input an account name.\n"; + print "<example> gm testname 80\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } +# if ($userid =~ /[^A-Za-z0-9\@-_]/) { +# if ($defaultlanguage eq "F") { +# print "Caractère interdit trouvé dans le nom du compte ".$`."[${&}]${'}\n"; +# } else { +# print "Illegal character found in the account name ".$`."[${&}]${'}\n"; +# } +# return 101; +# } + $gm_level = int($gm_level); + if ($gm_level < 0 || $gm_level > 99) { + if ($defaultlanguage eq "F") { + print "Niveau de GM incorrect [$gm_level]. Entrez une valeur de 0 à 99 svp.\n"; + } else { + print "Illegal GM level [$gm_level]. Please input a value from 0 to 99.\n"; + } + return 103; + } + print $so pack("va24C", 0x793e, $userid, $gm_level); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x793f) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec du changement du niveau de GM du compte [$userid].\n"; + print "Le compte n'existe pas, le niveau de GM est déjà celui demandé,\n"; + print "ou il est impossible de modifier le fichier des comptes GM.\n"; + } else { + print "Account [$userid] GM level changing failed.\n"; + print "Account doesn't exist, the GM level is already the good GM level,\n"; + print "or it's impossible to modify the GM accounts file.\n"; + } + } else { + if ($defaultlanguage eq "F") { + print "Niveau de GM du compte [$name][id: $id2] changé avec succès.\n"; + } else { + print "Account [$name][id: $id2] GM level successfully changed.\n"; + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Modification of a state +sub changestate { + my($userid, $s, $error_message) = @_; + # Valid values: 0: ok, or value of the 0x006a packet + 1 + if ($s eq "" || (($s < 0 || $s > 9) && $s != 100)) { + if ($defaultlanguage eq "F") { + print "Entrez une des valeurs suivantes svp:\n"; + print " 0 = Compte ok 6 = Your Game's EXE file is not the latest version\n"; + } else { + print "Please input one of these values:\n"; + print " 0 = Account ok 6 = Your Game's EXE file is not the latest version\n"; + } + print " 1 = Unregistered ID 7 = You are Prohibited to log in until %s\n"; + print " 2 = Incorrect Password 8 = Server is jammed due to over populated\n"; + print " 3 = This ID is expired 9 = No MSG\n"; + print " 4 = Rejected from Server 100 = This ID has been totally erased\n"; + print " 5 = You have been blocked by the GM Team\n"; + if ($defaultlanguage eq "F") { + print "<exemples> state nomtest 5\n"; + print " state nomtest 7 fin de votre ban\n"; + print " block <nom du compte>\n"; + print " unblock <nom du compte>\n"; + } else { + print "<examples> state testname 5\n"; + print " state testname 7 end of your ban\n"; + print " block <account name>\n"; + print " unblock <account name>\n"; + } + return 151; + } + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemples> state nomtest 5\n"; + print " state nomtest 7 fin de votre ban\n"; + print " block <nom du compte>\n"; + print " unblock <nom du compte>\n"; + } else { + print "Please input an account name.\n"; + print "<examples> state testname 5\n"; + print " state testname 7 end of your ban\n"; + print " block <account name>\n"; + print " unblock <account name>\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + if ($s != 7) { + $error_message = "-"; + } else { + if (length($error_message) < 1) { + if ($defaultlanguage eq "F") { + print "Message d'erreur trop court. Entrez un message de 1-19 caractères.\n"; + } else { + print "Error message is too short. Please input a message of 1-19 bytes.\n"; + } + return 102; + } + if (length($error_message) > 19) { + if ($defaultlanguage eq "F") { + print "Message d'erreur trop long. Entrez un message de 1-19 caractères.\n"; + } else { + print "Error message is too long. Please input a message of 1-19 bytes.\n"; + } + return 102; + } + } + print $so pack("va24Va20", 0x7936, $userid, $s, $error_message); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7937) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(32); + my(@dat) = unpack("Va24V", $buf); + while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) { + chop($dat[1]); + }; + if ($dat[0] != -1 && $dat[0] != 4294967295) { + if ($defaultlanguage eq "F") { + print "Statut du compte [$dat[1]][id: $dat[0]] changé avec succès en ["; + } else { + print "Account [$dat[1]][id: $dat[0]] state successfully changed in ["; + } + print ((($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"), + "Unregistered ID", + "Incorrect Password", + "This ID is expired", + "Rejected from Server", + "You have been blocked by the GM Team", + "Your Game's EXE file is not the latest version", + "You are Prohibited to log in until %s", + "Server is jammed due to over populated", + "No MSG", + "This ID has been totally erased")[$dat[2] == 100 ? 10 : $dat[2]]); + print "].\n"; + } else { + if ($defaultlanguage eq "F") { + print "Echec du changement du statut du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Account [$userid] state changing failed. Account doesn't exist.\n"; + } + } +} + +#-------------------------------------------------------------------------- + +# Sub-function: Displaying of the number of online players +sub getlogincount { + # Request to the login-server + print $so pack("v", 0x7938); + $so->flush(); + + $buf = readso(4); + # Connection failed + if (unpack("v", $buf) != 0x7939) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + exit(3); + } + + # Get length of the received packet + my($len) = unpack("x2v", $buf) - 4; + + # Read information of the servers + if ($len < 1) { + if ($defaultlanguage eq "F") { + printf " Aucun serveur n'est connecté au login serveur.\n"; + } else { + printf " No server is connected to the login-server.\n"; + } + } else { + my(@slist) = (); + for(; $len > 0; $len -= 32) { + my($name, $count) = unpack("x6 a20 V", readso(32)); + $name = substr($name, 0, index($name, "\0")); + push @slist, [ $name, $count ]; + } + # Displaying of result + my($i); + if ($defaultlanguage eq "F") { + printf " Nombre de joueurs en ligne (serveur: nb):\n"; + } else { + printf " Number of online players (server: number).\n"; + } + foreach $i(@slist) { + printf " %-20s : %5d\n", $i->[0], $i->[1]; + } + } +} + +#-------------------------------------------------------------------------- + +# Sub-function: Modification of a memo field +sub changememo { + my($userid, $memo) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> memo nomtest nouveau memo\n"; + } else { + print "Please input an account name.\n"; + print "<example> memo testname new memo\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + if (length($memo) > 254) { + if ($defaultlanguage eq "F") { + print "Mémo trop long (".length($memo)." caractères).\n"; + print "Entrez un mémo de 254 caractères maximum svp.\n"; + } else { + print "Memo is too long (".length($memo)." characters).\n"; + print "Please input a memo of 254 bytes at the maximum.\n"; + } + return 102; + } + if (length($memo) == 0) { + print $so pack("va24v", 0x7942, $userid, 0); + } else { + print $so pack("va24va".length($memo), 0x7942, $userid, length($memo), $memo); + } + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7943) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec du changement du mémo du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Account [$userid] memo changing failed. Account doesn't exist.\n"; + } + } else { + if ($defaultlanguage eq "F") { + print "Mémo du compte [$name][id: $id2] changé avec succès.\n"; + } else { + print "Account [$name][id: $id2] memo successfully changed.\n"; + } + } +} + +#-------------------------------------------------------------------------- + +# Sub-function: Request to obtain an account id +sub idaccount() { + my($userid) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> id nomtest\n"; + } else { + print "Please input an account name.\n"; + print "<example> id testname\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + print $so pack("va24", 0x7944, $userid); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7945) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 122; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Impossible de trouver l'id du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Unabled to find the account [$userid] id. Account doesn't exist.\n"; + } + return 123; + } else { + if ($defaultlanguage eq "F") { + print "Le compte [$name] a pour id: $id2.\n"; + } else { + print "The account [$name] have the id: $id2.\n"; + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Request to obtain an account name +sub nameaccount() { + my($id) = @_; + if ($id < 0) { + if ($defaultlanguage eq "F") { + print "Entrez un id ayant une valeur positive svp.\n"; + } else { + print "Please input a positive value for the id.\n"; + } + return 136; + } + print $so pack("vV", 0x7946, $id); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7947) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 122; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if (length($name) == 0 || $name eq "") { + if ($defaultlanguage eq "F") { + print "Impossible de trouver le nom du compte [id: $id2]. Le compte n'existe pas.\n"; + } else { + print "Unabled to find the account [id: $id2] name. Account doesn't exist.\n"; + } + return 123; + } else { + if ($defaultlanguage eq "F") { + print "Le compte [id: $id2] a pour nom: $name.\n"; + } else { + print "The account [id: $id2] have the name: $name.\n"; + } + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Set a validity limit of an account +sub timesetaccount() { + my($userid, $date, $time) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple>: timeset <nom_du_compte> aaaa/mm/jj [hh:mm:ss]\n"; + print " timeset <nom_du_compte> 0 (0 = illimité)\n"; + printf " Heure par défaut [hh:mm:ss]: 23:59:59\n"; + } else { + print "Please input an account name.\n"; + print "<example>: timeset <account_name> yyyy/mm/dd [hh:mm:ss]\n"; + print " timeset <account_name> 0 (0 = unlimited)\n"; + printf " Default time [hh:mm:ss]: 23:59:59\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + my($year, $month, $day) = split(/[.\-\/]/, $date); + my($hour, $minute, $second) = split(/:/, $time); + if ($time eq "") { + $hour = 23; + $minute = 59; + $second = 59; + } + my($timestamp); + if ($year eq "" || + ($year != 0 && ($month eq "" || $day eq "" || $hour eq "" || $minute eq "" || $second eq ""))) { + if ($defaultlanguage eq "F") { + print "Entrez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n"; + } else { + print "Please input 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n"; + } + return 102; + } + if ($year == 0) { + $timestamp = 0; + } else { + if ($year < 70) { + $year = $year + 100; + } + if ($year >= 1900) { + $year = $year - 1900; + } + if ($month < 1 || $month > 12) { + if ($defaultlanguage eq "F") { + print "Entrez un mois correct svp (entre 1 et 12).\n"; + } else { + print "Please give a correct value for the month (from 1 to 12).\n"; + } + return 102; + } + $month = $month - 1; + if ($day < 1 || $day > 31) { + if ($defaultlanguage eq "F") { + print "Entrez un jour correct svp (entre 1 et 31).\n"; + } else { + print "Please give a correct value for the day (from 1 to 31).\n"; + } + return 102; + } + if ((($month == 3 || $month == 5 || $month == 8 || $month == 10) && $day > 30) || + ($month == 1 && $day > 29)) { + if ($defaultlanguage eq "F") { + print "Entrez un jour correct en fonction du mois svp.\n"; + } else { + print "Please give a correct value for a day of this month.\n"; + } + return 102; + } + if ($hour < 0 || $hour > 23) { + if ($defaultlanguage eq "F") { + print "Entrez une heure correcte svp (entre 0 et 23).\n"; + } else { + print "Please give a correct value for the hour (from 0 to 23).\n"; + } + return 102; + } + if ($minute < 0 || $minute > 59) { + if ($defaultlanguage eq "F") { + print "Entrez des minutes correctes svp (entre 0 et 59).\n"; + } else { + print "Please give a correct value for the minutes (from 0 to 59).\n"; + } + return 102; + } + if ($second < 0 || $second > 59) { + if ($defaultlanguage eq "F") { + print "Entrez des secondes correctes svp (entre 0 et 59).\n"; + } else { + print "Please give a correct value for the seconds (from 0 to 59).\n"; + } + return 102; + } + $timestamp = POSIX::mktime($second, $minute, $hour, $day, $month, $year, 0, 0, -1); # -1: no winter/summer time modification + if ($timestamp == undef) { + if ($defaultlanguage eq "F") { + print "Date incorrecte.\n"; + print "Ajoutez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n"; + } else { + print "Invalid date.\n"; + print "Please add 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n"; + } + return 102; + } + } + + print $so pack("va24V", 0x7948, $userid, $timestamp); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7949) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(32); + my(@dat) = unpack("Va24V", $buf); + while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) { + chop($dat[1]); + }; + if ($dat[0] != -1 && $dat[0] != 4294967295) { + if ($defaultlanguage eq "F") { + print "Limite de validité du compte [$dat[1]][id: $dat[0]] changée avec succès ". + ($dat[2] == 0 ? "en [illimité].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2]))); + } else { + print "Validity Limit of the account [$dat[1]][id: $dat[0]] successfully changed ". + ($dat[2] == 0 ? "to [unlimited].\n" : "to be until ".(POSIX::ctime($dat[2]))); + } + # localtime($dat[2]) is also possible to display instead of POSIX::ctime. + } else { + if ($defaultlanguage eq "F") { + print "Echec du changement de la validité du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Account [$userid] validity limit changing failed. Account doesn't exist.\n"; + } + } + + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Add/substract time to the validity limit of an account +sub timeaddaccount() { + my($userid, $modif) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print " <exemple> timeadd nomtest +1m-2mn1s-6y\n"; + print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n"; + print " et 6 ans dans le même temps.\n"; + } else { + print "Please input an account name.\n"; + print " <example> timeadd testname +1m-2mn1s-6y\n"; + print " this example adds 1 month and 1 second, and substracts 2 minutes\n"; + print " and 6 years at the same time.\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + my($year, $month, $day) = (0, 0 ,0); + my($hour, $minute, $second) = (0, 0 ,0); + + $modif = lc($modif); + while (length($modif) > 0) { + my($value) = int($modif); + if ($value == 0) { + $modif = substr($modif, 1); + } else { + if (substr($modif, 0, 1) =~ /[\-\+]/) { + $modif = substr($modif, 1); + } + while (length($modif) > 0 && substr($modif, 0, 1) =~ /[0-9]/) { + $modif = substr($modif, 1); + } + if (index($modif, "s") == 0) { + $second = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "mn") == 0) { + $minute = $value; + $modif = substr($modif, 2); + } elsif (index($modif, "h") == 0) { + $hour = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "d") == 0 || index($modif, "j") == 0) { + $day = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "m") == 0) { + $month = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "y") == 0 || index($modif, "a") == 0) { + $year = $value; + $modif = substr($modif, 1); + } else { + $modif = substr($modif, 1); + } + } + } + + if ($defaultlanguage eq "F") { + print " année: $year\n"; + print " mois: $month\n"; + print " jour: $day\n"; + print " heure: $hour\n"; + print " minute: $minute\n"; + print " seconde: $second\n"; + } else { + print " year: $year\n"; + print " month: $month\n"; + print " day: $day\n"; + print " hour: $hour\n"; + print " minute: $minute\n"; + print " second: $second\n"; + } + + if ($year == 0 && $month == 0 && $day == 0 && $hour == 0 && $minute == 0 && $second == 0) { + if ($defaultlanguage eq "F") { + print "Vous devez entrer un ajustement avec cette commande, svp:\n"; + print " Valeur d'ajustement (-1, 1, +1, etc...)\n"; + print " Element modifié:\n"; + print " a ou y: année\n"; + print " m: mois\n"; + print " j ou d: jour\n"; + print " h: heure\n"; + print " mn: minute\n"; + print " s: seconde\n"; + print " <exemple> timeadd nomtest +1m-2mn1s-6y\n"; + print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n"; + print " et 6 ans dans le même temps.\n"; + } else { + print "Please give an adjustment with this command:\n"; + print " Adjustment value (-1, 1, +1, etc...)\n"; + print " Modified element:\n"; + print " a or y: year\n"; + print " m: month\n"; + print " j or d: day\n"; + print " h: hour\n"; + print " mn: minute\n"; + print " s: second\n"; + print " <example> timeadd testname +1m-2mn1s-6y\n"; + print " this example adds 1 month and 1 second, and substracts 2 minutes\n"; + print " and 6 years at the same time.\n"; + } + return 137; + } + if ($year > 127 || $year < -127) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement d'années correct (de -127 à 127), svp.\n"; + } else { + print "Please give a correct adjustment for the years (from -127 to 127).\n"; + } + return 137; + } + if ($month > 255 || $month < -255) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de mois correct (de -255 à 255), svp.\n"; + } else { + print "Please give a correct adjustment for the months (from -255 to 255).\n"; + } + return 137; + } + if ($day > 32767 || $day < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de jours correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the days (from -32767 to 32767).\n"; + } + return 137; + } + if ($hour > 32767 || $hour < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement d'heures correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the hours (from -32767 to 32767).\n"; + } + return 137; + } + if ($minute > 32767 || $minute < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de minutes correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the minutes (from -32767 to 32767).\n"; + } + return 137; + } + if ($second > 32767 || $second < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de secondes correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the seconds (from -32767 to 32767).\n"; + } + return 137; + } + + print $so pack("va24vvvvvv", 0x7950, $userid, $year, $month, $day, $hour, $minute, $second); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x7951) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(32); + my(@dat) = unpack("Va24V", $buf); + while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) { + chop($dat[1]); + }; + if ($dat[0] == -1 || $dat[0] == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec du changement de la validité du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Account [$userid] validity limit changing failed. Account doesn't exist.\n"; + } + } elsif ($dat[2] == 0) { + if ($defaultlanguage eq "F") { + print "Limite de validité du compte [$dat[1]][id: $dat[0]] inchangée.\n"; + print "Le compte a une validité illimitée ou\n"; + print "la modification est impossible avec les ajustements demandés.\n"; + } else { + print "Validity limit of the account [$dat[1]][id: $dat[0]] unchanged.\n"; + print "The account have an unlimited validity limit or\n"; + print "the changing is impossible with the proposed adjustments.\n"; + } + } else { + if ($defaultlanguage eq "F") { + print "Limite de validité du compte [$dat[1]][id: $dat[0]] changée avec succès ". + ($dat[2] == 0 ? "en [illimité].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2]))); + } else { + print "Validity limit of the account [$dat[1]][id: $dat[0]] successfully changed ". + ($dat[2] == 0 ? "to [unlimited].\n" : "to be until ".(POSIX::ctime($dat[2]))); + } + # localtime($dat[2]) is also possible to display instead of POSIX::ctime. + } + + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Set the final date of a banishment of an account +sub bansetaccount() { + my($userid, $date, $time) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple>: banset <nom_du_compte> aaaa/mm/jj [hh:mm:ss]\n"; + print " banset <nom_du_compte> 0 (0 = dé-bani)\n"; + print " ban/banish aaaa/mm/jj hh:mm:ss <nom du compte>\n"; + print " unban/unbanish <nom du compte>\n"; + printf " Heure par défaut [hh:mm:ss]: 23:59:59\n"; + } else { + print "Please input an account name.\n"; + print "<example>: banset <account_name> yyyy/mm/dd [hh:mm:ss]\n"; + print " banset <account_name> 0 (0 = un-banished)\n"; + print " ban/banish yyyy/mm/dd hh:mm:ss <account name>\n"; + print " unban/unbanish <account name>\n"; + printf " Default time [hh:mm:ss]: 23:59:59\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + my($year, $month, $day) = split(/[.\-\/]/, $date); + my($hour, $minute, $second) = split(/:/, $time); + if ($time eq "") { + $hour = 23; + $minute = 59; + $second = 59; + } + my($timestamp); + if ($year eq "" || + ($year != 0 && ($month eq "" || $day eq "" || $hour eq "" || $minute eq "" || $second eq ""))) { + if ($defaultlanguage eq "F") { + print "Entrez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n"; + } else { + print "Please input 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n"; + } + return 102; + } + if ($year == 0) { + $timestamp = 0; + } else { + if ($year < 70) { + $year = $year + 100; + } + if ($year >= 1900) { + $year = $year - 1900; + } + if ($month < 1 || $month > 12) { + if ($defaultlanguage eq "F") { + print "Entrez un mois correct svp (entre 1 et 12).\n"; + } else { + print "Please give a correct value for the month (from 1 to 12).\n"; + } + return 102; + } + $month = $month - 1; + if ($day < 1 || $day > 31) { + if ($defaultlanguage eq "F") { + print "Entrez un jour correct svp (entre 1 et 31).\n"; + } else { + print "Please give a correct value for the day (from 1 to 31).\n"; + } + return 102; + } + if ((($month == 3 || $month == 5 || $month == 8 || $month == 10) && $day > 30) || + ($month == 1 && $day > 29)) { + if ($defaultlanguage eq "F") { + print "Entrez un jour correct en fonction du mois svp.\n"; + } else { + print "Please give a correct value for a day of this month.\n"; + } + return 102; + } + if ($hour < 0 || $hour > 23) { + if ($defaultlanguage eq "F") { + print "Entrez une heure correcte svp (entre 0 et 23).\n"; + } else { + print "Please give a correct value for the hour (from 0 to 23).\n"; + } + return 102; + } + if ($minute < 0 || $minute > 59) { + if ($defaultlanguage eq "F") { + print "Entrez des minutes correctes svp (entre 0 et 59).\n"; + } else { + print "Please give a correct value for the minutes (from 0 to 59).\n"; + } + return 102; + } + if ($second < 0 || $second > 59) { + if ($defaultlanguage eq "F") { + print "Entrez des secondes correctes svp (entre 0 et 59).\n"; + } else { + print "Please give a correct value for the seconds (from 0 to 59).\n"; + } + return 102; + } + $timestamp = POSIX::mktime($second, $minute, $hour, $day, $month, $year, 0, 0, -1); # -1: no winter/summer time modification + if ($timestamp == undef) { + if ($defaultlanguage eq "F") { + print "Date incorrecte.\n"; + print "Ajoutez 0 ou une date et une heure svp (format: 0 ou aaaa/mm/jj hh:mm:ss).\n"; + } else { + print "Invalid date.\n"; + print "Please add 0 or a date and a time (format: 0 or yyyy/mm/dd hh:mm:ss).\n"; + } + return 102; + } + } + + print $so pack("va24V", 0x794a, $userid, $timestamp); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x794b) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(32); + my(@dat) = unpack("Va24V", $buf); + while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) { + chop($dat[1]); + }; + if ($dat[0] != -1 && $dat[0] != 4294967295) { + if ($defaultlanguage eq "F") { + print "Date finale de banissement du compte [$dat[1]][id: $dat[0]] changée avec succès ". + ($dat[2] == 0 ? "en [dé-bannie].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2]))); + } else { + print "Final date of banishment of the account [$dat[1]][id: $dat[0]] successfully changed ". + ($dat[2] == 0 ? "to [unbanished].\n" : "to be until ".(POSIX::ctime($dat[2]))); + } + # localtime($dat[2]) is also possible to display instead of POSIX::ctime. + } else { + if ($defaultlanguage eq "F") { + print "Echec du changement de la date finale de banissement du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Account [$userid] final date of banishment changing failed. Account doesn't exist.\n"; + } + } + + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Add/substract time to the final date of a banishment of an account +sub banaddaccount() { + my($userid, $modif) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print " <exemple> banadd nomtest +1m-2mn1s-6y\n"; + print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n"; + print " et 6 ans dans le même temps.\n"; + } else { + print "Please input an account name.\n"; + print " <example> banadd testname +1m-2mn1s-6y\n"; + print " this example adds 1 month and 1 second, and substracts 2 minutes\n"; + print " and 6 years at the same time.\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + my($year, $month, $day) = (0, 0 ,0); + my($hour, $minute, $second) = (0, 0 ,0); + + $modif = lc($modif); + while (length($modif) > 0) { + my($value) = int($modif); + if ($value == 0) { + $modif = substr($modif, 1); + } else { + if (substr($modif, 0, 1) =~ /[\-\+]/) { + $modif = substr($modif, 1); + } + while (length($modif) > 0 && substr($modif, 0, 1) =~ /[0-9]/) { + $modif = substr($modif, 1); + } + if (index($modif, "s") == 0) { + $second = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "mn") == 0) { + $minute = $value; + $modif = substr($modif, 2); + } elsif (index($modif, "h") == 0) { + $hour = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "d") == 0 || index($modif, "j") == 0) { + $day = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "m") == 0) { + $month = $value; + $modif = substr($modif, 1); + } elsif (index($modif, "y") == 0 || index($modif, "a") == 0) { + $year = $value; + $modif = substr($modif, 1); + } else { + $modif = substr($modif, 1); + } + } + } + + if ($defaultlanguage eq "F") { + print " année: $year\n"; + print " mois: $month\n"; + print " jour: $day\n"; + print " heure: $hour\n"; + print " minute: $minute\n"; + print " seconde: $second\n"; + } else { + print " year: $year\n"; + print " month: $month\n"; + print " day: $day\n"; + print " hour: $hour\n"; + print " minute: $minute\n"; + print " second: $second\n"; + } + + if ($year == 0 && $month == 0 && $day == 0 && $hour == 0 && $minute == 0 && $second == 0) { + if ($defaultlanguage eq "F") { + print "Vous devez entrer un ajustement avec cette commande, svp:\n"; + print " Valeur d'ajustement (-1, 1, +1, etc...)\n"; + print " Element modifié:\n"; + print " a ou y: année\n"; + print " m: mois\n"; + print " j ou d: jour\n"; + print " h: heure\n"; + print " mn: minute\n"; + print " s: seconde\n"; + print " <exemple> banadd nomtest +1m-2mn1s-6y\n"; + print " Cette exemple ajoute 1 mois et 1 seconde, et soustrait 2 minutes\n"; + print " et 6 ans dans le même temps.\n"; + } else { + print "Please give an adjustment with this command:\n"; + print " Adjustment value (-1, 1, +1, etc...)\n"; + print " Modified element:\n"; + print " a or y: year\n"; + print " m: month\n"; + print " j or d: day\n"; + print " h: hour\n"; + print " mn: minute\n"; + print " s: second\n"; + print " <example> banadd testname +1m-2mn1s-6y\n"; + print " this example adds 1 month and 1 second, and substracts 2 minutes\n"; + print " and 6 years at the same time.\n"; + } + return 137; + } + if ($year > 127 || $year < -127) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement d'années correct (de -127 à 127), svp.\n"; + } else { + print "Please give a correct adjustment for the years (from -127 to 127).\n"; + } + return 137; + } + if ($month > 255 || $month < -255) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de mois correct (de -255 à 255), svp.\n"; + } else { + print "Please give a correct adjustment for the months (from -255 to 255).\n"; + } + return 137; + } + if ($day > 32767 || $day < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de jours correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the days (from -32767 to 32767).\n"; + } + return 137; + } + if ($hour > 32767 || $hour < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement d'heures correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the hours (from -32767 to 32767).\n"; + } + return 137; + } + if ($minute > 32767 || $minute < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de minutes correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the minutes (from -32767 to 32767).\n"; + } + return 137; + } + if ($second > 32767 || $second < -32767) { + if ($defaultlanguage eq "F") { + print "Entrez un ajustement de secondes correct (de -32767 à 32767), svp.\n"; + } else { + print "Please give a correct adjustment for the seconds (from -32767 to 32767).\n"; + } + return 137; + } + + print $so pack("va24vvvvvv", 0x794c, $userid, $year, $month, $day, $hour, $minute, $second); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x794d) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(32); + my(@dat) = unpack("Va24V", $buf); + while (length($dat[1]) > 0 && substr($dat[1], length($dat[1])-1, 1) eq chr(0)) { + chop($dat[1]); + }; + if ($dat[0] == -1 || $dat[0] == 4294967295) { + if ($defaultlanguage eq "F") { + print "Echec du changement de la date finale de banissement du compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Account [$userid] final date of banishment changing failed. Account doesn't exist.\n"; + } + } else { + if ($defaultlanguage eq "F") { + print "Date finale de banissement du compte [$dat[1]][id: $dat[0]] changée avec succès ". + ($dat[2] == 0 ? "en [dé-bannie].\n" : "pour être jusqu'au ".(POSIX::ctime($dat[2]))); + } else { + print "Final date of banishment of the account [$dat[1]][id: $dat[0]] successfully changed ". + ($dat[2] == 0 ? "to [unbanished].\n" : "to be until ".(POSIX::ctime($dat[2]))); + } + # localtime($dat[2]) is also possible to display instead of POSIX::ctime. + } + + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Request to displaying information about an account (by its name) +sub whoaccount() { + my($userid) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> who nomtest\n"; + } else { + print "Please input an account name.\n"; + print "<example> who testname\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + + print $so pack("va24", 0x7952, $userid); + $so->flush(); + + $buf = readso(2); + if (unpack("v", $buf) != 0x7953) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 122; + } + my($id2, $GM_level, $name, $sex, $count, $status, $error_message, $last_login, $last_ip, $email, $validite, $ban_date, $memo_size) = unpack("VCa24cVVa20a24a16a40VVv", readso(148)); + my($memo) = ""; + if ($memo_size > 0) { + $memo = unpack("a".$memo_size, readso($memo_size)); + } + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + while (length($error_message) > 0 && substr($error_message, length($error_message)-1, 1) eq chr(0)) { + chop($error_message); + }; + while (length($last_login) > 0 && substr($last_login, length($last_login)-1, 1) eq chr(0)) { + chop($last_login); + }; + while (length($last_ip) > 0 && substr($last_ip, length($last_ip)-1, 1) eq chr(0)) { + chop($last_ip); + }; + while (length($email) > 0 && substr($email, length($email)-1, 1) eq chr(0)) { + chop($email); + }; + while (length($memo) > 0 && substr($memo, length($memo)-1, 1) eq chr(0)) { + chop($memo); + }; + + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Impossible de trouver le compte [$userid]. Le compte n'existe pas.\n"; + } else { + print "Unabled to find the account [$userid]. Account doesn't exist.\n"; + } + return 123; + } else { + if ($defaultlanguage eq "F") { + print "Le compte [$userid] a les caractéristiques suivantes:\n"; + } else { + print "The account [$userid] is set with:\n"; + } + if ($GM_level == 0) { + print " Id: $id2 (non-GM)\n"; + } else { + if ($defaultlanguage eq "F") { + print " Id: $id2 (GM niveau $GM_level)\n"; + } else { + print " Id: $id2 (GM level $GM_level)\n"; + } + } + if ($defaultlanguage eq "F") { + print " Nom: '$name'\n"; + print " Sexe: ".("Femme", "Male", "Serveur")[$sex]."\n"; + } else { + print " Name: '$name'\n"; + print " Sex: ".("Female", "Male", "Server")[$sex]."\n"; + } + print " E-mail: $email\n"; + if ($status == 7) { + print " Statut: 7 [You are Prohibited to log in until $error_message]\n"; + } else { + print " Statut: $status [".( + ($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"), + "Unregistered ID", + "Incorrect Password", + "This ID is expired", + "Rejected from Server", + "You have been blocked by the GM Team", + "Your Game's EXE file is not the latest version", + "You are Prohibited to log in until %s", + "Server is jammed due to over populated", + "No MSG", + "This ID is totally erased")[$status == 100 ? 10 : $status]."]\n"; + } + if ($defaultlanguage eq "F") { + print " Banissement: ".($ban_date == 0 ? "non banni.\n" : "jusqu'au ".(POSIX::ctime($ban_date))); + print " Compteur: $count connexion".("s", "")[$count > 1 ? 0 : 1]."\n"; + print " Dernière connexion le: $last_login (ip: $last_ip)\n"; + print " Limite de validité: ".($validite == 0 ? "illimité.\n" : "jusqu'au ".(POSIX::ctime($validite))); + } else { + print " Banishment: ".($ban_date == 0 ? "not banished.\n" : "until ".(POSIX::ctime($ban_date))); + print " Count: $count connection".("s", "")[$count > 1 ? 0 : 1]."\n"; + print " Last connection at: $last_login (ip: $last_ip)\n"; + print " Validity limit: ".($validite == 0 ? "unlimited.\n" : "until ".(POSIX::ctime($validite))); + } + print " Memo: '$memo'\n"; + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Request to displaying information about an account (by its id) +sub infoaccount() { + my($id) = @_; + if ($id < 0) { + if ($defaultlanguage eq "F") { + print "Entrez un id ayant une valeur positive svp.\n"; + } else { + print "Please input a positive value for the id.\n"; + } + return 136; + } + + print $so pack("vV", 0x7954, $id); + $so->flush(); + + $buf = readso(2); + if (unpack("v", $buf) != 0x7953) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 122; + } + my($id2, $GM_level, $name, $sex, $count, $status, $error_message, $last_login, $last_ip, $email, $validite, $ban_date, $memo_size) = unpack("VCa24cVVa20a24a16a40VVv", readso(148)); + my($memo) = ""; + if ($memo_size > 0) { + $memo = unpack("a".$memo_size, readso($memo_size)); + } + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + while (length($error_message) > 0 && substr($error_message, length($error_message)-1, 1) eq chr(0)) { + chop($error_message); + }; + while (length($last_login) > 0 && substr($last_login, length($last_login)-1, 1) eq chr(0)) { + chop($last_login); + }; + while (length($last_ip) > 0 && substr($last_ip, length($last_ip)-1, 1) eq chr(0)) { + chop($last_ip); + }; + while (length($email) > 0 && substr($email, length($email)-1, 1) eq chr(0)) { + chop($email); + }; + while (length($memo) > 0 && substr($memo, length($memo)-1, 1) eq chr(0)) { + chop($memo); + }; + + if (length($name) == 0 || $name eq "") { + if ($defaultlanguage eq "F") { + print "Impossible de trouver le nom du compte [id: $id2]. Le compte n'existe pas.\n"; + } else { + print "Unabled to find the account [id: $id2] name. Account doesn't exist.\n"; + } + return 123; + } else { + if ($defaultlanguage eq "F") { + print "Le compte [id: $id2] a les caractéristiques suivantes:\n"; + } else { + print "The account [id: $id2] is set with:\n"; + } + if ($GM_level == 0) { + print " Id: $id2 (non-GM)\n"; + } else { + if ($defaultlanguage eq "F") { + print " Id: $id2 (GM niveau $GM_level)\n"; + } else { + print " Id: $id2 (GM level $GM_level)\n"; + } + } + if ($defaultlanguage eq "F") { + print " Nom: '$name'\n"; + print " Sexe: ".("Femme", "Male", "Serveur")[$sex]."\n"; + } else { + print " Name: '$name'\n"; + print " Sex: ".("Female", "Male", "Server")[$sex]."\n"; + } + print " E-mail: $email\n"; + if ($status == 7) { + print " Statut: 7 [You are Prohibited to log in until $error_message]\n"; + } else { + print " Statut: $status [".( + ($defaultlanguage eq "F" ? "Compte Ok" : "Account OK"), + "Unregistered ID", + "Incorrect Password", + "This ID is expired", + "Rejected from Server", + "You have been blocked by the GM Team", + "Your Game's EXE file is not the latest version", + "You are Prohibited to log in until %s", + "Server is jammed due to over populated", + "No MSG", + "This ID is totally erased")[$status == 100 ? 10 : $status]."]\n"; + } + if ($defaultlanguage eq "F") { + print " Banissement: ".($ban_date == 0 ? "non banni.\n" : "jusqu'au ".(POSIX::ctime($ban_date))); + print " Compteur: $count connexion".("s", "")[$count > 1 ? 0 : 1]."\n"; + print " Dernière connexion le: $last_login (ip: $last_ip)\n"; + print " Limite de validité: ".($validite == 0 ? "illimité.\n" : "jusqu'au ".(POSIX::ctime($validite))); + } else { + print " Banishment: ".($ban_date == 0 ? "not banished.\n" : "until ".(POSIX::ctime($ban_date))); + print " Count: $count connection".("s", "")[$count > 1 ? 0 : 1]."\n"; + print " Last connection at: $last_login (ip: $last_ip)\n"; + print " Validity limit: ".($validite == 0 ? "unlimited.\n" : "until ".(POSIX::ctime($validite))); + } + print " Memo: '$memo'\n"; + } + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Check the validity of a password +# (Note: never send back a password with login-server!! security of passwords) +sub checkaccount() { + my($userid, $passwd) = @_; + if ($userid eq "") { + if ($defaultlanguage eq "F") { + print "Entrez un nom de compte svp.\n"; + print "<exemple> check testname motdepasse\n"; + } else { + print "Please input an account name.\n"; + print "<example> check testname password\n"; + } + return 136; + } + if (verify_accountname($userid) == 0) { + return 102; + } + if ($passwd eq "") { + return 134 if (($passwd = typepasswd()) eq ""); + } + if (verify_password($passwd) == 0) { + return 131; + } + print $so pack("va24a24", 0x793a, $userid,$passwd); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x793b) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 132; + } + $buf = readso(28); + my($id2, $name) = unpack("Va24", $buf); + while (length($name) > 0 && substr($name, length($name)-1, 1) eq chr(0)) { + chop($name); + }; + if ($id2 == -1 || $id2 == 4294967295) { + if ($defaultlanguage eq "F") { + print "Le compte [$userid] n'existe pas ou le mot de passe est incorrect.\n"; + } else { + print "The account [$userid] doesn't exist or the password is incorrect.\n"; + } + return 133; + } else { + if ($defaultlanguage eq "F") { + print "Le mot de passe donné correspond bien au compte [$name][id: $id2].\n"; + } else { + print "The proposed password is correct for the account [$name][id: $id2].\n"; + } + } + return 130; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Request to login-server to reload GM configuration file +sub reloadGM() { + print $so pack("v", 0x7955); + $so->flush(); + if ($defaultlanguage eq "F") { + print "Demande de recharger le fichier de configuration des GM envoyée.\n"; + print "Vérifiez les comptes GM actuels (après rechargement):\n"; + } else { + print "Request to reload the GM configuration file sended.\n"; + print "Check the actual GM accounts (after reloading):\n"; + } + &listaccount(0, 0, 1); # 1: to list only GM + return 180; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Send a broadcast message +sub sendbroadcast() { + my($type, $message) = @_; + if ($message eq "" || length($message) == 0) { + if ($defaultlanguage eq "F") { + print "Entrez un message svp.\n"; + if ($type == 0) { + print "<exemple> kami un message\n"; + } else { + print "<exemple> kamib un message\n"; + } + } else { + print "Please input a message.\n"; + if ($type == 0) { + print "<example> kami a message\n"; + } else { + print "<example> kamib a message\n"; + } + } + return 136; + } + + print $so pack("vvVa".length($message), 0x794e, $type, length($message), $message); + $so->flush(); + $buf = readso(2); + if (unpack("v", $buf) != 0x794f) { + if ($defaultlanguage eq "F") { + print "Problème de connexion au serveur (réponse incorrecte).\n"; + } else { + print "Connection error to the server (incorrect answer).\n"; + } + return 152; + } + $buf = readso(2); + my($answer) = unpack("v", $buf); + if ($answer == -1 || $answer == 65535) { + if ($defaultlanguage eq "F") { + print "Echec de l'envoi du message. Aucun server de char en ligne.\n"; + } else { + print "Message sending failed. No online char-server.\n"; + } + } else { + if ($defaultlanguage eq "F") { + print "Message transmis au server de logins avec succès.\n"; + } else { + print "Message successfully sended to login-server.\n"; + } + } +} + +#-------------------------------------------------------------------------- + +# Sub-function: Change language of displaying +sub changelanguage() { + my($language) = @_; + if ($language eq "" || length($language) == 0) { + if ($defaultlanguage == 'F') { + printf("Entrez une langue svp.\n"); + printf("<exemple> language english\n"); + printf(" language français\n"); + } else { + printf("Please input a language.\n"); + printf("<example> language english\n"); + printf(" language français\n"); + } + return 136; + } + + $language = uc(substr($language, 0, 1)); + if ($language =~ /^[EF]$/) { + $defaultlanguage = $language; + if ($defaultlanguage == 'F') { + printf("Changement de la langue d'affichage en Français.\n"); + } else { + printf("Displaying language changed to English.\n"); + } + } else { + if ($defaultlanguage == 'F') { + printf("Langue non paramétrée (langues possibles: 'Français' ou 'English').\n"); + } else { + printf("Undefined language (possible languages: Français or English).\n"); + } + } + + return 0; +} + +#-------------------------------------------------------------------------- + +# Sub-function: sending 'end of connection' packet +sub quit() { + print $so pack("v", 0x7532); + $so->flush(); +} + +#-------------------------------------------------------------------------- + +# Sub-function: Get datas from the socket +sub readso() { + my($len) = shift; + my($buf); + if (read($so, $buf, $len) < $len) { + if ($defaultlanguage eq "F") { + print "Erreur de lecture sur la Socket.\n"; + } else { + print "Socket read error.\n"; + } + exit(3); + } + return $buf; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Input of a password +sub typepasswd { + my($passwd1, $passwd2); + cbreak(); + if ($defaultlanguage eq "F") { + print "Entrez le mot de passe > "; $passwd1 = <STDIN>; chomp($passwd1); print "\n"; + print "Ré-entrez le mot de passe > "; $passwd2 = <STDIN>; chomp($passwd2); print "\n"; + } else { + print "Type the password > "; $passwd1 = <STDIN>; chomp($passwd1); print "\n"; + print "Verify the password > "; $passwd2 = <STDIN>; chomp($passwd2); print "\n"; + } + cooked(); + if ($passwd1 ne $passwd2) { + if ($defaultlanguage eq "F") { + print "Erreur de vérification du mot de passe: Saisissez le même mot de passe svp.\n"; + } else { + print "Password verification failed. Please input same password.\n"; + } + return ""; + } + return $passwd1; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Return ordonal text of a number +sub makeordinal { + my($c) = shift; + if ($defaultlanguage eq "F") { + if ($c < 1) { + return $c; + } + return $c.("er", "ème")[$c == 1 ? 0 : 1]; + } else { + if ($c % 10 < 4 && $c % 10 != 0 && ($c < 10 || $c > 20)) { + return $c.("st","nd","rd")[$c % 10 - 1]; + } + return $c."th"; + } +} + +#-------------------------------------------------------------------------- + +# Sub-function: Test of the validity of an account name (return 0 if incorrect, and 1 if ok) +sub verify_accountname { + my($account_name) = @_; # Get the account_name + if ($account_name =~ /[\x00-\x1f]/) { # remove control char + my($c) = length($`) + 1; + if ($defaultlanguage eq "F") { + print "Caractère interdit trouvé dans le nom du compte (".makeordinal($c)." caractère).\n"; + } else { + print "Illegal character found in the account name (".makeordinal($c)." character).\n"; + } + return 0; + } + if (length($account_name) < 4) { + if ($defaultlanguage eq "F") { + print "Nom du compte trop court. Entrez un nom de compte de 4-23 caractères.\n"; + } else { + print "Account name is too short. Please input an account name of 4-23 bytes.\n"; + } + return 0; + } + if (length($account_name) > 23) { + if ($defaultlanguage eq "F") { + print "Nom du compte trop long. Entrez un nom de compte de 4-23 caractères.\n"; + } else { + print "Account name is too long. Please input an account name of 4-23 bytes.\n"; + } + return 0; + } + return 1; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Test of the validity of password (return 0 if incorrect, and 1 if ok) +sub verify_password { + my($password) = @_; # Get the password + if ($password =~ /[\x00-\x1f]/) { + my($c) = length($`) + 1; + if ($defaultlanguage eq "F") { + print "Caractère interdit trouvé dans le mot de passe (".makeordinal($c)." caractère).\n"; + } else { + print "Illegal character found in the password (".makeordinal($c)." character).\n"; + } + return 0; + } + if (length($password) < 4) { + if ($defaultlanguage eq "F") { + print "Mot de passe trop court. Entrez un mot de passe de 4-23 caractères.\n"; + } else { + print "Password is too short. Please input a password of 4-23 bytes.\n"; + } + return 0; + } + if (length($password) > 23) { + if ($defaultlanguage eq "F") { + print "Mot de passe trop long. Entrez un mot de passe de 4-23 caractères.\n"; + } else { + print "Password is too long. Please input a password of 4-23 bytes.\n"; + } + return 0; + } + return 1; +} + +#-------------------------------------------------------------------------- + +# Sub-function: Test of the validity of an e-mail (return 0 if incorrect, and 1 if ok) +sub verify_email { + my($email) = @_; # Get the e-mail + # To ignore a '.' before the @ (wanadoo, a provider, do that) + $email =~ s/\.\@/\@/; + # If the e-mail is void, it's not correct -> return 0 + if ($email eq '') { + return(0); + } + # If the e-mail have no "@", it's not correct -> return 0 + if ($email !~ /\@/) { + return(0); + } + # If the e-mail have a ",", a space, a tab or a ";", it's not correct -> return 0 + if ($email =~ /[\,|\s|\;]/) { + return(0) + }; + # IF + # (the e-mail contains 2 "@", or ".." or "@." or starts or finishes by a ".") + # OR IF + # (the e-mail doesn't contain "@localhost" AND + # - it doesn't contain characters followed by "@" itself followed by letters itself followed by "." and 2 or more letters + # - or an IP address) + # -> so, it's not good ! (finish !) + if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/ || + ($email !~ /^.+\@localhost$/ && + $email !~ /^.+\@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) { + return(0); # non-valid email + } else { + # If not, the e-email address is correct + return(1); # valid email + } }
\ No newline at end of file diff --git a/src/txt-converter/char/GNUmakefile b/src/txt-converter/char/GNUmakefile index b88df26..56723ca 100644 --- a/src/txt-converter/char/GNUmakefile +++ b/src/txt-converter/char/GNUmakefile @@ -1,13 +1,13 @@ -all: char-converter
-sql: char-converter
-
-COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o
-
-char-converter: char-converter.o strlib.o $(COMMON_OBJ)
- $(CC) -o ../../../$@ $^ $(LIB_S)
-
-char-converter.o: char-converter.c char.h strlib.h
-strlib.o: strlib.c strlib.h
-clean:
- rm -f *.o ../../../char-converter
-
+all: char-converter +sql: char-converter + +COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o + +char-converter: char-converter.o strlib.o $(COMMON_OBJ) + $(CC) -o ../../../$@ $^ $(LIB_S) + +char-converter.o: char-converter.c char.h strlib.h +strlib.o: strlib.c strlib.h +clean: + rm -f *.o ../../../char-converter + diff --git a/src/txt-converter/char/Makefile b/src/txt-converter/char/Makefile index b88df26..56723ca 100644 --- a/src/txt-converter/char/Makefile +++ b/src/txt-converter/char/Makefile @@ -1,13 +1,13 @@ -all: char-converter
-sql: char-converter
-
-COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o
-
-char-converter: char-converter.o strlib.o $(COMMON_OBJ)
- $(CC) -o ../../../$@ $^ $(LIB_S)
-
-char-converter.o: char-converter.c char.h strlib.h
-strlib.o: strlib.c strlib.h
-clean:
- rm -f *.o ../../../char-converter
-
+all: char-converter +sql: char-converter + +COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o + +char-converter: char-converter.o strlib.o $(COMMON_OBJ) + $(CC) -o ../../../$@ $^ $(LIB_S) + +char-converter.o: char-converter.c char.h strlib.h +strlib.o: strlib.c strlib.h +clean: + rm -f *.o ../../../char-converter + diff --git a/src/txt-converter/login/GNUmakefile b/src/txt-converter/login/GNUmakefile index 965a0e0..9f34e14 100644 --- a/src/txt-converter/login/GNUmakefile +++ b/src/txt-converter/login/GNUmakefile @@ -1,11 +1,11 @@ -all: login-converter
-sql: login-converter
-
-COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o
-COMMON_H = ../../common/core.h ../../common/socket.h ../../common/timer.h ../../common/mmo.h ../../common/version.h ../../common/db.h ../../common/malloc.h
-
-login-converter: login-converter.o ../../login_sql/md5calc.o ../../login_sql/strlib.o $(COMMON_OBJ)
- $(CC) -o ../../../$@ $^ $(LIB_S)
-login-converter.o: login-converter.c ../../login_sql/login.h ../../login_sql/md5calc.h ../../login_sql/strlib.h $(COMMON_H)
-clean:
- rm -f *.o ../../../login-converter
+all: login-converter +sql: login-converter + +COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o +COMMON_H = ../../common/core.h ../../common/socket.h ../../common/timer.h ../../common/mmo.h ../../common/version.h ../../common/db.h ../../common/malloc.h + +login-converter: login-converter.o ../../login_sql/md5calc.o ../../login_sql/strlib.o $(COMMON_OBJ) + $(CC) -o ../../../$@ $^ $(LIB_S) +login-converter.o: login-converter.c ../../login_sql/login.h ../../login_sql/md5calc.h ../../login_sql/strlib.h $(COMMON_H) +clean: + rm -f *.o ../../../login-converter diff --git a/src/txt-converter/login/Makefile b/src/txt-converter/login/Makefile index 965a0e0..9f34e14 100644 --- a/src/txt-converter/login/Makefile +++ b/src/txt-converter/login/Makefile @@ -1,11 +1,11 @@ -all: login-converter
-sql: login-converter
-
-COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o
-COMMON_H = ../../common/core.h ../../common/socket.h ../../common/timer.h ../../common/mmo.h ../../common/version.h ../../common/db.h ../../common/malloc.h
-
-login-converter: login-converter.o ../../login_sql/md5calc.o ../../login_sql/strlib.o $(COMMON_OBJ)
- $(CC) -o ../../../$@ $^ $(LIB_S)
-login-converter.o: login-converter.c ../../login_sql/login.h ../../login_sql/md5calc.h ../../login_sql/strlib.h $(COMMON_H)
-clean:
- rm -f *.o ../../../login-converter
+all: login-converter +sql: login-converter + +COMMON_OBJ = ../../common/core.o ../../common/socket.o ../../common/timer.o ../../common/db.o ../../common/malloc.o +COMMON_H = ../../common/core.h ../../common/socket.h ../../common/timer.h ../../common/mmo.h ../../common/version.h ../../common/db.h ../../common/malloc.h + +login-converter: login-converter.o ../../login_sql/md5calc.o ../../login_sql/strlib.o $(COMMON_OBJ) + $(CC) -o ../../../$@ $^ $(LIB_S) +login-converter.o: login-converter.c ../../login_sql/login.h ../../login_sql/md5calc.h ../../login_sql/strlib.h $(COMMON_H) +clean: + rm -f *.o ../../../login-converter diff --git a/src/webserver/Makefile b/src/webserver/Makefile index f664a7d..065c1ff 100644 --- a/src/webserver/Makefile +++ b/src/webserver/Makefile @@ -1,26 +1,26 @@ -cc = gcc
-
-all:
- #Generate framework...
- $(cc) -c parse.c
- $(cc) -c generate.c
- $(cc) -c htmlstyle.c
- $(cc) -c logs.c
-
- #Generate "pages"...
- cd pages && $(cc) -c about.c && cd ..
- cd pages && $(cc) -c sample.c && cd ..
- cd pages && $(cc) -c notdone.c && cd ..
-
- #Building the server...
- $(cc) -o webserver main.c parse.o generate.o htmlstyle.o \
- logs.o pages/about.o pages/sample.o pages/notdone.o
-
-
-
-
-clean:
- rm -f *.o
- rm -f pages/*.o
- rm -f webserver
-
+cc = gcc + +all: + #Generate framework... + $(cc) -c parse.c + $(cc) -c generate.c + $(cc) -c htmlstyle.c + $(cc) -c logs.c + + #Generate "pages"... + cd pages && $(cc) -c about.c && cd .. + cd pages && $(cc) -c sample.c && cd .. + cd pages && $(cc) -c notdone.c && cd .. + + #Building the server... + $(cc) -o webserver main.c parse.o generate.o htmlstyle.o \ + logs.o pages/about.o pages/sample.o pages/notdone.o + + + + +clean: + rm -f *.o + rm -f pages/*.o + rm -f webserver + diff --git a/src/webserver/doc/README b/src/webserver/doc/README index edcabf1..0e94ff2 100644 --- a/src/webserver/doc/README +++ b/src/webserver/doc/README @@ -1,11 +1,11 @@ -This readme is intended for the programmers of eAthena.
-
-This webserver's apis are in API.txt.
-
-To make this simple, generate.c should handle most of the work this sever does
-in terms of what people see.
-
-When a request is made the server shoots it off to generate.c.
-
-You are welcome to create more functions used by generate.c to generate pages
-though, so don't feel limited by that one file.
+This readme is intended for the programmers of eAthena. + +This webserver's apis are in API.txt. + +To make this simple, generate.c should handle most of the work this sever does +in terms of what people see. + +When a request is made the server shoots it off to generate.c. + +You are welcome to create more functions used by generate.c to generate pages +though, so don't feel limited by that one file. |