From 195dffc20af1fb32c7e4119988911b72955aeabc Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@54d463be-8e91-2dee-dedb-b68131a5f0ec> Date: Thu, 4 Nov 2004 23:25:09 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@2 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/mob.c | 4269 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4269 insertions(+) create mode 100644 src/map/mob.c (limited to 'src/map/mob.c') diff --git a/src/map/mob.c b/src/map/mob.c new file mode 100644 index 000000000..46e367371 --- /dev/null +++ b/src/map/mob.c @@ -0,0 +1,4269 @@ +// $Id: mob.c,v 1.7 2004/09/25 05:32:18 MouseJstr Exp $ +#include +#include +#include +#include + +#include "timer.h" +#include "socket.h" +#include "db.h" +#include "nullpo.h" +#include "malloc.h" +#include "map.h" +#include "clif.h" +#include "intif.h" +#include "pc.h" +#include "mob.h" +#include "guild.h" +#include "itemdb.h" +#include "skill.h" +#include "battle.h" +#include "party.h" +#include "npc.h" +#include "log.h" + +#ifdef MEMWATCH +#include "memwatch.h" +#endif + +#define MIN_MOBTHINKTIME 100 + +#define MOB_LAZYMOVEPERC 50 // Move probability in the negligent mode MOB (rate of 1000 minute) +#define MOB_LAZYWARPPERC 20 // Warp probability in the negligent mode MOB (rate of 1000 minute) + +struct mob_db mob_db[2001]; + +/*========================================== + * Local prototype declaration (only required thing) + *------------------------------------------ + */ +static int distance(int,int,int,int); +static int mob_makedummymobdb(int); +static int mob_timer(int,unsigned int,int,int); +int mobskill_use(struct mob_data *md,unsigned int tick,int event); +int mobskill_deltimer(struct mob_data *md ); +int mob_skillid2skillidx(int class,int skillid); +int mobskill_use_id(struct mob_data *md,struct block_list *target,int skill_idx); +static int mob_unlocktarget(struct mob_data *md,int tick); + +/*========================================== + * Mob is searched with a name. + *------------------------------------------ + */ +int mobdb_searchname(const char *str) +{ + int i; + + for(i = 0; i < sizeof(mob_db) / sizeof(mob_db[0]); i++) { + if (strcmpi(mob_db[i].name, str) == 0 || strcmp(mob_db[i].jname, str) == 0 || + memcmp(mob_db[i].name, str, 24) == 0 || memcmp(mob_db[i].jname, str, 24) == 0) + return i; + } + + return 0; +} + +/*========================================== + * Id Mob is checked. + *------------------------------------------ + */ +int mobdb_checkid(const int id) +{ + if (id <= 0 || id >= (sizeof(mob_db) / sizeof(mob_db[0])) || mob_db[id].name[0] == '\0') + return 0; + + return id; +} + +/*========================================== + * The minimum data set for MOB spawning + *------------------------------------------ + */ +int mob_spawn_dataset(struct mob_data *md,const char *mobname,int class) +{ + nullpo_retr(0, md); + + md->bl.prev=NULL; + md->bl.next=NULL; + if(strcmp(mobname,"--en--")==0) + memcpy(md->name,mob_db[class].name,24); + else if(strcmp(mobname,"--ja--")==0) + memcpy(md->name,mob_db[class].jname,24); + else + memcpy(md->name,mobname,24); + + md->n = 0; + md->base_class = md->class = class; + md->bl.id= npc_get_new_npc_id(); + + memset(&md->state,0,sizeof(md->state)); + md->timer = -1; + md->target_id=0; + md->attacked_id=0; + md->speed=mob_db[class].speed; + + return 0; +} + + +/*========================================== + * The MOB appearance for one time (for scripts) + *------------------------------------------ + */ +int mob_once_spawn(struct map_session_data *sd,char *mapname, + int x,int y,const char *mobname,int class,int amount,const char *event) +{ + struct mob_data *md=NULL; + int m,count,lv=255,r=class; + + if( sd ) + lv=sd->status.base_level; + + if( sd && strcmp(mapname,"this")==0) + m=sd->bl.m; + else + m=map_mapname2mapid(mapname); + + if(m<0 || amount<=0 || (class>=0 && class<=1000) || class>2000) // 値が異常なら召喚を止める + return 0; + + if(class<0){ // ランダムに召喚 + int i=0; + int j=-class-1; + int k; + if(j>=0 && j=2000){ + class=mob_db[0].summonper[j]; + } + }else{ + return 0; + } +// if(battle_config.etc_log==1) +// printf("mobclass=%d try=%d\n",class,i); + } + if(sd){ + if(x<=0) x=sd->bl.x; + if(y<=0) y=sd->bl.y; + }else if(x<=0 || y<=0){ + printf("mob_once_spawn: ??\n"); + } + + for(count=0;countlootitem=(struct item *)aCalloc(LOOTITEM_SIZE,sizeof(struct item)); + else + md->lootitem=NULL; + + mob_spawn_dataset(md,mobname,class); + md->bl.m=m; + md->bl.x=x; + md->bl.y=y; + if(r<0&&battle_config.dead_branch_active==1) md->mode=0x1+0x4+0x80; //移動してアクティブで反撃する + md->m =m; + md->x0=x; + md->y0=y; + md->xs=0; + md->ys=0; + md->spawndelay1=-1; // Only once is a flag. + md->spawndelay2=-1; // Only once is a flag. + + memcpy(md->npc_event,event,sizeof(md->npc_event)); + + md->bl.type=BL_MOB; + map_addiddb(&md->bl); + mob_spawn(md->bl.id); + + if(class==1288) { // emperium hp based on defense level [Valaris] + struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name); + if(gc) { + mob_db[class].max_hp+=2000*gc->defense; + md->hp=mob_db[class].max_hp; + } + } // end addition [Valaris] + + + } + return (amount>0)?md->bl.id:0; +} +/*========================================== + * The MOB appearance for one time (& area specification for scripts) + *------------------------------------------ + */ +int mob_once_spawn_area(struct map_session_data *sd,char *mapname, + int x0,int y0,int x1,int y1, + const char *mobname,int class,int amount,const char *event) +{ + int x,y,i,c,max,lx=-1,ly=-1,id=0; + int m; + + if(strcmp(mapname,"this")==0) + m=sd->bl.m; + else + m=map_mapname2mapid(mapname); + + max=(y1-y0+1)*(x1-x0+1)*3; + if(max>1000)max=1000; + + if(m<0 || amount<=0 || (class>=0 && class<=1000) || class>2000) // A summon is stopped if a value is unusual + return 0; + + for(i=0;i=max){ + if(lx>=0){ // Since reference went wrong, the place which boiled before is used. + x=lx; + y=ly; + }else + return 0; // Since reference of the place which boils first went wrong, it stops. + } + id=mob_once_spawn(sd,mapname,x,y,mobname,class,1,event); + lx=x; + ly=y; + } + return id; +} + +/*========================================== + * Summoning Guardians [Valaris] + *------------------------------------------ + */ +int mob_spawn_guardian(struct map_session_data *sd,char *mapname, + int x,int y,const char *mobname,int class,int amount,const char *event,int guardian) +{ + struct mob_data *md=NULL; + int m,count=1,lv=255; + + if( sd ) + lv=sd->status.base_level; + + if( sd && strcmp(mapname,"this")==0) + m=sd->bl.m; + else + m=map_mapname2mapid(mapname); + + if(m<0 || amount<=0 || (class>=0 && class<=1000) || class>2000) // 値が異常なら召喚を止める + return 0; + + if(class<0) + return 0; + + if(sd){ + if(x<=0) x=sd->bl.x; + if(y<=0) y=sd->bl.y; + } + + else if(x<=0 || y<=0) + printf("mob_spawn_guardian: ??\n"); + + + for(count=0;countbl.m=m; + md->bl.x=x; + md->bl.y=y; + md->m =m; + md->x0=x; + md->y0=y; + md->xs=0; + md->ys=0; + md->spawndelay1=-1; // Only once is a flag. + md->spawndelay2=-1; // Only once is a flag. + + memcpy(md->npc_event,event,sizeof(md->npc_event)); + + md->bl.type=BL_MOB; + map_addiddb(&md->bl); + mob_spawn(md->bl.id); + + gc=guild_mapname2gc(map[md->bl.m].name); + if(gc) { + mob_db[class].max_hp+=2000*gc->defense; + if(guardian==0) { md->hp=gc->Ghp0; gc->GID0=md->bl.id; } + if(guardian==1) { md->hp=gc->Ghp1; gc->GID1=md->bl.id; } + if(guardian==2) { md->hp=gc->Ghp2; gc->GID2=md->bl.id; } + if(guardian==3) { md->hp=gc->Ghp3; gc->GID3=md->bl.id; } + if(guardian==4) { md->hp=gc->Ghp4; gc->GID4=md->bl.id; } + if(guardian==5) { md->hp=gc->Ghp5; gc->GID5=md->bl.id; } + if(guardian==6) { md->hp=gc->Ghp6; gc->GID6=md->bl.id; } + if(guardian==7) { md->hp=gc->Ghp7; gc->GID7=md->bl.id; } + + } + } + + return (amount>0)?md->bl.id:0; +} + +/*========================================== + * The disregard ID is added to mob. + *------------------------------------------ + */ +int mob_exclusion_add(struct mob_data *md,int type,int id) +{ + nullpo_retr(0, md); + + if(type==1) + md->exclusion_src=id; + if(type==2) + md->exclusion_party=id; + if(type==3) + md->exclusion_guild=id; + + return 0; +} + +/*========================================== + * The disregard ID of mob is checked. (TAGE?) + *------------------------------------------ + */ +int mob_exclusion_check(struct mob_data *md,struct map_session_data *sd) +{ + nullpo_retr(0, sd); + nullpo_retr(0, md); + + if(sd->bl.type==BL_PC){ + if(md->exclusion_src && md->exclusion_src==sd->bl.id) + return 1; + if(md->exclusion_party && md->exclusion_party==sd->status.party_id) + return 2; + if(md->exclusion_guild && md->exclusion_guild==sd->status.guild_id) + return 3; + } + return 0; +} + +/*========================================== + * Appearance income of mob + *------------------------------------------ + */ +int mob_get_viewclass(int class) +{ + return mob_db[class].view_class; +} +int mob_get_sex(int class) +{ + return mob_db[class].sex; +} +short mob_get_hair(int class) +{ + return mob_db[class].hair; +} +short mob_get_hair_color(int class) +{ + return mob_db[class].hair_color; +} +short mob_get_weapon(int class) +{ + return mob_db[class].weapon; +} +short mob_get_shield(int class) +{ + return mob_db[class].shield; +} +short mob_get_head_top(int class) +{ + return mob_db[class].head_top; +} +short mob_get_head_mid(int class) +{ + return mob_db[class].head_mid; +} +short mob_get_head_buttom(int class) +{ + return mob_db[class].head_buttom; +} +short mob_get_clothes_color(int class) // Add for player monster dye - Valaris +{ + return mob_db[class].clothes_color; // End +} +int mob_get_equip(int class) // mob equip [Valaris] +{ + return mob_db[class].equip; +} +/*========================================== + * Is MOB in the state in which the present movement is possible or not? + *------------------------------------------ + */ +int mob_can_move(struct mob_data *md) +{ + nullpo_retr(0, md); + + if(md->canmove_tick > gettick() || (md->opt1 > 0 && md->opt1 != 6) || md->option&2) + return 0; + // アンクル中で動けないとか + if( md->sc_data[SC_ANKLE].timer != -1 || //アンクルスネア + md->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター + md->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り + md->sc_data[SC_SPIDERWEB].timer != -1 //スパイダーウェッブ + ) + return 0; + + return 1; +} + +/*========================================== + * Time calculation concerning one step next to mob + *------------------------------------------ + */ +static int calc_next_walk_step(struct mob_data *md) +{ + nullpo_retr(0, md); + + if(md->walkpath.path_pos>=md->walkpath.path_len) + return -1; + if(md->walkpath.path[md->walkpath.path_pos]&1) + return battle_get_speed(&md->bl)*14/10; + return battle_get_speed(&md->bl); +} + +static int mob_walktoxy_sub(struct mob_data *md); + +/*========================================== + * Mob Walk processing + *------------------------------------------ + */ +static int mob_walk(struct mob_data *md,unsigned int tick,int data) +{ + int moveblock; + int i,ctype; + static int dirx[8]={0,-1,-1,-1,0,1,1,1}; + static int diry[8]={1,1,0,-1,-1,-1,0,1}; + int x,y,dx,dy; + + nullpo_retr(0, md); + + md->state.state=MS_IDLE; + if(md->walkpath.path_pos>=md->walkpath.path_len || md->walkpath.path_pos!=data) + return 0; + + md->walkpath.path_half ^= 1; + if(md->walkpath.path_half==0){ + md->walkpath.path_pos++; + if(md->state.change_walk_target){ + mob_walktoxy_sub(md); + return 0; + } + } + else { + if(md->walkpath.path[md->walkpath.path_pos]>=8) + return 1; + + x = md->bl.x; + y = md->bl.y; + ctype = map_getcell(md->bl.m,x,y); + if(ctype == 1 || ctype == 5) { + mob_stop_walking(md,1); + return 0; + } + md->dir=md->walkpath.path[md->walkpath.path_pos]; + dx = dirx[md->dir]; + dy = diry[md->dir]; + + ctype = map_getcell(md->bl.m,x+dx,y+dy); + if(ctype == 1 || ctype == 5) { + mob_walktoxy_sub(md); + return 0; + } + + moveblock = ( x/BLOCK_SIZE != (x+dx)/BLOCK_SIZE || y/BLOCK_SIZE != (y+dy)/BLOCK_SIZE); + + md->state.state=MS_WALK; + map_foreachinmovearea(clif_moboutsight,md->bl.m,x-AREA_SIZE,y-AREA_SIZE,x+AREA_SIZE,y+AREA_SIZE,dx,dy,BL_PC,md); + + x += dx; + y += dy; + if(md->min_chase>13) + md->min_chase--; + + if(moveblock) map_delblock(&md->bl); + md->bl.x = x; + md->bl.y = y; + if(moveblock) map_addblock(&md->bl); + + map_foreachinmovearea(clif_mobinsight,md->bl.m,x-AREA_SIZE,y-AREA_SIZE,x+AREA_SIZE,y+AREA_SIZE,-dx,-dy,BL_PC,md); + md->state.state=MS_IDLE; + + if(md->option&4) + skill_check_cloaking(&md->bl); + + skill_unit_move(&md->bl,tick,1); // Inspection of a skill unit + } + if((i=calc_next_walk_step(md))>0){ + i = i>>1; + if(i < 1 && md->walkpath.path_half == 0) + i = 1; + md->timer=add_timer(tick+i,mob_timer,md->bl.id,md->walkpath.path_pos); + md->state.state=MS_WALK; + + if(md->walkpath.path_pos>=md->walkpath.path_len) + clif_fixmobpos(md); // When mob stops, retransmission current of a position. + } + return 0; +} + +/*========================================== + * Attack processing of mob + *------------------------------------------ + */ +static int mob_attack(struct mob_data *md,unsigned int tick,int data) +{ + struct block_list *tbl=NULL; + struct map_session_data *tsd=NULL; + struct mob_data *tmd=NULL; + + int mode,race,range; + + nullpo_retr(0, md); + + md->min_chase=13; + md->state.state=MS_IDLE; + md->state.skillstate=MSS_IDLE; + + if( md->skilltimer!=-1 ) // スキル使用中 + return 0; + + if(md->opt1>0 || md->option&2) + return 0; + + if(md->sc_data[SC_AUTOCOUNTER].timer != -1) + return 0; + + if(md->sc_data[SC_BLADESTOP].timer != -1) + return 0; + + if((tbl=map_id2bl(md->target_id))==NULL){ + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + return 0; + } + + if(tbl->type==BL_PC) + tsd=(struct map_session_data *)tbl; + else if(tbl->type==BL_MOB) + tmd=(struct mob_data *)tbl; + else + return 0; + + if(tsd){ + if( pc_isdead(tsd) || tsd->invincible_timer != -1 || pc_isinvisible(tsd) || md->bl.m != tbl->m || tbl->prev == NULL || distance(md->bl.x,md->bl.y,tbl->x,tbl->y)>=13 ){ + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + return 0; + } + } + if(tmd){ + if(md->bl.m != tbl->m || tbl->prev == NULL || distance(md->bl.x,md->bl.y,tbl->x,tbl->y)>=13){ + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + return 0; + } + } + + + if(!md->mode) + mode=mob_db[md->class].mode; + else + mode=md->mode; + + race=mob_db[md->class].race; + if(!(mode&0x80)){ + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + return 0; + } + if(tsd && !(mode&0x20) && (tsd->sc_data[SC_TRICKDEAD].timer != -1 || + ((pc_ishiding(tsd) || tsd->state.gangsterparadise) && race!=4 && race!=6) ) ) { + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + return 0; + } + + range = mob_db[md->class].range; + if(mode&1) + range++; + if(distance(md->bl.x,md->bl.y,tbl->x,tbl->y) > range) + return 0; + if(battle_config.monster_attack_direction_change) + md->dir=map_calc_dir(&md->bl, tbl->x,tbl->y ); // 向き設定 + + //clif_fixmobpos(md); + + md->state.skillstate=MSS_ATTACK; + if( mobskill_use(md,tick,-2) ) // スキル使用 + return 0; + + md->target_lv = battle_weapon_attack(&md->bl,tbl,tick,0); + + if(!(battle_config.monster_cloak_check_type&2) && md->sc_data[SC_CLOAKING].timer != -1) + skill_status_change_end(&md->bl,SC_CLOAKING,-1); + + md->attackabletime = tick + battle_get_adelay(&md->bl); + + md->timer=add_timer(md->attackabletime,mob_timer,md->bl.id,0); + md->state.state=MS_ATTACK; + + return 0; +} + + +/*========================================== + * The attack of PC which is attacking id is stopped. + * The callback function of clif_foreachclient + *------------------------------------------ + */ +int mob_stopattacked(struct map_session_data *sd,va_list ap) +{ + int id; + + nullpo_retr(0, sd); + nullpo_retr(0, ap); + + id=va_arg(ap,int); + if(sd->attacktarget==id) + pc_stopattack(sd); + return 0; +} +/*========================================== + * The timer in which the mob's states changes + *------------------------------------------ + */ +int mob_changestate(struct mob_data *md,int state,int type) +{ + unsigned int tick; + int i; + + nullpo_retr(0, md); + + if(md->timer != -1) + delete_timer(md->timer,mob_timer); + md->timer=-1; + md->state.state=state; + + switch(state){ + case MS_WALK: + if((i=calc_next_walk_step(md))>0){ + i = i>>2; + md->timer=add_timer(gettick()+i,mob_timer,md->bl.id,0); + } + else + md->state.state=MS_IDLE; + break; + case MS_ATTACK: + tick = gettick(); + i=DIFF_TICK(md->attackabletime,tick); + if(i>0 && i<2000) + md->timer=add_timer(md->attackabletime,mob_timer,md->bl.id,0); + else if(type) { + md->attackabletime = tick + battle_get_amotion(&md->bl); + md->timer=add_timer(md->attackabletime,mob_timer,md->bl.id,0); + } + else { + md->attackabletime = tick + 1; + md->timer=add_timer(md->attackabletime,mob_timer,md->bl.id,0); + } + break; + case MS_DELAY: + md->timer=add_timer(gettick()+type,mob_timer,md->bl.id,0); + break; + case MS_DEAD: + skill_castcancel(&md->bl,0); +// mobskill_deltimer(md); + md->state.skillstate=MSS_DEAD; + md->last_deadtime=gettick(); + // Since it died, all aggressors' attack to this mob is stopped. + clif_foreachclient(mob_stopattacked,md->bl.id); + skill_unit_out_all(&md->bl,gettick(),1); + skill_status_change_clear(&md->bl,2); // The abnormalities in status are canceled. + skill_clear_unitgroup(&md->bl); // All skill unit groups are deleted. + skill_cleartimerskill(&md->bl); + if(md->deletetimer!=-1) + delete_timer(md->deletetimer,mob_timer_delete); + md->deletetimer=-1; + md->hp=md->target_id=md->attacked_id=0; + md->state.targettype = NONE_ATTACKABLE; + break; + } + + return 0; +} + +/*========================================== + * timer processing of mob (timer function) + * It branches to a walk and an attack. + *------------------------------------------ + */ +static int mob_timer(int tid,unsigned int tick,int id,int data) +{ + struct mob_data *md; + struct block_list *bl; + + if( (bl=map_id2bl(id)) == NULL ){ //攻撃してきた敵がもういないのは正常のようだ + return 1; + } + + if(!bl || !bl->type || bl->type!=BL_MOB) + return 1; + + nullpo_retr(1, md=(struct mob_data*)bl); + + if(!md->bl.type || md->bl.type!=BL_MOB) + return 1; + + if(md->timer != tid){ + if(battle_config.error_log==1) + printf("mob_timer %d != %d\n",md->timer,tid); + return 0; + } + md->timer=-1; + if(md->bl.prev == NULL || md->state.state == MS_DEAD) + return 1; + + map_freeblock_lock(); + switch(md->state.state){ + case MS_WALK: + mob_walk(md,tick,data); + break; + case MS_ATTACK: + mob_attack(md,tick,data); + break; + case MS_DELAY: + mob_changestate(md,MS_IDLE,0); + break; + default: + if(battle_config.error_log==1) + printf("mob_timer : %d ?\n",md->state.state); + break; + } + map_freeblock_unlock(); + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +static int mob_walktoxy_sub(struct mob_data *md) +{ + struct walkpath_data wpd; + + nullpo_retr(0, md); + + if(path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,md->to_x,md->to_y,md->state.walk_easy)) + return 1; + memcpy(&md->walkpath,&wpd,sizeof(wpd)); + + md->state.change_walk_target=0; + mob_changestate(md,MS_WALK,0); + clif_movemob(md); + + return 0; +} + +/*========================================== + * mob move start + *------------------------------------------ + */ +int mob_walktoxy(struct mob_data *md,int x,int y,int easy) +{ + struct walkpath_data wpd; + + nullpo_retr(0, md); + + if(md->state.state == MS_WALK && path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,x,y,easy) ) + return 1; + + md->state.walk_easy = easy; + md->to_x=x; + md->to_y=y; + if(md->state.state == MS_WALK) { + md->state.change_walk_target=1; + } else { + return mob_walktoxy_sub(md); + } + + return 0; +} + +/*========================================== + * mob spawn with delay (timer function) + *------------------------------------------ + */ +static int mob_delayspawn(int tid,unsigned int tick,int m,int n) +{ + mob_spawn(m); + return 0; +} + +/*========================================== + * spawn timing calculation + *------------------------------------------ + */ +int mob_setdelayspawn(int id) +{ + unsigned int spawntime,spawntime1,spawntime2,spawntime3; + struct mob_data *md; + struct block_list *bl; + + if((bl=map_id2bl(id)) == NULL) + return -1; + + if(!bl || !bl->type || bl->type!=BL_MOB) + return -1; + + nullpo_retr(-1, md=(struct mob_data*)bl); + + if(!md || md->bl.type!=BL_MOB) + return -1; + + // Processing of MOB which is not revitalized + if(md->spawndelay1==-1 && md->spawndelay2==-1 && md->n==0){ + map_deliddb(&md->bl); + if(md->lootitem) { + map_freeblock(md->lootitem); + md->lootitem=NULL; + } + map_freeblock(md); // Instead of [ of free ] + return 0; + } + + spawntime1=md->last_spawntime+md->spawndelay1; + spawntime2=md->last_deadtime+md->spawndelay2; + spawntime3=gettick()+5000; + // spawntime = max(spawntime1,spawntime2,spawntime3); + if(DIFF_TICK(spawntime1,spawntime2)>0){ + spawntime=spawntime1; + } else { + spawntime=spawntime2; + } + if(DIFF_TICK(spawntime3,spawntime)>0){ + spawntime=spawntime3; + } + + add_timer(spawntime,mob_delayspawn,id,0); + return 0; +} + +/*========================================== + * Mob spawning. Initialization is also variously here. + *------------------------------------------ + */ +int mob_spawn(int id) +{ + int x=0,y=0,i=0,c; + unsigned int tick = gettick(); + struct mob_data *md; + struct block_list *bl; + + nullpo_retr(-1, bl=map_id2bl(id)); + + if(!bl || !bl->type || bl->type!=BL_MOB) + return -1; + + nullpo_retr(-1, md=(struct mob_data*)bl); + + if(!md || !md->bl.type || md->bl.type!=BL_MOB) + return -1; + + md->last_spawntime=tick; + if( md->bl.prev!=NULL ){ +// clif_clearchar_area(&md->bl,3); + skill_unit_out_all(&md->bl,gettick(),1); + map_delblock(&md->bl); + } + else + md->class = md->base_class; + + md->bl.m =md->m; + do { + if(md->x0==0 && md->y0==0){ + x=rand()%(map[md->bl.m].xs-2)+1; + y=rand()%(map[md->bl.m].ys-2)+1; + } else { + x=md->x0+rand()%(md->xs+1)-md->xs/2; + y=md->y0+rand()%(md->ys+1)-md->ys/2; + } + i++; + } while(((c=map_getcell(md->bl.m,x,y))==1 || c==5) && i<50); + + if(i>=50){ +// if(battle_config.error_log==1) +// printf("MOB spawn error %d @ %s\n",id,map[md->bl.m].name); + add_timer(tick+5000,mob_delayspawn,id,0); + return 1; + } + + md->to_x=md->bl.x=x; + md->to_y=md->bl.y=y; + md->dir=0; + + map_addblock(&md->bl); + + memset(&md->state,0,sizeof(md->state)); + md->attacked_id = 0; + md->target_id = 0; + md->move_fail_count = 0; + + if(!md->speed) + md->speed = mob_db[md->class].speed; + md->def_ele = mob_db[md->class].element; + md->master_id=0; + md->master_dist=0; + + md->state.state = MS_IDLE; + md->state.skillstate = MSS_IDLE; + md->timer = -1; + md->last_thinktime = tick; + md->next_walktime = tick+rand()%50+5000; + md->attackabletime = tick; + md->canmove_tick = tick; + + md->sg_count=0; + md->deletetimer=-1; + + md->skilltimer=-1; + for(i=0,c=tick-1000*3600*10;iskilldelay[i] = c; + md->skillid=0; + md->skilllv=0; + + memset(md->dmglog,0,sizeof(md->dmglog)); + if(md->lootitem) + memset(md->lootitem,0,sizeof(md->lootitem)); + md->lootitem_count = 0; + + for(i=0;iskilltimerskill[i].timer = -1; + + for(i=0;isc_data[i].timer=-1; + md->sc_data[i].val1 = md->sc_data[i].val2 = md->sc_data[i].val3 = md->sc_data[i].val4 =0; + } + md->sc_count=0; + md->opt1=md->opt2=md->opt3=md->option=0; + + memset(md->skillunit,0,sizeof(md->skillunit)); + memset(md->skillunittick,0,sizeof(md->skillunittick)); + + md->hp = battle_get_max_hp(&md->bl); + if(md->hp<=0){ + mob_makedummymobdb(md->class); + md->hp = battle_get_max_hp(&md->bl); + } + + clif_spawnmob(md); + + return 0; +} + +/*========================================== + * Distance calculation between two points + *------------------------------------------ + */ +static int distance(int x0,int y0,int x1,int y1) +{ + int dx,dy; + + dx=abs(x0-x1); + dy=abs(y0-y1); + return dx>dy ? dx : dy; +} + +/*========================================== + * The stop of MOB's attack + *------------------------------------------ + */ +int mob_stopattack(struct mob_data *md) +{ + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + md->attacked_id=0; + return 0; +} +/*========================================== + * The stop of MOB's walking + *------------------------------------------ + */ +int mob_stop_walking(struct mob_data *md,int type) +{ + nullpo_retr(0, md); + + + if(md->state.state == MS_WALK || md->state.state == MS_IDLE) { + int dx=0,dy=0; + + md->walkpath.path_len=0; + if(type&4){ + dx=md->to_x-md->bl.x; + if(dx<0) + dx=-1; + else if(dx>0) + dx=1; + dy=md->to_y-md->bl.y; + if(dy<0) + dy=-1; + else if(dy>0) + dy=1; + } + md->to_x=md->bl.x+dx; + md->to_y=md->bl.y+dy; + if(dx!=0 || dy!=0){ + mob_walktoxy_sub(md); + return 0; + } + mob_changestate(md,MS_IDLE,0); + } + if(type&0x01) + clif_fixmobpos(md); + if(type&0x02) { + int delay=battle_get_dmotion(&md->bl); + unsigned int tick = gettick(); + if(md->canmove_tick < tick) + md->canmove_tick = tick + delay; + } + + return 0; +} + +/*========================================== + * Reachability to a Specification ID existence place + *------------------------------------------ + */ +int mob_can_reach(struct mob_data *md,struct block_list *bl,int range) +{ + int dx,dy; + struct walkpath_data wpd; + int i; + + nullpo_retr(0, md); + nullpo_retr(0, bl); + + dx=abs(bl->x - md->bl.x); + dy=abs(bl->y - md->bl.y); + + //=========== guildcastle guardian no search start=========== + //when players are the guild castle member not attack them ! + if(md->class == 1285 || md->class == 1286 || md->class == 1287){ + struct map_session_data *sd; + struct guild *g=NULL; + struct guild_castle *gc=guild_mapname2gc(map[bl->m].name); + + if(gc && agit_flag==0) // Guardians will not attack during non-woe time [Valaris] + return 0; // end addition [Valaris] + + if(bl && bl->type == BL_PC){ + if((sd=(struct map_session_data *)bl) == NULL){ + printf("mob_can_reach nullpo\n"); + return 0; + } + + if(gc && sd && sd->status.guild_id && sd->status.guild_id>0) { + g=guild_search(sd->status.guild_id); // don't attack guild members [Valaris] + if(g && g->guild_id > 0 && g->guild_id == gc->guild_id) + return 0; + if(g && gc && guild_isallied(g,gc)) + return 0; + + } + } + } + //========== guildcastle guardian no search eof============== + + if(bl && bl->type == BL_PC && battle_config.monsters_ignore_gm==1) { // option to have monsters ignore GMs [Valaris] + struct map_session_data *sd; + if((sd=(struct map_session_data *)bl) != NULL && pc_isGM(sd)) + return 0; + } + + if( md->bl.m != bl->m) // 違うャbプ + return 0; + + if( range>0 && range < ((dx>dy)?dx:dy) ) // 遠すぎる + return 0; + + if( md->bl.x==bl->x && md->bl.y==bl->y ) // 同じャX + return 1; + + // Obstacle judging + wpd.path_len=0; + wpd.path_pos=0; + wpd.path_half=0; + if(path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x,bl->y,0)!=-1) + return 1; + + if(bl->type!=BL_PC && bl->type!=BL_MOB) + return 0; + + // It judges whether it can adjoin or not. + dx=(dx>0)?1:((dx<0)?-1:0); + dy=(dy>0)?1:((dy<0)?-1:0); + if(path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x-dx,bl->y-dy,0)!=-1) + return 1; + for(i=0;i<9;i++){ + if(path_search(&wpd,md->bl.m,md->bl.x,md->bl.y,bl->x-1+i/3,bl->y-1+i%3,0)!=-1) + return 1; + } + return 0; +} + +/*========================================== + * Determination for an attack of a monster + *------------------------------------------ + */ +int mob_target(struct mob_data *md,struct block_list *bl,int dist) +{ + struct map_session_data *sd; + struct status_change *sc_data; + short *option; + int mode,race; + + nullpo_retr(0, md); + nullpo_retr(0, bl); + + sc_data = battle_get_sc_data(bl); + option = battle_get_option(bl); + race=mob_db[md->class].race; + + if(!md->mode){ + mode=mob_db[md->class].mode; + }else{ + mode=md->mode; + } + if(!(mode&0x80)) { + md->target_id = 0; + return 0; + } + // Nothing will be carried out if there is no mind of changing TAGE by TAGE ending. + if( (md->target_id > 0 && md->state.targettype == ATTACKABLE) && ( !(mode&0x04) || rand()%100>25) ) + return 0; + + if(mode&0x20 || // Coercion is exerted if it is MVPMOB. + (sc_data && sc_data[SC_TRICKDEAD].timer == -1 && + ( (option && !(*option&0x06) ) || race==4 || race==6) ) ){ + if(bl->type == BL_PC) { + nullpo_retr(0, sd = (struct map_session_data *)bl); + if(sd->invincible_timer != -1 || pc_isinvisible(sd)) + return 0; + if(!(mode&0x20) && race!=4 && race!=6 && sd->state.gangsterparadise) + return 0; + } + + md->target_id=bl->id; // Since there was no disturbance, it locks on to target. + if(bl->type == BL_PC || bl->type == BL_MOB) + md->state.targettype = ATTACKABLE; + else + md->state.targettype = NONE_ATTACKABLE; + md->min_chase=dist+13; + if(md->min_chase>26) + md->min_chase=26; + } + return 0; +} + +/*========================================== + * The ?? routine of an active monster + *------------------------------------------ + */ +static int mob_ai_sub_hard_activesearch(struct block_list *bl,va_list ap) +{ + struct map_session_data *tsd=NULL; + struct mob_data *smd,*tmd=NULL; + int mode,race,dist,*pcc; + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, smd=va_arg(ap,struct mob_data *)); + nullpo_retr(0, pcc=va_arg(ap,int *)); + + if(bl->type==BL_PC) + tsd=(struct map_session_data *)bl; + else if(bl->type==BL_MOB) + tmd=(struct mob_data *)bl; + else + return 0; + + //敵味方判定 + if(battle_check_target(&smd->bl,bl,BCT_ENEMY)==0) + return 0; + + if(!smd->mode) + mode=mob_db[smd->class].mode; + else + mode=smd->mode; + + // アクティブでターゲット射程内にいるなら、ロックする + if( mode&0x04 ){ + race=mob_db[smd->class].race; + //対象がPCの場合 + if(tsd && + !pc_isdead(tsd) && + tsd->bl.m == smd->bl.m && + tsd->invincible_timer == -1 && + !pc_isinvisible(tsd) && + (dist=distance(smd->bl.x,smd->bl.y,tsd->bl.x,tsd->bl.y))<9 + ) + { + if(mode&0x20 || + (tsd->sc_data[SC_TRICKDEAD].timer == -1 && + ((!pc_ishiding(tsd) && !tsd->state.gangsterparadise) || race==4 || race==6))){ // 妨害がないか判定 + if( mob_can_reach(smd,bl,12) && // 到達可能性判定 + rand()%1000<1000/(++(*pcc)) ){ // 範囲内PCで等確率にする + smd->target_id=tsd->bl.id; + smd->state.targettype = ATTACKABLE; + smd->min_chase=13; + } + } + } + //対象がMobの場合 + else if(tmd && + tmd->bl.m == smd->bl.m && + (dist=distance(smd->bl.x,smd->bl.y,tmd->bl.x,tmd->bl.y))<9 + ) + { + if( mob_can_reach(smd,bl,12) && // 到達可能性判定 + rand()%1000<1000/(++(*pcc)) ){ // 範囲内で等確率にする + smd->target_id=bl->id; + smd->state.targettype = ATTACKABLE; + smd->min_chase=13; + } + } + } + return 0; +} + +/*========================================== + * loot monster item search + *------------------------------------------ + */ +static int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap) +{ + struct mob_data* md; + int mode,dist,*itc; + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, md=va_arg(ap,struct mob_data *)); + nullpo_retr(0, itc=va_arg(ap,int *)); + + if(!md->mode){ + mode=mob_db[md->class].mode; + }else{ + mode=md->mode; + } + + if( !md->target_id && mode&0x02){ + if(!md->lootitem || (battle_config.monster_loot_type == 1 && md->lootitem_count >= LOOTITEM_SIZE) ) + return 0; + if(bl->m == md->bl.m && (dist=distance(md->bl.x,md->bl.y,bl->x,bl->y))<9){ + if( mob_can_reach(md,bl,12) && // Reachability judging + rand()%1000<1000/(++(*itc)) ){ // It is made a probability, such as within the limits PC. + md->target_id=bl->id; + md->state.targettype = NONE_ATTACKABLE; + md->min_chase=13; + } + } + } + return 0; +} + +/*========================================== + * The ?? routine of a link monster + *------------------------------------------ + */ +static int mob_ai_sub_hard_linksearch(struct block_list *bl,va_list ap) +{ + struct mob_data *tmd; + struct mob_data* md; + struct block_list *target; + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, tmd=(struct mob_data *)bl); + nullpo_retr(0, md=va_arg(ap,struct mob_data *)); + nullpo_retr(0, target=va_arg(ap,struct block_list *)); + + // same family free in a range at a link monster -- it will be made to lock if MOB is +/* if( (md->target_id > 0 && md->state.targettype == ATTACKABLE) && mob_db[md->class].mode&0x08){ + if( tmd->class==md->class && (!tmd->target_id || md->state.targettype == NONE_ATTACKABLE) && tmd->bl.m == md->bl.m){ + if( mob_can_reach(tmd,target,12) ){ // Reachability judging + tmd->target_id=md->target_id; + tmd->state.targettype = ATTACKABLE; + tmd->min_chase=13; + } + } + }*/ + if( md->attacked_id > 0 && mob_db[md->class].mode&0x08){ + if( tmd->class==md->class && tmd->bl.m == md->bl.m && (!tmd->target_id || md->state.targettype == NONE_ATTACKABLE)){ + if( mob_can_reach(tmd,target,12) ){ // Reachability judging + tmd->target_id=md->attacked_id; + tmd->state.targettype = ATTACKABLE; + tmd->min_chase=13; + } + } + } + + return 0; +} +/*========================================== + * Processing of slave monsters + *------------------------------------------ + */ +static int mob_ai_sub_hard_slavemob(struct mob_data *md,unsigned int tick) +{ + struct mob_data *mmd=NULL; + struct block_list *bl; + int mode,race,old_dist; + + nullpo_retr(0, md); + + if((bl=map_id2bl(md->master_id)) != NULL ) + mmd=(struct mob_data *)bl; + + mode=mob_db[md->class].mode; + + // It is not main monster/leader. + if(!mmd || mmd->bl.type!=BL_MOB || mmd->bl.id!=md->master_id) + return 0; + + // Since it is in the map on which the master is not, teleport is carried out and it pursues. + if( mmd->bl.m != md->bl.m ){ + mob_warp(md,mmd->bl.m,mmd->bl.x,mmd->bl.y,3); + md->state.master_check = 1; + return 0; + } + + // Distance with between slave and master is measured. + old_dist=md->master_dist; + md->master_dist=distance(md->bl.x,md->bl.y,mmd->bl.x,mmd->bl.y); + + // Since the master was in near immediately before, teleport is carried out and it pursues. + if( old_dist<10 && md->master_dist>18){ + mob_warp(md,-1,mmd->bl.x,mmd->bl.y,3); + md->state.master_check = 1; + return 0; + } + + // Although there is the master, since it is somewhat far, it approaches. + if((!md->target_id || md->state.targettype == NONE_ATTACKABLE) && mob_can_move(md) && + (md->walkpath.path_pos>=md->walkpath.path_len || md->walkpath.path_len==0) && md->master_dist<15){ + int i=0,dx,dy,ret; + if(md->master_dist>4) { + do { + if(i<=5){ + dx=mmd->bl.x - md->bl.x; + dy=mmd->bl.y - md->bl.y; + if(dx<0) dx+=(rand()%( (dx<-3)?3:-dx )+1); + else if(dx>0) dx-=(rand()%( (dx>3)?3:dx )+1); + if(dy<0) dy+=(rand()%( (dy<-3)?3:-dy )+1); + else if(dy>0) dy-=(rand()%( (dy>3)?3:dy )+1); + }else{ + dx=mmd->bl.x - md->bl.x + rand()%7 - 3; + dy=mmd->bl.y - md->bl.y + rand()%7 - 3; + } + + ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); + i++; + } while(ret && i<10); + } + else { + do { + dx = rand()%9 - 5; + dy = rand()%9 - 5; + if( dx == 0 && dy == 0) { + dx = (rand()%1)? 1:-1; + dy = (rand()%1)? 1:-1; + } + dx += mmd->bl.x; + dy += mmd->bl.y; + + ret=mob_walktoxy(md,mmd->bl.x+dx,mmd->bl.y+dy,0); + i++; + } while(ret && i<10); + } + + md->next_walktime=tick+500; + md->state.master_check = 1; + } + + // There is the master, the master locks a target and he does not lock. + if( (mmd->target_id>0 && mmd->state.targettype == ATTACKABLE) && (!md->target_id || md->state.targettype == NONE_ATTACKABLE) ){ + struct map_session_data *sd=map_id2sd(mmd->target_id); + if(sd!=NULL && !pc_isdead(sd) && sd->invincible_timer == -1 && !pc_isinvisible(sd)){ + + race=mob_db[md->class].race; + if(mode&0x20 || + (sd->sc_data[SC_TRICKDEAD].timer == -1 && + ( (!pc_ishiding(sd) && !sd->state.gangsterparadise) || race==4 || race==6) ) ){ // 妨害がないか判定 + + md->target_id=sd->bl.id; + md->state.targettype = ATTACKABLE; + md->min_chase=5+distance(md->bl.x,md->bl.y,sd->bl.x,sd->bl.y); + md->state.master_check = 1; + } + } + } + + // There is the master, the master locks a target and he does not lock. +/* if( (md->target_id>0 && mmd->state.targettype == ATTACKABLE) && (!mmd->target_id || mmd->state.targettype == NONE_ATTACKABLE) ){ + struct map_session_data *sd=map_id2sd(md->target_id); + if(sd!=NULL && !pc_isdead(sd) && sd->invincible_timer == -1 && !pc_isinvisible(sd)){ + + race=mob_db[mmd->class].race; + if(mode&0x20 || + (sd->sc_data[SC_TRICKDEAD].timer == -1 && + (!(sd->status.option&0x06) || race==4 || race==6) + ) ){ // It judges whether there is any disturbance. + + mmd->target_id=sd->bl.id; + mmd->state.targettype = ATTACKABLE; + mmd->min_chase=5+distance(mmd->bl.x,mmd->bl.y,sd->bl.x,sd->bl.y); + } + } + }*/ + + return 0; +} + +/*========================================== + * A lock of target is stopped and mob moves to a standby state. + *------------------------------------------ + */ +static int mob_unlocktarget(struct mob_data *md,int tick) +{ + nullpo_retr(0, md); + + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + md->state.skillstate=MSS_IDLE; + md->next_walktime=tick+rand()%3000+3000; + return 0; +} +/*========================================== + * Random walk + *------------------------------------------ + */ +static int mob_randomwalk(struct mob_data *md,int tick) +{ + const int retrycount=20; + int speed; + + nullpo_retr(0, md); + + speed=battle_get_speed(&md->bl); + if(DIFF_TICK(md->next_walktime,tick)<0){ + int i,x,y,c,d=12-md->move_fail_count; + if(d<5) d=5; + for(i=0;ibl.x+r%(d*2+1)-d; + y=md->bl.y+r/(d*2+1)%(d*2+1)-d; + if((c=map_getcell(md->bl.m,x,y))!=1 && c!=5 && mob_walktoxy(md,x,y,1)==0){ + md->move_fail_count=0; + break; + } + if(i+1>=retrycount){ + md->move_fail_count++; + if(md->move_fail_count>1000){ + if(battle_config.error_log==1) + printf("MOB cant move. random spawn %d, class = %d\n",md->bl.id,md->class); + md->move_fail_count=0; + mob_spawn(md->bl.id); + } + } + } + for(i=c=0;iwalkpath.path_len;i++){ // The next walk start time is calculated. + if(md->walkpath.path[i]&1) + c+=speed*14/10; + else + c+=speed; + } + md->next_walktime = tick+rand()%3000+3000+c; + md->state.skillstate=MSS_WALK; + return 1; + } + return 0; +} + +/*========================================== + * AI of MOB whose is near a Player + *------------------------------------------ + */ +static int mob_ai_sub_hard(struct block_list *bl,va_list ap) +{ + struct mob_data *md,*tmd=NULL; + struct map_session_data *tsd=NULL; + struct block_list *tbl=NULL; + struct flooritem_data *fitem; + unsigned int tick; + int i,dx,dy,ret,dist; + int attack_type=0; + int mode,race; + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, md=(struct mob_data*)bl); + + tick=va_arg(ap,unsigned int); + + + if(DIFF_TICK(tick,md->last_thinktime)last_thinktime=tick; + + if( md->skilltimer!=-1 || md->bl.prev==NULL ){ // Under a skill aria and death + if(DIFF_TICK(tick,md->next_walktime)>MIN_MOBTHINKTIME) + md->next_walktime=tick; + return 0; + } + + if(!md->mode) + mode=mob_db[md->class].mode; + else + mode=md->mode; + + race=mob_db[md->class].race; + + // Abnormalities + if((md->opt1 > 0 && md->opt1 != 6) || md->state.state==MS_DELAY || md->sc_data[SC_BLADESTOP].timer != -1) + return 0; + + if(!(mode&0x80) && md->target_id > 0) + md->target_id = 0; + + if(md->attacked_id > 0 && mode&0x08){ // Link monster + struct map_session_data *asd=map_id2sd(md->attacked_id); + if(asd){ + if(asd->invincible_timer == -1 && !pc_isinvisible(asd)){ + map_foreachinarea(mob_ai_sub_hard_linksearch,md->bl.m, + md->bl.x-13,md->bl.y-13, + md->bl.x+13,md->bl.y+13, + BL_MOB,md,&asd->bl); + } + } + } + + // It checks to see it was attacked first (if active, it is target change at 25% of probability). + if( mode>0 && md->attacked_id>0 && (!md->target_id || md->state.targettype == NONE_ATTACKABLE + || (mode&0x04 && rand()%100<25 ) ) ){ + struct block_list *abl=map_id2bl(md->attacked_id); + struct map_session_data *asd=NULL; + if(abl){ + if(abl->type==BL_PC) + asd=(struct map_session_data *)abl; + if(asd==NULL || md->bl.m != abl->m || abl->prev == NULL || asd->invincible_timer != -1 || pc_isinvisible(asd) || + (dist=distance(md->bl.x,md->bl.y,abl->x,abl->y))>=32 || battle_check_target(bl,abl,BCT_ENEMY)==0) + md->attacked_id=0; + else { + md->target_id=md->attacked_id; // set target + md->state.targettype = ATTACKABLE; + attack_type = 1; + md->attacked_id=0; + md->min_chase=dist+13; + if(md->min_chase>26) + md->min_chase=26; + } + } + } + + md->state.master_check = 0; + // Processing of slave monster + if( md->master_id > 0 && md->state.special_mob_ai==0) + mob_ai_sub_hard_slavemob(md,tick); + + // アクティヴモンスターの策敵 (?? of a bitter taste TIVU monster) + if( (!md->target_id || md->state.targettype == NONE_ATTACKABLE) && mode&0x04 && !md->state.master_check && + battle_config.monster_active_enable==1){ + i=0; + if(md->state.special_mob_ai){ + map_foreachinarea(mob_ai_sub_hard_activesearch,md->bl.m, + md->bl.x-AREA_SIZE*2,md->bl.y-AREA_SIZE*2, + md->bl.x+AREA_SIZE*2,md->bl.y+AREA_SIZE*2, + 0,md,&i); + }else{ + map_foreachinarea(mob_ai_sub_hard_activesearch,md->bl.m, + md->bl.x-AREA_SIZE*2,md->bl.y-AREA_SIZE*2, + md->bl.x+AREA_SIZE*2,md->bl.y+AREA_SIZE*2, + BL_PC,md,&i); + } + } + + // The item search of a route monster + if( !md->target_id && mode&0x02 && !md->state.master_check){ + i=0; + map_foreachinarea(mob_ai_sub_hard_lootsearch,md->bl.m, + md->bl.x-AREA_SIZE*2,md->bl.y-AREA_SIZE*2, + md->bl.x+AREA_SIZE*2,md->bl.y+AREA_SIZE*2, + BL_ITEM,md,&i); + } + + // It will attack, if the candidate for an attack is. + if(md->target_id > 0){ + if((tbl=map_id2bl(md->target_id))){ + if(tbl->type==BL_PC) + tsd=(struct map_session_data *)tbl; + else if(tbl->type==BL_MOB) + tmd=(struct mob_data *)tbl; + if(tsd || tmd) { + if(tbl->m != md->bl.m || tbl->prev == NULL || (dist=distance(md->bl.x,md->bl.y,tbl->x,tbl->y))>=md->min_chase) + mob_unlocktarget(md,tick); // 別マップか、視界外 + else if( tsd && !(mode&0x20) && (tsd->sc_data[SC_TRICKDEAD].timer != -1 || ((pc_ishiding(tsd) || tsd->state.gangsterparadise) && race!=4 && race!=6)) ) + mob_unlocktarget(md,tick); // スキルなどによる策敵妨害 + else if(!battle_check_range(&md->bl,tbl,mob_db[md->class].range)){ + // 攻撃範囲外なので移動 + if(!(mode&1)){ // 移動しないモード + mob_unlocktarget(md,tick); + return 0; + } + if( !mob_can_move(md) ) // 動けない状態にある + return 0; + md->state.skillstate=MSS_CHASE; // 突撃時スキル + mobskill_use(md,tick,-1); +// if(md->timer != -1 && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tsd->bl.x,tsd->bl.y)<2) ) + if(md->timer != -1 && md->state.state!=MS_ATTACK && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tbl->x,tbl->y)<2) ) + return 0; // 既に移動中 + if( !mob_can_reach(md,tbl,(md->min_chase>13)?md->min_chase:13) ) + mob_unlocktarget(md,tick); // 移動できないのでタゲ解除(IWとか?) + else{ + // 追跡 + md->next_walktime=tick+500; + i=0; + do { + if(i==0){ // 最初はAEGISと同じ方法で検索 + dx=tbl->x - md->bl.x; + dy=tbl->y - md->bl.y; + if(dx<0) dx++; + else if(dx>0) dx--; + if(dy<0) dy++; + else if(dy>0) dy--; + }else{ // だめならAthena式(ランダム) + dx=tbl->x - md->bl.x + rand()%3 - 1; + dy=tbl->y - md->bl.y + rand()%3 - 1; + } + /* if(path_search(&md->walkpath,md->bl.m,md->bl.x,md->bl.y,md->bl.x+dx,md->bl.y+dy,0)){ + dx=tsd->bl.x - md->bl.x; + dy=tsd->bl.y - md->bl.y; + if(dx<0) dx--; + else if(dx>0) dx++; + if(dy<0) dy--; + else if(dy>0) dy++; + }*/ + ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); + i++; + } while(ret && i<5); + + if(ret){ // 移動不可能な所からの攻撃なら2歩下る + if(dx<0) dx=2; + else if(dx>0) dx=-2; + if(dy<0) dy=2; + else if(dy>0) dy=-2; + mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); + } + } + } else { // 攻撃射程範囲内 + md->state.skillstate=MSS_ATTACK; + if(md->state.state==MS_WALK) + mob_stop_walking(md,1); // 歩行中なら停止 + if(md->state.state==MS_ATTACK) + return 0; // 既に攻撃中 + mob_changestate(md,MS_ATTACK,attack_type); + +/* if(mode&0x08){ // リンクモンスター + map_foreachinarea(mob_ai_sub_hard_linksearch,md->bl.m, + md->bl.x-13,md->bl.y-13, + md->bl.x+13,md->bl.y+13, + BL_MOB,md,&tsd->bl); + }*/ + } + return 0; + }else{ // ルートモンスター処理 + if(tbl == NULL || tbl->type != BL_ITEM ||tbl->m != md->bl.m || + (dist=distance(md->bl.x,md->bl.y,tbl->x,tbl->y))>=md->min_chase || !md->lootitem){ + // 遠すぎるかアイテムがなくなった + mob_unlocktarget(md,tick); + if(md->state.state==MS_WALK) + mob_stop_walking(md,1); // 歩行中なら停止 + }else if(dist){ + if(!(mode&1)){ // 移動しないモード + mob_unlocktarget(md,tick); + return 0; + } + if( !mob_can_move(md) ) // 動けない状態にある + return 0; + md->state.skillstate=MSS_LOOT; // ルート時スキル使用 + mobskill_use(md,tick,-1); +// if(md->timer != -1 && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tbl->x,tbl->y)<2) ) + if(md->timer != -1 && md->state.state!=MS_ATTACK && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tbl->x,tbl->y) <= 0)) + return 0; // 既に移動中 + md->next_walktime=tick+500; + dx=tbl->x - md->bl.x; + dy=tbl->y - md->bl.y; +/* if(path_search(&md->walkpath,md->bl.m,md->bl.x,md->bl.y,md->bl.x+dx,md->bl.y+dy,0)){ + dx=tbl->x - md->bl.x; + dy=tbl->y - md->bl.y; + }*/ + ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); + if(ret) + mob_unlocktarget(md,tick);// 移動できないのでタゲ解除(IWとか?) + }else{ // アイテムまでたどり着いた + if(md->state.state==MS_ATTACK) + return 0; // 攻撃中 + if(md->state.state==MS_WALK) + mob_stop_walking(md,1); // 歩行中なら停止 + fitem = (struct flooritem_data *)tbl; + if(md->lootitem_count < LOOTITEM_SIZE) + memcpy(&md->lootitem[md->lootitem_count++],&fitem->item_data,sizeof(md->lootitem[0])); + else if(battle_config.monster_loot_type == 1 && md->lootitem_count >= LOOTITEM_SIZE) { + mob_unlocktarget(md,tick); + return 0; + } + else { + if(md->lootitem[0].card[0] == (short)0xff00) + intif_delete_petdata(*((long *)(&md->lootitem[0].card[1]))); + for(i=0;ilootitem[i],&md->lootitem[i+1],sizeof(md->lootitem[0])); + memcpy(&md->lootitem[LOOTITEM_SIZE-1],&fitem->item_data,sizeof(md->lootitem[0])); + } + map_clearflooritem(tbl->id); + mob_unlocktarget(md,tick); + } + return 0; + } + }else{ + mob_unlocktarget(md,tick); + if(md->state.state==MS_WALK) + mob_stop_walking(md,4); // 歩行中なら停止 + return 0; + } + } + + // It is skill use at the time of /standby at the time of a walk. + if( mobskill_use(md,tick,-1) ) + return 0; + + // 歩行処理 + if( mode&1 && mob_can_move(md) && // 移動可能MOB&動ける状態にある + (md->master_id==0 || md->state.special_mob_ai || md->master_dist>10) ){ //取り巻きMOBじゃない + + if( DIFF_TICK(md->next_walktime,tick) > + 7000 && + (md->walkpath.path_len==0 || md->walkpath.path_pos>=md->walkpath.path_len) ){ + md->next_walktime = tick + 3000*rand()%2000; + } + + // Random movement + if( mob_randomwalk(md,tick) ) + return 0; + } + + // Since he has finished walking, it stands by. + if( md->walkpath.path_len==0 || md->walkpath.path_pos>=md->walkpath.path_len ) + md->state.skillstate=MSS_IDLE; + return 0; +} + +/*========================================== + * Serious processing for mob in PC field of view (foreachclient) + *------------------------------------------ + */ +static int mob_ai_sub_foreachclient(struct map_session_data *sd,va_list ap) +{ + unsigned int tick; + nullpo_retr(0, sd); + nullpo_retr(0, ap); + + tick=va_arg(ap,unsigned int); + map_foreachinarea(mob_ai_sub_hard,sd->bl.m, + sd->bl.x-AREA_SIZE*2,sd->bl.y-AREA_SIZE*2, + sd->bl.x+AREA_SIZE*2,sd->bl.y+AREA_SIZE*2, + BL_MOB,tick); + + return 0; +} + +/*========================================== + * Serious processing for mob in PC field of view (interval timer function) + *------------------------------------------ + */ +static int mob_ai_hard(int tid,unsigned int tick,int id,int data) +{ + clif_foreachclient(mob_ai_sub_foreachclient,tick); + + return 0; +} + +/*========================================== + * Negligent mode MOB AI (PC is not in near) + *------------------------------------------ + */ +static int mob_ai_sub_lazy(void * key,void * data,va_list app) +{ + struct mob_data *md=data; + unsigned int tick; + va_list ap; + + nullpo_retr(0, md); + nullpo_retr(0, app); + nullpo_retr(0, ap=va_arg(app,va_list)); + + if(md==NULL) + return 0; + + if(!md->bl.type || md->bl.type!=BL_MOB) + return 0; + + tick=va_arg(ap,unsigned int); + + if(DIFF_TICK(tick,md->last_thinktime)last_thinktime=tick; + + if(md->bl.prev==NULL || md->skilltimer!=-1){ + if(DIFF_TICK(tick,md->next_walktime)>MIN_MOBTHINKTIME*10) + md->next_walktime=tick; + return 0; + } + + if(DIFF_TICK(md->next_walktime,tick)<0 && + (mob_db[md->class].mode&1) && mob_can_move(md) ){ + + if( map[md->bl.m].users>0 ){ + // Since PC is in the same map, somewhat better negligent processing is carried out. + + // It sometimes moves. + if(rand()%1000x0<=0 && md->master_id!=0 && + mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode & 0x20)) + mob_spawn(md->bl.id); + + }else{ + // Since PC is not even in the same map, suitable processing is carried out even if it takes. + + // MOB which is not BOSS which is not Summons MOB, either -- a case -- sometimes -- leaping + if( rand()%1000x0<=0 && md->master_id!=0 && + mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode & 0x20)) + mob_warp(md,-1,-1,-1,-1); + } + + md->next_walktime = tick+rand()%10000+5000; + } + return 0; +} + +/*========================================== + * Negligent processing for mob outside PC field of view (interval timer function) + *------------------------------------------ + */ +static int mob_ai_lazy(int tid,unsigned int tick,int id,int data) +{ + map_foreachiddb(mob_ai_sub_lazy,tick); + + return 0; +} + + +/*========================================== + * The structure object for item drop with delay + * Since it is only two being able to pass [ int ] a timer function + * Data is put in and passed to this structure object. + *------------------------------------------ + */ +struct delay_item_drop { + int m,x,y; + int nameid,amount; + struct map_session_data *first_sd,*second_sd,*third_sd; +}; + +struct delay_item_drop2 { + int m,x,y; + struct item item_data; + struct map_session_data *first_sd,*second_sd,*third_sd; +}; + +/*========================================== + * item drop with delay (timer function) + *------------------------------------------ + */ +static int mob_delay_item_drop(int tid,unsigned int tick,int id,int data) +{ + struct delay_item_drop *ditem; + struct item temp_item; + int flag; + + nullpo_retr(0, ditem=(struct delay_item_drop *)id); + + memset(&temp_item,0,sizeof(temp_item)); + temp_item.nameid = ditem->nameid; + temp_item.amount = ditem->amount; + temp_item.identify = !itemdb_isequip3(temp_item.nameid); + + if(battle_config.item_auto_get==1){ + if(ditem->first_sd && (flag = pc_additem(ditem->first_sd,&temp_item,ditem->amount))){ + clif_additem(ditem->first_sd,0,0,flag); + map_addflooritem(&temp_item,1,ditem->m,ditem->x,ditem->y,ditem->first_sd,ditem->second_sd,ditem->third_sd,0); + } + free(ditem); + return 0; + } + + map_addflooritem(&temp_item,1,ditem->m,ditem->x,ditem->y,ditem->first_sd,ditem->second_sd,ditem->third_sd,0); + + free(ditem); + return 0; +} + +/*========================================== + * item drop (timer function)-lootitem with delay + *------------------------------------------ + */ +static int mob_delay_item_drop2(int tid,unsigned int tick,int id,int data) +{ + struct delay_item_drop2 *ditem; + int flag; + + nullpo_retr(0, ditem=(struct delay_item_drop2 *)id); + + if(battle_config.item_auto_get==1){ + if(ditem->first_sd && (flag = pc_additem(ditem->first_sd,&ditem->item_data,ditem->item_data.amount))){ + clif_additem(ditem->first_sd,0,0,flag); + map_addflooritem(&ditem->item_data,ditem->item_data.amount,ditem->m,ditem->x,ditem->y,ditem->first_sd,ditem->second_sd,ditem->third_sd,0); + } + free(ditem); + return 0; + } + + map_addflooritem(&ditem->item_data,ditem->item_data.amount,ditem->m,ditem->x,ditem->y,ditem->first_sd,ditem->second_sd,ditem->third_sd,0); + + free(ditem); + return 0; +} + +/*========================================== + * mob data is erased. + *------------------------------------------ + */ +int mob_delete(struct mob_data *md) +{ + nullpo_retr(1, md); + + if(md->bl.prev == NULL) + return 1; + mob_changestate(md,MS_DEAD,0); + clif_clearchar_area(&md->bl,1); + map_delblock(&md->bl); + if(mob_get_viewclass(md->class) <= 1000) + clif_clearchar_delay(gettick()+3000,&md->bl,0); + mob_deleteslave(md); + mob_setdelayspawn(md->bl.id); + return 0; +} + +int mob_catch_delete(struct mob_data *md,int type) +{ + nullpo_retr(1, md); + + if(md->bl.prev == NULL) + return 1; + mob_changestate(md,MS_DEAD,0); + clif_clearchar_area(&md->bl,type); + map_delblock(&md->bl); + mob_setdelayspawn(md->bl.id); + return 0; +} + +int mob_timer_delete(int tid, unsigned int tick, int id, int data) +{ + struct block_list *bl=map_id2bl(id); + struct mob_data *md; + + nullpo_retr(0, bl); + + md = (struct mob_data *)bl; + mob_catch_delete(md,3); + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +int mob_deleteslave_sub(struct block_list *bl,va_list ap) +{ + struct mob_data *md; + int id; + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, md = (struct mob_data *)bl); + + id=va_arg(ap,int); + if(md->master_id > 0 && md->master_id == id ) + mob_damage(NULL,md,md->hp,1); + return 0; +} +/*========================================== + * + *------------------------------------------ + */ +int mob_deleteslave(struct mob_data *md) +{ + nullpo_retr(0, md); + + map_foreachinarea(mob_deleteslave_sub, md->bl.m, + 0,0,map[md->bl.m].xs,map[md->bl.m].ys, + BL_MOB,md->bl.id); + return 0; +} + +/*========================================== + * It is the damage of sd to damage to md. + *------------------------------------------ + */ +int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) +{ + int i,count,minpos,mindmg; + struct map_session_data *sd = NULL,*tmpsd[DAMAGELOG_SIZE]; + struct { + struct party *p; + int id,base_exp,job_exp; + } pt[DAMAGELOG_SIZE]; + int pnum=0; + int mvp_damage,max_hp; + unsigned int tick = gettick(); + struct map_session_data *mvp_sd = NULL, *second_sd = NULL,*third_sd = NULL; + double dmg_rate,tdmg,temp; + struct item item; + int ret; + int drop_rate; + int skill,sp; + + nullpo_retr(0, md); //srcはNULLで呼ばれる場合もあるので、他でチェック + + max_hp = battle_get_max_hp(&md->bl); + + if(src && src->type == BL_PC) { + sd = (struct map_session_data *)src; + mvp_sd = sd; + } + +// if(battle_config.battle_log) +// printf("mob_damage %d %d %d\n",md->hp,max_hp,damage); + if(md->bl.prev==NULL){ + if(battle_config.error_log==1) + printf("mob_damage : BlockError!!\n"); + return 0; + } + + if(md->state.state==MS_DEAD || md->hp<=0) { + if(md->bl.prev != NULL) { + mob_changestate(md,MS_DEAD,0); + mobskill_use(md,tick,-1); // It is skill at the time of death. + clif_clearchar_area(&md->bl,1); + map_delblock(&md->bl); + mob_setdelayspawn(md->bl.id); + } + return 0; + } + + if(md->sc_data[SC_ENDURE].timer == -1) + mob_stop_walking(md,3); + if(damage > max_hp>>2) + skill_stop_dancing(&md->bl,0); + + if(md->hp > max_hp) + md->hp = max_hp; + + // The amount of overkill rounds to hp. + if(damage>md->hp) + damage=md->hp; + + if(!(type&2)) { + if(sd!=NULL){ + for(i=0,minpos=0,mindmg=0x7fffffff;idmglog[i].id==sd->bl.id) + break; + if(md->dmglog[i].id==0){ + minpos=i; + mindmg=0; + } + else if(md->dmglog[i].dmgdmglog[i].dmg; + } + } + if(idmglog[i].dmg+=damage; + else { + md->dmglog[minpos].id=sd->bl.id; + md->dmglog[minpos].dmg=damage; + } + + if(md->attacked_id <= 0 && md->state.special_mob_ai==0) + md->attacked_id = sd->bl.id; + } + if(src && src->type == BL_PET && battle_config.pet_attack_exp_to_master==1) { + struct pet_data *pd = (struct pet_data *)src; + nullpo_retr(0, pd); + for(i=0,minpos=0,mindmg=0x7fffffff;idmglog[i].id==pd->msd->bl.id) + break; + if(md->dmglog[i].id==0){ + minpos=i; + mindmg=0; + } + else if(md->dmglog[i].dmgdmglog[i].dmg; + } + } + if(idmglog[i].dmg+=(damage*battle_config.pet_attack_exp_rate)/100; + else { + md->dmglog[minpos].id=pd->msd->bl.id; + md->dmglog[minpos].dmg=(damage*battle_config.pet_attack_exp_rate)/100; + } + } + if(src && src->type == BL_MOB && ((struct mob_data*)src)->state.special_mob_ai){ + struct mob_data *md2 = (struct mob_data *)src; + nullpo_retr(0, md2); + for(i=0,minpos=0,mindmg=0x7fffffff;idmglog[i].id==md2->master_id) + break; + if(md->dmglog[i].id==0){ + minpos=i; + mindmg=0; + } + else if(md->dmglog[i].dmgdmglog[i].dmg; + } + } + if(idmglog[i].dmg+=damage; + else { + md->dmglog[minpos].id=md2->master_id; + md->dmglog[minpos].dmg=damage; + + if(md->attacked_id <= 0 && md->state.special_mob_ai==0) + md->attacked_id = md2->master_id; + } + } + + } + + md->hp-=damage; + + if(md->class >= 1285 && md->class <=1287) { // guardian hp update [Valaris] + struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name); + if(gc) { + + if(md->bl.id==gc->GID0) { + gc->Ghp0=md->hp; + if(gc->Ghp0<=0) { + guild_castledatasave(gc->castle_id,10,0); + guild_castledatasave(gc->castle_id,18,0); + } + } + if(md->bl.id==gc->GID1) { + gc->Ghp1=md->hp; + if(gc->Ghp1<=0) { + guild_castledatasave(gc->castle_id,11,0); + guild_castledatasave(gc->castle_id,19,0); + } + } + if(md->bl.id==gc->GID2) { + gc->Ghp2=md->hp; + if(gc->Ghp2<=0) { + guild_castledatasave(gc->castle_id,12,0); + guild_castledatasave(gc->castle_id,20,0); + } + } + if(md->bl.id==gc->GID3) { + gc->Ghp3=md->hp; + if(gc->Ghp3<=0) { + guild_castledatasave(gc->castle_id,13,0); + guild_castledatasave(gc->castle_id,21,0); + } + } + if(md->bl.id==gc->GID4) { + gc->Ghp4=md->hp; + if(gc->Ghp4<=0) { + guild_castledatasave(gc->castle_id,14,0); + guild_castledatasave(gc->castle_id,22,0); + } + } + if(md->bl.id==gc->GID5) { + gc->Ghp5=md->hp; + if(gc->Ghp5<=0) { + guild_castledatasave(gc->castle_id,15,0); + guild_castledatasave(gc->castle_id,23,0); + } + } + if(md->bl.id==gc->GID6) { + gc->Ghp6=md->hp; + if(gc->Ghp6<=0) { + guild_castledatasave(gc->castle_id,16,0); + guild_castledatasave(gc->castle_id,24,0); + } + } + if(md->bl.id==gc->GID7) { + gc->Ghp7=md->hp; + if(gc->Ghp7<=0) { + guild_castledatasave(gc->castle_id,17,0); + guild_castledatasave(gc->castle_id,25,0); + + } + } + } + } // end addition [Valaris] + + if(md->option&2 ) + skill_status_change_end(&md->bl, SC_HIDING, -1); + if(md->option&4 ) + skill_status_change_end(&md->bl, SC_CLOAKING, -1); + + if(md->state.special_mob_ai == 2){//スフィアーマイン + int skillidx=0; + + if((skillidx=mob_skillid2skillidx(md->class,NPC_SELFDESTRUCTION2))>=0){ + md->mode |= 0x1; + md->next_walktime=tick; + mobskill_use_id(md,&md->bl,skillidx);//自爆詠唱開始 + md->state.special_mob_ai++; + } + } + + if(md->hp>0){ + return 0; + } + + // ----- ここから死亡処理 ----- + + map_freeblock_lock(); + mob_changestate(md,MS_DEAD,0); + mobskill_use(md,tick,-1); // 死亡時スキル + + memset(tmpsd,0,sizeof(tmpsd)); + memset(pt,0,sizeof(pt)); + + max_hp = battle_get_max_hp(&md->bl); + + if(src && src->type == BL_MOB) + mob_unlocktarget((struct mob_data *)src,tick); + + /* ソウルドレイン */ + if(sd && (skill=pc_checkskill(sd,HW_SOULDRAIN))>0){ + clif_skill_nodamage(src,&md->bl,HW_SOULDRAIN,skill,1); + sp = (battle_get_lv(&md->bl))*(65+15*skill)/100; + if(sd->status.sp + sp > sd->status.max_sp) + sp = sd->status.max_sp - sd->status.sp; + sd->status.sp += sp; + clif_heal(sd->fd,SP_SP,sp); + } + + // map外に消えた人は計算から除くので + // overkill分は無いけどsumはmax_hpとは違う + + tdmg = 0; + for(i=0,count=0,mvp_damage=0;idmglog[i].id==0) + continue; + tmpsd[i] = map_id2sd(md->dmglog[i].id); + if(tmpsd[i] == NULL) + continue; + count++; + if(tmpsd[i]->bl.m != md->bl.m || pc_isdead(tmpsd[i])) + continue; + + tdmg += (double)md->dmglog[i].dmg; + if(mvp_damagedmglog[i].dmg){ + third_sd = second_sd; + second_sd = mvp_sd; + mvp_sd=tmpsd[i]; + mvp_damage=md->dmglog[i].dmg; + } + } + + // [MouseJstr] + if((map[md->bl.m].flag.pvp == 0) || (battle_config.pvp_exp == 1)) { + + if((double)max_hp < tdmg) + dmg_rate = ((double)max_hp) / tdmg; + else dmg_rate = 1; + + // 経験値の分配 + for(i=0;ibl.m != md->bl.m) + continue; +/* jAthena's exp formula + per = ((double)md->dmglog[i].dmg)*(9.+(double)((count > 6)? 6:count))/10./((double)max_hp) * dmg_rate; + temp = ((double)mob_db[md->class].base_exp * (double)battle_config.base_exp_rate / 100. * per); + base_exp = (temp > 2147483647.)? 0x7fffffff:(int)temp; + if(mob_db[md->class].base_exp > 0 && base_exp < 1) base_exp = 1; + if(base_exp < 0) base_exp = 0; + temp = ((double)mob_db[md->class].job_exp * (double)battle_config.job_exp_rate / 100. * per); + job_exp = (temp > 2147483647.)? 0x7fffffff:(int)temp; + if(mob_db[md->class].job_exp > 0 && job_exp < 1) job_exp = 1; + if(job_exp < 0) job_exp = 0; +*/ +//eAthena's exp formula rather than jAthena's + per=(double)md->dmglog[i].dmg*256*(9+(double)((count > 6)? 6:count))/10/(double)max_hp; + if(per>512) per=512; + if(per<1) per=1; + base_exp=mob_db[md->class].base_exp*per/256; + if(base_exp < 1) base_exp = 1; + if(sd && md && battle_config.pk_mode==1 && (mob_db[md->class].lv - sd->status.base_level >= 20)) { + base_exp*=1.15; // pk_mode additional exp if monster >20 levels [Valaris] + } + if(md->state.special_mob_ai >= 1 && battle_config.alchemist_summon_reward != 1) base_exp = 0; // Added [Valaris] + job_exp=mob_db[md->class].job_exp*per/256; + if(job_exp < 1) job_exp = 1; + if(sd && md && battle_config.pk_mode==1 && (mob_db[md->class].lv - sd->status.base_level >= 20)) { + job_exp*=1.15; // pk_mode additional exp if monster >20 levels [Valaris] + } + if(md->state.special_mob_ai >= 1 && battle_config.alchemist_summon_reward != 1) job_exp = 0; // Added [Valaris] + + if((pid=tmpsd[i]->status.party_id)>0){ // パーティに入っている + int j=0; + for(j=0;jexp!=0){ + pt[pnum].id=pid; + pt[pnum].p=p; + pt[pnum].base_exp=base_exp; + pt[pnum].job_exp=job_exp; + pnum++; + flag=0; + } + }else{ // いるときは公平 + pt[j].base_exp+=base_exp; + pt[j].job_exp+=job_exp; + flag=0; + } + } + if(flag) // 各自所得 + pc_gainexp(tmpsd[i],base_exp,job_exp); + } + // 公平分配 + for(i=0;ibl.m,pt[i].base_exp,pt[i].job_exp); + + // item drop + if(!(type&1)) { + int log_item[8] = {0}; + for(i=0;i<8;i++){ + struct delay_item_drop *ditem; + int drop_rate; + + if(md->state.special_mob_ai >= 1 && battle_config.alchemist_summon_reward != 1) // Added [Valaris] + break; // End + + if(mob_db[md->class].dropitem[i].nameid <= 0) + continue; + drop_rate = mob_db[md->class].dropitem[i].p; + if(drop_rate <= 0 && battle_config.drop_rate0item==1) + drop_rate = 1; + if(battle_config.drops_by_luk>0 && sd && md) drop_rate+=(sd->status.luk*battle_config.drops_by_luk)/100; // drops affected by luk [Valaris] + if(sd && md && battle_config.pk_mode==1 && (mob_db[md->class].lv - sd->status.base_level >= 20)) drop_rate*=1.25; // pk_mode increase drops if 20 level difference [Valaris] + if(drop_rate <= rand()%10000) + continue; + + ditem=(struct delay_item_drop *)aCalloc(1,sizeof(struct delay_item_drop)); + ditem->nameid = mob_db[md->class].dropitem[i].nameid; + log_item[i] = ditem->nameid; + ditem->amount = 1; + ditem->m = md->bl.m; + ditem->x = md->bl.x; + ditem->y = md->bl.y; + ditem->first_sd = mvp_sd; + ditem->second_sd = second_sd; + ditem->third_sd = third_sd; + add_timer(tick+500+i,mob_delay_item_drop,(int)ditem,0); + } + + #ifndef TXT_ONLY + if(log_config.drop > 0) + log_drop(mvp_sd, md->class, log_item); + #endif + + if(sd && sd->state.attack_type == BF_WEAPON) { + for(i=0;imonster_drop_item_count;i++) { + struct delay_item_drop *ditem; + int race = battle_get_race(&md->bl); + if(sd->monster_drop_itemid[i] <= 0) + continue; + if(sd->monster_drop_race[i] & (1<class].mode & 0x20 && sd->monster_drop_race[i] & 1<<10) || + (!(mob_db[md->class].mode & 0x20) && sd->monster_drop_race[i] & 1<<11) ) { + if(sd->monster_drop_itemrate[i] <= rand()%10000) + continue; + + ditem=(struct delay_item_drop *)aCalloc(1,sizeof(struct delay_item_drop)); + ditem->nameid = sd->monster_drop_itemid[i]; + ditem->amount = 1; + ditem->m = md->bl.m; + ditem->x = md->bl.x; + ditem->y = md->bl.y; + ditem->first_sd = mvp_sd; + ditem->second_sd = second_sd; + ditem->third_sd = third_sd; + add_timer(tick+520+i,mob_delay_item_drop,(int)ditem,0); + } + } + if(sd->get_zeny_num > 0) + pc_getzeny(sd,mob_db[md->class].lv*10 + rand()%(sd->get_zeny_num+1)); + } + if(md->lootitem) { + for(i=0;ilootitem_count;i++) { + struct delay_item_drop2 *ditem; + + ditem=(struct delay_item_drop2 *)aCalloc(1,sizeof(struct delay_item_drop2)); + memcpy(&ditem->item_data,&md->lootitem[i],sizeof(md->lootitem[0])); + ditem->m = md->bl.m; + ditem->x = md->bl.x; + ditem->y = md->bl.y; + ditem->first_sd = mvp_sd; + ditem->second_sd = second_sd; + ditem->third_sd = third_sd; + add_timer(tick+540+i,mob_delay_item_drop2,(int)ditem,0); + } + } + } + + // mvp処理 + if(mvp_sd && mob_db[md->class].mexp > 0 ){ + int log_mvp[2] = {0}; + int j; + int mexp; + temp = ((double)mob_db[md->class].mexp * (double)battle_config.mvp_exp_rate * (9.+(double)count)/1000.); + mexp = (temp > 2147483647.)? 0x7fffffff:(int)temp; + if(mexp < 1) mexp = 1; + clif_mvp_effect(mvp_sd); // エフェクト + clif_mvp_exp(mvp_sd,mexp); + pc_gainexp(mvp_sd,mexp,0); + log_mvp[1] = mexp; + for(j=0;j<3;j++){ + i = rand() % 3; + if(mob_db[md->class].mvpitem[i].nameid <= 0) + continue; + drop_rate = mob_db[md->class].mvpitem[i].p; + if(drop_rate <= 0 && battle_config.drop_rate0item==1) + drop_rate = 1; + if(drop_rate < battle_config.item_drop_mvp_min) + drop_rate = battle_config.item_drop_mvp_min; + if(drop_rate > battle_config.item_drop_mvp_max) + drop_rate = battle_config.item_drop_mvp_max; + if(drop_rate <= rand()%10000) + continue; + memset(&item,0,sizeof(item)); + item.nameid=mob_db[md->class].mvpitem[i].nameid; + item.identify=!itemdb_isequip3(item.nameid); + clif_mvp_item(mvp_sd,item.nameid); + log_mvp[0] = item.nameid; + if(mvp_sd->weight*2 > mvp_sd->max_weight) + map_addflooritem(&item,1,mvp_sd->bl.m,mvp_sd->bl.x,mvp_sd->bl.y,mvp_sd,second_sd,third_sd,1); + else if((ret = pc_additem(mvp_sd,&item,1))) { + clif_additem(sd,0,0,ret); + map_addflooritem(&item,1,mvp_sd->bl.m,mvp_sd->bl.x,mvp_sd->bl.y,mvp_sd,second_sd,third_sd,1); + } + break; + } + #ifndef TXT_ONLY + if(log_config.mvpdrop > 0) + log_mvpdrop(mvp_sd, md->class, log_mvp); + #endif + } + + } // [MouseJstr] + + // NPC Event [OnAgitBreak] + if(md->npc_event[0] && strcmp(((md->npc_event)+strlen(md->npc_event)-13),"::OnAgitBreak") == 0) { + printf("MOB.C: Run NPC_Event[OnAgitBreak].\n"); + if (agit_flag == 1) //Call to Run NPC_Event[OnAgitBreak] + guild_agit_break(md); + } + + // SCRIPT実行 + if(md->npc_event[0]){ +// if(battle_config.battle_log==1) +// printf("mob_damage : run event : %s\n",md->npc_event); + if(src && src->type == BL_PET) + sd = ((struct pet_data *)src)->msd; + if(sd == NULL) { + if(mvp_sd != NULL) + sd = mvp_sd; + else { + struct map_session_data *tmpsd; + int i; + for(i=0;isession_data) && tmpsd->state.auth) { + if(md->bl.m == tmpsd->bl.m) { + sd = tmpsd; + break; + } + } + } + } + } + if(sd) + npc_event(sd,md->npc_event,0); + } + + clif_clearchar_area(&md->bl,1); + map_delblock(&md->bl); + if(mob_get_viewclass(md->class) <= 1000) + clif_clearchar_delay(tick+3000,&md->bl,0); + mob_deleteslave(md); + mob_setdelayspawn(md->bl.id); + map_freeblock_unlock(); + + return 0; +} + +/*========================================== + * + *------------------------------------------ + */ +int mob_class_change(struct mob_data *md,int *value) +{ + unsigned int tick = gettick(); + int i,c,hp_rate,max_hp,class,count = 0; + + nullpo_retr(0, md); + nullpo_retr(0, value); + + if(value[0]<=1000 || value[0]>2000) + return 0; + if(md->bl.prev == NULL) return 0; + + while(count < 5 && value[count] > 1000 && value[count] <= 2000) count++; + if(count < 1) return 0; + + class = value[rand()%count]; + if(class<=1000 || class>2000) return 0; + + max_hp = battle_get_max_hp(&md->bl); + hp_rate = md->hp*100/max_hp; + clif_mob_class_change(md,class); + md->class = class; + max_hp = battle_get_max_hp(&md->bl); + if(battle_config.monster_class_change_full_recover==1) { + md->hp = max_hp; + memset(md->dmglog,0,sizeof(md->dmglog)); + } + else + md->hp = max_hp*hp_rate/100; + if(md->hp > max_hp) md->hp = max_hp; + else if(md->hp < 1) md->hp = 1; + + memcpy(md->name,mob_db[class].jname,24); + memset(&md->state,0,sizeof(md->state)); + md->attacked_id = 0; + md->target_id = 0; + md->move_fail_count = 0; + + md->speed = mob_db[md->class].speed; + md->def_ele = mob_db[md->class].element; + + mob_changestate(md,MS_IDLE,0); + skill_castcancel(&md->bl,0); + md->state.skillstate = MSS_IDLE; + md->last_thinktime = tick; + md->next_walktime = tick+rand()%50+5000; + md->attackabletime = tick; + md->canmove_tick = tick; + md->sg_count=0; + + for(i=0,c=tick-1000*3600*10;iskilldelay[i] = c; + md->skillid=0; + md->skilllv=0; + + if(md->lootitem == NULL && mob_db[class].mode&0x02) + md->lootitem=(struct item *)aCalloc(LOOTITEM_SIZE,sizeof(struct item)); + + skill_clear_unitgroup(&md->bl); + skill_cleartimerskill(&md->bl); + + clif_clearchar_area(&md->bl,0); + clif_spawnmob(md); + + return 0; +} + +/*========================================== + * mob回復 + *------------------------------------------ + */ +int mob_heal(struct mob_data *md,int heal) +{ + int max_hp = battle_get_max_hp(&md->bl); + + nullpo_retr(0, md); + + md->hp += heal; + if( max_hp < md->hp ) + md->hp = max_hp; + + if(md->class >= 1285 && md->class <=1287) { // guardian hp update [Valaris] + struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name); + if(gc) { + if(md->bl.id==gc->GID0) gc->Ghp0=md->hp; + if(md->bl.id==gc->GID1) gc->Ghp1=md->hp; + if(md->bl.id==gc->GID2) gc->Ghp2=md->hp; + if(md->bl.id==gc->GID3) gc->Ghp3=md->hp; + if(md->bl.id==gc->GID4) gc->Ghp4=md->hp; + if(md->bl.id==gc->GID5) gc->Ghp5=md->hp; + if(md->bl.id==gc->GID6) gc->Ghp6=md->hp; + if(md->bl.id==gc->GID7) gc->Ghp7=md->hp; + } + } // end addition [Valaris] + + return 0; +} + + +/*========================================== + * Added by RoVeRT + *------------------------------------------ + */ +int mob_warpslave_sub(struct block_list *bl,va_list ap) +{ + struct mob_data *md=(struct mob_data *)bl; + int id,x,y; + id=va_arg(ap,int); + x=va_arg(ap,int); + y=va_arg(ap,int); + if( md->master_id==id ) { + mob_warp(md,-1,x,y,2); + } + return 0; +} + +/*========================================== + * Added by RoVeRT + *------------------------------------------ + */ +int mob_warpslave(struct mob_data *md,int x, int y) +{ +//printf("warp slave\n"); + map_foreachinarea(mob_warpslave_sub, md->bl.m, + x-AREA_SIZE,y-AREA_SIZE, + x+AREA_SIZE,y+AREA_SIZE,BL_MOB, + md->bl.id, md->bl.x, md->bl.y ); + return 0; +} + +/*========================================== + * mobワープ + *------------------------------------------ + */ +int mob_warp(struct mob_data *md,int m,int x,int y,int type) +{ + int i=0,c,xs=0,ys=0,bx=x,by=y; + + nullpo_retr(0, md); + + if( md->bl.prev==NULL ) + return 0; + + if( m<0 ) m=md->bl.m; + + if(type >= 0) { + if(map[md->bl.m].flag.monster_noteleport) + return 0; + clif_clearchar_area(&md->bl,type); + } + skill_unit_out_all(&md->bl,gettick(),1); + map_delblock(&md->bl); + + if(bx>0 && by>0){ // 位置指定の場合周囲9セルを探索 + xs=ys=9; + } + + while( ( x<0 || y<0 || ((c=read_gat(m,x,y))==1 || c==5) ) && (i++)<1000 ){ + if( xs>0 && ys>0 && i<250 ){ // 指定位置付近の探索 + x=bx+rand()%xs-xs/2; + y=by+rand()%ys-ys/2; + }else{ // 完全ランダム探索 + x=rand()%(map[m].xs-2)+1; + y=rand()%(map[m].ys-2)+1; + } + } + md->dir=0; + if(i<1000){ + md->bl.x=md->to_x=x; + md->bl.y=md->to_y=y; + md->bl.m=m; + }else { + m=md->bl.m; + if(battle_config.error_log==1) + printf("MOB %d warp failed, class = %d\n",md->bl.id,md->class); + } + + md->target_id=0; // タゲを解除する + md->state.targettype=NONE_ATTACKABLE; + md->attacked_id=0; + md->state.skillstate=MSS_IDLE; + mob_changestate(md,MS_IDLE,0); + + if(type>0 && i==1000) { + if(battle_config.battle_log==1) + printf("MOB %d warp to (%d,%d), class = %d\n",md->bl.id,x,y,md->class); + } + + map_addblock(&md->bl); + if(type>0) { + clif_spawnmob(md); + mob_warpslave(md,md->bl.x,md->bl.y); + } + + return 0; +} + +/*========================================== + * 画面内の取り巻きの数計算用(foreachinarea) + *------------------------------------------ + */ +int mob_countslave_sub(struct block_list *bl,va_list ap) +{ + int id,*c; + struct mob_data *md; + + id=va_arg(ap,int); + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, c=va_arg(ap,int *)); + nullpo_retr(0, md = (struct mob_data *)bl); + + + if( md->master_id==id ) + (*c)++; + return 0; +} +/*========================================== + * 画面内の取り巻きの数計算 + *------------------------------------------ + */ +int mob_countslave(struct mob_data *md) +{ + int c=0; + + nullpo_retr(0, md); + + map_foreachinarea(mob_countslave_sub, md->bl.m, + 0,0,map[md->bl.m].xs-1,map[md->bl.m].ys-1, + BL_MOB,md->bl.id,&c); + return c; +} +/*========================================== + * 手下MOB召喚 + *------------------------------------------ + */ +int mob_summonslave(struct mob_data *md2,int *value,int amount,int flag) +{ + struct mob_data *md; + int bx,by,m,count = 0,class,k,a = amount; + + nullpo_retr(0, md2); + nullpo_retr(0, value); + + bx=md2->bl.x; + by=md2->bl.y; + m=md2->bl.m; + + if(value[0]<=1000 || value[0]>2000) // 値が異常なら召喚を止める + return 0; + while(count < 5 && value[count] > 1000 && value[count] <= 2000) count++; + if(count < 1) return 0; + + for(k=0;k2000) continue; + for(;amount>0;amount--){ + int x=0,y=0,c=0,i=0; + md=(struct mob_data *)aCalloc(1,sizeof(struct mob_data)); + if(mob_db[class].mode&0x02) + md->lootitem=(struct item *)aCalloc(LOOTITEM_SIZE,sizeof(struct item)); + else + md->lootitem=NULL; + + while((x<=0 || y<=0 || (c=map_getcell(m,x,y))==1 || c==5 ) && (i++)<100){ + x=rand()%9-4+bx; + y=rand()%9-4+by; + } + if(i>=100){ + x=bx; + y=by; + } + + mob_spawn_dataset(md,"--ja--",class); + md->bl.m=m; + md->bl.x=x; + md->bl.y=y; + + md->m =m; + md->x0=x; + md->y0=y; + md->xs=0; + md->ys=0; + md->speed=md2->speed; + md->spawndelay1=-1; // 一度のみフラグ + md->spawndelay2=-1; // 一度のみフラグ + + memset(md->npc_event,0,sizeof(md->npc_event)); + md->bl.type=BL_MOB; + map_addiddb(&md->bl); + mob_spawn(md->bl.id); + clif_skill_nodamage(&md->bl,&md->bl,(flag)? NPC_SUMMONSLAVE:NPC_SUMMONMONSTER,a,1); + + if(flag) + md->master_id=md2->bl.id; + } + } + return 0; +} + +/*========================================== + * 自分をロックしているPCの数を数える(foreachclient) + *------------------------------------------ + */ +static int mob_counttargeted_sub(struct block_list *bl,va_list ap) +{ + int id,*c,target_lv; + struct block_list *src; + + id=va_arg(ap,int); + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, c=va_arg(ap,int *)); + + src=va_arg(ap,struct block_list *); + target_lv=va_arg(ap,int); + if(id == bl->id || (src && id == src->id)) return 0; + if(bl->type == BL_PC) { + struct map_session_data *sd = (struct map_session_data *)bl; + if(sd && sd->attacktarget == id && sd->attacktimer != -1 && sd->attacktarget_lv >= target_lv) + (*c)++; + } + else if(bl->type == BL_MOB) { + struct mob_data *md = (struct mob_data *)bl; + if(md && md->target_id == id && md->timer != -1 && md->state.state == MS_ATTACK && md->target_lv >= target_lv) + (*c)++; + } + else if(bl->type == BL_PET) { + struct pet_data *pd = (struct pet_data *)bl; + if(pd->target_id == id && pd->timer != -1 && pd->state.state == MS_ATTACK && pd->target_lv >= target_lv) + (*c)++; + } + return 0; +} +/*========================================== + * 自分をロックしているPCの数を数える + *------------------------------------------ + */ +int mob_counttargeted(struct mob_data *md,struct block_list *src,int target_lv) +{ + int c=0; + + nullpo_retr(0, md); + + map_foreachinarea(mob_counttargeted_sub, md->bl.m, + md->bl.x-AREA_SIZE,md->bl.y-AREA_SIZE, + md->bl.x+AREA_SIZE,md->bl.y+AREA_SIZE,0,md->bl.id,&c,src,target_lv); + return c; +} + +/*========================================== + *MOBskillから該当skillidのskillidxを返す + *------------------------------------------ + */ +int mob_skillid2skillidx(int class,int skillid) +{ + int i; + struct mob_skill *ms=mob_db[class].skill; + + if(ms==NULL) + return -1; + + for(i=0;iid:%d\n",mbl->id); + return 0; + } + + if( md->bl.type!=BL_MOB || md->bl.prev==NULL ) + return 0; + + if( md->skilltimer != tid ) // タイマIDの確認 + return 0; + + md->skilltimer=-1; + //沈黙や状態異常など + if(md->sc_data){ + if(md->opt1>0 || md->sc_data[SC_DIVINA].timer != -1 || md->sc_data[SC_ROKISWEIL].timer != -1 || md->sc_data[SC_STEELBODY].timer != -1) + return 0; + if(md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター + return 0; + if(md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り + return 0; + if(md->sc_data[SC_BERSERK].timer != -1) //バーサーク + return 0; + } + if(md->skillid != NPC_EMOTION) + md->last_thinktime=tick + battle_get_adelay(&md->bl); + + if((bl = map_id2bl(md->skilltarget)) == NULL || bl->prev==NULL){ //スキルターゲットが存在しない + //printf("mobskill_castend_id nullpo\n");//ターゲットがいないときはnullpoじゃなくて普通に終了 + return 0; + } + if(md->bl.m != bl->m) + return 0; + + if(md->skillid == PR_LEXAETERNA) { + struct status_change *sc_data = battle_get_sc_data(bl); + if(sc_data && (sc_data[SC_FREEZE].timer != -1 || (sc_data[SC_STONE].timer != -1 && sc_data[SC_STONE].val2 == 0))) + return 0; + } + else if(md->skillid == RG_BACKSTAP) { + int dir = map_calc_dir(&md->bl,bl->x,bl->y),t_dir = battle_get_dir(bl); + int dist = distance(md->bl.x,md->bl.y,bl->x,bl->y); + if(bl->type != BL_SKILL && (dist == 0 || map_check_dir(dir,t_dir))) + return 0; + } + if( ( (skill_get_inf(md->skillid)&1) || (skill_get_inf2(md->skillid)&4) ) && // 彼我敵対関係チェック + battle_check_target(&md->bl,bl, BCT_ENEMY)<=0 ) + return 0; + range = skill_get_range(md->skillid,md->skilllv); + if(range < 0) + range = battle_get_range(&md->bl) - (range + 1); + if(range + battle_config.mob_skill_add_range < distance(md->bl.x,md->bl.y,bl->x,bl->y)) + return 0; + + md->skilldelay[md->skillidx]=tick; + + if(battle_config.mob_skill_log==1) + printf("MOB skill castend skill=%d, class = %d\n",md->skillid,md->class); + mob_stop_walking(md,0); + + switch( skill_get_nk(md->skillid) ) + { + // 攻撃系/吹き飛ばし系 + case 0: case 2: + skill_castend_damage_id(&md->bl,bl,md->skillid,md->skilllv,tick,0); + break; + case 1:// 支援系 + if(!mob_db[md->class].skill[md->skillidx].val[0] && + (md->skillid==AL_HEAL || (md->skillid==ALL_RESURRECTION && bl->type != BL_PC)) && battle_check_undead(battle_get_race(bl),battle_get_elem_type(bl)) ) + skill_castend_damage_id(&md->bl,bl,md->skillid,md->skilllv,tick,0); + else + skill_castend_nodamage_id(&md->bl,bl,md->skillid,md->skilllv,tick,0); + break; + } + + + return 0; +} + +/*========================================== + * スキル使用(詠唱完了、場所指定) + *------------------------------------------ + */ +int mobskill_castend_pos( int tid, unsigned int tick, int id,int data ) +{ + struct mob_data* md=NULL; + struct block_list *bl; + int range,maxcount; + + //mobskill_castend_id同様詠唱したMobが詠唱完了時にもういないというのはありそうなのでnullpoから除外 + if((bl=map_id2bl(id))==NULL) + return 0; + + nullpo_retr(0, md=(struct mob_data *)bl); + + if( md->bl.type!=BL_MOB || md->bl.prev==NULL ) + return 0; + + if( md->skilltimer != tid ) // タイマIDの確認 + return 0; + + md->skilltimer=-1; + if(md->sc_data){ + if(md->opt1>0 || md->sc_data[SC_DIVINA].timer != -1 || md->sc_data[SC_ROKISWEIL].timer != -1 || md->sc_data[SC_STEELBODY].timer != -1) + return 0; + if(md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター + return 0; + if(md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り + return 0; + if(md->sc_data[SC_BERSERK].timer != -1) //バーサーク + return 0; + } + + if(battle_config.monster_skill_reiteration == 0) { + range = -1; + switch(md->skillid) { + case MG_SAFETYWALL: + case WZ_FIREPILLAR: + case HT_SKIDTRAP: + case HT_LANDMINE: + case HT_ANKLESNARE: + case HT_SHOCKWAVE: + case HT_SANDMAN: + case HT_FLASHER: + case HT_FREEZINGTRAP: + case HT_BLASTMINE: + case HT_CLAYMORETRAP: + case PF_SPIDERWEB: /* スパイダーウェッブ */ + range = 0; + break; + case AL_PNEUMA: + case AL_WARP: + range = 1; + break; + } + if(range >= 0) { + if(skill_check_unit_range(md->bl.m,md->skillx,md->skilly,range,md->skillid) > 0) + return 0; + } + } + if(battle_config.monster_skill_nofootset==1) { + range = -1; + switch(md->skillid) { + case WZ_FIREPILLAR: + case HT_SKIDTRAP: + case HT_LANDMINE: + case HT_ANKLESNARE: + case HT_SHOCKWAVE: + case HT_SANDMAN: + case HT_FLASHER: + case HT_FREEZINGTRAP: + case HT_BLASTMINE: + case HT_CLAYMORETRAP: + case AM_DEMONSTRATION: + case PF_SPIDERWEB: /* スパイダーウェッブ */ + range = 1; + break; + case AL_WARP: + range = 0; + break; + } + if(range >= 0) { + if(skill_check_unit_range2(md->bl.m,md->skillx,md->skilly,range) > 0) + return 0; + } + } + + if(battle_config.monster_land_skill_limit==1) { + maxcount = skill_get_maxcount(md->skillid); + if(maxcount > 0) { + int i,c; + for(i=c=0;iskillunit[i].alive_count > 0 && md->skillunit[i].skill_id == md->skillid) + c++; + } + if(c >= maxcount) + return 0; + } + } + + range = skill_get_range(md->skillid,md->skilllv); + if(range < 0) + range = battle_get_range(&md->bl) - (range + 1); + if(range + battle_config.mob_skill_add_range < distance(md->bl.x,md->bl.y,md->skillx,md->skilly)) + return 0; + md->skilldelay[md->skillidx]=tick; + + if(battle_config.mob_skill_log==1) + printf("MOB skill castend skill=%d, class = %d\n",md->skillid,md->class); + mob_stop_walking(md,0); + + skill_castend_pos2(&md->bl,md->skillx,md->skilly,md->skillid,md->skilllv,tick,0); + + return 0; +} + + +/*========================================== + * Skill use (an aria start, ID specification) + *------------------------------------------ + */ +int mobskill_use_id(struct mob_data *md,struct block_list *target,int skill_idx) +{ + int casttime,range; + struct mob_skill *ms; + int skill_id, skill_lv, forcecast = 0; + + nullpo_retr(0, md); + nullpo_retr(0, ms=&mob_db[md->class].skill[skill_idx]); + + if( target==NULL && (target=map_id2bl(md->target_id))==NULL ) + return 0; + + if( target->prev==NULL || md->bl.prev==NULL ) + return 0; + + skill_id=ms->skill_id; + skill_lv=ms->skill_lv; + + // 沈黙や異常 + if(md->sc_data){ + if(md->opt1>0 || md->sc_data[SC_DIVINA].timer != -1 || md->sc_data[SC_ROKISWEIL].timer != -1 || md->sc_data[SC_STEELBODY].timer != -1) + return 0; + if(md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター + return 0; + if(md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り + return 0; + if(md->sc_data[SC_BERSERK].timer != -1) //バーサーク + return 0; + } + + if(md->option&4 && skill_id==TF_HIDING) + return 0; + if(md->option&2 && skill_id!=TF_HIDING && skill_id!=AS_GRIMTOOTH && skill_id!=RG_BACKSTAP && skill_id!=RG_RAID) + return 0; + + if(map[md->bl.m].flag.gvg && (skill_id == SM_ENDURE || skill_id == AL_TELEPORT || skill_id == AL_WARP || + skill_id == WZ_ICEWALL || skill_id == TF_BACKSLIDING)) + return 0; + + if(skill_get_inf2(skill_id)&0x200 && md->bl.id == target->id) + return 0; + + // 射程と障害物チェック + range = skill_get_range(skill_id,skill_lv); + if(range < 0) + range = battle_get_range(&md->bl) - (range + 1); + if(!battle_check_range(&md->bl,target,range)) + return 0; + +// delay=skill_delayfix(&md->bl, skill_get_delay( skill_id,skill_lv) ); + + casttime=skill_castfix(&md->bl,ms->casttime); + md->state.skillcastcancel=ms->cancel; + md->skilldelay[skill_idx]=gettick(); + + switch(skill_id){ /* 何か特殊な処理が必要 */ + case ALL_RESURRECTION: /* リザレクション */ + if(target->type != BL_PC && battle_check_undead(battle_get_race(target),battle_get_elem_type(target))){ /* 敵がアンデッドなら */ + forcecast=1; /* ターンアンデットと同じ詠唱時間 */ + casttime=skill_castfix(&md->bl, skill_get_cast(PR_TURNUNDEAD,skill_lv) ); + } + break; + case MO_EXTREMITYFIST: /*阿修羅覇鳳拳*/ + case SA_MAGICROD: + case SA_SPELLBREAKER: + forcecast=1; + break; + } + + if(battle_config.mob_skill_log==1) + printf("MOB skill use target_id=%d skill=%d lv=%d cast=%d, class = %d\n",target->id,skill_id,skill_lv,casttime,md->class); + + if(casttime>0 || forcecast){ // 詠唱が必要 +// struct mob_data *md2; + clif_skillcasting( &md->bl, + md->bl.id, target->id, 0,0, skill_id,casttime); + + // 詠唱反応モンスター +/* if( target->type==BL_MOB && mob_db[(md2=(struct mob_data *)target)->class].mode&0x10 && + md2->state.state!=MS_ATTACK){ + md2->target_id=md->bl.id; + md->state.targettype = ATTACKABLE; + md2->min_chase=13; + }*/ + } + + if( casttime<=0 ) // 詠唱の無いものはキャンセルされない + md->state.skillcastcancel=0; + + md->skilltarget = target->id; + md->skillx = 0; + md->skilly = 0; + md->skillid = skill_id; + md->skilllv = skill_lv; + md->skillidx = skill_idx; + + if(!(battle_config.monster_cloak_check_type&2) && md->sc_data[SC_CLOAKING].timer != -1 && md->skillid != AS_CLOAKING) + skill_status_change_end(&md->bl,SC_CLOAKING,-1); + + if( casttime>0 ){ + md->skilltimer = + add_timer( gettick()+casttime, mobskill_castend_id, md->bl.id, 0 ); + }else{ + md->skilltimer = -1; + mobskill_castend_id(md->skilltimer,gettick(),md->bl.id, 0); + } + + return 1; +} +/*========================================== + * スキル使用(場所指定) + *------------------------------------------ + */ +int mobskill_use_pos( struct mob_data *md, + int skill_x, int skill_y, int skill_idx) +{ + int casttime=0,range; + struct mob_skill *ms; + struct block_list bl; + int skill_id, skill_lv; + + nullpo_retr(0, md); + nullpo_retr(0, ms=&mob_db[md->class].skill[skill_idx]); + + if( md->bl.prev==NULL ) + return 0; + + skill_id=ms->skill_id; + skill_lv=ms->skill_lv; + + //沈黙や状態異常など + if(md->sc_data){ + if(md->opt1>0 || md->sc_data[SC_DIVINA].timer != -1 || md->sc_data[SC_ROKISWEIL].timer != -1 || md->sc_data[SC_STEELBODY].timer != -1) + return 0; + if(md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター + return 0; + if(md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り + return 0; + if(md->sc_data[SC_BERSERK].timer != -1) //バーサーク + return 0; + } + + if(md->option&2) + return 0; + + if(map[md->bl.m].flag.gvg && (skill_id == SM_ENDURE || skill_id == AL_TELEPORT || skill_id == AL_WARP || + skill_id == WZ_ICEWALL || skill_id == TF_BACKSLIDING)) + return 0; + + // 射程と障害物チェック + bl.type = BL_NUL; + bl.m = md->bl.m; + bl.x = skill_x; + bl.y = skill_y; + range = skill_get_range(skill_id,skill_lv); + if(range < 0) + range = battle_get_range(&md->bl) - (range + 1); + if(!battle_check_range(&md->bl,&bl,range)) + return 0; + +// delay=skill_delayfix(&sd->bl, skill_get_delay( skill_id,skill_lv) ); + casttime=skill_castfix(&md->bl,ms->casttime); + md->skilldelay[skill_idx]=gettick(); + md->state.skillcastcancel=ms->cancel; + + if(battle_config.mob_skill_log==1) + printf("MOB skill use target_pos=(%d,%d) skill=%d lv=%d cast=%d, class = %d\n", + skill_x,skill_y,skill_id,skill_lv,casttime,md->class); + + if( casttime>0 ) // A cast time is required. + clif_skillcasting( &md->bl, + md->bl.id, 0, skill_x,skill_y, skill_id,casttime); + + if( casttime<=0 ) // A skill without a cast time wont be cancelled. + md->state.skillcastcancel=0; + + + md->skillx = skill_x; + md->skilly = skill_y; + md->skilltarget = 0; + md->skillid = skill_id; + md->skilllv = skill_lv; + md->skillidx = skill_idx; + if(!(battle_config.monster_cloak_check_type&2) && md->sc_data[SC_CLOAKING].timer != -1) + skill_status_change_end(&md->bl,SC_CLOAKING,-1); + if( casttime>0 ){ + md->skilltimer = + add_timer( gettick()+casttime, mobskill_castend_pos, md->bl.id, 0 ); + }else{ + md->skilltimer = -1; + mobskill_castend_pos(md->skilltimer,gettick(),md->bl.id, 0); + } + + return 1; +} + + +/*========================================== + * Friendly Mob whose HP is decreasing by a nearby MOB is looked for. + *------------------------------------------ + */ +int mob_getfriendhpltmaxrate_sub(struct block_list *bl,va_list ap) +{ + int rate; + struct mob_data **fr, *md, *mmd; + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, mmd=va_arg(ap,struct mob_data *)); + + md=(struct mob_data *)bl; + + if( mmd->bl.id == bl->id ) + return 0; + rate=va_arg(ap,int); + fr=va_arg(ap,struct mob_data **); + if( md->hp < mob_db[md->class].max_hp*rate/100 ) + (*fr)=md; + return 0; +} +struct mob_data *mob_getfriendhpltmaxrate(struct mob_data *md,int rate) +{ + struct mob_data *fr=NULL; + const int r=8; + + nullpo_retr(NULL, md); + + map_foreachinarea(mob_getfriendhpltmaxrate_sub, md->bl.m, + md->bl.x-r ,md->bl.y-r, md->bl.x+r, md->bl.y+r, + BL_MOB,md,rate,&fr); + return fr; +} +/*========================================== + * What a status state suits by nearby MOB is looked for. + *------------------------------------------ + */ +int mob_getfriendstatus_sub(struct block_list *bl,va_list ap) +{ + int cond1,cond2; + struct mob_data **fr, *md, *mmd; + int flag=0; + + nullpo_retr(0, bl); + nullpo_retr(0, ap); + nullpo_retr(0, md=(struct mob_data *)bl); + nullpo_retr(0, mmd=va_arg(ap,struct mob_data *)); + + if( mmd->bl.id == bl->id ) + return 0; + cond1=va_arg(ap,int); + cond2=va_arg(ap,int); + fr=va_arg(ap,struct mob_data **); + if( cond2==-1 ){ + int j; + for(j=SC_STONE;j<=SC_BLIND && !flag;j++){ + flag=(md->sc_data[j].timer!=-1 ); + } + }else + flag=( md->sc_data[cond2].timer!=-1 ); + if( flag^( cond1==MSC_FRIENDSTATUSOFF ) ) + (*fr)=md; + + return 0; +} +struct mob_data *mob_getfriendstatus(struct mob_data *md,int cond1,int cond2) +{ + struct mob_data *fr=NULL; + const int r=8; + + nullpo_retr(0, md); + + map_foreachinarea(mob_getfriendstatus_sub, md->bl.m, + md->bl.x-r ,md->bl.y-r, md->bl.x+r, md->bl.y+r, + BL_MOB,md,cond1,cond2,&fr); + return fr; +} + +/*========================================== + * Skill use judging + *------------------------------------------ + */ +int mobskill_use(struct mob_data *md,unsigned int tick,int event) +{ + struct mob_skill *ms; +// struct block_list *target=NULL; + int i,max_hp; + + nullpo_retr(0, md); + nullpo_retr(0, ms = mob_db[md->class].skill); + + max_hp = battle_get_max_hp(&md->bl); + + if(battle_config.mob_skill_use == 0 || md->skilltimer != -1) + return 0; + + if(md->state.special_mob_ai) + return 0; + + if(md->sc_data[SC_SELFDESTRUCTION].timer!=-1) //自爆中はスキルを使わない + return 0; + + for(i=0;iclass].maxskill;i++){ + int c2=ms[i].cond2,flag=0; + struct mob_data *fmd=NULL; + + // ディレイ中 + if( DIFF_TICK(tick,md->skilldelay[i])=0 && ms[i].state!=md->state.skillstate ) + continue; + + // 条件判定 + flag=(event==ms[i].cond1); + if(!flag){ + switch( ms[i].cond1 ){ + case MSC_ALWAYS: + flag=1; break; + case MSC_MYHPLTMAXRATE: // HP< maxhp% + flag=( md->hp < max_hp*c2/100 ); break; + case MSC_MYSTATUSON: // status[num] on + case MSC_MYSTATUSOFF: // status[num] off + if( ms[i].cond2==-1 ){ + int j; + for(j=SC_STONE;j<=SC_BLIND && !flag;j++){ + flag=(md->sc_data[j].timer!=-1 ); + } + }else + flag=( md->sc_data[ms[i].cond2].timer!=-1 ); + flag^=( ms[i].cond1==MSC_MYSTATUSOFF ); break; + case MSC_FRIENDHPLTMAXRATE: // friend HP < maxhp% + flag=(( fmd=mob_getfriendhpltmaxrate(md,ms[i].cond2) )!=NULL ); break; + case MSC_FRIENDSTATUSON: // friend status[num] on + case MSC_FRIENDSTATUSOFF: // friend status[num] off + flag=(( fmd=mob_getfriendstatus(md,ms[i].cond1,ms[i].cond2) )!=NULL ); break; + case MSC_SLAVELT: // slave < num + flag=( mob_countslave(md) < c2 ); break; + case MSC_ATTACKPCGT: // attack pc > num + flag=( mob_counttargeted(md,NULL,0) > c2 ); break; + case MSC_SLAVELE: // slave <= num + flag=( mob_countslave(md) <= c2 ); break; + case MSC_ATTACKPCGE: // attack pc >= num + flag=( mob_counttargeted(md,NULL,0) >= c2 ); break; + case MSC_SKILLUSED: // specificated skill used + flag=( (event&0xffff)==MSC_SKILLUSED && ((event>>16)==c2 || c2==0)); break; + } + } + + // 確率判定 + if( flag && rand()%10000 < ms[i].permillage ){ + + if( skill_get_inf(ms[i].skill_id)&2 ){ + // 場所指定 + struct block_list *bl = NULL; + int x=0,y=0; + if( ms[i].target<=MST_AROUND ){ + bl= ((ms[i].target==MST_TARGET || ms[i].target==MST_AROUND5)? map_id2bl(md->target_id): + (ms[i].target==MST_FRIEND)? &fmd->bl : &md->bl); + if(bl!=NULL){ + x=bl->x; y=bl->y; + } + } + if( x<=0 || y<=0 ) + continue; + // 自分の周囲 + if( ms[i].target>=MST_AROUND1 ){ + int bx=x, by=y, i=0, c, m=bl->m, r=ms[i].target-MST_AROUND1; + do{ + bx=x + rand()%(r*2+3) - r; + by=y + rand()%(r*2+3) - r; + }while( ( bx<=0 || by<=0 || bx>=map[m].xs || by>=map[m].ys || + ((c=read_gat(m,bx,by))==1 || c==5) ) && (i++)<1000); + if(i<1000){ + x=bx; y=by; + } + } + // 相手の周囲 + if( ms[i].target>=MST_AROUND5 ){ + int bx=x, by=y, i=0, c, m=bl->m, r=(ms[i].target-MST_AROUND5)+1; + do{ + bx=x + rand()%(r*2+1) - r; + by=y + rand()%(r*2+1) - r; + }while( ( bx<=0 || by<=0 || bx>=map[m].xs || by>=map[m].ys || + ((c=read_gat(m,bx,by))==1 || c==5) ) && (i++)<1000); + if(i<1000){ + x=bx; y=by; + } + } + if(!mobskill_use_pos(md,x,y,i)) + return 0; + + }else{ + // ID指定 + if( ms[i].target<=MST_FRIEND ){ + struct block_list *bl = NULL; + bl= ((ms[i].target==MST_TARGET)? map_id2bl(md->target_id): + (ms[i].target==MST_FRIEND)? &fmd->bl : &md->bl); + if(bl && !mobskill_use_id(md,bl,i)) + return 0; + } + } + if(ms[i].emotion >= 0) + clif_emotion(&md->bl,ms[i].emotion); + return 1; + } + } + + return 0; +} +/*========================================== + * Skill use event processing + *------------------------------------------ + */ +int mobskill_event(struct mob_data *md,int flag) +{ + nullpo_retr(0, md); + + if(flag==-1 && mobskill_use(md,gettick(),MSC_CASTTARGETED)) + return 1; + if( (flag&BF_SHORT) && mobskill_use(md,gettick(),MSC_CLOSEDATTACKED)) + return 1; + if( (flag&BF_LONG) && mobskill_use(md,gettick(),MSC_LONGRANGEATTACKED)) + return 1; + return 0; +} +/*========================================== + * Mobがエンペリウムなどの場合の判定 + *------------------------------------------ + */ +int mob_gvmobcheck(struct map_session_data *sd, struct block_list *bl) +{ + struct mob_data *md=NULL; + + nullpo_retr(0,sd); + nullpo_retr(0,bl); + + if(bl->type==BL_MOB && (md=(struct mob_data *)bl) && + (md->class == 1288 || md->class == 1287 || md->class == 1286 || md->class == 1285)) + { + struct guild_castle *gc=guild_mapname2gc(map[sd->bl.m].name); + struct guild *g=guild_search(sd->status.guild_id); + + if(g == NULL && md->class == 1288) + return 0;//ギルド未加入ならダメージ無し + else if(gc != NULL && !map[sd->bl.m].flag.gvg) + return 0;//砦内でGvじゃないときはダメージなし + else if(g && gc != NULL && g->guild_id == gc->guild_id) + return 0;//自占領ギルドのエンペならダメージ無し + else if(g && guild_checkskill(g,GD_APPROVAL) <= 0 && md->class == 1288) + return 0;//正規ギルド承認がないとダメージ無し + + } + + return 1; +} +/*========================================== + * スキル用タイマー削除 + *------------------------------------------ + */ +int mobskill_deltimer(struct mob_data *md ) +{ + nullpo_retr(0, md); + + if( md->skilltimer!=-1 ){ + if( skill_get_inf( md->skillid )&2 ) + delete_timer( md->skilltimer, mobskill_castend_pos ); + else + delete_timer( md->skilltimer, mobskill_castend_id ); + md->skilltimer=-1; + } + return 0; +} +// +// 初期化 +// +/*========================================== + * Since un-setting [ mob ] up was used, it is an initial provisional value setup. + *------------------------------------------ + */ +static int mob_makedummymobdb(int class) +{ + int i; + + sprintf(mob_db[class].name,"mob%d",class); + sprintf(mob_db[class].jname,"mob%d",class); + mob_db[class].lv=1; + mob_db[class].max_hp=1000; + mob_db[class].max_sp=1; + mob_db[class].base_exp=2; + mob_db[class].job_exp=1; + mob_db[class].range=1; + mob_db[class].atk1=7; + mob_db[class].atk2=10; + mob_db[class].def=0; + mob_db[class].mdef=0; + mob_db[class].str=1; + mob_db[class].agi=1; + mob_db[class].vit=1; + mob_db[class].int_=1; + mob_db[class].dex=6; + mob_db[class].luk=2; + mob_db[class].range2=10; + mob_db[class].range3=10; + mob_db[class].size=0; + mob_db[class].race=0; + mob_db[class].element=0; + mob_db[class].mode=0; + mob_db[class].speed=300; + mob_db[class].adelay=1000; + mob_db[class].amotion=500; + mob_db[class].dmotion=500; + mob_db[class].dropitem[0].nameid=909; // Jellopy + mob_db[class].dropitem[0].p=1000; + for(i=1;i<8;i++){ + mob_db[class].dropitem[i].nameid=0; + mob_db[class].dropitem[i].p=0; + } + // Item1,Item2 + mob_db[class].mexp=0; + mob_db[class].mexpper=0; + for(i=0;i<3;i++){ + mob_db[class].mvpitem[i].nameid=0; + mob_db[class].mvpitem[i].p=0; + } + for(i=0;i0) + continue; + return -1; + } + while(fgets(line,1020,fp)){ + int class,i; + char *str[55],*p,*np; + + if(line[0] == '/' && line[1] == '/') + continue; + + for(i=0,p=line;i<55;i++){ + if((np=strchr(p,','))!=NULL){ + str[i]=p; + *np=0; + p=np+1; + } else + str[i]=p; + } + + class=atoi(str[0]); + if(class<=1000 || class>2000) + continue; + + mob_db[class].view_class=class; + memcpy(mob_db[class].name,str[1],24); + memcpy(mob_db[class].jname,str[2],24); + mob_db[class].lv=atoi(str[3]); + mob_db[class].max_hp=atoi(str[4]); + mob_db[class].max_sp=atoi(str[5]); + + mob_db[class].base_exp=atoi(str[6]); + if(mob_db[class].base_exp < 0) + mob_db[class].base_exp = 0; + else if(mob_db[class].base_exp > 0 && (mob_db[class].base_exp*battle_config.base_exp_rate/100 > 1000000000 || + mob_db[class].base_exp*battle_config.base_exp_rate/100 < 0)) + mob_db[class].base_exp=1000000000; + else + mob_db[class].base_exp*= battle_config.base_exp_rate/100; + + mob_db[class].job_exp=atoi(str[7]); + if(mob_db[class].job_exp < 0) + mob_db[class].job_exp = 0; + else if(mob_db[class].job_exp > 0 && (mob_db[class].job_exp*battle_config.job_exp_rate/100 > 1000000000 || + mob_db[class].job_exp*battle_config.job_exp_rate/100 < 0)) + mob_db[class].job_exp=1000000000; + else + mob_db[class].job_exp*=battle_config.job_exp_rate/100; + + mob_db[class].range=atoi(str[8]); + mob_db[class].atk1=atoi(str[9]); + mob_db[class].atk2=atoi(str[10]); + mob_db[class].def=atoi(str[11]); + mob_db[class].mdef=atoi(str[12]); + mob_db[class].str=atoi(str[13]); + mob_db[class].agi=atoi(str[14]); + mob_db[class].vit=atoi(str[15]); + mob_db[class].int_=atoi(str[16]); + mob_db[class].dex=atoi(str[17]); + mob_db[class].luk=atoi(str[18]); + mob_db[class].range2=atoi(str[19]); + mob_db[class].range3=atoi(str[20]); + mob_db[class].size=atoi(str[21]); + mob_db[class].race=atoi(str[22]); + mob_db[class].element=atoi(str[23]); + mob_db[class].mode=atoi(str[24]); + mob_db[class].speed=atoi(str[25]); + mob_db[class].adelay=atoi(str[26]); + mob_db[class].amotion=atoi(str[27]); + mob_db[class].dmotion=atoi(str[28]); + + for(i=0;i<8;i++){ + int rate = 0,type,ratemin,ratemax; + mob_db[class].dropitem[i].nameid=atoi(str[29+i*2]); + type = itemdb_type(mob_db[class].dropitem[i].nameid); + if (type == 0) { // Added [Valaris] + rate = battle_config.item_rate_heal; + ratemin = battle_config.item_drop_heal_min; + ratemax = battle_config.item_drop_heal_max; + } + else if (type == 2) { + rate = battle_config.item_rate_use; + ratemin = battle_config.item_drop_use_min; + ratemax = battle_config.item_drop_use_max; // End + } + else if (type == 4 || type == 5 || type == 8) { // Changed to include Pet Equip + rate = battle_config.item_rate_equip; + ratemin = battle_config.item_drop_equip_min; + ratemax = battle_config.item_drop_equip_max; + } + else if (type == 6) { + rate = battle_config.item_rate_card; + ratemin = battle_config.item_drop_card_min; + ratemax = battle_config.item_drop_card_max; + } + else { + rate = battle_config.item_rate_common; + ratemin = battle_config.item_drop_common_min; + ratemax = battle_config.item_drop_common_max; + } + rate = (rate / 100) * atoi(str[30+i*2]); + rate = (rate < ratemin)? ratemin: (rate > ratemax)? ratemax: rate; + mob_db[class].dropitem[i].p = rate; + } + // Item1,Item2 + mob_db[class].mexp=atoi(str[45])*battle_config.mvp_exp_rate/100; + mob_db[class].mexpper=atoi(str[46]); + for(i=0;i<3;i++){ + mob_db[class].mvpitem[i].nameid=atoi(str[47+i*2]); + mob_db[class].mvpitem[i].p=atoi(str[48+i*2])*battle_config.mvp_item_rate/100; + } + for(i=0;i2000) // 値が異常なら処理しない。 + continue; + k=atoi(str[1]); + if(k >= 0) + mob_db[class].view_class=k; + + if((mob_db[class].view_class < 24) || (mob_db[class].view_class > 4000)) { + mob_db[class].sex=atoi(str[2]); + mob_db[class].hair=atoi(str[3]); + mob_db[class].hair_color=atoi(str[4]); + mob_db[class].weapon=atoi(str[5]); + mob_db[class].shield=atoi(str[6]); + mob_db[class].head_top=atoi(str[7]); + mob_db[class].head_mid=atoi(str[8]); + mob_db[class].head_buttom=atoi(str[9]); + mob_db[class].option=atoi(str[10])&~0x46; + mob_db[class].clothes_color=atoi(str[11]); // Monster player dye option - Valaris + } + + else if(atoi(str[2]) > 0) mob_db[class].equip=atoi(str[2]); // mob equipment [Valaris] + + ln++; + } + fclose(fp); + printf("read db/mob_avail.txt done (count=%d)\n",ln); + return 0; +} + +/*========================================== + * Reading of random monster data + *------------------------------------------ + */ +static int mob_read_randommonster(void) +{ + FILE *fp; + char line[1024]; + char *str[10],*p; + int i,j; + + const char* mobfile[] = { + "db/mob_branch.txt", + "db/mob_poring.txt", + "db/mob_boss.txt" }; + + for(i=0;i1000 && class<=2000) || class==0) + mob_db[class].summonper[i]=per; + } + fclose(fp); + printf("read %s done\n",mobfile[i]); + } + return 0; +} +/*========================================== + * db/mob_skill_db.txt reading + *------------------------------------------ + */ +static int mob_readskilldb(void) +{ + FILE *fp; + char line[1024]; + int i; + + const struct { + char str[32]; + int id; + } cond1[] = { + { "always", MSC_ALWAYS }, + { "myhpltmaxrate", MSC_MYHPLTMAXRATE }, + { "friendhpltmaxrate",MSC_FRIENDHPLTMAXRATE }, + { "mystatuson", MSC_MYSTATUSON }, + { "mystatusoff", MSC_MYSTATUSOFF }, + { "friendstatuson", MSC_FRIENDSTATUSON }, + { "friendstatusoff", MSC_FRIENDSTATUSOFF }, + { "attackpcgt", MSC_ATTACKPCGT }, + { "attackpcge", MSC_ATTACKPCGE }, + { "slavelt", MSC_SLAVELT }, + { "slavele", MSC_SLAVELE }, + { "closedattacked", MSC_CLOSEDATTACKED }, + { "longrangeattacked",MSC_LONGRANGEATTACKED }, + { "skillused", MSC_SKILLUSED }, + { "casttargeted", MSC_CASTTARGETED }, + }, cond2[] ={ + { "anybad", -1 }, + { "stone", SC_STONE }, + { "freeze", SC_FREEZE }, + { "stan", SC_STAN }, + { "sleep", SC_SLEEP }, + { "poison", SC_POISON }, + { "curse", SC_CURSE }, + { "silence", SC_SILENCE }, + { "confusion", SC_CONFUSION }, + { "blind", SC_BLIND }, + { "hiding", SC_HIDING }, + { "sight", SC_SIGHT }, + }, state[] = { + { "any", -1 }, + { "idle", MSS_IDLE }, + { "walk", MSS_WALK }, + { "attack", MSS_ATTACK }, + { "dead", MSS_DEAD }, + { "loot", MSS_LOOT }, + { "chase", MSS_CHASE }, + }, target[] = { + { "target", MST_TARGET }, + { "self", MST_SELF }, + { "friend", MST_FRIEND }, + { "around5", MST_AROUND5 }, + { "around6", MST_AROUND6 }, + { "around7", MST_AROUND7 }, + { "around8", MST_AROUND8 }, + { "around1", MST_AROUND1 }, + { "around2", MST_AROUND2 }, + { "around3", MST_AROUND3 }, + { "around4", MST_AROUND4 }, + { "around", MST_AROUND }, + }; + + int x; + char *filename[]={ "db/mob_skill_db.txt","db/mob_skill_db2.txt" }; + + for(x=0;x<2;x++){ + + fp=fopen(filename[x],"r"); + if(fp==NULL){ + if(x==0) + printf("can't read %s\n",filename[x]); + continue; + } + while(fgets(line,1020,fp)){ + char *sp[20],*p; + int mob_id; + struct mob_skill *ms; + int j=0; + + if(line[0] == '/' && line[1] == '/') + continue; + + memset(sp,0,sizeof(sp)); + for(i=0,p=line;i<18 && p;i++){ + sp[i]=p; + if((p=strchr(p,','))!=NULL) + *p++=0; + } + if( (mob_id=atoi(sp[0]))<=0 ) + continue; + + if( strcmp(sp[1],"clear")==0 ){ + memset(mob_db[mob_id].skill,0,sizeof(mob_db[mob_id].skill)); + mob_db[mob_id].maxskill=0; + continue; + } + + for(i=0;iskill_id == 0) + break; + if(i==MAX_MOBSKILL){ + printf("mob_skill: readdb: too many skill ! [%s] in %d[%s]\n", + sp[1],mob_id,mob_db[mob_id].jname); + continue; + } + + ms->state=atoi(sp[2]); + for(j=0;jstate=state[j].id; + } + ms->skill_id=atoi(sp[3]); + ms->skill_lv=atoi(sp[4]); + ms->permillage=atoi(sp[5]); + ms->casttime=atoi(sp[6]); + ms->delay=atoi(sp[7]); + ms->cancel=atoi(sp[8]); + if( strcmp(sp[8],"yes")==0 ) ms->cancel=1; + ms->target=atoi(sp[9]); + for(j=0;jtarget=target[j].id; + } + ms->cond1=-1; + for(j=0;jcond1=cond1[j].id; + } + ms->cond2=atoi(sp[11]); + for(j=0;jcond2=cond2[j].id; + } + ms->val[0]=atoi(sp[12]); + ms->val[1]=atoi(sp[13]); + ms->val[2]=atoi(sp[14]); + ms->val[3]=atoi(sp[15]); + ms->val[4]=atoi(sp[16]); + if(sp[17] != NULL && strlen(sp[17])>2) + ms->emotion=atoi(sp[17]); + else + ms->emotion=-1; + mob_db[mob_id].maxskill=i+1; + } + fclose(fp); + printf("read %s done\n",filename[x]); + } + return 0; +} + +void mob_reload(void) +{ + /* + + + mob_read(); + + */ + + do_init_mob(); +} + +#ifndef TXT_ONLY +/*========================================== + * SQL reading + *------------------------------------------ + */ +static int mob_read_sqldb(void) +{ + char line[1024]; + int i,class,ln=0; + char *str[55],*p,*np; + + memset(mob_db,0,sizeof(mob_db)); + + sprintf (tmp_sql, "SELECT * FROM `%s`",mob_db_db); + if(mysql_query(&mmysql_handle, tmp_sql) ) { + printf("DB server Error (select %s to Memory)- %s\n",mob_db_db,mysql_error(&mmysql_handle) ); + } + sql_res = mysql_store_result(&mmysql_handle); + if (sql_res) { + while((sql_row = mysql_fetch_row(sql_res))){ + sprintf(line,"%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s", + sql_row[0],sql_row[1],sql_row[2],sql_row[3],sql_row[4], + sql_row[5],sql_row[6],sql_row[7],sql_row[8],sql_row[9], + sql_row[10],sql_row[11],sql_row[12],sql_row[13],sql_row[14], + sql_row[15],sql_row[16],sql_row[17],sql_row[18],sql_row[19], + sql_row[20],sql_row[21],sql_row[22],sql_row[23],sql_row[24], + sql_row[25],sql_row[26],sql_row[27],sql_row[28],sql_row[29], + sql_row[30],sql_row[31],sql_row[32],sql_row[33],sql_row[34], + sql_row[35],sql_row[36],sql_row[37],sql_row[38],sql_row[39], + sql_row[40],sql_row[41],sql_row[42],sql_row[43],sql_row[44], + sql_row[45],sql_row[46],sql_row[47],sql_row[48],sql_row[49], + sql_row[50],sql_row[51],sql_row[52]); + + for(i=0,p=line;i<55;i++){ + if((np=strchr(p,','))!=NULL){ + str[i]=p; + *np=0; + p=np+1; + } else + str[i]=p; + } + + class=atoi(str[0]); + if(class<=1000 || class>2000) + continue; + + ln++; + + mob_db[class].view_class=class; + memcpy(mob_db[class].name,str[1],24); + memcpy(mob_db[class].jname,str[2],24); + mob_db[class].lv=atoi(str[3]); + mob_db[class].max_hp=atoi(str[4]); + mob_db[class].max_sp=atoi(str[5]); + mob_db[class].base_exp=atoi(str[6])* + battle_config.base_exp_rate/100; + if(mob_db[class].base_exp <= 0) + mob_db[class].base_exp = 1; + mob_db[class].job_exp=atoi(str[7])* + battle_config.job_exp_rate/100; + if(mob_db[class].job_exp <= 0) + mob_db[class].job_exp = 1; + mob_db[class].range=atoi(str[8]); + mob_db[class].atk1=atoi(str[9]); + mob_db[class].atk2=atoi(str[10]); + mob_db[class].def=atoi(str[11]); + mob_db[class].mdef=atoi(str[12]); + mob_db[class].str=atoi(str[13]); + mob_db[class].agi=atoi(str[14]); + mob_db[class].vit=atoi(str[15]); + mob_db[class].int_=atoi(str[16]); + mob_db[class].dex=atoi(str[17]); + mob_db[class].luk=atoi(str[18]); + mob_db[class].range2=atoi(str[19]); + mob_db[class].range3=atoi(str[20]); + mob_db[class].size=atoi(str[21]); + mob_db[class].race=atoi(str[22]); + mob_db[class].element=atoi(str[23]); + mob_db[class].mode=atoi(str[24]); + mob_db[class].speed=atoi(str[25]); + mob_db[class].adelay=atoi(str[26]); + mob_db[class].amotion=atoi(str[27]); + mob_db[class].dmotion=atoi(str[28]); + + for(i=0;i<8;i++){ + int rate = 0,type,ratemin,ratemax; + mob_db[class].dropitem[i].nameid=atoi(str[29+i*2]); + type = itemdb_type(mob_db[class].dropitem[i].nameid); + if (type == 0) { // Added by Valaris + rate = battle_config.item_rate_heal; + ratemin = battle_config.item_drop_heal_min; + ratemax = battle_config.item_drop_heal_max; + } + else if (type == 2) { + rate = battle_config.item_rate_use; + ratemin = battle_config.item_drop_use_min; + ratemax = battle_config.item_drop_use_max; // End + } + else if (type == 4 || type == 5 || type == 8) { // Changed to include Pet Equip + rate = battle_config.item_rate_equip; + ratemin = battle_config.item_drop_equip_min; + ratemax = battle_config.item_drop_equip_max; + } + else if (type == 6) { + rate = battle_config.item_rate_card; + ratemin = battle_config.item_drop_card_min; + ratemax = battle_config.item_drop_card_max; + } + else { + rate = battle_config.item_rate_common; + ratemin = battle_config.item_drop_common_min; + ratemax = battle_config.item_drop_common_max; + } + rate = (rate / 100) * atoi(str[30+i*2]); + rate = (rate < ratemin)? ratemin: (rate > ratemax)? ratemax: rate; + mob_db[class].dropitem[i].p = rate; + } + + mob_db[class].mexp=atoi(str[45])*battle_config.mvp_exp_rate/100; + mob_db[class].mexpper=atoi(str[46]); + for(i=0;i<3;i++){ + mob_db[class].mvpitem[i].nameid=atoi(str[47+i*2]); + mob_db[class].mvpitem[i].p=atoi(str[48+i*2])*battle_config.mvp_item_rate/100; + } + for(i=0;i Date: Sat, 6 Nov 2004 00:29:40 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@22 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/mob.c | 96 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 49 insertions(+), 47 deletions(-) (limited to 'src/map/mob.c') diff --git a/src/map/mob.c b/src/map/mob.c index 46e367371..0d26676b8 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -565,11 +565,11 @@ static int mob_attack(struct mob_data *md,unsigned int tick,int data) return 0; if(tsd){ - if( pc_isdead(tsd) || tsd->invincible_timer != -1 || pc_isinvisible(tsd) || md->bl.m != tbl->m || tbl->prev == NULL || distance(md->bl.x,md->bl.y,tbl->x,tbl->y)>=13 ){ - md->target_id=0; - md->state.targettype = NONE_ATTACKABLE; - return 0; - } + if(pc_isdead(tsd) || tsd->invincible_timer != -1 || pc_isinvisible(tsd) || md->bl.m != tbl->m || tbl->prev == NULL || distance(md->bl.x,md->bl.y,tbl->x,tbl->y)>=13 ){ + md->target_id=0; + md->state.targettype = NONE_ATTACKABLE; + return 0; + } } if(tmd){ if(md->bl.m != tbl->m || tbl->prev == NULL || distance(md->bl.x,md->bl.y,tbl->x,tbl->y)>=13){ @@ -581,7 +581,7 @@ static int mob_attack(struct mob_data *md,unsigned int tick,int data) if(!md->mode) - mode=mob_db[md->class].mode; + mode=mob_db[md->class].mode; else mode=md->mode; @@ -795,11 +795,10 @@ int mob_walktoxy(struct mob_data *md,int x,int y,int easy) md->state.walk_easy = easy; md->to_x=x; md->to_y=y; - if(md->state.state == MS_WALK) { + if(md->state.state == MS_WALK) md->state.change_walk_target=1; - } else { + else return mob_walktoxy_sub(md); - } return 0; } @@ -850,14 +849,12 @@ int mob_setdelayspawn(int id) spawntime2=md->last_deadtime+md->spawndelay2; spawntime3=gettick()+5000; // spawntime = max(spawntime1,spawntime2,spawntime3); - if(DIFF_TICK(spawntime1,spawntime2)>0){ + if(DIFF_TICK(spawntime1,spawntime2)>0) spawntime=spawntime1; - } else { + else spawntime=spawntime2; - } - if(DIFF_TICK(spawntime3,spawntime)>0){ + if(DIFF_TICK(spawntime3,spawntime)>0) spawntime=spawntime3; - } add_timer(spawntime,mob_delayspawn,id,0); return 0; @@ -924,7 +921,7 @@ int mob_spawn(int id) md->move_fail_count = 0; if(!md->speed) - md->speed = mob_db[md->class].speed; + md->speed = mob_db[md->class].speed; md->def_ele = mob_db[md->class].element; md->master_id=0; md->master_dist=0; @@ -936,6 +933,13 @@ int mob_spawn(int id) md->next_walktime = tick+rand()%50+5000; md->attackabletime = tick; md->canmove_tick = tick; + + md->guild_id = 0; + if (md->class >= 1285 && md->class <= 1288) { + struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name); + if(gc) + md->guild_id = gc->guild_id; + } md->sg_count=0; md->deletetimer=-1; @@ -1062,7 +1066,7 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range) //=========== guildcastle guardian no search start=========== //when players are the guild castle member not attack them ! - if(md->class == 1285 || md->class == 1286 || md->class == 1287){ + if(md->class >= 1285 && md->class <= 1287){ struct map_session_data *sd; struct guild *g=NULL; struct guild_castle *gc=guild_mapname2gc(map[bl->m].name); @@ -1071,11 +1075,9 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range) return 0; // end addition [Valaris] if(bl && bl->type == BL_PC){ - if((sd=(struct map_session_data *)bl) == NULL){ - printf("mob_can_reach nullpo\n"); + nullpo_retr(0, sd=(struct map_session_data *)bl); + if(!gc) return 0; - } - if(gc && sd && sd->status.guild_id && sd->status.guild_id>0) { g=guild_search(sd->status.guild_id); // don't attack guild members [Valaris] if(g && g->guild_id > 0 && g->guild_id == gc->guild_id) @@ -1143,11 +1145,11 @@ int mob_target(struct mob_data *md,struct block_list *bl,int dist) option = battle_get_option(bl); race=mob_db[md->class].race; - if(!md->mode){ + if(!md->mode) mode=mob_db[md->class].mode; - }else{ + else mode=md->mode; - } + if(!(mode&0x80)) { md->target_id = 0; return 0; @@ -1264,11 +1266,11 @@ static int mob_ai_sub_hard_lootsearch(struct block_list *bl,va_list ap) nullpo_retr(0, md=va_arg(ap,struct mob_data *)); nullpo_retr(0, itc=va_arg(ap,int *)); - if(!md->mode){ - mode=mob_db[md->class].mode; - }else{ + if(!md->mode) + mode=mob_db[md->class].mode; + else mode=md->mode; - } + if( !md->target_id && mode&0x02){ if(!md->lootitem || (battle_config.monster_loot_type == 1 && md->lootitem_count >= LOOTITEM_SIZE) ) @@ -1536,7 +1538,7 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) } if(!md->mode) - mode=mob_db[md->class].mode; + mode=mob_db[md->class].mode; else mode=md->mode; @@ -1603,7 +1605,7 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) md->bl.x-AREA_SIZE*2,md->bl.y-AREA_SIZE*2, md->bl.x+AREA_SIZE*2,md->bl.y+AREA_SIZE*2, BL_PC,md,&i); - } + } } // The item search of a route monster @@ -1650,10 +1652,10 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) if(i==0){ // 最初はAEGISと同じ方法で検索 dx=tbl->x - md->bl.x; dy=tbl->y - md->bl.y; - if(dx<0) dx++; - else if(dx>0) dx--; - if(dy<0) dy++; - else if(dy>0) dy--; + if(dx<0) dx++; + else if(dx>0) dx--; + if(dy<0) dy++; + else if(dy>0) dy--; }else{ // だめならAthena式(ランダム) dx=tbl->x - md->bl.x + rand()%3 - 1; dy=tbl->y - md->bl.y + rand()%3 - 1; @@ -1661,10 +1663,10 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) /* if(path_search(&md->walkpath,md->bl.m,md->bl.x,md->bl.y,md->bl.x+dx,md->bl.y+dy,0)){ dx=tsd->bl.x - md->bl.x; dy=tsd->bl.y - md->bl.y; - if(dx<0) dx--; - else if(dx>0) dx++; - if(dy<0) dy--; - else if(dy>0) dy++; + if(dx<0) dx--; + else if(dx>0) dx++; + if(dy<0) dy--; + else if(dy>0) dy++; }*/ ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); i++; @@ -1686,7 +1688,7 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) return 0; // 既に攻撃中 mob_changestate(md,MS_ATTACK,attack_type); -/* if(mode&0x08){ // リンクモンスター +/* if(mode&0x08){ // リンクモンスター map_foreachinarea(mob_ai_sub_hard_linksearch,md->bl.m, md->bl.x-13,md->bl.y-13, md->bl.x+13,md->bl.y+13, @@ -1703,24 +1705,24 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) mob_stop_walking(md,1); // 歩行中なら停止 }else if(dist){ if(!(mode&1)){ // 移動しないモード - mob_unlocktarget(md,tick); - return 0; - } + mob_unlocktarget(md,tick); + return 0; + } if( !mob_can_move(md) ) // 動けない状態にある - return 0; + return 0; md->state.skillstate=MSS_LOOT; // ルート時スキル使用 - mobskill_use(md,tick,-1); + mobskill_use(md,tick,-1); // if(md->timer != -1 && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tbl->x,tbl->y)<2) ) if(md->timer != -1 && md->state.state!=MS_ATTACK && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tbl->x,tbl->y) <= 0)) return 0; // 既に移動中 - md->next_walktime=tick+500; + md->next_walktime=tick+500; dx=tbl->x - md->bl.x; dy=tbl->y - md->bl.y; -/* if(path_search(&md->walkpath,md->bl.m,md->bl.x,md->bl.y,md->bl.x+dx,md->bl.y+dy,0)){ +/* if(path_search(&md->walkpath,md->bl.m,md->bl.x,md->bl.y,md->bl.x+dx,md->bl.y+dy,0)){ dx=tbl->x - md->bl.x; dy=tbl->y - md->bl.y; - }*/ - ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); + }*/ + ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); if(ret) mob_unlocktarget(md,tick);// 移動できないのでタゲ解除(IWとか?) }else{ // アイテムまでたどり着いた -- cgit v1.2.3-70-g09d2 From 191e45bc7fd698707a8e19b67245398188b8880f Mon Sep 17 00:00:00 2001 From: codemaster Date: Sat, 6 Nov 2004 16:36:21 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@24 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/clif.c | 8 ++++---- src/map/mob.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/map/mob.c') diff --git a/src/map/clif.c b/src/map/clif.c index ecd165ac4..d33cbe2a6 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -1147,14 +1147,14 @@ static int clif_mob0078(struct mob_data *md, unsigned char *buf) WBUFB(buf,45)=mob_get_sex(md->class); } - if (md->class >= 1285 && md->class <= 1287) { // Added guardian emblems [Valaris] + if (md->class >= 1285 && md->class <= 1287 && md->guild_id) { // Added guardian emblems [Valaris] struct guild *g; struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name); if (gc && gc->guild_id > 0) { g=guild_search(gc->guild_id); if (g) { - WBUFL(buf,26)=gc->guild_id; WBUFL(buf,22)=g->emblem_id; + WBUFL(buf,26)=gc->guild_id; } } } // End addition @@ -1201,7 +1201,7 @@ static int clif_mob007b(struct mob_data *md, unsigned char *buf) { } else WBUFL(buf,22)=gettick(); - if(md->class >= 1285 && md->class <= 1287) { // Added guardian emblems [Valaris] + if(md->class >= 1285 && md->class <= 1287 && md->guild_id) { // Added guardian emblems [Valaris] struct guild *g; struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name); if(gc && gc->guild_id > 0){ @@ -7551,7 +7551,7 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd, int cmd) nullpo_retv(md); memcpy(WFIFOP(fd,6), md->name, 24); - if (md->class >= 1285 && md->class <= 1288) { + if (md->class >= 1285 && md->class <= 1288 && md->guild_id) { struct guild *g; struct guild_castle *gc = guild_mapname2gc(map[md->bl.m].name); if (gc && gc->guild_id > 0 && (g = guild_search(gc->guild_id)) != NULL) { diff --git a/src/map/mob.c b/src/map/mob.c index 0d26676b8..a74ee534e 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1078,9 +1078,9 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range) nullpo_retr(0, sd=(struct map_session_data *)bl); if(!gc) return 0; - if(gc && sd && sd->status.guild_id && sd->status.guild_id>0) { + if(gc && sd && sd->status.guild_id) { g=guild_search(sd->status.guild_id); // don't attack guild members [Valaris] - if(g && g->guild_id > 0 && g->guild_id == gc->guild_id) + if(g && g->guild_id == gc->guild_id) return 0; if(g && gc && guild_isallied(g,gc)) return 0; -- cgit v1.2.3-70-g09d2 From a19e5ef6a4d26e21b971510501e62036cfb1ecff Mon Sep 17 00:00:00 2001 From: codemaster Date: Mon, 8 Nov 2004 15:28:15 +0000 Subject: git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@65 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/chrif.c | 20 ++ src/map/chrif.h | 1 + src/map/clif.c | 891 ++++++++++++++++++++++++++++++-------------------------- src/map/mob.c | 192 ++++++------ 4 files changed, 594 insertions(+), 510 deletions(-) (limited to 'src/map/mob.c') diff --git a/src/map/chrif.c b/src/map/chrif.c index 66f496d71..2a5f35a37 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -812,6 +812,26 @@ int chrif_accountban(int fd) return 0; } +/*========================================== + * キャラクター切断通知 + *------------------------------------------ + */ +int chrif_chardisconnect(struct map_session_data *sd) +{ + nullpo_retr(-1, sd); + + if(char_fd<=0) + return -1; + + WFIFOW(char_fd,0)=0x2b18; + WFIFOL(char_fd,2)=sd->status.account_id; + WFIFOL(char_fd,6)=sd->status.char_id; + WFIFOSET(char_fd,10); + //printf("chrif: char disconnect: %d %s\n",sd->bl.id,sd->status.name); + return 0; + +} + /*========================================== * Receiving GM accounts and their levels from char-server by [Yor] *------------------------------------------ diff --git a/src/map/chrif.h b/src/map/chrif.h index c01afedba..858fdeaa7 100644 --- a/src/map/chrif.h +++ b/src/map/chrif.h @@ -24,6 +24,7 @@ int chrif_reloadGMdb(void); int chrif_ragsrvinfo(int base_rate,int job_rate, int drop_rate); int chrif_char_offline(struct map_session_data *sd); int chrif_changesex(int id, int sex); +int chrif_chardisconnect(struct map_session_data *sd); int do_init_chrif(void); diff --git a/src/map/clif.c b/src/map/clif.c index c8309a20a..d78fc5397 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -6,17 +6,17 @@ #include #include #include +#include #include #include +#include #ifdef _WIN32 #include #else -#include #include #include #include #endif -#include #include "socket.h" #include "timer.h" @@ -337,26 +337,26 @@ struct { * map鯖のip設定 *------------------------------------------ */ -void clif_setip(char *ip) +void clif_setip(char *ip) { - memcpy(map_ip_str, ip, 16); - map_ip = inet_addr(map_ip_str); + memcpy(map_ip_str,ip,16); + map_ip=inet_addr(map_ip_str); } /*========================================== * map鯖のport設定 *------------------------------------------ */ -void clif_setport(int port) +void clif_setport(int port) { - map_port = port; + map_port=port; } /*========================================== * map鯖のip読み出し *------------------------------------------ */ -in_addr_t clif_getip(void) +in_addr_t clif_getip(void) { return map_ip; } @@ -365,7 +365,7 @@ in_addr_t clif_getip(void) * map鯖のport読み出し *------------------------------------------ */ -int clif_getport(void) +int clif_getport(void) { return map_port; } @@ -374,14 +374,14 @@ int clif_getport(void) * *------------------------------------------ */ -int clif_countusers(void) +int clif_countusers(void) { - int users = 0, i; + int users=0,i; struct map_session_data *sd; - for(i = 0; i < fd_max; i++) { - if (session[i] && (sd = session[i]->session_data) && sd && sd->state.auth && - !(battle_config.hide_GM_session && pc_isGM(sd))) + for(i=0;isession_data) && sd->state.auth + && !(battle_config.hide_GM_session && pc_isGM(sd)) ) users++; } return users; @@ -391,16 +391,16 @@ int clif_countusers(void) * 全てのclientに対してfunc()実行 *------------------------------------------ */ -int clif_foreachclient(int (*func)(struct map_session_data*, va_list),...) +int clif_foreachclient(int (*func)(struct map_session_data*,va_list),...) { int i; va_list ap; struct map_session_data *sd; va_start(ap,func); - for(i = 0; i < fd_max; i++) { - if (session[i] && (sd = session[i]->session_data) && sd && sd->state.auth) - func(sd, ap); + for(i=0;isession_data) && sd->state.auth) + func(sd,ap); } va_end(ap); return 0; @@ -410,7 +410,7 @@ int clif_foreachclient(int (*func)(struct map_session_data*, va_list),...) * clif_sendでAREA*指定時用 *------------------------------------------ */ -int clif_send_sub(struct block_list *bl, va_list ap) +int clif_send_sub(struct block_list *bl,va_list ap) { unsigned char *buf; int len; @@ -420,20 +420,20 @@ int clif_send_sub(struct block_list *bl, va_list ap) nullpo_retr(0, bl); nullpo_retr(0, ap); - nullpo_retr(0, sd = (struct map_session_data *)bl); + nullpo_retr(0, sd=(struct map_session_data *)bl); - buf = va_arg(ap,unsigned char*); - len = va_arg(ap,int); - nullpo_retr(0, src_bl = va_arg(ap,struct block_list*)); - type = va_arg(ap,int); + buf=va_arg(ap,unsigned char*); + len=va_arg(ap,int); + nullpo_retr(0, src_bl=va_arg(ap,struct block_list*)); + type=va_arg(ap,int); - switch(type) { + switch(type){ case AREA_WOS: - if (bl && bl == src_bl) + if(bl && bl==src_bl) return 0; break; case AREA_WOC: - if ((sd && sd->chatID) || (bl && bl == src_bl)) + if(sd->chatID || bl==src_bl) return 0; break; case AREA_WOSC: @@ -461,31 +461,33 @@ int clif_send_sub(struct block_list *bl, va_list ap) * *------------------------------------------ */ -int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { +int clif_send(unsigned char *buf,int len,struct block_list *bl,int type) +{ int i; struct map_session_data *sd; struct chat_data *cd; - struct party *p = NULL; - struct guild *g = NULL; - int x0 = 0, x1 = 0, y0 = 0, y1 = 0; + struct party *p=NULL; + struct guild *g=NULL; + int x0=0,x1=0,y0=0,y1=0; - if (type != ALL_CLIENT) { + if( type != ALL_CLIENT ){ nullpo_retr(0, bl); } - switch(type) { - case ALL_CLIENT: // 全クライアントに送信 - for(i = 0; i < fd_max; i++) { - if (session[i] && (sd = session[i]->session_data) != NULL && sd->state.auth) { - memcpy(WFIFOP(i,0), buf, len); + switch(type){ + case ALL_CLIENT: // 全クライアントに送信 + for(i=0;isession_data) && sd->state.auth){ + memcpy(WFIFOP(i,0),buf,len); WFIFOSET(i,len); } } break; - case ALL_SAMEMAP: // 同じマップの全クライアントに送信 - for(i = 0; i < fd_max; i++) { - if (session[i] && (sd = session[i]->session_data) != NULL && sd->state.auth && sd->bl.m == bl->m) { - memcpy(WFIFOP(i,0), buf, len); + case ALL_SAMEMAP: // 同じマップの全クライアントに送信 + for(i=0;isession_data) && sd->state.auth && + sd->bl.m == bl->m){ + memcpy(WFIFOP(i,0),buf,len); WFIFOSET(i,len); } } @@ -494,41 +496,41 @@ int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { case AREA_WOS: case AREA_WOC: case AREA_WOSC: - map_foreachinarea(clif_send_sub, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE, BL_PC, buf, len, bl, type); + map_foreachinarea(clif_send_sub,bl->m,bl->x-AREA_SIZE,bl->y-AREA_SIZE,bl->x+AREA_SIZE,bl->y+AREA_SIZE,BL_PC,buf,len,bl,type); break; case AREA_CHAT_WOC: - map_foreachinarea(clif_send_sub, bl->m, bl->x-(AREA_SIZE-5), bl->y-(AREA_SIZE-5), bl->x+(AREA_SIZE-5), bl->y+(AREA_SIZE-5), BL_PC, buf, len, bl, AREA_WOC); + map_foreachinarea(clif_send_sub,bl->m,bl->x-(AREA_SIZE-5),bl->y-(AREA_SIZE-5),bl->x+(AREA_SIZE-5),bl->y+(AREA_SIZE-5),BL_PC,buf,len,bl,AREA_WOC); break; case CHAT: case CHAT_WOS: - cd = (struct chat_data*)bl; - if (bl->type == BL_PC) { - sd = (struct map_session_data*)bl; - cd = (struct chat_data*)map_id2bl(sd->chatID); - } else if (bl->type != BL_CHAT) + cd=(struct chat_data*)bl; + if(bl->type==BL_PC){ + sd=(struct map_session_data*)bl; + cd=(struct chat_data*)map_id2bl(sd->chatID); + } else if(bl->type!=BL_CHAT) break; - if (cd == NULL) + if(cd==NULL) break; - for(i = 0; i < cd->users; i++) { - if (type == CHAT_WOS && cd->usersd[i] == (struct map_session_data*)bl) + for(i=0;iusers;i++){ + if(type==CHAT_WOS && cd->usersd[i]==(struct map_session_data*)bl) continue; - memcpy(WFIFOP(cd->usersd[i]->fd,0), buf, len); + memcpy(WFIFOP(cd->usersd[i]->fd,0),buf,len); WFIFOSET(cd->usersd[i]->fd,len); } break; case PARTY_AREA: // 同じ画面内の全パーティーメンバに送信 case PARTY_AREA_WOS: // 自分以外の同じ画面内の全パーティーメンバに送信 - x0 = bl->x - AREA_SIZE; - y0 = bl->y - AREA_SIZE; - x1 = bl->x + AREA_SIZE; - y1 = bl->y + AREA_SIZE; + x0=bl->x-AREA_SIZE; + y0=bl->y-AREA_SIZE; + x1=bl->x+AREA_SIZE; + y1=bl->y+AREA_SIZE; case PARTY: // 全パーティーメンバに送信 case PARTY_WOS: // 自分以外の全パーティーメンバに送信 case PARTY_SAMEMAP: // 同じマップの全パーティーメンバに送信 case PARTY_SAMEMAP_WOS: // 自分以外の同じマップの全パーティーメンバに送信 if (bl->type == BL_PC) { - sd = (struct map_session_data *)bl; + sd=(struct map_session_data *)bl; if (sd->partyspy > 0) { p = party_search(sd->partyspy); } else { @@ -566,8 +568,8 @@ int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { } break; case SELF: - sd = (struct map_session_data *)bl; - memcpy(WFIFOP(sd->fd,0), buf, len); + sd=(struct map_session_data *)bl; + memcpy(WFIFOP(sd->fd,0),buf,len); WFIFOSET(sd->fd,len); break; @@ -582,7 +584,7 @@ int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { case GUILD: case GUILD_WOS: if (bl && bl->type == BL_PC) { // guildspy [Syrus22] - sd = (struct map_session_data *)bl; + sd=(struct map_session_data *)bl; if (sd->guildspy > 0) { g = guild_search(sd->guildspy); } else { @@ -590,12 +592,12 @@ int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { g = guild_search(sd->status.guild_id); } } - if (g) { - for(i = 0; i < g->max_member; i++) { - if ((sd = g->member[i].sd) != NULL) { - if (type == GUILD_WOS && sd->bl.id == bl->id) + if(g){ + for(i=0;imax_member;i++){ + if((sd=g->member[i].sd)!=NULL){ + if(type==GUILD_WOS && sd->bl.id==bl->id) continue; - memcpy(WFIFOP(sd->fd,0), buf, len); + memcpy(WFIFOP(sd->fd,0),buf,len); WFIFOSET(sd->fd,len); } } @@ -637,7 +639,7 @@ int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { /* End [Valaris] */ default: - if (battle_config.error_log) + if(battle_config.error_log) printf("clif_send まだ作ってないよー\n"); return -1; } @@ -652,7 +654,8 @@ int clif_send(unsigned char *buf, int len, struct block_list *bl, int type) { * *------------------------------------------ */ -int clif_authok(struct map_session_data *sd) { +int clif_authok(struct map_session_data *sd) +{ int fd; nullpo_retr(0, sd); @@ -696,11 +699,12 @@ int clif_authfail_fd(int fd, int type) { * *------------------------------------------ */ -int clif_charselectok(int id) { +int clif_charselectok(int id) +{ struct map_session_data *sd; int fd; - if ((sd = map_id2sd(id)) == NULL) + if((sd=map_id2sd(id))==NULL) return 1; if (!sd->fd) @@ -718,24 +722,25 @@ int clif_charselectok(int id) { * *------------------------------------------ */ -static int clif_set009e(struct flooritem_data *fitem,unsigned char *buf) { +static int clif_set009e(struct flooritem_data *fitem,unsigned char *buf) +{ int view; nullpo_retr(0, fitem); //009e .l .w .B .w .w .B .B .w - WBUFW(buf, 0) = 0x9e; - WBUFL(buf, 2) = fitem->bl.id; - if ((view = itemdb_viewid(fitem->item_data.nameid)) > 0) - WBUFW(buf, 6) = view; + WBUFW(buf,0)=0x9e; + WBUFL(buf,2)=fitem->bl.id; + if((view = itemdb_viewid(fitem->item_data.nameid)) > 0) + WBUFW(buf,6)=view; else - WBUFW(buf, 6) = fitem->item_data.nameid; - WBUFB(buf, 8) = fitem->item_data.identify; - WBUFW(buf, 9) = fitem->bl.x; - WBUFW(buf,11) = fitem->bl.y; - WBUFB(buf,13) = fitem->subx; - WBUFB(buf,14) = fitem->suby; - WBUFW(buf,15) = fitem->item_data.amount; + WBUFW(buf,6)=fitem->item_data.nameid; + WBUFB(buf,8)=fitem->item_data.identify; + WBUFW(buf,9)=fitem->bl.x; + WBUFW(buf,11)=fitem->bl.y; + WBUFB(buf,13)=fitem->subx; + WBUFB(buf,14)=fitem->suby; + WBUFW(buf,15)=fitem->item_data.amount; return packet_db[0x9e].len; } @@ -744,15 +749,16 @@ static int clif_set009e(struct flooritem_data *fitem,unsigned char *buf) { * *------------------------------------------ */ -int clif_dropflooritem(struct flooritem_data *fitem) { +int clif_dropflooritem(struct flooritem_data *fitem) +{ char buf[64]; nullpo_retr(0, fitem); - if (fitem->item_data.nameid <= 0) + if(fitem->item_data.nameid <= 0) return 0; - clif_set009e(fitem, buf); - clif_send(buf, packet_db[0x9e].len, &fitem->bl, AREA); + clif_set009e(fitem,buf); + clif_send(buf,packet_db[0x9e].len,&fitem->bl,AREA); return 0; } @@ -761,7 +767,8 @@ int clif_dropflooritem(struct flooritem_data *fitem) { * *------------------------------------------ */ -int clif_clearflooritem(struct flooritem_data *fitem, int fd) { +int clif_clearflooritem(struct flooritem_data *fitem,int fd) +{ unsigned char buf[16]; nullpo_retr(0, fitem); @@ -769,10 +776,10 @@ int clif_clearflooritem(struct flooritem_data *fitem, int fd) { WBUFW(buf,0) = 0xa1; WBUFL(buf,2) = fitem->bl.id; - if (fd == 0) { - clif_send(buf, packet_db[0xa1].len, &fitem->bl, AREA); + if(fd==0){ + clif_send(buf,packet_db[0xa1].len,&fitem->bl,AREA); } else { - memcpy(WFIFOP(fd,0), buf, 6); + memcpy(WFIFOP(fd,0),buf,6); WFIFOSET(fd,packet_db[0xa1].len); } @@ -783,7 +790,8 @@ int clif_clearflooritem(struct flooritem_data *fitem, int fd) { * *------------------------------------------ */ -int clif_clearchar(struct block_list *bl, int type) { +int clif_clearchar(struct block_list *bl,int type) +{ unsigned char buf[16]; nullpo_retr(0, bl); @@ -801,7 +809,8 @@ int clif_clearchar(struct block_list *bl, int type) { return 0; } -static int clif_clearchar_delay_sub(int tid, unsigned int tick, int id, int data) { +static int clif_clearchar_delay_sub(int tid,unsigned int tick,int id,int data) +{ struct block_list *bl = (struct block_list *)id; clif_clearchar(bl,data); @@ -811,7 +820,7 @@ static int clif_clearchar_delay_sub(int tid, unsigned int tick, int id, int data } int clif_clearchar_delay(unsigned int tick, struct block_list *bl, int type) { - struct block_list *tmpbl = calloc(sizeof(struct block_list), 1); + struct block_list *tmpbl=(struct block_list *)aCalloc(1,sizeof(struct block_list)); if (tmpbl == NULL) { printf("clif_clearchar_delay: out of memory !\n"); exit(1); @@ -826,14 +835,15 @@ int clif_clearchar_delay(unsigned int tick, struct block_list *bl, int type) { * *------------------------------------------ */ -int clif_clearchar_id(int id, int type, int fd) { +int clif_clearchar_id(int id,int type,int fd) +{ unsigned char buf[16]; WBUFW(buf,0) = 0x80; WBUFL(buf,2) = id; WBUFB(buf,6) = type; - memcpy(WFIFOP(fd,0), buf, 7); - WFIFOSET(fd, packet_db[0x80].len); + memcpy(WFIFOP(fd,0),buf,7); + WFIFOSET(fd,packet_db[0x80].len); return 0; } @@ -868,16 +878,16 @@ static int clif_set0078(struct map_session_data *sd, unsigned char *buf) { } #if PACKETVER < 4 - WBUFW(buf,0)= 0x78; - WBUFL(buf,2)= sd->bl.id; - WBUFW(buf,6)= sd->speed; - WBUFW(buf,8)= sd->opt1; - WBUFW(buf,10)= sd->opt2; - WBUFW(buf,12)= sd->status.option; - WBUFW(buf,14)= sd->view_class; - WBUFW(buf,16)= sd->status.hair; - if (sd->view_class != 22) - WBUFW(buf,18) = sd->status.weapon; + WBUFW(buf,0)=0x78; + WBUFL(buf,2)=sd->bl.id; + WBUFW(buf,6)=sd->speed; + WBUFW(buf,8)=sd->opt1; + WBUFW(buf,10)=sd->opt2; + WBUFW(buf,12)=sd->status.option; + WBUFW(buf,14)=sd->view_class; + WBUFW(buf,16)=sd->status.hair; + if(sd->view_class != 22) + WBUFW(buf,18)=sd->status.weapon; else WBUFW(buf,18)=0; WBUFW(buf,20)=sd->status.head_bottom; @@ -901,26 +911,26 @@ static int clif_set0078(struct map_session_data *sd, unsigned char *buf) { return packet_db[0x78].len; #else - WBUFW(buf,0) = 0x1d8; - WBUFL(buf,2) = sd->bl.id; - WBUFW(buf,6) = sd->speed; - WBUFW(buf,8) = sd->opt1; - WBUFW(buf,10) = sd->opt2; - WBUFW(buf,12) = sd->status.option; - WBUFW(buf,14) = sd->view_class; - WBUFW(buf,16) = sd->status.hair; - if (sd->equip_index[9] >= 0 && sd->inventory_data[sd->equip_index[9]] && sd->view_class != 22) { - if (sd->inventory_data[sd->equip_index[9]]->view_id > 0) - WBUFW(buf,18) = sd->inventory_data[sd->equip_index[9]]->view_id; + WBUFW(buf,0)=0x1d8; + WBUFL(buf,2)=sd->bl.id; + WBUFW(buf,6)=sd->speed; + WBUFW(buf,8)=sd->opt1; + WBUFW(buf,10)=sd->opt2; + WBUFW(buf,12)=sd->status.option; + WBUFW(buf,14)=sd->view_class; + WBUFW(buf,16)=sd->status.hair; + if(sd->equip_index[9] >= 0 && sd->inventory_data[sd->equip_index[9]] && sd->view_class != 22) { + if(sd->inventory_data[sd->equip_index[9]]->view_id > 0) + WBUFW(buf,18)=sd->inventory_data[sd->equip_index[9]]->view_id; else - WBUFW(buf,18) = sd->status.inventory[sd->equip_index[9]].nameid; + WBUFW(buf,18)=sd->status.inventory[sd->equip_index[9]].nameid; } else WBUFW(buf,18) = 0; if (sd->equip_index[8] >= 0 && sd->equip_index[8] != sd->equip_index[9] && sd->inventory_data[sd->equip_index[8]] && sd->view_class != 22) { if (sd->inventory_data[sd->equip_index[8]]->view_id > 0) WBUFW(buf,20) = sd->inventory_data[sd->equip_index[8]]->view_id; else - WBUFW(buf,20) = sd->status.inventory[sd->equip_index[8]].nameid; + WBUFW(buf,20)=sd->status.inventory[sd->equip_index[8]].nameid; } else WBUFW(buf,20) = 0; WBUFW(buf,22)=sd->status.head_bottom; @@ -1172,7 +1182,8 @@ static int clif_mob0078(struct mob_data *md, unsigned char *buf) * MOB表示2 *------------------------------------------ */ -static int clif_mob007b(struct mob_data *md, unsigned char *buf) { +static int clif_mob007b(struct mob_data *md,unsigned char *buf) +{ int level; memset(buf,0,packet_db[0x7b].len); @@ -1199,8 +1210,10 @@ static int clif_mob007b(struct mob_data *md, unsigned char *buf) { WBUFW(buf,34)=mob_get_clothes_color(md->class); //Add for player monster dye - Valaris WBUFB(buf,49)=mob_get_sex(md->class); } else + WBUFL(buf,22)=gettick(); + if(md->class >= 1285 && md->class <= 1287 && md->guild_id) { // Added guardian emblems [Valaris] struct guild *g; struct guild_castle *gc=guild_mapname2gc(map[md->bl.m].name); @@ -1210,14 +1223,14 @@ static int clif_mob007b(struct mob_data *md, unsigned char *buf) { WBUFL(buf,28)=gc->guild_id; WBUFL(buf,24)=g->emblem_id; } + } - } // End addition - WBUFPOS2(buf,50,md->bl.x,md->bl.y,md->to_x,md->to_y); - WBUFB(buf,56)=5; - WBUFB(buf,57)=5; - WBUFW(buf,58)=((level = battle_get_lv(&md->bl))>battle_config.max_lv)? battle_config.max_lv:level; + } // End addition + WBUFB(buf,56)=5; + WBUFB(buf,57)=5; + WBUFW(buf,58)=((level = battle_get_lv(&md->bl))>battle_config.max_lv)? battle_config.max_lv:level; return packet_db[0x7b].len; } @@ -1225,7 +1238,8 @@ static int clif_mob007b(struct mob_data *md, unsigned char *buf) { * *------------------------------------------ */ -static int clif_npc0078(struct npc_data *nd, unsigned char *buf) { +static int clif_npc0078(struct npc_data *nd,unsigned char *buf) +{ struct guild *g; nullpo_retr(0, nd); @@ -1237,9 +1251,10 @@ static int clif_npc0078(struct npc_data *nd, unsigned char *buf) { WBUFW(buf,6)=nd->speed; WBUFW(buf,12)=nd->option; WBUFW(buf,14)=nd->class; - //if ((nd->class == 722) && (nd->u.scr.guild_id > 0) && ((g=guild_search(nd->u.scr.guild_id)) != NULL)) - if((nd->bl.subtype!=WARP) && (nd->class == 722) && (nd->u.scr.guild_id > 0) && -((g=guild_search(nd->u.scr.guild_id)))) + if( (nd->bl.subtype!=WARP) && + (nd->class == 722) && + (nd->u.scr.guild_id > 0) && + ((g=guild_search(nd->u.scr.guild_id))) ) { WBUFL(buf,22)=g->emblem_id; WBUFL(buf,26)=g->guild_id; @@ -1266,7 +1281,7 @@ static int clif_npc007b(struct npc_data *nd, unsigned char *buf) { WBUFW(buf,12)=nd->option; WBUFW(buf,14)=nd->class; //if ((nd->class == 722) && (nd->u.scr.guild_id > 0) && ((g=guild_search(nd->u.scr.guild_id)) != NULL)) - if((nd->bl.subtype!=WARP) && (nd->class == 722) && (nd->u.scr.guild_id > 0) && + if((nd->bl.subtype!=WARP) && (nd->class == 722) && (nd->u.scr.guild_id > 0) && ((g=guild_search(nd->u.scr.guild_id)))) { WBUFL(buf,22)=g->emblem_id; @@ -1286,7 +1301,8 @@ static int clif_npc007b(struct npc_data *nd, unsigned char *buf) { * *------------------------------------------ */ -static int clif_pet0078(struct pet_data *pd, unsigned char *buf) { +static int clif_pet0078(struct pet_data *pd,unsigned char *buf) +{ int view,level; nullpo_retr(0, pd); @@ -1328,7 +1344,8 @@ static int clif_pet0078(struct pet_data *pd, unsigned char *buf) { * *------------------------------------------ */ -static int clif_pet007b(struct pet_data *pd, unsigned char *buf) { +static int clif_pet007b(struct pet_data *pd,unsigned char *buf) +{ int view,level; nullpo_retr(0, pd); @@ -1353,7 +1370,7 @@ static int clif_pet007b(struct pet_data *pd, unsigned char *buf) { WBUFB(buf,49)=mob_get_sex(pd->class); } else { WBUFW(buf,16)=0x14; - if ((view = itemdb_viewid(pd->equip)) > 0) + if((view = itemdb_viewid(pd->equip)) > 0) WBUFW(buf,20)=view; else WBUFW(buf,20)=pd->equip; @@ -1371,7 +1388,8 @@ static int clif_pet007b(struct pet_data *pd, unsigned char *buf) { * *------------------------------------------ */ -static int clif_set01e1(struct map_session_data *sd, unsigned char *buf) { +static int clif_set01e1(struct map_session_data *sd,unsigned char *buf) +{ nullpo_retr(0, sd); WBUFW(buf,0)=0x1e1; @@ -1385,7 +1403,8 @@ static int clif_set01e1(struct map_session_data *sd, unsigned char *buf) { * *------------------------------------------ */ -static int clif_set0192(int fd, int m, int x, int y, int type) { +static int clif_set0192(int fd,int m,int x,int y,int type) +{ WFIFOW(fd,0) = 0x192; WFIFOW(fd,2) = x; WFIFOW(fd,4) = y; @@ -1554,7 +1573,7 @@ int clif_spawnpet(struct pet_data *pd) nullpo_retr(0, pd); - if (mob_get_viewclass(pd->class) >= MAX_PC_CLASS) { + if(mob_get_viewclass(pd->class) >= MAX_PC_CLASS) { memset(buf,0,packet_db[0x7c].len); WBUFW(buf,0)=0x7c; @@ -1576,7 +1595,8 @@ int clif_spawnpet(struct pet_data *pd) * *------------------------------------------ */ -int clif_movepet(struct pet_data *pd) { +int clif_movepet(struct pet_data *pd) +{ unsigned char buf[256]; int len; @@ -1646,7 +1666,8 @@ int clif_walkok(struct map_session_data *sd) * *------------------------------------------ */ -int clif_movechar(struct map_session_data *sd) { +int clif_movechar(struct map_session_data *sd) +{ int fd; int len; unsigned char buf[256]; @@ -1676,7 +1697,7 @@ int clif_movechar(struct map_session_data *sd) { void clif_quitsave(int fd,struct map_session_data *sd) { map_quit(sd); - //chrif_chardisconnect(sd); + chrif_chardisconnect(sd); } /*========================================== @@ -1695,28 +1716,26 @@ static int clif_waitclose(int tid, unsigned int tick, int id, int data) { *------------------------------------------ */ void clif_setwaitclose(int fd) { - if((sd=session[fd]->session_data) == NULL - add_timer(gettick() + 1000, clif_waitclose, fd, 0); - else - add_timer(gettick() + 5000, clif_waitclose, fd, 0); + add_timer(gettick() + 5000, clif_waitclose, fd, 0); } /*========================================== * *------------------------------------------ */ -int clif_changemap(struct map_session_data *sd, char *mapname, int x, int y) { +int clif_changemap(struct map_session_data *sd,char *mapname,int x,int y) +{ int fd; nullpo_retr(0, sd); - fd = sd->fd; + fd=sd->fd; - WFIFOW(fd,0) = 0x91; - memcpy(WFIFOP(fd,2), mapname, 16); - WFIFOW(fd,18) = x; - WFIFOW(fd,20) = y; - WFIFOSET(fd, packet_db[0x91].len); + WFIFOW(fd,0)=0x91; + memcpy(WFIFOP(fd,2),mapname,16); + WFIFOW(fd,18)=x; + WFIFOW(fd,20)=y; + WFIFOSET(fd,packet_db[0x91].len); if (sd->disguise > 23 && sd->disguise < 4001) // mob disguises [Valaris] clif_spawnpc(sd); @@ -1728,19 +1747,20 @@ int clif_changemap(struct map_session_data *sd, char *mapname, int x, int y) { * *------------------------------------------ */ -int clif_changemapserver(struct map_session_data *sd, char *mapname, int x, int y, int ip, int port) { +int clif_changemapserver(struct map_session_data *sd,char *mapname,int x,int y,int ip,int port) +{ int fd; nullpo_retr(0, sd); - fd = sd->fd; - WFIFOW(fd,0) = 0x92; - memcpy(WFIFOP(fd,2), mapname, 16); - WFIFOW(fd,18) = x; - WFIFOW(fd,20) = y; - WFIFOL(fd,22) = ip; - WFIFOW(fd,26) = port; - WFIFOSET(fd, packet_db[0x92].len); + fd=sd->fd; + WFIFOW(fd,0)=0x92; + memcpy(WFIFOP(fd,2),mapname,16); + WFIFOW(fd,18)=x; + WFIFOW(fd,20)=y; + WFIFOL(fd,22)=ip; + WFIFOW(fd,26)=port; + WFIFOSET(fd,packet_db[0x92].len); return 0; } @@ -1749,7 +1769,8 @@ int clif_changemapserver(struct map_session_data *sd, char *mapname, int x, int * *------------------------------------------ */ -int clif_fixpos(struct block_list *bl) { +int clif_fixpos(struct block_list *bl) +{ char buf[16]; nullpo_retr(0, bl); @@ -1759,7 +1780,7 @@ int clif_fixpos(struct block_list *bl) { WBUFW(buf,6)=bl->x; WBUFW(buf,8)=bl->y; - clif_send(buf, packet_db[0x88].len, bl, AREA); + clif_send(buf,packet_db[0x88].len,bl,AREA); return 0; } @@ -1768,7 +1789,8 @@ int clif_fixpos(struct block_list *bl) { * *------------------------------------------ */ -int clif_npcbuysell(struct map_session_data* sd, int id) { +int clif_npcbuysell(struct map_session_data* sd,int id) +{ int fd; nullpo_retr(0, sd); @@ -1785,7 +1807,8 @@ int clif_npcbuysell(struct map_session_data* sd, int id) { * *------------------------------------------ */ -int clif_buylist(struct map_session_data *sd, struct npc_data *nd) { +int clif_buylist(struct map_session_data *sd,struct npc_data *nd) +{ struct item_data *id; int fd,i,val; @@ -1798,11 +1821,11 @@ int clif_buylist(struct map_session_data *sd, struct npc_data *nd) { id = itemdb_search(nd->u.shop_item[i].nameid); val=nd->u.shop_item[i].value; WFIFOL(fd,4+i*11)=val; - if (!id->flag.value_notdc) + if ( ! id->flag.value_notdc) val=pc_modifybuyvalue(sd,val); WFIFOL(fd,8+i*11)=val; WFIFOB(fd,12+i*11)=id->type; - if (id->view_id > 0) + if(id->view_id > 0) WFIFOW(fd,13+i*11)=id->view_id; else WFIFOW(fd,13+i*11)=nd->u.shop_item[i].nameid; @@ -1817,7 +1840,8 @@ int clif_buylist(struct map_session_data *sd, struct npc_data *nd) { * *------------------------------------------ */ -int clif_selllist(struct map_session_data *sd) { +int clif_selllist(struct map_session_data *sd) +{ int fd,i,c=0,val; nullpo_retr(0, sd); @@ -1827,11 +1851,11 @@ int clif_selllist(struct map_session_data *sd) { for(i=0;istatus.inventory[i].nameid > 0 && sd->inventory_data[i]) { val=sd->inventory_data[i]->value_sell; - if (val < 0) + if(val < 0) continue; WFIFOW(fd,4+c*10)=i+2; WFIFOL(fd,6+c*10)=val; - if (!sd->inventory_data[i]->flag.value_notoc) + if ( !sd->inventory_data[i]->flag.value_notoc) val=pc_modifysellvalue(sd,val); WFIFOL(fd,10+c*10)=val; c++; @@ -1847,7 +1871,8 @@ int clif_selllist(struct map_session_data *sd) { * *------------------------------------------ */ -int clif_scriptmes(struct map_session_data *sd, int npcid, char *mes) { +int clif_scriptmes(struct map_session_data *sd,int npcid,char *mes) +{ int fd; nullpo_retr(0, sd); @@ -1866,7 +1891,8 @@ int clif_scriptmes(struct map_session_data *sd, int npcid, char *mes) { * *------------------------------------------ */ -int clif_scriptnext(struct map_session_data *sd,int npcid) { +int clif_scriptnext(struct map_session_data *sd,int npcid) +{ int fd; nullpo_retr(0, sd); @@ -1883,7 +1909,8 @@ int clif_scriptnext(struct map_session_data *sd,int npcid) { * *------------------------------------------ */ -int clif_scriptclose(struct map_session_data *sd, int npcid) { +int clif_scriptclose(struct map_session_data *sd,int npcid) +{ int fd; nullpo_retr(0, sd); @@ -1900,7 +1927,8 @@ int clif_scriptclose(struct map_session_data *sd, int npcid) { * *------------------------------------------ */ -int clif_scriptmenu(struct map_session_data *sd, int npcid, char *mes) { +int clif_scriptmenu(struct map_session_data *sd,int npcid,char *mes) +{ int fd; nullpo_retr(0, sd); @@ -1919,7 +1947,8 @@ int clif_scriptmenu(struct map_session_data *sd, int npcid, char *mes) { * *------------------------------------------ */ -int clif_scriptinput(struct map_session_data *sd, int npcid) { +int clif_scriptinput(struct map_session_data *sd,int npcid) +{ int fd; nullpo_retr(0, sd); @@ -1936,7 +1965,8 @@ int clif_scriptinput(struct map_session_data *sd, int npcid) { * *------------------------------------------ */ -int clif_scriptinputstr(struct map_session_data *sd, int npcid) { +int clif_scriptinputstr(struct map_session_data *sd,int npcid) +{ int fd; nullpo_retr(0, sd); @@ -1953,7 +1983,8 @@ int clif_scriptinputstr(struct map_session_data *sd, int npcid) { * *------------------------------------------ */ -int clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int y, int id, int color) { +int clif_viewpoint(struct map_session_data *sd,int npc_id,int type,int x,int y,int id,int color) +{ int fd; nullpo_retr(0, sd); @@ -1975,7 +2006,8 @@ int clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, int * *------------------------------------------ */ -int clif_cutin(struct map_session_data *sd, char *image, int type) { +int clif_cutin(struct map_session_data *sd,char *image,int type) +{ int fd; nullpo_retr(0, sd); @@ -1993,7 +2025,8 @@ int clif_cutin(struct map_session_data *sd, char *image, int type) { * *------------------------------------------ */ -int clif_additem(struct map_session_data *sd, int n, int amount, int fail) { +int clif_additem(struct map_session_data *sd,int n,int amount,int fail) +{ int fd,j; unsigned char *buf; @@ -2023,7 +2056,7 @@ int clif_additem(struct map_session_data *sd, int n, int amount, int fail) { WBUFW(buf,0)=0xa0; WBUFW(buf,2)=n+2; WBUFW(buf,4)=amount; - if (sd->inventory_data[n]->view_id > 0) + if(sd->inventory_data[n]->view_id > 0) WBUFW(buf,6)=sd->inventory_data[n]->view_id; else WBUFW(buf,6)=sd->status.inventory[n].nameid; @@ -2040,15 +2073,15 @@ int clif_additem(struct map_session_data *sd, int n, int amount, int fail) { WBUFW(buf,11)=j; else WBUFW(buf,11)=sd->status.inventory[n].card[0]; - if (sd->status.inventory[n].card[1] > 0 && (j=itemdb_viewid(sd->status.inventory[n].card[1])) > 0) + if(sd->status.inventory[n].card[1] > 0 && (j=itemdb_viewid(sd->status.inventory[n].card[1])) > 0) WBUFW(buf,13)=j; else WBUFW(buf,13)=sd->status.inventory[n].card[1]; - if (sd->status.inventory[n].card[2] > 0 && (j=itemdb_viewid(sd->status.inventory[n].card[2])) > 0) + if(sd->status.inventory[n].card[2] > 0 && (j=itemdb_viewid(sd->status.inventory[n].card[2])) > 0) WBUFW(buf,15)=j; else WBUFW(buf,15)=sd->status.inventory[n].card[2]; - if (sd->status.inventory[n].card[3] > 0 && (j=itemdb_viewid(sd->status.inventory[n].card[3])) > 0) + if(sd->status.inventory[n].card[3] > 0 && (j=itemdb_viewid(sd->status.inventory[n].card[3])) > 0) WBUFW(buf,17)=j; else WBUFW(buf,17)=sd->status.inventory[n].card[3]; @@ -2098,17 +2131,17 @@ int clif_itemlist(struct map_session_data *sd) #if PACKETVER < 5 WBUFW(buf,0)=0xa3; for(i=0,n=0;istatus.inventory[i].nameid <=0 || sd->inventory_data[i] == NULL || itemdb_isequip2(sd->inventory_data[i])) + if(sd->status.inventory[i].nameid <=0 || sd->inventory_data[i] == NULL || itemdb_isequip2(sd->inventory_data[i])) continue; WBUFW(buf,n*10+4)=i+2; - if (sd->inventory_data[i]->view_id > 0) + if(sd->inventory_data[i]->view_id > 0) WBUFW(buf,n*10+6)=sd->inventory_data[i]->view_id; else WBUFW(buf,n*10+6)=sd->status.inventory[i].nameid; WBUFB(buf,n*10+8)=sd->inventory_data[i]->type; WBUFB(buf,n*10+9)=sd->status.inventory[i].identify; WBUFW(buf,n*10+10)=sd->status.inventory[i].amount; - if (sd->inventory_data[i]->equip == 0x8000) { + if(sd->inventory_data[i]->equip == 0x8000){ WBUFW(buf,n*10+12)=0x8000; if (sd->status.inventory[i].equip) arrow=i; // ついでに矢装備チェック @@ -2116,7 +2149,7 @@ int clif_itemlist(struct map_session_data *sd) WBUFW(buf,n*10+12)=0; n++; } - if (n) { + if(n){ WBUFW(buf,2)=4+n*10; WFIFOSET(fd,WFIFOW(fd,2)); } @@ -2133,7 +2166,7 @@ int clif_itemlist(struct map_session_data *sd) WBUFB(buf,n*18+8)=sd->inventory_data[i]->type; WBUFB(buf,n*18+9)=sd->status.inventory[i].identify; WBUFW(buf,n*18+10)=sd->status.inventory[i].amount; - if (sd->inventory_data[i]->equip == 0x8000) { + if(sd->inventory_data[i]->equip == 0x8000){ WBUFW(buf,n*18+12)=0x8000; if(sd->status.inventory[i].equip) arrow=i; // ついでに矢装備チェック @@ -2145,7 +2178,7 @@ int clif_itemlist(struct map_session_data *sd) WBUFW(buf,n*18+20)=sd->status.inventory[i].card[3]; n++; } - if (n) { + if(n){ WBUFW(buf,2)=4+n*18; WFIFOSET(fd,WFIFOW(fd,2)); } @@ -2585,7 +2618,7 @@ int clif_updatestatus(struct map_session_data *sd,int type) WFIFOL(fd,4)=sd->matk2; break; - + // 00b1 終了 case SP_ZENY: WFIFOW(fd,0)=0xb1; if(sd->status.zeny < 0) @@ -3065,14 +3098,14 @@ int clif_changeoption(struct block_list* bl) if( option&omask[i] ){ if( sc_data[scnum[i]].timer==-1) skill_status_change_start(bl,scnum[i],0,0,0,0,0,0); - } else { + }else{ skill_status_change_end(bl,scnum[i],-1); } } } - if(bl->type == BL_PC && (sd=(struct map_session_data*)bl)) - clif_changelook(bl, LOOK_BASE, sd->view_class); + if(bl->type==BL_PC && (sd=(struct map_session_data *)bl)) + clif_changelook(bl,LOOK_BASE,sd->view_class); return 0; } @@ -3409,7 +3442,7 @@ int clif_tradeadditem(struct map_session_data *sd,struct map_session_data *tsd,i else WFIFOW(fd,6) = sd->status.inventory[index].nameid; // type id WFIFOB(fd,8) = sd->status.inventory[index].identify; //identify flag - WFIFOB(fd,9) = sd->status.inventory[index].attribute; // attribute + WFIFOB(fd,9) = sd->status.inventory[index].attribute; // attribute WFIFOB(fd,10)= sd->status.inventory[index].refine; //refine if(sd->status.inventory[index].card[0]==0x00ff || sd->status.inventory[index].card[0]==0x00fe || sd->status.inventory[index].card[0]==(short)0xff00) { WFIFOW(fd,11)= sd->status.inventory[index].card[0]; //card (4w) @@ -3742,7 +3775,7 @@ void clif_getareachar_npc(struct map_session_data* sd,struct npc_data* nd) nullpo_retv(sd); nullpo_retv(nd); - if(nd->class < 0 || (nd->flag&1 && nd->option != 0x0002) || nd->class == INVISIBLE_CLASS) + if(nd->class < 0 ||(nd->flag&1 && nd->option != 0x0002) || nd->class == INVISIBLE_CLASS) return; len = clif_npc0078(nd,WFIFOP(sd->fd,0)); @@ -4006,26 +4039,26 @@ int clif_getareachar_skillunit(struct map_session_data *sd,struct skill_unit *un if(unit->group->unit_id==0xb0){ //グラフィティ WFIFOB(fd,15+1)=1; memcpy(WFIFOP(fd,15+2),unit->group->valstr,80); - } else { - WFIFOL(fd,15+1)=0; //1-4調べた限り固定 - WFIFOL(fd,15+5)=0; //5-8調べた限り固定 - //9-12マップごとで一定の77-80とはまた違う4バイトのかなり大きな数字 + }else{ + WFIFOL(fd,15+1)=0; //1-4調べた限り固定 + WFIFOL(fd,15+5)=0; //5-8調べた限り固定 + //9-12マップごとで一定の77-80とはまた違う4バイトのかなり大きな数字 WFIFOL(fd,15+13)=unit->bl.y - 0x12; //13-16ユニットのY座標-18っぽい(Y:17でFF FF FF FF) WFIFOL(fd,15+17)=0x004f37dd; //17-20調べた限り固定 WFIFOL(fd,15+21)=0x0012f674; //21-24調べた限り固定 WFIFOL(fd,15+25)=0x0012f664; //25-28調べた限り固定 WFIFOL(fd,15+29)=0x0012f654; //29-32調べた限り固定 WFIFOL(fd,15+33)=0x77527bbc; //33-36調べた限り固定 - //37-39 - WFIFOB(fd,15+40)=0x2d; //40調べた限り固定 - WFIFOL(fd,15+41)=0; //41-44調べた限り0固定 - WFIFOL(fd,15+45)=0; //45-48調べた限り0固定 - WFIFOL(fd,15+49)=0; //49-52調べた限り0固定 + //37-39 + WFIFOB(fd,15+40)=0x2d; //40調べた限り固定 + WFIFOL(fd,15+41)=0; //41-44調べた限り0固定 + WFIFOL(fd,15+45)=0; //45-48調べた限り0固定 + WFIFOL(fd,15+49)=0; //49-52調べた限り0固定 WFIFOL(fd,15+53)=0x0048d919; //53-56調べた限り固定 WFIFOL(fd,15+57)=0x0000003e; //57-60調べた限り固定 WFIFOL(fd,15+61)=0x0012f66c; //61-64調べた限り固定 - //65-68 - //69-72 + //65-68 + //69-72 if(bl) WFIFOL(fd,15+73)=bl->y; //73-76術者のY座標 WFIFOL(fd,15+77)=unit->bl.m; //77-80マップIDかなぁ?かなり2バイトで足りそうな数字 WFIFOB(fd,15+81)=0xaa; //81終端文字0xaa @@ -4597,8 +4630,8 @@ int clif_skill_nodamage(struct block_list *src,struct block_list *dst, nullpo_retr(0, src); nullpo_retr(0, dst); - if(heal > 0x7fff && skill_id != (NPC_SELFDESTRUCTION || NPC_SELFDESTRUCTION2)) - heal = 0x7fff; + if(heal>0x7fff && skill_id != (NPC_SELFDESTRUCTION || NPC_SELFDESTRUCTION2)) + heal=0x7fff; WBUFW(buf,0)=0x11a; WBUFW(buf,2)=skill_id; @@ -4669,29 +4702,29 @@ int clif_skill_setunit(struct skill_unit *unit) if(unit->group->unit_id==0xb0){ //グラフィティ WBUFB(buf,15+1)=1; memcpy(WBUFP(buf,15+2),unit->group->valstr,80); - } else { - WBUFL(buf,15+1)=0; //1-4調べた限り固定 - WBUFL(buf,15+5)=0; //5-8調べた限り固定 - //9-12マップごとで一定の77-80とはまた違う4バイトのかなり大きな数字 + }else{ + WBUFL(buf,15+1)=0; //1-4調べた限り固定 + WBUFL(buf,15+5)=0; //5-8調べた限り固定 + //9-12マップごとで一定の77-80とはまた違う4バイトのかなり大きな数字 WBUFL(buf,15+13)=unit->bl.y - 0x12; //13-16ユニットのY座標-18っぽい(Y:17でFF FF FF FF) WBUFL(buf,15+17)=0x004f37dd; //17-20調べた限り固定(0x1b2で0x004fdbddだった) WBUFL(buf,15+21)=0x0012f674; //21-24調べた限り固定 WBUFL(buf,15+25)=0x0012f664; //25-28調べた限り固定 WBUFL(buf,15+29)=0x0012f654; //29-32調べた限り固定 WBUFL(buf,15+33)=0x77527bbc; //33-36調べた限り固定 - //37-39 - WBUFB(buf,15+40)=0x2d; //40調べた限り固定 - WBUFL(buf,15+41)=0; //41-44調べた限り0固定 - WBUFL(buf,15+45)=0; //45-48調べた限り0固定 - WBUFL(buf,15+49)=0; //49-52調べた限り0固定 + //37-39 + WBUFB(buf,15+40)=0x2d; //40調べた限り固定 + WBUFL(buf,15+41)=0; //41-44調べた限り0固定 + WBUFL(buf,15+45)=0; //45-48調べた限り0固定 + WBUFL(buf,15+49)=0; //49-52調べた限り0固定 WBUFL(buf,15+53)=0x0048d919; //53-56調べた限り固定(0x01b2で0x00495119だった) WBUFL(buf,15+57)=0x0000003e; //57-60調べた限り固定 WBUFL(buf,15+61)=0x0012f66c; //61-64調べた限り固定 - //65-68 - //69-72 + //65-68 + //69-72 if(bl) WBUFL(buf,15+73)=bl->y; //73-76術者のY座標 WBUFL(buf,15+77)=unit->bl.m; //77-80マップIDかなぁ?かなり2バイトで足りそうな数字 - WBUFB(buf,15+81)=0xaa; //81終端文字0xaa + WBUFB(buf,15+81)=0xaa; //81終端文字0xaa } /* Graffiti [Valaris] */ @@ -4883,21 +4916,21 @@ int clif_displaymessage(const int fd, char* mes) * 天の声を送信する *------------------------------------------ */ -int clif_GMmessage(struct block_list *bl, char* mes, int len, int flag) +int clif_GMmessage(struct block_list *bl,char* mes,int len,int flag) { - unsigned char buf[255]; + unsigned char buf[len+16]; //unsigned char *buf = ((len + 16) >= sizeof(lbuf)) ? malloc(len+16) : lbuf; int lp = (flag&0x10) ? 8 : 4; WBUFW(buf,0) = 0x9a; - WBUFW(buf,2) = len + lp; + WBUFW(buf,2) = len+lp; WBUFL(buf,4) = 0x65756c62; memcpy(WBUFP(buf,lp), mes, len); - flag &= 0x07; + flag&=0x07; clif_send(buf, WBUFW(buf,2), bl, - (flag==1) ? ALL_SAMEMAP: - (flag==2) ? AREA: - (flag==3) ? SELF: + (flag==1)? ALL_SAMEMAP: + (flag==2)? AREA: + (flag==3)? SELF: ALL_CLIENT); //if (buf != lbuf) // free(buf); @@ -5034,10 +5067,10 @@ int clif_refine(int fd,struct map_session_data *sd,int fail,int index,int val) */ int clif_wis_message(int fd, char *nick, char *mes, int mes_len) // R 0097 .w .24B .?B { - WFIFOW(fd,0) = 0x97; - WFIFOW(fd,2) = mes_len + 24 + 4; - memcpy(WFIFOP(fd,4), nick, 24); - memcpy(WFIFOP(fd,28), mes, mes_len); + WFIFOW(fd,0)=0x97; + WFIFOW(fd,2)=mes_len +24+ 4; + memcpy(WFIFOP(fd,4),nick,24); + memcpy(WFIFOP(fd,28),mes,mes_len); WFIFOSET(fd,WFIFOW(fd,2)); return 0; } @@ -5048,8 +5081,8 @@ int clif_wis_message(int fd, char *nick, char *mes, int mes_len) // R 0097 */ int clif_wis_end(int fd, int flag) // R 0098 .B: 0: success to send wisper, 1: target character is not loged in?, 2: ignored by target { - WFIFOW(fd,0) = 0x98; - WFIFOW(fd,2) = flag; + WFIFOW(fd,0)=0x98; + WFIFOW(fd,2)=flag; WFIFOSET(fd,packet_db[0x98].len); return 0; } @@ -5207,7 +5240,7 @@ int clif_item_repair_list(struct map_session_data *sd) WFIFOW(fd,0)=0x0; for(i=c=0;istatus.inventory[i].nameid > 0 && sd->status.inventory[i].attribute != 0){ + if(sd->status.inventory[i].nameid > 0 && sd->status.inventory[i].attribute!=0){ WFIFOW(fd,c*2+4)=i+2; c++; } @@ -5838,9 +5871,9 @@ int clif_party_leaved(struct party *p,struct map_session_data *sd,int account_id for(i=0;imember[i].sd)!=NULL) break; - if (sd!=NULL) + if(sd!=NULL) clif_send(buf,packet_db[0x105].len,&sd->bl,PARTY); - } else if (sd!=NULL) { + }else if(sd!=NULL){ memcpy(WFIFOP(sd->fd,0),buf,packet_db[0x105].len); WFIFOSET(sd->fd,packet_db[0x105].len); } @@ -6025,7 +6058,7 @@ int clif_sendegg(struct map_session_data *sd) for(i=0,n=0;istatus.inventory[i].nameid<=0 || sd->inventory_data[i] == NULL || sd->inventory_data[i]->type!=7 || - sd->status.inventory[i].amount<=0) + sd->status.inventory[i].amount<=0) continue; WFIFOW(fd,n*2+4)=i+2; n++; @@ -6472,7 +6505,7 @@ int clif_guild_basicinfo(struct map_session_data *sd) WFIFOL(fd,42)=0; // 人数? memcpy(WFIFOP(fd,46),g->name,24); memcpy(WFIFOP(fd,70),g->master,24); - + memcpy(WFIFOP(fd,94),"",20); // 本拠地 for(i=0;iid; - clif_send(buf, packet_db[0x1ea].len, bl, AREA); + WBUFW(buf,0)=0x1ea; + WBUFL(buf,2)=bl->id; + clif_send(buf,packet_db[0x1ea].len,bl,AREA); } /*========================================== * あなたに逢いたい使用時名前叫び @@ -7105,11 +7139,9 @@ void clif_callpartner(struct map_session_data *sd) */ void clif_sitting(int fd, struct map_session_data *sd) { - int fd; - nullpo_retv(sd); - fd = sd->fd; + fd=sd->fd; WBUFW(fd, 0) = 0x8a; WBUFL(fd, 2) = sd->bl.id; @@ -7121,7 +7153,7 @@ void clif_sitting(int fd, struct map_session_data *sd) * *------------------------------------------ */ -int clif_disp_onlyself(struct map_session_data *sd, char *mes, int len) +int clif_disp_onlyself(struct map_session_data *sd,char *mes,int len) { //unsigned char lbuf[255]; //unsigned char *buf = (len + 32 >= sizeof(lbuf)) ? malloc(len + 32) : lbuf; @@ -7129,11 +7161,11 @@ int clif_disp_onlyself(struct map_session_data *sd, char *mes, int len) nullpo_retr(0, sd); - WBUFW(buf, 0) = 0x17f; - WBUFW(buf, 2) = len + 8; - memcpy(WBUFP(buf,4), mes, len + 4); + WBUFW(buf, 0)=0x17f; + WBUFW(buf, 2)=len+8; + memcpy(WBUFP(buf,4),mes,len+4); - clif_send(buf, WBUFW(buf,2), &sd->bl, SELF); + clif_send(buf,WBUFW(buf,2),&sd->bl,SELF); //if (buf != lbuf) // free(buf); @@ -7146,15 +7178,15 @@ int clif_disp_onlyself(struct map_session_data *sd, char *mes, int len) *------------------------------------------ */ -int clif_GM_kickack(struct map_session_data *sd, int id) +int clif_GM_kickack(struct map_session_data *sd,int id) { int fd; nullpo_retr(0, sd); - fd = sd->fd; - WFIFOW(fd,0) = 0xcd; - WFIFOL(fd,2) = id; + fd=sd->fd; + WFIFOW(fd,0)=0xcd; + WFIFOL(fd,2)=id; WFIFOSET(fd,packet_db[0xcd].len); return 0; } @@ -7168,8 +7200,8 @@ int clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd,int ty clif_GM_kickack(sd,tsd->status.account_id); tsd->opt1 = tsd->opt2 = 0; fd = tsd->fd; - WFIFOW(fd,0) = 0x18b; - WFIFOW(fd,2) = 0; + WFIFOW(fd,0)=0x18b; + WFIFOW(fd,2)=0; WFIFOSET(fd,packet_db[0x18b].len); clif_setwaitclose(fd); @@ -7269,19 +7301,19 @@ int clif_specialeffect(struct block_list *bl, int type, int flag) { * *------------------------------------------ */ -void clif_parse_WantToConnection(int fd, struct map_session_data *sd, int cmd) +void clif_parse_WantToConnection(int fd,struct map_session_data *sd, int cmd) { struct map_session_data *old_sd; int account_id,char_id,login_id1,sex; unsigned int client_tick; - if (sd) { - if (battle_config.error_log) + if(sd){ + if(battle_config.error_log) printf("clif_parse_WantToConnection : invalid request?\n"); return; } - sd = session[fd]->session_data = calloc(sizeof(*sd), 1); + sd=session[fd]->session_data=(struct map_session_data *)aCalloc(1,sizeof(struct map_session_data)); if (sd == NULL) { printf("out of memory : clif_parse_WantToConnection\n"); exit(1); @@ -7458,7 +7490,8 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd, int cmd) * *------------------------------------------ */ -void clif_parse_TickSend(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_TickSend(int fd,struct map_session_data *sd, int cmd) +{ nullpo_retv(sd); sd->client_tick=RFIFOL(fd,packet_db[cmd].pos[0]); @@ -7475,36 +7508,37 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd, int cmd) { nullpo_retv(sd); - if (pc_isdead(sd)) { - clif_clearchar_area(&sd->bl, 1); + if(pc_isdead(sd)) { + clif_clearchar_area(&sd->bl,1); return; } if (sd->npc_id != 0 || sd->vender_id != 0) return; - if (sd->skilltimer != -1 && pc_checkskill(sd, SA_FREECAST) <= 0) // フリーキャスト + if(sd->skilltimer != -1 && pc_checkskill(sd,SA_FREECAST) <= 0) // フリーキャスト return; - if (sd->chatID) + if(sd->chatID) return; - if (sd->canmove_tick > gettick()) + if(sd->canmove_tick > gettick()) return; // ステータス異常やハイディング中(トンネルドライブ無)で動けない - if ((sd->opt1 > 0 && sd->opt1 != 6) || - sd->sc_data[SC_ANKLE].timer !=-1 || //アンクルスネア - sd->sc_data[SC_AUTOCOUNTER].timer !=-1 || //オートカウンター - sd->sc_data[SC_TRICKDEAD].timer !=-1 || //死んだふり - sd->sc_data[SC_BLADESTOP].timer !=-1 || //白刃取り - sd->sc_data[SC_SPIDERWEB].timer !=-1 || //スパイダーウェッブ - (sd->sc_data[SC_DANCING].timer !=-1 && sd->sc_data[SC_DANCING].val4)) //合奏スキル演奏中は動けない + if((sd->opt1 > 0 && sd->opt1 != 6) || + sd->sc_data[SC_ANKLE].timer !=-1 || //アンクルスネア + sd->sc_data[SC_AUTOCOUNTER].timer !=-1 || //オートカウンター + sd->sc_data[SC_TRICKDEAD].timer !=-1 || //死んだふり + sd->sc_data[SC_BLADESTOP].timer !=-1 || //白刃取り + sd->sc_data[SC_SPIDERWEB].timer !=-1 || //スパイダーウェッブ + (sd->sc_data[SC_DANCING].timer !=-1 && sd->sc_data[SC_DANCING].val4) //合奏スキル演奏中は動けない + ) // return; - if ((sd->status.option & 2) && pc_checkskill(sd, RG_TUNNELDRIVE) <= 0) + if( (sd->status.option&2) && pc_checkskill(sd,RG_TUNNELDRIVE) <= 0) return; - if (sd->invincible_timer != -1) + if(sd->invincible_timer != -1) pc_delinvincibletimer(sd); pc_stopattack(sd); @@ -7520,13 +7554,14 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd, int cmd) { * *------------------------------------------ */ -void clif_parse_QuitGame(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_QuitGame(int fd,struct map_session_data *sd, int cmd) +{ unsigned int tick=gettick(); struct skill_unit_group* sg; nullpo_retv(sd); - WFIFOW(fd,0) = 0x18b; + WFIFOW(fd,0)=0x18b; if ((!pc_isdead(sd) && (sd->opt1 || (sd->opt2 && !(night_flag == 1 && sd->opt2 == STATE_BLIND)))) || sd->skilltimer != -1 || (DIFF_TICK(tick , sd->canact_tick) < 0) || @@ -7544,14 +7579,15 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd, int cmd) { WFIFOW(fd,2)=1; } WFIFOSET(fd,packet_db[0x18b].len); - + clif_setwaitclose(fd); } /*========================================== * *------------------------------------------ */ -void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_GetCharNameRequest(int fd,struct map_session_data *sd, int cmd) +{ struct block_list *bl; int account_id; @@ -7560,49 +7596,49 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd, int cmd) if(bl==NULL) return; - WFIFOW(fd,0) = 0x95; - WFIFOL(fd,2) = account_id; + WFIFOW(fd,0)=0x95; + WFIFOL(fd,2)=account_id; - switch(bl->type) { + switch(bl->type){ case BL_PC: { - struct map_session_data *ssd = (struct map_session_data *)bl; - struct party *p = NULL; - struct guild *g = NULL; - - nullpo_retv(ssd); + struct map_session_data *ssd=(struct map_session_data *)bl; + struct party *p=NULL; + struct guild *g=NULL; + + nullpo_retv(ssd); + + memcpy(WFIFOP(fd,6),ssd->status.name,24); + if( ssd->status.guild_id>0 &&(g=guild_search(ssd->status.guild_id))!=NULL && + (ssd->status.party_id==0 ||(p=party_search(ssd->status.party_id))!=NULL) ){ + // ギルド所属ならパケット0195を返す + int i,ps=-1; + for(i=0;imax_member;i++){ + if( g->member[i].account_id==ssd->status.account_id && + g->member[i].char_id==ssd->status.char_id ) + ps=g->member[i].position; + } + if(ps>=0 && psstatus.name, 24); - if (ssd->status.guild_id > 0 && (g = guild_search(ssd->status.guild_id)) != NULL && - (ssd->status.party_id == 0 || (p = party_search(ssd->status.party_id)) != NULL)) { - // ギルド所属ならパケット0195を返す - int i, ps = -1; - for(i = 0; i < g->max_member; i++) { - if (g->member[i].account_id == ssd->status.account_id && - g->member[i].char_id == ssd->status.char_id ) - ps = g->member[i].position; - } - if (ps >= 0 && ps < MAX_GUILDPOSITION) { - WFIFOW(fd, 0) = 0x195; - if (p) - memcpy(WFIFOP(fd,30), p->name, 24); - else - WFIFOB(fd,30) = 0; - memcpy(WFIFOP(fd,54), g->name,24); - memcpy(WFIFOP(fd,78), g->position[ps].name, 24); - WFIFOSET(fd,packet_db[0x195].len); - break; + WFIFOW(fd, 0)=0x195; + if(p) + memcpy(WFIFOP(fd,30),p->name,24); + else + WFIFOB(fd,30)=0; + memcpy(WFIFOP(fd,54),g->name,24); + memcpy(WFIFOP(fd,78),g->position[ps].name,24); + WFIFOSET(fd,packet_db[0x195].len); + break; + } } - } - WFIFOSET(fd,packet_db[0x95].len); - } - break; + WFIFOSET(fd,packet_db[0x95].len); + } break; case BL_PET: - memcpy(WFIFOP(fd,6), ((struct pet_data*)bl)->name, 24); + memcpy(WFIFOP(fd,6),((struct pet_data*)bl)->name,24); WFIFOSET(fd,packet_db[0x95].len); break; case BL_NPC: - memcpy(WFIFOP(fd,6), ((struct npc_data*)bl)->name, 24); + memcpy(WFIFOP(fd,6),((struct npc_data*)bl)->name,24); WFIFOSET(fd,packet_db[0x95].len); break; case BL_MOB: @@ -7638,8 +7674,8 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd, int cmd) } break; default: - if (battle_config.error_log) - printf("clif_parse_GetCharNameRequest : bad type %d(%d)\n", bl->type, account_id); + if(battle_config.error_log) + printf("clif_parse_GetCharNameRequest : bad type %d(%d)\n",bl->type,account_id); break; } } @@ -7657,10 +7693,10 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd, int cmd) { // memset(message, '\0', RFIFOW(fd,packet_db[cmd].pos[0]) + 128); memset(buf, '\0', RFIFOW(fd,packet_db[cmd].pos[0]) + 4); - if ((is_atcommand(fd, sd, RFIFOP(fd, packet_db[cmd].pos[1]), 0) != AtCommand_None) || + if((is_atcommand(fd, sd, RFIFOP(fd, packet_db[cmd].pos[1]), 0) != AtCommand_None) || ( sd->sc_data && (sd->sc_data[SC_BERSERK].timer!=-1 || //バーサーク時は会話も不可 - sd->sc_data[SC_NOCHAT].timer!=-1 ) )) //チャット禁止 + sd->sc_data[SC_NOCHAT].timer!=-1 )) ) //チャット禁止 { free(message); free(buf); @@ -7668,7 +7704,7 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data *sd, int cmd) { // } //printf("clif_parse_GlobalMessage: message: '%s'.\n", RFIFOP(fd,4)); - if (strncmp(RFIFOP(fd, packet_db[cmd].pos[1]), sd->status.name, strlen(sd->status.name)) != 0) { + if(strncmp(RFIFOP(fd, packet_db[cmd].pos[1]), sd->status.name, strlen(sd->status.name)) != 0) { printf("Hack on global message: character '%s' (account: %d), use an other name to send a (normal) message.\n", sd->status.name, sd->status.account_id); // information is sended to all online GM @@ -7752,7 +7788,8 @@ void clif_parse_MapMove(int fd, struct map_session_data *sd, int cmd) { * *------------------------------------------ */ -void clif_parse_ChangeDir(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_ChangeDir(int fd,struct map_session_data *sd, int cmd) +{ short headdir,dir; unsigned char buf[64]; @@ -7777,13 +7814,14 @@ void clif_parse_ChangeDir(int fd, struct map_session_data *sd, int cmd) { * *------------------------------------------ */ -void clif_parse_Emotion(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_Emotion(int fd,struct map_session_data *sd, int cmd) +{ int emotion; unsigned char buf[64]; nullpo_retv(sd); - if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) { + if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 2){ emotion=RFIFOB(fd,packet_db[cmd].pos[0]); WBUFW(buf,0) = 0xc0; WBUFL(buf,2) = sd->bl.id; @@ -7807,27 +7845,28 @@ void clif_parse_HowManyConnections(int fd, struct map_session_data *sd, int cmd) * *------------------------------------------ */ -void clif_parse_ActionRequest(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_ActionRequest(int fd, struct map_session_data *sd, int cmd) +{ unsigned int tick; unsigned char buf[64]; int action_type, target_id; nullpo_retv(sd); - if (pc_isdead(sd)) { - clif_clearchar_area(&sd->bl, 1); + if(pc_isdead(sd)) { + clif_clearchar_area(&sd->bl,1); return; } - if (sd->npc_id != 0 || sd->opt1 > 0 || sd->status.option & 2 || - (sd->sc_data && - (sd->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター - sd->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り - sd->sc_data[SC_DANCING].timer != -1))) //ダンス中 - return; + if( sd->npc_id!=0 || sd->opt1 > 0 || sd->status.option&2 || + ( sd->sc_data && + ( sd->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター + sd->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り + sd->sc_data[SC_DANCING].timer!=-1 )) ) //ダンス中 + return; - tick = gettick(); + tick=gettick(); - pc_stop_walking(sd, 0); + pc_stop_walking(sd,0); pc_stopattack(sd); target_id = RFIFOL(fd,packet_db[cmd].pos[0]); @@ -7852,17 +7891,17 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd, int cmd) { sd->attacktarget = 0; pc_attack(sd, target_id, action_type != 0); break; - case 0x02: // sitdown - if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 3) { - pc_stop_walking(sd, 1); - skill_gangsterparadise(sd, 1); // ギャングスターパラダイス設定 + case 0x02: // sitdown + if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 3) { + pc_stop_walking(sd,1); + skill_gangsterparadise(sd,1);/* ギャングスターパラダイス設定 */ pc_setsit(sd); - clif_sitting(fd, sd); + clif_sitting(fd,sd); } else clif_skill_fail(sd, 1, 0, 2); break; - case 0x03: // standup - skill_gangsterparadise(sd, 0); // ギャングスターパラダイス解除 + case 0x03: // standup + skill_gangsterparadise(sd,0);/* ギャングスターパラダイス解除 */ pc_setstand(sd); WBUFW(buf, 0) = 0x8a; WBUFL(buf, 2) = sd->bl.id; @@ -7876,17 +7915,18 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd, int cmd) { * *------------------------------------------ */ -void clif_parse_Restart(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_Restart(int fd,struct map_session_data *sd, int cmd) +{ int restarttype=RFIFOB(fd,packet_db[cmd].pos[0]); nullpo_retv(sd); switch(restarttype){ case 0x00: - if (pc_isdead(sd)) { + if(pc_isdead(sd)){ pc_setstand(sd); - pc_setrestartvalue(sd, 3); - pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, 2); + pc_setrestartvalue(sd,3); + pc_setpos(sd,sd->status.save_point.map,sd->status.save_point.x,sd->status.save_point.y,2); } break; case 0x01: @@ -7899,9 +7939,10 @@ void clif_parse_Restart(int fd, struct map_session_data *sd, int cmd) { } else { WFIFOW(fd,0)=0x18b; WFIFOW(fd,2)=1; - - WFIFOSET(fd,packet_db[0x018b].len); + WFIFOSET(fd,packet_db[0x18b].len); + return; } + chrif_charselectreq(sd); break; } } @@ -7910,7 +7951,8 @@ void clif_parse_Restart(int fd, struct map_session_data *sd, int cmd) { * Transmission of a wisp (S 0096 .w .24B .?B) *------------------------------------------ */ -void clif_parse_Wis(int fd, struct map_session_data *sd, int cmd) { // S 0096 .w .24B .?B // rewritten by [Yor] +void clif_parse_Wis(int fd,struct map_session_data *sd, int cmd) +{ int len=RFIFOW(fd,packet_db[cmd].pos[0]); if( sd && sd->sc_data && @@ -7940,31 +7982,32 @@ void clif_parse_GMmessage(int fd, struct map_session_data *sd, int cmd) { * *------------------------------------------ */ -void clif_parse_TakeItem(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_TakeItem(int fd,struct map_session_data *sd, int cmd) +{ struct flooritem_data *fitem; int map_object_id; nullpo_retv(sd); map_object_id = RFIFOL(fd,packet_db[cmd].pos[0]); - fitem = (struct flooritem_data*)map_id2bl(map_object_id); + fitem=(struct flooritem_data*)map_id2bl(map_object_id); - if (pc_isdead(sd)) { - clif_clearchar_area(&sd->bl, 1); + if(pc_isdead(sd)) { + clif_clearchar_area(&sd->bl,1); return; } if( sd->npc_id!=0 || sd->vender_id != 0 || sd->opt1 > 0 || - (sd->sc_data && (sd->sc_data[SC_TRICKDEAD].timer != -1 || //死んだふり - sd->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り + (sd->sc_data && (sd->sc_data[SC_AUTOCOUNTER].timer!=-1 || //オートカウンター + sd->sc_data[SC_BLADESTOP].timer!=-1 || //白刃取り sd->sc_data[SC_BERSERK].timer!=-1 || //バーサーク sd->sc_data[SC_NOCHAT].timer!=-1 )) ) //会話禁止 return; - if (fitem == NULL || fitem->bl.m != sd->bl.m) + if(fitem==NULL || fitem->bl.m != sd->bl.m) return; - pc_takeitem(sd, fitem); + pc_takeitem(sd,fitem); } /*========================================== @@ -7976,20 +8019,20 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd, int cmd) { nullpo_retv(sd); - if (pc_isdead(sd)) { - clif_clearchar_area(&sd->bl, 1); + if(pc_isdead(sd)) { + clif_clearchar_area(&sd->bl,1); return; } - if (sd->npc_id != 0 || sd->vender_id != 0 || sd->opt1 > 0 || - (sd->sc_data && (sd->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター - sd->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り - sd->sc_data[SC_BERSERK].timer != -1)) ) //バーサーク + if( sd->npc_id!=0 || sd->vender_id != 0 || sd->opt1 > 0 || + (sd->sc_data && (sd->sc_data[SC_AUTOCOUNTER].timer!=-1 || //オートカウンター + sd->sc_data[SC_BLADESTOP].timer!=-1 || //白刃取り + sd->sc_data[SC_BERSERK].timer!=-1)) ) //バーサーク return; item_index = RFIFOW(fd,packet_db[cmd].pos[0])-2; item_amount = RFIFOW(fd,packet_db[cmd].pos[1]); - pc_dropitem(sd, item_index, item_amount); + pc_dropitem(sd,item_index,item_amount); } /*========================================== @@ -7999,13 +8042,13 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd, int cmd) { void clif_parse_UseItem(int fd, struct map_session_data *sd, int cmd) { nullpo_retv(sd); - if (pc_isdead(sd)) { - clif_clearchar_area(&sd->bl, 1); + if(pc_isdead(sd)) { + clif_clearchar_area(&sd->bl,1); return; } - if (sd->npc_id!=0 || sd->vender_id != 0 || sd->opt1 > 0 || - (sd->sc_data && (sd->sc_data[SC_TRICKDEAD].timer != -1 || //死んだふり - sd->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り + if( sd->npc_id!=0 || sd->vender_id != 0 || sd->opt1 > 0 || + (sd->sc_data && (sd->sc_data[SC_TRICKDEAD].timer != -1 || //死んだふり + sd->sc_data[SC_BLADESTOP].timer!=-1 || //白刃取り sd->sc_data[SC_BERSERK].timer!=-1 || //バーサーク sd->sc_data[SC_NOCHAT].timer!=-1 )) ) //会話禁止 return; @@ -8039,10 +8082,10 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd, int cmd) clif_equipitemack(sd,index,0,0); // fail return; } - if(sd->status.inventory[index].attribute != 0) - { - clif_equipitemack(sd, index, 0, 0); // fail - return ; + + if(sd->status.inventory[index].attribute != 0) { // 破壊されている + clif_equipitemack(sd,index,0,0); // fail + return; } //ペット用装備であるかないか if(sd->inventory_data[index]) { @@ -8364,16 +8407,22 @@ void clif_parse_SkillUp(int fd,struct map_session_data *sd, int cmd) void clif_parse_UseSkillToId(int fd, struct map_session_data *sd, int cmd) { int skillnum, skilllv,lv, target_id; unsigned int tick=gettick(); + struct block_list *bl; nullpo_retv(sd); - if (sd->chatID || sd->npc_id != 0 || sd->vender_id != 0) - return; + if(map[sd->bl.m].flag.noskill) return; + if(sd->npc_id!=0 || sd->vender_id != 0) return; + if(sd->chatID) return; skilllv = RFIFOW(fd,packet_db[cmd].pos[0]); skillnum = RFIFOW(fd,packet_db[cmd].pos[1]); target_id = RFIFOL(fd,packet_db[cmd].pos[2]); + bl=map_id2bl(target_id); + if(bl && mob_gvmobcheck(sd, bl) == 0) + return; + if(skillnotok(skillnum, sd)) return; @@ -8391,17 +8440,17 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd, int cmd) { return; if (sd->invincible_timer != -1) pc_delinvincibletimer(sd); - if (sd->skillitem >= 0 && sd->skillitem == skillnum) { - if (skilllv != sd->skillitemlv) + if(sd->skillitem >= 0 && sd->skillitem == skillnum) { + if(skilllv != sd->skillitemlv) skilllv = sd->skillitemlv; - skill_use_id(sd, target_id, skillnum, skilllv); + skill_use_id(sd,target_id,skillnum,skilllv); } else { sd->skillitem = sd->skillitemlv = -1; - if (skillnum == MO_EXTREMITYFIST) { - if ((sd->sc_data[SC_COMBO].timer == -1 || (sd->sc_data[SC_COMBO].val1 != MO_COMBOFINISH && sd->sc_data[SC_COMBO].val1 != CH_CHAINCRUSH))) { - if (!sd->state.skill_flag ) { + if(skillnum == MO_EXTREMITYFIST) { + if((sd->sc_data[SC_COMBO].timer == -1 || (sd->sc_data[SC_COMBO].val1 != MO_COMBOFINISH && sd->sc_data[SC_COMBO].val1 != CH_CHAINCRUSH))) { + if(!sd->state.skill_flag ) { sd->state.skill_flag = 1; - clif_skillinfo(sd, MO_EXTREMITYFIST, 1, -1); + clif_skillinfo(sd,MO_EXTREMITYFIST,1,-1); return; } else if (sd->bl.id == target_id) { clif_skillinfo(sd, MO_EXTREMITYFIST, 1, -1); @@ -8409,11 +8458,11 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd, int cmd) { } } } - if ((lv = pc_checkskill(sd, skillnum)) > 0) { - if (skilllv > lv) + if( (lv = pc_checkskill(sd,skillnum)) > 0) { + if(skilllv > lv) skilllv = lv; - skill_use_id(sd, target_id, skillnum, skilllv); - if (sd->state.skill_flag) + skill_use_id(sd,target_id,skillnum,skilllv); + if(sd->state.skill_flag) sd->state.skill_flag = 0; } } @@ -8429,7 +8478,8 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd, int cmd) { nullpo_retv(sd); - if (sd->npc_id != 0 || sd->vender_id != 0) return; + if(map[sd->bl.m].flag.noskill) return; + if(sd->npc_id!=0 || sd->vender_id != 0) return; if(sd->chatID) return; skilllv = RFIFOW(fd,packet_db[cmd].pos[0]); @@ -8445,10 +8495,10 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd, int cmd) { memcpy(sd->message,RFIFOP(fd,packet_db[cmd].pos[4]),80); } - if (sd->skilltimer != -1) + if(sd->skilltimer != -1) return; - else if (DIFF_TICK(tick, sd->canact_tick) < 0) { - clif_skill_fail(sd, skillnum, 4, 0); + else if(DIFF_TICK(tick , sd->canact_tick) < 0) { + clif_skill_fail(sd,skillnum,4,0); return; } @@ -8458,16 +8508,16 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd, int cmd) { return; if (sd->invincible_timer != -1) pc_delinvincibletimer(sd); - if (sd->skillitem >= 0 && sd->skillitem == skillnum) { - if (skilllv != sd->skillitemlv) + if(sd->skillitem >= 0 && sd->skillitem == skillnum) { + if(skilllv != sd->skillitemlv) skilllv = sd->skillitemlv; - skill_use_pos(sd, x, y, skillnum, skilllv); + skill_use_pos(sd,x,y,skillnum,skilllv); } else { sd->skillitem = sd->skillitemlv = -1; - if ((lv = pc_checkskill(sd, skillnum)) > 0) { - if (skilllv > lv) + if( (lv = pc_checkskill(sd,skillnum)) > 0) { + if(skilllv > lv) skilllv = lv; - skill_use_pos(sd, x, y, skillnum,skilllv); + skill_use_pos(sd,x,y,skillnum,skilllv); } } } @@ -8660,18 +8710,18 @@ void clif_parse_ResetChar(int fd, struct map_session_data *sd, int cmd) { * 019c /lb等 *------------------------------------------ */ -void clif_parse_LGMmessage(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_LGMmessage(int fd,struct map_session_data *sd, int cmd) +{ int len = RFIFOW(fd,packet_db[cmd].pos[0]); - unsigned char buf[64]; nullpo_retv(sd); if ((battle_config.atc_gmonly == 0 || pc_isGM(sd)) && (pc_isGM(sd) >= get_atcommand_level(AtCommand_LocalBroadcast))) { - WBUFW(buf,0) = 0x9a; - WBUFW(buf,2) = len; - memcpy(WBUFP(buf,4), RFIFOP(fd,packet_db[cmd].pos[1]), len-packet_db[cmd].pos[1]); - clif_send(buf, len, &sd->bl, ALL_SAMEMAP); + WFIFOW(fd,0)=0x9a; + WFIFOW(fd,2)=len; + memcpy(WBUFP(fd,4), RFIFOP(fd,packet_db[cmd].pos[1]), len-packet_db[cmd].pos[1]); + clif_send(WFIFOP(fd,0), len, &sd->bl, ALL_SAMEMAP); } } @@ -8689,6 +8739,10 @@ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd, int cmd) { item_index = RFIFOW(fd,packet_db[cmd].pos[0])-2; item_amount = RFIFOL(fd,packet_db[cmd].pos[1]); + if(item_index < 0 || item_index > MAX_INVENTORY) return; + if(item_amount <=0 ) return; + if(itemdb_isdropable(sd->status.inventory[item_index].nameid) == 0) return; + if (sd->state.storage_flag) storage_guild_storageadd(sd, item_index, item_amount); else @@ -8699,7 +8753,8 @@ void clif_parse_MoveToKafra(int fd, struct map_session_data *sd, int cmd) { * カプラ倉庫から出す *------------------------------------------ */ -void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd, int cmd) { +void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd, int cmd) +{ int item_index,item_amount; nullpo_retv(sd); @@ -8718,7 +8773,8 @@ void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd, int cmd) { * カプラ倉庫へカートから入れる *------------------------------------------ */ -void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_MoveToKafraFromCart(int fd,struct map_session_data *sd, int cmd) +{ nullpo_retv(sd); if (sd->npc_id != 0 || sd->vender_id != 0 || sd->trade_partner != 0) return; @@ -8733,7 +8789,8 @@ void clif_parse_MoveToKafraFromCart(int fd, struct map_session_data *sd, int cmd * カプラ倉庫から出す *------------------------------------------ */ -void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_MoveFromKafraToCart(int fd,struct map_session_data *sd, int cmd) +{ nullpo_retv(sd); if(sd->npc_id!=0 || sd->vender_id != 0) return; @@ -8747,10 +8804,11 @@ void clif_parse_MoveFromKafraToCart(int fd, struct map_session_data *sd, int cmd * カプラ倉庫を閉じる *------------------------------------------ */ -void clif_parse_CloseKafra(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_CloseKafra(int fd,struct map_session_data *sd, int cmd) +{ nullpo_retv(sd); - if (sd->state.storage_flag) + if(sd->state.storage_flag) storage_guild_storageclose(sd); else storage_storageclose(sd); @@ -8831,7 +8889,8 @@ void clif_parse_PartyChangeOption(int fd,struct map_session_data *sd, int cmd) * パーティメッセージ送信要求 *------------------------------------------ */ -void clif_parse_PartyMessage(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_PartyMessage(int fd,struct map_session_data *sd, int cmd) +{ nullpo_retv(sd); if (is_atcommand(fd, sd, RFIFOP(fd, packet_db[cmd].pos[1]),0) != AtCommand_None) @@ -9024,7 +9083,8 @@ void clif_parse_GuildExplusion(int fd,struct map_session_data *sd, int cmd) * ギルド会話 *------------------------------------------ */ -void clif_parse_GuildMessage(int fd,struct map_session_data *sd, int cmd) { +void clif_parse_GuildMessage(int fd,struct map_session_data *sd, int cmd) +{ nullpo_retv(sd); if (is_atcommand(fd, sd, RFIFOP(fd, packet_db[cmd].pos[1]), 0) != AtCommand_None) @@ -9107,7 +9167,8 @@ void clif_parse_ChangePetName(int fd,struct map_session_data *sd, int cmd) } // Kick (right click menu for GM "(name) force to quit") -void clif_parse_GMKick(int fd, struct map_session_data *sd, int cmd) { +void clif_parse_GMKick(int fd,struct map_session_data *sd, int cmd) +{ struct block_list *target; int tid = RFIFOL(fd,packet_db[cmd].pos[0]); @@ -9116,17 +9177,17 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd, int cmd) { if ((battle_config.atc_gmonly == 0 || pc_isGM(sd)) && (pc_isGM(sd) >= get_atcommand_level(AtCommand_Kick))) { target = map_id2bl(tid); - if (target) { - if (target->type == BL_PC) { + if(target) { + if(target->type == BL_PC) { struct map_session_data *tsd = (struct map_session_data *)target; - if (pc_isGM(sd) > pc_isGM(tsd)) - clif_GM_kick(sd, tsd, 1); + if(pc_isGM(sd) > pc_isGM(tsd)) + clif_GM_kick(sd,tsd,1); else - clif_GM_kickack(sd, 0); + clif_GM_kickack(sd,0); } else if (target->type == BL_MOB) { struct mob_data *md = (struct mob_data *)target; sd->state.attack_type = 0; - mob_damage(&sd->bl, md, md->hp, 2); + mob_damage(&sd->bl,md,md->hp,2); } else clif_GM_kickack(sd, 0); } else @@ -9563,7 +9624,7 @@ static int clif_parse(int fd) { return 0; } - if (RFIFOREST(fd) < 2) + if(RFIFOREST(fd)<2) return 0; cmd = RFIFOW(fd,0); @@ -9636,10 +9697,10 @@ static int clif_parse(int fd) { char packet_txt[256] = "save/packet.txt"; time_t now; printf("---- 00-01-02-03-04-05-06-07-08-09-0A-0B-0C-0D-0E-0F"); - for(i = 0; i < packet_len; i++) { - if ((i & 15) == 0) + for(i=0;istate.auth) { if (sd->status.name != NULL) @@ -9785,7 +9846,7 @@ int do_init_clif(void) { sleep(20); #endif } - if (i == 10) { + if(i==10){ printf("cant bind game port\n"); exit(1); } diff --git a/src/map/mob.c b/src/map/mob.c index a74ee534e..a340d171e 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -50,13 +50,13 @@ static int mob_unlocktarget(struct mob_data *md,int tick); * Mob is searched with a name. *------------------------------------------ */ -int mobdb_searchname(const char *str) +int mobdb_searchname(const char *str) { int i; - for(i = 0; i < sizeof(mob_db) / sizeof(mob_db[0]); i++) { - if (strcmpi(mob_db[i].name, str) == 0 || strcmp(mob_db[i].jname, str) == 0 || - memcmp(mob_db[i].name, str, 24) == 0 || memcmp(mob_db[i].jname, str, 24) == 0) + for(i=0;i=2000){ class=mob_db[0].summonper[j]; } }else{ return 0; } -// if(battle_config.etc_log==1) +// if(battle_config.etc_log) // printf("mobclass=%d try=%d\n",class,i); } if(sd){ @@ -165,14 +165,14 @@ int mob_once_spawn(struct map_session_data *sd,char *mapname, md->bl.m=m; md->bl.x=x; md->bl.y=y; - if(r<0&&battle_config.dead_branch_active==1) md->mode=0x1+0x4+0x80; //移動してアクティブで反撃する + if(r<0&&battle_config.dead_branch_active) md->mode=0x1+0x4+0x80; //移動してアクティブで反撃する md->m =m; md->x0=x; md->y0=y; md->xs=0; md->ys=0; - md->spawndelay1=-1; // Only once is a flag. - md->spawndelay2=-1; // Only once is a flag. + md->spawndelay1=-1; // 一度のみフラグ + md->spawndelay2=-1; // 一度のみフラグ memcpy(md->npc_event,event,sizeof(md->npc_event)); @@ -211,7 +211,7 @@ int mob_once_spawn_area(struct map_session_data *sd,char *mapname, max=(y1-y0+1)*(x1-x0+1)*3; if(max>1000)max=1000; - if(m<0 || amount<=0 || (class>=0 && class<=1000) || class>2000) // A summon is stopped if a value is unusual + if(m<0 || amount<=0 || (class>=0 && class<=1000) || class>2000) // 値が異常なら召喚を止める return 0; for(i=0;i=max){ - if(lx>=0){ // Since reference went wrong, the place which boiled before is used. + if(lx>=0){ // 検索に失敗したので以前に沸いた場所を使う x=lx; y=ly; }else - return 0; // Since reference of the place which boils first went wrong, it stops. + return 0; // 最初に沸く場所の検索を失敗したのでやめる } id=mob_once_spawn(sd,mapname,x,y,mobname,class,1,event); lx=x; @@ -415,7 +415,7 @@ int mob_can_move(struct mob_data *md) md->sc_data[SC_AUTOCOUNTER].timer != -1 || //オートカウンター md->sc_data[SC_BLADESTOP].timer != -1 || //白刃取り md->sc_data[SC_SPIDERWEB].timer != -1 //スパイダーウェッブ - ) + ) return 0; return 1; @@ -506,7 +506,7 @@ static int mob_walk(struct mob_data *md,unsigned int tick,int data) if(md->option&4) skill_check_cloaking(&md->bl); - skill_unit_move(&md->bl,tick,1); // Inspection of a skill unit + skill_unit_move(&md->bl,tick,1); // スキルユニットの検査 } if((i=calc_next_walk_step(md))>0){ i = i>>1; @@ -516,7 +516,7 @@ static int mob_walk(struct mob_data *md,unsigned int tick,int data) md->state.state=MS_WALK; if(md->walkpath.path_pos>=md->walkpath.path_len) - clif_fixmobpos(md); // When mob stops, retransmission current of a position. + clif_fixmobpos(md); // とまったときに位置の再送信 } return 0; } @@ -565,7 +565,7 @@ static int mob_attack(struct mob_data *md,unsigned int tick,int data) return 0; if(tsd){ - if(pc_isdead(tsd) || tsd->invincible_timer != -1 || pc_isinvisible(tsd) || md->bl.m != tbl->m || tbl->prev == NULL || distance(md->bl.x,md->bl.y,tbl->x,tbl->y)>=13 ){ + if( pc_isdead(tsd) || tsd->invincible_timer != -1 || pc_isinvisible(tsd) || md->bl.m != tbl->m || tbl->prev == NULL || distance(md->bl.x,md->bl.y,tbl->x,tbl->y)>=13 ){ md->target_id=0; md->state.targettype = NONE_ATTACKABLE; return 0; @@ -693,8 +693,8 @@ int mob_changestate(struct mob_data *md,int state,int type) // Since it died, all aggressors' attack to this mob is stopped. clif_foreachclient(mob_stopattacked,md->bl.id); skill_unit_out_all(&md->bl,gettick(),1); - skill_status_change_clear(&md->bl,2); // The abnormalities in status are canceled. - skill_clear_unitgroup(&md->bl); // All skill unit groups are deleted. + skill_status_change_clear(&md->bl,2); // ステータス異常を解除する + skill_clear_unitgroup(&md->bl); // 全てのスキルユニットグループを削除する skill_cleartimerskill(&md->bl); if(md->deletetimer!=-1) delete_timer(md->deletetimer,mob_timer_delete); @@ -725,12 +725,12 @@ static int mob_timer(int tid,unsigned int tick,int id,int data) return 1; nullpo_retr(1, md=(struct mob_data*)bl); - - if(!md->bl.type || md->bl.type!=BL_MOB) + + if(md->bl.type!=BL_MOB) return 1; if(md->timer != tid){ - if(battle_config.error_log==1) + if(battle_config.error_log) printf("mob_timer %d != %d\n",md->timer,tid); return 0; } @@ -750,7 +750,7 @@ static int mob_timer(int tid,unsigned int tick,int id,int data) mob_changestate(md,MS_IDLE,0); break; default: - if(battle_config.error_log==1) + if(battle_config.error_log) printf("mob_timer : %d ?\n",md->state.state); break; } @@ -853,6 +853,7 @@ int mob_setdelayspawn(int id) spawntime=spawntime1; else spawntime=spawntime2; + if(DIFF_TICK(spawntime3,spawntime)>0) spawntime=spawntime3; @@ -1102,7 +1103,7 @@ int mob_can_reach(struct mob_data *md,struct block_list *bl,int range) if( range>0 && range < ((dx>dy)?dx:dy) ) // 遠すぎる return 0; - if( md->bl.x==bl->x && md->bl.y==bl->y ) // 同じャX + if( md->bl.x==bl->x && md->bl.y==bl->y ) // 同じマス return 1; // Obstacle judging @@ -1365,7 +1366,7 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md,unsigned int tick) } // Although there is the master, since it is somewhat far, it approaches. - if((!md->target_id || md->state.targettype == NONE_ATTACKABLE) && mob_can_move(md) && + if((!md->target_id || md->state.targettype == NONE_ATTACKABLE) && mob_can_move(md) && (md->walkpath.path_pos>=md->walkpath.path_len || md->walkpath.path_len==0) && md->master_dist<15){ int i=0,dx,dy,ret; if(md->master_dist>4) { @@ -1485,7 +1486,7 @@ static int mob_randomwalk(struct mob_data *md,int tick) if(i+1>=retrycount){ md->move_fail_count++; if(md->move_fail_count>1000){ - if(battle_config.error_log==1) + if(battle_config.error_log) printf("MOB cant move. random spawn %d, class = %d\n",md->bl.id,md->class); md->move_fail_count=0; mob_spawn(md->bl.id); @@ -1573,15 +1574,15 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) asd=(struct map_session_data *)abl; if(asd==NULL || md->bl.m != abl->m || abl->prev == NULL || asd->invincible_timer != -1 || pc_isinvisible(asd) || (dist=distance(md->bl.x,md->bl.y,abl->x,abl->y))>=32 || battle_check_target(bl,abl,BCT_ENEMY)==0) - md->attacked_id=0; - else { - md->target_id=md->attacked_id; // set target - md->state.targettype = ATTACKABLE; - attack_type = 1; - md->attacked_id=0; - md->min_chase=dist+13; - if(md->min_chase>26) - md->min_chase=26; + md->attacked_id=0; + else { + md->target_id=md->attacked_id; // set target + md->state.targettype = ATTACKABLE; + attack_type = 1; + md->attacked_id=0; + md->min_chase=dist+13; + if(md->min_chase>26) + md->min_chase=26; } } } @@ -1593,7 +1594,7 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) // アクティヴモンスターの策敵 (?? of a bitter taste TIVU monster) if( (!md->target_id || md->state.targettype == NONE_ATTACKABLE) && mode&0x04 && !md->state.master_check && - battle_config.monster_active_enable==1){ + battle_config.monster_active_enable){ i=0; if(md->state.special_mob_ai){ map_foreachinarea(mob_ai_sub_hard_activesearch,md->bl.m, @@ -1601,10 +1602,10 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) md->bl.x+AREA_SIZE*2,md->bl.y+AREA_SIZE*2, 0,md,&i); }else{ - map_foreachinarea(mob_ai_sub_hard_activesearch,md->bl.m, - md->bl.x-AREA_SIZE*2,md->bl.y-AREA_SIZE*2, - md->bl.x+AREA_SIZE*2,md->bl.y+AREA_SIZE*2, - BL_PC,md,&i); + map_foreachinarea(mob_ai_sub_hard_activesearch,md->bl.m, + md->bl.x-AREA_SIZE*2,md->bl.y-AREA_SIZE*2, + md->bl.x+AREA_SIZE*2,md->bl.y+AREA_SIZE*2, + BL_PC,md,&i); } } @@ -1632,23 +1633,23 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) else if(!battle_check_range(&md->bl,tbl,mob_db[md->class].range)){ // 攻撃範囲外なので移動 if(!(mode&1)){ // 移動しないモード - mob_unlocktarget(md,tick); - return 0; - } + mob_unlocktarget(md,tick); + return 0; + } if( !mob_can_move(md) ) // 動けない状態にある - return 0; + return 0; md->state.skillstate=MSS_CHASE; // 突撃時スキル - mobskill_use(md,tick,-1); + mobskill_use(md,tick,-1); // if(md->timer != -1 && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tsd->bl.x,tsd->bl.y)<2) ) if(md->timer != -1 && md->state.state!=MS_ATTACK && (DIFF_TICK(md->next_walktime,tick)<0 || distance(md->to_x,md->to_y,tbl->x,tbl->y)<2) ) return 0; // 既に移動中 if( !mob_can_reach(md,tbl,(md->min_chase>13)?md->min_chase:13) ) mob_unlocktarget(md,tick); // 移動できないのでタゲ解除(IWとか?) else{ - // 追跡 - md->next_walktime=tick+500; - i=0; - do { + // 追跡 + md->next_walktime=tick+500; + i=0; + do { if(i==0){ // 最初はAEGISと同じ方法で検索 dx=tbl->x - md->bl.x; dy=tbl->y - md->bl.y; @@ -1667,35 +1668,35 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) else if(dx>0) dx++; if(dy<0) dy--; else if(dy>0) dy++; - }*/ - ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); - i++; - } while(ret && i<5); - + }*/ + ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); + i++; + } while(ret && i<5); + if(ret){ // 移動不可能な所からの攻撃なら2歩下る - if(dx<0) dx=2; - else if(dx>0) dx=-2; - if(dy<0) dy=2; - else if(dy>0) dy=-2; - mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); + if(dx<0) dx=2; + else if(dx>0) dx=-2; + if(dy<0) dy=2; + else if(dy>0) dy=-2; + mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0); } } } else { // 攻撃射程範囲内 - md->state.skillstate=MSS_ATTACK; + md->state.skillstate=MSS_ATTACK; if(md->state.state==MS_WALK) mob_stop_walking(md,1); // 歩行中なら停止 - if(md->state.state==MS_ATTACK) + if(md->state.state==MS_ATTACK) return 0; // 既に攻撃中 - mob_changestate(md,MS_ATTACK,attack_type); + mob_changestate(md,MS_ATTACK,attack_type); -/* if(mode&0x08){ // リンクモンスター - map_foreachinarea(mob_ai_sub_hard_linksearch,md->bl.m, - md->bl.x-13,md->bl.y-13, - md->bl.x+13,md->bl.y+13, +/* if(mode&0x08){ // リンクモンスター + map_foreachinarea(mob_ai_sub_hard_linksearch,md->bl.m, + md->bl.x-13,md->bl.y-13, + md->bl.x+13,md->bl.y+13, BL_MOB,md,&tsd->bl); - }*/ - } - return 0; + }*/ + } + return 0; }else{ // ルートモンスター処理 if(tbl == NULL || tbl->type != BL_ITEM ||tbl->m != md->bl.m || (dist=distance(md->bl.x,md->bl.y,tbl->x,tbl->y))>=md->min_chase || !md->lootitem){ @@ -1726,13 +1727,13 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap) if(ret) mob_unlocktarget(md,tick);// 移動できないのでタゲ解除(IWとか?) }else{ // アイテムまでたどり着いた - if(md->state.state==MS_ATTACK) - return 0; // 攻撃中 + if(md->state.state==MS_ATTACK) + return 0; // 攻撃中 if(md->state.state==MS_WALK) mob_stop_walking(md,1); // 歩行中なら停止 fitem = (struct flooritem_data *)tbl; - if(md->lootitem_count < LOOTITEM_SIZE) - memcpy(&md->lootitem[md->lootitem_count++],&fitem->item_data,sizeof(md->lootitem[0])); + if(md->lootitem_count < LOOTITEM_SIZE) + memcpy(&md->lootitem[md->lootitem_count++],&fitem->item_data,sizeof(md->lootitem[0])); else if(battle_config.monster_loot_type == 1 && md->lootitem_count >= LOOTITEM_SIZE) { mob_unlocktarget(md,tick); return 0; @@ -1825,7 +1826,7 @@ static int mob_ai_sub_lazy(void * key,void * data,va_list app) nullpo_retr(0, app); nullpo_retr(0, ap=va_arg(app,va_list)); - if(md==NULL) + if(md->bl.type!=BL_MOB) return 0; if(!md->bl.type || md->bl.type!=BL_MOB) @@ -1919,7 +1920,7 @@ static int mob_delay_item_drop(int tid,unsigned int tick,int id,int data) temp_item.amount = ditem->amount; temp_item.identify = !itemdb_isequip3(temp_item.nameid); - if(battle_config.item_auto_get==1){ + if(battle_config.item_auto_get){ if(ditem->first_sd && (flag = pc_additem(ditem->first_sd,&temp_item,ditem->amount))){ clif_additem(ditem->first_sd,0,0,flag); map_addflooritem(&temp_item,1,ditem->m,ditem->x,ditem->y,ditem->first_sd,ditem->second_sd,ditem->third_sd,0); @@ -1945,7 +1946,7 @@ static int mob_delay_item_drop2(int tid,unsigned int tick,int id,int data) nullpo_retr(0, ditem=(struct delay_item_drop2 *)id); - if(battle_config.item_auto_get==1){ + if(battle_config.item_auto_get){ if(ditem->first_sd && (flag = pc_additem(ditem->first_sd,&ditem->item_data,ditem->item_data.amount))){ clif_additem(ditem->first_sd,0,0,flag); map_addflooritem(&ditem->item_data,ditem->item_data.amount,ditem->m,ditem->x,ditem->y,ditem->first_sd,ditem->second_sd,ditem->third_sd,0); @@ -2071,7 +2072,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) // if(battle_config.battle_log) // printf("mob_damage %d %d %d\n",md->hp,max_hp,damage); if(md->bl.prev==NULL){ - if(battle_config.error_log==1) + if(battle_config.error_log) printf("mob_damage : BlockError!!\n"); return 0; } @@ -2123,7 +2124,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) if(md->attacked_id <= 0 && md->state.special_mob_ai==0) md->attacked_id = sd->bl.id; } - if(src && src->type == BL_PET && battle_config.pet_attack_exp_to_master==1) { + if(src && src->type == BL_PET && battle_config.pet_attack_exp_to_master) { struct pet_data *pd = (struct pet_data *)src; nullpo_retr(0, pd); for(i=0,minpos=0,mindmg=0x7fffffff;imode |= 0x1; md->next_walktime=tick; mobskill_use_id(md,&md->bl,skillidx);//自爆詠唱開始 - md->state.special_mob_ai++; + md->state.special_mob_ai++; } } @@ -2388,7 +2389,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) if(mob_db[md->class].dropitem[i].nameid <= 0) continue; drop_rate = mob_db[md->class].dropitem[i].p; - if(drop_rate <= 0 && battle_config.drop_rate0item==1) + if(drop_rate <= 0 && battle_config.drop_rate0item) drop_rate = 1; if(battle_config.drops_by_luk>0 && sd && md) drop_rate+=(sd->status.luk*battle_config.drops_by_luk)/100; // drops affected by luk [Valaris] if(sd && md && battle_config.pk_mode==1 && (mob_db[md->class].lv - sd->status.base_level >= 20)) drop_rate*=1.25; // pk_mode increase drops if 20 level difference [Valaris] @@ -2419,7 +2420,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) int race = battle_get_race(&md->bl); if(sd->monster_drop_itemid[i] <= 0) continue; - if(sd->monster_drop_race[i] & (1<monster_drop_race[i] & (1<class].mode & 0x20 && sd->monster_drop_race[i] & 1<<10) || (!(mob_db[md->class].mode & 0x20) && sd->monster_drop_race[i] & 1<<11) ) { if(sd->monster_drop_itemrate[i] <= rand()%10000) @@ -2474,7 +2475,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) if(mob_db[md->class].mvpitem[i].nameid <= 0) continue; drop_rate = mob_db[md->class].mvpitem[i].p; - if(drop_rate <= 0 && battle_config.drop_rate0item==1) + if(drop_rate <= 0 && battle_config.drop_rate0item) drop_rate = 1; if(drop_rate < battle_config.item_drop_mvp_min) drop_rate = battle_config.item_drop_mvp_min; @@ -2507,12 +2508,12 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) if(md->npc_event[0] && strcmp(((md->npc_event)+strlen(md->npc_event)-13),"::OnAgitBreak") == 0) { printf("MOB.C: Run NPC_Event[OnAgitBreak].\n"); if (agit_flag == 1) //Call to Run NPC_Event[OnAgitBreak] - guild_agit_break(md); + guild_agit_break(md); } // SCRIPT実行 if(md->npc_event[0]){ -// if(battle_config.battle_log==1) +// if(battle_config.battle_log) // printf("mob_damage : run event : %s\n",md->npc_event); if(src && src->type == BL_PET) sd = ((struct pet_data *)src)->msd; @@ -2735,12 +2736,13 @@ int mob_warp(struct mob_data *md,int m,int x,int y,int type) mob_changestate(md,MS_IDLE,0); if(type>0 && i==1000) { - if(battle_config.battle_log==1) + if(battle_config.battle_log) printf("MOB %d warp to (%d,%d), class = %d\n",md->bl.id,x,y,md->class); } map_addblock(&md->bl); - if(type>0) { + if(type>0) + { clif_spawnmob(md); mob_warpslave(md,md->bl.x,md->bl.y); } @@ -2957,11 +2959,11 @@ int mobskill_castend_id( int tid, unsigned int tick, int id,int data ) if(md->opt1>0 || md->sc_data[SC_DIVINA].timer != -1 || md->sc_data[SC_ROKISWEIL].timer != -1 || md->sc_data[SC_STEELBODY].timer != -1) return 0; if(md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター - return 0; + return 0; if(md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り return 0; if(md->sc_data[SC_BERSERK].timer != -1) //バーサーク - return 0; + return 0; } if(md->skillid != NPC_EMOTION) md->last_thinktime=tick + battle_get_adelay(&md->bl); @@ -2995,7 +2997,7 @@ int mobskill_castend_id( int tid, unsigned int tick, int id,int data ) md->skilldelay[md->skillidx]=tick; - if(battle_config.mob_skill_log==1) + if(battle_config.mob_skill_log) printf("MOB skill castend skill=%d, class = %d\n",md->skillid,md->class); mob_stop_walking(md,0); @@ -3045,7 +3047,7 @@ int mobskill_castend_pos( int tid, unsigned int tick, int id,int data ) if(md->opt1>0 || md->sc_data[SC_DIVINA].timer != -1 || md->sc_data[SC_ROKISWEIL].timer != -1 || md->sc_data[SC_STEELBODY].timer != -1) return 0; if(md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター - return 0; + return 0; if(md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り return 0; if(md->sc_data[SC_BERSERK].timer != -1) //バーサーク @@ -3079,7 +3081,7 @@ int mobskill_castend_pos( int tid, unsigned int tick, int id,int data ) return 0; } } - if(battle_config.monster_skill_nofootset==1) { + if(battle_config.monster_skill_nofootset) { range = -1; switch(md->skillid) { case WZ_FIREPILLAR: @@ -3106,7 +3108,7 @@ int mobskill_castend_pos( int tid, unsigned int tick, int id,int data ) } } - if(battle_config.monster_land_skill_limit==1) { + if(battle_config.monster_land_skill_limit) { maxcount = skill_get_maxcount(md->skillid); if(maxcount > 0) { int i,c; @@ -3126,7 +3128,7 @@ int mobskill_castend_pos( int tid, unsigned int tick, int id,int data ) return 0; md->skilldelay[md->skillidx]=tick; - if(battle_config.mob_skill_log==1) + if(battle_config.mob_skill_log) printf("MOB skill castend skill=%d, class = %d\n",md->skillid,md->class); mob_stop_walking(md,0); @@ -3161,7 +3163,7 @@ int mobskill_use_id(struct mob_data *md,struct block_list *target,int skill_idx) // 沈黙や異常 if(md->sc_data){ if(md->opt1>0 || md->sc_data[SC_DIVINA].timer != -1 || md->sc_data[SC_ROKISWEIL].timer != -1 || md->sc_data[SC_STEELBODY].timer != -1) - return 0; + return 0; if(md->sc_data[SC_AUTOCOUNTER].timer != -1 && md->skillid != KN_AUTOCOUNTER) //オートカウンター return 0; if(md->sc_data[SC_BLADESTOP].timer != -1) //白刃取り @@ -3209,7 +3211,7 @@ int mobskill_use_id(struct mob_data *md,struct block_list *target,int skill_idx) break; } - if(battle_config.mob_skill_log==1) + if(battle_config.mob_skill_log) printf("MOB skill use target_id=%d skill=%d lv=%d cast=%d, class = %d\n",target->id,skill_id,skill_lv,casttime,md->class); if(casttime>0 || forcecast){ // 詠唱が必要 @@ -3305,7 +3307,7 @@ int mobskill_use_pos( struct mob_data *md, md->skilldelay[skill_idx]=gettick(); md->state.skillcastcancel=ms->cancel; - if(battle_config.mob_skill_log==1) + if(battle_config.mob_skill_log) printf("MOB skill use target_pos=(%d,%d) skill=%d lv=%d cast=%d, class = %d\n", skill_x,skill_y,skill_id,skill_lv,casttime,md->class); -- cgit v1.2.3-70-g09d2 From 581475bc6416790765c498aa3d611f6868ffb64a Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 14 Nov 2004 16:18:26 +0000 Subject: Fixed some file types git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@172 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 4132 +-- Dev/Dev-Folder-Notes.txt | 6 +- Dev/TODO.txt | 1366 +- Dev/TODO_MOB_AI.txt | 266 +- Dev/bugs.txt | 144 +- Dev/forSQLdev.txt | 292 +- Dev/quotes.txt | 296 +- Dev/resnametable.TXT | 126 +- INSTALL | 492 +- LICENCE | 680 +- LICENCE_JA | 832 +- Makefile | 254 +- Readme-jap | 35014 +++++++++++----------- Readme2.txt | 60 +- athena-start | 168 +- char-server.sh | 32 +- charserv.bat | 6 +- conf-tmpl/GM_account.txt | 70 +- conf-tmpl/atcommand_athena.conf | 1288 +- conf-tmpl/atcommand_athena.conf.orig | 1138 +- conf-tmpl/battle_athena.conf | 1450 +- conf-tmpl/char_athena.conf | 340 +- conf-tmpl/grf-files.txt | 6 +- conf-tmpl/help.txt | 450 +- conf-tmpl/inter_athena.conf | 256 +- conf-tmpl/ladmin_athena.conf | 68 +- conf-tmpl/lan_support.conf | 82 +- conf-tmpl/log_athena.conf | 104 +- conf-tmpl/login_athena.conf | 296 +- conf-tmpl/map_athena.conf | 2338 +- conf-tmpl/mapflag/arenas.txt | 212 +- conf-tmpl/mapflag/dungeons.txt | 306 +- conf-tmpl/mapflag/guildcastles.txt | 298 +- conf-tmpl/mapflag/gvg.txt | 140 +- conf-tmpl/mapflag/jail.txt | 86 +- conf-tmpl/mapflag/jobquests.txt | 268 +- conf-tmpl/mapflag/pvp.txt | 1132 +- conf-tmpl/mapflag/towns.txt | 446 +- conf-tmpl/mapflag/type/gvg.txt | 56 +- conf-tmpl/mapflag/type/jail.txt | 94 +- conf-tmpl/mapflag/type/nightmare.txt | 96 +- conf-tmpl/mapflag/type/nobranch.txt | 436 +- conf-tmpl/mapflag/type/noicewall.txt | 118 +- conf-tmpl/mapflag/type/nomemo.txt | 706 +- conf-tmpl/mapflag/type/nopenalty.txt | 352 +- conf-tmpl/mapflag/type/nopvp.txt | 116 +- conf-tmpl/mapflag/type/nosave.txt | 242 +- conf-tmpl/mapflag/type/noteleport.txt | 368 +- conf-tmpl/mapflag/type/nowarp.txt | 38 +- conf-tmpl/mapflag/type/nowarpto.txt | 60 +- conf-tmpl/mapflag/type/pvp.txt | 178 +- conf-tmpl/mapflag/type/pvp_noparty.txt | 68 +- conf-tmpl/mapflag/water.txt | 108 +- conf-tmpl/mapflag/water_height.txt | 136 +- conf-tmpl/msg_athena.conf | 1024 +- conf-tmpl/script_athena.conf | 4 +- conf-tmpl/water_height.txt | 136 +- db/abra_db.txt | 774 +- db/attr_fix.txt | 106 +- db/castle_db.txt | 52 +- db/const.txt | 474 +- db/create_arrow_db.txt | 198 +- db/exp.txt | 198 +- db/exp2.txt | 198 +- db/exp_guild.txt | 100 +- db/item_avail.txt | 18 +- db/item_bluebox.txt | 854 +- db/item_cardalbum.txt | 316 +- db/item_db.txt | 3416 +-- db/item_giftbox.txt | 160 +- db/item_noequip.txt | 8 +- db/item_scroll.txt | 10 +- db/item_violetbox.txt | 554 +- db/job_db1.txt | 138 +- db/job_db2-2.txt | 52 +- db/job_db2.txt | 142 +- db/mob_avail.txt | 84 +- db/mob_boss.txt | 50 +- db/mob_branch.txt | 706 +- db/mob_db.txt | 1108 +- db/mob_db2.txt | 148 +- db/mob_poring.txt | 34 +- db/mob_skill_db.txt | 4002 +-- db/packet_db.txt | 1150 +- db/pet_db.txt | 60 +- db/produce_db.txt | 200 +- db/refine_db.txt | 24 +- db/size_fix.txt | 12 +- db/skill_cast_db.txt | 538 +- db/skill_castnodex_db.txt | 22 +- db/skill_db.txt | 1050 +- db/skill_require_db.txt | 558 +- db/skill_tree.txt | 3632 +-- db/statpoint.txt | 510 +- doc/admin_packet.txt | 562 +- doc/client_packet.txt | 2144 +- doc/conf_ref.txt | 3962 +-- doc/coredump_report.txt | 218 +- doc/db_ref.txt | 294 +- doc/help.txt | 906 +- doc/inter_server_packet.txt | 408 +- doc/item.txt | 2902 +- doc/item_bonus.txt | 274 +- doc/packet_table_en.txt | 2672 +- doc/script_ref.txt | 2848 +- help.txt | 790 +- log/char.log | 120 +- log/login.log | 490 +- login-server.sh | 32 +- logserv.bat | 6 +- mapserv.bat | 6 +- npc/Changelog.txt | 496 +- npc/cities/alberta.txt | 1746 +- npc/cities/aldebaran.txt | 3084 +- npc/cities/amatsu.txt | 2956 +- npc/cities/comodo.txt | 2794 +- npc/cities/geffen.txt | 1318 +- npc/cities/gonryun.txt | 636 +- npc/cities/izlude.txt | 1094 +- npc/cities/lutie.txt | 1926 +- npc/cities/morocc.txt | 822 +- npc/cities/niflheim.txt | 1114 +- npc/cities/payon.txt | 1632 +- npc/cities/prontera.txt | 1236 +- npc/cities/umbala.txt | 3332 +- npc/cities/yuno.txt | 1232 +- npc/events/alchemist.txt | 332 +- npc/events/custom/draculax.txt | 258 +- npc/events/custom/uneasy_cemetery.txt | 268 +- npc/events/easter.txt | 392 +- npc/events/twintowers.txt | 184 +- npc/events/valentinesday.txt | 542 +- npc/events/xmas.txt | 502 +- npc/guides/guides_alb.txt | 218 +- npc/guides/guides_alde.txt | 232 +- npc/guides/guides_com.txt | 282 +- npc/guides/guides_gef.txt | 270 +- npc/guides/guides_izl.txt | 236 +- npc/guides/guides_mor.txt | 242 +- npc/guides/guides_nif.txt | 164 +- npc/guides/guides_pron.txt | 412 +- npc/guides/guides_umb.txt | 214 +- npc/guides/guides_yun.txt | 446 +- npc/guild/aldeg/aldeg_dunsw.txt | 102 +- npc/guild/aldeg/aldeg_ev_agit.txt | 260 +- npc/guild/aldeg/aldeg_flags.txt | 398 +- npc/guild/aldeg/aldeg_guardians.txt | 222 +- npc/guild/aldeg/aldeg_kafras.txt | 122 +- npc/guild/aldeg/aldeg_managers.txt | 220 +- npc/guild/aldeg/aldeg_treas.txt | 282 +- npc/guild/ev_agit_event.txt | 82 +- npc/guild/gefg/gefg_dunsw.txt | 98 +- npc/guild/gefg/gefg_ev_agit.txt | 260 +- npc/guild/gefg/gefg_flags.txt | 308 +- npc/guild/gefg/gefg_guardians.txt | 216 +- npc/guild/gefg/gefg_kafras.txt | 142 +- npc/guild/gefg/gefg_managers.txt | 208 +- npc/guild/gefg/gefg_treas.txt | 296 +- npc/guild/gldfunc_dunsw.txt | 84 +- npc/guild/gldfunc_ev_agit.txt | 298 +- npc/guild/gldfunc_flag.txt | 116 +- npc/guild/gldfunc_kafra.txt | 74 +- npc/guild/gldfunc_manager.txt | 858 +- npc/guild/gldfunc_treasure.txt | 156 +- npc/guild/nguild/nguild_dunsw.txt | 78 +- npc/guild/nguild/nguild_ev_agit.txt | 214 +- npc/guild/nguild/nguild_guardians.txt | 182 +- npc/guild/nguild/nguild_kafras.txt | 106 +- npc/guild/old/aldeg_cas01.txt | 1350 +- npc/guild/old/aldeg_cas02.txt | 1352 +- npc/guild/old/aldeg_cas03.txt | 1358 +- npc/guild/old/aldeg_cas04.txt | 1358 +- npc/guild/old/aldeg_cas05.txt | 1354 +- npc/guild/old/aldeg_flag.txt | 700 +- npc/guild/old/ev_agit_aldeg.txt | 952 +- npc/guild/old/ev_agit_event.txt | 68 +- npc/guild/old/ev_agit_gefg.txt | 928 +- npc/guild/old/ev_agit_payg.txt | 932 +- npc/guild/old/ev_agit_prtg.txt | 952 +- npc/guild/old/gefg_cas01.txt | 1334 +- npc/guild/old/gefg_cas02.txt | 1334 +- npc/guild/old/gefg_cas03.txt | 1336 +- npc/guild/old/gefg_cas04.txt | 1336 +- npc/guild/old/gefg_cas05.txt | 1332 +- npc/guild/old/gefg_flag.txt | 716 +- npc/guild/old/gswitch.txt | 886 +- npc/guild/old/guardian/aldeg_cas01_guardian.txt | 134 +- npc/guild/old/guardian/aldeg_cas02_guardian.txt | 134 +- npc/guild/old/guardian/aldeg_cas03_guardian.txt | 134 +- npc/guild/old/guardian/aldeg_cas04_guardian.txt | 134 +- npc/guild/old/guardian/aldeg_cas05_guardian.txt | 134 +- npc/guild/old/guardian/gefg_cas01_guardian.txt | 134 +- npc/guild/old/guardian/gefg_cas02_guardian.txt | 134 +- npc/guild/old/guardian/gefg_cas03_guardian.txt | 134 +- npc/guild/old/guardian/gefg_cas04_guardian.txt | 134 +- npc/guild/old/guardian/gefg_cas05_guardian.txt | 134 +- npc/guild/old/guardian/payg_cas01_guardian.txt | 134 +- npc/guild/old/guardian/payg_cas02_guardian.txt | 134 +- npc/guild/old/guardian/payg_cas03_guardian.txt | 134 +- npc/guild/old/guardian/payg_cas04_guardian.txt | 134 +- npc/guild/old/guardian/payg_cas05_guardian.txt | 134 +- npc/guild/old/guardian/prtg_cas01_guardian.txt | 134 +- npc/guild/old/guardian/prtg_cas02_guardian.txt | 124 +- npc/guild/old/guardian/prtg_cas03_guardian.txt | 124 +- npc/guild/old/guardian/prtg_cas04_guardian.txt | 124 +- npc/guild/old/guardian/prtg_cas05_guardian.txt | 124 +- npc/guild/old/payg_cas01.txt | 1334 +- npc/guild/old/payg_cas02.txt | 1332 +- npc/guild/old/payg_cas03.txt | 1332 +- npc/guild/old/payg_cas04.txt | 1332 +- npc/guild/old/payg_cas05.txt | 1332 +- npc/guild/old/payg_flag.txt | 718 +- npc/guild/old/prtg_cas01.txt | 1340 +- npc/guild/old/prtg_cas02.txt | 1334 +- npc/guild/old/prtg_cas03.txt | 1334 +- npc/guild/old/prtg_cas04.txt | 1330 +- npc/guild/old/prtg_cas05.txt | 1326 +- npc/guild/old/prtg_flag.txt | 726 +- npc/guild/old/treasure/aldeg_cas01_treasure.txt | 144 +- npc/guild/old/treasure/aldeg_cas02_treasure.txt | 134 +- npc/guild/old/treasure/aldeg_cas03_treasure.txt | 134 +- npc/guild/old/treasure/aldeg_cas04_treasure.txt | 134 +- npc/guild/old/treasure/aldeg_cas05_treasure.txt | 134 +- npc/guild/old/treasure/gefg_cas01_treasure.txt | 134 +- npc/guild/old/treasure/gefg_cas02_treasure.txt | 134 +- npc/guild/old/treasure/gefg_cas03_treasure.txt | 134 +- npc/guild/old/treasure/gefg_cas04_treasure.txt | 136 +- npc/guild/old/treasure/gefg_cas05_treasure.txt | 136 +- npc/guild/old/treasure/payg_cas01_treasure.txt | 134 +- npc/guild/old/treasure/payg_cas02_treasure.txt | 134 +- npc/guild/old/treasure/payg_cas03_treasure.txt | 134 +- npc/guild/old/treasure/payg_cas04_treasure.txt | 134 +- npc/guild/old/treasure/payg_cas05_treasure.txt | 134 +- npc/guild/old/treasure/prtg_cas01_treasure.txt | 144 +- npc/guild/old/treasure/prtg_cas02_treasure.txt | 134 +- npc/guild/old/treasure/prtg_cas03_treasure.txt | 134 +- npc/guild/old/treasure/prtg_cas04_treasure.txt | 132 +- npc/guild/old/treasure/prtg_cas05_treasure.txt | 132 +- npc/guild/payg/payg_dunsw.txt | 98 +- npc/guild/payg/payg_ev_agit.txt | 260 +- npc/guild/payg/payg_flags.txt | 296 +- npc/guild/payg/payg_guardians.txt | 216 +- npc/guild/payg/payg_kafras.txt | 130 +- npc/guild/payg/payg_managers.txt | 208 +- npc/guild/payg/payg_treas.txt | 280 +- npc/guild/prtg/prtg_dunsw.txt | 98 +- npc/guild/prtg/prtg_ev_agit.txt | 260 +- npc/guild/prtg/prtg_flags.txt | 350 +- npc/guild/prtg/prtg_guardians.txt | 216 +- npc/guild/prtg/prtg_kafras.txt | 132 +- npc/guild/prtg/prtg_managers.txt | 208 +- npc/guild/prtg/prtg_treas.txt | 288 +- npc/jobs/1-1/acolyte.txt | 698 +- npc/jobs/1-1/archer.txt | 366 +- npc/jobs/1-1/mage.txt | 994 +- npc/jobs/1-1/merchant.txt | 1946 +- npc/jobs/1-1/swordsman.txt | 1590 +- npc/jobs/1-1/thief.txt | 886 +- npc/jobs/2-1-1/AssassinCross.txt | 140 +- npc/jobs/2-1-1/HighPriest.txt | 122 +- npc/jobs/2-1-1/HighWizard.txt | 120 +- npc/jobs/2-1-1/LordKnight.txt | 124 +- npc/jobs/2-1-1/Sniper.txt | 128 +- npc/jobs/2-1-1/WhiteSmith.txt | 120 +- npc/jobs/2-1/assassin.txt | 3836 +-- npc/jobs/2-1/blacksmith.txt | 2872 +- npc/jobs/2-1/hunter.txt | 2500 +- npc/jobs/2-1/knight.txt | 3714 +-- npc/jobs/2-1/priest.txt | 2860 +- npc/jobs/2-1/wizard.txt | 2892 +- npc/jobs/2-2-1/Champion.txt | 122 +- npc/jobs/2-2-1/Clown.txt | 244 +- npc/jobs/2-2-1/Creator.txt | 122 +- npc/jobs/2-2-1/Gypsy.txt | 178 +- npc/jobs/2-2-1/Paladin.txt | 124 +- npc/jobs/2-2-1/Professor.txt | 122 +- npc/jobs/2-2-1/Stalker.txt | 118 +- npc/jobs/2-2/crusader.txt | 2328 +- npc/jobs/2-2/noquest/crusader.txt | 108 +- npc/jobs/2-2/noquest/dancer-bard.txt | 144 +- npc/jobs/2-2/noquest/monk.txt | 108 +- npc/jobs/2-2/rogue.txt | 1886 +- npc/jobs/2-2/sage.txt | 4292 +-- npc/jobs/custom/jobchange.txt | 1292 +- npc/jobs/custom/reset.txt | 78 +- npc/jobs/novice/novice.txt | 4678 +-- npc/jobs/novice/supernovice.txt | 542 +- npc/kafras/functions_kafras.txt | 690 +- npc/kafras/kafras_alb.txt | 134 +- npc/kafras/kafras_alde.txt | 102 +- npc/kafras/kafras_com.txt | 120 +- npc/kafras/kafras_dungeons.txt | 258 +- npc/kafras/kafras_gef.txt | 202 +- npc/kafras/kafras_izl.txt | 78 +- npc/kafras/kafras_mor.txt | 200 +- npc/kafras/kafras_new.txt | 106 +- npc/kafras/kafras_pay.txt | 130 +- npc/kafras/kafras_pron.txt | 200 +- npc/kafras/kafras_yun.txt | 142 +- npc/merchants/alchemist.txt | 240 +- npc/merchants/clothes_dyer.txt | 650 +- npc/merchants/custom/breeder.txt | 132 +- npc/merchants/custom/dye.txt | 352 +- npc/merchants/dye_maker.txt | 554 +- npc/merchants/grandpa_pharmacist.txt | 372 +- npc/merchants/hair_dyer.txt | 316 +- npc/merchants/inn.txt | 344 +- npc/merchants/milk_trader.txt | 128 +- npc/merchants/refine.txt | 1760 +- npc/merchants/renters.txt | 310 +- npc/merchants/shops.txt | 416 +- npc/mobs/dungeons/amatdun.txt | 66 +- npc/mobs/dungeons/anthell.txt | 234 +- npc/mobs/dungeons/ayodun.txt | 48 +- npc/mobs/dungeons/beachdun.txt | 64 +- npc/mobs/dungeons/byalan.txt | 208 +- npc/mobs/dungeons/clocktower.txt | 244 +- npc/mobs/dungeons/coalmine.txt | 58 +- npc/mobs/dungeons/geftower.txt | 136 +- npc/mobs/dungeons/glastheim.txt | 318 +- npc/mobs/dungeons/gondun.txt | 78 +- npc/mobs/dungeons/guilddun.txt | 86 +- npc/mobs/dungeons/louydun.txt | 66 +- npc/mobs/dungeons/magmadun.txt | 50 +- npc/mobs/dungeons/moc_pyramid.txt | 100 +- npc/mobs/dungeons/moc_sphinx.txt | 88 +- npc/mobs/dungeons/orcdun.txt | 60 +- npc/mobs/dungeons/payoncave.txt | 300 +- npc/mobs/dungeons/pront_maze.txt | 150 +- npc/mobs/dungeons/pront_sewers.txt | 88 +- npc/mobs/dungeons/sunkenship.txt | 282 +- npc/mobs/dungeons/toyfactory.txt | 60 +- npc/mobs/dungeons/turtleisland.txt | 94 +- npc/mobs/dungeons/umbaladun.txt | 50 +- npc/mobs/fields/amatsu.txt | 76 +- npc/mobs/fields/ayothana.txt | 44 +- npc/mobs/fields/comodo.txt | 302 +- npc/mobs/fields/gefenia.txt | 98 +- npc/mobs/fields/geffen.txt | 390 +- npc/mobs/fields/gonryun.txt | 40 +- npc/mobs/fields/louyang.txt | 30 +- npc/mobs/fields/lutie.txt | 32 +- npc/mobs/fields/mjolnir.txt | 452 +- npc/mobs/fields/morocc.txt | 512 +- npc/mobs/fields/niflheim.txt | 84 +- npc/mobs/fields/payon.txt | 256 +- npc/mobs/fields/prontera.txt | 226 +- npc/mobs/fields/umbala.txt | 76 +- npc/mobs/fields/yuno.txt | 120 +- npc/mobs/pvp.txt | 62 +- npc/other/Global_Functions.txt | 160 +- npc/other/IceCream.txt | 128 +- npc/other/Valkyrie.txt | 98 +- npc/other/arena.txt | 1134 +- npc/other/arena_mvp.txt | 2210 +- npc/other/bank.txt | 250 +- npc/other/blackjack.txt | 698 +- npc/other/books.txt | 4582 +-- npc/other/breeder.txt | 128 +- npc/other/card_remover.txt | 338 +- npc/other/devnpc.txt | 384 +- npc/other/gefenia.txt | 60 +- npc/other/heal.txt | 80 +- npc/other/heal_payment.txt | 196 +- npc/other/kafra_bank.txt | 210 +- npc/other/mc_cameri/bank.txt | 5586 ++-- npc/other/momotaro.txt | 886 +- npc/other/msg_boards.txt | 350 +- npc/other/old/guide.txt | 2306 +- npc/other/old/kafra.txt | 3730 +-- npc/other/old/pvp.txt | 2910 +- npc/other/platinum_skills.txt | 220 +- npc/other/pvp.txt | 840 +- npc/other/tougijou.txt | 744 +- npc/other/warper.txt | 198 +- npc/other/warper2.txt | 526 +- npc/other/wedding.txt | 1412 +- npc/other/weddingtxt.txt | 552 +- npc/quests/all_quest.txt | 1138 +- npc/quests/bongunsword.txt | 86 +- npc/quests/bunnyband.txt | 204 +- npc/quests/counteragent_mixture.txt | 524 +- npc/quests/custom/berzebub.txt | 168 +- npc/quests/custom/elvenear.txt | 142 +- npc/quests/custom/event_32_new_hats.txt | 2556 +- npc/quests/custom/excalibur.txt | 136 +- npc/quests/custom/ironcane.txt | 104 +- npc/quests/custom/kaho_balmung.txt | 194 +- npc/quests/custom/kahohorn.txt | 158 +- npc/quests/custom/new_hats.txt | 2938 +- npc/quests/custom/sunglasses.txt | 292 +- npc/quests/custom/valhallen.txt | 398 +- npc/quests/doomed_swords.txt | 1362 +- npc/quests/fashion.txt | 120 +- npc/quests/juice_maker.txt | 616 +- npc/quests/magicalhatquest.txt | 80 +- npc/quests/monstertamers.txt | 886 +- npc/quests/mrsmile.txt | 184 +- npc/quests/quests_alberta.txt | 1368 +- npc/quests/quests_aldebaran.txt | 186 +- npc/quests/quests_comodo.txt | 554 +- npc/quests/quests_geffen.txt | 372 +- npc/quests/quests_lutie.txt | 372 +- npc/quests/quests_morocc.txt | 250 +- npc/quests/quests_payon.txt | 582 +- npc/quests/quests_prontera.txt | 184 +- npc/quests/quests_umbala.txt | 690 +- npc/quests/quests_yuno.txt | 270 +- npc/quests/skills/acolyte_skills.txt | 252 +- npc/quests/skills/archer_skills.txt | 420 +- npc/quests/skills/mage_skills.txt | 228 +- npc/quests/skills/merchant_skills.txt | 616 +- npc/quests/skills/novice_skills.txt | 516 +- npc/quests/skills/swordsman_skills.txt | 742 +- npc/quests/skills/thief_skills.txt | 772 +- npc/sample/PCLoginEvent.txt | 64 +- npc/sample/bank_test.txt | 118 +- npc/sample/gstorage_test.txt | 66 +- npc/sample/npc_card_remover.txt | 394 +- npc/sample/npc_equip_sample.txt | 34 +- npc/sample/npc_extend_shop.txt | 136 +- npc/sample/npc_sample.txt | 914 +- npc/sample/npc_shop_test.txt | 62 +- npc/sample/npc_test_arena.txt | 208 +- npc/sample/npc_test_array.txt | 70 +- npc/sample/npc_test_chat.txt | 56 +- npc/sample/npc_test_ev.txt | 292 +- npc/sample/npc_test_func.txt | 54 +- npc/sample/npc_test_npctimer.txt | 66 +- npc/sample/npc_test_skill.txt | 38 +- npc/sample/npc_test_str.txt | 34 +- npc/sample/npc_testchkoption.txt | 28 +- npc/sample/npc_time_sample.txt | 38 +- npc/warps/ayothaya.txt | 202 +- npc/warps/cities/alberta.txt | 116 +- npc/warps/cities/aldebaran.txt | 98 +- npc/warps/cities/amatsu.txt | 102 +- npc/warps/cities/comodo.txt | 112 +- npc/warps/cities/geffen.txt | 98 +- npc/warps/cities/gonryun.txt | 66 +- npc/warps/cities/izlude.txt | 68 +- npc/warps/cities/louyang.txt | 96 +- npc/warps/cities/lutie.txt | 82 +- npc/warps/cities/morroc.txt | 212 +- npc/warps/cities/niflheim.txt | 68 +- npc/warps/cities/payon.txt | 272 +- npc/warps/cities/prontera.txt | 202 +- npc/warps/cities/umbala.txt | 86 +- npc/warps/cities/yggdrasil.txt | 48 +- npc/warps/cities/yuno.txt | 182 +- npc/warps/disabled_warps.txt | 72 +- npc/warps/dungeons/alberta_duns.txt | 114 +- npc/warps/dungeons/alde_ct.txt | 450 +- npc/warps/dungeons/amatsu_dun.txt | 40 +- npc/warps/dungeons/ant_hell.txt | 52 +- npc/warps/dungeons/coal_mine.txt | 42 +- npc/warps/dungeons/com_dun.txt | 36 +- npc/warps/dungeons/geffen_dun.txt | 88 +- npc/warps/dungeons/gon_dun.txt | 80 +- npc/warps/dungeons/izlude_dun.txt | 58 +- npc/warps/dungeons/louyang_dun.txt | 38 +- npc/warps/dungeons/lutie_dun.txt | 34 +- npc/warps/dungeons/morroc_duns.txt | 126 +- npc/warps/dungeons/orc_dun.txt | 50 +- npc/warps/dungeons/payon_dun.txt | 72 +- npc/warps/dungeons/prt_dun.txt | 306 +- npc/warps/dungeons/umbala_dun.txt | 64 +- npc/warps/dungeons/yuno_dun.txt | 36 +- npc/warps/fields/amatsu_fild.txt | 40 +- npc/warps/fields/com_fild.txt | 104 +- npc/warps/fields/gefenia.txt | 60 +- npc/warps/fields/geffen_fild.txt | 142 +- npc/warps/fields/glastheim.txt | 168 +- npc/warps/fields/jawaii.txt | 50 +- npc/warps/fields/lutie_fild.txt | 32 +- npc/warps/fields/morroc_fild.txt | 204 +- npc/warps/fields/mtmjolnir.txt | 120 +- npc/warps/fields/payon_fild.txt | 94 +- npc/warps/fields/prontera_fild.txt | 200 +- npc/warps/fields/umbala_fild.txt | 68 +- npc/warps/fields/yuno_fild.txt | 62 +- npc/warps/guild/guildcastles.txt | 800 +- npc/warps/other/jobquests.txt | 274 +- npc/warps/other/other.txt | 68 +- npc/warps/pvp/pvp.txt | 516 +- object_del.bat | 30 +- readme.html | 394 +- readme/1final.css | 126 +- readme/changelog.html | 344 +- readme/faq.html | 398 +- readme/features.html | 550 +- readme/gmcommands.html | 1470 +- readme/npcfeatures.html | 412 +- readme/settingup.html | 368 +- readme/support.html | 258 +- runserver.bat | 6 +- save-tmpl/castle.txt | 48 +- sql-files/convert_passwords.sql | 6 +- sql-files/database.sql | 4360 +-- sql-files/db_tables.sql | 1160 +- sql-files/logs.sql | 280 +- sql-files/mail.sql | 28 +- sql-files/main.sql | 998 +- sql-files/oA2eA-rc5.sql | 408 +- sql-files/upgrade_0.5.2_database.sql | 2 +- sql-files/upgrade_0.5.2_main.sql | 124 +- sql-files/upgrade_1.0.0-rc1_main.sql | 6 +- sql-files/upgrade_1.0.0-rc2_database.sql | 8 +- sql-files/upgrade_1.0.0-rc5_database.sql | 8 +- sql-files/upgrade_817.sql | 206 +- src/char/Makefile | 34 +- src/char/char.c | 6870 ++--- src/char/char.h | 64 +- src/char/int_guild.c | 2892 +- src/char/int_guild.h | 32 +- src/char/int_party.c | 1190 +- src/char/int_party.h | 28 +- src/char/int_pet.c | 728 +- src/char/int_pet.h | 26 +- src/char/int_storage.c | 1000 +- src/char/int_storage.h | 32 +- src/char/inter.c | 1126 +- src/char/inter.h | 40 +- src/char_sql/Makefile | 40 +- src/char_sql/char.c | 6046 ++-- src/char_sql/char.h | 164 +- src/char_sql/int_guild.c | 3228 +- src/char_sql/int_guild.h | 20 +- src/char_sql/int_party.c | 1510 +- src/char_sql/int_party.h | 16 +- src/char_sql/int_pet.c | 648 +- src/char_sql/int_pet.h | 24 +- src/char_sql/int_storage.c | 720 +- src/char_sql/int_storage.h | 26 +- src/char_sql/inter.c | 1154 +- src/char_sql/inter.h | 92 +- src/char_sql/itemdb.c | 494 +- src/char_sql/itemdb.h | 68 +- src/char_sql/make.sh | 22 +- src/char_sql/readme.txt | 500 +- src/char_sql/strlib.c | 158 +- src/char_sql/strlib.h | 20 +- src/common/Makefile | 28 +- src/common/core.c | 304 +- src/common/core.h | 24 +- src/common/db.c | 1002 +- src/common/db.h | 94 +- src/common/grfio.c | 1906 +- src/common/grfio.h | 32 +- src/common/lock.c | 74 +- src/common/lock.h | 16 +- src/common/malloc.c | 88 +- src/common/malloc.h | 50 +- src/common/mmo.h | 622 +- src/common/nullpo.c | 180 +- src/common/nullpo.h | 444 +- src/common/showmsg.c | 142 +- src/common/showmsg.h | 96 +- src/common/socket.c | 1188 +- src/common/socket.h | 208 +- src/common/timer.c | 624 +- src/common/timer.h | 90 +- src/common/utils.c | 216 +- src/common/utils.h | 66 +- src/common/version.h | 54 +- src/ladmin/Makefile | 28 +- src/ladmin/ladmin.c | 8770 +++--- src/ladmin/ladmin.h | 22 +- src/ladmin/md5calc.c | 474 +- src/ladmin/md5calc.h | 16 +- src/login/Makefile | 26 +- src/login/login.c | 7822 ++--- src/login/login.h | 82 +- src/login/md5calc.c | 474 +- src/login/md5calc.h | 16 +- src/login_sql/Makefile | 34 +- src/login_sql/login.c | 3528 +-- src/login_sql/login.h | 82 +- src/login_sql/make.sh | 12 +- src/login_sql/md5calc.c | 472 +- src/login_sql/md5calc.h | 14 +- src/login_sql/readme.txt | 238 +- src/login_sql/strlib.c | 116 +- src/login_sql/strlib.h | 18 +- src/login_sql/timer.h | 86 +- src/map/Makefile | 146 +- src/map/Makefile.win32 | 186 +- src/map/atcommand.c | 15406 +++++----- src/map/atcommand.h | 488 +- src/map/battle.c | 10924 +++---- src/map/battle.h | 690 +- src/map/chat.c | 756 +- src/map/chat.h | 44 +- src/map/chrif.c | 2100 +- src/map/chrif.h | 62 +- src/map/clif.c | 20754 ++++++------- src/map/clif.h | 574 +- src/map/guild.c | 3108 +- src/map/guild.h | 174 +- src/map/intif.c | 2250 +- src/map/intif.h | 120 +- src/map/itemdb.c | 1764 +- src/map/itemdb.h | 168 +- src/map/log.c | 486 +- src/map/log.h | 54 +- src/map/mail.c | 648 +- src/map/mail.h | 18 +- src/map/map.c | 4416 +-- src/map/map.h | 1452 +- src/map/mob.c | 8546 +++--- src/map/mob.h | 278 +- src/map/npc.c | 4548 +-- src/map/npc.h | 104 +- src/map/party.c | 1288 +- src/map/party.h | 94 +- src/map/path.c | 808 +- src/map/pc.c | 15048 +++++----- src/map/pc.h | 372 +- src/map/pet.c | 3302 +- src/map/pet.h | 138 +- src/map/script.c | 13860 ++++----- src/map/script.h | 78 +- src/map/skill.c | 21610 ++++++------- src/map/skill.h | 1714 +- src/map/storage.c | 1190 +- src/map/storage.h | 78 +- src/map/trade.c | 572 +- src/map/trade.h | 26 +- src/map/vending.c | 340 +- src/map/vending.h | 24 +- src/txt-converter/char/Makefile | 26 +- src/txt-converter/char/char-converter.c | 1684 +- src/txt-converter/char/char.h | 78 +- src/txt-converter/char/int_guild.h | 20 +- src/txt-converter/char/int_party.h | 22 +- src/txt-converter/char/int_pet.h | 24 +- src/txt-converter/char/int_storage.h | 22 +- src/txt-converter/char/strlib.c | 132 +- src/txt-converter/char/strlib.h | 18 +- src/txt-converter/common/inter.h | 56 +- src/txt-converter/common/mmo.h | 560 +- src/txt-converter/login/Makefile | 22 +- src/txt-converter/login/login-converter.c | 516 +- start | 62 +- tool/Makefile | 12 +- tool/adduser.c | 192 +- tool/backup | 200 +- tool/cgi/addaccount.cgi | 408 +- tool/checkversion | 170 +- tool/convert.c | 592 +- tool/getlogincount | 244 +- tool/ladmin | 7584 ++--- tool/mapcheck.sh | 66 +- tool/mapchecker.sh | 112 +- webserver/Makefile | 52 +- webserver/doc/API.txt | 100 +- webserver/doc/README | 22 +- webserver/generate.c | 76 +- webserver/htmlstyle.c | 102 +- webserver/logs.c | 16 +- webserver/main.c | 284 +- webserver/pages/about.c | 12 +- webserver/pages/notdone.c | 10 +- webserver/pages/sample.c | 48 +- webserver/parse.c | 270 +- 665 files changed, 260486 insertions(+), 260486 deletions(-) (limited to 'src/map/mob.c') diff --git a/Changelog.txt b/Changelog.txt index fa952373a..f0d17d1c7 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,2066 +1,2066 @@ -Date Added -11/13 - * Fixed map-server loading, doesn't require data\resnametable.txt anymore [Wizputer] - * Updated & Optimized TXT Login from FREYA. (need to do SQL now) [Codemaster] - * Removed compile warnings in intif.c. [Valaris] - * Fixed chrif_changesex and @changesex, now uses packet 0x3000. [MC Cameri] - * Updated some skills, credits to orn and midas. [celest] - - Magnum Break, Throw Stone, Sprinkle Sand, Magic Power, Memorise, Quagmire, - Spider Web, Reject Sword, assassin's Dodge, Demonbane, Divine Protection. - - Firewall, Quagmire, Fog Wall (100%), Marionette Control (30%), Sandman, - Claymore Trap - - Adjusted some mob skills for mod support. - * Fixed weight increase when riding. [celest] - -11/12 - * added folder: /save-tmpl, removed folder /save - * battle_athena.conf: Updated Packet Version Flags. - * !!!Fixed Mobs Attacking!!!: Thanks for MagicalTux and Yor, I fixed the mobs attacking by using one of their files. [Codemaster] - * Warps Update : Added ayothaya warps in ./npc/warps/ and in map_athena.conf [Nana] -11/11 - * Skill Updates : (Need to revise skill_cast_db.txt for new updates) - ( Sharp Shooting, Sword Reject, Chain Crush Combo, Tiger Knuckle Fist, - Head Crush, Arrow Vulcan, HP COnversion) Thanks to DracoRPG. - Fixed Devotion use requeriments. Thanks to Orn. [shadow] -11/11 - * Corrected minor typo in item_db, and removed/commented out dupe items.[kobra_k88] - -11/10 - - * Updated Sprout (Item #7193), Thin Trunk (Item #7186), - Huge Leaf (Item #7198), and Rante Whip (Items #1956, #1957) - - thanks to cheng - [Codemaster] - * Updated Parasite (Mob #1500) Drops - thanks to cheng [Codemaster] - * Updated Soft Grass Leaf (Item #7194) - thanks to cheng [Codemaster] - * Added, Fixed & Updated ALOT of skills: [Codemaster] - - Fire Pillar, Backstab, Grimtooth, Poison React, Falcon Assalt, - Skin Tempering, Hilt Binding, Frost Nova, TEMPORARY fix for Create Deadly Poison, - Enchant Deadly Poison, Endure, Sacrifice, Spider Web, Memorize, - Hyper Spirit Sphere, Palm Strike, Sword Reject, Pressure, Magic Crasher, - Amplify Magic Power, Napalm Vulcan, True Sight, Wind Walk, Aura Blade, - Concentration, Cart Boost, Magic Power - - Thanks goes to Celest, Midas, and DracoRPG! - * Fixed spira's mistake in using the packet_len_table; no biggie ^_^ [Codemaster] - * char/char.c & char_sql/char.c: Fixed start_armor and start_weapon - thanks to AppleGirl [Codemaster] - * Added packetver 6 flag to makefile. [Valaris] - -11/09 - * mob_db.txt: Fixed Drake dropping the wrong card - thanks to roslen [Codemaster] - * chat.c: Fixed multiple joins in a single chat - thanks to Alex14 and CHaNGeTe. [Codemaster] - * clif.c: Fixed sitting. [spira] - * - Fixed item 657 Job ID , 11/09 patch updates to item_db, Correct stats for item 5097 - - Added Unbreakable funcions to item_db armors/shields/garments/footgear [shadow] - * Defined SO_REUSEPORT to allow the servers to re-use ports if server crashes [Wizputer] - -11/08 - * Added new script command: getMapXY(MapName$,MaxX,MapY,type,[CharName$]) by Lorky [Lupus] - Get position for char/npc/pet/mob objects. - * Attempted to fix the mob bug (still haven't :( ). Still updated mob.c/clif.c/chrif.c according to jA 1057. [Codemaster] - * Fixed item_cardalbum.txt: Removed extra column which mad all albums empty [Lupus] -11/07 - - Fixed a few npcs will start implementing new ones soon, have alot on paper, need to type them up. [Nasedo] - * clif.c: Added a few things from jAthena 1057 [Codemaster] - * Corrected some typos in item_db. Items 1143 and 1719 need to be re-checked.[kobra_k88] - * Fixed compiling error in Map Server in which @repairall was using old broken system [Shinigami] - -11/06 - - Added missing items in item_db.txt and reorganised it.[Nasedo] - - Fixed wrong coords for payon guild flags (it has the old map coords), fixed some weapon effects in item_db, - updated the mob_db (90%+ done), added EP 5-9 mobs to mob_branch.txt and EP 6 cards to item_cardalbum.txt[shadowlady] - * atcommand.c/.h,chrif.c/.h, added @changesex. [MC Cameri] - * mob.c & clif.c: Added & Modified a few parts dealing with monsters and guilds [Codemaster] - * mob.c: Re-did a few parts according to jA's 1057 version. [Codemaster] -11/05 - * Fixed and redo optional Umbalian quests: - - Wise Man Fabius' Umbalian Language Quest (you can learn Umbalian language in - alternative way) - - On speaking with Umbalian Chief about meaning of masks you activate Turban Thief Quest - (For Sphinx Mask) - * Fixed several bugs in Niflheim Piano Keys Quest (wrong variable name, missing CLOSE buttons) - Zeny/Item Exploit in Niflhein Sairin NPC quest (should add similiar checks in every - easy quests with expensive prizes to avoid exploits) [Lupus] - * Revised and fixed all comodo,yuno,amatsu,gonryun,umbala mobs and drops. Also fixed mvp and woe mobs too [Shadowlady] - * Fixed crash from guild skill point allocation, there seems to be a problem with guilds loading still. [Valaris] - * Fixed committed typo in map_athena.conf, remove aria's dev npc (was giving errors preventing server startup). [Valaris] - -11/04 - * Added sara-chan's packet db with support for 11-1 [Valaris] - * [alot of files >_<]: Changed connecting a bit, from oA source; it connected easier/better in my opinion so... [Codemaster] - * map/skill.c: Added a few checks for level 0 skills being used. [Codemaster] - -11/03 - * Removed broken column, using attribute column for broken equip now. [Valaris] - -11/02 - * Fixed compile time errors for gcc 2.95 [MouseJstr] - * Changed Blacksmith skill "Hammer Fall" to only be used with maces or Hammers [Aria] -11/01 - * Set Comodo Kafra to warp to Umbala (11/2/04 patch) [Aria] -10/31 - * Fixed Devnpcs giving off errors -_- [Aria] - * Fixed showmsg.c compile warnings thanks to LittleWolf. [Valaris] - * map/skill.c: removed a second declaration of sc_def_vit in skill_castend_nodamage_id; thanks to spira [Codemaster] - * map/battle.c: re-did Water Ball's damage calculation [Codemaster] -10/30 - * Added new guild skills to skill_db from sara-chan. [Valaris] - * db/skill_cast_db, map/skill.c, map/pc.c: Corrected a few CHASEWALK things; Thanks to Celest [Codemaster] - * char_sql/char.c: removed the double free()ing of gm_account [Codemaster] - * Added check for c value in int_guild.c before dividing to calculate average level. [Valaris] - * Commented unfinished dev npcs and added devnpc to map_athena. [Aria] - * Removed item requirement of Aqua Benedicta (10/26 patch) [Aria] - * Fixed some compiling error for Map-server [Shinigami] - * Removed Rogue's backstab pushback effect (kRO style again) [Aria] - * Changed requirement of Fire Pillar to fit kRO style; lv1-5 = no gem, but 6-10 = 1 gem. [Aria] - * Added Mugendai's oA GUI support for map-server (previously not added) [davidsiaw] - * Included Mugendai's oA GUI in the GUI folder [davidsiaw] - -10/29 - * another exploit fix for mult in script [MouseJstr] - * Corrected mode for peco, condor mobs. Added custom mobs Easter Egg and Easter Bunny for easter egg event script. - Corrected mysteltain card location, penomena card typo.[kobra_k88] -10/28 - * Cloak Speed fixed [Aria] - * Throw stone damage fixed [Aria] - * Added new packets from Sara to packet database. [spira] - * Fixed and changed command lists to reflect on new packet changes. [spira] - - @jumpto, @recall, and @where - - Removed old @ignore* functions because they are no longer needed. - * Replaced old whisper ignoring code with better and more efficient code. [spira] - * Added packet_db.txt support, removed old packet functions. [spira] - * fixed forger-zeny exploit [MouseJstr] - - Doing script math that returns a number greater then (1<<31) will now - return a (1<<31). This prevents you from finding a npc that - asks for a quantity then mults the cost by that quantity to get - what you need to pay. - -10/27 - * Updated CSS styles for readme a bit [Aria] - * branched athena at version 340 to begin work on the packet_db - stuff from jA. To retrieve it, do a svn co http://dev.deltaanime.net:8080/svn/eathena/packetdb - later, once we are happy with it.. and feel it is stable, we will remerge it back into the main tree via the appropriate svn commands - as a FYI, the command I used to create this branch was: - svn copy http://dev.deltaanime.net:8080/svn/eathena/athena http://dev.deltaanime.net:8080/svn/eathena/packetdb -m "branch for packetdb work" - * Fixed Aldebaran (gatekeeper conditions bugs and wrong Key ID). Fixed some typos in other cities [Lupus] - -10/26 - * Added more quotes -_- [Aria] - * Modified a few things related to guild skills. I hope it doesn't interfere with anyone else's work, and isn't seen as bad. [Sara-chan] - -Support for new guild skills, though they don't work yet. Added guild_skill_get_inf and guild_skill_get_max entries for them based on early info. - -Changed guild_skillup functions based on japanese code, but for a good reason. - It allows for guild skill trees, sort of. I made Kafra Contract and Guardian Research require Guild Approval, for instance. - I think the first four new guild skill requirements are correct, at the least. - I hope everything works alright, it's my first contribution to eA in quite some time and I'm rather rusty at programming of late. - * Fixed compile errors in showmsg.c. [Sara-chan] - * Fixed Mouse's devnpc only saying his quotes once per server reset [Aria] - * Added log_athena.conf & the logs.sql file [Codemaster] - * Added log configurations to inter_athena.conf [Codemaster] - -10/25 - * Fixed a compiling error in Login-server [Shinigami] - * Added alot of Azndragon's spiffy logs & then added a few things of my own (Silly Dragon, structs are for kids!) [Codemaster] - * Corrected a small bug (forgot to change a few variables!) in my different GM option. [Codemaster] - * Fixed items and mobs in DB. Added new items. [Lupus] - * Fixed some NPC bugs (check NPC=changelog.txt) [Lupus] - * Fixed getting MAX PET ID (SQL only bug) [Lupus] - * Fix char/char.c which was crashing after double freeing logs - [MouseJstr] - * Improved basic server rebooters [MC Cameri] - * Commited common/showmsg.c/.h, previously missing x_X [MC Cameri] - * Added a basic server rebooter program, just use 'runserver.bat' to start up the server. [Shinigami] - -10/24 - * Added files common/showmsg.c/.h which contain the function _ShowMessage(char *string, int flag) [MC Cameri] - -Check showmsg.h to see how to use it. - -This function is made to replace printf in all the cases, so it MUST be used instead of print from now on. - -Begin your own journey of replacing/removing old printfs, and using the new function. - -This function was previously called ShowMessage() in oA, it is now merged, some changes have been done: - 1.Outputting messages to a file is now disabled(commented out). - 2.MSG_SQL is now commented out. - 3.If the server is out of memory, it will not use abort(). - 4.Returns 0 if successful, 1 otherwise. - -Example: ShowInfo("hello\n"); will print this to the screen: [Info]: hello - -Always add \n at the end. Unless someone edits the function to add the \n whether it exists or not. - -Just add #include "showmsg.h" wherever you need it. - * Edited ALL makefile's to include showmsg.o -> _ShowMessage(). [MC Cameri] - * Updated readme/gmcommands.html with new @uptime command [MC Cameri] - * Somebody had added some additional noskill checks that prevented - vending from happening in prontera [MouseJstr] - * Added bypass with gm_allskill of npc_selfdestruct2. [Valaris] - * Corrected some minor bugs in some Quests [Shinigami] - * Added new maps (from lateast kRO patch) - Touched WOE (u can't surrender the castle during the WOE), misc fix of the bank [Lupus] -10/23 - * Added the option to read GM accounts from a different table than login. Default set to login table. [Codemaster] - * Finished Aria and MC Cameri "Dev edition" NPCs. [Aria] - * Corrected extra stat points given to high classes. [Valaris] - * Added high classes getting the extra 40 stat points on stat reset. [Valaris] - * performance tweaks on socket.c to reduce lag [MouseJstr] - - do a "OPT="-g -DNSOCKET" to compile with the changes - enabled.. and tell me if you notice a change in your - performance/lag - - * Added @uptime to atcommand.c [MC Cameri] - * Added the stuff for my npc to Dev/quotes.txt [MC Cameri] - -10/22 - * Replaced some checkcart and checkoption(x) with checkcart(0) in the guild folder [Aria] - * Waiting for various devs to tell me their coords, map, biography, quotes, - moving coords, etc. In the meantime, I replaced them with (x,y),(lols), - (sprite),(somewhere), and if they didn't give me any info, I didn't - add them yet =P. [Aria] - * Added Davidsiaw, Shinigami, Lord, Codemaster, MouseJstr, MC Cameri, and Darkchild - to "Dev edition" NPCs [Aria] - * Revised "Dev edition" NPC layout a bit, should go smoother now. Should be final - layout unless something goes wrong =O. [Aria] - * Fixed the eol markers on some checked in files [Mousejstr] - * Fix two crashes caused by calling isGM on mobs [MouseJstr] - * Added folder "mc_cameri" in npc/other which contains my bank npc. [MC Cameri] - * Changed "Dev edition" NPC layout so that they move by themselves by timers. [Aria] - * Changed "Dev edition" NPCs to walk during quotes, and added biography. [Aria] - * Fixed quest/all_quest.txt not showing the correct description of the binoculars. [Aria] - * Fixed quest/all_quest.txt not going to stop pass and not displaying requirements. [Aria] - * Fixed removing friends from the list [davidsiaw] - * Added PCLoginEvent NPC (When a character logs on, NPC runs as if he/she clicked the NPC) [davidsiaw] - The NPC sample is located in npc/sample/PCLoginEvent.txt (you only need one of these NPCs) - -10/21 - * Fixed clothes_dyer.txt: Disabled Assassing/Rogues Dye. Also fixed wrong labels [Lupus] - * Fixed hair_dyer.txt: fixed missing menu label [Lupus] - * new_hats.txt 1.4 fixed amount of Fish Tail (300 -> 30), Zeny bugs in Ear of Angel, - Ear of Demon,Big Golden Bell, Mistress Crown, - Crown of The Ancient Queen, Indian Headband, Orc Hero Helm [Lupus] - * Fixed name of a flower in Prontera quest (Dreamy->Illusion) according to our DB [Lupus] - * Fixed item names in the temp Crusader Job Quest according to our DB [Lupus] - -10/20 - * map/mob.c: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster] - * map/map.h: Changed Vending Struct: amount and value to unsigned variables (so they CAN'T be 0 or less) [Codemaster] - * map/mob.h: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster] - * Aligned the list of commands at the beginning of atcommand.c, - with tabs instead of spaces. [MC Cameri] - * Fixed AtCommand_SetBattleFlag, it was previously being called by "@send" - instead of "@setbattleflag". [MC Cameri] - * Finished basic layout, finished Aria starting to create Shinigami [Aria] - * Started to create "Dev edition" npcs [Aria] - * Fixed a compile error in src/char/char.c [MouseJstr] - * Fixed a bug in @trade where the distance was not ignored [MouseJstr] - * Fixed a potential inf loop in pc.c when multi_level_up is set to no. [MouseJstr] - * implemented Friends List support for TXT version [davidsiaw] - * added queries in main.sql for Friends List. mySQL support for friends list pending [davidsiaw] -10/19 - * switched login_sql/login.c to use binary when retrieving - by account name [MouseJstr] - * skill.c & skill.h: added skill_type_cloaking [Codemaster] - * storage.c & storage.h: added storage_storageopen2() [Codemaster] -10/18 - * Changed readme layout for 1.0 scheme. [Aria] - * added check for console variable in login_sql [MouseJstr] - * Fully translated the untranslated items in the database.sql for SQL. [Nana] - * Dev/TODO, asigned myself to some items. [MC Cameri] - * char/char.c: changed the online system to omniAthena's [Codemaster] - * char/char.c: added log_char and log_inter [Codemaster] - * char/char.c: added Mugendai's GUI Support [Codemaster] - * char/int_guild.c: added log_inter and db_path [Codemaster] - * char/inter.c: added log_inter [Codemaster] - * char/char.c: added db_path [Codemaster] - * char/inter.h: added log_inter [Codemaster] - * char_sql/char.c: added log_char and log_inter [Codemaster] - * char_sql/char.c: added Mugendai's GUI Support [Codemaster] - * char_sql/int_guild.c: added log_inter and db_path [Codemaster] - * char_sql/inter.c: added log_inter [Codemaster] - * char_sql/char.c: added db_path [Codemaster] - * char_sql/inter.h: added log_inter [Codemaster] - * conf-tmpl/char_athena.conf: Added log_char & db_path [Codemaster] - * conf-tmpl/inter_athena.conf: Added log_inter [Codemaster] - -10/18 - * clif.c,clif.h,map.h,npc.c,npc.h,script.c: Added NPC Walking. [Valaris] - -npcspeed #; To change npc's walking speed. - -npcwalkto x,y; Move an npc to a position (keep it less than area size, or sprite will glitch and disappear). - -npcstop; Stops an npc's movement. - -10/17 - * Made the IP autodetection code work under a pure win32 - executable - * Fixed the win32 build and made a src\map\Makefile.win32 to - make it easier to do win32 builds of the map server - - src\common\utils.c src\common\utils.h src\common\grfio.c - src\common\nullpo.h src\common\timer.c src\common\db.c - src\common\socket.c src\common\core.c src\common\mmo.h - src\common\socket.h src\map\script.c src\map\intif.c - src\map\npc.c src\map\clif.c src\map\map.c src\map\clif.h - src\map\chrif.c src\map\Makefile.win32 - - * skill.c: Fixed noicewall flag. [Valaris] - * battle.c: Battle calc weapon attack now checks to see if pc_breakweapon successfully broke the weapon then recalculates damage. [Valaris] - * pc.c: Removed broken weapon and equip status, just unequips items again when broken. [Valaris] - Removed useless code from pc_breakweapon and pc_breakarmor. [Valaris] - * Added template for server control from the console [Wizputer] - * conf-tmpl/login_athena.conf: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster] - * login/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster] - * login_sql/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster] - * Usable GM commands from server console admin:: [Wizputer] - * Added server:shutdown to shutdown server and help [Wizputer] - * Added user discretion for console commands in conf files [Wizputer] -10/16 - * Fixed Umbala Language Quest, where a certain NPC would freeze you due to an unfinished script [Shinigami] - * Fixed bug in new_hats.txt where free items are given out [Shinigami] - * Correct Morroc warp npc overlaying Kafra npc. [Aria] - * Corrected npc typos. [Aria] - * Skip over npc_selfdestruction2 on allskillup (thanks to celest) [Valaris] - * Fixed some typos in some of the NPCs [Shinigami] - * tweaked the auto-configure stuff to deal better with - machines that have no detectable IP addresses.. is this - possible? [MouseJstr] - src\char_sql\char.c src\char\char.c src\map\map.c - * Made it compile under gcc 2.95 [MouseJstr] - * made the char and map servers auto-configure their own IP's - whenever possible [MouseJstr] - - If you do not specify the server IP address, it now determines it - on its own. This means that to get a server running that is - accessable from the internet you should only need to specify the - location of the data.grf files. This eliminates one more point - of misconfiguration. - - It does not correctly auto-configure for when you are behind a - router or a firewall since there is no way of determining the - external IP address. On the other hand, we should be able to - eliminate the lan_conf file since we know our IP addresses as well - as our netmask. - - src/txt-converter/login/login-converter.c src/txt-converter/char/char-converter.c src/login_sql/login.c src/common/socket.c src/common/socket.h src/char_sql/char.c src/char_sql/int_guild.c src/char_sql/inter.c src/map/atcommand.c src/map/map.c src/map/mail.c src/char/char.c conf-tmpl/map_athena.conf conf-tmpl/char_athena.conf Changelog.txt - -10/15 - * added @setbattleflag to let me reset a battle_config at runtime [MouseJstr] - * --- RC5 release - * another fix to oA2eA-rc5.sql to fix the sell_price [MouseJstr] - * Redid readme, updated content a bit, and made ps2 poster in preperation for 1.0 RC5 release. [Evera] - * made MAX_HAIR_STYLE, MAX_HAIR_COLOR, and MAX_CLOTH_COLOR - configurable via battle_config. [MouseJstr] - * made the dex spell cast time scaling configurable via battle_config - [MouseJstr] - * made the visible area_size configurable via battle_config - [MouseJstr] - * Reorganized and added the warps into their respective folders, updated map_athena.conf. [Nana] - * Added 2 script commands GETLOOK, GETSAVEPOINT (thanks to Lorky). [Lupus] - * Added kafra_bank NPC - a new bank with daily interst of 0.1#%. [Lupus] - * Changed cast time for champion soul collect to 1 sec (thanks to midas). [Valaris] - * Added midas's fix for +30 hitrate with Sonic Blow. [Valaris] - -10/14 - * Fixed help.txt for some @gm commands [MouseJstr] - * made login.c compile on gcc 2.95 [MouseJstr] - * Fix backwards compatability with old mob skill formats [MouseJstr] - * Added mail system commands and @refreshonline to help.txt. [Valaris] - * Fixed char guild storage bug [MouseJstr] - * Prevented breakage of Weapons/Armor if the respective Alchemist Chemical Protection skill is applied. [spira] - * Added so nochat end will set manner to 0. [Valaris] - * Added broken item check before breaking (to prevent an item from breaking more than once) [Valaris] - * Re-wrote parts of equipment breaking. It will check to make sure it was not a miss before doing break calculations. [Valaris] - * Re-added negative value exploit fix. [Valaris] - * Fixed guardian opposition search. [Valaris] - * Added @unmute. [Valaris] - * Added check for map existing before cleanup (server will exit instead of crashing if maps aren't found). [Valaris] - -10/13 - * Fixed parse of antifreeze enable/disable flag. [Valaris] - * Fixed end-of-line flags in source tree [MouseJstr] - -10/12 - * Prevent attack/skill usage while wearing tux/wedding dress. [Valaris] - * Remove item unequip on tux/wedding equip. [Valaris] - -10/11 - * Added mail system (for SQL version only). [Valaris] - - @checkmail - - @listmail - - @listnewmail - - @readmail <#> - - @deletemail <#> - - @sendmail - - @sendprioritymail - - Added battle_athena.conf option to enable/disable mail system. - - Added mail.sql for sql mail system. - - Use "*" for name to send to all players. Level must be >= to @sendprioritymail level. - - * Added @refreshonline to refresh player online status in SQL version. [Valaris] - -10/10 - * Modified ja blacksmith repair code to function with our broken equipment system. [Valaris] - * Removed ja repair script commands, they aren't compatible with our broken equipment. [Valaris] - * Fixed error in Morroc jewel dealer. [Valaris] - * Added so supernovices will get flee from improve dodge. [Valaris] - * Fixed assassin and rogue flee bonus, was giving +50 instead of +40. [Valaris] - * Fixed bug with using remove trap on a snared monsters and the monster would stay stuck. [Valaris] - * Added a check for row return in an sql statement in login. [Valaris] - * Added some pointer initializations in map.c. [Valaris] - * Calculate pc status when equipping or unequipping pet items. [Valaris] - * Fixed crash in looting pet skills if loot size was greater than 10. [Valaris] - -10/05 - * Fixed all mob spawn names (typos, errors, wrong names) according to the mob_db.txt [Lupus] - * Added YggdrasilKid's fixed exp.txt. [valaris] - -10/04 - * Added missed close file functions in pc.c [Lupus] - * Added some new items, fixed some item names and translated all grabled items in item_db.txt [Lupus] - * Fixed bug in MOB_DB and in MOB_BRANCH DB related to wrong "Elder" ID number [Lupus] - * Fixed toggle for using sql item db in char-server. [Valaris] - * Added interval settings for anti-freeze system. [Valaris] - * Added enable/disable options in char_athena.conf and login_athena.conf for anti-freeze system. [Valaris] - * Re-added anti-freeze system. [Valaris] - * Cleaned up warning in src/common/db.c. [MouseJstr] - * Removed afm map checking from char. [Valaris] - * npc.c - Re-enabled new "OnTouch" function. Added a missing line to npc_event in npc.c(line 667). - pc.c - Added 2 missing "else" statements on (line 3702 and 3842). Now ontouch works correctly and activates - everytime instead of only once like in RC4. [kobra_k88] - * clif.c - Added: npc_scriptcont(sd,RFIFOL(fd,2)); to "void cliff_parse_NpcCloseClicked" function. - Now "close2" script command works properly. Previously, it would freeze the server.[kobra_k88] - -10/03 - * added oA to eA database conversion .sql [MouseJstr] - * renamed sql to sql-files to eliminate a problem with make [MouseJstr] - * Fixed Assassin Quest where "Nameless One" NPC would freeze after clicking "next". [Shinigami] - * charkillable now returns status on target [MouseJstr] - * skill names now have descriptions pulled from the client [Mousejstr] - * Mapflag "petals" has been changed to "sakura". [Valaris] - * The weather @commands will now set that particular mapflag on until server is restarted, and will send weather effect - to everyone on that map. It also will not allow the occurance of the command more than once. This method means - everyone coming onto the map after the command has been used will see the effect. [Valaris] - * Added yor's latest ladmin.c. [Valaris] - * Fixed bug in delitem script command that caused it to delete all of an item. [Valaris] - * Modified Makefile's to work better in non-sql environment [MouseJstr] - * A lot of work on source tree making it more ANSI C compliant [MouseJstr] - * Finalized the timers on shutdown - turned off malloc debugging on db's. [MouseJstr] - * Added release hook's into db's [MouseJstr] - * Added runflag to core to allow cleaner shutdown [MouseJstr] - * Work on LCCWIN32 for building under Windows natively [MouseJstr] - * modified @mapexit to use runflag for cleaner shutdown [MouseJstr] - * Improve cleanup on exit of map server of all objects [MouseJstr] - * statpoint reader can now be larger then 1432 bytes [MouseJstr] - * Fixed so dancing effect is cleared when warping. [Valaris] - -10/02 - * Modified battle config muting players option to work more effectively. [Valaris] - * Fixed mute from showing red bubble to players. [Valaris] - * Fixed disguise sprite staying when teleporting. [Valaris] - * Added a special mob ai check in mob.c. [Valaris] - * Fixed petit pet skill's damage from ever increasing. [Valaris] - * Removed pet weight and pet loot options, someone re-added them, and this conflicts with pet skills. [Valaris] - * Added new skills to mob_skill_db (skills for Alchemist summon marine sphere among others) [Valaris] - * Updated skill_cast_db and skill_require_db for summon marine sphere and biocanniablize skills. [Valaris] - * Fix for drops by luck crashing. [Valaris] - * Removed @nuke for now. [Valaris] - * Added japanese ankle snare code. [Valaris] - * Using better code for alchemist marine sphere. [Valaris] - * Reverted back to old method of OnTouch for now for compatibility with older scripts. [Valaris] - * Fixed an infinite loop with preventing multi level up and high novices. [Valaris] - * Storage saving in SQL was based on MAX_INVENTORY. Switched to MAX_STORAGE and MAX_GUILD_STORAGE. [Valaris] - Should resolve items disappearing. Thanks to fov for pointing this out. - * Updated skill_db entries for biocannibalize and summon marine sphere. [Valaris] - * Changed sql item name row sizes to 24, and changed memory allocation to 25 bytes instead of 29. [Valaris] - * Added upgrade_1.0.0-rc5_database.sql (will set name columns of item db to varchar(24). [Valaris] - * Removed anti-freeze system. [Valaris] - * Began removing AFM, unless someone wants to complete this. [Valaris] - * Added an online status timer. Will check online status of players every hour (for sql version). [Valaris] - * Added malloc to map.c. [Valaris] - * Added some variables for new mob exclusion. [Valaris] - * Using malloc in pc.c. [Valaris] - * Added skill reset checks to high/advanced/baby classes. [Valaris] - -10/01 - * Fixed up const.db. [Valaris] - - Added - bBreakWeaponRate 1068 - bBreakArmorRate 1069 - bAddStealRate 1070 - - - Fixed - bMagicDamageReturn 1071 - bRandomAttackIncrease 1072 - bAllStats 1073 - bAgiVit 1074 - bAgiDexStr 1075 - bPerfectHide 1076 - bDisguise 1077 - - * Rewrote mute disable option in clif.c, it did not need to end status. [Valaris] - * Added a missing check for SC_NOCHAT in clif.c. [Valaris] - * Changed comments on max_lv in battle_config to be less - confusing [MouseJstr] - * Fixed Gypsy Job Quest, added Crusader Job Quest [Lupus] - * Adding missing noquests from previous tree [MouseJstr] - * merged conf files between txt and sql [MouseJstr] - * According to item_db.txt and mob_db.txt fixed some name differences, wrong item names in - pet_db.txt,mob_branch.txt,item_violetbox.txt,item_giftbox.txt,item_cardalbum.txt [Lupus] - * Added specialeffect2 script command. Works the same as specialeffect, but the effect will be applied - to the player interacting with the npc instead of being applied on the npc. [Valaris] - * Added hasitems script command. If a player has any items it will return 1 in an if statement. [Valaris] - * Added npctalk script command. Syntax : npctalk "These are my words"; [Valaris] - * Removed script::say in favor of Valaris's version. [MouseJstr] - * Fixed a bug in guild alliances where it was treating a friend as a foe. [MouseJstr] - * Fixed crash in weapon breaking. Was not doing a block type check on the source. [Valaris] - - -09/29 - * Fixed small, almost non-existing memoryleak, in grfio.c that could - cause some systems to exit the application [Kalaspuff] - -09/26 - (Dated On Aegis Website) - *--Released 1.0.0 RC4--* -09/25 - * Reorganized Npc folder for release - * Updated map_athena.conf - * Remove certain statuses when warping (Cloaking, Sitting, Gangster's Paradise) that would allow the effect to - continue and a player to walk normally. [Valaris] - * Remove speed increase of theif and high thief from improve dodge (only assassins and assassin cross's are - supposed to get this bonus) [Valaris] - * removed more #ifdef's between TXT and SQL [MouseJstr] -09/24 - - * Added @charkillable (to make players killable) [MouseJstr] - * Added @dropall (throws all items on ground) [MouseJstr] - * Added @chardropall (throws all players items on ground) [MouseJstr] - * Added @storeall (put all items in store) [MouseJstr] - * Added @charstoreall (put all players items in storage) [MouseJstr] - * Added @skillid (look up a skill by name) [MouseJstr] - * Added @useskill (use a skill by id) [MouseJstr] - -09/23 - * Update Some Npc Stuff In Payon [Darkchild] - * Added Sage Quest [Darkchild] - * added @killable - all players can hit you, even out of pvp [MouseJstr] - * Changed Basilica to prevent the priest from walking [MouseJstr] - * Restore base files in save directory [Yor] - * Castle spawn/conquering fix: [Akaru] - - Spawns monster when the guild is not owned when the server starts - - Spawns emperium with the monsters when guild is not owned yet - - If AgitStart and AgitEnd occurs while castle had not been owned, it is just ignored so that the monsters that are guarding the castle and the emperium would not be killed. - - Prevent spawn of emperium/monsters after castle is owned - - In short, you can clear and conquer the castle any time even when it's not agitstart'ed if the castle is unowned, like in official servers - -09/22 - * added @killer to let GM's hit players outside of pvp [MouseJstr] - * added @skilloff to turn off skills on a map [MouseJstr] - * added @skillon to turn on skills on a map [MouseJstr] - * added @follow to follow players (including warping after them) [MouseJstr] - * added battle_config option to control the max number of castles a guild can have [MouseJstr] - * upgraded the guild alliance checker [MouseJstr] - * added battle_config to control if ghosty armor works for mobs [MouseJstr] - * Fixed battle_config to control how much GTB actually helps [MouseJstr] - * Fixed battle_config to control if pvp battles give exp or drops [MouseJstr] - * Added map aliasing [MouseJstr] - * changed the map_nick2sd to be able to handle sub-strings for refering to players [MouseJstr] - * made turning of skills on a map actually work [MouseJstr] - * Updated Makefiles/GNUMakefiles to include the compilation of /common/malloc.o [PoW] - -09/19 - * Corrected @charstoragelist: [Yor] - - because account2storage function create a void storage if it's not exist, somethimes a player could lost its storage. - -> creation of account2storage2 to just ask pointer of storage if exist and use it in @charstoragelist. - * Improved range system of @monster/@spawn (nearest of GM when less monsters) [Yor] - * Client until 2004-09-06 (included) is now completely recognized [Yor] - * Fixed kafra storage request for all new clients [Yor] - -09/18 - * Changed to Yor's code that doesn't try and read when it's already not found [Akaru] - * Removed check for resnametable in data folder exit -> the resnametable isn't even used if present and it should be optional and not compulsory to have a resnametable in the data folder! [Akaru] - * Added an option to choose which clients are accepted on the server (2nd part and finish: Check accepted versions) [Yor] - * Added an option to choose which clients are accepted on the server (1st part: reading of the option) [Yor] - * Fixed action request (sit, attack, etc..) for all new clients [Yor] - * Fixed solve char name for all new clients [Yor] - * Fixed get char name for all new clients [Yor] - * Fixed an error about packet number on char name function [Yor] - * Added items drop packet for all new clients [Yor] - * Fixed: in clif_send (global send, not individual send) don't send a packet that client doesn't recognize [Yor] - -09/17 - * Added check to make sure mob is already moving before initiating random walk - when the item they are going to loot disappears. [Valaris] - * Client of 2004-07-13 is now completely recognized [Yor] - * Fixed items take packet for all new clients [Yor] - * Corrected packet sizes for each client version (not set packet size if packet doesn't exist) [Yor] - * Fixed direction position for all new clients [Yor] - -09/16 - * Client of 2004-07-06 is now completely recognized [Yor] - * Fixed skills to position with all new clients [Yor] - * Fixed incomplete packet of authentification [Yor] - * Fixed size of packets for all clients [Yor] - * Improved detection of client version at authentification [Yor] - * Improved packet parsing of client (search packet version before to parse) [Yor] - * Added packets size of 0x20d and 0x20e [Yor] - -09/15 - * Added "nude" script command, will strip player of all equipment. Syntax : nude; [Valaris] - * Removed sandstorm flag, since it does not work as intended (is not a constant effect like believed) [Valaris] - * Added specialeffect script command. Syntax: specialeffect #; [Valaris] - * Moved noicewall flag to a better position. [Valaris] - * Added mob type check to skill_castfix to prevent crashing. [Valaris] - * corrected error: skill to id (RFIFOW->RFIFOL) [Yor] - * Added packets size of 0x204 and 0x20b [Yor] - * Fixed skill_to_id with all new clients [Yor] - * Fixed tick sending with all new clients [Yor] - * Fixed items use with all new clients [Yor] - * Fixed move with all new clients [Yor] - * Speedup WantToConnect function [Yor] - * Call correct function with any clients packet - size is not correctly set actually [Yor] - -09/14 - * Resetlvl will unequip items that require more than level 1. [Valaris] - * Added message about new clients (not actually supported) [Yor] - * Added correct call of clif_parse_WantToConnection function for all client types [Yor] - * Added size of packet 0x0214 [Yor] - * Fixed calls of 'clif_send' function [Yor] - -09/13 - * Modified item_db to have more name consistency, added more translations for items [Akaru] - * Fixed in clif_sitting usage of a buffer [Yor] - * Fixed in clif_movechar usage of a buffer for clif_set007b [Yor] - * Fixed in clif_spawnpc usage of a buffer for clif_set0078 [Yor] - * Corrected a commented printf in packet 0x2b0e for debug [Yor] - -09/12 - * Put (commented) parse printf in char.c at the right place (to have all informations) [Yor] - * Added Alchemist JobQuest [Darkchild] - * Added Inn Npcs [Darkchild] - -09/11 - * Added @charitemlist/@charstoragelist/@charcartlist GM commands to display items of a player [Yor] - -09/10 - * Added a better id control of monster id in @spawn/@monster... GM commands [Yor] - * Correction of an error at reading of 'wisp_server_name' option (char.c) [Yor] - -09/09 - * Change @spawn/@monster2... GM commands to spawn in close area [Yor] - * commented some printf in char.c to reduce (a little) lag [Yor] - * Put @timer messages in msg_athena.conf [Yor] - * Add a file for SQL developpers [Yor] - * Changed name of newpacket variable of session (packet_ver) and add a message for nex client version [Yor] - * Added new client packet sizes and expanded packet acception. [Valaris] - * Added snow, fog, rain, leaves, petals, and sandstorm map flags. [Valaris] - -09/08 - * added clif_specialeffect to clif.c, for displaying a wide variety of effects (information from rofx) [Valaris] - * Corrected in map: creation of new session before to delete previous session_data [Yor] - * Corrected in login/char/ladmin: creation of new session before to delete previous session_data [Yor] - * Prevented redeal dupe. Checks to make sure inventory index has not already been added (client prevents - the possibility of stacking items, but server did not.) [Valaris] - -09/07 - * Added an option to determinate at which GM level nowarp and nowarpto flags are not more used [Yor] - - new option in battle.conf: any_warp_GM_min_level - - new checks and message about 'from' (nowarp) and 'to' (nowarpto) in GM commands - * Third part of new authentification method (clif_parse_CloseKafra): ignore new 0xF7 [Yor] - * Change name of new0x0072 variable by new_auth (because now, auth packet is 0x72 or 0x7E) [Yor] - * Second part of new authentification method (clif_parse_WantToConnection): Auth by char-server of new packets resolved [Yor] - * Improved check of new packet 0x7E to enter in WantToConnect Function [Yor] - -09/06 - * First part of new authentification method (clif_parse_WantToConnection) [Yor] - - accepted new 0x7E for wantto connect - - begin to found first authentificaiton and answer to client, but not found - * Improved Char-server: [Yor] - - Fixed a possible error on multi-map servers (no lastpoint) - - Added log about character with same name of wisp server name. - - Added a sub function to disconnect a player (used 3 times) - * Improved. In global message, use buffer to send to other (avoid possible overwriting). [Yor] - * Added Super Novice Job Quest [Darkchild] - -09/05 - * Fixed noskill flag to actually stop all usable skills when used. [AppleGirl] - * Removed last lag on char-server causing by too much savings (on accreg) [Yor] - * Removed a lag on char-server with a lot of players (for party, like guild) [Yor] - * Removed a big lag on char-server with a lot of players: [Yor] - - guilds was saved every time a player is online and a lot of other time (removed). - - guilds are save only when characters are saved (no more bring forward with characters file, and less savings) - * Added GM message that informs when a player blocks wisps of the server (against some bots that auto ignore wisps from a player) [Yor] - * Added perfect GM hide in @where GM command [Yor on suggestion of PoW] - * Correct NEW shops.txt with error displayed AT START of map-server! [Yor] - * Correct NEW payon.txt that crash map-server AT START! [Yor] - * More changes and official locations for new payon, things in correct place: - - Guild Flags - - Kafra - - Shops/Refiners (except Pet Shop!) - - Most Normal Npcs (not all!) - All Based On ScreenShots From kRO!! [Darkchild] - * Payon Warps about 80% finished, others were no screens taken from! [Darkchild] - * Removed nowarp mapflag and new internal check about gmlevel [Yor] - - gmlevel are checked before to call the function (of the GM comand). If you give gmlevel, people can use the function, including if you give level 0. - if you want refuse some GM commands to normal players, set the level of the command with a value upper than 0 (of set GM_only_command option to yes). - Not add new tests for nothing and use more cpu. - - mapflag: no limit for GM commands: what'is the interest to have gm commands limited like player? (it's rule for all GM commands) - A gm can have the possibility to go anywhere, specialy to check/control player ==> no mapflag! - * Stopped client crashes when jobchanging into another class that doesn't support the weapon you are holding. [Valaris] - -09/04 - * Added nowarp mapflag [PoW] - * Fixed nowarpto mapflag in atcommand.c [PoW] - * Improved: On hack about name in global message, GM of ALL map-server received hack messages. [Yor] - * Moved some GM messages of GM command from at_command.c to msg_athena.txt. [Yor] - * Added @whogm GM command. [Yor] - * Added a warning when a character has same name than wisp server name. [Yor] - -09/03 - * Added gm level display in all @who(map) GM command. [Yor] - * Correction: [Yor] - Thanks to [EvilEden] - - Soul Strike mistake (according to http://iro.ragnarokonline.com/game/jobmagskill.asp) - corrected cast time - - npc/quests/monstertamers.txt: The Monster Tamer Shogo gives the Deviruchi 'Contracts in Shadow' (641) -> the Bapho Jr. Tamming Item 'Book_of_theDevil' (642). - * Added monster/egg name to create egg in @makeegg GM command. [Yor] - * Added an option to fix started limited time of a new account. [Yor] - * Added @hatch in help.txt. [Yor] - * Fixed ChaseWalk so now you can't use skills while in chase walk mode. [AppleGirl] - * Fixed Looping of Broken Weapon if you continued to use it even after its broken [AppleGirl] - * Updated Weapon Breaking So Now Icon Will Disappear when you unequip the broken item [AppleGirl] - * Re-Added @hatch and added makepet to atcommand_athena.conf [Darkchild] - * Moved job monsters to their respected files [Darkchild] - * Fixed a bug in sence (showing wrong info!) [Darkchild] - * Changed the npc/jobs/ folders heavily! [Darkchild] - * Added COMPLETE Umbala NPC script [Darkchild] - * Added New Payon maps @ bottom of the map_athena.conf [Darkchild] - * Added New Payon NPCs and Warps [Darkchild] - * Fixed typo and made layout a litle bit better of the readme files [Darkchild] - * Added Items Ability to be unbreakable (using bonus bUnbreakable,100;) it will totally unbreakable - any lower than a 100 it still has a chance of breaking but call it more durable ;p[AppleGirl] - * Added Start_Weapon and Start_Armor to all the other starts in char_athena.conf [AppleGirl] - * Updated skill_require_db and skill_cast_db.txt [AppleGirl] - * Finish to add a (reserved) wisp name for server - part 3: in map-server replace name where server name is used for wisp [Yor] - * Continue to add a (reserved) wisp name for server - part 2: in map-server, reception of the name [Yor] - * Begin to add a (reserved) wisp name for server - part 1: in char-server [Yor] - -09/02 - * Added Meltdown's weapon breaking ability [AppleGirl] - * Added GM level in front of each line to display only enable GM command of the help.txt. [Yor] - * Removed message about limited time if your have unlimited account (that was for tests. sorry). [Yor] - * Set day/night messages in msg_athena.conf (for foreign people). [Yor] - * Added a function to return a string of msg_table outside of at_command. [Yor] - * Fixed clean database at disconnect when session is not auth. [Yor] - * Fixed a bug (but not solve the bug - need more research to found where solve it) in map_id2sd function. [Yor] - * Set initialisation of ignore list after authentification (not need to be done before) [Yor] - * Reduced size of packet 0x2afe (removed not used value) [Yor] - * Improve first auth part (wanttoconnect) [Yor] - * Added TODO 35 [Yor] - * Made a few adjustments to Archer based class skills making more like normal classes instead of Uber Classes. [AppleGirl] - * Updated the weapon and armor breaking to be more like official RO adding status icons and so on. [AppleGirl] - * Updated a few skills based off a few sites, also fixed other skills that were coded incorrectly. [AppleGirl] - * Fixed double connection with same account [Yor] - - disconnect immediatly - - no enter in database (block or others) - - no creation of session - - no more need to have 'new_fd' - -> less memory usage, less tests - * Removed 'other_fd' not used [Yor] - -09/01 - * Fixed Rainbow Egg quest in quests_lutie NPC [PoW] - * Added packet length for client server-side friend list, if they choose add the client will not disconnect. [Valaris] - Need to figure out the rest of the packets, then can implement. - * Added server-side friend list 'add' send packet info to packet documentation. [Valaris] - * Fixed: in chrif_authreq, don't send a request to char server if session is not found [Yor] - * Fixed: amatsu.txt, when Carter Moores say: remove 10000 zeny, he removes them now! [Yor] - * Removed an unknown item in shops.txt [Yor] - * Fixed 3 goto in father - acolyte.txt [Yor] - * Fixed bug with colors of 5 numbers/digits (warp to city instead of display with color) - wizard.txt [Yor] - * Reduce size of mage.txt and fix a text in mes (no bug) [Yor] - * Fixed thief.txt script (error on a goto) [Yor] - * Fixed account length (WFIFOL(fd,2) instead of WFIFOW(fd,2)) when char-srv doesn't auth an account for map-srv (0x2afe packet) [Yor] - * Added @job and @charjobchange to be similar with @charjob and @jobchange [Yor] - -08/31 - * Fixed messages of @(char)jobchange GM commands. [Yor] - * Fixed a return value of jobchange function (pc.c). [Yor] - * Added coredumps by system when crash. [Yor] - thanks MagicalTux - -08/30 - * Added some comments on gravity commands. [Yor] - * Improved /mm, /monster and /item to have some answers. [Yor] - * Modified skill_cast_db and skill.c to allow for status effect chance of wizard skills - (stun for WZ_METEOR and blind for WZ_VERMILLION) [moonsoul] - * Modified skill_cast_db and skill_db to properly reflect cast params and delay times for assassin cross - skills Create Deadly Poison(407) and Soul Breaker(379) [moonsoul] - * Added damage calcs to battle.c for Assassin Cross skill Soul Breaker(379) [moonsoul] - -08/29 - * Modified skill_require_db to reflect item requirements for assassin cross skills Create Deadly Poison(407) - and Enchant Deadly Poison(378) [moonsoul] - * Added @charmountpeco/@charpetrename/@charquestskill/@charlostskill GM commands. [Yor] - * Added noicewall.txt to map_athena.conf (commented out), noicewall flag [Valaris] - will not function when pvp is enabled on map. - * Added noicewall flag, noicewall.txt. [Valaris] - * Added wiz's temp fix for higher skill ids and skillnodex db. [Valaris] - * Added: Usage of At command when failed (100%). - * Modified: try to have samme presentation for all at-command code (100%). - * Improved/fixed some GM commands [Yor] - * Added some 'usages' in some GM commands [Yor] - * Added baby classes to equipment codes, they will equip the same as their normal and advanced counter-parts. [Valaris] - * Improved some GM commands [Yor] - - Added in @(char)baselvlup/@(char)joblevelup GM command: - When there are some status/skill points available and we reduce level -> remove points. - - Added counter in @statsall GM command. - - Fixed in @charsave GM command when map doesn't exist. - - Fixed @charbaselvl GM command overflow - - Fixed skill value (and crash) in @questskill/@lostskill GM command - - Fixed number of spiritballs (@spiritball GM command) - * Fixed random PvP crash bug [Lupus] - -08/28 - * Improved some GM commands [Yor] - - Added memo points in @go GM commmand. - - Added negativ value for @heal GM command. - - Fixed @(6stat-adjustement) GM commands overflow. - - Simplified @Statall GM commands. - - Fixed @guildlvup GM commands. - -08/27 - * Fixed @(char)zeny/stpoint/skpoint GM commands (no more overflow, etc...) [Yor] - * Improved @memo GM command: [Yor] - You can memo anywhere (it's GM command, not /memo command like for any player). - Without value, display actual memo points. - * Improved @refine GM command: you can reduce refinement. [Yor] - * Fixed @broadcast GM command send broadcast to all Map-servers. [Yor] - * Fixed @(char)base/joblevelup command (any adjustement can be entered). [Yor] - -08/26 - * In at_command.c: [Yor] - Fixed: initialisation of all strings. - Added: Usage of At command when failed (75%). - Modified: try to have samme presentation for all at-command code (75%). - * Made it so that the pvp_nightmaredrop mapflag would work even without pvp being enabled, now works any time it is set. [Ancyker] - * Added level check on /item and /monster. GM level must be >= both @monster and @item [Valaris] - level specifications (both since they share the same packet) - * Added my own extream mode map flags (disabled by default), makes players drop items at random everywhere (except towns). Full details in map_athena.conf. [Ancyker] - -08/25 - * Added: display usage when GM command failed (some GM commands) [Yor] - * Added @email GM command to change your account e-mail [Yor] - -08/24 - * Modified changesex script command use same function as @charchangesex now [Yor] - * Added @charchangesex GM command can be used on offline players [Yor] - * Added gm ladmin command to change GM level of an account [Yor] - -08/23 - * Fixed some at_command messages: [yor] - - remove all unused messages - - create commented line of all messages in msg_athena.conf to have english, and under, translation if necessary - - add some (arround 80, but not all) messages in msg_athena.conf - -08/22 - * Fixed: In GM commands, add a 'standard' message when GM level is too low [Yor] - * Changed in battle_athena.conf [Yor] - - atcommand_spawn_quantity_limit: 100 (20 is too short for mass spawnings.) - - unknow: give translation of babelfish to help on the explanation (not writing: 'unknow' to not lost the information!) - - day_duration: 7200000 & night_duration: 1800000 (set default to 30 min night, 2 hours day to show improvement of eathena by DEFAULT) - -08/21 - * Updated battle_athena.conf to be in English (not Engrish) [Ancyker] - * Updated WZ_FIREPILLAR according 8-10 patch [AppleGirl] - * Updated skill_cast_db and skill_require_db according to 8-10 kRO patch [AppleGirl] - * Added how to use skill_castnodex_db.txt [AppleGirl] - * Added skill_castnodex_db.txt, allowing some skills to be casted with out dex's effect on them - Midas' idea [AppleGirl] - * Improved answer messages of char-server on @(un)ban/@(un)block GM commands [Yor] - * Added answer messages of char-server on @(un)ban/@(un)block GM commands [Yor] - * Added block command (ladmin c) [Yor] - * Added block command (ladmin perl) [Yor] - * Fixed job_db1.txt comments to be in english, also spaced the columns to make it easier to read. [Ancyker] - * Added: possibility to use "" or '' to give an account name in ladmin (Perl) (no more problem with account name which have spaces). [Yor] - * Changed: atcommand_gm_only is set to 'no' by default, because: [Yor] - - GM commands level now works correctly - - GM commands levels are now set by default with diffrent types of GM - * Added @inall/@exall GM command to block/unblock ALL wispers of a player [Yor] - -08/20 - * Added unblock command (ladmin C) [Yor] - * Added unblock command (ladmin perl) [Yor] - * Fixed: when limited time is in past, add new duration starts from actual time [Yor] - * Added chardisguise/charundisguise [Kalaspuff] - * Added default time [23:59:59] for timeset/banset ladmin (C) commands [Yor] - * Fixed sage rebirth ability at professor job change NPC. [PoW] - * Fixed pecopeco knight/crusader rebirth ability at LordKnight and Paladin job change NPCs. [PoW] - * Added default time [23:59:59] for timeset/banset ladmin (perl) commands [Yor] - * Added a check_ip_flag option in char-server [Yor] - * Added a check_ip_flag option in login-server [Yor] - * Added a display at start of login-server about IP checking configuration. [Yor] - -08/19 - * Added unban/unbanish command (ladmin c) [Yor] - * Added unban/unbanish command (ladmin perl) [Yor] - * Added parameter to choose how works timeadd (ladmin command) with unlimited time accounts [Yor] - * Fixed @option/@charoption when player is disguised. [Yor] - * Added: some information about TODO 19. [Yor] - * Added: possibility to use "" or '' to give an account name in ladmin (C) (no more problem with account name which have spaces). [Yor] - -08/18 - * Guardians were immune to skills/spells, fixed. [Valaris] - * Added custom draculax.txt script to display npcskilleffect command. [Valaris] - * Added npc/events/custom folder. [Valaris] - * Fixed Umbala Language Quest NPC bug [PoW] - * Added temporary prevention of crash caused by peco + disguise, will look into a better solution. [Valaris] - * Changed working of putting disguise on (much like Yor's setpos with undisguise) [Valaris] - * Changed disguise id check to > 23 instead of max_pc_class. [Valaris] - * Added bDisguise script command for items. [Valaris] - Syntax : bonus bDisguise,npc_id/mob_id; Example bonus bDisguise,1002; for poring disguise - * Added flag so @disguise command will override any disguise scripts. [Valaris] - * Updated @disguise description in help.txt. [Valaris] - * Added: @ignorelist/@charignorelist to know from which people a player ignore wisps [Yor] - * Renamed: @makepet -> @makeegg (@makepet will be created later to create pet, not a egg) [Yor] - * Fixed Phantom of Opera quest, fixed quests_aldebaren requirements [PoW] - * Changed: anti-freeze disconnection in char-server set from 1mn 15s to 30s [Yor] - * Fixed: free block memory on NULL pointer in char-server do_final [Yor] - * Fixed: reset server information when map-server disconnected from char-server [Yor] - * Changed: anti-freeze disconnection in login-server set from 1mn 15s to 30s [Yor] - * Improved pecopeco checks in @option/@charoption/@jobchange/@charjob [Yor] - -08/17 - * Fixed pecopeco displayings in @option/@charoption/@jobchange/@charjob [Yor] - * Correction of @rura, @where, @rurap and some other things in GM commands. [Yor] - * Correction of a parameters' errors in GM commands. [Yor] - * Correction of @charzeny Gm command (+ @zeny/@charzeny can add and remove zeny without problem). [Yor] - * Acolyte Job Quest: Fixed Marthilda, Yosuke NPC bugs. [Lupus] - * Added some comments in .conf about @gm [Yor] - * Fixed max value of level_new_gm parameter (not 100, but 99) [Yor] - * Added level_new_gm parameter in login-server to disable or set level of all GM created by @gm [Yor] - * Fixed @GM GM command [Yor] - -08/16 - * Translation of final message of @gm [Yor] - * Fixed on @GM: When login server is offline, char server sends impossible to create GM [Yor] - * Fixed: refuse @gm GM command to ... a GM :) [Yor] - * Added complete answers of /in /ex /inall /exall. [Yor] - * Added option to send information to online GM when there is a hack, a spoof name, etc. [Yor] - * Added individual ignore management, and wisp checks [Yor] - * Added TODO 33 [Yor] - * Fixed possible overflow with @ban GM command [Yor] - * Speed up a little @ban GM command [Yor] - * Added ignore all for wisps (to same map-server). Sorry, before, I was added only for not same map-server [Yor] - -08/15 - * Added a resume for 'email_creation' parameter [Yor] - * Fixed double messages when a player wisp/page itself [Yor] - * Added ignore all for wisps [Yor] - * Added better explanation for the new 'email_creation' parameter [Yor] - * Fixed: now, GM accounts are sended to all servers when auto-detect change of GM file is actived [Yor] - * Fixed: at auto-creation of e-mail, don't ask the player if login-server is offline (we need login-server to save e-mail) [Yor] - * Used config_switch instead of atoi for email_creation parameter [Yor] - * Added an option to create e-mail at connection with client [Yor] - * Added authentification with login_id2 (1040) - activated by default [Yor] - * Added partial part of authentification with login_id2 (1040) [Yor] - * Added some missing GM commands in help.txt [Yor] - * Improved search of map-server when map is not found [Yor] - * Added banish in ladmin (c) to be like of GM commands [Yor] - * Fixed Angel Helm quest, fixed Spore Doll quest exploit, Fixed Morgenstein quest bug [Lupus] - -08/14 - * Added banish in ladmin (perl) to be like of GM commands [Yor] - * Fixed some possible errors with maps management in char-server [Yor] - * Fixed bug of map searching when to few maps on map-servers [Yor] - * Changed some console displayings in char-server [Yor] - * By default, activation of player ip check [Yor] - * Added some of 1040: check of player ip between each server [Yor] - * Fixed dupes in warp scripts, reorganized, thanks to midas fro GH warp [kobra_k88] - * Added possibility to disable automatic reload of GM accounts file [Yor] - * Added log when GM accounts file can not be readed [Yor] - * Changed default of GM accounts file check for 120 sec to 15 sec [Yor] - * Added automatic reload of GM accounts file if it was modified [Yor] - * Added @mapmove, @broadcast, and @localbroadcast in help.txt [Yor] - * Fixed possible error of monster id (GM command) if monster begins by a number. [Yor] - * Added jobname in @charstats command. [Yor] - * Fixed: If a GM command uses NULL pointer as command function, there is no more crash. [Yor] - * Fixed Niflheim&Umbala guides. Fixed Niflheim city. removed 2 NPC clones. [Lupus] - * Added Archer Skills quests, fixed Thief Skill Quest [kobra_k88] - -08/13 - * Add an option to fix a ban for hacker that spoof name (to set minutes of ban) [Yor] - * Fixed incorrect mob IDs with Valaris's mob_db [Ancyker] - * Added possibility to execute GM commands when you wisp someone [Yor] - * Added a console message when a player try to spoof his name in Global message [Yor] - * Added size of packet in packet send by map-srvr to char-srvr about online players [Yor] - * Added check on individual stat at creation of a character [Yor] - * Added npcskilleffect script command. Will allow npc to show effects of certain skills on specified XY coordinate. - Syntax : npcskilleffect 21,10,148,150; skillid, skilllv, x, y. [Valaris] - * Increase maximum weight can be used with an item now, thanks to orn. [Valaris] - * Fixed mob names in Gonryun , thanks to unsul and Filougarou. [Valaris] - * Fixed muramasa curse rate, thanks to OxiMoron. [Valaris] - * Fixed Aldeabran&Comodo towns. Added Cheese quest to Comodo. Fixed Thief Job Quest [kobra_k88] - -08/12 - * Begin to add 1040 in login/char/chrif about authentification. not finished [Yor] - * @mapmove, @broadcast, and @localbroadcast can now be used. [Valaris] - * Looting mobs will not continue to item if it disappears, instead will walk away. [Valaris] - * Unitinalized nameid in script.c [Valaris] - * Added position in log when unknown packets are saved (login-server). [Yor] - * Corrected possible error to contact not good player when a wisp concerns player on an other map-server. [Yor] - * Added a function to obtain character name with index in auth structure (char.c). [Yor] - * Corrected check/test error in mapif_send. [Yor] - -08/11 - * itemdb_searchname fixed (now firstly looks for item aliases 'name', if not found looks for item name 'jname'). [Lupus] - * Optimized getitem, delitem. getweight, fixed there possible scripts exploits [Lupus] - * Thief bug's long name in mob_db.txt was Thief Bug Larva, fixed. [Valaris] - * Thief bug names were mixed around in monster.txt, fixed. [Valaris] - * Fixed incorrect parse of usable item rate. [Valaris] - * Added ban command in ladmin (C), like GM command [Yor] - * Terminated some translations about wisp/page, and control/improvement/correction of wisp/page. All 'found' bugs are corrected [Yor] - * Added translations in inter.c about wisp/page. [Yor] - * Corrected printf datas in intif_parse_WisMessage when map-srv receives wisp message from inter-srv. [Yor] - * Sended an answer when a wisp/page is supressed because of a timeout. [Yor] - * Improved: if inter-srv is asked for a wisp, verify first if the character exists. Don't ask all map-server if it not exists. [Yor] - * Changed Printf in intif_wis_message to have better information. [Yor] - * Improved: Don't ask inter-server for a whisp/page if player is on the same map-server. [Yor] - * Completed some printf and comments in char.c [Yor] - -08/10 - * Improved map_nick2sd function. Now, sensitiv case is removed when it's possible [Yor] - * Corrected split of broadcast messages in char-server [Yor] - * Message to Valaris from Yor (special file) - * Improved accounts file saving: [Yor] - - be sure that accounts file is save at least every minute. - - save accounts file at end of login-server - * Reduce displaying size on some errors about accounts file reading. [Yor] - * Created log when change sex packet give an invalid value (login-server) [Yor] - * Correction of unknow_packet displaying (in log). Separate is done after 8th char [Yor] - * Give possibility to use account name with spaces in prompt commands finished by account name in ladmin (perl). [Yor] - -08/09 - * Fixed char-server lag. 3 tests from 3 people appeared to function properly again. [Valaris] - * Basic Implementation of Basilica [AppleGirl] - * Added ban command (ladmin perl) [Yor] - * Correction of bug about auth_fifo when we block a player. Invalid value in array (login.c) [Yor] - * Correction of some tests on server_fd array in login.c [Yor] - * Improved Item_searching in all GM commands [Yor] - * Created @undisguise GM command [Yor] - * Added Umbala town&quests&guide. Some fixes in Yuno warps&shops&guides. Kafra fix. Added Valhallen quest. [kobra_k88],[Lupus] - * Corrected char_divorce (char-server) to remove ring to both partner [Yor] - * Eventual crashfix for clif_authfail_fd [Kalaspuff] - * Corrected @jump GM command. [Yor] - * Reduced size of conf/help.txt (max 200 lines in chat window). [Yor] - -08/08 - * Added NPCs to @disguise. [Valaris] - * Mob disguises will now show up to player using it as well. Attack animation and sitting do show up to them yet. [Valaris] - * Added @disguise GM command in help files [Yor] - * Added @go 16 to visit prisoners [Yor] - * Reduced number of accounts file saving when informations are not important: [Yor] - - save immediatly any modification/creation/deletion of account (like before) - - use counter before saving if only ip/time of last connection is changed (normal authentification) - because these values are already save in log file. - * Speed up account searching in login-server. [Yor] - * Speed up character searching for @(un)block/@(un)ban. [Yor] - * Created @unjail/@discharge GM command. [Yor] - * According to GM definition level in at_command.conf, set level 20 to online_gm_display_min_level for online files. [Yor] - * Speed up some sortings of online creation (strings based sortings) [Yor] - * Fixed nullpointer crash with disguise in clif_changelook [Kalaspuff] - -08/07 - * Fixed so spells will still be cast if target walks out of range. (please don't overwrite this again) [Valaris] - * Corrected a little error in online files creation (only 1 player was visible) [Yor] - * Optimized memory management of online list [Yor] - - less memory usage - - less tests and loops (more speed) - - more efficient (use directly char_dat position instead of search it) - * Added Official Assassin Job Quest. Now eAthena contains all 2-1 Job Quests! [kobra_k88] - * Fixed scripts: 32hats, warper2, platinum_skills, added/changed some mapflags and other misc script changes [Lupus] - * Added @disguise command (enter a mob_id or name, and you will appear to others as that mob/npc!) - * Fixed code for mob disguises, should not crash clients now. - * Improved online management code when we receive char_id. [Yor] - * Added code for mob disguises. Can not set yet. Atcommand needs created. [Valaris] - * Improved mmo_char_send006b function [Yor] - * Corrected: when save file of character can not be created, try backup file if flag is set to create it. [Yor] - * Added an option to create backup of characters file [Yor] - The backup_txt file was created because char deletion bug existed. - Now this bug is corrected and no character disappear. - But, create a file with a lot of characters can use CPU usage and decrease hard disk speed. - So, I create an option with default value: no create backup. - * Improved online management code and some others little codes (char.c). [Yor] - * Respawn points of prisoners set to the jail rooms. Jail.txt mapflag addeed. So imprisoned players can't escape. [Lupus] - -08/06 - * Improved/Optimized some little code (char.c/login.c). [Yor] - * Improved 0x2afa and 0x2afb (map transmissions between char and map). [Yor] - * Optimized global message nick spoof fix. [Valaris] - * Fixed crash in attacking guardians in a null guild. [Valaris] - * Capped earned exp at 1000000000. [Valaris] - * Set area size back to 20 for now, some things in path.c need to be fixed. [Valaris] - * Fixed crash in guardian search. [Valaris] - -08/05 - * Added @jail GM command [Yor] - * Added explanation of @idsearch and @mapinfo in help.txt [Yor] - * Improved @idsearch GM command [Yor] - * Improved a little 3 loops in ladmin.c [Yor] - * Improve some codes in char.c: [Yor] - - less tests in online creation - - mmo_char_send006b: remove duplicated memset, create a char_dat structure pointer - - server_fd[] not seted/modified/checked correctly - * Set max_walk_path back to 48. [Valaris] - * Added translated Gonryun town. Fixed map names of Louyang shops. Added missing Blacksmith, - added extra Rapairmen into refine.txt. In Inns added 4 different prices based on Base Lvl.[kobra_k88] - ----------eAthena 1.0.0 RC3 TXT--------- -08/04 - * Set battle_athena.conf to more accurate settings. [Valaris] - * Decreased default damage delay (stun after being hit) by 75%. [Valaris] - * Max walk path is now correct (17). [Valaris] - * Area size is now correct (14). [Valaris] - * Improved some very little codes in char.c. [Yor] - * Remove displayings of logs on console of map-server [Yor] - use it for DEBUG, not by default, that decrease a lot the performance - * Added (commented) printf in freeze function for debug if necessary [Yor] - * Fixed melee ctrl-attack targetting. [Valaris] - * Reset attack target when equipping arrows. [Valaris] - * Improved (log and remove_control_chars functions). [Yor] - * Added 'available free bytes' in displaying when size is expanded. [Yor] - * Fixed incorrect returns in clif_authok. [Valaris] - * Added pointer checks to chrif.c [Valaris] - * Added some pointer checks to the mob ai. [Valaris] - * New (lag-free) fix for NPCs / mobs not showing up when chars walk around [Kalaspuff] - -08/03 - * Made so if exp given is less than 0, 0 is given instead of 1 (plants were giving exp) [Valaris] - * Added console displaying to have complete informations when we expand Wdata session. [Yor] - * IMPORTANT: Add a TODO 31 for Guilds' coders. [Yor] - * Old packet 0x2b16 use packet number 0x2b0e. [Yor] - * remove packets 0x2b0e and 0x2b0f. [Yor] - * on character_name ask packet: add account_id of asker. [Yor] - * Improved script code in novice.txt. [Yor] - * Fixed error in alberta.txt. [Valaris] - * Allow player placement on afm-type maps. [Valaris] - * Added afm loading. [Valaris] - * Removed useless code for mob equipment. [Valaris] - * Initial packet setup for possible playable mobs. [Valaris] - * Added check for save_clothcolor for the dyefix, and added another check to make sure player is dyed before using the fix. [Valaris] - * Improvement: Character asking of map-server to char-server is not more case sensitive. [Yor] - * Added TODO 29 & 30. [Yor] - -08/02 - * Re-added "player not attached" error reporting. [Valaris] - * Fixed errors in 32 hat quest that was causing player not attached errors. [Valaris] - * Fixed input number function: commented out negative input check by Valaris in script.c (all scripts have been revised and fixed), - made actual bug fix of buildin_input func (wrong variable type conversion (int)->(unsigned int) in clif.c - Due to the fixed bug Merchant Job Quest works fine now [Lupus] - * Fixed number input bugs/possible exploits: mage.txt IceCream.txt event_valentine.txt refine.txt - milk_trader.txt grandpa_pharmacist.txt aldebaran.txt alberta.txt juice_maker.txt [Lupus] - * Finished: offline player can be @ban/@block/@unban/@unblock by their character name. [Yor] - * Added packet between map to char to work on offline players (@ban/@block/@unban/@unblock) [Yor] - * Added check on character name with less than 4 characters [Yor] - * Added @chardelitem GM command [Yor] - * Fixed Kafras (no more buttonless msg bugs, Kafra Pass works fine) [Lupus] - * Changed input exploit, only checks for negative now instead of having an input cap. Fixed up vending exploit. [Valaris] - * Added check for src with High Wizard's soul drain. [Valaris] - * Fixed up npc_suicide and npc_selfdestruction, should fix up crashes caused by them. [Valaris] - * Added more pointer checks in the clif_authok function. [Valaris] - * Added some pointer checks to clif.c, should prevent crashes. [Valaris] - * Added some checks about writing errors of item names in GM commands (check cases). [Yor] - * Fixed Hunter Job Quest 1.6 [Lupus] - * Removed Kalaspuff's fix for mob/npc data not always being recieved. It was causing - excessive amounts of lag. [Valaris] - -08/01 - * Added ability to spawn character pets. [Valaris] - * Added show_mob_hp. [Valaris] - * @item/@item2 GM commands now work correctly with name begining by a number. [Yor] - * @spawn/@monster2 GM commands authorise spawn of guardians. [Yor] - * Fixed so guardians may be spawned outside of castles. [Valaris] - * Fixed/Improved @spawn/@monster2 GM command. [Yor] - @spawn/@monster2 GM command: you can use space in the desired name now (use "") [Yor] - * Added TODO 26 and 27. [Yor] - * Guardians if owned by a guild will display guild name and castle on name request. [Valaris] - * Added checks for null blocks in mapforeachin functions. [Valaris] - * Addition of a GM level 99 account for test of GM commands. [Yor] - * Creation of a default structure for GM levels (sub-gm, gm, admin, etc.). [Yor] - * Improved @time GM command (better code and display more informations). [Yor] - * Added informations about game time in @time command [Yor] - * Added @time command to have server time [Yor] - * Fix night at start if administrator want night and there is no duration for night and day [Yor] - * Fix for NPCs / mobs not showing up when chars walk around [Kalaspuff] - * Begin @unban/@unblock GM command (structure done). [Yor] - * It's now possible to disable Night or Day (set to 0 in battle.conf). [Yor] - * @day/@night: when already the desired cycle, display a message. [Yor] - * Fixed overlapping Ice-Cream Maker NPC, duplicated NPCs, restored duplicated Akaru's MrSmile [Lupus] - -07/31 - * Terminated: night/day cycles. [Yor] - * When a state comes back to normal, player stay in night if it's night. [Yor] - * Started to add management of day/night: [Yor] - creation of 3 parameters in battle.conf - TODO: usage of these parameters (later). - * added line '// $Id: Changelog.txt,v 1.65 2004/09/29 17:31:42 kalaspuff Exp $' in all code source files to avoid overwrite in CVS. [Yor] - * Fixed number/quantity in @item command. [Yor] - * Fixed when night and disconnect/reconnect, it's night. [Yor] - * Removed extension to check a map in char.c (less tests). [Yor] - * Added savepoint coordonates (x,y) if player is set to a new map (char.c). [Yor] - * Added izlude to check major cities. [Yor] - * Began adding developer mobs. [Valaris] - * Added dyes and fixed client crashes with player mobs. [Valaris] - -07/30 - * Added temp fix for "nullpo player not attached" error message (script.c script_rid2sd) [Lupus] - * Added checks for major cities in afm format. [Valaris] - * Added preliminary AFM(Advanced Fusion Map) support. Actual map-reading works, but rest of server needs to recognize them. - Thanks to alexkreuz [Valaris] - * Changed Map and NPC loading display. [Valaris] - * Removed unneeded 'End' and duplicate 'end' script commands. [Valaris] - * Added 'language ' command in ladmin (perl) to change language of displaying. [Yor] - * Fixed atcommand_gm_only parameter: [Yor] - 0: you can define level command '0' for normal players (gm level 0) - 1: even you define a level 0 for a command, normal player can not use it. Only GM level 1 or more can use command (if command level is possible for this GM) - Note: This parameter is not like atcommand_for_all (this parameter doesn't exist actually) . - * Fixed Kafras (Cart Service for Super Novice), some warps in Morroc, Aldebaran. [Lupus] - Added official shop into St.Abbey. [Lupus] - Added quests: Lutie Town Hat Quest by TonyMan, 23 new hats custom quest. [Lupus] - Fixed jobchange.txt. [Lupus] - Improved pvp.txt. [Lupus] - Rearranged and updated! (now in 2 variants) mapflags. [Lupus] - Updated map_athena.conf [Lupus] - * Fixed: battle_athena config's atcommand_gm_only; yes was no and vice versa [Kalaspuff] - -07/29 - * Added 'language ' command in ladmin.c to change language of displaying. [Yor] - * Re-added guardians don't attack guild members, someone must have removed it by accident. [Valaris] - * Restore correct displaying (LAN/WAN) previous was good :) (sorry... prabably tiredness). [Yor] - * Fixed some errors in novice.txt script. [Yor] - * Kashy's script fixes. [Valaris] - * Displaying of correct information in LAN/WAN test (displaying was reversed) in char.c [Yor] - * Creation of a char_unblocked directory (char directory is blocked) [Yor] - - modification of makefile - * Added a note in TODO 14: encrypted password - problem with client versions [Yor] - ----------eAthena 1.0.0 RC2 TXT--------- -07/28 - * Added metaller to equipped mobs. [Valaris] - * Added a note in TODO 19 [Yor] - * REMOVED last changelog: cvs server: [14:29:29] waiting for cvs's lock in /usr/cvsroot/athena/src/char [Yor] - * Displaying of correct information in LAN/WAN test (displaying was reversed) in char.c [Yor] - * Added "OMG" emotion to weapon/armor breaking. [Valaris] - * Removed space in a pointer in mob.c. [Valaris] - * Restored previous version of lan management in login.c, because: [Yor] - - check test was incorrect (no mask for controled ip). - - in check test, we recalculate every time the subnetwork (loss of time). - - impossible to have a name definition for the sub-network (some network administrator use a name to define the sub-network). - - no more default configuration of sub-network. - - possible errors in the reading function of the lan file. - - no more logs about sub-network. - - BUT, conserved: - new default name for lan file - - color for displaying of LAN/WAN - * Removed some memsets from chrif.c that caused segfaults. [Valaris] - * Added fix for anklesnare and spiderweb. [Valaris] - * Added Kashy's Lan Support code. [Valaris] - * Removed variables and assignment used by prevent_multi_login. [Valaris] - * Removed prevent_multi_login. (many problems reported with it) [Valaris] - * Fixed armor breaking. Was being broken when pc was attacking instead of when being attacked. [Valaris] - * Fixed checkcart, checkfalcon, checkriding (they didn't return any value) in script.c [Lupus] - * Fixed breeder.txt renter.npc, kafras NPC (added correct class check, added correct checkcart, checkfalcon, checkriding) [Lupus] - * Fixed Kafra functions_kafras.txt NPC (added correct checkcart, fixed cmall cart giving bug) [Lupus] - * Fixed Kafra functions_kafras.txt NPC (fixed Kafra Pass exploit) [Kobra_k88] - * Fixed Hunter.txt coords of the Guild entrance warp [Lupus] - -07/27 - * Improved check command in ladmin.c [Yor] - * Added map_id check in map_foreachinarea, to prevent eventual crashes [Kalaspuff] - * Added @enablenpc and @disablenpc in help files [Yor] - * Fixed Thunder Storm range (thanks midas) [Kalaspuff] - * Added Anthell NPC trigger in Morroc.txt warps/town [Lupus] - * Added missing Warps for Job Quests of Swordman, Hunter and Thief in jobquests.txt [Lupus] - * Updated atcommand_conf, missing GM-level for @enablenpc and @disablenpc [Yor] - * Removed possible overflow error in @enablenpc and @disablenpc [Yor] - * Updated atcommand_conf, missing GM-level for haircolor [Kalaspuff] - * Improved best job test in novice.txt [Yor] - * Improved @go command: [Yor] - - give list of cities if no value - - added start point (to welcome newbies) - - give possibilities to use city names (@go geffen): at least 3 characters, and some writing errors are tested - * Replaced every Job Quest Script (excluding Assassin, 2-2 and 2-2-X ). Now all 2-1 Jobs have big quests. [Kobra_k88] - * Replaced all Skill Quests (Added Sand Attack Skill Quest). [Kobra_k88] - * Added Legendary Swords quest. [Kobra_k88] - * Replaced 6 towns with new scripts: Izlude, Prontera, Morocc, Geffen, Alberta, Al De Baran. Splitted all towns quests into files. [Kobra_k88] - * Splitted and optimized Kafras & Guides. [Kobra_k88] - * Implemented Kafra Pass! [Kobra_k88] - * Removed free Breeders (replaced by the correct ones). [Kobra_k88] - * Placed all Sign Posts/Signs into a single file. [Lupus] - * Files arrangement, additional warps/scripts correction. Fixed several scripts (NPC overlapping, bad sprites, etc). [Lupus] - -07/26 - * More accurate pvp point system. It skips ranks, needs more work. [Valaris] - * Fixed crash in executioner card code. [Valaris] - * Fixed mob respawn after death bug. [Valaris] - * Fixed exp problem caused by bounds checking. [Valaris] - * Fixed pvp rank so only one person may be rank 1. [Valaris] - * Any time a person is on a pvp map, the rank will calculate, preventing bad rank packets from being sent. [Valaris] - * Added Job Agencies for Training Ground (novice.txt). [Yor] - * PVP respawn client crash fix. [Valaris] - * Fixed small error in kafra.txt [Syrus22] - * Finished adding special equipped mobs. [Valaris] - * Added 2 living statues behind the NPC 'Monster Master'. [Yor] - * Removed infinite possibilities to have items from helper (novice.txt, new_1-4.gat,60,149). [Yor] - * Added 2 living statues behind the NPC 'Monster Expert'. [Yor] - * Improved a little 1st course of novice training. [Yor] - -07/25 - * Allow mobs to be equipped with pet armor. mob_avail and clone mobs need to be created. [Valaris] - * Removed [AppleGirl]'s armor breaking code. [Valaris] - * Commented out data_dir. [Valaris] - * Finished exp bounds checking. [valaris] - * Added negative value checks to clif_updatestatus. [Valaris] - * Added exp bounds checking for those rediculously high rate servers. [Valaris] - * Added bounds checking to the @zeny and @charzeny commands. [Valaris] - * Improved and corrected some errors 1st course of novice training. [Yor] - * Removed no guild check for Guardians. Guardians SHOULD attack people with no guild. [Syrus22] - * Fixed Alliance check in mob.c [Syrus22] - * Added armor breaking to normal battle (crits will double the chance) [Valaris] - * Fixed mistake in map.c causing compile errors. [Syrus22] - * Fixed backstab bow penalty option. [Syrus22] - * Fixed Alliance check in battle.c for emp/guardian damage. [Syrus22] - -07/24 - * Added backstab bow penalty option [Akaru] - * Fixed OnGuardianDied events on prontera castles 3 to 5. [Valaris] - * Another vending fix. [Valaris] - * Fixed bugs in npc headers caused by someone using spaces and not tabs. (kafra.txt, guide.txt, yuno.txt) [Valaris] - * Fixed a vending bug. [Valaris] - ----------eAthena 1.0.0 RC1 TXT--------- -07/22 - * Fixed numerous startup errors in aldebaron castles and one geffen castle. [Valaris] - * Full Guild Wars Script Complete!!! [Akaru] - * Fixed rice ball item. [Valaris] - * Fixed problems with options and peco riding. [Valaris] - * Updated item_db with fix for Sleipnir and more translations. [Akaru] - * Translated item_violetbox, mob_poring, mob_branch, mob_boss. Fixed wizard.txt (wrong item id), headgeatquest.txt(added Zeny check) [Lupus] - -07/21 - * Updated refine.txt. Added optional features and optimized the file. [Syrus22] - * Evened out the # of columns in mob_db, filled in some blanks. [Valaris] - * Undid compilation errors caused by Akaru's removal of nullpo.o from map-server compile [Valaris] - -07/20 - * Removed Ghostring from gef_fild13.gat [rg] - -07/19 - * Fixed Graffiti [Valaris] - * Zeny Bug In Vending Fixed [Darkchild] - -07/18 - * Added a check about level of at_command when reading the file [Yor] - * Updated /help and conf/help.txt [Yor] - * Added @nuke command in conf/help.txt [Yor] - * More WoE Castles Done [Hikaru] - * Changed: inter.txt->inter.log in log directory [Yor] - * Added some char_log when character can not be created (invalid value, invalid name, etc...) [Yor] - * Changed: char.txt->char.log in log directory [Yor] - * Update features.html/changlog.html [Yor] - * Fixed compilationissue on FreeBSD [Kalaspuff] - -07/16 - * Remove limit for kami/kamib ladmin command. [Yor] - * Fixed crash in weddingtxt.txt where it was checking an invalid equip index. [Valaris] - * Added some TODO for next version. [Yor] - -07/15 - * Changed: login.txt->login.log in log directory [Yor] - * added system to choice authorised ip for remote administration [Yor] - * Added listBan/listOk commands in ladmin's. [Yor] - * Speed up a little search_mapserver function. [Yor] - * Init map strings of each servers when map-server send informations. [Yor] - * Added some TODO for next version. [Yor] - -07/14 - * Fixed another lockup with multi_level_up [Valaris] - * Added kami(yellow)/kamib(blue) commands in ladmin (terminated). [Yor] - * Fixed name of ladmin_athena.conf. [Yor] - * Fixed mvp item reading. [Valaris/Syrus22] - * Added new move packet in map (ver.13jully04) [Yor] - * Added new auth packet in map (ver.13jully04) [Yor] - * Added kami/kamib commands in ladmin. not terminated: to do: login->char [Yor] - * Updated Some Npcs [Darkchild] - * Added Gefenia Warps [Darkchild] - * Added Berzebub Quest [Darkchild] - * Removed random alchemist marine sphere code, until some other system is worked out. [Valaris] - * Fixed infinite loop caused by turning multi level off. [Valaris] - * Added display id the char-server is freezed. [Yor] - * Added debug printf about the max_connect_user in char-server. [Yor] - * Added banadd command in ladmin.c [Yor] - * Removed duplicate check in chrif.c. [Yor] - -07/13 - * Fixed GM_level code in map-server. [Yor] - problem is in the hash system of the db -> use simple db until we found solution. - note: for this db, it's not necessary to use a db system (little db, 2 values: key, value) - * Improved GM_level code in map-srv, but not solve the problem. [Yor] - * Fixed error of 'return' without value in chrif_parse (chrif.c). [Yor] - * Added character name, account id and gm level on console in map-server when auth is accepted. [Yor] - * Added gm_level of the account on console in char-server when auth is accepted. [Yor] - * Added gm_level of the account on console in login-server when auth is accepted. [Yor] - * Added timeadd command in ladmin.c [Yor] - * Added help for each command (help ) in ladmin (perl and c). [Yor] - * Fixed global message (normal speak) name spoof exploit. [Valaris] - * Added timeset command in ladmin.c [Yor] - * Added banset command in ladmin.c [Yor] - * Added vending and trading dupe fixes, thanks to Kinko and Kazzy [AppleGirl] - * Added multi_level_up command to battle_athena and commandline. [Valaris] - Turning it off will allow a player to only level up once from a monster. - * Added: explanations of ladmin_athena.conf keys in conf_ref.txt. [Yor] - * Fixed: init mmo_map_server structure (to 0) in char-server. [Yor] - * Added Gefenia Maps [Darkchild] - * Added @nuke command do to user request. [Valaris] - * Removed nick spoof fix code for now, it broke chat. [Valaris] - * Added some code for @nuke command. [Valaris] - * Finished adding battle_athena options to command line. Every option in battle_athena.conf - can now be passed directly through the command prompt. [Valaris] - -07/12 - * Added many battle_athena options to command line arguments. [Valaris] - * Allow battle_config_switch to be used globally in map-server. [Valaris] - * Rewrote map-server command-line code. Will now begin implemented nice commands for map-server. [Valaris] - * Added BETA version of ladmin in C. [Yor] - * Added new packet structure of authentification and move - automatic detection. [Yor] - * Added /item command. It is same as /monster. Both commands will search for mobid first, if not found will give item. [Valaris] - * Fixed a displaying error in state command (perl ladmin). [Yor] - * Added /monster command. Syntax is /monster . [Valaris] - * Fixed chat spoofing in global messages. [Valaris] - * Prevent nick spoofing in whispers. [Valaris] - * Added check about lenght of packet 0x72 for new client version [Yor] - * Added Pet Equip Items Quest Npc - * Added Pet Taming Items Quest Npc - * Added Slotted Sunglasses Quest Npc - * Added pet_equip_required option for pet skills. [Valaris] - * Changed: create a sub-function for help command in ladmin (perl). [Yor] - -07/11 - * Added Petit pet skill. [Valaris] - * Added some code for Petite Heaven Drive, still does not work, but doesn't crash. [Valaris] - * Fixed dokebi and baby desert wolf pet skills. [Valaris] - * Added Orc Warrior, Hunter Fly, Poison Spore, Baby Desert Wolf, Baphomet Jr, and Dokebi pet skills. [Valaris] - * Added script command petskillattack.[Valaris] - * Fixed search command in ldamin (perl) ignore sensitive case now. [Yor] - * Fixed default to 0 for save_unknown_packets configuration in login. [Yor] - * Fixed the warnings about implicit declarations. [Kalaspuff] - * Added @guildrecall/@partyrecall commands. [Yor] - * Added Isis pet skill. [Valaris] - * Added petmag script command for magnificat. [Valaris] - -07/10 - * Added Banker NPC because alot of users wanted one. [Syrus22] - -07/09 - * Added Sohee pet skill. [Valaris] - * Added petheal command. [Valaris] - * Added Smokie pet skill. [Valaris] - * Added bonus bPerfectHide for Smokie pet skill. [Valaris] - * Added Spore pet skill. [Valaris] - * Created petrecovery script command. [Valaris] - * Added Poring, Drops, Poporing, and Yoyo loot skills. [Valaris] - * Added petloot script command for pet looting. [Valaris] - * Removed pet_loot config settings. [Valaris] - * If pk_mode is on, a message will show up in map-server. [Valaris] - * Fixed pk_mode extra experience and drops so will occur if monsters is 20 levels or higher than player. [Valaris] - * Fixed @killmonster crash caused by implementation of pk_mode. [Valaris] - * Finished setting up pk_mode, should be 100% complete now. [Valaris] - * Added nopvp.txt for pk_mode. [Valaris] - * Prevent novice engagement in pk_mode. [Valaris] - * Fixed up and changed the exp penalty system. [Valaris] - * Pk_mode will now give double exp loss if killed by player. [Valaris] - * Updated conf/help with new commands [Yor] - * Removed more pvp timer stuff from pk_mode [Valaris] - * Increase drop rates +25% if over level 20 on pk_mode. [Valaris] - * Changed +25% exp increase on pk_mode to 15%. [Valaris] - -07/08 - * Disabled pvp rank and timer if pk_mode is on. [Valaris] - * All maps made pvp if pk_mode is on. [Valaris] - * pk_mode additional 25% exp given over level 20 [Valaris] - * Disable @pvpon and @pvpoff commands if pk_mode is on. [Valaris] - * Added pk_mode option in battle_athena.conf (not yet implemented) [Valaris] - * Reworked prevent_multi_login, should work perfectly now. [Valaris] - * Removed need for eof=2 for prevent multilogin, will now just delete the blocks containing both sessions. [Valaris] - * Added map-servers anti-freezed connection in char-server. [Yor] - * Added char-servers anti-freezed connection in login-server. [Yor] - * Fixed spy commands so that inputting the same id/name turns off the command. [Syrus22] - * Created @partyspy command. [Syrus22] - * Renamed search_guildname function to conform with normal naming standards in guild.c. [Syrus22] - * Created @whomap/@whomap2/@whomap3 commands to show online players on a specifical map. [Yor] - * Updated and Shrunk the Kafra Script. [Syrus22] - * Create @reloadgmdb gm command. [Yor] - -07/07 - (Dated On Aegis Website) - *--Released 1.0.0 RC3--* - * Fixed crashed with prevent_multi_login. [Valaris] - * Allow infinited local logins if prevent multi_login is on. [Valaris] - * If prevent_multi_login is on, it will disconnect both clients on the same ip. [Valaris] - * Prevent_multi_login will now list the character names of both accounts when logged out, and give a message. [Valaris] - * added updated const.txt and pet_db.txt [Valaris] - * GM accounts/level updating without restarting completed (by reloadgm ladmin command). [Yor] - * Removed gm_account_filename definition from map.conf. [Yor] - * Updated GM level by reloadGM ladmin command. [Yor] - * Added a packet between char and map to send GM accounts and their level. [Yor] - * Added a GM minimum level option to display 'GM' in online files. [Yor] - * Added a warning when a GM account is defined twice in the file. [Yor] - * Check for castle before guardian searches for emblem. [Valaris] - * Prevent stealing from treasure boxes. [Valaris] - * Enable mounted classes to use pedestrian counterpart's items. [Valaris] - * Change so petskillbonus will only update stats(client-side) if need be to prevent errors. [Valaris] - * Fixed crash with putting pets with skills back into egg. [Valaris] - * Added Steel ChonChon, Rocker, and Deviruchi pet skills. [Valaris] - * Added bAllStats(SP_ALL_STATS), bAgiVit(SP_AGI_VIT), bAgiDexStr(SP_AGI_DEX_STR) bonuses for pet skills. [Valaris] - * Added ChonChon, Lunatic, Picky, and Savage Babe pet skills to pet_db.txt. [Valaris] - * Added petskillbonus command for pet skills. Added pet_skill_bonus functions in pet.c. Made pointers for pet skills. [Valaris] - * Added 'GM' display option for online files [Yor] - * Improved GM accounts file reading in login-server [Yor] - -07/06 - * Changed heal dog in prontera to a poring. [Valaris] - * NPCs with mob sprites can now be used in scripts. [Valaris] - * Removed sd->brokencounter. Made getbrokenid more scripter friendly. Updated refine.txt getbrokenid commands. [Valaris] - * Mounted classes will now use equipment of their pedestrian counterpart. [Valaris] - * Improved management of GM account structure in char-server. [Yor] - * Added packet betwen login to char to send GM accounts value. [Yor] - * Added reloadGM command in ladmin to reload GM accounts file without stop the login-server. [Yor] - * Added listGM/lsGM command in ladmin to list only GM. [Yor] - * Correct an error in loop of char_divorce function (incorrect variable). [Yor] - * Added some comments. [Yor] - * Added a check on start_point.map when configuration is readed. [Yor] - * Modified final message of login log at end of login-server. [Yor] - -07/05 - * Flamelauncher,frostweapon,lightningloader,seismicweapon, and enchant poison now check to make sure target's weapon is not already enchanted. [Valaris] - * If sage breaks another person's weapon due to enchant failure, it will tell caster. [Valaris] - * Modified venom splasher to hopefully stop crashes caused by spamming. [Valaris] - * SA_FLAMELAUNCHER,SA_FROSTWEAPON,SA_LIGHTNINGLOADER,SA_SEISMICWEAPON now check to make sure target is holding a weapon. [Valaris] - * SA_FLAMELAUNCHER,SA_FROSTWEAPON,SA_LIGHTNINGLOADER,SA_SEISMICWEAPON now will break target's weapon on failure (if one - is being held and caster met requirements) [Valaris] - * Prevent unidentified and broken items from being sold. [Valaris] - * Added buildin_repair for equipment repair npc. [Valaris] - * Added repair npc to forgery in prontera. (refine.txt) [Valaris] - * Added sd->brokencounter and buildin_getbrokenid for item repair npc. [Valaris] - * Corrected some item names [rg] - * Fixed so @repairall success message and effect will only display once. [Valaris] - * Added "No items needed to be repaired" message and added forge success effect to @repairall. [Valaris] - * Added @repairall command. [Valaris] - * Added equipment_breaking option, changed weapon_break_chance to weapon_break_rate (changed to %) [Valaris] - * Crit's will now double weapon breaking chance if turned on. [Valaris] - * Added missing commands in atcommand_athena.conf. [Yor] - * Added @warpto command (same @jumpto). [Yor] - * Added increase in chance to break weapon if using powerthrust. [Valaris] - * Added weapon_break_chance to battle_athena.conf. [Valaris] - * Modified multiple login from one ip prevention(and remove gm bypass). [Valaris] - * Broken weapons will now have their description names in red. [Valaris] - * Speed up characters saving [Yor] - * Improved logs when a character isn't readed [Yor] - -07/04 - * Completed Prontera guild castles [Akaru] - * break_weapon_chance now works, but broken weapon will not be displayed any differently than a normal weapon. - Also does not yet affect a dual dagger assassin's 2nd weapon. No way to repair yet, and no skills/stats affect breaking chances. [Valaris] - * Update int_storage to include broken column on all items (updates from old version) [Valaris] - * Added @guildspy command. [Syrus22] - * Added weapon_break_chance. (Not implemented yet) [Valaris] - * Added break column for items in athena.txt (will upgrade older versions automatically) [Valaris] - * Changed default required GM levels for GM commands (effective if corresponding directive(s) in /conf/atcommand_athena.conf is/are missing) to 1 [rg] - * Added packet_table_en.txt in doc folder. Has some translations of the client_packet.txt. [Valaris] - * Prevent @monster and @spawn of guardians/emperium. [Valaris] - * Changed killmonster so it will not destroy guardians. [Valaris] - * Added prevent_multi_login in battle_athena.conf to disable multiple logins from same ip (ignores gms, and will - display ip of offending ip if turned on) [Valaris] - * Added checks on player trading to prevent possible exploits. [Valaris] - * Make sure cart is on before vending. [Valaris] - * Cleaned up vending exploit fixes. Now checks to make sure not vending more than max items per skill level. [Valaris] - -07/03 - * Prevent use of potion pitcher on oneself, fixed potion pitcher so can be used on other targets. [Valaris] - * Fixed the damage code for Falcon Assault, so its not totally useless. [?] - * Update peco riders for people upgrading athena, fixed bug in unmounting pecos. [Valaris] - * Removed option 32 from @option, added @mountpeco command. [?] - * Removing peco will revert to proper job level, fixed so jobchanging from peco status to peco user without peco status, - will update job to peco status. (ie going from Mounted crusader to Unmounted knight, will jobchange to mounted knight) [Valaris] - * Fixed so Peco mounting will not reset job level. Set to remove peco status if jobchanging to a class that does not use them. [Valaris] - * Peco mounting will now jobchange accordingly. [Valaris] - * Added checkfalcon and checkriding script commands. [Valaris] - * Added checkcart script command (since was already being used in scripts) [Valaris] - * Re-added unix fd_setsize definitions, makefile will now pass -DFD_SETSIZE=4096 only for windows compiles. - Tested new implementation of using -DFD_SETSIZE=4096 in makefile on windows box, and got past 64 connections even. [Valaris] - * Improved messages between servers about connections. [Yor] - * Improved pc_resetlvl, fixed the bug about options being left. [?] - -07/02 - * Added optional match_test in @who/who2/who3 commands (no sensitive case) [Yor] - * If there is no map-server, send right message to client (char-server) [Yor] - * Improved counter of users (char-server) [Yor] - * Improved save of characters (char-server) [Yor] - * Improved sorting of account before save (login-server) [Yor] - * Improved map search at selection of a character (char-server) [Yor] - -07/01 - * Removed FD_SETSIZE definitions from socket.h, added -DFD_SETSIZE=4096 argument to makefiles. [Valaris] - * Changed exploit fix in chrif.c [Valaris] - * Added assassin mask view_id in item_db [Valaris] - * Added a parameter to authorise minimum GM level at connection (login) [Yor] - * Fixed crash caused by making raw connection to map-server. [Valaris] - * Corrected a possible error at check of online players [Yor] - * Improved characters names control/check [Yor] - * Improved save/load of REG2 strings and values (login) [Yor] - * When there is no char-server, login-server sends proper message instead of a void list of servers [Yor] - -06/30 - * Fixed a crash when used @charmodel,@charstpoint,@charskpoint and - @charzeny with the wrong name [Kalaspuff] - * Added possibilities for switchs in battle.conf (add some foreign language) [Yor] - * Protected char-server again disconnection of login-server [Yor] - * Added possible protection against packet exploits in chrif.c. [Valaris] - * Login-server: Added an option for the format of the date (log, etc...) [Yor] - Improved some little code. - Added log for char-server packets. - * Correction of prtg_cas03.txt that crash server AT START! [Yor] - * Added functions of mapflag noskill [Kalaspuff] - -06/29 - (Dated On Aegis Website) - *--Released 1.0.0 RC2--* - -06/28 - * Added monsters_ignore_gm option. Monster won't attack GMs if turned on unless attacked and within 1 cell. [Valaris] - * Added drops_by_luk option in battle_athena.conf. Anything higher than 0 will turn this option on, and act as a mutiplier. - Example : Setting of 10 with 50 luk would add 5 to the drop rate. So say a card has a drop rate of 2, it would become 7. [Valaris] - * Fixed range and removed skill failed message from Venom Splasher, also moved some of it's code around. [Valaris] - * When a player arrive on map-server, time limit of its account is displayed if not unlimited [Yor] - * Fixed problem where warp portals broke in npc.c [Valaris] - * Updated atcommand_heal so it works like it should [Kalaspuff] - -06/27 - * Changed Venom Splasher so it will increase damage based on level of Poison React (had it set so the player had to be - using it, but it turns out it doesn't need to be) [Valaris] - * Venom Splasher now works except for the counter part. Damage is instantly dealt if skill is successful. [Valaris] - * Improved @item command to make correctly pet eggs [Yor] - * Updated Chase Walk so you can't attack while you have it casted [?] - * Removed un-needed code for graffiti from clif.c [Valaris] - * Added @ban command (to ban a player for a limited time) [Yor] - * Added @charblock command (you have been blocked by GM team) [Yor] - * Added the mapflag nowarpto [Kalaspuff] - * Updated the function of nowarp [Kalaspuff] - -06/26 - * When a player is banned (or with a state != 0), he is disconnected [Yor] - * When sex is changed, skills of other sex are reseted (and skill points increased of the same number) [Yor] - * To avoid problem with change sex and equipement, changed sex character is unequipped of all equipment [Yor] - -06/25 - * Added @charchangesex GM command [Yor] - * Changed: Changesex is now done after that the login-server has confirmed the change [Yor]. - becuase sex is saved in account file. - -06/24 - * Added new classes in change sex script command (buildin_changesex). [Yor] - * Translated pet_db.txt again [Valaris] - * Initial implementation of Venom Splasher. Runs checks on target poison status and whether or not hp is less then 2/3. - Will display skill failed if checks do not pass. Shows effect when successful. [Valaris] - * Added administration system to change final date of a banishment. [Yor] - * Added information about banishment in admin packets about an account. [Yor] - * Updated Chase Walk so it cancels when recasted to fix it. [?] - * Initial implementation for Chase Walk skill for Stalker Class [?] - * When an account is banned, message_error_7 is not more modified [Yor]. - -06/23 - (Dated On Aegis Website) - *--Released 1.0.0 RC1--* - * Added bRandomAttackIncrease for Executioner card. Chance stacks, attack does not. [Valaris] - * Fixed magic_damage_return so it will actually work (for Maya card). [Valaris] - * Add a ban timestamp in the structure of the accounts. Management not yet make [Yor] - -06/22 - * Don't send a message when it's void (packet 0x8e) - client doesn't display it [Yor]. - * Add a refresh time parameter for the html online file (refresh time in the explorer) [Yor]. - * Create a job_name function in atcommand to have the name of the job (suppress repeated code) [Yor]. - * Added New City: Jawaii - * Fix free memory of online structure at end of char-server [Yor]. - * Remove possible duplicated online players (multiple map-servers) [Yor]. - * Add examples in state command (ladmin) [Yor]. - * Use a function to display warnings in login-server to avoid duplicated messages with import option [Yor]. - * Iinitial implementation for magicdamagereturn for Maya Card [?] - * skill_out_range_consume - If it is set 'no' the skill will still be cast (like real servers). - If it is set to yes, skill will fail and sp and items required will be lost. [Valaris] - -06/21 - * Updated Sacrifice skill code to be more flexible for user usage [?] - * Changed SC_ATTACKPOTION and SC_MATTACKPOTION to SC_ATKPOT and SC_MATKPOT, also added it in item_db.txt [?] - * Guild Territory will now display the # of castles owned or "None Taken". [Valaris] - * Changed SC_ATTACKPOTION and SC_MATTACKPOTION so the increase can be specified in itemdb.txt. - Example : sc_start SC_AtkPot,18,30; (+30 atk for 30 seconds) [Valaris] - * Added SC_ATTACKPOTION and SC_MATTACKPOTION for +30 atk for specified time period (need to get the correct id's yet, - right now giving wrong icons and wrong message). Added entries in const.txt, need more info to complete these. [Valaris] - * Fixed so players will always spawn with guild emblem if one is needed. [Valaris] - * Reduce number of tests in atcommand_character_stats_all (@charstatsall). [Yor] - * Fix memory management for online players list. [Yor] - * Party HP now updates instantly on change. [Valaris] - * Fixed crash when non-guild members are in the area of guardians in attack mode.(Will ignore them) [Valaris] - * A higher level GM is not displayed by who/who2/who3 if he uses HIDEGM. [Yor] - * When a GM with HIDEGM relogs, he is always HIDEGM (only GM). [Yor] - * Improve presentation of online.txt file. [Yor] - * In /npc/quests/magicalhatquest, corrected checking for and deletion of Mage Hat instead of Wizard Hat. [rg] - -06/20 - * Fixed problem with guardian emblems disappearing [Valaris] - * If a GM use GM HIDE, he is not counted in the number of players [Yor] - * Setup prtg_cas01 to load guardians on server startup and to spawn them when purchased. Also switched from GuardianDied - to OnGuardianDied (other way wasn't working). Changed so guardians won't be killed on agitend. [Valaris] - * Guardians cannot attack and cannot be hurt during non woe time. [Valaris] - * Switched checking of castle.txt format so it won't wipe guardian hp everytime it loads. [Valaris] - * Made it so if guardians were installed in old db, that it will set guardians to full hp based on defense and class. [Valaris] - * Autosave will save guardian HP data. [Valaris] - * Castle.txt visibleG flags will be set when guardians are killed. [Valaris] - * Moved emperium defense upgrade to mob.c. [Valaris] - * Removed guardian hp saving from agitend. [Valaris] - * Added option to choose which columns are displayed in the online files [Yor] - * Added option to choose how to sort online players in the online files [Yor] - * Correction of a new error on guild (from [Valaris]). Old castle.txt files couldn't be readed. [Yor] - * Kafra Points And Rewards fixed [Darkchild] - * Kafra file made a lot smaller with DoEvents [Darkchild] - * Fixed lotsa bugs in Kafra's [Darkchild] - * Initial implementation for paladin's skill sacrifice [?] - * Loading/Saving of guardian hp (loads on agitstart, saves on agitend) [Valaris] - * Added so guardian hp will change accordingly. Moved the guardian defense increase to mob.c [Valaris] - * Implemented guardian and guardianinfo script commands [Valaris] - -06/19 - * Added Ghp0-7 into castle database [Valaris] - * Added configuration parameters to choose online files filename [Yor] - * Added online files (txt and html) [Yor] - * Added choose of authorised letters/symbols for characters names [Yor] - * Added 3 new Dragon Boat Festival monsters with temporary stats to mob_db [Akaru] - * Translated more of item_db [Akaru] - * Added correct effects for Dragon Boat Festival items [Akaru] - * Solve problem about the change of MAX_GUILDPOSITION by [Valaris] when we load an old guild.txt file. [Yor] - * Improve allow/deny configuration. Write warnings if necessary. [Yor] - -06/18 - * Add heal_payment.txt as an alternative to heal.txt. [Yor] - * Sex change (char.C): Correct error in jobchange. Disconnect player if connected. [Yor] - * Sex change/account deletion: Change authentification to avoid that player comes back on char-server within the 5 secondes before disconnection. [Yor] - * Save configuration of login-server in log file at start. [Yor] - -06/17 - * Added fritz's vending exploit fixes. [Valaris] - * Increased max guild castle size to accomodate for novice guild castles. [Valaris] - * Fixed investment in prontera castle 1. [Valaris] - * Implemented of showing guardian hp on guardian investment in prontera castle 1 (factors in defense investment) [Valaris] - * Added strmobinfo script command. Syntax is strmobinfo(x,y). 'y' is the mob's id. x will show different values. - 1=english name, 2=jap name, 3=level, 4=max_hp, 5=max_sp,6=base_exp,7=job_exp. [Valaris] - * Disable % and / for 1st symbol of commands (party chat symbol and standard ragnarok GM commands) [Yor] - -06/16 - * Added fully functional economy for Prontera Castle 2 Guild Wars script [Akaru] - * added fix for cross-class ensemble skills. [?] - * Increased max guild member limit to accomodate for +2 member increase per extension level - and increased max position to 56 to accomodate for all members. [Valaris] - * More of fov's fixes for atcommand.c, chrif.c, and clif.c. [Valaris] - * added fixes for class checking skills like bard & dancer skills and a priest skill. [?] - * updated skill_cast_db and skill_require_db.txt [?] - * changed int_guild.c added +4 for extension skill to match kRO [?] - * remote administration: add a command/packet to change sex of an account [Yor] - * Log detailled reason of refused connection in remote administration [Yor] - * Create a mmo_auth_tostr for accounts [Yor] - * Add a message when char-server is terminated [Yor] - * Save deleted accounts (administration deletion) in log file [Yor] - * Add a message when login-server is terminated [Yor] - -06/15 - * Added in fov's fixes for socket.c, atcommand.c, npc.c and skill.c [Valaris] - * Added a char_log function. Save unreadable characters in log instead of a specific file [Yor] - * Save invalid account lines in log file. Account will be never lost [Yor] - * Sort characters of same player with the slot number in the characters file [Yor] - -06/14 - * Fix errors in prtg_cas01, prtg_cas05 and MrSmile scripts [Akaru] - * Added fully functional economy for Prontera Castle 1 Guild Wars script [Akaru] - -06/13 - * If player is on map-server when the account is deleted, player is now disconnected [Yor] - * Correction of char deletion bug when account is deleted [Yor] - * Added Prontera Castle 5 guild wars script [Akaru] - * Added Prontera Castle 4 guild wars script [Akaru] - * Add checks about duplicated character ids and names [Yor] - * Don't save a reg of a character if its string is void [Yor] - * Read a character even if a reg string is void (don't suppress the char for that) [Yor] - * Save characters in account_id order [Yor] - * Save not readed characters in a file (char file name + "not_readed.txt") [Yor] - * Display line number when a character can not be readed [Yor] - * Initialise char_num! Display number of readed characters [Yor] - * Do right initialization of char_dat [Yor] - * Add red color for ERROR displays in char.c [Yor] - -06/12 - * Change 0 to '\0' for char in login.c. Add red color for ERROR displays [Yor] - * Optimised Mr. Smile NPC script [Akaru] - * Add a configuration in atcommand.conf to set the 1st character of ALL commands (Now, you can choose @, #, !..., any char that is not control character) [Yor] - * Optimised Prontera Castle 1 and 2 guild wars scripts [Akaru] - * Added Prontera Castle 3 guild wars script [Akaru] - * Changed Graffiti placement, will allow placement of one painting at a time (old one will be replaced). [Valaris] - * Graffiti displays to other plays and remains on map for set time period. [Valaris] - -06/11 - * Initial implementation of graffiti (does not change directions yet (vertical/upsidedown) and doesn't dissappear [Valaris] - * Add config_switch (0/1, yes/no, ...) for char-server configuration [Yor] - * Add a display when a player does a connection [Yor] - * Add a display when a remote administration does a connection [Yor] - -06/10 - * Improve compiling instructions for cygwin (socket.h) (depends of the cygwin version). [Yor] with help of [Lostsoul] - * Add parameters in login.conf to display or not parse information [Yor] - * Remove some repeated codes in ladmin / add example when error of command [Yor] - * Remove delete_session error in login.c (sorry) [Yor] - * Display correct message for char-server disconnection [Yor] - * Finish translation of ladmin [Yor] - * Fixed Various Npc Bugs [Darkchild] - * Added green colour for READY displays in char-server, login-server and map-server [Akaru] - -06/09 - * Add some comments in ladmin [Yor] - * Remove displaying of packet 0x2714 from login-server [Yor] - * Correct length of password send to login-server in char-server [Yor] - * Char-server/login-server: put default lan to 127.0.0.1 instead of any hasardous value [Yor] - * Change displaying of the title [Yor] - * Optimised twin towers script to use duplicate [Akaru] - * Edited to a more user friendly error message for invalid server communication password [Akaru] - * Updated the item_db for more item name consistencies [Akaru] - * Reverted training grounds back to new_1-?.gat maps. [Valaris] - * Added added more variety to sending packets to guild members (same map, same map w/out self, ect) [Valaris] - -06/08 - * Put a HOWTO in lan_support.conf. [Yor] - * Removed extra semicolons in char.c, map.c, and pc.c. [Valaris] - * Added missing } to clif_storageitemlist in clif.c and found a couple lines ending with 2 semicolons, removed them. [Valaris] - -06/07 - * Translated refine_db.txt. [Valaris] - * Negative vending fix. [Fritz] - * Correction of mktime parameters in ladmin + some translations [Yor]. - * Add some checks on login-server configuration parameters [Yor]. - -06/06 - * Fixed error in skill_tree.txt that would crash some people's servers when changing to Professor. [Valaris] - * Added admin_state directive for enabling and disabling remote administration, instead of testing whether admin_pass == "" [rg] - * Add title to the servers. [Yor] - * Add warnings about default password usage (administration and gm passwords). [Yor] - * Modify adduser.c for the default configuration. [Yor] - * Write the complete admin_packet.txt. [Yor] - * Champion NPC was looking for a priest instead of monk, changed to correct value. [Valaris] - * Small fixes in guide.txt, kafra.txt, and swordsman.txt pointed out by StiNKy. [Valaris] - * Begin splitting monsters.txt [Akaru] - * Removed obselete monster spawn files [Akaru] - * Complete Guild Wars for Prontera Castle 2 script done [Akaru] - * Fixed prevent_logout option. [Valaris] - -06/05 - * Implemented guild castle regen.(Stackable 2x for castle owners) [Valaris] - * Fixed player logout display on map-server console. [Valaris] - * Added atcommand_spawn_quantity_limit directive to /conf/battle_athena.conf [rg] - * Fixed noskill map flag [?] - * Complete information about login configuration in conf_ref.txt [Yor] - * Add possible configuration values on/off or yes/no in login-server [Yor] - * Guardians and emp will now get +2000 hp for every defense investment within a castle [Valaris] - * Changed the login server to reject all remote administration authentication if the admin_pass directive isn't set, and commented-out the admin_pass directive in /conf/login_athena.conf [rg] - * Changed /src/common/grfio.c so it doesn't try to read GRF files with no respective directive in /conf/grf-files.txt [rg] - * Changed so no one can spawn inside castles. [Valaris] - * Updated item_db with more consistant names, fixed some unknown_items [Akaru] - * Complete Guild Wars for Prontera Castle 1 script done [Akaru] - * Disabled guild breaking, alliance breaking, and alliance making during WoE. [Valaris] - * Will not default to prontera.gat if map-server is not connected. [Valaris] - * Warp players who are not in guild out of castles when WoE starts. [Valaris] - -06/04 - * Allies now do no damage to guardians or emperium. [Valaris] - * Prevent allies from being attacked by guardians. [Valaris] - * Optimized guardian emblem code. [Valaris] - * Fixed map-server crashing with spawning guardians in untaken castles. [Valaris] - * Guardian emblems will change if castle is taken, but client needs to refresh map. [Valaris] - * Fixed problem where guild emblem would vanish from guild info screen. [Valaris] - -06/03 - * Improve e-mails checks and LAN/WAN checks on char-server. [Yor]. - * Add some explanations in front of accounts file. [Yor] - * Set a non LAN configuration for basic configuration in lan_support.conf. Explain parameters. [Yor] - * add missing parameters of char_athena.conf, and explain them. [Yor] - * Restore default admin pass and gm pass of login_athena.conf, and add missing parameters. [Yor] - * fix missing include in char.c. [Yor] - * Translation of checkversion. Add some explanations in front of file. [Yor] - * Translation of getlogincount [Yor] - * Finish translation of new login.c [Yor] - * Implemented Guardian Emblems [Valaris] - -06/02 - * Added maximum_level option in battle_athena.conf [Valaris] - * Added maximum level cap to all the level up commands. [Valaris] - * Added "Deal has been cancelled" message to Fritz's input exploit fix. [Valaris] - -06/01 - * Fixed training ground npcs and warps, removed depreceated maps, using new ones. [Valaris] - -05/30 - * Small map-server crashing fix with Leo and Guide npcs in training ground [Valaris] - -05/29 - * Removed item_value_db.txt and all references to it [Valaris] - * Removed unused class_equip_db.txt [Valaris] - * Fixed stat and level reset bug where needed status points wouldnt reset unless relogged [Valaris] - * @monster will summon monster without an amount specified [Valaris] - -05/28 - * Added heal and usable item rate modifier [Valaris] - * Added pet equipment to equipment rate modifier [Valaris] - * Added option to turn alchemist summon experience and drops on and off [Valaris] - * Alchemist Marine Spheres now randomly explode [Valaris] - * Fixed bug where if certain items lowered max hp (4 mysteltain, and 1 eddga) below 0 - would loop to server max hp value. [Valaris] - -05/26 - * Added New Hats [Darkchild] - * Added New Monsters [Darkchild] -05/23 - * Added @charstatsall, views all characters (easy for money bug scaning etc! [Fritz] - * Max to input npc command, 0 is lowest, 99999999 is max, this to prevent money bugs! [Fritz] - -05/21 - (Dated On Aegis Website) - *--Released 0.5.2--* - -05/20 - (Dated On Aegis Website) - *--Released 0.5.1--* - * got dye working again [Darkchild/fritz] - -05/19 - (Dated On Aegis Website) - *--Released 0.5.0--* - -05/09 - * added Prontera Guild Castle 3 test guild wars test script [Akaru] - * modified Prontera Guild Castle 1 and 2 guild wars test script [Akaru] - * fixed several valkyrie jobchangers [Akaru] -05/08 - (Dated On Aegis Website) - *--Released 0.4.2--* - *--Released 0.4.1--* - * added Prontera Guild Castle 2 test guild wars test script [Akaru] - -05/07 (Dated On Aegis Website) - *--Released 0.4.0--* - -05/06 - * added Prontera Guild Castle 1 test guild wars test script [Akaru] -05/04 - * removed parses and added ENGLISH! [?] - -04/29 (Dated On Aegis Website) - *--Released 953 Delta--* - -04/28 (Dated On Aegis Website) (Whose Ideas Were These?) - *--Released 953 Gamma--* -04/27 - *--Released 951 Beta--* - * fixed @jobchange crash [credits to Mugendai, commited by Akaru] - -04/25 (Dated On Aegis Website) - *--Released 947 Alpha--* -04/23 - * added more Professor Skills and added checks [?] -04/10 - * added more upper skills from moonsoul's works [?] -02/12-04/10 - * CVS Down - Not Many changes could be made...* - -02/22 (Dated On Aegis Website) - *--Released 817--* - -02/12 - * added more mob skill conditions (friendstatuseq, mysyatuseq, friendhpltmaxrate) [RoVeRT] -02/06 - * dumped @skillall for @allskill [?] -02/05 - * fixed provoke so it doesnt work on undead [RoVeRT] - * added TyrNemesis^ card removal code and min/max settings [RoVeRT] -02/04 - * added start_zeny and party_level_range to char_athena.conf [RoVeRT] -02/03 - * Improved the prontera.gat map fallback. [Sara-chan] - * Improved the way guild emblems act when logging in. [Sara-chan] - * Undead-class armor, and Undead monster themselves will never be frozen [RoVeRT] - * fixed negative values for NPC to always be 0 -01/26 - * mob_warpslave correction [RoVeRT] -01/25 - * added poison hp reduction [AppleGirl] -01/20 - * added intimidate [RoVeRT] - * added mvp checks for some skills -01/17 - * added skill check for empelium attack and removed drops from NULL kills [RoVeRT] -01/16 - * added secondary effects for when characters with appropriate elemental armor - are within area of effect of sage spells SA_VOLCANO(atk up), SA_DELUGE(max hp up), - SA_VIOLENTGALE(flee up) [moonsoul] - * removeal of @randmon as it isnt needed [RoVeRT] -01/15 - * fixed auto spell so it works the prober way [RoVeRT] -01/12 - * added mob_warpslave [RoVeRT] - * added mob_warp to check noteleport mapflag -01/07 - * added OnCommand for NPC [RoVeRT] - * added new on death method for NPC spawned mobs [RoVeRT] - * added mobcount [RoVeRT] -01/06 - * fixed icon status for spear quicken [AppleGirl] - * added quoted name support for @monster [RoVeRT] -01/05 - * added indivudal support for card and equip drop rates [RoVeRT] -01/04 - * added TF_PICKSTONE and skill check condition for TF_THROWSTONE [AppleGirl] - * added updated cast_db.txt and fixed SA_VOLCANO, SA_DELUGE, - SA_VIOLENTGALE, and SA_LANDPROTECTOR GRAPHICS [AppleGirl] - * Fixed Effects of a few bard Skills. [AppleGirl] - * added option to stop logout for 10 seconds after taking a hit [RoVeRT] -01/03 - * added inet_ip support to char and map [RoVeRT] - * added checkcart, checkfalcon and checkriding npc commands -01/02 - * added new npc timer support that is independant of a player [RoVeRT] -12/31 - * Added @refineall [Mark] -12/30 - * added support for custom_item-db.txt with battle_athena.conf option [RoVeRT] - * fixed @charzeny bug - * translated help.txt to english anong with a few other files [RoVeRT] -12/29 - * added umbala maps to map_athena.conf [RoVeRT] -12/26 - * added Skill_range based on level, and partially working AutoGuard [Moonsoul] - * added Correction of Whip and Instrument Damage Again [Sara-Chan] -12/25 - * Spear Quicken Correct Graphics,Fixed Magnum Break (Which Fixes All Other - Splash skills), and Fixed Brandish Spear [AppleGirl] - * Updated Command For @SkillAll Added Atcommand_athena.conf [RoVeRT] -12/24 - * Added Side Effects for multiple skills for 2-2 classes [AppleGirl] -12/23 - * Added GM Command Called @Skillall [RoVeRT] - * @skillall to skill-up all your current skills [RoVeRT] - * @hide does hide you from all monsters [RoVeRT] - * fire wall limited to 5 per map [RoVeRT] - * to turn on PVP without @pvpon and to disable flywing search for mapflag [RoVeRT] - * no luck with @morph at this time yet [RoVeRT] - * splash attack added but still kinda buggy [RoVeRT] - * Added in Dancing and Song Playing for Bard and Dancer [AppleGirl] - * Added Skill Arrow Check For Archer Skills [AppleGirl] - * Added Skill Status Recovery [AppleGirl] - * Added Skill Bard and Dancer Skills Last Longer [AppleGirl] - * Added Skill Grimtooth does splash damage [AppleGirl] - * Added Skill Steal Fixed and Snatcher [AppleGirl] - * Added Skill SonicBlow only works with Katars Now [AppleGirl] -12/22 - * Added Skills Shield Boomerang, Shield Charge, and Defender [AppleGirl] +Date Added +11/13 + * Fixed map-server loading, doesn't require data\resnametable.txt anymore [Wizputer] + * Updated & Optimized TXT Login from FREYA. (need to do SQL now) [Codemaster] + * Removed compile warnings in intif.c. [Valaris] + * Fixed chrif_changesex and @changesex, now uses packet 0x3000. [MC Cameri] + * Updated some skills, credits to orn and midas. [celest] + - Magnum Break, Throw Stone, Sprinkle Sand, Magic Power, Memorise, Quagmire, + Spider Web, Reject Sword, assassin's Dodge, Demonbane, Divine Protection. + - Firewall, Quagmire, Fog Wall (100%), Marionette Control (30%), Sandman, + Claymore Trap + - Adjusted some mob skills for mod support. + * Fixed weight increase when riding. [celest] + +11/12 + * added folder: /save-tmpl, removed folder /save + * battle_athena.conf: Updated Packet Version Flags. + * !!!Fixed Mobs Attacking!!!: Thanks for MagicalTux and Yor, I fixed the mobs attacking by using one of their files. [Codemaster] + * Warps Update : Added ayothaya warps in ./npc/warps/ and in map_athena.conf [Nana] +11/11 + * Skill Updates : (Need to revise skill_cast_db.txt for new updates) + ( Sharp Shooting, Sword Reject, Chain Crush Combo, Tiger Knuckle Fist, + Head Crush, Arrow Vulcan, HP COnversion) Thanks to DracoRPG. + Fixed Devotion use requeriments. Thanks to Orn. [shadow] +11/11 + * Corrected minor typo in item_db, and removed/commented out dupe items.[kobra_k88] + +11/10 + + * Updated Sprout (Item #7193), Thin Trunk (Item #7186), + Huge Leaf (Item #7198), and Rante Whip (Items #1956, #1957) + - thanks to cheng - [Codemaster] + * Updated Parasite (Mob #1500) Drops - thanks to cheng [Codemaster] + * Updated Soft Grass Leaf (Item #7194) - thanks to cheng [Codemaster] + * Added, Fixed & Updated ALOT of skills: [Codemaster] + - Fire Pillar, Backstab, Grimtooth, Poison React, Falcon Assalt, + Skin Tempering, Hilt Binding, Frost Nova, TEMPORARY fix for Create Deadly Poison, + Enchant Deadly Poison, Endure, Sacrifice, Spider Web, Memorize, + Hyper Spirit Sphere, Palm Strike, Sword Reject, Pressure, Magic Crasher, + Amplify Magic Power, Napalm Vulcan, True Sight, Wind Walk, Aura Blade, + Concentration, Cart Boost, Magic Power + - Thanks goes to Celest, Midas, and DracoRPG! + * Fixed spira's mistake in using the packet_len_table; no biggie ^_^ [Codemaster] + * char/char.c & char_sql/char.c: Fixed start_armor and start_weapon - thanks to AppleGirl [Codemaster] + * Added packetver 6 flag to makefile. [Valaris] + +11/09 + * mob_db.txt: Fixed Drake dropping the wrong card - thanks to roslen [Codemaster] + * chat.c: Fixed multiple joins in a single chat - thanks to Alex14 and CHaNGeTe. [Codemaster] + * clif.c: Fixed sitting. [spira] + * - Fixed item 657 Job ID , 11/09 patch updates to item_db, Correct stats for item 5097 + - Added Unbreakable funcions to item_db armors/shields/garments/footgear [shadow] + * Defined SO_REUSEPORT to allow the servers to re-use ports if server crashes [Wizputer] + +11/08 + * Added new script command: getMapXY(MapName$,MaxX,MapY,type,[CharName$]) by Lorky [Lupus] + Get position for char/npc/pet/mob objects. + * Attempted to fix the mob bug (still haven't :( ). Still updated mob.c/clif.c/chrif.c according to jA 1057. [Codemaster] + * Fixed item_cardalbum.txt: Removed extra column which mad all albums empty [Lupus] +11/07 + - Fixed a few npcs will start implementing new ones soon, have alot on paper, need to type them up. [Nasedo] + * clif.c: Added a few things from jAthena 1057 [Codemaster] + * Corrected some typos in item_db. Items 1143 and 1719 need to be re-checked.[kobra_k88] + * Fixed compiling error in Map Server in which @repairall was using old broken system [Shinigami] + +11/06 + - Added missing items in item_db.txt and reorganised it.[Nasedo] + - Fixed wrong coords for payon guild flags (it has the old map coords), fixed some weapon effects in item_db, + updated the mob_db (90%+ done), added EP 5-9 mobs to mob_branch.txt and EP 6 cards to item_cardalbum.txt[shadowlady] + * atcommand.c/.h,chrif.c/.h, added @changesex. [MC Cameri] + * mob.c & clif.c: Added & Modified a few parts dealing with monsters and guilds [Codemaster] + * mob.c: Re-did a few parts according to jA's 1057 version. [Codemaster] +11/05 + * Fixed and redo optional Umbalian quests: + - Wise Man Fabius' Umbalian Language Quest (you can learn Umbalian language in + alternative way) + - On speaking with Umbalian Chief about meaning of masks you activate Turban Thief Quest + (For Sphinx Mask) + * Fixed several bugs in Niflheim Piano Keys Quest (wrong variable name, missing CLOSE buttons) + Zeny/Item Exploit in Niflhein Sairin NPC quest (should add similiar checks in every + easy quests with expensive prizes to avoid exploits) [Lupus] + * Revised and fixed all comodo,yuno,amatsu,gonryun,umbala mobs and drops. Also fixed mvp and woe mobs too [Shadowlady] + * Fixed crash from guild skill point allocation, there seems to be a problem with guilds loading still. [Valaris] + * Fixed committed typo in map_athena.conf, remove aria's dev npc (was giving errors preventing server startup). [Valaris] + +11/04 + * Added sara-chan's packet db with support for 11-1 [Valaris] + * [alot of files >_<]: Changed connecting a bit, from oA source; it connected easier/better in my opinion so... [Codemaster] + * map/skill.c: Added a few checks for level 0 skills being used. [Codemaster] + +11/03 + * Removed broken column, using attribute column for broken equip now. [Valaris] + +11/02 + * Fixed compile time errors for gcc 2.95 [MouseJstr] + * Changed Blacksmith skill "Hammer Fall" to only be used with maces or Hammers [Aria] +11/01 + * Set Comodo Kafra to warp to Umbala (11/2/04 patch) [Aria] +10/31 + * Fixed Devnpcs giving off errors -_- [Aria] + * Fixed showmsg.c compile warnings thanks to LittleWolf. [Valaris] + * map/skill.c: removed a second declaration of sc_def_vit in skill_castend_nodamage_id; thanks to spira [Codemaster] + * map/battle.c: re-did Water Ball's damage calculation [Codemaster] +10/30 + * Added new guild skills to skill_db from sara-chan. [Valaris] + * db/skill_cast_db, map/skill.c, map/pc.c: Corrected a few CHASEWALK things; Thanks to Celest [Codemaster] + * char_sql/char.c: removed the double free()ing of gm_account [Codemaster] + * Added check for c value in int_guild.c before dividing to calculate average level. [Valaris] + * Commented unfinished dev npcs and added devnpc to map_athena. [Aria] + * Removed item requirement of Aqua Benedicta (10/26 patch) [Aria] + * Fixed some compiling error for Map-server [Shinigami] + * Removed Rogue's backstab pushback effect (kRO style again) [Aria] + * Changed requirement of Fire Pillar to fit kRO style; lv1-5 = no gem, but 6-10 = 1 gem. [Aria] + * Added Mugendai's oA GUI support for map-server (previously not added) [davidsiaw] + * Included Mugendai's oA GUI in the GUI folder [davidsiaw] + +10/29 + * another exploit fix for mult in script [MouseJstr] + * Corrected mode for peco, condor mobs. Added custom mobs Easter Egg and Easter Bunny for easter egg event script. + Corrected mysteltain card location, penomena card typo.[kobra_k88] +10/28 + * Cloak Speed fixed [Aria] + * Throw stone damage fixed [Aria] + * Added new packets from Sara to packet database. [spira] + * Fixed and changed command lists to reflect on new packet changes. [spira] + - @jumpto, @recall, and @where + - Removed old @ignore* functions because they are no longer needed. + * Replaced old whisper ignoring code with better and more efficient code. [spira] + * Added packet_db.txt support, removed old packet functions. [spira] + * fixed forger-zeny exploit [MouseJstr] + + Doing script math that returns a number greater then (1<<31) will now + return a (1<<31). This prevents you from finding a npc that + asks for a quantity then mults the cost by that quantity to get + what you need to pay. + +10/27 + * Updated CSS styles for readme a bit [Aria] + * branched athena at version 340 to begin work on the packet_db + stuff from jA. To retrieve it, do a svn co http://dev.deltaanime.net:8080/svn/eathena/packetdb + later, once we are happy with it.. and feel it is stable, we will remerge it back into the main tree via the appropriate svn commands + as a FYI, the command I used to create this branch was: + svn copy http://dev.deltaanime.net:8080/svn/eathena/athena http://dev.deltaanime.net:8080/svn/eathena/packetdb -m "branch for packetdb work" + * Fixed Aldebaran (gatekeeper conditions bugs and wrong Key ID). Fixed some typos in other cities [Lupus] + +10/26 + * Added more quotes -_- [Aria] + * Modified a few things related to guild skills. I hope it doesn't interfere with anyone else's work, and isn't seen as bad. [Sara-chan] + -Support for new guild skills, though they don't work yet. Added guild_skill_get_inf and guild_skill_get_max entries for them based on early info. + -Changed guild_skillup functions based on japanese code, but for a good reason. + It allows for guild skill trees, sort of. I made Kafra Contract and Guardian Research require Guild Approval, for instance. + I think the first four new guild skill requirements are correct, at the least. + I hope everything works alright, it's my first contribution to eA in quite some time and I'm rather rusty at programming of late. + * Fixed compile errors in showmsg.c. [Sara-chan] + * Fixed Mouse's devnpc only saying his quotes once per server reset [Aria] + * Added log_athena.conf & the logs.sql file [Codemaster] + * Added log configurations to inter_athena.conf [Codemaster] + +10/25 + * Fixed a compiling error in Login-server [Shinigami] + * Added alot of Azndragon's spiffy logs & then added a few things of my own (Silly Dragon, structs are for kids!) [Codemaster] + * Corrected a small bug (forgot to change a few variables!) in my different GM option. [Codemaster] + * Fixed items and mobs in DB. Added new items. [Lupus] + * Fixed some NPC bugs (check NPC=changelog.txt) [Lupus] + * Fixed getting MAX PET ID (SQL only bug) [Lupus] + * Fix char/char.c which was crashing after double freeing logs + [MouseJstr] + * Improved basic server rebooters [MC Cameri] + * Commited common/showmsg.c/.h, previously missing x_X [MC Cameri] + * Added a basic server rebooter program, just use 'runserver.bat' to start up the server. [Shinigami] + +10/24 + * Added files common/showmsg.c/.h which contain the function _ShowMessage(char *string, int flag) [MC Cameri] + -Check showmsg.h to see how to use it. + -This function is made to replace printf in all the cases, so it MUST be used instead of print from now on. + -Begin your own journey of replacing/removing old printfs, and using the new function. + -This function was previously called ShowMessage() in oA, it is now merged, some changes have been done: + 1.Outputting messages to a file is now disabled(commented out). + 2.MSG_SQL is now commented out. + 3.If the server is out of memory, it will not use abort(). + 4.Returns 0 if successful, 1 otherwise. + -Example: ShowInfo("hello\n"); will print this to the screen: [Info]: hello + -Always add \n at the end. Unless someone edits the function to add the \n whether it exists or not. + -Just add #include "showmsg.h" wherever you need it. + * Edited ALL makefile's to include showmsg.o -> _ShowMessage(). [MC Cameri] + * Updated readme/gmcommands.html with new @uptime command [MC Cameri] + * Somebody had added some additional noskill checks that prevented + vending from happening in prontera [MouseJstr] + * Added bypass with gm_allskill of npc_selfdestruct2. [Valaris] + * Corrected some minor bugs in some Quests [Shinigami] + * Added new maps (from lateast kRO patch) + Touched WOE (u can't surrender the castle during the WOE), misc fix of the bank [Lupus] +10/23 + * Added the option to read GM accounts from a different table than login. Default set to login table. [Codemaster] + * Finished Aria and MC Cameri "Dev edition" NPCs. [Aria] + * Corrected extra stat points given to high classes. [Valaris] + * Added high classes getting the extra 40 stat points on stat reset. [Valaris] + * performance tweaks on socket.c to reduce lag [MouseJstr] + + do a "OPT="-g -DNSOCKET" to compile with the changes + enabled.. and tell me if you notice a change in your + performance/lag + + * Added @uptime to atcommand.c [MC Cameri] + * Added the stuff for my npc to Dev/quotes.txt [MC Cameri] + +10/22 + * Replaced some checkcart and checkoption(x) with checkcart(0) in the guild folder [Aria] + * Waiting for various devs to tell me their coords, map, biography, quotes, + moving coords, etc. In the meantime, I replaced them with (x,y),(lols), + (sprite),(somewhere), and if they didn't give me any info, I didn't + add them yet =P. [Aria] + * Added Davidsiaw, Shinigami, Lord, Codemaster, MouseJstr, MC Cameri, and Darkchild + to "Dev edition" NPCs [Aria] + * Revised "Dev edition" NPC layout a bit, should go smoother now. Should be final + layout unless something goes wrong =O. [Aria] + * Fixed the eol markers on some checked in files [Mousejstr] + * Fix two crashes caused by calling isGM on mobs [MouseJstr] + * Added folder "mc_cameri" in npc/other which contains my bank npc. [MC Cameri] + * Changed "Dev edition" NPC layout so that they move by themselves by timers. [Aria] + * Changed "Dev edition" NPCs to walk during quotes, and added biography. [Aria] + * Fixed quest/all_quest.txt not showing the correct description of the binoculars. [Aria] + * Fixed quest/all_quest.txt not going to stop pass and not displaying requirements. [Aria] + * Fixed removing friends from the list [davidsiaw] + * Added PCLoginEvent NPC (When a character logs on, NPC runs as if he/she clicked the NPC) [davidsiaw] + The NPC sample is located in npc/sample/PCLoginEvent.txt (you only need one of these NPCs) + +10/21 + * Fixed clothes_dyer.txt: Disabled Assassing/Rogues Dye. Also fixed wrong labels [Lupus] + * Fixed hair_dyer.txt: fixed missing menu label [Lupus] + * new_hats.txt 1.4 fixed amount of Fish Tail (300 -> 30), Zeny bugs in Ear of Angel, + Ear of Demon,Big Golden Bell, Mistress Crown, + Crown of The Ancient Queen, Indian Headband, Orc Hero Helm [Lupus] + * Fixed name of a flower in Prontera quest (Dreamy->Illusion) according to our DB [Lupus] + * Fixed item names in the temp Crusader Job Quest according to our DB [Lupus] + +10/20 + * map/mob.c: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster] + * map/map.h: Changed Vending Struct: amount and value to unsigned variables (so they CAN'T be 0 or less) [Codemaster] + * map/mob.h: Added mob_exclusion_add() & mob_exclusion_check() [Codemaster] + * Aligned the list of commands at the beginning of atcommand.c, + with tabs instead of spaces. [MC Cameri] + * Fixed AtCommand_SetBattleFlag, it was previously being called by "@send" + instead of "@setbattleflag". [MC Cameri] + * Finished basic layout, finished Aria starting to create Shinigami [Aria] + * Started to create "Dev edition" npcs [Aria] + * Fixed a compile error in src/char/char.c [MouseJstr] + * Fixed a bug in @trade where the distance was not ignored [MouseJstr] + * Fixed a potential inf loop in pc.c when multi_level_up is set to no. [MouseJstr] + * implemented Friends List support for TXT version [davidsiaw] + * added queries in main.sql for Friends List. mySQL support for friends list pending [davidsiaw] +10/19 + * switched login_sql/login.c to use binary when retrieving + by account name [MouseJstr] + * skill.c & skill.h: added skill_type_cloaking [Codemaster] + * storage.c & storage.h: added storage_storageopen2() [Codemaster] +10/18 + * Changed readme layout for 1.0 scheme. [Aria] + * added check for console variable in login_sql [MouseJstr] + * Fully translated the untranslated items in the database.sql for SQL. [Nana] + * Dev/TODO, asigned myself to some items. [MC Cameri] + * char/char.c: changed the online system to omniAthena's [Codemaster] + * char/char.c: added log_char and log_inter [Codemaster] + * char/char.c: added Mugendai's GUI Support [Codemaster] + * char/int_guild.c: added log_inter and db_path [Codemaster] + * char/inter.c: added log_inter [Codemaster] + * char/char.c: added db_path [Codemaster] + * char/inter.h: added log_inter [Codemaster] + * char_sql/char.c: added log_char and log_inter [Codemaster] + * char_sql/char.c: added Mugendai's GUI Support [Codemaster] + * char_sql/int_guild.c: added log_inter and db_path [Codemaster] + * char_sql/inter.c: added log_inter [Codemaster] + * char_sql/char.c: added db_path [Codemaster] + * char_sql/inter.h: added log_inter [Codemaster] + * conf-tmpl/char_athena.conf: Added log_char & db_path [Codemaster] + * conf-tmpl/inter_athena.conf: Added log_inter [Codemaster] + +10/18 + * clif.c,clif.h,map.h,npc.c,npc.h,script.c: Added NPC Walking. [Valaris] + -npcspeed #; To change npc's walking speed. + -npcwalkto x,y; Move an npc to a position (keep it less than area size, or sprite will glitch and disappear). + -npcstop; Stops an npc's movement. + +10/17 + * Made the IP autodetection code work under a pure win32 + executable + * Fixed the win32 build and made a src\map\Makefile.win32 to + make it easier to do win32 builds of the map server + + src\common\utils.c src\common\utils.h src\common\grfio.c + src\common\nullpo.h src\common\timer.c src\common\db.c + src\common\socket.c src\common\core.c src\common\mmo.h + src\common\socket.h src\map\script.c src\map\intif.c + src\map\npc.c src\map\clif.c src\map\map.c src\map\clif.h + src\map\chrif.c src\map\Makefile.win32 + + * skill.c: Fixed noicewall flag. [Valaris] + * battle.c: Battle calc weapon attack now checks to see if pc_breakweapon successfully broke the weapon then recalculates damage. [Valaris] + * pc.c: Removed broken weapon and equip status, just unequips items again when broken. [Valaris] + Removed useless code from pc_breakweapon and pc_breakarmor. [Valaris] + * Added template for server control from the console [Wizputer] + * conf-tmpl/login_athena.conf: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster] + * login/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster] + * login_sql/login.c: added support for Mugendai's "I'm Alive" Timer and GUI Flush [Codemaster] + * Usable GM commands from server console admin:: [Wizputer] + * Added server:shutdown to shutdown server and help [Wizputer] + * Added user discretion for console commands in conf files [Wizputer] +10/16 + * Fixed Umbala Language Quest, where a certain NPC would freeze you due to an unfinished script [Shinigami] + * Fixed bug in new_hats.txt where free items are given out [Shinigami] + * Correct Morroc warp npc overlaying Kafra npc. [Aria] + * Corrected npc typos. [Aria] + * Skip over npc_selfdestruction2 on allskillup (thanks to celest) [Valaris] + * Fixed some typos in some of the NPCs [Shinigami] + * tweaked the auto-configure stuff to deal better with + machines that have no detectable IP addresses.. is this + possible? [MouseJstr] + src\char_sql\char.c src\char\char.c src\map\map.c + * Made it compile under gcc 2.95 [MouseJstr] + * made the char and map servers auto-configure their own IP's + whenever possible [MouseJstr] + + If you do not specify the server IP address, it now determines it + on its own. This means that to get a server running that is + accessable from the internet you should only need to specify the + location of the data.grf files. This eliminates one more point + of misconfiguration. + + It does not correctly auto-configure for when you are behind a + router or a firewall since there is no way of determining the + external IP address. On the other hand, we should be able to + eliminate the lan_conf file since we know our IP addresses as well + as our netmask. + + src/txt-converter/login/login-converter.c src/txt-converter/char/char-converter.c src/login_sql/login.c src/common/socket.c src/common/socket.h src/char_sql/char.c src/char_sql/int_guild.c src/char_sql/inter.c src/map/atcommand.c src/map/map.c src/map/mail.c src/char/char.c conf-tmpl/map_athena.conf conf-tmpl/char_athena.conf Changelog.txt + +10/15 + * added @setbattleflag to let me reset a battle_config at runtime [MouseJstr] + * --- RC5 release + * another fix to oA2eA-rc5.sql to fix the sell_price [MouseJstr] + * Redid readme, updated content a bit, and made ps2 poster in preperation for 1.0 RC5 release. [Evera] + * made MAX_HAIR_STYLE, MAX_HAIR_COLOR, and MAX_CLOTH_COLOR + configurable via battle_config. [MouseJstr] + * made the dex spell cast time scaling configurable via battle_config + [MouseJstr] + * made the visible area_size configurable via battle_config + [MouseJstr] + * Reorganized and added the warps into their respective folders, updated map_athena.conf. [Nana] + * Added 2 script commands GETLOOK, GETSAVEPOINT (thanks to Lorky). [Lupus] + * Added kafra_bank NPC - a new bank with daily interst of 0.1#%. [Lupus] + * Changed cast time for champion soul collect to 1 sec (thanks to midas). [Valaris] + * Added midas's fix for +30 hitrate with Sonic Blow. [Valaris] + +10/14 + * Fixed help.txt for some @gm commands [MouseJstr] + * made login.c compile on gcc 2.95 [MouseJstr] + * Fix backwards compatability with old mob skill formats [MouseJstr] + * Added mail system commands and @refreshonline to help.txt. [Valaris] + * Fixed char guild storage bug [MouseJstr] + * Prevented breakage of Weapons/Armor if the respective Alchemist Chemical Protection skill is applied. [spira] + * Added so nochat end will set manner to 0. [Valaris] + * Added broken item check before breaking (to prevent an item from breaking more than once) [Valaris] + * Re-wrote parts of equipment breaking. It will check to make sure it was not a miss before doing break calculations. [Valaris] + * Re-added negative value exploit fix. [Valaris] + * Fixed guardian opposition search. [Valaris] + * Added @unmute. [Valaris] + * Added check for map existing before cleanup (server will exit instead of crashing if maps aren't found). [Valaris] + +10/13 + * Fixed parse of antifreeze enable/disable flag. [Valaris] + * Fixed end-of-line flags in source tree [MouseJstr] + +10/12 + * Prevent attack/skill usage while wearing tux/wedding dress. [Valaris] + * Remove item unequip on tux/wedding equip. [Valaris] + +10/11 + * Added mail system (for SQL version only). [Valaris] + - @checkmail + - @listmail + - @listnewmail + - @readmail <#> + - @deletemail <#> + - @sendmail + - @sendprioritymail + - Added battle_athena.conf option to enable/disable mail system. + - Added mail.sql for sql mail system. + - Use "*" for name to send to all players. Level must be >= to @sendprioritymail level. + + * Added @refreshonline to refresh player online status in SQL version. [Valaris] + +10/10 + * Modified ja blacksmith repair code to function with our broken equipment system. [Valaris] + * Removed ja repair script commands, they aren't compatible with our broken equipment. [Valaris] + * Fixed error in Morroc jewel dealer. [Valaris] + * Added so supernovices will get flee from improve dodge. [Valaris] + * Fixed assassin and rogue flee bonus, was giving +50 instead of +40. [Valaris] + * Fixed bug with using remove trap on a snared monsters and the monster would stay stuck. [Valaris] + * Added a check for row return in an sql statement in login. [Valaris] + * Added some pointer initializations in map.c. [Valaris] + * Calculate pc status when equipping or unequipping pet items. [Valaris] + * Fixed crash in looting pet skills if loot size was greater than 10. [Valaris] + +10/05 + * Fixed all mob spawn names (typos, errors, wrong names) according to the mob_db.txt [Lupus] + * Added YggdrasilKid's fixed exp.txt. [valaris] + +10/04 + * Added missed close file functions in pc.c [Lupus] + * Added some new items, fixed some item names and translated all grabled items in item_db.txt [Lupus] + * Fixed bug in MOB_DB and in MOB_BRANCH DB related to wrong "Elder" ID number [Lupus] + * Fixed toggle for using sql item db in char-server. [Valaris] + * Added interval settings for anti-freeze system. [Valaris] + * Added enable/disable options in char_athena.conf and login_athena.conf for anti-freeze system. [Valaris] + * Re-added anti-freeze system. [Valaris] + * Cleaned up warning in src/common/db.c. [MouseJstr] + * Removed afm map checking from char. [Valaris] + * npc.c - Re-enabled new "OnTouch" function. Added a missing line to npc_event in npc.c(line 667). + pc.c - Added 2 missing "else" statements on (line 3702 and 3842). Now ontouch works correctly and activates + everytime instead of only once like in RC4. [kobra_k88] + * clif.c - Added: npc_scriptcont(sd,RFIFOL(fd,2)); to "void cliff_parse_NpcCloseClicked" function. + Now "close2" script command works properly. Previously, it would freeze the server.[kobra_k88] + +10/03 + * added oA to eA database conversion .sql [MouseJstr] + * renamed sql to sql-files to eliminate a problem with make [MouseJstr] + * Fixed Assassin Quest where "Nameless One" NPC would freeze after clicking "next". [Shinigami] + * charkillable now returns status on target [MouseJstr] + * skill names now have descriptions pulled from the client [Mousejstr] + * Mapflag "petals" has been changed to "sakura". [Valaris] + * The weather @commands will now set that particular mapflag on until server is restarted, and will send weather effect + to everyone on that map. It also will not allow the occurance of the command more than once. This method means + everyone coming onto the map after the command has been used will see the effect. [Valaris] + * Added yor's latest ladmin.c. [Valaris] + * Fixed bug in delitem script command that caused it to delete all of an item. [Valaris] + * Modified Makefile's to work better in non-sql environment [MouseJstr] + * A lot of work on source tree making it more ANSI C compliant [MouseJstr] + * Finalized the timers on shutdown + turned off malloc debugging on db's. [MouseJstr] + * Added release hook's into db's [MouseJstr] + * Added runflag to core to allow cleaner shutdown [MouseJstr] + * Work on LCCWIN32 for building under Windows natively [MouseJstr] + * modified @mapexit to use runflag for cleaner shutdown [MouseJstr] + * Improve cleanup on exit of map server of all objects [MouseJstr] + * statpoint reader can now be larger then 1432 bytes [MouseJstr] + * Fixed so dancing effect is cleared when warping. [Valaris] + +10/02 + * Modified battle config muting players option to work more effectively. [Valaris] + * Fixed mute from showing red bubble to players. [Valaris] + * Fixed disguise sprite staying when teleporting. [Valaris] + * Added a special mob ai check in mob.c. [Valaris] + * Fixed petit pet skill's damage from ever increasing. [Valaris] + * Removed pet weight and pet loot options, someone re-added them, and this conflicts with pet skills. [Valaris] + * Added new skills to mob_skill_db (skills for Alchemist summon marine sphere among others) [Valaris] + * Updated skill_cast_db and skill_require_db for summon marine sphere and biocanniablize skills. [Valaris] + * Fix for drops by luck crashing. [Valaris] + * Removed @nuke for now. [Valaris] + * Added japanese ankle snare code. [Valaris] + * Using better code for alchemist marine sphere. [Valaris] + * Reverted back to old method of OnTouch for now for compatibility with older scripts. [Valaris] + * Fixed an infinite loop with preventing multi level up and high novices. [Valaris] + * Storage saving in SQL was based on MAX_INVENTORY. Switched to MAX_STORAGE and MAX_GUILD_STORAGE. [Valaris] + Should resolve items disappearing. Thanks to fov for pointing this out. + * Updated skill_db entries for biocannibalize and summon marine sphere. [Valaris] + * Changed sql item name row sizes to 24, and changed memory allocation to 25 bytes instead of 29. [Valaris] + * Added upgrade_1.0.0-rc5_database.sql (will set name columns of item db to varchar(24). [Valaris] + * Removed anti-freeze system. [Valaris] + * Began removing AFM, unless someone wants to complete this. [Valaris] + * Added an online status timer. Will check online status of players every hour (for sql version). [Valaris] + * Added malloc to map.c. [Valaris] + * Added some variables for new mob exclusion. [Valaris] + * Using malloc in pc.c. [Valaris] + * Added skill reset checks to high/advanced/baby classes. [Valaris] + +10/01 + * Fixed up const.db. [Valaris] + - Added + bBreakWeaponRate 1068 + bBreakArmorRate 1069 + bAddStealRate 1070 + + - Fixed + bMagicDamageReturn 1071 + bRandomAttackIncrease 1072 + bAllStats 1073 + bAgiVit 1074 + bAgiDexStr 1075 + bPerfectHide 1076 + bDisguise 1077 + + * Rewrote mute disable option in clif.c, it did not need to end status. [Valaris] + * Added a missing check for SC_NOCHAT in clif.c. [Valaris] + * Changed comments on max_lv in battle_config to be less + confusing [MouseJstr] + * Fixed Gypsy Job Quest, added Crusader Job Quest [Lupus] + * Adding missing noquests from previous tree [MouseJstr] + * merged conf files between txt and sql [MouseJstr] + * According to item_db.txt and mob_db.txt fixed some name differences, wrong item names in + pet_db.txt,mob_branch.txt,item_violetbox.txt,item_giftbox.txt,item_cardalbum.txt [Lupus] + * Added specialeffect2 script command. Works the same as specialeffect, but the effect will be applied + to the player interacting with the npc instead of being applied on the npc. [Valaris] + * Added hasitems script command. If a player has any items it will return 1 in an if statement. [Valaris] + * Added npctalk script command. Syntax : npctalk "These are my words"; [Valaris] + * Removed script::say in favor of Valaris's version. [MouseJstr] + * Fixed a bug in guild alliances where it was treating a friend as a foe. [MouseJstr] + * Fixed crash in weapon breaking. Was not doing a block type check on the source. [Valaris] + + +09/29 + * Fixed small, almost non-existing memoryleak, in grfio.c that could + cause some systems to exit the application [Kalaspuff] + +09/26 + (Dated On Aegis Website) + *--Released 1.0.0 RC4--* +09/25 + * Reorganized Npc folder for release + * Updated map_athena.conf + * Remove certain statuses when warping (Cloaking, Sitting, Gangster's Paradise) that would allow the effect to + continue and a player to walk normally. [Valaris] + * Remove speed increase of theif and high thief from improve dodge (only assassins and assassin cross's are + supposed to get this bonus) [Valaris] + * removed more #ifdef's between TXT and SQL [MouseJstr] +09/24 + + * Added @charkillable (to make players killable) [MouseJstr] + * Added @dropall (throws all items on ground) [MouseJstr] + * Added @chardropall (throws all players items on ground) [MouseJstr] + * Added @storeall (put all items in store) [MouseJstr] + * Added @charstoreall (put all players items in storage) [MouseJstr] + * Added @skillid (look up a skill by name) [MouseJstr] + * Added @useskill (use a skill by id) [MouseJstr] + +09/23 + * Update Some Npc Stuff In Payon [Darkchild] + * Added Sage Quest [Darkchild] + * added @killable - all players can hit you, even out of pvp [MouseJstr] + * Changed Basilica to prevent the priest from walking [MouseJstr] + * Restore base files in save directory [Yor] + * Castle spawn/conquering fix: [Akaru] + - Spawns monster when the guild is not owned when the server starts + - Spawns emperium with the monsters when guild is not owned yet + - If AgitStart and AgitEnd occurs while castle had not been owned, it is just ignored so that the monsters that are guarding the castle and the emperium would not be killed. + - Prevent spawn of emperium/monsters after castle is owned + - In short, you can clear and conquer the castle any time even when it's not agitstart'ed if the castle is unowned, like in official servers + +09/22 + * added @killer to let GM's hit players outside of pvp [MouseJstr] + * added @skilloff to turn off skills on a map [MouseJstr] + * added @skillon to turn on skills on a map [MouseJstr] + * added @follow to follow players (including warping after them) [MouseJstr] + * added battle_config option to control the max number of castles a guild can have [MouseJstr] + * upgraded the guild alliance checker [MouseJstr] + * added battle_config to control if ghosty armor works for mobs [MouseJstr] + * Fixed battle_config to control how much GTB actually helps [MouseJstr] + * Fixed battle_config to control if pvp battles give exp or drops [MouseJstr] + * Added map aliasing [MouseJstr] + * changed the map_nick2sd to be able to handle sub-strings for refering to players [MouseJstr] + * made turning of skills on a map actually work [MouseJstr] + * Updated Makefiles/GNUMakefiles to include the compilation of /common/malloc.o [PoW] + +09/19 + * Corrected @charstoragelist: [Yor] + - because account2storage function create a void storage if it's not exist, somethimes a player could lost its storage. + -> creation of account2storage2 to just ask pointer of storage if exist and use it in @charstoragelist. + * Improved range system of @monster/@spawn (nearest of GM when less monsters) [Yor] + * Client until 2004-09-06 (included) is now completely recognized [Yor] + * Fixed kafra storage request for all new clients [Yor] + +09/18 + * Changed to Yor's code that doesn't try and read when it's already not found [Akaru] + * Removed check for resnametable in data folder exit -> the resnametable isn't even used if present and it should be optional and not compulsory to have a resnametable in the data folder! [Akaru] + * Added an option to choose which clients are accepted on the server (2nd part and finish: Check accepted versions) [Yor] + * Added an option to choose which clients are accepted on the server (1st part: reading of the option) [Yor] + * Fixed action request (sit, attack, etc..) for all new clients [Yor] + * Fixed solve char name for all new clients [Yor] + * Fixed get char name for all new clients [Yor] + * Fixed an error about packet number on char name function [Yor] + * Added items drop packet for all new clients [Yor] + * Fixed: in clif_send (global send, not individual send) don't send a packet that client doesn't recognize [Yor] + +09/17 + * Added check to make sure mob is already moving before initiating random walk + when the item they are going to loot disappears. [Valaris] + * Client of 2004-07-13 is now completely recognized [Yor] + * Fixed items take packet for all new clients [Yor] + * Corrected packet sizes for each client version (not set packet size if packet doesn't exist) [Yor] + * Fixed direction position for all new clients [Yor] + +09/16 + * Client of 2004-07-06 is now completely recognized [Yor] + * Fixed skills to position with all new clients [Yor] + * Fixed incomplete packet of authentification [Yor] + * Fixed size of packets for all clients [Yor] + * Improved detection of client version at authentification [Yor] + * Improved packet parsing of client (search packet version before to parse) [Yor] + * Added packets size of 0x20d and 0x20e [Yor] + +09/15 + * Added "nude" script command, will strip player of all equipment. Syntax : nude; [Valaris] + * Removed sandstorm flag, since it does not work as intended (is not a constant effect like believed) [Valaris] + * Added specialeffect script command. Syntax: specialeffect #; [Valaris] + * Moved noicewall flag to a better position. [Valaris] + * Added mob type check to skill_castfix to prevent crashing. [Valaris] + * corrected error: skill to id (RFIFOW->RFIFOL) [Yor] + * Added packets size of 0x204 and 0x20b [Yor] + * Fixed skill_to_id with all new clients [Yor] + * Fixed tick sending with all new clients [Yor] + * Fixed items use with all new clients [Yor] + * Fixed move with all new clients [Yor] + * Speedup WantToConnect function [Yor] + * Call correct function with any clients packet - size is not correctly set actually [Yor] + +09/14 + * Resetlvl will unequip items that require more than level 1. [Valaris] + * Added message about new clients (not actually supported) [Yor] + * Added correct call of clif_parse_WantToConnection function for all client types [Yor] + * Added size of packet 0x0214 [Yor] + * Fixed calls of 'clif_send' function [Yor] + +09/13 + * Modified item_db to have more name consistency, added more translations for items [Akaru] + * Fixed in clif_sitting usage of a buffer [Yor] + * Fixed in clif_movechar usage of a buffer for clif_set007b [Yor] + * Fixed in clif_spawnpc usage of a buffer for clif_set0078 [Yor] + * Corrected a commented printf in packet 0x2b0e for debug [Yor] + +09/12 + * Put (commented) parse printf in char.c at the right place (to have all informations) [Yor] + * Added Alchemist JobQuest [Darkchild] + * Added Inn Npcs [Darkchild] + +09/11 + * Added @charitemlist/@charstoragelist/@charcartlist GM commands to display items of a player [Yor] + +09/10 + * Added a better id control of monster id in @spawn/@monster... GM commands [Yor] + * Correction of an error at reading of 'wisp_server_name' option (char.c) [Yor] + +09/09 + * Change @spawn/@monster2... GM commands to spawn in close area [Yor] + * commented some printf in char.c to reduce (a little) lag [Yor] + * Put @timer messages in msg_athena.conf [Yor] + * Add a file for SQL developpers [Yor] + * Changed name of newpacket variable of session (packet_ver) and add a message for nex client version [Yor] + * Added new client packet sizes and expanded packet acception. [Valaris] + * Added snow, fog, rain, leaves, petals, and sandstorm map flags. [Valaris] + +09/08 + * added clif_specialeffect to clif.c, for displaying a wide variety of effects (information from rofx) [Valaris] + * Corrected in map: creation of new session before to delete previous session_data [Yor] + * Corrected in login/char/ladmin: creation of new session before to delete previous session_data [Yor] + * Prevented redeal dupe. Checks to make sure inventory index has not already been added (client prevents + the possibility of stacking items, but server did not.) [Valaris] + +09/07 + * Added an option to determinate at which GM level nowarp and nowarpto flags are not more used [Yor] + - new option in battle.conf: any_warp_GM_min_level + - new checks and message about 'from' (nowarp) and 'to' (nowarpto) in GM commands + * Third part of new authentification method (clif_parse_CloseKafra): ignore new 0xF7 [Yor] + * Change name of new0x0072 variable by new_auth (because now, auth packet is 0x72 or 0x7E) [Yor] + * Second part of new authentification method (clif_parse_WantToConnection): Auth by char-server of new packets resolved [Yor] + * Improved check of new packet 0x7E to enter in WantToConnect Function [Yor] + +09/06 + * First part of new authentification method (clif_parse_WantToConnection) [Yor] + - accepted new 0x7E for wantto connect + - begin to found first authentificaiton and answer to client, but not found + * Improved Char-server: [Yor] + - Fixed a possible error on multi-map servers (no lastpoint) + - Added log about character with same name of wisp server name. + - Added a sub function to disconnect a player (used 3 times) + * Improved. In global message, use buffer to send to other (avoid possible overwriting). [Yor] + * Added Super Novice Job Quest [Darkchild] + +09/05 + * Fixed noskill flag to actually stop all usable skills when used. [AppleGirl] + * Removed last lag on char-server causing by too much savings (on accreg) [Yor] + * Removed a lag on char-server with a lot of players (for party, like guild) [Yor] + * Removed a big lag on char-server with a lot of players: [Yor] + - guilds was saved every time a player is online and a lot of other time (removed). + - guilds are save only when characters are saved (no more bring forward with characters file, and less savings) + * Added GM message that informs when a player blocks wisps of the server (against some bots that auto ignore wisps from a player) [Yor] + * Added perfect GM hide in @where GM command [Yor on suggestion of PoW] + * Correct NEW shops.txt with error displayed AT START of map-server! [Yor] + * Correct NEW payon.txt that crash map-server AT START! [Yor] + * More changes and official locations for new payon, things in correct place: + - Guild Flags + - Kafra + - Shops/Refiners (except Pet Shop!) + - Most Normal Npcs (not all!) + All Based On ScreenShots From kRO!! [Darkchild] + * Payon Warps about 80% finished, others were no screens taken from! [Darkchild] + * Removed nowarp mapflag and new internal check about gmlevel [Yor] + - gmlevel are checked before to call the function (of the GM comand). If you give gmlevel, people can use the function, including if you give level 0. + if you want refuse some GM commands to normal players, set the level of the command with a value upper than 0 (of set GM_only_command option to yes). + Not add new tests for nothing and use more cpu. + - mapflag: no limit for GM commands: what'is the interest to have gm commands limited like player? (it's rule for all GM commands) + A gm can have the possibility to go anywhere, specialy to check/control player ==> no mapflag! + * Stopped client crashes when jobchanging into another class that doesn't support the weapon you are holding. [Valaris] + +09/04 + * Added nowarp mapflag [PoW] + * Fixed nowarpto mapflag in atcommand.c [PoW] + * Improved: On hack about name in global message, GM of ALL map-server received hack messages. [Yor] + * Moved some GM messages of GM command from at_command.c to msg_athena.txt. [Yor] + * Added @whogm GM command. [Yor] + * Added a warning when a character has same name than wisp server name. [Yor] + +09/03 + * Added gm level display in all @who(map) GM command. [Yor] + * Correction: [Yor] - Thanks to [EvilEden] + - Soul Strike mistake (according to http://iro.ragnarokonline.com/game/jobmagskill.asp) - corrected cast time + - npc/quests/monstertamers.txt: The Monster Tamer Shogo gives the Deviruchi 'Contracts in Shadow' (641) -> the Bapho Jr. Tamming Item 'Book_of_theDevil' (642). + * Added monster/egg name to create egg in @makeegg GM command. [Yor] + * Added an option to fix started limited time of a new account. [Yor] + * Added @hatch in help.txt. [Yor] + * Fixed ChaseWalk so now you can't use skills while in chase walk mode. [AppleGirl] + * Fixed Looping of Broken Weapon if you continued to use it even after its broken [AppleGirl] + * Updated Weapon Breaking So Now Icon Will Disappear when you unequip the broken item [AppleGirl] + * Re-Added @hatch and added makepet to atcommand_athena.conf [Darkchild] + * Moved job monsters to their respected files [Darkchild] + * Fixed a bug in sence (showing wrong info!) [Darkchild] + * Changed the npc/jobs/ folders heavily! [Darkchild] + * Added COMPLETE Umbala NPC script [Darkchild] + * Added New Payon maps @ bottom of the map_athena.conf [Darkchild] + * Added New Payon NPCs and Warps [Darkchild] + * Fixed typo and made layout a litle bit better of the readme files [Darkchild] + * Added Items Ability to be unbreakable (using bonus bUnbreakable,100;) it will totally unbreakable + any lower than a 100 it still has a chance of breaking but call it more durable ;p[AppleGirl] + * Added Start_Weapon and Start_Armor to all the other starts in char_athena.conf [AppleGirl] + * Updated skill_require_db and skill_cast_db.txt [AppleGirl] + * Finish to add a (reserved) wisp name for server - part 3: in map-server replace name where server name is used for wisp [Yor] + * Continue to add a (reserved) wisp name for server - part 2: in map-server, reception of the name [Yor] + * Begin to add a (reserved) wisp name for server - part 1: in char-server [Yor] + +09/02 + * Added Meltdown's weapon breaking ability [AppleGirl] + * Added GM level in front of each line to display only enable GM command of the help.txt. [Yor] + * Removed message about limited time if your have unlimited account (that was for tests. sorry). [Yor] + * Set day/night messages in msg_athena.conf (for foreign people). [Yor] + * Added a function to return a string of msg_table outside of at_command. [Yor] + * Fixed clean database at disconnect when session is not auth. [Yor] + * Fixed a bug (but not solve the bug - need more research to found where solve it) in map_id2sd function. [Yor] + * Set initialisation of ignore list after authentification (not need to be done before) [Yor] + * Reduced size of packet 0x2afe (removed not used value) [Yor] + * Improve first auth part (wanttoconnect) [Yor] + * Added TODO 35 [Yor] + * Made a few adjustments to Archer based class skills making more like normal classes instead of Uber Classes. [AppleGirl] + * Updated the weapon and armor breaking to be more like official RO adding status icons and so on. [AppleGirl] + * Updated a few skills based off a few sites, also fixed other skills that were coded incorrectly. [AppleGirl] + * Fixed double connection with same account [Yor] + - disconnect immediatly + - no enter in database (block or others) + - no creation of session + - no more need to have 'new_fd' + -> less memory usage, less tests + * Removed 'other_fd' not used [Yor] + +09/01 + * Fixed Rainbow Egg quest in quests_lutie NPC [PoW] + * Added packet length for client server-side friend list, if they choose add the client will not disconnect. [Valaris] + Need to figure out the rest of the packets, then can implement. + * Added server-side friend list 'add' send packet info to packet documentation. [Valaris] + * Fixed: in chrif_authreq, don't send a request to char server if session is not found [Yor] + * Fixed: amatsu.txt, when Carter Moores say: remove 10000 zeny, he removes them now! [Yor] + * Removed an unknown item in shops.txt [Yor] + * Fixed 3 goto in father - acolyte.txt [Yor] + * Fixed bug with colors of 5 numbers/digits (warp to city instead of display with color) - wizard.txt [Yor] + * Reduce size of mage.txt and fix a text in mes (no bug) [Yor] + * Fixed thief.txt script (error on a goto) [Yor] + * Fixed account length (WFIFOL(fd,2) instead of WFIFOW(fd,2)) when char-srv doesn't auth an account for map-srv (0x2afe packet) [Yor] + * Added @job and @charjobchange to be similar with @charjob and @jobchange [Yor] + +08/31 + * Fixed messages of @(char)jobchange GM commands. [Yor] + * Fixed a return value of jobchange function (pc.c). [Yor] + * Added coredumps by system when crash. [Yor] - thanks MagicalTux + +08/30 + * Added some comments on gravity commands. [Yor] + * Improved /mm, /monster and /item to have some answers. [Yor] + * Modified skill_cast_db and skill.c to allow for status effect chance of wizard skills + (stun for WZ_METEOR and blind for WZ_VERMILLION) [moonsoul] + * Modified skill_cast_db and skill_db to properly reflect cast params and delay times for assassin cross + skills Create Deadly Poison(407) and Soul Breaker(379) [moonsoul] + * Added damage calcs to battle.c for Assassin Cross skill Soul Breaker(379) [moonsoul] + +08/29 + * Modified skill_require_db to reflect item requirements for assassin cross skills Create Deadly Poison(407) + and Enchant Deadly Poison(378) [moonsoul] + * Added @charmountpeco/@charpetrename/@charquestskill/@charlostskill GM commands. [Yor] + * Added noicewall.txt to map_athena.conf (commented out), noicewall flag [Valaris] + will not function when pvp is enabled on map. + * Added noicewall flag, noicewall.txt. [Valaris] + * Added wiz's temp fix for higher skill ids and skillnodex db. [Valaris] + * Added: Usage of At command when failed (100%). + * Modified: try to have samme presentation for all at-command code (100%). + * Improved/fixed some GM commands [Yor] + * Added some 'usages' in some GM commands [Yor] + * Added baby classes to equipment codes, they will equip the same as their normal and advanced counter-parts. [Valaris] + * Improved some GM commands [Yor] + - Added in @(char)baselvlup/@(char)joblevelup GM command: + When there are some status/skill points available and we reduce level -> remove points. + - Added counter in @statsall GM command. + - Fixed in @charsave GM command when map doesn't exist. + - Fixed @charbaselvl GM command overflow + - Fixed skill value (and crash) in @questskill/@lostskill GM command + - Fixed number of spiritballs (@spiritball GM command) + * Fixed random PvP crash bug [Lupus] + +08/28 + * Improved some GM commands [Yor] + - Added memo points in @go GM commmand. + - Added negativ value for @heal GM command. + - Fixed @(6stat-adjustement) GM commands overflow. + - Simplified @Statall GM commands. + - Fixed @guildlvup GM commands. + +08/27 + * Fixed @(char)zeny/stpoint/skpoint GM commands (no more overflow, etc...) [Yor] + * Improved @memo GM command: [Yor] + You can memo anywhere (it's GM command, not /memo command like for any player). + Without value, display actual memo points. + * Improved @refine GM command: you can reduce refinement. [Yor] + * Fixed @broadcast GM command send broadcast to all Map-servers. [Yor] + * Fixed @(char)base/joblevelup command (any adjustement can be entered). [Yor] + +08/26 + * In at_command.c: [Yor] + Fixed: initialisation of all strings. + Added: Usage of At command when failed (75%). + Modified: try to have samme presentation for all at-command code (75%). + * Made it so that the pvp_nightmaredrop mapflag would work even without pvp being enabled, now works any time it is set. [Ancyker] + * Added level check on /item and /monster. GM level must be >= both @monster and @item [Valaris] + level specifications (both since they share the same packet) + * Added my own extream mode map flags (disabled by default), makes players drop items at random everywhere (except towns). Full details in map_athena.conf. [Ancyker] + +08/25 + * Added: display usage when GM command failed (some GM commands) [Yor] + * Added @email GM command to change your account e-mail [Yor] + +08/24 + * Modified changesex script command use same function as @charchangesex now [Yor] + * Added @charchangesex GM command can be used on offline players [Yor] + * Added gm ladmin command to change GM level of an account [Yor] + +08/23 + * Fixed some at_command messages: [yor] + - remove all unused messages + - create commented line of all messages in msg_athena.conf to have english, and under, translation if necessary + - add some (arround 80, but not all) messages in msg_athena.conf + +08/22 + * Fixed: In GM commands, add a 'standard' message when GM level is too low [Yor] + * Changed in battle_athena.conf [Yor] + - atcommand_spawn_quantity_limit: 100 (20 is too short for mass spawnings.) + - unknow: give translation of babelfish to help on the explanation (not writing: 'unknow' to not lost the information!) + - day_duration: 7200000 & night_duration: 1800000 (set default to 30 min night, 2 hours day to show improvement of eathena by DEFAULT) + +08/21 + * Updated battle_athena.conf to be in English (not Engrish) [Ancyker] + * Updated WZ_FIREPILLAR according 8-10 patch [AppleGirl] + * Updated skill_cast_db and skill_require_db according to 8-10 kRO patch [AppleGirl] + * Added how to use skill_castnodex_db.txt [AppleGirl] + * Added skill_castnodex_db.txt, allowing some skills to be casted with out dex's effect on them + Midas' idea [AppleGirl] + * Improved answer messages of char-server on @(un)ban/@(un)block GM commands [Yor] + * Added answer messages of char-server on @(un)ban/@(un)block GM commands [Yor] + * Added block command (ladmin c) [Yor] + * Added block command (ladmin perl) [Yor] + * Fixed job_db1.txt comments to be in english, also spaced the columns to make it easier to read. [Ancyker] + * Added: possibility to use "" or '' to give an account name in ladmin (Perl) (no more problem with account name which have spaces). [Yor] + * Changed: atcommand_gm_only is set to 'no' by default, because: [Yor] + - GM commands level now works correctly + - GM commands levels are now set by default with diffrent types of GM + * Added @inall/@exall GM command to block/unblock ALL wispers of a player [Yor] + +08/20 + * Added unblock command (ladmin C) [Yor] + * Added unblock command (ladmin perl) [Yor] + * Fixed: when limited time is in past, add new duration starts from actual time [Yor] + * Added chardisguise/charundisguise [Kalaspuff] + * Added default time [23:59:59] for timeset/banset ladmin (C) commands [Yor] + * Fixed sage rebirth ability at professor job change NPC. [PoW] + * Fixed pecopeco knight/crusader rebirth ability at LordKnight and Paladin job change NPCs. [PoW] + * Added default time [23:59:59] for timeset/banset ladmin (perl) commands [Yor] + * Added a check_ip_flag option in char-server [Yor] + * Added a check_ip_flag option in login-server [Yor] + * Added a display at start of login-server about IP checking configuration. [Yor] + +08/19 + * Added unban/unbanish command (ladmin c) [Yor] + * Added unban/unbanish command (ladmin perl) [Yor] + * Added parameter to choose how works timeadd (ladmin command) with unlimited time accounts [Yor] + * Fixed @option/@charoption when player is disguised. [Yor] + * Added: some information about TODO 19. [Yor] + * Added: possibility to use "" or '' to give an account name in ladmin (C) (no more problem with account name which have spaces). [Yor] + +08/18 + * Guardians were immune to skills/spells, fixed. [Valaris] + * Added custom draculax.txt script to display npcskilleffect command. [Valaris] + * Added npc/events/custom folder. [Valaris] + * Fixed Umbala Language Quest NPC bug [PoW] + * Added temporary prevention of crash caused by peco + disguise, will look into a better solution. [Valaris] + * Changed working of putting disguise on (much like Yor's setpos with undisguise) [Valaris] + * Changed disguise id check to > 23 instead of max_pc_class. [Valaris] + * Added bDisguise script command for items. [Valaris] + Syntax : bonus bDisguise,npc_id/mob_id; Example bonus bDisguise,1002; for poring disguise + * Added flag so @disguise command will override any disguise scripts. [Valaris] + * Updated @disguise description in help.txt. [Valaris] + * Added: @ignorelist/@charignorelist to know from which people a player ignore wisps [Yor] + * Renamed: @makepet -> @makeegg (@makepet will be created later to create pet, not a egg) [Yor] + * Fixed Phantom of Opera quest, fixed quests_aldebaren requirements [PoW] + * Changed: anti-freeze disconnection in char-server set from 1mn 15s to 30s [Yor] + * Fixed: free block memory on NULL pointer in char-server do_final [Yor] + * Fixed: reset server information when map-server disconnected from char-server [Yor] + * Changed: anti-freeze disconnection in login-server set from 1mn 15s to 30s [Yor] + * Improved pecopeco checks in @option/@charoption/@jobchange/@charjob [Yor] + +08/17 + * Fixed pecopeco displayings in @option/@charoption/@jobchange/@charjob [Yor] + * Correction of @rura, @where, @rurap and some other things in GM commands. [Yor] + * Correction of a parameters' errors in GM commands. [Yor] + * Correction of @charzeny Gm command (+ @zeny/@charzeny can add and remove zeny without problem). [Yor] + * Acolyte Job Quest: Fixed Marthilda, Yosuke NPC bugs. [Lupus] + * Added some comments in .conf about @gm [Yor] + * Fixed max value of level_new_gm parameter (not 100, but 99) [Yor] + * Added level_new_gm parameter in login-server to disable or set level of all GM created by @gm [Yor] + * Fixed @GM GM command [Yor] + +08/16 + * Translation of final message of @gm [Yor] + * Fixed on @GM: When login server is offline, char server sends impossible to create GM [Yor] + * Fixed: refuse @gm GM command to ... a GM :) [Yor] + * Added complete answers of /in /ex /inall /exall. [Yor] + * Added option to send information to online GM when there is a hack, a spoof name, etc. [Yor] + * Added individual ignore management, and wisp checks [Yor] + * Added TODO 33 [Yor] + * Fixed possible overflow with @ban GM command [Yor] + * Speed up a little @ban GM command [Yor] + * Added ignore all for wisps (to same map-server). Sorry, before, I was added only for not same map-server [Yor] + +08/15 + * Added a resume for 'email_creation' parameter [Yor] + * Fixed double messages when a player wisp/page itself [Yor] + * Added ignore all for wisps [Yor] + * Added better explanation for the new 'email_creation' parameter [Yor] + * Fixed: now, GM accounts are sended to all servers when auto-detect change of GM file is actived [Yor] + * Fixed: at auto-creation of e-mail, don't ask the player if login-server is offline (we need login-server to save e-mail) [Yor] + * Used config_switch instead of atoi for email_creation parameter [Yor] + * Added an option to create e-mail at connection with client [Yor] + * Added authentification with login_id2 (1040) - activated by default [Yor] + * Added partial part of authentification with login_id2 (1040) [Yor] + * Added some missing GM commands in help.txt [Yor] + * Improved search of map-server when map is not found [Yor] + * Added banish in ladmin (c) to be like of GM commands [Yor] + * Fixed Angel Helm quest, fixed Spore Doll quest exploit, Fixed Morgenstein quest bug [Lupus] + +08/14 + * Added banish in ladmin (perl) to be like of GM commands [Yor] + * Fixed some possible errors with maps management in char-server [Yor] + * Fixed bug of map searching when to few maps on map-servers [Yor] + * Changed some console displayings in char-server [Yor] + * By default, activation of player ip check [Yor] + * Added some of 1040: check of player ip between each server [Yor] + * Fixed dupes in warp scripts, reorganized, thanks to midas fro GH warp [kobra_k88] + * Added possibility to disable automatic reload of GM accounts file [Yor] + * Added log when GM accounts file can not be readed [Yor] + * Changed default of GM accounts file check for 120 sec to 15 sec [Yor] + * Added automatic reload of GM accounts file if it was modified [Yor] + * Added @mapmove, @broadcast, and @localbroadcast in help.txt [Yor] + * Fixed possible error of monster id (GM command) if monster begins by a number. [Yor] + * Added jobname in @charstats command. [Yor] + * Fixed: If a GM command uses NULL pointer as command function, there is no more crash. [Yor] + * Fixed Niflheim&Umbala guides. Fixed Niflheim city. removed 2 NPC clones. [Lupus] + * Added Archer Skills quests, fixed Thief Skill Quest [kobra_k88] + +08/13 + * Add an option to fix a ban for hacker that spoof name (to set minutes of ban) [Yor] + * Fixed incorrect mob IDs with Valaris's mob_db [Ancyker] + * Added possibility to execute GM commands when you wisp someone [Yor] + * Added a console message when a player try to spoof his name in Global message [Yor] + * Added size of packet in packet send by map-srvr to char-srvr about online players [Yor] + * Added check on individual stat at creation of a character [Yor] + * Added npcskilleffect script command. Will allow npc to show effects of certain skills on specified XY coordinate. + Syntax : npcskilleffect 21,10,148,150; skillid, skilllv, x, y. [Valaris] + * Increase maximum weight can be used with an item now, thanks to orn. [Valaris] + * Fixed mob names in Gonryun , thanks to unsul and Filougarou. [Valaris] + * Fixed muramasa curse rate, thanks to OxiMoron. [Valaris] + * Fixed Aldeabran&Comodo towns. Added Cheese quest to Comodo. Fixed Thief Job Quest [kobra_k88] + +08/12 + * Begin to add 1040 in login/char/chrif about authentification. not finished [Yor] + * @mapmove, @broadcast, and @localbroadcast can now be used. [Valaris] + * Looting mobs will not continue to item if it disappears, instead will walk away. [Valaris] + * Unitinalized nameid in script.c [Valaris] + * Added position in log when unknown packets are saved (login-server). [Yor] + * Corrected possible error to contact not good player when a wisp concerns player on an other map-server. [Yor] + * Added a function to obtain character name with index in auth structure (char.c). [Yor] + * Corrected check/test error in mapif_send. [Yor] + +08/11 + * itemdb_searchname fixed (now firstly looks for item aliases 'name', if not found looks for item name 'jname'). [Lupus] + * Optimized getitem, delitem. getweight, fixed there possible scripts exploits [Lupus] + * Thief bug's long name in mob_db.txt was Thief Bug Larva, fixed. [Valaris] + * Thief bug names were mixed around in monster.txt, fixed. [Valaris] + * Fixed incorrect parse of usable item rate. [Valaris] + * Added ban command in ladmin (C), like GM command [Yor] + * Terminated some translations about wisp/page, and control/improvement/correction of wisp/page. All 'found' bugs are corrected [Yor] + * Added translations in inter.c about wisp/page. [Yor] + * Corrected printf datas in intif_parse_WisMessage when map-srv receives wisp message from inter-srv. [Yor] + * Sended an answer when a wisp/page is supressed because of a timeout. [Yor] + * Improved: if inter-srv is asked for a wisp, verify first if the character exists. Don't ask all map-server if it not exists. [Yor] + * Changed Printf in intif_wis_message to have better information. [Yor] + * Improved: Don't ask inter-server for a whisp/page if player is on the same map-server. [Yor] + * Completed some printf and comments in char.c [Yor] + +08/10 + * Improved map_nick2sd function. Now, sensitiv case is removed when it's possible [Yor] + * Corrected split of broadcast messages in char-server [Yor] + * Message to Valaris from Yor (special file) + * Improved accounts file saving: [Yor] + - be sure that accounts file is save at least every minute. + - save accounts file at end of login-server + * Reduce displaying size on some errors about accounts file reading. [Yor] + * Created log when change sex packet give an invalid value (login-server) [Yor] + * Correction of unknow_packet displaying (in log). Separate is done after 8th char [Yor] + * Give possibility to use account name with spaces in prompt commands finished by account name in ladmin (perl). [Yor] + +08/09 + * Fixed char-server lag. 3 tests from 3 people appeared to function properly again. [Valaris] + * Basic Implementation of Basilica [AppleGirl] + * Added ban command (ladmin perl) [Yor] + * Correction of bug about auth_fifo when we block a player. Invalid value in array (login.c) [Yor] + * Correction of some tests on server_fd array in login.c [Yor] + * Improved Item_searching in all GM commands [Yor] + * Created @undisguise GM command [Yor] + * Added Umbala town&quests&guide. Some fixes in Yuno warps&shops&guides. Kafra fix. Added Valhallen quest. [kobra_k88],[Lupus] + * Corrected char_divorce (char-server) to remove ring to both partner [Yor] + * Eventual crashfix for clif_authfail_fd [Kalaspuff] + * Corrected @jump GM command. [Yor] + * Reduced size of conf/help.txt (max 200 lines in chat window). [Yor] + +08/08 + * Added NPCs to @disguise. [Valaris] + * Mob disguises will now show up to player using it as well. Attack animation and sitting do show up to them yet. [Valaris] + * Added @disguise GM command in help files [Yor] + * Added @go 16 to visit prisoners [Yor] + * Reduced number of accounts file saving when informations are not important: [Yor] + - save immediatly any modification/creation/deletion of account (like before) + - use counter before saving if only ip/time of last connection is changed (normal authentification) + because these values are already save in log file. + * Speed up account searching in login-server. [Yor] + * Speed up character searching for @(un)block/@(un)ban. [Yor] + * Created @unjail/@discharge GM command. [Yor] + * According to GM definition level in at_command.conf, set level 20 to online_gm_display_min_level for online files. [Yor] + * Speed up some sortings of online creation (strings based sortings) [Yor] + * Fixed nullpointer crash with disguise in clif_changelook [Kalaspuff] + +08/07 + * Fixed so spells will still be cast if target walks out of range. (please don't overwrite this again) [Valaris] + * Corrected a little error in online files creation (only 1 player was visible) [Yor] + * Optimized memory management of online list [Yor] + - less memory usage + - less tests and loops (more speed) + - more efficient (use directly char_dat position instead of search it) + * Added Official Assassin Job Quest. Now eAthena contains all 2-1 Job Quests! [kobra_k88] + * Fixed scripts: 32hats, warper2, platinum_skills, added/changed some mapflags and other misc script changes [Lupus] + * Added @disguise command (enter a mob_id or name, and you will appear to others as that mob/npc!) + * Fixed code for mob disguises, should not crash clients now. + * Improved online management code when we receive char_id. [Yor] + * Added code for mob disguises. Can not set yet. Atcommand needs created. [Valaris] + * Improved mmo_char_send006b function [Yor] + * Corrected: when save file of character can not be created, try backup file if flag is set to create it. [Yor] + * Added an option to create backup of characters file [Yor] + The backup_txt file was created because char deletion bug existed. + Now this bug is corrected and no character disappear. + But, create a file with a lot of characters can use CPU usage and decrease hard disk speed. + So, I create an option with default value: no create backup. + * Improved online management code and some others little codes (char.c). [Yor] + * Respawn points of prisoners set to the jail rooms. Jail.txt mapflag addeed. So imprisoned players can't escape. [Lupus] + +08/06 + * Improved/Optimized some little code (char.c/login.c). [Yor] + * Improved 0x2afa and 0x2afb (map transmissions between char and map). [Yor] + * Optimized global message nick spoof fix. [Valaris] + * Fixed crash in attacking guardians in a null guild. [Valaris] + * Capped earned exp at 1000000000. [Valaris] + * Set area size back to 20 for now, some things in path.c need to be fixed. [Valaris] + * Fixed crash in guardian search. [Valaris] + +08/05 + * Added @jail GM command [Yor] + * Added explanation of @idsearch and @mapinfo in help.txt [Yor] + * Improved @idsearch GM command [Yor] + * Improved a little 3 loops in ladmin.c [Yor] + * Improve some codes in char.c: [Yor] + - less tests in online creation + - mmo_char_send006b: remove duplicated memset, create a char_dat structure pointer + - server_fd[] not seted/modified/checked correctly + * Set max_walk_path back to 48. [Valaris] + * Added translated Gonryun town. Fixed map names of Louyang shops. Added missing Blacksmith, + added extra Rapairmen into refine.txt. In Inns added 4 different prices based on Base Lvl.[kobra_k88] + +---------eAthena 1.0.0 RC3 TXT--------- +08/04 + * Set battle_athena.conf to more accurate settings. [Valaris] + * Decreased default damage delay (stun after being hit) by 75%. [Valaris] + * Max walk path is now correct (17). [Valaris] + * Area size is now correct (14). [Valaris] + * Improved some very little codes in char.c. [Yor] + * Remove displayings of logs on console of map-server [Yor] + use it for DEBUG, not by default, that decrease a lot the performance + * Added (commented) printf in freeze function for debug if necessary [Yor] + * Fixed melee ctrl-attack targetting. [Valaris] + * Reset attack target when equipping arrows. [Valaris] + * Improved (log and remove_control_chars functions). [Yor] + * Added 'available free bytes' in displaying when size is expanded. [Yor] + * Fixed incorrect returns in clif_authok. [Valaris] + * Added pointer checks to chrif.c [Valaris] + * Added some pointer checks to the mob ai. [Valaris] + * New (lag-free) fix for NPCs / mobs not showing up when chars walk around [Kalaspuff] + +08/03 + * Made so if exp given is less than 0, 0 is given instead of 1 (plants were giving exp) [Valaris] + * Added console displaying to have complete informations when we expand Wdata session. [Yor] + * IMPORTANT: Add a TODO 31 for Guilds' coders. [Yor] + * Old packet 0x2b16 use packet number 0x2b0e. [Yor] + * remove packets 0x2b0e and 0x2b0f. [Yor] + * on character_name ask packet: add account_id of asker. [Yor] + * Improved script code in novice.txt. [Yor] + * Fixed error in alberta.txt. [Valaris] + * Allow player placement on afm-type maps. [Valaris] + * Added afm loading. [Valaris] + * Removed useless code for mob equipment. [Valaris] + * Initial packet setup for possible playable mobs. [Valaris] + * Added check for save_clothcolor for the dyefix, and added another check to make sure player is dyed before using the fix. [Valaris] + * Improvement: Character asking of map-server to char-server is not more case sensitive. [Yor] + * Added TODO 29 & 30. [Yor] + +08/02 + * Re-added "player not attached" error reporting. [Valaris] + * Fixed errors in 32 hat quest that was causing player not attached errors. [Valaris] + * Fixed input number function: commented out negative input check by Valaris in script.c (all scripts have been revised and fixed), + made actual bug fix of buildin_input func (wrong variable type conversion (int)->(unsigned int) in clif.c + Due to the fixed bug Merchant Job Quest works fine now [Lupus] + * Fixed number input bugs/possible exploits: mage.txt IceCream.txt event_valentine.txt refine.txt + milk_trader.txt grandpa_pharmacist.txt aldebaran.txt alberta.txt juice_maker.txt [Lupus] + * Finished: offline player can be @ban/@block/@unban/@unblock by their character name. [Yor] + * Added packet between map to char to work on offline players (@ban/@block/@unban/@unblock) [Yor] + * Added check on character name with less than 4 characters [Yor] + * Added @chardelitem GM command [Yor] + * Fixed Kafras (no more buttonless msg bugs, Kafra Pass works fine) [Lupus] + * Changed input exploit, only checks for negative now instead of having an input cap. Fixed up vending exploit. [Valaris] + * Added check for src with High Wizard's soul drain. [Valaris] + * Fixed up npc_suicide and npc_selfdestruction, should fix up crashes caused by them. [Valaris] + * Added more pointer checks in the clif_authok function. [Valaris] + * Added some pointer checks to clif.c, should prevent crashes. [Valaris] + * Added some checks about writing errors of item names in GM commands (check cases). [Yor] + * Fixed Hunter Job Quest 1.6 [Lupus] + * Removed Kalaspuff's fix for mob/npc data not always being recieved. It was causing + excessive amounts of lag. [Valaris] + +08/01 + * Added ability to spawn character pets. [Valaris] + * Added show_mob_hp. [Valaris] + * @item/@item2 GM commands now work correctly with name begining by a number. [Yor] + * @spawn/@monster2 GM commands authorise spawn of guardians. [Yor] + * Fixed so guardians may be spawned outside of castles. [Valaris] + * Fixed/Improved @spawn/@monster2 GM command. [Yor] + @spawn/@monster2 GM command: you can use space in the desired name now (use "") [Yor] + * Added TODO 26 and 27. [Yor] + * Guardians if owned by a guild will display guild name and castle on name request. [Valaris] + * Added checks for null blocks in mapforeachin functions. [Valaris] + * Addition of a GM level 99 account for test of GM commands. [Yor] + * Creation of a default structure for GM levels (sub-gm, gm, admin, etc.). [Yor] + * Improved @time GM command (better code and display more informations). [Yor] + * Added informations about game time in @time command [Yor] + * Added @time command to have server time [Yor] + * Fix night at start if administrator want night and there is no duration for night and day [Yor] + * Fix for NPCs / mobs not showing up when chars walk around [Kalaspuff] + * Begin @unban/@unblock GM command (structure done). [Yor] + * It's now possible to disable Night or Day (set to 0 in battle.conf). [Yor] + * @day/@night: when already the desired cycle, display a message. [Yor] + * Fixed overlapping Ice-Cream Maker NPC, duplicated NPCs, restored duplicated Akaru's MrSmile [Lupus] + +07/31 + * Terminated: night/day cycles. [Yor] + * When a state comes back to normal, player stay in night if it's night. [Yor] + * Started to add management of day/night: [Yor] + creation of 3 parameters in battle.conf + TODO: usage of these parameters (later). + * added line '// $Id: Changelog.txt,v 1.65 2004/09/29 17:31:42 kalaspuff Exp $' in all code source files to avoid overwrite in CVS. [Yor] + * Fixed number/quantity in @item command. [Yor] + * Fixed when night and disconnect/reconnect, it's night. [Yor] + * Removed extension to check a map in char.c (less tests). [Yor] + * Added savepoint coordonates (x,y) if player is set to a new map (char.c). [Yor] + * Added izlude to check major cities. [Yor] + * Began adding developer mobs. [Valaris] + * Added dyes and fixed client crashes with player mobs. [Valaris] + +07/30 + * Added temp fix for "nullpo player not attached" error message (script.c script_rid2sd) [Lupus] + * Added checks for major cities in afm format. [Valaris] + * Added preliminary AFM(Advanced Fusion Map) support. Actual map-reading works, but rest of server needs to recognize them. + Thanks to alexkreuz [Valaris] + * Changed Map and NPC loading display. [Valaris] + * Removed unneeded 'End' and duplicate 'end' script commands. [Valaris] + * Added 'language ' command in ladmin (perl) to change language of displaying. [Yor] + * Fixed atcommand_gm_only parameter: [Yor] + 0: you can define level command '0' for normal players (gm level 0) + 1: even you define a level 0 for a command, normal player can not use it. Only GM level 1 or more can use command (if command level is possible for this GM) + Note: This parameter is not like atcommand_for_all (this parameter doesn't exist actually) . + * Fixed Kafras (Cart Service for Super Novice), some warps in Morroc, Aldebaran. [Lupus] + Added official shop into St.Abbey. [Lupus] + Added quests: Lutie Town Hat Quest by TonyMan, 23 new hats custom quest. [Lupus] + Fixed jobchange.txt. [Lupus] + Improved pvp.txt. [Lupus] + Rearranged and updated! (now in 2 variants) mapflags. [Lupus] + Updated map_athena.conf [Lupus] + * Fixed: battle_athena config's atcommand_gm_only; yes was no and vice versa [Kalaspuff] + +07/29 + * Added 'language ' command in ladmin.c to change language of displaying. [Yor] + * Re-added guardians don't attack guild members, someone must have removed it by accident. [Valaris] + * Restore correct displaying (LAN/WAN) previous was good :) (sorry... prabably tiredness). [Yor] + * Fixed some errors in novice.txt script. [Yor] + * Kashy's script fixes. [Valaris] + * Displaying of correct information in LAN/WAN test (displaying was reversed) in char.c [Yor] + * Creation of a char_unblocked directory (char directory is blocked) [Yor] + - modification of makefile + * Added a note in TODO 14: encrypted password - problem with client versions [Yor] + +---------eAthena 1.0.0 RC2 TXT--------- +07/28 + * Added metaller to equipped mobs. [Valaris] + * Added a note in TODO 19 [Yor] + * REMOVED last changelog: cvs server: [14:29:29] waiting for cvs's lock in /usr/cvsroot/athena/src/char [Yor] + * Displaying of correct information in LAN/WAN test (displaying was reversed) in char.c [Yor] + * Added "OMG" emotion to weapon/armor breaking. [Valaris] + * Removed space in a pointer in mob.c. [Valaris] + * Restored previous version of lan management in login.c, because: [Yor] + - check test was incorrect (no mask for controled ip). + - in check test, we recalculate every time the subnetwork (loss of time). + - impossible to have a name definition for the sub-network (some network administrator use a name to define the sub-network). + - no more default configuration of sub-network. + - possible errors in the reading function of the lan file. + - no more logs about sub-network. + - BUT, conserved: - new default name for lan file + - color for displaying of LAN/WAN + * Removed some memsets from chrif.c that caused segfaults. [Valaris] + * Added fix for anklesnare and spiderweb. [Valaris] + * Added Kashy's Lan Support code. [Valaris] + * Removed variables and assignment used by prevent_multi_login. [Valaris] + * Removed prevent_multi_login. (many problems reported with it) [Valaris] + * Fixed armor breaking. Was being broken when pc was attacking instead of when being attacked. [Valaris] + * Fixed checkcart, checkfalcon, checkriding (they didn't return any value) in script.c [Lupus] + * Fixed breeder.txt renter.npc, kafras NPC (added correct class check, added correct checkcart, checkfalcon, checkriding) [Lupus] + * Fixed Kafra functions_kafras.txt NPC (added correct checkcart, fixed cmall cart giving bug) [Lupus] + * Fixed Kafra functions_kafras.txt NPC (fixed Kafra Pass exploit) [Kobra_k88] + * Fixed Hunter.txt coords of the Guild entrance warp [Lupus] + +07/27 + * Improved check command in ladmin.c [Yor] + * Added map_id check in map_foreachinarea, to prevent eventual crashes [Kalaspuff] + * Added @enablenpc and @disablenpc in help files [Yor] + * Fixed Thunder Storm range (thanks midas) [Kalaspuff] + * Added Anthell NPC trigger in Morroc.txt warps/town [Lupus] + * Added missing Warps for Job Quests of Swordman, Hunter and Thief in jobquests.txt [Lupus] + * Updated atcommand_conf, missing GM-level for @enablenpc and @disablenpc [Yor] + * Removed possible overflow error in @enablenpc and @disablenpc [Yor] + * Updated atcommand_conf, missing GM-level for haircolor [Kalaspuff] + * Improved best job test in novice.txt [Yor] + * Improved @go command: [Yor] + - give list of cities if no value + - added start point (to welcome newbies) + - give possibilities to use city names (@go geffen): at least 3 characters, and some writing errors are tested + * Replaced every Job Quest Script (excluding Assassin, 2-2 and 2-2-X ). Now all 2-1 Jobs have big quests. [Kobra_k88] + * Replaced all Skill Quests (Added Sand Attack Skill Quest). [Kobra_k88] + * Added Legendary Swords quest. [Kobra_k88] + * Replaced 6 towns with new scripts: Izlude, Prontera, Morocc, Geffen, Alberta, Al De Baran. Splitted all towns quests into files. [Kobra_k88] + * Splitted and optimized Kafras & Guides. [Kobra_k88] + * Implemented Kafra Pass! [Kobra_k88] + * Removed free Breeders (replaced by the correct ones). [Kobra_k88] + * Placed all Sign Posts/Signs into a single file. [Lupus] + * Files arrangement, additional warps/scripts correction. Fixed several scripts (NPC overlapping, bad sprites, etc). [Lupus] + +07/26 + * More accurate pvp point system. It skips ranks, needs more work. [Valaris] + * Fixed crash in executioner card code. [Valaris] + * Fixed mob respawn after death bug. [Valaris] + * Fixed exp problem caused by bounds checking. [Valaris] + * Fixed pvp rank so only one person may be rank 1. [Valaris] + * Any time a person is on a pvp map, the rank will calculate, preventing bad rank packets from being sent. [Valaris] + * Added Job Agencies for Training Ground (novice.txt). [Yor] + * PVP respawn client crash fix. [Valaris] + * Fixed small error in kafra.txt [Syrus22] + * Finished adding special equipped mobs. [Valaris] + * Added 2 living statues behind the NPC 'Monster Master'. [Yor] + * Removed infinite possibilities to have items from helper (novice.txt, new_1-4.gat,60,149). [Yor] + * Added 2 living statues behind the NPC 'Monster Expert'. [Yor] + * Improved a little 1st course of novice training. [Yor] + +07/25 + * Allow mobs to be equipped with pet armor. mob_avail and clone mobs need to be created. [Valaris] + * Removed [AppleGirl]'s armor breaking code. [Valaris] + * Commented out data_dir. [Valaris] + * Finished exp bounds checking. [valaris] + * Added negative value checks to clif_updatestatus. [Valaris] + * Added exp bounds checking for those rediculously high rate servers. [Valaris] + * Added bounds checking to the @zeny and @charzeny commands. [Valaris] + * Improved and corrected some errors 1st course of novice training. [Yor] + * Removed no guild check for Guardians. Guardians SHOULD attack people with no guild. [Syrus22] + * Fixed Alliance check in mob.c [Syrus22] + * Added armor breaking to normal battle (crits will double the chance) [Valaris] + * Fixed mistake in map.c causing compile errors. [Syrus22] + * Fixed backstab bow penalty option. [Syrus22] + * Fixed Alliance check in battle.c for emp/guardian damage. [Syrus22] + +07/24 + * Added backstab bow penalty option [Akaru] + * Fixed OnGuardianDied events on prontera castles 3 to 5. [Valaris] + * Another vending fix. [Valaris] + * Fixed bugs in npc headers caused by someone using spaces and not tabs. (kafra.txt, guide.txt, yuno.txt) [Valaris] + * Fixed a vending bug. [Valaris] + +---------eAthena 1.0.0 RC1 TXT--------- +07/22 + * Fixed numerous startup errors in aldebaron castles and one geffen castle. [Valaris] + * Full Guild Wars Script Complete!!! [Akaru] + * Fixed rice ball item. [Valaris] + * Fixed problems with options and peco riding. [Valaris] + * Updated item_db with fix for Sleipnir and more translations. [Akaru] + * Translated item_violetbox, mob_poring, mob_branch, mob_boss. Fixed wizard.txt (wrong item id), headgeatquest.txt(added Zeny check) [Lupus] + +07/21 + * Updated refine.txt. Added optional features and optimized the file. [Syrus22] + * Evened out the # of columns in mob_db, filled in some blanks. [Valaris] + * Undid compilation errors caused by Akaru's removal of nullpo.o from map-server compile [Valaris] + +07/20 + * Removed Ghostring from gef_fild13.gat [rg] + +07/19 + * Fixed Graffiti [Valaris] + * Zeny Bug In Vending Fixed [Darkchild] + +07/18 + * Added a check about level of at_command when reading the file [Yor] + * Updated /help and conf/help.txt [Yor] + * Added @nuke command in conf/help.txt [Yor] + * More WoE Castles Done [Hikaru] + * Changed: inter.txt->inter.log in log directory [Yor] + * Added some char_log when character can not be created (invalid value, invalid name, etc...) [Yor] + * Changed: char.txt->char.log in log directory [Yor] + * Update features.html/changlog.html [Yor] + * Fixed compilationissue on FreeBSD [Kalaspuff] + +07/16 + * Remove limit for kami/kamib ladmin command. [Yor] + * Fixed crash in weddingtxt.txt where it was checking an invalid equip index. [Valaris] + * Added some TODO for next version. [Yor] + +07/15 + * Changed: login.txt->login.log in log directory [Yor] + * added system to choice authorised ip for remote administration [Yor] + * Added listBan/listOk commands in ladmin's. [Yor] + * Speed up a little search_mapserver function. [Yor] + * Init map strings of each servers when map-server send informations. [Yor] + * Added some TODO for next version. [Yor] + +07/14 + * Fixed another lockup with multi_level_up [Valaris] + * Added kami(yellow)/kamib(blue) commands in ladmin (terminated). [Yor] + * Fixed name of ladmin_athena.conf. [Yor] + * Fixed mvp item reading. [Valaris/Syrus22] + * Added new move packet in map (ver.13jully04) [Yor] + * Added new auth packet in map (ver.13jully04) [Yor] + * Added kami/kamib commands in ladmin. not terminated: to do: login->char [Yor] + * Updated Some Npcs [Darkchild] + * Added Gefenia Warps [Darkchild] + * Added Berzebub Quest [Darkchild] + * Removed random alchemist marine sphere code, until some other system is worked out. [Valaris] + * Fixed infinite loop caused by turning multi level off. [Valaris] + * Added display id the char-server is freezed. [Yor] + * Added debug printf about the max_connect_user in char-server. [Yor] + * Added banadd command in ladmin.c [Yor] + * Removed duplicate check in chrif.c. [Yor] + +07/13 + * Fixed GM_level code in map-server. [Yor] + problem is in the hash system of the db -> use simple db until we found solution. + note: for this db, it's not necessary to use a db system (little db, 2 values: key, value) + * Improved GM_level code in map-srv, but not solve the problem. [Yor] + * Fixed error of 'return' without value in chrif_parse (chrif.c). [Yor] + * Added character name, account id and gm level on console in map-server when auth is accepted. [Yor] + * Added gm_level of the account on console in char-server when auth is accepted. [Yor] + * Added gm_level of the account on console in login-server when auth is accepted. [Yor] + * Added timeadd command in ladmin.c [Yor] + * Added help for each command (help ) in ladmin (perl and c). [Yor] + * Fixed global message (normal speak) name spoof exploit. [Valaris] + * Added timeset command in ladmin.c [Yor] + * Added banset command in ladmin.c [Yor] + * Added vending and trading dupe fixes, thanks to Kinko and Kazzy [AppleGirl] + * Added multi_level_up command to battle_athena and commandline. [Valaris] + Turning it off will allow a player to only level up once from a monster. + * Added: explanations of ladmin_athena.conf keys in conf_ref.txt. [Yor] + * Fixed: init mmo_map_server structure (to 0) in char-server. [Yor] + * Added Gefenia Maps [Darkchild] + * Added @nuke command do to user request. [Valaris] + * Removed nick spoof fix code for now, it broke chat. [Valaris] + * Added some code for @nuke command. [Valaris] + * Finished adding battle_athena options to command line. Every option in battle_athena.conf + can now be passed directly through the command prompt. [Valaris] + +07/12 + * Added many battle_athena options to command line arguments. [Valaris] + * Allow battle_config_switch to be used globally in map-server. [Valaris] + * Rewrote map-server command-line code. Will now begin implemented nice commands for map-server. [Valaris] + * Added BETA version of ladmin in C. [Yor] + * Added new packet structure of authentification and move - automatic detection. [Yor] + * Added /item command. It is same as /monster. Both commands will search for mobid first, if not found will give item. [Valaris] + * Fixed a displaying error in state command (perl ladmin). [Yor] + * Added /monster command. Syntax is /monster . [Valaris] + * Fixed chat spoofing in global messages. [Valaris] + * Prevent nick spoofing in whispers. [Valaris] + * Added check about lenght of packet 0x72 for new client version [Yor] + * Added Pet Equip Items Quest Npc + * Added Pet Taming Items Quest Npc + * Added Slotted Sunglasses Quest Npc + * Added pet_equip_required option for pet skills. [Valaris] + * Changed: create a sub-function for help command in ladmin (perl). [Yor] + +07/11 + * Added Petit pet skill. [Valaris] + * Added some code for Petite Heaven Drive, still does not work, but doesn't crash. [Valaris] + * Fixed dokebi and baby desert wolf pet skills. [Valaris] + * Added Orc Warrior, Hunter Fly, Poison Spore, Baby Desert Wolf, Baphomet Jr, and Dokebi pet skills. [Valaris] + * Added script command petskillattack.[Valaris] + * Fixed search command in ldamin (perl) ignore sensitive case now. [Yor] + * Fixed default to 0 for save_unknown_packets configuration in login. [Yor] + * Fixed the warnings about implicit declarations. [Kalaspuff] + * Added @guildrecall/@partyrecall commands. [Yor] + * Added Isis pet skill. [Valaris] + * Added petmag script command for magnificat. [Valaris] + +07/10 + * Added Banker NPC because alot of users wanted one. [Syrus22] + +07/09 + * Added Sohee pet skill. [Valaris] + * Added petheal command. [Valaris] + * Added Smokie pet skill. [Valaris] + * Added bonus bPerfectHide for Smokie pet skill. [Valaris] + * Added Spore pet skill. [Valaris] + * Created petrecovery script command. [Valaris] + * Added Poring, Drops, Poporing, and Yoyo loot skills. [Valaris] + * Added petloot script command for pet looting. [Valaris] + * Removed pet_loot config settings. [Valaris] + * If pk_mode is on, a message will show up in map-server. [Valaris] + * Fixed pk_mode extra experience and drops so will occur if monsters is 20 levels or higher than player. [Valaris] + * Fixed @killmonster crash caused by implementation of pk_mode. [Valaris] + * Finished setting up pk_mode, should be 100% complete now. [Valaris] + * Added nopvp.txt for pk_mode. [Valaris] + * Prevent novice engagement in pk_mode. [Valaris] + * Fixed up and changed the exp penalty system. [Valaris] + * Pk_mode will now give double exp loss if killed by player. [Valaris] + * Updated conf/help with new commands [Yor] + * Removed more pvp timer stuff from pk_mode [Valaris] + * Increase drop rates +25% if over level 20 on pk_mode. [Valaris] + * Changed +25% exp increase on pk_mode to 15%. [Valaris] + +07/08 + * Disabled pvp rank and timer if pk_mode is on. [Valaris] + * All maps made pvp if pk_mode is on. [Valaris] + * pk_mode additional 25% exp given over level 20 [Valaris] + * Disable @pvpon and @pvpoff commands if pk_mode is on. [Valaris] + * Added pk_mode option in battle_athena.conf (not yet implemented) [Valaris] + * Reworked prevent_multi_login, should work perfectly now. [Valaris] + * Removed need for eof=2 for prevent multilogin, will now just delete the blocks containing both sessions. [Valaris] + * Added map-servers anti-freezed connection in char-server. [Yor] + * Added char-servers anti-freezed connection in login-server. [Yor] + * Fixed spy commands so that inputting the same id/name turns off the command. [Syrus22] + * Created @partyspy command. [Syrus22] + * Renamed search_guildname function to conform with normal naming standards in guild.c. [Syrus22] + * Created @whomap/@whomap2/@whomap3 commands to show online players on a specifical map. [Yor] + * Updated and Shrunk the Kafra Script. [Syrus22] + * Create @reloadgmdb gm command. [Yor] + +07/07 + (Dated On Aegis Website) + *--Released 1.0.0 RC3--* + * Fixed crashed with prevent_multi_login. [Valaris] + * Allow infinited local logins if prevent multi_login is on. [Valaris] + * If prevent_multi_login is on, it will disconnect both clients on the same ip. [Valaris] + * Prevent_multi_login will now list the character names of both accounts when logged out, and give a message. [Valaris] + * added updated const.txt and pet_db.txt [Valaris] + * GM accounts/level updating without restarting completed (by reloadgm ladmin command). [Yor] + * Removed gm_account_filename definition from map.conf. [Yor] + * Updated GM level by reloadGM ladmin command. [Yor] + * Added a packet between char and map to send GM accounts and their level. [Yor] + * Added a GM minimum level option to display 'GM' in online files. [Yor] + * Added a warning when a GM account is defined twice in the file. [Yor] + * Check for castle before guardian searches for emblem. [Valaris] + * Prevent stealing from treasure boxes. [Valaris] + * Enable mounted classes to use pedestrian counterpart's items. [Valaris] + * Change so petskillbonus will only update stats(client-side) if need be to prevent errors. [Valaris] + * Fixed crash with putting pets with skills back into egg. [Valaris] + * Added Steel ChonChon, Rocker, and Deviruchi pet skills. [Valaris] + * Added bAllStats(SP_ALL_STATS), bAgiVit(SP_AGI_VIT), bAgiDexStr(SP_AGI_DEX_STR) bonuses for pet skills. [Valaris] + * Added ChonChon, Lunatic, Picky, and Savage Babe pet skills to pet_db.txt. [Valaris] + * Added petskillbonus command for pet skills. Added pet_skill_bonus functions in pet.c. Made pointers for pet skills. [Valaris] + * Added 'GM' display option for online files [Yor] + * Improved GM accounts file reading in login-server [Yor] + +07/06 + * Changed heal dog in prontera to a poring. [Valaris] + * NPCs with mob sprites can now be used in scripts. [Valaris] + * Removed sd->brokencounter. Made getbrokenid more scripter friendly. Updated refine.txt getbrokenid commands. [Valaris] + * Mounted classes will now use equipment of their pedestrian counterpart. [Valaris] + * Improved management of GM account structure in char-server. [Yor] + * Added packet betwen login to char to send GM accounts value. [Yor] + * Added reloadGM command in ladmin to reload GM accounts file without stop the login-server. [Yor] + * Added listGM/lsGM command in ladmin to list only GM. [Yor] + * Correct an error in loop of char_divorce function (incorrect variable). [Yor] + * Added some comments. [Yor] + * Added a check on start_point.map when configuration is readed. [Yor] + * Modified final message of login log at end of login-server. [Yor] + +07/05 + * Flamelauncher,frostweapon,lightningloader,seismicweapon, and enchant poison now check to make sure target's weapon is not already enchanted. [Valaris] + * If sage breaks another person's weapon due to enchant failure, it will tell caster. [Valaris] + * Modified venom splasher to hopefully stop crashes caused by spamming. [Valaris] + * SA_FLAMELAUNCHER,SA_FROSTWEAPON,SA_LIGHTNINGLOADER,SA_SEISMICWEAPON now check to make sure target is holding a weapon. [Valaris] + * SA_FLAMELAUNCHER,SA_FROSTWEAPON,SA_LIGHTNINGLOADER,SA_SEISMICWEAPON now will break target's weapon on failure (if one + is being held and caster met requirements) [Valaris] + * Prevent unidentified and broken items from being sold. [Valaris] + * Added buildin_repair for equipment repair npc. [Valaris] + * Added repair npc to forgery in prontera. (refine.txt) [Valaris] + * Added sd->brokencounter and buildin_getbrokenid for item repair npc. [Valaris] + * Corrected some item names [rg] + * Fixed so @repairall success message and effect will only display once. [Valaris] + * Added "No items needed to be repaired" message and added forge success effect to @repairall. [Valaris] + * Added @repairall command. [Valaris] + * Added equipment_breaking option, changed weapon_break_chance to weapon_break_rate (changed to %) [Valaris] + * Crit's will now double weapon breaking chance if turned on. [Valaris] + * Added missing commands in atcommand_athena.conf. [Yor] + * Added @warpto command (same @jumpto). [Yor] + * Added increase in chance to break weapon if using powerthrust. [Valaris] + * Added weapon_break_chance to battle_athena.conf. [Valaris] + * Modified multiple login from one ip prevention(and remove gm bypass). [Valaris] + * Broken weapons will now have their description names in red. [Valaris] + * Speed up characters saving [Yor] + * Improved logs when a character isn't readed [Yor] + +07/04 + * Completed Prontera guild castles [Akaru] + * break_weapon_chance now works, but broken weapon will not be displayed any differently than a normal weapon. + Also does not yet affect a dual dagger assassin's 2nd weapon. No way to repair yet, and no skills/stats affect breaking chances. [Valaris] + * Update int_storage to include broken column on all items (updates from old version) [Valaris] + * Added @guildspy command. [Syrus22] + * Added weapon_break_chance. (Not implemented yet) [Valaris] + * Added break column for items in athena.txt (will upgrade older versions automatically) [Valaris] + * Changed default required GM levels for GM commands (effective if corresponding directive(s) in /conf/atcommand_athena.conf is/are missing) to 1 [rg] + * Added packet_table_en.txt in doc folder. Has some translations of the client_packet.txt. [Valaris] + * Prevent @monster and @spawn of guardians/emperium. [Valaris] + * Changed killmonster so it will not destroy guardians. [Valaris] + * Added prevent_multi_login in battle_athena.conf to disable multiple logins from same ip (ignores gms, and will + display ip of offending ip if turned on) [Valaris] + * Added checks on player trading to prevent possible exploits. [Valaris] + * Make sure cart is on before vending. [Valaris] + * Cleaned up vending exploit fixes. Now checks to make sure not vending more than max items per skill level. [Valaris] + +07/03 + * Prevent use of potion pitcher on oneself, fixed potion pitcher so can be used on other targets. [Valaris] + * Fixed the damage code for Falcon Assault, so its not totally useless. [?] + * Update peco riders for people upgrading athena, fixed bug in unmounting pecos. [Valaris] + * Removed option 32 from @option, added @mountpeco command. [?] + * Removing peco will revert to proper job level, fixed so jobchanging from peco status to peco user without peco status, + will update job to peco status. (ie going from Mounted crusader to Unmounted knight, will jobchange to mounted knight) [Valaris] + * Fixed so Peco mounting will not reset job level. Set to remove peco status if jobchanging to a class that does not use them. [Valaris] + * Peco mounting will now jobchange accordingly. [Valaris] + * Added checkfalcon and checkriding script commands. [Valaris] + * Added checkcart script command (since was already being used in scripts) [Valaris] + * Re-added unix fd_setsize definitions, makefile will now pass -DFD_SETSIZE=4096 only for windows compiles. + Tested new implementation of using -DFD_SETSIZE=4096 in makefile on windows box, and got past 64 connections even. [Valaris] + * Improved messages between servers about connections. [Yor] + * Improved pc_resetlvl, fixed the bug about options being left. [?] + +07/02 + * Added optional match_test in @who/who2/who3 commands (no sensitive case) [Yor] + * If there is no map-server, send right message to client (char-server) [Yor] + * Improved counter of users (char-server) [Yor] + * Improved save of characters (char-server) [Yor] + * Improved sorting of account before save (login-server) [Yor] + * Improved map search at selection of a character (char-server) [Yor] + +07/01 + * Removed FD_SETSIZE definitions from socket.h, added -DFD_SETSIZE=4096 argument to makefiles. [Valaris] + * Changed exploit fix in chrif.c [Valaris] + * Added assassin mask view_id in item_db [Valaris] + * Added a parameter to authorise minimum GM level at connection (login) [Yor] + * Fixed crash caused by making raw connection to map-server. [Valaris] + * Corrected a possible error at check of online players [Yor] + * Improved characters names control/check [Yor] + * Improved save/load of REG2 strings and values (login) [Yor] + * When there is no char-server, login-server sends proper message instead of a void list of servers [Yor] + +06/30 + * Fixed a crash when used @charmodel,@charstpoint,@charskpoint and + @charzeny with the wrong name [Kalaspuff] + * Added possibilities for switchs in battle.conf (add some foreign language) [Yor] + * Protected char-server again disconnection of login-server [Yor] + * Added possible protection against packet exploits in chrif.c. [Valaris] + * Login-server: Added an option for the format of the date (log, etc...) [Yor] + Improved some little code. + Added log for char-server packets. + * Correction of prtg_cas03.txt that crash server AT START! [Yor] + * Added functions of mapflag noskill [Kalaspuff] + +06/29 + (Dated On Aegis Website) + *--Released 1.0.0 RC2--* + +06/28 + * Added monsters_ignore_gm option. Monster won't attack GMs if turned on unless attacked and within 1 cell. [Valaris] + * Added drops_by_luk option in battle_athena.conf. Anything higher than 0 will turn this option on, and act as a mutiplier. + Example : Setting of 10 with 50 luk would add 5 to the drop rate. So say a card has a drop rate of 2, it would become 7. [Valaris] + * Fixed range and removed skill failed message from Venom Splasher, also moved some of it's code around. [Valaris] + * When a player arrive on map-server, time limit of its account is displayed if not unlimited [Yor] + * Fixed problem where warp portals broke in npc.c [Valaris] + * Updated atcommand_heal so it works like it should [Kalaspuff] + +06/27 + * Changed Venom Splasher so it will increase damage based on level of Poison React (had it set so the player had to be + using it, but it turns out it doesn't need to be) [Valaris] + * Venom Splasher now works except for the counter part. Damage is instantly dealt if skill is successful. [Valaris] + * Improved @item command to make correctly pet eggs [Yor] + * Updated Chase Walk so you can't attack while you have it casted [?] + * Removed un-needed code for graffiti from clif.c [Valaris] + * Added @ban command (to ban a player for a limited time) [Yor] + * Added @charblock command (you have been blocked by GM team) [Yor] + * Added the mapflag nowarpto [Kalaspuff] + * Updated the function of nowarp [Kalaspuff] + +06/26 + * When a player is banned (or with a state != 0), he is disconnected [Yor] + * When sex is changed, skills of other sex are reseted (and skill points increased of the same number) [Yor] + * To avoid problem with change sex and equipement, changed sex character is unequipped of all equipment [Yor] + +06/25 + * Added @charchangesex GM command [Yor] + * Changed: Changesex is now done after that the login-server has confirmed the change [Yor]. + becuase sex is saved in account file. + +06/24 + * Added new classes in change sex script command (buildin_changesex). [Yor] + * Translated pet_db.txt again [Valaris] + * Initial implementation of Venom Splasher. Runs checks on target poison status and whether or not hp is less then 2/3. + Will display skill failed if checks do not pass. Shows effect when successful. [Valaris] + * Added administration system to change final date of a banishment. [Yor] + * Added information about banishment in admin packets about an account. [Yor] + * Updated Chase Walk so it cancels when recasted to fix it. [?] + * Initial implementation for Chase Walk skill for Stalker Class [?] + * When an account is banned, message_error_7 is not more modified [Yor]. + +06/23 + (Dated On Aegis Website) + *--Released 1.0.0 RC1--* + * Added bRandomAttackIncrease for Executioner card. Chance stacks, attack does not. [Valaris] + * Fixed magic_damage_return so it will actually work (for Maya card). [Valaris] + * Add a ban timestamp in the structure of the accounts. Management not yet make [Yor] + +06/22 + * Don't send a message when it's void (packet 0x8e) - client doesn't display it [Yor]. + * Add a refresh time parameter for the html online file (refresh time in the explorer) [Yor]. + * Create a job_name function in atcommand to have the name of the job (suppress repeated code) [Yor]. + * Added New City: Jawaii + * Fix free memory of online structure at end of char-server [Yor]. + * Remove possible duplicated online players (multiple map-servers) [Yor]. + * Add examples in state command (ladmin) [Yor]. + * Use a function to display warnings in login-server to avoid duplicated messages with import option [Yor]. + * Iinitial implementation for magicdamagereturn for Maya Card [?] + * skill_out_range_consume - If it is set 'no' the skill will still be cast (like real servers). + If it is set to yes, skill will fail and sp and items required will be lost. [Valaris] + +06/21 + * Updated Sacrifice skill code to be more flexible for user usage [?] + * Changed SC_ATTACKPOTION and SC_MATTACKPOTION to SC_ATKPOT and SC_MATKPOT, also added it in item_db.txt [?] + * Guild Territory will now display the # of castles owned or "None Taken". [Valaris] + * Changed SC_ATTACKPOTION and SC_MATTACKPOTION so the increase can be specified in itemdb.txt. + Example : sc_start SC_AtkPot,18,30; (+30 atk for 30 seconds) [Valaris] + * Added SC_ATTACKPOTION and SC_MATTACKPOTION for +30 atk for specified time period (need to get the correct id's yet, + right now giving wrong icons and wrong message). Added entries in const.txt, need more info to complete these. [Valaris] + * Fixed so players will always spawn with guild emblem if one is needed. [Valaris] + * Reduce number of tests in atcommand_character_stats_all (@charstatsall). [Yor] + * Fix memory management for online players list. [Yor] + * Party HP now updates instantly on change. [Valaris] + * Fixed crash when non-guild members are in the area of guardians in attack mode.(Will ignore them) [Valaris] + * A higher level GM is not displayed by who/who2/who3 if he uses HIDEGM. [Yor] + * When a GM with HIDEGM relogs, he is always HIDEGM (only GM). [Yor] + * Improve presentation of online.txt file. [Yor] + * In /npc/quests/magicalhatquest, corrected checking for and deletion of Mage Hat instead of Wizard Hat. [rg] + +06/20 + * Fixed problem with guardian emblems disappearing [Valaris] + * If a GM use GM HIDE, he is not counted in the number of players [Yor] + * Setup prtg_cas01 to load guardians on server startup and to spawn them when purchased. Also switched from GuardianDied + to OnGuardianDied (other way wasn't working). Changed so guardians won't be killed on agitend. [Valaris] + * Guardians cannot attack and cannot be hurt during non woe time. [Valaris] + * Switched checking of castle.txt format so it won't wipe guardian hp everytime it loads. [Valaris] + * Made it so if guardians were installed in old db, that it will set guardians to full hp based on defense and class. [Valaris] + * Autosave will save guardian HP data. [Valaris] + * Castle.txt visibleG flags will be set when guardians are killed. [Valaris] + * Moved emperium defense upgrade to mob.c. [Valaris] + * Removed guardian hp saving from agitend. [Valaris] + * Added option to choose which columns are displayed in the online files [Yor] + * Added option to choose how to sort online players in the online files [Yor] + * Correction of a new error on guild (from [Valaris]). Old castle.txt files couldn't be readed. [Yor] + * Kafra Points And Rewards fixed [Darkchild] + * Kafra file made a lot smaller with DoEvents [Darkchild] + * Fixed lotsa bugs in Kafra's [Darkchild] + * Initial implementation for paladin's skill sacrifice [?] + * Loading/Saving of guardian hp (loads on agitstart, saves on agitend) [Valaris] + * Added so guardian hp will change accordingly. Moved the guardian defense increase to mob.c [Valaris] + * Implemented guardian and guardianinfo script commands [Valaris] + +06/19 + * Added Ghp0-7 into castle database [Valaris] + * Added configuration parameters to choose online files filename [Yor] + * Added online files (txt and html) [Yor] + * Added choose of authorised letters/symbols for characters names [Yor] + * Added 3 new Dragon Boat Festival monsters with temporary stats to mob_db [Akaru] + * Translated more of item_db [Akaru] + * Added correct effects for Dragon Boat Festival items [Akaru] + * Solve problem about the change of MAX_GUILDPOSITION by [Valaris] when we load an old guild.txt file. [Yor] + * Improve allow/deny configuration. Write warnings if necessary. [Yor] + +06/18 + * Add heal_payment.txt as an alternative to heal.txt. [Yor] + * Sex change (char.C): Correct error in jobchange. Disconnect player if connected. [Yor] + * Sex change/account deletion: Change authentification to avoid that player comes back on char-server within the 5 secondes before disconnection. [Yor] + * Save configuration of login-server in log file at start. [Yor] + +06/17 + * Added fritz's vending exploit fixes. [Valaris] + * Increased max guild castle size to accomodate for novice guild castles. [Valaris] + * Fixed investment in prontera castle 1. [Valaris] + * Implemented of showing guardian hp on guardian investment in prontera castle 1 (factors in defense investment) [Valaris] + * Added strmobinfo script command. Syntax is strmobinfo(x,y). 'y' is the mob's id. x will show different values. + 1=english name, 2=jap name, 3=level, 4=max_hp, 5=max_sp,6=base_exp,7=job_exp. [Valaris] + * Disable % and / for 1st symbol of commands (party chat symbol and standard ragnarok GM commands) [Yor] + +06/16 + * Added fully functional economy for Prontera Castle 2 Guild Wars script [Akaru] + * added fix for cross-class ensemble skills. [?] + * Increased max guild member limit to accomodate for +2 member increase per extension level + and increased max position to 56 to accomodate for all members. [Valaris] + * More of fov's fixes for atcommand.c, chrif.c, and clif.c. [Valaris] + * added fixes for class checking skills like bard & dancer skills and a priest skill. [?] + * updated skill_cast_db and skill_require_db.txt [?] + * changed int_guild.c added +4 for extension skill to match kRO [?] + * remote administration: add a command/packet to change sex of an account [Yor] + * Log detailled reason of refused connection in remote administration [Yor] + * Create a mmo_auth_tostr for accounts [Yor] + * Add a message when char-server is terminated [Yor] + * Save deleted accounts (administration deletion) in log file [Yor] + * Add a message when login-server is terminated [Yor] + +06/15 + * Added in fov's fixes for socket.c, atcommand.c, npc.c and skill.c [Valaris] + * Added a char_log function. Save unreadable characters in log instead of a specific file [Yor] + * Save invalid account lines in log file. Account will be never lost [Yor] + * Sort characters of same player with the slot number in the characters file [Yor] + +06/14 + * Fix errors in prtg_cas01, prtg_cas05 and MrSmile scripts [Akaru] + * Added fully functional economy for Prontera Castle 1 Guild Wars script [Akaru] + +06/13 + * If player is on map-server when the account is deleted, player is now disconnected [Yor] + * Correction of char deletion bug when account is deleted [Yor] + * Added Prontera Castle 5 guild wars script [Akaru] + * Added Prontera Castle 4 guild wars script [Akaru] + * Add checks about duplicated character ids and names [Yor] + * Don't save a reg of a character if its string is void [Yor] + * Read a character even if a reg string is void (don't suppress the char for that) [Yor] + * Save characters in account_id order [Yor] + * Save not readed characters in a file (char file name + "not_readed.txt") [Yor] + * Display line number when a character can not be readed [Yor] + * Initialise char_num! Display number of readed characters [Yor] + * Do right initialization of char_dat [Yor] + * Add red color for ERROR displays in char.c [Yor] + +06/12 + * Change 0 to '\0' for char in login.c. Add red color for ERROR displays [Yor] + * Optimised Mr. Smile NPC script [Akaru] + * Add a configuration in atcommand.conf to set the 1st character of ALL commands (Now, you can choose @, #, !..., any char that is not control character) [Yor] + * Optimised Prontera Castle 1 and 2 guild wars scripts [Akaru] + * Added Prontera Castle 3 guild wars script [Akaru] + * Changed Graffiti placement, will allow placement of one painting at a time (old one will be replaced). [Valaris] + * Graffiti displays to other plays and remains on map for set time period. [Valaris] + +06/11 + * Initial implementation of graffiti (does not change directions yet (vertical/upsidedown) and doesn't dissappear [Valaris] + * Add config_switch (0/1, yes/no, ...) for char-server configuration [Yor] + * Add a display when a player does a connection [Yor] + * Add a display when a remote administration does a connection [Yor] + +06/10 + * Improve compiling instructions for cygwin (socket.h) (depends of the cygwin version). [Yor] with help of [Lostsoul] + * Add parameters in login.conf to display or not parse information [Yor] + * Remove some repeated codes in ladmin / add example when error of command [Yor] + * Remove delete_session error in login.c (sorry) [Yor] + * Display correct message for char-server disconnection [Yor] + * Finish translation of ladmin [Yor] + * Fixed Various Npc Bugs [Darkchild] + * Added green colour for READY displays in char-server, login-server and map-server [Akaru] + +06/09 + * Add some comments in ladmin [Yor] + * Remove displaying of packet 0x2714 from login-server [Yor] + * Correct length of password send to login-server in char-server [Yor] + * Char-server/login-server: put default lan to 127.0.0.1 instead of any hasardous value [Yor] + * Change displaying of the title [Yor] + * Optimised twin towers script to use duplicate [Akaru] + * Edited to a more user friendly error message for invalid server communication password [Akaru] + * Updated the item_db for more item name consistencies [Akaru] + * Reverted training grounds back to new_1-?.gat maps. [Valaris] + * Added added more variety to sending packets to guild members (same map, same map w/out self, ect) [Valaris] + +06/08 + * Put a HOWTO in lan_support.conf. [Yor] + * Removed extra semicolons in char.c, map.c, and pc.c. [Valaris] + * Added missing } to clif_storageitemlist in clif.c and found a couple lines ending with 2 semicolons, removed them. [Valaris] + +06/07 + * Translated refine_db.txt. [Valaris] + * Negative vending fix. [Fritz] + * Correction of mktime parameters in ladmin + some translations [Yor]. + * Add some checks on login-server configuration parameters [Yor]. + +06/06 + * Fixed error in skill_tree.txt that would crash some people's servers when changing to Professor. [Valaris] + * Added admin_state directive for enabling and disabling remote administration, instead of testing whether admin_pass == "" [rg] + * Add title to the servers. [Yor] + * Add warnings about default password usage (administration and gm passwords). [Yor] + * Modify adduser.c for the default configuration. [Yor] + * Write the complete admin_packet.txt. [Yor] + * Champion NPC was looking for a priest instead of monk, changed to correct value. [Valaris] + * Small fixes in guide.txt, kafra.txt, and swordsman.txt pointed out by StiNKy. [Valaris] + * Begin splitting monsters.txt [Akaru] + * Removed obselete monster spawn files [Akaru] + * Complete Guild Wars for Prontera Castle 2 script done [Akaru] + * Fixed prevent_logout option. [Valaris] + +06/05 + * Implemented guild castle regen.(Stackable 2x for castle owners) [Valaris] + * Fixed player logout display on map-server console. [Valaris] + * Added atcommand_spawn_quantity_limit directive to /conf/battle_athena.conf [rg] + * Fixed noskill map flag [?] + * Complete information about login configuration in conf_ref.txt [Yor] + * Add possible configuration values on/off or yes/no in login-server [Yor] + * Guardians and emp will now get +2000 hp for every defense investment within a castle [Valaris] + * Changed the login server to reject all remote administration authentication if the admin_pass directive isn't set, and commented-out the admin_pass directive in /conf/login_athena.conf [rg] + * Changed /src/common/grfio.c so it doesn't try to read GRF files with no respective directive in /conf/grf-files.txt [rg] + * Changed so no one can spawn inside castles. [Valaris] + * Updated item_db with more consistant names, fixed some unknown_items [Akaru] + * Complete Guild Wars for Prontera Castle 1 script done [Akaru] + * Disabled guild breaking, alliance breaking, and alliance making during WoE. [Valaris] + * Will not default to prontera.gat if map-server is not connected. [Valaris] + * Warp players who are not in guild out of castles when WoE starts. [Valaris] + +06/04 + * Allies now do no damage to guardians or emperium. [Valaris] + * Prevent allies from being attacked by guardians. [Valaris] + * Optimized guardian emblem code. [Valaris] + * Fixed map-server crashing with spawning guardians in untaken castles. [Valaris] + * Guardian emblems will change if castle is taken, but client needs to refresh map. [Valaris] + * Fixed problem where guild emblem would vanish from guild info screen. [Valaris] + +06/03 + * Improve e-mails checks and LAN/WAN checks on char-server. [Yor]. + * Add some explanations in front of accounts file. [Yor] + * Set a non LAN configuration for basic configuration in lan_support.conf. Explain parameters. [Yor] + * add missing parameters of char_athena.conf, and explain them. [Yor] + * Restore default admin pass and gm pass of login_athena.conf, and add missing parameters. [Yor] + * fix missing include in char.c. [Yor] + * Translation of checkversion. Add some explanations in front of file. [Yor] + * Translation of getlogincount [Yor] + * Finish translation of new login.c [Yor] + * Implemented Guardian Emblems [Valaris] + +06/02 + * Added maximum_level option in battle_athena.conf [Valaris] + * Added maximum level cap to all the level up commands. [Valaris] + * Added "Deal has been cancelled" message to Fritz's input exploit fix. [Valaris] + +06/01 + * Fixed training ground npcs and warps, removed depreceated maps, using new ones. [Valaris] + +05/30 + * Small map-server crashing fix with Leo and Guide npcs in training ground [Valaris] + +05/29 + * Removed item_value_db.txt and all references to it [Valaris] + * Removed unused class_equip_db.txt [Valaris] + * Fixed stat and level reset bug where needed status points wouldnt reset unless relogged [Valaris] + * @monster will summon monster without an amount specified [Valaris] + +05/28 + * Added heal and usable item rate modifier [Valaris] + * Added pet equipment to equipment rate modifier [Valaris] + * Added option to turn alchemist summon experience and drops on and off [Valaris] + * Alchemist Marine Spheres now randomly explode [Valaris] + * Fixed bug where if certain items lowered max hp (4 mysteltain, and 1 eddga) below 0 + would loop to server max hp value. [Valaris] + +05/26 + * Added New Hats [Darkchild] + * Added New Monsters [Darkchild] +05/23 + * Added @charstatsall, views all characters (easy for money bug scaning etc! [Fritz] + * Max to input npc command, 0 is lowest, 99999999 is max, this to prevent money bugs! [Fritz] + +05/21 + (Dated On Aegis Website) + *--Released 0.5.2--* + +05/20 + (Dated On Aegis Website) + *--Released 0.5.1--* + * got dye working again [Darkchild/fritz] + +05/19 + (Dated On Aegis Website) + *--Released 0.5.0--* + +05/09 + * added Prontera Guild Castle 3 test guild wars test script [Akaru] + * modified Prontera Guild Castle 1 and 2 guild wars test script [Akaru] + * fixed several valkyrie jobchangers [Akaru] +05/08 + (Dated On Aegis Website) + *--Released 0.4.2--* + *--Released 0.4.1--* + * added Prontera Guild Castle 2 test guild wars test script [Akaru] + +05/07 (Dated On Aegis Website) + *--Released 0.4.0--* + +05/06 + * added Prontera Guild Castle 1 test guild wars test script [Akaru] +05/04 + * removed parses and added ENGLISH! [?] + +04/29 (Dated On Aegis Website) + *--Released 953 Delta--* + +04/28 (Dated On Aegis Website) (Whose Ideas Were These?) + *--Released 953 Gamma--* +04/27 + *--Released 951 Beta--* + * fixed @jobchange crash [credits to Mugendai, commited by Akaru] + +04/25 (Dated On Aegis Website) + *--Released 947 Alpha--* +04/23 + * added more Professor Skills and added checks [?] +04/10 + * added more upper skills from moonsoul's works [?] +02/12-04/10 + * CVS Down - Not Many changes could be made...* + +02/22 (Dated On Aegis Website) + *--Released 817--* + +02/12 + * added more mob skill conditions (friendstatuseq, mysyatuseq, friendhpltmaxrate) [RoVeRT] +02/06 + * dumped @skillall for @allskill [?] +02/05 + * fixed provoke so it doesnt work on undead [RoVeRT] + * added TyrNemesis^ card removal code and min/max settings [RoVeRT] +02/04 + * added start_zeny and party_level_range to char_athena.conf [RoVeRT] +02/03 + * Improved the prontera.gat map fallback. [Sara-chan] + * Improved the way guild emblems act when logging in. [Sara-chan] + * Undead-class armor, and Undead monster themselves will never be frozen [RoVeRT] + * fixed negative values for NPC to always be 0 +01/26 + * mob_warpslave correction [RoVeRT] +01/25 + * added poison hp reduction [AppleGirl] +01/20 + * added intimidate [RoVeRT] + * added mvp checks for some skills +01/17 + * added skill check for empelium attack and removed drops from NULL kills [RoVeRT] +01/16 + * added secondary effects for when characters with appropriate elemental armor + are within area of effect of sage spells SA_VOLCANO(atk up), SA_DELUGE(max hp up), + SA_VIOLENTGALE(flee up) [moonsoul] + * removeal of @randmon as it isnt needed [RoVeRT] +01/15 + * fixed auto spell so it works the prober way [RoVeRT] +01/12 + * added mob_warpslave [RoVeRT] + * added mob_warp to check noteleport mapflag +01/07 + * added OnCommand for NPC [RoVeRT] + * added new on death method for NPC spawned mobs [RoVeRT] + * added mobcount [RoVeRT] +01/06 + * fixed icon status for spear quicken [AppleGirl] + * added quoted name support for @monster [RoVeRT] +01/05 + * added indivudal support for card and equip drop rates [RoVeRT] +01/04 + * added TF_PICKSTONE and skill check condition for TF_THROWSTONE [AppleGirl] + * added updated cast_db.txt and fixed SA_VOLCANO, SA_DELUGE, + SA_VIOLENTGALE, and SA_LANDPROTECTOR GRAPHICS [AppleGirl] + * Fixed Effects of a few bard Skills. [AppleGirl] + * added option to stop logout for 10 seconds after taking a hit [RoVeRT] +01/03 + * added inet_ip support to char and map [RoVeRT] + * added checkcart, checkfalcon and checkriding npc commands +01/02 + * added new npc timer support that is independant of a player [RoVeRT] +12/31 + * Added @refineall [Mark] +12/30 + * added support for custom_item-db.txt with battle_athena.conf option [RoVeRT] + * fixed @charzeny bug + * translated help.txt to english anong with a few other files [RoVeRT] +12/29 + * added umbala maps to map_athena.conf [RoVeRT] +12/26 + * added Skill_range based on level, and partially working AutoGuard [Moonsoul] + * added Correction of Whip and Instrument Damage Again [Sara-Chan] +12/25 + * Spear Quicken Correct Graphics,Fixed Magnum Break (Which Fixes All Other + Splash skills), and Fixed Brandish Spear [AppleGirl] + * Updated Command For @SkillAll Added Atcommand_athena.conf [RoVeRT] +12/24 + * Added Side Effects for multiple skills for 2-2 classes [AppleGirl] +12/23 + * Added GM Command Called @Skillall [RoVeRT] + * @skillall to skill-up all your current skills [RoVeRT] + * @hide does hide you from all monsters [RoVeRT] + * fire wall limited to 5 per map [RoVeRT] + * to turn on PVP without @pvpon and to disable flywing search for mapflag [RoVeRT] + * no luck with @morph at this time yet [RoVeRT] + * splash attack added but still kinda buggy [RoVeRT] + * Added in Dancing and Song Playing for Bard and Dancer [AppleGirl] + * Added Skill Arrow Check For Archer Skills [AppleGirl] + * Added Skill Status Recovery [AppleGirl] + * Added Skill Bard and Dancer Skills Last Longer [AppleGirl] + * Added Skill Grimtooth does splash damage [AppleGirl] + * Added Skill Steal Fixed and Snatcher [AppleGirl] + * Added Skill SonicBlow only works with Katars Now [AppleGirl] +12/22 + * Added Skills Shield Boomerang, Shield Charge, and Defender [AppleGirl] diff --git a/Dev/Dev-Folder-Notes.txt b/Dev/Dev-Folder-Notes.txt index ded4eb5e4..1936b8fc1 100644 --- a/Dev/Dev-Folder-Notes.txt +++ b/Dev/Dev-Folder-Notes.txt @@ -1,3 +1,3 @@ -- This folder and all files inside it must be deleted before any distribution -- This folder is meant for developers only -- Use this folder to contain notes, todo, testcases, problems, etc +- This folder and all files inside it must be deleted before any distribution +- This folder is meant for developers only +- Use this folder to contain notes, todo, testcases, problems, etc diff --git a/Dev/TODO.txt b/Dev/TODO.txt index c43eddaf8..f6fd346af 100644 --- a/Dev/TODO.txt +++ b/Dev/TODO.txt @@ -1,684 +1,684 @@ -The format of to-do list items is: - -Description - A description of the task -Status - The status of the task. The possible values are Pending and Completed -Assignee - The nickname of the person whom is assigned the task -Notes - Miscellaneous notes concerning the task - -********** - -Only the to-do list for the flat-file module should contain tasks concerning database corrections because databases changes for the SQL module are inherited from the flat-file module. - -********** -1. -Description: Fix the equip field values in item_db - -Status: Pending - -Assignee: NONE - -Notes: i know the equip values in item_db are ****ed not ****ed but supernovice equip is - - -********** -2. -Description: Change monster summoning commands so they summon 1 monster if a quantity isn't specified - -Status: 50% - -Assignee: NONE - -Notes: Will work with just mob_id/name specified (ie @monster poring) - need to make it work with mob_id and name (ie @monster poring test) - Valaris - - -********** -3. -Description: Fix Ghostring Card - -Status: Done - -Assignee: MouseJstr - -Notes: battle_config flag to disable ghosty armor - protecting you from mobs - -********** -4. -Description: Add nomagic mapflag/@skilloff/@skillon - -Status: Done - -Assignee: MouseJstr - -Notes: NONE - - -********** -5. -Description: Checking help.txt (main directory, conf directory, doc directory) with atcommand.c - -Status: Pending - -Assignee: None - -Notes: In doc directory, do a help.txt for explaination of all commands. - In conf directory, do a help.txt for displaying the resume of each command in chat windows of the client - (chat windows does support more than 200 lines). - In main directory, suggestion to delete it. - - -********** -6. -Description: Update produce_db - -Status: Pending - -Assignee: None - -Notes: The Alchemist Forging items were recently changed. The DB needs to be edited and if needed, source to be modified - - -********** -7. -Description: novice.txt: new_1-4.gat,60,149,4 script Helper 55 - This NPC gives infinite items and zenys. - -Status: Completed - -Assignee: Yor - -Notes: If you clicks on 'cancel' button or quits the game to come back, you can have infinite zenys and items. - So, we must save (in a variable) when the npc gives items/zenys and don't given them again. - - -********** -8. -Description: scripts, register variables and job 1 - When you become job 1, reset all variables of OTHER jobs too to save register memory. - -Status: Pending - -Assignee: None - -Notes: None - - -********** -9. -Description: @mapspy command - -Status: Pending - -Assignee: None - -Notes: to receive any messages of all characters on a specifical map. - don't send duplicate messages if already @guildspy ou @partyspy - - -********** -10. -Description: Pet Skills. - -Status: 90% - -Assignee: Valaris - -Notes: Don't touch pet.c, pet.h, or pet dbs. - - -********** -11. -Description: Add kRO server side friends list. - -Status: 80% - -Assignee: davidsiaw - -Notes: Got most of the packets. Except the ones that tell the client that a player is online and tell the client to give messages. - - -********** -12. -Description: Updating the 'gmcommands.html' with actual commands. - -Status: Pending - -Assignee: None - -Notes: NONE - - -********** -13. -Description: On PVP map, don't count a 'GM HIDE' GM (2 normal players + 1 HIDE GM: 2/2, not 3/3). - -Status: Pending - -Assignee: None - -Notes: NONE - - -********** -14. -Description: Add encrypted password option in login-server. - -Status: Blocked, no solution without limited client version. - -Assignee: Yor - -Notes: It's impossible to use encrypted password in the account file, if we want to authorise all client version. - Some clients use a (random) md5key and send a composed encrypted of the password. - So, these clients send a different encrypted password based on plain text password at every connection. - If the password is encrypted, we can not more compare with plain text. - The other solution can be to not authorise these clients. But, that will probably be the futur of ALL clients. - Reduce possibilities of client version isn't a good idea for the futur and for the compatibility (like use only plain text password client version). - Save in account the plain text and the encypted version use more memory for nothing, and don't add security. - Conclusion: - If you want protected your password, you must: - - protected you account file - - never send a password outside the server - - use only encypted client version (that send an encrypted password to server). - - -********** -15. -Description: Create all reloaddb command in ladmin. - -Status: Affected - -Assignee: Yor - -Notes: NONE - - -********** -16. -Description: Create a shutdown + time command in ladmin. - -Status: Affected - -Assignee: Yor - -Notes: NONE - - -********** -17. -Description: Create a kickall command in ladmin. - -Status: Affected - -Assignee: Yor - -Notes: NONE - - -********** -18. -Description: Create listban/listok command in ladmin. - -Status: Completed - -Assignee: Yor - -Notes: NONE - - -********** -19. -Description: Login-server: create a first anti-hack system versus multiple connections trying. - -Status: Affected - -Assignee: Yor - -Notes: Set on IP. - An option to set number of connections before to block (number_of_try_before_block) - An option to set number of second where the tries must be done (within_seconds_for tries) - An option to set the time of impossible connection after block (blocked_time_in_minutes) - About wrong password, add: - dynamic_pass_failure_ban_time: 5 (duration of ban, in minutes) - dynamic_pass_failure_ban_how_many: 3 (number of tries before to ban) - dynamic_pass_failure_ban_how_long: 60 (inside time where the tries must be done before to ban, in sec) - - -********** -20. -Description: Create @unban and @unblock GM command. - -Status: Completed - -Assignee: Yor - -Notes: NONE - - -********** -21. -Description: Fix @nuke GM command. - -Status: Completed - -Assignee: Valaris - -Notes: If you nuke a mounted Knight/Crusader they lose Peco but see it in the equip.window. - And can't get another one. - - -********** -22. -Description: Adding GM command @guildmaster - -Status: Pending - -Assignee: MC_Cameri - -Notes: Guild Master turns another member of his guild into Guild Master. - MC Cameri: It will now be called @swapgm, meaning swap of guild master. - - -********** -23. -Description: In Guilds folder change all checkcart -> checkcart(0) - -Status: Completed? - -Assignee: Aria - -Notes: All checkcart were in the old/ folder o_O? - Because just "checkcart" always returns 0. (All common Kafras&breeder have been already fixed) - - -********** -24. -Description: In script.c parser should be fixed to allow argumentless functions return value. - -Status: Pending - -Assignee: None - -Notes: Functions like "checkcart", "checkfalcon", "checkriding" don't return value if used without agruments or without "()". - Example: 'checkcart' always return Zero (because the parser doesn't recognize it as a function!) - Example: 'checkcart()' map server doesn't load (because argless funcs aren't in use) - As a temp fix Lupus added "*" in script.c in "checkcart", "checkfalcon", "checkriding" definitions. - To be able running them with any fake arg. i.e. checkcart(0) works fine! - - -********** -25. -Description: Create a LAN management, 1 by server - -Status: Affected - -Assignee: Yor - -Notes: 1 computer can be on multiple LAN. So, each server must have 1 LAN definition. - - -********** -26. -Description: @ban/@block must be usable when player is offline - -Status: Completed - -Assignee: Yor - -Notes: NONE - - -********** -27. -Description: When it's night, inscreasing spawn of undeads - -Status: Pending - -Assignee: None - -Notes: Variable 'night_flag' is 0 if it's day, or 1 if it's night. - - -********** -28. -Description: in ladmin, create a method for account with spaces - -Status: Completed - -Assignee: Yor - -Notes: use "" or ''. - - -********** -29. -Description: @(un)ban/@(un)block: reduction of number of packets - improvement of messages - -Status: Completed - -Assignee: Yor - -Notes: None. - - -********** -30. -Description: Create (un)ban/(un)block in ladmin to be similar with GM command - -Status: Completed - -Assignee: Yor - -Notes: None. - - -********** -31. -Description: Packet 0x3831 need too much size! IMPORTANT to found a solution! - It's cause of crashes or freeze of servers (char or map). - -Status: Pending - -Assignee: None - -Notes: When map-server do a connection to char-server, this packet is send (C->M). Example of display (1 connection!): - socket #5: - wdata (size: 131072 bytes) need to be expanded. - wdata is actually used for 111654 bytes (free bytes: 19418). - packet 0x3831 need mode space (size of the packet: 12332). - wdata expanded to 262144 bytes. - socket #5: - wdata (size: 262144 bytes) need to be expanded. - wdata is actually used for 234974 bytes (free bytes: 27170). - packet 0x3831 need mode space (size of the packet: 12332). - wdata expanded to 524288 bytes. - Additional note: there is only 63 guilds on this server... - - -********** -32. -Description: Management of PM ignore for wisps - -Status: Completed - -Assignee: Yor - -Notes: None. - - -********** -33. -Description: Add a GM info hacker minimum level parameter - -Status: Completed - -Assignee: Yor - -Notes: first use: spoof namer - - -********** -34. -Description: Create @makepet to create directly a pet - -Status: Pending - -Assignee: None - -Notes: NONE - - -********** -35. -Description: In dungeon, set night for people. In shop, set day for people. - -Status: Assigned - -Assignee: Yor - -Notes: work like variable 'night_flag' is 0 if it's day, or 1 if it's night. - - -********** -36 -Description: Create your limited time.... but an option can be good :)... - -Status: Completed - -Assignee: Yor - -Notes: NONE - -********** -37. -Description: @killer - enables a @gm to hit a player outside of pvp - -Status: Done - -Assignee: MouseJstr - -Notes: - -********** -38. -Description: atcommand scripts - script @atcommands` - -Status: Pending - -Assignee: MouseJstr - -Notes: - -********** -40. -Description: @addwarp - create a static warp to a target location - -Status: Done - -Assignee: MouseJstr - -Notes: -********** -41. -Description: @movenpc - - manipulate npc's at runtime - -Status: Done - -Assignee: MouseJstr - -Notes: handling npc's with the same name on multiple maps - requires thoughts -********** -42. -Description: @uptime - how long as the server been up? - -Status: Pending - -Assignee: MouseJstr, MC Cameri - -Notes: - MC Cameri: This is done already in OA, wait for merge. - Aria: I said that, but they told me it was BROKED! -********** -43. -Description: map aliases - - create virtual copies of maps but don't require - changes to the client to support it - -Status: 80% done - -Assignee: MouseJstr - -Notes -********** -44. -Description: Fix GTB card - -Status: Done - -Assignee: MouseJstr - -Notes: battle_config command that controls just how magic resistant - you raelly are -********** -45. -Description: gm @follow command - -Status: Done - -Assignee: MouseJstr - -Notes: follows players, including warping to them... lets you do - a gm hide and grab a cup of coffee while watching a player - do bad things.. -********** -47. -Description: different max aspd for players and GM's - -Status: Pending - -Assignee: MouseJstr - -Notes: -********** -48. -Description: Configurable max num castles for a guild - -Status: Done - -Assignee: MouseJstr - -Notes: We limit each guild to 3 castles on my server -********* -49 -Description: Add @chareffect - Done [MouseJstr] - set a persistant effect on another character - Add @chardisguise - done [MouseJstr] - set a persistant disguise effect on another character - Add @mobid - look up a monster by name - needed? - Add @petid - look up a pet by name - Add @chardye - Add @charhairstyle - Add @charhaircolor - Versions of dye hairstyle and haircolor fo other chars - Add @followme - make a character follow you.. including warps - Add @shuffle - re-arrange everybody on the map randomly - Add @dropall - done [MouseJstr] - takes all my possessions and throws them on the ground - Add @chardropall - done [MouseJstr] - takes all the players possessions and throws them on the ground.. - Add @storeall - done [MouseJstr] - takes all my possessions and puts them in storage, leaving 500 zeny to let you take it all back out again - Add @charstoreall - done [MouseJstr] - takes all the players possessions and puts them in storage, leaving 500 zeny to let you take it all back out again - Add @skillid - lookup a skill by name - done [MouseJstr - Add @useskill - use a skill given the number or name - done [MouseJstr] -********* -50. -Description: New Guild Skills - -Status: Pending - -Assignee: NONE - -Notes: use http://forums.emperium.org/viewtopic.php?t=43245 for a list -******** -51. -Description: Devilring - -Status: Pending - -Assignee: NONE - -Notes: New mini-boss; find as much about it as possible including stats and drops -********* -52. -Description: LV4 Weapon Quests - -Status: Pending - -Assignee: NONE - -Notes: Info here http://forums.emperium.org/viewtopic.php?t=39934 Use perm variables? -********* -53. -Description: Monster Pictures - -Status: Pending - -Assignee: NONE - -Notes: WTF! http://forums.emperium.org/viewtopic.php?t=32998 -********* -54. -Description: Wandering Singer - -Status: Pending - -Assignee: NONE - -Notes: May have to spy on kRO to get more info. http://forums.emperium.org/viewtopic.php?t=32998 -******** -55. -Description: Arena Points - -Status: Pending - -Assignee: NONE - -Notes: points->item system; http://forums.emperium.org/viewtopic.php?t=32998 -******** -56. -Description: kRO Account - -Status: Pending - -Assignee: NONE - -Notes: Give us a kRO account, gm or whatever so we can spy =OOOOOOOO -********* -57. -Description: Baby Skills - -Stats: Pending - -Assignee: NONE - -Notes: 1. Skills - - Come here, baby. - ( Summons the adoptee ) - - Mom, Dad, I love you. - ( For 5 minutes, the parent characters will not have EXP penalty upon death ) - - Mom, Dad, I want to see you. - ( Summons the parents ) - * For the summon skill, it works like wedding summon skill - it can only be done in areas where warps can be saved at. - - 2. EXP Sharing - - Only the parents and the child can EXP share; nobody else can be in the party. If any other person joins, the EXP share resets. - - If you move to a different map, the EXP share resets. - - The EXP returned is only 1/3rd of normal since both mother and father character has to be in the same party with the child. - - 3. Changes after adoption - - For the child character, the character becomes small. - - 4. What happens if parents divorce - - The parents can NEVER adopt another child ever again even after divorce + remarry. - - The character child continues to be as it is (meaning, even if the child no longer has a parent, he or she will continue to be the 'child'), and only 1 child can be obtained per character. - - Even if the child character is deleted, the parents can never get another child. - * This means, when you adopt a child character, DO IT CAREFULLY. For the entire history of your character, you can only, and I mean ONLY get one child character. - - - The Child Adoption system now changes as following, so please make note of this: - * The adopted child cannot raise any stat to beyond 80. - * The adopted child will have 70% of MaxHP and MaxSP of normal characters. - * The adopted child cannot marry. - * "Mom, Dad, I love you" skill will only last 2 minutes instead of 5. - * The parents must be both LV 70 or above in order to adopt. - * The parents must be both LV 70 or above in order to share EXP as family. - * "Mom, Dad, I love you" skill will now take 10% of MaxSP instead of taking 1 SP. +The format of to-do list items is: + +Description - A description of the task +Status - The status of the task. The possible values are Pending and Completed +Assignee - The nickname of the person whom is assigned the task +Notes - Miscellaneous notes concerning the task + +********** + +Only the to-do list for the flat-file module should contain tasks concerning database corrections because databases changes for the SQL module are inherited from the flat-file module. + +********** +1. +Description: Fix the equip field values in item_db + +Status: Pending + +Assignee: NONE + +Notes: i know the equip values in item_db are ****ed not ****ed but supernovice equip is + + +********** +2. +Description: Change monster summoning commands so they summon 1 monster if a quantity isn't specified + +Status: 50% + +Assignee: NONE + +Notes: Will work with just mob_id/name specified (ie @monster poring) + need to make it work with mob_id and name (ie @monster poring test) - Valaris + + +********** +3. +Description: Fix Ghostring Card + +Status: Done + +Assignee: MouseJstr + +Notes: battle_config flag to disable ghosty armor + protecting you from mobs + +********** +4. +Description: Add nomagic mapflag/@skilloff/@skillon + +Status: Done + +Assignee: MouseJstr + +Notes: NONE + + +********** +5. +Description: Checking help.txt (main directory, conf directory, doc directory) with atcommand.c + +Status: Pending + +Assignee: None + +Notes: In doc directory, do a help.txt for explaination of all commands. + In conf directory, do a help.txt for displaying the resume of each command in chat windows of the client + (chat windows does support more than 200 lines). + In main directory, suggestion to delete it. + + +********** +6. +Description: Update produce_db + +Status: Pending + +Assignee: None + +Notes: The Alchemist Forging items were recently changed. The DB needs to be edited and if needed, source to be modified + + +********** +7. +Description: novice.txt: new_1-4.gat,60,149,4 script Helper 55 + This NPC gives infinite items and zenys. + +Status: Completed + +Assignee: Yor + +Notes: If you clicks on 'cancel' button or quits the game to come back, you can have infinite zenys and items. + So, we must save (in a variable) when the npc gives items/zenys and don't given them again. + + +********** +8. +Description: scripts, register variables and job 1 + When you become job 1, reset all variables of OTHER jobs too to save register memory. + +Status: Pending + +Assignee: None + +Notes: None + + +********** +9. +Description: @mapspy command + +Status: Pending + +Assignee: None + +Notes: to receive any messages of all characters on a specifical map. + don't send duplicate messages if already @guildspy ou @partyspy + + +********** +10. +Description: Pet Skills. + +Status: 90% + +Assignee: Valaris + +Notes: Don't touch pet.c, pet.h, or pet dbs. + + +********** +11. +Description: Add kRO server side friends list. + +Status: 80% + +Assignee: davidsiaw + +Notes: Got most of the packets. Except the ones that tell the client that a player is online and tell the client to give messages. + + +********** +12. +Description: Updating the 'gmcommands.html' with actual commands. + +Status: Pending + +Assignee: None + +Notes: NONE + + +********** +13. +Description: On PVP map, don't count a 'GM HIDE' GM (2 normal players + 1 HIDE GM: 2/2, not 3/3). + +Status: Pending + +Assignee: None + +Notes: NONE + + +********** +14. +Description: Add encrypted password option in login-server. + +Status: Blocked, no solution without limited client version. + +Assignee: Yor + +Notes: It's impossible to use encrypted password in the account file, if we want to authorise all client version. + Some clients use a (random) md5key and send a composed encrypted of the password. + So, these clients send a different encrypted password based on plain text password at every connection. + If the password is encrypted, we can not more compare with plain text. + The other solution can be to not authorise these clients. But, that will probably be the futur of ALL clients. + Reduce possibilities of client version isn't a good idea for the futur and for the compatibility (like use only plain text password client version). + Save in account the plain text and the encypted version use more memory for nothing, and don't add security. + Conclusion: + If you want protected your password, you must: + - protected you account file + - never send a password outside the server + - use only encypted client version (that send an encrypted password to server). + + +********** +15. +Description: Create all reloaddb command in ladmin. + +Status: Affected + +Assignee: Yor + +Notes: NONE + + +********** +16. +Description: Create a shutdown + time command in ladmin. + +Status: Affected + +Assignee: Yor + +Notes: NONE + + +********** +17. +Description: Create a kickall command in ladmin. + +Status: Affected + +Assignee: Yor + +Notes: NONE + + +********** +18. +Description: Create listban/listok command in ladmin. + +Status: Completed + +Assignee: Yor + +Notes: NONE + + +********** +19. +Description: Login-server: create a first anti-hack system versus multiple connections trying. + +Status: Affected + +Assignee: Yor + +Notes: Set on IP. + An option to set number of connections before to block (number_of_try_before_block) + An option to set number of second where the tries must be done (within_seconds_for tries) + An option to set the time of impossible connection after block (blocked_time_in_minutes) + About wrong password, add: + dynamic_pass_failure_ban_time: 5 (duration of ban, in minutes) + dynamic_pass_failure_ban_how_many: 3 (number of tries before to ban) + dynamic_pass_failure_ban_how_long: 60 (inside time where the tries must be done before to ban, in sec) + + +********** +20. +Description: Create @unban and @unblock GM command. + +Status: Completed + +Assignee: Yor + +Notes: NONE + + +********** +21. +Description: Fix @nuke GM command. + +Status: Completed + +Assignee: Valaris + +Notes: If you nuke a mounted Knight/Crusader they lose Peco but see it in the equip.window. + And can't get another one. + + +********** +22. +Description: Adding GM command @guildmaster + +Status: Pending + +Assignee: MC_Cameri + +Notes: Guild Master turns another member of his guild into Guild Master. + MC Cameri: It will now be called @swapgm, meaning swap of guild master. + + +********** +23. +Description: In Guilds folder change all checkcart -> checkcart(0) + +Status: Completed? + +Assignee: Aria + +Notes: All checkcart were in the old/ folder o_O? + Because just "checkcart" always returns 0. (All common Kafras&breeder have been already fixed) + + +********** +24. +Description: In script.c parser should be fixed to allow argumentless functions return value. + +Status: Pending + +Assignee: None + +Notes: Functions like "checkcart", "checkfalcon", "checkriding" don't return value if used without agruments or without "()". + Example: 'checkcart' always return Zero (because the parser doesn't recognize it as a function!) + Example: 'checkcart()' map server doesn't load (because argless funcs aren't in use) + As a temp fix Lupus added "*" in script.c in "checkcart", "checkfalcon", "checkriding" definitions. + To be able running them with any fake arg. i.e. checkcart(0) works fine! + + +********** +25. +Description: Create a LAN management, 1 by server + +Status: Affected + +Assignee: Yor + +Notes: 1 computer can be on multiple LAN. So, each server must have 1 LAN definition. + + +********** +26. +Description: @ban/@block must be usable when player is offline + +Status: Completed + +Assignee: Yor + +Notes: NONE + + +********** +27. +Description: When it's night, inscreasing spawn of undeads + +Status: Pending + +Assignee: None + +Notes: Variable 'night_flag' is 0 if it's day, or 1 if it's night. + + +********** +28. +Description: in ladmin, create a method for account with spaces + +Status: Completed + +Assignee: Yor + +Notes: use "" or ''. + + +********** +29. +Description: @(un)ban/@(un)block: reduction of number of packets + improvement of messages + +Status: Completed + +Assignee: Yor + +Notes: None. + + +********** +30. +Description: Create (un)ban/(un)block in ladmin to be similar with GM command + +Status: Completed + +Assignee: Yor + +Notes: None. + + +********** +31. +Description: Packet 0x3831 need too much size! IMPORTANT to found a solution! + It's cause of crashes or freeze of servers (char or map). + +Status: Pending + +Assignee: None + +Notes: When map-server do a connection to char-server, this packet is send (C->M). Example of display (1 connection!): + socket #5: + wdata (size: 131072 bytes) need to be expanded. + wdata is actually used for 111654 bytes (free bytes: 19418). + packet 0x3831 need mode space (size of the packet: 12332). + wdata expanded to 262144 bytes. + socket #5: + wdata (size: 262144 bytes) need to be expanded. + wdata is actually used for 234974 bytes (free bytes: 27170). + packet 0x3831 need mode space (size of the packet: 12332). + wdata expanded to 524288 bytes. + Additional note: there is only 63 guilds on this server... + + +********** +32. +Description: Management of PM ignore for wisps + +Status: Completed + +Assignee: Yor + +Notes: None. + + +********** +33. +Description: Add a GM info hacker minimum level parameter + +Status: Completed + +Assignee: Yor + +Notes: first use: spoof namer + + +********** +34. +Description: Create @makepet to create directly a pet + +Status: Pending + +Assignee: None + +Notes: NONE + + +********** +35. +Description: In dungeon, set night for people. In shop, set day for people. + +Status: Assigned + +Assignee: Yor + +Notes: work like variable 'night_flag' is 0 if it's day, or 1 if it's night. + + +********** +36 +Description: Create your limited time.... but an option can be good :)... + +Status: Completed + +Assignee: Yor + +Notes: NONE + +********** +37. +Description: @killer - enables a @gm to hit a player outside of pvp + +Status: Done + +Assignee: MouseJstr + +Notes: + +********** +38. +Description: atcommand scripts - script @atcommands` + +Status: Pending + +Assignee: MouseJstr + +Notes: + +********** +40. +Description: @addwarp - create a static warp to a target location + +Status: Done + +Assignee: MouseJstr + +Notes: +********** +41. +Description: @movenpc + - manipulate npc's at runtime + +Status: Done + +Assignee: MouseJstr + +Notes: handling npc's with the same name on multiple maps + requires thoughts +********** +42. +Description: @uptime - how long as the server been up? + +Status: Pending + +Assignee: MouseJstr, MC Cameri + +Notes: + MC Cameri: This is done already in OA, wait for merge. + Aria: I said that, but they told me it was BROKED! +********** +43. +Description: map aliases - + create virtual copies of maps but don't require + changes to the client to support it + +Status: 80% done + +Assignee: MouseJstr + +Notes +********** +44. +Description: Fix GTB card + +Status: Done + +Assignee: MouseJstr + +Notes: battle_config command that controls just how magic resistant + you raelly are +********** +45. +Description: gm @follow command + +Status: Done + +Assignee: MouseJstr + +Notes: follows players, including warping to them... lets you do + a gm hide and grab a cup of coffee while watching a player + do bad things.. +********** +47. +Description: different max aspd for players and GM's + +Status: Pending + +Assignee: MouseJstr + +Notes: +********** +48. +Description: Configurable max num castles for a guild + +Status: Done + +Assignee: MouseJstr + +Notes: We limit each guild to 3 castles on my server +********* +49 +Description: Add @chareffect - Done [MouseJstr] + set a persistant effect on another character + Add @chardisguise - done [MouseJstr] + set a persistant disguise effect on another character + Add @mobid + look up a monster by name - needed? + Add @petid + look up a pet by name + Add @chardye + Add @charhairstyle + Add @charhaircolor + Versions of dye hairstyle and haircolor fo other chars + Add @followme + make a character follow you.. including warps + Add @shuffle + re-arrange everybody on the map randomly + Add @dropall - done [MouseJstr] + takes all my possessions and throws them on the ground + Add @chardropall - done [MouseJstr] + takes all the players possessions and throws them on the ground.. + Add @storeall - done [MouseJstr] + takes all my possessions and puts them in storage, leaving 500 zeny to let you take it all back out again + Add @charstoreall - done [MouseJstr] + takes all the players possessions and puts them in storage, leaving 500 zeny to let you take it all back out again + Add @skillid - lookup a skill by name - done [MouseJstr + Add @useskill - use a skill given the number or name - done [MouseJstr] +********* +50. +Description: New Guild Skills + +Status: Pending + +Assignee: NONE + +Notes: use http://forums.emperium.org/viewtopic.php?t=43245 for a list +******** +51. +Description: Devilring + +Status: Pending + +Assignee: NONE + +Notes: New mini-boss; find as much about it as possible including stats and drops +********* +52. +Description: LV4 Weapon Quests + +Status: Pending + +Assignee: NONE + +Notes: Info here http://forums.emperium.org/viewtopic.php?t=39934 Use perm variables? +********* +53. +Description: Monster Pictures + +Status: Pending + +Assignee: NONE + +Notes: WTF! http://forums.emperium.org/viewtopic.php?t=32998 +********* +54. +Description: Wandering Singer + +Status: Pending + +Assignee: NONE + +Notes: May have to spy on kRO to get more info. http://forums.emperium.org/viewtopic.php?t=32998 +******** +55. +Description: Arena Points + +Status: Pending + +Assignee: NONE + +Notes: points->item system; http://forums.emperium.org/viewtopic.php?t=32998 +******** +56. +Description: kRO Account + +Status: Pending + +Assignee: NONE + +Notes: Give us a kRO account, gm or whatever so we can spy =OOOOOOOO +********* +57. +Description: Baby Skills + +Stats: Pending + +Assignee: NONE + +Notes: 1. Skills + - Come here, baby. + ( Summons the adoptee ) + - Mom, Dad, I love you. + ( For 5 minutes, the parent characters will not have EXP penalty upon death ) + - Mom, Dad, I want to see you. + ( Summons the parents ) + * For the summon skill, it works like wedding summon skill - it can only be done in areas where warps can be saved at. + + 2. EXP Sharing + - Only the parents and the child can EXP share; nobody else can be in the party. If any other person joins, the EXP share resets. + - If you move to a different map, the EXP share resets. + - The EXP returned is only 1/3rd of normal since both mother and father character has to be in the same party with the child. + + 3. Changes after adoption + - For the child character, the character becomes small. + + 4. What happens if parents divorce + - The parents can NEVER adopt another child ever again even after divorce + remarry. + - The character child continues to be as it is (meaning, even if the child no longer has a parent, he or she will continue to be the 'child'), and only 1 child can be obtained per character. + - Even if the child character is deleted, the parents can never get another child. + * This means, when you adopt a child character, DO IT CAREFULLY. For the entire history of your character, you can only, and I mean ONLY get one child character. + + - The Child Adoption system now changes as following, so please make note of this: + * The adopted child cannot raise any stat to beyond 80. + * The adopted child will have 70% of MaxHP and MaxSP of normal characters. + * The adopted child cannot marry. + * "Mom, Dad, I love you" skill will only last 2 minutes instead of 5. + * The parents must be both LV 70 or above in order to adopt. + * The parents must be both LV 70 or above in order to share EXP as family. + * "Mom, Dad, I love you" skill will now take 10% of MaxSP instead of taking 1 SP. - The wedding skills will now depend on percentage of MaxHP/MaxSP. \ No newline at end of file diff --git a/Dev/TODO_MOB_AI.txt b/Dev/TODO_MOB_AI.txt index 3ea2bc0e2..9f73656f9 100644 --- a/Dev/TODO_MOB_AI.txt +++ b/Dev/TODO_MOB_AI.txt @@ -1,134 +1,134 @@ -// eAthena TODO for Monster AI -// ----------------------------------------- -// The idea of this file is to write a system to use for mob AI because -// to put it bluntly, our mobs are stupid. If we can pull off some sweet -// AI, we will own the other emulators. -// -// What we have here are 2 columns. I describe them below... -// - 'mode' : Mode is when the monster can attack, like, can it move? can it -// attack first? can it assist other monsters? -// -// - 'AI' : AI is the smart part of the monster. This is how the monster -// will actully go about attacking something. For example we -// could make archer skeletons fire an arrow or 2, then flee -// and fire a few more arrows. Or we could have them avoid other -// classes with range (archers, mages). We could also have mobs -// run when being sniped off cliffs by archers/mages (wont they -// hate that, but in reality, thats what they would do). -// -// The mode flags will be given an ID to the power of 2, (binary style, like -// job id's in the item_db) and added together to make the mode. But before -// the system can be written we need a nice file to explain it. That would be -// this file. So add away, when it looks done, begin the implementation. -// -// Also, if possible, new config file in /conf/. 'mob_ai_athena.conf'. This is -// where mob AI is enabled/disable. And options can be set to allow and dis- -// allow certin modes. Ex: People like the AI, but dont like one options, can -// simply disable THAT AI feature rather then rewriting mob_db to remove it. -// -// I wrote the first modes, C devs, move them around as you see fit for programming. -// -// -Ancyker -// -// (check bottom for more AI ideas) -// - - -'mode' -Immobile - Monster can not move, can not be moved (like by archers knockback skills) -Agressive - Monster can attack first (doesn't mean it will, decided in 'AI') -Detect cast - Monster will detect if someone is casting on it, and attack back -Assist - Monster will help other monsters (what monsters it will assist is decided in 'AI') -Looter - Monster will loot items (if 'Agressive' flag is set, it will attack before looting) -No Target Change - Monster will not start attacking another target until the first target is dead or out of range -Passive - Monster will not attack back (ever, unless 'Agressive' flag is also set?) -Detects Hidden - Monster can see hidden players - -'ai' -NoAI - Doesn't do anything (plants) -NoSnipe - Monster will run away if being 'sniped' from a clif by archer, mage, etc. -AttackFlee - Monster will attack, then flee, attack, then flee, etc (Archer Skels, run away, shoot arrow, etc) -AttackRange1 - Will only attack if player is in a set range [0-3] (It's like the player is close, its a threat now) -AttackRange2 - Will only attack if player is in a set range [4-6] -ClassFlee1 - Will run from any player with range (archers, mages, thiefs with bows) -NoviceNoFlee - Will not run if a player is a novice -LevelFlee - Wlll run if player is of a higher level (porings would run from level 99s, AHH DONT KILL ME!) -AvoidPlayer - Will run if it sees any player (So it cancels 'Agressive' flag) -AttackMostDamage - Will attack the player doing the overall most damage -AttackLessDamage - Will attack the player doing the overall least damage -AttackLowestLevel - Will attack the lowest level first -AttackHighestLevel - Will attack the highest level first -WarpLowHP - Will warp if HP is low (how low is low?) -NeverStop - Monster will always be on the move, never stop walking. (Is over-ridden by 'Immobile' flag) - - -// -// Again, more stuff... -// -// The monster spawns sripts need some more params. some examples... -// -// We have: map,x,y,offsetx,offsety, ... -// What if we added more? To only let the monster move so far off from -// where it was spawned. It could 'guard' an arena, an exit/enterance -// an npc, whatever =). -// -// .... ID,time,time,blah...,mode,WAP -// Have monsters walk a certin path. Waypoint files are your friend. -// If a monster has a WAP (optional) it will walk this path. -// Guardians on patrol? Could be interesting. -// -// Add more if you think of any =) -// -// If you don't like an idea, comment why, dont remove it. -// example: (using this one cuz not sure about it) -// -// // NeverStop - Will/Could cause lag, don't think its a good idea -name -// NeverStop - ... -// - -Lupus: (guys, rearrange my ideas or move them as u want) -Some memory - speed optimizations: - -There'a big "for cycle" when u look up for a place to mob spawn. -It could be made quite fast: -On server .GAT loading you should make an array with OFFSETS (not even X,Y) of right -places for future mob spawns. -If the waypoints aren't found for the loadied map then you should make at least 1-2 waypoints automatically. - -About AI: -EACH map has defined mobs. Your mob should have a flag "healer", "supporter" etc. "weak", "ranged attacker" -and each map should contain an attached list of mobs with their types -when one MVP is hurt it'd look for "helpers", "healers". -And if a mob is almost 0 HP it should look for helpers or look for other mobs ranged attackers -defence. Etc. - -Mobs AI should be WRITTEN IN SPECIAL SCRIPTS. -Some default mobs will use the same script. -And some advanced ones will use their own. - -MOB-scripts are quite interesting. (remember Robot-Wars game?) - -Gulid Wars: -I think guardians should be able to warp from room to room using WARPS like common Players. - - -Aria's Ideas: (do whatever u want) - -We can make aggressive monsters make ambushes, where one attacks and runs away to a huge group of the same monster - -instead of dropping 2 x1 items, just drop 1 x2 item - -make AI vary inside of a group of monsters (IE 1/2 porings do 1 thing, and the other half do another) - -aggressive monsters sould surround enemies, not just blindly attack them - -we should also make monsters look as player-like as possible. There should be groups traveling together, or 2 monsters -next to eachother, chatting. - -we shouldn't let mobs spawn right infront of people, like in anime or manga. they always walk towards you, or you walk -towards them. - -let mob stats vary a little bit - every mob shouldn't be the exact same. if it's stronger it gives more exp, and vice -versa. - +// eAthena TODO for Monster AI +// ----------------------------------------- +// The idea of this file is to write a system to use for mob AI because +// to put it bluntly, our mobs are stupid. If we can pull off some sweet +// AI, we will own the other emulators. +// +// What we have here are 2 columns. I describe them below... +// - 'mode' : Mode is when the monster can attack, like, can it move? can it +// attack first? can it assist other monsters? +// +// - 'AI' : AI is the smart part of the monster. This is how the monster +// will actully go about attacking something. For example we +// could make archer skeletons fire an arrow or 2, then flee +// and fire a few more arrows. Or we could have them avoid other +// classes with range (archers, mages). We could also have mobs +// run when being sniped off cliffs by archers/mages (wont they +// hate that, but in reality, thats what they would do). +// +// The mode flags will be given an ID to the power of 2, (binary style, like +// job id's in the item_db) and added together to make the mode. But before +// the system can be written we need a nice file to explain it. That would be +// this file. So add away, when it looks done, begin the implementation. +// +// Also, if possible, new config file in /conf/. 'mob_ai_athena.conf'. This is +// where mob AI is enabled/disable. And options can be set to allow and dis- +// allow certin modes. Ex: People like the AI, but dont like one options, can +// simply disable THAT AI feature rather then rewriting mob_db to remove it. +// +// I wrote the first modes, C devs, move them around as you see fit for programming. +// +// -Ancyker +// +// (check bottom for more AI ideas) +// + + +'mode' +Immobile - Monster can not move, can not be moved (like by archers knockback skills) +Agressive - Monster can attack first (doesn't mean it will, decided in 'AI') +Detect cast - Monster will detect if someone is casting on it, and attack back +Assist - Monster will help other monsters (what monsters it will assist is decided in 'AI') +Looter - Monster will loot items (if 'Agressive' flag is set, it will attack before looting) +No Target Change - Monster will not start attacking another target until the first target is dead or out of range +Passive - Monster will not attack back (ever, unless 'Agressive' flag is also set?) +Detects Hidden - Monster can see hidden players + +'ai' +NoAI - Doesn't do anything (plants) +NoSnipe - Monster will run away if being 'sniped' from a clif by archer, mage, etc. +AttackFlee - Monster will attack, then flee, attack, then flee, etc (Archer Skels, run away, shoot arrow, etc) +AttackRange1 - Will only attack if player is in a set range [0-3] (It's like the player is close, its a threat now) +AttackRange2 - Will only attack if player is in a set range [4-6] +ClassFlee1 - Will run from any player with range (archers, mages, thiefs with bows) +NoviceNoFlee - Will not run if a player is a novice +LevelFlee - Wlll run if player is of a higher level (porings would run from level 99s, AHH DONT KILL ME!) +AvoidPlayer - Will run if it sees any player (So it cancels 'Agressive' flag) +AttackMostDamage - Will attack the player doing the overall most damage +AttackLessDamage - Will attack the player doing the overall least damage +AttackLowestLevel - Will attack the lowest level first +AttackHighestLevel - Will attack the highest level first +WarpLowHP - Will warp if HP is low (how low is low?) +NeverStop - Monster will always be on the move, never stop walking. (Is over-ridden by 'Immobile' flag) + + +// +// Again, more stuff... +// +// The monster spawns sripts need some more params. some examples... +// +// We have: map,x,y,offsetx,offsety, ... +// What if we added more? To only let the monster move so far off from +// where it was spawned. It could 'guard' an arena, an exit/enterance +// an npc, whatever =). +// +// .... ID,time,time,blah...,mode,WAP +// Have monsters walk a certin path. Waypoint files are your friend. +// If a monster has a WAP (optional) it will walk this path. +// Guardians on patrol? Could be interesting. +// +// Add more if you think of any =) +// +// If you don't like an idea, comment why, dont remove it. +// example: (using this one cuz not sure about it) +// +// // NeverStop - Will/Could cause lag, don't think its a good idea -name +// NeverStop - ... +// + +Lupus: (guys, rearrange my ideas or move them as u want) +Some memory - speed optimizations: + +There'a big "for cycle" when u look up for a place to mob spawn. +It could be made quite fast: +On server .GAT loading you should make an array with OFFSETS (not even X,Y) of right +places for future mob spawns. +If the waypoints aren't found for the loadied map then you should make at least 1-2 waypoints automatically. + +About AI: +EACH map has defined mobs. Your mob should have a flag "healer", "supporter" etc. "weak", "ranged attacker" +and each map should contain an attached list of mobs with their types +when one MVP is hurt it'd look for "helpers", "healers". +And if a mob is almost 0 HP it should look for helpers or look for other mobs ranged attackers +defence. Etc. + +Mobs AI should be WRITTEN IN SPECIAL SCRIPTS. +Some default mobs will use the same script. +And some advanced ones will use their own. + +MOB-scripts are quite interesting. (remember Robot-Wars game?) + +Gulid Wars: +I think guardians should be able to warp from room to room using WARPS like common Players. + + +Aria's Ideas: (do whatever u want) + +We can make aggressive monsters make ambushes, where one attacks and runs away to a huge group of the same monster + +instead of dropping 2 x1 items, just drop 1 x2 item + +make AI vary inside of a group of monsters (IE 1/2 porings do 1 thing, and the other half do another) + +aggressive monsters sould surround enemies, not just blindly attack them + +we should also make monsters look as player-like as possible. There should be groups traveling together, or 2 monsters +next to eachother, chatting. + +we shouldn't let mobs spawn right infront of people, like in anime or manga. they always walk towards you, or you walk +towards them. + +let mob stats vary a little bit - every mob shouldn't be the exact same. if it's stronger it gives more exp, and vice +versa. + have a monster be able to use its drops, and not drop it. like a poring using an apple. \ No newline at end of file diff --git a/Dev/bugs.txt b/Dev/bugs.txt index 26bdb99bb..2feedce73 100644 --- a/Dev/bugs.txt +++ b/Dev/bugs.txt @@ -1,72 +1,72 @@ -Problem: Adding the new guild skills causes it to crash? -Assigned: N/A -Progess: 0% - -Problem: 2-2-1 classes are regarded as Novicies by the game server. NPCs aren't taking them as thier jobs but if you the the NPC to do something for a novice class it works with the 2-2-1 like renters. Also if some one becomes high novice, if they use jobra they can become first jobs like a swordsman. -Assigned: N/A -Progess: 0% - -Problem: Stats nor skills don't downgrade when your level gets reverted due to exp loss. -Assigned: N/A -Progess: 0% - -Problem: You can hit yourself with your own spider web. -Assigned: N/A -Progess: 0% - -Problem: Pre skill requirements for new skills are wrong it makes you use 49 skills points before you can get the newer skills. -Assigned: N/A -Progess: 0% - -Problem: Monster hp view only shows but does not go down with a hit. -Assigned: N/A -Progess: 0% - -Problem: Monsters always freeze, when hit they don't move but 2 mins later they move. -Assigned: N/A -Progess: 0% - -Problem: Mobs don't attack -Assigned: N/A -Progess: 0% - -Problem: When u spawn ~300 mobs (and more or less) then do @killmonster then some mobs freeze on the screen (have no names, don't move, etc) -Assigned: N/A -Progess: 0% - -Problem: With 1025 client, some NPC sprites look different (i.e. Black Jack's NPC sprite) -Assigned: N/A -Progess: 0% - -Problem: Thiefs can steal ZENY / items from TREASURE chests!!baaaah!! and Guardians! -Assigned: N/A -Progess: 0% - -Problem: Joker card 4139 lets anyone to steal money / zeny. Just like he's a thief. It shoul;d be revised - success rates lowered and "steal item" disabled -Assigned: N/A -Progess: 0% - -Problem: When servers restart sometime the gm lvls in sql get reset back to 0 -Assigned: Wizputer -Progess: 0% - -Problem: [mob attacks againsts players wearing ghostring armor do full damage mob_ghostring_fix: yes] Does not work, does nothing. -Assigned: N/A -Progess: 0% - -Problem: If two clients using the same account the server will crash and it allows people to dupe using the trade bug, one person trades over and item relogs it saves and the other person doesn't, they crash server both of them end up with the item. -Assigned: N/A -Progess: 0% - -Problem: When athena is run in linux it creates core files which takes 300 megs. -Assigned: N/A -Progess: 0% - -Problem: The skill tree's max skill lvl is not read/used. -Assigned: N/A -Progess: 0% - -Problem: Cannot connect to map server when logging in in both txt and sql on svn. -Assigned: N/A -Progess: 0% - +Problem: Adding the new guild skills causes it to crash? +Assigned: N/A +Progess: 0% + +Problem: 2-2-1 classes are regarded as Novicies by the game server. NPCs aren't taking them as thier jobs but if you the the NPC to do something for a novice class it works with the 2-2-1 like renters. Also if some one becomes high novice, if they use jobra they can become first jobs like a swordsman. +Assigned: N/A +Progess: 0% + +Problem: Stats nor skills don't downgrade when your level gets reverted due to exp loss. +Assigned: N/A +Progess: 0% + +Problem: You can hit yourself with your own spider web. +Assigned: N/A +Progess: 0% + +Problem: Pre skill requirements for new skills are wrong it makes you use 49 skills points before you can get the newer skills. +Assigned: N/A +Progess: 0% + +Problem: Monster hp view only shows but does not go down with a hit. +Assigned: N/A +Progess: 0% + +Problem: Monsters always freeze, when hit they don't move but 2 mins later they move. +Assigned: N/A +Progess: 0% + +Problem: Mobs don't attack +Assigned: N/A +Progess: 0% + +Problem: When u spawn ~300 mobs (and more or less) then do @killmonster then some mobs freeze on the screen (have no names, don't move, etc) +Assigned: N/A +Progess: 0% + +Problem: With 1025 client, some NPC sprites look different (i.e. Black Jack's NPC sprite) +Assigned: N/A +Progess: 0% + +Problem: Thiefs can steal ZENY / items from TREASURE chests!!baaaah!! and Guardians! +Assigned: N/A +Progess: 0% + +Problem: Joker card 4139 lets anyone to steal money / zeny. Just like he's a thief. It shoul;d be revised - success rates lowered and "steal item" disabled +Assigned: N/A +Progess: 0% + +Problem: When servers restart sometime the gm lvls in sql get reset back to 0 +Assigned: Wizputer +Progess: 0% + +Problem: [mob attacks againsts players wearing ghostring armor do full damage mob_ghostring_fix: yes] Does not work, does nothing. +Assigned: N/A +Progess: 0% + +Problem: If two clients using the same account the server will crash and it allows people to dupe using the trade bug, one person trades over and item relogs it saves and the other person doesn't, they crash server both of them end up with the item. +Assigned: N/A +Progess: 0% + +Problem: When athena is run in linux it creates core files which takes 300 megs. +Assigned: N/A +Progess: 0% + +Problem: The skill tree's max skill lvl is not read/used. +Assigned: N/A +Progess: 0% + +Problem: Cannot connect to map server when logging in in both txt and sql on svn. +Assigned: N/A +Progess: 0% + diff --git a/Dev/forSQLdev.txt b/Dev/forSQLdev.txt index c54c531a6..9f0f1a59a 100644 --- a/Dev/forSQLdev.txt +++ b/Dev/forSQLdev.txt @@ -1,146 +1,146 @@ -// $Id: forSQLdev.txt,v 1.1 2004/09/19 09:18:32 Akaru Exp $ - -This file is to informe SQL dev about all modifications on TXT version. - -When a modification is done, TXT dev try to add it here with some explanations. -When a modification is added in SQL version, SQL dev remove it from this file. - - -********* 9th september ------------------------------------- -changed: - sd->newauth (map.h/clif.c) by sd->packet_ver (look all function where was newauth) - value become // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor]) - instead of // 0: old 0x72 (19 b), 3: new 0x72 7july04 (22 b), 20: new 0x72 13july04 (39 b), 0: old 0x7E (6 b - not for auth), 27: new 0x7E 26july04 (33 b), 31: new 0x7E 30aug04 (37 b) (by [Yor]) - note: local variable 'newauth' not changed in clif_parse_WantToConnection - ------------------------------------- -Added - if (sd->packet_ver == 8) { // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor]) - clif_displaymessage(sd->fd, "This client version (of 26 jul 2004) is not actually supported by this server."); - } else if (sd->packet_ver == 9) { // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor]) - clif_displaymessage(sd->fd, "This client version (of 30 august 2004) is not actually supported by this server."); - } -at end of 'pc_authok' function (pc.c) - ------------------------------------- -Changed - in 'atcommand_effect' function, set the correct message in back of: - clif_displaymessage(fd, msg_table[229]); // Your effect has changed. - ------------------------------------- -Changed - in 'atcommand_servertime' function, replace permanent message by msg_table and put them in msg_athena.conf - ------------------------------------- -Changed to reduce (a little) lag - in char.c, commented printf about auth: - case 0x2afc: - if (RFIFOREST(fd) < 22) - 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++) { - - - case 0x2b02: - if (RFIFOREST(fd) < 18) - return 0; - if (auth_fifo_pos >= AUTH_FIFO_SIZE) - auth_fifo_pos = 0; - //printf("auth_fifo set (auth #%d) - account: %d, secure: %08x-%08x\n", auth_fifo_pos, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10)); - auth_fifo[auth_fifo_pos].account_id = RFIFOL(fd,2); - - - case 0x2b05: - if (RFIFOREST(fd) < 49) - return 0; - if (auth_fifo_pos >= AUTH_FIFO_SIZE) - auth_fifo_pos = 0; - WFIFOW(fd,0) = 0x2b06; - memcpy(WFIFOP(fd,2), RFIFOP(fd,2), 42); - //printf("auth_fifo set (auth#%d) - account: %d, secure: 0x%08x-0x%08x\n", auth_fifo_pos, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10)); - auth_fifo[auth_fifo_pos].account_id = RFIFOL(fd,2); - - - in case 0x66: // キャラ選択 - if (auth_fifo_pos >= AUTH_FIFO_SIZE) - auth_fifo_pos = 0; - //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; - - - commented printf about searching map server (in 'search_mapserver' function) - ------------------------------------- -Improved At_command about monsters spawn (atcommand_spawn and atcommand_monster): - modified message 39: - //39: All monster summoned! - Added message 240: - //240: %d monster(s) summoned! - Added variables (output, j and k): - char output[200]; - int i, j, k; - memset(output, '\0', sizeof(output)); - Changed loop to check at least 8 times (to try to spawn in closed area): - count = 0; - for (i = 0; i < number; i++) { - j = 0; - k = 0; - while(j++ < 8 && k == 0) { // try 8 times to spawn the monster (needed for close area) - if (x <= 0) - mx = sd->bl.x + (rand() % 11 - 5); - else - mx = x; - if (y <= 0) - my = sd->bl.y + (rand() % 11 - 5); - else - my = y; - k = mob_once_spawn((struct map_session_data*)sd, "this", mx, my, name, mob_id, 1, ""); - } - count += (k != 0) ? 1 : 0; - } - Changed last message display (to add number != count): - if (count != 0) - if (number == count) - clif_displaymessage(fd, msg_table[39]); // All monster summoned! - else { - sprintf(output, msg_table[240], count); // %d monster(s) summoned! - clif_displaymessage(fd, output); - } - else { - -********* 10th september ------------------------------------- -Correction of an error in char.c in 'char_config_read' function: - replace 'wisp_server_name' by 'w2' in the test of the lenght: - } 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'; - } - ------------------------------------- -Added a better id control of monster id in @spawn/@monster... GM commands: - added in mob.h: - int mobdb_checkid(const int id); - Added in mob.c: - /*========================================== - * Id Mob is checked. - *------------------------------------------ - */ - int mobdb_checkid(const int id) { - if (id <= 0 || id >= (sizeof(mob_db) / sizeof(mob_db[0])) || mob_db[id].name[0] == '\0') - return 0; - - return id; - } - Changed in at_command.c ('atcommand_monster' and 'atcommand_spawn' functions) (only second line is modified): - if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) - mob_id = atoi(monster); - by: - if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) - mob_id = mobdb_checkid(atoi(monster)); - -********* 11th september ------------------------------------- -Changed @effect from level 60 to level 40. - ------------------------------------- -Added 3 new commands: @charitemlist, @charstoragelist, @charcarlist - modified file: atcommand.c/h, atcommand_athena.conf, all help.txt, and gmcommands.html +// $Id: forSQLdev.txt,v 1.1 2004/09/19 09:18:32 Akaru Exp $ + +This file is to informe SQL dev about all modifications on TXT version. + +When a modification is done, TXT dev try to add it here with some explanations. +When a modification is added in SQL version, SQL dev remove it from this file. + + +********* 9th september +------------------------------------ +changed: + sd->newauth (map.h/clif.c) by sd->packet_ver (look all function where was newauth) + value become // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor]) + instead of // 0: old 0x72 (19 b), 3: new 0x72 7july04 (22 b), 20: new 0x72 13july04 (39 b), 0: old 0x7E (6 b - not for auth), 27: new 0x7E 26july04 (33 b), 31: new 0x7E 30aug04 (37 b) (by [Yor]) + note: local variable 'newauth' not changed in clif_parse_WantToConnection + +------------------------------------ +Added + if (sd->packet_ver == 8) { // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor]) + clif_displaymessage(sd->fd, "This client version (of 26 jul 2004) is not actually supported by this server."); + } else if (sd->packet_ver == 9) { // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 30aug04 (by [Yor]) + clif_displaymessage(sd->fd, "This client version (of 30 august 2004) is not actually supported by this server."); + } +at end of 'pc_authok' function (pc.c) + +------------------------------------ +Changed + in 'atcommand_effect' function, set the correct message in back of: + clif_displaymessage(fd, msg_table[229]); // Your effect has changed. + +------------------------------------ +Changed + in 'atcommand_servertime' function, replace permanent message by msg_table and put them in msg_athena.conf + +------------------------------------ +Changed to reduce (a little) lag + in char.c, commented printf about auth: + case 0x2afc: + if (RFIFOREST(fd) < 22) + 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++) { + - + case 0x2b02: + if (RFIFOREST(fd) < 18) + return 0; + if (auth_fifo_pos >= AUTH_FIFO_SIZE) + auth_fifo_pos = 0; + //printf("auth_fifo set (auth #%d) - account: %d, secure: %08x-%08x\n", auth_fifo_pos, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10)); + auth_fifo[auth_fifo_pos].account_id = RFIFOL(fd,2); + - + case 0x2b05: + if (RFIFOREST(fd) < 49) + return 0; + if (auth_fifo_pos >= AUTH_FIFO_SIZE) + auth_fifo_pos = 0; + WFIFOW(fd,0) = 0x2b06; + memcpy(WFIFOP(fd,2), RFIFOP(fd,2), 42); + //printf("auth_fifo set (auth#%d) - account: %d, secure: 0x%08x-0x%08x\n", auth_fifo_pos, RFIFOL(fd,2), RFIFOL(fd,6), RFIFOL(fd,10)); + auth_fifo[auth_fifo_pos].account_id = RFIFOL(fd,2); + - + in case 0x66: // キャラ選択 + if (auth_fifo_pos >= AUTH_FIFO_SIZE) + auth_fifo_pos = 0; + //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; + - + commented printf about searching map server (in 'search_mapserver' function) + +------------------------------------ +Improved At_command about monsters spawn (atcommand_spawn and atcommand_monster): + modified message 39: + //39: All monster summoned! + Added message 240: + //240: %d monster(s) summoned! + Added variables (output, j and k): + char output[200]; + int i, j, k; + memset(output, '\0', sizeof(output)); + Changed loop to check at least 8 times (to try to spawn in closed area): + count = 0; + for (i = 0; i < number; i++) { + j = 0; + k = 0; + while(j++ < 8 && k == 0) { // try 8 times to spawn the monster (needed for close area) + if (x <= 0) + mx = sd->bl.x + (rand() % 11 - 5); + else + mx = x; + if (y <= 0) + my = sd->bl.y + (rand() % 11 - 5); + else + my = y; + k = mob_once_spawn((struct map_session_data*)sd, "this", mx, my, name, mob_id, 1, ""); + } + count += (k != 0) ? 1 : 0; + } + Changed last message display (to add number != count): + if (count != 0) + if (number == count) + clif_displaymessage(fd, msg_table[39]); // All monster summoned! + else { + sprintf(output, msg_table[240], count); // %d monster(s) summoned! + clif_displaymessage(fd, output); + } + else { + +********* 10th september +------------------------------------ +Correction of an error in char.c in 'char_config_read' function: + replace 'wisp_server_name' by 'w2' in the test of the lenght: + } 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'; + } + +------------------------------------ +Added a better id control of monster id in @spawn/@monster... GM commands: + added in mob.h: + int mobdb_checkid(const int id); + Added in mob.c: + /*========================================== + * Id Mob is checked. + *------------------------------------------ + */ + int mobdb_checkid(const int id) { + if (id <= 0 || id >= (sizeof(mob_db) / sizeof(mob_db[0])) || mob_db[id].name[0] == '\0') + return 0; + + return id; + } + Changed in at_command.c ('atcommand_monster' and 'atcommand_spawn' functions) (only second line is modified): + if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) + mob_id = atoi(monster); + by: + if ((mob_id = mobdb_searchname(monster)) == 0) // check name first (to avoid possible name begining by a number) + mob_id = mobdb_checkid(atoi(monster)); + +********* 11th september +------------------------------------ +Changed @effect from level 60 to level 40. + +------------------------------------ +Added 3 new commands: @charitemlist, @charstoragelist, @charcarlist + modified file: atcommand.c/h, atcommand_athena.conf, all help.txt, and gmcommands.html diff --git a/Dev/quotes.txt b/Dev/quotes.txt index 463e7df9c..a82eaae68 100644 --- a/Dev/quotes.txt +++ b/Dev/quotes.txt @@ -1,148 +1,148 @@ -ADD UR QUOTES HERE FOR DEV EDITION NPCS! -Remember to add map, coords, and sprite number! - -NEW 10-21-04! -Add Biography areas --Real name --Age --Where u live --What u do here --Why ur here --and ur own small self intro. - -Completed people: MC Cameri, Aria, david, mouse - - -Also put some coords so that u walk around -//************************************\\ - -davidsiaw -- put me in payon next to kawaii no kafra with npc sprite no. 1002 -- [davidsiaw] -- Wud are you looking at? -- baka... -- next; -- [davidsiaw] -- *drops 100 Mjolnirs on the floor -- There ya go ;) - -Aria -prontera.gat,156,179,4 script Aria 805,{ -151,175-OMGWTFBBQ -152,182-So its u -> 0 -... That did not look right -158,177-OMGITSJEEBUS!#!@%! -164,176-Evera died. I guess. -147,176-I CLICK THE BUTTON AND THEY DON'T DIE! -155,172-RO? wtf? -Oh yeah. -165,171-omgnoob. DIE! -157,176-WooT! -[@Aria] is that why u bought windows -[@Aria] cuz bill has red hair -bio -Okay, I'm Evera's brother, Aria <- small sentence self-intro -^FF00FFAge^000000: 13 years <-age -^FF00FFWhat I do^000000: Graphics and NPCs <-wtf u do -^FF00FFWhy I'm here^000000: Cuz eAthena ROX <-y - -Anyway, here. I get to talk about myself now <-ur own bio -I'm from California, and I wub MMORPGS -So yeah that's it. GO EA! - -Shinigami --imma n00b --lol --:P --Shinigami stabs Azndragon --there you go bitches --watashi wa Shinigami desu --huh?, wtf? - -Lord --Me + ebil = bad me + ebil + power = omg .... -<@Wishy> me + you = you get owns -<@Lord> Me + Revenge = You Got owned -<@Wishy> Me > You -<@Lord> No i own you in bed :3 -<@Wishy> ... - -Codemaster -"Everything begins with Nu and everything ends with Nu. -This is the truth! This is my belief... at least for now." - - Mysteries of Life Volume 184. Chapter 26. - -MouseJstr - -"The only difference between a hurricane and skydiving is -which direction the tree's come at you from.." - -"Wanna be a GM? Write me a C routine that reverses a string - in place.." - -"Wanna be a GM? Write me a C routine that finds me the highest - bit set in a network order 32 bit integer..." - -"I am the dark angel of eAthena.. withen weeks of my arrival, - almost everybody was gone or dead.. fear me..." - -Lupus, I demand you rewrite yours.. - -MC Cameri -morroc.gat,160,97,4 script MC Cameri 706,{ --I'm the @command guy from oa... --Can't tell you my name. --16 years --Dominican Republic, in the caribbean. --Mostly work on @commands for GMs... --Because I like programming... --I'm a senior student, programmer, body builder(yes, I lift weights), etc. -160,95-I owns you all, under my commands. *lol* -162,95-I forgot what my script, what do I have to say again? *_*U -164,95-ソDonde estoy? *wonders* (<-- Means, where am I?) -164,97-Are you guys my friends? -164,99-My mom told me not to talk to strangers. *stares* -162,99-How can you be SO ugly!? -160,99-I need a friend to play with =(. *sobs* -160,97-I've been kicking this rock for as long as I can remember. -160,95-My computer just broke, and I don't know how to format. *sobs* - -Darkchild - -// Place me Next to Valaris (ELSE I DO IT MYSELF :P) -- I think Aria Has A Lot To Do -- The Darkness Within -- Watch Out For Trucks, They Tend To Drive You Down -- Who Am I? Really? Shure! -- GAH! -- Everyone Lubs Me! (I Hope!) -- I Lub Everyone! - As Long As They Are Female - Hot.... - Goodlooking - Big Boobs - Nice Ass - And Workship Me! -- Wannabe GM? Host Your Own Server -- kRO is 20 A Month! Sick Bastards! - -Biography: - mes "Okay, So I'm Darkchild......."; - mes "^FF00FFAge^000000: 17 years"; - mes "^FF00FFWhat I do^000000: Writing Biography"; - mes "^FF00FFWhy I'm here^000000: I Have NO Idea"; - next; - mes "Ehm Well..... Whats There To Say About Me.......?"; - mes "I Dunno.... As Long As You Love Me........."; - mes "Well Okay, A Lil Bit Then:"; - mes "I'm From The Netherlands And Doing Some Wacko Collega Atm"; - mes "More? WTF? YOU WANT MORE? GO BLOW URSELF!"; - next; -// let it do an npc event on Valaris - -// His Npc Event: - npctalk "DARKCHILD, DON'T YOU SHOUT AT POOR LIL N00BIEZ!!!"; - -// Back 2 Me :P - npctalk "Sorry Valaris"; - npctalk "(He Is Da Man!)"; +ADD UR QUOTES HERE FOR DEV EDITION NPCS! +Remember to add map, coords, and sprite number! + +NEW 10-21-04! +Add Biography areas +-Real name +-Age +-Where u live +-What u do here +-Why ur here +-and ur own small self intro. + +Completed people: MC Cameri, Aria, david, mouse + + +Also put some coords so that u walk around +//************************************\\ + +davidsiaw +- put me in payon next to kawaii no kafra with npc sprite no. 1002 +- [davidsiaw] +- Wud are you looking at? +- baka... +- next; +- [davidsiaw] +- *drops 100 Mjolnirs on the floor +- There ya go ;) + +Aria +prontera.gat,156,179,4 script Aria 805,{ +151,175-OMGWTFBBQ +152,182-So its u -> 0 +... That did not look right +158,177-OMGITSJEEBUS!#!@%! +164,176-Evera died. I guess. +147,176-I CLICK THE BUTTON AND THEY DON'T DIE! +155,172-RO? wtf? +Oh yeah. +165,171-omgnoob. DIE! +157,176-WooT! +[@Aria] is that why u bought windows +[@Aria] cuz bill has red hair +bio +Okay, I'm Evera's brother, Aria <- small sentence self-intro +^FF00FFAge^000000: 13 years <-age +^FF00FFWhat I do^000000: Graphics and NPCs <-wtf u do +^FF00FFWhy I'm here^000000: Cuz eAthena ROX <-y + +Anyway, here. I get to talk about myself now <-ur own bio +I'm from California, and I wub MMORPGS +So yeah that's it. GO EA! + +Shinigami +-imma n00b +-lol +-:P +-Shinigami stabs Azndragon +-there you go bitches +-watashi wa Shinigami desu +-huh?, wtf? + +Lord +-Me + ebil = bad me + ebil + power = omg .... +<@Wishy> me + you = you get owns +<@Lord> Me + Revenge = You Got owned +<@Wishy> Me > You +<@Lord> No i own you in bed :3 +<@Wishy> ... + +Codemaster +"Everything begins with Nu and everything ends with Nu. +This is the truth! This is my belief... at least for now." + - Mysteries of Life Volume 184. Chapter 26. + +MouseJstr + +"The only difference between a hurricane and skydiving is +which direction the tree's come at you from.." + +"Wanna be a GM? Write me a C routine that reverses a string + in place.." + +"Wanna be a GM? Write me a C routine that finds me the highest + bit set in a network order 32 bit integer..." + +"I am the dark angel of eAthena.. withen weeks of my arrival, + almost everybody was gone or dead.. fear me..." + +Lupus, I demand you rewrite yours.. + +MC Cameri +morroc.gat,160,97,4 script MC Cameri 706,{ +-I'm the @command guy from oa... +-Can't tell you my name. +-16 years +-Dominican Republic, in the caribbean. +-Mostly work on @commands for GMs... +-Because I like programming... +-I'm a senior student, programmer, body builder(yes, I lift weights), etc. +160,95-I owns you all, under my commands. *lol* +162,95-I forgot what my script, what do I have to say again? *_*U +164,95-ソDonde estoy? *wonders* (<-- Means, where am I?) +164,97-Are you guys my friends? +164,99-My mom told me not to talk to strangers. *stares* +162,99-How can you be SO ugly!? +160,99-I need a friend to play with =(. *sobs* +160,97-I've been kicking this rock for as long as I can remember. +160,95-My computer just broke, and I don't know how to format. *sobs* + +Darkchild + +// Place me Next to Valaris (ELSE I DO IT MYSELF :P) +- I think Aria Has A Lot To Do +- The Darkness Within +- Watch Out For Trucks, They Tend To Drive You Down +- Who Am I? Really? Shure! +- GAH! +- Everyone Lubs Me! (I Hope!) +- I Lub Everyone! + As Long As They Are Female + Hot.... + Goodlooking + Big Boobs + Nice Ass + And Workship Me! +- Wannabe GM? Host Your Own Server +- kRO is 20 A Month! Sick Bastards! + +Biography: + mes "Okay, So I'm Darkchild......."; + mes "^FF00FFAge^000000: 17 years"; + mes "^FF00FFWhat I do^000000: Writing Biography"; + mes "^FF00FFWhy I'm here^000000: I Have NO Idea"; + next; + mes "Ehm Well..... Whats There To Say About Me.......?"; + mes "I Dunno.... As Long As You Love Me........."; + mes "Well Okay, A Lil Bit Then:"; + mes "I'm From The Netherlands And Doing Some Wacko Collega Atm"; + mes "More? WTF? YOU WANT MORE? GO BLOW URSELF!"; + next; +// let it do an npc event on Valaris + +// His Npc Event: + npctalk "DARKCHILD, DON'T YOU SHOUT AT POOR LIL N00BIEZ!!!"; + +// Back 2 Me :P + npctalk "Sorry Valaris"; + npctalk "(He Is Da Man!)"; diff --git a/Dev/resnametable.TXT b/Dev/resnametable.TXT index 411bf6cd0..6c62e2a1b 100644 --- a/Dev/resnametable.TXT +++ b/Dev/resnametable.TXT @@ -1,64 +1,64 @@ -Resnametable reading problem, testcases and description -by Akaru ------------------------------------------------------------------- -EDITED Resnametable, add at the end: -aaa.gnd#valkyrie.gnd# -aaa.gat#valkyrie.gat# -aaa.rsw#valkyrie.rsw# -タッタタホナヘニ菎フスコ\map\aaa.bmp#タッタタホナヘニ菎フスコ\map\valkyrie.bmp# - -At map_athena.conf, add: -map: aaa.gat - -Case 1: -In data.grf there's the base resnametable without reference of aaa.gat -In sdata.grf there's no resnametable -In data folder there's an edited resnametable with aaa.gat reference -Results: Athena gives aaa.gat not found error -What this proves: Athena doesn't even use the values in the datafolder resnametable - -Case 2: -In data.grf there's the base resnametable without reference of aaa.gat -In sdata.grf there's the edited resnametable aaa.gat reference -In data folder there's an edited resnametable with aaa.gat reference -Results: Athena loads aaa.gat -What this proves: Athena only checks for the existance of the datafolder resnametable, but uses value from sdata.grf resnametable - -Case 3: -In data.grf there's the base resnametable without reference of aaa.gat -In sdata.grf there's the edited resnametable aaa.gat reference -In data folder there's no resnametable -BEFORE MY CHANGE: Athena exits, "data/resnametable.txt not found" -AFTER MY CHANGE: Athena loads aaa.gat -What this proves: Athena do not need the datafolder resnametable at all and it still runs from the resnametable in the GRFs - -Case 4: -In data.grf there's no resnametable -In sdata.grf there's no resnametable -In data folder there's no resnametable -BEFORE MY CHANGE: Athena exits, "data/resnametable.txt not found" -AFTER MY CHANGE: Athena exits, "data/resnametable.txt not found" - -How it is now: -- It searches for the datafolder resnametable: - - If it exist, it continues but only use the resnametable from the GRF - - If it does not exist, - - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits - - If resnametable is found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits - -What is should do: -- Check if data_folder in grf-files is enabled: - - If it is, search for the datafolder resnametable: - - If it exist: - - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it continues and uses this resnametable - - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and overwrites the GRF resnametable with this one from the datafolder - - If it does not exist: - - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits - - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and use the GRF resnametable - - If it isn't, then: - - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits - - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and use the GRF resnametable - ------------------------------------------------------------------- -Fixes, comments, discussions, etc goes below here: +Resnametable reading problem, testcases and description +by Akaru +------------------------------------------------------------------ +EDITED Resnametable, add at the end: +aaa.gnd#valkyrie.gnd# +aaa.gat#valkyrie.gat# +aaa.rsw#valkyrie.rsw# +タッタタホナヘニ菎フスコ\map\aaa.bmp#タッタタホナヘニ菎フスコ\map\valkyrie.bmp# + +At map_athena.conf, add: +map: aaa.gat + +Case 1: +In data.grf there's the base resnametable without reference of aaa.gat +In sdata.grf there's no resnametable +In data folder there's an edited resnametable with aaa.gat reference +Results: Athena gives aaa.gat not found error +What this proves: Athena doesn't even use the values in the datafolder resnametable + +Case 2: +In data.grf there's the base resnametable without reference of aaa.gat +In sdata.grf there's the edited resnametable aaa.gat reference +In data folder there's an edited resnametable with aaa.gat reference +Results: Athena loads aaa.gat +What this proves: Athena only checks for the existance of the datafolder resnametable, but uses value from sdata.grf resnametable + +Case 3: +In data.grf there's the base resnametable without reference of aaa.gat +In sdata.grf there's the edited resnametable aaa.gat reference +In data folder there's no resnametable +BEFORE MY CHANGE: Athena exits, "data/resnametable.txt not found" +AFTER MY CHANGE: Athena loads aaa.gat +What this proves: Athena do not need the datafolder resnametable at all and it still runs from the resnametable in the GRFs + +Case 4: +In data.grf there's no resnametable +In sdata.grf there's no resnametable +In data folder there's no resnametable +BEFORE MY CHANGE: Athena exits, "data/resnametable.txt not found" +AFTER MY CHANGE: Athena exits, "data/resnametable.txt not found" + +How it is now: +- It searches for the datafolder resnametable: + - If it exist, it continues but only use the resnametable from the GRF + - If it does not exist, + - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits + - If resnametable is found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits + +What is should do: +- Check if data_folder in grf-files is enabled: + - If it is, search for the datafolder resnametable: + - If it exist: + - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it continues and uses this resnametable + - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and overwrites the GRF resnametable with this one from the datafolder + - If it does not exist: + - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits + - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and use the GRF resnametable + - If it isn't, then: + - If resnametable isn't found in data.grf/sdata.grf/adata.grf, it errors "resnametable not found" and exits + - If resnametable is found in data.grf/sdata.grf/adata.grf, it continues and use the GRF resnametable + +------------------------------------------------------------------ +Fixes, comments, discussions, etc goes below here: ------------------------------------------------------------------ \ No newline at end of file diff --git a/INSTALL b/INSTALL index ab8609bf3..c98db12b4 100644 --- a/INSTALL +++ b/INSTALL @@ -1,246 +1,246 @@ -eAthena SQL Installation and Upgrade Instructions - -1 Installation - 1.1 Windows - 1.2 Linux - 1.3 FreeBSD -2 Upgrading - 2.1 Upgrading from version 817 - 2.2 Upgrading from version 0.5.2 - 2.3 Upgrading from version 1.0 RC 1 -3 Mail System - 3.1 Adding the mail database - 3.2 Activating the mail system - -1 Installation -============== - -1.1 Windows ------------ - -1. It is not the aim of this document to explain the installation, concepts or usage of MySQL. If you are unfamiliar with MySQL, familiarise yourself with it and read at least these sections of the MySQL reference manual (http://dev.mysql.com/doc/mysql/en/index.html): - -- 2.2.1 Installing MySQL on Windows -- 2.4 Post-Installation Setup and Testing -- 5.4 General Security Issues -- 5.5 The MySQL Access Privilege System -- 5.6 MySQL User Account Management - -2. If fast and secure access to a MySQL server is unavailable, install, start and configure MySQL database server version 4.0.x. If you are using a version of Windows which is a member of the NT family, we recommend that you install MySQL as a service. - -3. Create a new database and a new user account with only SELECT, INSERT, UPDATE and DELETE privileges on the database. For example: - -CREATE DATABASE ragnarok; -GRANT - SELECT,INSERT,UPDATE,DELETE - ON `ragnarok`.* # database - TO 'ragnarok'@'localhost' # username@address - IDENTIFIED BY 'password'; # password - -For security, do not use the password "password" for your user account. - -4. Execute the batch queries stored in sql\main.sql. If you want your item and monster databases stored in your MySQL database, execute sql\database.sql too. For example: - -mysql -D ragnarok -h localhost -u root -p < sql/main.sql | more && mysql -D ragnarok -h localhost -u root -p < sql/database.sql | more - -5. Add an inter-server account for every character server you intend to link to your login server. For example: - -USE ragnarok -INSERT INTO `login` - (`userid`,`user_pass`,`sex`,`email`) - VALUES ('inter-server_chaos','password','S',''); - -Every character server linked to your login server requires its own inter-server account; inter-server accounts are used by the servers to communicate with each other. The differences between user and inter-server accounts are: - -- The "sex" field value must equal "S" -- The "e-mail" field value is unused and therefore should be set to "" -- The "level", "error_message", "connect_until", "memo", "ban_until" and "state" field values are unsued and therefore should be set to 0 - -Anyone who knows the username and password of an inter-server account can control a character server using that account. Therefore, choose secure passwords for your inter-server accounts. - -6. Add accounts or convert existing accounts from a text file database. - -To add new accounts, use, for example: - -USE ragnarok -INSERT INTO `login` - (`userid`,`user_pass`,`sex`,`email`,`level`) - VALUES ('','','','',); - -Where is either M, F, or S for male, female, and inter-server respectively and is the e-mail address (for confirmation of character deletion). - -To convert existing accounts stored in a text file database, use login-converter.exe and char-converter.exe. Parties and guilds cannot be converted. - -7. Edit the configuration files in conf\ (except import\, mapflag\, help.txt, water.txt and water_height.txt) according to your computer configuration, network configuration, MySQL database server configuration and personal preferences. - -8. Download the latest cygwin1-yyyymmdd.dll.bz2 snapshot, where "yyyymmdd" is the build date, from http://cygwin.com/snapshots/. Extract cygwin1-yyyymmdd.dll from the archive, rename it to cygwin1.dll, and move it to your system or system32 directory -- depending on your version of Windows -- in your system root directory. - -9. Optionally compile: - -a. Install Cygwin with these packages: - -devel/ - gcc, - gcc-g++, - gcc-mingw-core, - gcc-mingw-g++, - make, - mingw-runtime, - mktemp - -b. Using Cygwin, install the MySQL libraries by compiling and installing the MySQL database server source distribution for Linux with "./configure --without-server && make && make install". - -c. Using Cygwin, enter "make" in the eAthena SQL directory. Recompile with "make clean && make". - -1.2 Linux ---------- - -1. It is not the aim of this document to explain the installation, concepts or usage of MySQL. If you are unfamiliar with MySQL, familiarise yourself with it and read at least these sections of the MySQL reference manual (http://dev.mysql.com/doc/mysql/en/index.html): - -- 2.2.2 Installing MySQL on Linux -- 2.4 Post-Installation Setup and Testing -- 5.4 General Security Issues -- 5.5 The MySQL Access Privilege System -- 5.6 MySQL User Account Management - -2. If fast and secure access to a MySQL server is unavailable, install, start and configure MySQL database server version 4.0.x. If you are using a version of Windows which is a member of the NT family, we recommend that you install MySQL as a service. - -3. Create a new database and a new user account with only SELECT, INSERT, UPDATE and DELETE privileges on the database. For example: - -CREATE DATABASE ragnarok; -GRANT - SELECT,INSERT,UPDATE,DELETE - ON `ragnarok`.* # database - TO 'ragnarok'@'localhost' # username@address - IDENTIFIED BY 'password'; # password - -For security, do not use the password "password" for your user account. - -4. Execute the batch queries stored in sql/main.sql. If you want your item and monster databases stored in your MySQL database, execute sql/database.sql too. For example: - -mysql -D ragnarok -h localhost -u root -p < sql/main.sql | more && mysql -D ragnarok -h localhost -u root -p < sql/database.sql | more - -5. Add an inter-server account for every character server you intend to link to your login server. For example: - -USE ragnarok -INSERT INTO `login` - (`userid`,`user_pass`,`sex`,`email`) - VALUES ('inter-server_chaos','password','S',''); - -Every character server linked to your login server requires its own inter-server account; inter-server accounts are used by the servers to communicate with each other. The differences between user and inter-server accounts are: - -- The "sex" field value must equal "S" -- The "e-mail" field value is unused and therefore should be set to "" -- The "level", "error_message", "connect_until", "memo", "ban_until" and "state" field values are unsued and therefore should be set to 0 - -Anyone who knows the username and password of an inter-server account can control a character server using that account. Therefore, choose secure passwords for your inter-server accounts. - -6. Add accounts or convert existing accounts from a text file database. - -To add new accounts, use, for example: - -USE ragnarok -INSERT INTO `login` - (`userid`,`user_pass`,`sex`,`email`,`level`) - VALUES ('','','','',); - -Where is either M, F, or S for male, female, and inter-server respectively and is the e-mail address (for confirmation of character deletion). - -To convert existing accounts stored in a text file database, use login-converter and char-converter. Parties and guilds cannot be converted. - -7. Edit the configuration files in conf/ (except import/, mapflag/, help.txt, water.txt and water_height.txt) according to your computer configuration, network configuration, MySQL database server configuration and personal preferences. - -8. Compile with "make". Recompile with "make clean && make". - -1.3 FreeBSD ------------ - -1. It is not the aim of this document to explain the installation, concepts or usage of MySQL. If you are unfamiliar with MySQL, familiarise yourself with it and read at least these sections of the MySQL reference manual (http://dev.mysql.com/doc/mysql/en/index.html): - -- 2.2.5 Installing MySQL on Other Unix-Like Systems -- 2.4 Post-Installation Setup and Testing -- 5.4 General Security Issues -- 5.5 The MySQL Access Privilege System -- 5.6 MySQL User Account Management - -2. If fast and secure access to a MySQL server is unavailable, install, start and configure MySQL database server version 4.0.x. If you are using a version of Windows which is a member of the NT family, we recommend that you install MySQL as a service. - -3. Create a new database and a new user account with only SELECT, INSERT, UPDATE and DELETE privileges on the database. For example: - -CREATE DATABASE ragnarok; -GRANT - SELECT,INSERT,UPDATE,DELETE - ON `ragnarok`.* # database - TO 'ragnarok'@'localhost' # username@address - IDENTIFIED BY 'password'; # password - -For security, do not use the password "password" for your user account. - -4. Execute the batch queries stored in sql/main.sql. If you want your item and monster databases stored in your MySQL database, execute sql/database.sql too. For example: - -mysql -D ragnarok -h localhost -u root -p < sql/main.sql | more && mysql -D ragnarok -h localhost -u root -p < sql/database.sql | more - -5. Add an inter-server account for every character server you intend to link to your login server. For example: - -USE ragnarok -INSERT INTO `login` - (`userid`,`user_pass`,`sex`,`email`) - VALUES ('inter-server_chaos','password','S',''); - -Every character server linked to your login server requires its own inter-server account; inter-server accounts are used by the servers to communicate with each other. The differences between user and inter-server accounts are: - -- The "sex" field value must equal "S" -- The "e-mail" field value is unused and therefore should be set to "" -- The "level", "error_message", "connect_until", "memo", "ban_until" and "state" field values are unsued and therefore should be set to 0 - -Anyone who knows the username and password of an inter-server account can control a character server using that account. Therefore, choose secure passwords for your inter-server accounts. - -6. Add accounts or convert existing accounts from a text file database. - -To add new accounts, use, for example: - -USE ragnarok -INSERT INTO `login` - (`userid`,`user_pass`,`sex`,`email`,`level`) - VALUES ('','','','',); - -Where is either M, F, or S for male, female, and inter-server respectively and is the e-mail address (for confirmation of character deletion). - -To convert existing accounts stored in a text file database, use login-converter and char-converter. Parties and guilds cannot be converted. - -7. Edit the configuration files in conf/ (except import/, mapflag/, help.txt, water.txt and water_height.txt) according to your computer configuration, network configuration, MySQL database server configuration and personal preferences. - -8. Compile with "gmake". Recompile with "gmake clean && gmake". - - -2 Upgrading -=========== - -2.1 Upgrading from version 817 ------------------------------- - -1. Execute the batch queries stored in sql/upgrade_817.sql and sql/upgrade_0.5.2_main.sql. - -2. If you want your item and monster databases stored in your MySQL database, execute the batch queries stored in sql/database.sql. - -2.2 Upgrading from version 0.5.2 --------------------------------- - -1. Execute the batch queries stored in sql/upgrade_0.5.2_main.sql. - -2. If you created the item_db and mob_db tables, execute the batch queries stored in sql/upgrade_0.5.2_database.sql. - -2.3 Upgrading from version 1.0 RC 1 ------------------------------------ - -1. Execute the batch queries stored in sql/upgrade_1.0.0-rc1_main.sql. - - -3 Mail System -============= - -2.1 Adding the mail database ----------------------------- -1. Execute the batch queries stored in sql/mail.sql - -2. Set mail_system option in conf/battle_athena.conf to 1 or yes. +eAthena SQL Installation and Upgrade Instructions + +1 Installation + 1.1 Windows + 1.2 Linux + 1.3 FreeBSD +2 Upgrading + 2.1 Upgrading from version 817 + 2.2 Upgrading from version 0.5.2 + 2.3 Upgrading from version 1.0 RC 1 +3 Mail System + 3.1 Adding the mail database + 3.2 Activating the mail system + +1 Installation +============== + +1.1 Windows +----------- + +1. It is not the aim of this document to explain the installation, concepts or usage of MySQL. If you are unfamiliar with MySQL, familiarise yourself with it and read at least these sections of the MySQL reference manual (http://dev.mysql.com/doc/mysql/en/index.html): + +- 2.2.1 Installing MySQL on Windows +- 2.4 Post-Installation Setup and Testing +- 5.4 General Security Issues +- 5.5 The MySQL Access Privilege System +- 5.6 MySQL User Account Management + +2. If fast and secure access to a MySQL server is unavailable, install, start and configure MySQL database server version 4.0.x. If you are using a version of Windows which is a member of the NT family, we recommend that you install MySQL as a service. + +3. Create a new database and a new user account with only SELECT, INSERT, UPDATE and DELETE privileges on the database. For example: + +CREATE DATABASE ragnarok; +GRANT + SELECT,INSERT,UPDATE,DELETE + ON `ragnarok`.* # database + TO 'ragnarok'@'localhost' # username@address + IDENTIFIED BY 'password'; # password + +For security, do not use the password "password" for your user account. + +4. Execute the batch queries stored in sql\main.sql. If you want your item and monster databases stored in your MySQL database, execute sql\database.sql too. For example: + +mysql -D ragnarok -h localhost -u root -p < sql/main.sql | more && mysql -D ragnarok -h localhost -u root -p < sql/database.sql | more + +5. Add an inter-server account for every character server you intend to link to your login server. For example: + +USE ragnarok +INSERT INTO `login` + (`userid`,`user_pass`,`sex`,`email`) + VALUES ('inter-server_chaos','password','S',''); + +Every character server linked to your login server requires its own inter-server account; inter-server accounts are used by the servers to communicate with each other. The differences between user and inter-server accounts are: + +- The "sex" field value must equal "S" +- The "e-mail" field value is unused and therefore should be set to "" +- The "level", "error_message", "connect_until", "memo", "ban_until" and "state" field values are unsued and therefore should be set to 0 + +Anyone who knows the username and password of an inter-server account can control a character server using that account. Therefore, choose secure passwords for your inter-server accounts. + +6. Add accounts or convert existing accounts from a text file database. + +To add new accounts, use, for example: + +USE ragnarok +INSERT INTO `login` + (`userid`,`user_pass`,`sex`,`email`,`level`) + VALUES ('','','','',); + +Where is either M, F, or S for male, female, and inter-server respectively and is the e-mail address (for confirmation of character deletion). + +To convert existing accounts stored in a text file database, use login-converter.exe and char-converter.exe. Parties and guilds cannot be converted. + +7. Edit the configuration files in conf\ (except import\, mapflag\, help.txt, water.txt and water_height.txt) according to your computer configuration, network configuration, MySQL database server configuration and personal preferences. + +8. Download the latest cygwin1-yyyymmdd.dll.bz2 snapshot, where "yyyymmdd" is the build date, from http://cygwin.com/snapshots/. Extract cygwin1-yyyymmdd.dll from the archive, rename it to cygwin1.dll, and move it to your system or system32 directory -- depending on your version of Windows -- in your system root directory. + +9. Optionally compile: + +a. Install Cygwin with these packages: + +devel/ + gcc, + gcc-g++, + gcc-mingw-core, + gcc-mingw-g++, + make, + mingw-runtime, + mktemp + +b. Using Cygwin, install the MySQL libraries by compiling and installing the MySQL database server source distribution for Linux with "./configure --without-server && make && make install". + +c. Using Cygwin, enter "make" in the eAthena SQL directory. Recompile with "make clean && make". + +1.2 Linux +--------- + +1. It is not the aim of this document to explain the installation, concepts or usage of MySQL. If you are unfamiliar with MySQL, familiarise yourself with it and read at least these sections of the MySQL reference manual (http://dev.mysql.com/doc/mysql/en/index.html): + +- 2.2.2 Installing MySQL on Linux +- 2.4 Post-Installation Setup and Testing +- 5.4 General Security Issues +- 5.5 The MySQL Access Privilege System +- 5.6 MySQL User Account Management + +2. If fast and secure access to a MySQL server is unavailable, install, start and configure MySQL database server version 4.0.x. If you are using a version of Windows which is a member of the NT family, we recommend that you install MySQL as a service. + +3. Create a new database and a new user account with only SELECT, INSERT, UPDATE and DELETE privileges on the database. For example: + +CREATE DATABASE ragnarok; +GRANT + SELECT,INSERT,UPDATE,DELETE + ON `ragnarok`.* # database + TO 'ragnarok'@'localhost' # username@address + IDENTIFIED BY 'password'; # password + +For security, do not use the password "password" for your user account. + +4. Execute the batch queries stored in sql/main.sql. If you want your item and monster databases stored in your MySQL database, execute sql/database.sql too. For example: + +mysql -D ragnarok -h localhost -u root -p < sql/main.sql | more && mysql -D ragnarok -h localhost -u root -p < sql/database.sql | more + +5. Add an inter-server account for every character server you intend to link to your login server. For example: + +USE ragnarok +INSERT INTO `login` + (`userid`,`user_pass`,`sex`,`email`) + VALUES ('inter-server_chaos','password','S',''); + +Every character server linked to your login server requires its own inter-server account; inter-server accounts are used by the servers to communicate with each other. The differences between user and inter-server accounts are: + +- The "sex" field value must equal "S" +- The "e-mail" field value is unused and therefore should be set to "" +- The "level", "error_message", "connect_until", "memo", "ban_until" and "state" field values are unsued and therefore should be set to 0 + +Anyone who knows the username and password of an inter-server account can control a character server using that account. Therefore, choose secure passwords for your inter-server accounts. + +6. Add accounts or convert existing accounts from a text file database. + +To add new accounts, use, for example: + +USE ragnarok +INSERT INTO `login` + (`userid`,`user_pass`,`sex`,`email`,`level`) + VALUES ('','','','',); + +Where is either M, F, or S for male, female, and inter-server respectively and is the e-mail address (for confirmation of character deletion). + +To convert existing accounts stored in a text file database, use login-converter and char-converter. Parties and guilds cannot be converted. + +7. Edit the configuration files in conf/ (except import/, mapflag/, help.txt, water.txt and water_height.txt) according to your computer configuration, network configuration, MySQL database server configuration and personal preferences. + +8. Compile with "make". Recompile with "make clean && make". + +1.3 FreeBSD +----------- + +1. It is not the aim of this document to explain the installation, concepts or usage of MySQL. If you are unfamiliar with MySQL, familiarise yourself with it and read at least these sections of the MySQL reference manual (http://dev.mysql.com/doc/mysql/en/index.html): + +- 2.2.5 Installing MySQL on Other Unix-Like Systems +- 2.4 Post-Installation Setup and Testing +- 5.4 General Security Issues +- 5.5 The MySQL Access Privilege System +- 5.6 MySQL User Account Management + +2. If fast and secure access to a MySQL server is unavailable, install, start and configure MySQL database server version 4.0.x. If you are using a version of Windows which is a member of the NT family, we recommend that you install MySQL as a service. + +3. Create a new database and a new user account with only SELECT, INSERT, UPDATE and DELETE privileges on the database. For example: + +CREATE DATABASE ragnarok; +GRANT + SELECT,INSERT,UPDATE,DELETE + ON `ragnarok`.* # database + TO 'ragnarok'@'localhost' # username@address + IDENTIFIED BY 'password'; # password + +For security, do not use the password "password" for your user account. + +4. Execute the batch queries stored in sql/main.sql. If you want your item and monster databases stored in your MySQL database, execute sql/database.sql too. For example: + +mysql -D ragnarok -h localhost -u root -p < sql/main.sql | more && mysql -D ragnarok -h localhost -u root -p < sql/database.sql | more + +5. Add an inter-server account for every character server you intend to link to your login server. For example: + +USE ragnarok +INSERT INTO `login` + (`userid`,`user_pass`,`sex`,`email`) + VALUES ('inter-server_chaos','password','S',''); + +Every character server linked to your login server requires its own inter-server account; inter-server accounts are used by the servers to communicate with each other. The differences between user and inter-server accounts are: + +- The "sex" field value must equal "S" +- The "e-mail" field value is unused and therefore should be set to "" +- The "level", "error_message", "connect_until", "memo", "ban_until" and "state" field values are unsued and therefore should be set to 0 + +Anyone who knows the username and password of an inter-server account can control a character server using that account. Therefore, choose secure passwords for your inter-server accounts. + +6. Add accounts or convert existing accounts from a text file database. + +To add new accounts, use, for example: + +USE ragnarok +INSERT INTO `login` + (`userid`,`user_pass`,`sex`,`email`,`level`) + VALUES ('','','','',); + +Where is either M, F, or S for male, female, and inter-server respectively and is the e-mail address (for confirmation of character deletion). + +To convert existing accounts stored in a text file database, use login-converter and char-converter. Parties and guilds cannot be converted. + +7. Edit the configuration files in conf/ (except import/, mapflag/, help.txt, water.txt and water_height.txt) according to your computer configuration, network configuration, MySQL database server configuration and personal preferences. + +8. Compile with "gmake". Recompile with "gmake clean && gmake". + + +2 Upgrading +=========== + +2.1 Upgrading from version 817 +------------------------------ + +1. Execute the batch queries stored in sql/upgrade_817.sql and sql/upgrade_0.5.2_main.sql. + +2. If you want your item and monster databases stored in your MySQL database, execute the batch queries stored in sql/database.sql. + +2.2 Upgrading from version 0.5.2 +-------------------------------- + +1. Execute the batch queries stored in sql/upgrade_0.5.2_main.sql. + +2. If you created the item_db and mob_db tables, execute the batch queries stored in sql/upgrade_0.5.2_database.sql. + +2.3 Upgrading from version 1.0 RC 1 +----------------------------------- + +1. Execute the batch queries stored in sql/upgrade_1.0.0-rc1_main.sql. + + +3 Mail System +============= + +2.1 Adding the mail database +---------------------------- +1. Execute the batch queries stored in sql/mail.sql + +2. Set mail_system option in conf/battle_athena.conf to 1 or yes. diff --git a/LICENCE b/LICENCE index 45645b4b5..5b6e7c66c 100644 --- a/LICENCE +++ b/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. - - - Copyright (C) - - 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. - - , 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. + + + Copyright (C) + + 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. + + , 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/LICENCE_JA b/LICENCE_JA index 0888c67e2..d6306074a 100644 --- a/LICENCE_JA +++ b/LICENCE_JA @@ -1,416 +1,416 @@ - GNU 一般公衆利用許諾契約書 - バージョン2、1991年6月 - 日本語訳、2002年5月20日 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - この利用許諾契約書を、一字一句そのままに複製し頒布することは許可する。 - しかし変更は認めない。 - - 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の非公式な日本語訳です。これはフ - リーソフトウェア財団(the Free Software Foundataion)によって発表された - ものではなく、GNU GPLを適用したソフトウェアの頒布条件を法的に有効な形 - で述べたものではありません。頒布条件としてはGNU GPLの英語版テキストで - 指定されているもののみが有効です。しかしながら、私たちはこの翻訳が、 - 日本語を使用する人々にとってGNU GPLをより良く理解する助けとなることを - 望んでいます。) - - 翻訳は 八田真行が行った。原文は - http://www.gnu.org/licenses/gpl.txtである。誤訳の指摘や改善案を歓迎す - る。 - はじめに - -ソフトウェア向けライセンスの大半は、あなたがそのソフトウェアを共有した -り変更したりする自由を奪うように設計されています。対照的に、GNU 一般公 -衆利用許諾契約書は、あなたがフリーソフトウェアを共有したり変更したりす -る自由を保証する--すなわち、ソフトウェアがそのユーザすべてにとってフリー -であることを保証することを目的としています。この一般公衆利用許諾契約書 -はフリーソフトウェア財団のソフトウェアのほとんどに適用されており、また -GNU GPLを適用すると決めたフリーソフトウェア財団以外の作者によるプログ -ラムにも適用されています(いくつかのフリーソフトウェア財団のソフトウェ -アには、GNU GPLではなくGNU ライブラリ一般公衆利用許諾契約書が適用され -ていることもあります)。あなたもまた、ご自分のプログラムにGNU GPLを適用 -することが可能です。 - -私たちがフリーソフトウェアと言うとき、それは利用の自由について言及して -いるのであって、価格は問題にしていません。私たちの一般公衆利用許諾契約 -書は、あなたがフリーソフトウェアの複製物を頒布する自由を保証するよう設 -計されています(希望に応じてその種のサービスに手数料を課す自由も保証さ -れます)。また、あなたがソースコードを受け取るか、あるいは望めばそれを -入手することが可能であるということ、あなたがソフトウェアを変更し、その -一部を新たなフリーのプログラムで利用できるということ、そして、以上で述 -べたようなことができるということがあなたに知らされるということも保証さ -れます。 - -あなたの権利を守るため、私たちは誰かがあなたの有するこれらの権利を否定 -することや、これらの権利を放棄するよう要求することを禁止するという制限 -を加える必要があります。よって、あなたがソフトウェアの複製物を頒布した -りそれを変更したりする場合には、これらの制限のためにあなたにある種の責 -任が発生することになります。 - -例えば、あなたがフリーなプログラムの複製物を頒布する場合、有料か無料に -関わらず、あなたは自分が有する権利を全て受領者に与えなければなりません。 -また、あなたは彼らもソースコードを受け取るか手に入れることができるよう -保証しなければなりません。そして、あなたは彼らに対して以下で述べる条件 -を示し、彼らに自らの持つ権利について知らしめるようにしなければなりませ -ん。 - -私たちはあなたの権利を二段階の手順を踏んで保護します。(1) まずソフトウェ -アに対して著作権を主張し、そして (2) あなたに対して、ソフトウェアの複 -製や頒布または改変についての法的な許可を与えるこの契約書を提示します。 - -また、各作者や私たちを保護するため、私たちはこのフリーソフトウェアには -何の保証も無いということを誰もが確実に理解するようにし、またソフトウェ -アが誰か他人によって改変され、それが次々と頒布されていったとしても、そ -の受領者は彼らが手に入れたソフトウェアがオリジナルのバージョンでは無い -こと、そして原作者の名声は他人によって持ち込まれた可能性のある問題によっ -て影響されることがないということを周知させたいと思います。 - -最後に、ソフトウェア特許がいかなるフリーのプログラムの存在にも不断の脅 -威を投げかけていますが、私たちは、フリーなプログラムの再頒布者が個々に -特許ライセンスを取得することによって、事実上プログラムを独占的にしてし -まうという危険を避けたいと思います。こういった事態を予防するため、私た -ちはいかなる特許も誰もが自由に利用できるようライセンスされるか、全くラ -イセンスされないかのどちらかでなければならないことを明確にしました。 - -(訳注: 本契約書で「独占的(proprietary)」とは、ソフトウェアの利用や再頒 -布、改変が禁止されているか、許可を得ることが必要とされているか、あるい -は厳しい制限が課せられていて自由にそうすることが事実上できなくなってい -る状態のことを指す。詳しくは -http://www.gnu.org/philosophy/categories.ja.html#ProprietarySoftwareを -参照せよ。) - -複製や頒布、改変についての正確な条件と制約を以下で述べていきます。 - - GNU 一般公衆利用許諾契約書 - 複製、頒布、改変に関する条件と制約 - -0. この利用許諾契約書は、そのプログラム(またはその他の著作物)をこの一 -般公衆利用許諾契約書の定める条件の下で頒布できるという告知が著作権者に -よって記載されたプログラムまたはその他の著作物全般に適用される。以下で -は、「『プログラム』」とはそのようにしてこの契約書が適用されたプログラ -ムや著作物全般を意味し、また「『プログラム』を基にした著作物」とは『プ -ログラム』やその他著作権法の下で派生物と見なされるもの全般を指す。すな -わち、『プログラム』かその一部を、全く同一のままか、改変を加えたか、あ -るいは他の言語に翻訳された形で含む著作物のことである(「改変」という語 -の本来の意味からはずれるが、以下では翻訳も改変の一種と見なす)。それぞ -れの契約者は「あなた」と表現される。 - -複製や頒布、改変以外の活動はこの契約書ではカバーされない。それらはこの -契約書の対象外である。『プログラム』を実行する行為自体に制限はない。ま -た、そのような『プログラム』の出力結果は、その内容が『プログラム』を基 -にした著作物を構成する場合のみこの契約書によって保護される(『プログラ -ム』を実行したことによって作成されたということとは無関係である)。この -ような線引きの妥当性は、『プログラム』が何をするのかに依存する。 - -1. それぞれの複製物において適切な著作権表示と保証の否認声明(disclaimer -of warranty)を目立つよう適切に掲載し、またこの契約書および一切の保証の -不在に触れた告知すべてをそのまま残し、そしてこの契約書の複製物を『プロ -グラム』のいかなる受領者にも『プログラム』と共に頒布する限り、あなたは -『プログラム』のソースコードの複製物を、あなたが受け取った通りの形で複 -製または頒布することができる。媒体は問わない。 - -あなたは、物理的に複製物を譲渡するという行為に関して手数料を課しても良 -いし、希望によっては手数料を取って交換における保護の保証を提供しても良 -い。 - -2. あなたは自分の『プログラム』の複製物かその一部を改変して『プログラ -ム』を基にした著作物を形成し、そのような改変点や著作物を上記第1節の定 -める条件の下で複製または頒布することができる。ただし、そのためには以下 -の条件すべてを満たしていなければならない: - - a) あなたがそれらのファイルを変更したということと変更した日時が良 - く分かるよう、改変されたファイルに告示しなければならない。 - - b) 『プログラム』またはその一部を含む著作物、あるいは『プログラム』 - かその一部から派生した著作物を頒布あるいは発表する場合には、その全 - 体をこの契約書の条件に従って第三者へ無償で利用許諾しなければならな - い。 - - c) 改変されたプログラムが、通常実行する際に対話的にコマンドを読む - ようになっているならば、そのプログラムを最も一般的な方法で対話的に - 実行する際、適切な著作権表示、無保証であること(あるいはあなたが保 - 証を提供するということ)、ユーザがプログラムをこの契約書で述べた条 - 件の下で頒布することができるということ、そしてこの契約書の複製物を - 閲覧するにはどうしたらよいかというユーザへの説明を含む告知が印刷さ - れるか、あるいは画面に表示されるようにしなければならない(例外とし - て、『プログラム』そのものは対話的であっても通常そのような告知を印 - 刷しない場合には、『プログラム』を基にしたあなたの著作物にそのよう - な告知を印刷させる必要はない)。 - -以上の必要条件は全体としての改変された著作物に適用される。著作物の一部 -が『プログラム』から派生したものではないと確認でき、それら自身別の独立 -した著作物であると合理的に考えられるならば、あなたがそれらを別の著作物 -として分けて頒布する場合、そういった部分にはこの契約書とその条件は -適用されない。しかし、あなたが同じ部分を『プログラム』を基にした著作物 -全体の一部として頒布するならば、全体としての頒布物は、この契約書が -課す条件に従わなければならない。というのは、この契約書が他の契約者 -に与える許可は『プログラム』丸ごと全体に及び、誰が書いたかは関係なく各 -部分のすべてを保護するからである。 - -よって、すべてあなたによって書かれた著作物に対し、権利を主張したりあな -たの権利に異議を申し立てることはこの節の意図するところではない。むしろ、 -その趣旨は『プログラム』を基にした派生物ないし集合著作物の頒布を管理す -る権利を行使するということにある。 - -また、『プログラム』を基にしていないその他の著作物を『プログラム』(あ -るいは『プログラム』を基にした著作物)と一緒に集めただけのものを一巻の -保管装置ないし頒布媒体に収めても、その他の著作物までこの契約書が保 -護する対象になるということにはならない。 - -3. あなたは上記第1節および2節の条件に従い、『プログラム』(あるいは第2 -節における派生物)をオブジェクトコードないし実行形式で複製または頒布す -ることができる。ただし、その場合あなたは以下のうちどれか一つを実施しな -ければならない: - - a) 著作物に、『プログラム』に対応した完全かつ機械で読み取り可能な - ソースコードを添付する。ただし、ソースコードは上記第1節および2節の - 条件に従いソフトウェアの交換で習慣的に使われる媒体で頒布しなければ - ならない。あるいは、 - - b) 著作物に、いかなる第三者に対しても、『プログラム』に対応した完 - 全かつ機械で読み取り可能なソースコードを、頒布に要する物理的コスト - を上回らない程度の手数料と引き換えに提供する旨述べた少なくとも3年 - 間は有効な書面になった申し出を添える。ただし、ソースコードは上記第 - 1節および2節の条件に従いソフトウェアの交換で習慣的に使われる媒体で - 頒布しなければならない。あるいは、 - - c) 対応するソースコード頒布の申し出に際して、あなたが得た情報を一 - 緒に引き渡す(この選択肢は、営利を目的としない頒布であって、かつあ - なたが上記小節bで指定されているような申し出と共にオブジェクトコー - ドあるいは実行形式のプログラムしか入手していない場合に限り許可され - る)。 - -著作物のソースコードとは、それに対して改変を加える上で好ましいとされる -著作物の形式を意味する。ある実行形式の著作物にとって完全なソースコード -とは、それが含むモジュールすべてのソースコード全部に加え、関連するイン -ターフェース定義ファイルのすべてとライブラリのコンパイルやインストール -を制御するために使われるスクリプトをも加えたものを意味する。しかし特別 -な例外として、そのコンポーネント自体が実行形式に付随するのでは無い限り、 -頒布されるものの中に、実行形式が実行されるオペレーティングシステムの主 -要なコンポーネント(コンパイラやカーネル等)と通常一緒に(ソースかバイナ -リ形式のどちらかで)頒布されるものを含んでいる必要はないとする。 - -実行形式またはオブジェクトコードの頒布が、指定された場所からコピーする -ためのアクセス手段を提供することで為されるとして、その上でソースコード -も同等のアクセス手段によって同じ場所からコピーできるようになっているな -らば、第三者がオブジェクトコードと一緒にソースも強制的にコピーさせられ -るようになっていなくてもソースコード頒布の条件を満たしているものとする。 - -4. あなたは『プログラム』を、この契約書において明確に提示された行 -為を除き複製や改変、サブライセンス、あるいは頒布してはならない。他に -『プログラム』を複製や改変、サブライセンス、あるいは頒布する企てはすべ -て無効であり、この契約書の下でのあなたの権利を自動的に終結させるこ -とになろう。しかし、複製物や権利をこの契約書に従ってあなたから得た -人々に関しては、そのような人々がこの契約書に完全に従っている限り彼 -らのライセンスまで終結することはない。 - -5. あなたはこの契約書を受諾する必要は無い。というのは、あなたはこ -れに署名していないからである。しかし、この契約書以外にあなたに対し -て『プログラム』やその派生物を変更、頒布する許可を与えるものは存在しな -い。これらの行為は、あなたがこの契約書を受け入れない限り法によって -禁じられている。そこで、『プログラム』(あるいは『プログラム』を基にし -た著作物のすべて)を改変ないし頒布することにより、あなたは自分がそのよ -うな行為を行うためにこの契約書を受諾したということ、そして『プログ -ラム』とそれに基づく著作物の複製や頒布、改変についてこの契約書が課 -す制約と条件をすべて受け入れたということを示したものと見なす。 - -6. あなたが『プログラム』(または『プログラム』を基にした著作物全般)を -再頒布するたびに、その受領者は元々のライセンス許可者から、この契約書で -指定された条件と制約の下で『プログラム』を複製や頒布、あるいは改変する -許可を自動的に得るものとする。あなたは、受領者がここで認められた権利を -行使することに関してこれ以上他のいかなる制限も課すことができない。あな -たには、第三者がこの契約書に従うことを強制する責任はない。 - -7. 特許侵害あるいはその他の理由(特許関係に限らない)から、裁判所の判決 -あるいは申し立ての結果としてあなたに(裁判所命令や契約などにより)この契 -約書の条件と矛盾する制約が課された場合でも、あなたがこの契約書の条件を -免除されるわけではない。もしこの契約書の下であなたに課せられた責任と他 -の関連する責任を同時に満たすような形で頒布できないならば、結果としてあ -なたは『プログラム』を頒布することが全くできないということである。例え -ば特許ライセンスが、あなたから直接間接を問わずコピーを受け取った人が誰 -でも『プログラム』を使用料無料で再頒布することを認めていない場合、あな -たがその制約とこの契約書を両方とも満たすには『プログラム』の頒布を完全 -に中止するしかないだろう。 - -この節の一部分が特定の状況の下で無効ないし実施不可能な場合でも、節の残 -りの部分は適用されるよう意図されている。その他の状況では節が全体として -適用されるよう意図されている。 - -特許やその他の財産権を侵害したり、そのような権利の主張の効力に異議を唱 -えたりするようあなたを誘惑することがこの節の目的ではない。この節には、 -人々によってライセンス慣行として実現されてきた、フリーソフトウェア頒布 -のシステムの完全性を護るという目的しかない。多くの人々が、フリーソフト -ウェアの頒布システムが首尾一貫して適用されているという信頼に基づき、こ -のシステムを通じて頒布される多様なソフトウェアに寛大な貢献をしてきたの -は事実であるが、人がどのようなシステムを通じてソフトウェアを頒布したい -と思うかはあくまでも作者/寄与者次第であり、あなたが選択を押しつけるこ -とはできない。 - -この節は、この契約書のこの節以外の部分の一帰結になると考えられるケー -スを徹底的に明らかにすることを目的としている。 - -8. 『プログラム』の頒布や利用が、ある国においては特許または著作権が主 -張されたインターフェースのいずれかによって制限されている場合、『プログ -ラム』にこの契約書を適用した元の著作権者は、そういった国々を排除し -た明確な地理的頒布制限を加え、そこで排除されていない国の中やそれらの国々 -の間でのみ頒布が許可されるようにしても構わない。その場合、そのような制 -限はこの契約書本文で書かれているのと同様に見なされる。 - -9. フリーソフトウェア財団は、時によって改訂または新版の一般公衆利用許 -諾書を発表することができる。そのような新版は現在のバージョンとその精神 -においては似たものになるだろうが、新たな問題や懸念を解決するため細部で -は異なる可能性がある。 - -それぞれのバージョンには、見分けが付くようにバージョン番号が振られてい -る。『プログラム』においてそれに適用されるこの契約書のバージョン番号が -指定されていて、更に「それ以降のいかなるバージョン」も適用して良いとなっ -ていた場合、あなたは従う条件と制約として、指定のバージョンか、フリーソ -フトウェア財団によって発行された指定のバージョン以降の版のどれか一つの -どちらかを選ぶことが出来る。『プログラム』でライセンスのバージョン番号 -が指定されていないならば、あなたは今までにフリーソフトウェア財団から発 -行されたバージョンの中から好きに選んで構わない。 - -10. もしあなたが『プログラム』の一部を、その頒布条件がこの契約書と -異なる他のフリーなプログラムと統合したいならば、作者に連絡して許可を求 -めよ。フリーソフトウェア財団が著作権を保有するソフトウェアについては、 -フリーソフトウェア財団に連絡せよ。私たちは、このような場合のために特別 -な例外を設けることもある。私たちが決定を下すにあたっては、私たちのフリー -ソフトウェアの派生物すべてがフリーな状態に保たれるということと、一般的 -にソフトウェアの共有と再利用を促進するという二つの目標を規準に検討され -るであろう。 - 無保証について - -11. 『プログラム』は代価無しに利用が許可されるので、適切な法が認める限 -りにおいて、『プログラム』に関するいかなる保証も存在しない。書面で別に -述べる場合を除いて、著作権者、またはその他の団体は、『プログラム』を、 -表明されたか言外にかは問わず、商業的適性を保証するほのめかしやある特定 -の目的への適合性(に限られない)を含む一切の保証無しに「あるがまま」で提 -供する。『プログラム』の質と性能に関するリスクのすべてはあなたに帰属す -る。『プログラム』に欠陥があると判明した場合、あなたは必要な保守点検や -補修、修正に要するコストのすべてを引き受けることになる。 - -12. 適切な法か書面での同意によって命ぜられない限り、著作権者、または上 -記で許可されている通りに『プログラム』を改変または再頒布したその他の団 -体は、あなたに対して『プログラム』の利用ないし利用不能で生じた一般的、 -特別的、偶然的、必然的な損害(データの消失や不正確な処理、あなたか第三 -者が被った損失、あるいは『プログラム』が他のソフトウェアと一緒に動作し -ないという不具合などを含むがそれらに限らない)に一切の責任を負わない。 -そのような損害が生ずる可能性について彼らが忠告されていたとしても同様で -ある。 - - 条件と制約終わり - - 以上の条項をあなたの新しいプログラムに適用する方法 - -あなたが新しいプログラムを開発したとして、公衆によってそれが利用される -可能性を最大にしたいなら、そのプログラムをこの契約書の条項に従って -誰でも再頒布あるいは変更できるようフリーソフトウェアにするのが最善です。 - -そのためには、プログラムに以下のような表示を添付してください。その場合、 -保証が排除されているということを最も効果的に伝えるために、それぞれのソー -スファイルの冒頭に表示を添付すれば最も安全です。少なくとも、「著作権表 -示」という行と全文がある場所へのポインタだけは各ファイルに含めて置いて -ください。 - - - Copyright (C) - - 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 - - (訳: - - <プログラムの名前と、それが何をするかについての簡単な説明。> - Copyright (C) <西暦年> <作者の名前> - - このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフ - トウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョ - ン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条件 - の下で再頒布または改変することができます。 - - このプログラムは有用であることを願って頒布されますが、*全くの無保 - 証* です。商業可能性の保証や特定の目的への適合性は、言外に示された - ものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご - 覧ください。 - - あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を - 一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェ - ア財団まで請求してください(宛先は the Free Software Foundation, - Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。 - - ) - -電子ないし紙のメールであなたに問い合わせる方法についての情報も書き加え -ましょう。 - -プログラムが対話的なものならば、対話モードで起動した際に出力として以下 -のような短い告知が表示されるようにしてください: - - 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 バージョン 69, Copyright (C) 年 作者の名前 - Gnomovision は*全くの無保証*で提供されます。詳しくは「show w」 - とタイプして下さい。これはフリーソフトウェアであり、ある条件の下で - 再頒布することが奨励されています。詳しくは「show c」とタイプして下 - さい。 - - ) - -ここで、仮想的なコマンド「show w」と「show c」は一般公衆利用許諾契約書 -の適切な部分を表示するようになっていなければなりません。もちろん、あな -たが使うコマンドを「show w」や「show c」と呼ぶ必然性はありませんので、 -あなたのプログラムに合わせてマウスのクリックやメニューのアイテムにして -も結構です。 - -またあなたは、必要ならば(プログラマーとして働いていたら)あなたの雇用主、 -あるいは場合によっては学校から、そのプログラムに関する「著作権放棄声明 -(copyright disclaimer)」に署名してもらうべきです。以下は例ですので、名 -前を変えてください: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - - (訳: - - Yoyodyne社はここに、James Hackerによって書かれたプログラム - 「Gnomovision」(コンパイラへ通すプログラム)に関する一切の著作権の利 - 益を放棄します。 - - 、1989年4月1日 - Ty Coon、副社長 - - ) - -この一般公衆利用許諾契約書では、あなたのプログラムを独占的なプログラム -に統合することを認めていません。あなたのプログラムがサブルーチンライブ -ラリならば、独占的なアプリケーションとあなたのライブラリをリンクするこ -とを許可したほうがより便利であると考えるかもしれません。もしこれがあな -たの望むことならば、この契約書の代わりにGNU ライブラリ一般公衆利用許諾 -契約書を適用してください。 + GNU 一般公衆利用許諾契約書 + バージョン2、1991年6月 + 日本語訳、2002年5月20日 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + この利用許諾契約書を、一字一句そのままに複製し頒布することは許可する。 + しかし変更は認めない。 + + 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の非公式な日本語訳です。これはフ + リーソフトウェア財団(the Free Software Foundataion)によって発表された + ものではなく、GNU GPLを適用したソフトウェアの頒布条件を法的に有効な形 + で述べたものではありません。頒布条件としてはGNU GPLの英語版テキストで + 指定されているもののみが有効です。しかしながら、私たちはこの翻訳が、 + 日本語を使用する人々にとってGNU GPLをより良く理解する助けとなることを + 望んでいます。) + + 翻訳は 八田真行が行った。原文は + http://www.gnu.org/licenses/gpl.txtである。誤訳の指摘や改善案を歓迎す + る。 + はじめに + +ソフトウェア向けライセンスの大半は、あなたがそのソフトウェアを共有した +り変更したりする自由を奪うように設計されています。対照的に、GNU 一般公 +衆利用許諾契約書は、あなたがフリーソフトウェアを共有したり変更したりす +る自由を保証する--すなわち、ソフトウェアがそのユーザすべてにとってフリー +であることを保証することを目的としています。この一般公衆利用許諾契約書 +はフリーソフトウェア財団のソフトウェアのほとんどに適用されており、また +GNU GPLを適用すると決めたフリーソフトウェア財団以外の作者によるプログ +ラムにも適用されています(いくつかのフリーソフトウェア財団のソフトウェ +アには、GNU GPLではなくGNU ライブラリ一般公衆利用許諾契約書が適用され +ていることもあります)。あなたもまた、ご自分のプログラムにGNU GPLを適用 +することが可能です。 + +私たちがフリーソフトウェアと言うとき、それは利用の自由について言及して +いるのであって、価格は問題にしていません。私たちの一般公衆利用許諾契約 +書は、あなたがフリーソフトウェアの複製物を頒布する自由を保証するよう設 +計されています(希望に応じてその種のサービスに手数料を課す自由も保証さ +れます)。また、あなたがソースコードを受け取るか、あるいは望めばそれを +入手することが可能であるということ、あなたがソフトウェアを変更し、その +一部を新たなフリーのプログラムで利用できるということ、そして、以上で述 +べたようなことができるということがあなたに知らされるということも保証さ +れます。 + +あなたの権利を守るため、私たちは誰かがあなたの有するこれらの権利を否定 +することや、これらの権利を放棄するよう要求することを禁止するという制限 +を加える必要があります。よって、あなたがソフトウェアの複製物を頒布した +りそれを変更したりする場合には、これらの制限のためにあなたにある種の責 +任が発生することになります。 + +例えば、あなたがフリーなプログラムの複製物を頒布する場合、有料か無料に +関わらず、あなたは自分が有する権利を全て受領者に与えなければなりません。 +また、あなたは彼らもソースコードを受け取るか手に入れることができるよう +保証しなければなりません。そして、あなたは彼らに対して以下で述べる条件 +を示し、彼らに自らの持つ権利について知らしめるようにしなければなりませ +ん。 + +私たちはあなたの権利を二段階の手順を踏んで保護します。(1) まずソフトウェ +アに対して著作権を主張し、そして (2) あなたに対して、ソフトウェアの複 +製や頒布または改変についての法的な許可を与えるこの契約書を提示します。 + +また、各作者や私たちを保護するため、私たちはこのフリーソフトウェアには +何の保証も無いということを誰もが確実に理解するようにし、またソフトウェ +アが誰か他人によって改変され、それが次々と頒布されていったとしても、そ +の受領者は彼らが手に入れたソフトウェアがオリジナルのバージョンでは無い +こと、そして原作者の名声は他人によって持ち込まれた可能性のある問題によっ +て影響されることがないということを周知させたいと思います。 + +最後に、ソフトウェア特許がいかなるフリーのプログラムの存在にも不断の脅 +威を投げかけていますが、私たちは、フリーなプログラムの再頒布者が個々に +特許ライセンスを取得することによって、事実上プログラムを独占的にしてし +まうという危険を避けたいと思います。こういった事態を予防するため、私た +ちはいかなる特許も誰もが自由に利用できるようライセンスされるか、全くラ +イセンスされないかのどちらかでなければならないことを明確にしました。 + +(訳注: 本契約書で「独占的(proprietary)」とは、ソフトウェアの利用や再頒 +布、改変が禁止されているか、許可を得ることが必要とされているか、あるい +は厳しい制限が課せられていて自由にそうすることが事実上できなくなってい +る状態のことを指す。詳しくは +http://www.gnu.org/philosophy/categories.ja.html#ProprietarySoftwareを +参照せよ。) + +複製や頒布、改変についての正確な条件と制約を以下で述べていきます。 + + GNU 一般公衆利用許諾契約書 + 複製、頒布、改変に関する条件と制約 + +0. この利用許諾契約書は、そのプログラム(またはその他の著作物)をこの一 +般公衆利用許諾契約書の定める条件の下で頒布できるという告知が著作権者に +よって記載されたプログラムまたはその他の著作物全般に適用される。以下で +は、「『プログラム』」とはそのようにしてこの契約書が適用されたプログラ +ムや著作物全般を意味し、また「『プログラム』を基にした著作物」とは『プ +ログラム』やその他著作権法の下で派生物と見なされるもの全般を指す。すな +わち、『プログラム』かその一部を、全く同一のままか、改変を加えたか、あ +るいは他の言語に翻訳された形で含む著作物のことである(「改変」という語 +の本来の意味からはずれるが、以下では翻訳も改変の一種と見なす)。それぞ +れの契約者は「あなた」と表現される。 + +複製や頒布、改変以外の活動はこの契約書ではカバーされない。それらはこの +契約書の対象外である。『プログラム』を実行する行為自体に制限はない。ま +た、そのような『プログラム』の出力結果は、その内容が『プログラム』を基 +にした著作物を構成する場合のみこの契約書によって保護される(『プログラ +ム』を実行したことによって作成されたということとは無関係である)。この +ような線引きの妥当性は、『プログラム』が何をするのかに依存する。 + +1. それぞれの複製物において適切な著作権表示と保証の否認声明(disclaimer +of warranty)を目立つよう適切に掲載し、またこの契約書および一切の保証の +不在に触れた告知すべてをそのまま残し、そしてこの契約書の複製物を『プロ +グラム』のいかなる受領者にも『プログラム』と共に頒布する限り、あなたは +『プログラム』のソースコードの複製物を、あなたが受け取った通りの形で複 +製または頒布することができる。媒体は問わない。 + +あなたは、物理的に複製物を譲渡するという行為に関して手数料を課しても良 +いし、希望によっては手数料を取って交換における保護の保証を提供しても良 +い。 + +2. あなたは自分の『プログラム』の複製物かその一部を改変して『プログラ +ム』を基にした著作物を形成し、そのような改変点や著作物を上記第1節の定 +める条件の下で複製または頒布することができる。ただし、そのためには以下 +の条件すべてを満たしていなければならない: + + a) あなたがそれらのファイルを変更したということと変更した日時が良 + く分かるよう、改変されたファイルに告示しなければならない。 + + b) 『プログラム』またはその一部を含む著作物、あるいは『プログラム』 + かその一部から派生した著作物を頒布あるいは発表する場合には、その全 + 体をこの契約書の条件に従って第三者へ無償で利用許諾しなければならな + い。 + + c) 改変されたプログラムが、通常実行する際に対話的にコマンドを読む + ようになっているならば、そのプログラムを最も一般的な方法で対話的に + 実行する際、適切な著作権表示、無保証であること(あるいはあなたが保 + 証を提供するということ)、ユーザがプログラムをこの契約書で述べた条 + 件の下で頒布することができるということ、そしてこの契約書の複製物を + 閲覧するにはどうしたらよいかというユーザへの説明を含む告知が印刷さ + れるか、あるいは画面に表示されるようにしなければならない(例外とし + て、『プログラム』そのものは対話的であっても通常そのような告知を印 + 刷しない場合には、『プログラム』を基にしたあなたの著作物にそのよう + な告知を印刷させる必要はない)。 + +以上の必要条件は全体としての改変された著作物に適用される。著作物の一部 +が『プログラム』から派生したものではないと確認でき、それら自身別の独立 +した著作物であると合理的に考えられるならば、あなたがそれらを別の著作物 +として分けて頒布する場合、そういった部分にはこの契約書とその条件は +適用されない。しかし、あなたが同じ部分を『プログラム』を基にした著作物 +全体の一部として頒布するならば、全体としての頒布物は、この契約書が +課す条件に従わなければならない。というのは、この契約書が他の契約者 +に与える許可は『プログラム』丸ごと全体に及び、誰が書いたかは関係なく各 +部分のすべてを保護するからである。 + +よって、すべてあなたによって書かれた著作物に対し、権利を主張したりあな +たの権利に異議を申し立てることはこの節の意図するところではない。むしろ、 +その趣旨は『プログラム』を基にした派生物ないし集合著作物の頒布を管理す +る権利を行使するということにある。 + +また、『プログラム』を基にしていないその他の著作物を『プログラム』(あ +るいは『プログラム』を基にした著作物)と一緒に集めただけのものを一巻の +保管装置ないし頒布媒体に収めても、その他の著作物までこの契約書が保 +護する対象になるということにはならない。 + +3. あなたは上記第1節および2節の条件に従い、『プログラム』(あるいは第2 +節における派生物)をオブジェクトコードないし実行形式で複製または頒布す +ることができる。ただし、その場合あなたは以下のうちどれか一つを実施しな +ければならない: + + a) 著作物に、『プログラム』に対応した完全かつ機械で読み取り可能な + ソースコードを添付する。ただし、ソースコードは上記第1節および2節の + 条件に従いソフトウェアの交換で習慣的に使われる媒体で頒布しなければ + ならない。あるいは、 + + b) 著作物に、いかなる第三者に対しても、『プログラム』に対応した完 + 全かつ機械で読み取り可能なソースコードを、頒布に要する物理的コスト + を上回らない程度の手数料と引き換えに提供する旨述べた少なくとも3年 + 間は有効な書面になった申し出を添える。ただし、ソースコードは上記第 + 1節および2節の条件に従いソフトウェアの交換で習慣的に使われる媒体で + 頒布しなければならない。あるいは、 + + c) 対応するソースコード頒布の申し出に際して、あなたが得た情報を一 + 緒に引き渡す(この選択肢は、営利を目的としない頒布であって、かつあ + なたが上記小節bで指定されているような申し出と共にオブジェクトコー + ドあるいは実行形式のプログラムしか入手していない場合に限り許可され + る)。 + +著作物のソースコードとは、それに対して改変を加える上で好ましいとされる +著作物の形式を意味する。ある実行形式の著作物にとって完全なソースコード +とは、それが含むモジュールすべてのソースコード全部に加え、関連するイン +ターフェース定義ファイルのすべてとライブラリのコンパイルやインストール +を制御するために使われるスクリプトをも加えたものを意味する。しかし特別 +な例外として、そのコンポーネント自体が実行形式に付随するのでは無い限り、 +頒布されるものの中に、実行形式が実行されるオペレーティングシステムの主 +要なコンポーネント(コンパイラやカーネル等)と通常一緒に(ソースかバイナ +リ形式のどちらかで)頒布されるものを含んでいる必要はないとする。 + +実行形式またはオブジェクトコードの頒布が、指定された場所からコピーする +ためのアクセス手段を提供することで為されるとして、その上でソースコード +も同等のアクセス手段によって同じ場所からコピーできるようになっているな +らば、第三者がオブジェクトコードと一緒にソースも強制的にコピーさせられ +るようになっていなくてもソースコード頒布の条件を満たしているものとする。 + +4. あなたは『プログラム』を、この契約書において明確に提示された行 +為を除き複製や改変、サブライセンス、あるいは頒布してはならない。他に +『プログラム』を複製や改変、サブライセンス、あるいは頒布する企てはすべ +て無効であり、この契約書の下でのあなたの権利を自動的に終結させるこ +とになろう。しかし、複製物や権利をこの契約書に従ってあなたから得た +人々に関しては、そのような人々がこの契約書に完全に従っている限り彼 +らのライセンスまで終結することはない。 + +5. あなたはこの契約書を受諾する必要は無い。というのは、あなたはこ +れに署名していないからである。しかし、この契約書以外にあなたに対し +て『プログラム』やその派生物を変更、頒布する許可を与えるものは存在しな +い。これらの行為は、あなたがこの契約書を受け入れない限り法によって +禁じられている。そこで、『プログラム』(あるいは『プログラム』を基にし +た著作物のすべて)を改変ないし頒布することにより、あなたは自分がそのよ +うな行為を行うためにこの契約書を受諾したということ、そして『プログ +ラム』とそれに基づく著作物の複製や頒布、改変についてこの契約書が課 +す制約と条件をすべて受け入れたということを示したものと見なす。 + +6. あなたが『プログラム』(または『プログラム』を基にした著作物全般)を +再頒布するたびに、その受領者は元々のライセンス許可者から、この契約書で +指定された条件と制約の下で『プログラム』を複製や頒布、あるいは改変する +許可を自動的に得るものとする。あなたは、受領者がここで認められた権利を +行使することに関してこれ以上他のいかなる制限も課すことができない。あな +たには、第三者がこの契約書に従うことを強制する責任はない。 + +7. 特許侵害あるいはその他の理由(特許関係に限らない)から、裁判所の判決 +あるいは申し立ての結果としてあなたに(裁判所命令や契約などにより)この契 +約書の条件と矛盾する制約が課された場合でも、あなたがこの契約書の条件を +免除されるわけではない。もしこの契約書の下であなたに課せられた責任と他 +の関連する責任を同時に満たすような形で頒布できないならば、結果としてあ +なたは『プログラム』を頒布することが全くできないということである。例え +ば特許ライセンスが、あなたから直接間接を問わずコピーを受け取った人が誰 +でも『プログラム』を使用料無料で再頒布することを認めていない場合、あな +たがその制約とこの契約書を両方とも満たすには『プログラム』の頒布を完全 +に中止するしかないだろう。 + +この節の一部分が特定の状況の下で無効ないし実施不可能な場合でも、節の残 +りの部分は適用されるよう意図されている。その他の状況では節が全体として +適用されるよう意図されている。 + +特許やその他の財産権を侵害したり、そのような権利の主張の効力に異議を唱 +えたりするようあなたを誘惑することがこの節の目的ではない。この節には、 +人々によってライセンス慣行として実現されてきた、フリーソフトウェア頒布 +のシステムの完全性を護るという目的しかない。多くの人々が、フリーソフト +ウェアの頒布システムが首尾一貫して適用されているという信頼に基づき、こ +のシステムを通じて頒布される多様なソフトウェアに寛大な貢献をしてきたの +は事実であるが、人がどのようなシステムを通じてソフトウェアを頒布したい +と思うかはあくまでも作者/寄与者次第であり、あなたが選択を押しつけるこ +とはできない。 + +この節は、この契約書のこの節以外の部分の一帰結になると考えられるケー +スを徹底的に明らかにすることを目的としている。 + +8. 『プログラム』の頒布や利用が、ある国においては特許または著作権が主 +張されたインターフェースのいずれかによって制限されている場合、『プログ +ラム』にこの契約書を適用した元の著作権者は、そういった国々を排除し +た明確な地理的頒布制限を加え、そこで排除されていない国の中やそれらの国々 +の間でのみ頒布が許可されるようにしても構わない。その場合、そのような制 +限はこの契約書本文で書かれているのと同様に見なされる。 + +9. フリーソフトウェア財団は、時によって改訂または新版の一般公衆利用許 +諾書を発表することができる。そのような新版は現在のバージョンとその精神 +においては似たものになるだろうが、新たな問題や懸念を解決するため細部で +は異なる可能性がある。 + +それぞれのバージョンには、見分けが付くようにバージョン番号が振られてい +る。『プログラム』においてそれに適用されるこの契約書のバージョン番号が +指定されていて、更に「それ以降のいかなるバージョン」も適用して良いとなっ +ていた場合、あなたは従う条件と制約として、指定のバージョンか、フリーソ +フトウェア財団によって発行された指定のバージョン以降の版のどれか一つの +どちらかを選ぶことが出来る。『プログラム』でライセンスのバージョン番号 +が指定されていないならば、あなたは今までにフリーソフトウェア財団から発 +行されたバージョンの中から好きに選んで構わない。 + +10. もしあなたが『プログラム』の一部を、その頒布条件がこの契約書と +異なる他のフリーなプログラムと統合したいならば、作者に連絡して許可を求 +めよ。フリーソフトウェア財団が著作権を保有するソフトウェアについては、 +フリーソフトウェア財団に連絡せよ。私たちは、このような場合のために特別 +な例外を設けることもある。私たちが決定を下すにあたっては、私たちのフリー +ソフトウェアの派生物すべてがフリーな状態に保たれるということと、一般的 +にソフトウェアの共有と再利用を促進するという二つの目標を規準に検討され +るであろう。 + 無保証について + +11. 『プログラム』は代価無しに利用が許可されるので、適切な法が認める限 +りにおいて、『プログラム』に関するいかなる保証も存在しない。書面で別に +述べる場合を除いて、著作権者、またはその他の団体は、『プログラム』を、 +表明されたか言外にかは問わず、商業的適性を保証するほのめかしやある特定 +の目的への適合性(に限られない)を含む一切の保証無しに「あるがまま」で提 +供する。『プログラム』の質と性能に関するリスクのすべてはあなたに帰属す +る。『プログラム』に欠陥があると判明した場合、あなたは必要な保守点検や +補修、修正に要するコストのすべてを引き受けることになる。 + +12. 適切な法か書面での同意によって命ぜられない限り、著作権者、または上 +記で許可されている通りに『プログラム』を改変または再頒布したその他の団 +体は、あなたに対して『プログラム』の利用ないし利用不能で生じた一般的、 +特別的、偶然的、必然的な損害(データの消失や不正確な処理、あなたか第三 +者が被った損失、あるいは『プログラム』が他のソフトウェアと一緒に動作し +ないという不具合などを含むがそれらに限らない)に一切の責任を負わない。 +そのような損害が生ずる可能性について彼らが忠告されていたとしても同様で +ある。 + + 条件と制約終わり + + 以上の条項をあなたの新しいプログラムに適用する方法 + +あなたが新しいプログラムを開発したとして、公衆によってそれが利用される +可能性を最大にしたいなら、そのプログラムをこの契約書の条項に従って +誰でも再頒布あるいは変更できるようフリーソフトウェアにするのが最善です。 + +そのためには、プログラムに以下のような表示を添付してください。その場合、 +保証が排除されているということを最も効果的に伝えるために、それぞれのソー +スファイルの冒頭に表示を添付すれば最も安全です。少なくとも、「著作権表 +示」という行と全文がある場所へのポインタだけは各ファイルに含めて置いて +ください。 + + + Copyright (C) + + 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 + + (訳: + + <プログラムの名前と、それが何をするかについての簡単な説明。> + Copyright (C) <西暦年> <作者の名前> + + このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフ + トウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョ + ン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条件 + の下で再頒布または改変することができます。 + + このプログラムは有用であることを願って頒布されますが、*全くの無保 + 証* です。商業可能性の保証や特定の目的への適合性は、言外に示された + ものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご + 覧ください。 + + あなたはこのプログラムと共に、GNU 一般公衆利用許諾契約書の複製物を + 一部受け取ったはずです。もし受け取っていなければ、フリーソフトウェ + ア財団まで請求してください(宛先は the Free Software Foundation, + Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA)。 + + ) + +電子ないし紙のメールであなたに問い合わせる方法についての情報も書き加え +ましょう。 + +プログラムが対話的なものならば、対話モードで起動した際に出力として以下 +のような短い告知が表示されるようにしてください: + + 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 バージョン 69, Copyright (C) 年 作者の名前 + Gnomovision は*全くの無保証*で提供されます。詳しくは「show w」 + とタイプして下さい。これはフリーソフトウェアであり、ある条件の下で + 再頒布することが奨励されています。詳しくは「show c」とタイプして下 + さい。 + + ) + +ここで、仮想的なコマンド「show w」と「show c」は一般公衆利用許諾契約書 +の適切な部分を表示するようになっていなければなりません。もちろん、あな +たが使うコマンドを「show w」や「show c」と呼ぶ必然性はありませんので、 +あなたのプログラムに合わせてマウスのクリックやメニューのアイテムにして +も結構です。 + +またあなたは、必要ならば(プログラマーとして働いていたら)あなたの雇用主、 +あるいは場合によっては学校から、そのプログラムに関する「著作権放棄声明 +(copyright disclaimer)」に署名してもらうべきです。以下は例ですので、名 +前を変えてください: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + + (訳: + + Yoyodyne社はここに、James Hackerによって書かれたプログラム + 「Gnomovision」(コンパイラへ通すプログラム)に関する一切の著作権の利 + 益を放棄します。 + + 、1989年4月1日 + Ty Coon、副社長 + + ) + +この一般公衆利用許諾契約書では、あなたのプログラムを独占的なプログラム +に統合することを認めていません。あなたのプログラムがサブルーチンライブ +ラリならば、独占的なアプリケーションとあなたのライブラリをリンクするこ +とを許可したほうがより便利であると考えるかもしれません。もしこれがあな +たの望むことならば、この契約書の代わりにGNU ライブラリ一般公衆利用許諾 +契約書を適用してください。 diff --git a/Makefile b/Makefile index 1480d8015..2f0b29f4e 100644 --- a/Makefile +++ b/Makefile @@ -1,127 +1,127 @@ -# $Id: Makefile 158 2004-10-01 03:45:15Z PoW $ - -CC = gcc -pipe -PACKETDEF = -DPACKETVER=6 -DNEW_006b -DSO_REUSEPORT -#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 - -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: Makefile 158 2004-10-01 03:45:15Z PoW $ + +CC = gcc -pipe +PACKETDEF = -DPACKETVER=6 -DNEW_006b -DSO_REUSEPORT +#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 + +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/Readme-jap b/Readme-jap index 3e2ac8648..6bf23c87b 100644 --- a/Readme-jap +++ b/Readme-jap @@ -1,17507 +1,17507 @@ --------------------- -//1032 by (凸) -・1031で何故か削除されていたbuildin_getitemname()を復活 -・バグスレなどに出た修正を反映 -・その他細かい修正 - - (map/) - clif.c - clif_disp_onlyself() NULLチェック追加 - map.c - map_nick2sd() nickがNULLだとすぐNULLを返すように変更 - mob.c - mob_setdelayspawn() NULLチェック変更 - mob_delete() 修正 - npc.c - npc_parse_warp() 修正 - script.c - buildin_getitemname() 復活 - ----------------------------------------- -//1031 by huge -・NPCのscriptに、makepetを追加。 - makepet 卵ID; で、ペットを作成します。 -・NPCのscriptに、getexpを追加。 - getexp Base,Job; で、それぞれの経験値を増やします。 -・ペットの卵をNPCのdelitemで消したりshopで売った時、ペットセーブデータから削除するよう修正。 -・ディボーション成功条件修正。(未確認) -・経験値表示を可能にしてみました。confにて設定してください。 - - (conf/) - battle_athena.conf 修正 - (doc/) - conf_ref.txt 修正 - script_ref.txt 修正 - (map/) - battle.c - battle.h - disp_experience 追加 - clif.c - clif.h - clif_disp_onlyself() 追加 - pc.c - pc_gainexp() 修正 - script.c - buildin_delitem() 修正 - buildin_makepet() 追加 - buildin_getexp() 追加 - npc.c - #include 修正 - npc_selllist() 修正 - skill.c - skill_castend_nodamage_id() 修正 - - --------------------- -//1030 by (凸) -・map_athena.confに新婚島ザワイをコメントアウトして追加 -・クローンスキルで覚えたスキルを自動セーブごとに忘れていたのでとりあえずログオフ時にのみ忘れるように変更したつもり -・mobskill_castend_posの無害nullpoチェックを変更 -・Emotionの設定がないMobがスキルを使用するときに/!を出していたのを修正 -・バグスレに投げたtrade.cを添付。とりあえず相手が所持できる種類の限界を超えた場合は渡さずに元に戻すように変更 - - (conf/) - map_athena.conf ザワイ追加 - (doc/) - client_packet.txt パケット長の更新 - (map/) - map.c - map_quit() 終了時にクローンスキルで覚えたスキルを忘れるように変更 - mob.c - mobskill_castend_pos() nullpoチェック変更 - mob_readskilldb() 修正 - pc.c - pc_makesavestatus() クローンスキルを忘れるのをmap_quitに任せた - trade.c - trade_tradecommit() 所持できる種類以上を取引した場合にアイテムが消えないように - --------------------- -//1029 by (凸) -・20040619RagexeHC_jp.rgzの0x204と0x20bパケットに対応 -・charとloginも知らないパケットが来たらパケットダンプを出力するようにclif.cからコピペ - - (doc/) - client_packet.txt 新パケット追加 - (char/) - char.c - parse_char() 0x20b対応 - (login/) - login.c - parse_login() 0x204対応 - --------------------- -//1028 by (凸) -・ウンバラ以降、Mobがスキルを使用するときにエモーションを出すようになったので、mob_skill_dbを拡張 - サンプルでオークウォーリアーが喫煙すると「/…」を出すのとオークレディが速度を使うと「/ちゅ」を出します -・アイテム682,683を使用すると30秒間ATKやMATKが増えるらしいのでそれっぽく -・job_db2.txtに謎の行が2行あったのを削除 -・範囲魔法などでスキルユニット相手にステータス変更をかけようとした場合にnullpoが出たのを修正 - - (db/) - const.txt SC_INCATK SC_INCMATK追加 - item_db.txt ↑を682,683に追加 - job_db2.txt 謎の2行を削除 - mob_skill_db.txt Emotion追加 - (map/) - mob.c - mobskill_use() スキル使用時にエモーションを出すように変更 - mob_readskilldb() Emotionを読み込むように変更 - mob.h 変更 - pc.c - pc_calcstatus() 変更 - skill.c - - skill_status_change_end() 変更 - skill_status_change_start() 変更とNULLチェック修正 - skill.h 変更 - --------------------- -//1027 by Ni+S -・getitemname関数追加 -・スクリプトにgetitemname関数を追加 -・itemidより、jnameを文字列で返します -・詳しくはscript_ref.txtで。 - - script.c - getitemname()追加 - ----------------------------------------- -//1026 by (凸) -・1023で入れてなかったclif.hを同梱 -・バイオプラントとスフィアーマインで出したmobを倒すとmob_timer_delete()でnullpoが出る問題を解決したつもり -・バグ報告スレッド part6 >>63 Destさんのscript.c修正を取り込み - - (map/) - clif.h 変更 - map.h 変更 - mob.c - mob_changestate() 変更 - skill.c - skill_castend_pos2() 変更 - mob_spawn() 変更 - do_init_mob() add_timer_func_listにmob_timer_deleteが無かったので追加してみた - script.c - script_load_mapreg() 変更 - ------------------------- -//1025 by Sel -・ロードナイトのジョブ補正が間違っていたのを修正 -・オーラブレード効果時間を修正 -・オーラブレード武器制限を素手以外全てに修正 -・コンセントレーション武器制限を両手槍のみから片手槍+両手槍へ修正 -・トゥルーサイト効果時間を修正 -・ファルコンアサルト武器制限を解除、素手を含めた全てで使用可能に - - (db/) - job_db2-2.txt 変更 - skill_cast_db.txt 変更 - skill_require_db.txt 変更 --------------------- -//1024 by mare -・ファーマシー材料の変更、製造可能薬品の追加 - 6/8日本鯖にきたものと同じにしました - - (db/) - produce_db.txt 変更 - ----------------------------------------- -//1023 by (凸) -・1022でエンバグしたnpc_parse_script()を戻し -・スパイラルピアースの重量追加ダメージ計算式をちょっと変更 -・魔法力増幅の計算式をちょっと変更 -・テンションリラックスが座って使うのではなく使うと座るという情報を見かけたので変更 -・↑に伴いskill_requireのsitting条件廃止 -・バーサークをGvGで使用できないように変更 - - (db/) - skill_cast_db.txt 変更 - skill_require_db.txt 変更 - (doc/) - db_ref.txt 修正 - (map/) - battle.c - battle_calc_pc_weapon_attack() 変更 - clif.c - clif_sitting() 追加 - clif_parse_ActionRequest() 変更 - npc.c - npc_parse_script() 修正 - pc.h 変更 - pc.c - pc_calcstatus() 変更 - pc_natural_heal_hp() 変更 - pc_setstand() 追加 - skill.c - skill_castend_nodamage_id() テンションリラックスを使うと座るように - skill_check_condition() ST_SITTING廃止 - skill_use_id() バーサークをGvGで使用できないように - skill_status_change_timer() テンションリラックスは10秒ごとにSPを12消費 - skill_status_change_start() テンションリラックス変更 - skill_readdb() sitting廃止 - skill.h 変更 - --------------------- -//1022 by (凸) -・NULLチェック変更 -・login,char,map終了時に開放されていなかったメモリを微妙に開放する努力をしてみた -・スパノビ爆裂波動実装、クリティカル+50 -・スパノビボーナスを変更、最初から一度も死んでないJobLv70にAll+15、BaseLv99にMHP+2000 - - (doc/) - client_packet.txt S 01ed追加 - (char/) - do_final() 変更 - do_init() 変更 - (login/) - do_final() 追加 - do_init() 変更 - (map/) - atcommand.c Destさんの変更を取り込み - battle.c 同上 - chat.c NULLチェック変更 - chrif.c NULLチェック変更 - clif.c NULLチェック変更 - clif_parse() 変更 - clif_parse_sn_explosionspirits() 追加 - clif_parse_sn_doridori() 名前変更 - guild.c NULLチェック変更 - intif.c NULLチェック変更 - itemdb.c NULLチェック変更 - map.c NULLチェック変更 - do_final() 変更 - mob.c NULLチェック変更 - npc.c NULLチェック変更 - npc_parse_script() buf開放忘れ?を開放 - party.c NULLチェック変更 - path.c NULLチェック変更 - pc.c NULLチェック変更 - pc_calcstatus() スパノビ変更 - pet.c NULLチェック変更 - storage.c NULLチェック変更 - trade.c NULLチェック変更 - vending.c NULLチェック変更 - --------------------- -//1021 by Kalen -・プロンテラ冠婚品NPCにてタキシード販売 -・Umbalaのワープ見直し - D2Fのワープを本鯖使用に変更。重複ポイント修正 -・UmbalaNPC修正 - ラベルを使用しなくいい場所は極力削除(-) - セーブポイント修正 - バンジージャンプ台追加 - 骸骨門追加 - 分解、合成処理追加 - カプラ、案内要員をあるべき場所へ移動。 - ※一部Emoについて、癌呆自身が逆に取り違えているみたいなので独自で変えました。 - 見てもらえば分かりますが18と28を逆にするとNPCの会話内容に合うEmoが出たので - クエストフラグの条件追加 -  これによりすでに終えている場合でも途中になる可能性があります。 -・スパノビ転職NPC追加 - 凸さんのログを基に作成しました。 -・アルケミストギルドのノビの場合の対応修正(凸さんからのログより) -・結婚NPC追加 - ただし、まだテスト段階です。問題点があるため結婚不可能です。 - (/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(新・テスト) - (/job) - npc_job_alchemist.txt - npc_job_supernovice.txt(新) - --------------------- -//1020 by (凸) -・nullpoの変更に対応してmap_athena.confの設定削除&skill.c書き換え -・座っているとHPRとSPRが通常の半分で発動したのを修正 -・スパノビが一定条件(クライアント依存)で/doridoriするとSPR回復量が倍になるように変更 -・結婚式用のエフェクトをスクリプトからwedding命令で発生させることが出来るようした -・合奏を開始したPCは合奏中に終了できないようにしたつもり(未確認) - - (conf/) - map_athena.conf nullpo_check削除 - (doc/) - client_packet.txt 更新 - conf_ref.txt nullpo_check削除 - (map/) - map.c - map_config_read() nullpo_check削除 - map.h 同上 - skill.c NULLチェック再度総入れ替え - clif.c - clif_wedding_effect() 追加 - clif_parse_QuitGame() 合奏開始者は合奏中に終了できないように変更 - clif_parse_doridori() 追加 - clif_parse() doridori追加 - clif.h 変更 - pc.c - pc_authok() doridori初期化追加 - pc_natural_heal_hp() 座っているときのHPR時間修正 - pc_natural_heal_sp() 座っているときのHPR時間修正、doridori追加 - script.c - buildin_wedding_effect() 追加 - - --------------------- -//1019 by Dest -・nullpoモジュールにコーディングミス発見/修正 -・同、voidな関数から呼ばれた時のnullpo_retv_f()を追加 -・同、条件コンパイルに対応 - - (common/) - nullpo.c - nullpo_info_core() コーディングミス修正 - nullpo.h - NULLPO_CHECKフラグによる条件コンパイル追加 - nullpo_retv_f() 追加 - --------------------- -//1018 by chloe -・ウンバラモンスターを追加 - - (script/mob/) - npc_monster.txt 変更 - 各ウンバラマップにMob配置 - (db/) - mob_db.txt 変更 - 1495,STONE_SHOOTER,フレイムシューター 修正 - 1511,AMON_RA,アモンラー 修正 - --------------------- -//1017 by (凸) -・バグ報告スレッド part6 >>46 Destさんのnullpoモジュールを追加&voidな関数から呼ばれた時のnullpo_retv()を追加(とりあえずskill.cのNULLチェックだけ入れ替え) -・同>>39 Selさんから報告があったコンセントレーションを修正 -・仕様について語り合うスレッド >>33 Kalenさんの情報をclient_packet.txtに反映 -・本鯖相違スレッド part3 >>24 M @zqcM6jBwさんの情報を↑ -・同>>30 はちさんの修正を反映 - - (conf/) - map_athena.conf nullpo_check追加 - (db/) - item_db.txt 結婚指輪を武器-アクセサリに変更&最新版 - (doc/) - client_packet.txt 更新 - conf_ref.txt nullpo_check追加 - (common/) - Makefile 変更 - nullpo.c 追加 - nullpo.h 追加 - (map/) - Makefile 変更 - map.c - map_config_read() nullpo_check追加 - map.h 同上 - skill.c NULLチェック総入れ替え - skill_status_change_start() コンセントレーション修正 - skill_castend_nodamage_id() テレポート修正 - clif.c - clif_skill_setunit() コメント修正 - pc.c - pc_calcstatus() コンセントレーション修正 - --------------------- -//1016 by な。 -・Athena雑談スレッドPart4 42 かる氏作のウンバラNPCを追加 - - (script/npc/town/) - npc_town_umbala.txt追加 - イベントデバッグ様(230〜256行目)はコメントアウト - (conf/) - map_athena.conf town に npc: script/npc/town/npc_town_umbala.txt 追加 - --------------------- -//1015 by (凸) -・リムーブトラップを本鯖仕様とAthena仕様で選べるようにした -・スパノビにAll+10する条件が良く分からなかったけど最初から+10じゃないのは確かなのでとりあえずBase99で一度も死んでなければという条件に変更 -・ダンス中に吹き飛ばされてもエフェクトは移動しないそうなので変更 -・@go 13微調整 - - - (conf/) - battle_athena.conf skill_removetrap_type追加 - (doc/) - client_packet.txt 本鯖相違スレッド part3 23 M @zqcM6jBwさんの情報を追加 - conf_ref.txt skill_removetrap_type追加 - (map/) - atcommand.c - atcommand_go() ウンバラの出現位置微調整 - battle.c - battle_config_read() skill_removetrap_type追加 - battle.h 同上 - pc.c - pc_calcstatus() スパノビAll+10条件変更 - skill.c - skill_blown() ダンス中の吹き飛ばしを元に戻した - skill_castend_nodamage_id() リムーブトラップ仕様変更 - - -------------------- -//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 (凸) -・help.txtにある@goの説明から13と14を削除 - 機能は消えてないので使えることは使えますが、helpに載せるのはjROに来てからということで -・cast_db.txtをskill_cast_db.txtに改名 -・ついでにmake cleanでGNUmakefileも消してみることにする -・u-0さんの検証などを総合してダンスユニット関連を変更 - 演奏・ダンス中のハエはユニット付きで飛ぶそうです - 演奏・ダンス中にワープポイントに乗ったら状態が解除されるようです - 合奏中に片方がハエ飛びしたらエフェクトは元の場所に残り、飛んだ先では合奏状態が継続して動けない&時間ごとにSP消費するようです -・PC_DIE_COUNTERがスクリプトから変更された時にすぐに反映されるように変更 - - (conf/) - help.txt @go説明変更 - (db/) - skill_cast_db.txt 改名 - (map/) - pc.c - pc_setpos() ダンス中断のタイミング変更 - pc_setglobalreg() PC_DIE_COUNTER特別処理追加 - skill.c - skill_castend_id() NULLチェック変更 - skill_stop_dancing() マップ移動などでの挙動を変更 - skill_readdb() skill_cast_dbに改名 - skill_blown() 飛ばされたらダンス移動 - npc.c - npc_touch_areanpc() ワープポイントに乗ったらダンス解除 - --------------------- -//1011 by パイン -・パーティ要請やギルド要請を出しているときに他の要請を拒否る処理を追加 - battle_athena.confで切り替えが出来るようになっています。 -・make clean で事が足りるので、objectdel.batを消去 - - (map) - clif.c - clif_party_invite()変更(nullpoの文言違ってました) - guild.c - guild_invite()変更 - party.c - party_invite()変更 - battle.c - battle_config_read()変更 - battle.h変更 - trade.c - trade_traderequest()変更 - --------------------- -//1010 by (凸) -・gcc 2.95対策 -・スパノビの1度死ぬまでAll+10をスクリプト変数で実装してみる試み - PC_DIE_COUNTER 死ぬと+1、転職すると0になります - ↑はキャラクタ永続なスクリプト変数なのでNPCで参照&再設定とか比較的楽かも - - (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を追加 - npc.c - npc_click() nullpoメッセージを修正 - pc.c - pc_setrestartvalue() nullpoメッセージを修正 - pc_authok() die_counter初期化の追加 - pc_calcstatus() die_counter=0のスパノビは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 ぴざまん -・ダンス移動軽量化実装 - battle_athena.confで切り替え可能です。詳しくはconf_refを - オリジナルアップデートの為、デフォルトではoffにしています - また、この軽量化モードは回線負荷を大幅に削減できる(つもり)ですが、 - その分サーバー側の処理が重たくなります(といってもある程度のCPUがあれば全然問題にならない程度の負荷ですが) -・結婚システム/結婚スキル実装 - 結婚指輪の特別扱いが未実装です(落とせたり取引に出せたりします) - 離婚のみ未テストです。 -・結婚用スクリプト(marriage、divorce)追加。 - ・marriage -  : 結婚相手の名前 -  戻り値: 成功:1 失敗:0 -  結婚処理を行います。対象は話し掛けたプレイヤーとのキャラクターで、どちらかが既婚の場合は失敗します。 -  1回のmarriageスクリプトで新郎→新婦と新婦→新郎の結婚処理を同時に行います。 -  また、このスクリプトで結婚指輪は与えられません。 - ・devorce -  引数無し -  戻り値: 成功:1 失敗:0 -  離婚処理を行います。対象は話し掛けたプレイヤーで、未婚の場合は失敗します。 -  marriageスクリプトと同様に互いの離婚処理を同時に行います。 -  また、このスクリプトが成功すると自動的に対象キャラクターの結婚指輪は剥奪されます。 - - どちらのスクリプトの処理も、2人共ログインしていないと成功しません。 - - (map/) - pc.c - pc_ismarried()、pc_marriage()、pc_divorce()、pc_authok()変更 - pc_get_partner() 追加 - map.c - map_quit() 変更 - skill.c - skill_use_id()、skill_castend_nodamage_id() 変更 - skill_unitsetting()、skill_unit_onlimit() 変更 - script.c - buildin_marriage()、buildin_devorce() 追加 - pc.h 変更 - battle.h 変更 - --------------------- -//1008 by ぴざまん -・GMセッション隠し実装(未テスト) - GMアカウントのキャラクターを@who等で表示するかどうか設定できます。 - 詳しくはconf_ref.txtを参照してください。 -・結婚システム仮実装 - char-map間通信のみ実装です。まだ結婚することは出来ません。 - 尚、このパッチからathena.txtのバージョンが変わります。 - データの互換性は保ったつもりですが、念の為バックアップを取っておく事を強く推奨します。 - - (map/) - clif.c - clif_countusers() 変更 - battle.c - battle_config_read() 変更 - atcommand.c - atcommand_who() 変更 - pc.c - pc_ismarried()、pc_marriage()、pc_divorce() 追加 - chrif.c - chrif_divorce() 追加 - chrif_parse() 変更 - (char/) - char.c - char_divorce() 追加 - char_delete()、mmo_char_fromstr()、mmo_char_tostr() 変更 - --------------------- -//1007 by (凸) -・NULLチェックの見直し - - (map/) - clif.c - clif_send() 変更 - skill.c - skill_delunit() 変更 - --------------------- -//1006 by (ruhu) -・@goに洛陽とニフルヘイム追加 - - (conf/) - help.txt ニフルヘイム、洛陽追加 - (map/) - atcommand.c - atcommand go() ニフルヘイム、洛陽追加 --------------------- -//1005 by (凸) -・NULLチェックの見直しと追加、大量に変更したので問題が出る可能性が大です -・ウンバラ分割パッチが配布されたので@go 12にウンバラを追加 -・ロードナイト バーサークをちょっとそれっぽく(ASPD増加などは未実装) -・クラウン・ジプシー 月明りの泉に落ちる花びらの使用条件を合奏と同じに変更(効果等は未実装) -・ブレッシングが本鯖ではステータスアップ→エフェクトだったのでそのように変更 -・本鯖相違スレッド part2 >>145 zzzさんの報告を反映 -・同スレ >>143 plalaさんの報告を反映 - - (db/) - skill_require_db.txt 変更 - (conf/) - help.txt ウンバラ追加 - map_athena.conf ウンバラ関連のコメントアウトを解除 - (map/) - atcommand.c NULLチェック強化 - atcommand() @mapmoveなどで落ちる問題を修正 - atcommand_go() ウンバラ追加 - battle.c NULLチェック強化 - battle_calc_mob_weapon_attack() バーサーク時ダメージ150% - battle_calc_pc_weapon_attack() バーサーク時ダメージ150% - chat.c NULLチェック強化 - chrif.c NULLチェック強化 - clif.c NULLチェック強化 - clif_parse_ActionRequest() ダンス時の処理を若干変更 - clif_parse_GlobalMessage() バーサーク時は会話が出来ないように変更 - clif_parse_Wis() バーサーク時は会話が出来ないように変更 - clif_parse_PartyMessage() 同上 - clif_parse_GuildMessage() 同上 - clif_parse_TakeItem() バーサーク時はアイテムを取れないように変更 - clif_parse_DropItem() バーサーク時はアイテムを落とせないように変更 - clif_parse_UseItem() バーサーク時はアイテムを使えないように変更 - clif_parse_EquipItem() バーサーク時は装備できないように変更 - clif_parse_UnequipItem() バーサーク時は装備解除できないように変更 - clif_parse_UseSkillToId() バーサーク時はスキル使用ができないように変更 - clif_parse_UseSkillToPos() 同上 - clif_parse_UseSkillMap() 同上 - guild.c NULLチェック強化 - intif.c NULLチェック強化 - itemdb.c NULLチェック強化 - map.c NULLチェック強化 - map_quit() バーサーク時にログアウトするとHP 100/SP 0になるように変更 - mob.c - mob_attack() clif_fixmobpos()を送信しないように変更 - mob_timer() NULLチェック条件を変更 - mobskill_castend_id() 同上、バーサーク時スキルを使えないように変更 - mobskill_castend_pos() バーサーク時スキルを使えないように変更 - mobskill_use_id() 同上 - mobskill_use_pos() 同上 - npc.c NULLチェック強化 - party.c NULLチェック強化 - path.c NULLチェック強化 - pc.c NULLチェック強化 - pc_calcstatus() バーサーク時は速度UP&MHP3倍、メディテイティオのSP回復増加をSPRではなく通常回復にかかるようにした - pc_heal() バーサーク時は回復しない - pc_jobchange() 転職直後1歩動かないと服の色が反映されなかったのを修正 - pc_natural_heal_sub() バーサーク中はSPが自然回復しないように変更(HPは良く分からなかったので回復するようにしてある) - pet.c NULLチェック強化 - skill.c - skill_castend_nodamage_id() ブレッシング等のパケット順を変更、ストーンカースを不死には無効にした - skill_castend_map() しつこいくらいにバーサーク時にスキルを使えないように変更 - skill_check_condition() 同上 - skill_use_pos() 同上 - skill_use_id() 同上&月明りの泉に落ちる花びら追加 - skill_status_change_end() バーサーク時にはIAアイコンを消去するように変更 - skill_status_change_timer() NULLチェック条件を変更、月明りの泉に落ちる花びら時SP消費、バーサーク時HP100以上なら10秒あたり1%減らすように変更 - skill_status_change_start() バーサーク時にはIAアイコンを表示するように変更 - skill_delunit() NULLチェック条件を変更 - skill_check_condition_char_sub() 月明りの泉に落ちる花びら追加 - skill_check_condition_use_sub() 同上 - skill_is_danceskill() 同上 - skill_initunitgroup() 同上 - trade.c NULLチェック強化 - vending.c NULLチェック強化 - --------------------- -//1004 by (凸) -・NULLチェックでエンバグしていたところをいくつか修正と他のNULLチェック強化 -・skill.cでもnullpoを表示するように変更 - - (map/) - battle.c - battle_damage() NULLチェック強化 - battle_heal() 同上 - clif.c - clif_damage() 同上 - map.c - map_addflooritem() NULLチェック強化 - mob.c - mob_once_spawn() 余計なNULLチェックを削除 - mob_once_spawn_area() 同上 - mob_damage() 同上 - mob_counttargeted() 同上 - mobskill_castend_id() 同上 - mob_summonslave() メッセージ間違いを修正 - pc.c - pc_damage() NULLチェック強化 - skill.c ほぼ全部 NULL関連修正 - --------------------- -//1003 by (凸) -・jROクライアントで/account使用時に繋がらない原因の0x200パケット問題を修正 -・0x1c9パケットの穴埋めを引き続き継続中 -・一人で聖体や合奏を使用できる設定(player_skill_partner_check)を追加 - 一人で合奏を実行した場合には通常のダンスと挙動が同じになります -・プロボックは不死に対して発動しないように変更 -・FWの吹き飛ばし判定を変更 -・デリュージに水場判定を追加、聖水を作れるのを確認 -・ハイディングの有効時間が正しく機能するように修正 -・アスペルシオを不死に使用した場合、聖属性の40ダメージを与えるように変更 -・アスペルシオを不死以外のMOBに使用しても効果が無いように変更 -・合奏、ダンス、演奏中の経過時間によるSP消費を実装 -・報告のあったガーディアンがギルド未加入PCをターゲットしたらmapが落ちる問題の修正(ガーディアン実装当時からずっと落ちてた?) -・mob.c、storage.cのnullチェックを強化 - エラーで落ちるべきところを無理やり通常処理に戻しているので他で問題がでるかもしれません - その場合、コンソールに「関数名 nullpo」と表示されるので表示された場合は報告をお願いします - もしかしたら正常な処理でも表示されるかもしれませんが、その際も報告をお願いします - 本来エラー、実は正常、どちらにしてもこれが表示されるのはバグです - - (conf/) - battle_athena.conf player_skill_partner_check追加 - (db/) - skill_db.txt アスペルシオの属性を聖に変更 - (doc/) - conf_ref.txt player_skill_partner_check説明追加 - (login/) - login.c - parse_login() 0x200パケット対応 - (map/) - mob.c NULLチェックでほぼ全部 - storage.c NULLチェックでほぼ全部 - battle.h 変更 - battle.c - battle_calc_magic_attack() アスペルシオを追加、FWを変更 - battle_config_read() 設定追加 - clif.c - clif_getareachar_skillunit() 調査結果の反映 - clif_skill_setunit() 同上 - [1001と1002の間の変更点] - skill.c NULLチェックを沢山 - skill_castend_damage_id() アスペルシオ追加 - skill_castend_nodamage_id() アスペルシオ、プロボック処理変更 - skill_castend_id() アスペルシオ処理変更 - skill_check_condition_char_sub() player_skill_partner_checkに対応 - skill_check_condition_use_sub() 同上 - skill_use_id() 同上 - skill_check_condition() 同上&デリュージ対応 - skill_status_change_timer() ハイディング修正、ダンス演奏合奏中のSP消費実装 - skill_initunitgroup() ダンスSP消費用変更 - skill_status_change_start() 同上&プロボックをボスに効かないように(でもbattle.cで止めてるから通常ここまで来ない) - --------------------- -//1002 by ぴざまん -・ポータルバグ修正 -・スキル関係のNullチェック強化(by(凸)) - (map/) - skill.c - skill_castend_map() 修正 - --------------------- -//1001 by (凸) -・0x1c9でいくつかパケットを見比べて変化のないところを固定値で埋め込み(今後情報が集まると変わる可能性大) -・ダンス中はSPだけ回復しないように変更 -・聖体で相方のSPが10以下だと使用失敗にして使用したらSPを10減らしてみる(未確認) -・合奏のスキル使用パケットを若干変更 - - (map/) - clif.c - clif_getareachar_skillunit() 0x1c9の穴埋め開始 - clif_skill_setunit() 0x1c9の穴埋め開始 - pc.c - pc_natural_heal_sub() ダンス中はSPのみ回復しないように変更 - skill.c - skill_check_condition() 変更 - skill_check_condition_char_sub() 聖体は相方のSPチェックするように変更 - skill_check_condition_use_sub() 聖体は相方のSPを減らすように変更 - --------------------- -//1000 by ぴざまん -・0999の変更取り戻し -・トラップの巻き込み実装 -・イドゥンの林檎でNPCまで回復した(ように見える)問題修正(未テスト) -・デモンストレーションのエフェクト変更(こちらに明記) - (map/) - skill.c - skill_count_target() 追加 - skill_unit_onplace()、skill_trap_splash() 変更 --------------------- -//0999 by eAthena Dev Team (Yor's Fixes) -(login/) - added email for accounts -(char/) - added email for character deletion --------------------- -//0998 by (凸) -・battle.cで引数の存在を確認せずに値を見に行ってる関数をいくつか修正 -・ダンス中は座れないようにした(本鯖相違スレッド part2 >>114 DoTさん) -・ダンス中はHP、SPが回復しないように変更(同上) -・ダンス中は通常攻撃できないようにした(本鯖相違スレッド part2 >>116 ・・・さん) -・合奏中片方が落ちた場合、残ったほうで演奏を継続するようにした(同上) -・合奏中はアドリブ以外できないように変更(同上) -・合奏発動条件にダンス中じゃない&座っていないを追加(本鯖相違スレッド part2 >>118 ろろさん) -・阿修羅使用後にHPも回復しなかったのを修正 - - (map/) - battle.c - battle_counttargeted() 修正 - battle_get系 たぶん全部修正 - clif.c - clif_parse_WalkToXY() 合奏の判断方法の変更 - clif_parse_ActionRequest() ダンス中は殴らない座らないように変更 - map.c - map_quit() ダンス中断追加 - mob.c - mob_damage() skill_stop_dancingの引数増加による変更 - pc.c - pc_setpos() 同上 - pc_damage() 同上 - pc_equipitem() 同上 - pc_natural_heal_sub() ダンス中は自然回復しないように&阿修羅時はSPのみ回復しないように - skill.c - skill_castend_nodamage_id() skill_stop_dancingの引数増加による変更 - skill_status_change_start() 同上 - skill_check_condition_char_sub() 相手がダンス中や座っていても合奏できないように変更 - skill_check_condition_use_sub() 同上 - skill_use_id() 合奏の判断方法の変更&合奏中はアドリブ以外禁止に - skill_status_change_end() 合奏のダンス状態解除は相手のval4を0にするようにした - skill_is_danceskill() 戻り値変更 - skill_stop_dancing() 引数増加、合奏で片方だけ落ちたときの処理追加 - skill_delunitgroup() 合奏時のステータス変更処理を↑に移した - skill_clear_unitgroup() 自分のbl->idとユニットグループのgroup->src_idが違うときは削除しないように変更 - skill.h 変更 - --------------------- -//0997 by (凸) -・二人で合奏、三人で聖体を実装 - 合奏 バード・ダンサーが隣接したセルにいて同じスキルを持っている時に発動 - スキルレベルは両者のスキルレベルの中間 - 本鯖仕様が分からないけど斜め隣接もOK - 聖体 使用者のX軸で-1と+1の場所に一人ずつアコライトかプリーストがいる時に発動すると思う(未テスト) - 使用者 ○ アコプリ ● - OK ●○● - - NG ● - ○● -・トーキーボックスを使って設置時に座っていた時はスキル使用失敗にしてみた - - (db/) - item_db.txt 村正の呪い率を5%に(by e2さん) - (map/) - skill.c - skill_check_condition_char_sub() 追加 - skill_check_condition_use_sub() 追加 - skill_check_condition() 変更 - skill_use_id() 変更 - skill_initunitgroup() 変更 - skill_delunitgroup() 変更 - clif.c - clif_parse_UseSkillToPos() 変更 - --------------------- -//0996 by (凸) -・アドリブの5秒制限をcast_db.txtのupkeep_time2で制御できるように変更 -・村正で自分を呪わせるためにbonus2 bAddEff2を追加 -・呪われていて終了できない時にも「今は終了できません」が表示されるようにした -・ダンスエフェクト等移動時に効果の適用判断が移動前に行われていたのを移動後に変更&使わなくていい変数を廃止 - - (db/) - cast_db.txt - const.txt - item_db.txt - (doc/) - item_bonus.txt - (src/) - clif.c - clif_parse_QuitGame() 変更 - map.h addeff2,arrow_addeff2 追加 - pc.c - pc_calcstatus() 変更 - pc_bonus2() 変更 - skill.c - skill_additional_effect() 変更 - skill_check_condition() 変更 - skill_unit_move_unit_group() 変更 - --------------------- -//0995 by (凸) -・battle.pet_lootitemのデフォルトがyesになっていたのを修正 -・battle.pet_lootitemの適用をforeach前でやるように修正 -・ペットの初期化でpd->lootitemがある時しか初期化されていなかったのを修正 -・領域が移動して対象が領域から抜けても効果が解除されない問題を修正 -・アドリブはダンス発動から5秒以上経たないと使用できないようにした - - (map/) - pet.c - pet_data_init() 修正 - pet_ai_sub_hard() 修正 - pet_ai_sub_hard_lootsearch() 修正 - skill.c - skill_blown() 変更 - skill_unit_onlimit() エラーメッセージ修正 - skill_check_condition() 変更 - skill_initunitgroup() sd_data[SC_DANCING].val3にgettick() - skill_unit_move_unit_group_sub() 追加 - skill_unit_move_unit_group() 変更 - skill.h skill_unit_move_unit_group() 引数変更 - battle.c - battle_config_read() pet_lootitem=0に修正 - pc.c - pc_walk() 変更 - --------------------- -//0994 by huge -・battle.pet_lootitemが適応されていなかったのを修正。 -・ペットにパフォーマンスをさせた後、10秒間くらいは拾わせないように。 - - (map/) - map.h pet_dataにlootitem_timer追加。 - pet.c - pet_ai_sub_hard_lootsearch() 修正。 - pet_lootitem_drop() 修正。 - --------------------- -//0993 by (凸) -・一人で合奏だけど合奏スキル中は動けないように -・アンコール実装。直前に使ったダンススキルを半分のSPで使えます -・ダンス中に移動するとエフェクトも移動するようにした -・未実装のスキルが使われるとUnknown skillと表示されることがあるかもしれません -・Sageのキャストキャンセルで実は前のスキルを覚えていなかった問題の修正 - - (map/) - clif.c - clif_parse_WalkToXY() 変更 - map.h アンコール用変数の追加 - pc.c - pc_walk() - skill.c - skill_blown - skill_castend_nodamage_id - skill_unitsetting() 変更 - skill_unit_onplace() 罠で同じ処理をしているcaseをまとめた - skill_unit_onout() 使われてないunit2を削除 - skill_check_condition() 変更 - skill_use_id - skill_initunitgroup() 使ったダンススキルを変数に入れるようにした - skill_unit_move_unit_group() 追加 - skill.h 変更 - --------------------- -//0992 by nokia - -map_quitを修正してメモリを釈放する時何度もを釈放するためメモリの間違いが起こる問題を招く - - (map/) - map.c - map_quit() - --------------------- -//0991 by (凸) -・トーキーボックスを自分が踏んでも発動しない本鯖仕様に変更 -・スキル詠唱中とディレイ中はクライアントを終了できないようにしたけど、敵に攻撃されているときは終了できます(ごめんなさいっ!!) - - (map/) - clif.c - clif_parse_QuitGame() 変更 - skill.c - skill_unitsetting() 変更 - --------------------- -//0990 by ぴざまん -・一部のトラップを範囲攻撃に変更(巻き込みは未実装)。 -・mapflagにpvp_nocalcrankとpvp_nightmaredrop追加。 - ・mapflagpvp_nocalcrankdummy -  PvPによるランキング計算をしないようにします。 - ・mapflagpvp_nightmaredrop,, -  PvPにて死亡した場合、の確率でアイテムをドロップします。 -  : ドロップするアイテムIDを指定します。randomと記述すると所持品からランダムにドロップします。 -  : ドロップするアイテムのタイプを指定します。inventory:所持品 equip:装備品 all:全部 -  : ドロップする確率です。万分率で指定します。 - (map/) - skill.c - skill_unit_onplace() 変更 - skill_trap_splash() 追加 - pc.c - pc_damage() 変更 - npc.c - npc_parse_mapflag() 変更 - map.h - map_dataにメンバ追加 - (conf/) - mapflag.txt - ナイトメアモードにドロップ設定追加 - --------------------- -//0989 by (凸) -・スプリングトラップを某所で見たSSを元に実装してみた。違ったら相違スレへ -・ディテクティングを某所で見た解説文を元に実装してみた。違ったら相違スレへ -・キャストキャンセル時のdelete_timerエラーに追加でスキルIDを表示するようにした。あわせて報告するとエラーの原因が分かるかも - - (map/) - skill.c - skill_castend_nodamage_id() 変更 - skill_castend_pos2() 変更 - skill_castcancel() 変更 - --------------------- -//0988 by (凸) -・トーキーボックスは常に足元に置けるように変更とKalenさんに貰った情報等を元にパケットを本鯖にあわせてみた -・ショックウェーブトラップに効果を追加したつもり(未確認) -・ブラストマインとクレイモアトラップを殴ると吹き飛ぶようにした -・リムーブトラップで罠(skill_require_dbで指定したアイテム)を回収できるようにした -・↑の実装により罠の時間切れで罠が出るオリジナル仕様はコメントアウト -・ブラストマインの効果時間が長いのを修正 - - (db/) - cast_db.txt - (map/) - battle.c - battle_check_target() 変更 - mob.c - mobskill_castend_pos() 変更 - skill.c - skill_additional_effect() 変更 - skill_blown() 変更 - skill_castend_nodamage_id() 変更 - skill_castend_pos2() 変更 - skill_unitsetting() 変更 - skill_unit_onplace() 変更 - skill_unit_ondamaged() 変更 - skill_castend_pos() 変更 - skill_unit_timer_sub() 変更 - --------------------- -//0987 by 胡蝶蘭 - -・ユーザー定義関数/サブルーティンに引数を指定可能に - 詳しくは script_ref.txt を参照 - - (map/) - scirpt.c - buildin_getarg()追加 - buildin_callsub(),buildin_callfunc(),run_func()修正 - (doc/) - script_ref.txt - 引数についての説明追加 - -・getguildname,getpartyname,getcastlename,strcharinfo修正 - C_STRで定数文字列(C_CONSTSTR)を返していた問題修正 - strcharinfoでギルド名などを所得する際、未所属だったときの問題 - - (map/) - script.c - buildin_getguildname(),buildin_getpartyname() - buildin_getcastlename(),buildin_strcharinfo() - --------------------- -//0986 by (凸) -・client_packetの記述から推察してトーキーボックスを実装してみたつもり - - (db/) - skill_db.txt - (map/) - clif.c - clif_talkiebox() 追加 - clif_parse_UseSkillToPos() 変更 - clif_parse() 変更 - clif.h 変更 - map.h 変更 - skill.c - skill_castend_pos2() 変更 - skill_unitsetting() 変更 - skill_unit_onplace() 変更 - --------------------- -//0985 by (凸) -・サーバーsnapshot -・/script/extensionに語り部を追加したり -・0984でAthena雑談スレッド part3>>92 Michaelさんの修正を取り込んでた -・バグ報告スレッド part5 >>45に転載されてた あやねさんの修正を取り込み -・バグ報告スレッド part5 >>54 rariさんのたぬき帽修正を取り込み - - (script/extension/) - npc_event_kataribe6.txt 追加 - npc_event_kataribe7.txt 追加 - (script/npc/) - quest/npc_event_hat.txt 修正 - job/npc_job_magician.txt 修正 - --------------------- -//0984 by (凸) -・セージのフリーキャストというスキルの存在を知らなかったので0983の変更を一部戻し -・アイテム更新したけど垂れ猫とインディアンバンダナが装備できない? -・マップフラグとモンスター配置を最新版に - - (db/) - item_db.txt - (conf/) - mapflag.txt - (script/mob/) - npc_monster.txt - (map/) - clif.c - clif_parse_WalkToXY() 修正 - --------------------- -//0983 by (凸) -・長い詠唱中に歩きまわれた気がするので修正 -・ペットルーレット回転中に対象が叩き殺されたらmap-serverが困るのを修正 -・プロフェッサー ライフ置き換えの手抜き処理をちょっとマシにした - - (map/) - clif.c - clif_parse_WalkToXY() 修正 - pet.c - pet_catch_process2() 修正 - skill.c - skill_castend_nodamage_id() 修正 - --------------------- -//0982 by (凸) -・転生スキルの〜 - ストーカー リジェクトソード 相手がPCの場合は剣じゃなければ跳ね返さない予定 - プロフェッサー メモライズ 12秒の固定キャストタイム、その後スキル使用のキャストタイムが3回だけ1/3になる - プロフェッサー ライフ置き換え HPを10%減らしてSPを増やす。減ったHPのエフェクトは無しにしてみた -・見切りと回避率増加のFlee上昇がステータス変化時にしか反映されていなかったのを修正 -・0981で自分以外は歩いたら服の色が戻ってしまうのをなんとかしたつもり - - (db/) - skill_require_db.txt - (map/) - battle.c - battle_calc_damage() 修正 - clif.c - clif_movechar() 修正 - clif_getareachar_pc() 修正 - pc.c - pc_calcstatus() 修正 - skill.c - SkillStatusChangeTable 変更 - skill_castend_nodamage_id() 変更 - skill_use_id() 変更 - skill_use_pos() 変更 - skill_status_change_timer() 変更 - skill_status_change_start() 変更 - skill.h 変更 - --------------------- -//0981 by (凸) -・転生スキルの〜 - ストーカー リジェクトソード 一定確率でダメージを半分にして減らした分を相手に跳ね返すようにした…が、跳ね返したダメージのエフェクト出ません -・服の色を変更&保存している場合にリログすると元の色に戻ってるように見える問題の修正 - - (db/) - skill_db.txt - (map/) - clif.c - clif_parse_LoadEndAck() 修正 - battle.c - battle_calc_damage() 修正 - skill.c - skill_status_change_timer() 修正 - skill_status_change_start() 修正 - --------------------- -//0980 by (凸) -・例によって転生スキルとモンク関連 - スナイパー シャープシューティング クリティカル率調整? - ハイウィザード ソウルドレイン MSP増量とMobを倒したときにSP(mobLv*(65+15*SkillLv)/100)回復。でも本当は範囲攻撃の場合は回復しないらしい? - ハイウィザード 魔法力増幅 使ったらMATKがSkillLv%増量。次のスキル使用時に元に戻る - モンク 気奪 ちょっと先取りして20%の確率で敵のLv*2のSPを吸収。成功したときはターゲットを取得するようにしてみた -・アイテム名をjROウンバラに準拠させてみたつもり - - (db/) - cast_db.txt - item_db.txt - (map/) - battle.c - battle_calc_pc_weapon_attack() 変更 - mob.c - mob_damage() 変更 - pc.c - pc_calcstatus() 変更 - skill.c - skill_castend_nodamage_id() 変更 - skill_use_id() 変更 - skill_use_pos() 変更 - skill_status_change_end() 変更 - skill_status_change_timer() 変更 - skill_status_change_start() 変更 - --------------------- -//0979 by (凸) -・転生スキルをちょっと調整 - ハイウィザード マジッククラッシャー 武器攻撃でBaseATK計算をMATK2でしてみる -・息吹を本鯖仕様風にHPとSPの回復タイマーを分けて座っていなくても動かなければタイマーが進むようにした -・阿修羅使用後にHPとSPが5分間自然回復しない本鯖使用風にした(csat_db.txtのupkeep_time2で調整可能) -・古いgccでskill_unit_timer_sub_onplace()あたりでコンパイルエラーになったのを修正 - - (db/) - cast_db.txt - (map/) - battle.c - battle_calc_pet_weapon_attack() 変更 - battle_calc_mob_weapon_attack() 変更 - battle_calc_pc_weapon_attack() 変更 - map.h - pc.c - pc_authok() 変更 - pc_walk() 変更 - pc_spirit_heal() 削除 - pc_spirit_heal_hp() 追加 - pc_spirit_heal_sp() 追加 - pc_natural_heal_sub() 変更 - skill.c - skill_additional_effect() 変更 - skill_castend_damage_id() 変更 - skill_status_change_start() 変更 - skill_unit_timer_sub_onplace() 修正 - --------------------- -//0978 by (凸) -・転生スキルを修正したり色々 - スナイパー ファルコンアサルト とりあえず飛ぶだけだと思ってください - スナイパー シャープシューティング ダメージ増加だけど1体だけ - クラウン・ジプシー アローバルカン ダメージ増加と9回攻撃 - ハイウィザード マジッククラッシャー エフェクトだけ - -・アイテム交換で重量の計算が違っていたのを修正 - (doc/) - client_packet.txt パケット長テーブル更新 - (map/) - battle.c - battle_calc_misc_attack() 変更 - battle_calc_pet_weapon_attack() 変更 - battle_calc_mob_weapon_attack() 変更 - battle_calc_pc_weapon_attack() 変更 - clif.c パケット長の定義を更新 - skill.c - skill_castend_damage_id() 変更 - trade.c - trade_tradeadditem() 修正 - --------------------- -//0977 by (凸) -・転生スキルを修正したり色々 - アサシンクロス メテオアサルト エフェクトが違う? - ロードナイト プレッシャー 必中ダメージにしてみた - ロードナイト オーラブレードの必中damage2が他でも適用されていたのを修正 - ロードナイト ゴスペル エフェクト出現位置の調整 - ハイプリースト アシャンプティオ 効果実装 - ハイプリースト メディテイティオ 効果実装 - ハイプリースト バジリカ SGみたいにMobが侵入しようとすると吹き飛ばされるようにした - ホワイトスミス カートブースト 効果実装 - ホワイトスミス メルトダウン エフェクトと状態異常時間だけ(実際の状態変化は無し) - ホワイトスミス クリエイトコイン 名前入りの金貨とか作れるだけ - ストーカー リジェクトソード エフェクトと状態異常時間だけ(実際の状態変化は無し) - クラウン・ジプシー マリオネットコントロール エフェクトと状態異常時間だけ(実際の状態変化は無し) - プロフェッサー フォグウォール エフェクトと有効時間だけ - スナイパー ウインドウォーク 速度上昇とQM、私を忘れないでがかかると解除されるようにした - スナイパー トゥルーサイト QM、私を忘れないでで解除されるようにしてみた -・トゥルーサイトの綴り間違いを修正 -・storage.cでコンパイル警告が出ないようにしたつもり - - (db/) - cast_db.txt - skill_db.txt - skill_require_db.txt - produce_db.txt - (map/) - battle.c - battle_get_str() 修正 - battle_get_agi() 修正 - battle_get_vit() 修正 - battle_get_int() 修正 - battle_get_dex() 修正 - battle_get_luk() 修正 - battle_get_flee() 修正 - battle_get_hit() 修正 - battle_get_critical() 修正 - battle_get_baseatk() 修正 - battle_get_atk() 修正 - battle_get_atk2() 修正 - battle_get_def() 修正 - battle_get_def2() 修正 - battle_get_speed() 修正 - battle_calc_damage() 修正 - battle_calc_pet_weapon_attack() 変更 - battle_calc_mob_weapon_attack() 変更 - battle_calc_pc_weapon_attack() 変更 - pc.c - pc_calcstatus() 修正 - skill.c - skill_get_unit_id() 修正 - skill_additional_effect() 修正 - skill_castend_nodamage_id() 修正 - skill_castend_pos2() 修正 - skill_unit_group() 修正 - skill_unit_onplace() 修正 - skill_unit_onout() 修正 - skill_castend_pos() 修正 - skill_check_condition() 修正 - skill_status_change_end() 修正 - skill_status_change_start() 修正 - skill_can_produce_mix() 修正 - skill_produce_mix() 修正 - skill.h 修正 - storage.c - storage_comp_item() 修正 - storage.h 修正 - --------------------- -//0976 by (凸) -・転生スキルを修正したり色々 -・準備だけして実装できてないスキルもあります - ロードナイト オーラブレード 多分こんな感じ? - ロードナイト パリイング 跳ね返すけど攻撃を1回止めるのは未実装 - ロードナイト コンセントレーション インデュア〜は良く分からないので放置 - ロードナイト スパイラルピアース 通常ダメージ増加と重量ダメージ増加と一応5回攻撃(なんか違う気がする) - ロードナイト ヘッドクラッシュ ダメージ増加とステータス変更? - ロードナイト ジョイントビート ダメージ増加とステータス変更? - アサシンクロス アドバンスドカタール研究 たぶんこんな感じ? - スナイパー トゥルーサイト たぶんこんな感じ? - スナイパー ウィンドウォーク たぶんこんな感じ?でも速度上昇とかと競合した時の処理は未実装 - スパイダーウェッブ とりあえずアンクルスネアと同じような感じ&回避率半減 - チャンピオン 狂気功 適当に増やしていたのをちゃんと増やすようにした -・出血状態と骨折状態の取り扱いがよくわかりませんっ!! - - (db/) - cast_db.txt - skill_db.txt - skill_require_db.txt - (doc/) - db_ref.txt - (map/) - battle.c - battle_get_str() 修正 - battle_get_agi() 修正 - battle_get_vit() 修正 - battle_get_int() 修正 - battle_get_dex() 修正 - battle_get_luk() 修正 - battle_get_flee() 修正 - battle_get_hit() 修正 - battle_get_critical() 修正 - battle_get_baseatk() 修正 - battle_get_atk() 修正 - battle_get_atk2() 修正 - battle_get_def() 修正 - battle_get_def2() 修正 - battle_get_speed() 修正 - battle_calc_damage() 修正 - clif.c - clif_parse_WalkToXY() 修正 - mob.c - mob_can_move() 修正 - mobskill_castend_pos() 修正 - pc.c - pc_calcstatus() 修正 - pc_checkallowskill() 修正 - skill.c - skill_get_unit_id() 修正 - skill_additional_effect() 修正 - skill_castend_nodamage_id() 修正 - skill_castend_pos2() 修正 - skill_unit_group() 修正 - skill_unit_onplace() 修正 - skill_unit_onout() 修正 - skill_castend_pos() 修正 - skill_check_condition() 修正 - skill_status_change_end() 修正 - skill_status_change_start() 修正 - skill_readdb() 修正 - skill.h 修正 --------------------- -//0975 by Sin -・0973で実装されたスクリプトによるBaseLv, JobLvの変更時に、 - ステータスポイントやスキルポイントを取得できるように修正。 - ※質問スレpart5 >>115 悩める人 さんのpc.cを参考にさせて頂きました。多謝。 - - (map/) - pc.c - pc_setparam() - case SP_BASELEVEL: 修正 - case SP_JOBLEVEL: 修正 --------------------- -//0974 by latte -・グランドクロスを本鯖に基づき修正 - アンデッド悪魔強制暗闇付与 - 反動ダメージ半減、モーションなし - MOB(PC)が重なったときのHIT数 - %UP系武器カード効果なし - 属性相性二重計算 - MOBダメージ表示白 - - 後半4項目は設定可 - -・戦闘基本計算を本鯖に基づき微修正(DEXサイズ補正、弓最低ダメ、PCサイズ補正) - -・完全回避 - スタン等で完全回避が発生しなかったのを修正 - AGIVITペナルティが完全回避の敵もカウントして計算されていたのを修正 設定可 - オートカウンターは未修正 - -・倉庫を閉じるとき、アイテムIDでソートするようにした - -・kalenさんのプロ1執事NPCスクリプトを改造して - 商業防衛値、投資金額、宝箱の数を本鯖に準拠(商業値は1~100) - 全砦に設置 - - (/script/npc) - aldeg_cas01.txt ... prtg_cas05.txt 修正 - (/script/npc/gvg) - aldeg_cas01.txt ... prtg_cas05.txt 追加 - tbox.txt 追加 - - (/conf) - battle_athena.conf - 6項目追加 - - (/map) - mob.c/mob.h - mob_attack() 修正 - mob_counttargeted_sub(),mob_counttargeted() 修正 - mobskill_use() 修正(↑の引数だけ) - pc.c/pc.h - pc_counttargeted_sub(),pc_counttargeted() 修正 - pc_attack_timer() 修正 - pet.c - pet_attack() 修正 - - map.h - pc_data, mob_data, map_data 変数1つ追加 - enum1つ追加 - map.c/map.h - map_count_oncell() 追加 skill.cでよかったかも・・・ - - skill.c - GX関連修正(skill_additional_effect(), skill_attack(), skill_castend_damage_id(), skill_unit_onplace()) - - battle.c 修正 - battle.h 修正 - - storage.c/storage.h - storage_comp_item() 追加 - sortage_sortitem(), sortage_gsortitem() 追加 - storage_storageclose(), storage_guild_storageclose() 修正 --------------------- -//0973 by 獅子o^.^o -・スクリプトのBASELEVEL,JOBLEVEL命令追加 - 例: set BASELEVEL,1; - 例: set JOBLEVEL,1; - (map/) - pc.c - pc_setparam() - case SP_BASELEVEL: 項目追加 - case SP_JOBLEVEL: 項目追加 - --------------------- -//0972 by (凸) -・転生スキルをエフェクトだけいくつか追加したり -・状態変化はそのうち誰かが - エフェクト(ステータス変化アイコン含む)のみ - SC_AURABLADE: /* オーラブレード */ - SC_PARRYING: /* パリイング */ - SC_CONCENTRATION: /* コンセントレーション */ - SC_TENSIONRELAX: /* テンションリラックス */ - SC_BERSERK: /* バーサーク */ - SC_ASSUMPTIO: /* */ - SC_TURESIGHT: /* トゥルーサイト */ - SC_CARTBOOST: /* カートブースト */ - SC_WINDWALK: /* ウインドウォーク */ - - (db/) - cast_db.txt - (map/) - skill.h - skill.c - SkillStatusChangeTable[] 項目追加 - skill_castend_nodamage_id() 項目追加 - skill_status_change_end() 項目追加 - skill_status_change_start() 項目追加 - --------------------- -//0971 by (凸) -・atcommand.hに残っていたjobchange2とかの残骸を削除 -・転生スキルをエフェクトだけいくつか追加したりチャンピオンはそれなりに追加したり - エフェクトのみ - ハイプリースト バジリカ(HP_BASILICA) - ホワイトスミス カートブースト(WS_CARTBOOST) - スナイパー トゥルーサイト(SN_SIGHT) - ジプシー 月明りの泉に落ちる花びら(CG_MOONLIT) - パラディン ゴスペル(PA_GOSPEL) - 追加ダメージ等なし - ロードナイト ヘッドクラッシュ(LK_HEADCRUSH) - ロードナイト ジョイントビート(LK_JOINTBEAT) - ロードナイト スパイラルピアース(LK_SPIRALPIERCE) - パラディン プレッシャー(PA_PRESSURE) - パラディン サクリファイス(PA_SACRIFICE) - それなり(コンボは繋がりますがディレイは適当、ダメージ追加はあるけどそれ以外の追加効果は無し) - チャンピオン 猛虎硬派山(CH_PALMSTRIKE) - チャンピオン 伏虎拳(CH_TIGERFIST) - チャンピオン 連柱崩撃(CH_CHAINCRUSH) - チャンピオン 狂気功(CH_SOULCOLLECT) - - (db/) - cast_db.txt - skill_db.txt - skill_require_db.txt - (map/) - atcommand.h ゴミ削除 - battle.c - battle_calc_pet_weapon_attack() 変更 - battle_calc_mob_weapon_attack() 変更 - battle_calc_pc_weapon_attack() 変更 - clif.c - clif_parse_UseSkillToId() 変更 - skill.c - skill_get_unit_id() 項目追加 - skill_attack() チャンピオンコンボ処理追加 - skill_castend_damage_id() 変更 - skill_castend_nodamage_id() 変更 - skill_castend_id() 変更 - skill_unitsetting() 変更 - skill_check_condition() 変更 - skill_use_id() 変更 - --------------------- -//0970 by (凸) -・ドレイクのウォーターボールが異常に痛い(121発食らう)のでLv5以上の場合は25発に制限 -・シグナムクルシスの計算式を14+SkillLvから10+SkillLv*2変更 -・ソースの気が向いたところに落書き -・DB関係をまとめて同梱 - - (map/) - battle.c コメント_〆(。。)カキカキ - 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 ぴざまん - -・白刃取り状態で片方が死亡した場合、片方の白刃取りが解除されない問題修正 -・battle_athena.confに項目追加 - ペット・プレイヤー・モンスターの無属性通常攻撃を属性無しにするか否かを設定できます - 詳しくはconf_refを。 -・@コマンド@idsearch実装 - ロードしたitem_dbから検索語句にマッチするアイテムとIDを羅列するコマンドです - 例えば「@idsearch レイ」と入力した場合、ブレイドやレイドリックカード等が引っかかります -・アシッドテラーとデモンストレーション実装 - 装備破壊は未実装です -・イドゥンの林檎の回復仕様を丸ごと変更。 - (map/) - battle.c - battle.h - 属性補正の修正やアシッドテラー・デモンストレーションのダメージ算出式追加等。 - battle_configに項目追加 - skill.c - skill_idun_heal()追加。foreachinareaで処理するように変更 - アシッドテラーとデモンストレーションの処理追加。 - atcommand.c - atcommand.h - @idsearch追加。 - --------------------- -//0968 by 胡蝶蘭 - -・キャラクターIDが使いまわされないように修正 -・キャラクター削除時、パーティー、ギルドを脱退するように修正 -・アカウント削除時、キャラクターと倉庫を削除するように修正 -・倉庫/ギルド倉庫削除時、倉庫内のペットを削除するように修正 - ・注意:ログインしているアカウントを削除した場合の動作は不明 - - (char/) - char.c - パケット2730の処理、char_delete()追加、削除処理修正など - int_storage.c/int_party.c/int_guild.c/int_party.h/int_guild.h - inter_party_leave(),inter_guild_leave()追加、 - inter_storage_delete(),inter_guild_storage_delete()修正など - (login/) - login.c - parse_admin()をアカウント削除時にパケット2730を送るように修正 - -・athena-start stop で停止させた場合、データが保存されない問題を修正 - killで送るシグナルをSIGKILLからSIGTERMに変更。 - どうしてもSIGKILLを送りたい場合は athena-start kill を使ってください。 - - athena-start - stop修正、kill追加 - --------------------- -//0967 by Asong -・モンスターの残影を実装。 - 通常モンスターはスキルによるフィルターがかからないので残像が出ません。 - PC型モンスターには残像が出ます。 -・モンスタースキル使用対象を追加。 - around5〜around8はターゲットの周辺セルを対象にします。 -  -  (map) -  mob.c -  mobskill_use() 修正 -  mob_readskill() 修正 -  mob.h 修正 -  skill.c -  skill_castend_pos2() 修正 - --------------------- -//0966 by (凸) -・サーバーsnapshot -・ディレクトリ構造を変更(common,login,char,mapは/src以下に移転) - それに伴うMakefile等のパス書き換え -・npc_turtle.txtをnpc_town_alberta.txtに統合 -・モンクのコンボに関するディレイを変更 -・battle_config.enemy_criticalのデフォルトをnoに変更 -・転生職等を無効にするenable_upper_classの追加 -・@joblvup,@charjlvlでJobレベルが最高のときに負数を指定してもレベルを下げられなかった問題を修正 - - (conf) - battle_athena.conf 修正 - (doc) - conf_ref.txt 修正 - (map) - atcommand.c - atcommand_joblevelup() 修正 - atcommand_character_joblevel() 修正 - battle.c - battle_calc_attack() 修正 - battle_config_read() 修正 - battle.h 修正 - pc.c - pc_calc_skilltree() 修正 - pc_calc_base_job() 修正 - pc_jobchange() 修正 - pc_readdb() 修正 - skill.c - skill_attack() 修正 --------------------- -//0965 by ぴざまん -・@mapexit実行時全セッションをkickするように変更。 -・白刃取り時に片方が倒れても、もう片方の白刃が解除されない問題修正。(未テスト) -・スティール情報公開機能実装。(未テスト) - スティールに成功すると、何をスティールしたのか - 画面内のPTメンバー全員に知らせる機能です。 - battle_athena.confのshow_steal_in_same_partyで設定できます。 - オリジナルアップデートの為、デフォルトはnoにしています。 -・イドゥンの林檎の回復効果実装。 - - (conf/) - battle_athena.confに項目追加。 - (map/) - atcommand.c - atcommand_mapexit() 修正。 - pc.c - pc_steal_item() 修正。 - pc_show_steal() 追加。 - skill.c - skill_unitsetting()、skill_unit_onplace() 修正。 - battle.c - battle_config_read() 修正。 - battle.h 修正。 - (doc/) - conf_ref.txt 抜けてたのを色々追加。 - --------------------- -//0964 by (凸) - -・この前追加したskill_tree2.txtを廃止したので削除してください -・skill_tree.txtのフォーマットを変更&Kalenさんなどの情報を元に転生ツリーの見直し -・それにともなってpc.cのファイル読み出し部分などを変更 -・Athena雑談スレッド part3 >>14 miyaさんの指摘があるまですっかり忘れていたatcommand_athena.confの修正を同梱 - - (conf/) - atcommand_athena.conf 修正 - (db/) - skill_tree.txt 修正 - skill_tree2.txt 廃止 - (map/) - map.h PC_CLASS_BASE等追加 - pc.c - pc_calc_skilltree() 修正 - pc_allskillup() 修正 - pc_readdb() 修正 - --------------------- -//0963 by (凸) - -・@jobchange2, @jobchange3廃止 @jobchangeに引数追加 @help参照 - 例: @jobchange2 10 → @jobchange 10 1 -・同様に@charjob2, @charjob3廃止 @charjobに引数追加 @help参照 - 例: @charjob2 10 ほげほげ → @charjob 10 1 ほげほげ -・同様にスクリプトのjobchange2, jobchange3命令廃止 jobchangeに引数追加 script_ref.txt参照 - 例: jobchange2 10; → jobchange 10,1; -・↑どれも追加された引数は省略可能です。なので、転生ノービスは現状のスクリプトで転生一次職に転職できます。 - 例: Novice High → @jobchange 10 → Whitesmith - Novice → @jobchange 10 → Blacksmith -・スクリプトから転生しているか判定するためにUpperを追加しました。Upper 0=通常, 1=転生, 2=養子 - Upper=0の時にBaseLevel=99なら転生させる〜とかそういうスクリプト誰か書いてください - その時に元の職業は記憶していないので永続変数とかで覚えさせて判定させないと転生後何にでも転職できちゃう? -・バイオプラントとスフィアマインで呼び出されるMobの名前を--ja--にしてmob_db.txtから読むようにした - - (conf/) - help.txt 修正 - (db/) - const.txt - (doc/) - help.txt 修正 - script_ref.txt 修正 - (map/) - atcommand.c - atcommand_jobchange() 修正 - atcommand_jobchange2() 削除 - atcommand_jobchange3() 削除 - atcommand_character_job() 修正 - atcommand_character_job2() 削除 - atcommand_character_job3() 削除 - map.h 修正 - pc.c - pc_readparam() 修正 - pc_jobchange() 修正 - pc.h 修正 - script.c - buildin_jobchange() 修正 - buildin_jobchange2() 削除 - buildin_jobchange3() 削除 - skill.c - skill_castend_pos2() 修正 - --------------------- -//0962 by (凸) - -・職業は0〜23で処理したいので転生職用のスキルツリー追加、eAthenaを参考に拡張 - っていうか韓国本サーバでの実装の資料が見当たらないので適当 -・sakexe.exeを解析してskill_db.txt変更、これもeAthenaを参考に拡張 - どれが本サーバで実装されているスキルか分かりませんっ!! -※スキルツリーが表示されたからといって使えるわけじゃありませんっ!! - - (common/) - mmo.h 定数修正 - (db/) - skill_db.txt 変更 - skill_require_db.txt 変更 - skill_tree2.txt 追加 - (map/) - skill.h 定数修正 - pc.c - pc_calcstatus() 修正 - pc_allskillup() 修正 - pc_calc_skilltree() 修正 - pc_readdb() 修正 - --------------------- -//0961 by 胡蝶蘭 - -・スクリプトにサブルーチン/ユーザー定義関数機能追加 - 詳しくはサンプルとscript_ref.txtを読んでください。 - 地味に大改造なので、スクリプト関係でバグがあるかもしれません。 - - (map/) - map.h/map.c - struct map_session_data にスクリプト情報退避用のメンバ追加 - map_quit()修正 - script.h/script.c - 色々修正(run_script(),run_func()が主) - npc.c - npc_parse_function()追加他 - (conf/sample) - npc_test_func.txt - ユーザー定義関数/サブルーティンのテストスクリプト - (doc/) - script_ref.txt - サブルーティンなどの説明追加 - --------------------- -//0960 by (凸) -・本鯖相違スレッド part2 >>62 KKさんのアンクルスネア修正を同梱 -・バグ報告スレッド part5 >>14-16 rbさんのバグ修正を同梱 -・For English User Forum >>15 Mugendaiさんの指摘で0x1d7を使うのはVal>255に修正(0xc3のValは1バイトだから0x1d7を使うのかと納得) -・pc_calc_base_job()を変更して元jobだけでなくノビか一次職か二次職(type)、通常か転生か養子(upper)を返すようにした - - (map/) - atcommand.c - atcommand_joblevelup() 修正 - atcommand_character_joblevel() 修正 - clif.c - clif_changelook() 修正 - pc.h 修正 - pc.c - pc_setrestartvalue() 修正 - pc_equippoint() 修正 - pc_isequip() 修正 - pc_calc_skilltree() 修正 - pc_calcstatus() 修正 - pc_isUseitem() 修正 - pc_calc_base_job() 修正 - pc_allskillup() 修正 - pc_damage() 修正 - pc_jobchange() 修正 - pc_equipitem() 修正 - script.c - buildin_changesex() 修正 - skill.c - skill_castend_nodamage_id() 修正 - skill_unit_onplace() 修正 - --------------------- -//0959 by (凸) -・help.txtがdocじゃなくてconfのが読み出されてた_| ̄|○ -・gamejokeを参考に転生二次職のステータス加重値をjob_db2-2.txtに記述 -・スクリプトにjobchange2とjobchange3を追加それぞれ転生職と養子職へ転職させる命令です - - (conf/) - help.txt 修正 - (db/) - job_db2.txt 修正 - job_db2-2.txt 追加 - (doc/) - help.txt 修正 - script_ref.txt 修正 - (map/) - pc.c - pc_calcstatus() 修正 - pc_readdb() 修正 - script.c - buildin_jobchange() 修正 - buildin_jobchange2() 追加 - buildin_jobchange3() 追加 - --------------------- -//0958 by (凸) -・転生職方面の実装を色々 -・重量制限は良く分からないので元の職業の値をそのまま使っています(モンク=チャンピオン等) -・装備品も同上、HPやSPのテーブルも同上なので、転生してもHPなどが増えないガッカリ仕様です - - (map/) - atcommand.c - atcommand_joblevelup() 修正 - atcommand_character_joblevel() 修正 - pc.c - pc_setrestartvalue() 修正 - pc_equippoint() 修正 - pc_isequip() 修正 - pc_calcstatus() 修正 - pc_isUseitem() 修正 - pc_calc_base_job() 追加 - pc_damage() 修正 - pc_jobchange() 修正 - pc_equipitem() 修正 - pc.h 修正 - script.c - buildin_changesex() 修正 - skill.c - skill_castend_nodamage_id() 修正 - --------------------- -//0957 by (凸) -・@charjob2と@charjob3を追加、関係としては@charjob⇔@jobchange、@charjob2⇔@jobchange2、(ry -・@mapexitを追加、map-serverを落とすコマンドですatcommand_athena.confでは99設定にされてますので使用には十分注意してください。 - - (map/) - atcommand.c - atcommand_character_job2() 追加 - atcommand_character_job3() 追加 - atcommand.h 修正 - (conf/) - atcommand_athena.conf 修正 - (doc/) - help.txt 修正 - --------------------- -//0956 by (凸) -・転生職仮実装(@jobchange2)、見た目と経験値テーブルだけです -・養子職仮実装(@jobchange3)、見た目だけです現状では経験値は転生二次職と同じというマゾ仕様 -※上記2点は転生職が実装されているクライアントでなければ実行するとエラー落ちするので注意!! - その後直接セーブデータを弄らないとキャラセレにも行けなくなります!! -・Athena雑談スレッド part2 >>149 稀枝さんの報告を元にガーディアンを修正 -・砦以外でガーディアンとかエンペリウムを殴るとmap-serverが落ちていたのも修正(未確認) -・スパノビのJobテーブルはFor English User Forum >>13 kingboさんのデータを元に修正 -・転生職の経験値テーブルはOWNを参照してBase99の経験値は不明だったので適当に設定 - - (map/) - atcommand.c - atcommand_jobchange() 修正 - atcommand_jobchange2() 追加 - atcommand_jobchange3() 追加 - atcommand.h 修正 - clif.c - clif_changelook() 修正 - pc.c - pc_nextbaseexp() 修正 - pc_nextjobexp() 修正 - pc_jobchange() 修正 - pc_readdb() 修正 - battle.c - battle_calc_damage() 修正 - mob_can_reach() 修正 - --------------------- -//0955 by huge -・ペットのルート機能。 - ・仕様はmobのルートに近い感じですが、射程を短くしてます。 - ・拾ったアイテムは、パフォーマンスをすると床に落とします。 - ・卵に戻したり、ログオフしたときはPCの手元に入るようにしました。(重量超過はドロップ) - ・拾える個数はルートmob同様の10個ですが、11個目は拾いに行きません。 - ・ルート権の問題から、アイテムにfirst_idが入っていて、それが飼い主以外だったら、何秒経とうと拾いません。(未確認) - ・それと、荷物持ちにされると可哀想なので、重量制限もつけました。これはconfで設定可能です。 -・atcommandで、@whereがうまく働いてなかったので修正(またウチだけかなぁ・・・) -・@memoでmemoする時は、mapflagを無視するように。 -・スフィアマインの名前だけ修正。 - - (conf/) - battle_athena.conf - pet_lootitem,pet_weight 追加 - (doc/) - conf_ref.txt 修正 - (map/) - atcommand.c - atcommand_memo() 修正 - atcommand_where() 修正 - battle.c - battle_config_read() 修正 - battle.h 修正 - map.c - map_quit() 修正 - map.h - pet_data{} 修正 - pc.c - pc_memo() 修正 - pet.c - pet_performance() 修正 - pet_return_egg() 修正 - pet_data_init() 修正 - pet_ai_sub_hard() 修正 - pet_lootitem_drop() 追加 - pet_delay_item_drop2() 追加 - pet_ai_sub_hard_lootsearch() 追加 - pet.h 修正 - skill.c - skill_castend_pos2() 修正 - --------------------- -//0954 by (凸) -・object_del.batで各server.exeも削除するようにした -・For English User Forum >>11 kingboさんの修正を取り込み -・バグ報告スレッド part5 >>10 Sinさんの修正を取り込み -・ついでに見かけたatcommand_character_joblevelの不具合を修正 -・@コマンドでジョブレベルを上げるときにスパノビはJob70まで対応(未確認) - - (/) - object_del.bat 修正 - (map/) - atcommand.c - atcommand_joblevelup() 修正 - atcommand_character_joblevel() 修正 - atcommand_character_baselevel() 修正 - - 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 (凸) -・mob_skill_db.txtの条件値に0以外入っていなかったのを訂正 -・gcc 2.95でコンパイルできるように訂正(by バグスレpart5 >>2 茜さん) -・↑やLinuxなどを考慮してstartやMakefileなどの改行をLFに変更 -・0952で出たコンパイル警告を出ないように修正 -・0952で更新されなかったconf_ref.txtを修正 - - (/) - start 改行コード変更 - athena-start 改行コード変更 - (db/) - mob_skill_db.txt 修正 - (doc/) - conf_ref.txt 修正 - (login/) - Makefile 改行コード変更 - (map/) - Makefile 改行コード変更 - atcommand.c - atcommand() 宣言位置修正 - atcommand_where() 宣言位置修正 - battle.c - battle_calc_pet_weapon_attack() 修正 - battle_calc_mob_weapon_attack() 修正 - battle_calc_pc_weapon_attack() 修正 - battle_calc_magic_attack() 修正 - clif.c - clif_skill_fail() 宣言位置修正 - guild.c - guild_gvg_eliminate_timer() 宣言位置修正 - mob.c - mob_damage() 宣言位置修正 - script.c - buildin_deletearray() 宣言位置修正 - buildin_getequipcardcnt() 宣言位置修正 - buildin_successremovecards() 宣言位置修正 - --------------------- -//0952 by CG -・confでDEFとMDEFの計算方法を選択できるように。 - - (conf/) - battle_athena.conf 変更 - (map/) - battle.c - battle_calc_pet_weapon_attack() 修正 - battle_calc_mob_weapon_attack() 修正 - battle_calc_pc_weapon_attack() 修正 - battle_calc_magic_attack() 修正 - battle.h 修正 - --------------------- -//0951 by (凸) -・サーバーsnapshot -・バグ報告スレッド part4 >>95 KAJIKENさんの修正を同梱 -・同 >>138 バグかな?さんの修正を同梱 -・Athena雑談スレッド part2 >>112 名無しさんのPVPナイトメアモードのアンダークロスマップワープポイントを同梱 -・同 >>96 稀枝さんのnpc_gldcheck.txtを同梱 -・スナップショットにsave/を入れるのをやめました。無い場合はathena-startが作ってくれます -・athena-startでlog/が無い場合に作るように変更 -・その他? - - (/) - athena-start 変更 - (db/) - mob_db.txt 変更 - (conf/) - map_athena.conf 変更 - (conf/extension/) - npc_gldcheck.txt 追加 - (conf/npc/) - npc_event_ice.txt 変更 - npc_job_alchemist.txt 変更 - npc_event_valentine.txt 変更 - npc_town_geffen.txt 変更 - npc_event_whiteday.txt 変更 - npc_event_potion.txt 変更 - npc_town_comodo.txt 変更 - (conf/warp/) - npc_warp_pvp.txt 追加 - --------------------- -//0950 by (凸) -・mob_dbのModeフラグに以下の物を追加 - 0x40(64) ダメージを1に固定(草やクリスタルなど) - 0x80(128) 攻撃を受けたときに反撃をする -・上記の変更のためmob_db.txtほぼ全部変更、mob_db2.txtを作っている人は - 草など1ダメ固定にはModeに64を足さないと普通にダメージ - その他MobはModeに128を足さないと反撃してこなくなるので注意 - - (db/) - mob_db.txt 修正 - (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 ぴざまん - -・ステータス異常耐性全面修正。 - 耐性算出式全面修正。 - ステータス異常耐性100%のキャラクターには状態異常を行わないように修正。 -・ディスペルの仕様変更。 - 解除したらシステム上問題のあるステータス変化以外片っ端から解除するように修正。 -・フロストダイバーの仕様変更。 - 凍結率修正(マジスレテンプレ準拠)。 -・リカバリーの仕様変更。 - ノンアクティブモンスターに使用するとターゲットがリセットされるように修正。 -・クァグマイアの仕様がアレだったので修正。 - 演奏や属性場と同様にrangeで処理するように修正。 - DEX/AGI半減の影響が詠唱以外にも及ぶ様に修正。 -・スキルターゲット中に死んだ振りを使用してもスキルが回避できない問題修正。 -・白刃取りが動作しない問題修正(cast_dbが抜けてました)。 - (map/) - pc.c - pc_calcstatus()修正 - skill.c - skill_additional_effect()、skill_attack() 修正 - skill_status_change_start()、skill_unitsetting() 修正 - (db/) - cast_db.txt 修正。 - --------------------- -//0948 by 胡蝶蘭 - -・warpwaitingpcが正しくPCを転送できない問題を修正 -・スクリプトの読み込み時にエラーまたは警告が出る場合、警告音を鳴らすように。 - (流れたログを見ない人対策です) - - (map/) - script.c - buildin_warpwaitingpc()修正 - disp_error_message()修正 - -・atcommand.c修正 - ・atcommand_athena.confのmapmoveを読むように - ・@strなどの省略時の必須レベルを0に。 - ・@paramは使わないのでコメント化 - - (map/) - atcommand.c - 該当個所修正 - -・mobが最大15秒ほど移動しない場合がある問題修正 - ・手抜きでないmob処理で、移動しない時間が7秒以上続かないように修正 - - (map/) - mob.c - mob_ai_sub_hard()修正 - -・快速船員の伊豆港行きの判別式修正 (by ID:F8nKKuY) - (conf/npc/) - npc_town_comodo.txt - --------------------- -//0947 by (凸) -・取り巻きは取り巻きを召喚しないように修正 -・露天の販売価格の上限をbattle_athena.confで設定できるように修正 - - (conf/) - battle_athena.conf - vending_max_value追加 - (doc/) - conf_ref.txt 修正 - (map/) - skill.c - skill_castend_nodamage_id() 修正 - battle.c - battle_config_read() 修正 - battle.h 修正。 - vending.c - vending_openvending() 修正。 - --------------------- -//0946 by Kalen -・プロ北Warp見直し -参考:本鯖(1F,2F)らぐなの何か(3F) - (conf/warp/) - npc_warp.txt - -・語り部の2週3週追加(どうせ見ないと思いますが…) - (conf/npc/) - npc_event_kataribe.txt - --------------------- -//0945 by 胡蝶蘭 - -・NPCタイマーラベルデータが正しくインポートされない問題を修正 -・NPCタイマー初期値やタイマーIDが正しく初期化されない問題を修正 -・NPCのduplicateを行うとアクセス違反が起こる場合がある問題を修正 - - (map/) - npc.c - npc_parse_script修正 - -・パッチアップスレ4の87のpc.cとりこみ - (map/) - pc.c - カード重量制限を元に戻したもの - --------------------- -//0944 by huge -・ギルドの上納経験値の上限を、confで制限できるように。 -・露店の販売価格を10Mまでに制限。 -・カートの重量制限が一桁下がってたんですが、ウチだけですか?修正してみましたが。 - - (conf/) - battle_athena.conf - guild_exp_limit追加 - (doc/) - conf_ref.txt 修正 - (map/) - atcommand.c - 蘇生時のSP回復で、細かい修正。 - battle.c - battle_config_read() 修正 - battle.h 修正。 - guild.c - guild_change_position() 修正。 - pc.c - pc_calcstatus() 修正。 - vending.c - vending_openvending() 修正。 - --------------------- -//0943 by (凸) -・battle_athena.confでdead_branch_activeをyesにすると古木の枝で召喚されるモンスターがアクティブになるように変更 -・微妙に変更したclient_packet.txtを同梱 - - (conf/) - battle_athena.conf - dead_branch_active追加 - (doc/) - client_packet.txt 修正 - conf_ref.txt 修正 - (map/) - battle.c - battle_config_read() 修正 - battle.h 修正 - map.h 修正 - mob.c - mob_once_spawn() 修正 - mob_attack() 修正 - mob_target() 修正 - mob_ai_sub_hard_lootsearch() 修正 - mob_ai_sub_hard() 修正 - -・英語スレのkingboさんの変更を同梱 - 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 胡蝶蘭 - -・アクセスコントロールで不正なメモリにアクセスする場合があるバグを修正 - (login/) - login.c - check_ipmask()修正 - -・スクリプトリファレンス少し追加と修正 - (doc/) - script_ref.txt - 修正 - --------------------- -//0941 by (凸) - -・e2さんの報告を元に召喚された手下のスピードを召喚主と同じにしてみる - - (map/) - battle.c - battle_get_speed() 修正 - mob.c - mob_spawn() 修正 - mob_summonslave() 修正 - --------------------- -//0940 by End_of_exam - -・ヒールやポーションピッチャーを使用しても回復しないバグを修正(0938〜)。 - - Thanks for Pepermint, reporting the bug that using PotionPitcher with - BluePotion was no effective. - (=ポーションピッチャー+青Pで効果がない事を報告してくれたPepermint氏に感謝) - - (map/) - battle.c - battle_heal() 修正 - --------------------- -//0939 by (凸) -・cutinパケットを0x145(ファイル名16文字)から0x1b3(64文字)に変更 -・ついでに雑談スレに上げたathena-startを同梱 - - (/) - athena-start saveファイルが無いときに作るように - (map/) - clif.c - clif_cutin() 本鯖パケット準拠に変更 - (doc/) - client_packet.txt 修正 - --------------------- -//0938 by ぴざまん - -・ポーションピッチャーで青ポを投げてもエフェクトだけだったバグ修正。 -・露店開設が特定のアイテム配置で失敗するバグ修正。 -・スクリプト関数getareadropitem実装。 - 指定エリア内のドロップアイテムをカウントする関数です - - 書式:getareadropitem ,,,,,; -  mapname:対象マップ名(例:prontera.gat) -  x0とx1:対象X座標範囲 -  y0とy1:対象Y座標範囲 -  item:カウントする対象アイテム - - 戻り値:mapname内座標(x0,y0)-(x1,y1)の範囲内に落ちているitemの総個数 -     取得失敗時には-1を返します。 - ・itemの値はIDでもアイテム名("Red_Jemstone"とか)でもいいです。 - - (map/) - battle.c - battle_heal() 修正。 - vending.c - vending_openvending() 修正。 - script.c - ローカルプロトタイプ宣言修正。 - struct buildin_func[] 修正。 - buildin_getareadropitem()、buildin_getareadropitem_sub() 追加。 - --------------------- -//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 胡蝶蘭 - -・内容の同じスクリプトNPCを何度も記述しなくても言いように修正 - ・NPC定義の"script"と書く部分を"duplicate(NPC名)"とすると、 - 該当のNPCとスクリプトを共有するように。NPC名は表示名ではなく - エクスポートされる名前を指定します。 - <例> -prontera.gat,165,195,1 duplicate(カプラ職員) カプラ職員2 112 - - ・共有元のNPCは同じマップサーバーに存在する必要があるため、 - 同じマップでない場合はduplicateすべきではない。 - ただし、NPCの位置を"-"にすることで、マップ上には存在しないが、 - マップサーバー内には存在するNPCを作成できるので、 - そのNPCを共有元にするのであればどのマップへも共有できる。 - <例> - -- script テスト::test1 112,{ // このNPCグラフィックIDは使用しない -// (略) -} -prontera.gat,165,195,1 duplicate(test1) テスト2 112 -geffen.gat,99,99,1 duplicate(test1) テスト3 112 - - ・上のマップに存在しないNPCはイベントにもすることができる。 - (どのマップサーバーからでも必ず呼び出せるイベントになる) - - (map/) - map.h - struct npc_label_list追加,struct npc_data修正 - npc.c - npc_parse_script()修正 - 不要になったラベルデータベース関連の関数を削除 - --------------------- -//0934 by ぴざまん - -・MOBの状態異常耐性がやたら高かったのを修正。 -・速度減少の仕様変更(成功率計算式変更・失敗時にはエフェクト無し)。 -・何時の間にか状態異常の継ぎ足し禁止がコメントアウトされていたので戻し。 -・ポイズンリアクトのアイコン表示が無くなっていたので修正(でも出るだけ…) -・白刃取り実装。 - - (map/) - battle.c - battle_weapon_attack() 修正。 - clif.c - clif_parse_WalkToXY()、clif_parse_ActionRequest() 修正。 - clif_parse_TakeItem()、clif_parse_UseItem() 修正。 - clif_parse_DropItem()、clif_parse_EquipItem() 修正。 - clif_parse_UnequipItem() 修正。 - mob.c - mob_can_move()、mob_attack()、mob_ai_sub_hard() 修正。 - mobskill_use_id()、mobskill_use_pos() 修正。 - mobskill_castend_id()、mobskill_castend_pos() 修正。 - pc.c - pc_attack_timer()、pc_setpos() 修正。 - skill.c - SkillStatusChangeTable[] 修正。 - skill_additional_effect()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_check_condition() 修正。 - skill_status_change_start()、skill_status_change_end() 修正。 - skill_use_id() 修正。 - skill.h 修正。 - (db/) - cast_db.txt 修正。 - --------------------- -//0933 by 胡蝶蘭 - -・ウィザード転職所NPC仮実装 - ・eathenaのデータの翻訳、および某所の昔のデータを元に作ったので - 癌鯖とは微妙に異なってると思います。 - 「古い巻物」とか使えませんし。 - ・現行のjob_2nd.txtと一緒に読み込むと、NPCが重なるので、 - job_2nd.txtの該当スクリプトをコメント化してください。 - ただし、その場合はセージに転職させてもらえないので注意してください。 - - (conf/npc/) - npc_job_wizard.txt - 追加 - (conf/warp/) - npc_warp_job.txt - ウィザード転職所のワープをコメント化 - -・バグ修正 - ・gotoやmenuでラベルが見つからないときスクリプトの実行を中断するように. - ・1回のスクリプトの実行において、実行命令数が約8000を超えるか、 - gotoやmenuの実行回数が約500回を超えると実行を中断するように。 - ・関数/命令実行時にもエラーチェックを入れた - ・ギルド/パーティ/ペットの名前に日本語が使えない問題修正 - - - (char/) - int_guild.c/int_party.c - 名前問題修正 - (map/) - pet.c - 名前問題修正 - script.c - 修正 - --------------------- -//0932 by End_of_exam - -・0930でギルド倉庫の中身が消えるバグを修正。 - - (char/) - int_storage.c guild_storage_tostr() 修正。 - --------------------- -//0931 by (凸) -・サーバーsnapshot -・AthenaDB計画から更新のあった物を反映 -・atcommand_athena.confにstr等を追加 -・ワープポータルの本鯖相違点を修正 -・霧さんのaldeg_cas03〜05を同梱 -・pさんのnpc_event_kataribe.txt同梱 -・KAJIKENさんのnpc_warp_louyang.txt同梱 - - (db/) - item_db.txt 変更 - (conf/) - atcommand_athena.conf 変更 - map_athena.conf 変更 - (conf/gvg/) - aldeg_cas03.txt 変更 - aldeg_cas04.txt 変更 - aldeg_cas05.txt 変更 - (conf/mob/) - npc_monster.txt 変更 - (conf/npc/) - npc_event_kataribe.txt 追加 - (conf/warp/) - npc_warp_louyang.txt 追加 - (map/) - pc.c pc_memo() 変更 - --------------------- -//0930 by 胡蝶蘭 - - 既存の char/ にあるlock.cとlock.hは削除してください。 - これらは common/ に移動されます。 - -・スクリプト追加修正 - ・setarray(配列へリスト代入)追加 - ・cleararray(配列を指定値でクリア)追加 - ・copyarray(配列をコピー)追加 - ・getarraysize(配列の有効な要素数を求める)追加 - ・deletearray(配列の要素を削除してつめる)追加 - ・warpwaitingpc:人数やアカウントIDをマップ変数にセットするように修正 - - (map/) - script.c - 色々 - (doc/) - script_ref.txt - 命令追加など - (npc/sample/) - npc_test_array.txt - 配列系テスト用NPCスクリプト - -・バグ修正など - ・キャラクター名/アカウント名/パーティ名/ギルド名/ペット名に - コントロールコードを使えないように修正。 - ・char.cなどの保存の効率を更にアップ。 - ・倉庫ファイル/ギルド倉庫ファイルに空行が残らないように修正 - ・lock.*をcommon/に移動、ファイルが保存できなくなるバグ修正、 - アカウントとマップ変数の保存にもlock_fopenを使うように。 - - (common/) - lock.c/lock.h - フォルダ移動、lock_fopen修正 - (login/) - login.c - mmo_auth_new()修正 - (char/) - char.c - mmo_char_tostr(),make_new_char()修正 - int_storage.c - storage_tostr(),guild_storage_tostr(), - inter_storage_save_sub(),inter_guild_storage_save_sub()修正 - int_party.c - int_guild.c - 名前問題修正 - (map/) - pet.c - 名前問題修正 - --------------------- -//0929 by ぴざまん - -・ランドプロテクター完全実装。 -・プロボックのスキル仕様変更(詠唱妨害・凍結、石化、睡眠解除)。 -・リカバリーのスキル仕様変更(アンデッドに使用すると一定確率で暗闇効果)。 -・状態異常中でも装備の切り替えが出来るように変更。 -・アイテム自動取得中に@killmonsterを使用すると落ちるバグ修正。 -・胡蝶蘭さんが上げていたnpc.cを同梱しました。 -・skill_dbで気になってたとこをちょこっと修正。 - - (map/) - clif.c - clif_parse_EquipItem() 修正。 - skill.c - skill_castend_nodamage_id() 修正。 - skill_unitsetting()、skill_unit_onplace() 修正。 - skill_landprotector() 追加。 - mob.c - mob_delay_item_drop()、mob_delay_item_drop2() 修正。 - npc.c 修正 - - (db/) - skill_db.txt 修正。 - --------------------- -//0928 by End_of_exam - -・キャラや倉庫内アイテムが消える問題に暫定対処(キャラ鯖の改良)。 - - 1.キャラデータ・倉庫データのデータ変換処理を改良。 -  (char/char.c , char/int_storage.c) - - 2.ファイル書き出しが終わるまで、旧ファイルを残すように修正。 - (char/lock.c, char/lock.h の追加。メイクファイルの修正。 -  char/int_storage.c,int_guild.c,int_party.c,int_pet.c,char.c,inter.c -  内にある、データ書き出し処理を変更。) - --------------------- -//0927 by ぴざまん - -・武器攻撃以外に種族補正が入っていなかったのを修正。 -・演奏中に楽器・鞭以外の武器に持ち変えると演奏が止まる様に修正。 -・演奏の効果が演奏者自身にはかからないように修正。 -・アイテム自動取得機能実装 - 敵を倒した時に、アイテムがドロップされるのではなく、その敵に一番多くのダメージを - 与えた人(ルート権1位の人)にドロップアイテムが自動で与えられる機能です。 - battle_athena.confのitem_auto_getで設定できます。 - オリジナルアップデートの為、battle_athena.confでのデフォルトではnoにしています。 -・属性場(デリュージ・バイオレントゲイル・ボルケーノ・ランドプロテクター)仮実装 - 一部の機能が未実装です -  デリュージ:水場を用いたウォーターボール -  バイオレントゲイル:ファイアーウォールの持続時間補正 -  ボルケーノ:アイスウォール禁止 -  ランドプロテクター:オブジェクト設置系スキル禁止(つまり出るだけのLPです) - - (map/) - battle.c - battle_calc_damage()、battle_calc_magic_attack() 修正。 - battle_calc_misc_attack()、battle_config_read() 修正。 - mob.c - mob_delay_item_drop()、mob_delay_item_drop2() 修正。 - pc.c - pc_calcstatus()、pc_equipitem() 修正。 - skill.c - ローカルプロトタイプ宣言修正。 - SkillStatusChangeTable[] 修正。 - skill_castend_nodamage_id()、skill_castend_pos2() 修正。 - skill_unitsetting()、skill_unit_onplace() 修正。 - skill_unit_onout()、skill_unit_ondelete() 修正。 - skill_status_change_start()、skill_status_change_end() 修正。 - skill_clear_element_field() 追加。 - battle.h 修正。 - skill.h 修正。 - (conf/) - battle_athena.conf - item_auto_get項目を追加。 - (db/) - cast_db.txt 修正。 - --------------------- -//0926 by 胡蝶蘭 - -・ギルド城の初期化方法変更 - ・全てのギルド城(+占拠ギルド情報)を所得したときにOnAgitInitが - よばれるように。GetCastleDataやRequestGuildInfoの必要がなくなります。 - 従って、現在のgvgスクリプトのOnInterIfInitやOnRecvCastleXXXは - 必要なくなります。(おそらく現行のスクリプトも動作は可能です) - 初期化が必要なNPCは変わりにOnAgitInitを使ってください。 - なお、不要になった命令などを削除する予定はありません。 - - (char/) - inter.c/inter.h/char.c/int_guild.c/int_guild.h - マップサーバー接続時に処理を行えるように修正 - 接続時にギルド城データを送信するように - (map/) - intif.c/guild.c/guild.h - 接続時のギルド城データ一括受信処理&ギルド情報要求、 - OnAgitInitの呼び出しなど - chrif.c - 旧OnAgitInitの呼び出し削除 - (doc/) - inter_server_packet.txt - ギルド城データ一括送信パケット0x3842追加 - -・スクリプトにNPC主体イベント実行命令追加 - ・donpcevent(NPC主体イベント実行)追加 - こちらはdoeventと違いブロードキャスト可能です。詳細はscript_ref。 - ・isloggedinのコンパイル警告がでないように修正 - (map/) - script.c - buildin_donpcevent()追加など - (doc/) - script_ref.txt - doevent,donpcevent,OnAgitInit追加など - -・その他修正 - (map/) - clif.c - clif_parse_GMReqNoChat()追加 - - --------------------- -//0925 by 胡蝶蘭 - -・スクリプトのバグ修正 - ・monster,areamonsterの問題修正 - これらはscript_rid2sdを使用しないようにしました。 - sdがNULLのとき、レベルチェックを行わないようにしました。 - - (map/) - script.c/mob.c - buildin_monster(),buildin_areamonster(),mob_once_spawn()他 - -・スクリプトの機能追加 - ・detachrid命令(プレイヤーのデタッチ)追加 - ・isloggedin関数(プレイヤーのログインチェック)追加 - ・getitem,getitem2命令,countitem,checkweight関数で - nameidにアイテムの名前を指定可能に。 - (item_dbなどに依存するため、使用すべきではありませんが、一応) - - (map/) - script.c - 色々 - (doc/) - script_ref.txt - 変更部分とエラー説明修正 - -・athena-startとstartを修正 - ・athena-start stopでプロセスが終了するまで待つように - ・startで再起動させるときathena-start restartを呼ぶように。 - --------------------- -//0924 by (凸) - -・バグ報告スレッド part4 >>66のnpcを取り込み -・同 >>51のguild.cを反映 -・同 >>38のatcommand_athena.confへの変更を取り込み -・なぜかnpcフォルダにあってmap_athena.confないファイルを一覧に追加。ついでにギルドフラッグのコメントアウトを解除 -・conf/npc/npc_job_1st.txt npc_script2.txt npc_shop3.txtはスナップショットから削除してください - - (map/) - guild.c 修正 - (conf/) - map_athena.conf 修正 - atcommand_athena.conf 修正 - (conf/npc/) - npc_event_hat.txt 修正 - npc_event_oni.txt 修正 - npc_job_1st.txt 削除 - npc_script2.txt 削除 - npc_shop3.txt 削除 - --------------------- -//0923 by 胡蝶蘭 - -・スクリプトのバグ修正 -・script_rid2sdが失敗してもサーバーを終了しないように変更 - ・monster,areamonsterなどが実行できない問題修正 - - (map/) - script.c/mob.c - buildin_monster()など修正 - - (doc/) - script_ref.txt - ラベルとエラーの説明修正 - --------------------- -//0922 by 胡蝶蘭 - -・スクリプトエラーの行番号が正しく表示されるように - - (map/) - itemdb.c / npc.c - itemdb_readdb(),npc_parse_script()修正 - -・キャラクター情報にアクセスできない状態でアクセスするとエラーを出すように修正 -・goto/menuでラベルが指定される場所にラベル以外が指定されると警告を出すように -・script_refにエラーメッセージの説明追加 -・イベント起動されたスクリプトでキャラクターを使用できるようにする関数追加 - ・attachrid(指定したIDの情報を使用できるようにする)追加 - ・getcharid(3でアカウントIDを所得できるように)修正 - (map/) - script.c - script_rid2sd(),buildin_attachrid()追加 - 多々修正。 - (doc/) - script_ref.txt - エラーメッセージの説明追加、変数/ラベルの説明修正 - 他修正 - --------------------- -//0921 by RR -・スクリプトバグ修正(ご迷惑をおかけしました) - (conf/npc/) - npc_event_tougijou.txt - -・steal率修正(自DEX - 敵DEX + SLv*3 +10の部分で一度判定をしていたので) -・0918で0914以前に巻き戻ってしまっていた部分を元に戻した - (map/) - pc.c - pc_steal_item() 修正 - itemdb.c - pet.c - skill.c 修正 - --------------------- -//0920 by 獅子o^.^o -・ Steal率 = Drop率 * (自DEX - 敵DEX + SLv*3 +10) /100 - (map/) - pc.c - int pc_steal_item()修正 - --------------------- -//0919 by RR -・atcommandのlvupを使うと取得ステータスポイントがおかしい問題の修正 -・バグ修正(バグ報告スレで修正の出たものの取り込み 胡蝶蘭さん、pさん、共にお疲れ様です) - (map/) - atcommand.c - atcommand_baselevelup()修正 - guild.c - guild_gvg_eliminate_timer()修正 - pc.c - pc_setreg(),pc_setregstr()修正 - (login/) - login.c - parse_login()修正 --------------------- -//0918 by 聖 -・item_db自体がオーバーライド可能になったので、class_equip_db.txtの廃止。 -・pet_db.txt、produce_db.txtもオーバーライド可能に修正。 - (map/) - itemdb.c - do_init_itemdb() 修正。 - pet.c - read_petdb() 修正。 - skill.c - skill_readdb() 修正。 - --------------------- -//0917 by RR -・スクリプト修正 - 桃太郎イベントと闘技場イベントをNPCタイマーに変更 - (conf/npc/) - npc_event_momotarou.txt - npc_event_tougijou.txt 修正 -・スキルツリー修正(バグ報告スレ25より) - (db/) - skill_db.txt 修正 - --------------------- -//0916 by (凸) -・npc_monsterにnpc_mob_jobを統合。npc_mob_job.txtは削除してかまいません - - (conf/) - map_athena.conf npc_mob_jobを削除 - (conf/mob/) - npc_monster.txt 更新 - --------------------- -//0915 by 胡蝶蘭 - -・NPCタイマー関係の命令追加&修正他 - ・delwaitingroom(NPCチャット終了)引数を見てなかったので修正 - ・initnpctimer(NPCタイマー初期化)追加 - ・stopnpctimer(NPCタイマー停止)追加 - ・startnpctimer(NPCタイマー開始)追加 - ・getnpctimer(NPCタイマー情報所得)追加 - ・setnpctimer(NPCタイマー値設定)追加 - - 既存のaddtimerなどはプレイヤー単位のため、NPC単位のタイマーを作りました。 - こちらは、addtimerなどとは違い、OnTimerXXXという風にラベルを指定します。 - 詳しくはサンプルとscrit_ref.txtを参照。 - - (map/) - map.h - struct npc_data 修正、struct npc_timerevent_list追加 - npc.c / npc.h - npc_timerevent(),npc_timerevent_start(),npc_timerevent_stop(), - npc_gettimerevent_tick(),npc_settimerevent_tick()追加 - npc_parse_script()修正 - script.c - buildin_*npctimer()追加など - (conf/sample/) - npc_test_npctimer.txt - NPCタイマー使用サンプル - (doc/) - script_ref.txt - NPCタイマー関係の命令/関数追加、定数ラベルの説明修正 - -・Sageのアーススパイクの所得条件修正 - (db/) - skill_tree.txt - アーススパイクの行(サイズミックウェポンをLv1に) - --------------------- -//0914 by p -・範囲スキル使用時に解放済みメモリを参照していた問題に対応 -・メモリを初期化せずに使用していた領域を、初期化してから使用するように変更 - (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 - -・GVGScriptの修正 - 911対応 - フラグからアジトへ戻る機能追加 - 戻るときに聞かれるように修正(TESTscript) - 砦取得時::OnRecvCastleXXXを発動するように修正 - (conf/gvg/) - ほとんど.txt - --------------------- -//0912 by (凸) -・このファイルの文字化けとTEST_prtg_cas01_AbraiJの文字化けを修正 -・バグ報告スレの>>19-20を取り込み -・昔やっちまったbattle_athena.confの誤字の訂正 - - (common) - mmo.h - #define MAX_STAR 3に修正 - (conf) - battle_athena.conf - (conf/gvg/) - TEST_prtg_cas01_AbraiJ.txt - (map) - atcommand.c - get_atcommandinfo_byname() 修正 - - --------------------- -//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 -・スクリプトの間違いを修正 -(conf/gvg/) - ev_agit_payg.txt - ev_agit_gefg.txt - -・ひな祭りに一度入ったらマップ変数が残ったままになるので、マップ変数を使わないよう変更 -(一時的マップ変数にすれば問題ないとも言えますが、 -town_guideとtown_kafraに時期限定の物が常駐してしまうのが気になったので、 -それらをevent_hinamatsuriへ移動し、普段のをdisableしています) - (conf/npc/) - npc_event_hinamatsuri - npc_town_guide - npc_town_kafra - -・スキルリセット時のスキル取得制限判定をスキルポイント48以上消費から、 - スキルポイント58以上消費か残りスキルポイントがJOBLEVELより小さくなったときに変更 -・@model時の服色染色制限を緩和(男アサ、ローグのみへ) - (map/) - pc.c pc_calc_skilltree() - atcommand.c atcommand_model() - - --------------------- -//0909 by 胡蝶蘭 - -・NPCチャット関係の命令追加 - ・waitingroom(NPCチャット作成)修正(イベントを起こす人数を指定可能) - ・delwaitingroom(NPCチャット終了)追加 - ・enablewaitingroomevent(NPCチャットイベント有効化)追加 - ・disablewaitingroomevent(NPCチャットイベント無効化)追加 - ・getwaitingroomstate(NPCチャット状態所得)追加 - ・warpwaitingpc(NPCチャットメンバーワープ)修正 - 詳しくはscript_ref.txtを参照 - - (map/) - script.c/npc.c/npc.h/chat.c/chat.h/clif.c - 多々修正 - (doc/) - script_ref.txt - 修正 - (conf/sample/) - npc_test_chat.txt - 追加命令のテストスクリプト - -・スクリプトの間違いを修正 - (conf/npc/) - npc_event_skillget.txt - npc_event_yuno.txt - npc_town_lutie.txt - npc_turtle.txt - 謎命令additemをgetitemに置換 - npc_town_guide.txt - 謎命令scriptlabelをコメント化 - npc_event_momotaro.txt - npc_job_swordman.txt - npc_job_magician.txt - ';'付け忘れ修正 - (conf/gvg/) - ev_agit_aldeg.txt - @GID4を@GIDa4に置換 - ev_agit_gefg.txt - ev_agit_payg.txt - Annouceに色指定と';'の付け忘れを習性 - - -・AthenaDB計画のデータとりこみ、その他修正 - 安定しているデータかどうかわかりませんが。 - - (db/) - item_db.txt/mob_db.txt/mob_skill_db.txt - AthenaDB計画のデータとりこみ - mob_skill_db.txt.orig - 以前のデータ(コメント部分などの参考に) - (conf/) - water_height.txt/mapflag.txt - AthenaDB計画のデータとりこみ - map_athena.conf - npc_monster3*.txtを削除 - 追加マップデータ (by ID:UVsq5AE) - (conf/mob/) - npc_monster.txt - AthenaDB計画のデータとりこみ - --------------------- -//0908 by 胡蝶蘭 - -・スクリプトのエラーチェック処理を増やした - ・文字列の途中で改行があるとエラーを出すように。 - ・関数呼び出し演算子'('の直前に関数名以外があるとエラーを出すように。 - ・命令があるべきところに関数名以外があるとエラーを出すように。 - ・命令および関数の引数区切りの','を省略すると警告を出すように。 - ・命令および関数の引数の数が異なると警告を出すように。 - - (map/) - script.c - 色々修正 - -・NPCスクリプト修正 - (conf/npc/) - npc_town_guide.txt - 4行目はいらないようなのでエラーが出ないようにコメント化 - npc_event_hat.txt - コモドの仮面職人とフェイヨンの青年 (by ID:dS8kRnc) - (conf/sample/) - npc_card_remover.txt - @menuを使って短くした&文章少し修正 - -・その他 - (db/) - skill_tree.txt - Sage応急手当 - --------------------- -//0907 by p -・atcommand() の肥大化がひどいのでリファクタリング - @ コマンドを追加する場合は、atcommand.h 内で定数を、atcommand.c 内で - 関数定義マクロとマッピングテーブル、処理用の関数を記述してください。 -・global 変数の atcommand_config を消去。 - @ コマンド毎のレベルは get_atcommand_level() で取得してください。 -・一部のキャラ名を取る @ コマンドで、半角スペースを含む名前のキャラを - 正常に処理できていなかった問題を修正。 - この影響により、@rura+ など、キャラ名がパラメータの途中にあったものは - 全て最後に回されています。 -・@ コマンドの文字列を正常に取得できなかった場合に、バッファの内容を - チェックせずに処理を行おうとしていた部分を修正しました。 - - (common/) - mmo.h - (map/) - atcommand.h - atcommand.c - clif.h - clif.c - --------------------- -//0906 by Selena -・胡蝶蘭さんの修正にあわせて、バルキリーレルム1以外のスクリプトの修正。 -・@コマンド入力ミスの際にエラーメッセージを表示。 - (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 管理人 - -・サーバーsnapshot -・前スレのファイル取り忘れた人がいるかもしれないので - --------------------- -//0904 by 胡蝶蘭 - -・スクリプト処理修正 - ・char/interサーバーに接続した時にOnCharIfInit/OnInterIfInitイベントが - 呼ばれるようになりました。 - OnAgitInitはOnInterIfInitに変更すべきです。 - ・getcastledata命令で第2パラメータが0のとき、第3パラメータに - イベント名を設定できます。このイベントはギルド城のデータを - Interサーバーから所得完了したときに実行されます。 - ・起こすNPCイベント名を"::"で始めると、同名ラベルを持つ全NPCのイベント - を実行できます。 - たとえば、getcastledata "prtg_cas01.gat",0,"::OnRecvCastleP01"; - とすると全てのNPCの OnRecvCastleP01ラベルが実行されます。 - ・requestguildinfo命令追加。特定ギルドの情報をInterサーバーに - 要求できます。第1パラメータはギルドID、第2パラメータはイベント名で - このイベントはギルド情報をInterサーバーから所得完了したときに - 実行されます。 - - (map/) - guild.c/guild.h/npc.c/npc.h/script.c/intif.c/chrif.c - 色々修正 - -・ギルド城関連NPC修正 - (バルキリーレルム1のみ修正。他の城のスクリプトは各自で弄ってください。 - というか、むしろ弄ったらあっぷしましょう) - ・初期化処理をOnAgitInitでなくOnInterIfInitに変更。 - ・城データ所得完了処理としてOnRecvCastleP01を追加。 - ・鯖再起動時、ギルド専属カプラが正しく表示されるように。 - ・ギルド専属カプラの名前を"カプラ職員::kapra_prtg01"に変更。 - ("::"以降はエクスポートされる名前で、"::"以前が表示名) - "カプラ職員#prt"より名前を長くして競合しにくくするためです。 - この関係で、disablenpcなどのパラメータを"kapra_prtg01"に修正。 - (conf/gvg/) - prtg_cas01.txt - ギルド専属カプラ修正 - ev_agit_prtg.txt - 初期化処理修正(バルキリーレルム1のみ) - TEST_prtg_cas01_AbraiJ.txt - ギルド専属カプラ雇用/城破棄修正 - -・NPCの修正 - (conf/npc/) - npc_job_swordman.txt - npc_event_hat.txt - 修正 - -・アカウントを削除してもアカウントIDを再利用しないように修正 -・ギルド/パーティについても一応同等の処理追加(コメント化されています。 - ギルドやパーティはIDを再利用してもおそらく問題ないため) - - (login/) - login.c - 読み込み/保存処理修正 - (char/) - int_guild.c/int_party.c - 読み込み/保存処理修正 - --------------------- -//0903 by 胡蝶蘭 - -・l14/l15およびプレフィックスlを"推奨されない(deprecated)"機能としました。 - ・まだ使用できますが、今後の動作が保障されないので、速やかに代替機能を - 使用するように移行してください。 - ・プレフィックス'l'は代替機能のプレフィックス'@'を使用してください。 - ・l15は代替機能の@menuを使用してください。 - ・l14は代替機能はありません。input命令の引数を省略しないで下さい。 - ・これらの推奨されない機能を使用すると警告メッセージがでます。 - - (map/) - script.c - parse_simpleexpr()修正 - (conf/warp/) - npc_warp.txt/npc_warp25.txt/npc_warp30.txt - 変数名l0を@warp0に修正 - (conf/npc/) - npc_event_hat.txt - 変数名l15を@menuに修正 - (doc/) - script_ref.txt - 配列変数の説明追加 - 変数のプレフィックス'l'、input命令のl14、menu命令のl15の - 説明を修正 - --------------------- -//0902 by 胡蝶蘭 - -・スクリプトが配列変数に対応。 - ・array[number]のように使います。数値型、文字列型両方使えます。 - ・使えるプレフィックスは @, $, $@ です。 - (一時的キャラクター変数、一時的/永続的マップサーバー変数) - ・number==0は配列じゃない変数と値を共有します。 - (@hoge[0]と@hogeは同じ変数を表す) - ・まだ仮実装段階なのでバグ報告よろしくお願いします。 -・マップサーバー変数の読込中にCtrl+Cをするとデータ破損の可能性がある問題を修正. -・マップファイル読み込み画面がさびしいのでせめてファイル名を表示するように。 - - (conf/sample/) - npc_test_array.txt - 配列変数テストスクリプト - (map/) - script.c - buildin_set(),buildin_input(),get_val(), - parse_simpleexpr()修正 - buildin_getelementofarray()追加 - do_final_script()修正など - map.c - map_readmap(),map_readallmap()修正 - --------------------- -//0901 by ぴざまん - -・露店バグの修正 - - (map/) - pc.c - pc_cartitem_amount() 追加。 - vending.c - vending_openvending() 修正。 - clif.c - clif_parse_NpcClicked() 修正。 - pc.h 修正。 - --------------------- -//0900 by ぴざまん - -・アブラカダブラのランダムスキル発動率をabra_db.txtで設定できるように。 -・スフィアーマインとバイオプラントの微修正。 -・Noreturnマップで蝶が消費だけされるバグ修正。 -・一部のアブラ固有スキルが正しく動作しなかったバグ修正。 - (map/) - mob.c - mob_damage()、mobskill_use() 修正。 - mob_skillid2skillidx() 追加。 - skill.c - skill_readdb()、skill_abra_dataset() 修正。 - skill_castend_nodamage_id()、skill_castend_pos2() 修正。 - script.c - buildin_warp() 修正。 - - skill.h 修正。 - map.h 修正。 - (db/) - abra_db.txt 追加。 - skill_db.txt 修正。 - --------------------- -//0899 by 胡蝶蘭 - -・取り巻きMOBの処理修正 - ・取り巻き召喚でコアを吐くバグ修正 - ・主が別マップに飛ぶと、テレポートで追いかけるように修正 - ・取り巻き処理をより軽く変更 - - (map/) - mob.c - mob_ai_sub_hard_mastersearch()をmob_ai_sub_hard_slavemob() - に名前を変えて処理修正。 - mob_summonslave()修正 - --------------------- -//0898 by 胡蝶蘭 - -・eathenaからCardRemoverNPCの取り込み - NPCデータも日本語訳してますが、かなり適当です。 - - (map/) - script.c - buildin_getequipcardcnt(),buildin_successremovecards() - buildin_failedremovecards()追加 - (conf/sample/) - npc_card_remover.txt - カード取り外しNPCの日本語訳 - プロンテラの精錬所の中の左下の部屋にいます - -・ポータルで別マップに飛ばしたMOBがそのマップに沸き直すバグ修正 - (map/) - map.h - struct mob_dataにmメンバ追加 - mob.c - mob_spawn(),mob_once_spawn()修正 - npc.c - npc_parse_mob()修正 - - --------------------- -//0897 by ぴざまん - -・細かい調整 -・ストリップ系とケミカルプロテクション系スキルの全実装 - 本鯖での細かい仕様が分ったので実装しました。 - 確率は暫定です。 - - (map/) - pc.c - pc_isequip() 修正 - skill.c - skill_status_change_start()、skill_castend_nodamage_id() 修正。 - skill_abra_dataset() 修正。 - battle.c - battle_get_def()、battle_get_atk2() 修正。 - battle_get_vit()、battle_get_int() 修正。 - (db/) - const.txt 修正。 - skill_db.txt 修正。 - cast_db.txt 修正。 - --------------------- -//0896 by 胡蝶蘭 - -・永続的マップ変数機能追加 -・マップ変数を文字列型変数としても使用できるようにした - ・今までのプレフィックス $ は永続的になります。 - 一時的マップ変数を使用する場合はプレフィックス $@ を指定してください. - - ・永続的/一時的ともに文字列型に対応しています。 - 文字列型のポストフィックスは$です。 - - <例> $@hoge 数値型一時マップ変数、$hoge$ 文字列型永続マップ変数 - ・永続マップ変数はデフォルトでは save/mapreg.txt に保存されます。 - これはmap_athena.confのmapreg_txtで設定できます。 - -・str_dataが再割り当てされるとマップ変数が正常に使用できないバグ修正 - ・strdbからnumdbにして、変数名はstr_bufに入れるように。 - -・map_athena.confのdelnpc,npc:clearが正しく働かないバグ修正 - - (map/) - npc.c - npc_delsrcfile(),npc_clearsrcfile()修正 - script.c / script.h - マップ変数系かなり修正 - map.c - map_read_config()修正など - (conf/) - map_athena.conf - mapreg_txt追加 - (doc/) - conf_ref.txt - mapreg_txt,help_txt,motd_txt追加 - script_ref.txt - 文字列型変数の説明修正 - --------------------- -//0895 by Selena - -・mapflagにnozenypenaltyを追加。 - GVGや街中のテロなどで死亡した際に、Zenyペナルティー発生を外す用。 - - (map/) - pc.c - pc_setrestartvalue() 修正 - script.c - buildin_setmapflag()、buildin_removemapflag() 修正 - npc.c - npc_parse_mapflag() 修正 - map.h - map_data() 修正 - (db/) - const.txt 修正。 - --------------------- -//0894 by ぴざまん - -・コーマ以外のアブラカダブラ固有スキル全実装。 - オートスペルにはレベルアップ以外多分全部乗せれます。(オートスペルレベルアップは未テスト) -・アブラカダブラ仮実装 - 発動スキルがレベル依存じゃありません。 - 全ての発動率が理論上均一です。 - アイテムスキルを使って実装しているので一部の使用条件を無視します(ジェム罠気球等) -・アイテムスキルがキャスト・ディレイ無しだったのを修正。 - - (map/) - skill.c - skill_castend_nodamage_id()、skill_use_id()、skill_use_pos() 修正。 - skill_abra_dataset() 追加。 - (db/) - skill_db.txt 修正。 - --------------------- -//0893 by 胡蝶蘭 - -・他マップからポータルの上にワープしてきたPCがワープしない問題を修正 -・チャット中のPCをワープポータルで飛ばすかどうか設定可能に -・MOBをワープポータルで飛ばすかどうか設定可能に - MOBのワープポータルを許可すると、テロが簡単にできるので注意。 - -・アカウント変数変更と同時にファイルに書き出すように修正 -・マップデータのロード部分のログ表示はあまり重要じゃないと思うので変更。 - - (char/) - inter.c - mapif_parse_AccReg()でinter_accreg_save()を呼ぶように修正 - (map/) - mob.c/mob.h - mob_warp()の引数変更と修正 - battle.c/battle.h - mob_warp()呼び出しの引数修正 - battle_config関連 - map.c - map_readallmap(),map_readmap()修正 - pc.c - pc_setpos()修正 - skill.c - mob_warp()呼び出しの引数修正 - skill_unit_onplace()修正 - (conf/) - battle_athena.conf - chat_warpportal,mob_warpportalの追加 - (doc/) - conf_ref.txt - chat_warpportal,mob_warpportalの追加 - --------------------- -//0892 by 胡蝶蘭 - -・各種confファイルで別ファイルをインポートできるようにした - ・自分のサーバー用の設定を別ファイルに記述できるようになります。 - ・全て「import: ファイル名」形式で記述します。 - ・各種confファイル(login,char,map,inter,atcommand,battle)の最後に - conf/import/*_conf を読むように指定したので、そこに自分用の設定を - 書いておけば、変更部分のみオーバーライドします。 - msg,scriptのconfについては、この限りではありませんが、import命令の - 処理は追加されているので、自分でimport命令を書けば動きます。 - ・新しいスナップショットが出た場合などに、このconf/importフォルダを - 昔のAthenaからコピーするだけで自分用の設定を適用できるようになります. - -・map_athena.confのmapとnpcで追加したファイルを削除できるようにした - ・上に関連する変更です。 - ・delmap,delnpc命令を使用すれば、map,npc命令で追加したファイルを - 読み込まないように指定できます。ここでファイル名ではなく、 - all と指定するとそれまでに指定されたファイルを全て読み込まなくします. - ・map,npc命令で、ファイル名にclearを指定すると、 - delmap,delnpcのallと同等の動作をするようになりました。 - -・login_athena.confのallowとdenyをクリアできるようにsた - ・allowおよびdeny命令でclearを指定すると以前のホスト情報を全削除します. - - (conf/) - 各種confファイルの最後にimport命令追加 - (conf/import) - *.txt - インポートされるファイル。これらに自分用の設定を書くとよい。 - (login/) - login.c - login_read_config()修正 - (char/) - char.c/inter.c - char_read_config(),inter_read_config()修正 - (map/) - map.c - map_read_config(),map_addmap()修正、map_delmap()追加 - npc.c - npc_addsrcfile()修正,npc_delsrcfile(),npc_clearsrcfile()追加 - battle.c/atcommand.c/script.c - battle_read_config(),atcommand_read_config(), - msg_read_config(),script_read_config()修正 - (doc/) - conf_ref.txt - 修正 - --------------------- -//0891 by (凸) - -・「スキル使用の後は、しばらくお待ちください」を表示するかどうか設定できるようにした。 - ・本鯖相違スレッド 其のU>>5さんのコードをパクリました。 - (doc/) - conf_ref.txt 修正。 - (conf/) - battle_athena.conf 修正。 - (map/) - battle.h 修正。 - battle.c - battle_config_read() 修正。 - clif.c - clif_skill_fail() 修正。 - --------------------- -//0890 by 死神 - -・ギルド倉庫を一度に一人だけが使用するように変更。(未テスト) -・battle_athena.confからplayer_undead_nofreeze 削除。 -・@コマンド@gstorage 追加。 -・スクリプトguildstorageをguildopenstorageに変更。 -・その他細かいバグ修正。 - (doc/) - conf_ref.txt 修正。 - script_ref.txt 修正。 - (conf/) - atcommand_athena.conf 修正。 - battle_athena.conf 修正。 - help.txt 修正。 - (conf/sample/) - gstorage_test.txt 追加。 - (char/) - makefile 修正。 - int_storage.h 修正。 - int_storage.c - inter_storage_delete()、inter_guild_storage_delete() 追加。 - int_guild.c - guild_check_empty()、mapif_parse_BreakGuild() 修正。 - (map/) - makefile 修正。 - battle.h 修正。 - battle.c - battle_config_read() 修正。 - guild.c - guild_broken() 修正。 - storage.h 修正。 - storage.c - storage_guild_storageopen() 修正。 - storage_delete()、guild_storage_delete() 追加。 - script.c - buildin_guildstorage() を buildin_guildopenstorage()に変更。 - intif.c - intif_parse_LoadGuildStorage() 修正。 - mob.c - mob_summonslave()、mob_damage()、mob_delete() 修正。 - mob_catch_delete()、mob_readdb() 修正。 - skill.c - skill_castend_nodamage_id()、skill_status_change_start() 修正。 - clif.c - clif_parse_ActionRequest() 修正。 - atcommand.h 修正。 - atcommand.c - atcommand() 修正。 - --------------------- -//0889 by 胡蝶蘭 - -・文字列型一時的キャラクター変数機能追加。 - ・プレフィックス@,ポストフィックス$を使用します。(@hoge$など) - ・inputで文字列変数を指定すると文字列入力になります。 - ・関係演算子(比較演算子)で文字列どうしを指定すると文字列の比較が - できます。数値と文字列を混ぜて比較することはできません。 - ・とりあえずサンプル付けてます。 - - (map/) - map.h - struct map_session_dataにnpc_str,regstr,regstr_numメンバ追加 - script.c - buildin_set(),get_val(),buildin_input(),op_2num()など修正 - op_2str(),op_2()追加 - clif.c / clif.h - 01d5パケット長修正 - clif_parse_NpcStringInput(),clif_scriptinputstr()追加 - pc.c / pc.h - pc_readregstr(),pc_setregstr()追加 - (doc/) - script_ref.txt - 演算子の説明追加、変数の説明修正、input,menu修正 - (conf/sample/) - npc_test_str.txt - 文字列変数を使用したスクリプトの例。 - 文字列の代入、結合、比較、入力などのテストを行うもの。 - --------------------- -//0888 by 死神 - -・設計から間違っていたギルド倉庫修正。(ただ複数人の使用によるバグがある可能性はまだあります。) -・細かいバグ修正。 - (doc/) - inter_server_packet.txt 修正。 - conf_ref.txt 修正。 - (conf/) - inter_athena.conf 修正。 - help.txt 修正。 - (common/) - mmo.h 修正。 - (char/) - makefile 修正。 - int_storage.h 修正。 - int_storage.c - account2storage()、inter_storage_init()、storage_fromstr() 修正。 - inter_storage_save()、mapif_load_storage() 修正。 - mapif_parse_SaveStorage() 修正。 - guild_storage_fromstr()、guild_storage_tostr() 追加。 - inter_storage_save_sub()、inter_guild_storage_save_sub() 追加。 - inter_guild_storage_save()、mapif_parse_LoadGuildStorage() 追加。 - mapif_parse_SaveGuildStorage()、mapif_load_guild_storage() 追加。 - mapif_save_guild_storage_ack()、guild2storage() 追加。 - int_party.c - inter_party_init() 修正。 - int_guild.h 修正。 - int_guild.c - inter_guild_init() 修正。 - inter_guild_search() 追加。 - int_pet.c - inter_pet_init() 修正。 - inter.c - inter_init()、inter_save()、inter_config_read() 修正。 - (map/) - makefile 修正。 - map.h 修正。 - map.c - map_quit()、do_init() 修正。 - pc.c - pc_setpos() 修正。 - storage.h 修正。 - storage.c - do_init_storage()、do_final_storage()、account2storage() 修正。 - storage_storageopen()、storage_storageadd()、storage_storageget() 修正。 - storage_storageaddfromcart()、storage_storagegettocart() 修正。 - storage_storageclose()、storage_storage_quit() 修正。 - storage_storage_save() 修正。 - guild2storage()、storage_guild_storageopen() 追加。 - guild_storage_additem() 、guild_storage_delitem() 追加。 - storage_guild_storageadd()、storage_guild_storageget() 追加。 - storage_guild_storageaddfromcart()、storage_guild_storagegettocart() 追加。 - storage_guild_storageclose()、storage_guild_storage_quit() 追加。 - intif.h 修正。 - intif.c - intif_send_storage()、intif_parse_LoadStorage()、intif_parse() 修正。 - intif_request_guild_storage()、intif_send_guild_storage() 追加。 - intif_parse_SaveGuildStorage()、intif_parse_LoadGuildStorage() 追加。 - clif.h 修正。 - clif.c - clif_additem()、clif_parse_MoveToKafra() 修正。 - clif_parse_MoveFromKafra()、clif_parse_MoveToKafraFromCart() 修正。 - clif_parse_MoveFromKafraToCart()、clif_parse_CloseKafra() 修正。 - clif_parse_LoadEndAck() 修正。 - clif_guildstorageitemlist()、clif_guildstorageequiplist() 追加。 - clif_updateguildstorageamount()、clif_guildstorageitemadded() 追加。 - guild.c - guild_broken() 修正。 - script.c - buildin_openstorage()、buildin_guildstorage() 修正。 - skill.c - skill_castend_nodamage_id() 修正。 - mob.c - mob_summonslave()、mob_damage() 修正。 - atcommand.c - atkillmonster_sub()、atcommand() 修正。 - --------------------- -//0887 by 獅子o^.^o - -・(db/) - skill_tree.txt 修正 - --------------------- -//0886 by ぴざまん - -・サーバーsnapshot -・ファイル調整 - --------------------- -//0885 by huge - -・ギルド共有倉庫の実装。guildstorageで開けます。 - 自分の鯖で実験はしてみましたが、過疎地なので多人数ギルドになるとどう動くか分かりません。 - (念のためバックアップは必ず取っておいて下さい) -・areawarpで、対象マップ名を"Random"にすると、同マップ内でランダムに飛ぶように修正。 -・GMコマンドで生き返したときにSPも全回復するように修正。 -・ディボーションの条件をちょっと修正。 - - (char/) - int_storage.c - mapif_load_storage() 修正。 - mapif_parse_SaveStorage() 修正。 - inter.c - inter_send_packet_length[] 修正。 - inter_recv_packet_length[] 修正。 - (map/) - atcommand.c - @alive,@raise,@raisemap 修正。 - intif.c - packet_len_table[] 修正。 - intif_request_storage() 修正。 - intif_send_storage() 修正。 - intif_parse_LoadStorage() 修正。 - - map.h - map_session_data stateにstorage_flag 追加。 - script.c - buildin_areawarp_sub() 修正。 - buildin_openstorage() 修正。 - buildin_guildstorage() 追加。 - skill.c - skill_castend_nodamage_id() 修正。 - storage.c - account2storage() 修正。 - storage_storageopen() 修正。 - storage_storage_save() 修正。 - --------------------- -//0884 by 死神 - -・細かいバグ修正。 -・battle_athena.confにpet_str、zeny_penalty、resurrection_exp 追加。 -・0878の銀行関係のコードはもういらないので全て削除。 -・zeny_penaltyを設定して使う場合は手数料はなくした方がいいかも。 -・ポーションピッチャーでpercenthealにもPPとLPによる回復ボーナスが付くように変更。(ただvitやint、HPR、MPRによる回復ボーナスが付きません。) -・ほとんど未テスト。 - (common/) - mmo.h 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - map.c - do_init()、do_final() 修正。 - script.c - buildin_openbank() 削除。 - buildin_failedrefitem() 修正。 - storage.h 修正。 - storage.c - do_init_bank()、do_final_bank()、account2bank() 削除。 - storage_bank()、storage_readbank() 削除。 - skill.c - skill_castend_nodamage_id()、skill_attack() 修正。 - battle.h 修正。 - battle.c - battle_calc_pet_weapon_attack()、battle_config_read() 修正。 - pc.c - pc_setrestartvalue() 修正。 - clif.c - clif_skill_nodamage()、clif_refine() 修正。 - itemdb.c - itemdb_isequip3() 修正。 - atcommand.c - atcommand() 修正。 - --------------------- -//0883 by Kalen - -・Warp色々修正 - ・アサシンギルド周り修正(昔のままのリンクだったので現在の状態に修正。) - ・YunoのWarp全面見直し(YumilLoop修正、SageCastleRandomWarp追加、女医さんの家追加) - ・モンクギルド周り追加 -・NPC色々修正 - ・帽子作成NPCを別ファイルへ。一部追加(ep2.5追加分) -  参考Data(R.O.M776): ttp://green.sakura.ne.jp/~youc/ro/data/itemmaking.html#04 - ・アサシンギルド修正 - ・二次職転職関係NPC一部追加(これでコモド小劇場へ行けます) - ・マスターアルケミストの台詞修正 - ・アルデバランの案内要員を移動&台詞修正&イメージ追加 - ・BBSにあがっていたコモドスクリプト追加(event_hat等へ分散) - ・コンロンクエスト関係NPC一部追加(女医[yuno]、ネル[prontera]) - (conf/warp/) - npc_warp.txt - npc_warp30.txt - npc_warp_job.txt - (conf/npc/) - npc_event_hat.txt(新規) - 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 胡蝶蘭 - -・スクリプトに0881相当のアカウント共有変数機能のプレフィックス変更 - ・0881のアカウント変数はプレフィックス##になりました。 - ・0881のアカウント変数は全ワールドで共有されます。 - ・変数の個数はmmo.hのACCOUNT_REG2_NUMで定義されています(16)。 -・ワールド内のアカウント共有変数機能追加 - ・変数名のプレフィックスは#です。 - ・変数の個数はmmo.hのACCOUNT_REG_NUMで定義されています(16)。 - ・0881の銀行スクリプトはこちらを使用するようになります。 - よって以前のデータがつかえないのであらかじめ引き出しておいてください. - ・変数データは save/accreg.txt に保存されます。 - このファイル名は inter_athena.conf で変更可能です。conf_ref.txt参照。 - - (common/) - mmo.h - ACCOUNT_REG_NUMを16に、ACCOUNT_REG_NUM2追加 - struct mmo_charstatusにaccount_reg2_num,account_reg2メンバ追加 - (login/) - login.c - account_regを全てaccount_reg2に置き換え - (char/) - char.c - account_regを全てaccount_reg2に置き換え - inter.c - ワールド内アカウント変数機能追加。 - inter_accreg*()追加、accreg_db追加など。 - (map/) - chrif.c/chrif.h - account_regを全てaccount_reg2に置き換え - 0881でのバグを修正 - intif.c/intif.h - ワールド内アカウント変数機能追加。 - pc.c/pc.h - pc_*accountreg()=>pc_*accountreg2()に。 - pc_setaccountreg(),pc_readaccountreg()追加。 - script.c - buildin_set(),buildin_get_val(),buildin_input()修正 - (doc/) - inter_server_packet.txt - ワールド内アカウント変数関係 - conf_ref.txt - accreg_txt追加 - --------------------- -//0881 by 胡蝶蘭 - -・スクリプトにアカウント共有変数機能追加 - ・変数名にプレフィックス#を付けることでアカウント共有変数になります。 - ・アカウント変数は変更した時点で全サーバーにポストされるので - 頻繁に書き換えるとサーバー間通信が肥大化します。 - ・アカウント変数は変更した時点(そしてそれがlogin鯖に届いた時点)で - account.txtに書き出されます。 - ・グローバル変数(永続変数)の個数を96に減らし、減った32個分を - アカウント変数にしていますが、mmo_charstatusのサイズが - 16000byteを超えない限り増やすことができます。<0879の変更を参照 - 変数の個数はmmo.hのACCOUNT_REG_NUMで定義されています。 - ・0878の銀行をアカウント変数を使用するように修正 - bank.txtのデータが使えなくなるのであらかじめ引き出しておいて下さい。 - - (common/) - mmo.h - GLOBAL_REG_NUMを96に、ACCOUNT_REG_NUMを追加 - struct mmo_charstatusにaccount_reg_num,account_regメンバ追加 - (login/) - login.c - パケット2728処理追加 - (char/) - char.c - パケット2729,2b10処理追加 - (map/) - chrif.c - chrif_saveaccountreg(),chrif_accountreg() - (パケット2b10,2b11処理)追加。 - pc.c/pc.h - pc_readaccountreg(),pc_setaccountreg()追加 - script.c - buildin_set(),buildin_get_val(),buildin_input()修正 - (conf/sample/) - bank_test.txt - アカウント変数使用版の銀行スクリプト - --------------------- -//0880 by 死神 - -・ポーションピッチャーを正しく実装とちょっと機能拡張。 -・ポーションピッチャーでレベル別に使えるアイテムをskill_require_db.txtに設定できるようにしました。ただポーションピッチャーで使えるアイテムはitemheal、percentheal、sc_start、sc_end以外の物が入っていると正しく動作しません。 -レベル5までは本鯖に合わせていますが最大レベルを10まで拡張するとレベル6 - マステラの実、7 - ローヤルゼリー、8 - イグドラシルの種、9 - イグドラシルの実、10 - バーサークポーションに設定しています。skill_db.txtを修正すればこれが有効になります。(どこを修正するかもわからない人は諦めることです。) ポーションピッチャーによるアイテム使用は使用条件を無視します。少しはアルケミストに希望ができたかも...(多分無理...) -・battle_athane.confにproduce_item_name_input、produce_potion_name_input、making_arrow_name_input、holywater_name_input 追加。 -・パーティ員にだけ使うスキルとギルド員にだけ使うスキルを設定できるように修正。 -・その他細かい修正。 - (conf/) - battle_athane.conf 修正。 - (doc/) - conf_ref.txt 修正。 - db_ref.txt 修正。 - (db/) - skill_db.txt 修正。 - skill_require_db.txt 修正。 - (map/) - map.h 修正。 - skill.h 修正。 - skill.c - skill_status_change_timer()、skill_attack()、skill_use_id() 修正。 - skill_castend_nodamage_id()、skill_castend_damage_id() 修正。 - skill_castend_id()、skill_castend_pos()、skill_produce_mix() 修正。 - skill_arrow_create()、skill_check_condition() 修正。 - skill_status_change_clear()、skill_readdb() 修正。 - mob.c - mobskill_use_id()、mob_changestate() 修正。 - pc.c - pc_itemheal()、pc_percentheal()、pc_calcstatus() 修正。 - battle.h 修正。 - battle.c - battle_delay_damage()、battle_damage()、battle_heal() 修正。 - battle_get_adelay()、battle_get_amotion() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_weapon_attack()、battle_config_read() 修正。 - clif.c - clif_skill_fail() 修正。 - script.c - buildin_sc_start()、buildin_sc_end() 修正。 - makefile 修正。 - --------------------- -//0879 by 胡蝶蘭 - -・送信FIFOのバッファオーバーフローの脆弱性の修正 - ・2048バイト以上のパケットを送るとき、FIFOが満杯に近ければ - バッファオーバーフローによる不正アクセスが起こっていた問題修正。 - ・FIFOが満杯に近いときWFIFOSETされたパケットが捨てられていた問題修正。 - ・FIFOがオーバーフローする場合、自動的にFIFOを拡張するようにした。 - (ただし、一度にWFIFOSETするパケットが16384バイト以下と仮定している) - ・「socket: ? wdata expanded to ???? bytes」はFIFOが拡張されたときに - でるログだが、エラーではなく、パケットは正しく送信される。 - ・「socket: ? wdata lost !!」はパケットが喪失したことを表すログで、 - エラーであるが64KBを超える超巨大なパケットをWFIFOSETしないと出ない。 - ・16384バイトを超えるパケットをWFIFOSETするとエラーメッセージなしに、 - 不正アクセスが起こる可能性があるので、超えないようにすること。 - - (common/) - socket.c /socket.h - WFIFOSET()をマクロから関数に変更 - realloc_fifo()追加 - -・サーバー間通信FIFOのバッファサイズを大きくした - ・大量のデータが通信されたときにデータ処理遅延が起きにくくするため。 - ・メモリ使用量が増えた。(ぎりぎりの人は65536に設定すると元通りになる) - ・サーバー間通信のFIFOサイズは mmo.h で定義されている。 - 変更する場合は64KB(65536)以上の値にすること。 - 大きくすると巨大データ受信時の遅延が減るがメモリを多く使う。 - ・@kickall時などにデータ送信が激しくなるので変更したが、 - 同時ログイン人数が少ないと増やしても意味は無い。 - - (common/) - mmo.h - FIFOSIZE_SERVERLINKマクロ追加。 - (login/) - login.c - 2710パケットでrealloc_fifo()を呼ぶように - (char/) - char.c - 2af8パケットでrealloc_fifo()を呼ぶように - check_connect_login_server()でrealloc_fifo()を呼ぶように - (map/) - chrif.c - check_connect_char_server()でrealloc_fifo()を呼ぶように - --------------------- -//0878 by huge - -・カプラ銀行サービス。 - 自分の鯖で実装してたんですが、意外と好感触だったので出してみます。 - NPCscriptで、openbank(0);で預金額を返して、中に数字を入れると出し入れします。 - 詳しくはサンプルを同封したので、それを参照。 - - (common/) - mmo.h - struct bank 追加。 - (map/) - map.c - do_final(),do_init() 修正。 - script.c - buildin_openbank() 追加。 - storage.c - storage.h - グローバル変数追加。 - do_init_bank(),do_final_bank(),account2bank() 追加。 - storage_bank(),storage_readbank() 追加。 - --------------------- -//0877 by 胡蝶蘭 - -・login鯖のアクセスコントロールがネットマスク表記に対応 - 192.168.0.0/24 や 192.168.0.0/255.255.0.0 といった表記に対応。 -・battle_athena.confにGMが無条件で装備品を装備できる& - 無条件でスキルを使用できる設定追加 - これらはデバグ用なので動作に不都合があるかもしれません。 - - (login/) - login.c - check_ip()修正,check_ipmask()追加 - (map/) - battle.c/battle.h - battle_configにgm_allequip,gm_skilluncond追加 - battle_config_read()修正更 - skill.c - skill_check_conditio()修正 - pc.c - pc_isequp()修正 - (doc/) - conf_ref.txt - allow変更、gm_all_equipment、gm_skill_unconditional追加 - --------------------- -//0876 by 死神 - -・細かいバグ修正。 -・@コマンドにテストの為に入れていた物が入っていたので修正。 -・ハンマーフォールの射程を5から4に修正(本鯖射程は不明)とリザレクションが無属性だったのを聖属性に修正。 - (db/) - skill_db.txt 修正。 - (map/) - mob.c - mob_catch_delete()、mob_stop_walking() 修正。 - storage.c - storage_additem() 修正。 - pc.c - pc_damage()、pc_stop_walking() 修正。 - clif.c - clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 - battle.c - battle_calc_magic_attack() 修正。 - skill.c - skill_check_condition() 修正。 - atcommand.c 修正。 - --------------------- -//0875 by 胡蝶蘭 - -・party_share_levelをinter_athena.confに移した - (パーティ関連の処理の管轄がinter鯖のため) -・inter_athena.confにinter_log_file項目追加 -・ギルド作成/解散/城占領/城破棄がログに残るように -・ギルド解散時にメモリリークしていた問題を修正 - (char/) - char.c/char.h - party_share_level関連 - (inter/) - inter.c/inter.h - party_share_level / inter_log_file 関連 - ログ出力用にinter_log()追加 - int_guild.c - 作成/解散/城占領/城破棄をログに出力 - メモリリーク修正 - (doc/) - conf_ref.txt - 修正 - -・サーバー状態確認用CGIスクリプト添付など - ・自己責任&詳細な解説無し、質問されてもスルーする可能性有り - ・エディタで開いたら少し説明有り - ・CGI設置の基本さえわかれば問題ないはず - - (tool/cgi/) - serverstatus.cgi - サーバー状態確認用CGIスクリプト - addaccount.cgi - 説明修正 - --------------------- -//0874 by Kalen -・WhiteDayイベント追加 - conf/npc/npc_event_whiteday.txt(新規) - ただ、お菓子売ってるだけみたい…GMがなにやるのかは知りませんが。 - sakROのほうではホワイトチョコらしきものが追加されたのに - jROで追加されたのは雛壇撤去パッチのみ(*´д`;)… - -・Alchemistギルドで乳鉢、製造書を変えるように - conf/npc/npc_job_alchemist.txt(新規) - 転職クエストが分からなかったので温めていましたが - 買えないと不便と聞いたので、追加 - -・染色NPC実装 - conf/npc/npc_event_dye.txt(更新) - 髪型変更がsakROに来たらしいので - なんとなーく更新 - --------------------- -//0873 by 死神 - -・@コマンドitem2とkillmonster 追加。 -・スクリプトgetitem2とkillmonsterall 追加。 -・矢作成で作られた矢も製造者の名前が付くように修正。 -・battle_athena.confにmonster_class_change_full_recover追加。 -・装備スクリプトにbWeaponComaEleとbWeaponComaRace 追加。 -・少し間違いがあったダメージ計算式修正。 -・bInfiniteEndureの処理をインデュア表示なしで内部処理するように変更。 -・オートスペルでcastend_nodamage_id()を呼ぶスキルも使用できるように修正。 -・その他細かい修正とバグ修正。 -・ほとんど未テストなのでバグがあったら報告お願いします。 - (conf/) - help.txt 修正。 - atcommand_athena.conf 修正。 - battle_athena.conf 修正。 - char_athena.conf 修正。 - (db/) - const.txt 修正。 - item_db.txt 修正。 - (doc/) - item_bonus.txt 修正。 - script_ref.txt 修正。 - conf_ref.txt 修正。 - (map/) - map.h 修正。 - map.c - map_quit() 修正。 - skill.h 修正。 - skill.c - skill_castend_nodamage_id()、skill_status_change_clear() 修正。 - skill_castend_id()、skill_castend_pos()、skill_arrow_create() 修正。 - skill_status_change_timer() 修正。 - pc.c - pc_calcstatus()、pc_bonus2()、pc_equipitem() 修正。 - pc_unequipitem()、pc_damage() 修正。 - battle.h 修正。 - battle.c - battle_get_dmotion()、battle_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_calc_magic_attack()、battle_config_read() 修正。 - clif.c - clif_parse_LoadEndAck()、clif_damage()、clif_skill_damage() 修正。 - clif_skill_damage2() 修正。 - itemdb.h 修正。 - itemdb.c - itemdb_isequip3() 追加。 - mob.h 修正。 - mob.c - mob_delay_item_drop()、mob_damage()、mob_changestate() 修正。 - mob_class_change()、mob_delete()、mob_catch_delete() 修正。 - script.c - buildin_getitem() 修正。 - buildin_killmonsterall_sub()、buildin_killmonsterall() 追加。 - atcommand.h 修正。 - atcommand.c - atcommand() 修正。 - atkillmonster_sub() 追加。 - --------------------- -//0872 by ElFinLazz - -・スキルポーションピッチャー修正 -・スキルギムソバングドンボルオッネ具現 -・スキルアブラカダブなら義コーマ具現 -・コーマの武器オプション追加(種族, 千分率) -・オプション説明追加 - (db/) - const.txt 修正. - (doc/) - item_bonus.txt 修正. - (map/) - map.h 修正. - skill.c - skill_castend_nodamage_id(), skill_unit_group(), skill_status_change_start() 修正. - pc.c - pc_calcstatus(), pc_bonus2(), pc_gainexp() 修正. - battle.c - battle_weapon_attack() 修正. - --------------------- -//0871 by 死神 - -・0869のバグ修正。 -・char_athena.confとlogin_athena.confに項目追加。(キャラ鯖とログイン鯖のログファイルを変えることができるようにしました。デフォルトでlog/フォルダーに入るのでlogフォルダーを作る必要があります。) -・エナジーコートの処理を少し修正。モンスターが使った場合はスキルレベル*6%の物理ダメージを減らすように変更。 -・武器以外の物でも製造者の名前を表示するように変更。(本鯖ではプレゼントボックスと手作りチョコレット以外は表示されませんがパケットはあることだし入れてみました。) -・その他スキル関係の細かい修正。 -・@コマンド一つとスクリプト一つを追加しましたが説明は後のパッチで書きます。 - (conf/) - char_athena.conf 修正。 - login_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (login/) - login.c - parse_login()、login_config_read()、login_log() 修正。 - (char/) - char.h 修正。 - char.c - char_config_read()、make_new_char()、parse_char() 修正。 - int_party.c 修正。 - int_storage.c 修正。 - int_guild.c 修正。 - int_pet.c 修正。 - (map/) - map.h 修正。 - skill.c - skill_status_change_start()、skill_additional_effect() 修正。 - skill_castend_nodamage_id()、skill_check_condition() 修正。 - skill_status_change_clear()、skill_produce_mix() 修正。 - skill_status_change_timer() 修正。 - pc.c - pc_calcstatus()、pc_insert_card()、pc_additem()、pc_cart_additem() 修正。 - storage.c - storage_additem() 修正。 - battle.c - battle_get_adelay()、battle_get_amotion()、battle_calc_damage() 修正。 - clif.c - clif_additem()、clif_equiplist()、clif_storageequiplist() 修正。 - clif_tradeadditem()、clif_storageitemadded()、clif_use_card() 修正。 - clif_cart_additem()、clif_cart_equiplist()、clif_vendinglist() 修正。 - clif_openvending()、clif_arrow_create_list() 修正。 - clif_skill_produce_mix_list()、clif_parse_SelectArrow() 修正。 - clif_parse_ProduceMix() 修正。 - script.c - buildin_produce() 修正。 - buildin_getitem2() 追加。 - atcommand.c - atcommand() 修正。 - --------------------- -//0870 by shuto - -・mapflagの攻城戦MAPにnomemo追加 -・ギルド宝箱で、宝箱出現と同時にMAP鯖が落ちる問題修正(by ぴざまん) - --------------------- -//0869 by 死神 - -・battle_athena.confにplayer_land_skill_limit、monster_land_skill_limit、party_skill_penaly 追加。 -・char_athena.confにparty_share_level 追加。 -・その他細かい修正。 - (conf/) - char_athena.conf 修正。 - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (char/) - char.h 修正。 - char.c - char_config_read() 修正。 - int_party.c - party_check_exp_share() 修正。 - (map/) - map.h 修正。 - skill.c - skill_attack()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_status_change_start() 修正。 - skill_castend_pos() 修正。 - pc.c - pc_calcstatus() 修正。 - mob.c - mobskill_castend_pos() 修正。 - battle.h - battle.c - battle_get_adelay()、battle_get_amotion()、battle_calc_damage() 修正。 - battle_config_read() 修正。 - pet.c - pet_data_init() 修正。 - --------------------- -//0868 by 死神 - -・マジックロッド実装とスペルブレイカー修正。 -・マジックロッドの場合本鯖で使ってもなんの表示もなく発動の前には使ったかどうかの確認ができないのでスキル詠唱パケット(0x13e)を利用して使用する時スキル名が出るようにしています。(本鯖と違うぞとかで文句がこないように) -・スペルブレイカー詠唱キャンセルに関係なくskill_db.txtに設定されてるskill_typeがmagicのスキルのみ破ることができます。(ラグナゲートの説明を適用) -・skill_db.txtの書式が変わったので注意してください。ノックバック距離の設定もできますが念の為にいっておきますがA鯖でのテストでFWのノックバック距離は2でサンクも2であることを確認しています。韓国の2003年11月19日パッチ前の鯖ではありますが2-2は適用されている所なので本鯖の違いはないと思います。 -・その他スキル関係の細かい修正。 -・0867で書き忘れ。モンスターのヒールでアンデッドモンスターが攻撃されて自滅するのでヒールやリザの場合mob_skill_db.txtのval1(値1)に1を入れるとアンデッドモンスターも攻撃を受けず回復するようになります。本鯖ではモンスターのヒールはアンデッドに関係なく回復するようです。ただ個人的にはゾンビがヒールして自滅する方が正しいと思うのでmob_skill_db.txtで設定できるようにしております。 - (doc/) - db_ref.txt 修正。 - (db/) - cast_db.txt 修正。 - skill_db.txt 修正。 - (map/) - skill.h 修正。 - skill.c - skill_status_change_start()、skill_status_change_end() 修正。 - skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 - skill_attack()、skill_status_change_timer()、skill_castcancel() 修正。 - skill_unit_onplace()、skill_use_id()、skill_castend_id() 修正。 - skill_readdb() 修正。 - skill_get_blewcount() 追加。 - mob.c - mobskill_use_id()、mob_spawn()、mob_attack() 修正。 - battle.c - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_calc_misc_attack()、battle_weapon_attack() 修正。 - clif.c - clif_damage() 修正。 - pet.c - pet_attack() 修正。 - pc.c - pc_attack_timer()、pc_authok() 修正。 - pc_spirit_heal()、pc_natural_heal_sub() 修正。 - --------------------- -//0867 by 死神 - -・スキル関係の細かい修正。 -・battle_athena.confにplayer_undead_nofreeze追加。 -・新しいアイテムパケットに対応。(PACKETVERを5以上にする必要があります。) -・mob_avail.txtでプレイヤーの姿を指定した時ペコペコや鷹を付けることができるように変更。頭下段次にオプションを設定できます。(ただハイディングとクローキングは指定できないようになっています。) - makefile 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - client_packet.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_config_read() 修正。 - clif.c - clif_mob_class_change()、clif_spawnmob()、clif_spawnpet() 修正。 - clif_damage()、clif_skill_damage()、clif_skill_damage2() 修正。 - clif_itemlist()、clif_cart_itemlist()、clif_storageitemlist() 修正。 - clif_mob0078()、clif_mob007b()、clif_pet0078()、clif_pet007b() 修正。 - pc.c - pc_attack_timer() 修正。 - skill.c - skill_castend_nodamage_id()、skill_additional_effect() 修正。 - skill_status_change_start() 修正。 - mob.h 修正。 - mob.c - mobskill_castend_id()、mob_getfriendstatus_sub() 修正。 - mob_readdb_mobavail() 修正。 - --------------------- -//0866 by ぴざまん - -・MOTDのメッセージを全て編集できるように変更。 -・クローンスキル実装。 - ドル服のヒールアタックによるヒール習得は未テストです。 -・ギルド宝箱仮実装。 - ヴァルキリー1のみです。 - 商業投資による宝箱個数の算出式は適当です(初期個数4個としか知らないので)。 - Onclockイベントで動作させています。任意の時刻に変更してください。 -・AthenaDB計画のmob_db.txtとmapflag.txtを入れておきました。 - - (map/) - pc.c - pc_makesavestatus()、pc_calc_skilltree() 修正。 - pc_allskillup()、pc_calc_skillpoint() 修正。 - pc_resetskill()、pc_authok() 修正。 - skill.c - skill_attack() 修正。 - map.h 修正。 - (conf/) - gvg/TEST_prtg_cas01_AbraiJ.txt 修正。 - motd.txt 修正。 - mapflag.txt 修正。 - (db/) - mob_db.txt 修正。 - --------------------- -//0865 by ぴざまん - -・自分が占領しているアジトのエンペリウムを攻撃できたバグ修正。 -・アブライが占領ギルドメンバー全員をマスターとみなしていたバグ修正。 - この修正に伴ってスクリプトリファレンスに改変があります。 - ・getcharid(0)で、自分のcharIDを返すように。 - ・getguildmasterid()追加。 -  =ギルドID -  該当ギルドのマスターのcharIDを返します。 - - (map/) - guild.c - guild_mapname2gc() 追加。 - battle.c - battle_calc_damage() 修正。 - script.c - buildin_getcharid() 修正。 - buildin_getguildmasterid() 追加。 - ローカルプロトタイプ宣言の一部を修正、追加。 - guild.h 修正。 - --------------------- -//0864 by 胡蝶蘭 - -・inter鯖のwisの処理変更 - ・自前リンクリストからdb.hで提供されているデータベースを使用するように - ・WISのIDを16ビットから32ビットに増やした(パケットも修正) - ・メッセージのサイズチェックを入れた - ・パケットスキップが二回行われる可能性があるバグ修正 - - (char/) - inter.c - wis関係大幅変更 - (map/) - intif.c - wis関係の修正。主にパケット処理。 - (doc/) - inter_server_packet.txt - パケット3002,3801を変更 - --------------------- -//0863 by 死神 - -・細かい修正。 -・battle_athena.confにplayer_attack_direction_change追加。 -・mob_skill_db.txtを修正する時挑発の修正を間違って修正。 -・モンスターのスキル自爆問題修正。(未テスト) - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (db/) - mob_skill_db.txt 修正。 - (map/) - mob.c - mobskill_use_id()、mobskill_use()、mobskill_castend_id() 修正。 - pc.c - pc_skill()、pc_attack_timer() 修正。 - skill.c - skill_castend_damage_id() 修正。 - battle.h 修正。 - battle.c - battle_weapon_attack()、battle_config_read() 修正。 - --------------------- -//0862 by 胡蝶蘭 - -・mobスキル使用条件追加 - ・friendhpltmaxrate : 味方のHPが指定%未満のとき(テスト済み) - ・friendstatuson : 味方が指定したステータス異常になっているとき - ・friendstatusoff : 味方が指定したステータス異常になっていないとき - ・mystatuson : 自分が指定したステータス異常になっているとき - ・mystatusoff : 自分が指定したステータス異常になっていないとき - ステータス系は未テストです。mob_skill_db.txtに指定方法を書いています。 - たとえば自分が毒かどうかは mystatus,poison で、 - ハイディング中かどうかは mystatuson,hiding で指定します。 -・mobスキル使用ターゲット追加 - ・friend : 味方 - ・around : 自分の周囲(現在の仕様では周囲81マス)のどれか - ・around1〜around4 : 自分の周囲9,25,49,81マスのどれか(範囲を明示) - friendは条件がfriend系(friendhpltmaxrateなど)のときに使用可能。 - around系は場所指定スキルで使用可能。 - - (map/) - mob.c / mob.h - mob_getfriend*()追加、mobskill_use()修正など - (db/) - mob_skill_db.txt - 最初の説明のみ修正。データは修正していません。 - --------------------- -//0861 by いど - -・サーバーsnapshot - --------------------- -//0860 by J - -・死神さんの手下召喚の修正に合わせてMOBスキルDBを修正 -(/conf) - mob_skill_db.txt 修正。 - --------------------- -//0859 by 獅子o^.^o -Alchemist warp 修正(Aegis参考) -(/conf) - (/warp) - npc_warp_job.txt 修正 - --------------------- -//0858 by 死神 - -・細かい修正。 -・MAX_MOBSKILLを24から32に変更。(ただ少しですがまたメモリー使用量が増えます。) -・プロボケーションで取る行動をmob_skill_db.txtのval1(値1)で設定できるように修正。 -・手下召喚で複数の種類を設定出切るように修正。(最大5つまで) -・メタモルフォーシスとトランスフォーメーションも複数の種類を設定できるように修正。 - (db/) - skill_db.txt 修正。 - mob_skill_db.txt 修正。 - (map/) - skill.c - skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 - map.h 修正。 - mob.h 修正。 - mob.c - mob_readskilldb()、mob_summonslave()、mob_class_change() 修正。 - --------------------- -//0857 by J - -・OWN Ragnarokにのっていた情報を元にMOBスキルを修正。 -・chase(突撃)が実装されているとのことなので突撃(?)をchaseにかえて -コメントアウトをはずしました。 -・死神さんが実装したMOBスキルを使用するモンスターを狩場情報に載ってる情報を元に実装。 - (/conf) - mob_skill_db.txt - --------------------- -//0856 by 死神 - -・バグ修正と細かい修正。 -・battle_athena.confにmonster_attack_direction_change追加。 -・battle_athena.confのbasic_skill_checkとカプラの倉庫利用を合わせていましたがいつのまにかなくなったので取り戻し。(basic_skill_checkがnoなら基本機能スキルレベルに関係なく倉庫を使えます。) -・ピアーシングアタックの射程を3セルに変更して近接攻撃として認識するように修正。 -・A鯖でのテストでアンデッドの認識を属性によってすることがわかったのでundead_detect_typeのデフォルトを0に変更。 -・メタモルフォーシスやトランスフォーメーションで見た目がプレイヤーなら0x1b0パケットを送らないように変更。 -・ニューマバグは修正してみましたがスキルユニットの時間による作動仕様はまだ分析が完全じゃないので他の不具合が出てくるかも... - (conf/) - battle_athena.conf 修正。 - mapflag.txt 修正。(普通のダンジョンがシーズモードであるはずがないので) - (conf/npc/) - npc_town_kafra.txt 修正。 - (db/) - skill_db.txt 修正。 - (doc/) - conf_ref.txt 修正。 - script_ref.txt 修正。 - (map/) - pc.c - pc_modifybuyvalue()、pc_modifysellvalue() 修正。 - battle.h - battle.c - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_weapon_attack() 修正。 - battle_config_read() 修正。 - skill.c - skill_unitsetting()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id() 修正。 - mob.c - mob_attack() 修正。 - pet.c - pet_attack() 修正。 - clif.c - mob_class_change() 修正。 - --------------------- -//0855 by asong - -・メタモルフォーシスでPCとして表示するMOBを指定した場合倉落ちするバグを「暫定」修正。 -・0x1b0パケでは無く0x7bを使うことで何とかしています。 -・使い分けをしたいところですが当方Cの知識が無く条件分岐が上手くいきませんでした。 -・もしかしたらプパの孵化(羽化?)がおかしくなってるかもしれません。 - (/map) - clif.c - mob_class_change() 修正。 - --------------------- -//0854 by Kalen - -・不足していた一次職転職クエスト追加及び、それに伴うWarp、Mob修正) - (/conf) - (/npc) - npc_job_archer.txt - npc_job_swordman.txt - npc_job_thief.txt(台詞修正、点数処理変更) - npc_job_magician.txt - (/warp) - npc_warp25.txt(一部移動) - npc_warp.txt(一部移動) - npc_warp_job.txt(新設) - (/mob) - npc_mob_job.txt -・雛祭りQuest追加及び、それに伴うNPC修正。アマツ行き船で料金を取らなかった問題修正 - (/conf) - npc_event_hinamatsuri.txt - npc_town_amatsu.txt - npc_town_guide.txt - npc_town_kafra.txt - 雛祭りを有効にするとアマツカプラをWに、 - アルベルタ南カプラを削除にするようにしています。 - --------------------- -//0853 by 死神 - -・バグ修正とNPCスキル関係の修正。 -・ダークブレスをMISC攻撃に変更。(ただ命中判定有り) -・クリティカルスラッシュ、コンボアタック、ガイデッドアタック、スプラッシュアタック、ブラインドアタック、カースアタック、ペトリファイアタック、ポイズンアタック、サイレンスアタック、スリープアタック、スタンアタック、ランダムアタック、ダークネスアタック、ファイアアタック、グラウンドアタック、ホーリーアタック、ポイズンアタック、テレキネスアタック、ウォーターアタック、ウィンドアタック、マジカルアタック、ブラッドドレイン、メンタルブレイカーはモンスターの武器射程に変更。そしてこれらのスキルをモンスターの攻撃射程によって遠距離攻撃と近距離攻撃になるように変更。 -・ピアーシングアタックは武器射程+2に変更。 -・エナジードレイン、ハルシネーションは魔法射程に変更。 -・ダークブレッシングの射程を4に変更とかかる確率を50+スキルレベル*5%に変更。(一応これも魔法なので少し射程を広くしました。基本魔法射程である8に変えるべきなのかどうかは微妙...) -・ガイデッドアタックはセイフティウォールとニューマを無効にする報告がありましたのでセイフティウォールとニューマが効かないように修正。 -・ディフェンダーはエフェクトだけ出るように修正。(スキルの仕様等をわかる方は情報をお願いします。) -・トランスフォーメーション実装。(メタモーフォシスと同じ物だそうです。ただこれは全然関係ない別のモンスターになる物らしいです。ニフルヘイムに使うやつがいるみたいです。) -・Athena雑談スレッド 其の弐の80をscript_ref.txtとして追加とちょっと修正。 - (db/) - skill_db.txt 修正。 - (doc/) - script_ref.txt 追加。 - (map/) - battle.c - battle_calc_damage()、battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 - skill.c - castend_damage_id()、castend_nodamage_id()、skill_use_pos() 修正。 - clif.c - clif_spawnnpc()、clif_parse_Restart()、clif_parse_QuitGame() 修正。 - mob.c - mobskill_castend_id()、mobskill_castend_pos() 修正。 - mobskill_use_id()、mobskill_use_pos() 修正。 - --------------------- -//0852 by ぴざまん - -・亀島4F・蟻D2F・アマツD1Fをテレポ不可、シーズモードに変更。 -・nosaveの引数にSavePointが指定できてなかったので追加。 -・PVPのmapflagをmapflag.txtに統合。 - (map/) - npc.c - npc_parse_mapflag() 修正。 - (conf/) - mapflag.txt 修正。 - npc/npc_pvp.txt 修正。 - --------------------- -//0851 by 胡蝶蘭 - -・ログイン時の暗号化keyが常に同じという大きな問題があったので修正 -・ログイン管理者ログイン(ladminで使用)でパスワードの暗号化に対応 - (login/) - login.c - login_session_data作成、暗号化keyをクライアントごとに作成など - (tool/) - ladmin - ver.1.05に。デフォルトでパスワードを暗号化するように。 - 暗号化のためにDigest::MD5モジュールを使用します。 - Digest::MD5が無い場合はパスワードの暗号化を行いません。 - (doc/) - admin_packet.txt - ログインサーバー管理ログイン部分変更 - --------------------- -//0850 by 死神 - -・NPCスキル実装。(ハルシネーション、キーピング、リック、メンタルブレイカー、プロボケーション、バリヤー、ダークブレッシング、ダークブレス) -・スキル自爆の制限はmob_skill_db.txtでやればいいものなので取り戻し。 -・battle_athena.confにpet_hungry_friendly_decrease追加。 -・ペットの腹が完全に減ると支援攻撃を中止するように変更。 -・属性変更スキルが作動しなかった問題修正。 -・メンタルブレイカーは10+スキルレベル*5%のSPを減らす。(攻撃は通常武器スキル攻撃) -・リックは必中でSP-100、スタン確率スキルレベル*5%。(ダメージは無し、bNoWeaponDamageで無効) -・プロボケーションはモーションが準備されてないモンスターは入れてもなんの効果もなし。 -・ダークブレッシングはかかるとHPが1になる。耐性は魔法防御で適用。 -・ダークブレスは500+(スキルレベル-1)*1000+rand(0,1000)のダメージ。回避できるが防御無視で近距離物理攻撃だがセイフティウォールは無視して闇属性攻撃。(本鯖の計算式にあっている可能性はないかも。ただダメージ量と命中補正以外は本鯖合わせ) -・NPCスキルの維持時間は適度に設定。 -・モンスターの属性攻撃とガイデッドアタックがセイフティウォールを無視するとの報告を受けたのですが修正するかどうかはちょっと微妙。(スプラッシュアタックもセイフティウォール無視かも) - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (db/) - cast_db.txt 修正。 - skill_db.txt 修正。 - (map/) - mob.c - mob_damage() 修正。 - clif.h 修正。 - clif.c - clif_skill_estimation()、clif_damage()、clif_skill_damage() 修正。 - clif_skill_damage2()、clif_pet_performance() 修正。 - pet.c - pet_performance()、pet_target_check()、pet_hungry() 修正。 - skill.h 修正。 - skill.c - skill_additional_effect()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_status_change_start() 修正。 - battle.h 修正。 - battle.c - battle_get_def()、battle_get_mdef()、battle_calc_damage() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_config_read() 修正。 - --------------------- -//0849 by lapis - -・街中のテストギルドフラグの表示がおかしかったのを修正。 -・ギルドメンバーは旗からアジトに飛べるように修正。 - (conf/gvg) - TEST_prtg_cas01_AbraiJ.txt 修正。 - --------------------- -//0848 by huge - -・スキル自爆を、HPが全回復している時は使えないよう修正。 -・スフィアマイン・バイオプラント・・・ターゲット変更できない...。 -・mobにターゲット無視IDを設定できるようにしました。(Gv用mobに使える?) - (map/) - map.h 修正。 - mob_dataに int exclusion_src,exclusion_party,exclusion_guild 追加。 - mob.h 修正。 - mob.c - mob_exclusion_add() 追加。 - mob_exclusion_check() 追加。 - mob_timer_delete() 追加。 - mob_attack() 修正。 - mob_target() 修正。 - mob_ai_sub_hard_activesearch() 修正。 - mob_ai_sub_hard_mastersearch() 修正。 - mob_ai_sub_hard() 修正。 - skill.c - skill_castend_damage_id() 修正。 - skill_castend_pos2() 修正。 - --------------------- -//0847 by 死神 - -・露店バグ修正。 - (map/) - clif.c - clif_vendinglist()、clif_openvending() 修正。 - vending.c - vending_openvending() 修正。 - skill.c - skill_castend_nodamage_id() 修正。 - --------------------- -//0846 by 死神 - -・バグ修正と細かい修正。 -・battle_athena.confのenemy_strがペットにも適用するように変更。 -・bHPDrainRateとbSPDrainRateでxがマイナスでも作動するように変更。 -・PCやNPCの姿をしたモンスターも死ぬと5秒後マップから消えるように変更。 - (map/) - battle.c - battle_calc_pet_weapon_attack()、battle_weapon_attack() 修正。 - skill.c - skill_attack()、skill_castend_damage_id() 修正。 - pc.c - pc_allskillup() 修正。 - clif.h 修正。 - clif.c - clif_openvending()、do_init_clif() 修正。 - clif_clearchar_delay()、clif_clearchar_delay_sub() 追加。 - mob.c - mob_damage() 修正。 - --------------------- -//0845 by ぽぽぽ - -・mob_avail.txtでPCグラフィック(0〜23)を指定したペットが出現したときクライアントエラーがでるのを暫定修正。 -・mob_avail.txtでペットにもPCキャラの性別・髪型&色・武器・盾・頭装備を指定できるようにしました。 -・MOBのATK計算にSTRを適用するかどうか設定可能にした。 - (map/) - clif.c - clif_pet0078()、clif_pet007b()、clif_spawnpet()修正。 - battle.h修正。 - battle.c - battle_config_read()、battle_calc_mob_weapon_attack()修正。 - --------------------- -//0844 by ぽぽぽ - -・mob_avail.txtでPCグラフィック(0〜23)を指定したMOBが出現したときクライアントエラーがでるのを暫定修正。 -・mob_avail.txtでPCキャラの性別・髪型&色・武器・盾・頭装備を指定できるようにしました。 - グラフィックすり替え先IDが0〜23の時だけ有効で、指定方法は - MOB-ID,グラフィックすり替え先ID,性別(0=female,1=male),髪型,髪色,武器,盾,上段頭装備,中段頭装備,下段頭装備 - となります。装備はitem_dbのView欄参照のこと。 - (map/) - clif.c - clif_mob_0078()、clif_mob007b()、clif_spawnmob()修正。 - mob.h修正。 - mob.c - mob_get_sex()、mob_get_hair()、mob_get_hair_color()、ob_get_weapon()、 - mob_get_shield()、mob_get_head_top()、mob_get_head_mid()、mob_get_head_buttom()追加。 - mob_readdb()、mob_readdb_mobavail()修正。 - --------------------- -//0843 by 死神 - -・リフレクトシールド実装。 -・アイテムスクリプトにbShortWeaponDamageReturnと -bLongWeaponDamageReturn 追加。 -・その他スキル関係や他の所修正。 - (db/) - item_db.txt 修正。 - skill_db.txt 修正。 - cast_db.txt 修正。 - const.txt 修正。 - (doc/) - item_bonus.txt 修正。 - (map/) - map.h 修正。 - battle.c - battle_get_def()、battle_get_def2()、battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_weapon_attack()、battle_calc_magic_attack() 修正。 - pc.c - pc_calcstatus()、pc_bonus()、pc_bonus2()、pc_equipitem() 修正。 - pc_unequipitem()、pc_checkallowskill() 修正。 - skill.c - skill_attack()、skill_unit_onplace()、skill_status_change_start() 修正。 - skill_status_change_end()、skill_status_change_timer() 修正。 - skill_castend_nodamage_id() 修正。 - clif.c - clif_additem()、clif_equiplist()、clif_storageequiplist() 修正。 - clif_tradeadditem()、clif_storageitemadded()、clif_cart_additem() 修正。 - clif_cart_equiplist()、clif_vendinglist()、clif_openvending() 修正。 - clif_damage()、clif_skill_damage()、clif_parse_LoadEndAck() 修正。 - --------------------- -//0842 by 死神 - -・スキル関係の修正と細かい修正。 -・aegis鯖で色々と検証した物を適用。 -・メテオの範囲を7*7、LoV13*13、SG11*11、FN5*5に修正。 -・シグナム実装。(ただPVPでプレイヤーにかかるかどうかがわからなかったので -かかる方向で実装。)これで1次職業のスキルはクリアかも... -・装備スクリプトにbHPDrainRateとbSPDrainRate追加。 -・その他細かい修正少し。 - (doc/) - item_bonus.txt 修正。 - (db/) - cast_db.txt 修正。 - item_db.txt 修正。 - const.txt 修正。 - (map/) - map.h 修正。 - skill.c - skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 - skill_unitsetting()、skill_castend_pos2()、skill_castend_id() 修正。 - skill_status_change_start()、skill_status_change_timer() 修正。 - skill_status_change_end()、skill_unit_onplace() 修正。 - skill_frostjoke_scream()、skill_attack() 修正。 - skill_attack_area() 追加。 - battle.c - battle_calc_magic_attack()、battle_get_element()、battle_get_def() 修正。 - battle_get_def2()、battle_get_mdef()、battle_damage() 修正。 - battle_calc_damage()、battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_weapon_attack() 修正。 - mob.c - mobskill_castend_id() 修正。 - pc.c - pc_calcstatus()、pc_bonus2()、pc_attack_timer() 修正。 - clif.c - clif_spawnmob()、clif_spawnpet()、clif_spawnnpc() 修正。 - clif_parse_ActionRequest() 修正。 - --------------------- -//0841 by Kalen - -・水溶液が作れなかったので追加 - conf/npc/npc_job_magician.txt - --------------------- -//0840 by Kalen - -・鬼イベント追加 - conf/npc/npc_event_oni.txt - -・map_athena.conf修正(バレンタインコメントアウト。鬼追加) - conf/map_athena.conf - --------------------- -//0839 by shuto - -・コンロンNPC追加(カン ソンソンが抜けてた) - --------------------- -//0838 by 死神 - -・スキルサイトラッシャー実装。 -・モンスターのクローキングとマキシマイズパワーは持続時間をレベル*5秒に変更。 -・その他細かいバグ修正。 - (db/) - skill_db.txt 修正。 - (map/) - skill.c - skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 - skill_castend_pos2()、skill_unitsetting()、skill_get_unit_id() 修正。 - skill_status_change_start() 修正。 - battle.c - battle_calc_magic_attack() 修正。 - --------------------- -//0837 by 死神 - -・スキル関係の細かい修正。 -・フロストノヴァをユニット設置式に変更。 -・ロードオブヴァーミリオンの範囲を11*11に修正と40ヒットするように変更。(ラグナゲートの情報。 -13*13説もありますが...) -・ユピテルサンダーのノックバックを2~7に変更。 -・ストームガストの攻撃回数をレベル依存から10回に固定。 -・サンクチュアリのノックバックを3から2に変更。(aegis鯖でノックバックがあることは確認しましたがどれぐらいなのかが不明だったので少し減らしてみました。) -・モンスターの詠唱時間が早くなっていた問題修正。(dex補正が入ってしまったせいです。) -・その他オートスペル当たりの細かい修正。 - (db/) - skill_db.txt 修正。 - (map/) - skill.c - skill_castfix()、skill_delayfix()、skill_timerskill() 修正。 - skill_castend_pos2()、skill_unitsetting()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_get_unit_id()、skill_attack() 修正。 - battle.c - battle_calc_magic_attack()、battle_weapon_attack() 修正。 - --------------------- -//0836 by 釈尊 - -・モンスターの取り巻き召還の間隔を中ボス以外完全修正。 - (db/) - mob_skill_db.txt 修正。 - --------------------- -//0835 by (凸) - -・白刃取りでポーズをとるようにした。 -(ポーズだけなので、実際に攻撃を受け止めたりはできません) -clif_bladestop()を呼ぶことで白刃取り状態のON、OFFのパケットが送れます。 - - (map/) - clif.h 修正。 - clif,c - clif_bladestop() 追加 - skill.c - skill_castend_nodamage_id() 修正。 - --------------------- -//0834 by 釈尊 - -・モンスター取り巻き召還の間隔が短すぎるとの事で応急処置。(今回は黄金蟲のみ) - (db/) - mob_skill_db.txt 修正。 - --------------------- -//0833 by (凸) - -・memo禁止地域で/memo時の修正。 -・ついでにitem_dbを更新。 - - (doc/) - client_packet.txt - R 0189 更新。 - (db/) - item_db.txt 最新版へ更新。 - (map/) - pc.c - pc_memo() 修正。 - --------------------- -//0832 by 死神 - -・コード最適化と細かい修正。 -・オートスペルを地面魔法に対応。 -・サンダーストームとヘヴンズドライブをユニット設置式に変更。 -・ディフェンダーの攻撃速度低下を本鯖にあわせ。 -・その他細かい修正。 - (doc/) - item_bonus.txt 修正。 - (db/) - skill_require_db.txt 修正。 - cast_db.txt 修正。 - (map/) - map.h 修正。 - path.c - calc_index()、path_search() 修正。 - skill.c - skill_unitsetting()、skill_castend_pos2()、skill_get_unit_id() 修正。 - skill_status_change_timer_sub()、skill_castend_nodamage_id() 修正。 - skill_additional_effect()、skill_frostjoke_scream() 修正。 - pc.c - pc_calcstatus()、pc_skill()、pc_allskillup() 修正。 - battle.c - battle_get_speed()、battle_get_adelay()、battle_get_amotion() 修正。 - battle_weapon_attack() 修正。 - --------------------- -//0831 by 死神 - -・少し修正。 -・オートスペル修正。装備による物とスキルによる物を別々に適用、発動確率修正。 -・装備によるオートスペルは指定したレベルより2つ下まで判定をします。つまりレベル5を設定するとレベル3から5まで発動します。 -・battle_athana.confのplayer_cloak_check_wall、monster_cloak_check_wallをplayer_cloak_check_type、monster_cloak_check_typeに変更。 -・アイテムルート権限時間を本鯖に合わせて修正。 -・その他スキル関係の細かい修正。 - (doc/) - conf_ref.txt 修正。 - db_ref.txt 修正。 - item_bonus.txt 修正。 - (conf/) - battle_athana.conf 修正。 - (db/) - item_db.txt 修正。 - (map/) - map.h - map.c - block_free_max、BL_LIST_MAX 修正。 - skill.h 修正。 - skill.c - skill_additional_effect()、skill_attack()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_unit_onplace() 修正。 - skill_status_change_end()、skill_status_change_start() 修正。 - skill_initunitgroup()、skill_unitsetting()、skill_castfix() 修正。 - skill_delayfix()、skill_autospell()、skill_use_id()、skill_use_pos() 修正。 - skill_check_cloaking()、skill_unit_timer_sub()、skill_check_condition() 修正。 - battle.h 修正。 - battle.c - battle_damage()、battle_get_agi()、battle_get_speed() 修正。 - battle_get_adelay()、battle_get_amotion()、battle_get_flee() 修正。 - battle_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_config_read() 修正。 - mob.c - mob_attack()、mob_damage()、mobskill_use_id() 修正。 - mobskill_use_pos()、mob_spawn()、mob_class_change() 修正。 - mob_can_move() 修正。 - pc.c - pc_attack_timer()、pc_checkweighticon()、pc_calcstatus() 修正。 - pc_damage()、pc_equipitem()、pc_unequipitem() 修正。 - pc_bonus2()、pc_bonus3()、pc_memo()、pc_authok() 修正。 - pc_isUseitem() 修正。 - clif.h 修正。 - clif.c - clif_changeoption()、clif_parse_LoadEndAck()、clif_autospell() 修正。 - clif_skill_memo() 修正。 - clif_skill_teleportmessage() 追加。 - script.c - buildin_sc_start() 修正。 - atcommnad.c - atcommand() 修正。 - --------------------- -//0830 by huge - -・オートスペルで、自分の習得してるレベルよりも高いレベルで - 魔法が発動していたであろう問題を修正。 -・オートスペルでも、ちゃんとSPが減るように修正(ど忘れ) - (map/) - battle.c - battle_weapon_attack() 修正。 - skill.c - skill_autospell() 修正。 - --------------------- -//0829 by Kalen - -・mob_db修正 - 自鯖用のと間違ってUPしてしまったようです。 - 本来のものに直しました。 - --------------------- -//0828 by 聖 - -・サーバのSnapshot -・MVPボス系からバカンスチケットが大量に出ていた問題を修正。 - (common/) - version.h 修正。 - (db/) - mob_db.txt 修正。 - --------------------- -//0827 by J - -・固定MOBのはずのメガリスと人面桃樹が歩いていたのを修正。 -・闘技場のMOBにスキルを実装。 -・パサナとファラオがスキルが設定されていなかったのを実装。 - (db/) - mob_db.txt 修正。 - mob_skill_db.txt 修正。 - --------------------- -//0826 by ぴざまん - -・一部の演奏スキルを使うと鯖が落ちるバグ修正。 -・クローキング中にスキルを使用でき、 - 使用するとクローキングが解除されるように修正。 -・Kalenさんのmob_db.txtをまとめました。 - (map/) - skill.c - skill_unit_onplace()、skill_unit_onout() 修正。 - skill_status_change_start()、skill_status_change_timer() 修正。 - skill_use_id()、skill_use_pos() 修正。 - (db/) - mob_db.txt 修正。 - --------------------- -//0825 by 死神 - -・細かい修正。(細かいことのわりには修正した所が多いけど...) -・ワープポータルの中に止まった時以外はワープしないように修正。 -・battle_athena.confにplayer_skill_nofootset、monster_skill_nofootset 追加。 -・NPCをクリックした後露店をクリックして露店を閉じると動けなくなるバグ修正。 -ただ露店を閉じる時何のパケットも転送してこないので露店をクリックするとNPCの処理から抜けるようにしました。(本鯖ではNPCの処理が抜けないらしいですがそれ以外方法がなかったのっで。) -・killmonsterのAllで召喚されたモンスターだけ消すように変更。 -・ソース最適化やスキル関係の細かい修正多数。 - (doc/) - conf_ref.txt 修正。 - db_ref.txt 修正。 - (conf/) - battle_athana.conf 修正。 - atcommnad_athena.conf 修正。 - (db/) - item_db.txt 修正。 - skill_db.txt 修正。 - (login/) - parse_fromchar() 修正。 - (map/) - map.h 修正。 - clif.c - clif_closevendingboard()、clif_parse_VendingListReq() 修正。 - clif_mob0078()、clif_mob007b()、clif_pet0078()、clif_pet007b() 修正。 - skill.h 修正。 - skill.c - skill_check_condition()、skill_castend_pos2() 修正。 - skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 - skill_castend_id()、skill_status_change_start()、skill_castfix() 修正。 - skill_delayfix()、skill_check_unit_range_sub() 修正。 - skill_check_unit_range()、skill_castend_pos()、skill_stop_dancing() 修正。 - skill_unit_onplace()、skill_readdb()、skill_timerskill()、skill_blown() 修正。 - skill_check_unit_range2_sub()、skill_check_unit_range2() 追加。 - skill_get_maxcount() 追加。 - mob.c - mobskill_castend_id()、mobskill_castend_pos()、mob_deleteslave() 修正。 - mob_stop_walking()、mob_walk()、mob_damage() 修正。 - pc.c - pc_calcstatus()、pc_checkskill()、pc_stop_walking() 修正。 - pc_walk()、pc_damage() 修正。 - npc.c - npc_touch_areanpc() 修正。 - pet.c - pet_stop_walking() 修正。 - script.c - buildin_killmonster()、buildin_killmonster_sub() 修正。 - battle.h - battle.c - battle_calc_magic_attack()、battle_get_flee()、battle_get_flee2() 修正。 - battle_get_adelay()、battle_get_amotion()、battle_get_max_hp() 修正。 - battle_get_hit()、battle_get_critical()、battle_get_atk2() 修正。 - battle_damage()、battle_config_read() 修正。 - atcommand.h 修正。 - atcommand.c 修正。 - --------------------- -//0824 by ぴざまん - -・セイフティウォール・ニューマの足元置きができなかった問題修正。 -・エンペリウムにヒール等の支援スキルが効いていた問題修正。 -・闘技場でモンスターリセットができなかった問題修正。 - killmonsterは"killmonster ,"と記述して - 該当eventnameを持つモンスターを削除しますが - eventnameにAllと入れると該当MAPの全モンスターを消去するようにしました。 - - (map/) - skill.c - skill_check_unit_range_sub()、skill_castend_nodamage_id() 修正。 - script.c - buildin_killmonster()、buildin_killmonster_sub() 修正。 - (conf/npc/) - npc_event_tougijou.txt 修正。 - --------------------- -//0823 by Kalen - -・闘技場データ揃ったので、完成 - conf/npc/npc_event_tougijou.txt - ただし、こちらでチェックしたところkillmonsterがうまくいかず、 - 失敗、時間切れした場合モンスターリセットが出来ません。 - イベントが設定されているモンスターは処理できないのかと思いましたが - AgitのほうのエンペのKillmonsterはちゃんと動いてますし… - 原因分かる方お願いします<(_ _)> - -・gon_testのmapflag追加 - conf/mapflag.txt - -・mob_db更新 - 1419〜1491が既存のMobの定義ばかりなので追加しませんでしたが、 - 調べた所闘技場のMobのデータであることが分かりました(Dropを弄ったもの) - 本鯖では闇りんごが報告されています。が、こちらはDrop空白で処理しました。 - クライアント上では同名でしたが、区別のため接頭にG_をつけて区別してます。 - mob_skill_dbありがとうございました↓ - --------------------- -//0822 by ぴざまん - -・演奏スキルでの補正をダンサーにも適用。 -・サンクチュアリバグ修正。 -・KalenさんのMOBスキルデータベースをまとめときました。 - - (map/) - skill.c - skill_status_change_start()、skill_unit_onplace() 修正。 - battle.c - battle_get_critical()、battle_get_hit() 修正。 - pc.c - pc_calcstatus() 修正。 - --------------------- -//0821 by huge - -・オートスペル仮実装。 -・timerで判定しようかとも思いましたが、装備の無限オートスペルの為にsc_[].val1で見てマス。 -・bonus2 bAutoSpell追加。一応どんなスキルでも指定できるようにしてますが(番号はskill_tree参照) - skill_castend_damage_idのタイプ以外のスキルを指定しないでください。 - 発動確率は、Lv1:50%、Lv2:35%、Lv3:15%、それ以上は 5%固定です。 - あと、スキルレベルも指定できますが、限界を超えた数字を入れると墜ちるかもしれません。 -■書き方例:(ファイアボルトLv3の時)bonus2 bAutoSpell 19,3; - - (db/) - const.txt 修正。 - (map/) - battle.c - battle_weapon_attack() 修正。 - clif.h - clif.c - packet_len_table 修正。 - clif_autospell() 追加。 - clif_parse_AutoSpell() 追加。 - map.h 修正。 - pc.c - pc_bonus2() 修正。 - pc_equipitem() 修正。 - pc_unequipitem() 修正。 - skill.h - skill.c - skill_castend_nodamage_id() 修正。 - skill_autospell() 追加。 - skill_status_change_end() 修正。 - skill_status_change_start() 修正。 - status_changeの番号テーブル修正。 - --------------------- -//0820 by ぴざまん - -・アドリブのメッセージが入ってなかったので修正 -・バードの演奏スキルで楽器の練習や自ステータスの補正が入ってなかったのを修正。 - struct status_changeのvalが3つ必要だったので(val4は予約されてたっぽいので)val5を追加しました - (map/) - map.h 修正。 - skill.c - skill_status_change_start()、skill_castend_nodamage_id() 修正。 - skill_castfix()、skill_delayfix() 修正。 - battle.c - battle_get_flee()、battle_get_max_hp() 修正。 - battle_get_adelay()、battle_get_amotion() 修正。 - battle_calc_misc_attack() 修正。 - pc.c - pc_calcstatus() 修正。 - --------------------- -//0819 by Kalen - -・コンロン(NPC、Warp)修正 - conf/npc/npc_town_gonryun.txt(案内員補充) - conf/npc/npc_event_tougijou.txt - conf/warp/npc_warp_gonryun.txt(宿2FとD2Fなど) - -・MOB修正 - conf/mob/npc_monster30.txt(一反木綿不足追加) - conf/mob/npc_monster35.txt(コンロンMob追加) - -・DB修正 - db/mob_db.txt(コンロン[全て]+ウンバラ[定義]追加。Aspeed等適当です。まぁ無いよりましということで) - db/mob_skill_db.txt(情報を元にコンロンのMob分追加) - db/item_db.txt(Athena DB Project 2/19 21:10DL分) - --------------------- -//0818 by あゆみ - -・テレポートスキルLv1で、選択ウインドウが出てこないバグを修正。 -・重量が90%以上の場合でも、一部のスキルが使用可能だったバグを修正。 -・@allskillコマンドの修正とか。 - - (conf/) - msg_athena.conf 修正。 - (map/) - atcommand.c - atcommand() 修正。 - pc.c - pc_allskillup() 修正。 - skill.c - skill_castend_nodamage_id() 修正。 - skill_check_condition() 修正。 - --------------------- -//0817 by huge - -・ディボーションの処理修正 - ・糸の出し方はパケを貰ったのでできましたが、アイコンの方はまだ分からないです。 - ・あと、自分の環境で2人以上に同時に掛けれなかったので、複数人にかけた場合 - 多分0の羅列の所に2人目、3人目・・・のIDが入るんじゃないかなぁという予測でやってます。 -・ハイディング中、及びクローキング中にダメージを受けると解けるよう修正。 - - (map/) - battle.c - battle_damage() 修正。 - clif.c - clif_devotion() 修正。 - pc.c - pc_walk() 修正。 - skill.c - skill.h - skill_castend_nodamage_id() 修正。 - skill_devotion() skill_devotion2() 修正。 - skill_devotion3()skill_devotion_end() 修正。 - --------------------- -//0816 by ぴざまん -・ファイアーウォール3枚制限実装。 -・重ね置き禁止をプレイヤー・モンスターにも適用するように修正。 -・寒いジョーク・スクリームのPvP・GvGで、効果が自分にも及ぶバグ修正。 - ついでにPTメンバーには低確率でかかるのも実装。 -・寒いジョーク・スクリーム・スピアブーメランのディレイ修正。 - ミュージカルストライク・矢撃ちの詠唱時間修正。 - (map/) - skill.c - skill_check_condition()、skill_check_unit_range_sub() 修正。 - skill_check_unit_range()、skill_delunitgroup() 修正。 - skill_castend_pos2()、skill_frostjoke_scream() 修正。 - map.h 修正。 - (db/) - cast_db.txt 修正。 - --------------------- -//0815 by 死神 - -・0814のバグ修正と細かい修正。 -・mapflag monster_noteleport、noreturn追加とnoteleportの仕様変更。 -noteleportはプレイヤーのハエとテレポート、ワープスキルの制限をするが蝶は制限しないように変更、monster_noteleportはモンスターのテレポートを制限する物でnoreturnは蝶の使用を制限する物です。ただmapflag.txtは修正していません。(noreturnを設定する必要があります。) -・battle_athena.confのplayer_auto_counter_typeとmonster_auto_counter_typeが説明通りに機能しなかった問題修正。 -・battle_athena.confにplayer_cloak_check_wall とmonster_cloak_check_wall 追加。 -・ボスモンスターの認識をMVP経験とmodeの0x20で行なっていた物をmodeだけにするように変更。(本鯖のイベントモンスターでMVP経験をくれるが状態異常に掛かるやつがあったらしく修正。HPが1億もあって毒じゃないと倒せなかったらしいので...) つまりMVP経験があってもボス扱いではないモンスターを作ることも可能です。 -・状態異常に掛かった状態で接続切断ができないように修正。(ただタイマーチェックではなくopt1とopt2をチェックするだけなので見た目が変わる状態異常だけに適用されます。) -・今さらですが昔のyareCVS(2003年9月バージョン)で適用されていたラグを減らす為の処理を入れてみました。どんな効果があるかは自分でもわかりません。(ただ入れてみただけ...) -・シーズモードとPVPで禁止装備が外されても効果が消えないバグ修正。 -・その他細かい修正。 -・未テストの物もかなりあります。 - (common/) - socket.c - connect_client()、make_listen_port()、make_connection() 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_calc_magic_attack()、battle_config_read() 修正。 - skill.c - skill_unit_onplace()、skill_status_change_timer() 修正。 - skill_castend_nodamage_id()、skill_use_id() 修正。 - skill_check_unit_range_sub()、skill_timerskill() 修正。 - skill_additional_effect()、skill_attack()、skill_status_change_start() 修正。 - skill_check_cloaking() 修正。 - clif.c - clif_item_identify_list()、clif_parse_QuitGame()、clif_GM_kick() 修正。 - pc.c - pc_attack_timer()、pc_isUseitem()、pc_checkitem 修正。 - mob.c - mob_warp()、mob_walk()、mob_attack()、mob_target() 修正。 - mob_ai_sub_hard_activesearch()、mob_ai_sub_hard_mastersearch() 修正。 - mob_ai_sub_lazy()、mob_damage() 修正。 - npc.c - npc_parse_mapflag() 修正。 - map.h 修正。 - --------------------- -//0814 by 死神 - -・バグ修正と細かい修正。 -・battle_athena.confのplayer_auto_counter_typeとmonster_auto_counter_typeの仕様を変更。(本鯖ではスキル反撃はできないみたいなので設定できるように変更。) -・毒と石化によるHP減少を本鯖に合わせて修正と完全石化の前では動けるように変更。(毒は1秒に3+最大HPの1.5%(モンスターは0.5%)、石化は5秒に1%) 未テスト -・MVP経験値は本鯖でいつも入るようになったので修正。 -・スティールの確率を少し下げ。 -・モンスターのハイディング、クローキング、マキシマイズパワーがすぐに解除される問題修正。(モンスターにはSPがないせいです。取り敢えずクローキングはハイディングの時間を適用してマキシマイズパワーはウエポンパーフェクションの時間を適用します。) 未テスト -・サンクチュアリを人数から回数に変更。 -・PVPで自分のトラップに攻撃対象になるように変更。 -・vitペナルティの適用で乗算防御も減るように変更。(未テスト) -・その他細かいバグ修正。 - (conf/) - battle_athena.conf - (doc/) - conf_ref.txt - (db/) - skill_db.txt - (map/) - map.h 修正。 - script.c - buildin_itemskill() 修正。 - mob.c - mob_can_move()、mob_ai_sub_hard()、mob_damage() 修正。 - skill.c - skill_unitsetting()、skill_unit_onplace()、skill_castend_nodamage_id() 修正。 - skill_attack()、skill_status_change_start() 修正。 - skill_status_change_timer()、skill_status_change_timer_sub() 修正。 - skill_addtimerskill()、skill_cleartimerskill() 修正。 - skill_check_unit_range_sub() 修正。 - battle.c - battle_calc_damage()、battle_check_target() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack() 修正。 - pc.c - pc_steal_item() 修正。 - clif.c - clif_parse_WalkToXY()、clif_closevendingboard() 修正。 - --------------------- -//0813 by Kalen -・コンロンNPC追加 - conf/npc/npc_town_gonryun.txt(クエストは不明 - conf/npc/npc_town_kafra.txt - conf/npc/npc_town_guide.txt - (conf/npc/npc_event_tougijou.txt)データ不足 - -・全GvGMAPのMobデータ追加 - conf/mob/npc_monster_gvg.txt - -・TESTmobからテストギルドフラグ移動 - conf/gvg/TEST_prtg_cas01_AbraiJ.txt - --------------------- -//0812 by huge - -・ディボーションの仮実装 - ・パケットが全然分かりませんでしたので、 - 青い糸も出ないし、アイコンすら表示できません。 - ・ダメ移動だけで、ノックバック・オートガードは適応されません。 - - (map/) - clif.c - clif.h - clif_devotion() 追加。 - skill.c - skill_castend_nodamage_id() 修正。 - skill_devotion() skill_devotion2() 追加。 - skill_devotion3() skill_devotion_end() 追加。 - skill_status_change_end() 修正。 - skill_status_change_start() 修正。 - skill_brandishspear_first() 修正。 - skill_brandishspear_dir() 修正。 - pc.c - pc_authok() 修正。 - pc_walk() 修正。 - pc_damage() 修正。 - battle.c - battle_damage() 修正。 - map.h - map_session_data{} - struct square dev 追加。 - skill.h のbrandishをsquareに改名し、 - (common/) mmo.h に移動 - --------------------- -//0811 by ぴざまん - -・攻城中は蝶が使えるように修正 -・寒いジョーク・スクリーム実装(PTメンバーに低確率で云々は未実装です) -・GVGスクリプトを修正(試行錯誤しすぎてどこをどうしたか覚えてません…) - GVGスクリプトに関してですが、既知のバグがあります - それは、占領ギルドマスター以外のPCが、占領ギルドマスターより先にNPCに話し掛けると - マップサーバが落ちるというものです。 - これは、getguildmaster・getguildnameを使用しているスクリプトすべてに起こり得ることであり - 先に占領ギルドマスター以外で話し掛けると、guild_searchが何故か(該当IDのギルドがあるにも関わらず) - NULLを返す事に起因します。 - 正直スクリプト関係はよくわかっていないので、これは私の技術では修正のしようがありません。 - 暫定的な対処としてNULLを返してMAP鯖が落ちるくらいなら文字列「null」を返すようにしました。 - - (map/) - skill.c - skill_frostjoke_scream() 追加。 - skill_additional_effect()、skill_timerskill() 修正。 - skill_castend_nodamage_id() 修正。 - pc.c - pc_isUseitem() 修正。 - script.c - buildin_getpartyname()、buildin_getguildname() 修正。 - buildin_getguildmaster() 修正。 - (db/) - cast_db.txt 修正。 - (conf/gvg/) - ev_*.txt以外のtxt全てを修正。 - --------------------- -//0810 by 聖 - -・MVPの処理を変更。(確率で10000があっても、他のアイテムも出るようにしました) -・MVPで装備を入手した場合、鑑定済みで入手していた問題を修正。 -・スキル詠唱中にイグ葉や拡大鏡を使うとプレーヤーの使用可能な - 全スキルのLVが1に固定されてしまう問題を修正。 -・オークアーチャー等、モンスターによる罠スキルの有効期限が切れたときに、 - 設置用トラップが出る問題を修正。 -・ログインエラー(パスワード入力ミスやBAN等)のエラーメッセージが - 正しくクライアントに通知されない問題を修正。 -・その他細かな修正。 - (common/) - version.h 修正。 - (login/) - login.c - parse_login() 修正。 - parse_fromchar() 修正。 - (char/) - int_guild.c - mapif_parse_GuildLeave() 修正。 - (map/) - itemdb.c - itemdb_read_itemnametable() 修正。 - atcommand.c - atcommand() 修正。 - skill.c - skill_unit_timer_sub() 修正。 - script.c - buildin_itemskill() 修正。 - mob.c - mob_damage() 修正。 - --------------------- -//0809 by Kalen - -・東湖城ワープポイント修正 -・アマツ寿司屋修正 -・バグスレ129の問題修正? - - --------------------- -//0808 by ぴざまん - -・装備制限が上手く動作していなかったのを修正。 -・モンハウギルドはGvG開始時に作られるように変更。 -・GvG開始時に該当マップにいる全PC(占領ギルド員以外)をセーブポイントに戻すように修正。 -・モンハウギルドアジトでエンペを壊すと、モンハウが消えるように修正。 - この修正に伴ってmaprespawnguildidの引数のflagの仕様を変更しました - flagはビットフラグになり、 -  1ビット目:占領ギルド員をセーブポイントに戻すか -  2ビット目:占領ギルド員以外をセーブポイントに戻すか -  3ビット目:エンペ・ガーディアン以外のMOBを消すか - いずれも、0=NO、1=YESになります - - (conf/gvg/) - ev_agit_aldeg.txt 修正。 - ev_agit_gefg.txt 修正。 - ev_agit_payg.txt 修正。 - ev_agit_prtg.txt 修正。 - TEST_prtg_cas01_AbraiJ.txt 修正。 - TEST_prtg_cas01_mob.txt 修正。 - (map/) - pc.c - pc_checkitem() 修正。 - script.c - buildin_maprespawnguildid_sub() 修正。 - buildin_maprespawnguildid() 修正。 - --------------------- -//0807 by 死神 - -・0805でFD_SETSIZEを修正する所を間違ったので修正しました。56名止まりが治ると言う保証はありませんが... -・一度に転送するパケットの長さを32768bytesから65536bytesに変更。 - (common/) - mmo.h 修正。 - socket.h 修正。 - socket.c 修正。 - --------------------- -//0806 by Kalen - -・agitフォルダ→gvgフォルダへ移行 - 諸意見あると思いますが、jROでは攻城戦をgvgと呼ぶことが一般的なのでこちらに統合します。 - conf/gvg/ - ###agitフォルダを削除してください### (Please delete the "agit" folder.) - getmaster対応 - -・アマツの寿司屋バグ修正と項目追加(thx 114 - conf/npc/npc_town_amatsu.txt - -・map_flag再修正 - conf/map_flag.txt - [GVGMAP]確かに常にシーズモードなら問題ないですが、削除されましたので - 常にシーズモードではありません。従って解除時(時間外)には枝、テレポが使えます - 時間前に枝撒き、まだ実装してませんが宝箱奪取も可能になるので枝、テレポは常に使用不可で問題ないと思います。 - -後前回書き忘れましたが、momotaroイベントですが、ちょっと不安定な可能性があります。 -原因がわからないのですが、ループしてるかもしれません。一応コメントアウトしてあります - --------------------- -//0805 by 死神 - -・文字化け修正。 -・シーズモードでのテレポート禁止や古木の枝使用禁止はソースレベルで -処理しているのでmapflag.txtから削除。(因みにnopenaltyもソースレベルで -処理しています。) -・battle_athena.confのagit_eliminate_timeをgvg_eliminate_timeに変更。 -・@コマンド@GM削除。 -・FD_SETSIZEかcygwinで64に設定されていたのせいで最大接続人数が56名を -越えるとマップ鯖が無限ループする問題修正。(ただテストができなかった物なので本当に大丈夫になったかどうかは不明です。あくまでも自分の予測にすぎない物ですが...) -・文字化けのせいでどこをどう修正したか覚えてないので修正したファイルだけ。 - (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 釈尊 - -・アルベルタのぬいぐるみイベントでうさぎのぬいぐるみをあげるとサーバーが落ちるバグ修正 - - (conf/npc/) - npc_event_doll.txt 修正。 - --------------------- -//0803 by ぴざまん - - GvGでエンペリウム崩壊時gvg_eliminate_timeの値に関わらず即座に退去させられていたバグ修正 - GvGのセリフを一部修正 - inter鯖でcastle.txtがないと起こる色々なエラーを修正 - help.txtを修正(@gvgstart→@agitstart云々) - - (conf/) - gvg/TEST_prtg_cas01_AbraiJ.txt 修正。 - agit/ev_agit_prtgJ.txt 修正。 - help.txt 修正。 - (map/) - int_guild.c - inter_guild_init() 修正。 - --------------------- -//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 -・アマツ修正 -  実装前のデータ、抜けてるデータなどを調査し修正 - 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 -・map_flag修正 - [GVGMAP]枝、テレポは常に使用不可 -・GVG関係 - 0800のコマンドに対応 - --------------------- -//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 ぴざまん - -・GvG実装の為にinter-map間の通信仕様変更 -・0798のコンパイルエラー修正(byバグ報告スレ82氏) - (login/) - login.c - parse_login() 修正。 - (map/) - intif.c - packet_len_table[] 修正。 - intif_parse_GuildCastleInfo() 修正。 - intif_parse_GuildCastleChange()をintif_parse_GuildCastleChangeErr()に改名・修正。 - intif_parse() 修正。 - guild.c - guild_read_castledb() 修正。 - - (char/) - inter.c - inter_send_packet_length[] 修正。 - int_guild.c - inter_guildcastle_tostr() 修正。 - inter_guildcastle_fromstr() 修正。 - mapif_parse_GuildChangeCastle() 修正。 - mapif_parse_GuildCastleInfo() 修正。 - mapif_guild_castle_info() 修正。 - mapif_guild_change_castle()をmapif_guild_change_castle_err()に改名・修正。 - (common/) - mmo.h 修正。 - version.h 修正。 - --------------------- -//0798 by 胡蝶蘭 - -・login-serverのログイン失敗パケットの長さがおかしかったのを修正 -・login-serverにアクセスコントロール機能追加 - ・login_athena.cnfにorder,allow,denyを記述することで、 - IP単位(前方一致)でアクセスを禁止する機能。 - ・指定方法は doc/conf_ref.txt を参照 - - (doc/) - conf_ref.txt - login_athena.cnfの部分修正 - (login/) - login.c - グローバル変数 access_* 追加 - parse_login()修正,check_ip()追加 - -・アカウント作成用CGIスクリプト追加 - ・自己責任&詳細な解説無し、質問されてもスルーする可能性有り - ・エディタで開いたら少し説明有り - ・CGI設置の基本さえわかれば問題ないはず - ・メッセージは英語、日本語両対応 - (Accept-Languageがjaなら日本語に変換します) - ・管理者パスワードなしで動くのでセキュリティには注意(.htaccessなど推奨) - - (tool/cgi/) - addaccount.cgi - アカウント作成用CGI。 - -・その他 - (tool/) - backup - castle.txtもバックアップするように - --------------------- -//0797 by 死神 - -・少し修正。 -・battle_athena.confの項目変更。(lootitem_time 削除、item_first_get_time、 -item_second_get_time、item_third_get_time、mvp_item_first_get_time、 -mvp_item_second_get_time、mvp_item_third_get_time 追加。) -・アイテムルート権限を正しく実装。最初攻撃ではなく与えたダメージの -量によって収得権限を与えるように変更。(最初収得権限のみテスト) -パーティの場合パーティの設定に合わせる必要がありますがまだパケットが -不明な所がある為同じパーティなら収得できるようになっています。 -・ボウリングバッシュのバグ修正。(多分修正されたはず...) -・装備スクリプトbonusにbSplashRangeとbSplashAddRange追加。 -bSplashRangeとbSplashAddRangeは武器でダメージを与えた時のみ発動、通常の武器攻撃扱いなので避けられるが(Flee2による完全回避は不可能)クリは出ないようになっていて武器による状態異常は発生しません。本鯖仕様なんて知りません。 -・スキルの重ね置き処理を本鯖に合わせて修正。 -・mapflagのgvgはいつもなっているわけじゃないので削除。 -・その他細かい修正。 - athena-start 修正。 - (common/) - mmo.h 修正。 - (conf/) - mapflag.txt 修正。 - battle_athena.conf 修正。 - (db/) - const.txt 修正。 - item_db.txt 修正。 - (doc/) - conf_ref.txt 修正。 - item_bonus.txt 修正。 - (map/) - mob.c - mob_spawn()、mob_damage()、mob_class_change()、mob_warp() 修正。 - mob_delay_item_drop()、mob_delay_item_drop2() 修正。 - mobskill_castend_pos() 修正。 - pc.c - pc_takeitem()、pc_dropitem()、pc_equipitem() 修正。 - pc_calcstatus()、pc_bonus() 修正。 - skill.c - skill_attack()、skill_additional_effect()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_produce_mix() 修正。 - skill_arrow_create()、skill_unit_timer_sub()、skill_castend_pos() 修正。 - map.h 修正。 - map.c - map_addflooritem() 修正。 - script.c - buildin_getitem() 修正。 - pet.c - pet_return_egg()、pet_get_egg()、pet_unequipitem() 修正。 - battle.h 修正。 - battle.c - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack() 修正。 - battle_weapon_attack()、battle_config_read() 修正。 - --------------------- -//0796 by huge - -・細かい修正 - (conf/npc/) - npc_event_valentine.txt 修正。 - - (map/) - pc.c - pc_takeitem() 修正。 - skill.c - skill_unit_timer_sub() 修正。 - --------------------- -//0795 by Kalen - -・雑談341のnpc_warp_niflheim.txt追加 - conf/warp/npc_warp_niflheim.txt - -・mapflag.txt修正(GVGMAP設定) -  nosaveはしていません - -・map_athena.confの修正 -  umbala niflheim等の追加 -  コメントアウトしてあります。 - -・バレンタインスクリプト追加 - conf/npc/npc_event_valentine.txt -  チョコ達のDropは弄っていません。お好みでどうぞ -  尚、手作りチョコを食べたときのエフェクトは -  最新クライアントにすれば見えます。 - -・GVGScript追加 - conf/gvg/以下 -  Weiss時代に作成したものをAthena用にコンバート&台詞修正 -  prtg_cas01以外は旗のみです。 -  GVGDATAは鯖再起動で消滅します。 -  エラーが出るようならコメントアウトしてください。 -  MobData、執事Scriptもprtg_cas01のみです。(TestScript) -  あくまでテストスクリプトです。GVG実装の参考にどうぞ - --------------------- -//0794 by DRG - -・skillusedで指定したIW,QMなどにのってる間MOBスキルを使用するように変更 -・アップスレ3の7のathena-startを一応含めときました - - athena-start - (map/) - skill.c - skill_unit_onplace() 修正。 - --------------------- -//0793 by huge - -・サーバーsnapshot -・サーバーがクラッシュするバグを修正 -・発動せずに罠が消えたら、設置用トラップが返ってくるように修正。 -・ルート権限で、同じパーティーのキャラはすぐ拾えるように修正。 -・バグ報告スレ3 >>54 のバグ修正。 -・ログイン時にサーバー側にIDを表示するようにしました。 - (login/) - login.c - parse_login() 修正。 - (conf/npc/) - npc_event_doll.txt 修正。 - (map/) - skill.c - skill_unit_timer_sub() 修正。 - mob.c - mob_spawn_dataset() 修正。 - mob_damage() 修正。 - pc.c - pc_additem() 修正。 - --------------------- -//0791 by 聖 - -・マップサーバがクラッシュするバグ修正。 -・イグ葉を使ってもジェムが必要になる問題を修正。 -・PvP強制送還実装。 -・PvPでリザレクションが出来なかった問題を修正。 -・その他細かな修正。 - (map/) - guild.c - mob.c - pc.c - skill.c - --------------------- -//0790 by 死神 - -・バグ修正。 - (conf/) - battle_athena.conf 誤字修正。 - (doc/) - conf_ref.txt 誤字修正。 - (common/) - mmo.h 修正。 - (map/) - itemdb.h 修正。 - map.h 修正。 - skill.c - skill_check_condition()、skill_use_pos()、skill_unit_onplace() 修正。 - --------------------- -//0789 by huge - -・ドロップアイテムにルート権限を実装。 -・最初に攻撃した人以外がドロップアイテムを拾えるまでの時間を設定できるように。 - (/conf) - battle_athena.conf 項目追加。 - - (/doc) - conf_doc.txt 説明追加。 - - (/map) - battle.h - Battle_Config{} 修正。 - battle.c - battle_config_read() 修正。 - itemdb.h - item_data {} 修正。 - map.h - flooritem_data {} 修正。 - mob_data {} 修正。 - map.c - map_addflooritem() 修正。 - mob.c - delay_item_drop{} 修正。 - mob_spawn() 修正。 - mob_damage() 修正。 - mob_delay_item_drop() 修正。 - mob_warp() 修正。 - pc.c - pc_takeitem() 修正。 - --------------------- -//0788 by あゆみ - -・cardスキルの処理?を修正。 -・@allskillコマンドの再修正。 - - (map/) - pc.c - pc_skill() 修正。 - pc_allskillup() 修正。 - --------------------- -//0787 by ぽぽぽ - -・ペットにもmob_avail.txtの設定を適用するようにした。 -・MOBスキルのskillusedでval1に0を入れるとあらゆるスキルに対して発動するようにした。 -・skillusedで発動したスキルの対象を、発動させたPCにするかどうか設定できるようにした(対IWハメなど?)。 - (/map) - clif.c - clif_pet0078()、clif_pet007b()修正。 - mob.c - mobskill_use()修正。 - skill.c - skill_attack() 、skill_castend_damage_id()修正。 - battle.h - battle.c - battle_config_read()修正。 - --------------------- -//0786 by huge - -・BDS修正 - 前から吹き飛ばして行くと良くないかもしれないので、後ろから処理 - 有効範囲の修正 - - (/map) - - skill.h - skill.c - skill_castend_damage_id() 修正。 - skill_castend_nodamage_id() 修正。 - skill_brandishspear_first() 修正。 - skill_brandishspear_dir() 修正。 - --------------------- -//0785 by 死神 - -・本鯖に合わせて修正。(韓国鞍のパッチnoticeを参考して修正しました。) -・BBとBSのキャスティング時間を0.7秒にしてディレイは0に変更。 -・ghostの変わりにマップ移動後の無敵時間を設定。この時間の間はどんな攻撃も受けないが移動や攻撃、スキル使用、アイテム使用でこの時間はなくなります。シーズモードではこの無敵時間を2倍として適用。 -・シーズモードで死んでも経験が減らないように修正。(mapflagのnopenaltyを設定する必要はありません。) -・スキッドで滑べる距離増加。 -・既に沈黙にかかってる対象にレックスディビーナを使うと沈黙が解除されるように変更。 -・呪いにかかると移動速度も減るように修正。 -・battle_athena.confに項目変更。 -・スキルの重ね置きを判断処理を少し変更。 -・HPの自然回復時間が4秒ではなく6秒だとわかったのでデフォルト修正とbattle_athena.conf修正。 -・その他細かい修正やバグ修正。 -・殆どテストしてません。 - (conf/) - atcommand_athena.conf 修正。 - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (db/) - cast_db.txt 修正。 - (map/) - atcommand.c 修正。 - clif.c - clif_mob0078()、clif_mob007b()、clif_skill_estimation() 修正。 - clif_mob_class_change()、clif_parse_WalkToXY() 修正。 - clif_parse_ActionRequest()、clif_parse_LoadEndAck() 修正。 - clif_parse_UseItem()、clif_parse_UseSkillToId() 修正。 - clif_parse_UseSkillToPos()、clif_parse_UseSkillMap() 修正。 - mob.h 修正。 - mob.c - mob_get_viewclass()、mob_attack()、mob_target() 修正。 - mob_ai_sub_hard_activesearch()、mob_ai_sub_hard() 修正。 - mobskill_castend_id()、mobskill_castend_pos() 修正。 - skill.h 修正。 - skill.c - skill_can_produce_mix()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_castend_id() 修正。 - skill_castend_pos()、skill_use_id()、skill_readdb() 修正。 - skill_check_condition()、skill_unit_onplace()、skill_unitsetting() 修正。 - skill_additional_effect()、skill_check_unit_range() 修正。 - skill_check_unit_range_sub()、skill_status_change_end() 修正。 - skill_status_change_start() 修正。 - pc.h - pc.c - pc_ghost_timer()、pc_setghosttimer()、pc_delghosttimer() 削除。 - pc_gvg_invincible_timer() -> pc_invincible_timer()に変更。 - pc_setgvginvincibletimer() -> pc_setinvincibletimer()に変更。 - pc_delgvginvincibletimer() -> pc_delinvincibletimer()に変更。 - pc_authok()、pc_attack_timer()、pc_calcstatus() 修正。 - pc_setrestartvalue()、pc_damage()、pc_allskillup() 修正。 - do_init_pc() 修正。 - battle.h 修正。 - battle.c - battle_config_read()、battle_weapon_attack()、battle_check_target() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_get_speed() 修正。 - map.h 修正。 - map.c - map_quit() 修正。 - --------------------- -//0784 by あゆみ - -・カードスキルを覚えている状態で@allskillコマンドを使用するとmap-serverが暴走する問題を修正。 - - (map/) - pc.c - pc_allskillup() 修正。 - --------------------- -//0783 by huge - -・ブランディッシュスピアの修正 - 範囲指定、斜めの際の格子範囲、攻撃力計算 - 多分合ってると思うんですけど、イマイチ自信が持てない・・・ - (参考)みすとれ巣 -スキル関連豆情報 -・スペルブレイカーをちょっと修正 -・プロボックをMVPmobに効かないよう修正 -・バグ報告スレ3 >>8 で報告されたものの取り込み - - (/db) - create_arrow.txt 修正。 - skill_db.txt 修正。 - - (/map) - battle.c - battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack() 修正。 - - skill.h - skill.c - skill_brandishspear_first() 追加。 - skill_brandishspear_dir() 追加。 - skill_castend_nodamage_id() 修正。 - skill_castend_damage_id() 修正。 - skill_unit_group() 修正。 - --------------------- -//0782 by ぴざまん -・@allskillコマンドの使用条件が参照されていなかったバグ修正 - (/map) - atcommand.c - atcommand() 修正。 - --------------------- -//0781 by Chunglyeng -・バド, ダンサー音楽具現 - (/map) - skill.c 修正。 - --------------------- -//0780 by reia -・ペコペコの卵などが孵化するとノビになってしまう問題修正。 -・GMコマンド「@kickall」が何時の間にか無効になっていたので修正。 - - (/conf) - atcommand_athena.conf 修正。 - (db/) - mob_skill_db.txt 修正。 - (map/) - atcommand.c - atcommand_config_read() 修正。 - --------------------- -//0779 by あゆみ - -・全スキル取得コマンドの追加。 - ・GMで全スキルを覚えられるようにしている場合や、スキルの数が多い職業は一部のスキル表示がおかしくなります。その場合はリログして下さい。 - @allskill : 現在の職業で取得可能な全スキルを取得する。(クエストスキル含む) - - (conf/) - battle_athena.conf 修正。 - help.txt 修正。 - (map/) - atcommand.h 修正。 - atcommand.c - atcommand() 修正。 - pc.h 修正。 - pc.c - pc_allskillup() 追加。 - (doc/) - conf_ref.txt 修正。 - help.txt 修正。 - --------------------- -//0778 by huge - -・スペルブレイカーの修正 - ・キャスティングタイムの無いスキルには効かないように修正。 - ・使用された相手の消費SPの修正。 - - (map/) - skill.c - skill_castend_nodamage_id() 修正。 - --------------------- -//0777 by ぴざまん - -・ギルド攻城戦仮実装 - ・基本的な部分だけしか実装してない上、いくつかの点で本鯖と相違があります。 - ・攻城戦開始と終了は@コマンドで行います - @gvgstart : 攻城戦開始 - @gvgend : 攻城戦終了 - ・battle_athena.confに項目追加。 - (char/) - int_guild.c - inter_guild_init()、inter_guild_readdb()、inter_guild_save() 修正。 - inter_castle_save_sub()、mapif_guild_castle_info() 追加。 - mapif_guild_change_castle()、mapif_parse_GuildCastleInfo() 追加。 - mapif_parse_GuildChangeCastle() 追加。 - inter.c - inter_config_read() 修正。 - inter_send_packet_length[]、inter_recv_packet_length[] 修正。 - int_guild.h 修正。 - (map/) - atcommand.c - atcommand()、atcommand_config_read() 修正。 - battle.c - battle_config_read() 修正。 - guild.c - guild_castle_search()、guild_read_castledb()追加。 - do_init_guild() 修正。 - guild_gvg_init()、guild_gvg_final()、guild_gvg_final_sub() 追加。 - guild_gvg_eliminate()、guild_gvg_eliminate_sub() 追加。 - guild_gvg_eliminate_timer()、guild_gvg_empelium_pos() 追加。 - guild_gvg_break_empelium() 追加。 - intif.c - intif_parse()、packet_len_table[] 修正。 - intif_parse_GuildCastleInfo()、intif_parse_GuildCastleChange() 追加。 - intif_guild_castle_info()、intif_guild_castle_change() 追加。 - mob.c - mob_damage() 修正。 - atcommand.h 修正。 - battle.h 修正。 - guild.h 修正。 - intif.h 修正。 - mob.h 修正。 - (common/) - mmo.h 修正。 - (conf/) - battle_athena.conf 修正。 - inter_athena.conf 修正。 - msg_athena.conf 修正。 - atcommand_athena.conf 修正。 - (db/) - castle_db.txt 追加。 --------------------- -//0776 by 死神 - -・NPCスキル孵化実装。(mob_skill_db.txtのval1を使います。) -・mob_skill_db.txtの確率を千分率から万分率に変更。(ただmob_skill_db.txtの修正はしてません。) -・モンスターがダブルアタックする問題修正。(修正されたかどうかの自信はありませんが...) -・その他細かい修正。 - (db/) - mob_skill_db.txt 修正。 - skill_db.txt 修正。 - (map/) - map.h 修正。 - mob.h 修正。 - mob.c - mob_spawn_dataset()、mob_spawn() 修正。 - mob_changestate()、mobskill_use() 修正。 - mob_class_change() 追加。 - npc.c - npc_parse_mob() 修正。 - battle.c - battle_check_target() 修正。 - clif.h 修正。 - clif.c - clif_mob_class_change() 追加。 - skill.c - skill_castend_nodamage_id() 修正。 - --------------------- -//0775 by 死神 - -・シーズモードの処理修正。 -・シーズモードの無敵時間の間はどんな攻撃も受けないように修正。 -・シーズモードの無敵時間が時間切れになる前には解除されないように修正。 -・battle_athena.confに項目追加。 -・@hideや/hideによるGMハイディング中は自分に自動使用されるスキル以外のスキル使用や攻撃を受けないように修正。 -・ハイディング中地属性スキル以外の攻撃を受けないように修正。(トラップやクァグマイア等のスキルは影響を受けるかどうか不明なので今までと同じように影響を受けるように処理。) -・トンネルドライブの移動速度を本鯖に合わせました。 -・その他バグ修正や細かい修正。(殆ど未テスト) - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_check_target()、battle_calc_damage() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_calc_misc_attack() 修正。 - battle_config_read()、battle_weapon_attack() 修正。 - pc.h 修正。 - pc.c - do_init_pc()、pc_authok() 修正。 - pc_attack()、pc_attack_timer() 修正。 - pc_setgvg_ghosttimer()、pc_delgvg_ghosttimer()を - pc_setgvginvincibletimer()、pc_delgvginvincibletimer()に修正。 - pc_gvg_invincible_timer() 追加。 - pc_attack_timer()、pc_steal_item()、pc_calcstatus() 修正。 - clif.c - clif_parse_ActionRequest()、clif_parse_UseItem() 修正。 - clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 - clif_parse_UseSkillMap()、clif_parse_WalkToXY() 修正。 - map.h 修正。 - map.c - map_quit() 修正。 - mob.c - mob_attack()、mob_target()、mob_ai_sub_hard_activesearch() 修正。 - mob_ai_sub_hard_mastersearch()、mob_ai_sub_hard() 修正。 - mob_damage()、mobskill_castend_id()、mobskill_castend_pos() 修正。 - skill.c - skill_castend_damage_id()、skill_attack() 修正。 - skill_castend_id()、skill_castend_pos()、skill_castend_map() 修正。 - --------------------- -//0774 by 獅子o^.^o -・Monk job bouns 修正 -・ドケビ 修正 -(db/) - job_db2.txt 修正 - pet_db.txt 修正 - --------------------- -//0773 by 聖 - -・細かいバグ修正 - (map/) - skill.c 修正。 - battle.c 修正。 - --------------------- -//0772 by ぴざまん - -・シーズモード下で以下の点を修正 - ・連続して攻撃できなくなっていたバグ修正 - ・ダメージ軽減率が正しく設定できなかったバグ修正 - ・無敵時間実装。battle_athena.confのgvg_ghost_timeで設定できます - -・ハイディングで魔法攻撃等を回避できなかったバグ修正 - - (map/) - skill.c - skill_attack()、skill_unit_onplace()、skill_check_condition() 修正。 - clif.c - clif_parse_ActionRequest()、clif_parse_UseItem() 修正。 - clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 - clif_parse_UseSkillMap()、clif_parse_WalkToXY() 修正。 - pc.c - do_init_pc()、pc_authok() 修正。 - pc_attack()、pc_attack_timer() 修正。 - pc_setgvg_ghosttimer()、pc_delgvg_ghosttimer() 追加。 - pc_gvg_ghost_timer() 追加。 - map.c - map_quit() 修正 - battle.c - battle_config_read()、battle_weapon_attack() 修正。 - battle.h 修正。 - pc.h 修正。 - --------------------- -//0771 by huge - -・スペルブレイカー実装 - (map/) - skill.c - skill_castend_nodamage_id() 修正。 - (db/) - skill_db.txt 修正。 - --------------------- -//0770 by 聖 - -・青箱系の処理変更 -・その他バグ修正 - (map/) - battle.c 修正。 - itemdb.c 修正。 - mob.c 修正。 - script.c 修正。 - --------------------- -//0769 by 死神 - -・シーズモード修正。 -・無敵時間の方はghost_timer以外の方法で実装するつもりなので今は削除しています。 -・スクリプトviewpointが正しく動作しない問題修正。 -・produce_db.txtを修正。(乳鉢はskill_require_db.txtで処理しています。そしてアイテムの数を0にすれば消耗はされないけど作る時必要なアイテムになります。) -・その他細かい修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (db/) - produce_db.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_calc_damage()、battle_calc_weapon_attack() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_calc_misc_attack()、battle_check_target()、battle_config_read() 修正。 - skill.c - skill_unit_onplace()、skill_castend_damage_id()、skill_castend_id() 修正。 - skill_use_id()、skill_use_pos()、skill_check_condition() 修正。 - skill_can_produce_mix() 修正。 - pc.c - pc_attack_timer()、pc_attack()、pc_isUseitem()、pc_delitem() 修正。 - pc_damage() 修正。 - mob.c - mob_damage()、mobskill_use_id()、mobskill_use_pos() 修正。 - script.c - buildin_viewpoint()、buildin_emotion() 修正。 - makefile 修正。 - --------------------- -//0768 by ぴざまん - -・シーズモード下で、以下の点を修正 - ・死亡したらセーブポイントに強制送還するように修正 - ・特定のアイテムが使用できないように修正(アンティペインメント・ハエの羽) - ・特定のスキルが使用できないように修正(ワープポータル・バックステップ・インティミデイト・テレポート・インデュア) - ・同盟ギルドには無条件で攻撃できないように修正 - ・敵対ギルドには無条件で攻撃できるように修正 - ・無敵時間中は両者とも攻撃できないように修正 - -ソースレベルでテレポ、ハエの使用を禁じているため攻城戦MAPのmapflagにnoteleportは必要ありません -また、無敵時間はghost_timer依存です。つまりbattle_athena.conf内のghost_timeが無敵時間になります - - (map/) - skill.c - skill_castend_damage_id()、skill_castend_id() 修正 - skill_check_condition() 修正 - pc.c - pc_damage() 修正 - battle.c - battle_weapon_attack() 修正 - --------------------- -//0767 by huge - -・ファーマシーで、製造の書が減る問題を修正 -・武器製造DBで、いくつか抜けていたのを修正 - - (map/) - skill.c 修正。 - (db/) - produce_db.txt 修正。 - --------------------- -//0766 by ぴざまん - -・シーズモード下で、以下の点を修正 - ・正規ギルド承認がないとエンペリウムに攻撃が効かないように修正 - ・エンペリウムに対するスキル攻撃が効かないように修正 - ・魔法攻撃、遠距離攻撃、罠のダメージ補正を実装 -  魔法攻撃:50% 遠距離攻撃:75% 罠:60% -  これは人にもエンペリウムにも適用されます - (map/) - battle.c - #include "guild.h" 追加 - battle_calc_damage()、battle_calc_weapon_attack() 修正 - --------------------- -//0765 by ぴざまん - -・装備制限実装 -・装備制限がかかった装備品は該当マップに移動した際に自動的に装備が外れ、 - 再装備もできなくなります -・制限できるのは装備品のみです。カード類は制限できません - (db/) - item_noequip.txt 追加 - (map/) - itemdb.h 修正 - itemdb.c - do_init_itemdb()、itemdb_search() 修正 - itemdb_read_noequip 追加 - pc.c - pc_checkitem()、pc_isequip() 修正 - --------------------- -//0764 by 死神 - -・全てのダメージが1になる防御を10000から1000000に変更。 -・battle_athena.confに項目追加。 -・モンスターから経験値を貰う処理を本鯖のように修正。 -・スキルスローポイズン実装。 -・交換バグ修正。 -・その他細かい修正。 -・テストは殆どしてません。 - (db/) - mob_db.txt 修正。 - skill_db.txt 修正。 - (doc/) - conf_ref.txt 修正。 - db_ref.txt 修正。 - (conf/) - battle_athena.conf 修正。 - (map/) - makefile 修正。 - battle.h 修正。 - battle.c - battle_get_def()、battle_get_mdef() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_calc_misc_attack()、battle_config_read() 修正。 - skill.h 修正。 - skill.c - skill_castend_nodamage_id()、skill_castend_damage_id() 修正。 - skill_check_condition()、skill_status_change_timer() 修正。 - skill_status_change_end()、skill_status_change_start() 修正。 - skill_additional_effect()、skill_produce_mix()、skill_unit_timer_sub() 修正。 - skill_check_unit_sub()を skill_check_unit_range_sub()に変更。 - skill_check_unit_range() 追加。 - skill_castend_pos()、skill_area_sub_count() 修正。 - mob.c - mobskill_castend_pos()、mob_damage() 修正。 - clif.c - clif_parse_TradeRequest()、clif_parse_TradeAck() 修正。 - clif_parse_TradeAddItem()、clif_parse_TradeOk() 修正。 - clif_parse_TradeCansel()、clif_parse_TradeCommit() 修正。 - map.h 修正。 - map.c - do_init() 修正。 - pc.c - pc_calc_skilltree()、pc_calcstatus() 修正。 - tarde.c - trade_tradeack() 修正。 - --------------------- -//0763 by 胡蝶蘭 - -・サーバーsnapshot - フォルダを整理したので注意してください。 - 以前のセーブデータ(account.txtなど)はsaveフォルダに置いてください - cnfファイルは各種ファイルのパスが変わってるので、 - この古いものをコピーではなく、新しく書き換えなおしてください。 - -・フォルダ整理 - confフォルダ - NPC関連をconf/npc/、MOB配置関連をconf/mob/、WARP関連をconf/warp/ - テストやサンプルをconf/sample/に移動しました。 - dbフォルダ - sampleフォルダのうちdb関係を db/sampleに移動しました。 - help.txt/motd.txt - confフォルダに移動しました - account.txt/athena.txt/guild.txt/party.txt/pet.txt/storage.txt - saveフォルダに移動しました - tool/backup - パス修正 - -・motd.txt/help.txtのパスをmap_athena.cnfで指定できるように - map.h/map.c/atcommand.c/atcommand.h修正 - -・athena-startにrestartオプション追加 - ./athena-start restartでAthenaを再起動します - --------------- -//0761 by ぽぽぽ - -・MOBのMDEFに10000以上指定してもファイアピラーで普通にダメージを与えてしまうのを修正。 - (map/) - battle.c - --------------- -//0760 by ll3y - -・文字化け修正 - (map/) - script.c - --------------- -//0759 by 獅子o^.^o -・スピアクイッケン 修正 -・Dancer skill tree 修正 -(db/) - cast_db.txt 修正 - skill_tree.txt 修正 - --------------- -//0758 by hack -・Put 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 - -・Interix(Windows Services for Unix 3.5)でコンパイルが通るように修正 - Interop Systems(http://www.interopsystems.com/)よりgmakeとzlibを取ってくるか、 - 自前でInterix用を用意する必要があります。 - (common/) - socket.h 修正。 - --------------- -//0755 by 死神 - -・バグ修正と説明追加。(報告されたのは多分全て修正されたのかと...) -・0751でスキルの最大レベルを100まで設定できるようにしました。 -・cast_db.txtに入っている状態異常の維持時間は自分が適度に入れた物です。本鯖の仕様なんて知りませんので。 - (doc/) - db_ref.txt 修正。 - (db/) - cast_db.txt 修正。 - skill_db.txt 修正。 - (map/) - skill.h 修正。 - skill.c - skill_check_unit_sub()、skill_castend_id()、skill_use_id() 修正。 - skill_status_change_end()、skill_status_change_start() 修正。 - skill_castend_map() 修正。 - mob.c - mobskill_castend_id()、mobskill_castend_pos() 修正。 - pc.c - pc_calcstatus() 修正。 - battle.c - battle_calc_pc_weapon_attack() - battle_calc_mob_weapon_attack() - battle_calc_magic_attack() - --------------- -//0754 by 獅子o^.^o -(db/) - cast_db.txt 修正 - --------------- -//0753 by 聖 - -・IWの発生ポイントを指定するとメテオのエフェクトが一切出なくなる - 問題が復活していたので修正。 -・warningを出ないようにコード修正。 - (map/) - skill.c - skill_castend_pos2() 修正。 - chrif.h - --------------- -//0752 by ぴざまん - -・changesexスクリプト実装。性別を反転させることができます - 性別反転成功後は、そのプレイヤーは強制的に接続を切断されます - また、ダンサー・バードの互換性はかなり怪しいです - ダンサー・バードがスロット内どこかに居るアカウントでの反転は、以下の点に注意して下さい - ・必ず反転させる前にそのキャラクターをスキルリセットしてください -  そのまま反転させると、共通するスキル(楽器の練習等)しか残らなくなってしまいます - ・ダンサー・バード専用武器を装備している場合は、外してから反転させてください -  そのまま反転させると、そのキャラクターの開始時に -  クライアントエラーが出ます(出るだけで、落ちることはないのですが…) -・データベース修正 by 獅子o^.^o - (map/) - chrif.c - packet_len_table[]、chrif_parse()修正 - chrif_changesex()、chrif_changedsex()追加 - chrif.h 修正 - (char/) - char.c - parse_frommap()、parse_tologin()修正 - (login/) - login.c - parse_fromchar()修正 - (db/) - cast_db.txt 修正 - skill_require_db.txt 修正 - --------------- -//0751 by 死神 - -・skill_db.txtとcast_db.txtの変更とskill_require_db.txtの追加。 -・毒にかかるとHPが減るように変更。HPは1秒に最大HPの1%減ります。(未テスト) -・石化を進行中の物と完全な物に分けてHPが減るように変更。(1秒に最大HPの1%)ブレッシングで完全石化だけ治せるように修正。(未テスト) -・ハンターのトラップにエフェクト実装。ただランドマインとショックウェーブは爆発エフェクトが出ないようです。ランドマインはファイアピラーの爆発エフェクトが出るように変えています。 -・オートカウンターの方向チェックをするように変更と本鯖仕様に合わせました。 -・バックスタブも方向チェックをするように変更。 -・インティミデイトの処理変更。 -・ディフェンダーの移動速度減少を本鯖に合わせました。ASPDは勝手ながら -(30 - (skilllv*5))%が減るようにしましたが本鯖でいくら程減るのかの情報をお願いします。 -・トンネルドライブLV1で移動速度が150から312になるのが確認されて計算を変更しましたがレベルによってどれぐらい増加するかは不明です。情報を求めます。(今の計算式は適度に作った物です。) -・ポーション製造の計算式変更とちょっと修正。 -・一部地面スキルの重ね置きを禁止。 -・bNoMagicDamageで魔法による異常やステータスアップ効果が出ないように修正。(リザレクション以外の魔法は無効になります。) -・battle_athena.confに項目追加。 -・その他色々と修正。 -・変更されたskill_db.txt、castdb.txtと追加されたskill_require_db.txtの構造は今の所自分しか知らないのでdb_ref.txtに説明を追加する予定なのでそれまではこれらの変更は控えてください。 - (char/) - int_guild.c 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (db/) - skill_db.txt 修正。 - skill_require_db.txt 修正。 - cast_db.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_counttargeted()、battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_weapon_attack()、battle_config_read() 修正。 - skill.h 修正。 - skill.c - skill_attack()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_status_change_start() 修正。 - skill_check_condition()、skill_castend_pos() 修正。 - skill_use_id()、skill_use_pos() 修正。 - skill_status_change_timer()、skill_status_change_start() 修正。 - skill_check_unit_sub() 追加。 - pc.h 修正。 - pc.c - pc_damage()、pc_counttargeted()、pc_counttargeted_sub() 修正。 - mob.h 修正。 - mob.c - mob_countslave()、mob_counttargeted()、mob_counttargeted_sub() 修正。 - mobskill_use()、mob_can_move()、mob_damage() 修正。 - mobskill_use_id()、mobskill_use_pos()、mobskill_castend_id() 修正。 - mobskill_castend_pos() 修正。 - map.c - map_quit() 修正。 - --------------- -//0750 by CHRIS - -・スキル関係のDBを調整 - (db/) - skill_db.txt - cast_db.txt - skill_require_db.txt - --------------- -//0749 by 死神 - -・色々と変更と修正。 -・スキルの仕様変更や実装、状態異常の仕様変更や実装。 -・スキルの使用条件をdbに設定できるように変更。 -・skill_db.txtとcast_db.txtの仕様変更。 -・マップ鯖の無限ループ可能性がある部分を修正。(あくまでも可能性が -あっただけの物です。無限ループの原因とは断言できません。) -・トラップの発動実装。(ただ実際に動作はまだ修正していません。 -見た目が変わっただけです。) -・battle_athena.confに項目追加を削除。 -・0748の修正削除と文字化け修正。 -・skill_db.txt、cast_db.txt、skill_require_db.txtの方がまだ完成されていないので -かなりの量のスキルが正しく動作しません。(db_ref.txtに設定方法を入れないと - けないのですが時間がなかったので...) そして修正はしましたがテストは -殆んどしてませんので注意してください。 - (char/) - char.c 修正。 - int_party.h 修正。 - int_party.c 修正。 - int_guild.h 修正。 - int_guild.c 修正。 - int_pet.h 修正。 - int_pet.c 修正。 - int_storage.h 修正。 - int_storage.c 修正。 - charの方は大した修正はしてません。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (db/) - skill_db.txt 修正。 - cast_db.txt 修正。 - skill_require_db.txt 追加。 - produce_db.txt 修正。 - (map/) - map.h 修正。 - map.c - map_check_dir() 追加。 - map_readmap()、map_addblock()、map_delblock() 修正。 - map_foreachinarea()、map_foreachinmovearea() 修正。 - map_addflooritem() 修正。 - pc.h 修正。 - pc.c - pc_spiritball_timer()、pc_addspiritball()、pc_delspiritball() 修正。 - pc_steal_item()、pc_steal_coin()、pc_calcstatus() 修正。 - pc_checkallowskill()、pc_jobchange()、pc_checkweighticon() 修正。 - pc_damage()、pc_equipitem()、pc_walk()、pc_stop_walking() 修正。 - pc_authok()、pc_counttargeted()、pc_counttargeted_sub() 修正。 - pc_damage()、pc_setpos() 修正。 - skill.h 修正。 - skill.c - skill_get_range()、skill_get_sp()、skill_get_num() 修正。 - skill_get_cast()、skill_get_delay() 修正。 - skill_get_hp()、skill_get_zeny()、skill_get_time() 追加。 - skill_get_time2()、skill_get_weapontype() 追加。 - skill_get_unit_id()、skill_blown()、skill_additional_effect() 修正。 - skill_attack()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id()、skill_castend_id() 修正。 - skill_castend_pos()、skill_unit_onplace() 修正。 - skill_unit_timer_sub_onplace()、skill_unitsetting() 修正。 - skill_use_id()、skill_use_pos()、skill_check_condition() 修正。 - skill_status_change_end()、skill_status_change_timer() 修正。 - skill_status_change_start()、skill_can_produce_mix() 修正。 - skill_produce_mix()、skill_gangsterparadise() 修正。 - skill_gangster_out()、skill_gangster_in() 修正。 - skill_gangster_count() 追加。 - skill_readdb() 修正。 - battle.h 修正。 - battle.c - distance()、battle_counttargeted()、battle_get_range() 追加。 - battle_get_dir() 追加。 - battle_get_maxhp()、battle_get_str()、battle_get_agi() 修正。 - battle_get_vit()、battle_get_dex()、battle_get_int() 修正。 - battle_get_luk()、battle_get_flee()、battle_get_hit() 修正。 - battle_get_flee2()、battle_get_critical()、battle_get_baseatk() 修正。 - battle_get_atk()、battle_get_atk2()、battle_get_def() 修正。 - battle_get_def2()、battle_get_mdef()、battle_get_speed() 修正。 - battle_get_adelay()、battle_get_amotion()、battle_get_party_id() 修正。 - battle_get_guild_id()、battle_get_size() 修正。 - battle_check_undead() 追加。 - battle_check_target()、battle_addmastery() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_weapon_attack() 修正。 - clif.h 修正。 - clif.c - clif_skillinfo()、clif_skillinfoblock()、clif_skillup() 修正。 - clif_item_skill()、clif_changeoption()、clif_parse_LoadEndAck() 修正。 - clif_01ac() 追加。 - clif_parse_WalkToXY()、clif_parse_ActionRequest() 修正。 - clif_parse_TakeItem()、clif_parse_DropItem() 修正。 - mob.h 修正。 - mob.c - mobskill_castend_id()、mobskill_castend_pos() 修正。 - mobskill_use_id()、mobskill_use_pos()、mob_heal() 修正。 - mob_spawn()、mob_damage()、mob_walk() 修正。 - mob_stop_walking()、mob_warp()、mob_counttargeted() 修正。 - mob_counttargeted_sub()、mob_countslave() 修正。 - mob_attack()、mob_target()、mob_ai_sub_hard_activesearch() 修正。 - mob_ai_sub_hard_mastersearch()、mob_ai_sub_hard() 修正。 - script.c - buildin_sc_start() 修正。 - path.c - can_move() 修正。 - pet.c - pet_data_init()、pet_stop_walking() 修正。 - npc.c - npc_parse_warp()、npc_parse_shop()、npc_parse_script() 修正。 - --------------- -//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 聖 -・ペットがエモを出すとmap-serverが落ちることがあった問題を修正。 - (map/) - clif_parse_SendEmotion() 修正。 - --------------- -//0746 by Michael - (map/) - script.c - Add Script command - checkoption(type); - Attach a npc_testchkoption.txt npc script! - --------------- -//0745 by ぴざまん -・ギャングスターパラダイス実装 -・PvPエリアのmapflagを修正(同士討ちが無くなったかと思います) -・シーズモードでノックバックがあったバグを修正 -・インティミの遅延時間を少し調整 - (map/) - skill.c - skill_attack()、skill_additional_effect()修正 - skill_gangsterparadise()、skill_gangster_in()、skill_gangster_out()追加 - clif.c - clif_parse_ActionRequest()修正 - mob.c - mob_target()、mob_attack()修正 - mob_ai_sub_hard()、mob_ai_sub_hard_mastersearch()修正 - mob_ai_sub_hard_activesearch()修正 - map.h 修正 - skill.h 修正 - (conf/) - npc_pvp.txt 修正 - --------------- -//0744 by 聖 - -・アイスウォール、メテオストームのコンボでメテオストームのエフェクトが表示されなくなる問題を修正。 -・HP吸収スキルのエフェクト修正。 -・battle_athena.confに項目追加。 -・パケ周りの細かい修正。 - (conf/) - battle_athena.conf - (doc/) - conf_ref.txt - (map/) - battle.c - battle.h - clif.c - pc.c - pet.c - skill.c - --------------- -//0743 by J - -・取り巻き召喚などを本鯖に似せる為の修正。 - あと本鯖相違スレにあったゴスリンの取り巻きを修正。 - デリーターの空と地のスキルが逆になっていたのを修正。 - (db/) - mob_skill_db.txt 修正 - --------------- -//0742 by ぴざまん - -・インティミデイトを実装 - 攻撃とワープの分別がうまくいかなかったので - SC_INTIMIDATEを使って遅延処理をしました -・skill_dbの誤字等を修正 - (map/) - skill.c - skill_additional_effect()、skill_castend_map()修正 - skill_castend_nodamage_id()、修正 - skill_status_change_start()、skill_status_change_end()修正 - map.h 修正 - skill.h 修正 - (db/) - skill_db.txt 修正 - --------------------- -//0741 by whitedog - -snapshot - --------------- -//0740 by ぽぽぽ -・PCがMOBにタゲられたとき3匹目から防御と回避が減るようにした。 - 1匹につき回避は10%、防御は5%減ります。 - (map/) - pc.h - pc.c - pc_counttargeted()、pc_counttargeted_sub()追加 - battle.c - battle_get_flee()、battle_get_def()、battle_get_def2()修正。 - --------------- -//0739 by 聖 -・ファイアーウォール等の設置系スキルが正しく表示されない問題を修正。 -・マリンスフィアが自爆するとサンダーストーム等のダメージが表示されなくなる問題を修正。 -・HP吸収系スキルで敵が回復してるエフェクトが出るよう修正。 - (map/) - skill.c - skill_castend_damage_id() 修正。 - battle.c - battle_calc_misc_attack() 修正。 - clif.c - clif_getareachar_skillunit() 修正。 - clif_skill_setunit() 修正。 - --------------- -//0738 by ぴざまん -・ストームガストを完全に本鯖仕様に修正(3回で絶対凍結&凍結状態の敵はSGをくらわない) -・サフラギウムが自分にかけられるバグ修正 - (map/) - skill.c - skill_additional_effect()、skill_attack()修正 - skill_castend_nodamage_id()修正 - map.h 修正 - --------------- -//0737 by ぽぽぽ -・アンクルが歩いている敵に効かない&複数の敵に効くのを修正。 - (map/) - skill.c - skill_unit_onplace()、skill_unit_onout()修正 - mob.c - mob_stop_walking()修正 - --------------- -//0736 by ぴざまん -・状態異常耐性が効果時間にも及ぶ様に修正。発動率と同率で効果時間が割り引かれます -・ストーンカースの効果時間を永久からマジスレテンプレ準拠に -・攻撃を受けた時にペットの支援攻撃を受けられないよう修正(コメントアウトしただけ) - これはVIT型にペットを付けて放置するだけで自動でレベル上げができるのを - 防ぐための暫定的な処置です - (map/) - skill.c - skill_castend_nodamage_id()、skill_addisional_effect()修正 - skill_status_change_start()修正 - pc.c - pc_damage() 修正 - --------------- -//0735 by ぽぽぽ - -・敵を倒してレベルが上がったときPT公平範囲のチェックをするようにした。 -・オートカウンター仮実装。 - 向きや射程チェックはしていません。またタイミングがおかしいかもしれません。 - MOBスキルとして使うときはターゲットをselfにしてください。 - (conf/) - battle_athena.conf項目追加 - (doc/) - conf_ref修正 - (map/) - battle.h - battle.c - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() - battle_config_read()修正 - pc.c - pc_checkbaselevelup()、pc_attack_timer()修正 - skill.c - skill_castend_nodamage_id()、skill_status_change_start()修正 - clif.c - clif_parse_WalkToXY()修正 - mob.c - mob_attack()修正 - --------------- -//0734 by 死神 - -・player_skillup_limitの処理修正と細かい修正。 -・player_skillup_limitがyesの場合skill_tree.txtで設定されてるその下位職業の -スキルツリーを使いますのでその職業では無くなるはずのスキルが出ることが -ありますがこれは仕様でありバグではありません。バグ報告されても無視します。 - (doc/) - conf_ref.txt 修正。 - (char/) - char.c - mmo_char_sync_timer()、do_init() 修正。 - inter.c - inter_init() 修正。 - inter_save_timer() 削除。 - (map/) - pc.c - pc_calc_skilltree() 修正。 - pc_resetskill() 修正。 - --------------- -//0733 by 死神 - -・バグ修正と細かい修正。 -・死んだ後にすぐにセーブポイントに戻らずにしばらく放置してると、 -放置してる時間によって経験値が減少するバグ修正。(未テスト) -・mob_availe.txtで設定したモンスターにモンスター情報を使うち鞍落ちする問題修正。 -・battle_athena.confに項目追加。 -・その他細かい修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - clif.c - clif_skill_estimation()、clif_parse_Restart() 修正。 - pc.c - pc_setrestartvalue()、pc_makesavestatus() 修正。 - pc_read_gm_account()、pc_calc_skilltree() 修正。 - pc_calc_skillpoint() 追加。 - map.c - map_quit() 修正。 - mob.c - mob_damage() 修正。 - skill.c - skill_unit_timer_sub()、skill_unit_timer() 修正。 - battle.h 修正。 - battle.c - battle_config_read() 修正。 - --------------- -//0732 by Kalen - -・npc_town_kafra.txtの全面見直し - カプラ利用券の廃止 - 倉庫利用料を本鯖(jRO)と同一価格に調整 - カート使用料を本鯖(jRO)と同一価格に調整 - ポイント参照変更 - ジュノーのセーブポイント修正 - アマツのセーブポイント修正 - --------------- -//0731 by ぽぽぽ - -・服の色を保存するかbattle_athena.confで選択できるように。 - 弊害があるので保存しないようにと書いてあったのでデフォルトでは保存しません。 -・スクリプト追加 - strcharinfo(1) 自分のパーティー名を取得します。 - strcharinfo(2) 自分のギルド名を取得します。 - getcharid(1) 自分のパーティーIDを取得します。 - getcharid(2) 自分のギルドIDを取得します。 - getpartyname(ID) IDで指定したパーティーの名前を取得します。 - getguildname(ID) IDで指定したギルドの名前を取得します。 - (map/) - battle.h - battle.c - battle_config_read()修正 - pc.c - pc_makesavestatus()修正 - script.c - buildin_strcharinfo()修正 - buildin_getcharid()、buildin_getpartyname()、buildin_getpartyname_sub() - buildin_getguildname()、buildin_getguildname_sub()追加 - --------------- -//0730 by ぴざまん - -・ストームガストの凍結時間を本鯖にあわせて修正(スキルレベルに関係なく一定の凍結時間(10秒)になります) -・スタン、暗闇、沈黙、毒の状態異常時間の「継ぎ足し」ができないように修正 -・状態異常が掛かりにくすぎてたのでMOBの状態異常耐性を緩和(また調整するかも) - (map/) - skill.c - skill_castend_nodamage_id()、skill_addisional_effect()修正 - skill_status_change_start()修正 - --------------- -//0729 by DRG - -・カートレボリューションがカートなしで使えた不具合の修正 -・カートレボリューションがJOBLV30で覚えれたのを修正 - (conf/) - npc_event_skillget.txt - カートレボリューション項修正 - (map/) - skill.c - skill_check_condition()修正 - --------------- -//0728 by ぽぽぽ - -・職が変わってもギルドの職業欄が更新されない不具合の修正。 - - (char/) - inter.c - パケット長リスト修正。 - int_guild.c - mapif_guild_memberinfoshort()、mapif_parse_GuildChangeMemberInfoShort()、 - inter_guild_parse_frommap()修正 - (map/) - intif.h - intif.c - intif_guild_memberinfoshort()、intif_parse_GuildMemberInfoShort() - intif_parse()修正 - guild.h - guild_send_memberinfoshort()、guild_recv_memberinfoshort()修正 - - --------------- -//0727 by 聖 - -・武器研究スキルによってホルグレンなどの精錬NPCが - 正常に動作しない問題を修正。 - - (map/) - pc.c - pc_percentrefinery() 修正。 - --------------- -//0726 by 胡蝶蘭 - -・mob_skill_db2.txtがあればmob_skill_db.txtをオーバーライドするように修正 - オリジナルのMOB使用時や、現行MOBの使用スキルを変更したい場合に。 - -・mob_skill_db.txtでmob_idの次のダミー文字列が"clear"だった場合、 - そのMOBのスキルを初期化する機能追加。 - ・mob_skill_db2.txtであるMOBのスキルを完全に書き換えるときに使用して - ください。 - ・clearしなかった場合はmob_skill_db.txtのものに追加されます。 - - mob.c - mob_readskilldb()修正 - - -・アイテム名/MOB名が全角12文字(24バイト)あるアイテム/MOBが、 - @コマンドで取り寄せ/召喚できない問題修正。 - mob.c - mobdb_searchname()修正 - itemdb.c - itemdb_searchname_sub()修正 - -・現在時刻でイベントを起こす「時計イベント」機能を追加 - ・OnInitと同じようにそれぞれのNPCで、On〜で始まるラベルを定義します。 - OnMinute?? :毎時、??分にイベントを起こします。(0-59) - OnHour?? :毎日、??時にイベントを起こします。(0-23) - OnClock???? :毎日、??時??分にイベントを起こします。 - OnDate???? :毎年、??月??日にイベントを起こします。 - ・詳しくは npc_test_ev.txt を参照 - - (conf/) - npc_test_ev.txt - 内容追加 - (map/) - npc.c - 色々修正 - -・その他 - clif.c - コンパイル警告が出ないように修正 - --------------- -//0725 by 死神 - -・鯖落ちバグ修正。 -・モンスターにイベントが設定されていて自殺やなにかでダメージを与えた -物がない場合鯖落ち確定なのでそのマップにあるプレイヤーを利用して -イベントスクリプトを実行するように変更。 - (map/) - makefile 修正。 - mob.c - mob_timer()、mob_damage() 修正。 - --------------- -//0724 by 死神 - -・バグ修正と安定化の為の修正。 -・ペットの攻撃でイベントが処理されず鯖落ちになる問題修正。(未テスト) -・モンスターの大量発生で鯖が落ちる問題修正。(モンスターを10000匹を呼んで -魔法で倒すことを5回程テスト。ただ動かないやつのみ。) -・取り巻きがボスと一緒に死ぬ時アイテムを落とさないように変更。(未テスト) -・battle_athena.confのpc_skillfleeをplayer_skillfreeに変更して処理を変更。 -・アイスウォールにskill_unit_settingを使うスキルで攻撃できないように修正。 -・その他細かい修正少し。安定化されたかどうかはまだわかりませんがXP1800+、512M、モンスター配置50%で10000匹召喚して異常なかったので大丈夫になったと思います。大丈夫じゃなくても責任はとれませんが... - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - mob.h 修正。 - mob.c - mob_timer()、mob_deleteslave_sub()、mob_damage() 修正。 - npc.c - npc_event() 修正。 - skill.c - skill_area_sub()、skill_unit_onplace()、skill_castend_nodamage_id() 修正。 - clif.c - clif_parse_GMKick() 修正。 - battle.h - battle.c - battle_damage()、battle_check_target()、battle_config_read() 修正。 - pc.c - pc_calc_skilltree()、pc_checkskill() 修正。 - map.h 修正。 - map.c - map_foreachinarea()、map_foreachinmovearea() 修正。 - map_foreachobject() 修正。 - --------------- -//0723 by DRG - -・0719の修正 - (map/) - pc.c pc_calc_skilltree()修正 - --------------- -//0722 by パイン - -・gcc 2.29系列でもコンパイルが通るように修正。 - これは以前にも直したはずなのですが、なぜか元に戻っていましたので - 皆さん注意をお願いします。 - あと、gcc3系列なら定数はどこに書いても問題ないのですが、 - gcc2.29系列では「必ずブロック要素の一番最初」に書かないとコンパイルが - 通りませんのでこちらもご注意願います。 - -コンパイルが通る例 -void hoge() { - const char booboo = 1; - … - -コンパイルが通らない例 -void hoge() { - … - const char booboo = 1; - … - - (map/) - skill.h マクロを修正 - skill.c skill_addisional_effect()修正 - --------------- -//0721 by 聖 - -・ボスにレックスデビーナが効いた問題を修正。 -・ボスにカードによる状態異常が効かなかった問題を修正。 - 本鯖ではマリナカード等でオークヒーローなどを殴ると時々凍結します。 - (結構微妙な実装方法なので、何か問題があった場合 -  その辺詳しい方おりましたら修正してやってください(^^; )) - --------------- -//0720 by 胡蝶蘭 - -・PCにIWを重ねるとMOBが攻撃してこない問題を修正 - ・IWに重なっていても、隣接可能ならMOBが近寄ってきます - ・どんな地形にいても、隣接しているなら攻撃可能になります - ・ただし、MOBが遠距離攻撃可能で、攻撃範囲内にPCがいても、 - 隣接不可能なら攻撃してきません。これの解決はかなり面倒なので。 - - mob.c - mob_can_reach()修正 - battle.c - battle_check_range()修正 - --------------- -//0719 by DRG - -・下位スキルがない場合は上位スキルがふれないようにしました。 - battle_athena.confのskillfleeで設定可能です。 - 下位スキルがないまま上位スキルをふった状態で、このオプションを使う場合はスキルリセットする必要があります。 - 一般アカにスキルリセットを解放したいときに使ってやって下さい。 - (conf/) - battle_athena.conf - (map/) - battle.c - battle.h - pc.c pc_calc_skilltree(),pc_checkskill()修正 - --------------- -//0718 by 死神 - -・色々と修正。 -・毒によって防御が減るように変更。(HPはまだ減りません。) -・アイスウォールに攻撃できるように変更。(今は全ての攻撃に当たります。) -ただ鞍のバグらしくアイスウォールをクリックすると鞍から0x89パケットが30回以上連続で送ってくることが起こりますが原因は不明です。多分鞍のバグだと思いますが...) -・戦闘に関わる計算等を修正。 -・ゼニが増えるバグ修正。(多分これでこのバグはなくなると思いますがどうなのか報告をお願いします。) -・二刀流の左手武器の種族、属性、Sizeのダメージ補正を右手武器に適用するかどうかを設定できるように変更。 -・その他修正はしたはずですが覚えてません。(修正してない物もありますがdiff当ての途中でどれを作業したのかを忘れたので...) - (common/) - mmo.h 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_get_baseatk()、battle_get_speed()、battle_get_adelay() 追加。 - battle_get_amotion() 、battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_get_atk()、battle_get_atk_()、battle_get_atk2() 修正。 - battle_get_attack_element()、battle_get_attack_element2() 修正。 - battle_get_str()、battle_get_agi()、battle_get_vit()、battle_get_int() 修正。 - battle_get_dex()、battle_get_luk()、battle_get_flee() 修正。 - battle_get_flee2()、battle_get_hit()、battle_get_critical() 修正。 - battle_get_def()、battle_get_def2()、battle_get_mdef() 修正。 - battle_get_element()、battle_check_target()、battle_check_range() 修正。 - battle_weapon_attack()、battle_config_read() 修正。 - clif.c - clif_skill_estimation()、clif_mob0078()、clif_mob007b() 修正。 - pc.c - pc_attack_timer()、pc_attack()、pc_calcstatus()、pc_payzeny() 修正。 - pc_getzeny() 修正。 - npc.c - npc_buylist()、npc_selllist() 修正。 - pet.c - pet_attack()、pet_randomwalk()、pet_ai_sub_hard() 修正。 - mob.h 修正。 - mob.c - calc_next_walk_step()、mob_attack()、mobskill_castend_id() 修正。 - mobskill_use_id()、mobskill_use_pos()、mob_ai_sub_hard() 修正。 - mob_damage()、mob_changestate() 修正。 - mob_get_adelay()、mob_get_speed() 削除。 - skill.h 修正。 - skill.c - skill_unitsetting()、skill_unit_ondamaged()、skill_unit_timer_sub() 修正。 - skill_unit_timer()、skill_area_sub()、skill_unit_onplace() 修正。 - skill_status_change_start() 修正。 - chat.c 修正。 - makefile 修正。 - chrif.c 修正。 - guild.c 修正。 - itemdb.c 修正。 - map.c 修正。 - party.c 修正。 - script.c 修正。 - path.c 修正。 - --------------- -//0717 by 聖 - -・大量にモンスターを召還して一度に倒すとmap-serverが落ちる問題を修正。 - (カホを100体ずつ召還して50回テストをしたので恐らく大丈夫だと思います。) -・その他結構細かい修正 - (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 聖 - -・精錬成功率に対してBSの武器研究が正しく適用されていなかった問題を修正。 - (map/) - pc.c - pc_percentrefinery() 修正。 - --------------- -//0715 by 死神 - -・マップサーバーから表示される物を表示するかどうかの設定ができるようにしました。スキル表示だけでもなくしてやるとサーバーがかなり楽になったりもします。 -開発やバグトレースの時は表示することをお勧めします。 -・その他細かい修正。 -・修正した所を全て書けないのでファイルだけ。 - (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 死神 - -・細かい修正。 -・シールドブーメランで盾の重量と精錬によってダメージが増えるように修正。精錬ダメージを足す時適用でダメージ+重量+盾精錬*4(この4はrefine_db.txtの防具の過剰精錬ボーナスを使ってるので変更可能です。)になります。 -・スキルによる吹き飛ばし処理で0x88パケットを使っていましたがそのパケットの優先順位がかなり低いらしく後で来るパケットによって無視されることもあるようなのでプレイヤーだけに適用してモンスターには0x78を使うように変更しました。 -でも位置ずれは完全になくならないようです。(恐らく鞍のバグだと思います。鯖の -座標を確認してみましたが鯖の方は問題がありませんでした。) -プレイヤーの場合0x78(PACKETVERが4以上なら0x1d8)が使えません。分身を作ってしまうので... -・バグ報告スレッド2 の47を取り込みました。 -・その他修正した所少しあり。 - (db/) - refine_db.txt 修正。 - item_db.txt 修正。 - (map/) - battle.c - battle_stopattack()、battle_stopwalking() 修正。 - battle_get_attack_element2()、battle_calc_pc_weapon_attack() 修正。 - battle_weapon_attack() 修正。 - path.c - path_blownpos() 修正。 - pc.h 修正。 - pc.c - pc_stop_walking()、pc_damage() 修正。 - pc_getrefinebonus() 追加。 - mob.c - mob_damage() 修正。 - pet.c - pet_target_check()、pet_stop_walking()、pet_performance() 修正。 - skill.c - skill_attack()、skill_blown()、skill_status_change_start() 修正。 - skill_castend_damage_id() 修正。 - makefile 修正。 - --------------- -//0713 by ぽぽぽ - -・mob_avail.txt追加。item_avail.txtと同様の指定でモンスターの見た目を他のIDのものに変更します。 - モンスターのID以外を指定したりするとPCやNPCの姿をしたMOBに一方的に攻撃される場合があるので注意。 - (db/) - mob_avail.txt 追加。 - (map/) - clif.c - clif_mob0078()、clif_mob007b() 修正。 - mob.h 修正。 - mob.c - mob_readdb_mobavail()、mob_get_viewclass()追加。 - do_init_mob()、mob_readdb() 修正。 - --------------- -//0712 by 死神 - -・シールドチャージ、シールドブーメラン実装。 -・オートガードはとりあえずエフェクトが出るように変更しました。 -・0708で書き忘れ。ディフェンダーを使った時ASPDと移動速度は20%低下します。 -本鯖で低下するのは確かのようですがどれぐらい下がるのかはさっぱりわかりまんので... -・その他細かい修正。 - (db/) - cast_db.txt 修正。 - skill_db.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_calc_damage()、battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 - skill.c - skill_additional_effect()、skill_attack()、skill_castend_nodamage_id() 修正。 - skill_check_condition()、skill_status_change_start() 修正。 - skill_castend_damage_id() 修正。 - pc.h 修正。 - pc.c - pc_calcstatus()、pc_checkallowskill()、pc_unequipitem() 修正。 - --------------- -//0711 by npc - -・鉱石製造エフェクトの修正 -・スクリプト埋め込み変数にHp,MaxHp,Sp,MaxSpを追加(読み込みのみ) - (map/) - skill.c - skill_produce_mix()修正。 - pc.c - pc_readparam()修正。 - (db/) - const.txt 修正。 - --------------- -//0710 by 胡蝶蘭 - -・名前に半角スペースが入ったパーティーを作成したとき、および、 - 半角スペースが入った名前のPCをパーティメンバにしたとき、 - party.txtが正しく読み込めなくなる問題を修正 - - (char/) - int_party.c - inter_party_fromstr()修正 - -・Message of the Day 機能追加 - ・ログインしたユーザーにMOTDを表示させることが出来ます。 - ・map-server.exe実行時のカレントディレクトリ(help.txtと同じ - ディレクトリ)にmotd.txtを作ると表示します。 - ・MOTDが表示されるタイミングは、 - 「マップサーバーにログインした直後の、マップロード完了時」です。 - つまり、ログイン直後、キャラセレ直後および、 - マップサーバー間移動の時(マップサーバーの分散を行っている場合のみ) - のマップロードが終わった時に表示されます。 - ・表示方法はhelp.txtと同じで普通のメッセージとして送信します。 - (ギルド告知メッセージは文字数制限があり、GMアナウンスは長時間 - 画面の上部に表示されてしまうため) - ・会話と区別がつくように、"< Message of the Day >"、"< End of MOTD >" - の文で上下を囲います。 - - (map/) - pc.c - pc_authok()修正 - - --------------- -//0709 by ぽぽぽ - -・スクリプトにemotion追加 - emotion n;と使うとNPCがエモを出します。nは0〜33が使用可能。 -・精錬と街ガイドのNPCを本鯖の台詞に合わせて修正。 - (conf/) - npc_town_refine.txt、npc_town_guide.txt 修正。 - (map/) - script.c - buildin_emotion() 追加。 - --------------- -//0708 by 死神 - -・スキルキャストキャンセル、ディフェンダー、オートガード実装。 -・オートガードの場合ガードしてもエフェクトは出ません。ミスになるだけです。本鯖の方は表示されるかどうかもわからないしパケット情報もないので... -・ディフェンダーは未テスト。bLongAtkDefを使ってるのでホルンカードのようにbLongAtkDefを上げる物を装備して使うと遠距離物理攻撃を全て無効にできます。(これも本鯖の仕様がどうなのかはわかりません。) -・その他細かい修正。 - (db/) - cast_db.txt 修正。 - (map/) - map.h 修正。 - map.c - map_quit() 修正。 - skill.h 修正。 - skill.c - skill_castend_nodamage_id()、skill_use_id()、skill_check_condition() 修正。 - skill_castend_id()、skill_castend_nodamage_id()、skill_castcancel() 修正。 - pc.c - pc_calcstatus()、pc_setpos()、pc_damage() 修正。 - battle.c - battle_calc_damage()、battle_damage() 修正。 - clif.c - clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 - mob.c - mob_damage() 修正。 - itemdb.c - itemdb_searchrandomid() 修正。 - --------------- -//0707 by 死神 - -・0705の阿修羅覇鳳拳のバグ修正。 - (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 -・修正 - conf/npc_warp_umbala.txt - --------------- -//0705 by 死神 - -・色々と修正。 -・プレイヤーのクリティカル計算にバグがあったので修正。 -・爆裂波動の処理修正。 -・モンクのコンボを修正。 -・阿修羅覇鳳拳の使用によってマップ鯖の無限ループバグ修正。(これかなり致命的な物だったようです。) -・コンボで使う阿修羅覇鳳拳は敵をクリックする必要がないように修正。 -・猛龍拳で敵を吹き飛ばす距離を5セルに変更。よってコンボで使う阿修羅覇鳳拳は距離チェックをしません。5セル飛ばされた敵は阿修羅覇鳳拳の射程から離れたわけなので距離チェックなしで発動します。(本鯖の仕様なんて知りません。) -・マップの名前を16byteから24bytesに変更。(大した意味はありませんが安全の為の物です。) -・ウェディングキャラによる鞍落ちを防ぐ為に修正。 -・その他少し修正。(テストは殆んどしてません。) - (conf/) - battle_athena.conf 修正。 - (db/) - skill_db.txt 修正。 - (common/) - mmo.h 修正。 - (doc/) - conf_ref.txt 修正。 - item_bonus.txt 修正。 - (map/) - battle.h 修正。 - battle.c - battle_get_flee2()、battle_calc_pet_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_config_read() 修正。 - skill.h 修正。 - skill.c - skill_status_change_start()、skill_castend_damage_id() 修正。 - skill_check_condition()、skill_use_id()、skill_blown() 修正。 - skill_castend_map()、skill_unit_onlimit()、skill_attack() 修正。 - pc.c - pc_attack_timer()、pc_setpos()、pc_setsavepoint() 修正。 - pc_movepos()、pc_calcstatus()、pc_bonus() 修正。 - clif.h 修正。 - clif.c - clif_set0078()、clif_set007b() 修正。 - clif_updatestatus()、clif_initialstatus()、clif_parse_UseSkillToId() 修正。 - clif_skillinfo() 追加。 - map.h 修正。 - map.c - map_setipport()、map_addmap() 修正。 - その他抜けた所少しあり。 - --------------------- -//0704 by kalen - -・Umbala Warp追加 - conf/npc_warp_umbala.txt - --------------------- -//0703 by いど - -・サーバーsnapshot - --------------- -//0702 by ぽぽぽ - -・ファーマシーのエフェクトを本来のものに変更 -・スクリプトでの埋め込み変数にBaseExp,JobExp,NextBaseExp,NextJobExp追加 - (map/) - skill.c - skill_produce_mix() 修正。 - pc.c - pc_readparam()、pc_setparam() 修正。 - (db/) - const.txt 修正。 - --------------- -//0701 by ぴざまん - -・ステータス異常判別式導入。各ステータス異常の発動率がVIT/INT/MDEFに影響するようになります。持続時間短縮はまた今度で_| ̄|○ -・不死に凍結が効いたバグ修正。 - (map/) - skill.c - skill_additional_effect()、skill_castend_nodamage_id() 修正。 - --------------- -//0700 by 南 - -・697のバグ修正。 -    (db/) - mob_db.txt - --------------- -//0699 by 死神 - -・装備のボーナスクリティカルは自分の間違いだったのでbCriticalRateをbCriticalに変更。それと0695で書き忘れですがASPDを上げるカードや装備の一部をbAspdAddRateからbAspdRateに変更しました。みすとれ巣のシミュレーターによるとドッペルカードは複数でも一つしか適用されないみたいだったので。 - (db/) - item_db.txt - --------------- -//0698 by 死神 - -・一部のキャラに重量が0になってカプラなど何もPC,NCPが表示されなくなるバグ修正。(それだけ) - (common/) - mmo.h 修正。 - (map/) - clif.c - clif_updatestatus() 修正。 - pc.c - pc_calcstatus() 修正。 - --------------- -//0697 by 南 - -・mob_db修正 - ドロップを中心に修正。 -    (db/) - mob_db.txt - --------------- -//0696 by 死神 - -・バグ修正。 -・テレポートやワープ等の時スキルユニットから抜ける処理が入って -なかったのでSAFETYWALL等によって鯖落ちが起こったようです。(確か報告も -あったと思いますが...) よって修正はしましたが確認はしてません。報告を -お願いします。 -・スキルによる吹き飛ばし処理をちょっと修正とモンスターのコードを少し修正。 -多分変になったことはないと思いますが変だったら報告してください。 -・その他細かい修正。 - (map/) - skill.h 修正。 - skill.c - skill_blown()、skill_attack()、skill_unit_move() 修正。 - skill_castend_nodamage_id()、skill_castend_damage_id() 修正。 - skill_unit_out_all()、skill_unit_out_all_sub() 追加。 - mob.c - mob_stop_walking()、mob_spawn()、mob_warp() 修正。 - mob_can_move()、mob_changestate() 修正。 - map.h 修正。 - pc.c - pc_setpos() 修正。 - battle.c - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack() 修正。 - --------------- -//0695 by 死神 - -・少し修正。 -・プレイヤーの基本パラメータを2byteに拡張。 -・item_db.txtをラグナゲートの説明に合わせて修正。 -・bAddEffとbResEffの確率を百分率から万分率に変更。 -・スクリプトstatusupとstatusup2追加。 -statusup bStr; のように使って機能はステータスポイントを減らして -基本パラメータを1上げる。 -statusup2 bInt,n; のように使って機能はステータスポイントを減らさずに -基本パラメータをn上げる。 -・その他細かい修正。 - (conf/) - battle_athena.conf 修正。 - (db/) - item_db.txt 修正。 - const.txt 修正。 - (doc/) - item_bonus.txt 修正。 - conf_ref.txt 修正。 - (common/) - mmo.h 修正。 - (char/) - char.c - mmo_char_send006b()、parse_char() 修正。 - (map/) - map.h 修正。 - clif.h 修正。 - clif.c - clif_initialstatus()、clif_updatestatus() 修正。 - pc.h 修正。 - pc.c - pc_bonus()、pc_calcstatus()、pc_equippoint()、pc_equipitem() 修正。 - pc_jobchange()、pc_checkbaselevelup()、pc_statusup() 修正。 - pc_statusup2() 追加。 - battle.h 修正。 - battle.c - battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pc_weapon_attack()、battle_config_read() 修正。 - skill.c - skill_additional_effect()、skill_status_change_start() 修正。 - script.c - buildin_statusup()、buildin_statusup2() 追加。 - atcommnad.c 修正。 - --------------- -//0694 by 死神 - -・バグ修正と細かい修正。 -・bCriticalRateが正しく適用されなかった問題修正。 -・ペットによるステータスボーナス追加。ステータスボーナスは装備の -スクリプトによって設定します。ただペットによるボーナスはカードによる物と同じ扱いをします。そして属性の適用は一番優先順位低いです。今は何も入ってませんが... - (conf/) - battle_athena.conf 修正。 - (db/) - const.txt 修正。 - pet_db.txt 修正。 - (doc/) - item_bonus.txt 修正。 - conf_ref.txt 修正。 - db_ref.txt 修正。 - (map/) - map.h 修正。 - map.c - map_quit() 修正。 - battle.h 修正。 - battle.c - battle_calc_pc_weapon_attack()、battle_weapon_attack() 修正。 - battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 - battle_config_read() 修正。 - pc.c - pc_calcstatus()、pc_bonus()、pc_setpos()、pc_authok() 修正。 - pc_damage()、pc_autosave_sub() 修正。 - pet.h 修正。 - pet.c - pet_hungry()、pet_birth_process()、pet_recv_petdata()、pet_food() 修正。 - pet_return_egg()、pet_ai_sub_hard()、read_petdb() 修正。 - clif.c - clif_sendegg()、clif_parse_LoadEndAck() 修正。 - atcommand.c 修正。 - makefile 修正。 - --------------- -//0693 by 胡蝶蘭 - -・SC_*の列挙表をリナンバリング - クライアントに通知するのを64未満から128未満に増やした - パケット情報に合うようにリナンバー - StatusChangeの配列を128から192に増やしたのでメモリ使用量が増えます。 - - (db/) - const.txt - SC_* の数値を変更 - (map/) - skill.h - SC_* の列挙の数値を変更 - map.h - MAX_STATUSCHANGEを128から192に増やした - skill.c - skill_status_change_start(),skill_status_change_end(), - skill_status_change_clear()の通知処理を変更 - -・演奏/ダンスの処理を変更 - 演奏/ダンス中かどうかをSC_DANCINGで判定するように変更 - (判定処理が多少高速化されたはず) - ワープ(マップ移動や蝿など)すると演奏/ダンスを中断するように変更 - - skill.h/skill.c - skill_check_dancing()削除、skill_stop_dancing()追加 - skill_delunitgroup(),skill_initunitgroup()変更 - skill_status_change_start()変更 - skill_castend_nodamage_id()変更 - 書き損じがあるかも・・ - pc.c - pc_calcstatus(),pc_setpos(),pc_damage()変更 - -・不協和音スキルの修正 - (db/) - skill_db.txt - 不協和音スキルのHIT数修正 - (map/) - skill.c - skill_status_change_timer()変更 - battle.c - battle_calc_misc_attack()修正 - --------------- -//0692 by 胡蝶蘭 - -・アドリブスキルが使用できない問題修正(skill_dbの添付し忘れ) - (db/) - skill_db.txt - アドリブの消費SPを1に修正 - -・mob_db2.txtがあればmob_db.txtにオーバーライドするように - オリジナルmobを作ってる人は使うと便利かもしれません。 - - mob.c - mob_readdb() - -・鯖落ちバグ報告時のためのスタックバックトレースログ所得方法を紹介 - 鯖落ちバグの報告時に、この情報をコピペすると開発者が喜びます。 - Cygwinでcoreの吐かせる方法も紹介してます。 - - (doc/) - coredump_report.txt - --------------- -//0691 by 胡蝶蘭 - -・item_db2.txtがあればitem_db.txtにオーバーライドするように - オリジナルアイテムを作ってる人は使うと便利かもしれません。 - - itemdb.c - itemdb_readdb()修正 - -・演奏/ダンス系スキル仮実装 - ・演奏/ダンス中は移動が遅く、スキルも使えないようになりました - ・アドリブスキルで演奏/ダンスを中断できるようになりました - ・演奏/ダンスは石化などの異常、MHPの1/4以上のダメージで中断します - ・キャラクターグラフィックは演奏/ダンスしません - ・演奏/ダンス中のSP消費は未実装です - ・移動しても効果範囲はついてきません - ・重複しても不協和音などに変化しません - ・エフェクトが出ても効果は未実装のものがあります - ・ほとんど未テストなので多数の不都合があると思います - - skill.h - SC_* の列挙表を修正 - skill.c - skill_check_dancing()追加 - SkillStatusChangeTable[]修正 - 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()修正 - その他は忘れました - pc.c - pc_calcstatus(),pc_damage()修正 - --------------- -//0690 by 波浪 - -・細かい修正 - (db/) - item_db.txt 錐とメギンギョルドのbonusを修正。 - (doc/) - item_bonus.txt 修正。 - --------------- -//0689 by 死神 - -・倉庫バグ修正と細かい修正。 - (map/) - pc.c - pc_modifybuyvalue()、pc_modifysellvalue() 修正。 - storage.c - storage_storageopen() 修正。 - storage_storage_quit()、storage_storage_save() 修正。 - --------------- -//0688 by 聖 - -・ディスカウント、コムパルションディスカウント、オーバーチャージが適用されなかった問題を修正。 - (map/) - pc.c - pc_modifybuyvalue() 修正。 - pc_modifysellvalue() 修正。 - --------------- -//0687 by 死神 - -・少し修正。 -・battle_athena.confに項目追加。(詳しいことはconf_ref.txtで) -・item_avail.txtの処理を変更。アイテムIDの後に0を入れると今まで通りに使用不可能になるが0以外の数値を入れると使用不可能ではなくその数値をアイテムのIDとして見た目だけをそれに変更します。よって鞍落ちアイテムを別の物に表示して鞍落ちを防ぐことができます。(表示だけ変えて鯖の処理は本当のアイテムIDの物として認識します。修正は全てしたと思いますが抜けた所があるかも知りませので見た目変更したアイテムで鞍落ちが起こったら報告してください。) 鯖の処理はこれが限界です。(少なくとも自分には) アイテムが同じ物が二つ表示されて間違い安いとかどうこうとかの文句を言いたい人は鞍作れよ。以上。 -・ジルタスとアリスのコマントアウト解除。item_avail.txtで卵をルビーとアクアマリンで表示して捕獲アイテムも他の物に表示するように変更しています。 -・ダメージ計算のバグ修正。(大した物じゃありませんが弓だけちょっと問題があったようです。) -・青箱等のアイテムで得た装備品は未鑑定になるように変更。 -・装備ボーナスの内部処理修正と少し変更。(詳しいことはitem_bonus.txtで) -・キャラ鯖にテータを送る時キャラ、倉庫、ペットのテータを同時に送るように変更。(キャラ鯖とマップ鯖の間の転送量が増えるかも知りれませんがデータを同期化の為です。) -・FWの動作間隔を0.25秒から0.1秒に変更。(これで摺り抜は少し減るはずです。) -・カートレボリュションでどんな状態異常もかからないように変更。 - (conf/) - battle_athena.conf 修正。 - (db/) - const.txt 修正。 - item_avail.txt 修正。 - pet_db.txt 修正。 - (doc/) - conf_ref.txt 修正。 - item_bonus.txt 修正。 - (map/) - map.h 修正。 - map.c - map_quit() 修正。 - battle.h 修正。 - battle.c - battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_get_dmotion()、battle_config_read() 修正。 - pc.c - pc_calcstatus()、pc_bonus()、pc_bonus3()、pc_setpos() 修正。 - pc_makesavestatus()、pc_autosave_sub()、pc_modifybuyvalue() 修正。 - pc_modifysellvalue()、pc_stop_walking() 修正。 - skill.c - skill_additional_effect()、skill_unitsetting() 修正。 - clif.c - clif_buylist()、clif_selllist()、clif_set009e()、clif_set0078() 修正。 - clif_set007b()、clif_additem()、clif_itemlist()、clif_equiplist() 修正。 - clif_storageitemlist()、clif_storageequiplist()、clif_changelook() 修正。 - clif_arrow_create_list()、clif_useitemack()、clif_tradeadditem() 修正。 - clif_storageitemadded()、clif_getareachar_item() 修正。 - clif_skill_produce_mix_list()、clif_cart_additem()、clif_cart_itemlist() 修正。 - clif_cart_equiplist()、clif_vendinglist()、clif_openvending() 修正。 - clif_produceeffect()、clif_sendegg()、clif_pet_equip()、clif_mvp_item() 修正。 - clif_pet0078()、clif_pet007b() 修正。 - itemdb.h 修正。 - itemdb.c - itemdb_searchrandomid()、itemdb_search()、itemdb_readdb() 修正。 - itemdb_read_itemavail()、itemdb_read_itemvaluedb() 修正。 - itemdb_equippoint() 削除。 - storage.h 修正。 - storage.c - storage_storage_quitsave() ->storage_storage_quit()に変更と修正。 - storage_storageclose() 修正。 - atcommand.c 修正。 - pet.c - pet_change_name()、pet_equipitem()、pet_unequipitem() 修正。 - pet_birth_process()、pet_return_egg() 修正。 - script.c - buildin_getitem() 修正。 - mob.c - mob_stop_walking() 修正。 - makefile 修正。 - --------------- -//0686 by 聖 - -・細かい修正。 - (map/) - pc.h 修正。 - --------------- -//0685 by 波浪 - -・0683、0684でのbonusの追加にともなってitem_db.txtを修正 -・他色々修正 - (db/) - item_db.txt 修正。 - (doc/) - item_bonus.txt 修正。 - --------------- -//0684 by 死神 - -・細かい修正。 -・死んだふりの時スキルとアイテムが使えないように変更。 -・bInfiniteEndure追加。機能は無限インデュア。 -・ダメージ表示の処理少し変更。 - (db/) - const.txt 修正。 - (doc/) - item_bonus.txt 修正。 - (map/) - map.h 修正。 - pc.c - pc_calcstatus() 修正。 - pc_equipitem()、pc_unequipitem() 修正。 - clif.c - clif_parse_UseItem()、clif_parse_UseSkillToId() 修正。 - clif_parse_UseSkillToPos()、clif_parse_UseSkillMap() 修正。 - clif_damage()、clif_skill_damage()、clif_skill_damage2() 修正。 - clif_parse_LoadEndAck() 修正。 - skill.c - skill_status_change_timer() 修正。 - --------------- -//0683 by 死神 - -・バグ修正とbonus追加。 -・倉庫バグ、属性バグ修正とその他のバグ修正。 -・スクリプトbonus3追加。今はbAddMonsterDropItemだけが対応になっています。 -・bonus bRestartFullRecover;n;等でnは無意味だけど消すのはちょっとまずいですので0にして入れた方がいいです。bonusは2つの数値が必要なスクリプトなので。 -・bDefRatioAtkを防御無視に変更。 -・0677で書き忘れ。 -・武器の属性適用優先順位を製造>カード>武器に変更。製造が最優先です。(属性がある時に話です。属性がない場合属性ある物に上書きされたりはしません。) -・装備で適用される効果の優先順位を右手>左手>体>頭上>頭中>頭下>ローブ>靴>アクセサリー1>アクセサリー2>矢に設定。(本鯖仕様がどうなのか分かることができそうな物でもないのでアテナの仕様と言うことで。) 右手が最優先です。 -・武器の射程を右手と左手の武器の中で長い物を適用するように変更。 - (db/) - const.txt 修正。 - (doc/) - item_bonus.txt 修正。 - (map/) - map.h 修正。 - battle.c - battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_calc_pet_weapon_attack()、battle_calc_magic_attack() 修正。 - battle_damage() 修正。 - pc.c - pc_autosave_sub()、pc_calcstatus() 修正。 - pc_bonus()、pc_bonus2() 修正。 - pc_bonus3() 追加。 - script.c - buildin_bonus3() 追加。 - mob.c - mob_once_spawn()、mob_damage() 修正。 - storage.h 修正。 - storage.c - storage_storage_save() 追加 - atcommand.c 修正。 - --------------- -//0682 by 聖 - -・スピードアップポーション系のバグ修正 - (map/) - pc.c - pc_calcstatus() 修正。 - --------------- -//0681 by 死神 - -・装備バグ修正。 - (map/) - pc.c - pc_equipitem() 修正。 - --------------- -//0680 by 聖 - -・細かい修正。 -・「@monster」コマンドでモンスターIDの指定に「-1」、「-2」等を指定すると - モンスターをランダムで召還できる機能を追加。 - (map/) - mob.c - atcommand.c - --------------- -//0679 by 波浪 - -・0676で新しいアイテム効果が実装されたので、item_db.txtを修正(bonus bAddMonsterDropItem,n,x; は、種族判定ができないのでとりあえず保留しました。) -・他色々修正 - (db/) - item_db.txt - job_db1.txt - (doc/) - item_bonus.txt - --------------- -//0678 by 聖 - -・召還関連の細かい修正。 - (map/) - mob.c - mob_once_spawn_area() 修正。 - --------------- -//0677 by 死神 - -・細かい修正。 -・アイテム売買によって得られる経験値をカードによるスキルでは得られないように修正。 -・毒に掛かると自然回復できないように修正。 -・0676で書き忘れ。製造武器の場合製造によって与えた属性が武器の属性より優先して適用されるように変更。(製造武器が無属性の場合は適用されません。) - (doc/) - item_bonus.txt 誤字修正。 - (map/) - npc.c - npc_buylist()、npc_selllist() 修正。 - pc.c - pc_calcstatus()、pc_natural_heal_sub() 修正。 - --------------- -//0676 by 死神 - -・色々と修正。 -・battle_athena.confに項目追加。(詳しいことはconf_ref.txtで) -・みすとれ巣を参考してダメージ計算を少し修正。 -・装備bonusに色々と追加。(詳しいことはitem_bonus.txtで) -・自動セーブする時(キャラ鯖にデータを送る時)倉庫のデータも送るように変更。 -・0667で言い忘れ。カートを外してもアイテムが消えないように変更。(本鯖で消えるのが仕様だと思っていたけど修正されたみたいなので。) -・取引要請を受ける側は基本スキルをチェックしないように修正。(受ける側の基本スキルチェックは自分が入れた物ではないです。いつの間にか入っていたので削除しました。) -・防具の精錬ボーナスを端数無視に変更。(これが本鯖の仕様みたいなので) -・アンクルの処理少し変更。(かからないと言う報告がありましたので...) -・プレイヤーのステータス計算で問題ありそうな所修正。 -・カードのIDで機能が決まっていたカードもスクリプトによって変えることができるように変更。(詳しいことはitem_bonus.txtで) -・aspd計算方法少し変更。 -・矢にbCritical、bAtkEle、bHit、bAddEle、bAddRace、bAddSize、bAddEffを適用できるように変更。矢を使うスキルや弓による攻撃だけに矢のbCritical、bAtkEle、bHit、bAddEle、bAddRace、bAddSize、bAddEffが適用されるように修正。 -・キリの実装に為に修正はしましたがキリが防御無視なのかどうかがわからなかったので防御無視はしないようになっています。 -・テストした物はbAddMonsterDropItemとbGetZenyNumだけなので正常に動作するかどうかの報告が欲しい所です。(ついでにitem_dbの修正も...これで吸収系とオートスペル系以外は殆ど実装できるはずです。多分...) -・その他は覚えてないけど修正した所が少しあるかも... - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - item_bonus.txt 修正。 - (db/) - const.txt 修正。 - (char/) - inter.c - inter_init() 修正。 - int_storage.c - mapif_parse_SaveStorage() 修正。 - (map/) - trade.c - trade_traderequest() 修正。 - pc.h 修正。 - pc.c - pc_autosave_sub()、pc_calcstatus() 修正。 - pc_bonus()、pc_bonus2() 修正。 - pc_setrestartvalue()、pc_setequipindex() 修正。 - pc_check_equip_wcard()、pc_check_equip_dcard()、pc_check_equip_card() 削除 - その他修正。 - skill.h 修正。 - skill.c 修正。 - skill_castend_nodamage_id()、skill_unit_onplace() 修正。 - skill_check_condition()、skill_additional_effect() 修正。 - skill_attack()、skill_status_change_start() 修正。 - map.h 修正。 - battle.h 修正。 - battle.c - battle_get_def()、battle_get_mdef2() 修正。 - battle_weapon_attack()、battle_damage() 修正。 - battle_calc_magic_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pet_weapon_attack() 修正。 - battle_calc_misc_attack()、battle_config_read() 修正。 - mob.c - mob_damage() 修正。 - pet.c - pet_target_check() 修正。 - clif.c - clif_set0078()、clif_set007b()、clif_changelook() 修正。 - atcommand.c 修正。 - --------------- -//0675 by 波浪 - -・韓鯖で村正の効果が変更されたので報告を元にitem_db.txtを修正 -・job_db1.txtを修正 - (db/) - item_db.txt - job_db1.txt - --------------- -//0674 by npc - -・ファーマシーの仮実装。 - (db/) - produce_db.txt - (map/) - skill.c - --------------- -//0673 by 南 - -・集中力向上に装備品の補正が入っていなかったのを修正。 -     (map/)    -      pc.c - --------------- -//0672 by 南 - -・集中力向上に装備品の補正が入っていなかったのを修正。 -     (map/)    -      pc.c - --------------- -//0672 by 聖 - -・モンスター系のバグ修正(すみません、まだ残ってました(^^; ) - (map/) - mob.c - --------------- -//0671 by 聖 - -・IDチェック範囲の修正他。 -・@monsterで数を指定しなくても召還できるように修正。 - (map/) - atcommand.c - battle.c - battle.h - mob.c - pet.c - (conf/) - battle_athena.conf - (doc/) - conf_ref.txt - --------------- -//0670 by RR - -・モンスタードロップ率を修正(本鯖準拠、DBでの設定+1/10000)。 -・落下率0に設定したアイテムを落とすかどうかをbattle_athena.confで設定可能に。 - (map/) - mob.c - mob_damage() 修正。 - battle.c - battle.h - (conf/) - battle_athena.conf - --------------- -//0669 by 聖 - -・モンスタードロップの修正。 - (map/) - mob.c - mob_damage() 修正。 - --------------- -//0668 by 聖 - -・モンスターIDの範囲チェックを修正。 - (map/) - mob.c - mob_db、mob_once_spawn()、mob_once_spawn_area()、 - mob_summonslave()、mob_read_randommonster()、mob_readdb() 修正。 - --------------- -//0667 by 死神 - -・最大HP計算式をミストレ巣を参考して修正。(多分これで本鯖にあっていると思います。) -・防具の精錬ボーナスを0.7に変更。(今は端数を四捨五入していますが本鯖が端数無視なら修正しておきます。) -・@refineコマンドで装備場所IDに0を入れると装備している全ての装備を精錬するように変更。 -・その他細かい修正。 - (db/) - item_db.txt - 7140、7142を元に戻して0666の物はコマントアウトしました。 - job_db1.txt 修正。 - refine_db.txt 修正。 - (map/) - mob.c - mob_once_spawn() 修正。 - itemdb.c - itemdb_read_randomitem() 修正。 - pet.c - pet_food() 修正。 - pc.c - pc_readdb()、do_init_pc()、pc_calcstatus()、pc_setoption() 修正。 - pc_calc_sigma() 追加。 - その他修正。 - map.h 修正。 - battle.c - battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 - atcommand.c 修正。 - --------------- -//0666 by 聖 - -・ランダムアイテムの細かい修正。 -・battle_athena.confの項目追加。 -・古木の枝で召還するモンスターの確率を設定出来るようにしました。 -・モンスター召還アイテムを複数作る事が出来るようにしました。 -・召還アイテムのサンプルとして - 生命の種子をポリン系召還、 - エンブリオをMVPボス系召還にしてみました。 - あまりいいサンプルを思いつかなかったので、 - 何かいい案を思いついた人は書き換えてやってください(^^; - (conf/) - battle_athena.conf - (doc/) - conf_ref.txt - (map/) - mob.h - mob_db 修正。 - mob.c - mob_once_spawn()、mob_makedummymobdb()、mob_readdb() 修正。 - mob_readbranch() -> mob_read_randommonster()に変更。 - battle.h - battle_config 修正。 - battle.c - battle_config_read() 修正。 - itemdb.c - itemdb_read_randomitem() 修正。 - (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 追加。 - mob_boss.txt 追加。 - --------------- -//0665 by J - -・怨霊武士の取り巻きがカブキ忍者になっていたのを酒天狗に修正。 -・オットーにフェイクエンジェルが出すはずの取り巻きがついてたのを修正。 - (db/) - mob_skill_db.txt - --------------- -//0664 by 聖 - -・精錬失敗時他のプレーヤーにもエフェクトが表示されるように修正。 - (map/) - script.c - buildin_failedrefitem() 修正。 - --------------- -//0663 by lide - -・ブランディッシュスピア修正 - (map/) - battle.c - skill.c - --------------- -//0662 by 死神 - -・細かい修正とバグ修正。 -・プロボックによってモンスターは乗算防御と減算防御が減るように修正してプレイヤーは減算防御だけ減るように修正。 -・スクリプトgetgmlevel追加。機能はそのNPCと話しているプレイヤーのGMレベルを返します。 -・0659の書き忘れですがペットのパフォマンスの種類が親密度によって増えるように変更しました。 - (map/) - clif.c - pc.c - script.c - --------------- -//0661 by 死神 - -・細かい修正。 -・接続した時のペットのメッセージを親密度がきわめて親しいの時のみに出るように変更。 -・0659で書き忘れですがペットの支援攻撃は親密度がきわめて親しいの時のみに発生します。(それと親密度によって支援攻撃確率が少し変化します。) -・ジルタスとアリスの卵のIDをitem_db.txtに合わせました。(自分が作ったpet_db.txtの方が自分勝手に設定していた物でしたので。て言うか未実装アイテムだから番号がわからなかっただけですが...) -・pet_db.txtのattack_rateが正しく適用されなかったバグ修正。 - (db/) - pet_db.txt - (map/) - clif.c - clif_parse_LoadEndAck() 修正。 - pc.c - pc_attack_timer() 修正。 - --------------------- -//0660 by いど - -・サーバーsnapshot - --------------- -//0659 by 死神 - -・ペットを色々と修正。(ペットのコードをほとんど変えました。) -・手動的だったペットの動きをモンスターのようにAIとして処理。 -・接続した時のペットのメッセージ実装。(本鯖はどうなのかわかりませんが -Athenaは接続すると100%話すようになっています。) -・ペットのスペシャルパフォマンス実装。(ただ台詞がちょっと変です。いくら探しても該当するパケットが見つからなかったので。) -・ペットの台詞を他のペットの物に変更する機能追加。(詳しいことはdb_ref.txtとpet_db.txtで。) -・ペットによる支援攻撃変更。pet_db.txtで攻撃する時と攻撃を受けた時の支援攻撃 -確率を別々に設定できます。攻撃する時の場合攻撃する度にチェックをしますので -攻撃速度が速いと支援攻撃を受けやすくなります。攻撃を受けた時も同じです。(こちらはダメージを喰らう度になりますが。) 支援攻撃確率はソヒー、ジルタス、アリスだけ自分勝手に設定しています。(他のは全部1%に。ペットの支援攻撃は同じモンスターにはできないようになっています。そしてペットの戦闘能力はモンスターと同じです。) -・/hideコマンド実装。 -・プロボックによって乗算防御も減るように修正。 -・フリーキャストのバグ修正。 -・ノービスのステータスボーナス削除。 -・battle_athena.confの項目追加と削除。 -・修正したファイルだけ。未テストした物もかなりありますので問題があったら報告をお願いします。 - (conf/) - battle_athena.conf - (doc/) - conf_ref.txt - db_ref.txt 追加。(今説明が入っているのはpet_db.txtのみです。 ) - 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 - -・ペットがとどめをさすと、飼い主に経験値が入るようにしました。 -・固定値ダメージじゃ味が無いのでATK1〜ATK2の間で乱数を取るようにしました。 -・あと、ペットがとどめをさすかどうかの設定を、battle_athena.confに加えました。 - - (conf/) - battle_athena.conf pet_finish追加。 - (map/) - battle.c - battle_config_read() 修正。 - battle.h 修正。 - pet.c - pet_attack() 修正。 - (doc/) - conf_ref.txt 説明追記。 - --------------- -//0657 by huge - -・ペットによる攻撃を実装。 -・ペットを持っていて、ペットが装備品をつけてて、さらにランダムによる判定で発動します。 -・ただの遊び心ですw -・battle_athena.confで頻度を設定できます。詳細はdocで。 - - (conf/) - battle_athena.conf pet_attack追加。 - - (map/) - battle.c - battle_config_read() 修正。 - battle.h 修正。 - pc.c - pc_attack_timer() 修正。 - pet.c - pet.h - pet_attack() 追加。 - (doc/) - conf_ref.txt 説明追記。 - - とりあえず、ペットが動いてるなぁって感じと、ダメ回数を増やした程度です。 - --------------- -//0656 by 死神 - -・グランドクロスの修正。(おいおい何度目だ...) -・グランドクロス計算式間違いで修正。(÷3がまずかったみたいです。) -でもまだ反射ダメージがみすとれ巣よりちょっと高いです。(10ぐらいだから -関係ないかも) -・モンクの気球を必中に修正。(自分の間違いのようですので...) - (map/) - skill.c 修正。 - battle.c 修正。 - --------------- -//0655 by 死神 - -・グランドクロスの修正。 -・自分なりに情報を収集してみた結果グランドクロス反射ダメージは -プレイヤーキャラがそのキャラ自身にグランドクロスを使った時の -ダメージだそうなので修正しました。(みすとれ巣の計算とはかなり違うような -気もしますが...) -・魔法とトラップ、鷹の攻撃にも属性耐性と種族耐性を適用するように修正。 -(本鯖の仕様にあっているかどうかは不明ですが適用した方が正しいと思ったので -修正しました。) - (map/) - skill.c 修正。 - map.h 修正。 - battle.c 修正。 - --------------- -//0654 by 死神 - -・グランドクロスの修正と細かい修正。(計算式間違いで修正。) -・0653で書き忘れ。気功による追加ダメージは必中ではないらしいので -修練の加算と同じ所に計算するように変更しました。 -・カートにバグがありそうだったのでちょっと修正。 -・ダメージ計算をほんの少し修正。(ダメージ量が変わったりはしません。) - (map/) - battle.c - battle_calc_magic_attack() 修正。 - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - skill.c - pc_damage_feedback() -> skill_damage_feedback()に変更。 - skill_unit_timer() 修正。 - pc.c - pc_setoption() 修正。 - atcommand.c 修正。 - --------------- -//0653 by 死神 - -・0652の修正と細かい修正。今まで通り未テストも多いです。 -・グランドクロスの処理修正。(本鯖にあっているかどうかの自身はありません。) -ラグナーゲートの説明によると始めに現在HPの20%が消耗されてその後敵に与えた -ダメージの中で一番高い物が戻ってくるようです。そしてその戻ってきた -ダメージは聖の属性を持ちトラストによって聖の耐性が50%になっているので -半分を喰らうことになるようです。(聖の耐性上がる装備をしていれば戻ってくる -ダメージは受けないようです。) -問題なのはプレイヤーの防御属性を計算するかどうかです。今は防御属性計算の -後で聖の属性を計算しています。そして戻ってくるダメージはHPバーは減るけど -表示はされません。本鯖の方がどうなのか不明なので... -それと一応モンスターもグランドクロスの使用が可能です。ただモンスターの場合 -現在HPの20%消耗の後のダメージは受けません。(モンスターが使う -グランドクロスのテストはしてません。) -・ダメージによるディレイ中にまたディレイがかからないように修正。(大した意味はないかも...) -・値段がゼロのアイテムも売れるように変更。 -・@コマンドhealの処理少し修正。 -・移動コード少し修正。 - (map/) - clif.c - clif_selllist() 修正。 - battle.c - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 - skill.c - skill_additional_effect()、skill_unit_onplace() 修正。 - skill_status_change_start()、skill_unit_onplace() 修正。 - skill_castend_damage_id()、skill_castend_id()、skill_attack() 修正。 - skill_unitsetting()、skill_check_condition() 修正。 - skill_use_id()、skill_use_pos() 修正。 - npc.c - npc_parse_script() 修正。 - pc.h 修正。 - pc.c - pc_walk()、pc_walktoxy_sub()、pc_stop_walking() 修正。 - map.h 修正。 - mob.h 修正。 - mob.c - mob_stop_walking()、mob_changestate()、mob_walk() 修正。 - pet.c - pet_changestate() 修正。 - atcommand.c 修正。 - (db/) - skill_db.txt グランドクロス修正。 - cast_db.txt グランドクロス修正。 - --------------- -//0652 by 月詠み - -・グランドクロスを仮実装 - (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 波浪 - -・item_db.txtを修正 - (db/) - item_db.txt - 装備品のアイテム効果を修正 - --------------- -//0650 by 死神 - -・三段掌の発動条件を弓と二刀流以外に変更。 -・表示をせずに内部で処理だけするNPCのCLASSを111から32767に変更。 -・細かい修正。 - (map/) - clif.c - clif_getareachar_npc()、clif_spawnnpc()、clif_pcoutsight() 修正。 - npc.h 修正。 - battle.c - battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - --------------- -//0649 by 波浪 - -・DBとDOC修正 - (db/) - item_db.txt - グングニールはLV4武器なので、韓国のデータにあわせて風属性ではなくします。 - mob_db.txt - size_fix.txt - 楽器は大型に対して75%だそうです。 - (doc/) - item_bonus.txt - --------------- -//0648 by 死神 - -・ショップの値段に-を入れると鯖が落ちる問題修正。(itemdbの初期化をnpcより -先にするように変更。) それだけです。 - (map/) - map.c - do_init() - --------------- -//0647 by nini - -・item_db修正 -・スナッチャー仕様変更。弓以外のすべての武器で出るようになってます。 - (/map/) - battle.c - 三段掌の発動条件追加 - skill.c - スナッチャーの発動条件追加 - (/db/) - item_db.txt - シルクハットにSP上昇追加 - --------------- -//0646 by last - -・item_db.txtの修正(属性関連) - (/db/) - item_db.txt - --------------- -//0645 by るるる(&ree_ron) - -・item_value_db.txtにディスカウント&オーバーチャージ等のスキルによる価格変動を受けるかどうかのフラグメントを追加。 - 実際の形式はサンプルとして用意したitem_value_db.sample.txtを見てください。(設定価格は完全に独断と偏見です) - 同様のサンプルとしてNPC設置スクリプトも添付しておきます。 -・item_value_db.txtのアイテム価格設定で、売値と買値の設定を独立。(item_db.txtは従来どおり買値は売値の半額として自動処理) -・NPCショップにて、1NPCで扱えるアイテム数を最大64から最大100に変更。(クラ自体は120ぐらいまで可能ですが) - (/db) - item_value_db.txt - カラム数を整理しただけです。内容はまったく変更していません。 - (/map/) - clif.c - clif_buylist() clif_selllist() 変更 - itemdb.h - item_data 構造体変更 - itemdb_value_buy() itemdb_value_sell() itemdb_value_notdc() itemdb_value_notoc() マクロ追加 - itemdb.c - itemdb_search() itemdb_readdb() itemdb_read_itemvaluedb() 変更 - itemdb_sellvalue() 削除 - npc.c - npc_buylist() npc_selllist() npc_parse_shop() 変更 - (/sample/) - オマケです。次回SnapShotには含まないで宜しいです。 - -コメント -原型は私の友人ree_ronが行い、私が更に細かいミスを直しただけですが、テストはしましたので大丈夫でしょう。 -元々この処理を導入する理由として、特定アイテムの売値が1z固定にできないものか、という点だったからです。 -そしてやっていくうちに、NPCショップを利用したレアアイテムの販売とかで本鯖露店に近いことが出来るのではないか、 -ということが判ってきたわけです。 -それで一応はデータを用意しましたが、あくまでもサンプルとして利用してください。もし可能ならば、 -さらに修正を加えてアテナ独自として本採用としたデータをパッチアップしてくれればとも思いますがw - - --------------- -//0644 by nini - -・DBの間違い、643で追加されたスクリプト追加。 - (/db/) - item_db.txt - cast_db.txt - チャージアローのキャスト追加。 - exp_guild.txt - 46-50までのexp抜けに追加。 - size_fix.txt - 楽器、鞭、ナックルのサイズ補正修正。 - --------------- -//0643 by 死神 - -・色々と修正。 -・bMVPaddAtkRate削除。bAddRaceで処理するように変更。 -・bIgnoreDefEleとbIgnoreDefRace追加。 -bonus bIgnoreDefEle,n; n属性の敵の防御無視 -bonus bIgnoreDefRace,n; n種族の敵の防御無視 -・bMatkRate追加。魔法攻撃力を+n%上げます。よってbattle.cで計算していたロッドによる魔法攻撃力増幅の計算はなくしました。ステータス画面に上がった数値は表示されません。ダメージ計算の時に適用しています。 -・bCriticalDefに-を入れるとクリティカルを喰らう確率が上がるように変更。 -・NPC番号111は透明NPCですが落とし穴等のことを考えて表示を一切せずに -内部で処理だけするように変更。(flagを使うと何とかなりそうですがその -処理が全然わからなかったので透明NPCにクリックや名前の表示もできないように変更しました。) -・ショップの値段に-を入れるとitem_db.txtもしくはitem_value_db.txtの物を使うように変更。 -・スキルルアフのエフェクトがサイトと同じだったので修正。ついでにルアフの -ダメージも修正。 -・みすとれ巣によるとモンスター情報で表示される防御と魔法防御は乗算ではなく減算みたいなので修正。 -・他力本願ですがitem_db.txtの修正をお願いします。(全てのロッドにbonus bMatkRate,15; を入れる必要があります。その他の修正も必要です。) -・テストしていない物もかなりありますので問題があったら報告してください。 - (map/) - map.h 修正。 - map.c - map_quit() 修正。 - pc.h 修正。 - pc.c - pc_walk()、pc_stop_walking()、pc_setpos()、pc_authok() 修正。 - pc_calcstatus()、pc_bonus()、pc_natural_heal_sub() 修正。 - npc.h 修正。 - npc.c - npc_touch_areanpc()、npc_parse_shop() 修正。 - clif.c - clif_quitsave()、clif_getareachar_npc()、clif_spawnnpc() 修正。 - clif_skill_estimation() 修正。 - battle.c - battle_calc_magic_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_calc_mob_weapon_attack() 修正。 - mob.c - mobskill_use() 修正。 - skill.c - skill_status_change_end()、skill_status_change_timer() 修正。 - skill_status_change_start() 修正。 - (db/) - const.txt 修正。 - (doc/) - item_bonus.txt 修正。 - --------------- -//0642 by 死神 - -・装備バグ修正。(それだけ) - (map/) - pc.c - pc_authok()、pc_checkitem() 修正。 - --------------- -//0641 by 死神 - -・bAspdRateとbSpeedRateのバグ修正。(それだけ)0640で計算をちょっと変えて見ましたがそれがまずかったみたいです。今度も計算式を変えましたがもう大丈夫だと思います。(多分) - (map/) - pc.c - pc_calcstatus()、pc_bonus()、pc_delitem() - --------------- -//0640 by 死神 - -・バグ修正と少し修正。 -・みすとれ巣を参考してダメージ計算を少し修正。 -・battle_athena.confに項目追加。(詳しいことはconf_ref.txtで) -・キャラのHPとSPを2byteから4byteに変更。(テストはしていますがバグが出る -可能性もかなりあります。ただキャラセレクト画面でHPやSPが32768を越える時 -表示は32768になるけど内部の処理は正常に動きますのでそれはバグではありません。 -パケットの長さのせいでそれ以外手段がなかったので...) -・bCriticalDef(クリティカルを喰らわない確率+n%)の処理変更。100にすれば -クリティカルを喰らわないようになります。) -・bInnerAtkをbBaseAtkに変更。みすとれ巣でカードの攻撃は基本攻撃力の方に足されるとありましたので変更しました。今度は上がった攻撃力が表示されます。 -・bDoubleRateの処理変更。確率を足さずに一番高い物だけ適用します。それと左手 -装備の場合無視するように変更しまた。(左手はダブルが適用されませんので) -・bDoubleAddRate追加。機能はダブルアタック確率+n%(武器無視)です。 -左手装備は無視されます。 -・0635で攻撃力表示を本鯖にあわせました。そして今度は弓だけではなく -楽器とムチもdexによって攻撃力が上がるように変更しました。 -・装備した武器が消えるバグ修正の為に少し修正はしましたが本当に -大丈夫なのかは不明です。報告をお願いします。 - (conf/) - battle_athena.conf 修正。 - (db/) - const.txt 修正。 - item_db.txt 修正。 - (doc/) - item_bonus.txt 修正。 - conf_ref.txt 修正。 - (map/) - map.h 修正。 - pc.c - pc_calcstatus()、pc_bonus()、pc_equipitem() 修正。 - battle.h 修正。 - battle.c - battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 - battle_config_read() 修正。 - clif.c - clif_updatestatus()、clif_parse_LoadEndAck()、clif_party_hp() 修正。 - (common/) - mmo.h 修正。 - (char/) - char.c - mmo_char_send006b()、parse_char() 修正。 - --------------- -//0639 by 胡蝶蘭 - -・ladminの修正など - ・プロンプトの入力にTerm::ReadLineを使うようにした -  (入力履歴やコマンドラインの編集が可能に) - ・POSIX関係の処理の例外エラーをトラップするようにしました -  (POSIXが全く使えない環境でも最低限、動くようになったかもしれない) - ・細部修正 - - (tool/) - ladmin - Ver.1.04に。 - -・MODバージョンがおかしい問題を修正 - (common/) - version.h - ATHENA_MOD_VERSIONが8進数で記述されている問題を修正 - 数字の頭に0をつけると8進数になるので注意してください - --------------- -//0638 by 波浪 - -・0635・0637で新しくアイテム効果が実装されたので、それに伴ってitem_db.txtを修正 -・item_bonus.txtを修正 - (db/) - item_db.txt 修正 - (doc/) - item_bonus.txt 修正 - --------------- -//0637 by 死神 - -・0635のバグ修正。 -・battle_athena.confに項目追加。(詳しいことはconf_ref.txtを見てください。) -・時間が遅すぎて0635で説明してなかったです。(寝不足だったので...) -まず仕様が変わったのは二刀流のダメージを武器別に完全に分けて行うように -変更とアサシンじゃなくても左手修練を覚えていれば二刀流を使えるように -変更しました。それとダメージの計算をちょっと修正。 -そしてbonusに追加されたのは -bonus bInnerAtk,n; 内部攻撃力+n -カードの引き上げダメージ用です。表示はされないけどダメージに計算されます。 -bonus bSpeed,n; 移動速度+n -移動速度をn上げます。 -bonus bAspd,n; 攻撃速度+n -攻撃速度をn上げます。 -bonus bSpeedRate,n; 移動速度+n% -移動速度をn%上げます。 -bonus bAspdRate,n; 攻撃速度+n% -攻撃速度をn%上げます。 -bonus bHPrecovRate,n; HP自動回復率+n% -自動回復するHPの量をn%上げます。スキルによる回復には影響がありません。本鯖の仕様とあっているかは不明です。 -bonus bSPrecovRate,n; SP自動回復率+n% -自動回復するSPの量をn%上げます。スキルによる回復には影響がありません。本鯖の仕様とあっているかは不明です。 -bonus bCriticalDef,n; クリティカルを喰らわない確率+n% -クリティカルの耐性をn上げます。10000以上にするとクリティカルを喰らいません。 -bonus bMVPaddAtkRate,n; MVPモンスターにn%の追加ダメージ -ボスモンスターにn%の追加ダメージを与えます。深淵の騎士カード用。 -bonus bNearAtkDef,n; 近距離攻撃のダメージをn%の減らす -全て近距離攻撃のダメージをn%の減らします。(魔法とトラップ、鷹を除く) -bonus bLongAtkDef,n; 遠距離攻撃のダメージをn%の減らす -全て遠距離攻撃のダメージをn%の減らします。(魔法とトラップ、鷹を除く) -bonus bDoubleRate,n; ダブルアタック確率+n%(武器無視) -武器に関係なく発動するダブルアタック確率をn%上げます。 -ダブルアタックスキルと別の判定を行う為ダブルアタックスキルが -あってもスキルによるダブルアタック確率が上がるわけではありません。 -サイドワインダーカード用。 - (map/) - pc.c - pc_bonus()、pc_calcstatus() 修正。 - pc_natural_heal_sub() 修正。 - battle.h - struct Battle_Config {} 修正。 - battle.c - battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 - battle_config_read() 修正。 - (db/) - skill_db.txt - スティールのSPを10に修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - --------------- -//0636 by Sin - -・デバッグ用ポタ子さんスクリプト(npc_pota.txt)のアマツ・コンロンへの対応。 - すでに自力実装されていらっしゃる方々も多いかと思いますが…。 - コンロンダンジョンの名前がわからないため「崑崙D1」などとさせていただいています。 - (conf/) npc_pota.txt - --------------- -//0635 by 死神 - -・battle_athena.confに項目追加。(詳しいことはconf_ref.txtを見てください。) -・bonusにbInnerAtk(カード等で表示はされないけど実際には攻撃力に反映される物用です。)等を追加。他のはitem_bonus.txtを見てください。(追加はしたけどitem_db.txtは殆んど修正してません。) -・その他バグ修正や仕様変更もやりましたが一々書く時間がないので... - (map/) - makeile 修正。 - pc.c 修正。 - map.h 修正。 - clif.c 修正。 - battle.h 修正。 - battle.c 修正。 - itemdb.c 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - item_bonus.txt 修正。 - (db/) - const.txt 修正。 - item_db.txt 修正。 - --------------- -//0634 by 死神 - -・weddingクラスには転職できないように修正。 -・スーパーノービスの為にexpテーブルをbase 4つjob 4つに拡張。 -exp.txtが変わりスーパーノービスだけの経験値を設定できます。(exp.txtの -4つ目がスーパーノービスのbase expで8つ目がjob expです。今は2次職業の物を -コピーした物に過ぎませんが。) exp.txtの設定方法も知らない方はいないと -思いますので説明は省略します。 -・スーパーノービスは転生のテストの為に韓国サクライだけ実装している物と -思われますが(転生が実装されればなくなると予測しています。)それを -実装していいのかと思ったりもしますが... -・結婚衣裳は既に0629で実装しているのにまたパッチとして -アップされるのもちょっと変(?)ですね。そういえば説明してなかったんですね。 -・装備専用スクリプトであるchangebaseの追加によってタキシードと -ウェディングドレスが実装しています。これは職業を変更せずに見た目だけ -変える物です。weddingクラス以外の適用も可能で変装セットとかも作れる -わけですが内部処理は変更せずに見た目だけ変えているので0631で説明したように -装備できない物を装備している場合鞍落ちが起こる可能性がありますので -他の職業で使うのはお勧めしません。仮実装なのは今の仕様はタキシードと -ウェディングドレスを装備するだけで見た目が変わるからです。韓国サクライの -方では何かの条件が必要だと思っているのでその条件がまだ実装されいないから -仮実装です。それにweddingクラスを職業にしてしまうと結婚するとスキル等が -リセットされるか変になるかのどちらなので変だと思ってなかったのでしょうか? - help.txt 修正。 - (db/) - job_db1.txt 修正。 - exp.txt 修正。 - (map/) - pc.c - pc_jobchange()、pc_readdb() 修正。 - pc_nextbaseexp()、pc_nextjobexp() 修正。 - --------------- -//0633 by 波浪 - -・装備の設定修正。結婚衣裳の職は、実際に転職するのではなくペコナイト(13)、ペコクルセ(21)のように画像を使うだけだと思うので - 何も装備できない設定にしました。スパノビはノビが装備できるものだけ設定しました。 -・古木の枝の出現モンスターを追加 -・アマツのモンスの沸き具合を本鯖に近くなるように修正(まだまだ違いますが・・・) - (conf/) - npc_monster.txt モンス名修正 - npc_monster_amatsu.txt 修正 - (db/) - item_avail.txt 鞍落ちアイテム追加 - item_db.txt 装備設定を修正、他多数 - mob_branch.txt 修正 - mob_db.txt モンス名修正 - skill_tree.txt 修正 - --------------- -//0632 by nini - -・@jobchangeで結婚衣裳とスーパーノービスになれるように。(注意:韓国桜井クライアントのみ) -・Sノビのステ、スキルなども暫定追加。(ノービスのコピーですが) - とりあえず見た目だけということで、結婚衣裳でも攻撃できますが(ただしノーモーション)、本来はできません。 -・上にあわせてitem_db編集。 - 結婚衣裳で武器もつとact、sprエラー出すので、結婚衣裳では武器を持てないようにした(はず)。 - (db/) - job_db1.txt - job_db2.txt - item_db.txt - 結婚衣裳、Sノビのデータ - skill_tree.txt - Sノビのスキル - (map/) - map.h - MAX_PC_CLASSに追加 - --------------- -//0631 by 死神 - -・細かい修正。 -・タキシードとウェディングドレスの表示をbattle_athena.confで設定できる -ように変更。 -・武器グラパッチについてですがパッチ前は使えない職業が装備をしても表示は -されないだけで鞍落ちまでは起こらなかったけど武器グラパッチの後はその武器を -装備することができない職業(本鯖で)が装備してしまった場合鞍落ちが起こる -ことがありますので注意してください。 - (db/) - item_db.txt - 1161、2338、7170 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - battle.h - struct Battle_Configにwedding_modifydisplay 追加。 - battle.c - battle_config_read() 修正。 - pc.h - pc_cart_delitem() 修正。 - pc.c - pc_jobchange()、pc_additem()、pc_delitem()、pc_cart_delitem() 修正。 - pc_checkitem()、pc_getitemfromcart() 修正。 - clif.c - clif_changelook()、clif_send()、clif_parse_GlobalMessage() 修正。 - script.c - buildin_changebase() 修正。 - storage.c - storage_storageaddfromcart() 修正。 - vending.c - vending_purchasereq() 修正。 - --------------- -//0630 by 引退人 - -・ギルド脱退時にcharサーバが落ちることがあるのを修正 -・water_height.txtを更新 -・0627に関連してmodifydisplay関連を削除 - (char/) - int_guild.c - mapif_guild_leaved()のバッファ容量が足りなかったので、 - unsigned char buf[64]; -> unsigned char buf[128]; - と修正。 - (conf/) - battle_athena.conf - equip_modifydisplayを削除 - water_height.txt - prt_fild04.gatとmoc_fild01.gatの分を追加 - (doc/) - conf_ref.txt - equip_modifydisplayの説明を削除 - (map/) - battle.h - struct Battle_Config からequip_modifydisplayを削除 - --------------- -//0629 by 死神 - -・0627のバグ一部修正と新しい移動パケットに対応。(自分の間違いでした。 -モンスターやNPCも新しい移動パケットを使うと思っていたのですが -新しい移動パケットはプレイヤーのみのようです。) -・タキシードとウェディングドレス仮実装。(韓国のサクライ鞍じゃないと -鞍落ちされます。使用する時はitem_db.txtのコマントアウトされている -2338と7170を解除して使ってください。) -・SP回復アイテムもintによって効果が増えるように変更。 -・0627で書き忘れですがカートのアイテム計算とitemdb_を呼ぶのを最小化する -処理を入ってるせいでpc_additem()、pc_delitem()、pc_cart_additem()、pc_cart_delitem()以外の方法でカートアイテムやアイテムに変動がある場合 -正常に動作する保証がないので修正のさいには注意してください。 - readme0754をreadme0574に修正。 - makefile 修正。 - (map/) - map.h 修正。 - clif.c 修正。 - pc.c 修正。 - battle.c 修正。 - mob.c 修正。 - script.c 修正。 - (db/) - item_db.txt 修正。 - class_equip_db.txt 修正。 - skill_db.txt 修正。(誤字を治しただけです。) - (conf/) - npc_event_doll.txt 修正。(流浪人さんありがとうございます。) - --------------- -//0628 by NOCTURNE - -・snapshot -・snapshotからsnapshotまでのReadme分割 -・要望が多かったのでsnap作成(プログラム的な変更点は無し - --------------- -//0627 by 死神 - -・コードの最適化と少し修正。(少しは軽くなると思います。) -・ @modifydisplayコマンド削除。 -・新しい移動パケットに対応だと思ったら0x1d8、0x1d9、0x1daパケットの一部が -0x78、0x79、0x7bと変わってるみたいです。つまり今のままでは対応できません。 -X,Yの座標の部分の書式が変わったのかと予測はしていますが... -情報を求みます。(makefileのDPACKETVERを4にすれば0x1d8、0x1d9、0x1daを -使いますが座標がずれたらしく何も標示されません。) -・100000からだったchar_idを150000からに変更。(ペットの卵の問題で武器の名前がちょっと変になったので修正しました。) -・ペットのコード少し修正。(pet_idをcard[2]とcard[3]からcard[1]とcard[2]に変更しました。よって前に作った卵は使えません。鞍でcard[3]の機能が変わったので -仕方なく修正しました。今度はconvertツールがありません。作る時間がなかったので...) -・最適化の為に修正した所が多いですが全て正常動作する保証はありません。 -鯖落ちバグが発生したら報告お願いします。(batte.cはまだ最適化してません。) -カートのアイテム計算やアイテムの重量の計算を最初にだけするようにしているので表示に少し問題があるかも... -・修正したファイルだけ書いておきます。 - 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 引退人 - -・パケット長テーブル(新移動パケットなど)修正 - (doc/) - client_packet.txt パケット解析スレ Mさんの情報を反映 - conf_ref.txt 0624に合わせて修正 - (map/) - clif.c - packet_len_table[] client_packet.txtに合わせて修正 - --------------- -//0625 by 引退人 - -・@hide透明化をBOSSなどに見破られないように修正 - (map/) - pc.h - #define pc_iscarton(sd) 修正 - #define pc_isinvisible(sd) 追加 - mob.c - mob_attack() - mob_target() - mob_ai_sub_hard_activesearch() - mob_ai_sub_hard_mastersearch() - mob_ai_sub_hard() - 透明(pc_isinvisible(sd)!=0)で死人と同様に判定されるように修正 - (conf/) - npc_cTower.txt 修正(thx to holyzardさん) - --------------- -//0624 by るるる - -・武器画像表示処理の一新(新移動パケット使用) -・上と関連して、@modifydisplayコマンドを設けた -    機能としては、現在のアサシン武器などのがおかしい場合に、または気に入らないとかで、 -    キャラ毎に旧パケを使用するようにしている。 - - (map/) - atcommand.c - atcommand() @modifydisplayコマンドを追加 - atcommand.h - struct Atcommand_Config { -'7d 変更 - clif.c - clif_set0078_and01d8() , clif_set007b_and01da() 関数名&処理の変更 - clif_spawnpc() , clif_movechar() , clif_changelook() , clif_getareachar_pc() , - clif_fixpcpos() , clif_parse_LoadEndAck() 変更 - map.h - struct map_session_data ・b} 変更 - pc.c - pc_setnewpc() , pc_calcstatus() , pc_equiplookall() , pc_changelook() 変更 - - (conf/) - atcommand_athena.conf - equip_modifydisplay 追加 - - 変更箇所は全てキーワード「modifydisplay」でサーチすればほぼわかるかと。 - -コメント:もうこれで問題は無いはず。実は大いなる勘違いをしてた個所があったのは内緒(マテw - --------------- -//0623 by 引退人 - -・@hideで透明化(見られない&MOBにタゲられない)するように修正など - (map/) - atcommand.c - @hideのoption設定を0x04から0x40に変更 - mob.c - mob_attack() - mob_target() - mob_ai_sub_hard_activesearch() - mob_ai_sub_hard_mastersearch() - mob_ai_sub_hard() - option判定を0x06から0x46に修正 - (conf/) - npc_event_potion.txt MORISON_MEAT修正(thx to holyzardさん) - --------------- -//0622 by 引退人 - -・mobがスキル使用に失敗した場合、通常攻撃するように - (map/) - mob.c - mobskill_use_id() スキル使用失敗で0、成功で1を返すように修正 - mobskill_use_pos() スキル使用失敗で0、成功で1を返すように修正 - mobskill_use() 上記を反映して失敗時には0を返すように修正 - --------------- -//0621 by 胡蝶蘭 - -・アイテムチェックを行うかどうかconf/battle_athena.cnfに書けるように -・アイテムチェックで不正と判断するかどうかをdb/item_avail.txtに書けるように -・@itemcheckで明示的にアイテムチェックできるように - - デバグやテストなどで色々なアイテムIDを使用したい場合は - アイテムチェックを無効にして下さい。(item_check: off) - 無効にした場合でも@itemcheckコマンドでチェックすることが出来ます。 - cnfファイルは用意してないので必要なら各自適当に書き換えてください。 - - (db/) - item_avail.txt - 新規追加。不正アイテムの列挙に使用。未完成。他力本願。 - item_db.txtに定義されてるが実際には使用できないアイテムを書く。 - (doc/) - conf_ref.txt - battle_athena.cnfとatcommand_athena.cnfの説明修正 - (map/) - itemdb.c/itemdb.h - itemdb_availableマクロ追加 - itemdb_read_itemavail()追加 - itemdb_readdb()でavailable=1にするように - itemdb_search()で存在しないIDはavailable=0でデータを作るように - do_init_itemdb()でitemdb_read_itemavail()を呼ぶように - pc.c/pc.h - pc_checkitem()をエクスポート - pc_checkitem()でavailableとbattleconfigをチェックするように - atcommand.c/atcommand.h - @itemでbattleconfigをチェックするように - @itemcheckコマンド追加 - atcommandconfigにitemcheckメンバ追加 - battle.c/battle.h - battle_configにitem_checkメンバ追加 - -・ladminの修正など - アカウント追加、パスワード変更の際にパスワードを省略すると、 - パスワード用のエコーしない専用プロンプトで入力できます(&入力確認)。 - 追加の際にパスワードが表示されたら困る場合などに。 - パスワード入力中はCtrl+Cが効かないので注意してください。 - - パスワードの不正文字の表示が、何文字目かで表示するようになりました。 - その他微妙にチェック追加など。 - - Cygwinでしか動作確認していません。POSIXモジュールを使っているので、 - POSIXでない(&エミュレーションもできない)プラットフォームだと - 動かないかもしれません。 - UNIX系ではnkfなどで改行コードを変換しないとだめかも? - - (tool/) - ladmin - Ver.1.03に。 - -------------- -//0620 by 月詠み - -・ホーリークロス実装 - - (db) - skill_db.txt 修正 - (map) - skill.c - skill_additional_effect()修正(コメントのみ) - battle.c - Damage battle_calc_weapon_attack()修正 - -------------- -//0619 by るるる - -・パッチ0617のでやり忘れと微妙な修正 - - clif.c - clif_movechar(),clif_parse_LoadEndAck() 修正 - --------------- -//0618 by nini - -・リザレクションの詠唱、ディレイ追加。回復量修正。 -・消費SP修正 -・アローシャワーの範囲を5*5にして2セル吹き飛ばし。 -・チャージアローの使用武器条件無し。 -・スピアスタブの飛距離を6セルに。 - (/db) - cast_db.txt 修正 - skill_db.txt 修正 - (/map) - battle.c - battle_calc_weapon_attack() 修正 - skill.c - skill_castend_damage_id() 修正 - skill_check_condition() 修正 - skill_castend_nodamage_id() 修正 - --------------- -//0617 by るるる - -・武器画像表示で他キャラが表示されないのを「とりあえず」修正 -・靴表示のパケットを送信停止(現時点ではムダ。コメントしただけですが) - clif.c - clif_spawnpc(),clif_getareachar_pc(),clif_fixpcpos(),clif_changelook()修正 - pc.c - clif_changelook()がある部分を修正(武器ー>盾と順になるように処理の入れ替え) - -コメント。 -新マップ移動パケ(0x1d8〜0x1da)を色々とやったが、そのパケ1つで武器表示が新式のに対応してる -というわけではないっぽい。旧移動パケだと自分以外のキャラが移動すると旧式表示になってしなう。 -更に、新武器表示パケは武器と盾の同時処理が出来てない。おそらくクライアントの問題だと思う。 -とりあえず、キャラが動くたびに新武器パケ=>旧盾パケの2つの装備パケを送ることで解決させている。 -本鯖ではどうなのかの実際のところのデータが無いため、これ以上のことはムリ。 - --------------- -//0616 by 胡蝶蘭 - -・water_height.txtを読んでいないとサーバーが落ちるバグ修正 - map.c - map_waterheight()修正 - -・PCのマップ移動時のアイテムチェックでアイテムIDの存在をチェックするように修正 -・一部の@コマンドでアイテムIDの存在をチェックするように修正 - pc.c - pc_checkitem()修正 - pc_authok()修正 pc_checkitem()追加 - clif.c - clif_parse_LoadEndAck()修正 - itemdb.c - itemdb_exists()追加(itemdb_searchと同じだが、dbに存在しない - 場合は新しいデータを作らずにNULLを返す) - itemdb_read_classequipdb()修正 itemdb_search=>itemdb_exists - itemdb_read_itemnametable()修正 itemdb_search=>itemdb_exists - itemdb_read_itemvaluedb()修正 itemdb_search=>itemdb_exists - atcommand.c - @item修正 itemdb_search=>itemdb_exists - @produce修正 itemdb_existsでチェックするように - --------------- -//0615 by 波浪 - -・アイテムDATA大幅修正 - 主な修正箇所は、回復アイテムの回復量の修正、消費アイテムをclass_equip_db.txt無しでも使用できる様に修正、 - 装備品の装備可能職を全て修正、カード効果を修正、etc・・・です。 - --------------- -//0614 by Nikita - -・アイテムDATAの修正(主に回復量) -・スキル解毒の射程修正 -・0612の細かい修正 - (conf/) - npc_town_prontera.txt 修正 - (db/) - item_db.txt 修正 - skill_db.txt 修正 - --------------- -//0613 by 引退人 -・checkweight修正 - (conf/) - npc_event_making.txt checkweight部分を修正 - npc_event_potion.txt ポーション、ジュースNPCのcheckweight修正 - --------------- -//0612 by nini - -・アイテムDATA修正 - (db/) - item_db.txt 修正 - (conf/) - npc_town_***.txt 修正 - R.O.M776さんを参照しました。 - --------------- -//0611 by 死神 - -・アイテム使用条件があわない時0xa8パケットを送るように変更。(バグ報告スレッド 243のno nameさん情報提供ありがとうございます。) -・QMで集中力向上と速度上昇、アドレナリンラッシュ、ラウドボイス、スピアクイッケン、ツーハンドクイッケンを解除するように修正。 -・速度上昇と速度減少で逆のスキルが解除されるように修正。 -・0609で書き忘れ。モンスターがQMの範囲から抜けても効果が維持するように -変更とブレッシングで呪いと石化が解除されるように修正。 - clif.c - clif_useitemack() 修正。 - skill.c - skill_status_change_start() 修正。 - pc.c - pc_insert_card() 修正。(これはカードバグとは関係ない修正です。そのバグの修正は自分が05xx当たりで修正しましたので。) - --------------- -//0610 by 波浪 - -・アイテムDATA修正 - (db/) - item_db.txt 修正 - --------------- -//0609 by 死神 - -・色々と修正。 -・モンスターが止まるように動く問題修正。 -・指弾のディレイ修正。 -・矢作成のコード片付け。 -・敵がスキル範囲から逃げた場合スキルが失敗するように変更。 -・class_equip_db.txtの仕様変更。 - 性別と装備レベルも設定可能に変更と使用アイテムの使用職業、性別と使用 - レベルの設定ができるように変更。(ただデータが多いせいで修正した - class_equip_db.txtはサンプル程度の物です。埋めてください。他力本願ですが...) - それとアイテム使用条件があわないとアイテムが使わないようにしては - いますが01c8パケットのを0にしてもアイテムを使用した時と同じ - エフェクトが出ます。本鯖のアイテム使用パケットが分からないままじゃ - こうするしかなかったのですが... -・battle_athena.confに項目追加。 -・その他スキル少し修正と細かい修正。 -・修正した所を全て覚えてませんのでファイルだけ。 - (map/) - clif.c 修正。 - mob.c 修正。 - mob.h 修正。 - pc.c 修正。 - map.h 修正。 - skill.c 修正。 - skill.h 修正。 - itemdb.c 修正。 - battle.c 修正。 - battle.h 修正。 - (conf/) - battle_athena.conf 修正。 - (db/) - cast_db.txt 修正。 - skill_db.txt 修正。 - create_arrow_db.txt 修正。 - class_equip_db.txt 修正。 - item_db.txt 修正。 - (doc/) - client_packet.txt 修正。 - conf_ref.txt 修正。 - --------------- -//0608 by sk -・アマツNPC追加 - (conf/) - npc_town_amatsu.txt 城内NPC追加 - npc_warp_amatsu.txt 城内ワープポイント追加 - --------------- -//0607 by J -・アサルトタートルの手下召喚のバグ修正(報告ありがとうございます るるるさん) - (db/) - mob_skill_db.txt アサルトの修正ついでにテレポを使うMOBのスキルディレイも修正 - --------------- -//0606 by 引退人 -・スキルレベル最大値以上にクリックした時点で他スキルが上げられなくなるバグを修正(Thanx to 227さん) - (map/) - clif.c - clif_skillup() - スキルレベルが最大値のとき、パケット末尾を0にするように修正 - --------------- -//0605 by るるる - -・武器属性付与スキルの不都合修正 - 武器を持ち替えたり外したりした場合も、属性付与を解除するようにしました。 - 但し、素手=>武器装備のみ状態維持します。 -・スピアクイッケンのステータスアイコンを正しく表示 -・2HQ、スピアクイッケン、アドレナリンラッシュで該当以外の武器持ち替えで状態消滅 - スピアクイッケンは未確認ですが、2HQは確実なので2HQと不公平な仕様とは - 考えにくいので同様なパターンとしました。本鯖と相違がある場合は報告願います。 -・敵のQMで集中力向上と速度上昇を解除 - QMで影響するスキルはこれ2つだけかな? 私の記憶と掲示板での報告とで - 判断したのですが、もし相違がありましたら報告願います。 - - (map/) - clif.c - clif_parse_UnequipItem() 修正 - pc.c - pc_checkallowskill() pc_equipitem() 修正 - skill.h - skill_encchant_eremental_end() 追加 - skill.c - skill_status_change_start() skill_status_change_end() - skill_status_change_clear() skill_encchant_eremental_end() 修正 - その他細かいところ少々 - --------------- -//0604 by J -・MOBスキル再修正 -・MOBDB修正 - (db/) - mob_skill_db.txt - アークエンジェリングとタートルジェネラルが1回に2種類までしか - MOBを出さなかったのを修正 - mob_db.txt - ロードオブデスのドロップでエラーが出るのを修正(未確認) - 怨霊武士のドロップとMVPを追加(未確認) --------------- -//0603 by 引退人 -・新規アイテム時にも所持可能個数チェックをするように修正 - (map/) - pc.c - pc_checkadditem() - 新規アイテム時にMAX_AMOUNTを超えていたら - ADDITEM_OVERAMOUNTを返すように修正 - --------------- -//0602 by 引退人 -・Geffen鍛冶屋で落ちる問題を修正 - (conf/) - npc_town_geffen.txt if (!checkweight(,)) から if (!(checkweight(,))) に修正 - --------------- -//0601 by J -・MOBスキルの危ない所をいくらか修正 -・覚醒と狂気の使える職を修正 -・ゲフェニアダンジョンの配置をカボチャイベントで入れたときの配置に修正 - ただしボスがDOP2体ではなくドラキュラにしています。 - (conf/) - npc_monster.txt モンスター配置微変更 - (db/) - mob_skill_db.txt 怪しい設定などの修正 - item_db.txt 増速POTの修正 - --------------- -//0600 by 引退人 -・プロンテラ精錬所の横のファンに話し掛けると固まる問題を修正 -・MOBスキル取り込み(Thanx to Jさん) - (conf/) - npc_event_skillget.txt ファンのLabelを修正 - npc_town_prontera.txt ファンが重複していたので削除 - (db/) - mob_skill_db.txt ジュノー以降のMOBスキル追加 - --------------- -//0599 by るるる - -・セージの武器属性付与スキルの不都合修正とステータスアイコン表示 - アスペルシオとエンチャントポイズンとで多重にかかってしまってたので、 - 最後に付与したもの1つになるようにしました。 - そのついでにステータスアイコンも表示するようにもしました。 - (未テストですが、アイコン出なかったスピアクイッケンもでるはずです。) -・アイテムDBにて、増速ポーションの使用制限を追加 - Jazzさん提供です。 - それと私の趣味でラグナロクTシャツをアレナニしましたがw 気に入らなければ - 消すなり元通りに修正するなりしてしちゃってくださいませ〜。 - - (conf/) - battle_athena.conf 598での入れ忘れ - (map/) - skill_encchant_eremental_end() 追加 - skill_status_change_end() skill_status_change_start() skill_status_change_clear() 修正 - (db/) - iten_db.txt 修正 - --------------- -//0598 by るるる - -・装備武器の画像変更に対応 - 一応ながらクルセイダーの両手槍とかプリーストの鈍器とかはテストしましたが、 - 全ての職をチェックはいません。またこの時点ではクライアント自体の表示データに - 問題の有るのが多いのも付け加えておきます。 - あと、靴も一応は対応しました。但しこれは現時点では本鯖すらも未対応なのですが。 - 表示が化けて嫌だという場合は従来のやり方も出来ます。 - - (conf/) - battle_athena.conf - オプション equip_modifydisplay を追加 - (map/) - battle.h - Battle_Config 修正 - battle.c - battle_config_read() 修正 - clif.c - packet_len_table[] clif_changelook() 修正 - map.h - enum {} 修正 - pc.c - pc_calcstatus() pc_equiplookall() pc_changelook() 修正 - (common/) - mmo.h - mmo_charstatus {} 修正 - --------------- -//0597 by 波浪 - -・アマツに関する修正&微修正 - (conf/) - npc_mob_job.txt - npc_monster.txt - npc_monster30.txt - モンス名修正 - npc_monster_amatsu.txt - 追加(モンス数がかなり手抜きです・・・ - npc_town_amatsu.txt - ショップNPCを統合(npc_shop3.txtを消してもOKです - (db/) - mob_db.txt - アマツのモンスデータを現在分かる範囲で修正&草ときのこのdef,mdefを修正 - --------------- -//0596 by 死神 - -・0595の修正と細かい修正。 -・フリーキャストでキャストしている間は攻撃可能ですがキャストした後の -ディレイタイムでは攻撃できないようになっています。本鯖の仕様がどうなのかは -わかりません。 -・動いているPCにモンスターが攻撃できない問題修正。(テストしてませんが -多分これで大丈夫かと。) - (map/) - skill.h - SC_FREECAST 削除。 - skill.c - skill_use_id()、skill_use_pos() 修正。 - skill_castend_id()、skill_castend_pos() 修正。 - その他少し修正。 - pc.c - calc_next_walk_step()、pc_attack_timer()、pc_calcstatus() 修正。 - clif.c - clif_parse_ActionRequest()、clif_parse() 修正。 - map.h - struct map_session_dataにprev_speed追加。 - mob.c - mob_ai_sub_hard()、mob_changestate()、mob_attack() 修正。 - --------------- -//0595 by PRevEv -・フリーキャスト修正、実装(キャスティング中攻撃もできます。) - (/map) - pc.c - pc_calcstatus() 修正。 - calc_next_walk_step() 修正。 - pc_attack_timer() 修正。 - skill.c - skill_castend_id()、skill_castend_pos()、skill_use_id()、skill_use_pos() 修正。 - --------------- -//0594 by 死神 - -・韓国鞍のパーティ問題修正と細かい修正。 -・@partyコマンド修正と@guildコマンド追加。 -・battle_athena.confにguild_emperium_check追加。 -・スキル使用が失敗してもディレイがかかる問題修正。 - help.txt 修正。 - (map/) - clif.c - clif_parse_CreateParty2() 追加。 - clif_parse_ItemIdentify() 修正。 - その他少し修正。 - atcommand.h、atcommand.c 修正。 - battle.h - struct Battle_Configにguild_emperium_check追加。 - battle.c - battle_config_read() 修正。 - guild.c - guild_create()、guild_created() 修正。 - skill.c - skill_castend_id()、skill_castend_pos() 修正。 - Makefile 修正。 - (doc/) - client_packet.txt - パケット0x01e8 追加。 - conf_ref.txt 修正。 - (conf/) - atcommand_athena.conf 修正。 - battle_athena.conf 修正。 - --------------- -//0593 by 死神 - -・メテオとバミリオンのダメージ修正と細かい修正。 -・メテオの隕石が落ちてくる範囲を7*7から5*5に変更。(これで中央は全ての隕石の -ダメージを受けることになります。) -・自動回復計算式変更。 - スキルレベル*5 + (max_hp/50)から - スキルレベル*5 + (max_hp*スキルレベル/500)に変更。(SPと息吹も同じように変更。) -・GM右クリック命令「使用者強制終了」でatcommand_athena.confのkickの -レベルをチェックするように変更。 - (db/) - skill_db.txt - スキル気功のspを10から8に修正。 - (map/) - map.c - NO_WATERを100から1000000に変更。 - battle.c - battle_calc_magic_attack() 修正。 - skill.c - skill_castend_pos2() 修正。 - pc.c - pc_natural_heal_hp()、pc_natural_heal_sp()、pc_spirit_heal() 修正。 - clif.c - clif_parse_GMKick() 修正。 - (doc/) - conf_ref.txt 修正。 - --------------- -//0592 by 引退人 - -・水場の有り無しをwater_height.txtだけで決めるように変更。npc_water.txtは不要に。 -・カードスキルではレベル上げできないようになったため不要になった処理を削除。 - (conf/) - map_athena.conf - npc: conf/npc_water.txt 消去 - water_height.txt - デフォルト高さ3のマップ分を追加&all_waterを高さ-100としてコメントで追加 - (map/) - map.c - waterlistはmap_readwater()内でメモリ確保 - gat設定後は不要なのでmap_readallmap()でメモリ開放しています - map.h - struct map_dataのflagからwater_flagを消去 - npc.c - npc_parse_mapflag() - マップフラグwaterとall_waterを消去 - pc.c - pc_skillup() - 裏でスキルLvUPできなくなったのでskill[id].flagの分は消去 - skill.c - skill_check_condition() - map_getcellで水場判定するように修正 - --------------- -//0591 by CHRIS - -・モンクが氣弾をもっているとき、氣弾*3の必中ダメージが入る様になりました。─ battle.c修正 -・モンクスキル「指弾」と「発勁」と「気孔」の詠唱時間が正しく修正されました。─ cast_db.txt修正 - --------------- -//0590 by 死神 - -・grf-files.txtやconfファイル、account.txtファイルの名前と位置を変えるように変更。 -・マップ移動による鯖落ちを防ぐ為に修正。(マップが二度ロードされて鯖落ちが -起こったとの報告を受けたので。) -・0586をちょっと修正。装備によるスキルの場合レベル上げができないように修正。 -ただ装備によるスキルをスキルポイントを使って上げる時は装備を外す必要が -あります。 -・@partyちょっと修正。(名前に空白があっても大丈夫なように。) -・水場の高さをwater_height.txtで読み込むように変更。 -・confファイルで設定する物をファイルのパスに空白があっても大丈夫な -ように変更。 -・GM右クリック命令「使用者強制終了」でモンスターを倒せるように変更。 -(原因は不明ですがこれでモンスターを殺すと鯖がめちゃくちゃに遅くなることが -あります。) -・その他少し修正。 -・テストは殆んどしてませんので注意してください。 - athena-start 修正。 - (map/) - pc.c - pc_skill()、pc_resetskill()、pc_setpos()、pc_read_gm_account() 修正。 - pc_set_gm_account_fname() 追加。 - pc.h - pc_set_gm_account_fname() 追加。 - clif.c - clif_skillinfoblock()、clif_parse_LoadEndAck()、clif_parse_GMKick() 修正。 - clif_changemap() 修正。 - atcommand.c - @partty 修正。 - skill.c - skill_castend_nodamage_id() 修正。 - map.c - map_config_read()、map_readwater() 修正。 - script.c - script_config_read()、do_init_script() 修正。 - script.h - script_config_read() 追加。 - (common/) - version.h 修正。 - grfio.h - grfio.c - grfio_init() 修正。 - mmo.h - GRF_PATH_FILENAME 追加。 - (conf/) - map_athena.conf 修正。 - npc_water.txt 修正。 - water_height.txt 追加。 - login_athena.conf 修正。 - (login/) - login.c - login_config_read()、read_gm_account() 修正。 - (char/) - char.c - do_init() 修正。 - char_config_read() 追加。 - inter.c - inter_config_read() 修正。 - (doc/) - conf_ref.txt 修正。 - --------------- -//0589 by 胡蝶蘭 - -・GMの右クリックで切断される問題を修正 - とりあえず01dfパケットを無視するようにしました。 - なんとなくこのパケットはチャット禁止回数とは関係無いような気も…… - - clif.c - clif_parse_GMReqNoChatCount()追加 - -・startをathena.shでなくathena-startを使うように変更 - start - athena.sh => athena-start startに置き換えしただけ - --------------- -//0588 by Kalen - -・AmatsuNPC追加 - --------------- -//0587 by 胡蝶蘭 - -・loginサーバーの管理パケットの仕様を変更(0579のログイン拒否情報に対応) - (login/) - login.c - アカウントバン状態変更パケット追加(7936,7937) - アカウントリスト所得パケット修正(7921) - (doc/) - admin_packet.txt - -・ladminの機能追加 - ・バン状態を変更するコマンド追加 - ・リスト表示と検索でバン状態も表示されるようになった - ・"?"でもヘルプが出るように修正 - ・シンボリックリンクにstateaccountが追加されました。 - 使う人はladminの--makesymlinkをもう一度実行してください - - (tool/) - ladmin - 機能追加 - --------------- -//0586 by 引退人 -・カードスキルを修正 - (/map) - pc.c - pc_calc_skilltree() - pc_skill() - 覚えられないスキルならskill[id].flag=1とする - またはskill[id].flagに本来のlvを+2して記憶 - pc_skillup() - skill[id].flagも増やす - clif.c - clif_skillinfoblock() - skill[id].flag==1なら覚えられないスキル - (/char) - char.c - mmo_char_tostr() - skill[id].flagから本来のlv値を保存する - --------------- -//0585 by kalen -・script修正 - npc_town_guid.txt 外見変更 - --------------- -//0584 by 引退人 -・カードスキルを修正 - (/map) - pc.c - pc_calc_skilltree() cardスキルを忘れさせる処理を追加 - pc_skill() 整理 - --------------- -//0583 by kalen -・script修正 - npc_event_doll.txt 抜けていた部分の会話追加 - npc_town_guid.txt 町の案内要員の画像を表示できるように修正 - 基本的に最新jROで問題なしです。 - --------------- -//0582 by PRevEv -・580のバグ修正。 - (/map) - skill.c - skill_use_pos() 修正。 --------------- -//0581 by 引退人 -・水場高さ設定関連を少し修正 - (/map) - map.c - map_waterheight() - map_readwater() - map_readmap() - waterlist[512] -> *waterlistにして、mallocでメモリ確保するように修正。 - map_readallmap() - free(waterlist);追加 - -・バグ報告スレッドの修正パッチを取り込み - (conf/) - npc_town_refine.txt セミコロン抜け修正 - (db/) - item_db.txt 1161,バルムン修正 - --------------- -//0580 by PRevEv -・フリーキャスト仮実装(キャスティング中攻撃は不可能) - (/map) - clif.c - clif_parse_WalkToXY() 修正。 - pc.c - pc_calcstatus() 修正。 - skill.c - skill_castend_id()、skill_castend_pos()、skill_use_id()、skill_use_pos() 修正。 --------------- -//0579 by Aの人 -・ログインを弾く処理を仮実装 - conf/login.c - auth_dat構造体にstateを追加 - mmo_auth関数修正 - mmo_auth_new関数修正 - mmo_auth_sync関数修正 - mmo_auth_init関数修正 - - この値を変更するツール、改善策。他力本願です(><; --------------- -//0578 by 引退人 -・バグ報告スレッドの修正パッチを取り込みなど(thanx to るるるさん,Athefansさん,sageさん,zupportさん) - help.txt @goの説明ちょっと修正 - (conf/) - npc_mob_job.txt 第4列目をTab区切りに修正 - npc_water.txt 水場高さ修正 - (db/) - item_db.txt 640,...,{ pet 1155; },{},,に修正 - mob_db.txt 1162,RAFFLESIA,ラフレシア...修正 - --------------- -//0577 by るるる -・@コマンドを追加&修正 - atcommand.c - atcommand() @itemresetコマンド追加 @goコマンド修正(アマツ・コンロンを追加) - atcommand_config_read() 上に合わせてitemreset使用レベル指定を追加 - - doc/conf_ref.txt - conf/atcommand_athena.conf itemreset使用レベル指定を追加 - help.txt @itemresetの説明追加と@goの説明修正 - -------------- -//0576 by V&S -・ゴーストリングカードとバースリーカードの効果が逆になっていたのを修正 - { bonus bDefEle,7; }→ゴーストリングカード(念) - { bonus bDefEle,8; }→バースリーカード(闇) - ↑だったのを↓に修正 - { bonus bDefEle,7; }→バースリーカード(闇) - { bonus bDefEle,8; }→ゴーストリングカード(念) - - 鋼鉄の重量を修正 - --------------- -//0575 by 引退人 -・水場ファイルが"conf/npc_water.txt"固定だったのを修正 -(conf/map_athena.confのnpc:に書かれているファイルをみて水場高さ設定するように) - map.c - struct waterlist[512]; 新規追加。マップファイル名と水場高さを記憶。 - map_waterheight() 新規追加。水場の高さを返す。 - map_readwater() 水場ファイルをみてwaterlistを設定するように修正。 - map_readmap() map_waterheight()を呼ぶように修正。 - map_config_read() "npc"でmap_readwater(w2);追加。 - --------------- -//0574 by いど - -・サーバーSnapshot -・conf/shop_*.txtの内容をconf/npc_town_*.txtに統合 - --------------- -//0573 by Jazz - -・mapの penalty, nomemo, noteleport, nobranchの optionを設定。 -・map サーバーが cpuを無限占有することを検査するための script 添付. cygwin環境で作成と実験をしました. - (/conf) - mapflag.txt 追加。 - (/tool) - mapcheck.sh 追加。 - --------------- -//0572 by 引退人 -・"conf/npc_water.txt"の第4列で水場高さ設定 - (ちゃんとした水場判定が実装されるまでのつなぎとして・・・) - (/conf) - npc_water.txt サンプル修正。 - ・第4列で水場の高さを設定します。 - ・高さを書かなかった場合のデフォルト値は3になります。 - (/map) - map.c - ・水場高さ設定関数 map_readwater() 追加。 - --------------- -//0571 by code -天津フィールドのMOBの配置とワープポイントの設定の修正 -天津パッチに崑崙が含まれているのを確認したので崑崙のワープとmobを配置 - -conf/npc_monster35.txt - mobの配置 - -conf/npc_warp_amatsu.txt -   天津warp pointの設置 - -conf/npc_warp_gonryun.txt - 崑崙warp pointの設置 - -conf/npc_town_amatsu.txt -   暫定的にプロンテラ噴水前←→天津港/プロンテラ噴水前←→崑崙の接続NPC - --------------- -//0570 by code -天津フィールドのMOBの配置とワープポイントの設定です。 -conf/npc_monster35.txt - mobの配置 - -conf/npc_warp_amatsu.txt -   warp pointの設置 - -conf/npc_town_amatsu.txt -   暫定的にプロンテラ噴水前←→天津港の接続NPC - --------------- -//0569 by 死神 - -・0561の@jobcange での♀バード&♂ダンサーによる鞍落ち防止をpc_jobchange()でするように変更。 -・@コマンド@party追加。パーティを作る命令です。韓国鞍を使うとパーティを作る時止まるので臨時的にこれを使ってパーティを作ってください。 -・水の判断処理修正。 -・マップフラグにwaterとall_water追加。詳しくはnpc_water.txtを参考してください。 -iz_dun0xだけ入力していますので他のは埋めてください。マップフラグwaterかall_waterが入ってないとセルのtypeが3でも水として認識しません。そして水だらけのiz_dun02から04までは全て水として認識するようにall_waterを入れています。(これ以外は方法がなかったので...) -・battle_athena.confに項目追加。一部はWeissを参考して作った物です。 -・テストしてない物も少しあります。 - (/conf) - atcommand_athena.conf 修正。 - battle_athena.conf 修正。 - map_athena.conf 修正。 - npc_water.txt 追加。 - (/doc) - conf_ref.txt 修正。 - (/map) - atcommand.h、atcommand.c 修正。 - battle.h 修正。 - battle.c - battle_config_read() 修正。 - pc.c - pc_jobchange()、pc_stop_walking() 修正。 - npc.c - npc_parse_warp()、do_init_npc()、npc_parse_mapflag() 修正。 - mob.c - mob_ai_sub_hard() 修正。 - pet.c - pet_food() 修正。 - skill.c - skill_check_condition() 修正。 - map.h - struct map_data 修正。 - --------------- -//0568 by 引退人 - -・アクアベネディクタ水場判定など -・ウォーターボール水場判定(read_gat(m,x,y)==3で水場と判定) - skill.c - skill_castend_nodamage_id() - case AL_HOLYWATER: アクアベネディクタ(聖水取得) - skill_check_condition() - case AL_HOLYWATER: アクアベネディクタ(水場判定) - case WZ_WATERBALL: ウォーターボール(水場判定) - --------------- -//0567 by るるる - -・アコライトのアクアベネディクタを仮実装(水場限定使用のみ未実装) -・プリーストのアスペルシオ、セージのフレイムランチャーでスキル使用時にアイテム消費 -・ミストレスカード装備時にセージの属性原石&ハンターの罠が消費されないバグを修正 - - (/map) - skill.c - skill_check_condition() 修正 - --------------- -//0566 by パイン - -・0563のスキル解除条件が間違っていたので修正。武器をはずす&武器を変えた場合は - 無条件で解除するようにした。 - -# pc_checkallowskill について(前回説明書くのを忘れていたので…) - 一応今後の含みとしてreturnを返すようにしていますが、現在は(戻り先では)使っていません。 - 今現在は騎士・クルセイダーくらいしかスキル使用時の武器制限がありませんが、今後出てこない - とも限らないので、もし(2次上位か3次?)出てきたらここでチェックしてください。 - - (/map) - pc.c - pc_checkallowskill() 修正 - --------------- -//0565 by 引退人 - -・マップ移動時に矢装備が外れないように修正 -・ログイン時に矢装備が表示されるように修正 - (/common) - mmo.h - (矢装備は0x8000なので)shortだとintへのキャスト時などに - 負値となってしまうためunsigned shortに修正 - struct item - short equip; -> unsigned short equip; - (/map) - clif.c - clif_itemlist() アイテムリストの矢のついでに矢装備もチェック - clif_arrowequip() シンプル化 - pc.c - pc_equipitem() 修正 - --------------- -//0564 by 紅葉 - -・@modelの服染め不可能判定修正。 -・@modelで、選べるハズの髪形に変更出来なかった部分を修正。 - 上記変更点に合わせてhelp.txtの修正。 - --------------- -//0563 by パイン - -・MOBの暗闇スキルを食らった後に回復しないのを修正。…なんだけど、適正な値が分からないので - 毒や沈黙と同じ時間にしてあります - 今後、また手を加えるかもしれません。 -・2HQとスピアクイッケンを使用中に武器を変えた場合は解除するように変更。 - - (/map) - skill.c - skill_castend_damage_id() 修正。 - skill_status_change_timer() 修正。 - pc.c - pc_checkallowskill() 新設。 - pc_equipitem() 修正。 - pc.h - pc_checkallowskill() 新設。 - --------------- -//0562 by huge - -・矢を弓装備時以外でも装備できるように戻しました。 -・矢の属性を適用するのを弓装備時のみに修正。 - - pc.c - pc_equipitem() 修正。 - pc_calcstatus() 修正。 - --------------- -//0561 by 引退人 - -・Linuxでもコンパイルできるように - (/map) - skill.c - skill_castend_damage_id() 変数dx,dyの宣言位置変更 - Makefile - LIBS に -lm 追加 - -・@jobcange での♀バード&♂ダンサーによる鞍落ち防止。 by (no name)さん - atcommand.c - @jobchange,@charjobに性別チェック追加 - -// ナナスさん修正 -・clif.c内でatcommand.hを2度includeしていたので一つ削除。 -・パーティー会話、ギルド会話でも@コマンドをチェックするように修正。 - (/map) - clif.c - clif_parse_PartyMessage()、clif_parse_GuildMessage 修正。 - --------------- -//0560 by パイン - -・0559 の athena-start を Unix Like OS でも動くようにリファイン。 - --------------- -//0559 by rowla - -・athena.shを全面的に書き直し、athena-startに。athena-start startで開始、athena-start stopでサーバー停止。cygwinでテスト、*BSD|Linuxでは未テスト(環境がないため)。 - --------------- -//0558 by 死神 - -・ブリッツビートを自動だけ弓を装備していないと発動できないように変更。(手動は武器に関係なく使えます。) 未テスト。 -・トラップの重さ修正。(何故かは知らないけど100になっていたのを10に修正。因みに倉の表示は100が10で10が1です。) -・弓で使うスキルの場合矢が減らないのが仕様だったと覚えているので矢をチェックしないように修正。 -・モンクスキル三段掌の表示をパッシブに変更。 -・マップフラグをセットする時dummyがなくてもセットできるように修正。 -(mapflag nomomo dummyからmapflag nomemoでも大丈夫なように変更。) -未テスト。 - (/db) - item_db.txt 修正。 - skill_db.txt 修正。 - (/map) - skill.c - skill_check_condition()、skill_additional_effect() 修正。 - skill_status_change_start() 修正。 - npc.c - do_init_npc() 修正。 - --------------- -//0557 by huge - -・矢を、弓装備時のみ装備できるように修正。 -・弓を装備から外したら、矢も外れるように修正。 -・矢を消費するスキルをいくつか修正。 -・鷹を、弓を装備しているときのみ発動するように修正。(未テスト) - - pc.c - pc_equipitem() 修正。 - pc_unequipitem() 修正。 - skill.c - skill_additional_effect() 修正。 - skill_check_condition() 修正。 - --------------- -//0555 by 死神 - -・細かい修正とプレゼントボックス、古い巻物のバグ修正。 -・@コマンド@refine、@produce少し修正。 -・サーバーのIPにDNS名を使えるように変更。(今さらですがYareから -持ってきた物です。) -・スティール計算式変更とMVPアイテム処理変更。 -・店NPCを利用によるジョブ経験値獲得計算式変更。 - 獲得ジョブ経験値 = ln(金*スキルレベル) * shop_exp / 100 -・ほとんどテストしてないのでバグの可能性があります。 - help.txt 修正。 - (/conf) - atcommand_athena.conf 修正。 - battle_athena.conf 修正。 - (/db) - item_db.txt 修正。 - (/doc) - conf_ref.txt 修正。 - (/char) - char.c - do_init()、check_connect_login_server() 修正と少し修正。 - (/map) - mob.c - mob_damage() 修正。 - pc.c - pc_getitemfromcart()、pc_steal_item() 修正。 - pet.c - pet_return_egg()、pet_get_egg()、pet_unequipitem() 修正。 - script.c - buildin_getitem() 修正。 - skill.c - skill_produce_mix() 修正。 - storage.c - storage_storageget() 修正。 - atcommand.c 修正。 - map.c - map_config_read() 修正と少し修正。 - chrif.c - check_connect_char_server()、do_init_chrif()、chrif_setip() 修正と少し修正。 - npc.c - npc_buylist()、npc_selllist() 修正。 - --------------- -//0554 by NOCTURNE -・サーバーSnapShot -・too/addaccountの削除 -・help.txtの更新 - --------------- -//0553 by 胡蝶蘭 - -・ladminのバグ修正と機能追加 - ・キーワードによるアカウント検索機能追加 - ・シェルコマンドとして使用できるようにプロンプトを使わないモード追加 - ・追加機能についてはladminを見てください - ・ ladminの--makesymlinkにより、シンボリックリンクとしてaddaccountを - 作成するため、以前のaddaccountは削除する必要があります。 - これらのシンボリックリンク(Cygwinではショートカット)と、 - 古いaddaccountは鯖snapshotには含まないで下さい。 - - (tool/) - ladmin - 機能追加と修正 - -・女性アカウントしか作成できないバグ修正 -・ladmin、checkversion使用時loginサーバーが暴走するバグ修正 -・GMアカウント周辺のIDを避けるためにSTART_ACCOUNT_NUMを変更 - (既にGMアカウントは避ける仕様になっていますが、混乱防止のため) - - (login/) - login.h - START_ACCOUNT_NUMを500000から2000000に変更 - login.c - 7532(切断)パケットの処理修正 - mmo_auth_new()修正 - -・backupがバックアップするファイルにpet.txtを追加 - (tool/) - backup - ファイル追加修正 - --------------- -//0552 by 死神 - -・安定性を上げる為の修正ですが本当に安定性上がったか -どうかは不明です。 -・PVPによりクライアントが落ちる問題修正。 - atcommand.c - @pvpoff、@pvpon、@gvgon、@gvgoff 修正。 - script.c - buildin_pvpon()、buildin_pvpoff()、buildin_gvgon()、buildin_gvgoff() 修正。 - clif.c - clif_pvpset() 修正。 - skill.c - skill_attack()、skill_unit_onplace()、skill_unit_onout() 修正。 - skill_unit_ondelete() 修正。 - --------------- -//0551 by Kalen -・DB修正 - db/create_arrow_db.txt 完成 - SourceID順にソートしました。 - --------------- -//0550 by huge - -・矢作成スキル実装 - - clif.c - clif.h - clif_arrow_create_list() 追加 - clif_arrow_created() 追加 - clif_parse() 修正 - - pc.c - pc_search_inventory() 修正 - - skill.c - skill.h - skill_arrow_db() 追加 - skill_readdb() 修正 - skill_castend_damage_id() 修正 - - db/create_arrow_db.txt 追加 - db/skill_db.txt 修正 - - まだdbは未完成です。 - --------------- -//0549 by Kalen - -・map_athena.conf - オリジナルスクリプト、季節限定スクリプトを整頓 - shop3.txt追加 - -・各種NPC追加&修正 - npc_event_yuno.txt [追加]ジュノーイベント(青石5個GET) - npc_cTower.txt [追加]地上地下の鍵NPC - npc_town_yuno.txt [修正]台詞修正 - - npc_event_carnival.txt [追加]旧鯖カーニバルイベント時のNPC - --------------- -//0548 by huge - -・矢を装備した時の表示バグ問題を修正。 - clif.c - clif_arrowequip() 修正。 - pc.c - pc_equipitem() 修正。 - -あとは、マップを移動するたびに装備が外れちゃう点ですね・・・。 - --------------- -//0547 by 死神 - -・安定性を上げる為の修正と細かい修正。 -・スキルユニットの判定をしている間メモリーを解除できないように変更。 - map.c - map_foreachinarea()、map_foreachinmovearea() 修正。 - map_foreachobject() 修正。 - block_free_maxを32000から50000に変更。 - pc.c - pc_calcstatus() 修正。 - skill.c - do_init_skill()、skill_unit_timer()、skill_status_change_clear() 修正。 - skill.c、battle.c、battle.h - struct battle_configのsanctury_typeをsanctuary_typeに変更。 - (英語スペル間違いで修正。) - battle_athena.conf - sanctury_typeをsanctuary_typeに変更。 - conf_ref.txt - sanctury_typeをsanctuary_typeに変更。 - --------------- -//0546 by 獅子o^.^o - -conf/npc_shop2.txt -.バ一ド、ダンサ一用の武器。コモドの武器屋で販売している。 -.モンク用の武器。カピト一リナ修道院で販売している。 - --------------- -//0545 by 死神 - -・ブリッツのダメージを自動で分散、手動で普通になるように変更。 -・オートブリッツバグ修正。(これで大丈夫だといいけど...) - map.c - block_free_maxを16000から32000に修正。 - block_list_maxを4096から5120に修正。 - battle.c - battle_weapon_attack() 修正。 - skill.c - skill_attack()、skill_castend_damage_id() 修正。 - --------------- -//0544 by Diex -・猛龍拳から阿修羅覇凰拳へのコンボ実装。 -・阿修羅覇凰拳発動後、敵の背後に移動するよう、修正。 -・三段掌のダメージ修正。 - (/map) - skill.c - skill_castend_damage_id() 修正。 - skill_check_condition() 修正。 - skill_use_id() 修正。 - pc.c - pc_attack_timer() 修正。 - pc_authok() 修正。 - battle.c - battle_calc_weapon_attack() 修正。 - battle.h - struct Battle_Config 修正。 - map.h - struct map_session_data 修正。 - (/conf) - battle_athena.conf 修正。 - -はっきりいってコンボ繋げづらいです。そのため阿修羅へのコンボはかなり甘い判定に -してます(一時的にですが)。繋げづらければbattle_athena.confのほうでデュレイ時 -間を大きくしてみてください。 - 動画見てて気づいたのですが、阿修羅覇凰拳は猛龍拳が発動した後、即時発動のスキ -ルに変わってるようなのです。他力本願ですが、阿修羅までのコンボのパケを記録した -物をどなたかアップしてもらえないでしょうか?詳細がわかり次第、修正します。 - --------------- -//0543 by 死神 - -・ブリッツのダメージを分散されるように変更。 -・普通のアカウント作りではGMアカウントを作れないように変更。 -(前に自分が入れた物がなくなったので戻しただけですが...) -・取り巻きが主と一緒に死ぬように変更。(ただちょっと重くなる -可能性があります。) 未テスト。 -・MVP経験値が表示だけされて実際には入ってない問題修正。 - (/login) - login.c - mmo_auth_new() 修正。 - (/map) - skill.c - skill_castend_damage_id() 修正。 - battle.c - battle_calc_misc_attack() 修正。 - mob.c - mob_damage() 修正。 - mob_deleteslave()、mob_deleteslave_sub() 追加。 - --------------- -//0542 by 死神 - -・オートブリッツバグ修正。(今度こそ大丈夫のはず...) -・自分に使ったヒールでは経験が入らないように変更。 -・店NPCを利用によるジョブ経験値獲得計算式変更。 - 獲得ジョブ経験値 = ln(金) * shop_exp / 100 -になります。 -logを使うことで金が多くても入る経験値が多く入らないように変更しました。 - (/map) - battle.c - battle_damage() 修正。 - skill.c - skill_attack()、skill_castend_damage_id() 修正。 - skill_castend_nodamage_id 修正。 - npc.c - npc_buylist()、npc_selllist() 修正。 - map.c - map_foreachinarea()、map_foreachinmovearea()、map_foreachobject() - 修正。(大した修正ではないです。) - (/conf) - battle_athena.conf 修正。 - (/doc) - conf_ref.txt 修正。 - --------------- -//0541 by huge - -・矢をまとめて持てるように修正。 -・弓で攻撃したときに、装備している矢を消費するように修正。 - - itemdb.c - itemdb_search() 修正 - itemdb_isequip() 修正 - - battle.c - battle_weapon_attack() 修正 - battle_calc_weapon_attack() 修正 - - clif.c - clif.h - clif_arrow_fail() 追加 - clif_parse_EquipItem() 修正 - --------------- -//0540 by 死神 - -・バグ修正と問題ありそうな所修正。(これでWZ_FIREPILLARとブリッツに -よる鯖ダウンはなくなるはず...) - map.c - map_foreachinarea()、map_foreachinmovearea() 修正。 - skill.c - skill_unitsetting()、skill_delunitgroup() 修正。 - pc.c - pc_damage() 修正。 - battle.c - battle_damage() 修正。 - npc.c - npc_parse_mob() 修正。 - mob.c - mob_spawn_dataset() 修正。 - --------------- -//0539 by 死神 - -・clif_pvpset()をマップからAREAかマップかを設定できるように変更。(pvpの時の処理は0535以前の物に戻そました。自分だけに転送してもいいような気もしますが...) - clif.h、clif.c - clif_pvpset() 修正。 - clif_parse_LoadEndAck() 修正。 - script.c - buildin_pvpoff() 修正。 - buildin_pvpon() 修正。 - atcommand.c 修正。 -・攻撃途中でアイテムを拾うと攻撃が止まるように修正。 - pc.c - pc_takeitem() 修正。 -・0535説明が爆裂波動になっているがそれは金剛に間違いです。 -・0537で説明を忘れましたがモンスターのdefとmdefを10000以上に設定すれば全ての攻撃に1ダメージになるモンスターになります。そしてモンスター情報でdefと -mdefが10000以上の場合def 100、mdef 99に表示するように変更。本鯖仕様に -するにはmob_db.txtを修正してください。 - --------------- -//0538 by huge - -・グリムトゥースを範囲攻撃に修正 -・サプライズアタック実装 (有効範囲って、これであってるのかな?) -・バックスタブの仮実装 - 本鯖でやってる人から話を聞いて、場所指定じゃなくて - タゲ取っても良さそうだったので変更しました。(やりやすかったので (^^; - まだ、mobの後ろに居るかどうかの判定は入ってません。 - -・battle.c - battle_calc_weapon_attack() 修正 - -・skill.c - skill_additional_effect() 修正 - skill_castend_damage_id() 修正 - skill_check_condition() 修正 - skill_use_id() 修正 - skill_castend_nodamage_id() 修正 - -・skilldb.txt - バックスタブの種類を[場所]から[敵]へ変更 - --------------- -//0537 by 死神 - -・スティールバグ修正とbattle_athena.confの項目追加、仕様変更と細かい修正です。 -(スティールは計算式に問題があったので修正して確率を更に落としました。) - battle.h - finger_offencive_typeをfinger_offensive_typeに修正。(英語スペル間違いで修正しました。) - struct battle_configにrestart_hp_rate、restart_sp_rate 追加。 - battle.c - battle_calc_weapon_attack()、battle_calc_magic_attack() 修正。 - skill.c - skill_attack() 修正。 - clif_skill_nodamage()にスキルレベルを送るように変更。(Mさんの指摘により修正。) - clif.c - clif_skill_estimation() 修正。 - conf_ref.txt - finger_offencive_typeをfinger_offensive_typeに修正と少し追加。 - mob.c - mob_ai_sub_hard()、mob_target()、mob_damage() 修正。 - pc.c - pc_steal_item() 修正。 - atcommnad.c、atcommnd.h - @コマンド@gvgon , @gvgoff 追加。 - battle_athena.conf - finger_offencive_typeをfinger_offensive_typeに修正と少し追加。 - --------------- -//0536 by hogefuga3 (Athena staff) - -・新GRFファイルフォーマット対応 - - Athena staff 様の作成されたパッチを適用しました。 - 更新履歴の部分はパッチミスになったので手動で組み込み。 - -(変更) - common/ - grfio.c - --------------- -//0535 by 死神 - -・0533の問題がありそうな部分全て修正。修正した所を全部チェックしてなかったので修正したファイルだけ... -・スクリプトsetmapflagnosave 追加。 - setmapflagnosave マップ名、セーブするマップ名、座標(X、Y) - nosaveフラグをonにします。 -・battle_athena.confに追加と一部仕様変更。(詳しくはconf_ref.txtを参考してください。) -・モンスターのdefとmdefが10000以上の場合全ての攻撃(クリティカル含めて)が1ダメージになるように変更。(トラップやブリッツの場合両方が10000以上の場合のみ1になります。) 草とキノコに1ダメージ固定は削除しました。(元々本鯖でも1固定ではないです。精練等による引き上げダメージはそのまま出ますので... 固定したいのならdefとmdefを10000にしてください。実はこれはクリスタルに為に作ろうとした物ですが...) -・爆裂波動の時アイテムによるスキルは使用できるように修正。 -・その他少し修正。(修正の物の中にテストしてない物もあります。) - (/doc) - conf_ref.txt 修正。 - (/conf) - battle_athena.conf 修正。 - (/map) - battle.h 修正。 - battle.c 修正。 - mob.h 修正。 - mob.c 修正。 - skill.c 修正。 - npc.c 修正。 - pc.c 修正。 - script.c 修正。 - clif.c 修正。 - chrif.c 修正。 - --------------- -//0534 by Diex - -・コンボシステム仮実装 - map/ - battle.c - battle_weapon_attack() 修正。 - clif.c - clif.h - clif_combo_delay() 関数追加。 - map.h - map_session_data 変数追加。 - pc.c - pc_authok() 変数追加。 - pc_attack_timer() 修正。 - skill.c - skill_castend_damage_id() 修正。 - skill_check_condition 修正。 - skill_use_id 修正。 - db/ - skill_db.txt 修正。 - -注)猛龍拳から阿修羅覇鳳拳にはまだつなげません。 - 阿修羅覇鳳拳を放った後、PCはMOBの背後(?)に移動してるっぽいのですが、 -  そこらへんの情報が足りません。情報提供お願いします。 - --------------- -//0533 by るるる - -・草とキノコに1ダメージ固定 -battle.c の battle_weapon_attack() と battle_calc_attack() を修正 -battle.c の battle_get_mobid() を追加 -mob.c の mob_makedummymobdb() と mob_readdb() を修正 - -・スキルログにモブの固有番号&PCのID番号を表示 -(battle.c の battle_get_mobid() を追加したのでそのついでに) -mob.c skill.c の変更箇所多数(汗 -("MOB %d" もしくは "PC %d" で検索すれば変更箇所がわかるかと) - -・ハンターの罠を使ったスキルで罠を消費するようにした -batttle.c の skill_check_condition() を修正 -(ジェム消費処理の流用っぽいことをやってるんだけど処理中身は理解してないw) - -・サンクチュアリ&マグヌスのダメージ判定を不死属性&悪魔種族に再度修正 -0532で再び元に戻ってしまったのをなおしました。 -ただし、回数&人数判定には手を加えていません(ってか自分にはまだムリ) - -以上。 -切った貼ったの見様見真似でやったので言語的に果たしてこれでよいのか。。。 -もし処理方法に問題有りだったら修正なりをしていただけると嬉しいです。 - --------------- -//0532 by 死神 - -・修正した所を全然チェックしてなかったので修正したファイルだけ...汗 -・mapflagにnopenalty追加。使用方法は - mapflag nopenalty dummy -です。機能はそのマップで死んだ時経験が減らないようにします。 -・mapflagにpvp_noparty、pvp_noguild、gvg、gvg_noparty追加。 -pvp_nopartyはPVPモードで同じパーティに攻撃が当たらない、pvp_noguildはPVPモードで同じギルドに攻撃が当たらない、gvgはシーズモードに、gvg_nopartyはシーズモードで同じパーティに攻撃が当たらない物です。 -・可動してないタイマーは全て-1になるように変更。 -・吹き飛ばし処理修正。 -・マップロード直後気功が見えない問題修正。 -・残影の処理修正。 -・マップをロードすると死んだふりが解除されるように変更。 -・PVPを少し変更。 -・古木の枝で出るモンスターを自分のレベルより高い物は出ないように変更。 -・加速ポーションのsc_start SC_SpeedPot0,1,0;をsc_start SC_SpeedPot0,1800,0;のように変更。SC_SpeedPot?の後の数値は持続時間です。(単位は秒) -・@コマンド@pvpを@pvponに変更と@pvponと@pvpoff、@gatの機能変更。 -・battle_athena.confのpvp削除。 -・battle_athena.confにdeath_penalty_type追加。 -・ペナルティの適用を死んだ時から死んだ後リスタートした時に変更。(リザで復活すると経験が減りません。本鯖の仕様がかなり気にいらなかったので変更しました。) -・スクリプトsetmapflag、removemapflag、pvpon、pvpoff、gvgon、gvgoff追加。 - setmapflag マップ名、マップフラグタイプ - 指定したマップフラグをonします。(ただpvp、gvgはpvpon、gvgonでできるので指定しても動作しません。あとnosaveの場合処理がちょっと複雑になるので対応してません。) - removemapflag マップ名、マップフラグタイプ - 指定したマップフラグをoffします。(ただpvp、gvgはpvpoff、gvgoffでできるので指定しても動作しません。こちらはnosaveも可能です。) - pvpon マップ名 - 指定したマップをPVPモードにします。 - pvpoff マップ名 - 指定したマップのPVPモードを解除します。 - gvgon マップ名 - 指定したマップをシーズモードにします。 - gvgoff マップ名 - 指定したマップのシーズモードを解除します。 -ただ全てのスクリプトの動作は確認してませんので注意してください。 -・サンクチュアリ、マグヌスエクソシズムの処理を0529に戻しました。 -自分の調査ではサンクチュアリは人数の制限があります。(レベル1で4名で -1レベルに一人ずつ増えます。) -・その後少し修正。(したはず...) - (db/) - const.txt 修正。 - item_db.txt 修正。 - (conf/) - battle_athena.conf 修正。 - (doc/) - conf_ref.txt 修正。 - (map/) - clif.h、clif.c 修正。 - mob.c 修正。 - pc.h、pc.c 修正。 - skill.c 修正。 - pet.c 修正。 - npc.c 修正。 - map.h、map.c 修正。 - battle.h、battle.c 修正。 - atcommand.h、atcommand.c 修正。 - script.c 修正。 - makefile 修正。 - --------------- -//0531 by 獅子o^.^o - -conf/npc_turtle.txt -.タートルアイランドに行く時、サ一バ一を落って問題修正 -.npc_turtle.txtの508行目 -set Zeny - 10000,0; --> set Zeny,Zeny-10000; 修正 - --------------- -//0530 by RR -・スキル「サンクチュアリ」で攻撃対象をアンデット/悪魔種族から不死属性/悪魔種族に変更 -・スキル「マグヌスエクソシズム」で攻撃対象をアンデット/悪魔種族から不死属性/悪魔種族に変更 -・スキル「サンクチュアリ」の回復回数を人数からカウントに変更 - skill.c - skill_unit_onplace()修正 - skill_unit_onout()修正 - -多分この仕様で合ってるはずです…。 - --------------- -//0529 by 胡蝶蘭 - -・MOBがスキル「ヒール」を使用するとサーバーが落ちる場合があった問題を修正 -・スキル「サンクチュアリ」で攻撃対象を不死属性からアンデット/悪魔種族に変更 - - skill.c - skill_unit_onplace()修正 - skill_castend_nodamage_id()修正 - -・ログインサーバーのアカウントデータベース保守ツールを添付 - Perl製なので実行にはPerlが必要です。 - 使用方法などはエディタで開いて見てください。 - 使い方が良くわからない人は手を出さないほうがいいです。 - - 特に理由が無い限りアカウント作成もこちらのツールを使ってください。 - addaccountはパケットの都合上パスワード文字数の制限がきついので。 - - アカウントを削除してもキャラクターデータ、倉庫データ、 - その他のアカウント以外のデータは消えません。相手がログイン中だった場合 - 強制切断はされませんが、次回からはログインできないはずです。 - (つまりは、単にlogin-server上のアカウントを消しているだけです) - - (login/) - login.c - parse_admin()追加、parse_login()修正 - (doc/) - admin_packet.txt - 新規追加。管理パケット情報 - (tool/) - ladmin - login-server administration toolのPerlスクリプト - - --------------- -//0528 by RR -・スキル「ヒール」を使用した際に回復量に比例した分だけジョブ経験値が獲得できるように変更 -・商人系職業が店NPCを利用した際にジョブ経験値が獲得できるように変更 -・両方ともbattle_athena.confで調整可能にしました。初期設定は0倍(非適用) -・map_athena.confにてかぼちゃクエストのものが入ってなかったのでコメントアウトしながら追加。 - - map_athena.conf - - battle.c battle_config_read() - battle.h Battle_Config - battle_athena.conf - 以上、battle_athena.conf利用ために変更 - - pc.c pc_heal() - 戻り値をhp+spに。戻り値を利用してる部分がなさそうだったので使わせて貰いました。バグが起きたらすみません。 - - skill.c skill_casted_nodamage_id()のヒール部にてジョブ経験値獲得するよう変更 - - npc.c npc_buylist() - npc_selllist() 変更 - これらとの兼ね合いでskill.hをinclude。 - - -商人の店利用ジョブ経験値獲得ですが、計算式はまだ考え中なので仮で。 -計算式はアイテム購入が 代金 * スキルレベル(ディスカウント)/ ((1+300/アイテム個数) * 4000) -アイテム売却が 代金 * スキルレベル(オーバーチャージ) / ((1+500/アイテム個数) * 4000)です。 -常に矢をたくさん一緒に購入することで経験値を多量に稼ぐことが可能ですね…。 -どなたかいい式を思いついたら変更お願いします。 - -ところで転職NPCが一部かぶってるんですが修正しないでいいんでしょうか? - --------------- -//0527 by 死神 - -・0526のバグ修正。(テストの為に変えていた物を入れたままアップしてしまったのが原因でした。) - skill.c 修正。 - pc.c 修正。 - mob.c 修正。 - clif.c 修正。 - --------------- -//0526 by 死神 - -・0525のリザレクションを死んだキャラに使えないバグ修正。(テストはしてませんが治ったはずです。多分...) - skill.c 修正。 - clif.c 修正。 - --------------- -//0525 by 死神 - -・dmotionの間はキャラが動かないように変更。(テストしてません。) -・メテオのダメージ表示タイミング修正。(少し遅い気もしますが...) -・バックスライディングの時にモーションが出るように変更。(スキル使用後 -0.2秒後にスキル使用パケットを送るように変更しました。ラグ等によって変な動作をする可能性もあります。) -・0524の修正。 -・ハイディングしている時自然回復しないように変更。 -・0519で間違ったconfの修正と細かい所修正。 - map.h - struct map_session_dataのcanmove_tickをcanact_tickに変更。 - skillcanmove_tickをcanmove_tickに変更。 - skill.c 修正。 - pc.c 修正。 - pc.h 修正。 - clif.c 修正。 - battle.c 修正。 - battle.h 修正。 - mob.c 修正。 - mob.h 修正。 - char_athena.conf 修正。 - map_athena.conf 修正。 - --------------- -//0524 by huge - -・ローグ トンネルドライブ実装 - clif.c - clif_parse_WalkToXY() - pc.c - pc_calcstatus() - - どのくらい速度減少するのか分からなかったので、暫定的に - speed += speed * (20-スキルレベル)/40 - と、しました。本鯖仕様が分かる方居ましたら修正お願いします。 - --------------- -//0523 by NOCTURNE - -・npc_event_rental.txtにクルセイダー用のペコペコ管理兵を追加 --------------- -//0522 by 波浪 - -・mob_db.txtをジュノー後のデータに修正 - --------------- -//0521 by 胡蝶蘭 - -・mapサーバーに繋がらない問題を修正 - clif.c - clif_parse()の修正 - --------------- -//0520 by 胡蝶蘭 - -・charサーバーログの「set map X.Y HOGE.gat」が表示されなくなりました - 変わりに、「set map M from XX.YY.ZZ.WW:PP (CC maps)」 - というふうに何個のマップをセットしたかだけを表示するようになります。 - - char/char.c - parse_frommap修正 - -・複数mapサーバーに仮対応 - ・NPCのマップサーバー変数は鯖間では共有されません。共有すべき変数を - 持つNPCがいるマップ同士は同じmapサーバーで動かすべきです。 - おそらくPCのグローバル変数は共有できると思います(未テスト) - ・暫定的に動くようにしただけなので、不都合があるかもしれません。 - 特に、パーティ/ギルド/倉庫/ペット/Wisなどのinterサーバーを使う機能が - 正しく作動するか全くチェックしていません。 - ・「recv map on XX.YY.ZZ.WW:PP (CC maps)」というログが表示されます。 - これは他のmapサーバーが担当するマップのリストが、このmapサーバーに - 正常に受信されたという意味です。 - - (char/) - char.c/char.h - parse_frommap()修正 - mapif_sendallwos()追加 - (map/) - map.c/map.h - map_setipport()を修正 - struct map_session_dataのstateメンバにwaitingdisconnect追加 - chrif.c/chrif.h - 色々追加 - clif.c - waitingdisconnectが1ならパケットを無視するようにした - pc.c - pc_setpos()修正(マップサーバー変更処理など) - pc_setnewpc()修正 - --------------- -//0519 by 死神 - -・サーバーsnapshotと色々修正。 -・死んだキャラに攻撃が当たるバグ修正。(テストしてません。本当に治ったかどうか報告お願いします。) -・0517のアイスウォールの処理を少し変更。 -・メテオをモンスターも使えるように変更。(テストしてません。報告お願いします。) でもちょっとメモリーの使用量が増えました。(約10M程上がるようです。) -・ボスの取り巻きがボスと一緒に行動するように変更。(テストしてませんのでどんな動きをするかは確認してません。攻撃も受けてないのにボスの隣から勝手に離れるかどうかの確認をお願いします。) -・その他細かい物修正。 - client-packet.txt 修正。 - map.h - AREA_SIZEを15から20に変更。 - struct map_session_data、struct mob_data、struct skill_timerskill 修正。 - map.c - map_quit() 修正。 - clif.h - clif_changemapcell() 修正。 - clif.c - clif_getareachar_skillunit()、clif_clearchar_skillunit()、clif_changemapcell() 修正。 - skill.c - skill_unitsetting()、skill_unit_onlimit()、skill_castend_pos2() 修正。 - skill_castend_nodamage_id()、skill_check_condition()、skill_attack() 修正。 - skill_timerskill()、skill_addtimerskill()、skill_cleartimerskill() 修正。 - その他少し修正。 - skill.h - skill_addtimerskill()、skill_cleartimerskill() 修正。 - pc.c - pc_movepos()、pc_walk()、pc_authok() 修正。 - mob.c - mob_spawn_dataset()、mob_spawn() 修正。 - mob_changestate()、mob_damage() 修正。 - mob_ai_sub_hard_mastersearch()、mob_ai_sub_hard() 修正。 - その他少し修正。 - battle.c - battle_calc_weapon_attack()、battle_weapon_attack() 修正。 - その他少し修正。 - --------------- -//0518 by Kalen -・Event_pumpkin関連のフラグ不具合修正 - --------------- -//0517 by 死神 - -・アイスウォールで摺り抜る問題修正と少し修正。(Mさんパケットの提供ありがとうございます。) - clif.h - clif_changemapcell() 追加。 - clif.c - clif_changemapcell() 追加。 - skill.h - SC_STEELBODYを84から87に変更。 - skill.c - skill_unitsetting()、skill_unit_onlimit() 修正。 - skill_status_change_end()、skill_status_change_start() 修正。 - client_packet.txt 修正。 - --------------- -//0516 by 死神 - -・モンスターのメテオによる鯖ダウンを臨時に防いで置きました。(テストはしてません。) モンスターのスキルについてちょっと分析不足ですので分析した後に修正して置きます。 -・スキル指弾の仕様をbattle_athena.confで決めるように変更。(0515の物がちょっともったいなかったので...) - skill.c - skill_castend_pos2() 修正。 - battlc.h、battle.c - battle_configにfinger_offencive_type 追加。 - battle_calc_weapon_attack() 修正。 - battle_athena.conf 修正。 - conf_ref.txt 修正。 - --------------- -//0515 by 死神 - -・スキルメテオと指弾修正とパケット修正、0512の落とし物修正と少しだけの仕様変更です。 -・指弾の場合説明を見てこんな感じかなと思って作った物です。以前の物が本鯖にあっているなら元に戻します。 -・メテオの1発の範囲は5*5セル(range = 2)です。 -・アイテム使用パケットを新しい物に変更したがエフェクトが出ない物は出ないようです。(色々エフェクトが入っているみたいだから後は使って確認ですけどね。) -・0512でhitrateが10000以上で必中ではなく100000以上で必中ですのでコードの修正のさいには気をっつけてください。 -・battle_athenaに設定されている武器の製造率とペットの捕獲確率の計算方法を少し変えました。(気にする必要もない物ですけどね。) - skill.h - skill_addtimerskill()、skill_cleartimerskill 追加。 - skill.c - skill_attack() fix、skill_use_id()、skill_use_pos() 修正。 - skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 - skill_timerskill()、skill_addtimerskill()、skill_cleartimerskill 追加。 - skill_castcancel()、skill_castend_pos2()、skill_unitsetting() 修正。 - skill_produce_mix()、do_init_skill() 修正。 - mob.c - mob_damage() 修正。 - battle.c - battle_calc_weapon_attack() 修正。 - map.h - struct skill_timerskill 追加。 - struct map_session_data 修正。 - map.c - map_quit() 修正。 - pc.c - pc_authok() 修正。 - pc_damage() 修正。 - clif.c - clif_parse_WalkToXY() 修正。 - clif_useitemack() 修正。(資料提供: Kalenさん) - pet.c - pet_catch_process2() 修正。 - skill_db.txt - 気功のSPを10に変更。(ネットの検索では10だったので変更しました。韓国蔵では15と表示されますが...) - client_packet.txt - 01c8の変更です。Kalenさん情報提供ありがとうございます。 - --------------- -//0514 by Kalen - -・script修正+追加 - - conf/npc_event_pumpkin.txt (新規)カボチャイベント - conf/npc_town_guide.txt (修正)Junoの「+」アイコンカラー修正 - conf/npc_town_lutie.txt (一部追加)カボチャイベントに影響するNPCの会話追加 - --------------- -//0513 by RR - -・転職時に装備が全て外れるようにしました。関数位置の変更してないので、ひょっとしたらおかしくなってるかもしれません。うちの環境(win2k cygwin)では平気でしたのでそのままにしてあります。。 -・ノービス時の死亡では、最大HPの2分の1で復活できるよう修正。(スキルによる復活は未確認) -・デスペナルティによる経験値減少を追加。battle_athena.confにて、減少率を変更できるように設定。減る経験値は小数点以下切り捨てなので、必要経験値が低いうちにはちょうどその%分引かれるという風にはなりません。 - battle.h - Battle_Configにdeath_penalty_baseとdeath_penalty_jobを追加。 - battle.c - battle_config_readでdeath_penalty_baseとdeath_penalty_jobを読むように修正。 - pc.c - pc_makesavestatus() 修正。 - pc_damege() 修正。 - pc_jobchange() 修正。 - battle_athena.conf - death_penalty_base,death_penalty_job追加。 - --------------- -//0512 by 死神 - -・問題になりそうな部分の修正と新しいパケットの対応がメインです。後バグも少し治しました。(動けない状態異常になっても動く問題の修正等です。) - athena.sh 修正。(いつも鯖を個別に実行していたので気がつきませんでした。) - makefile - DPACKETVERを2から3 に修正。ジューノ以後の蔵を使うのなら3にして使ってください。(その以前なら2か1) - clif.c - DPACKETVER=3に対応(今の所0x114を0x1deに変換と0x11fを01c9に変換するのみ対応) - clif_skill_damage3() 削除。 - clif_skillcastcancel() 追加。 - clif_skill_damage()、clif_getareachar_skillunit()、clif_skill_setunit() 修正。 - clif_fixmobpos()、clif_fixpetpos()、clif_fixpcpos() 修正。 - 他に少し修正。 - clif.h - clif_skill_damage3() 削除。 - clif_skillcastcancel() 追加。 - battle.c - battle_calc_weapon_attack() 修正。 - hitrateを10000以上にすれば必中になるように変更。(今の仕様ではモンスターの必中攻撃以外は必中になりません。) - 他に少し修正。 - client_packet.txt - 新しいパケット情報追加。 - pc.c - pc_spiritball_timer()、pc_delspiritball() 修正。 - pc_damage()、pc_skill() 修正。 - skill.h - SC_EXPLOSIONSPIRITSを89から86に変更。(86 = 0x56) - SC_DELUGEを86から89に変更。 - skill.c - skill_castcancel()、skill_use_id()、skill_use_pos() 修正。 - skill_check_condition() 修正。 - skill_castend_damage_id()、skill_castend_nodamage_id 修正。 - skill_status_change_end()、skill_status_change_start() 修正。 - skill_db.txt - 気功の消費SPを修正。(前の15が本鯖にあっているみたいですので...) - mob.c - mobskill_use_id()、mobskill_use_pos() 修正。 - map.c - map_quit() 修正。 - atcommand.h - atcommand.c - @コマンド@spiritball追加。(機能は使えばわかります。ただ1000以上は入れない方がいいです。蔵がパンクしますので...) - atcommand_athena.conf - 修正。 - conf_ref.txt - 修正。 -・0x196パケットに新しい物が追加されているので状態変化に直接に関係ないSC_xxxxの番号を調整する必要があります。(今はSC_EXPLOSIONSPIRITSにだけ対応しました。) それとskill_status_change_end()、skill_status_change_start()でclif_status_change()を呼ぶtypeの範囲が64(0x40)未満になっているがそれも追加されている物に合わせて修正する必要がありますが追加されている物が全てわかったわけでもないのでSC_EXPLOSIONSPIRITSにだけ対応しました。今度からは爆裂波動の解除が正確に見えます。金剛はデータを見つけられませんでした。 -※新しいパケットに対応する作業をしていますが情報が不足です。 -イグドラシルの実やイグドラシルの種のエフェクトが出るようにする為に01c8を使ってみましたが駄目でした。client_packet.txtのデータでは何も起こらないので何方が本鯖でイグドラシルの実やイグドラシルの種を使った時のパケットを提供してくれませんか?S 00a7の後00a8が来るのかそれとも01c8が来るのかの確認と00a8の後に01c8が来るのかの確認ができれば何とかなると思いますが... -それと01c9の後に来る?.81bがわかればアイスウォールを摺り抜る問題も解決できると思いますが... -情報提供をお願いします。 - --------------- -//0511 by Diex - -・指弾の攻撃回数修正。 -・阿修羅覇鳳拳、発勁が修練を無視し、無属性になるように修正。 -・金剛使用時、MDEFが正しく表示されてなかったバグを修正。 -・気功の消費SPを修正。 - pc.c - pc_calcstatus() 修正。 - battle.c - battle_calc_weapon_attack() 修正。 - skill.c - skill_check_condition() 修正。 - - skill_db.txt 修正。 - --------------- -//0510 by Diex - -・三段掌の表示バグ修正 -・指弾が気弾が無くても撃てるバグを修正 - map.h - struct map_session_dataにspiritball_old変数追加。 - skill.c - skill_check_condition() 修正。 - clif.c - clif_skill_damage3() 修正。 - battle.c - battle_weapon_attack()、battle_calc_weapon_attack 修正。 - --------------- -//0509 by - -・npc_warp.txt - プロ城→プロフィールドになっていたのを、 - プロ城→ヴァルキリーレルムに修正。 - プロフィールド→プロ城になっていたのをプロフィールド→ヴァルキリーレルムに修正 - --------------- -//0508 by 死神 - -・バグ修正と息吹、気功、気奪の修正がメインです。(今度からは他の人にも気がちゃんと見えます。) -・死んだキャラに経験値が入る問題修正。(テストはしてません。どうなのか報告をお願いします。) - pc.h - pc_addspiritball()、pc_delspiritball() 追加。 - pc_is50overweight() 修正。 - pc.c - pc_gainexp() 修正。 - pc_insert_card()、pc_item_identify() 修正。(大した修正じゃありませんが...) - pc_authok() 修正。 - pc_addspiritball()、pc_delspiritball() 追加。 - pc_spiritball_timer() 追加。 - do_init_pc()、pc_calcstatus()修正。 - pc_spirit_heal() 追加。 - pc_natural_heal()に関わる物の修正。 - map.h - struct map_session_data 修正。 - map.c - map_quit() 修正。 - map_addflooritem() 修正。 - clif.h - clif_spiritball_int()をclif_spiritball()に変更。 - clif_spiritball_ext() 削除。 - clif.c - clif_spiritball_int() をclif_spiritball()に変えて修正。 - clif_spiritball_ext() 削除。 - clif_set01e1() 追加。 - clif_getareachar_pc() 修正。 - skill.h - SC_CALLSPIRITS 削除。 - skill.c - SC_CALLSPIRITS 削除。 - skill_castend_nodamage_id()、skill_check_condition() 修正。 - skill_status_change_start() 修正。 -・床に落ちたアイテムが消えるまでの時間を設定できるように変更。 - battle.h、battle.c - battle_config_read() 修正。 - conf_ref.txt 修正。 - battle_athena.conf 修正。 - --------------- -//0507 by Diex -0505の修正 -・三段掌のエフェクト実装 - --------------- -//0506 by hoenny -全体的に少し式修正 -セイジのスキルがアイテムを消耗するように修正 -(スキルのDBに zeny, spiritball, item, equipを入れたいが時間がなくて臨時的に ...) - --------------- -//0505 by Diex - -・阿修羅覇鳳拳のダメージ修正 -・猛龍拳のダメージ修正 -・指弾実装 -・発勁実装 -・金剛が減算DEFと減算MDEFが90に固定されていたのを乗算DEFと乗算MDEFが90になるように修正 -・三段掌実装(ただしコンボは未実装) - map/clif.c - map/clif.h - clif_skill_damage3()追加 - map/pc.c - map/skill.c - map/battle.c - 修正・及び追加 -(計算式は+ Acolyte Maniax +を参考にしました。) - --------------- -//0504 by 死神 - -・atcommand.c 修正。(たった2文字を追加しただけです。) -atcommnad_gm_onlyがnoじゃなくても使用レベル設定を0にしたコマンドはGMじゃないキャラでも使えます。テストはしてません。 - --------------- -//0503 by nabe - -・精錬修正とLinux用にちょっと変更など - conf/map_athena.conf - npc_event_doll.txt, - npc_turtle.txt, - //npc_pota.txt項目追加 - conf/npc_pota.txt追加(socieさん作のダンジョンポタ子さん) - conf/npc_shop.txt - イズルード武器商人の価格修正 - conf/script_athena.conf - 0499での文字化け?修正 - login/login.c - #include 追加 - map/script.c - buildin_getequipname() - 精錬メニューのmallocを修正 - buildin_getequipisenableref() - 精錬可能条件修正(Athefansさんの条件文にしてみました) - map/skill.c - skill_check_condition()変数宣言位置の変更のみ - --------------- -//0502 by 死神 - -・カプラの倉庫もbattle_athena.confのbasic_skill_checkによって基本スキルが足りなくても使用することができるように修正しました。(プロンテラ中央のカプラのみ確認。) -・クェストスキルの取得は0492のせいです。0481にskillの最後が,2じゃなく,0だと書いたのですが何故か0492で,2になっていたので,0に修正しました。 -・スクリプトgetbaseskillcheckをbaseskillcheckに変更と自分で修正しましたが命令の後になんの数値も入らない場合はスクリプトが正しく作動しなかったので使用する場合はbaseskillcheck(0)にして使わないと正しい結果を得ることができません。 -(詳しくはnpc_town_kafra.txt参照。) - npc_event_skillget.txt 修正。 - npc_town_kafra.txt 修正。 - script.c 修正。 -・GM_account.txtに自分がテストの為に使っていた500000が入っていたので削除しました。(GM_account.txt作った理由は自分勝手にアカウントをGMにすることができるようにする為です。つまりGMとして表示されなくてもGMとして色んな権限を使うことができます。さすがにGM専用の右クリックコマンドは使えませんが... でもこれを活用している方はいないみたいなんですね...) - --------------- -//0501 by hoenny - -・500の問題点修正 --HP回復力向上,SP回復力向上 - map/pc.c - pc_natural_heal_hp()修正 - pc_natural_heal_sp()修正 - -500SP回復力向上 --------------- -//0500 by hoenny - -・修道僧の息吹実装 --基本的に座った時 10秒ごとに回復します. --所持量が 50%をオーバーした場合 20秒ごとに回復します. -・修道僧の気奪実装 --他の修道僧の氣球も吸収が可能です. -・修道僧の金剛実装 --金剛状態ではすべてのアクティブスキルを使うことができないです. - db/skill_db.txt - 気奪修正 - 金剛修正 - map/pc.h - pc_is50overweight()追加 - pc_is90overweight()追加 - map/pc.c - pc_calcstatus()修正 - pc_spheal()修正 - pc_hpheal()修正 - pc_natural_heal_hp()修正 - pc_natural_heal_sp()修正 - pc_natural_heal_sub()修正 - map/skill.c - skill_check_condition()修正 - skill_castend_nodamage_id()修正 - skill_status_change_start()修正 - --------------- -//0499 by 死神 - -・サーバーsnapshotとバグ修正。 -・スティールコインのゼニ量をモンスターレベル*10 + rand(100)に変更。 -・キャスティングタイムがないスキルはタイマーを使わないように変更。 -・カードの使用によるマップ鯖ダウンを防ぐ為に修正。(今度こそ治ったはず...) そして拡大鏡も同じようなことができるので修正。(これは鯖ダウンまでは起こさないようですが...) -・キャラにマップのロードが終わるまでペットのデータが来ないとマップ鯖が落ちる問題修正。(滅多なことがない限り起こらないですけどね。) -・オートバーサーク、重さのアイコンとチェックが正しく適用されるように修正。 -・増速ポーションの適用順番変更。今まではスピードアップポーションが最優先で次がハイスピードポーション、最後がバーサークポーションだったのですが順番を逆に変更しました。 -・アイテムで使うスキルはキャスティングタイムとディレイが0になるように変更。 -・アイテムで使うスキルのレベルがitem_dbに設定しているレベルより高くなるバグ修正。 - pc.h - pc_move()をpc_movepos()に変更。 - pc.c - pc_steal_coin()、pc_insert_card()、pc_item_identify()、pc_authok()、 - pc_calcstatus()、pc_checkweighticon()、pc_damage() 修正。 - skill.c - skill_castend_pos2()、skill_check_condition()、skill_use_id()、 - skill_use_pos() 修正。 - pet.c - pet_recv_petdata()、pet_change_name() 修正。 - map.h - struct map_session_dataにskillitemlv 追加。 - script.c - buildin_itemskill() 修正。 - clif.c - clif_parse_UseSkillToId()、clif_parse_UseSkillToPos()、 - clif_parse_LoadEndAck() 修正。 - mob.c - mobskill_use_id()、mobskill_use_pos() 修正。 - --------------- -//0498 by hoenny - -.氣球がすっかり見えるように修正(消耗スキル使用の時消耗するように修正) -.スキル残影を使用の時氣球を消耗するように修正 - doc/client_packet.txt - 0x1d0追加 - map/map.h - sdのstructureに spiritball追加 - map/clif.h - clif_spiritball_del() -> clif_spiritball_int()修正 - clif_spiritball_cre() -> clif_spiritball_ext()修正 - map/clif.c - packet_len_table[]修正 - clif_spiritball_del() -> clif_spiritball_int()修正 - clif_spiritball_cre() -> clif_spiritball_ext()修正 - map/pc.h - pc_item_steal() -> pc_steal_item()修正 - pc_coin_steal() -> pc_steal_coin()修正 - map/pc.c - pc_item_steal() -> pc_steal_item()修正 - pc_coin_steal() -> pc_steal_coin()修正 - pc_calcstatus()修正 - map/skill.c - skill_check_conditon()修正 - --------------- -//0497 by 死神 - -・0491のスキル残影のバグ修正とスティールとスティールコイン、スナッチャーの修正、mob_targetのバグ修正。 -・交換、座り、パーティ結成等の時に基本スキルをチェックするように修正。(battle_athena.confでチェックするかどうかを決めることができます。) -ただカプラの倉庫はスクリプトで制限をかけるしかありません。 -・スクリプトgetbasicskillcheck追加。 - 使用方法> getbasicskillcheck - 戻り値はbattle_athena.confのbasic_skill_checkです。0の場合は基本スキルのチェックなしで1の場合は基本スキルをチェックするのを意味します。 - skill.c - skill_castend_pos2() 修正。 - skill_additional_effect() 修正。 - pc.c - pc_move() 追加。 - pc_item_steal()、pc_coin_steal() 修正。 - pc.h - pc_move() 追加。 - map.h - struct mob_data 修正。 - mob.c - mob_spawn() 修正。 - mob_target() 修正。 - clif.c - clif_pcinsight()、clif_pcoutsight() 修正。 - clif_parse_ActionRequest()、clif_parse_Emotion()、 - clif_parse_TradeRequest()、clif_parse_CreateParty()、 - clif_parse_ReplyPartyInvite() 修正。 - battle_athena.conf 修正。 - conf_ref.txt 修正。 - skill_db.txt - スティールの射程を3から1に修正。 - battle.h、battle.c - battle_configにbasic_skill_check 追加。 - battle_config_read() 修正。 - trade.c - trade_traderequest() 修正。 - script.c - buildin_getbasicskillcheck() 追加。 - map/makefile 修正。 -※スティールとスティールコインの計算式は適当に作った物です。本鯖の方がどうなのか全然わからないので... - - スティール率 = (モンスターのアイテムdrop率 * (キャラレベル*0.5 + dex*0.4 +スキルレベル*5))% - スティールコイン率 = (スキルレベル + (キャラレベル - モンスターのレベル)*0.3 + dex*0.2 + luk*0.2)% - スナッチャー発動率 = (5.5 + スキルレベル*1.5 +スティールのスキルレベル)% - -本鯖の計算式がわかる方は情報提供をお願いします。 -スティールコインのゼニの量はモンスターのレベル*100になっています。これについても情報提供をお願いします。 -※残影の場合使った後普通に歩く前にはペットの装備が見えないバグがありますが原因がわからないので放置することにしました。 -※基本スキルが足りない時出るメッセージは殆ど合わせていますがパーティに入る時に基本レベルが足りない時に合う物がなかったのでパーティを作れない(基本スキルレベル7の物)と表示して勧誘した方には拒絶されたと表示されます。 - --------------- -//0496 by hoenny - -.WZのメテオストーム実装 -.スティールコイン修正 - db/skill_db.txt - メテオストーム修正 - map/pc.c - pc_coin_steal()修正 - map/skill.c - skill_castend_pos2()修正 - --------------- -//495 by nini - -・ARが片手斧、両手斧でしか発動しなかったところ修正→片手斧、両手斧、鈍器 - map/skill.c - skill_check_condition() 修正 - -前回修正のとき鈍器入れ忘れてたようです。 - --------------- -//0494 by 獅子o^.^o - -conf/mpc_warp.txt -.ハンタ一転職地出ていない修正 - --------------- -//0493 by 波浪 - -・script修正 - npc_town_comodo.txt コモド案内要員部分を削除(npc_town_guide.txtと重複していたので) - npc_town_guide.txt ジュノー案内要員を追加(viewpointの色が…) - npc_town_kafra.txt ジュノーカプラ部分をnpc_town_yuno.txtから移動 - npc_town_refine.txt ジュノー精錬所部分をnpc_town_yuno.txtから移動 - npc_town_yuno.txt 案内要員とカプラと精錬所部分を削除 - npc_turtle.txt 会話を微修正 - --------------- -//0492 by Kalen - -・script修正+追加 - - conf/npc_event_doll.txt (新規) - conf/npc_turtle.txt (新規)亀島関連NPC+亀島クエスト(航海日誌)追加 - - conf/npc_event_skillget.txt (修正)応急処置の不具合+へんなtab削除etc.. - conf/npc_town_alberta.txt (修正)Turtle分離、ちびっ子削除(Event_dollへ移動) - conf/npc_town_guide.txt (修正)台詞がかなり変更されていたので、修正 - - --------------- -//0491 by 死神 - -・スキル残影(韓国クライアントでは弓身彈影)実装。(ただ気弾のチェックはしてません。) - pc.h - pc.c - pc_can_reach() 追加。 - skill.c - skill_check_condition()、skill_castend_pos2() 修正。 - skill_db.txt - 残影修正。 -・script.c - set_posword() 修正。 -※一人でテストは済んでいますが他の人に正しく見えるかどうかは未確認です。 -変なのかどうか報告をお願いします。 - --------------- -//0490 by nabe - -・場所スキルエフェクトでマップ鯖が落ちることがあったのを修正。 - clif.c - clif_skill_poseffect()の - unsigned char buf[16];を、unsigned char buf[32];に修正。 - --------------- -//0489 by 死神 - -・0483のバグ修正。battle_athena.confのquest_skill_learnが正しく適用されるように変更と問題があった部分の修正。(テスト済み) - pc.c - pc_calc_skilltree()、pc_skill() 修正。 - atcommand.c - @lostskill 少し修正。 -・カードの使用によるマップ鯖ダウンを防ぐために少し修正。(ただカードの使用によるマップ鯖ダウンを再現できなかったので本当に治ったかどうかは不明...汗) - pc.c - pc_insert_card() 修正。 -・pc.h - pc_ishiding() 修正。 - --------------- -//0488 by hoenny - -・RGのスティールコイン実装 -・スティール修正 -(二スキル皆一度スチールした場合またスチールすることができない.そしてスキル成功の時モンスターは攻撃するように修正した.エフェクトは成功の時だけ出るように修正した.) - db/skill_db.txt - スティールコイン修正 - map/pc.h - pc_coin_steal()追加 - map/pc.c - pc_coin_steal()追加 - pc_item_steal()修正 - map/skill.c - skill_castend_nodamage_id()修正 - --------------- -//0487 by hoenny - -・485の問題点ちょっと修正 - map/pc.c - pc_item_steal()修正 - map/skill.c - skill_castend_nodamage_id()修正 - --------------- -//0486 by 獅子o^.^o - -db/class_equip_db.txt修正 -裂けた大地の書、燃える太陽の書、乾いてる風の書、默示録、プリーストは装備することができない問題修正 - --------------- -//0485 by hoenny - -・ RGのスナッチャー実装 -・ スティール修正 -・ 露店開設の時 skill_check_conditionで状態をチェクするように修正 - map/pc.h - pc_ishiding()追加 - pc_item_steal()追加 - map/pc.c - pc_item_steal()追加 - map/skill.c - skill_castend_nodamage_id()修正 - skill_additional_effect()修正 - skill_check_condition()修正 - --------------- -//0484 by 胡蝶蘭 - -・覚えてないクエストスキルにスキルポイントを振れる問題修正 - pc.c - pc_calc_skilltree()でクエストスキルのチェック追加 - skill.c - skill_readdb()でinf2を読むように修正 - -・ペコペコ騎乗、ファルコンのアイコンがログイン直後には表示されない問題修正 - clif.c - clif_parse_LoadEndAck()修正 - --------------- -//0483 by 死神 - -・0482の適用。 - npc_event_skillget.txt 修正。 - script.c 修正。 - skill.c 修正。 - pc.c 修正。 - --------------- -//0482 by 胡蝶蘭 - -・クエストスキルのスクリプト少し修正 -・スクリプトgetskilllvを呼ぶとマップサーバーが落ちるバグ修正 - (conf/) - npc_event_skillget.txt - 出来るだけ変数を使わないように修正(未テスト) - (map/) - script.c - buildin_getskilllv()修正 - -・スティールで失敗時のエフェクト変更 -・同じMOBには1回しかスティールできないように修正 - (map/) - skill.c - skill_castend_nodamage_id()修正 - map.h - struct mob_dataにsteal_countメンバ追加 - mob.c - mob_spawn()修正、steal_countを0に初期化するように - -・イドゥンの林檎でHPが32767を超えるとサーバーが落ちるバグ修正(未テスト) - (map/) - pc.c - pc_calcstatus()修正 - --------------- -//0481 by 死神 - -・これの適用には気をつけてください。0478の胡蝶蘭さんの物を Athena.txtのデータ形式変更せずにクェストスキルを覚えるように作った物です。自分が作ってる最中に胡蝶蘭さんが同じ物をアップしてくれたのですがデータは変えない方がいいと思って自分の物もアップしました。注意することは0478のathena.txtは使えないと言うことです。0478前の物を使ってください。 -・skill_db.txtにinf2を追加してこれを使ってクェストスキルかどうかを判断する仕組みです。 - skill.h 修正。 - skill.c - skill_readdb()修正と少し修正。 - skill_get_inf2() 追加。 - skill_db.txt 修正。 - skill_tree.txt 修正。(0478前の物) - clif.c - clif_skillinfoblock() 修正。 - char.c 修正。(0478前の物) -・battle_athena.confにquest_skill_learn追加。 - battle.h 修正。 - battle.c - battle_config_read() 修正。 - battle_athena.conf 修正。 -・/resetskillをbattle_athena.confにquest_skill_learnの設定に合わせてquest_skill_learnがyesの場合はスキルポイントに加算してquest_skill_learnがnoならリセットはされるがスキルポイントに加算されません。 - pc.c - pc_skill()、pc_resetskill() 修正と少し修正。 - pc.h 修正。 - atcommand.c 修正。 - atcommnad_athena.conf 修正。 -・スクリプトのskillコマンドでクエストスキルを覚えられるのは同じですが最後のフラグが2から0に変わってますので注意してください。 - npc_test_skill.txt 修正。 - npc_event_skillget.txt 修正。 - conf_ref.txt 修正。 - client_packet.txt 修正。 - --------------- -//0480 by Kalen - -・Eventskill追加 - conf/npc_event_skillget.txt - -・map_athena.conf変更 - warp.txtの読み込み優先度を変更 - prt_castle等、旧EPのワープと異なる場所に変更された場合 - 先に読み込んだ方が優先されるので、EPの高い順のがよろしいかと - conf/map_athena.conf - --------------- -//0478 by 胡蝶蘭 - -*** - Athena.txtのデータ形式変更!! (自動的に変換されます) - バックアップを忘れずに! - Data format of athena.txt is changed!! (convert automatically) - DONT FORGET BACKUP!! -*** - -・クエストスキル実装 -・スクリプトでスキルレベルをチェックできるように - ・スクリプトのskillコマンドでクエストスキルを覚えられます。 - 使用方法> skill スキルID,スキルLV[,フラグ] - フラグは省略可能で、省略すると1を指定したことになります。 - 1で装備品による一時的な習得、2でクエストによる恒久的な習得です。 - 恒久的な習得の場合、skill_tree.txtに依存します - ・getskilllvコマンド追加 - 使用方法> getskilllv(スキルID) 戻り値はレベルです。0で未習得。 - - (conf/) - npc_test_skill.txt - サンプル - (db/) - skill_tree.txt - クエストスキルとして必要スキルIDに-1を設定。 - (char/) - char.c - フラグもathena.txtに保存するように。 - 以前の形式のデータも読み込めます。 - (map/) - pc.c/pc.h - pc_skill(),pc_calc_skilltree()など修正 - script.c - buildin_skill(),buildin_getskillid()など修正 - -・@questskill,@lostskill追加 - ・@questskill スキルID でクエストスキルを覚えます。(クエストスキルのみ) - ・@lostskill スキルID でスキルを忘れます。(クエストスキル以外もOK) - - atcommand.c/atcommand.h - struct Atcommand_Configにlostskill,questskillメンバ追加 - @questskill,@lostskill処理追加 - --------------- -//0477 by nabe - -・一部変数の宣言位置の変更のみ(Linux等でコンパイルしやすいように)。 - atcommand.c,battle.c,clif.c,mob.c,npc.c,skill.c - --------------- -//0476 by nabe - -・conf/ ちょっと整理 - conf/map_athena.conf修正。 - tortoise.txtをnpc_town_alberta.txt中に移動。 - npc_script2.txtのコモドガイドをnpc_town_comodo.txt中に移動。 - -・npcがキャラ名を喋るときのバグ修正 - map/script.c - buildin_strcharinfo()でキャラ名用のメモリを - staticに確保してしまっていたのを、mallocに修正。 - --------------- -//0475 by hoenny - -泥棒のスティール実装。 -ギルド生成の時エンペリウム消耗するように修正。 - map/guild.c - guild_create()修正。 - guild_created()修正。 - map/skill.c - skill_castend_nodamage_id()修正。 - --------------- -//0474 by 死神 - -・0471の精練の時表示される文字の設定をmap_athena.confからscript_athena.confに変更。 - script.c - do_init_script() 修正と少し修正。 - script.h 修正。 - script_athena.conf 追加。 - map_athena.conf 修正。 - map.c - map_config_read() 修正。 -・古い巻物、プレゼントボックス実装と少し仕様変更。 -ランダムでアイテムを得る物にデフォルトで出るアイテムを設定できるように変更。今の仕様では1000回までアイテムが選択されなかったらデフォルトアイテムが出るようになっています。デフォルトアイテムが0の場合はアイテムを得られません。 -設定する確率を*1000から*10000に変更。ただitem_~.txtの修正はやっていません。誰かやってください。(他力本願) - itemdb.c - temdb_read_randomitem() 修正。 - itemdb_searchrandomid() 修正。 - item_purplebox.txt から item_violetbox.txt に修正。 - item_giftbox.txt、item_scroll.txt 追加。(moveさんありがとう。) - item_db.txt - 古い巻物、プレゼントボックス 修正。 -・trade.c - trade_tradecommit() 修正。pc_delitem()を使うように変更。 -※テストはやっていませんので問題があったら報告してください。 - --------------- -//0473 by Kuro - -・class_equip_dbを一部修正 - db/class_equip_db.txt - --------------- -//0471 by hoenny - -製錬の時出る文を変えることができるようにしました.(map_athena.confで調節可能) -気功の数字が市廛の時実際水路表示図緑修正 - conf/map_athena.conf - refine_posword:追加。 - map/map.c - map_config_read()修正。 - map/script.h - do_set_posword()追加。 - map/script.c - do_set_posword()追加。 - buildin_getequipname()修正。 - map/skill.c - skill_status_change_start()修正。 - --------------- -//0470 by 死神 - -・製造の時属性石が二度減る問題修正。(実は二度減るように見えるだけでマップを移動すると正しく表示されますが...) - pc.h、pc.c - pc_delitem() 修正。 - npc.c、script.c、storage.c、pet.c - pc_delitem()を全て修正。 - skill.c - skill_produce_mix() 修正。 - --------------- -//469 by 波浪 - -・npc_mob_job.txt、npc_monster.txt、npc_monster30.txt、mob_db.txtのモンス名を修正 -・item_db.txtの回復アイテムの回復量をジュノー後のものに修正 - --------------- -//468 by Kuro - -・魔剣製作クエスト追加 - conf/npc_event_ma_sword.txt - --------------- -//467 by nini - -・BBが両手剣でしか発動しなかったところ修正→すべての武器で -・ARが両手斧でしか発動しなかったところ修正→片手斧、両手斧、鈍器 -・スピアクイッケン発動を槍だけに -・キャストキャンセルされないものにグランドクロス、ローグのストリップシリーズ追加 -・ブリッツビートがキャストキャンセルされなくなってた点修正 - map/skill.c - skill_use_id() 修正 - skill_check_condition() 修正 -・2-2職スキルのキャスト・ディレイ追加 - db/cast_db.txt - - --------------- -//466 by hoenny - -・阿修羅覇鳳拳修正(公式修正及び sp消耗がすぐ見えるように) -・蓄気の時気弾が見えるように修正(Mr.NO NAME様のパケ情報ありがとうございます.気弾が消えるパケ情報が不足です.) -・パリの羽やテレポート1を連続使用の時,鯖オーバーが発生しないように仮初めで修正 - doc/client_packet.txt - 0x1e1パケ情報追加 - map/battle.c - battle_calc_weapon_attack()修正 - map/clif.h - clif_spiritball_cre()追加 - clif_spiritball_del()追加 - map/clif.c - packet_len_table[]修正 - clif_spiritball_cre()追加 - clif_spiritball_del()追加 - clif_changemap()修正 - map/skill.c - skill_castend_nodamage_id()修正 - skill_check_condition()修正 - --------------- -//0465 by 死神 - -・リザレクションとハイディング、ブリッツビートのバグ修正。(ブリッツビートは報告はなかったのですが分析したら問題があったので修正。) - skill.c - skill_use_id() 修正。 - skill_castend_nodamage_id() 修正。 -・0455のNPCを元に戻しました。 - npc_event_ice.txt 修正。 - npc_event_potion.txt 修正。 - npc_town_geffen.txt 修正。(454の物に戻しました。) -・0451のαマップをコマントアウトしました。必要な方はコマントアウトをなくして使ってください。 - map_athena.conf 修正。 -・リザレクションは0442の問題でハイディング、ブリッツビートは0445の問題でした。それと0445の修正でスキル番号をenumで宣言した文字に変えていますがそれに落としがあるようです。(ハイディング、ブリッツビートはそのせいでした。)前の番号ソースと比べて問題がある部分は修正する必要があります。ちょっと面倒ですが... - --------------- -//464 by 波浪 - -・モンクスキルの部分について修正(未実装スレに書かれていたものを追加しただけです。 - skill.c - skill_use_id()修正 - cast_db.txt - モンクスキル追加 - --------------- -//463 by 胡蝶蘭 - -・462のバグ修正 - ・NPCのSHOPの不都合修正 - ・READMEの間違い修正(warpwaitingpcがwarpwaitingroomになっていた) - - map.h - struct npc_dataのchat_idの位置を修正 - --------------- -//462 by 胡蝶蘭 - -・NPCチャット作成 - ・waitingroom命令でNPCチャットを作成します。 - 引数は waitingroom "チャット名",制限人数,イベント名 です。 - イベント名は人数が最大になったときに起こすイベント名で、省略可能。 - ・warpwaitingpc命令で、チャット内にいるPC全員をワープできます。 - 引数はwarpと同じで、warpwaitingpc "マップ名",x,y です。 - - map.h - struct npc_dataとchat_dataを修正 - script.c - buildin_waitingroom(),buildin_warpwaitingpc()追加 - chat.c/chat.h - 色々修正 - clif.c - clif_getareachar_npc()、clif_joinchatok()など修正 - -・NPCのOnInitイベントをサーバー起動時に呼ぶように。 -・エクスポートするときのNPC名と表示上のNPC名を別々に設定可能に。 - ・同じNPC名のイベントは重複できないため、エクスポート用NPC名を使い、 - 同じNPC名でも別のNPCとして識別できるようにしなければなりません。 - (もちろん、イベント処理を行わない場合はその必要はありません。) - ・npc_*.txtのscript命令でNPCの名前を設定するとき、 - 「表示名::エクスポート名」とすると、表示する名前と、イベント用に - エクスポートする名前を別々に指定できます。 - 表示名が全く同じ別々のNPCでイベントを動作させるときに使用します。 - ・ややこしいのでPVPのnpcスクリプトを見てイメージを掴んでください。 - - npc.c/npc.h - npc_parse_*()の修正 - npc_event_do_oninit(),npc_event_do_oninit_sub()など追加 - map.c/map.h - do_init()でnpc_event_do_oninit()を呼ぶように - struct npc_data修正 - -・スクリプトgetmapusers、getareausersの致命的なバグ修正 - ・該当マップが存在しない場合、マップサーバーが落ちるのを修正。 - ・マップが存在しないと、-1を返すようにした。 - - script.c - buildin_getmapusers(),buildin_getareausers()修正 - -・pvpのスクリプト修正 - ・チャットルームを作るようにした - - (conf/) - npc_pvproom.txt - 全てのNPCのエクスポート名(pvp??r)設定 - OnInit:でwaitingroomを実行するように - --------------- -//461 by Kuro -・アコライト転職クエスト一部修正 - conf/npc_job_aco.txt - --------------- -//460 by sagitarius -・item_dbの間違い修正 - 4032,Ambernite_Card,アンバーナイトカード,6,20,,10,,2,,,,,32,,,,{},{},,修正 - --------------- -//459 by hoenny -・アドレナリンラッシュ使用の時斧チェック(自分だけ) -・Old_Blue_Boxの確率が高いという報告によって修正 -・Script.cは0455以前ことで引換(NPCをここに合わせて修正してください) -・阿修羅覇鳳拳修正(公式を修正したんですが, 正確かはよく分からないですね.) -・修道僧の蓄気,爆期の仮実装.(阿修羅覇鳳拳使用の時蓄気,爆期状態をチェックします. ) -・ペコペコに乗った後に、ADPDが間違ったこと修正(バグを直してあげたが, 直す前ことに変わるせいでまた修正) -その外にも修正をしたようなのに覚えないですね.そして誤った部分があれば指摘してください. - conf/npc_event_ice.txt - checkweight修正 - conf/npc_town_geffen.txt - checkweight修正 - db/item_purplebox.txt - Old_Blue_Box修正 - map/battle.c - battle_calc_weapon_attack()修正 - map/pc.c - pc_spheal()修正 - pc_calcstatus()修正 - map/script.c - buildin_checkweight()修正 - map/skill.h - SC_ EXPLOSIONSPIRITS追加 - map/skill.c - SkillStatusChangeTable[]修正 - skill_castend_nodamage_id()修正 - skill_check_condition()修正 - --------------- -//458 by Kuro -・アコライト転職クエスト追加 - conf/npc_job_aco.txt - 会話文が分からなかったので適当にしてあります。また、NPCの外見の変え方が分からなかったので適当にしてあります。 - 分かる方は修正しておいて下さい。 - --------------- -//0457 by Kalen - -・PVP関連のNPC追加 - conf/npc_pvp.txt - conf/npc_pvproom.txt - --------------- -//0456 by 死神 - -・モンスターの最初攻撃時間が長すぎる問題修正。 -モンスターの最初攻撃時間を今まではmob_dbのaDelayを使っていましたがこれをaMotionに変更しました。今まではmob_dbのaMotionはゴミでしたが今度からはゴミではありません。aMotionさえ正しければモンスターの攻撃のモーションの前にダメージが出てくる問題もなくなるはずです。 - mob.c - mob_changestate() 修正。 -・アイテムを入手できない時その理由に当たるメッセージが出るように変更。 - pc.c - pc_additem() 修正。 -・job_db1.txtので問題になった.を,に修正。 - --------------- -//455 by Mr.NO NAME -・NPCとのアイテム交換や買い物関係のScriptが出来上がった当初の - NPCデータ(npc_event_making.txt、npc_town_geffen.txt等)に乗っ取り、以下を修正。 - conf/npc_event_ice.txt - npc_event_potion.txt - npc_town_geffen.txt(454以前の物に戻しました。) - map/script.c - buildin_checkweight()を修正。 - --------------- -//454 by Kuro -・ゲッフェン鍛冶屋で買い物が出来るように修正 - conf/npc_town_geffen.txt - --------------- -//0451 by code -・ 今更ですがαクライアントに対応(αクライアントのdata.grfをadata.grfとしてgrf-files.txtのadataのところに書いてください) - common/grfio.c - grfio_setadatafile()追加 - /grfio.h - grfio_setadatafile()追加 - conf/map_athena.conf - αクライアントのマップを読み込むように変更 - /npc_warp_a.txt - αマップのワープポイントの設定(ちょっとずれてるかも) - /grf-files.txt - αクライアントのdata.grfをadata.grfとして読み込むように設定 - adata: に記述 -※αクライアントは - ttp://www.castledragmire.com/ragnarok/ - あたりから入手してください。 - --------------- -//0450 by hoenny -・ 騎兵修練実装 -・ コムパルションディスカウント実装 -・ ディスカウント・オーバーチャージ修正(数が高い場合計算法が間違ったことを直しました.) -・ 鉄拳修正(素手な時も適用されるように) -・ 斧修練修正(片手斧な時も適用されるように) -・ ボンゴンが攻撃するように修正 - map/pc.c - pc_calcstatus()修正 - pc_modifybuyvalue()修正 - pc_modifysellvalue()修正 - map/battle.c - battle_addmastery()修正 - db/mob_db.txt - ボンゴン修正 - --------------- -//0449 by 死神 - -・変になった所修正。 - const.txt - bAtkとbDef 追加。 - battle.c - battle_calc_weapon_attack()を元に戻しました。(0445の物) - map.h - map_session_dataを元に戻しました。(0445の物) - pc.c - pc_calcstatus() 修正。 - pc_bonus() 修正。 - item_db.txtを元に戻しました。(0446の物) - --------------- -//0448 by hoenny -・増速修正(pc_walk()から pc_calcstatus()に移動) -・最大所持量修正 - map/pc.c - pc_calcstatus()修正。 - --------------- -//0447 by ゆう -・二刀流・矢の属性を正しく適応 -・ATKの上がるカードの効果を武器サイズ修正なしの底上げに変更 -・ATK・DEFの上がるカードの効果の適応の仕方を変更 - -map.h - map_session_dataにcatk(カードATK)を追加 - -pc.c - pc_calcstatus() - アサシンの二刀流の攻撃速度を修正した - スクリプトによる属性を左右正しく適応するようにした - 矢の属性を正しく適応するようにした(弓の属性優先) - ただし、矢がすべての攻撃に適応されます - カードATKの処理を追加した - -battle.c - battle_calc_weapon_attack() - カートATKを底上げダメージとして計算するようにした - -item_db.txt - カードの bonus bAtk、bDef を削除 - かわりに、装備と同様にATKとDEFを設定 - (変更前をitem_db2.txtとしているので、不具合があれば戻してください) - - --------------- -//0446 by hoenny -・ミストレスカード実装。 -・スキル使用の時ジェムストーン消費。 -・スキル使用の時装備チェック。(ハンマーフォールだけ修正しようとしたが...) -・ハンマーフォールの範囲を 半径5セル(全25セル)ロ修正 - map/skill.c - skill_check_condition()修正。 - skill_castend_pos2()修正。 - -・ミストレスカード修正。 - db/item_db.txt - --------------- -//0445 by Aya - -・基本ASPDと計算処理を修正。 - db/job_db1.txt - map/pc.c -・SP係数と計算処理を修正。 - db/job_db1.txt - map/pc.c -・スキル名をenumで宣言し、それを使うように変更。 - map/skill.h - map/battle.c - map/pc.c - map/skill.c -・リカバリーのスキルIDがスローポイズンになっていたのを修正。 - map/skill.c -・集中力向上にカード効果が適用されていた問題の修正。 - map/pc.c -・リムーブトラップ、スプリングトラップ、ポイズンリアクトのターゲットを修正。 - db/skill_db.txt -・GMアカウントをjROのclientinfo.xmlから追加。 - conf/GM_account.txt -・warning修正。 - map/party.c -・キャラセレ認証時にlogin_id2はチェックしないように変更。 - login/login.c -・object_def.bat以外全ファイルの改行コードをLFに変更。 -・*.cnfファイルを*.confファイルに名前変更。 - --------------- -//0444 by 死神 - -・GMコマンドや@コマンドにコマンド別に使用レベルを設定できるように変更と@コマンド少し修正。(@whereと@day、@nightの修正と他のキャラに使うコマンドの場合GMレベルが自分以上の場合使えないように修正。) - atcommand.h 修正。 - atcommand.c 修正。 - clif.c 修正。 - map/makefile 修正。 - map.c - do_init() 修正。 - conf/atcommand_athena.cnf 追加。 -・細かい修正。 - pc.c - pc_setghosttimer()、pc_skill() 修正。 - script.c - buildin_skill() 修正。 -・conf_ref.txt 修正。 -・item_db.txt - 彼女の想い修正。 - --------------- -//0442 by 胡蝶蘭 - -・増速ポーション実装 - ・Lvや職業判定は行いません - - (db/) - const.txt - SC_SpeedPot0,SC_SpeedPot1,SC_SpeedPot2追加 - item_db.txt - 増速ポーションのスクリプト追加 - (map/) - skill.c - skill_status_change_start()修正 - pc.c - pc_calcstatus()修正 - -・PvPシステムの仮実装 - ・pvpマップでは自動的に、PCのpvpフラグon、順位通知などを行います。 - ・マップにpvpフラグをつけるサンプルをnpc_pvp.txtとして添付しています。 - ・pvpの詳しいルールがよくわからなかったので、次のようにしています。 - ・最初の持ち点は5点、倒すと1点、倒されると-5点。 - ・0点以下のPCはリザレクションが掛からない - ・GMはpvpマップにいても足元にサークルが出現しないようです。 - (クライアントの仕様?) - ・pvpマップで@pvpoff/@pvpすると休憩したり、休憩をやめたりできますが、 - 使用するべきではありません。 - - (conf/) - npc_pvp.txt - pvpフラグを入れるサンプル。 - nosaveフラグや受け付けnpcなどを追加するとよいと思われる。 - (map/) - clif.c - clif_parse_LoadEndAck()修正 - npc.c - npc_parse_mapflag()修正 - skill.c - skill_castend_nodamage_id()修正 - pc.c - pc_damage()引数修正 - atcommand.c - pc_damage()引数修正に伴う修正 - battle.c - -・その他修正 - ・@pvpoff/@pvpで順位やサークルの表示をやめた - ・@jumptoでスペースの入ったキャラクターも指定できるように - ・@kamibコマンド復活(青文字天の声) - ・非PVPのときに、対象が敵のスキル使用時、敵味方判定を行うように - - skill.c - skill_castend_id()で敵味方判定 - atcommand.c - 各コマンド修正 - --------------- -//0440 by 中の人 - -・本家を再現する方向なら意味はないかもしれませんが - pc.c「スクリプトによるスキル所得」を若干変更して - カードによるスキル一時習得の際でも1レベル以上を設定できるように致しました。 - - 単純に符号を変えてごまかしただけですので - 必要にあわせて修正をして下さい。 - --------------- -//0439 by hoenny -・阿修羅覇鳳拳の修正。 - db/skill_db.txt -・モンスター情報の修正。 - map/clif.c -・見切りの実装。 - map/pc.c - --------------- -//0438 by Aの人 -・古木の枝が使える場所をNPCスクリプトから制御可能 - mapflagにnobranchとすればそのマップは古木の枝使用不可になります。 - map.h - enumにMF_NOBRANCH 追加。 - npc.c - npc_parse_mapflag() 修正。 - pc.c - pc_useitem() 修正。 -ソース汚くしてしまったかも・・・. -勉強不足です - --------------- -//0437 by 波浪 -・item_db.txtの英名を大幅修正。(s付きとそうでない武器の英名がいつの間にやら - 同じになっていたのでそれを直すついでに他の部分も修正しました。 - まったく違う名前になってるものもありますが、こっちの方が正しいと思います。 -・item_purplebox.txtを本家仕様っぽく作成(大体こんな感じかと -・アルベルタとイズルードNPCを修正 - --------------- -//0436 by hoenny -・morocc 宝石商人の修正 - conf/npc_shop.txt -・ハンマーフォールの実装(Alchemist氏ソースを参照ありがとう!) - map/skill.c -以前に文字化けは低のせい! -次から気を付けます. - --------------- -//0434 by Avethes - -・タートルアイランドへ行くNPC修正 -・ユノーNPC修正 -(前回のバグはすみませんでした) - --------------- -//0433 by 死神 - -・製造バグ修正。 - 何故かはわからないがskill.cのskill_readdb()が変になっていたので修正。(自分がやった修正ではありませんが...) - skill.c - skill_readdb() 修正。 - --------------- -//0432 by 死神 - -・0429で一部のアイテムのスキルが出ない問題修正。 - clif.c - clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 -・skill.c - skill_use_id() 修正。(大した修正ではないです。) -・item_db.txtの文字化け修正。言語設定が日本語ではない場合保存する時には気をつけましょう。 -・攻撃されたモンスターの反撃が早すぎる問題修正。始めての攻撃がモンスターの攻撃ディレイに関係なく100ms後になっていたので攻撃ディレイに合わせるように変更。(ただ少し反撃が遅いと思われたりもしますが...) - mob.c - mob_changestate() 修正。 -・鯖に接続する最大人数を決めるように変更。 - char.c 修正。 - conf_ref.txt 修正。 - char_athena.cnf 修正。 - --------------- -//0430 by Avethes - -・NPC関係。ほとんどテスト。 -本家会話情報が揃えば修正。 - --------------- -//0429 by 死神 - -・ギルドのレベルアップをキャラのレベルアップのように変更。 - int_guild.c - guild_calcinfo() 修正。 - guild_next_exp() 追加。 - exp_guild.txt 修正。(レベルが上がらないようにしたいレベルのexpに0を入れればそれ以上にレベルが上がらなくなります。) -・スクリプトresetstatus、resetskill 追加。 - pc.c - pc_resetskill() 修正。 - script.c - buildin_resetstatus()、buildin_resetskill() 追加。 -・0425の続きで少し修正。 - clif.c - clif_parse_ を少し修正。 -・ショートカットに覚えているスキルレベル以上のスキルが登録されていても覚えているスキルレベルまでのスキルを使うように変更。 - clif.c - clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 -・メモの最大数を10個に変更。(あくまでも拡張の為の物です。まだ機能はしません。) - mmo.h - struct mmo_charstatusのmemo_pointを3から10に変更。 - char.c - mmo_char_tostr() 修正。 -・mob,c - mob_once_spawn()、mob_summonslave() 修正。(別に意味がある修正じゃありませんが...) -・@monster コマンドで座標を指定しない時モンスターが一か所に集中して出るのをキャラの10*10マス以内にランダムで現れるように変更。 - atcomand.c 修正。 - --------------- -//0428 by Avethes - -・conf/npc_smilegirl.txt - スマイルマスクガールスクリプト。 - 0427のおかしい部分とか修正。 - 提供された各都市の座標に配置。(NONAMEさん提供ありがとう!) - --------------- -//0426 by 胡蝶蘭 - -・アイテムの名前をdata.grfから読み込むようにした - itemdb.cのITEMDB_OVERRIDE_NAMEを定義しなければ読み込みません。 - ITEMDB_OVERRIDE_NAME_VERBOSEはitemdb.txtのデバグ用にどうぞ。 - 普通は変える必要はないと思うのでbattle_configには入れていません。 - - itemdb.c - itemdb_read_itemnametable()追加 - do_init_itemdb()修正 - -・データベース読み込み部の不安定性の修正(結構致命的だったみたいです) - なくても問題ないDB(item_value_db.txtなど)のファイルがない場合に - 鯖が落ちたりする現象が発生していた場合はこれで直っているかもしれません. - - skill.c - skill_readdb()でNULLポインタチェックを追加 - itemdb.c - item_readdb()を複数に分けた。 - ランダムアイテムデータベースの読み込み部を1つに纏めた。 - do_init_itemdb()修正 - -・細かいバグ修正 - ・ワープポータルの開くまでの秒数調整 - - skill.c - skill_unitsetting()修正 - -・その他修正(by 某M氏) - db/job_db1.txt - ちょこっと修正 - db/job_db2.txt - 2-2次職の足りないJobボーナスを追加(参考:R.O.M 776) - conf/npc_town_kafra.txt - オークD前と炭鉱前にカプラ配置(動作未確認) - conf/npc_shop3.txt - ジューノ販売NPC(拾い物) - conf/npc_town_yuno.txt - ジューノNPC(拾い物を改良。動作未確認) - --------------- -//0425 by 死神 - -・0419で書き忘れた物ですがスキルラーニングポーションがSP回復アイテムにも効果があるように変更。 -・今度はバグ修正がメインです。鯖落ちがなりそうな所の修正とテレポートの時死んだまま移動できる問題と0419でアクティブモンスターの先攻問題修正、死んでいるのに他の人には死んだように見えない問題の修正です。少しテストはしましたが本当に治ったかどうかは不明です。報告をお願いします。 - pc.c - pc_attack_timer()、pc_damage()、pc_walk() 修正。 - map.c - map_quit() 修正。 - mob_db.txt - ビッグフットのmodeを修正(アクティブになっていた為) - clif.c - clif_parse_WalkToXY()、clif_pcoutsight()、clif_pcinsight()、 - clif_getareachar_pc()、clif_getareachar_mob()、clif_getareachar_pet() 修正。 - mob.c - mob_ai_sub_hard_activesearch()、mob_ai_sub_hard_mastersearch()、 - mob_walk() 修正。 - pet.c - pet_walk() 修正。 - --------------- -//0424 by hoenny - -・クリップボーナス SP 10追加 - db/item_db.txt -・warp_test_yuno.txtを npc_warp30.txtに含んで, ちょっと修正 - conf/npc_warp30.txt -・他のサーバーが落ちても復旧されるように修正 - /startクリップ - --------------- -//0420 by 紅葉 - -・EP 3.0でのカード効果変更に解る範囲で対応。 - ほぼ全ての変更点について、出来る限り修正してあります。 - ATK修正が正しく適用されているようなので追加してあります。(アンドレCなど) - --------------- -//0419 by 死神 - -・0414で書き忘れた物ですが MOBのmodeで0x20(32)を復活させました。ボスじゃなくてもmodeに0x20が入っている場合普通のMOBでも死んだふりを破れます。 -(今の所機能はそれだけです。本鯖はAI強化みたいですが...) ただゴーストはボスでも破ることはできません。 -それと取り巻きのAIで取り巻きがターゲットした時主がターゲットしてないと主が取り巻きのターゲットをターゲットする部分をコマントアウトしました。(これが本鯖にあっていると思いましたので...) -・古い青い箱、古い紫色の箱、古いカード帖で出るアイテムをファイルで設定できるように変更。 - script.c - buildin_getitem() 修正。 - item_db.txt - 古い青い箱、古い紫色の箱、古いカード帖修正。 - item_bluebox.txt、item_purplebox.txt、item_cardalbum.txt 追加。(使用例程度の物です。どのアイテムが出るようにするかは自分で設定して使ってください。ただクライアントを落とすアイテムは出ないように設定してください。) - itemdb.h - struct random_item_data 追加。 - itemdb.c - itemdb_searchrandomid()、itemdb_readdb() 修正。 -・mob.c - mob_target()、mob_ai_sub_hard() 修正。(問題がありそうな部分だけ修正。) -・pc.c - pc_itemheal()、pc_walktoxy_sub() 修正。 -・ペットの出現をMOBと同じように変更。 - clif.c - clif_spawnpet() 修正。 - pet.c - pet_change_name() 修正。 -・0418を少し修正。(if文の条件を少し修正しただけです。) - --------------- - -//0418 by hoenny -・ /mm(/mapmove) /nb /b /bb /resetskill /resetstate GM 命令語使用の制限 -clif_parse_MapMove ,clif_parse_ResetChar ,clif_parse_GMmessage 修正 - map/clif.c - --------------- -//0417 by れあ - -・0412でitem_db.txtがおかしくなっていたのを修正 - --------------- -//0416 by 紅葉 - -・ジュノー周辺のワープ定義と敵の配置。 - ワープ定義はnpc_warp30.txtとし、追加する形にしてあります。 - 敵の配置についてもnpc_monster.txtとは統合せず、npc_monster30.txtとしてあります。 - 問題が無いようであれば統合して下さい。 -・上記定義ファイル追加に従いmap_athena.cnfを変更。 -・@goコマンドへジュノー追加。 - 要望があったようなので追加しました。 - --------------- -//0415 by 中の人 - -・今は亡き旧ROエミュ鯖開発スレッド Lv02での死神氏の説明に従って - モンスター定義データを若干変更させて頂きました。 - ・過去のnpc_monster.txtから通常マップ上(ルティエ等除く)にいるサンタポリン、アンソニを抽出し -  新たに作った「npc_x-masmonster.txt」に移転 - ・上記の修正にあわせてmap_athena.cnfを修正。 -  map_athenaにコメントアウト状態で「npc: conf/npc_x-masmonster.txt」を追加しました。 -  必要にあわせてコメントアウトをして下さい。 - --------------- -//0414 by 死神 - -・strcasecmpをstrcmpiに変更。 -・dbや設定ファイルを読む時// をコマントアウトとして認識するように修正。 -・ペットと離れすぎるとペットが早く動くように変更。(キャラの2倍の速度で動きます。) -・ルートモンスターがアイテムをターゲットした時攻撃を受けても攻撃してこない問題修正。 -・同族モンスターのAIを変更。今まではtraget_idを使うせいでモンスターが攻撃した相手を攻撃する仕組みだったが今度はattacked_idを使う為攻撃してきた相手を攻撃するように変更。 -ただ今の仕様だと同族モンスターを攻撃して逃げる場合攻撃を受けた時その場になかったモンスターはついて来なくなっています。本鯖の仕様にあってるかどうかは不明ですので情報提供をお願いします。(attacked_idはいつもリセットされる為です。対策がいないわけでもないですが本鯖の仕様を知らないので...) -・メモリーの使用量を減らす為struct mob_dataとstruct npc_dataを変更。(0412で -map-serverのメモリーの使用量が164???KBytesだったが0414では152???KBytesになりました。ほんの少し減っただけですが増えるよりはましだと思いますので...) -・ゴーストタイム実装。 - マップ移動やテレポート、復活した時に敵に狙われない時間を重力ではゴーストタイム呼んでいます。そのゴーストタイムの実装です。 -battle_athena.cnfで時間を設定できます。時間を0にするとゴーストタイムは作動しません。ただこのゴーストタイムは攻撃行動、スキル使用、アイテム使用をするとなくなります。 - 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 を修正。(db/mob_db.txtは//を入れただけですが...) - 修正した所を全て覚えてませんのでファイルだけ知らせます。 - --------------- -//0412 by いど - -・モンスター定義データ(日本語)の再整理 -  旧掲示板で指摘のあった事項について大体の範囲で修正 - snapshot387のバージョンをベースに修正しました。 - conf/npc_monster.txt - -・アイテム名の定義を大幅修正 - (root) - item.list - (db/) - item_db.txt - item_value_db.txt - -・マップデータの定義でコメントアウトしていたジュノー関連マップのコメントアウトを解除 - conf/map_athena.cnf - --------------- -//0411 by 死神 - -・鯖snapshotです。それとlogin_port、char_port、map_portの設定がなくても -デフォルトで6900、6121、5121を使うように変更。 -・login.c、char.c、chrif.c、clif.c 少し修正。 -・conf_ref.txt 修正。 -・login_portを6900から他の物に変えた場合はclientinfo.xmlを変える必要があります。 - --------------- -//0410 by 死神 - -GM用右クリックメニュー「(name)使用者強制終了」実装。(テストはしてません。@コマンドはテスト済みですが...) -0407のEXPに関する修正に問題があるらしいので修正しました。今度はテスト済みです。 -GMのアカウントIDを設定できるように変更とGMをレベル別に分けるように変更。 -(GMのレベルによる@コマンド等に制限をかけるつもりですが今制限がかけている物は@kick、@kickallのみになっています。) -・pc.c - pc_readdb()、pc_gainexp()、pc_nextbaseexp()、pc_nextjobexp()、 - pc_checkbaselevelup()、pc_checkjoblevelup() 修正。 - pc_isGM()、pc_read_gm_account() 追加。 -・pc.h - pc_isGM() 修正。 - pc_read_gm_account() 追加。 -・exp.txt - レベルが上がらない数値を999999999から0以下に変更。 - レベルを上げる為に必要なEXPを999999999以上にすることも可能。 -・clif.c - clif_GM_kickack()、clif_GM_kick()、clif_parse_GMKick() 追加。 -・clif.h - clif_GM_kickack()、clif_GM_kick() 追加。 -・atcomand.c - strncmpiをstrcmpiに変更。 - @kick、@kickall コマンド追加。 - @kick <キャラ名> - 自分以外のキャラの接続を強制終了させる。(自分よりGMレベルが - 低いキャラにしか使えない。GMではないキャラのGMレベルは0) - @kickall - 鯖に接続している全てのキャラの接続を強制終了させる。(自分と - GMを含めて) 鯖ダウン用のコマンドです。GMレベルが99じゃないと - 使えない。 -・conf/GM_account.txt 追加。 - GMとして認識するアカウントIDを設定するファイルです。 -・mmo.h - DEFAULT_WALK_SPEEDを140から150に変更。(これが本鯖にあってる数値 - みたいですので...) - struct gm_account 追加。 -・client_packet.txt - パケット0x00cd 追加。 -・login_portをcnfで読むように変更。(ただ6900からポートを変えるとクライアントが認識できない模様なので無駄なことだったりもしますが...) - char.c、login.c、char_athena.cnf、login_athena.cnf 修正。 -・普通のアカウント作成ではGMになれないようにlogin.cを変更。 -・login/makefile、map/makefile 修正。 - --------------- -//0408 by 胡蝶蘭 - -・405の新しい@コマンドを以前のatcommand.cに取り込みました。 - ・@kamiを修正 - ・@kill,@recall,@charjob,@revive,@charstats,@charoption,@charsave, - @night,@day,@doom,@doommap,@raise,@raisemap,@charbaselvl,@charjlvl - を追加&メッセージを日本語に変更&少し修正 - - atcommand.c - 追加と修正 - -・一部のスキルの効果実装 - ・不死身のジークフリード、イドゥンの林檎、幸運のキス、 - フレイムランチャー、フロストウェポン、ライトニングローダー、 - サイズミックウェポン - - map.h - struct skill_unitにrangeを追加。 - skill.c - 色々修正 - skill.h - enumの修正など --------------- -//0407 by 死神 - -・ペットのバグ修正。(ただ自分で再現できなかったので問題になりそうな所だけ修正しました。) -・ペットの移動速度をpet_dbに追加。 - pet.h - struct pet_dbにspeed追加。 - pet.c - pet_catch_process2()、read_petdb() 修正。 - pet_db.txt - 移動速度追加。 - (コマントアウトしているのはジルタスとアリスです。捕獲用の - アイテムが存在することとパフォーマンスをすることから考えて - 追加される予定の物と考えられます。ただその捕獲用のアイテムが - あるとクライアントを落ちますので注意してください。追加しても - 台詞はポリンの物ですので... 捕獲用のアイテム以外は適当に入れた - 物です。) -・pc.c、clif.c - pc_equipitem() 修正。 - clif_parse_EquipItem() 修正。 - pc_equipitem()の未鑑定アイテムのチェックをclif_parse_EquipItem()に - 移動しました。(ペットの装備もありますので...) -・レベルを99以上にあげるように変更と職業別にベースレベルの限界レベルを設定できるように修正。 - map.h - MAX_LEVEL追加。 - pc.c - pc_nextbaseexp(), pc_nextjobexp() 修正。 - pc_readdb() 修正。 -・exp.txt 修正。職業レベルと同じようにベースレベルもEXPテーブルを3つ作りました。レベルアップを止めたいレベルのexpを999999999にすればそれ以上レベルが上がりません。つまりnovice、1次職業と2次職業のベースレベルの限界を違うように設定できます。そしてベースレベル99以上に上がるようにすることもできます。(exp.txtの修正が必要ですが本鯖と違うように設定したい場合に修正して使ってください。) -・属性による回復をbattle_athena.cnfで設定できるように変更。 - attr_fix.txt 修正。 - battle.h - struct Battle_Configにattr_recover 追加。 - battle.c - battle_config_read() 修正。 - battle_athena.cnf 修正。 -・conf_ref.txt 修正。 -・client_packet.txt 修正。ペットパケット追加と少し修正。 - --------------- -//0402 by 胡蝶蘭 - -・400のバグを一部修正 - ・掛かってないスキル効果によるステータス計算が行われてしまうバグ修正 - ・効果修正:あくまで効果の計算の修正で、使えないスキルは使えません。 - スピアクィッケン、プロヴィデンス、戦太鼓の響き、 - 夕陽のアサシンクロス、口笛、不死身のジークフリード、 - イドゥンの林檎、サービスフォーユー、幸運のキス - ・効果追加:あくまで効果の計算の追加で、使えないスキルは使えません。 - ハミング、私を忘れないで…、ニーベルングの指輪(武器レベル無視)、 - エターナルカオス、ドラゴノロジー - ・効果付加系はちょっとでも怪しいスキルは全て使用できないように修正 - ・攻撃系スキルはほとんど見てないのでたぶんバグ多いです。 - ・全て未テストです。怪しすぎる部分を修正しただけです。 - - map.h - MAX_STATUSCHANGEを128に修正 - pc.c - pc_calcstatus()修正 - skill.c/skill.h - enumを修正 - skill_status_change_start()修正 - battle.c - battle_calc_weapon_attack()など修正 - --------------- -//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 - -* 適当な和訳 * -2-2次職スキルを追加しました -全ての修練スキル、スピアクイッケン、プロヴィデンス、 -夕陽のアサシンクロス(未テスト)、寒いジョーク、イドゥンの林檎、 -サービスフォーユー、メテオストライク(少し違う)、 -ミュージカルストライク、矢撃ち、フロストウェポン(属性が問題あり?) -フレームランチャー(〃)、サイズミックウェポン(〃)、ライトニングローダー(〃) -息吹、ポーションピッチャー -完全には働かないスキル: -猛龍拳、漣環全身掌、三段掌 -(skills in skill.c) (完了される必要がある) -ケミカルアーマーチャージ、ケミカルヘルムチャージ、 -ケミカルシールドチャージ、ケミカルウェポンチャージ、 -ストリップヘルム、ストリップウェポン -ストリップシールド、ストリップアーマー - -*注意 !! CAUTION !! by 胡蝶蘭* -この400にはバグが大量に含まれています。注意してください。 -there are many many BUGS in this update(400) !! Be careful !! - --------------- -//0399 by 胡蝶蘭 - -・MOBスキル使用条件や行動を修正 - ・無行動MOBが待機時のスキルを使用できない問題を修正 - ・条件スキル反応(skillused)がどのスキルにも反応していたバグ修正 - ・非移動MOBが追撃してくる問題を修正 - - mob.c - mob_ai_sub_hard()修正 - mobskill_event()修正 - mobskill_use()修正 - skill.c - skill_attack()修正 - -・MOBスキル一部実装 - ・自決(エフェクト無し?)、自爆、タバコを吸う、範囲攻撃 - HP吸収2つ(通常/魔法)(回復エフェクト無し?)実装 - - (db) - skill_db.txt - スモーキングなどを修正 - (map/) - skill.c - skill_castend_damage_id(),skill_castend_nodamage_id()修正 - battle.c - battle_calc_misc_damage()修正 - -・未鑑定アイテムが装備できなくなりました -・未鑑定アイテムにカードがさせなくなりました - - pc.c - pc_equipitem(),pc_insert_card()修正 - clif.c - clif_use_card()修正 - -・battle_athena.cnfにMOBの配置割合を定義できるようになりました - ・配置数が1のMOBについては適用されません - ・計算後の配置数が1未満の場合1に修正されます。 - - (conf/) - battle_athena.cnf - mob_count_rate追加 - (doc/) - conf_ref.txt - 修正 - (map/) - battle.c/battle.h - struct BattleConfig に mob_count_rate メンバ追加 - npc.c - npc_parse_mob()の修正 - -・ボーリングバッシュが相手が1匹でもとりあえず当たるようになった。 - - skill.c - skill_castend_damage_id()修正 - -・学生帽作成イベントの修正 - - (conf/) - npc_event_making.txt - アロエベラ(606)をアロエ(704)に。 - -・パケット情報修正 - - (doc/) - client_packet.txt - 0199パケット修正 - --------------- -//0397 by いど - -・モンスター定義データ(日本語)の整理 - ・npc_monster25.txtをnpc_monster.txtにリネームし、内容を整理(現在mob数:13450) - ・その軽量版としてnpc_monster_lite.txtを作成(現在mob数:11959) - ・上記の修正にあわせてmap_athena.cnfを修正 - --------------- -//0395 by 胡蝶蘭 - -・取り巻きMOBの行動修正 - ・アンクルなどで移動できない場合主に近づかないように修正 - ・ロックしていると主に近寄る処理をしないように修正 - ・主がテレポートすると追いかけるように修正(付近10x10マス程度) - ・主のそばにいるときはランダム歩行をしないように修正 - - mob.c - mob_ai_sub_hard_mastersearch()修正 - mob_can_move()追加 - mob_ai_sub_hard()修正 - -・MOBの行動修正 - ・スキル使用ディレイ処理がおかしかったのを修正 - ・詠唱のないスキルはtimerを使わないように修正(死亡時処理対策) - - mob.c - mobskill_use(),mobskill_use_id()修正 - -・MOBエモーションの実装 - ・エモーションの種類がわからないものは全て「!」になります。 - 抜けているデータを埋めてくれるとうれしいです。 - - (db/) - mob_skill_db.txt - いくつかのMOBのエモーションの項目の値1に種類を入れた。 - - (map/) - skill.c - skill_castend_nodamage_id()修正 - clif.c/clif.h - clif_emotion()追加 - -・パケット解析.txtをclient_packet.txtに改名&修正 - - (doc/) - client_packet.txt - エモーションの説明追加 - -・どうやら取り巻きMOBの種類は古いデータだったっぽいです。 - しかもMOB召喚では手下召喚と違うMOBを召喚するみたいですね。 - 詳しい人はmob_skill_db.txtを直してくれると。 - --------------- -//0393 by いど - -・char鯖でのlogin鯖のポート設定を6900に固定し、変更できないようにした - (login側でポート6900固定になっていたのでchar側もそれに合わせました。) - char/char.c - conf/char_athena.cnf - doc/conf_ref.txt - --------------- -//0392 by 胡蝶蘭 - -・MOBの行動修正 - ・何故かlast_thinktickが初期化されていない問題修正 - ・上に関連してPCが近くにいても手抜き処理が行われる問題修正 - (どうやら初期からのバグだった模様? このバグと、 - 新しい手抜き処理の仕様がタッグを組んで残像を作っていた模様) - ・取り巻きMOB用のAI処理追加(まだ怪しいです) - ・MOBのスキルディレイをスキル項目ごとに持つように変更 - ・スキルディレイが大きな項目ではオーバーフローしていた問題を修正 - - map.h - struct mob_dataの skilldelayを配列にしてunsigned intに変更 - mob.h - struct mob_skillのcasttime,delayをintに変更 - mob.c - mob_ai_sub_hard_mastersearch()追加 - 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()など修正 - -・MOBスキルの手下召喚とモンスター召喚実装 - ・mob_skill_db.txtの書式変更(最後に値を1つ追加、取り巻きMOBのID) - ・取り巻きMOBがわからなかったものはコメント化しています - わかる人は入力よろしくお願いします。 - ・現在は取り巻きは一度倒したら沸きなおしません。 - ・ボスがテレポートしても取り巻きは追いかけません。 - ・本鯖でどうなってるのか知らないので、間違ってる場合は教えてください。 - - (db/) - mob_skill_db.txt - 手下召喚などのデータ修正 - - (map/) - skill.c - skill_castend_nodamage_id()修正 - --------------- -//0391 by 死神 - -・ペットの移動中にパフォーマンスをするとペットが停止するように変更。 - (ペットの位置がずれるため修正しました。) - pet.c - pet_performance() 修正。 -・死んだモンスターはどんな行動もとれないように変更。(これで無敵 - モンスターがいなくなるといいですが...) - mob.c - mob_changestate(),mob_delete(),mob_catch_delete(),mob_damage(), - mob_ai_sub_hard(),mob_ai_sub_lazy() 修正。 -・PC、NPC、床アイテムが使うIDの範囲を調整。 - 床アイテムは0から500000まででPCは500000から100000000、NPC - (モンスターを含めて)は110000000から約21億までになります。 - (-を含めるともっと範囲が広くなりますがさすがにそこまでは必要ないと - 思いますので...) - map.h - MAX_FLOORITEM 追加(これを変えると床アイテムの最大数を変える - ことができます。今は100000になっています。ただこれは必ず - 500000以下にしてください。そうしないと正しく動くかどうか - 保証できません。) - map.c - map.hに合わせて少し修正。 - npc.h - START_NPC_NUM 追加。 - npc.c - npc.hに合わせて少し修正。 - login.h - START_ACCOUNT_NUMとEND_ACCOUNT_NUM 追加。 - login.c - login.hに合わせて修正。END_ACCOUNT_NUM以上にaccountを - 作れないように変更。 -・カートレボリューションに武器研究を2回適用するように変更。 - (結局は元に戻すことになりました...^^;) - battle.c - Damage battle_calc_weapon_attack() 修正。 -・mobのスキル使用をbattle_athena.cnfで決めるように変更。 - mob.c - mobskill_use() 修正。 - battle.h - battle.c - struct Battle_Configにmob_skill_use追加。 - battle_athena.cnf - mob_skill_use追加。(設定しないとnoです。) -・battle_athena.cnf - mobを二重で読めないようにnpc: conf/npc_monster.txtを削除。 - (最新はnpc_monster25.txtなので...) - --------------- -//390 by 胡蝶蘭 - -・バージョン情報所得部分を少し変更 - ・MODバージョンを定義できるようになりました。詳細はversion.hを。 - 気が向いたときか、大きな更新があるときなどに変更してください。 - ・バージョンcheck時のset eofログが出ないようにパケット7532追加。 - - (common/) - version.h - MODバージョンを定義できるように。 - (tool/) - checkversion - MODバージョンを表示するように。 - (login/char/map) - login.c/char.c/clif.c - MODバージョンの処理追加、 - パケット7532(切断)処理追加。 - -・その他色々修正 - ・こまごました修正ばかりですが、あまり覚えていません。 - ・MOBスキル条件でslavelt,attackpcgt処理実装(未テスト)。 - ・MOBの手下召喚のための機構追加(まだ召喚できません)。 - ・範囲スキル効果範囲に死亡PCがいると鯖が落ちるバグ修正。 - ・MOB残像が出なく…なってたらいいな。 - - (map/) - mob.c/mob.h/map.h/battle.c - 色々追加 - - (db/) - mob_skill_db.txt - ルート時処理と、属性変更スキルのコメントを外した。 - (属性変更は本鯖で動いてないらしいものもコメントを外してます。 - 問題がある場合は再びコメント化してください) - --------------- -//389 by いど - -・388の変更 - バージョン情報をcommon/version.h内の定数を使用するように変更 - --------------- -//388 by 胡蝶蘭 - -・バージョン情報所得ツール添付 - Perl製なので実行にはPerlが必要です。 - 使用方法などはエディタで開いて見てください。 - 使い方が良くわからない人は手を出さないほうがいいです。 - - バージョンを確認する用途よりは、サーバーの生存確認用といったかんじです - パケット7530/7531の詳細はソースを見てください。 - - (tool/) - checkversion - バージョン確認ツールPerlスクリプト - - (login/) - login.c - パケット7530/7531の処理追加 - (char/) - char.c - パケット7530/7531の処理追加 - (map/) - clif.c - パケット7530/7531の処理追加 - -・384以前のathena.txtも読み込めるようにしました - ・convertが面倒な人向け。 - ・正しく読み込める保証無し。バックアップを忘れずに。 - - (char/) - char.c - 384の方式で読み込めないデータは384以前の方式も試すように。 - -・conf_ref.txt/help.txt/getaccount修正 - help.txt - petコマンドの説明追加 - (doc/) - conf_ref.txt - pet関連の設定の説明追加 - (tool/) - getlogincount - 表示の修正 - --------------- -//387 by いど -・confフォルダ内のNPC定義データの整理 - 以下のファイルを削除しました - npc_kafraJ.txt - npc_mind_prtmons.txt - npc_script2J.txt(npc_event_mobtim.txtに同じものがあったため) - npc_testJ.txt(ほぼ同じことが@コマンドで出来るため) - npc_warp25.txt(npc_warp.txtに統合) - - 以下のファイルの名前を変更しました - 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 - -・マップ定義の追加 - ジュノーアップデートで追加されるマップと、韓鯖独自(?)のクイズゾーン - (コモドアップデート)と天津アップデートのマップ定義を追加 - 現在、日鞍に無いものに関してはコメントアウトしていま。 - conf/map_athena.cnf - --------------- -//385 by 胡蝶蘭 - -・MOBの行動修正 - ・手抜き処理で移動しないモードのMOBも歩く問題修正 - ・MOBを倒したとき、再spawn時刻がおかしな値になる場合がある問題修正 - (MOBが沸かなくなる問題が修正されたはず) - ・MOBのワープで場所検索に1000回失敗したら元の場所に出るように修正 - ・MOBを詠唱中に倒すと、タイマーを削除するように修正 - - mob.c - mob_delete(),mob_catch(),mob_damage(), - mob_ai_sub_lazy(),mob_ai_sub_hard()など修正 - mobskill_deltimer()追加 - --------------- -//0384 by 死神 - -・ペット実装。 -思ったより長くかかりました。一周もかかったせいで何処を修正したか -覚えてない問題がありますが... それで念の為にmapとcharのファイルは全て -含めてアップします。 -それとmakefileとathena.shは自分が使ている物です。 -Yare-launcherは使てませんがいつも鯖の実行ファイルで実行していますので... - char/char.c、char/char.h、char/inter.c、char/makefile 修正。 - char/int_pet.c、char/int_pet.h 追加。 - map/makefile 修正。 - map/intif.c、map/intif.h、map/map.c、map/map.h、map/mob.c、map/mob.h、 - map/npc.c、map/npc.h、map/battle.c、map/battle.h、atcomand.c、map/pc.c、 - map/clif.c、map/clif.h、map/script.c 色々修正。 - map/pet.c、map/pet.h は殆どを自分の物に書き換えました。 - common/mmo.h 修正。 - db/pet_db.txt 修正。 - db/item_db.txt 修正。(携帯卵孵化機のbpet スクリプトが抜けていたので - 入れただけですが...) - doc/INTER鯖パケット.txtの名前をinter_server_packet.txtに変更とペットの - 保存等に使うパケットを追加。 -* 今度のペット実装によりキャラファイルの構造が変わり以前の物と互換できない - ので tool/convert.c を追加しました。 - 単独でコンパイルできますのでコンパイルしたあと実行してキャラ - ファイルを変換してください。そうしないとキャラが全部飛びますので... -* ペットの親密度が0になるとペットはその場で動けなくなりその状態で他の - マップに移動するか終了するとペットは消滅します。一応ペットの逃走を - 実装するつもりで作ったのですが本鯖にあってるかどうかはわかりません。 -* 移動速度が遅いペットの場合離れ過ぎるとついて来れなくなります。でも - この場合マップを移動してもちゃんとついて来ます。 - 消滅したりはしません。 -* 移動速度が速いペットはキャラより先に移動します。本鯖の方がどうなのか - わからないのでペットの移動はモンスターの移動速度で移動する - ようにしました。 -・battle_athena.cnf -pet_catch_rate 追加。 - ペットの捕獲倍率を設定します。(設定しないと100) - 基本的にペットの捕獲に使ってる公式は - (pet_db.txtの捕獲率 + (キャラレベル - モンスターレベル)*0.3 + luk *0.2) - * (2 - モンスターの現在HP/モンスターの最大HP) - になります。自分なりに作った物ですので本鯖とはかなりの - 違いがあるかも知れません。(モンスターのHPを減らせば減らす程捕獲率が - 上がる仕組みですが...) -pet_rename 追加。 - ペットの名前を変更するかどうかを決めます。(設定しないとno) - yesは何度でも名前の変更が可能。 - noは一度変更するともう変更不可能になる -pet_hungry_delay_rate 追加。 - ペットの腹が減る時間の倍率です。(設定しないと100) - 倍率が高いと腹が減り難くなります -mvp_exp_rate 変更。 - すでにstruct mob_dbのmexpperはゴミになっているので(MVP EXPは - MVPアイテムが取れなかった場合入るので意味がありません。) - MVP EXPの量の倍率になるように変更。(mob.cを修正) -・char_athena.cnf -autosave_time 追加。 - 自動保存する時間を決めます。(設定しないと300) - 單位は秒です。(ファイルに保存する時間の間隔です。) -・map_athena.cnf -autosave_time 追加。 - 自動保存する時間を決めます。(設定しないと60) - 單位は秒です。(キャラ鯖にデータを送る時間の間隔です。これは - ファイルに保存する時間の間隔じゃありません。) -・inter_athena.cnf -pet_txt 追加。 - ペットのデータを保存するファイルを決めます。(設定しないとpet.txt) -・@makepet コマンド追加。 - ペットの実装によって@itemで作った卵は使っても無駄になりますので - これを使って卵を作ってください。 - @makepet <モンスターのID or 卵のID> -・@petfriendly コマンド追加。 - @petfriendly <数字> - ペットを連れている時にペットの親密度を変更。(0~1000) -・@pethungry コマンド追加。 - @pethungry <数字> - ペットを連れている時にペットの満腹度を変更。(0~100) -・@petrename コマンド追加。 - @petrename - ペットを連れている時にペットの名前を変更できるように変更。 -・int_guild.c、int_party.c 読み込むファイルにエラーがあってもプログラムを - 終了せずに進むように変更。 -・pc_walk 123 != 1234 等のエラーが出ないように - 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); - のように変更しました。 - tickが同じ数値になるのを防いたのですがこれでどんな影響が出るかは - さっぱりわかりません。 - pc.c、mob.cを修正。 - でもこの修正をしても連続でクリックしたりするとキャラがしばらく - 止まるようです。(ペットのせいと思いましたがペットがなくても - 同じだったので他の原因かと...) -* doc/code_ref.txtとhelp.txtは面倒くさいので修正してません。 -・gm_all_skill: yesで2-2のスキルも表示されるように変更。(試いせはいませんが...) - pc.c - pc_calc_skilltre() 修正。 -・カートレボリューションのダメージ計算を修正。 - 武器研究を二重計算していたので修正。 - battle.c - Damage battle_calc_weapon_attack() 修正。 - --------------- -//381 by 胡蝶蘭 - -・MOBの行動修正 - ・PCのいないマップのMOBは時々ワープするようになりました - ・PCのいるマップのMOBは歩く以外に、時々沸き直すようになりました - (これまたパフォーマンスに影響があるかもしれません:少し重くなるかも) - ・手抜き処理でブロックの有効判定を行うようにしました - (HP無限MOB問題修正?) - ・ルート時スキル使用機構実装 - - mob.c/mob.h - mob_ai_sub_lazy(),mob_ai_sub_hard()修正 - MSS_LOOT追加,mob_readskilldb()修正 - -・MOBスキルの属性変更を実装しました。 - - map.h - struct mob_dataに def_eleメンバ追加 - mob.c - mob_spawn()でdef_eleをセットするように変更 - battle.c - battle_get_element()でdef_eleを読むように変更 - skill.c - skill_castend_nodamage_id()修正 - -・クァグマイアの効果範囲から出ると効果が切れるようになりました - - skill.c - ユニット系処理修正 - --------------- -//380 by Aの人 - -・カートレヴォリューションのダメージ計算実装 - battle.cを変更。 - -CHRISさん、ありがとう御座います。 -ノックバック実装できなくて、困ってました(><; - --------------- -//379 by CHRIS - -・カートレヴォリューションの実装 - skill.cとbattle.cを変更。 - -・マグナムブレイクにノックバックを追加。 - battle.cを変更。 - -(ソースを弄ったのは初めてなので、有ってるかどうか分かりませんが、自分では出来ました。) -(プログラム関係の書籍を買って勉強して初めて弄ったのです・・・。ガンバリマス!。) - --------------- -//377 by 胡蝶蘭 - -・MOBの行動修正 - ・近くにPCのいないMOBが時々ワープする仕様を止めました。 - ・PCのいないマップのMOBは全く動かなくなりました。 - ・PCのいるマップで、近くにPCのいないMOBは時々歩くようになりました。 - ・その他細かいところ修正 - (パフォーマンスに影響があるかもしれません:少し重くなるかも) - - mob.c - mob_randomwalk()追加 - mob_ai_sub_lazy(),mob_ai_sub_hard()修正など - -・スキル修正 - ・MOBがテレポートできるようになりました - - mob.c - mob_warp()追加 - skill.c - skill_castend_nodamage_id()修正 - -・ステータス異常の一部を実装/修正 - ・PC/MOBともに速度減少の効果が現れるように(AGIの表示は変わらず) - ・PCのエンジェラス、インポシティオマヌス、速度上昇の効果を修正 - ・MOBの2HQ、アドレナリンラッシュ、エンジェラス、インポシティオマヌス、 - 速度上昇/減少、グロリア、ブレッシングなどの効果実装 - ・睡眠、凍結、スタンの必中効果実装 - ・睡眠のクリティカル倍効果実装 - ・暗黒の命中率、回避率減少効果実装 - ・呪いのATK減少効果、LUK減少効果実装 - - battle.c - battle_get_*()修正 - battle_calc_weapon_damage()修正 - mob.c - mob_get_speed(),mob_get_adelay()追加 - pc.c - pc_calcstatus()修正 - -・item_value_db.txtでアイテムの価格を設定できるようになりました - ・価格データをオーバーライドできるようにしました。 - ・これでitem_db2.txtを用意する必要がありません。 - - (db/) - item_value_db2.txt - item_db2.txtの価格データ。 - item_value_db.txtにリネームすると読み込みます。 - (map/) - itemdb.c - itemdb_readdb()修正 - -・古木の枝を使うとMOBの名前が 0 になる問題の修正 - - (db/) - item_db.txt - 古木の枝のデータ修正 - --------------- -//375 by 胡蝶蘭 - -・MOB専用スキルの効果をいくつか実装 - 多段攻撃、毒などの追加効果付与攻撃、属性付き攻撃、魔法打撃攻撃 - 必中攻撃、防御無視攻撃、ランダムATK攻撃など。 - ただし、**全くテストしてません**。 - - (db/) - skill_db.txt - MOB用スキルのデータを修正 - mob_skill_db.txt - 少し追加 - (map/) - skill.c - skill_castend_damage_id()修正 - skill_status_change_start()修正 - skill_additional_effect()修正 - battle.c - battle_calc_weapon_attack()修正 - -・スキルを少し修正 - ・ウォーターボールで敵が死んでいても撃つモーションをする問題修正 - - skill.c - skill_status_change_timer()修正 - -・MOBデータが変なので某Wのデータベースを流用してみる - ・データの並び順とか全く同じなんですね - - (db/) - mob_db.txt - 某Wのmob_db.txt - -・各種confのリファレンスを添付 - あくまでリファレンスなので、HowToなんかは書いてません。 - - (doc/) - conf_ref.txt - confのリファレンス+α - - --------------- -//373 by 胡蝶蘭 - -・MOBスキル使用機構仮実装 - ・スキル使用時の処理はプレイヤーと共用(skill.c)です。 - ・不都合が多いと思うので報告お願いします。 - ・mob_skill_db.txtを埋めてくれる人も募集。 - このデータは「ラグナロクのたまご」を参考にしています。 - - (db/) - mob_skill_db.txt - MOBスキルデータベース(未完成) - テスト用のデータしか入ってません。 - (map/) - mob.c/mob.h - mobskill_*追加、その他多数修正 - map.h - struct mob_data に skill* 追加 - skill.c/skill.h - skill_castcancel()やスキルユニット処理をMOBに対応させた - battle.c - battle_calc_damage()など修正 - -・ギルドのスキルが触れない問題修正 - ・いつのまにかpc_skillupが古いものに変わっていたので修正 - - pc.c - pc_skillup(),pc_checkskill()修正 - --------------- -//368 by 胡蝶蘭 - -・MOB系の修正など - ・MOBが策敵範囲内のPC/アイテムを等確率でロックするようになりました - (アクティブ、ルート:いままでは該当ブロックのリンクリストの順などに - 依存していた) - ・射程範囲内かつ、到達不可能地帯のPCをMOBがロックすると、 - MOBが停止したり、その場で暴れだしたりする問題の修正 - ・MOBロック中にIWなどで到達不可能になった場合、ロックを解除するように。 - ・AEGIS方式で敵の移動を計算して移動不可能なら、Athena式で計算するように - ・ロックが解除されるときに数秒その場で停止するようにした - ・歩行が遅いMOBがとまらない/次の歩行開始が早すぎる問題を修正しました - ・ルート関連処理を少し修正 - - mob.c - mob_ai_sub_hard*()修正 - mob_can_reach()追加 - -・スキル使用時にターゲットブロックの有効性判定を行うように修正 -・ルアフのダメージが武器計算になっているのバグを魔法計算に修正 - - skill.c - skill_castend_id()修正 - skill_status_change_timer_sub()修正 - - ----------- -//364 by いど -・以下のパケットの説明を変更 - doc/パケット解析.txt - R 006a .B - R 0081 .B - -・363でビルド時にwarningが出る不具合を修正 - map/guild.h - --------------- -//363 by 胡蝶蘭 - -・ギルドの修正 - ・ログインしていないPCを追放するとマップ鯖が落ちるバグ修正 - ・メンバー追加直後に追加されたPCがギルド表示に追加されない問題修正 - ・同じギルドに同垢別キャラが要るPCが脱退する/追放されると別キャラが - 脱退してしまう場合があるバグ修正 - ・メンバーがいるのに解散しようとするとマップ鯖が落ちるバグ修正 - - (char/) - int_guild.c - guild_calcinfo(),mapif_parse_GuildAddMember()修正 - (map/) - guild.c - guild_member_leaved(),guild_member_added() - guild_recv_info(),guild_break()修正 - --------------- -//362 by 胡蝶蘭 - -・ギルド解散実装 - - (char/) - int_guild.c - 解散処理を追加 - (map/) - guild.c/guild.h - guild_break(),guild_broken(),guild_broken_sub()など追加 - clif.c/clif.h - clif_guild_broken(),clif_parse_GuildBreak()追加 - intif.c/intif.h - intif_parse_GuildBroken()追加 - --------------- -//361 by いど - -・360での@healの変更間違いを訂正 - map/atcommand.c - --------------- -//360 by いど - -・353の修正を削除 -・@healで変更後の値がマイナスにならないように修正 - --------------- -//359 by いど - -・class_equip_db.txtの文字化け修正 - --------------- -//358 by 胡蝶蘭 - -・ログイン時のdelete_timerのエラーを出ないようにした - pc.c - pc_authok()の修正 - -・ギルド関係の修正 - ・メンバ勧誘時に最大人数の確認を行うように - ・データ通知処理をいくつか修正 - - (char/) - int_guild.c - 色々修正 - (map/) - clif.c/clif.h - clif_guild_inviting_refused()をclif_guild_inviteack()に改名 - guild.c/intif.c - 色々修正 - -・@guildlvupコマンド作成。ギルドレベルが調整できます。 - - (char/) - int_guild.c - 色々修正 - (map/) - atcommand.c - @guildlvup処理追加 - -・Makefikeのclean部分を修正 - - (char/ map/ login/) - Makefile - ・削除する実行ファイルのパスを ../athena/ から ../ に修正 - --------------- -//357 by 胡蝶蘭 - -・pc.cの文字化け修正 - 文字化けしたファイルをアップするのも、それを改造するのも禁止しませんか? - 直すの面倒くさすぎます。 - - pc.c - 文字化けの修正 - -・パーティやギルドに勧誘された状態でマップ移動やログアウトすると、 - 勧誘を拒否するように修正 - - pc.c - pc_setpos()修正 - map.c - map_quit()修正 - -・I-Athena自動復旧システム(B-NSJ氏作)をAthena用に改造して添付しました - プログラムの性質上./toolフォルダではなく./にあります。 - athena.shの変わりにstartで起動するとmap鯖が落ちても10秒程度で復旧します - プロセスは「map」で調べてますが他のプロセスに反応するときは - 「map-server」などに変えてみてください。 - - start - map鯖自動復旧システムのシェルスクリプト - - --------------- -//0356 by 死神 - -・athena.shを使わなくてもYare-launcherを使えるように変更。(自分試してましたが -一応動きました。でも窓の場合login-server.exeがlogin-server.exに登録されてしまい -Yare-launcherがlogin-server.exe続けて実行する問題があります。これはathenaの -問題ではありませんが...) - comm/makefile以外のmakefile全てを修正。 - athena.sh修正。 - 実行ファイルは.,/athena フォルダーじゃなく./ フォルダーに作られます。 -・ 新規accountの許容するかどうかをlogin_athena.cnfで決めるように変更。(これは - YareCVSを参考した物です。) - login.c - int mmo_auth() 修正。 - login_athena.cnf - new_account 追加。 -・char.c、login.c、inter.c、map.c、battle.cで一部のstrcmpをstrcmpiに変更。 - --------------- -//355 by ゆう - -・左手装備も考慮した二刀流に修正 - (ダメージ計算のみで見た目等は変更なし) - -map.h - map_session_dataに左手用の変数を追加 - -battle.h - battle_get_attack_element2()追加 - -battle.c - battle_get_attack_element2()追加 - battle_calc_weapon_attack()に -  二刀流の処理を追加修正 -  クリティカルよりダブルアタックを先に判定するように修正 -  過剰精錬の追加ダメージを精錬ダメージの次に処理するように修正 -  (これらは独自に調べたもので間違っている可能性あり) - -pc.c - pc_calcstatus()に左手用の変数に値を入れる処理を追加 - pc_equipitem()の二刀流装備の場所がおかしかったのを修正 - --------------- -//353 by いど - -・Yare-launcherを使うことが出来るようにMakefileとathena.shを変更 - --------------- -//352 by 胡蝶蘭 - -・詠唱中にクライアントを終了するとmap鯖が落ちる問題の修正 - skill.c - skill_castend_id(),skill_castend_pos(),skill_castend_map()修正 - map.c - map_quit()修正 - - -・データバックアップ用のツール添付 - Perl製なので実行にはPerlが必要です。 - 使用方法などはエディタで開いて見てください。 - 使い方が良くわからない人は手を出さないほうがいいです。 - データが消えても責任は持ちません - - (tool/) - backup - データバックアップ用Perlスクリプト - --------------- -//0351 by 死神 -skill.c - skill_use_id()に詠唱反応モンスターの処理を変更。(攻撃状態以外の場合 - 詠唱反応を最優先にします。) -mob.c - mob_ai_sub_hard_castsearch() 詠唱反応モンスターを二重処理して - いたので削除。 - mob_ai_sub_hard() 詠唱反応モンスターを二重処理しないように変更。 -pet.c - 0344に戻しました。(修正は少し分析をしてからにします。) -pet.h - 0344に戻しました。 -char.h - CHAR_CONF_NAME 追加。 -char.c - do_init() 実行する時ファイル名が入力されていないとCHAR_CONF_NAMEを - 使うように変更。 -map.h - MAP_CONF_NAME 追加。 -map.c - do_init() 実行する時ファイル名が入力されていないとMAP_CONF_NAMEを - 使うように変更。 -これでlogin.exe、char.exe、map.exeをathenaフォルダーにコピーした後名前を -login-server.exe、char-server.exe、map-server.exeに変更するとYare-launcherを使う -ことができます。これを使うと鯖が落ちる度に自動的に再実行してくれます。 - --------------- -//0345 by 死神 -・キャスティング探知実装。 - mob.c - mob_ai_sub_hard_lootsearch() 修正。 - mob_ai_sub_hard() 修正。 - mob_ai_sub_hard_castsearch() 追加。 - mob_target(), mob_ai_sub_hard_activesearch() ボスモンスターを - mvp経験値によって認識するように変更。 - mob_ai_sub_hard_linksearch() 修正。 - mob_attack() 死んだふり、ハイディングをチェックするように変更。 - mob_readdb() 修正。 -・pet.h - MAX_PET_DBを100に変更。 -・pet.c - read_petdb() 修正。 - --------------- -//0344 by 過去の人i1 -・ ペット腹減り実装およびそのほか色々修正 -・ ペット餌やり実装 - - pet.c - pet_calcrate(struct map_session_data *sd); - ペットの獲得確率計算 - pet_food(struct map_session_data *sd); - ペット餌やりシステム - pet_hungry_change( int tid, unsigned int tick, int id,int data ); - ペットが腹を減るロジック - pet_status_int(struct map_session_data *sd); - 親密度計算 - pet_status_hungry(struct map_session_data *sd); - 満腹度計算 - pet_status_1a3(struct map_session_data *sd); - パケット1a3設定関数 - pet_initstate(struct map_session_data *sd); - ペットが初めて生まれたときの初期ステータス設定 - 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); - を追加 - clif.c - clif_pet_emotion(int fd,struct map_session_data *sd) - 餌をあげたときにエモーションを行う - clif.h - clif_pet_emotion(int fd,struct map_session_data *sd); - --------------- -//0341 by 死神 -・ルートモンスター実装。 - map.h - LOOTITEM_SIZEを20に修正。 - struct mob_dataにint lootitem_count 追加。 - mob.c - mob_spawn() 少し修正。 - mob_ai_sub_hard_lootsearch() 追加。 - mob_ai_sub_hard() 修正。 - struct delay_item_drop2 追加。 - mob_delay_item_drop2() 追加。 - mob_damage() 修正。 - battle.h - struct Battle_Configにint monster_loot_type 追加。 - battle.c - battle_config_read() 修正。 - battle_athena.cnf - monster_loot_type: 0 追加。(基本的に0になっています。 - 0の場合はLOOTITEM_SIZEまでアイテムを食べても - またアイテムを食べて前のアイテムが消える仕様です。 - 1の場合はLOOTITEM_SIZEまでアイテムを食べると - もうアイテムを食べなくなります。 - --------------- -//0340 by 死神 -・mvpバグ修正。 - mob.c - mob_damage()でjに変えたはずの物に見落としありましたので - 修正しました。これでmvpアイテムで変な物が出なくなるはずです。 -・class_equip_db.txt - EUC-JISをS-JISに変更。(意味はありませんが他のファイルは - 全部S-JISだったので...単なるミスですが...) - ----------- -//339 by いど - -・338を適用した状態でビルドエラーが発生する不具合を修正 - ----------- -//338 by 過去の人i1 - -・ pet_db.txtに対応しました。 -・ pet_dbをつかったプログラムの書き方に修正しました。 -・ ペットの名前を変更する事が出来ます -・ ペットにアクセサリーをつける事が出来ます。 -・ 現在ペット餌やり進行中 - - (map/) - clif.c/clif.h - ・ pet関連の関数をほぼ修正及び追加いたしました。 - ・ clif_parse_EquipItem()内部でペット用装備であるかどうかの判定を行ってます - ・ clif_parse()を修正しました。 - - battle.h/battle.c - ・ battle_config.pet_rate変数を増やしました。mobに対する卵の獲得率 -   を設定する事が可能となります - - pet.c/pet.h - ・ pet_initstate(struct map_session_data *sd); -  初期のペットステータスを設定する関数です - ・ pet_npcid(struct map_session_data *sd,int egg_name_id); -  ペットに割り当てられたnpc_idを返します - ・ pet_itemid(struct map_session_data *sd,int mob_id); -  モンスターIDから卵のIDを割り出します - ・ pet_equip(struct map_session_data *sd,int equip_id); -  ペットのアクセサリー装備です - ・ pet_unequip(struct map_session_data *sd); -  ペットのアクセサリー解除です - ・ pet_calcrate(struct map_session_data *sd); -  卵獲得確率計算を行い1or0を返します。 - ・ pet_food(struct map_session_data *sd); -  ペット餌やり考案です。まだ正常に動作しません。 - ・ read_petdb() -  pet_db.txtを読み込みpet_db[]に値を入れる関数です - - ・ do_init_pet() -  map鯖初期化でよびだしpet_db[]を使えるようにする為の - ペット情報初期化関数です。 - - map.c/map.h - ・ BL_PET変数を加えました - ・ map鯖初期化の時にdo_init_pet()を呼び出します。 - - mmo.h - ・ s_pet構造体に変数追加。キャラクターがペットのデータを保持する為のシステム -  の為今後も変数はそのつど増加する予定 - - npc.c - 改善しました。 - - (conf/) - battle_athena.cnfに卵の獲得確率pet_rateを加えました。 - ----------- -//337 by 胡蝶蘭 - -・ギルドの追加と修正 - ・ギルドに経験値を上納すると、上納されるEXPが異常な値になるバグ修正 - ・ギルドの敵対関係の追加 - - guild.c/guild.h - guild_payexp()の修正(上納EXP処理) - guild_opposition()追加 - guild_allianceack(),guild_reqalliance(), - guild_reply_reqalliance()の修正 - clif.c/clif.h - clif_guild_oppositionack(),clif_parse_GuildOpposition追加 - -・ディレイ時間がdexの影響を受けるかどうかをbattle_athena.cnfに書けるように - - (conf/) - battle_athena.conf - delay_dependon_dex を追加 - (map/) - skill.c - skill_delay_fix()の修正 - battle.c/battle.h - struct Battle_Configにdelay_dependon_dex追加 - battle_config_read()の修正(読み込み処理も変えてます) - --------------- -//0336 by 死神 -・スキルインデュアを少し修正。 -・clif.c - clif_skill_damage()、clif_skill_damage2() インデュア合わせて修正。 - (ただスキルや魔法になるとモーションが出ないパケットを - 見つけなかったので完全じゃありません。) - clif_parse_ActionRequest()、clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() - スキルディレイの時にメッセージが出るように修正。 -・バックステップ実装、オリデオコン研究実装。 -・skill.c - skill_castend_damage_id()にあったスキルバックステップの処理を - skill_castend_nodamage_id()に移動しました。 - スキルバックステップの処理でclif_skill_damage2()を呼ぶのをclif_fixpos()を - 呼ぶように変更。(これでダメージのモーションが出ずに - 移動できます。) - バックステップと叫ぶように変更。 - skill_produce_mix() オリデオコン研究適用。武器レベルが3以上の時に - スキルレベル*1%がボーナスとして製造確率に付きます。 - エルニウムの確率判定追加。 -・skill_db.txt - バックステップのnkを0から1に変更。(スキル番号150の物です。) -・produce_db.txt オリデオコン,エルニウムを追加。(これは本鯖にはない物です。 - よってクライアントには必要なアイテムが表示されません。) - オリデオコン研究を少し使える物にするために追加しました。 - オリデオコンの場合はオリデオコン原石3つと石炭1つが必要で - エルニウムはエルニウム原石3つと石炭1つが必要です。 -・pc.c 少し修正。 - pc_heal()pc_percentheal() 少しだけ修正。 - pc_gainexp() ギルドにexpを上納する時にexpがマイナスにならないように - 修正。同時に2つ以上のレベルが上がるように変更。 - 最大レベル以上にレベルが上がらないように修正。 - pc_checkbaselevelup()、pc_checkjoblevelup() 追加。レベルアップを - チェックします。 - pc_itemheal() 追加。アイテムを使う時にVITとスキルによってボーナスが - 付く物です。スキルラーニングポーション実装。 -・pc.h - pc_checkbaselevelup(),pc_checkjoblevelup() 追加。 - pc_itemheal() 追加。 -・script.c - スクリプトfixhealを除去。itemhealを追加。healがfixhealの機能をする - ように変更。 - buildin_fixheal() を消しbuildin_heal()を元の物に戻しました。(つまり - buildin_heal()がbuildin_fixheal()になりました。) - buildin_itemheal() 追加。アイテムによる回復はこれを呼ぶようにして - ください。 - buildin_heal()からボーナスの計算を除去。 -・item_db.txt、 item_db2.txt - healをitemhealに変更。 -・mob.c - mob_damage() 0335でmvpに少し間違いがありましたので修正しました。 -・skill.h - MAX_SKILL_PRODUCE_DBを64から100に変更。 - - -//0335 by 死神 -・char/char2.cの一部にRETCODEが適用されてなかったのでそれを修正。 -・char/char2.cのparse_char()でキャラを消す時に問題がありそうな所を修正。 -・char/cha2.c,login/ login2.cをchar/cha.c, login/login.cに変更。 -・char/makefile,login/makefileを変更。 -・makefileとcommon/mmo.hを変更してOSを自動認識してRETCODEを自動に - 適用するように変更。 -・common/grfio.cのgrfio_init()を修正。(コードをちょっときれい(?)に - しただけですが,,,) -・インデュア実装。よってアンティペインメントも実装。 -・map/clif.c - clif_parse_LoadEndAck() 韓国クライアントのパッチに合わせて少し変更。 - (マップが変わる度に武器とシールドが見えなくなるためです。まだ - 日本クラとは関係ありませんが...) - clif_skillinfoblock() upはいらないと思うので消しました。スキルポイントが - 256、512等の時スキルツリーが正しく表示されないことは - もうありません。 - clif_guild_skillinfo() 同じようにupを消しました。 - clif_birthpet() pc_delitem() 呼ぶように変更。 - clif_damage() インデュアに対応するように変更。 -・map/pc.c - pc_percentheal() マイナスを入れても動くように変更。少し修正。 - pc_heal() 少し修正。 - natual_heal() 少し修正。 - do_init_pc() natual_healの修正に合わせて変更。 - pc_calcstatus() 弓を装備してないとワシの目が適用されないように変更。 - トラスト実装。 - pc_damage() インデュアに対応するように変更。 -・map/pc.h - pc_checkoverhp(), pc_checkoversp()を追加。 -・map/map.h - MAX_PC_CLASSを+1に。 -・map/atcomand.c - comandをcommandに変更。 - strncmpをstrcmpiに変更。よってコマンドが大文字、小文字を区別する - 必要がなくなりました。 -・map/npc.h - npc_parse_mob()を追加。(意味はありませんが...) -・map/temdb.c - itemdb_readdb()でclass_equip_db.txtを読むように変更。 -・db/class_equip_db.txt を追加。ここで装備するクラスを指定します。ない場合は - item_db.txtにあるjobを使います。含まれてる物は完全な物ではなく - 使用例程の物です。 -・map/skill.c - skill_status_change_start() インデュアの時間を正しく変更。 -・map/battle.h - battle_configのexp_rateをbase_exp_rateに変更。,job_exp_rateを追加。 - battle_get_mexp()を追加。 -・map/battle.c - battle_configのexp_rateをbase_exp_rateに変更。,job_exp_rateを追加。 - battle_get_mexp()を追加。 - battle_calc_magic_attack()を変更。ダーンアンデッドでボスの認識をmvp - expでするように変更。 -・map/mob.c - mob_readdb() base_exp_rate,job_exp_rateに対応。 - mob_readdb() ボスの認識をmvp経験値でするように変更。 - mob_damage() mvpを取る時の処理を変更。重さが50%を越えると床に - 落ちるように変更と色々。 -・conf/battle_athena.cnf - base_exp_rate、,job_exp_rateを追加。 -・0308で忘れた物 - 古く青い箱、古いカード帖、古い紫色の箱の使用で得られたアイテムを - 持ってなくなったらアイテムを床に落とすように変更。 - 製造はすでに0302で適用。 - ----------- -//334 by C}{RIS - -・あぷろだの332.txtをpet_db.txtとして同梱。 - -・各種テキストファイルのミスを修正 - ・attr_fix.txt 属性修正がマイナスに働いて敵が回復する問題を修正。 - >元の回復仕様に戻したい場合attr_fix.txtをリネームし、attr_fix_old.txtをattr_fix.txtにリネームして下さい。 - ・mob_db.txt モンスターの日本語名を本鯖と統一。 - ・cast_db.txt 詠唱時間、ディレイを本鯖と統一。 - ----------- -//333 by 胡蝶蘭 - -・ギルド機能追加 - ・ギルドの同盟と同盟解消 - - (char/) - inter.c/int_guild.c - パケット長/ギルド処理追加 - (map/) - clif.c/clif.h - clif_guild_reqalliance,clif_guild_allianceack, - clif_guild_delalliance,clif_parse_GuildRequestAlliance, - lif_parse_GuildReplyAlliance,clif_parse_GuildDelAlliance追加 - (ギルド同盟関係のパケット処理) - intif.c/intif.h - ギルド同盟関係のパケット処理追加 - guild.c/guild.h - ギルド同盟関係の処理追加 - map.h - struct map_session_dataにguild_alliance,guild_alliance_account追加 - -・ギルドエンブレムの変更がマップ鯖を再起動しないと有効にならないバグ修正 - - guild.c/guild.h - guild_emblem_changedの修正 - ----------- -//331 by 過去の人i1 - -・ペットシステム修正(完成度25%) - - ・各種捕獲用アイテムをそれぞれ対応する敵に対して使用することで -  正しく卵が手に入るようになりました。 - ・各種捕獲用アイテムを対応しない敵に使用した場合はルーレットが必ず失敗します。 - ・ペットが瞬時に表示されるようになりました。 - ・ペットを右クリックするとメニューが出るようになりました - ・他色々危険な要素を修正しました。(アイテムの数の減少等のバグを直しました) - - (db/) - item_db.txt - 各種捕獲用アイテムに対応するようpetコマンドを正しく書きました。 - - (common/) - mmo.h - s_pet ペット構造体にpet_item_idを追加 - - (map/) - clif.c - clif_birthpet()を修正。正しく卵が減る、正しい卵のIDを取得するよう修正 - これによって、正しくnpc_pet関数が動きます。 - - clif_spawnnpc()を修正(WBUFPOS(buf,36,nd->bl.x,nd->bl.y)と、数値を26から36へ変更しました) - これによってペットが瞬時に表示されるようになりました。 - - npc.c - npc_pet()を修正。 - - pet.c/pet.h - ペット関連の細かな関数をこちらにまとめる為、追加しました。 - 現在はペットの判定関係をまとめてあります。 - - script.c - 特に大きな修正はありません。 ----------- -//330 by 過去の人i1 - -・ペットシステム導入(完成度20%) - ・敵に対して捕獲用アイテムを使用する事が可能となりました。 -  (まだ熟していないリンゴのみ使用可能、敵につかってもポリンの卵が手に入ります。) - ・各種卵に対してペットを表示する事ができます、ただしなぜか一度画面外に -  でないとペットが表示されません。 -  (恐らくペット表示の際に行っているNPCステータスが正しく入っていない) - ・表示されたペットがパフォーマンスを行います。 - - (db/) - item_db.txt - 携帯卵孵化機を使用可能に bpetコマンド(携帯卵孵化機使用) - 「まだ熟してないリンゴ」を使用可能に petコマンド(あるmobに対して使用可能にする) - (common/) - mmo.h - s_pet ペット構造体追加 - mmo_charstatus ペット構造体宣言変数追加(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); - - 以上の関数を追加しペットに関する処理を行っております。 - (ルーレット、卵選択窓、パフォーマンス、そのほか色々) - - npc.c/npc.h - int npc_pet(struct map_session_data *sd,int name_id); - ペット表示の為の関数を追加 - (この関数内部でペットの表示処理を行っています。適切に修正してください) - - script.c - int buildin_catchpet(struct script_state *st); - int buildin_birthpet(struct script_state *st); - を追加しました。スクリプトにpet,bpetを追加しました。 ----------- -//329 by 胡蝶蘭 - -・ギルド機能追加 - ・ギルドへのEXPの上納 - ・ギルドレベルアップ - ・ギルドスキルの割り振り - - (db/) - exp_guild.txt - ギルドレベルの経験値データベース - (common/) - mmo.h - GBI_*,GMI_*の定義の追加など - (char/) - int_guild.c - EXPやレベルアップ、スキルアップ処理追加など - inter.c - パケット長追加 - (map/) - guild.c/guild.h - ギルド処理追加 - intif.c/intif.h - ギルドパケット処理追加 - clif.c - clif_guild_skillinfo()修正 - clif_guild_skillup()追加 - pc.c - pc_skillup()でギルドスキルの場合はguild_skillup()を呼ぶように - pc_gainexp()で上納EXPのためにguild_payexp()を呼ぶように - -・ギルド機能修正 - ・ギルドメンバーがログインやログアウトすると、 - ログイン中のギルドメンバーにギルド系パケットが送られなくなる問題修正 - - guild.c - guild_recv_memberinfoshort()の修正 - ----------- -//328 by 胡蝶蘭 - -・ギルド機能の追加など - ・追放機能仮実装(追放したキャラも再加入可能&一部情報がダミー) - ・スキルの表示(表示だけです。上げたりは出来ません) - - (common/) - mmo.h - struct guild_explusionの変更 - (char/) - int_guild.c - 追放処理追加 - 空ギルドチェックなど追加 - (map/) - guild.c/guild.h - ギルドスキル関係のアクセサなど追加 - clif.c - clif_guild_skillinfo()の修正 - clif_guild_explusionlist()追加 - -・ターンアンデッドがボス系アンデッドでMISSになるバグ修正 - ・ターンアンデッド失敗時のダメージが使われます - - battle.c - battle_calc_magic_damage()の修正 - ----------- -//327 by いど -・経験値テーブルに1箇所間違いがあったので修正 - db/exp.txt - ----------- -//326 by いど -・char鯖の新鯖,メンテナンス中のフラグ情報を設定できるようにした -・char鯖の鯖名の長さが16バイトになっていた部分を20バイトに修正 - - (login/) - login2.c - parse_login()の修正 - login.h - struct mmo_char_serverの修正 - (char/) - char2.c - check_connect_login_server(),do_init()の修正 - (conf/) - char_athena.cnf -  ・char_maintenanceを1にするとログイン人数の後ろに(点検中)がつく -  ・char_newを1にすると鯖名の前に[新]がつく - (doc/) - パケット解析.txt - ・今回の変更に伴う一部修正 - ----------- -//325 by Mind Twist(224&0293) -・敵(NPC)スキルの追加(ツリーに追加のみ) - db/skill_db.txt - ・ギルドスキル相変わらず不明…この形式じゃないのかな? - ----------- -//324 by non - -・mobのターゲット後移動を修正 -・mobの移動速度をDBから反映させるように - - (map/) - mob.c - mob_ai_sub_hard()の修正 - -・斜め判定を修正 - ・FW等での斜め範囲を本鯖仕様に - - (map/) - map.c - map_calc_dir()の修正 - ----------- -//322 by 胡蝶蘭 - -・ログイン時に必ずパーティーから除名されるバグ修正 - ・0318の「パーティを除名されたのに〜」での修正ミス - - (char/) - int_party.c - パーティー競合時のメッセージに改行追加 - (map/) - party.c - party_check_member()の修正 - -・ギルド会話実装&修正など - (char/) - int_guild.c - ギルド競合時のメッセージに改行追加 - (map/) - guild.c/guild.c - guild_send_message(),guild_recv_message()など追加 - intif.c/intif.h - intif_parse_GuildMessage()など追加 - clif.c/clif.h - clif_guild_message(),clif_parse_GuildMessage()など追加 - clif_guild_basicinfo()のパケットを0150から01b6に変更 - -・バックステップがものすごく怪しいけど仮実装 - ・使うとダメージを1喰らったように見えます。(実際はダメージ0です) - - skill.c - skill_castend_damage_id()修正 - ------------------- -//321 by 過去の人i -・弓矢装備効果のみ実装(多々おかしい点は存在するが装備が出来、矢の効果が出る) - map/clif.c map/clif.h - clif_itemlist()追加 - 持ち物の中で弓矢に割り当てるパケット番号を0x8000とする処理追加 - - clif_arrowequip(struct map_session_data *sd,int val); //self - を追加。この中で弓矢装備パケット処理を行ってます - map/pc.c - pc_equipitem() 弓矢装備追加 - - 残された問題点: - ・ 矢が減らない - ・ リログすると矢が1になる - ・ 装備している矢が表示されない(←多分装備posの設定をしていない為かと) - ・ 矢を装備解除できない(他の矢を装備しなおせば装備した矢の効果になります - ----------- -//320 by いど -・以下のパケットのエラーコードの説明を追加 - doc/パケット解析.txt - R 006a .B - R 0070 .B - R 0081 .B - ----------- -//319 by mk -・NPCとの会話中に装備変更、アイテム、スキルを使用できないようにしました - map/clif.c - 各所でsd->npc_idをチェックしてます - -・一部の被り物でも精錬後に装備箇所がおかしくなるバグを修正 - map/script.c - buildin_successrefitem のコードを修正 - -・カードによる追加効果および異常耐性発動処理の修正 - map/skill.c - インデックス初期値が間違っていると思われるので修正(SC_POISON -> SC_STONE) - -・ボウリングバッシュの仮実装、グリムトゥースの使用条件追加 - ・ボウリングバッシュを仮実装。吹き飛ばし処理やってるので -  battle.c のblewcountをコメントアウトしました - ・グリムトゥースの使用条件(ハイディング&カタール装備)チェック追加 -  こんな感じで他のスキル使用条件も追加してもよいのかな? - ・skill_blown の吹き飛ばし方向をターゲットとの位置が重なっているときは -  ランダムではなくキャラクターを後ろへ吹き飛ばすように変更しました - map/skill.c - skill_castend_damage_id()変更 - skill_check_condition()変更 - skill_blown()変更 - -・アサシン二刀流処理に関する修正? - ・装備一覧へdrag&drop時に両手が赤くマーキングされるように修正 -  アサシンでは武器装備箇所が両手になるようitem_equippointを変更 -  それに伴いpc.cのpc_equipitemを修正 - ・逆手ダメージを表示してみました -  まともにダメージ計算やってないので攻撃回数の確認だけです - ・カタール追撃と左手攻撃のMISSを無理やり表示 - (map/) - itemdb.c (itemdb.h、clif.c、pc.c) - itemdb_equippoint() を変更 (二刀流を考慮) - 引数を(int nameid) -> (struct map_session_data *sd,int nameid)に - 引数変更に伴い宣言(itemdb.h)と呼び出し側(clif.c ,pc.c)も変更 - pc.c - pc_equipitem(), pc_checkitem()装備チェックを修正 - battle.c - battle_calc_weapon_attack(),battle_weapon_attack() - 上にも書きましたが左手のダメージ計算は行ってません - (カード、属性等も未適用)右手と同じダメージ入れて左右修練適用してます - カタール追撃と左手ダメージをミスさせる方法(パケット?)がわからないので - 計算後のダメージが-1の場合、damage=0を送るようにしています - もっとよい方法があるのでしたら修正お願いします - -・完全回避の計算をLukではなくFlee2で判断するように修正 - map/battle.c - battle_calc_weapon_attack() - - (db) - item_db.txt、item_db2.txt - 装備品の一部ボーナス効果を追加 - mob_db.txt - 某所でうpされていたものを少し修正 - まだModeやDropに問題点があるかもしれません - ----------- -//0318 by 胡蝶蘭 - -・ある公平分配PTとそのPTに属さないPCが共闘すると鯖が暴走するバグ修正 - - mob.c - mob_damage()のEXP分配処理修正 - -・パーティを除名されたのに所属しているように見えるバグ修正 - ・該当キャラがログアウト状態の時に除名され、その後、同垢別キャラが - 同パーティに所属しなおし、さらに元のキャラでログインすると、 - 除名判定に失敗してパーティに所属したままであるとされてしまう問題修正 - - party.c - party_check_member()の修正 - - ----------- -//0317 by nabe - -・「〜さんから取引を要請されました。」が自分の名前になっていたのを修正 - trade.c/clif.c/clif.h - clif_traderequest()で取引相手のキャラ名を渡すように変更 - ----------- -//0316 by nabe - -・両手武器を精錬すると片手装備になるバグを修正 - script.c - buildin_successrefitem()で、両手武器の場合等に装備箇所チェック - ----------- -//0315 by 胡蝶蘭 - -・PCのSPAWNタイミングを変更 - ・マップ移動(ログイン)時、ローディング終了後にSPAWNするように。 - ・ロード中に攻撃されたりしなくなります。 - ・ギルド/パーティ情報読み込み前に名前解決パケットが来る問題も - 修正されるはずです。 - - pc.c - pc_setpos()でmap_addblock,clif_spawnpcの呼び出しを止めた。 - clif.c - clif_parse_LoadEndAckでmap_addblock,clif_spawnpcを呼ぶように。 - -・inter鯖パケット処理の重大な問題を修正 - ・一度にパケットを送信できなかった場合、無限ループに陥る問題修正 - - (char/) - char2.c - parse_frommap()修正 - inter.c - inter_parse_frommap()修正 - (map/) - chrif.c - chrif_parse()修正 - intif.c - intif_parse()修正 - -・ギルドの機能追加 - ・他人のエンブレムが見えるように。 - ・ログイン直後の自分のエンブレムが見えるように。 - ・脱退できるように。(追放はまだです) - - <パケット情報引き続き模集> - ・016c,016d,0163,015cなどの詳細な情報 - ・ギルドスキルのIDがわかる人、教えてほしいです。 - 158,205,331あたり調べましたがダメな模様。 - - (common/) - mmo.h - MAX_GUILDを36に。 - (char/) - int_guild.c - 脱退のパケット変更 - inter.c - パケット長修正 - (map/) - clif.c/clif.h - clif_set0078,clif_set007bの修正 - clif_guild_belonginfoの修正 - clif_guild_skillinfo追加 - guild.c/guild.h - 脱退などの処理追加 - intif.c/intif.h - 脱退などの処理追加など - - ----------- -//0314 by いど - -・char鯖とmap鯖の鯖数上限を30に引き上げ - login/login.h - char/char.h - -・map_athena1.cnfをmap_athena.cnfにリネーム - それに伴い、athena.shを変更 - -・パケット解析資料をdoc/に移動 - - ----------- -//0313 by 胡蝶蘭 - -・ギルドの機能追加 - ・ギルド勧誘/役職内容変更/メンバーの役職変更など - ・guild.txtの書式がまた変わりましたが、前のデータも読み込めるはずです。 - - <パケット情報引き続き模集> - ・016c,016d,0163,015cなどの詳細な情報 - ・自分以外のPCの所属ギルドIDを通知するパケット - - (common/) - mmo.h - struct guild を変更 - (char/) - int_guild.c/inter.c - 処理追加/パケット長追加 - (map/) - guild.c/guild.h/intif.c/intif.h - 処理追加 - clif.c/clif.h - ギルド関係のパケット処理追加 - -・help.txtを修正 - help.txt - -・0311による文字化けを修正 - README - map/pc.c - ----------- -//0312 by いど - -・@hコマンドを@helpに変更 -・読み込むマップデータの定義部分を変更 - ----------- -//0311 by tk44 -・Assassin 二刀流装備、ASPD問題修正 - - map\pc.c - pc_equipitem(), pc_calcstatus(), pc_checkitem() - -・二刀流傷害計算修正まだ処理中 - ----------- -//0310 by 胡蝶蘭 - -・ログやデータに使う改行コードをmmo.hで設定可能に - (common/) - mmo.h - RETCODEで改行コードを文字列で定義します。 - Windows系だとCR/LFなので"\r\n",UNIX系だと"\n"です。 - 別に正しく指定しなくてもAthena自体は問題なく動作するはずです。 - (login/) - login2.c - (char/) - char2.c/int_storage.c/int_party.c/int_guild.c - 保存する改行コードをRETCODE依存に変更。 - 改行コードに依存せずに読めるように修正。 - -・クライアントから不明なパケットが来たらダンプするように - ・#define DUMP_UNKNOWN_PACKET 1 をコメント化すればダンプしません。 - - clif.c - 不明パケットの処理でダンプ処理を追加。 - -・ギルド機能の追加 - ・エンブレム変更/告知変更実装 - ・guild.txtの書式が変わりましたが、前のデータも読み込めるはずです - - (char/) - int_guild.c/inter.c - ギルドパケット処理、パケット長 - (map/) - guild.c/guild.h - 機能追加 - intif.c/intif.h - ギルド関係パケット追加 - clif.c/clif.h - ギルド関係パケット追加 - ----------- -//0309 by C}{RIS - -・ボウリングバッシュを範囲攻撃化しました。 -・プロンテラに装備品販売NPCを追加しました。 - map_athena1.cnfの - npc_shop1J.txtをコメントアウトすれば無効に出来ます。 -・アイテムの名前とIDを書いたテキストファイルを添付。(item.list) - ----------- -//0308 by 死神 -・自然回復のプログラムを修正しました。 - これで大丈夫だといいですが... - pc.c - pc_natural_heal()等を修正。 - pc_percentheal()を少し修正。 - pc_checkskill()を少し修正。スキルがない場合0を返すように - 変更しました。他の.cファイルも修正する必要がありましたので - 修正しました。 -・4人目と5人目のキャラを消せない問題を修正。 -・始めからナイフとコットンシャツを持つように変更。 -・LOOK_SHEILDをLOOK_SHIELDに修正。 -・mmo_charstatusのsheildをshieldに修正。 -・.logファイルやaccount.txtファイルをnotepadで開くと列が全部繋いでいる - 問題を修正。 -・乱数を時間によって初期化するように変更。 - map.c - do_init()を少し修正。 - -他に変更したファイルもありますが全部覚えてませんので... - ----------- -//0307 by 胡蝶蘭 - -・新規PCの初期位置をchar_athena.cnfに書けるようにした - start_point: マップ名,x,y のように指定します。 - <例> start_point: new_1-1.gat,53,111 - - (char/) - char2.c - -・ギルドの一部機能 - ・ギルド作成くらいしか動きません - ・勧誘/脱退/解散/情報の変更/エンブレム/告知などはすべて未実装です - - <切実な要望> - ギルド関係のパケット情報が全然足りません。わかる人は教えてください。 - 現在のままではエンブレムと告知くらいしか実装できない可能性が…。 - - (common/) - mmo.h - ギルド関係の構造体と定数追加 - (char/) - inter.c - パケット長情報追加 - int_guild.c/int_guild.h - 実際の処理追加 - (map/) - map.h - struct map_session_dataにギルド関係のメンバ追加 - guild.c/guild.h - 新規追加。ギルド機能用 - pc.c - pc_authok()でギルド所属時、guild_request_info()を呼ぶように。 - clif.c/clif.h - ギルドパケット追加 - intif.c/intif.h - ギルドパケット追加 - -・0303での修正「MAXHPなどがサーバーとクライアントで〜」を元に戻した - ・新PCを作るときに正しくHPなどを計算してくれるようになったので - 戻しても平気だろうと予測。 - ・ログイン直後に重量警告が出てしまうため。 - - pc.c - pc_authok()の修正 - -・範囲指定沸きの処理修正 - ・できるだけ指定した数と同じだけ沸くように - (障害物などによる沸き妨害の回避失敗時、前の回避結果を使う) - - mob.c - mob_once_spawn_area()の修正 - ----------- -//0305 by いど -・新規PCの位置を初心者修練場に変更。 -・map鯖がchar鯖に接続できない不具合の修正。 - ----------- -//0304 by 死神 -・自然回復の量と時間を変更。韓国鯖に適用されてる物ですが日本にも - 適用されてるはずです。(多分... やってませんのでわかりません。汗) - HPは毎4秒に 1 + vit/6 + max_hp/200 を回復、 - SPは毎8秒に 1 + int/6 + max_sp/100 を回復します。 -・スキルHP回復力向上による回復を - スキルレベル*5 + max_hp/50に変更。 -・スキルSP回復力向上による回復を - スキルレベル*3 + max_sp/50に変更。 -・スキル移動時HP回復実装。 - 今の所止まってるのと比べて1/4の量を回復します。(時間は同じです。) -・vitとintによって回復時間が短くなるのではなく回復量が増えます。 -・最大HPと最大SPの計算公式を変更。 - map.h - int inchealtickの変わりにint inchealhptick;と int inchealsptick;を追加。 - int parame[6] を追加。最大SPの計算の為の物で装備によって上がった - パラメータを持っつ。 - pc.c - pc_hpheal(),pc_spheal(),pc_natural_heal_sub(),pc_natural_heal()を - 自分のコードに書き換えましたが一応正常に動きますが - 他のコードに影響がないかどうかはわかりません。 - pc_additem()を少しだけ修正。 - hp_coefficientをintからdoubleに変更。 - pc_calcstatus()とpc_readdb()を修正。 - job_db1.txt - 職業の計数を変更しました。(クルセイダー等のデータは - 完全な物じゃありません。) - -・char2.cを少しだけ変更。 - char2.c - make_new_char()を少しだけ変更。(作った直後にHPとSPが完全に - 回復してるように変えました。) - parse_char()を少しだけ修正。韓国のクライアントで繋いても - 異常がないようにしました。(0x187パケットの処理を入れただけ - ですが... これはYareから持ってきた物です。) -・strcmpi等のdefineをatcomand.hからmmo.hに移動しました。 - atcomand.h, mmo.h 修正。 -・回復アイテムを使用する時vitとスキルHP回復力向上によるボーナスが付く - ように変更。ボーナスは - 回復量 *(1 + HP回復力向上スキルレベル*0.1 + vit/100) - になります。 -・イグドラシルの実とイグドラシルの種を仮実装。(回復はしますがエフェクトが - 出ません。item_dbでタイプを変えても駄目でした。) - script.c - buildin_fixheal()とbuildin_percentheal()を追加。 - buildin_fixheal()はbuildin_heal()がスキルとvitによって回復量が変わる - 仕様になったので元のbuildin_heal()の名前だけを変えた物です。 - buildin_percentheal()は入力された数字を%としてHPとSPを最大HPと - 最大SPを %比率に回復します。 - スクリプトfixheal 、 percentheal 追加。使用方法はhealと同じです。 - fixhealはvitとスキルHP回復力向上によるボーナスがない物で - percentheal は後の数字を %に認識します。 - pc.h - pc.c - pc_percentheal()を追加。 - item_db.txt、item_db2.txt - イグドラシルの実とイグドラシルの種を変更。 - ----------- -//0303 by 胡蝶蘭 - -・*.grfのパスをmap_athena.cnfにも書けるようにした。 - ・map_athena.cnfに「data_grf: ../data/data.grf」や - 「sdata_grf: ../sakurai/sdata.grf」のようにパス指定できます。 - ・grf-files.txtがある場合そちらの設定が優先されます - - (common/) - grfio.c/grfio.h - grfio_setdatafile(),grfio_setsdatafile()追加。 - data_file,sdata_fileをファイルローカルなグローバル変数に変更。 - -・@stpoint,@skpointに負値指定の範囲チェックを追加 -・@zenyコマンド追加(ゼニーの調整) -・@str,@agi,@vit,@int,@dex,@lukコマンド追加(基本パラメータ調整) - - atcommand.c - @stpoint,@skpoint修正 - @zeny,@str,@agi,@vit,@int,@dex,@luk追加 - -・メマーナイトを使うとぼったくられていた問題を修正 -・武器製造部分のコードを多少変更 - ・材料消費処理をアイテムが複数インデックスに分かれている場合に対応させた - (3万個限界を超えると別インデックスを使う仕様だった気がするので) - ・失敗時にも周りに通知するようにした - - skill.c - skill_check_condition()の修正 - skill_produce_mix()の修正 - -・武器製造確率をconfファイルで倍率指定できるように修正 - - (conf/) - battle_athena.cnf - weapon_produce_rate追加 - (map/) - skill.c - skill_produce_mix()の修正 - -・武器ATKサイズ補正テーブルを外部から読み込むようにした -・精錬成功確率/精錬ボーナスなどを外部から読み込むようにした -・過剰精錬ボーナスによる追加ダメージ実装 - - (db/) - size_fix.txt - サイズ補正テーブル - refine_db.txt - 精錬関係データ - (map/) - pc.c - pc_readdb()で読み込み - battle.c - battle_calc_weapon_attack()に過剰精錬ボーナス処理追加 - -・MAXHPなどがサーバーとクライアントで違う値に見えるバグ修正 - ログイン直後のステータス計算の結果を直ちに送信するようにした - - (map/) - pc.c - pc_authok()でのpc_calcstatus()のフラグを0にした - これでpc_calcstatus()のフラグパラメータは未使用? - -・item_dbの「忍者ス−ツ」を「忍者スーツ」に修正 - (db/) - item_db.txt/item_db2.txt - 忍者スーツの名称変更 - -・ログイン人数を調べるツールを添付 - Perl製なので実行にはPerlが必要です。 - 使用方法などはエディタで開いて見てください。 - 使い方が良くわからない人は手を出さないほうがいいです。 - - (tool/) - getlogincount - ログイン人数所得Perlスクリプト - ----------- -//0302 by 死神 -・アイテム製造 確率判定実装。 - 鉄の場合成功率は - (20 + base_level*0.3 + DEX*0.2 + LUK*0.1 + 要求スキルレベル*6)% - 鋼鉄と属性石、星のかけらの場合 - (10 + base_level*0.3 + DEX*0.2 + LUK*0.1 + 要求スキルレベル*5)% - 武器は - ((2.5 + base_level*0.15 + DEX*0.1 + LUK*0.05 + 要求スキルレベル*5 + - 金敷 - 属性石と星のかけら) * (1 - (武器レベル - 1)*0.2) + - スキル武器研究レベル*1)% - 金敷: ない場合 -5%で金敷は 0%、オリデオコンの金敷は - 2.5%、黄金の金敷は 5%、エンペリウムの金敷は 7.5% - 属性石と星のかけら: 属性石がある場合 5%で更に - 星のかけらの数 * 5%を足します。 - になりますがちょっと確率が低すぎる気もしますので - 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 - 程度に変えた方がいいかも知りません。 - skill.c - skill_can_produce_mix() と skill_produce_mix() を修正。 - produce_db.txt - 星のかけらをスキル属性石製造が必要に変更。 -・*.grf等を設置せずディレクトリからの読み込むように修正。(これはYareから - 持ち込んだ物ですが...) - grfio.c - grfio_init()を修正。 - grf-file.txt - 新規追加。grfファイルがあるディレクトリ設定用。 -・読み込むマップの最大数を512に修正。 - mmo.h - MAX_MAP_PER_SERVERを384から512に修正。 -・pc.cにpc_search_inventory()を追加。 - 機能はitem_idのアイテムを持ってるかどうかを確認して - 持ってる場合そのindexを返す。 - item_idが0の場合は空けてる所のindexを返す。 - pc_additem()とpc_takeitem()だけを少し修正。 -・GMコマンドに@stpointと@skpointを追加。 - @stpoint 数字 - ステータスポイントを上げる。 - @skpoint 数字 - スキルポイントを上げる。 - atcomand.c - 修正。 - atcomand.h - strcmpi等をLinuxでも使えるように修正。 - ----------- -//0301 by 胡蝶蘭 - -・最大HPが32767を超えると異常な値になる問題の修正 -・Lvが99を超えるときもエフェクトを出すようにした(自分には見えない模様) -・配置MOBによるイベントでイベント名が4バイト以上という制限をつけた -・teleport時に取引中断、チャット退室、倉庫保存処理をするようにした - - pc.c - pc_calcstatus()の修正(HP計算) - pc_setpos()の修正(取引中断など) - clif.c - clif_set0078(),clif_set007b(),clif_spawnpc()の修正(Lv99エフェクト) - npc.c - npc_parse_mob()の修正 - -・@hでhelp.txtが読めないときに落ちるバグ修正 -・@lvup/@joblvupで負値を入れるとLvダウンが可能になった - - atcommand.c - @h,@lvup,@joblvup処理の修正 - -・テレポートなどの消滅エフェクトの修正 - - skill.c - テレポの消滅エフェクトを変更 - -・状態異常に関するスクリプト実装 [sc_start]と[sc_end]。 -・緑POT、緑ハーブなど実装 -・装備ボーナスデータ追加 - - (db/) - item_db.txt/item_db2.txt - 装備ボーナスデータを追加 - 緑POT、緑ハーブなどのスクリプト追加 - (map/) - script.c - buildin_warp()で消滅エフェクトを変更 - buildin_sc_start(),buildin_sc_end()追加 - ----------- -//0299 by 胡蝶蘭 - -・NPCイベントでエクスポートされたラベルを指定できるようにした - NPCスクリプトでOn〜で始まるラベルを定義すると、エクスポートします。 - NPCイベントで"NPC名(orイベント名)::ラベル名"とすると、 - 指定したラベルから実行できます。 - ラベル名は24バイト以内にして下さい。 - あとプログラム的にメモリ効率悪いです。後日修正予定 - <例> - NPC「test」のスクリプト内で OnEvent: とラベル定義した場合、 - NPCイベント「test::OnEvent」で指定位置から実行できます。 - - (conf/) - npc_test_ev.txt - ラベル指定のサンプルもちょこっと追加 - (map/) - script.c/script.h - script_get_label_db()などの追加。 - parse_scriptでscriptlabel_dbにラベルデータを追加する - npc.c/npc.h - npc_event_export()など追加 - npc_parse_scriptでラベルデータをエクスポートする - map.h - struct map_session_data のeventqueueのイベント名のサイズを - 50バイトにした。 - -・AGIとDEXによるASPD計算の最大値を180から190に変更 - pc.c - pc_calcstatus()のASPD計算修正 - -・skill_db.txt/cast_db.txtの読み込みをskill.cに変更 - - pc.c - pc_readdb()の修正 - skill.c - skill_readdb()の追加 - -・アイテム製造仮実装 - 確率判定が未実装です。必ず成功します。 - - (db/) - item_db.txt/item_db2.txt - アイテム製造に対応(携帯用溶鉱炉、金槌など) - produce_db.txt - 新規追加。製造リスト。 - (map/) - skill.c/skill.h - struct skill_produce_db追加 - skill_readdb()でproduce_db.txtを読むように - clif.c/clif.h - clif_skill_produce_mix_list(),clif_parse_ProduceMix()追加 - script.c/script.h - 製造用コマンド[produce]作成。 - 引数は製造用数値で、1-4が武器製造(Lv)、16が鉱石 - - ----------- -//0298 by 胡蝶蘭 - -・Login鯖のパスワード暗号化タイプを自動認識できるように変更 - login.hのPASSWORDENCを3にすると自動認識します。 - 最初にpasswordencryptでチェックし、失敗すれば - passwordencrypt2でチェックします。 - - (login/) - login2.c/login.h - 暗号化パスワードの照合部分を修正 - -・アカウント作成ツールを添付 - Perl製なので実行にはPerlが必要です。 - 使用方法などはエディタで開いて見てください。 - 使い方が良くわからない人は手を出さないほうがいいです。 - - (tool/) - addaccount - アカウント作成ツールPerlスクリプト - -・スキルの追加修正 - ・ファイヤーウォールの回数制限をグループ毎からユニット毎に修正 - ・クァグマイア仮実装 (敵の移動速度、キャラの表示数値は変化せず) - ・ウォーターボール仮実装(動作が正しいのか不明) - ・フロストノヴァ仮実装(エフェクトが良くわからないので適当) - ・ベノムダスト仮実装(範囲とかが正しいかどうか不安) - ・プロボック、オートバーサーク、聖体降福、砂まき、石投げの実装 - ・エンチャントポイズンの毒付与実装 - - *注意* 毒状態は見た目だけで効果は未実装 - - (db/) - skill_db.txt - 砂まき/石投げ/ウォーターボールなど修正 - (map/) - skill.c/skill.h - 色々修正 - mob.c/mob.h - mob_target()追加。MOBのタゲ用 - battle.c - battle_get_*()系修正など - pc.c - pc_calcstatus()修正 - ----------- -//0297 by 胡蝶蘭 - -・Login鯖がパスワード暗号化に対応 - 暗号化keyは鯖起動時に一度だけ作成します。 - - **注意** - 暗号化パスワードを使っている場合は、アカウントを作成できません。 - アカウントを作る場合はclientinfo.xmlを編集するなどして、 - パスワードを暗号化しないクライアントを使う必要があります。 - - (login/) - login2.c/login.h - 暗号化パスワードのパケット処理追加 - 暗号化keyの生成処理追加 - md5calc.c/md5calc.h - 新規追加。md5計算用 - - -・スキル使用ディレイにDEXが反映されないように修正 - skill.c - skill_delay_fix()の修正 - -・死亡後も一部の状態異常の効果が持続する問題を修正 - pc.c - pc_damage()で死亡時にpc_calcstatus()を呼ぶように修正 - atcommand.c - 死亡時処理を一本化するため@dieではpc_damageを呼ぶように修正 - - ----------- -//0295 by 胡蝶蘭 - -・クレイモアートラップなどにスキルを使うとマップ鯖が落ちる問題の修正 - - battle.c - battle_get_*()などでBL_PC,BL_MOBじゃないときの処理を追加 - skill.c/skill.h - skill_unit_ondamage()追加 - -・約21Mzを超えるアイテムをNPCで扱うときOC,DC計算で値段がおかしくなるバグ修正 - DCでは20Mz、OCでは70Mzを超えるアイテムはdouble型にして計算します - - pc.c - pc_modifysellvalue(),pc_modifysellvalue()の修正 - ----------- -//0294 by 胡蝶蘭 - -・スクリプトコマンドでエリア指定のMOB沸き命令を作成 - areamonster "マップ名",x0,y0,x1,y1,"MOB表示名",MOBのclass,数,"イベント名" - 座標指定が(x0,y0)-(x1,y1)の任意ポイントになるだけで他はmonster命令と同じです - - script.c - buildin_areamonster()追加 - mob.c/mob.h - mob_once_spawn_area()追加 - -・アイスウォールの鯖側処理仮実装 - 攻撃できないなどの問題はあるものの、鯖側ではとりあえず動きます。 - ただ、クライアントに進入不可能エリアを教えるパケットがわからないので、 - 鯖側ではIWの回り込みを行う場合でも、クライアント側ではすり抜けている - ように見えます。 - - skill.c - 該当処理追加など - ----------- -//0293 -・2-2次職のスキルコメントの修正(一部追加) - (db/) - skill_db.txt - skill_tree.txt - - ----------- -//0292 by 胡蝶蘭 - -・SHOP NPCに話し掛けるとNPCが反応しなくなる問題のまともな?修正Part2 - ・売買できなかった問題修正 - - map.h - struct map_session_data にnpc_shopidメンバ追加 - npc.c - npc_click()など修正 - -・スクリプト命令追加 - ・指定エリアのユーザー数の所得 - getareausers("マップ名",x0,y0,x1,y1) - 指定マップの(x0,y0)-(x1,y1)にいるPCの数を計算 - ・指定エリアのユーザーのワープ - areawarp "転送元マップ名",x0,y0,x1,y1,"転送先マップ名",x,y; - 指定マップの(x0,y0)-(x1,y1)にいる全PCを指定マップの(x,y)に転送。 - - script.c - buildin_areawarp(),buildin_getareausers()追加 - -・スキル修正 - ・テレポート使用時に「テレポート!!」と叫ぶように。 - ・ストーンカースの成功率が低いのを修正 - - skill.c - skill_castend_nodamage_id()修正 - ----------- -//0291 by 胡蝶蘭 - -・スクリプト命令追加 - ・NPCの有効無効が切り替えられるようになりました - disablenpc "NPC名"で無効化、enablenpc "NPC名"で有効化。 - NPC名が重複しているときの動作は不定です。 - 主にワープポイントを無効化するときに使います。 - - ・タイマーのカウントを変更するスクリプト命令追加 - addtimercount "イベント名",ミリ秒 - で、タイマの期限を延ばせます(負値を指定して減らすことも出来ます) - - ・アナウンスの拡張 - mapannounce "マップ名","アナウンス文字列",フラグ - で指定マップにアナウンスを流します。フラグは0で黄色、16で青です。 - areaannounce "マップ",x0,y0,x1,y1,"文字列",フラグ - で指定マップの(x0,y0)-(x1,y1)のエリアにアナウンスを流します。 - フラグはmapannounceと同じで、0で黄色、0x10で青です。 - - (conf/) - npc_test_arena.txt - サンプルの修正 - (map/) - script.c - buildin_disablenpc(),buildin_enablenpc(), - buildin_mapannounce(),buildin_areaannounce(), - buildin_addtimercount()の追加 - npc.c/npc.h - NPCの有効無効処理追加 - map.h - struct npc_dataにflagメンバ追加(1ビット目が無効フラグ) - clif.c - clif_getareachar_npc()の修正 - pc.c/pc.h - pc_addeventtimercount()追加 - -・SHOP NPCに話し掛けるとNPCが反応しなくなる問題のまともな?修正 - SHOP NPCと取引中でもイベントが起こるようになります。 - これはROの仕様上避けるのが難しいためこのような結果で落ち着きました。 - - npc.c - npc_click()等の修正 - -・スキッドトラップで残像が残る問題修正 - skill.c - skill_blown()でclif_walkok()などを呼ぶように。 - skill_unit_onplace()のclif_fix*pos()を削除。 - ----------- -//0290 by 胡蝶蘭 - -・スクリプトでMAP鯖内共有変数が使えるようになりました。 - 変数名を$で開始すると、MAP鯖内の全員で共有する変数になります。 - - 言葉の問題ですが、PCのglobalregは「大域的」というより「永続性のある」 - 変数であって、MAP鯖内共有変数のほうが大域的ってイメージが強いんですが… - - script.c - mapval_db定義 - buildin_set(),buildin_input()の修正 - do_init_script()追加 - map.c - do_init()でdo_init_script()を呼ぶように。 - -・イベントキューが実装されました - ・キューサイズは2です。必要なら増やしますが。 - - サンプルの[ev_doテスト]がちゃんと動くようになったと思います。 - - map.h - struct map_session_dataにeventqueueメンバ追加 - npc.c - npc_event_timer()追加 - script.c - run_script()でEND処理でキューの処理追加 - -・スクリプトでタイマーが使用できるようになりました - 使用方法は、addtimer ミリ秒,"イベント名" でタイマー追加、 - deltimer "イベント名" でタイマー削除。 - - (common/) - timer.c/timer.h - get_timer(),addtick_timer()追加 - (map/) - map.c/map.h - struct map_session_dataにeventtimerメンバ追加 - map_quit()でpc_cleareventtimer()を呼ぶように。 - pc.c - pc_addeventtimer(),pc_deleventtimer(),pc_eventtimer(), - pc_cleaereventtimer()追加 - pc_authok()でeventimerの初期化 - script.c - buildin_addtimer(),buildin_deltimer()追加 - -・スクリプトの追加 - ・getusers,getmapusers,killmonsterの追加 - getusers(x)はユーザー数所得、x=0でPCのMAP,1=全MAP,8=NPCのMAP。 - getmapusers("マップ名")は指定マップのユーザー数を所得する。 - killmonster "マップ名","イベント名"で該当のマップにいる、 - 該当のイベント駆動指定モンスターを全て削除。 - ・announceコマンド拡張 - フラグの0x08ビットが1ならマップやエリア計算にPCでなくNPCを使う - - mob.c/mob.h - mob_delete()追加 - script.c - buildin_getusers(),buildin_getmapusers(), - buildin_killmonster()追加 - clif.c/clif.h - clif_GMmessage()の引数変更 - -・イベントサンプル追加 - 簡単なアリーナのサンプルを追加。 - - (conf/) - npc_test_ev.txt - 従来のサンプルの修正 - npc_test_arena.txt - 簡単なアリーナのサンプル - ワープポイントの無効化コマンドなどが必要と思われる。 - -・SHOP NPCに話し掛けるとNPCが反応しなくなる問題修正 - - npc.c - npc_buylist(),npc_selllist()修正 - ----------- -//0289 by 胡蝶蘭 - -・イベント駆動型スクリプトの修正など - ・他のNPCに話し掛けているときはイベントが無視されるようになりました - =>キューに入れるなどの処理がいると思われる。 - - この関係で、サンプルの[ev_doテスト]NPCをクリックしても - IDエラーが出て何も起きません。イベントキューを作れば直るはず。 - - npc.c - npc_event(),npc_click()にnpc_idチェックを追加 - script.c - 終了時にnpc_idをクリアするように - -・スクリプトコマンド[announce]の追加 - ・GMメッセージによるannounce。 - 第1引数は文字列、第2引数はフラグで、 - フラグの下位4ビットが0=全て、1=同じマップ、 - 2=画面内、3=自分のみ、4=同じマップ鯖に送信。 - フラグの4ビット目は色フラグで、0x10=青、0x00=黄色 - - script.c - buildin_announce()の追加 - clif.c - clif_send()でSELFの処理追加 - clif_GMmessage()の引数変更 - intif.c - intif_GMmessage()の引数変更 - -・メモ禁止、テレポ禁止、セーブ禁止マップが指定できるようになりました。 - ・NPCで、mapflagというタイプで、名前を nomemo 、 noteleportで - メモとテレポ禁止。nosave で、引数にセーブするマップ名と座標を指定。 - - 詳しくは同梱のconf/npc_test_ev.txtを参照。 - - (conf/) - npc_test_ev.txt - 修正 - (map/) - map.h - struct map_data にflag,savemap,savex,saveyメンバ追加 - npc.c - npc_parse_mapflag()追加 - do_init_npc()の修正 - pc.c - pc_memo()でメモ禁止かどうかを確認 - pc_makesavestatus()でセーブ禁止ならマップを変更 - pc_randomwarp()でテレポ禁止かどうか確認 - skill.c - テレポとポタでテレポ禁止か確認 - - -・ファイヤーウォールで落ちる問題修正…だといいな - - skill.c - さらにチェックを追加 - skill_blown()に落ちる原因っぽいもの発見したので修正 - ----------- -//0288 by 胡蝶蘭 - -・自動鷹発動時に「ブリッツビート!!」と叫ばなくなりました - skill.c - skill_attack(),skill_additional_effect(), - skill_castend_damage_id()の修正 - -・イベント駆動型スクリプトが記述できるようになりました -・モンスターを倒したときにイベントスクリプトを動かせるようになりました - - NPC定義のscriptで表示クラスを-1にするとイベント扱いになります。 - NPC定義のmonsterにイベント名を設定できます。 - スクリプトのmonsterコマンドにイベントを起こす引数追加。 - 詳しくはサンプルを見てください。 - 今後タイマーでイベントを起こせるようにしようと思っています。 - - 現状では、NPCウィンドウ操作中にイベントがおきて、 - そのイベントのスクリプトでNPCウィンドウを出すと問題が起きます。 - この辺は今後の課題ということで。 - - (db/) - item_db.txt/item_db2.txt - monsterコマンドの変更による修正(古木の枝)。 - (conf/) - npc_test_ev.txt - サンプル - (map/) - npc.c - npc_event()追加 - npc_parse_script()修正 - npc_checknear()修正 - clif.c - clif_getareachar_npc()修正 - map.h - struct mob_dataにnpc_eventメンバ追加 - mob.c/mob.h - mob_once_spawn()の引数変更 - mob_damage()で死亡時にイベントを起こすように - atcommand.h - mob_once_spawn()の引数変更 - script.c - buildin_monster()の修正 - ----------- -//0287 by 胡蝶蘭 - -・モンスター情報スキルでHPが65535を越えていると正常な値が見れないバグ修正 - - clif.c - clif_skill_estimation()の修正 - -・古木の枝アイテムでクライアントがリソースエラーを出す問題が修正されました -・古木の枝アイテムで召喚できる敵が指定できるようになりました - - (db/) - mob_branch.txt - 召喚可能な敵のリスト - (map/) - mob.c/mob.h - struct mob_dataにsummonflagメンバ追加。召喚可能性。 - mob_once_spawn()の修正 - mob_readbranch()の追加 - do_init_mob()でmob_readbranch()を呼ぶように。 - -・古く青い箱、古い紫色の箱が実装されました。 - 一部の未実装アイテムも出ます。item_db.txtにあるデータを検索しています。 - スクリプトgetitemで負の値を指定すると、その絶対値をフラグとして - ランダムにアイテムを選択します。 - - (db/) - item_db.txt/item_db2.txt - 該当部分のスクリプト修正 - (map/) - script.c - buildin_getitem()の修正 - itemdb.c/itemdb.h - itemdb_searchrandomid(),itemdb_searchrandomid_sub()追加 - -・詠唱データの一部修正 - (db/) - cast_db.txt - 速度上昇などの修正 - -・NPCの向き修正など - (conf/) - npc_*.txt - ----------- -//0286 by 胡蝶蘭 - -・モンスター情報スキルでクライアントが落ちるバグ修正 - clif.c - clif_skill_estimation()の修正 - -・詠唱反応モンスターが反応しないことがある問題を修正 - skill.c - skill_use_id(),詠唱反応時、最低追跡距離を13に設定するように。 - -・スクリプトコマンド[warp]でセーブポイント移動やランダム移動が可能になりました -・ハエの羽、蝶の羽アイテムが実装されました - スクリプトwarpでマップ名に"SavePoint"や"Random"が指定できます。 - - (db/) - item_db.txt/item_db2.txt - ハエの羽、蝶の羽のスクリプト修正 - script.c - buildin_warp()の修正 - -・@monsterコマンドによるMOBが復活しないようになりました -・スクリプトコマンド[monster]でMOBを発生させることができるようになりました -・古木の枝アイテムが実装されました - - スクリプト引数は monster マップ名,x,y,MOB名,MOBのID,数 です。 - マップ名が"this"の場合、スクリプトを実行したプレイヤーのいるマップ、 - x,yが-1ならプレイヤーの座標(どちらか一方のみそろえることも可能)、 - MOB名が"--en--"の場合、本来の英語名になり、"--ja--"の場合、 - 本来の日本語名になります。MOBのIDが-1の場合、適当なIDになります。 - - (db/) - item_db.txt/item_db2.txt - 古木の枝のスクリプト修正 - (map/) - mob.c/mob.h - mob_once_spawn()追加 - mob_setdelayspwan()で復活禁止処理追加。 - npc.c/npc.h - npc_get_new_npc_id()追加 - script.c - buildin_monster()追加 - atcommand.c - @monsterの修正 - -・@itemコマンドの修正(装備品などの問題) - - atcommand.c - @itemの修正 - ----------- -//0284 by 胡蝶蘭 - -・障害物があると遠距離攻撃ができなくなりました -・対地スキルが障害物上に使用できなくなりました - - path.c - path_search(),can_move()の修正、can_place()の追加 - battle.c/battle.h - battle_check_range()追加、射程と障害物判定。 - battle_weapon_attack()でbattle_check_range()を呼ぶ。 - skill.c - skill_use_id()、skill_use_pos()でbattle_check_range()を呼ぶ。 - mob.c - mob_ai_sub_hard()の処理を修正 - -・詠唱反応/リンクモンスターが実装されました - skill.c - skill_use_id()に詠唱反応モンスの処理追加 - mob.c - mob_ai_sub_hard_linksearch()の追加 - mob_ai_sub_hard()にリンク処理を修正 - ----------- -//0283 by れあ -・リザレクションの修正 - 0282で生きてるPCにリザがかけれるのに、 - 死んでるPCにはリザがかからなくなって - いたのを修正しました。 - ----------- -//0282 by 胡蝶蘭 - -・スキルの修正と追加実装 - ・キリエエレイソンのエフェクトの問題修正。 - ・リザレクションが生きているPCには掛けられないようになりました - ・ターンアンデッド/攻撃リザレクションがBOSSには効かないようになりました - ・ファイヤーウォールのヒット数制限を実装 - ・ストームガストの実装 - ただし、本鯖と違い凍結は確率のみで、最大ヒット数などが変です。 - - skill.c - skill_castend_nodamage_id()の修正 - ストームガストの処理追加 - -・スキルユニット処理に意地になって安全性チェックを追加。 - (落ちなくなる日は遠い??) - - map.h - MAX_SKILLUNITGROUPを32に増やした - skill.c - skill_status_change_*()にNULLチェック追加 - battle.c - battle_calc_damage()に生存チェック追加 - map.c - map_freeblock_unlock()にロック数チェックを追加 - -・その他修正 - ・PCの最大HPが30000に制限されました。 - ・PCの回復処理が修正されました - ・吹き飛ばし処理の修正 - ・0281のitem_db.txtの変更をitem_db2.txtにも適用 - - (map/) - pc.c - pc_heal(),pc_calcstatus()の修正 - path.c - path_blownpos()の修正 - (db/) - item_db2.txt - 0281の名前修正などを適用 - ----------- -//0280 by 胡蝶蘭 - -・管理者のシステムを作成 - "conf/login_athena.cnf"の作成、管理者パス、GMパスの設定。 - アカウントを作るとき、 - <例> ID: hoge_M Pass: foobar@admin - のように、パスワードの後ろに「@管理者パス」が必要に。 - login_athena.cnfのadmin_passの欄を消せば、今までのようにもつかえます。 - (その場合、admin_passの後ろだけでなく、行ごと消してください) - - (login/) - login.h - 設定ファイルのデフォルト名追加 - login2.c - アカウント作成のところを修正 - 設定ファイルの読み込み追加 - -・@GMコマンド復活 - ただし、「@gm GMパス」として使います。 - GMパスはlogin_athena.cnfのものです。 - 鯖の再起動の必要はありませんが、 - クライアントはリログする必要があります。 - - <注意> - 同じアカウントの全てのキャラはPTから抜けて置いてください。 - また、倉庫のアイテムは全部引き出して置いてください。 - そうしないとゴミデータが残ります。 - - (login/) - login2.c - アカウントID変更処理追加 - (char/) - char2.c - アカウントID変更処理追加 - (map/) - chrif.c/chrif.h - chrif_changegm(),chrif_changedgm()追加 - -・@pvpoffコマンド復活 - clif.c/clif.h - clif_pvpoff()追加 - atcommand.c - @pvpoffの処理追加 - -・空の倉庫データは保存されないように変更 - (char/) - int_storage.c - inter_storage_save()、storage_tostr()を修正 - -・@memoコマンド追加。 - 任意の記憶域にメモを取れるようになりました。 - - atcommand.c - @memoの処理追加 - - ----------- -//0279 by 胡蝶蘭 - -・スキルユニット処理の問題対策 - とりあえずひたすらチェックを入れました。 - - skill.c - skill_unit_timer_sub(),skill_unit_move_sub(), - skill_delunit()にユニットの生存判定を追加。 - skill_unitgrouptickset_search(),skill_unitgrouptickset_delete() - skill_delunitgroup()にNULLポインタチェックを追加。 - -・スキルの追加実装と修正 - テレポート、ワープポータルの実装 - キリエエレイソンをMOBに掛けると落ちるバグ修正 - - (db/) - cast_db.txt - ワープポータルの詠唱時間設定 - (map/) - map.h - struct skill_unit_groupのvalstrをポインタに変更 - clif.c/clif.h - clif_parse_UseSkillMap(),clif_skill_warppoint()、 - clif_parse_Memo(),clif_skill_memo()追加 - skill.c/skill.h - skill_castend_map(),skill_unit_onlimit()の追加 - skill_unit_*系の処理いろいろ追加。 - skill_status_change_start()のキリエの処理修正 - pc.c/pc.h - pc_randomwarp(),pc_memo()追加 - ----------- -//0278 by nabe - -・スキルポイントを振ったときにステータスを更新 - pc.c - pc_skillup()でpc_calc_skilltree()の代わりにpc_calcstatus() -・所持量増加を修正 - pc.c - pc_calcstatus()の所持量増加によるmax_weight増分をskill*1000に - ----------- -//0277 by nabe - -・付属品(カート、鷹、ペコ)の付け外しを改良 - (conf/) - npc_event_rental.txt - 鷹、ペコを付けるスクリプトコマンドを変更 - (map/) - battle.c - battle_addmastery(),battle_calc_weapon_attack()で - ペコペコ騎乗時の槍攻撃力補正を実装 - clif.c - clif_parse_CartOffをclif_parse_RemoveOptionに変更 - pc.c/pc.h - pc_calcstatus()でカート、ペコペコ乗りによる速度変化を計算 - pc_setoption(),pc_setcart()改良 - pc_setfalcon(),pc_setriding()追加 - pc.hにpc_isfalcon(),pc_isriding()マクロ追加 - script.c - buildin_setfalcon() 鷹付加 - buildin_setriding() ペコペコ乗り - ----------- -//0276 by nabe - -・精錬NPC実装 - (conf/) - npc_town_refine.txt - 精錬NPCスクリプトファイル新規追加 - (map/) - pc.c/pc.h - 精錬成功率の表percentrefinery[5][10]を追加 - script.cから呼ばれる関数 - pc_percentrefinery() 精錬成功率 - pc_equipitemindex() 装備品インデックス - を追加 - script.c - buildin_getequipname() 装備名文字列(精錬メニュー用) - buildin_getequipisequiped() 装備チェック - buildin_getequipisenableref() 装備品精錬可能チェック - buildin_getequipisidentify() 装備品鑑定チェック - buildin_getequiprefinerycnt() 装備品精錬度 - buildin_getequipweaponlv() 装備品武器LV - buildin_getequippercentrefinery() 装備品精錬成功率 - buildin_successrefitem() 精錬成功 - buildin_failedrefitem() 精錬失敗 - を追加 - -・スクリプトにWeight,MaxWeightパラメータを追加 - const.txt - Weight,MaxWeightを追加 - -・スクリプトでのキャラ名表示方式を変更 - (conf/) - npc_job_merchant.txt/npc_job_thief.txt/npc_town_kafra.txt - mes "$charaname"; を mes strcharinfo(0); に変更 - (map/) - script.c - buildin_strcharinfo()を追加 - ----------- -//0275 by 胡蝶蘭 - -・MVPの実装 - MVPの判定にはdmglogを使ってます。すなわち与ダメだけが計算対象です。 - 被ダメは考慮されてません。 - 経験値は無条件で入り、確率でさらにアイテムが入ります。 - アイテムは複数手に入ることもあります。 - - clif.c/clif.h - clif_mvp_effect(),clif_mvp_item(),clif_mvp_exp()追加 - mob.c - mob_damage()にMVP処理追加 - -・スキルの追加実装と修正 - ・マグナムブレイク、アローシャワー実装 - ・吹き飛ばし系スキルが一部使用されないバグ修正 - ・ダブルストレイフィングのダメージ計算式修正 - ・武器攻撃系属性付きスキルで属性が反映されない問題修正 - ・場所指定スキルが攻撃しながら詠唱できた問題を修正 - - battle.c - battle_calc_weapon_attack()の該当個所修正&追加 - skill.c - skill_castend_damage_id()に処理追加 - skill_use_pos()に攻撃停止処理追加 - -・カードスキルがカードを外しても使用可能な問題を修正 - pc.c - pc_calc_skilltree()を修正 - -・アイテムドロップ率、exp所得倍率などの調整機能追加 - battle_athena.cnfで調整できる項目が増えました。 - 詳しくはそちらを参照してください。 - - (conf/) - battle_athena.cnf - mvp_hp_rate,item_rate,exp_rate,mvp_item_rate,mvp_exp_rate追加 - (map/) - battle.c/battle.h - 増えた項目を読み込むように処理追加 - mob.c - mob_db.txt読み込み時、データを調整する処理追加 - ----------- -//0274 by 胡蝶蘭 - -・スキルの追加実装 - スキッドトラップ、ランドマイン、ブラストマイン、クレイモアートラップ、 - フリージングトラップ、サンドマン、アンクルスネア - - 睡眠や凍結などの確率は適当です。 - 罠発動時のエフェクトが出ません。ていうか出し方がわかりません。 - わかる人は教えてください。もしくは本鯖で罠発動時の複合化済みの - 生パケットデータでもいいので教えてください。 - - (db/) - skill_db.txt - 属性の修正 - (map/) - skill.c - 該当個所 - battle.c/battle.h - battle_calc_misc_damage()の該当個所 - battle_stopwalking()追加 - clif.c/clif.h - clif_fixpcpos()追加 - clif_parse_WalkToXY()にアンクルで動けなくする処理追加 - mob.c - mob_ai_sub_hard()にアンクルで動けなくする処理追加 - -・装備などのクリティカルボーナスが1/10になっているバグが修正されました - battle.c - battle_calc_weapon_attack()に追加分を計算する処理修正 - -・ブリッツビートの計算式が全然違うバグが修正されました - battle.c - battle_calc_attack()のBF_MISCの処置が間違っていたのを修正 - -・SWとニューマが武器攻撃ならどんなレンジの攻撃でも防いでいた問題を修正 - battle.c - battle_calc_damage()のレンジ判定を修正 - -・オーバートラストとウェポンパーフェクションがPTメンバにもかかるように修正。 - 効果は使用者とPTメンバで違いはありません。 - - skill.c - skill_castend_nodamage_id()の修正。 - ----------- -//0273 by 胡蝶蘭 - -・キャラクターが消失したり幻影が出る問題が修正されました - ・吹き飛ばしスキルを受けると発生していた - ・斜め以外の歩行で発生していた - - map.c - map_foreachinmovearea()の修正。 - skill.c - skill_blown()に表示範囲更新処理を追加。 - mob.c - mob_walk()で歩き終わったときに位置を再送信するように修正 - pc.c - pc_walk()で歩き終わったときに位置を再送信するように修正 - -・スキルの追加実装と修正 - ファイヤーウォール、ファイヤーピラーの実装 - サンクチュアリでのノックバック方向を修正 - - (db/) - skill_db.txt - ファイヤーピラー、ブリッツビートのヒット数修正 - (map/) - skill.c - skill_blown()に対象の向きによるノックバック処理追加 - その他必要な場所修正 - mob.c - mob_walk(),mob_attack()で向きを保存 - pc.c - pc_walk(),pc_attck()で向きを保存 - map.c - map_calc_dir()追加。相対的な方向を求める - - -・クリティカル増加装備が戦闘時に計算されてないバグが修正されました - battle.c - battle_calc_weapon_attack()に追加分を計算する処理追加 - - -・防御ユニット(SW/ニューマ)が敵に影響を及ぼすかどうかを - battle_athena.cnfで制御できるようになりました - デフォルトは「及ぼさない」です。 - - (conf/) - battle_athena.cnf - 項目defunit_not_enemyを追加 - (map/) - battle.c/battle.h - struct Battle_Config に defnotenemyメンバ追加。 - battle_read_config()の処理を修正。 - skill.c - skill_unitsetting()でSW/ニューマの処理を修正 - -・フェンカード装備時、死んでも詠唱が続くバグを修正 - (詠唱終了前に復活すれば魔法が発動する問題も修正になります) - - pc.c - pc_damage()で死亡時skill_castcancel()を呼ぶように修正 - -・敵味方判定処理にバグがあったのを修正 - battle.c - battle_check_target()の修正 - ----------- -//0272 by 胡蝶蘭 - -・スキルの追加実装と修正 - ・セイフティウォール、ニューマが実装されました。 - ・ロードオブバーミリオン発動中に効果範囲外から範囲内に入ってきたとき、 - 敵味方の区別無く攻撃が当たる問題が修正されました。 - ・サンクチュアリの射程が修正されました。 - ・範囲魔法で倒した敵がHP0で残る場合がある問題が修正されました。 - - (db/) - skill_db.txt - セイフティウォールとサンクチュアリの射程を8に変更 - (map/) - skill.c - skill_unit_onplace(),~ondelete(),~onout()などに、 - セイフティウォールとニューマの処理追加。 - skill_unit_move()にターゲットの敵味方判定を追加。 - skill_unit_timer_onplace(),~ondelete()にユニット生存判定を追加. - skill_clear_unitgroup()追加。ユニットグループの全削除をする。 - battle.c - battle_calc_damage()にセイフティウォールとニューマの処理追加。 - map_foreachinarea()など修正 - map.c - map_quit()でskill_clear_unitgroup()を呼ぶように。 - -・スキルの吹き飛ばし処理を実装 - ユピテルサンダー、サンクチュアリ、スピアスタブ、 - ボーリングバッシュ、チャージアローの吹き飛ばし処理実装 - - path.c/map.h - path_blownpos()追加 - battle.c/battle.h - struct Damageにblewcountメンバ追加 - battle_calc_*_damage()でblewcountをセットするように。 - skill.c/skill.h - skill_blown()追加。吹き飛ばし処理。 - skill_attack()でskill_blown()を呼ぶように。 - skill_attack()のflagの吹き飛ばしビットは未使用に。 - -・歩行中のモンスターに攻撃したとき、モンスターにディレイが入るようになりました - (攻撃のモーションの遅延を考えてないのであんまり意味がないかも?) - - (map/) - mob.c/mob.h - stateにMS_DELAYを追加。 - mob_damage(),mob_timer()などの修正 - -・歩行中のモンスターに攻撃したとき、位置がずれる問題の応急処置 - (まだ位置はずれるようです) - - clif.c/clif.h - clif_fixmobpos()を追加 - mob.c - mob_attack()でclif_fixmobpos()を呼ぶように。 - -・その他修正 - pc.c - pc_stop_walking()でpath_lenを初期化するように。 - ----------- -//0271 by れあ - -・PTに関して少しだけ修正 - 公平にしてからキャラを加入させると公平が解除されないバグを修正 - ----------- -//0270 by 胡蝶蘭 - -・スキルの追加実装と修正 - ロードオブバーミリオン、サンクチュアリ、マグヌスエクソシズム - - (db/) - skill_db.txt - マグヌスのヒット数、属性調整 - サンクチュアリの属性調整 - (map/) - map.h - struct map_session_dataの修正 - clif.c/clif.h - clif_skill_setunit(),clif_skill_delunit()、 - clif_getareachar_skillunit(),clif_clearchar_skillunit()追加 - clif_pcoutsight(),clif_pcinsight(),clif_getareachar()修正 - skill.c/skill.h - 忘れるほど多数変更。主にスキルユニット関連部分。 - pc.c - pc_authok()でskillunit,skillunittickを初期化するように。 - pc_walk()でskill_unit_move()を呼ぶように。 - mob.c - mob_spwan()でskillunittickを初期化するように。 - mob_walk()でskill_unit_move()を呼ぶように。 - battle.c/battle.h - battle_calc_magic_attack()修正 - battle_check_target()修正 - map.c - map_foreachobject()など修正 - -・こまかいバグ修正など - ・mobが回復しない問題修正 - - battle.c - battle_damage()修正 - ----------- -//0266 by 胡蝶蘭 - -・魔法計算式の修正 - 魔法倍率をダメージに掛けていたのをMATKにかけるようにしました。 - …こっちが正しいとしていいのかな?違うなら教えてください。 - - battle.c - battle_calc_magic_attack()の修正 - -・スキルの追加実装 - サイト、ルアフ、ロードオブヴァーミリオン - - ロードオブバーミリオンは3回の判定時に詠唱音が鳴ります…。 - clif_skill_damage()のtypeを色々変えてみましたがどうもうまくいきません。 - 直せる人は直してくれるとうれしいです。 - (うーん、ひょっとしたら本来はグラフィックのないスキルユニットを - 設置して、そのユニットのIDでダメージを与えるのかも??) - - (db/) - skill_db.txt - ロードオブバーミリオンのヒット数を3から10に変更。 - (map/) - skill.c - skill_status_change_timer_sub()追加。 - skill_status_change_*()に処理追加。 - -・blockのメモリ解放の安全性の向上 - map_foreachinarea,party_foreachsamemapで回っているときに - blockをチェインから削除すると、うまく回らない可能性がある問題修正。 - さらに、blockをメモリから解放すると危険な問題も修正。 - - ・foreach内で関数を呼ぶ前にblockがチェインから外れてないかチェック。 - ・foreachに入ったときにロックしてメモリから解放されないようにする。 - これはユーザーがfreeじゃなくmap_freeblockによって解放するように - プログラムする必要がある。(ループから呼ばれる可能性のある関数を作る - 場合のことで、普通はfreeでもいちおう動く。) - ・map_foreachinmoveareaについては改良していないが、 - このループでblockを削除することはありえない気がするのでいいとする。 - - これは今後を見越した改良であって、現在の不安定さを直すものではない。 - (現在はforeach内でメモリを解放していない…はずなので。 - ただ、スキルユニットなど一時オブジェクトを多用し始めると効果がある) - - map.c - map_freeblock(),map_freeblock_lock(),~_unlock()追加。 - map_delobject()のfree()をmap_freeblock()に置換。 - map_foreachinareaでロックと安全性チェック。 - party.c - party_foreachsamemap()でロックと安全性チェック - - -・スキルユニット機構実装 - 設置系のスキルのための機構実装。実際のスキルの実装はまだです。 - - skill.c - なんかもう色々追加しました。 - map.c - do_init()でdo_skill_init()を呼ぶように。 - map.h - struct skill_unit,skill_unit_groupなど追加。 - map_session_dataの書き換えなど。 - -・その他細かいところを修正したと思うけど忘れました。 - ----------- -//0264 by nabe - -・$charanameを喋るNPCと話した時、map鯖が落ちることがあるバグを修正しました。 - script.c - replacestr()がおかしかったのを手直ししました。 - ----------- -//0263 by nabe - -・露店開設中にカートアイテムを出し入れできないよう修正 - pc.c - pc_putitemtocart(),pc_getitemfromcart()に、露店判定を追加 - -・露店アイテム購入のチェックを追加 - vending.c - vending_purchasereq()で諸々の条件判定を追加 - ----------- -//0261 by 胡蝶蘭 - -・拡大鏡、イグドラシルの葉が実装されました - スクリプトにitemskillコマンド作成。一時的にスキルが使用できます。 - - (map/) - script.c - buildin_itemskill()の追加など。 - skill.c - アイテムスキルならSPなどを検査&消費しないように修正 - clif.c/clif.h - clif_item_skill()の追加。 - (db/) - item_db.txt/item_db2.txt - スキル使用アイテムのスクリプト修正 - -・パーティスキルの実装 - アンゼルス、マグニフィカート、グロリア、アドレナリンラッシュが - 画面内のパーティ全員に効果を及ぼすようになりました。 - - skill.c - skill_castend_nodamage_id()の該当個所の修正 - party.c - party_foreachsamemap()の修正 - -・スキル関係の修正 - キリエエレイソンが即時発動になっているのを修正。 - ストーンカースでエフェクトが存在しないバグ修正。 - - (db/) - skill_db.txt - キリエエレイソイン修正 - (map/) - skill.c/skill.h - skill_check_condition()追加。スキル使用条件検査の一本化。 - skill_castend_nodamage_id()でストーンカース修正 - -・スクリプトのコードを整理 - get_val()でconst.txtの定数を所得できるように修正。 - - (map/) - script.c - get_val()の修正(const.txtのtype==0の値が所得可能に) - bonus(),bonus2()などの修正。 - (db/) - const.txt - type=1である必要が無いものを0に。 - item_db.txt/item_db.txt - const.txtの変更に伴う修正。 - ----------- -//0260 by 胡蝶蘭 - -・戦闘関係の設定がファイルに書けるになりました - map鯖の第2引数にファイル名が設定されていると、それを使い、 - 設定されてない場合は "conf/battle_athena.cnf"を使います。 - - あと、一応範囲攻撃スキルについて説明。 - 鯖が常にPVPに設定されている場合、パーティメンバじゃないPCにも範囲攻撃が - あたります。嫌な場合はパーティを組むか、常にPVPをoffにして下さい。 - 常にPVPがoffでも、@pvpでpvpフラグを入れた人の間では攻撃が当たります。 - ただし、一度pvpをonにすると、リログするまでonのままなので注意。 - - (conf/) - battle_athena.cnf - 中に説明書いてるので各自好きなように書き換えてください。 - - (map/) - battle.c/battle.h - struct Battle_Configの定義。 - battle_config_read()など追加。 - skill.c - CASTFIX,DELAYFIXの廃止とBattle_Configによる修正の追加。 - atcommand.c - @pvpコマンドでpvpフラグをセットするように。 - (鯖設定の常にPVPがoffの時、両人がpvpをonにしてたら戦闘可能) - map.c/map.h - struct map_session_dataにpvp_flagを追加 - do_init()でbattle_config_read()を読むように。 - -・戦闘関係のコードが少し整理されました - battle.c/battle.h - battle_weapon_attack()追加。 - battle_calc_weapon_attack()の引数変更 - battle_calc_attack()を追加してbattle_calc_*_attack()を一本化。 - skill.c/skill.h - skill_weapon_attack(),~_magic_~(),~_misc_~()の廃止、 - skill_attack()に一本化。 - pc.c/mob.c - 攻撃処理をbattle_weapon_attack()に一本化。 - -・アイテム鑑定スキルを実装 - 商人のスキルの方です。虫眼鏡はまだです。 - - skill.c - スキル処理追加 - pc.c/pc.h - pc_item_identify()追加 - clif.c/clif.h - clif_item_identify_list(),clif_item_identified()追加 - clif_parse_ItemIdentify()追加 - -・スキルデータベースのコメント修正 - (db/) - skill_db.txt - 商人のスキルのコメントがずれていたのを修正 - ----------- -//0259 by れあ -・mob_db.txtの修正 - 亀島モンスターやBOSSのステータス調整 - 亀島モンスに適当にドロップを付けました。 - 本鯖と異なる物を落とす場合もあります。 - ----------- -//0258 by 胡蝶蘭 - -・パーティで一度公平にしたら各自所得に戻せないバグ修正 - (char/) - int_party.c - mapif_parse_PartyChangeOption()の判定修正 - -・スキルの追加実装(主に範囲攻撃系) - ナパームビート(分散対応)、ファイヤーボール、 - サンダーストーム、ヘブンズドライブ、 - ブリッツビート(自動鷹込み)、スチールクロウ - スキンテンパリング - - (db/) - skill_db.txt/skill_tree.txt - 一部修正 - (map/) - battle.c/battle.h - battle_check_target()を追加。対象になるかを検討する。 - battle_calc_magic_damage()の引数変更。ダメージ分散処理追加。 - battle_calc_misc_damage()追加。 - battle_calc_weapon_damage()修正。 - clif.c/clif.h - clif_skill_damage(),clif_skill_damage2()の引数変更。 - clif_skill_poseffect()追加。 - skill.c/skill.h - skill_weapon_attack(),skill_magic_attack()に微妙に処理を纏めた. - skill_area_sub()追加。範囲スキル用。 - skill_area_sub_count()追加。skill_area_sub()用、敵カウント。 - skill_castend_damage_id()修正。引数と処理を追加。 - skill_castend_nodamage_id()修正。引数と処理を追加。 - skill_misc_attack()追加。 - skill_additional_effect()修正(自動鷹) - skill_castend_pos()修正。 - skill_castend_pos2()追加。 - -・弓で攻撃したとき計算にDEXでなくSTRが使われる問題を修正。 - battle.c - battle_calc_weapon_damage()修正。 - ----------- -//0257 by 胡蝶蘭 - -・item_db.txtの職業フラグと、カードの装備個所フラグを修正 - 装備品はI-Athenaのデータを参考にして機械的にコンバートさせました。 - I-Athena側にない装備品は、あきらかに変なのは修正しましたが、 - 知らないものが多すぎて、ほとんど放置です。 - カードは、武器用カードの装備個所が0になってるのを2(左手)に修正。 - 両手武器の場合は別に判定してるので両手武器も問題ないはず。 - - (db/) - item_db.txt/item_db2.txt - 該当個所修正 - -・カード追加実装 - スタンなどの追加効果、それらへの耐性系統、オークヒーローカード実装 - - (db/) - item_db.txt/item_db2.txt - スクリプトの修正 - (map/) - map.h - struct map_session_dataにaddeffなどのメンバを追加 - pc.c - pc_calcstatus()、pc_bonus2()の修正 - pc_attack()でskill_additional_effct()を呼ぶように。 - skill.c/skill.h - skill_additional_effect()でカードによる判定追加 - skill_status_change_start()で耐性を付けた。 - battle.c - battle_calc_weapon_attack()でオークヒーローカード - (クリティカル耐性)の処理を追加 - -・回避判定の修正 - 攻撃者がPCの場合、最大命中率95%制限をなしにしました。 - battle.c - battle_calc_weapon_attack()を修正 - - -・完全回避を実装 - へんてこな処理してます&計算式適当です。 - - battle.c - battle_calc_weapon_attack()に処理追加。 - -・倉庫を開いたままログアウトしたときmap鯖内では開きっぱなしになってる問題を修正 - storage.c - storage_storage_quitsave()を修正 - -・@item,@monster,@produceで名前指定できるように変更 - 英語名、日本語名どちらでもOK。英語の場合は大文字小文字区別しません。 - - atcommand.c - 該当個所修正 - itemdb.c/itemdb.h - itemdb_searchname(),itemdb_searchname_sub()追加 - mob.c/mob.h - mobdb_searchname()追加 - -・@refineで上げる数値を指定できるように変更 - atcommand.c - 該当個所修正 - -・@produceによる製造時のエフェクトを正しいものに修正 - clif.c/clif.h - clif_produceeffect()追加 - atcommand.c - 該当個所修正 - -・露店スキル使用時の処理を少し修正 - skill.c - skill_castend_id()でなく、skill_castend_nodamage_id()で - 露店開設を呼ぶようにした。 - -・stricmpの変わりにstrcasecmpを使うようにした - (_WIN32か__EMX__が定義されているとstricmpを使います) - - (char/) - int_party.c - (map/) - itemdb.c/mob.c - マクロ定義の修正など - -・スキルを少し修正 - グリムトゥースがハイディングで使えない問題修正 - 武器研究の命中修正を実装 - - skill.c - skill_use_id()の修正 - pc.c - pc_calcstatus()で武器研究に従って命中修正 - ----------- -//0256 by nabe - -・露店アイテム購入のバグ修正 - clif.c - clif_vendinglist()で売り切れたアイテムは表示しないように - ----------- -//0255 by nabe - -・露店アイテム購入のバグ修正 - vending.c - vending_purchasereq()でzeny,weight部分修正 - ----------- -//0254 by nabe - -・露店を実装 - vending.c/vending.h - 新規追加。露店メイン処理 - skill.c - skill_castend_id()に露店開設スキル処理を追加 - clif.h/clif.h - 露店関連パケット処理を追加 - map.h - struct map_session_dataに、 - int vender_id; - int vend_num; - char message[80]; - struct vending vending[12]; - を追加 - ----------- -//0253 by 胡蝶蘭 - -・stricmp未定義エラーがでる環境用の修正 - エラーが出た場合、int_party.cの最初のマクロ定義のコメント化のうち、 - どちらかを外してやり直してみると、うまくいくかも。 - 最悪、下を有効にしたらうまくいくはず。(大文字小文字を区別するようになります) - - (char/) - int_party.c - コメント化済みのマクロ定義追加 - ----------- -//0252 by 胡蝶蘭 - -・カードの一部実装 - (ステータス変化全般、武器属性、スキルはすでに実装済み) - 防具属性、詠唱時間変化、属性攻撃耐性、種族耐性、種族追加ダメージ、 - 属性追加ダメージ、サイズ追加ダメージ、MAXHP、MAXSP増減、使用SP変化系、 - フェン、ドレイク、ホルン、深淵の騎士、黄金蟲、オシリスカードを実装 - - (db/) - const.txt - bonus用の定数追加、bonus2の定数も追加 - item_db.txt/item_db2.txt - カードのスクリプト追加 - (map/) - map.h - struct map_session_dataにhprateなど多数メンバ追加 - script.c - bonus2コマンド追加 - buildin_bonus2()追加 - pc.c/pc.h - pc_bonus2()追加 - pc_bonus()の処理追加 - pc_calcstatus()で各種追加メンバの初期化を行うようにし、 - hprateやsprateに従いmax_hp,max_spの調整もするように変更。 - pc_makesavestatus()でオシリスカード修正 - skill.c - skill_castfix()でcastrateに従い、詠唱時間を調整。 - skill_castend_id()でdsprateに従い、使用SPを調整。 - skill_castend_nodamage_id()でカード修正を追加 - battle.c - battle_calc_weapon_attack()でカード修正を追加 - battle_calc_magic_attack()でカード修正を追加 - battle_damage()でフェンカード修正を追加 - -・ステータス割り振りの表示上の問題修正 - STRを上げてもATKが変わらない問題、INTを上げてもMATKが変わらない問題修正 - - map.h - struct map_session_dataにmatk1,matk2メンバ追加 - pc.c - pc_calcstatus()の修正 - clif.c - clif_initialstatus()の修正 - battle.c - battle_calc_magic_attack()の修正 - - ----------- -//0251 by nabe - -・0250のバグ修正など - カートを付けずにログインまたはマップ移動した後にカートを付けると、 - カートの中身が2倍の量に表示されてしまっていたのを修正。 - カートのアイテム数を更新するように修正。 - pc.h/pc.c - pc_iscarton()マクロを追加 - pc_cart_additem(),pc_cart_delitem()にそれぞれ - sd->cart_num++;とsd->cart_num--;処理を追加 - clif.c - clif_parse_LoadEndAck()で、 - カートを付けているときのみカート情報を送信するようにした - ----------- -//0250 by nabe - -・カートOFF、チェンジカート実装。 - (map/) - pc.c/pc.h - pc_setcart()を追加 - script.c - buildin_setcart()を追加 - スクリプトコマンド「setcart;」でカートがつく - clif.c/clif.h - clif_parse_CartOff()追加。(カートをはずす) - clif_parse_ChangeCart()追加。(チェンジカートのカート選択) - (conf/) - npc_town_kafra.txt - カートサービスを「setcart;」に置換 - - ----------- -//0249 by 胡蝶蘭 - -・パーティのデータベースの矛盾を出来るだけ抑えるように。 - 複数パーティに所属してるデータの検査、追加に失敗したときに脱退など。 - - (char/) - int_party.c - party_check_conflict(),party_check_conflict_sub(), - mapif_parse_PartyCheck()追加 - inter.c - パケット長リストに0x3028追加 - INTER鯖パケット.txt - パケット0x3028追加 - (map/) - party.c/party.h - party_check_conflict()追加。 - party_invite()で同アカウント所属チェックを行うように。 - party_member_added(),party_send_movemap()で - party_check_conflict()を呼ぶように。 - intif.c/intif.h - intif_party_checkconflict()追加 - -・パーティの座標、HP通知を実装 - 変化があれば1秒に一回送信。 - - map.h - struct map_session_dataにparty_x,~_y,~_hpの3メンバ追加 - party.c/party.h - party_send_xyhp_timer_sub(),party_send_xyhp_timer(), - party_send_xy_clear(),party_send_hp_check()追加。 - party_recv_movemap()でsd->party_*を初期化するように。 - clif.c/clif.h - clif_sendのPARTY*フラグを有効に。 - (PARTY,PARTY_SAMEMAP,PARTY_AREA,PARTY*_WOSの6種) - clif_party_xy(),clif_party_hp()追加。 - pc.c/pc.h - pc_authok()でsd->party_*を初期化するように。 - pc_walk()でパーティメンバが視界内に入ってきたときに - party_hpを初期化するように。 - -・パーティのexp公平分配を実装 - party.c/party.h - party_share_exp()追加 - mob.c/mob.h - mob_damage()で公平分配処理追加 - -・スキルの修正と追加実装 - バッシュ、ピアースの命中率修正実装 - ピアースのサイズによる回数変動実装(プレイヤーは中型と仮定) - バッシュ、ソニックブロウのスタン効果実装 - ストーンカース、フロストダイバ、インベナム、 - アスペルシオ、エンチャントポイズン、レックスデビーナ実装 - - skill.c - skill_additional_effect()追加 - skill_castend_damage_id()該当個所修正 - skill_castend_nodamage_id()該当個所修正 - skill_use_id(),skill_use_pos()でスキルが使用できないときは - 何もしないように修正。 - battle.c - battle_calc_weapon_attack()の該当個所修正 - battle_get_dmotion(),battle_get_attack_element()修正 - clif.c - clif_mob007b(),clif_mob0078でoptionなどを送るように修正 - pc.c - pc_attack(),pc_walktoxy()で行動不可能なときは何もしないように。 - mob.c - mob_stopattack()修正 - mob_ai_sub_hard()で行動不能なときは何もしないように。 - -・攻撃射程の判定追加 - 相手が移動して届かないときは、移動パケットを送信 - - clif.c/clif.h - clif_movetoattack()追加 - pc.c - pc_attack()で射程判定、届かないならclif_movetoattack()を呼ぶ。 - ----------- -//0248 by nabe - -・パーティ作成時に既にパーティに所属していた場合の処理を追加 - party.c - party_create()に、既にパーティに所属していた場合 - clif_party_created(sd,2)を追加 - -・ディスカウント、オーバーチャージを計算 - pc.c - pc_modifybuyvalue()、pc_modifysellvalue()で値段を計算 - - ----------- -//0247 by 胡蝶蘭 - -・パーティ実装 - 公平分配は設定しても実際には公平分配されてない。 - パーティスキルはまだ自分にしかかからない - - (char/) - int_party.c/int_party.h - まともに実装 - inter.c - パケット長リスト追加 - INTER鯖パケット.txt - パーティのパケット追加 - (map/) - party.c/party.h - 新規追加 - map.c/map.h - struct map_session_dataにparty_sendedメンバ追加 - do_init()でdo_party_init()を呼ぶ - map_quit()でparty_send_logout()を呼ぶ - intif.c/intif.h - パーティ関連の部分追加 - clif.c/clif.h - パーティ関連の部分追加 - clif_parse_LoadEndAck()でparty_send_movemap()を呼び出す - pc.c - pc_authok()でparty_request_info()を呼ぶようにし、 - party_sendedを初期化するように。 - -・詠唱妨害されたとき画面上で詠唱をやめるように修正 - (map/) - skill.c - skill_castcancel()で詠唱中止パケ(合ってるのかな?)を送信 - -・超遠距離攻撃だと敵が反撃してこない問題を修正 - (map/) - map.h - struct mob_dataにmin_chaseメンバ追加(最低追跡距離) - mob.c - mob_attack()でmin_chaseを13に初期化する - mob_walk()でmin_chaseが13より大きいなら少しずつ引いていく - mob_ai_sub_hard()でmin_chaseにより追跡を判断、 - 攻撃を受けた時にmin_chaseを彼我距離+13に設定 - ----------- -//0246 by 胡蝶蘭 - -・カート実装 - map.h - struct map_session_dataにcart_weightなど4つメンバ追加 - pc.c/pc.h - pc_cart_additem(),pc_cart_delitem(), - pc_cart_putitemtocart(),pc_cart_getitemfromcart()追加 - pc_calcstatus()でカート重量や個数などの情報を計算 - clif.c/clif.h - clif_cart_itemlist(),clif_cart_equiplist(), - clif_cart_additem(),clif_cart_delitem(), - clif_parse_PutItemToCart(),clif_parse_GetItemFromCart()追加 - clif_parse_LoadEndAck()でカート情報、内容送信 - clif_updatestatus()でSP_CARTINFOでカート情報を送れるように - clif_parse_MoveFromKafraToCart(),~ToKafraFromCart()追加 - storage.c/storage.h - storage_additem(),storage_delitem()追加 - storage_storageadditemfromcart,~getitemtocart()追加 - storage_storageadd(),storage_storageget()で、 - storage_additem(),storage_delitem()を呼ぶように変更 - -・スキル詠唱ディレイなど実装 - clif.c - clif_parse_WalkToXY()にskilltimerによる移動可否を追加 - clif_parse_UseSkillToId(),clif_parse_UseSkillToPos()に - canmove_tickによる攻撃可否追加 - skill.c/skill.h - skill_castcancel()を追加 - skill_use_id(),skill_use_pos()でディレイ時間計算および、 - canmove_tickの設定 - battle.c - battle_damage()でskill_castcancel()の呼び出し追加 - -・0245のアイテムデータベース修正の通常価格版用意 - (db/) - item_db.txt - item_db2.txtに前のitem_db.txtの価格情報をマージしただけです。 - ----------- -//0245 by れあ - また例によって、相場修正版のみです。 -・item_db2.txtの修正 - 亀島新装備の効果を実装しました。 - ウィザードが杖を装備できないのを修正 - ウィザードがマジシャンハット、とんがり帽を - 装備できないのを修正 ----------- -//0244 by れあ -・mob_db.txtの修正 - 亀島モンスターのデータをいれました。 - ただ、間違ってる部分がかなりあります。 - Speed,Delayは適当です。 - また、わからないのは韓国版のデータなので - Mdefとか異常に高い気も。 ----------- -//0242 by 胡蝶蘭 - -・取引関連の変更と修正 - 取引に使う変数をmmo_charstatusからmap_session_dataに移動しました - - (common/) - mmo.h - struct mmo_charstatusから取引関係のメンバ削除 - (map/) - map.h - struct map_session_dataに取引関係のメンバ追加 - trade.c - 構造体の変更にあわせて修正 - map.c - map_quit()で取引中ならキャンセルするようにした - -・カードの組み合わせ実装 - pc.c/pc.h - pc_insert_card()でカードを実際に挿入する - clif.c/clif.h - clif_parse_UseCard(),clif_parse_InsertCard()追加 - clif_use_card(),clif_insert_card()追加 - -・一部のカード効果実装 - スキル習得カード、ステータスボーナスカードなど。 - - (map/) - map.h - struct map_session_dataに装備カード検索用の変数追加 - pc.c/pc.h - pc_calcstatus()でカードの処理追加 - あるIDのカードが装備済みか検索するための関数、 - pc_equip_card(),pc_equip_wcard(),pc_equip_dcard()を用意 - -・重量オーバー/鷹/騎乗アイコンの表示 - (map/) - pc.c/pc.h - pc_checkweighticon()追加、重量のアイコン処理 - clif.c - clif_updatestatus()で重量送信時にpc_checkweighticon()の実行 - clif_changeoption()で鷹と騎乗のアイコン処理 - -・0241のアイテムデータベース修正の通常価格版用意 - (db/) - item_db.txt - item_db2.txtに前のitem_db.txtの価格情報をマージしただけです。 - - ----------- -//0241 by れあ -・アイテムデータベースの修正 - 新頭装備のグラフィックが異なるのを修正 - 装備の効果の実装 - 上段・中段が間違ってたのを少し修正 - 速報版ってことで間違え多いかも。 - テストもあまりしてません。 - あと、相場調整版しか用意してません。 - - item_db2.txt - 亀島にあわせて調整 - ----------- -//0240 by nabe - -・取引を実装しました。 - (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; - を追加 - (map/) - clif.c,clif.h - clif_traderequest() : 0xe5(取り引き要請受け) - clif_tradestart() : 0xe7(取り引き要求応答) - clif_tradeadditem() : 0xe9(相手方からのアイテム追加) - clif_tradeitemok() : 0xea(アイテム追加成功) - clif_tradedeal_lock() : 0xec(ok押し) - clif_tradecancelled() : 0xee(取り引きキャンセル) - clif_tradecompleted() : 0xf0(取り引き完了) - を追加。 - trade.c,trade.h - trade_traderequest() : 取引要請を相手に送る - trade_tradeack() : 取引要請 - trade_tradeadditem() : アイテム追加 - trade_tradeok() : アイテム追加完了(ok押し) - trade_tradecancel() : 取引キャンセル - trade_tradecommit() : 取引許諾(trade押し) - を実装。それぞれclif.c::clif_parse_Trade*から呼ばれる。 - - ----------- -//0238 by れあ - -・速度変更に関して少し修正 - atcommand.c - 速度変更の部分を少し修正 - これで一応動くみたい? - pc.c - ついでにですが - 速度上昇で歩行速度が上がるようにした。 - 一応動くみたいですが適当なので - おかしなところがあればお願いします。 - ----------- -//0236 by nabe - -・スクリプトでmenuで飛んだ先で直ぐmenuを書くと誤動作するバグを修正しました。 - script.c - goto動作の後のRERUNLINEに対処するため、 - goto,menuで飛んだ後には、st.state==GOTOでrerun_posを更新。 - - ----------- -//0233 by nabe - -・アイテムを装備する際の装備判定を追加しました。 - pc.c - pc_equipitem()に装備判定(性別判定、装備LV判定、職業判定)追加 - -・重量判定スクリプトコマンドを追加しました。 - if (checkweight(アイテムID,アイテム数量)) - でそのアイテム×数量を取得できるかどうか判定できます。 - script.c - buildin_checkweight()を追加 - -・スクリプト詰め合わせをathena dev-2.1.1用に移植しました。 - map_athena1.cnf - npc_event_*.txt イベントNPC - npc_job_*.txt 転職NPC - npc_mob_job.txt 転職用モンスター - npc_town_*.txt 町NPC - - ----------- -//0232 by 胡蝶蘭 - -・装備ボーナスが実装されました - ボーナスに使うスクリプト(bonus,skill)を実装 - スクリプトはI-Athenaのデータを使ってコンバートしました。 - (まだカードには対応していません) - - (common/) - mmo.h - struct skillにflagメンバ追加(カードスキルかどうか) - (map/) - map.h - struct map_session_dataにatk_eleなどのメンバ追加 - enumでSP_ATKELEMENTなど追加 - pc.c - pc_bonus()の実装、pc_skill()追加 - script.c - buildin_skill()の追加 - buildin_bonus()の修正(const.txtの定数が使えるように) - clif.c - clif_skillinfoblock()の修正(カードスキルは上げられない) - (db/) - const.txt - bonusに使うための定数追加 - item_db.txt - 標準のデータに装備スクリプトを追加したもの - item_db2.txt - 0213で相場調整されたデータに装備スクリプトを追加したもの - -・詠唱関係のバグが修正されました - (map/) - skill.c - skill_use_id(),skill_use_pos()を修正 - (db/) - cast_db.txt - 少し追加(ブリッツビートなど) - -・攻撃属性が適用されるようになりました -・星のかけらの修正が適用されるようになりました - map.h - struct map_session_dataにstarメンバ追加 - pc.c - pc_calcstatus()で属性初期化 - battle.c - battle_get_element(),battle_get_attack_element()修正 - battle_calc_weapon_damage()の該当個所修正 - -・杖装備時にMATK+15%が適用されるようになりました - battle.c - battle_calc_magic_damage()の該当個所修正 - -・製造武器のキャラクター名が正しく表示されるようになりました - - 原理としては、map鯖内のキャラクタ名データベースを検索して、 - 存在すれば即返信、存在しなければchar鯖に解決要求を出す。 - このとき、名前を要求してきたクライアントのIDをデータベースに登録する。 - char鯖から名前データがくると、対応するデータベースに名前をセットし、 - 要求してきたクライアントに名前を返信する。 - 未解決の同じキャラID解決を複数のクライアントが要求してきた場合、 - 最後に要求してきたクライアントにしか返信しないが、 - 返信されなかったクライアントは数秒後に再び解決要求を送ってくる - (そしてそのときはmap鯖から即返信される)ので大きな問題はない。 - - パケット0x2b08,0x2b09でmap鯖とchar鯖が通信してます。 - - (char/) - char.h - UNKNOWN_CHAR_NAME定義(キャラデータが無いときに返される名前) - char2.c - parse_frommap()にパケット0x2b08の処理を追加 - - (map/) - chrif.c/chif.h - chrif_searchcharid()追加 - chrif_parse()で0x2b09の処理追加 - map.c - データベース charid_db 宣言 - struct charid2nick宣言。nickは名前、 - req_idは0で名前解決済み、0以外で未解決で解決待ちのブロックID - map_addchariddb()追加。データベースへ名前登録、要求に返信。 - map_reqchariddb()追加。要求があったことをデータベースへ追加。 - map_charid2nick()でデータベースの検索 - do_init()で charid_db の初期化を追加 - clif.c/clif.h - clif_parse_SolveCharName(),clif_solved_charname()追加 - - ----------- -//0231 by nabe - -・スクリプトで mes "$charaname"; 等と書くとキャラの名前をしゃべる機能を追加。 - script.c - buildin_mes()内で - mes内部の$charanameをキャラの名前に置換する処理を追加。 - #同様にして変数の値などをmes内部で表示するようにすることも - #できますが、これについては未実装です・・・。 - #とりあえず - # mes Global_Val; - #のように直接書くことで対処してください。 - -・敵に攻撃されたときにmap鯖が落ちることがあるのを修正。 - battle.c - battle_calc_weapon_attack()の - ディバインプロテクションのスキルチェック部分、 - pc_checkskill(sd,22)を、 - pc_checkskill(tsd,22)に。 - ----------- -//0230 by nabe - -・回避率増加スキルをステータスに反映。 - pc.c - 0228でのpc_calcstatus()の回避率増加分を元に戻しfleeを増加。 - battle.c - battle_calc_weapon_attack()のhitrate計算で回避率保証を計算。 -・グローバル変数を実装。 -  '@'もしくは'l'で始まらない変数名は、全てグローバル変数とみなされます。 - mmo.h - struct mmo_charstatus に - int global_reg_num; - struct global_reg global_reg[GLOBAL_REG_NUM]; - を追加。 - pc.c - pc_readglobalreg(),pc_setglobalreg()を追加。 - script.c - get_val(),buildin_input(),buildin_set()に - グローバル変数のための処理を追加。 - char2.c - mmo_char_tostr(),mmo_char_fromstr()に - グローバル変数のための処理を追加。 - ----------- -//0229 by 胡蝶蘭 - -・一部スキルの実装/修正 - ディバインプロテクション、デーモンベイン、ビーストベイン実装 - エナジーコート修正(魔法による攻撃にはスキルが働かないように修正) - 武器攻撃系スキル修正(エフェクトを通常攻撃からスキルに変更) - - battle.c - battle_addmastery()でベイン系追加 - battle_calc_damage()でエナジーコート修正 - skill.c - skill_castend_damage_id()の武器攻撃系スキルの部分を修正 - -・敵攻撃計算をPCのものと一本化 - これでPCvsPC、PCvsMOB、MOBvsPC、MOBvsMOB(!?)を1つの関数で計算できます - - battle.c/battle.h - battle_calc_weapon_attack()を修正 - battle_calc_weapon_attack_pc(),~mob()を削除 - mob.c - mob_attack()で計算にbattle_calc_weapon_attack()を使うように修正 - -・詠唱時間データがない場合のデフォルトの詠唱時間を0に変更 - 今までは1秒にしてましたが、バッシュとかがおかしくなるので。 - (バッシュとかのデータを用意すればこうしなくても直るんですが) - - pc.c - pc_readdb()で1000msをセットするのを止めた - -・遠距離攻撃してこないバグ、その他を修正 - mob.c - mob_attack()の射程を修正し忘れていた - mob_ai_sub_hard()で射程距離外の時、無移動の敵は - ターゲットを外すようにした - - ----------- -//0228 by nabe - -・ダブルアタックのSkillIDを修正。 - battle.c - battle_calc_weapon_attack_pc()で - pc_checkskill(sd,49) -> pc_checkskill(sd,48)に。 -・回避率向上を陽に表さない - pc.c - pc_calcstatus()でのfleeの回避率向上分を削除し、 - mob.c - mob_attack()のhitrate計算で回避率向上を計算。 -・盗蟲、盗蟲雌、盗蟲雄を正常化。 - npc_monster3J.txt - mob_db.txtに合わせて、たぶん正しいと思われるIDに修正。 - 盗蟲 1006 -> 1051 - 盗蟲雌 1017 -> 1053 - 盗蟲雄 1021 -> 1054 -・デバッグメッセージの消し忘れ(?)を削除。 - pc.c - printf("pc.c 63 clif_clearchar_area\n");をコメントアウト - ----------- -//0227 by 胡蝶蘭 - -・一部のスキル効果が実装されました - HP回復向上、SP回復向上、マグニフィカート、 - ハイディング、クローキング、死んだふり、応急手当 - - map.h - struct map_session_data に inchealtick メンバ追加 - pc.c - pc_spheal()でマグニフィカート処理追加 - pc_natual_heal_sub()で回復向上スキル処理追加 - pc_authok()でinchealtickを初期化するように変更 - pc_walk()でincheaktickを再設定するように変更 - pc_walk()でクローキングの終了条件を調査するように変更 - pc_walktoxy()で状態によって移動不可能にした - skill.c/skill.h - skill_status_change_start(),~timer(),~end()に処理追加 - skill_check_cloaking()追加、クローキングの終了条件を検査 - battle.c/battle.h - battle_stopattack()追加 - battle_calc_weapon_attack()で攻撃を止める処理追加 - mob.c - mob_ai_sub_hard()で攻撃を止める処理追加 - -・通常攻撃処理、対MOB、対PCを共用に。 - pc.c - pc_attack_mob(),pc_attack_pc()削除 - pc_attack()に攻撃処理追加 - -・モンスターの行動の一部実装 - アクティヴ、無反応、移動しない、遠距離攻撃一部 - - mob.c - mob_ai_sub_hard()に行動追加 - mob_ai_sub_hard_activesearch()追加、近くのPCへの策敵 - -・オーバートラストの増加倍率が100倍になっているバグが修正されました - battle.c - battle_calc_weapon_attack()で、該当個所を修正 - - ----------- -//0226 by 胡蝶蘭 - -やっぱりテストはあんまりしていません - -・一部のスキル効果が実装されました - 速度増加、エンジェラス、キュアー - インポシティオマヌス、サフラギウム、リカバリー、グロリア - ふくろうの目、ワシの目、集中力向上、回避率向上、解毒 - 所持量増加、ラウドボイス、アドレナリンラッシュ、オーバートラスト - ウェポンパーフェクション、マキシマイズパワー、2HQ - - (map/) - map.h - struct map_session_dataにwatk2,def2など追加 - pc.c - pc_calcstatus()にスキル修正追加 - atk2なども送信するように変更 - battle.c/battle.h - battle_get_def2()など多数追加 - battle_calc_weapon_damage()で敵減算防御の所得を - battle_get_def2()に変更 - battle_calc_magic_damage()で敵減算魔法防御の所得を - battle_get_mdef2()に変更 - battle_calc_weapon_damage()でスキル修正を追加 - skill.c/skill.h - skill_use_nodamage_id()の該当個所追加 - skill_status_change_start()の該当個所追加 - clif.c - clif_updatestatus()のatk2などの処理追加 - clif_initialstatus()でatk2などの扱い変更、aspdなど送信追加 - -・精錬ダメージ修正/精錬防御修正が適用されました - (map/) - pc.c - pc_calcstatus()でwatk2とdefの追加計算追加 - battle.c - battle_calc_weapon_damage()でwatk2をダメージに追加 - -・inter鯖のパケット解析部の致命的な問題が修正されました - TCP/IPプログラムでやってはいけないことをそのままやってました(汗 - inter鯖のパケット長データをinter.cに持つように修正されました。 - - (char/) - inter.c/inter.h - パケット長データ inter_*_packet_length[] を追加 - パケット長チェック inter_check_length() を追加 - mapif_parse_*()でRFIFOSKIPをなしに変更 - int_storage.c/int_storage.h - mapif_parse_*()でRFIFOSKIPをなしに変更 - int_party.c/int_guild.c - 仕様変更に対応させた変更 - INTER鯖パケット.txt - パケット長リスト追加 - -・ちょっとした修正 - (char/) - inter.h - inter_cfgNameを"conf/inter_athena.cnf"に修正 - char2.c - char.exe第2引数省略時、inter_cfgNameを使うように修正 - (db/) - cast_db.txt - ホーリーライトの詠唱時間追加(ディレイは適当) - 詳しい人追加求む - ----------- -//0225 by 胡蝶蘭 - -なんかかなり弄りましたが相変わらずテストはあんまりしてません。 - -・スキル使用時の変数を変更 - よく見たら最初から用意されてましたね。 - - map.h - struct map_session_dataのcast_*を削除 - skill.c - cast_*の変数をskill*に変更。 - -・ステータス異常スキルの処理を追加(効果は未実装) - 見かけ上、ステータス異常に掛かったりとかだけ。 - 効果はまだなし。 - - skill.c/skill.h - skill_status_change_start(),~end(),~timer(),~clear()追加。 - それぞれステータス異常の開始、終了、タイマ処理、全消去。 - map.c/map.h - map_quit()でskill_status_change_clear()を呼ぶようにした。 - struct map_session_dataにsc_data,sc_count追加。 - struct mob_dataにsc_data,sc_count,option,opt1,opt2追加。 - pc.c - pc_authok()でsc_data,sc_countを初期化するようにした。 - pc_setoptionでclif_changeoption()の引数変更。 - pc_damage()で死亡時にskill_status_change_clear()を呼ぶように。 - mob.c - mob_spawn()でsc_data,sc_countを初期化するようにした。 - mob_attack()でbattle_calc_damage()を呼ぶようにした。 - mob_damage()で死亡時にskill_status_change_clear()を呼ぶように。 - battle.c/battle.h - battle_get_*()たくさん追加。 - battle_calc_damage()追加。最終的なダメージ計算用。 - battle_calc_magic_attack(),battle_calc_weapon_attack()で - battle_calc_damage()を呼ぶようにした。 - clif.h/clif.c - clif_status_change()追加。ステータス異常アイコン表示用。 - clif_changeoption()の引数変更。 - atcommand.c - clif_changeoption()を呼んでいる2ヶ所で引数変更。 - @dieでskill_status_change_clear()を呼ぶように。 - -・マグヌスエクソシズムの習得条件が間違っているのを修正。 - db/skill_tree.txt - 該当個所修正。(レックスエーテルナの必要Lvを1に) - -・アクティブな敵は攻撃するとき時々ターゲットが変わるようになりました - mob.c - mob_ai_sub_hard()の攻撃されたか確認する部分に - アクティブなら25%の確率でターゲットが変わるように変更。 - -・一部のスキル効果が実装されました - キリエエレイソン、エナジーコート、レックスエーテルナ、 - ホーリーライト、リザレクション、ターンアンデッド、モンスター情報 - - skill.c/skill.h - skill_castend_nodamage_id()にスキルの処理を追加。 - skill_castend_*_id()の引数を変更 - battle.c - battle_calc_damage()にスキルの処理を追加。 - battle_damage(),battle_heal()の引数変更 - battle_calc_weapon_damage(),battle_calc_magic_damage()引数変更 - clif.c/clif.h - clif_skill_estimation()追加。モンスター情報送信用 - pc.c - battle_calc_weapon_damage()呼び出しの引数変更 - -・storage.txtが無い場合inter鯖が強制終了する仕様を変更しました - (char/) - int_storage.c - inter_storage_init()でファイルが読めないとexitしてたのを修正 - - ----------- -//0224 -・2-2次職のスキルをツリーに追加しました(実装はまだです) - (db/) - skill_db.txt - skill_tree.txt - - ----------- -//0223 by 胡蝶蘭 -・カプラ倉庫をinter鯖に対応させました - いままでのstorage.txtはそのまま使えます。 - inter鯖用の設定ファイルとしてconf/inter_athena.cnfを使います。 - (設定ファイルはchar.exeの第2引数で他のファイルを指定できます) - - カプラ倉庫のinter鯖実装の概要 - - inter鯖はstorage.txtの全データを持つ。map鯖はアカウントが要求するまで - そのアカウントの倉庫データを持たない。クライアントから倉庫を開く要求が - あったとき、map鯖は対応するアカウントの倉庫データをinter鯖に要求する。 - inter鯖からデータが届くとクライアントに倉庫データを送る。 - 倉庫の出し入れはクライアントとmap鯖間の通信だけで行われる。 - クライアントが倉庫を閉じるか終了すると、map鯖は該当アカウントの - 倉庫データをinter鯖に送る。このときinter鯖の応答を待たずにクライアントに - 倉庫クローズを送る。inter鯖は倉庫データを受け取ると、 - 全員分のデータをファイルに保存して、map鯖に成功ステータスを返す。 - map鯖は成功ステータスを無視する。(デバッグ用に画面に出力するだけ) - inter鯖終了時にも倉庫データをファイルに保存する。 - - map鯖でaccount2storageで新しい倉庫データを作るとき、 - すでに閉じられている倉庫データのメモリを使いまわしたほうがメモリが - 節約できるかも?(これは実装していません) - - (common/) - mmo.h - struct storage を map/storage.h から移動。 - inter鯖とmap鯖両方で使用するため。 - (char/) - char2.c - do_final()を作成、終了時にmmo_char_sync()以外にinter_save()を - 呼ぶようにした(これでinter_*_save()は全部呼ばれます) - inter_init()をchar.exeの第2引数もしくは"conf/inter.cnf"で - 呼ぶようにした(athena.shにinter鯖コンフィグファイルを指定できます) - inter.c/inter.h - inter_storage_init(),inter_storage_save(), - inter_storage_parse_frommap()を呼ぶように。 - inter_init()にコンフィグファイル名の引数を付けた。 - inter_config_read()追加、コンフィグファイルから - 倉庫とパーティー、ギルドのファイル名を読み込みます。 - int_storage.c/int_storage.h - 新規追加。倉庫部分のinter鯖機能。 - int_party.h/int_party.c/int_guild.h/int_guild.c/ - ファイル名変数の宣言追加 - INTER鯖パケット.txt - 倉庫パケットの解説追加 - - (map/) - storage.h/storage.c - storage_fromstr(),storage_tostr()をchar/int_storage.cに移動。 - 同じくdo_init,do_finalでのファイル処理も移動。 - do_final()は処理なし、do_init()は変数初期化のみに変更。 - storage_storageopen()では単にintif_request_storage()を呼ぶだけに。 - storage_storageclose()にintif_send_storage()を追加 - storage_storage_quitsave()追加。クライアント終了時に - カプラ倉庫が開いていればintif_send_storage()を呼ぶ関数。 - intif.h/intif.c - intif_parse_LoadStorage(),intif_parse_SaveStorage(), - intif_send_storage(),intif_request_storage()追加 - map.c - map_quit()でstorage_storage_quitsave()を呼ぶように。 - - (conf/) - inter_athena.cnf - 新規追加。inter鯖用のコンフィグレーションファイル - - ----------- -//0221 by 胡蝶蘭 - -・スキルターゲットのIDが正しく所得できない問題修正 - clif.c - clif_parse_UseSkillToId()でIDをWORDとして扱ってたのをLONGに修正 - -・スキル詠唱時間と属性表、および魔法系スキルの属性修正実装 - 属性ダメージ修正は battle_attr_fix() で計算します。 - atk_elemは属性そのまま、def_elemは(属性lv*20+属性)です。 - 詠唱時間はskill.cのCASTFIXの値を変えることで倍率を調整できます - - pc.c - pc_readdb()でcast_db.txtとattr_fix.txtの読み込み追加 - skill.c/skill.h - struct skill_db にcast,delay追加、それらのアクセサも追加 - スキル詠唱時間を skill_get_cast() で所得するようにした - battle.c/battle.h - attr_fix_table定義 - battle_attr_fix()追加、属性修正を計算する - 属性系アクセサ(battle_get_element()など)を追加 - battle_calc_magic_damage()に属性修正を追加 - cast_db.txt - 新規追加。詠唱時間とディレイのデータベース - 全然足りないので、誰か追加希望。 - attr_fix.txt - 新規追加。属性修正テーブル - -・ヒールの実装 - clif.c/clif.h - clif_skill_nodamage()追加、支援系や回復のエフェクト - skill.c/skill.h - skill_castend_damage_id()、skill_castend_nodamage_id()追加、 - 攻撃系と支援/回復系で関数を分けた - ヒール計算マクロ skill_calc_heal() 追加 - battle.c - battle_calc_magic_damage()でヒールのダメージ計算追加 - - ----------- -//0220 by れあ - -0216の修正 -HITの計算がおかしかったので修正してみました。 -間違ってたらごめんなさい。 - -・battle.c - 256行目の - hitrate=battle_get_hit(&sd->bl) - battle_get_flee(&sd->bl) + 80; - がたぶん、自分のHITと自分のFLEEで計算してる気がするので - hitrate=battle_get_hit(&sd->bl) - battle_get_flee(target) + 80; - に修正しました。 - - ----------- -//0218 by 胡蝶蘭 - -実際に分散させてテストしていなかったり。 - -・map鯖分散処理用にinter鯖機能をつけてみる(今後のための拡張) - char鯖にinter鯖を寄生させました。複数のmap鯖間の通信に利用します。 - map鯖を分散して処理できるようにするための機能です。 - 今後partyやguild実装時にきっと役にたってくれるかと。 - - 倉庫の実装もinter鯖に移動すべきかもしれません。 - どのキャラクターがどのmap鯖にいるか検索する機能もいるかも。 - - 使うパケットのIDは以下のようになります - map鯖=>inter鯖はパケット0x3000〜 - inter鯖=>map鯖はパケット0x3800〜 - パケットを作った場合は、INTER鯖パケット.txtに書いてください - - この機能によるメリット - map鯖分散にも対応できる - この機能によるデメリット - inter鯖経由の全ての命令の動作速度が落ちる - (一回inter鯖まで渡すため) - 鯖とクライアントを同じPCで使っているとつらいかも - - (char/) - char2.c/char.h - mapif_sendall()追加(全MAP鯖にパケットを送る) - mapif_send()追加(特定MAP鯖に送る:生存判定付き) - parse_frommap()でinter_parse_frommap()を呼ぶようにした - (inter鯖のmap鯖解析部をchar鯖に寄生させたことになる) - inter.h/inter.c - 新規追加。inter鯖の中核。 - inter_parse_frommapでMAP鯖からのパケットを解析します。 - int_party.h/int_party.c/int_guild.h/int_guild.c - 新規追加。今後のための予約。パーティやギルド機能用 - initでデータを読んで、saveで保存すべき? - saveはまだ呼ばれない。parseでパケット解析。 - common/mmo.hあたりでパーティーやギルドの構造体を - 定義する必要があると思われる。 - INTER鯖パケット.txt - パケットのリスト - - (map/) - intif.h/intif.c - inter鯖と通信する部分。 - inter_parse()でinter鯖からのパケットを解析します。 - inter鯖へデータを送るときはinter_fdを使います。 - chrif.h/chrif.c - chrif_parse()でinter_parse()を呼ぶようにした - (intif.cのinter鯖解析部をchar鯖解析部に寄生させたことになる) - -・@kamiコマンドをinter鯖経由に変更 - 原理としては次のような感じです - クライアント=>map鯖=>inter鯖=>全map鯖=>全クライアント - - (char/) - inter.c - mapif_GMmessage()追加 - (map/) - intif.h/intif.c - intif_GMmessage()追加 - intif_parseでGMメッセージの処理を追加 - clif.c/clif.h - clif_GMmessage()の引数を変更 - atcommand.c - @kami部分でintif_GMmessage()を呼ぶようにした - -・Wisをinter鯖経由に変更 - 原理としては次のような感じです - - 送り主クライアント=>送り主map鯖=>inter鯖=>全マップ鯖=>(分岐A) - [分岐A] - 1.相手の人いるmap鯖=>相手のクライアント -     〃    =>inter鯖=>送り主map鯖=>送り主クライアント - 2.相手のいないmap鯖=>inter鯖(分岐B) - [分岐B] - 1.全map鯖が応答したinter鯖 =>送り主map鯖=>送り主クライアント - 2.(全部は応答してないときは、全map鯖の応答を待つ) - - ものすごい複雑になってますね。 - - (char/) - inter.c - struct WisList 定義(Wisデータのリンクリスト) - add_wislist(),del_wislist(),search_wislist(), - check_ttl_wislist()追加,リンクリストを扱う関数群 - mapif_wis_message(),mapif_wis_end()追加 - (map/) - intif.h/intif.c - intif_wis_message(),intif_wis_end()追加 - intif_parse_WisMessage()追加,intif_parse()から呼ばれるように - clif.c/clif.h - clif_wis_message(),clif_wis_end()追加 - clif_parse_Wis()を変更,intif_wis_message()を呼ぶようにした - -・スキル使用時のヒット数/消費SP所得のバグ修正 - skill.c - skill_get_sp(),skill_get_num()で参照する配列インデックスをlv-1にした - - ----------- -//0216 by 胡蝶蘭 - -いつもどおりテストほとんどしてないので、バグ大量かも。 - -・0213の修正?のよくわからないところ修正 - itemdb.c - コンパイルが通らないのでitemdb_equipointの引数リスト変更 - -・Athena dev 2.1.1の適用 - dev-2.1.1で適用された修正を適用しました - - timer.c - 2.1.1のものと差し替え - script.c - C_NE: の修正の適用 - README - 最後の文章を2.1.1のものに差し替え - -・スキルデータベースの修正 - 一部の消費SPやヒット数などを修正。 - - skill_db.txt - 該当個所の修正 - -・スキル攻撃の実装変更&追加実装 - バッシュ、メマーナイト、ダブルストレイフィング、ピアース - スピアブーメラン、スピアスタブ、ボーリングバッシュ - ソニックブロー、グリムトゥース などの実装変更 - - ナパームビート、ソウルストライク、 - ファイヤーボルト、コールドボルト、ライトニングボルト、アーススパイク、 - ユピテルサンダー などを追加実装 - (全て、範囲攻撃やステータス異常などは未実装) - - pc.c/pc.h - 0213の変更をなかったことにした - pc_attack_mob()の修正、計算はbattle_calc_weapon_attack()に任せ、 - その計算結果を適用するだけに変更 - clif.c/clif.h - clif_skill_fail(),clif_skill_damage(),clif_skill_damage2()追加 - それぞれ使用失敗、使用エフェクト、吹き飛ばし付き使用エフェクト - skill.c/skill.h - 0213の変更をなかったことにした(ダメージ倍率計算がおかしい) - skill_castend_id()にSP/Zeny確認と消費部分を追加、 - 種類別に処理を追加。 - battle.c/battle.h - 新規追加 - 武器攻撃計算用にbattle_calc_weapon_attack(), - 魔法攻撃計算用にbattle_calc_magic_attack()を用意 - (双方とも、MOBとPC両方計算可能なはず) - ファイル増やしすぎという意見も…(汗) - - ----------- -//0214 by れあ -・ダブルアタックがおかしかったところを修正。 -・スキルの一部実装 - バッシュ・メマーナイト・ダブルストレイフィング・ピアース - スピアブーメラン・スピアスタブ・ボーリングバッシュ - ソニックブロー・グリムトゥースなどです。 - - 適当なのでどこか、不具合があるかもしれません。 - あと、テストもあまりしてませんのでおかしいところがあったら修正をお願いします。 - 他にも問題があったら手直しをお願いします。 - 変更内容は以下の通りです。 - - clif.c,clif.h - clif_skill_damage()を追加しました。 - - pc.c,pc.h - pc_attack_mob()の引数を一つ追加。 - ダブルアタックがおかしかったので正常に動作するように修正。 - - skill.c - 一部スキルの実装をしてみました。 - - ----------- -//0213 by れあ -・0208の@コマンドで少し修正 - atcommand.c - @itemで個数指定が無い場合、入手個数を1個にするようにした。 - @itemでIDの指定が無い場合、アイテムを入手してたことになって - いたのを修正 - itemdb.c - item_db.txtでSellの項目を店売りの値段としてみた。 - item_db2.txt - 試しにカードやレアアイテムの店売り価格を値段を本鯖の相場にし - てみたもの。使用する場合はitem_db.txtと差し替えてください。 - - ----------- -//0208 by nabe - -・@コマンド実装。 - atcommand.h,atcommand.c - ほぼI-Athenaの@コマンド相当ですが、@GMとPVPは未実装です。 - help.txtも同梱しています。 - GM(アカウントID=704554〜704583)専用にするには、 - atcommand.cの該当部分のコメントアウトを解除して下さい。 - clif.h,clif.c - clif_displaymessage() - clif_GMmessage() - clif_heal() - clif_resurrection() - clif_pvpon() - clif_pvpset() - clif_refine() - を追加しました。 - clif_parse_GlobalMessage()内でatcommand()を呼んでいます。 - -・ちょっとだけ修正。 - script.c - {buildin_openstorage,"openstorage","s"}, - から - {buildin_openstorage,"openstorage",""}, - に修正しました。 - - ----------- -//0206 by 胡蝶蘭 -・スキルツリー/スキル使用機構の実装 - mmo.h - MAX_SKILLを増やした - char2.c - mmo_char_fromstr() - mmo_charstatusのskillのインデックスにスキル番号を使うようにした - =>スキルの検索高速化のため(かわりにメモリ使用量が増える) - pc.h/pc.c - pc_skillup(),pc_calc_skilltree()追加 - pc_checkskill()変更(インデックスをスキル番号に) - 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()を追加 - clif_parse_SkillUp(),clif_parse_UseSkillToId(), - clif_parse_UseSkillToPos()を実装 - skill.h/skill.c - ファイル追加(map/) - map.h - struct map_session_dataにcast_*を追加 - skill_db.txt - ファイル追加(db/) - (I-Athena0200のskill_info2.txtをコンバートしたもの) - (スキル使用部分開発者向け情報) - スキルの効果を実装する場所はskill.cの - skill_castend_id(),skill_castend_pos()です。 - ターゲットや使用スキルは sd->cast_* から得ます - スキルデータベースへは skill_get_* でアクセスしてください - 今後、キャスティングタイムもデータベースに入れる予定 - ----------- -//0205 by nabe - -・storage.cのバグフィクス。 -・倉庫データを、マップ鯖起動時に読み、マップ鯖終了時に書くように変更。 - storage.h,storage.c - storage_init()をdo_init_storage()に改名。 - storage_save()をdo_final_storage()に改名。 - fcloseを忘れていたのを追加。 - map.c - #include "storage.h"を追加。 - do_final()にdo_final_storage()を追加。 - do_init()にdo_init_storage()を追加。 - ----------- - -//0203(unofficial) by なみ - -item_db.txtの書き換えのみです。 - -・アイテムの回復量を追加/変更 - 赤ポーション         HP 30- 44 - 紅ポーション         HP 70- 89 - 黄色いポーション       HP 175-234 - 白いポーション        HP 350-429 - 青いポーション        SP 40- 99 - 赤いハーブ          HP 12- 19 - 黄色いハーブ         HP 21- 29 - 白いハーブ          HP 80-111 - 青いハーブ          SP 15- 44 - リンゴ            HP 12- 15 - バナナ            HP 11- 16 - ブドウ            SP 10- 24 - いも             HP 11- 15 - にく             HP 70- 99 - ハチの蜜           HP 72- 97 / SP 20- 59 - ミルク            HP 25- 34 - キャンディ          HP 31- 74 - スティックキャンディ     HP 46-109 - リンゴジュース      ※ HP 28- 32 - バナナジュース        HP 27- 33 - ブドウジュース        SP 15- 39 - ニンジンジュース     ※ HP 29- 32 - カボチャ           HP 14 - ペットフード         HP 53- 83 - よく焼いたクッキー      HP 80-177 - ひとくちケーキー       HP 251-359 - ひなあられ          HP 175-234 - 菱餅             HP 350-429 - レッドスリムポーション  ※ HP 30- 44 - イエロスリムポーション  ※ HP 175-234 - ホワイトスリムポーション ※ HP 350-429 - 現在のAthenaではVITやスキルによるボーナスは加味されません。 - (適用する場合はscript.c内のbuildin_heal関数あたりにに手を加える必要あり) - なお、※付のアイテムのデータは適当です。 -・古いカード帖を実装(UseScript) -・その他修正 -  ひなあられ          重量なし→重量0.1に修正 -  菱餅             重量なし→重量0.1に修正 -  バルムン           重量0.1S4片手剣→重量100S0両手剣に修正 - なお、Sellの項目はあるだけ無駄っぽいので全部消しました。 - ----------- - -//0202 by nabe - -・カプラ倉庫の「同一アカウントなのに共有できないバグ」を改良しました。 - 各キャラに倉庫データを持たせるのは無駄が多い気がするので、 - アカウントIDで管理するように仕様を変更しました。 - ついでに、倉庫データは全てstorage.cでまかない、 - char鯖は関与しないようにしました。 - これに伴い、char_athena.cnf,mmo.h,char2.cは元に戻しました。 - また、倉庫ファイル名は“storage.txt”に固定しています。 - - 改変、追加したのは次のファイルです。 - map/storage.h, - map/storage.c, - map/clif.h,//引数変更だけ - map/clif.c,//引数変更だけ - conf/char_athena.cnf,//元に戻しただけ - common/mmo.h,//元に戻しただけ - char/char2.c,//元に戻しただけ - map/itemdb.h,//itemdb_equippoint()引数宣言変更だけ - map/itemdb.c,//itemdb_equippoint()引数宣言変更だけ - map/pc.c,//itemdb_equippoint()引数宣言変更だけ - ----------- - -//0201 by nabe - -・カプラ倉庫を実装しました。 - - スクリプトから呼び出すには、スクリプト内で - openstorage; - としてください。 - サンプルとしてnpc_kafraJ.txtを付けてあります。 - 併せてnpc_script3J.txtの該当部分も改変しました。 - - char_athena.cnfの - stor_txt: - で倉庫ファイル名を指定しています。 - - 改変、追加したのは次のファイルです。 - map/Makefile, - map/storage.c, - map/storage.h, - map/clif.c, - map/clif.h, - map/script.c, - char/char2.c, - common/mmo,h - 詳しくは、上記ファイルのコメントなどを参考にしてください。 - -・カプラ倉庫実装に伴い、map_athena1.cnfを少し書き換えました。 - -・全てのコメント文をEUCからSJISに変換しました。 - ----------- - - Athena Dev. v2.1.1 Released: Middle July, 2003 - (c) 2003 Athena Project. - http://project-yare.de/ - -1. Athena(アテナ)について -2. このリリースについて -3. 必要な物 -4. 使い方 -5. 現在の仕様 -6. 祝辞 -7. 免責事項 -8. 募集 -9. English - - -1. アテナについて - アテナとは2003年1月半ばにでた0052.lzhをベースとして作られているエミュレータの一つです。 - 基本的なライセンスはオリジナルがGPLの下に配布されている為、 - これに従いGPLの下配布を許可します。 - /* - 改良版を配布する場合は必ずこのREADMEを書き換えてください。 - 何処を改良したのか報告(athena@project-yare.deまで)して貰えると助かります。 - バイナリのみの配布はGPL違反ですので"必ず"ソースも添付してください。 - */ - 動作の確認は以下の通りのみ行っています。 - // ただし完璧に動く事を保証するものでありません - 対象CPU: Intel Pentium系 // PentiumII以上で確認. - FreeBSD 4.8R, 4.6.2R - Linux RedHat 7.3 - cygwin + gcc 3.2 20020927 (prerelease) - 開発元URL: http://project-yare.de/ - - -2. このリリースについて - 今回のリリースは前回(V2.1)同様開発版のリリースのみです。 - 2.1に比べ下記の点が修正されています。 - mapのデフォルト設定が韓国data.grfのみ正常に動作するようになっていた点 - common/timer.cやmap/script.cの幾つかのバグ - - 迅速にUpdateを強く推奨するものではありませんが各自の判断で行って下さい。 - - -3. 必要な物 - data.grf //sdata.grfは必要に応じて - account.txt //存在しない場合athena.shが自動生成します - conf/*.cnf //Map用とChar用の二種類あります - conf/npc*.txt //npc設定用ファイルです。複数のファイルに分けることが可能です。 - db/*.txt //アイテム、job情報など - - -4. 使い方 - > tar xvfz athena-d?.?.tar.gz - > cd athena-d?.?.tar.gz - > make - > vi conf/char_athena.cnf //IP(127.0.0.1)の部分を環境に合わせて変更してください - > vi conf/map_athena.cnf //同上、またmap設定などは、このファイルで行います。 - > ./athena.sh - 上記を行えば"たぶん"起動します。 - - 補足: - conf/npc_sampleJ.txtにはスクリプトの書き方について色々な説明が記載されています。 - もし、独自のMap設定を行ってみたい人や、スクリプトを弄りたい方は参考にしてください。 - ただし、開発中のためスクリプトの仕様が変更される可能性が高いです。 - command.txtには実装済みの特殊コマンドについての説明を記載しています。 - - -5. 現在の仕様 - 本鯖と比べておかしい(例えばプバが歩く、ポリンがアイテムを拾わないなど)点は、 - 全て現在開発中に因るものです。 - 現状としてキャラクタ系及びモンスター系のバグ報告は無視される可能性が高いです。 - - バグ報告について必ず発生条件をお書き下さい。 - 下にある報告用テンプレートを使って報告して頂くと助かります。 - 報告先はエミュ板の開発スレにでも。 - ---- Athena v 2.0 (stable or develop) ---- - 【gcc ver】gcc -vを実行時に表示される内容 - 【動作システム】FreeBSD, Linux(ディストリビュージョンも), cygwinなど - 【発生内容】mapが落ちてしまった時の表示されていたデバッグ情報など具体的に書いてください。 - 【操作内容】具体的にどんな操作を行ったかを書いてください。 - ------------------ END ------------------- - 理想はテンプレに加えてmap.coreなどcoreファイルをUploaderにアップして頂くことですが - 問題のMapだけの状態にしcoreの吐く容量に注意してください。 - /* - 確認した限りでは324個ほどmapデータを読み込ませると、 - 40MB近いcoreファイルを吐き出します @FreeBSD - cygwinの場合はstackdumpというファイルになるそうです。 - しかし、coreファイルなどをgzip圧縮などすれば大幅に小さくなります。 - 大凡30MBのcoreファイルが2.9MBほどになるようです。 - ですので、もしアップロードする場合はgzip圧縮など各自行ってください。 - */ - - 今回のリリースだけでなくHISTORYを作成すると大量に記述が必要な為省略しています。 - // 多い日だと本当に結構ありますので‥‥。 - - -6. 祝辞 - 今回このAthena開発版を出すに当たって感謝したい方々(順番不同) - Lemming氏 (Project YARE) - 0052氏 (Uploader) - 35氏 (エミュ開発スレ) - Johan Lindh氏(Author of memwatch) - YARE forumのNPC情報を作成した方々 - weiss研究会BBSの様々な情報ファイルを作成した方々 - 最後に、.coreファイル達 - - -7. 免責事項 - Athena Projectは一切Athenaの動作に関する保証等は行いません。 - つまり、Athenaは無保証です。 - athena@project-yare.deに動作・操作等に関する質問などを送られても一切お答えできません。 - 又Athenaを用いたことにより生じた被害・問題等の責任は一切Athena Projectは負いません。 - - -8. 募集 - athenaの開発に参加したい//興味があるという方ご連絡下さい。 - 我々は貴方の参加をお待ちしています。 - // 最新版が欲しいだけで何ら協力して頂けないという方はお断りです;-) - [募集要項: プログラマ(2-3人)] - 年齢: 不問 - 性別: 不問 - 言語: 日本語が理解可能 - 内容: C言語もしくはC++による開発。(特にネットワークやDBの経験が有る方大募集!) - [募集要項: 翻訳(?人)] - 年齢: 不問 - 性別: 不問 - 言語: 日本語、英語が理解可能 - 内容: 仏蘭西語、独逸語、西班牙語、伊太利亜語、泰(タイ)語、朝鮮語、中国語へ文献、サイトなどの翻訳 - 連絡先: athena@project-yare.de 雑務担当まで。 - - -9. English - This release is just fixed some bugs in timer.c, script.c and map_athena1.conf. - - -(c) 2003 Athena Project. +-------------------- +//1032 by (凸) +・1031で何故か削除されていたbuildin_getitemname()を復活 +・バグスレなどに出た修正を反映 +・その他細かい修正 + + (map/) + clif.c + clif_disp_onlyself() NULLチェック追加 + map.c + map_nick2sd() nickがNULLだとすぐNULLを返すように変更 + mob.c + mob_setdelayspawn() NULLチェック変更 + mob_delete() 修正 + npc.c + npc_parse_warp() 修正 + script.c + buildin_getitemname() 復活 + +---------------------------------------- +//1031 by huge +・NPCのscriptに、makepetを追加。 + makepet 卵ID; で、ペットを作成します。 +・NPCのscriptに、getexpを追加。 + getexp Base,Job; で、それぞれの経験値を増やします。 +・ペットの卵をNPCのdelitemで消したりshopで売った時、ペットセーブデータから削除するよう修正。 +・ディボーション成功条件修正。(未確認) +・経験値表示を可能にしてみました。confにて設定してください。 + + (conf/) + battle_athena.conf 修正 + (doc/) + conf_ref.txt 修正 + script_ref.txt 修正 + (map/) + battle.c + battle.h + disp_experience 追加 + clif.c + clif.h + clif_disp_onlyself() 追加 + pc.c + pc_gainexp() 修正 + script.c + buildin_delitem() 修正 + buildin_makepet() 追加 + buildin_getexp() 追加 + npc.c + #include 修正 + npc_selllist() 修正 + skill.c + skill_castend_nodamage_id() 修正 + + +-------------------- +//1030 by (凸) +・map_athena.confに新婚島ザワイをコメントアウトして追加 +・クローンスキルで覚えたスキルを自動セーブごとに忘れていたのでとりあえずログオフ時にのみ忘れるように変更したつもり +・mobskill_castend_posの無害nullpoチェックを変更 +・Emotionの設定がないMobがスキルを使用するときに/!を出していたのを修正 +・バグスレに投げたtrade.cを添付。とりあえず相手が所持できる種類の限界を超えた場合は渡さずに元に戻すように変更 + + (conf/) + map_athena.conf ザワイ追加 + (doc/) + client_packet.txt パケット長の更新 + (map/) + map.c + map_quit() 終了時にクローンスキルで覚えたスキルを忘れるように変更 + mob.c + mobskill_castend_pos() nullpoチェック変更 + mob_readskilldb() 修正 + pc.c + pc_makesavestatus() クローンスキルを忘れるのをmap_quitに任せた + trade.c + trade_tradecommit() 所持できる種類以上を取引した場合にアイテムが消えないように + +-------------------- +//1029 by (凸) +・20040619RagexeHC_jp.rgzの0x204と0x20bパケットに対応 +・charとloginも知らないパケットが来たらパケットダンプを出力するようにclif.cからコピペ + + (doc/) + client_packet.txt 新パケット追加 + (char/) + char.c + parse_char() 0x20b対応 + (login/) + login.c + parse_login() 0x204対応 + +-------------------- +//1028 by (凸) +・ウンバラ以降、Mobがスキルを使用するときにエモーションを出すようになったので、mob_skill_dbを拡張 + サンプルでオークウォーリアーが喫煙すると「/…」を出すのとオークレディが速度を使うと「/ちゅ」を出します +・アイテム682,683を使用すると30秒間ATKやMATKが増えるらしいのでそれっぽく +・job_db2.txtに謎の行が2行あったのを削除 +・範囲魔法などでスキルユニット相手にステータス変更をかけようとした場合にnullpoが出たのを修正 + + (db/) + const.txt SC_INCATK SC_INCMATK追加 + item_db.txt ↑を682,683に追加 + job_db2.txt 謎の2行を削除 + mob_skill_db.txt Emotion追加 + (map/) + mob.c + mobskill_use() スキル使用時にエモーションを出すように変更 + mob_readskilldb() Emotionを読み込むように変更 + mob.h 変更 + pc.c + pc_calcstatus() 変更 + skill.c + + skill_status_change_end() 変更 + skill_status_change_start() 変更とNULLチェック修正 + skill.h 変更 + +-------------------- +//1027 by Ni+S +・getitemname関数追加 +・スクリプトにgetitemname関数を追加 +・itemidより、jnameを文字列で返します +・詳しくはscript_ref.txtで。 + + script.c + getitemname()追加 + +---------------------------------------- +//1026 by (凸) +・1023で入れてなかったclif.hを同梱 +・バイオプラントとスフィアーマインで出したmobを倒すとmob_timer_delete()でnullpoが出る問題を解決したつもり +・バグ報告スレッド part6 >>63 Destさんのscript.c修正を取り込み + + (map/) + clif.h 変更 + map.h 変更 + mob.c + mob_changestate() 変更 + skill.c + skill_castend_pos2() 変更 + mob_spawn() 変更 + do_init_mob() add_timer_func_listにmob_timer_deleteが無かったので追加してみた + script.c + script_load_mapreg() 変更 + +------------------------ +//1025 by Sel +・ロードナイトのジョブ補正が間違っていたのを修正 +・オーラブレード効果時間を修正 +・オーラブレード武器制限を素手以外全てに修正 +・コンセントレーション武器制限を両手槍のみから片手槍+両手槍へ修正 +・トゥルーサイト効果時間を修正 +・ファルコンアサルト武器制限を解除、素手を含めた全てで使用可能に + + (db/) + job_db2-2.txt 変更 + skill_cast_db.txt 変更 + skill_require_db.txt 変更 +-------------------- +//1024 by mare +・ファーマシー材料の変更、製造可能薬品の追加 + 6/8日本鯖にきたものと同じにしました + + (db/) + produce_db.txt 変更 + +---------------------------------------- +//1023 by (凸) +・1022でエンバグしたnpc_parse_script()を戻し +・スパイラルピアースの重量追加ダメージ計算式をちょっと変更 +・魔法力増幅の計算式をちょっと変更 +・テンションリラックスが座って使うのではなく使うと座るという情報を見かけたので変更 +・↑に伴いskill_requireのsitting条件廃止 +・バーサークをGvGで使用できないように変更 + + (db/) + skill_cast_db.txt 変更 + skill_require_db.txt 変更 + (doc/) + db_ref.txt 修正 + (map/) + battle.c + battle_calc_pc_weapon_attack() 変更 + clif.c + clif_sitting() 追加 + clif_parse_ActionRequest() 変更 + npc.c + npc_parse_script() 修正 + pc.h 変更 + pc.c + pc_calcstatus() 変更 + pc_natural_heal_hp() 変更 + pc_setstand() 追加 + skill.c + skill_castend_nodamage_id() テンションリラックスを使うと座るように + skill_check_condition() ST_SITTING廃止 + skill_use_id() バーサークをGvGで使用できないように + skill_status_change_timer() テンションリラックスは10秒ごとにSPを12消費 + skill_status_change_start() テンションリラックス変更 + skill_readdb() sitting廃止 + skill.h 変更 + +-------------------- +//1022 by (凸) +・NULLチェック変更 +・login,char,map終了時に開放されていなかったメモリを微妙に開放する努力をしてみた +・スパノビ爆裂波動実装、クリティカル+50 +・スパノビボーナスを変更、最初から一度も死んでないJobLv70にAll+15、BaseLv99にMHP+2000 + + (doc/) + client_packet.txt S 01ed追加 + (char/) + do_final() 変更 + do_init() 変更 + (login/) + do_final() 追加 + do_init() 変更 + (map/) + atcommand.c Destさんの変更を取り込み + battle.c 同上 + chat.c NULLチェック変更 + chrif.c NULLチェック変更 + clif.c NULLチェック変更 + clif_parse() 変更 + clif_parse_sn_explosionspirits() 追加 + clif_parse_sn_doridori() 名前変更 + guild.c NULLチェック変更 + intif.c NULLチェック変更 + itemdb.c NULLチェック変更 + map.c NULLチェック変更 + do_final() 変更 + mob.c NULLチェック変更 + npc.c NULLチェック変更 + npc_parse_script() buf開放忘れ?を開放 + party.c NULLチェック変更 + path.c NULLチェック変更 + pc.c NULLチェック変更 + pc_calcstatus() スパノビ変更 + pet.c NULLチェック変更 + storage.c NULLチェック変更 + trade.c NULLチェック変更 + vending.c NULLチェック変更 + +-------------------- +//1021 by Kalen +・プロンテラ冠婚品NPCにてタキシード販売 +・Umbalaのワープ見直し + D2Fのワープを本鯖使用に変更。重複ポイント修正 +・UmbalaNPC修正 + ラベルを使用しなくいい場所は極力削除(-) + セーブポイント修正 + バンジージャンプ台追加 + 骸骨門追加 + 分解、合成処理追加 + カプラ、案内要員をあるべき場所へ移動。 + ※一部Emoについて、癌呆自身が逆に取り違えているみたいなので独自で変えました。 + 見てもらえば分かりますが18と28を逆にするとNPCの会話内容に合うEmoが出たので + クエストフラグの条件追加 +  これによりすでに終えている場合でも途中になる可能性があります。 +・スパノビ転職NPC追加 + 凸さんのログを基に作成しました。 +・アルケミストギルドのノビの場合の対応修正(凸さんからのログより) +・結婚NPC追加 + ただし、まだテスト段階です。問題点があるため結婚不可能です。 + (/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(新・テスト) + (/job) + npc_job_alchemist.txt + npc_job_supernovice.txt(新) + +-------------------- +//1020 by (凸) +・nullpoの変更に対応してmap_athena.confの設定削除&skill.c書き換え +・座っているとHPRとSPRが通常の半分で発動したのを修正 +・スパノビが一定条件(クライアント依存)で/doridoriするとSPR回復量が倍になるように変更 +・結婚式用のエフェクトをスクリプトからwedding命令で発生させることが出来るようした +・合奏を開始したPCは合奏中に終了できないようにしたつもり(未確認) + + (conf/) + map_athena.conf nullpo_check削除 + (doc/) + client_packet.txt 更新 + conf_ref.txt nullpo_check削除 + (map/) + map.c + map_config_read() nullpo_check削除 + map.h 同上 + skill.c NULLチェック再度総入れ替え + clif.c + clif_wedding_effect() 追加 + clif_parse_QuitGame() 合奏開始者は合奏中に終了できないように変更 + clif_parse_doridori() 追加 + clif_parse() doridori追加 + clif.h 変更 + pc.c + pc_authok() doridori初期化追加 + pc_natural_heal_hp() 座っているときのHPR時間修正 + pc_natural_heal_sp() 座っているときのHPR時間修正、doridori追加 + script.c + buildin_wedding_effect() 追加 + + +-------------------- +//1019 by Dest +・nullpoモジュールにコーディングミス発見/修正 +・同、voidな関数から呼ばれた時のnullpo_retv_f()を追加 +・同、条件コンパイルに対応 + + (common/) + nullpo.c + nullpo_info_core() コーディングミス修正 + nullpo.h + NULLPO_CHECKフラグによる条件コンパイル追加 + nullpo_retv_f() 追加 + +-------------------- +//1018 by chloe +・ウンバラモンスターを追加 + + (script/mob/) + npc_monster.txt 変更 + 各ウンバラマップにMob配置 + (db/) + mob_db.txt 変更 + 1495,STONE_SHOOTER,フレイムシューター 修正 + 1511,AMON_RA,アモンラー 修正 + +-------------------- +//1017 by (凸) +・バグ報告スレッド part6 >>46 Destさんのnullpoモジュールを追加&voidな関数から呼ばれた時のnullpo_retv()を追加(とりあえずskill.cのNULLチェックだけ入れ替え) +・同>>39 Selさんから報告があったコンセントレーションを修正 +・仕様について語り合うスレッド >>33 Kalenさんの情報をclient_packet.txtに反映 +・本鯖相違スレッド part3 >>24 M @zqcM6jBwさんの情報を↑ +・同>>30 はちさんの修正を反映 + + (conf/) + map_athena.conf nullpo_check追加 + (db/) + item_db.txt 結婚指輪を武器-アクセサリに変更&最新版 + (doc/) + client_packet.txt 更新 + conf_ref.txt nullpo_check追加 + (common/) + Makefile 変更 + nullpo.c 追加 + nullpo.h 追加 + (map/) + Makefile 変更 + map.c + map_config_read() nullpo_check追加 + map.h 同上 + skill.c NULLチェック総入れ替え + skill_status_change_start() コンセントレーション修正 + skill_castend_nodamage_id() テレポート修正 + clif.c + clif_skill_setunit() コメント修正 + pc.c + pc_calcstatus() コンセントレーション修正 + +-------------------- +//1016 by な。 +・Athena雑談スレッドPart4 42 かる氏作のウンバラNPCを追加 + + (script/npc/town/) + npc_town_umbala.txt追加 + イベントデバッグ様(230〜256行目)はコメントアウト + (conf/) + map_athena.conf town に npc: script/npc/town/npc_town_umbala.txt 追加 + +-------------------- +//1015 by (凸) +・リムーブトラップを本鯖仕様とAthena仕様で選べるようにした +・スパノビにAll+10する条件が良く分からなかったけど最初から+10じゃないのは確かなのでとりあえずBase99で一度も死んでなければという条件に変更 +・ダンス中に吹き飛ばされてもエフェクトは移動しないそうなので変更 +・@go 13微調整 + + + (conf/) + battle_athena.conf skill_removetrap_type追加 + (doc/) + client_packet.txt 本鯖相違スレッド part3 23 M @zqcM6jBwさんの情報を追加 + conf_ref.txt skill_removetrap_type追加 + (map/) + atcommand.c + atcommand_go() ウンバラの出現位置微調整 + battle.c + battle_config_read() skill_removetrap_type追加 + battle.h 同上 + pc.c + pc_calcstatus() スパノビAll+10条件変更 + skill.c + skill_blown() ダンス中の吹き飛ばしを元に戻した + skill_castend_nodamage_id() リムーブトラップ仕様変更 + + -------------------- +//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 (凸) +・help.txtにある@goの説明から13と14を削除 + 機能は消えてないので使えることは使えますが、helpに載せるのはjROに来てからということで +・cast_db.txtをskill_cast_db.txtに改名 +・ついでにmake cleanでGNUmakefileも消してみることにする +・u-0さんの検証などを総合してダンスユニット関連を変更 + 演奏・ダンス中のハエはユニット付きで飛ぶそうです + 演奏・ダンス中にワープポイントに乗ったら状態が解除されるようです + 合奏中に片方がハエ飛びしたらエフェクトは元の場所に残り、飛んだ先では合奏状態が継続して動けない&時間ごとにSP消費するようです +・PC_DIE_COUNTERがスクリプトから変更された時にすぐに反映されるように変更 + + (conf/) + help.txt @go説明変更 + (db/) + skill_cast_db.txt 改名 + (map/) + pc.c + pc_setpos() ダンス中断のタイミング変更 + pc_setglobalreg() PC_DIE_COUNTER特別処理追加 + skill.c + skill_castend_id() NULLチェック変更 + skill_stop_dancing() マップ移動などでの挙動を変更 + skill_readdb() skill_cast_dbに改名 + skill_blown() 飛ばされたらダンス移動 + npc.c + npc_touch_areanpc() ワープポイントに乗ったらダンス解除 + +-------------------- +//1011 by パイン +・パーティ要請やギルド要請を出しているときに他の要請を拒否る処理を追加 + battle_athena.confで切り替えが出来るようになっています。 +・make clean で事が足りるので、objectdel.batを消去 + + (map) + clif.c + clif_party_invite()変更(nullpoの文言違ってました) + guild.c + guild_invite()変更 + party.c + party_invite()変更 + battle.c + battle_config_read()変更 + battle.h変更 + trade.c + trade_traderequest()変更 + +-------------------- +//1010 by (凸) +・gcc 2.95対策 +・スパノビの1度死ぬまでAll+10をスクリプト変数で実装してみる試み + PC_DIE_COUNTER 死ぬと+1、転職すると0になります + ↑はキャラクタ永続なスクリプト変数なのでNPCで参照&再設定とか比較的楽かも + + (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を追加 + npc.c + npc_click() nullpoメッセージを修正 + pc.c + pc_setrestartvalue() nullpoメッセージを修正 + pc_authok() die_counter初期化の追加 + pc_calcstatus() die_counter=0のスパノビは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 ぴざまん +・ダンス移動軽量化実装 + battle_athena.confで切り替え可能です。詳しくはconf_refを + オリジナルアップデートの為、デフォルトではoffにしています + また、この軽量化モードは回線負荷を大幅に削減できる(つもり)ですが、 + その分サーバー側の処理が重たくなります(といってもある程度のCPUがあれば全然問題にならない程度の負荷ですが) +・結婚システム/結婚スキル実装 + 結婚指輪の特別扱いが未実装です(落とせたり取引に出せたりします) + 離婚のみ未テストです。 +・結婚用スクリプト(marriage、divorce)追加。 + ・marriage +  : 結婚相手の名前 +  戻り値: 成功:1 失敗:0 +  結婚処理を行います。対象は話し掛けたプレイヤーとのキャラクターで、どちらかが既婚の場合は失敗します。 +  1回のmarriageスクリプトで新郎→新婦と新婦→新郎の結婚処理を同時に行います。 +  また、このスクリプトで結婚指輪は与えられません。 + ・devorce +  引数無し +  戻り値: 成功:1 失敗:0 +  離婚処理を行います。対象は話し掛けたプレイヤーで、未婚の場合は失敗します。 +  marriageスクリプトと同様に互いの離婚処理を同時に行います。 +  また、このスクリプトが成功すると自動的に対象キャラクターの結婚指輪は剥奪されます。 + + どちらのスクリプトの処理も、2人共ログインしていないと成功しません。 + + (map/) + pc.c + pc_ismarried()、pc_marriage()、pc_divorce()、pc_authok()変更 + pc_get_partner() 追加 + map.c + map_quit() 変更 + skill.c + skill_use_id()、skill_castend_nodamage_id() 変更 + skill_unitsetting()、skill_unit_onlimit() 変更 + script.c + buildin_marriage()、buildin_devorce() 追加 + pc.h 変更 + battle.h 変更 + +-------------------- +//1008 by ぴざまん +・GMセッション隠し実装(未テスト) + GMアカウントのキャラクターを@who等で表示するかどうか設定できます。 + 詳しくはconf_ref.txtを参照してください。 +・結婚システム仮実装 + char-map間通信のみ実装です。まだ結婚することは出来ません。 + 尚、このパッチからathena.txtのバージョンが変わります。 + データの互換性は保ったつもりですが、念の為バックアップを取っておく事を強く推奨します。 + + (map/) + clif.c + clif_countusers() 変更 + battle.c + battle_config_read() 変更 + atcommand.c + atcommand_who() 変更 + pc.c + pc_ismarried()、pc_marriage()、pc_divorce() 追加 + chrif.c + chrif_divorce() 追加 + chrif_parse() 変更 + (char/) + char.c + char_divorce() 追加 + char_delete()、mmo_char_fromstr()、mmo_char_tostr() 変更 + +-------------------- +//1007 by (凸) +・NULLチェックの見直し + + (map/) + clif.c + clif_send() 変更 + skill.c + skill_delunit() 変更 + +-------------------- +//1006 by (ruhu) +・@goに洛陽とニフルヘイム追加 + + (conf/) + help.txt ニフルヘイム、洛陽追加 + (map/) + atcommand.c + atcommand go() ニフルヘイム、洛陽追加 +-------------------- +//1005 by (凸) +・NULLチェックの見直しと追加、大量に変更したので問題が出る可能性が大です +・ウンバラ分割パッチが配布されたので@go 12にウンバラを追加 +・ロードナイト バーサークをちょっとそれっぽく(ASPD増加などは未実装) +・クラウン・ジプシー 月明りの泉に落ちる花びらの使用条件を合奏と同じに変更(効果等は未実装) +・ブレッシングが本鯖ではステータスアップ→エフェクトだったのでそのように変更 +・本鯖相違スレッド part2 >>145 zzzさんの報告を反映 +・同スレ >>143 plalaさんの報告を反映 + + (db/) + skill_require_db.txt 変更 + (conf/) + help.txt ウンバラ追加 + map_athena.conf ウンバラ関連のコメントアウトを解除 + (map/) + atcommand.c NULLチェック強化 + atcommand() @mapmoveなどで落ちる問題を修正 + atcommand_go() ウンバラ追加 + battle.c NULLチェック強化 + battle_calc_mob_weapon_attack() バーサーク時ダメージ150% + battle_calc_pc_weapon_attack() バーサーク時ダメージ150% + chat.c NULLチェック強化 + chrif.c NULLチェック強化 + clif.c NULLチェック強化 + clif_parse_ActionRequest() ダンス時の処理を若干変更 + clif_parse_GlobalMessage() バーサーク時は会話が出来ないように変更 + clif_parse_Wis() バーサーク時は会話が出来ないように変更 + clif_parse_PartyMessage() 同上 + clif_parse_GuildMessage() 同上 + clif_parse_TakeItem() バーサーク時はアイテムを取れないように変更 + clif_parse_DropItem() バーサーク時はアイテムを落とせないように変更 + clif_parse_UseItem() バーサーク時はアイテムを使えないように変更 + clif_parse_EquipItem() バーサーク時は装備できないように変更 + clif_parse_UnequipItem() バーサーク時は装備解除できないように変更 + clif_parse_UseSkillToId() バーサーク時はスキル使用ができないように変更 + clif_parse_UseSkillToPos() 同上 + clif_parse_UseSkillMap() 同上 + guild.c NULLチェック強化 + intif.c NULLチェック強化 + itemdb.c NULLチェック強化 + map.c NULLチェック強化 + map_quit() バーサーク時にログアウトするとHP 100/SP 0になるように変更 + mob.c + mob_attack() clif_fixmobpos()を送信しないように変更 + mob_timer() NULLチェック条件を変更 + mobskill_castend_id() 同上、バーサーク時スキルを使えないように変更 + mobskill_castend_pos() バーサーク時スキルを使えないように変更 + mobskill_use_id() 同上 + mobskill_use_pos() 同上 + npc.c NULLチェック強化 + party.c NULLチェック強化 + path.c NULLチェック強化 + pc.c NULLチェック強化 + pc_calcstatus() バーサーク時は速度UP&MHP3倍、メディテイティオのSP回復増加をSPRではなく通常回復にかかるようにした + pc_heal() バーサーク時は回復しない + pc_jobchange() 転職直後1歩動かないと服の色が反映されなかったのを修正 + pc_natural_heal_sub() バーサーク中はSPが自然回復しないように変更(HPは良く分からなかったので回復するようにしてある) + pet.c NULLチェック強化 + skill.c + skill_castend_nodamage_id() ブレッシング等のパケット順を変更、ストーンカースを不死には無効にした + skill_castend_map() しつこいくらいにバーサーク時にスキルを使えないように変更 + skill_check_condition() 同上 + skill_use_pos() 同上 + skill_use_id() 同上&月明りの泉に落ちる花びら追加 + skill_status_change_end() バーサーク時にはIAアイコンを消去するように変更 + skill_status_change_timer() NULLチェック条件を変更、月明りの泉に落ちる花びら時SP消費、バーサーク時HP100以上なら10秒あたり1%減らすように変更 + skill_status_change_start() バーサーク時にはIAアイコンを表示するように変更 + skill_delunit() NULLチェック条件を変更 + skill_check_condition_char_sub() 月明りの泉に落ちる花びら追加 + skill_check_condition_use_sub() 同上 + skill_is_danceskill() 同上 + skill_initunitgroup() 同上 + trade.c NULLチェック強化 + vending.c NULLチェック強化 + +-------------------- +//1004 by (凸) +・NULLチェックでエンバグしていたところをいくつか修正と他のNULLチェック強化 +・skill.cでもnullpoを表示するように変更 + + (map/) + battle.c + battle_damage() NULLチェック強化 + battle_heal() 同上 + clif.c + clif_damage() 同上 + map.c + map_addflooritem() NULLチェック強化 + mob.c + mob_once_spawn() 余計なNULLチェックを削除 + mob_once_spawn_area() 同上 + mob_damage() 同上 + mob_counttargeted() 同上 + mobskill_castend_id() 同上 + mob_summonslave() メッセージ間違いを修正 + pc.c + pc_damage() NULLチェック強化 + skill.c ほぼ全部 NULL関連修正 + +-------------------- +//1003 by (凸) +・jROクライアントで/account使用時に繋がらない原因の0x200パケット問題を修正 +・0x1c9パケットの穴埋めを引き続き継続中 +・一人で聖体や合奏を使用できる設定(player_skill_partner_check)を追加 + 一人で合奏を実行した場合には通常のダンスと挙動が同じになります +・プロボックは不死に対して発動しないように変更 +・FWの吹き飛ばし判定を変更 +・デリュージに水場判定を追加、聖水を作れるのを確認 +・ハイディングの有効時間が正しく機能するように修正 +・アスペルシオを不死に使用した場合、聖属性の40ダメージを与えるように変更 +・アスペルシオを不死以外のMOBに使用しても効果が無いように変更 +・合奏、ダンス、演奏中の経過時間によるSP消費を実装 +・報告のあったガーディアンがギルド未加入PCをターゲットしたらmapが落ちる問題の修正(ガーディアン実装当時からずっと落ちてた?) +・mob.c、storage.cのnullチェックを強化 + エラーで落ちるべきところを無理やり通常処理に戻しているので他で問題がでるかもしれません + その場合、コンソールに「関数名 nullpo」と表示されるので表示された場合は報告をお願いします + もしかしたら正常な処理でも表示されるかもしれませんが、その際も報告をお願いします + 本来エラー、実は正常、どちらにしてもこれが表示されるのはバグです + + (conf/) + battle_athena.conf player_skill_partner_check追加 + (db/) + skill_db.txt アスペルシオの属性を聖に変更 + (doc/) + conf_ref.txt player_skill_partner_check説明追加 + (login/) + login.c + parse_login() 0x200パケット対応 + (map/) + mob.c NULLチェックでほぼ全部 + storage.c NULLチェックでほぼ全部 + battle.h 変更 + battle.c + battle_calc_magic_attack() アスペルシオを追加、FWを変更 + battle_config_read() 設定追加 + clif.c + clif_getareachar_skillunit() 調査結果の反映 + clif_skill_setunit() 同上 + [1001と1002の間の変更点] + skill.c NULLチェックを沢山 + skill_castend_damage_id() アスペルシオ追加 + skill_castend_nodamage_id() アスペルシオ、プロボック処理変更 + skill_castend_id() アスペルシオ処理変更 + skill_check_condition_char_sub() player_skill_partner_checkに対応 + skill_check_condition_use_sub() 同上 + skill_use_id() 同上 + skill_check_condition() 同上&デリュージ対応 + skill_status_change_timer() ハイディング修正、ダンス演奏合奏中のSP消費実装 + skill_initunitgroup() ダンスSP消費用変更 + skill_status_change_start() 同上&プロボックをボスに効かないように(でもbattle.cで止めてるから通常ここまで来ない) + +-------------------- +//1002 by ぴざまん +・ポータルバグ修正 +・スキル関係のNullチェック強化(by(凸)) + (map/) + skill.c + skill_castend_map() 修正 + +-------------------- +//1001 by (凸) +・0x1c9でいくつかパケットを見比べて変化のないところを固定値で埋め込み(今後情報が集まると変わる可能性大) +・ダンス中はSPだけ回復しないように変更 +・聖体で相方のSPが10以下だと使用失敗にして使用したらSPを10減らしてみる(未確認) +・合奏のスキル使用パケットを若干変更 + + (map/) + clif.c + clif_getareachar_skillunit() 0x1c9の穴埋め開始 + clif_skill_setunit() 0x1c9の穴埋め開始 + pc.c + pc_natural_heal_sub() ダンス中はSPのみ回復しないように変更 + skill.c + skill_check_condition() 変更 + skill_check_condition_char_sub() 聖体は相方のSPチェックするように変更 + skill_check_condition_use_sub() 聖体は相方のSPを減らすように変更 + +-------------------- +//1000 by ぴざまん +・0999の変更取り戻し +・トラップの巻き込み実装 +・イドゥンの林檎でNPCまで回復した(ように見える)問題修正(未テスト) +・デモンストレーションのエフェクト変更(こちらに明記) + (map/) + skill.c + skill_count_target() 追加 + skill_unit_onplace()、skill_trap_splash() 変更 +-------------------- +//0999 by eAthena Dev Team (Yor's Fixes) +(login/) + added email for accounts +(char/) + added email for character deletion +-------------------- +//0998 by (凸) +・battle.cで引数の存在を確認せずに値を見に行ってる関数をいくつか修正 +・ダンス中は座れないようにした(本鯖相違スレッド part2 >>114 DoTさん) +・ダンス中はHP、SPが回復しないように変更(同上) +・ダンス中は通常攻撃できないようにした(本鯖相違スレッド part2 >>116 ・・・さん) +・合奏中片方が落ちた場合、残ったほうで演奏を継続するようにした(同上) +・合奏中はアドリブ以外できないように変更(同上) +・合奏発動条件にダンス中じゃない&座っていないを追加(本鯖相違スレッド part2 >>118 ろろさん) +・阿修羅使用後にHPも回復しなかったのを修正 + + (map/) + battle.c + battle_counttargeted() 修正 + battle_get系 たぶん全部修正 + clif.c + clif_parse_WalkToXY() 合奏の判断方法の変更 + clif_parse_ActionRequest() ダンス中は殴らない座らないように変更 + map.c + map_quit() ダンス中断追加 + mob.c + mob_damage() skill_stop_dancingの引数増加による変更 + pc.c + pc_setpos() 同上 + pc_damage() 同上 + pc_equipitem() 同上 + pc_natural_heal_sub() ダンス中は自然回復しないように&阿修羅時はSPのみ回復しないように + skill.c + skill_castend_nodamage_id() skill_stop_dancingの引数増加による変更 + skill_status_change_start() 同上 + skill_check_condition_char_sub() 相手がダンス中や座っていても合奏できないように変更 + skill_check_condition_use_sub() 同上 + skill_use_id() 合奏の判断方法の変更&合奏中はアドリブ以外禁止に + skill_status_change_end() 合奏のダンス状態解除は相手のval4を0にするようにした + skill_is_danceskill() 戻り値変更 + skill_stop_dancing() 引数増加、合奏で片方だけ落ちたときの処理追加 + skill_delunitgroup() 合奏時のステータス変更処理を↑に移した + skill_clear_unitgroup() 自分のbl->idとユニットグループのgroup->src_idが違うときは削除しないように変更 + skill.h 変更 + +-------------------- +//0997 by (凸) +・二人で合奏、三人で聖体を実装 + 合奏 バード・ダンサーが隣接したセルにいて同じスキルを持っている時に発動 + スキルレベルは両者のスキルレベルの中間 + 本鯖仕様が分からないけど斜め隣接もOK + 聖体 使用者のX軸で-1と+1の場所に一人ずつアコライトかプリーストがいる時に発動すると思う(未テスト) + 使用者 ○ アコプリ ● + OK ●○● + + NG ● + ○● +・トーキーボックスを使って設置時に座っていた時はスキル使用失敗にしてみた + + (db/) + item_db.txt 村正の呪い率を5%に(by e2さん) + (map/) + skill.c + skill_check_condition_char_sub() 追加 + skill_check_condition_use_sub() 追加 + skill_check_condition() 変更 + skill_use_id() 変更 + skill_initunitgroup() 変更 + skill_delunitgroup() 変更 + clif.c + clif_parse_UseSkillToPos() 変更 + +-------------------- +//0996 by (凸) +・アドリブの5秒制限をcast_db.txtのupkeep_time2で制御できるように変更 +・村正で自分を呪わせるためにbonus2 bAddEff2を追加 +・呪われていて終了できない時にも「今は終了できません」が表示されるようにした +・ダンスエフェクト等移動時に効果の適用判断が移動前に行われていたのを移動後に変更&使わなくていい変数を廃止 + + (db/) + cast_db.txt + const.txt + item_db.txt + (doc/) + item_bonus.txt + (src/) + clif.c + clif_parse_QuitGame() 変更 + map.h addeff2,arrow_addeff2 追加 + pc.c + pc_calcstatus() 変更 + pc_bonus2() 変更 + skill.c + skill_additional_effect() 変更 + skill_check_condition() 変更 + skill_unit_move_unit_group() 変更 + +-------------------- +//0995 by (凸) +・battle.pet_lootitemのデフォルトがyesになっていたのを修正 +・battle.pet_lootitemの適用をforeach前でやるように修正 +・ペットの初期化でpd->lootitemがある時しか初期化されていなかったのを修正 +・領域が移動して対象が領域から抜けても効果が解除されない問題を修正 +・アドリブはダンス発動から5秒以上経たないと使用できないようにした + + (map/) + pet.c + pet_data_init() 修正 + pet_ai_sub_hard() 修正 + pet_ai_sub_hard_lootsearch() 修正 + skill.c + skill_blown() 変更 + skill_unit_onlimit() エラーメッセージ修正 + skill_check_condition() 変更 + skill_initunitgroup() sd_data[SC_DANCING].val3にgettick() + skill_unit_move_unit_group_sub() 追加 + skill_unit_move_unit_group() 変更 + skill.h skill_unit_move_unit_group() 引数変更 + battle.c + battle_config_read() pet_lootitem=0に修正 + pc.c + pc_walk() 変更 + +-------------------- +//0994 by huge +・battle.pet_lootitemが適応されていなかったのを修正。 +・ペットにパフォーマンスをさせた後、10秒間くらいは拾わせないように。 + + (map/) + map.h pet_dataにlootitem_timer追加。 + pet.c + pet_ai_sub_hard_lootsearch() 修正。 + pet_lootitem_drop() 修正。 + +-------------------- +//0993 by (凸) +・一人で合奏だけど合奏スキル中は動けないように +・アンコール実装。直前に使ったダンススキルを半分のSPで使えます +・ダンス中に移動するとエフェクトも移動するようにした +・未実装のスキルが使われるとUnknown skillと表示されることがあるかもしれません +・Sageのキャストキャンセルで実は前のスキルを覚えていなかった問題の修正 + + (map/) + clif.c + clif_parse_WalkToXY() 変更 + map.h アンコール用変数の追加 + pc.c + pc_walk() + skill.c + skill_blown + skill_castend_nodamage_id + skill_unitsetting() 変更 + skill_unit_onplace() 罠で同じ処理をしているcaseをまとめた + skill_unit_onout() 使われてないunit2を削除 + skill_check_condition() 変更 + skill_use_id + skill_initunitgroup() 使ったダンススキルを変数に入れるようにした + skill_unit_move_unit_group() 追加 + skill.h 変更 + +-------------------- +//0992 by nokia + +map_quitを修正してメモリを釈放する時何度もを釈放するためメモリの間違いが起こる問題を招く + + (map/) + map.c + map_quit() + +-------------------- +//0991 by (凸) +・トーキーボックスを自分が踏んでも発動しない本鯖仕様に変更 +・スキル詠唱中とディレイ中はクライアントを終了できないようにしたけど、敵に攻撃されているときは終了できます(ごめんなさいっ!!) + + (map/) + clif.c + clif_parse_QuitGame() 変更 + skill.c + skill_unitsetting() 変更 + +-------------------- +//0990 by ぴざまん +・一部のトラップを範囲攻撃に変更(巻き込みは未実装)。 +・mapflagにpvp_nocalcrankとpvp_nightmaredrop追加。 + ・mapflagpvp_nocalcrankdummy +  PvPによるランキング計算をしないようにします。 + ・mapflagpvp_nightmaredrop,, +  PvPにて死亡した場合、の確率でアイテムをドロップします。 +  : ドロップするアイテムIDを指定します。randomと記述すると所持品からランダムにドロップします。 +  : ドロップするアイテムのタイプを指定します。inventory:所持品 equip:装備品 all:全部 +  : ドロップする確率です。万分率で指定します。 + (map/) + skill.c + skill_unit_onplace() 変更 + skill_trap_splash() 追加 + pc.c + pc_damage() 変更 + npc.c + npc_parse_mapflag() 変更 + map.h + map_dataにメンバ追加 + (conf/) + mapflag.txt + ナイトメアモードにドロップ設定追加 + +-------------------- +//0989 by (凸) +・スプリングトラップを某所で見たSSを元に実装してみた。違ったら相違スレへ +・ディテクティングを某所で見た解説文を元に実装してみた。違ったら相違スレへ +・キャストキャンセル時のdelete_timerエラーに追加でスキルIDを表示するようにした。あわせて報告するとエラーの原因が分かるかも + + (map/) + skill.c + skill_castend_nodamage_id() 変更 + skill_castend_pos2() 変更 + skill_castcancel() 変更 + +-------------------- +//0988 by (凸) +・トーキーボックスは常に足元に置けるように変更とKalenさんに貰った情報等を元にパケットを本鯖にあわせてみた +・ショックウェーブトラップに効果を追加したつもり(未確認) +・ブラストマインとクレイモアトラップを殴ると吹き飛ぶようにした +・リムーブトラップで罠(skill_require_dbで指定したアイテム)を回収できるようにした +・↑の実装により罠の時間切れで罠が出るオリジナル仕様はコメントアウト +・ブラストマインの効果時間が長いのを修正 + + (db/) + cast_db.txt + (map/) + battle.c + battle_check_target() 変更 + mob.c + mobskill_castend_pos() 変更 + skill.c + skill_additional_effect() 変更 + skill_blown() 変更 + skill_castend_nodamage_id() 変更 + skill_castend_pos2() 変更 + skill_unitsetting() 変更 + skill_unit_onplace() 変更 + skill_unit_ondamaged() 変更 + skill_castend_pos() 変更 + skill_unit_timer_sub() 変更 + +-------------------- +//0987 by 胡蝶蘭 + +・ユーザー定義関数/サブルーティンに引数を指定可能に + 詳しくは script_ref.txt を参照 + + (map/) + scirpt.c + buildin_getarg()追加 + buildin_callsub(),buildin_callfunc(),run_func()修正 + (doc/) + script_ref.txt + 引数についての説明追加 + +・getguildname,getpartyname,getcastlename,strcharinfo修正 + C_STRで定数文字列(C_CONSTSTR)を返していた問題修正 + strcharinfoでギルド名などを所得する際、未所属だったときの問題 + + (map/) + script.c + buildin_getguildname(),buildin_getpartyname() + buildin_getcastlename(),buildin_strcharinfo() + +-------------------- +//0986 by (凸) +・client_packetの記述から推察してトーキーボックスを実装してみたつもり + + (db/) + skill_db.txt + (map/) + clif.c + clif_talkiebox() 追加 + clif_parse_UseSkillToPos() 変更 + clif_parse() 変更 + clif.h 変更 + map.h 変更 + skill.c + skill_castend_pos2() 変更 + skill_unitsetting() 変更 + skill_unit_onplace() 変更 + +-------------------- +//0985 by (凸) +・サーバーsnapshot +・/script/extensionに語り部を追加したり +・0984でAthena雑談スレッド part3>>92 Michaelさんの修正を取り込んでた +・バグ報告スレッド part5 >>45に転載されてた あやねさんの修正を取り込み +・バグ報告スレッド part5 >>54 rariさんのたぬき帽修正を取り込み + + (script/extension/) + npc_event_kataribe6.txt 追加 + npc_event_kataribe7.txt 追加 + (script/npc/) + quest/npc_event_hat.txt 修正 + job/npc_job_magician.txt 修正 + +-------------------- +//0984 by (凸) +・セージのフリーキャストというスキルの存在を知らなかったので0983の変更を一部戻し +・アイテム更新したけど垂れ猫とインディアンバンダナが装備できない? +・マップフラグとモンスター配置を最新版に + + (db/) + item_db.txt + (conf/) + mapflag.txt + (script/mob/) + npc_monster.txt + (map/) + clif.c + clif_parse_WalkToXY() 修正 + +-------------------- +//0983 by (凸) +・長い詠唱中に歩きまわれた気がするので修正 +・ペットルーレット回転中に対象が叩き殺されたらmap-serverが困るのを修正 +・プロフェッサー ライフ置き換えの手抜き処理をちょっとマシにした + + (map/) + clif.c + clif_parse_WalkToXY() 修正 + pet.c + pet_catch_process2() 修正 + skill.c + skill_castend_nodamage_id() 修正 + +-------------------- +//0982 by (凸) +・転生スキルの〜 + ストーカー リジェクトソード 相手がPCの場合は剣じゃなければ跳ね返さない予定 + プロフェッサー メモライズ 12秒の固定キャストタイム、その後スキル使用のキャストタイムが3回だけ1/3になる + プロフェッサー ライフ置き換え HPを10%減らしてSPを増やす。減ったHPのエフェクトは無しにしてみた +・見切りと回避率増加のFlee上昇がステータス変化時にしか反映されていなかったのを修正 +・0981で自分以外は歩いたら服の色が戻ってしまうのをなんとかしたつもり + + (db/) + skill_require_db.txt + (map/) + battle.c + battle_calc_damage() 修正 + clif.c + clif_movechar() 修正 + clif_getareachar_pc() 修正 + pc.c + pc_calcstatus() 修正 + skill.c + SkillStatusChangeTable 変更 + skill_castend_nodamage_id() 変更 + skill_use_id() 変更 + skill_use_pos() 変更 + skill_status_change_timer() 変更 + skill_status_change_start() 変更 + skill.h 変更 + +-------------------- +//0981 by (凸) +・転生スキルの〜 + ストーカー リジェクトソード 一定確率でダメージを半分にして減らした分を相手に跳ね返すようにした…が、跳ね返したダメージのエフェクト出ません +・服の色を変更&保存している場合にリログすると元の色に戻ってるように見える問題の修正 + + (db/) + skill_db.txt + (map/) + clif.c + clif_parse_LoadEndAck() 修正 + battle.c + battle_calc_damage() 修正 + skill.c + skill_status_change_timer() 修正 + skill_status_change_start() 修正 + +-------------------- +//0980 by (凸) +・例によって転生スキルとモンク関連 + スナイパー シャープシューティング クリティカル率調整? + ハイウィザード ソウルドレイン MSP増量とMobを倒したときにSP(mobLv*(65+15*SkillLv)/100)回復。でも本当は範囲攻撃の場合は回復しないらしい? + ハイウィザード 魔法力増幅 使ったらMATKがSkillLv%増量。次のスキル使用時に元に戻る + モンク 気奪 ちょっと先取りして20%の確率で敵のLv*2のSPを吸収。成功したときはターゲットを取得するようにしてみた +・アイテム名をjROウンバラに準拠させてみたつもり + + (db/) + cast_db.txt + item_db.txt + (map/) + battle.c + battle_calc_pc_weapon_attack() 変更 + mob.c + mob_damage() 変更 + pc.c + pc_calcstatus() 変更 + skill.c + skill_castend_nodamage_id() 変更 + skill_use_id() 変更 + skill_use_pos() 変更 + skill_status_change_end() 変更 + skill_status_change_timer() 変更 + skill_status_change_start() 変更 + +-------------------- +//0979 by (凸) +・転生スキルをちょっと調整 + ハイウィザード マジッククラッシャー 武器攻撃でBaseATK計算をMATK2でしてみる +・息吹を本鯖仕様風にHPとSPの回復タイマーを分けて座っていなくても動かなければタイマーが進むようにした +・阿修羅使用後にHPとSPが5分間自然回復しない本鯖使用風にした(csat_db.txtのupkeep_time2で調整可能) +・古いgccでskill_unit_timer_sub_onplace()あたりでコンパイルエラーになったのを修正 + + (db/) + cast_db.txt + (map/) + battle.c + battle_calc_pet_weapon_attack() 変更 + battle_calc_mob_weapon_attack() 変更 + battle_calc_pc_weapon_attack() 変更 + map.h + pc.c + pc_authok() 変更 + pc_walk() 変更 + pc_spirit_heal() 削除 + pc_spirit_heal_hp() 追加 + pc_spirit_heal_sp() 追加 + pc_natural_heal_sub() 変更 + skill.c + skill_additional_effect() 変更 + skill_castend_damage_id() 変更 + skill_status_change_start() 変更 + skill_unit_timer_sub_onplace() 修正 + +-------------------- +//0978 by (凸) +・転生スキルを修正したり色々 + スナイパー ファルコンアサルト とりあえず飛ぶだけだと思ってください + スナイパー シャープシューティング ダメージ増加だけど1体だけ + クラウン・ジプシー アローバルカン ダメージ増加と9回攻撃 + ハイウィザード マジッククラッシャー エフェクトだけ + +・アイテム交換で重量の計算が違っていたのを修正 + (doc/) + client_packet.txt パケット長テーブル更新 + (map/) + battle.c + battle_calc_misc_attack() 変更 + battle_calc_pet_weapon_attack() 変更 + battle_calc_mob_weapon_attack() 変更 + battle_calc_pc_weapon_attack() 変更 + clif.c パケット長の定義を更新 + skill.c + skill_castend_damage_id() 変更 + trade.c + trade_tradeadditem() 修正 + +-------------------- +//0977 by (凸) +・転生スキルを修正したり色々 + アサシンクロス メテオアサルト エフェクトが違う? + ロードナイト プレッシャー 必中ダメージにしてみた + ロードナイト オーラブレードの必中damage2が他でも適用されていたのを修正 + ロードナイト ゴスペル エフェクト出現位置の調整 + ハイプリースト アシャンプティオ 効果実装 + ハイプリースト メディテイティオ 効果実装 + ハイプリースト バジリカ SGみたいにMobが侵入しようとすると吹き飛ばされるようにした + ホワイトスミス カートブースト 効果実装 + ホワイトスミス メルトダウン エフェクトと状態異常時間だけ(実際の状態変化は無し) + ホワイトスミス クリエイトコイン 名前入りの金貨とか作れるだけ + ストーカー リジェクトソード エフェクトと状態異常時間だけ(実際の状態変化は無し) + クラウン・ジプシー マリオネットコントロール エフェクトと状態異常時間だけ(実際の状態変化は無し) + プロフェッサー フォグウォール エフェクトと有効時間だけ + スナイパー ウインドウォーク 速度上昇とQM、私を忘れないでがかかると解除されるようにした + スナイパー トゥルーサイト QM、私を忘れないでで解除されるようにしてみた +・トゥルーサイトの綴り間違いを修正 +・storage.cでコンパイル警告が出ないようにしたつもり + + (db/) + cast_db.txt + skill_db.txt + skill_require_db.txt + produce_db.txt + (map/) + battle.c + battle_get_str() 修正 + battle_get_agi() 修正 + battle_get_vit() 修正 + battle_get_int() 修正 + battle_get_dex() 修正 + battle_get_luk() 修正 + battle_get_flee() 修正 + battle_get_hit() 修正 + battle_get_critical() 修正 + battle_get_baseatk() 修正 + battle_get_atk() 修正 + battle_get_atk2() 修正 + battle_get_def() 修正 + battle_get_def2() 修正 + battle_get_speed() 修正 + battle_calc_damage() 修正 + battle_calc_pet_weapon_attack() 変更 + battle_calc_mob_weapon_attack() 変更 + battle_calc_pc_weapon_attack() 変更 + pc.c + pc_calcstatus() 修正 + skill.c + skill_get_unit_id() 修正 + skill_additional_effect() 修正 + skill_castend_nodamage_id() 修正 + skill_castend_pos2() 修正 + skill_unit_group() 修正 + skill_unit_onplace() 修正 + skill_unit_onout() 修正 + skill_castend_pos() 修正 + skill_check_condition() 修正 + skill_status_change_end() 修正 + skill_status_change_start() 修正 + skill_can_produce_mix() 修正 + skill_produce_mix() 修正 + skill.h 修正 + storage.c + storage_comp_item() 修正 + storage.h 修正 + +-------------------- +//0976 by (凸) +・転生スキルを修正したり色々 +・準備だけして実装できてないスキルもあります + ロードナイト オーラブレード 多分こんな感じ? + ロードナイト パリイング 跳ね返すけど攻撃を1回止めるのは未実装 + ロードナイト コンセントレーション インデュア〜は良く分からないので放置 + ロードナイト スパイラルピアース 通常ダメージ増加と重量ダメージ増加と一応5回攻撃(なんか違う気がする) + ロードナイト ヘッドクラッシュ ダメージ増加とステータス変更? + ロードナイト ジョイントビート ダメージ増加とステータス変更? + アサシンクロス アドバンスドカタール研究 たぶんこんな感じ? + スナイパー トゥルーサイト たぶんこんな感じ? + スナイパー ウィンドウォーク たぶんこんな感じ?でも速度上昇とかと競合した時の処理は未実装 + スパイダーウェッブ とりあえずアンクルスネアと同じような感じ&回避率半減 + チャンピオン 狂気功 適当に増やしていたのをちゃんと増やすようにした +・出血状態と骨折状態の取り扱いがよくわかりませんっ!! + + (db/) + cast_db.txt + skill_db.txt + skill_require_db.txt + (doc/) + db_ref.txt + (map/) + battle.c + battle_get_str() 修正 + battle_get_agi() 修正 + battle_get_vit() 修正 + battle_get_int() 修正 + battle_get_dex() 修正 + battle_get_luk() 修正 + battle_get_flee() 修正 + battle_get_hit() 修正 + battle_get_critical() 修正 + battle_get_baseatk() 修正 + battle_get_atk() 修正 + battle_get_atk2() 修正 + battle_get_def() 修正 + battle_get_def2() 修正 + battle_get_speed() 修正 + battle_calc_damage() 修正 + clif.c + clif_parse_WalkToXY() 修正 + mob.c + mob_can_move() 修正 + mobskill_castend_pos() 修正 + pc.c + pc_calcstatus() 修正 + pc_checkallowskill() 修正 + skill.c + skill_get_unit_id() 修正 + skill_additional_effect() 修正 + skill_castend_nodamage_id() 修正 + skill_castend_pos2() 修正 + skill_unit_group() 修正 + skill_unit_onplace() 修正 + skill_unit_onout() 修正 + skill_castend_pos() 修正 + skill_check_condition() 修正 + skill_status_change_end() 修正 + skill_status_change_start() 修正 + skill_readdb() 修正 + skill.h 修正 +-------------------- +//0975 by Sin +・0973で実装されたスクリプトによるBaseLv, JobLvの変更時に、 + ステータスポイントやスキルポイントを取得できるように修正。 + ※質問スレpart5 >>115 悩める人 さんのpc.cを参考にさせて頂きました。多謝。 + + (map/) + pc.c + pc_setparam() + case SP_BASELEVEL: 修正 + case SP_JOBLEVEL: 修正 +-------------------- +//0974 by latte +・グランドクロスを本鯖に基づき修正 + アンデッド悪魔強制暗闇付与 + 反動ダメージ半減、モーションなし + MOB(PC)が重なったときのHIT数 + %UP系武器カード効果なし + 属性相性二重計算 + MOBダメージ表示白 + + 後半4項目は設定可 + +・戦闘基本計算を本鯖に基づき微修正(DEXサイズ補正、弓最低ダメ、PCサイズ補正) + +・完全回避 + スタン等で完全回避が発生しなかったのを修正 + AGIVITペナルティが完全回避の敵もカウントして計算されていたのを修正 設定可 + オートカウンターは未修正 + +・倉庫を閉じるとき、アイテムIDでソートするようにした + +・kalenさんのプロ1執事NPCスクリプトを改造して + 商業防衛値、投資金額、宝箱の数を本鯖に準拠(商業値は1~100) + 全砦に設置 + + (/script/npc) + aldeg_cas01.txt ... prtg_cas05.txt 修正 + (/script/npc/gvg) + aldeg_cas01.txt ... prtg_cas05.txt 追加 + tbox.txt 追加 + + (/conf) + battle_athena.conf + 6項目追加 + + (/map) + mob.c/mob.h + mob_attack() 修正 + mob_counttargeted_sub(),mob_counttargeted() 修正 + mobskill_use() 修正(↑の引数だけ) + pc.c/pc.h + pc_counttargeted_sub(),pc_counttargeted() 修正 + pc_attack_timer() 修正 + pet.c + pet_attack() 修正 + + map.h + pc_data, mob_data, map_data 変数1つ追加 + enum1つ追加 + map.c/map.h + map_count_oncell() 追加 skill.cでよかったかも・・・ + + skill.c + GX関連修正(skill_additional_effect(), skill_attack(), skill_castend_damage_id(), skill_unit_onplace()) + + battle.c 修正 + battle.h 修正 + + storage.c/storage.h + storage_comp_item() 追加 + sortage_sortitem(), sortage_gsortitem() 追加 + storage_storageclose(), storage_guild_storageclose() 修正 +-------------------- +//0973 by 獅子o^.^o +・スクリプトのBASELEVEL,JOBLEVEL命令追加 + 例: set BASELEVEL,1; + 例: set JOBLEVEL,1; + (map/) + pc.c + pc_setparam() + case SP_BASELEVEL: 項目追加 + case SP_JOBLEVEL: 項目追加 + +-------------------- +//0972 by (凸) +・転生スキルをエフェクトだけいくつか追加したり +・状態変化はそのうち誰かが + エフェクト(ステータス変化アイコン含む)のみ + SC_AURABLADE: /* オーラブレード */ + SC_PARRYING: /* パリイング */ + SC_CONCENTRATION: /* コンセントレーション */ + SC_TENSIONRELAX: /* テンションリラックス */ + SC_BERSERK: /* バーサーク */ + SC_ASSUMPTIO: /* */ + SC_TURESIGHT: /* トゥルーサイト */ + SC_CARTBOOST: /* カートブースト */ + SC_WINDWALK: /* ウインドウォーク */ + + (db/) + cast_db.txt + (map/) + skill.h + skill.c + SkillStatusChangeTable[] 項目追加 + skill_castend_nodamage_id() 項目追加 + skill_status_change_end() 項目追加 + skill_status_change_start() 項目追加 + +-------------------- +//0971 by (凸) +・atcommand.hに残っていたjobchange2とかの残骸を削除 +・転生スキルをエフェクトだけいくつか追加したりチャンピオンはそれなりに追加したり + エフェクトのみ + ハイプリースト バジリカ(HP_BASILICA) + ホワイトスミス カートブースト(WS_CARTBOOST) + スナイパー トゥルーサイト(SN_SIGHT) + ジプシー 月明りの泉に落ちる花びら(CG_MOONLIT) + パラディン ゴスペル(PA_GOSPEL) + 追加ダメージ等なし + ロードナイト ヘッドクラッシュ(LK_HEADCRUSH) + ロードナイト ジョイントビート(LK_JOINTBEAT) + ロードナイト スパイラルピアース(LK_SPIRALPIERCE) + パラディン プレッシャー(PA_PRESSURE) + パラディン サクリファイス(PA_SACRIFICE) + それなり(コンボは繋がりますがディレイは適当、ダメージ追加はあるけどそれ以外の追加効果は無し) + チャンピオン 猛虎硬派山(CH_PALMSTRIKE) + チャンピオン 伏虎拳(CH_TIGERFIST) + チャンピオン 連柱崩撃(CH_CHAINCRUSH) + チャンピオン 狂気功(CH_SOULCOLLECT) + + (db/) + cast_db.txt + skill_db.txt + skill_require_db.txt + (map/) + atcommand.h ゴミ削除 + battle.c + battle_calc_pet_weapon_attack() 変更 + battle_calc_mob_weapon_attack() 変更 + battle_calc_pc_weapon_attack() 変更 + clif.c + clif_parse_UseSkillToId() 変更 + skill.c + skill_get_unit_id() 項目追加 + skill_attack() チャンピオンコンボ処理追加 + skill_castend_damage_id() 変更 + skill_castend_nodamage_id() 変更 + skill_castend_id() 変更 + skill_unitsetting() 変更 + skill_check_condition() 変更 + skill_use_id() 変更 + +-------------------- +//0970 by (凸) +・ドレイクのウォーターボールが異常に痛い(121発食らう)のでLv5以上の場合は25発に制限 +・シグナムクルシスの計算式を14+SkillLvから10+SkillLv*2変更 +・ソースの気が向いたところに落書き +・DB関係をまとめて同梱 + + (map/) + battle.c コメント_〆(。。)カキカキ + 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 ぴざまん + +・白刃取り状態で片方が死亡した場合、片方の白刃取りが解除されない問題修正 +・battle_athena.confに項目追加 + ペット・プレイヤー・モンスターの無属性通常攻撃を属性無しにするか否かを設定できます + 詳しくはconf_refを。 +・@コマンド@idsearch実装 + ロードしたitem_dbから検索語句にマッチするアイテムとIDを羅列するコマンドです + 例えば「@idsearch レイ」と入力した場合、ブレイドやレイドリックカード等が引っかかります +・アシッドテラーとデモンストレーション実装 + 装備破壊は未実装です +・イドゥンの林檎の回復仕様を丸ごと変更。 + (map/) + battle.c + battle.h + 属性補正の修正やアシッドテラー・デモンストレーションのダメージ算出式追加等。 + battle_configに項目追加 + skill.c + skill_idun_heal()追加。foreachinareaで処理するように変更 + アシッドテラーとデモンストレーションの処理追加。 + atcommand.c + atcommand.h + @idsearch追加。 + +-------------------- +//0968 by 胡蝶蘭 + +・キャラクターIDが使いまわされないように修正 +・キャラクター削除時、パーティー、ギルドを脱退するように修正 +・アカウント削除時、キャラクターと倉庫を削除するように修正 +・倉庫/ギルド倉庫削除時、倉庫内のペットを削除するように修正 + ・注意:ログインしているアカウントを削除した場合の動作は不明 + + (char/) + char.c + パケット2730の処理、char_delete()追加、削除処理修正など + int_storage.c/int_party.c/int_guild.c/int_party.h/int_guild.h + inter_party_leave(),inter_guild_leave()追加、 + inter_storage_delete(),inter_guild_storage_delete()修正など + (login/) + login.c + parse_admin()をアカウント削除時にパケット2730を送るように修正 + +・athena-start stop で停止させた場合、データが保存されない問題を修正 + killで送るシグナルをSIGKILLからSIGTERMに変更。 + どうしてもSIGKILLを送りたい場合は athena-start kill を使ってください。 + + athena-start + stop修正、kill追加 + +-------------------- +//0967 by Asong +・モンスターの残影を実装。 + 通常モンスターはスキルによるフィルターがかからないので残像が出ません。 + PC型モンスターには残像が出ます。 +・モンスタースキル使用対象を追加。 + around5〜around8はターゲットの周辺セルを対象にします。 +  +  (map) +  mob.c +  mobskill_use() 修正 +  mob_readskill() 修正 +  mob.h 修正 +  skill.c +  skill_castend_pos2() 修正 + +-------------------- +//0966 by (凸) +・サーバーsnapshot +・ディレクトリ構造を変更(common,login,char,mapは/src以下に移転) + それに伴うMakefile等のパス書き換え +・npc_turtle.txtをnpc_town_alberta.txtに統合 +・モンクのコンボに関するディレイを変更 +・battle_config.enemy_criticalのデフォルトをnoに変更 +・転生職等を無効にするenable_upper_classの追加 +・@joblvup,@charjlvlでJobレベルが最高のときに負数を指定してもレベルを下げられなかった問題を修正 + + (conf) + battle_athena.conf 修正 + (doc) + conf_ref.txt 修正 + (map) + atcommand.c + atcommand_joblevelup() 修正 + atcommand_character_joblevel() 修正 + battle.c + battle_calc_attack() 修正 + battle_config_read() 修正 + battle.h 修正 + pc.c + pc_calc_skilltree() 修正 + pc_calc_base_job() 修正 + pc_jobchange() 修正 + pc_readdb() 修正 + skill.c + skill_attack() 修正 +-------------------- +//0965 by ぴざまん +・@mapexit実行時全セッションをkickするように変更。 +・白刃取り時に片方が倒れても、もう片方の白刃が解除されない問題修正。(未テスト) +・スティール情報公開機能実装。(未テスト) + スティールに成功すると、何をスティールしたのか + 画面内のPTメンバー全員に知らせる機能です。 + battle_athena.confのshow_steal_in_same_partyで設定できます。 + オリジナルアップデートの為、デフォルトはnoにしています。 +・イドゥンの林檎の回復効果実装。 + + (conf/) + battle_athena.confに項目追加。 + (map/) + atcommand.c + atcommand_mapexit() 修正。 + pc.c + pc_steal_item() 修正。 + pc_show_steal() 追加。 + skill.c + skill_unitsetting()、skill_unit_onplace() 修正。 + battle.c + battle_config_read() 修正。 + battle.h 修正。 + (doc/) + conf_ref.txt 抜けてたのを色々追加。 + +-------------------- +//0964 by (凸) + +・この前追加したskill_tree2.txtを廃止したので削除してください +・skill_tree.txtのフォーマットを変更&Kalenさんなどの情報を元に転生ツリーの見直し +・それにともなってpc.cのファイル読み出し部分などを変更 +・Athena雑談スレッド part3 >>14 miyaさんの指摘があるまですっかり忘れていたatcommand_athena.confの修正を同梱 + + (conf/) + atcommand_athena.conf 修正 + (db/) + skill_tree.txt 修正 + skill_tree2.txt 廃止 + (map/) + map.h PC_CLASS_BASE等追加 + pc.c + pc_calc_skilltree() 修正 + pc_allskillup() 修正 + pc_readdb() 修正 + +-------------------- +//0963 by (凸) + +・@jobchange2, @jobchange3廃止 @jobchangeに引数追加 @help参照 + 例: @jobchange2 10 → @jobchange 10 1 +・同様に@charjob2, @charjob3廃止 @charjobに引数追加 @help参照 + 例: @charjob2 10 ほげほげ → @charjob 10 1 ほげほげ +・同様にスクリプトのjobchange2, jobchange3命令廃止 jobchangeに引数追加 script_ref.txt参照 + 例: jobchange2 10; → jobchange 10,1; +・↑どれも追加された引数は省略可能です。なので、転生ノービスは現状のスクリプトで転生一次職に転職できます。 + 例: Novice High → @jobchange 10 → Whitesmith + Novice → @jobchange 10 → Blacksmith +・スクリプトから転生しているか判定するためにUpperを追加しました。Upper 0=通常, 1=転生, 2=養子 + Upper=0の時にBaseLevel=99なら転生させる〜とかそういうスクリプト誰か書いてください + その時に元の職業は記憶していないので永続変数とかで覚えさせて判定させないと転生後何にでも転職できちゃう? +・バイオプラントとスフィアマインで呼び出されるMobの名前を--ja--にしてmob_db.txtから読むようにした + + (conf/) + help.txt 修正 + (db/) + const.txt + (doc/) + help.txt 修正 + script_ref.txt 修正 + (map/) + atcommand.c + atcommand_jobchange() 修正 + atcommand_jobchange2() 削除 + atcommand_jobchange3() 削除 + atcommand_character_job() 修正 + atcommand_character_job2() 削除 + atcommand_character_job3() 削除 + map.h 修正 + pc.c + pc_readparam() 修正 + pc_jobchange() 修正 + pc.h 修正 + script.c + buildin_jobchange() 修正 + buildin_jobchange2() 削除 + buildin_jobchange3() 削除 + skill.c + skill_castend_pos2() 修正 + +-------------------- +//0962 by (凸) + +・職業は0〜23で処理したいので転生職用のスキルツリー追加、eAthenaを参考に拡張 + っていうか韓国本サーバでの実装の資料が見当たらないので適当 +・sakexe.exeを解析してskill_db.txt変更、これもeAthenaを参考に拡張 + どれが本サーバで実装されているスキルか分かりませんっ!! +※スキルツリーが表示されたからといって使えるわけじゃありませんっ!! + + (common/) + mmo.h 定数修正 + (db/) + skill_db.txt 変更 + skill_require_db.txt 変更 + skill_tree2.txt 追加 + (map/) + skill.h 定数修正 + pc.c + pc_calcstatus() 修正 + pc_allskillup() 修正 + pc_calc_skilltree() 修正 + pc_readdb() 修正 + +-------------------- +//0961 by 胡蝶蘭 + +・スクリプトにサブルーチン/ユーザー定義関数機能追加 + 詳しくはサンプルとscript_ref.txtを読んでください。 + 地味に大改造なので、スクリプト関係でバグがあるかもしれません。 + + (map/) + map.h/map.c + struct map_session_data にスクリプト情報退避用のメンバ追加 + map_quit()修正 + script.h/script.c + 色々修正(run_script(),run_func()が主) + npc.c + npc_parse_function()追加他 + (conf/sample) + npc_test_func.txt + ユーザー定義関数/サブルーティンのテストスクリプト + (doc/) + script_ref.txt + サブルーティンなどの説明追加 + +-------------------- +//0960 by (凸) +・本鯖相違スレッド part2 >>62 KKさんのアンクルスネア修正を同梱 +・バグ報告スレッド part5 >>14-16 rbさんのバグ修正を同梱 +・For English User Forum >>15 Mugendaiさんの指摘で0x1d7を使うのはVal>255に修正(0xc3のValは1バイトだから0x1d7を使うのかと納得) +・pc_calc_base_job()を変更して元jobだけでなくノビか一次職か二次職(type)、通常か転生か養子(upper)を返すようにした + + (map/) + atcommand.c + atcommand_joblevelup() 修正 + atcommand_character_joblevel() 修正 + clif.c + clif_changelook() 修正 + pc.h 修正 + pc.c + pc_setrestartvalue() 修正 + pc_equippoint() 修正 + pc_isequip() 修正 + pc_calc_skilltree() 修正 + pc_calcstatus() 修正 + pc_isUseitem() 修正 + pc_calc_base_job() 修正 + pc_allskillup() 修正 + pc_damage() 修正 + pc_jobchange() 修正 + pc_equipitem() 修正 + script.c + buildin_changesex() 修正 + skill.c + skill_castend_nodamage_id() 修正 + skill_unit_onplace() 修正 + +-------------------- +//0959 by (凸) +・help.txtがdocじゃなくてconfのが読み出されてた_| ̄|○ +・gamejokeを参考に転生二次職のステータス加重値をjob_db2-2.txtに記述 +・スクリプトにjobchange2とjobchange3を追加それぞれ転生職と養子職へ転職させる命令です + + (conf/) + help.txt 修正 + (db/) + job_db2.txt 修正 + job_db2-2.txt 追加 + (doc/) + help.txt 修正 + script_ref.txt 修正 + (map/) + pc.c + pc_calcstatus() 修正 + pc_readdb() 修正 + script.c + buildin_jobchange() 修正 + buildin_jobchange2() 追加 + buildin_jobchange3() 追加 + +-------------------- +//0958 by (凸) +・転生職方面の実装を色々 +・重量制限は良く分からないので元の職業の値をそのまま使っています(モンク=チャンピオン等) +・装備品も同上、HPやSPのテーブルも同上なので、転生してもHPなどが増えないガッカリ仕様です + + (map/) + atcommand.c + atcommand_joblevelup() 修正 + atcommand_character_joblevel() 修正 + pc.c + pc_setrestartvalue() 修正 + pc_equippoint() 修正 + pc_isequip() 修正 + pc_calcstatus() 修正 + pc_isUseitem() 修正 + pc_calc_base_job() 追加 + pc_damage() 修正 + pc_jobchange() 修正 + pc_equipitem() 修正 + pc.h 修正 + script.c + buildin_changesex() 修正 + skill.c + skill_castend_nodamage_id() 修正 + +-------------------- +//0957 by (凸) +・@charjob2と@charjob3を追加、関係としては@charjob⇔@jobchange、@charjob2⇔@jobchange2、(ry +・@mapexitを追加、map-serverを落とすコマンドですatcommand_athena.confでは99設定にされてますので使用には十分注意してください。 + + (map/) + atcommand.c + atcommand_character_job2() 追加 + atcommand_character_job3() 追加 + atcommand.h 修正 + (conf/) + atcommand_athena.conf 修正 + (doc/) + help.txt 修正 + +-------------------- +//0956 by (凸) +・転生職仮実装(@jobchange2)、見た目と経験値テーブルだけです +・養子職仮実装(@jobchange3)、見た目だけです現状では経験値は転生二次職と同じというマゾ仕様 +※上記2点は転生職が実装されているクライアントでなければ実行するとエラー落ちするので注意!! + その後直接セーブデータを弄らないとキャラセレにも行けなくなります!! +・Athena雑談スレッド part2 >>149 稀枝さんの報告を元にガーディアンを修正 +・砦以外でガーディアンとかエンペリウムを殴るとmap-serverが落ちていたのも修正(未確認) +・スパノビのJobテーブルはFor English User Forum >>13 kingboさんのデータを元に修正 +・転生職の経験値テーブルはOWNを参照してBase99の経験値は不明だったので適当に設定 + + (map/) + atcommand.c + atcommand_jobchange() 修正 + atcommand_jobchange2() 追加 + atcommand_jobchange3() 追加 + atcommand.h 修正 + clif.c + clif_changelook() 修正 + pc.c + pc_nextbaseexp() 修正 + pc_nextjobexp() 修正 + pc_jobchange() 修正 + pc_readdb() 修正 + battle.c + battle_calc_damage() 修正 + mob_can_reach() 修正 + +-------------------- +//0955 by huge +・ペットのルート機能。 + ・仕様はmobのルートに近い感じですが、射程を短くしてます。 + ・拾ったアイテムは、パフォーマンスをすると床に落とします。 + ・卵に戻したり、ログオフしたときはPCの手元に入るようにしました。(重量超過はドロップ) + ・拾える個数はルートmob同様の10個ですが、11個目は拾いに行きません。 + ・ルート権の問題から、アイテムにfirst_idが入っていて、それが飼い主以外だったら、何秒経とうと拾いません。(未確認) + ・それと、荷物持ちにされると可哀想なので、重量制限もつけました。これはconfで設定可能です。 +・atcommandで、@whereがうまく働いてなかったので修正(またウチだけかなぁ・・・) +・@memoでmemoする時は、mapflagを無視するように。 +・スフィアマインの名前だけ修正。 + + (conf/) + battle_athena.conf + pet_lootitem,pet_weight 追加 + (doc/) + conf_ref.txt 修正 + (map/) + atcommand.c + atcommand_memo() 修正 + atcommand_where() 修正 + battle.c + battle_config_read() 修正 + battle.h 修正 + map.c + map_quit() 修正 + map.h + pet_data{} 修正 + pc.c + pc_memo() 修正 + pet.c + pet_performance() 修正 + pet_return_egg() 修正 + pet_data_init() 修正 + pet_ai_sub_hard() 修正 + pet_lootitem_drop() 追加 + pet_delay_item_drop2() 追加 + pet_ai_sub_hard_lootsearch() 追加 + pet.h 修正 + skill.c + skill_castend_pos2() 修正 + +-------------------- +//0954 by (凸) +・object_del.batで各server.exeも削除するようにした +・For English User Forum >>11 kingboさんの修正を取り込み +・バグ報告スレッド part5 >>10 Sinさんの修正を取り込み +・ついでに見かけたatcommand_character_joblevelの不具合を修正 +・@コマンドでジョブレベルを上げるときにスパノビはJob70まで対応(未確認) + + (/) + object_del.bat 修正 + (map/) + atcommand.c + atcommand_joblevelup() 修正 + atcommand_character_joblevel() 修正 + atcommand_character_baselevel() 修正 + + 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 (凸) +・mob_skill_db.txtの条件値に0以外入っていなかったのを訂正 +・gcc 2.95でコンパイルできるように訂正(by バグスレpart5 >>2 茜さん) +・↑やLinuxなどを考慮してstartやMakefileなどの改行をLFに変更 +・0952で出たコンパイル警告を出ないように修正 +・0952で更新されなかったconf_ref.txtを修正 + + (/) + start 改行コード変更 + athena-start 改行コード変更 + (db/) + mob_skill_db.txt 修正 + (doc/) + conf_ref.txt 修正 + (login/) + Makefile 改行コード変更 + (map/) + Makefile 改行コード変更 + atcommand.c + atcommand() 宣言位置修正 + atcommand_where() 宣言位置修正 + battle.c + battle_calc_pet_weapon_attack() 修正 + battle_calc_mob_weapon_attack() 修正 + battle_calc_pc_weapon_attack() 修正 + battle_calc_magic_attack() 修正 + clif.c + clif_skill_fail() 宣言位置修正 + guild.c + guild_gvg_eliminate_timer() 宣言位置修正 + mob.c + mob_damage() 宣言位置修正 + script.c + buildin_deletearray() 宣言位置修正 + buildin_getequipcardcnt() 宣言位置修正 + buildin_successremovecards() 宣言位置修正 + +-------------------- +//0952 by CG +・confでDEFとMDEFの計算方法を選択できるように。 + + (conf/) + battle_athena.conf 変更 + (map/) + battle.c + battle_calc_pet_weapon_attack() 修正 + battle_calc_mob_weapon_attack() 修正 + battle_calc_pc_weapon_attack() 修正 + battle_calc_magic_attack() 修正 + battle.h 修正 + +-------------------- +//0951 by (凸) +・サーバーsnapshot +・バグ報告スレッド part4 >>95 KAJIKENさんの修正を同梱 +・同 >>138 バグかな?さんの修正を同梱 +・Athena雑談スレッド part2 >>112 名無しさんのPVPナイトメアモードのアンダークロスマップワープポイントを同梱 +・同 >>96 稀枝さんのnpc_gldcheck.txtを同梱 +・スナップショットにsave/を入れるのをやめました。無い場合はathena-startが作ってくれます +・athena-startでlog/が無い場合に作るように変更 +・その他? + + (/) + athena-start 変更 + (db/) + mob_db.txt 変更 + (conf/) + map_athena.conf 変更 + (conf/extension/) + npc_gldcheck.txt 追加 + (conf/npc/) + npc_event_ice.txt 変更 + npc_job_alchemist.txt 変更 + npc_event_valentine.txt 変更 + npc_town_geffen.txt 変更 + npc_event_whiteday.txt 変更 + npc_event_potion.txt 変更 + npc_town_comodo.txt 変更 + (conf/warp/) + npc_warp_pvp.txt 追加 + +-------------------- +//0950 by (凸) +・mob_dbのModeフラグに以下の物を追加 + 0x40(64) ダメージを1に固定(草やクリスタルなど) + 0x80(128) 攻撃を受けたときに反撃をする +・上記の変更のためmob_db.txtほぼ全部変更、mob_db2.txtを作っている人は + 草など1ダメ固定にはModeに64を足さないと普通にダメージ + その他MobはModeに128を足さないと反撃してこなくなるので注意 + + (db/) + mob_db.txt 修正 + (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 ぴざまん + +・ステータス異常耐性全面修正。 + 耐性算出式全面修正。 + ステータス異常耐性100%のキャラクターには状態異常を行わないように修正。 +・ディスペルの仕様変更。 + 解除したらシステム上問題のあるステータス変化以外片っ端から解除するように修正。 +・フロストダイバーの仕様変更。 + 凍結率修正(マジスレテンプレ準拠)。 +・リカバリーの仕様変更。 + ノンアクティブモンスターに使用するとターゲットがリセットされるように修正。 +・クァグマイアの仕様がアレだったので修正。 + 演奏や属性場と同様にrangeで処理するように修正。 + DEX/AGI半減の影響が詠唱以外にも及ぶ様に修正。 +・スキルターゲット中に死んだ振りを使用してもスキルが回避できない問題修正。 +・白刃取りが動作しない問題修正(cast_dbが抜けてました)。 + (map/) + pc.c + pc_calcstatus()修正 + skill.c + skill_additional_effect()、skill_attack() 修正 + skill_status_change_start()、skill_unitsetting() 修正 + (db/) + cast_db.txt 修正。 + +-------------------- +//0948 by 胡蝶蘭 + +・warpwaitingpcが正しくPCを転送できない問題を修正 +・スクリプトの読み込み時にエラーまたは警告が出る場合、警告音を鳴らすように。 + (流れたログを見ない人対策です) + + (map/) + script.c + buildin_warpwaitingpc()修正 + disp_error_message()修正 + +・atcommand.c修正 + ・atcommand_athena.confのmapmoveを読むように + ・@strなどの省略時の必須レベルを0に。 + ・@paramは使わないのでコメント化 + + (map/) + atcommand.c + 該当個所修正 + +・mobが最大15秒ほど移動しない場合がある問題修正 + ・手抜きでないmob処理で、移動しない時間が7秒以上続かないように修正 + + (map/) + mob.c + mob_ai_sub_hard()修正 + +・快速船員の伊豆港行きの判別式修正 (by ID:F8nKKuY) + (conf/npc/) + npc_town_comodo.txt + +-------------------- +//0947 by (凸) +・取り巻きは取り巻きを召喚しないように修正 +・露天の販売価格の上限をbattle_athena.confで設定できるように修正 + + (conf/) + battle_athena.conf + vending_max_value追加 + (doc/) + conf_ref.txt 修正 + (map/) + skill.c + skill_castend_nodamage_id() 修正 + battle.c + battle_config_read() 修正 + battle.h 修正。 + vending.c + vending_openvending() 修正。 + +-------------------- +//0946 by Kalen +・プロ北Warp見直し +参考:本鯖(1F,2F)らぐなの何か(3F) + (conf/warp/) + npc_warp.txt + +・語り部の2週3週追加(どうせ見ないと思いますが…) + (conf/npc/) + npc_event_kataribe.txt + +-------------------- +//0945 by 胡蝶蘭 + +・NPCタイマーラベルデータが正しくインポートされない問題を修正 +・NPCタイマー初期値やタイマーIDが正しく初期化されない問題を修正 +・NPCのduplicateを行うとアクセス違反が起こる場合がある問題を修正 + + (map/) + npc.c + npc_parse_script修正 + +・パッチアップスレ4の87のpc.cとりこみ + (map/) + pc.c + カード重量制限を元に戻したもの + +-------------------- +//0944 by huge +・ギルドの上納経験値の上限を、confで制限できるように。 +・露店の販売価格を10Mまでに制限。 +・カートの重量制限が一桁下がってたんですが、ウチだけですか?修正してみましたが。 + + (conf/) + battle_athena.conf + guild_exp_limit追加 + (doc/) + conf_ref.txt 修正 + (map/) + atcommand.c + 蘇生時のSP回復で、細かい修正。 + battle.c + battle_config_read() 修正 + battle.h 修正。 + guild.c + guild_change_position() 修正。 + pc.c + pc_calcstatus() 修正。 + vending.c + vending_openvending() 修正。 + +-------------------- +//0943 by (凸) +・battle_athena.confでdead_branch_activeをyesにすると古木の枝で召喚されるモンスターがアクティブになるように変更 +・微妙に変更したclient_packet.txtを同梱 + + (conf/) + battle_athena.conf + dead_branch_active追加 + (doc/) + client_packet.txt 修正 + conf_ref.txt 修正 + (map/) + battle.c + battle_config_read() 修正 + battle.h 修正 + map.h 修正 + mob.c + mob_once_spawn() 修正 + mob_attack() 修正 + mob_target() 修正 + mob_ai_sub_hard_lootsearch() 修正 + mob_ai_sub_hard() 修正 + +・英語スレのkingboさんの変更を同梱 + 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 胡蝶蘭 + +・アクセスコントロールで不正なメモリにアクセスする場合があるバグを修正 + (login/) + login.c + check_ipmask()修正 + +・スクリプトリファレンス少し追加と修正 + (doc/) + script_ref.txt + 修正 + +-------------------- +//0941 by (凸) + +・e2さんの報告を元に召喚された手下のスピードを召喚主と同じにしてみる + + (map/) + battle.c + battle_get_speed() 修正 + mob.c + mob_spawn() 修正 + mob_summonslave() 修正 + +-------------------- +//0940 by End_of_exam + +・ヒールやポーションピッチャーを使用しても回復しないバグを修正(0938〜)。 + + Thanks for Pepermint, reporting the bug that using PotionPitcher with + BluePotion was no effective. + (=ポーションピッチャー+青Pで効果がない事を報告してくれたPepermint氏に感謝) + + (map/) + battle.c + battle_heal() 修正 + +-------------------- +//0939 by (凸) +・cutinパケットを0x145(ファイル名16文字)から0x1b3(64文字)に変更 +・ついでに雑談スレに上げたathena-startを同梱 + + (/) + athena-start saveファイルが無いときに作るように + (map/) + clif.c + clif_cutin() 本鯖パケット準拠に変更 + (doc/) + client_packet.txt 修正 + +-------------------- +//0938 by ぴざまん + +・ポーションピッチャーで青ポを投げてもエフェクトだけだったバグ修正。 +・露店開設が特定のアイテム配置で失敗するバグ修正。 +・スクリプト関数getareadropitem実装。 + 指定エリア内のドロップアイテムをカウントする関数です + + 書式:getareadropitem ,,,,,; +  mapname:対象マップ名(例:prontera.gat) +  x0とx1:対象X座標範囲 +  y0とy1:対象Y座標範囲 +  item:カウントする対象アイテム + + 戻り値:mapname内座標(x0,y0)-(x1,y1)の範囲内に落ちているitemの総個数 +     取得失敗時には-1を返します。 + ・itemの値はIDでもアイテム名("Red_Jemstone"とか)でもいいです。 + + (map/) + battle.c + battle_heal() 修正。 + vending.c + vending_openvending() 修正。 + script.c + ローカルプロトタイプ宣言修正。 + struct buildin_func[] 修正。 + buildin_getareadropitem()、buildin_getareadropitem_sub() 追加。 + +-------------------- +//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 胡蝶蘭 + +・内容の同じスクリプトNPCを何度も記述しなくても言いように修正 + ・NPC定義の"script"と書く部分を"duplicate(NPC名)"とすると、 + 該当のNPCとスクリプトを共有するように。NPC名は表示名ではなく + エクスポートされる名前を指定します。 + <例> +prontera.gat,165,195,1 duplicate(カプラ職員) カプラ職員2 112 + + ・共有元のNPCは同じマップサーバーに存在する必要があるため、 + 同じマップでない場合はduplicateすべきではない。 + ただし、NPCの位置を"-"にすることで、マップ上には存在しないが、 + マップサーバー内には存在するNPCを作成できるので、 + そのNPCを共有元にするのであればどのマップへも共有できる。 + <例> + +- script テスト::test1 112,{ // このNPCグラフィックIDは使用しない +// (略) +} +prontera.gat,165,195,1 duplicate(test1) テスト2 112 +geffen.gat,99,99,1 duplicate(test1) テスト3 112 + + ・上のマップに存在しないNPCはイベントにもすることができる。 + (どのマップサーバーからでも必ず呼び出せるイベントになる) + + (map/) + map.h + struct npc_label_list追加,struct npc_data修正 + npc.c + npc_parse_script()修正 + 不要になったラベルデータベース関連の関数を削除 + +-------------------- +//0934 by ぴざまん + +・MOBの状態異常耐性がやたら高かったのを修正。 +・速度減少の仕様変更(成功率計算式変更・失敗時にはエフェクト無し)。 +・何時の間にか状態異常の継ぎ足し禁止がコメントアウトされていたので戻し。 +・ポイズンリアクトのアイコン表示が無くなっていたので修正(でも出るだけ…) +・白刃取り実装。 + + (map/) + battle.c + battle_weapon_attack() 修正。 + clif.c + clif_parse_WalkToXY()、clif_parse_ActionRequest() 修正。 + clif_parse_TakeItem()、clif_parse_UseItem() 修正。 + clif_parse_DropItem()、clif_parse_EquipItem() 修正。 + clif_parse_UnequipItem() 修正。 + mob.c + mob_can_move()、mob_attack()、mob_ai_sub_hard() 修正。 + mobskill_use_id()、mobskill_use_pos() 修正。 + mobskill_castend_id()、mobskill_castend_pos() 修正。 + pc.c + pc_attack_timer()、pc_setpos() 修正。 + skill.c + SkillStatusChangeTable[] 修正。 + skill_additional_effect()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_check_condition() 修正。 + skill_status_change_start()、skill_status_change_end() 修正。 + skill_use_id() 修正。 + skill.h 修正。 + (db/) + cast_db.txt 修正。 + +-------------------- +//0933 by 胡蝶蘭 + +・ウィザード転職所NPC仮実装 + ・eathenaのデータの翻訳、および某所の昔のデータを元に作ったので + 癌鯖とは微妙に異なってると思います。 + 「古い巻物」とか使えませんし。 + ・現行のjob_2nd.txtと一緒に読み込むと、NPCが重なるので、 + job_2nd.txtの該当スクリプトをコメント化してください。 + ただし、その場合はセージに転職させてもらえないので注意してください。 + + (conf/npc/) + npc_job_wizard.txt + 追加 + (conf/warp/) + npc_warp_job.txt + ウィザード転職所のワープをコメント化 + +・バグ修正 + ・gotoやmenuでラベルが見つからないときスクリプトの実行を中断するように. + ・1回のスクリプトの実行において、実行命令数が約8000を超えるか、 + gotoやmenuの実行回数が約500回を超えると実行を中断するように。 + ・関数/命令実行時にもエラーチェックを入れた + ・ギルド/パーティ/ペットの名前に日本語が使えない問題修正 + + + (char/) + int_guild.c/int_party.c + 名前問題修正 + (map/) + pet.c + 名前問題修正 + script.c + 修正 + +-------------------- +//0932 by End_of_exam + +・0930でギルド倉庫の中身が消えるバグを修正。 + + (char/) + int_storage.c guild_storage_tostr() 修正。 + +-------------------- +//0931 by (凸) +・サーバーsnapshot +・AthenaDB計画から更新のあった物を反映 +・atcommand_athena.confにstr等を追加 +・ワープポータルの本鯖相違点を修正 +・霧さんのaldeg_cas03〜05を同梱 +・pさんのnpc_event_kataribe.txt同梱 +・KAJIKENさんのnpc_warp_louyang.txt同梱 + + (db/) + item_db.txt 変更 + (conf/) + atcommand_athena.conf 変更 + map_athena.conf 変更 + (conf/gvg/) + aldeg_cas03.txt 変更 + aldeg_cas04.txt 変更 + aldeg_cas05.txt 変更 + (conf/mob/) + npc_monster.txt 変更 + (conf/npc/) + npc_event_kataribe.txt 追加 + (conf/warp/) + npc_warp_louyang.txt 追加 + (map/) + pc.c pc_memo() 変更 + +-------------------- +//0930 by 胡蝶蘭 + + 既存の char/ にあるlock.cとlock.hは削除してください。 + これらは common/ に移動されます。 + +・スクリプト追加修正 + ・setarray(配列へリスト代入)追加 + ・cleararray(配列を指定値でクリア)追加 + ・copyarray(配列をコピー)追加 + ・getarraysize(配列の有効な要素数を求める)追加 + ・deletearray(配列の要素を削除してつめる)追加 + ・warpwaitingpc:人数やアカウントIDをマップ変数にセットするように修正 + + (map/) + script.c + 色々 + (doc/) + script_ref.txt + 命令追加など + (npc/sample/) + npc_test_array.txt + 配列系テスト用NPCスクリプト + +・バグ修正など + ・キャラクター名/アカウント名/パーティ名/ギルド名/ペット名に + コントロールコードを使えないように修正。 + ・char.cなどの保存の効率を更にアップ。 + ・倉庫ファイル/ギルド倉庫ファイルに空行が残らないように修正 + ・lock.*をcommon/に移動、ファイルが保存できなくなるバグ修正、 + アカウントとマップ変数の保存にもlock_fopenを使うように。 + + (common/) + lock.c/lock.h + フォルダ移動、lock_fopen修正 + (login/) + login.c + mmo_auth_new()修正 + (char/) + char.c + mmo_char_tostr(),make_new_char()修正 + int_storage.c + storage_tostr(),guild_storage_tostr(), + inter_storage_save_sub(),inter_guild_storage_save_sub()修正 + int_party.c + int_guild.c + 名前問題修正 + (map/) + pet.c + 名前問題修正 + +-------------------- +//0929 by ぴざまん + +・ランドプロテクター完全実装。 +・プロボックのスキル仕様変更(詠唱妨害・凍結、石化、睡眠解除)。 +・リカバリーのスキル仕様変更(アンデッドに使用すると一定確率で暗闇効果)。 +・状態異常中でも装備の切り替えが出来るように変更。 +・アイテム自動取得中に@killmonsterを使用すると落ちるバグ修正。 +・胡蝶蘭さんが上げていたnpc.cを同梱しました。 +・skill_dbで気になってたとこをちょこっと修正。 + + (map/) + clif.c + clif_parse_EquipItem() 修正。 + skill.c + skill_castend_nodamage_id() 修正。 + skill_unitsetting()、skill_unit_onplace() 修正。 + skill_landprotector() 追加。 + mob.c + mob_delay_item_drop()、mob_delay_item_drop2() 修正。 + npc.c 修正 + + (db/) + skill_db.txt 修正。 + +-------------------- +//0928 by End_of_exam + +・キャラや倉庫内アイテムが消える問題に暫定対処(キャラ鯖の改良)。 + + 1.キャラデータ・倉庫データのデータ変換処理を改良。 +  (char/char.c , char/int_storage.c) + + 2.ファイル書き出しが終わるまで、旧ファイルを残すように修正。 + (char/lock.c, char/lock.h の追加。メイクファイルの修正。 +  char/int_storage.c,int_guild.c,int_party.c,int_pet.c,char.c,inter.c +  内にある、データ書き出し処理を変更。) + +-------------------- +//0927 by ぴざまん + +・武器攻撃以外に種族補正が入っていなかったのを修正。 +・演奏中に楽器・鞭以外の武器に持ち変えると演奏が止まる様に修正。 +・演奏の効果が演奏者自身にはかからないように修正。 +・アイテム自動取得機能実装 + 敵を倒した時に、アイテムがドロップされるのではなく、その敵に一番多くのダメージを + 与えた人(ルート権1位の人)にドロップアイテムが自動で与えられる機能です。 + battle_athena.confのitem_auto_getで設定できます。 + オリジナルアップデートの為、battle_athena.confでのデフォルトではnoにしています。 +・属性場(デリュージ・バイオレントゲイル・ボルケーノ・ランドプロテクター)仮実装 + 一部の機能が未実装です +  デリュージ:水場を用いたウォーターボール +  バイオレントゲイル:ファイアーウォールの持続時間補正 +  ボルケーノ:アイスウォール禁止 +  ランドプロテクター:オブジェクト設置系スキル禁止(つまり出るだけのLPです) + + (map/) + battle.c + battle_calc_damage()、battle_calc_magic_attack() 修正。 + battle_calc_misc_attack()、battle_config_read() 修正。 + mob.c + mob_delay_item_drop()、mob_delay_item_drop2() 修正。 + pc.c + pc_calcstatus()、pc_equipitem() 修正。 + skill.c + ローカルプロトタイプ宣言修正。 + SkillStatusChangeTable[] 修正。 + skill_castend_nodamage_id()、skill_castend_pos2() 修正。 + skill_unitsetting()、skill_unit_onplace() 修正。 + skill_unit_onout()、skill_unit_ondelete() 修正。 + skill_status_change_start()、skill_status_change_end() 修正。 + skill_clear_element_field() 追加。 + battle.h 修正。 + skill.h 修正。 + (conf/) + battle_athena.conf + item_auto_get項目を追加。 + (db/) + cast_db.txt 修正。 + +-------------------- +//0926 by 胡蝶蘭 + +・ギルド城の初期化方法変更 + ・全てのギルド城(+占拠ギルド情報)を所得したときにOnAgitInitが + よばれるように。GetCastleDataやRequestGuildInfoの必要がなくなります。 + 従って、現在のgvgスクリプトのOnInterIfInitやOnRecvCastleXXXは + 必要なくなります。(おそらく現行のスクリプトも動作は可能です) + 初期化が必要なNPCは変わりにOnAgitInitを使ってください。 + なお、不要になった命令などを削除する予定はありません。 + + (char/) + inter.c/inter.h/char.c/int_guild.c/int_guild.h + マップサーバー接続時に処理を行えるように修正 + 接続時にギルド城データを送信するように + (map/) + intif.c/guild.c/guild.h + 接続時のギルド城データ一括受信処理&ギルド情報要求、 + OnAgitInitの呼び出しなど + chrif.c + 旧OnAgitInitの呼び出し削除 + (doc/) + inter_server_packet.txt + ギルド城データ一括送信パケット0x3842追加 + +・スクリプトにNPC主体イベント実行命令追加 + ・donpcevent(NPC主体イベント実行)追加 + こちらはdoeventと違いブロードキャスト可能です。詳細はscript_ref。 + ・isloggedinのコンパイル警告がでないように修正 + (map/) + script.c + buildin_donpcevent()追加など + (doc/) + script_ref.txt + doevent,donpcevent,OnAgitInit追加など + +・その他修正 + (map/) + clif.c + clif_parse_GMReqNoChat()追加 + + +-------------------- +//0925 by 胡蝶蘭 + +・スクリプトのバグ修正 + ・monster,areamonsterの問題修正 + これらはscript_rid2sdを使用しないようにしました。 + sdがNULLのとき、レベルチェックを行わないようにしました。 + + (map/) + script.c/mob.c + buildin_monster(),buildin_areamonster(),mob_once_spawn()他 + +・スクリプトの機能追加 + ・detachrid命令(プレイヤーのデタッチ)追加 + ・isloggedin関数(プレイヤーのログインチェック)追加 + ・getitem,getitem2命令,countitem,checkweight関数で + nameidにアイテムの名前を指定可能に。 + (item_dbなどに依存するため、使用すべきではありませんが、一応) + + (map/) + script.c + 色々 + (doc/) + script_ref.txt + 変更部分とエラー説明修正 + +・athena-startとstartを修正 + ・athena-start stopでプロセスが終了するまで待つように + ・startで再起動させるときathena-start restartを呼ぶように。 + +-------------------- +//0924 by (凸) + +・バグ報告スレッド part4 >>66のnpcを取り込み +・同 >>51のguild.cを反映 +・同 >>38のatcommand_athena.confへの変更を取り込み +・なぜかnpcフォルダにあってmap_athena.confないファイルを一覧に追加。ついでにギルドフラッグのコメントアウトを解除 +・conf/npc/npc_job_1st.txt npc_script2.txt npc_shop3.txtはスナップショットから削除してください + + (map/) + guild.c 修正 + (conf/) + map_athena.conf 修正 + atcommand_athena.conf 修正 + (conf/npc/) + npc_event_hat.txt 修正 + npc_event_oni.txt 修正 + npc_job_1st.txt 削除 + npc_script2.txt 削除 + npc_shop3.txt 削除 + +-------------------- +//0923 by 胡蝶蘭 + +・スクリプトのバグ修正 +・script_rid2sdが失敗してもサーバーを終了しないように変更 + ・monster,areamonsterなどが実行できない問題修正 + + (map/) + script.c/mob.c + buildin_monster()など修正 + + (doc/) + script_ref.txt + ラベルとエラーの説明修正 + +-------------------- +//0922 by 胡蝶蘭 + +・スクリプトエラーの行番号が正しく表示されるように + + (map/) + itemdb.c / npc.c + itemdb_readdb(),npc_parse_script()修正 + +・キャラクター情報にアクセスできない状態でアクセスするとエラーを出すように修正 +・goto/menuでラベルが指定される場所にラベル以外が指定されると警告を出すように +・script_refにエラーメッセージの説明追加 +・イベント起動されたスクリプトでキャラクターを使用できるようにする関数追加 + ・attachrid(指定したIDの情報を使用できるようにする)追加 + ・getcharid(3でアカウントIDを所得できるように)修正 + (map/) + script.c + script_rid2sd(),buildin_attachrid()追加 + 多々修正。 + (doc/) + script_ref.txt + エラーメッセージの説明追加、変数/ラベルの説明修正 + 他修正 + +-------------------- +//0921 by RR +・スクリプトバグ修正(ご迷惑をおかけしました) + (conf/npc/) + npc_event_tougijou.txt + +・steal率修正(自DEX - 敵DEX + SLv*3 +10の部分で一度判定をしていたので) +・0918で0914以前に巻き戻ってしまっていた部分を元に戻した + (map/) + pc.c + pc_steal_item() 修正 + itemdb.c + pet.c + skill.c 修正 + +-------------------- +//0920 by 獅子o^.^o +・ Steal率 = Drop率 * (自DEX - 敵DEX + SLv*3 +10) /100 + (map/) + pc.c + int pc_steal_item()修正 + +-------------------- +//0919 by RR +・atcommandのlvupを使うと取得ステータスポイントがおかしい問題の修正 +・バグ修正(バグ報告スレで修正の出たものの取り込み 胡蝶蘭さん、pさん、共にお疲れ様です) + (map/) + atcommand.c + atcommand_baselevelup()修正 + guild.c + guild_gvg_eliminate_timer()修正 + pc.c + pc_setreg(),pc_setregstr()修正 + (login/) + login.c + parse_login()修正 +-------------------- +//0918 by 聖 +・item_db自体がオーバーライド可能になったので、class_equip_db.txtの廃止。 +・pet_db.txt、produce_db.txtもオーバーライド可能に修正。 + (map/) + itemdb.c + do_init_itemdb() 修正。 + pet.c + read_petdb() 修正。 + skill.c + skill_readdb() 修正。 + +-------------------- +//0917 by RR +・スクリプト修正 + 桃太郎イベントと闘技場イベントをNPCタイマーに変更 + (conf/npc/) + npc_event_momotarou.txt + npc_event_tougijou.txt 修正 +・スキルツリー修正(バグ報告スレ25より) + (db/) + skill_db.txt 修正 + +-------------------- +//0916 by (凸) +・npc_monsterにnpc_mob_jobを統合。npc_mob_job.txtは削除してかまいません + + (conf/) + map_athena.conf npc_mob_jobを削除 + (conf/mob/) + npc_monster.txt 更新 + +-------------------- +//0915 by 胡蝶蘭 + +・NPCタイマー関係の命令追加&修正他 + ・delwaitingroom(NPCチャット終了)引数を見てなかったので修正 + ・initnpctimer(NPCタイマー初期化)追加 + ・stopnpctimer(NPCタイマー停止)追加 + ・startnpctimer(NPCタイマー開始)追加 + ・getnpctimer(NPCタイマー情報所得)追加 + ・setnpctimer(NPCタイマー値設定)追加 + + 既存のaddtimerなどはプレイヤー単位のため、NPC単位のタイマーを作りました。 + こちらは、addtimerなどとは違い、OnTimerXXXという風にラベルを指定します。 + 詳しくはサンプルとscrit_ref.txtを参照。 + + (map/) + map.h + struct npc_data 修正、struct npc_timerevent_list追加 + npc.c / npc.h + npc_timerevent(),npc_timerevent_start(),npc_timerevent_stop(), + npc_gettimerevent_tick(),npc_settimerevent_tick()追加 + npc_parse_script()修正 + script.c + buildin_*npctimer()追加など + (conf/sample/) + npc_test_npctimer.txt + NPCタイマー使用サンプル + (doc/) + script_ref.txt + NPCタイマー関係の命令/関数追加、定数ラベルの説明修正 + +・Sageのアーススパイクの所得条件修正 + (db/) + skill_tree.txt + アーススパイクの行(サイズミックウェポンをLv1に) + +-------------------- +//0914 by p +・範囲スキル使用時に解放済みメモリを参照していた問題に対応 +・メモリを初期化せずに使用していた領域を、初期化してから使用するように変更 + (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 + +・GVGScriptの修正 + 911対応 + フラグからアジトへ戻る機能追加 + 戻るときに聞かれるように修正(TESTscript) + 砦取得時::OnRecvCastleXXXを発動するように修正 + (conf/gvg/) + ほとんど.txt + +-------------------- +//0912 by (凸) +・このファイルの文字化けとTEST_prtg_cas01_AbraiJの文字化けを修正 +・バグ報告スレの>>19-20を取り込み +・昔やっちまったbattle_athena.confの誤字の訂正 + + (common) + mmo.h + #define MAX_STAR 3に修正 + (conf) + battle_athena.conf + (conf/gvg/) + TEST_prtg_cas01_AbraiJ.txt + (map) + atcommand.c + get_atcommandinfo_byname() 修正 + + +-------------------- +//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 +・スクリプトの間違いを修正 +(conf/gvg/) + ev_agit_payg.txt + ev_agit_gefg.txt + +・ひな祭りに一度入ったらマップ変数が残ったままになるので、マップ変数を使わないよう変更 +(一時的マップ変数にすれば問題ないとも言えますが、 +town_guideとtown_kafraに時期限定の物が常駐してしまうのが気になったので、 +それらをevent_hinamatsuriへ移動し、普段のをdisableしています) + (conf/npc/) + npc_event_hinamatsuri + npc_town_guide + npc_town_kafra + +・スキルリセット時のスキル取得制限判定をスキルポイント48以上消費から、 + スキルポイント58以上消費か残りスキルポイントがJOBLEVELより小さくなったときに変更 +・@model時の服色染色制限を緩和(男アサ、ローグのみへ) + (map/) + pc.c pc_calc_skilltree() + atcommand.c atcommand_model() + + +-------------------- +//0909 by 胡蝶蘭 + +・NPCチャット関係の命令追加 + ・waitingroom(NPCチャット作成)修正(イベントを起こす人数を指定可能) + ・delwaitingroom(NPCチャット終了)追加 + ・enablewaitingroomevent(NPCチャットイベント有効化)追加 + ・disablewaitingroomevent(NPCチャットイベント無効化)追加 + ・getwaitingroomstate(NPCチャット状態所得)追加 + ・warpwaitingpc(NPCチャットメンバーワープ)修正 + 詳しくはscript_ref.txtを参照 + + (map/) + script.c/npc.c/npc.h/chat.c/chat.h/clif.c + 多々修正 + (doc/) + script_ref.txt + 修正 + (conf/sample/) + npc_test_chat.txt + 追加命令のテストスクリプト + +・スクリプトの間違いを修正 + (conf/npc/) + npc_event_skillget.txt + npc_event_yuno.txt + npc_town_lutie.txt + npc_turtle.txt + 謎命令additemをgetitemに置換 + npc_town_guide.txt + 謎命令scriptlabelをコメント化 + npc_event_momotaro.txt + npc_job_swordman.txt + npc_job_magician.txt + ';'付け忘れ修正 + (conf/gvg/) + ev_agit_aldeg.txt + @GID4を@GIDa4に置換 + ev_agit_gefg.txt + ev_agit_payg.txt + Annouceに色指定と';'の付け忘れを習性 + + +・AthenaDB計画のデータとりこみ、その他修正 + 安定しているデータかどうかわかりませんが。 + + (db/) + item_db.txt/mob_db.txt/mob_skill_db.txt + AthenaDB計画のデータとりこみ + mob_skill_db.txt.orig + 以前のデータ(コメント部分などの参考に) + (conf/) + water_height.txt/mapflag.txt + AthenaDB計画のデータとりこみ + map_athena.conf + npc_monster3*.txtを削除 + 追加マップデータ (by ID:UVsq5AE) + (conf/mob/) + npc_monster.txt + AthenaDB計画のデータとりこみ + +-------------------- +//0908 by 胡蝶蘭 + +・スクリプトのエラーチェック処理を増やした + ・文字列の途中で改行があるとエラーを出すように。 + ・関数呼び出し演算子'('の直前に関数名以外があるとエラーを出すように。 + ・命令があるべきところに関数名以外があるとエラーを出すように。 + ・命令および関数の引数区切りの','を省略すると警告を出すように。 + ・命令および関数の引数の数が異なると警告を出すように。 + + (map/) + script.c + 色々修正 + +・NPCスクリプト修正 + (conf/npc/) + npc_town_guide.txt + 4行目はいらないようなのでエラーが出ないようにコメント化 + npc_event_hat.txt + コモドの仮面職人とフェイヨンの青年 (by ID:dS8kRnc) + (conf/sample/) + npc_card_remover.txt + @menuを使って短くした&文章少し修正 + +・その他 + (db/) + skill_tree.txt + Sage応急手当 + +-------------------- +//0907 by p +・atcommand() の肥大化がひどいのでリファクタリング + @ コマンドを追加する場合は、atcommand.h 内で定数を、atcommand.c 内で + 関数定義マクロとマッピングテーブル、処理用の関数を記述してください。 +・global 変数の atcommand_config を消去。 + @ コマンド毎のレベルは get_atcommand_level() で取得してください。 +・一部のキャラ名を取る @ コマンドで、半角スペースを含む名前のキャラを + 正常に処理できていなかった問題を修正。 + この影響により、@rura+ など、キャラ名がパラメータの途中にあったものは + 全て最後に回されています。 +・@ コマンドの文字列を正常に取得できなかった場合に、バッファの内容を + チェックせずに処理を行おうとしていた部分を修正しました。 + + (common/) + mmo.h + (map/) + atcommand.h + atcommand.c + clif.h + clif.c + +-------------------- +//0906 by Selena +・胡蝶蘭さんの修正にあわせて、バルキリーレルム1以外のスクリプトの修正。 +・@コマンド入力ミスの際にエラーメッセージを表示。 + (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 管理人 + +・サーバーsnapshot +・前スレのファイル取り忘れた人がいるかもしれないので + +-------------------- +//0904 by 胡蝶蘭 + +・スクリプト処理修正 + ・char/interサーバーに接続した時にOnCharIfInit/OnInterIfInitイベントが + 呼ばれるようになりました。 + OnAgitInitはOnInterIfInitに変更すべきです。 + ・getcastledata命令で第2パラメータが0のとき、第3パラメータに + イベント名を設定できます。このイベントはギルド城のデータを + Interサーバーから所得完了したときに実行されます。 + ・起こすNPCイベント名を"::"で始めると、同名ラベルを持つ全NPCのイベント + を実行できます。 + たとえば、getcastledata "prtg_cas01.gat",0,"::OnRecvCastleP01"; + とすると全てのNPCの OnRecvCastleP01ラベルが実行されます。 + ・requestguildinfo命令追加。特定ギルドの情報をInterサーバーに + 要求できます。第1パラメータはギルドID、第2パラメータはイベント名で + このイベントはギルド情報をInterサーバーから所得完了したときに + 実行されます。 + + (map/) + guild.c/guild.h/npc.c/npc.h/script.c/intif.c/chrif.c + 色々修正 + +・ギルド城関連NPC修正 + (バルキリーレルム1のみ修正。他の城のスクリプトは各自で弄ってください。 + というか、むしろ弄ったらあっぷしましょう) + ・初期化処理をOnAgitInitでなくOnInterIfInitに変更。 + ・城データ所得完了処理としてOnRecvCastleP01を追加。 + ・鯖再起動時、ギルド専属カプラが正しく表示されるように。 + ・ギルド専属カプラの名前を"カプラ職員::kapra_prtg01"に変更。 + ("::"以降はエクスポートされる名前で、"::"以前が表示名) + "カプラ職員#prt"より名前を長くして競合しにくくするためです。 + この関係で、disablenpcなどのパラメータを"kapra_prtg01"に修正。 + (conf/gvg/) + prtg_cas01.txt + ギルド専属カプラ修正 + ev_agit_prtg.txt + 初期化処理修正(バルキリーレルム1のみ) + TEST_prtg_cas01_AbraiJ.txt + ギルド専属カプラ雇用/城破棄修正 + +・NPCの修正 + (conf/npc/) + npc_job_swordman.txt + npc_event_hat.txt + 修正 + +・アカウントを削除してもアカウントIDを再利用しないように修正 +・ギルド/パーティについても一応同等の処理追加(コメント化されています。 + ギルドやパーティはIDを再利用してもおそらく問題ないため) + + (login/) + login.c + 読み込み/保存処理修正 + (char/) + int_guild.c/int_party.c + 読み込み/保存処理修正 + +-------------------- +//0903 by 胡蝶蘭 + +・l14/l15およびプレフィックスlを"推奨されない(deprecated)"機能としました。 + ・まだ使用できますが、今後の動作が保障されないので、速やかに代替機能を + 使用するように移行してください。 + ・プレフィックス'l'は代替機能のプレフィックス'@'を使用してください。 + ・l15は代替機能の@menuを使用してください。 + ・l14は代替機能はありません。input命令の引数を省略しないで下さい。 + ・これらの推奨されない機能を使用すると警告メッセージがでます。 + + (map/) + script.c + parse_simpleexpr()修正 + (conf/warp/) + npc_warp.txt/npc_warp25.txt/npc_warp30.txt + 変数名l0を@warp0に修正 + (conf/npc/) + npc_event_hat.txt + 変数名l15を@menuに修正 + (doc/) + script_ref.txt + 配列変数の説明追加 + 変数のプレフィックス'l'、input命令のl14、menu命令のl15の + 説明を修正 + +-------------------- +//0902 by 胡蝶蘭 + +・スクリプトが配列変数に対応。 + ・array[number]のように使います。数値型、文字列型両方使えます。 + ・使えるプレフィックスは @, $, $@ です。 + (一時的キャラクター変数、一時的/永続的マップサーバー変数) + ・number==0は配列じゃない変数と値を共有します。 + (@hoge[0]と@hogeは同じ変数を表す) + ・まだ仮実装段階なのでバグ報告よろしくお願いします。 +・マップサーバー変数の読込中にCtrl+Cをするとデータ破損の可能性がある問題を修正. +・マップファイル読み込み画面がさびしいのでせめてファイル名を表示するように。 + + (conf/sample/) + npc_test_array.txt + 配列変数テストスクリプト + (map/) + script.c + buildin_set(),buildin_input(),get_val(), + parse_simpleexpr()修正 + buildin_getelementofarray()追加 + do_final_script()修正など + map.c + map_readmap(),map_readallmap()修正 + +-------------------- +//0901 by ぴざまん + +・露店バグの修正 + + (map/) + pc.c + pc_cartitem_amount() 追加。 + vending.c + vending_openvending() 修正。 + clif.c + clif_parse_NpcClicked() 修正。 + pc.h 修正。 + +-------------------- +//0900 by ぴざまん + +・アブラカダブラのランダムスキル発動率をabra_db.txtで設定できるように。 +・スフィアーマインとバイオプラントの微修正。 +・Noreturnマップで蝶が消費だけされるバグ修正。 +・一部のアブラ固有スキルが正しく動作しなかったバグ修正。 + (map/) + mob.c + mob_damage()、mobskill_use() 修正。 + mob_skillid2skillidx() 追加。 + skill.c + skill_readdb()、skill_abra_dataset() 修正。 + skill_castend_nodamage_id()、skill_castend_pos2() 修正。 + script.c + buildin_warp() 修正。 + + skill.h 修正。 + map.h 修正。 + (db/) + abra_db.txt 追加。 + skill_db.txt 修正。 + +-------------------- +//0899 by 胡蝶蘭 + +・取り巻きMOBの処理修正 + ・取り巻き召喚でコアを吐くバグ修正 + ・主が別マップに飛ぶと、テレポートで追いかけるように修正 + ・取り巻き処理をより軽く変更 + + (map/) + mob.c + mob_ai_sub_hard_mastersearch()をmob_ai_sub_hard_slavemob() + に名前を変えて処理修正。 + mob_summonslave()修正 + +-------------------- +//0898 by 胡蝶蘭 + +・eathenaからCardRemoverNPCの取り込み + NPCデータも日本語訳してますが、かなり適当です。 + + (map/) + script.c + buildin_getequipcardcnt(),buildin_successremovecards() + buildin_failedremovecards()追加 + (conf/sample/) + npc_card_remover.txt + カード取り外しNPCの日本語訳 + プロンテラの精錬所の中の左下の部屋にいます + +・ポータルで別マップに飛ばしたMOBがそのマップに沸き直すバグ修正 + (map/) + map.h + struct mob_dataにmメンバ追加 + mob.c + mob_spawn(),mob_once_spawn()修正 + npc.c + npc_parse_mob()修正 + + +-------------------- +//0897 by ぴざまん + +・細かい調整 +・ストリップ系とケミカルプロテクション系スキルの全実装 + 本鯖での細かい仕様が分ったので実装しました。 + 確率は暫定です。 + + (map/) + pc.c + pc_isequip() 修正 + skill.c + skill_status_change_start()、skill_castend_nodamage_id() 修正。 + skill_abra_dataset() 修正。 + battle.c + battle_get_def()、battle_get_atk2() 修正。 + battle_get_vit()、battle_get_int() 修正。 + (db/) + const.txt 修正。 + skill_db.txt 修正。 + cast_db.txt 修正。 + +-------------------- +//0896 by 胡蝶蘭 + +・永続的マップ変数機能追加 +・マップ変数を文字列型変数としても使用できるようにした + ・今までのプレフィックス $ は永続的になります。 + 一時的マップ変数を使用する場合はプレフィックス $@ を指定してください. + + ・永続的/一時的ともに文字列型に対応しています。 + 文字列型のポストフィックスは$です。 + + <例> $@hoge 数値型一時マップ変数、$hoge$ 文字列型永続マップ変数 + ・永続マップ変数はデフォルトでは save/mapreg.txt に保存されます。 + これはmap_athena.confのmapreg_txtで設定できます。 + +・str_dataが再割り当てされるとマップ変数が正常に使用できないバグ修正 + ・strdbからnumdbにして、変数名はstr_bufに入れるように。 + +・map_athena.confのdelnpc,npc:clearが正しく働かないバグ修正 + + (map/) + npc.c + npc_delsrcfile(),npc_clearsrcfile()修正 + script.c / script.h + マップ変数系かなり修正 + map.c + map_read_config()修正など + (conf/) + map_athena.conf + mapreg_txt追加 + (doc/) + conf_ref.txt + mapreg_txt,help_txt,motd_txt追加 + script_ref.txt + 文字列型変数の説明修正 + +-------------------- +//0895 by Selena + +・mapflagにnozenypenaltyを追加。 + GVGや街中のテロなどで死亡した際に、Zenyペナルティー発生を外す用。 + + (map/) + pc.c + pc_setrestartvalue() 修正 + script.c + buildin_setmapflag()、buildin_removemapflag() 修正 + npc.c + npc_parse_mapflag() 修正 + map.h + map_data() 修正 + (db/) + const.txt 修正。 + +-------------------- +//0894 by ぴざまん + +・コーマ以外のアブラカダブラ固有スキル全実装。 + オートスペルにはレベルアップ以外多分全部乗せれます。(オートスペルレベルアップは未テスト) +・アブラカダブラ仮実装 + 発動スキルがレベル依存じゃありません。 + 全ての発動率が理論上均一です。 + アイテムスキルを使って実装しているので一部の使用条件を無視します(ジェム罠気球等) +・アイテムスキルがキャスト・ディレイ無しだったのを修正。 + + (map/) + skill.c + skill_castend_nodamage_id()、skill_use_id()、skill_use_pos() 修正。 + skill_abra_dataset() 追加。 + (db/) + skill_db.txt 修正。 + +-------------------- +//0893 by 胡蝶蘭 + +・他マップからポータルの上にワープしてきたPCがワープしない問題を修正 +・チャット中のPCをワープポータルで飛ばすかどうか設定可能に +・MOBをワープポータルで飛ばすかどうか設定可能に + MOBのワープポータルを許可すると、テロが簡単にできるので注意。 + +・アカウント変数変更と同時にファイルに書き出すように修正 +・マップデータのロード部分のログ表示はあまり重要じゃないと思うので変更。 + + (char/) + inter.c + mapif_parse_AccReg()でinter_accreg_save()を呼ぶように修正 + (map/) + mob.c/mob.h + mob_warp()の引数変更と修正 + battle.c/battle.h + mob_warp()呼び出しの引数修正 + battle_config関連 + map.c + map_readallmap(),map_readmap()修正 + pc.c + pc_setpos()修正 + skill.c + mob_warp()呼び出しの引数修正 + skill_unit_onplace()修正 + (conf/) + battle_athena.conf + chat_warpportal,mob_warpportalの追加 + (doc/) + conf_ref.txt + chat_warpportal,mob_warpportalの追加 + +-------------------- +//0892 by 胡蝶蘭 + +・各種confファイルで別ファイルをインポートできるようにした + ・自分のサーバー用の設定を別ファイルに記述できるようになります。 + ・全て「import: ファイル名」形式で記述します。 + ・各種confファイル(login,char,map,inter,atcommand,battle)の最後に + conf/import/*_conf を読むように指定したので、そこに自分用の設定を + 書いておけば、変更部分のみオーバーライドします。 + msg,scriptのconfについては、この限りではありませんが、import命令の + 処理は追加されているので、自分でimport命令を書けば動きます。 + ・新しいスナップショットが出た場合などに、このconf/importフォルダを + 昔のAthenaからコピーするだけで自分用の設定を適用できるようになります. + +・map_athena.confのmapとnpcで追加したファイルを削除できるようにした + ・上に関連する変更です。 + ・delmap,delnpc命令を使用すれば、map,npc命令で追加したファイルを + 読み込まないように指定できます。ここでファイル名ではなく、 + all と指定するとそれまでに指定されたファイルを全て読み込まなくします. + ・map,npc命令で、ファイル名にclearを指定すると、 + delmap,delnpcのallと同等の動作をするようになりました。 + +・login_athena.confのallowとdenyをクリアできるようにsた + ・allowおよびdeny命令でclearを指定すると以前のホスト情報を全削除します. + + (conf/) + 各種confファイルの最後にimport命令追加 + (conf/import) + *.txt + インポートされるファイル。これらに自分用の設定を書くとよい。 + (login/) + login.c + login_read_config()修正 + (char/) + char.c/inter.c + char_read_config(),inter_read_config()修正 + (map/) + map.c + map_read_config(),map_addmap()修正、map_delmap()追加 + npc.c + npc_addsrcfile()修正,npc_delsrcfile(),npc_clearsrcfile()追加 + battle.c/atcommand.c/script.c + battle_read_config(),atcommand_read_config(), + msg_read_config(),script_read_config()修正 + (doc/) + conf_ref.txt + 修正 + +-------------------- +//0891 by (凸) + +・「スキル使用の後は、しばらくお待ちください」を表示するかどうか設定できるようにした。 + ・本鯖相違スレッド 其のU>>5さんのコードをパクリました。 + (doc/) + conf_ref.txt 修正。 + (conf/) + battle_athena.conf 修正。 + (map/) + battle.h 修正。 + battle.c + battle_config_read() 修正。 + clif.c + clif_skill_fail() 修正。 + +-------------------- +//0890 by 死神 + +・ギルド倉庫を一度に一人だけが使用するように変更。(未テスト) +・battle_athena.confからplayer_undead_nofreeze 削除。 +・@コマンド@gstorage 追加。 +・スクリプトguildstorageをguildopenstorageに変更。 +・その他細かいバグ修正。 + (doc/) + conf_ref.txt 修正。 + script_ref.txt 修正。 + (conf/) + atcommand_athena.conf 修正。 + battle_athena.conf 修正。 + help.txt 修正。 + (conf/sample/) + gstorage_test.txt 追加。 + (char/) + makefile 修正。 + int_storage.h 修正。 + int_storage.c + inter_storage_delete()、inter_guild_storage_delete() 追加。 + int_guild.c + guild_check_empty()、mapif_parse_BreakGuild() 修正。 + (map/) + makefile 修正。 + battle.h 修正。 + battle.c + battle_config_read() 修正。 + guild.c + guild_broken() 修正。 + storage.h 修正。 + storage.c + storage_guild_storageopen() 修正。 + storage_delete()、guild_storage_delete() 追加。 + script.c + buildin_guildstorage() を buildin_guildopenstorage()に変更。 + intif.c + intif_parse_LoadGuildStorage() 修正。 + mob.c + mob_summonslave()、mob_damage()、mob_delete() 修正。 + mob_catch_delete()、mob_readdb() 修正。 + skill.c + skill_castend_nodamage_id()、skill_status_change_start() 修正。 + clif.c + clif_parse_ActionRequest() 修正。 + atcommand.h 修正。 + atcommand.c + atcommand() 修正。 + +-------------------- +//0889 by 胡蝶蘭 + +・文字列型一時的キャラクター変数機能追加。 + ・プレフィックス@,ポストフィックス$を使用します。(@hoge$など) + ・inputで文字列変数を指定すると文字列入力になります。 + ・関係演算子(比較演算子)で文字列どうしを指定すると文字列の比較が + できます。数値と文字列を混ぜて比較することはできません。 + ・とりあえずサンプル付けてます。 + + (map/) + map.h + struct map_session_dataにnpc_str,regstr,regstr_numメンバ追加 + script.c + buildin_set(),get_val(),buildin_input(),op_2num()など修正 + op_2str(),op_2()追加 + clif.c / clif.h + 01d5パケット長修正 + clif_parse_NpcStringInput(),clif_scriptinputstr()追加 + pc.c / pc.h + pc_readregstr(),pc_setregstr()追加 + (doc/) + script_ref.txt + 演算子の説明追加、変数の説明修正、input,menu修正 + (conf/sample/) + npc_test_str.txt + 文字列変数を使用したスクリプトの例。 + 文字列の代入、結合、比較、入力などのテストを行うもの。 + +-------------------- +//0888 by 死神 + +・設計から間違っていたギルド倉庫修正。(ただ複数人の使用によるバグがある可能性はまだあります。) +・細かいバグ修正。 + (doc/) + inter_server_packet.txt 修正。 + conf_ref.txt 修正。 + (conf/) + inter_athena.conf 修正。 + help.txt 修正。 + (common/) + mmo.h 修正。 + (char/) + makefile 修正。 + int_storage.h 修正。 + int_storage.c + account2storage()、inter_storage_init()、storage_fromstr() 修正。 + inter_storage_save()、mapif_load_storage() 修正。 + mapif_parse_SaveStorage() 修正。 + guild_storage_fromstr()、guild_storage_tostr() 追加。 + inter_storage_save_sub()、inter_guild_storage_save_sub() 追加。 + inter_guild_storage_save()、mapif_parse_LoadGuildStorage() 追加。 + mapif_parse_SaveGuildStorage()、mapif_load_guild_storage() 追加。 + mapif_save_guild_storage_ack()、guild2storage() 追加。 + int_party.c + inter_party_init() 修正。 + int_guild.h 修正。 + int_guild.c + inter_guild_init() 修正。 + inter_guild_search() 追加。 + int_pet.c + inter_pet_init() 修正。 + inter.c + inter_init()、inter_save()、inter_config_read() 修正。 + (map/) + makefile 修正。 + map.h 修正。 + map.c + map_quit()、do_init() 修正。 + pc.c + pc_setpos() 修正。 + storage.h 修正。 + storage.c + do_init_storage()、do_final_storage()、account2storage() 修正。 + storage_storageopen()、storage_storageadd()、storage_storageget() 修正。 + storage_storageaddfromcart()、storage_storagegettocart() 修正。 + storage_storageclose()、storage_storage_quit() 修正。 + storage_storage_save() 修正。 + guild2storage()、storage_guild_storageopen() 追加。 + guild_storage_additem() 、guild_storage_delitem() 追加。 + storage_guild_storageadd()、storage_guild_storageget() 追加。 + storage_guild_storageaddfromcart()、storage_guild_storagegettocart() 追加。 + storage_guild_storageclose()、storage_guild_storage_quit() 追加。 + intif.h 修正。 + intif.c + intif_send_storage()、intif_parse_LoadStorage()、intif_parse() 修正。 + intif_request_guild_storage()、intif_send_guild_storage() 追加。 + intif_parse_SaveGuildStorage()、intif_parse_LoadGuildStorage() 追加。 + clif.h 修正。 + clif.c + clif_additem()、clif_parse_MoveToKafra() 修正。 + clif_parse_MoveFromKafra()、clif_parse_MoveToKafraFromCart() 修正。 + clif_parse_MoveFromKafraToCart()、clif_parse_CloseKafra() 修正。 + clif_parse_LoadEndAck() 修正。 + clif_guildstorageitemlist()、clif_guildstorageequiplist() 追加。 + clif_updateguildstorageamount()、clif_guildstorageitemadded() 追加。 + guild.c + guild_broken() 修正。 + script.c + buildin_openstorage()、buildin_guildstorage() 修正。 + skill.c + skill_castend_nodamage_id() 修正。 + mob.c + mob_summonslave()、mob_damage() 修正。 + atcommand.c + atkillmonster_sub()、atcommand() 修正。 + +-------------------- +//0887 by 獅子o^.^o + +・(db/) + skill_tree.txt 修正 + +-------------------- +//0886 by ぴざまん + +・サーバーsnapshot +・ファイル調整 + +-------------------- +//0885 by huge + +・ギルド共有倉庫の実装。guildstorageで開けます。 + 自分の鯖で実験はしてみましたが、過疎地なので多人数ギルドになるとどう動くか分かりません。 + (念のためバックアップは必ず取っておいて下さい) +・areawarpで、対象マップ名を"Random"にすると、同マップ内でランダムに飛ぶように修正。 +・GMコマンドで生き返したときにSPも全回復するように修正。 +・ディボーションの条件をちょっと修正。 + + (char/) + int_storage.c + mapif_load_storage() 修正。 + mapif_parse_SaveStorage() 修正。 + inter.c + inter_send_packet_length[] 修正。 + inter_recv_packet_length[] 修正。 + (map/) + atcommand.c + @alive,@raise,@raisemap 修正。 + intif.c + packet_len_table[] 修正。 + intif_request_storage() 修正。 + intif_send_storage() 修正。 + intif_parse_LoadStorage() 修正。 + + map.h + map_session_data stateにstorage_flag 追加。 + script.c + buildin_areawarp_sub() 修正。 + buildin_openstorage() 修正。 + buildin_guildstorage() 追加。 + skill.c + skill_castend_nodamage_id() 修正。 + storage.c + account2storage() 修正。 + storage_storageopen() 修正。 + storage_storage_save() 修正。 + +-------------------- +//0884 by 死神 + +・細かいバグ修正。 +・battle_athena.confにpet_str、zeny_penalty、resurrection_exp 追加。 +・0878の銀行関係のコードはもういらないので全て削除。 +・zeny_penaltyを設定して使う場合は手数料はなくした方がいいかも。 +・ポーションピッチャーでpercenthealにもPPとLPによる回復ボーナスが付くように変更。(ただvitやint、HPR、MPRによる回復ボーナスが付きません。) +・ほとんど未テスト。 + (common/) + mmo.h 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + map.c + do_init()、do_final() 修正。 + script.c + buildin_openbank() 削除。 + buildin_failedrefitem() 修正。 + storage.h 修正。 + storage.c + do_init_bank()、do_final_bank()、account2bank() 削除。 + storage_bank()、storage_readbank() 削除。 + skill.c + skill_castend_nodamage_id()、skill_attack() 修正。 + battle.h 修正。 + battle.c + battle_calc_pet_weapon_attack()、battle_config_read() 修正。 + pc.c + pc_setrestartvalue() 修正。 + clif.c + clif_skill_nodamage()、clif_refine() 修正。 + itemdb.c + itemdb_isequip3() 修正。 + atcommand.c + atcommand() 修正。 + +-------------------- +//0883 by Kalen + +・Warp色々修正 + ・アサシンギルド周り修正(昔のままのリンクだったので現在の状態に修正。) + ・YunoのWarp全面見直し(YumilLoop修正、SageCastleRandomWarp追加、女医さんの家追加) + ・モンクギルド周り追加 +・NPC色々修正 + ・帽子作成NPCを別ファイルへ。一部追加(ep2.5追加分) +  参考Data(R.O.M776): ttp://green.sakura.ne.jp/~youc/ro/data/itemmaking.html#04 + ・アサシンギルド修正 + ・二次職転職関係NPC一部追加(これでコモド小劇場へ行けます) + ・マスターアルケミストの台詞修正 + ・アルデバランの案内要員を移動&台詞修正&イメージ追加 + ・BBSにあがっていたコモドスクリプト追加(event_hat等へ分散) + ・コンロンクエスト関係NPC一部追加(女医[yuno]、ネル[prontera]) + (conf/warp/) + npc_warp.txt + npc_warp30.txt + npc_warp_job.txt + (conf/npc/) + npc_event_hat.txt(新規) + 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 胡蝶蘭 + +・スクリプトに0881相当のアカウント共有変数機能のプレフィックス変更 + ・0881のアカウント変数はプレフィックス##になりました。 + ・0881のアカウント変数は全ワールドで共有されます。 + ・変数の個数はmmo.hのACCOUNT_REG2_NUMで定義されています(16)。 +・ワールド内のアカウント共有変数機能追加 + ・変数名のプレフィックスは#です。 + ・変数の個数はmmo.hのACCOUNT_REG_NUMで定義されています(16)。 + ・0881の銀行スクリプトはこちらを使用するようになります。 + よって以前のデータがつかえないのであらかじめ引き出しておいてください. + ・変数データは save/accreg.txt に保存されます。 + このファイル名は inter_athena.conf で変更可能です。conf_ref.txt参照。 + + (common/) + mmo.h + ACCOUNT_REG_NUMを16に、ACCOUNT_REG_NUM2追加 + struct mmo_charstatusにaccount_reg2_num,account_reg2メンバ追加 + (login/) + login.c + account_regを全てaccount_reg2に置き換え + (char/) + char.c + account_regを全てaccount_reg2に置き換え + inter.c + ワールド内アカウント変数機能追加。 + inter_accreg*()追加、accreg_db追加など。 + (map/) + chrif.c/chrif.h + account_regを全てaccount_reg2に置き換え + 0881でのバグを修正 + intif.c/intif.h + ワールド内アカウント変数機能追加。 + pc.c/pc.h + pc_*accountreg()=>pc_*accountreg2()に。 + pc_setaccountreg(),pc_readaccountreg()追加。 + script.c + buildin_set(),buildin_get_val(),buildin_input()修正 + (doc/) + inter_server_packet.txt + ワールド内アカウント変数関係 + conf_ref.txt + accreg_txt追加 + +-------------------- +//0881 by 胡蝶蘭 + +・スクリプトにアカウント共有変数機能追加 + ・変数名にプレフィックス#を付けることでアカウント共有変数になります。 + ・アカウント変数は変更した時点で全サーバーにポストされるので + 頻繁に書き換えるとサーバー間通信が肥大化します。 + ・アカウント変数は変更した時点(そしてそれがlogin鯖に届いた時点)で + account.txtに書き出されます。 + ・グローバル変数(永続変数)の個数を96に減らし、減った32個分を + アカウント変数にしていますが、mmo_charstatusのサイズが + 16000byteを超えない限り増やすことができます。<0879の変更を参照 + 変数の個数はmmo.hのACCOUNT_REG_NUMで定義されています。 + ・0878の銀行をアカウント変数を使用するように修正 + bank.txtのデータが使えなくなるのであらかじめ引き出しておいて下さい。 + + (common/) + mmo.h + GLOBAL_REG_NUMを96に、ACCOUNT_REG_NUMを追加 + struct mmo_charstatusにaccount_reg_num,account_regメンバ追加 + (login/) + login.c + パケット2728処理追加 + (char/) + char.c + パケット2729,2b10処理追加 + (map/) + chrif.c + chrif_saveaccountreg(),chrif_accountreg() + (パケット2b10,2b11処理)追加。 + pc.c/pc.h + pc_readaccountreg(),pc_setaccountreg()追加 + script.c + buildin_set(),buildin_get_val(),buildin_input()修正 + (conf/sample/) + bank_test.txt + アカウント変数使用版の銀行スクリプト + +-------------------- +//0880 by 死神 + +・ポーションピッチャーを正しく実装とちょっと機能拡張。 +・ポーションピッチャーでレベル別に使えるアイテムをskill_require_db.txtに設定できるようにしました。ただポーションピッチャーで使えるアイテムはitemheal、percentheal、sc_start、sc_end以外の物が入っていると正しく動作しません。 +レベル5までは本鯖に合わせていますが最大レベルを10まで拡張するとレベル6 - マステラの実、7 - ローヤルゼリー、8 - イグドラシルの種、9 - イグドラシルの実、10 - バーサークポーションに設定しています。skill_db.txtを修正すればこれが有効になります。(どこを修正するかもわからない人は諦めることです。) ポーションピッチャーによるアイテム使用は使用条件を無視します。少しはアルケミストに希望ができたかも...(多分無理...) +・battle_athane.confにproduce_item_name_input、produce_potion_name_input、making_arrow_name_input、holywater_name_input 追加。 +・パーティ員にだけ使うスキルとギルド員にだけ使うスキルを設定できるように修正。 +・その他細かい修正。 + (conf/) + battle_athane.conf 修正。 + (doc/) + conf_ref.txt 修正。 + db_ref.txt 修正。 + (db/) + skill_db.txt 修正。 + skill_require_db.txt 修正。 + (map/) + map.h 修正。 + skill.h 修正。 + skill.c + skill_status_change_timer()、skill_attack()、skill_use_id() 修正。 + skill_castend_nodamage_id()、skill_castend_damage_id() 修正。 + skill_castend_id()、skill_castend_pos()、skill_produce_mix() 修正。 + skill_arrow_create()、skill_check_condition() 修正。 + skill_status_change_clear()、skill_readdb() 修正。 + mob.c + mobskill_use_id()、mob_changestate() 修正。 + pc.c + pc_itemheal()、pc_percentheal()、pc_calcstatus() 修正。 + battle.h 修正。 + battle.c + battle_delay_damage()、battle_damage()、battle_heal() 修正。 + battle_get_adelay()、battle_get_amotion() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_weapon_attack()、battle_config_read() 修正。 + clif.c + clif_skill_fail() 修正。 + script.c + buildin_sc_start()、buildin_sc_end() 修正。 + makefile 修正。 + +-------------------- +//0879 by 胡蝶蘭 + +・送信FIFOのバッファオーバーフローの脆弱性の修正 + ・2048バイト以上のパケットを送るとき、FIFOが満杯に近ければ + バッファオーバーフローによる不正アクセスが起こっていた問題修正。 + ・FIFOが満杯に近いときWFIFOSETされたパケットが捨てられていた問題修正。 + ・FIFOがオーバーフローする場合、自動的にFIFOを拡張するようにした。 + (ただし、一度にWFIFOSETするパケットが16384バイト以下と仮定している) + ・「socket: ? wdata expanded to ???? bytes」はFIFOが拡張されたときに + でるログだが、エラーではなく、パケットは正しく送信される。 + ・「socket: ? wdata lost !!」はパケットが喪失したことを表すログで、 + エラーであるが64KBを超える超巨大なパケットをWFIFOSETしないと出ない。 + ・16384バイトを超えるパケットをWFIFOSETするとエラーメッセージなしに、 + 不正アクセスが起こる可能性があるので、超えないようにすること。 + + (common/) + socket.c /socket.h + WFIFOSET()をマクロから関数に変更 + realloc_fifo()追加 + +・サーバー間通信FIFOのバッファサイズを大きくした + ・大量のデータが通信されたときにデータ処理遅延が起きにくくするため。 + ・メモリ使用量が増えた。(ぎりぎりの人は65536に設定すると元通りになる) + ・サーバー間通信のFIFOサイズは mmo.h で定義されている。 + 変更する場合は64KB(65536)以上の値にすること。 + 大きくすると巨大データ受信時の遅延が減るがメモリを多く使う。 + ・@kickall時などにデータ送信が激しくなるので変更したが、 + 同時ログイン人数が少ないと増やしても意味は無い。 + + (common/) + mmo.h + FIFOSIZE_SERVERLINKマクロ追加。 + (login/) + login.c + 2710パケットでrealloc_fifo()を呼ぶように + (char/) + char.c + 2af8パケットでrealloc_fifo()を呼ぶように + check_connect_login_server()でrealloc_fifo()を呼ぶように + (map/) + chrif.c + check_connect_char_server()でrealloc_fifo()を呼ぶように + +-------------------- +//0878 by huge + +・カプラ銀行サービス。 + 自分の鯖で実装してたんですが、意外と好感触だったので出してみます。 + NPCscriptで、openbank(0);で預金額を返して、中に数字を入れると出し入れします。 + 詳しくはサンプルを同封したので、それを参照。 + + (common/) + mmo.h + struct bank 追加。 + (map/) + map.c + do_final(),do_init() 修正。 + script.c + buildin_openbank() 追加。 + storage.c + storage.h + グローバル変数追加。 + do_init_bank(),do_final_bank(),account2bank() 追加。 + storage_bank(),storage_readbank() 追加。 + +-------------------- +//0877 by 胡蝶蘭 + +・login鯖のアクセスコントロールがネットマスク表記に対応 + 192.168.0.0/24 や 192.168.0.0/255.255.0.0 といった表記に対応。 +・battle_athena.confにGMが無条件で装備品を装備できる& + 無条件でスキルを使用できる設定追加 + これらはデバグ用なので動作に不都合があるかもしれません。 + + (login/) + login.c + check_ip()修正,check_ipmask()追加 + (map/) + battle.c/battle.h + battle_configにgm_allequip,gm_skilluncond追加 + battle_config_read()修正更 + skill.c + skill_check_conditio()修正 + pc.c + pc_isequp()修正 + (doc/) + conf_ref.txt + allow変更、gm_all_equipment、gm_skill_unconditional追加 + +-------------------- +//0876 by 死神 + +・細かいバグ修正。 +・@コマンドにテストの為に入れていた物が入っていたので修正。 +・ハンマーフォールの射程を5から4に修正(本鯖射程は不明)とリザレクションが無属性だったのを聖属性に修正。 + (db/) + skill_db.txt 修正。 + (map/) + mob.c + mob_catch_delete()、mob_stop_walking() 修正。 + storage.c + storage_additem() 修正。 + pc.c + pc_damage()、pc_stop_walking() 修正。 + clif.c + clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 + battle.c + battle_calc_magic_attack() 修正。 + skill.c + skill_check_condition() 修正。 + atcommand.c 修正。 + +-------------------- +//0875 by 胡蝶蘭 + +・party_share_levelをinter_athena.confに移した + (パーティ関連の処理の管轄がinter鯖のため) +・inter_athena.confにinter_log_file項目追加 +・ギルド作成/解散/城占領/城破棄がログに残るように +・ギルド解散時にメモリリークしていた問題を修正 + (char/) + char.c/char.h + party_share_level関連 + (inter/) + inter.c/inter.h + party_share_level / inter_log_file 関連 + ログ出力用にinter_log()追加 + int_guild.c + 作成/解散/城占領/城破棄をログに出力 + メモリリーク修正 + (doc/) + conf_ref.txt + 修正 + +・サーバー状態確認用CGIスクリプト添付など + ・自己責任&詳細な解説無し、質問されてもスルーする可能性有り + ・エディタで開いたら少し説明有り + ・CGI設置の基本さえわかれば問題ないはず + + (tool/cgi/) + serverstatus.cgi + サーバー状態確認用CGIスクリプト + addaccount.cgi + 説明修正 + +-------------------- +//0874 by Kalen +・WhiteDayイベント追加 + conf/npc/npc_event_whiteday.txt(新規) + ただ、お菓子売ってるだけみたい…GMがなにやるのかは知りませんが。 + sakROのほうではホワイトチョコらしきものが追加されたのに + jROで追加されたのは雛壇撤去パッチのみ(*´д`;)… + +・Alchemistギルドで乳鉢、製造書を変えるように + conf/npc/npc_job_alchemist.txt(新規) + 転職クエストが分からなかったので温めていましたが + 買えないと不便と聞いたので、追加 + +・染色NPC実装 + conf/npc/npc_event_dye.txt(更新) + 髪型変更がsakROに来たらしいので + なんとなーく更新 + +-------------------- +//0873 by 死神 + +・@コマンドitem2とkillmonster 追加。 +・スクリプトgetitem2とkillmonsterall 追加。 +・矢作成で作られた矢も製造者の名前が付くように修正。 +・battle_athena.confにmonster_class_change_full_recover追加。 +・装備スクリプトにbWeaponComaEleとbWeaponComaRace 追加。 +・少し間違いがあったダメージ計算式修正。 +・bInfiniteEndureの処理をインデュア表示なしで内部処理するように変更。 +・オートスペルでcastend_nodamage_id()を呼ぶスキルも使用できるように修正。 +・その他細かい修正とバグ修正。 +・ほとんど未テストなのでバグがあったら報告お願いします。 + (conf/) + help.txt 修正。 + atcommand_athena.conf 修正。 + battle_athena.conf 修正。 + char_athena.conf 修正。 + (db/) + const.txt 修正。 + item_db.txt 修正。 + (doc/) + item_bonus.txt 修正。 + script_ref.txt 修正。 + conf_ref.txt 修正。 + (map/) + map.h 修正。 + map.c + map_quit() 修正。 + skill.h 修正。 + skill.c + skill_castend_nodamage_id()、skill_status_change_clear() 修正。 + skill_castend_id()、skill_castend_pos()、skill_arrow_create() 修正。 + skill_status_change_timer() 修正。 + pc.c + pc_calcstatus()、pc_bonus2()、pc_equipitem() 修正。 + pc_unequipitem()、pc_damage() 修正。 + battle.h 修正。 + battle.c + battle_get_dmotion()、battle_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_calc_magic_attack()、battle_config_read() 修正。 + clif.c + clif_parse_LoadEndAck()、clif_damage()、clif_skill_damage() 修正。 + clif_skill_damage2() 修正。 + itemdb.h 修正。 + itemdb.c + itemdb_isequip3() 追加。 + mob.h 修正。 + mob.c + mob_delay_item_drop()、mob_damage()、mob_changestate() 修正。 + mob_class_change()、mob_delete()、mob_catch_delete() 修正。 + script.c + buildin_getitem() 修正。 + buildin_killmonsterall_sub()、buildin_killmonsterall() 追加。 + atcommand.h 修正。 + atcommand.c + atcommand() 修正。 + atkillmonster_sub() 追加。 + +-------------------- +//0872 by ElFinLazz + +・スキルポーションピッチャー修正 +・スキルギムソバングドンボルオッネ具現 +・スキルアブラカダブなら義コーマ具現 +・コーマの武器オプション追加(種族, 千分率) +・オプション説明追加 + (db/) + const.txt 修正. + (doc/) + item_bonus.txt 修正. + (map/) + map.h 修正. + skill.c + skill_castend_nodamage_id(), skill_unit_group(), skill_status_change_start() 修正. + pc.c + pc_calcstatus(), pc_bonus2(), pc_gainexp() 修正. + battle.c + battle_weapon_attack() 修正. + +-------------------- +//0871 by 死神 + +・0869のバグ修正。 +・char_athena.confとlogin_athena.confに項目追加。(キャラ鯖とログイン鯖のログファイルを変えることができるようにしました。デフォルトでlog/フォルダーに入るのでlogフォルダーを作る必要があります。) +・エナジーコートの処理を少し修正。モンスターが使った場合はスキルレベル*6%の物理ダメージを減らすように変更。 +・武器以外の物でも製造者の名前を表示するように変更。(本鯖ではプレゼントボックスと手作りチョコレット以外は表示されませんがパケットはあることだし入れてみました。) +・その他スキル関係の細かい修正。 +・@コマンド一つとスクリプト一つを追加しましたが説明は後のパッチで書きます。 + (conf/) + char_athena.conf 修正。 + login_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (login/) + login.c + parse_login()、login_config_read()、login_log() 修正。 + (char/) + char.h 修正。 + char.c + char_config_read()、make_new_char()、parse_char() 修正。 + int_party.c 修正。 + int_storage.c 修正。 + int_guild.c 修正。 + int_pet.c 修正。 + (map/) + map.h 修正。 + skill.c + skill_status_change_start()、skill_additional_effect() 修正。 + skill_castend_nodamage_id()、skill_check_condition() 修正。 + skill_status_change_clear()、skill_produce_mix() 修正。 + skill_status_change_timer() 修正。 + pc.c + pc_calcstatus()、pc_insert_card()、pc_additem()、pc_cart_additem() 修正。 + storage.c + storage_additem() 修正。 + battle.c + battle_get_adelay()、battle_get_amotion()、battle_calc_damage() 修正。 + clif.c + clif_additem()、clif_equiplist()、clif_storageequiplist() 修正。 + clif_tradeadditem()、clif_storageitemadded()、clif_use_card() 修正。 + clif_cart_additem()、clif_cart_equiplist()、clif_vendinglist() 修正。 + clif_openvending()、clif_arrow_create_list() 修正。 + clif_skill_produce_mix_list()、clif_parse_SelectArrow() 修正。 + clif_parse_ProduceMix() 修正。 + script.c + buildin_produce() 修正。 + buildin_getitem2() 追加。 + atcommand.c + atcommand() 修正。 + +-------------------- +//0870 by shuto + +・mapflagの攻城戦MAPにnomemo追加 +・ギルド宝箱で、宝箱出現と同時にMAP鯖が落ちる問題修正(by ぴざまん) + +-------------------- +//0869 by 死神 + +・battle_athena.confにplayer_land_skill_limit、monster_land_skill_limit、party_skill_penaly 追加。 +・char_athena.confにparty_share_level 追加。 +・その他細かい修正。 + (conf/) + char_athena.conf 修正。 + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (char/) + char.h 修正。 + char.c + char_config_read() 修正。 + int_party.c + party_check_exp_share() 修正。 + (map/) + map.h 修正。 + skill.c + skill_attack()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_status_change_start() 修正。 + skill_castend_pos() 修正。 + pc.c + pc_calcstatus() 修正。 + mob.c + mobskill_castend_pos() 修正。 + battle.h + battle.c + battle_get_adelay()、battle_get_amotion()、battle_calc_damage() 修正。 + battle_config_read() 修正。 + pet.c + pet_data_init() 修正。 + +-------------------- +//0868 by 死神 + +・マジックロッド実装とスペルブレイカー修正。 +・マジックロッドの場合本鯖で使ってもなんの表示もなく発動の前には使ったかどうかの確認ができないのでスキル詠唱パケット(0x13e)を利用して使用する時スキル名が出るようにしています。(本鯖と違うぞとかで文句がこないように) +・スペルブレイカー詠唱キャンセルに関係なくskill_db.txtに設定されてるskill_typeがmagicのスキルのみ破ることができます。(ラグナゲートの説明を適用) +・skill_db.txtの書式が変わったので注意してください。ノックバック距離の設定もできますが念の為にいっておきますがA鯖でのテストでFWのノックバック距離は2でサンクも2であることを確認しています。韓国の2003年11月19日パッチ前の鯖ではありますが2-2は適用されている所なので本鯖の違いはないと思います。 +・その他スキル関係の細かい修正。 +・0867で書き忘れ。モンスターのヒールでアンデッドモンスターが攻撃されて自滅するのでヒールやリザの場合mob_skill_db.txtのval1(値1)に1を入れるとアンデッドモンスターも攻撃を受けず回復するようになります。本鯖ではモンスターのヒールはアンデッドに関係なく回復するようです。ただ個人的にはゾンビがヒールして自滅する方が正しいと思うのでmob_skill_db.txtで設定できるようにしております。 + (doc/) + db_ref.txt 修正。 + (db/) + cast_db.txt 修正。 + skill_db.txt 修正。 + (map/) + skill.h 修正。 + skill.c + skill_status_change_start()、skill_status_change_end() 修正。 + skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 + skill_attack()、skill_status_change_timer()、skill_castcancel() 修正。 + skill_unit_onplace()、skill_use_id()、skill_castend_id() 修正。 + skill_readdb() 修正。 + skill_get_blewcount() 追加。 + mob.c + mobskill_use_id()、mob_spawn()、mob_attack() 修正。 + battle.c + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_calc_misc_attack()、battle_weapon_attack() 修正。 + clif.c + clif_damage() 修正。 + pet.c + pet_attack() 修正。 + pc.c + pc_attack_timer()、pc_authok() 修正。 + pc_spirit_heal()、pc_natural_heal_sub() 修正。 + +-------------------- +//0867 by 死神 + +・スキル関係の細かい修正。 +・battle_athena.confにplayer_undead_nofreeze追加。 +・新しいアイテムパケットに対応。(PACKETVERを5以上にする必要があります。) +・mob_avail.txtでプレイヤーの姿を指定した時ペコペコや鷹を付けることができるように変更。頭下段次にオプションを設定できます。(ただハイディングとクローキングは指定できないようになっています。) + makefile 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + client_packet.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_config_read() 修正。 + clif.c + clif_mob_class_change()、clif_spawnmob()、clif_spawnpet() 修正。 + clif_damage()、clif_skill_damage()、clif_skill_damage2() 修正。 + clif_itemlist()、clif_cart_itemlist()、clif_storageitemlist() 修正。 + clif_mob0078()、clif_mob007b()、clif_pet0078()、clif_pet007b() 修正。 + pc.c + pc_attack_timer() 修正。 + skill.c + skill_castend_nodamage_id()、skill_additional_effect() 修正。 + skill_status_change_start() 修正。 + mob.h 修正。 + mob.c + mobskill_castend_id()、mob_getfriendstatus_sub() 修正。 + mob_readdb_mobavail() 修正。 + +-------------------- +//0866 by ぴざまん + +・MOTDのメッセージを全て編集できるように変更。 +・クローンスキル実装。 + ドル服のヒールアタックによるヒール習得は未テストです。 +・ギルド宝箱仮実装。 + ヴァルキリー1のみです。 + 商業投資による宝箱個数の算出式は適当です(初期個数4個としか知らないので)。 + Onclockイベントで動作させています。任意の時刻に変更してください。 +・AthenaDB計画のmob_db.txtとmapflag.txtを入れておきました。 + + (map/) + pc.c + pc_makesavestatus()、pc_calc_skilltree() 修正。 + pc_allskillup()、pc_calc_skillpoint() 修正。 + pc_resetskill()、pc_authok() 修正。 + skill.c + skill_attack() 修正。 + map.h 修正。 + (conf/) + gvg/TEST_prtg_cas01_AbraiJ.txt 修正。 + motd.txt 修正。 + mapflag.txt 修正。 + (db/) + mob_db.txt 修正。 + +-------------------- +//0865 by ぴざまん + +・自分が占領しているアジトのエンペリウムを攻撃できたバグ修正。 +・アブライが占領ギルドメンバー全員をマスターとみなしていたバグ修正。 + この修正に伴ってスクリプトリファレンスに改変があります。 + ・getcharid(0)で、自分のcharIDを返すように。 + ・getguildmasterid()追加。 +  =ギルドID +  該当ギルドのマスターのcharIDを返します。 + + (map/) + guild.c + guild_mapname2gc() 追加。 + battle.c + battle_calc_damage() 修正。 + script.c + buildin_getcharid() 修正。 + buildin_getguildmasterid() 追加。 + ローカルプロトタイプ宣言の一部を修正、追加。 + guild.h 修正。 + +-------------------- +//0864 by 胡蝶蘭 + +・inter鯖のwisの処理変更 + ・自前リンクリストからdb.hで提供されているデータベースを使用するように + ・WISのIDを16ビットから32ビットに増やした(パケットも修正) + ・メッセージのサイズチェックを入れた + ・パケットスキップが二回行われる可能性があるバグ修正 + + (char/) + inter.c + wis関係大幅変更 + (map/) + intif.c + wis関係の修正。主にパケット処理。 + (doc/) + inter_server_packet.txt + パケット3002,3801を変更 + +-------------------- +//0863 by 死神 + +・細かい修正。 +・battle_athena.confにplayer_attack_direction_change追加。 +・mob_skill_db.txtを修正する時挑発の修正を間違って修正。 +・モンスターのスキル自爆問題修正。(未テスト) + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (db/) + mob_skill_db.txt 修正。 + (map/) + mob.c + mobskill_use_id()、mobskill_use()、mobskill_castend_id() 修正。 + pc.c + pc_skill()、pc_attack_timer() 修正。 + skill.c + skill_castend_damage_id() 修正。 + battle.h 修正。 + battle.c + battle_weapon_attack()、battle_config_read() 修正。 + +-------------------- +//0862 by 胡蝶蘭 + +・mobスキル使用条件追加 + ・friendhpltmaxrate : 味方のHPが指定%未満のとき(テスト済み) + ・friendstatuson : 味方が指定したステータス異常になっているとき + ・friendstatusoff : 味方が指定したステータス異常になっていないとき + ・mystatuson : 自分が指定したステータス異常になっているとき + ・mystatusoff : 自分が指定したステータス異常になっていないとき + ステータス系は未テストです。mob_skill_db.txtに指定方法を書いています。 + たとえば自分が毒かどうかは mystatus,poison で、 + ハイディング中かどうかは mystatuson,hiding で指定します。 +・mobスキル使用ターゲット追加 + ・friend : 味方 + ・around : 自分の周囲(現在の仕様では周囲81マス)のどれか + ・around1〜around4 : 自分の周囲9,25,49,81マスのどれか(範囲を明示) + friendは条件がfriend系(friendhpltmaxrateなど)のときに使用可能。 + around系は場所指定スキルで使用可能。 + + (map/) + mob.c / mob.h + mob_getfriend*()追加、mobskill_use()修正など + (db/) + mob_skill_db.txt + 最初の説明のみ修正。データは修正していません。 + +-------------------- +//0861 by いど + +・サーバーsnapshot + +-------------------- +//0860 by J + +・死神さんの手下召喚の修正に合わせてMOBスキルDBを修正 +(/conf) + mob_skill_db.txt 修正。 + +-------------------- +//0859 by 獅子o^.^o +Alchemist warp 修正(Aegis参考) +(/conf) + (/warp) + npc_warp_job.txt 修正 + +-------------------- +//0858 by 死神 + +・細かい修正。 +・MAX_MOBSKILLを24から32に変更。(ただ少しですがまたメモリー使用量が増えます。) +・プロボケーションで取る行動をmob_skill_db.txtのval1(値1)で設定できるように修正。 +・手下召喚で複数の種類を設定出切るように修正。(最大5つまで) +・メタモルフォーシスとトランスフォーメーションも複数の種類を設定できるように修正。 + (db/) + skill_db.txt 修正。 + mob_skill_db.txt 修正。 + (map/) + skill.c + skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 + map.h 修正。 + mob.h 修正。 + mob.c + mob_readskilldb()、mob_summonslave()、mob_class_change() 修正。 + +-------------------- +//0857 by J + +・OWN Ragnarokにのっていた情報を元にMOBスキルを修正。 +・chase(突撃)が実装されているとのことなので突撃(?)をchaseにかえて +コメントアウトをはずしました。 +・死神さんが実装したMOBスキルを使用するモンスターを狩場情報に載ってる情報を元に実装。 + (/conf) + mob_skill_db.txt + +-------------------- +//0856 by 死神 + +・バグ修正と細かい修正。 +・battle_athena.confにmonster_attack_direction_change追加。 +・battle_athena.confのbasic_skill_checkとカプラの倉庫利用を合わせていましたがいつのまにかなくなったので取り戻し。(basic_skill_checkがnoなら基本機能スキルレベルに関係なく倉庫を使えます。) +・ピアーシングアタックの射程を3セルに変更して近接攻撃として認識するように修正。 +・A鯖でのテストでアンデッドの認識を属性によってすることがわかったのでundead_detect_typeのデフォルトを0に変更。 +・メタモルフォーシスやトランスフォーメーションで見た目がプレイヤーなら0x1b0パケットを送らないように変更。 +・ニューマバグは修正してみましたがスキルユニットの時間による作動仕様はまだ分析が完全じゃないので他の不具合が出てくるかも... + (conf/) + battle_athena.conf 修正。 + mapflag.txt 修正。(普通のダンジョンがシーズモードであるはずがないので) + (conf/npc/) + npc_town_kafra.txt 修正。 + (db/) + skill_db.txt 修正。 + (doc/) + conf_ref.txt 修正。 + script_ref.txt 修正。 + (map/) + pc.c + pc_modifybuyvalue()、pc_modifysellvalue() 修正。 + battle.h + battle.c + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_weapon_attack() 修正。 + battle_config_read() 修正。 + skill.c + skill_unitsetting()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id() 修正。 + mob.c + mob_attack() 修正。 + pet.c + pet_attack() 修正。 + clif.c + mob_class_change() 修正。 + +-------------------- +//0855 by asong + +・メタモルフォーシスでPCとして表示するMOBを指定した場合倉落ちするバグを「暫定」修正。 +・0x1b0パケでは無く0x7bを使うことで何とかしています。 +・使い分けをしたいところですが当方Cの知識が無く条件分岐が上手くいきませんでした。 +・もしかしたらプパの孵化(羽化?)がおかしくなってるかもしれません。 + (/map) + clif.c + mob_class_change() 修正。 + +-------------------- +//0854 by Kalen + +・不足していた一次職転職クエスト追加及び、それに伴うWarp、Mob修正) + (/conf) + (/npc) + npc_job_archer.txt + npc_job_swordman.txt + npc_job_thief.txt(台詞修正、点数処理変更) + npc_job_magician.txt + (/warp) + npc_warp25.txt(一部移動) + npc_warp.txt(一部移動) + npc_warp_job.txt(新設) + (/mob) + npc_mob_job.txt +・雛祭りQuest追加及び、それに伴うNPC修正。アマツ行き船で料金を取らなかった問題修正 + (/conf) + npc_event_hinamatsuri.txt + npc_town_amatsu.txt + npc_town_guide.txt + npc_town_kafra.txt + 雛祭りを有効にするとアマツカプラをWに、 + アルベルタ南カプラを削除にするようにしています。 + +-------------------- +//0853 by 死神 + +・バグ修正とNPCスキル関係の修正。 +・ダークブレスをMISC攻撃に変更。(ただ命中判定有り) +・クリティカルスラッシュ、コンボアタック、ガイデッドアタック、スプラッシュアタック、ブラインドアタック、カースアタック、ペトリファイアタック、ポイズンアタック、サイレンスアタック、スリープアタック、スタンアタック、ランダムアタック、ダークネスアタック、ファイアアタック、グラウンドアタック、ホーリーアタック、ポイズンアタック、テレキネスアタック、ウォーターアタック、ウィンドアタック、マジカルアタック、ブラッドドレイン、メンタルブレイカーはモンスターの武器射程に変更。そしてこれらのスキルをモンスターの攻撃射程によって遠距離攻撃と近距離攻撃になるように変更。 +・ピアーシングアタックは武器射程+2に変更。 +・エナジードレイン、ハルシネーションは魔法射程に変更。 +・ダークブレッシングの射程を4に変更とかかる確率を50+スキルレベル*5%に変更。(一応これも魔法なので少し射程を広くしました。基本魔法射程である8に変えるべきなのかどうかは微妙...) +・ガイデッドアタックはセイフティウォールとニューマを無効にする報告がありましたのでセイフティウォールとニューマが効かないように修正。 +・ディフェンダーはエフェクトだけ出るように修正。(スキルの仕様等をわかる方は情報をお願いします。) +・トランスフォーメーション実装。(メタモーフォシスと同じ物だそうです。ただこれは全然関係ない別のモンスターになる物らしいです。ニフルヘイムに使うやつがいるみたいです。) +・Athena雑談スレッド 其の弐の80をscript_ref.txtとして追加とちょっと修正。 + (db/) + skill_db.txt 修正。 + (doc/) + script_ref.txt 追加。 + (map/) + battle.c + battle_calc_damage()、battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 + skill.c + castend_damage_id()、castend_nodamage_id()、skill_use_pos() 修正。 + clif.c + clif_spawnnpc()、clif_parse_Restart()、clif_parse_QuitGame() 修正。 + mob.c + mobskill_castend_id()、mobskill_castend_pos() 修正。 + mobskill_use_id()、mobskill_use_pos() 修正。 + +-------------------- +//0852 by ぴざまん + +・亀島4F・蟻D2F・アマツD1Fをテレポ不可、シーズモードに変更。 +・nosaveの引数にSavePointが指定できてなかったので追加。 +・PVPのmapflagをmapflag.txtに統合。 + (map/) + npc.c + npc_parse_mapflag() 修正。 + (conf/) + mapflag.txt 修正。 + npc/npc_pvp.txt 修正。 + +-------------------- +//0851 by 胡蝶蘭 + +・ログイン時の暗号化keyが常に同じという大きな問題があったので修正 +・ログイン管理者ログイン(ladminで使用)でパスワードの暗号化に対応 + (login/) + login.c + login_session_data作成、暗号化keyをクライアントごとに作成など + (tool/) + ladmin + ver.1.05に。デフォルトでパスワードを暗号化するように。 + 暗号化のためにDigest::MD5モジュールを使用します。 + Digest::MD5が無い場合はパスワードの暗号化を行いません。 + (doc/) + admin_packet.txt + ログインサーバー管理ログイン部分変更 + +-------------------- +//0850 by 死神 + +・NPCスキル実装。(ハルシネーション、キーピング、リック、メンタルブレイカー、プロボケーション、バリヤー、ダークブレッシング、ダークブレス) +・スキル自爆の制限はmob_skill_db.txtでやればいいものなので取り戻し。 +・battle_athena.confにpet_hungry_friendly_decrease追加。 +・ペットの腹が完全に減ると支援攻撃を中止するように変更。 +・属性変更スキルが作動しなかった問題修正。 +・メンタルブレイカーは10+スキルレベル*5%のSPを減らす。(攻撃は通常武器スキル攻撃) +・リックは必中でSP-100、スタン確率スキルレベル*5%。(ダメージは無し、bNoWeaponDamageで無効) +・プロボケーションはモーションが準備されてないモンスターは入れてもなんの効果もなし。 +・ダークブレッシングはかかるとHPが1になる。耐性は魔法防御で適用。 +・ダークブレスは500+(スキルレベル-1)*1000+rand(0,1000)のダメージ。回避できるが防御無視で近距離物理攻撃だがセイフティウォールは無視して闇属性攻撃。(本鯖の計算式にあっている可能性はないかも。ただダメージ量と命中補正以外は本鯖合わせ) +・NPCスキルの維持時間は適度に設定。 +・モンスターの属性攻撃とガイデッドアタックがセイフティウォールを無視するとの報告を受けたのですが修正するかどうかはちょっと微妙。(スプラッシュアタックもセイフティウォール無視かも) + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (db/) + cast_db.txt 修正。 + skill_db.txt 修正。 + (map/) + mob.c + mob_damage() 修正。 + clif.h 修正。 + clif.c + clif_skill_estimation()、clif_damage()、clif_skill_damage() 修正。 + clif_skill_damage2()、clif_pet_performance() 修正。 + pet.c + pet_performance()、pet_target_check()、pet_hungry() 修正。 + skill.h 修正。 + skill.c + skill_additional_effect()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_status_change_start() 修正。 + battle.h 修正。 + battle.c + battle_get_def()、battle_get_mdef()、battle_calc_damage() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_config_read() 修正。 + +-------------------- +//0849 by lapis + +・街中のテストギルドフラグの表示がおかしかったのを修正。 +・ギルドメンバーは旗からアジトに飛べるように修正。 + (conf/gvg) + TEST_prtg_cas01_AbraiJ.txt 修正。 + +-------------------- +//0848 by huge + +・スキル自爆を、HPが全回復している時は使えないよう修正。 +・スフィアマイン・バイオプラント・・・ターゲット変更できない...。 +・mobにターゲット無視IDを設定できるようにしました。(Gv用mobに使える?) + (map/) + map.h 修正。 + mob_dataに int exclusion_src,exclusion_party,exclusion_guild 追加。 + mob.h 修正。 + mob.c + mob_exclusion_add() 追加。 + mob_exclusion_check() 追加。 + mob_timer_delete() 追加。 + mob_attack() 修正。 + mob_target() 修正。 + mob_ai_sub_hard_activesearch() 修正。 + mob_ai_sub_hard_mastersearch() 修正。 + mob_ai_sub_hard() 修正。 + skill.c + skill_castend_damage_id() 修正。 + skill_castend_pos2() 修正。 + +-------------------- +//0847 by 死神 + +・露店バグ修正。 + (map/) + clif.c + clif_vendinglist()、clif_openvending() 修正。 + vending.c + vending_openvending() 修正。 + skill.c + skill_castend_nodamage_id() 修正。 + +-------------------- +//0846 by 死神 + +・バグ修正と細かい修正。 +・battle_athena.confのenemy_strがペットにも適用するように変更。 +・bHPDrainRateとbSPDrainRateでxがマイナスでも作動するように変更。 +・PCやNPCの姿をしたモンスターも死ぬと5秒後マップから消えるように変更。 + (map/) + battle.c + battle_calc_pet_weapon_attack()、battle_weapon_attack() 修正。 + skill.c + skill_attack()、skill_castend_damage_id() 修正。 + pc.c + pc_allskillup() 修正。 + clif.h 修正。 + clif.c + clif_openvending()、do_init_clif() 修正。 + clif_clearchar_delay()、clif_clearchar_delay_sub() 追加。 + mob.c + mob_damage() 修正。 + +-------------------- +//0845 by ぽぽぽ + +・mob_avail.txtでPCグラフィック(0〜23)を指定したペットが出現したときクライアントエラーがでるのを暫定修正。 +・mob_avail.txtでペットにもPCキャラの性別・髪型&色・武器・盾・頭装備を指定できるようにしました。 +・MOBのATK計算にSTRを適用するかどうか設定可能にした。 + (map/) + clif.c + clif_pet0078()、clif_pet007b()、clif_spawnpet()修正。 + battle.h修正。 + battle.c + battle_config_read()、battle_calc_mob_weapon_attack()修正。 + +-------------------- +//0844 by ぽぽぽ + +・mob_avail.txtでPCグラフィック(0〜23)を指定したMOBが出現したときクライアントエラーがでるのを暫定修正。 +・mob_avail.txtでPCキャラの性別・髪型&色・武器・盾・頭装備を指定できるようにしました。 + グラフィックすり替え先IDが0〜23の時だけ有効で、指定方法は + MOB-ID,グラフィックすり替え先ID,性別(0=female,1=male),髪型,髪色,武器,盾,上段頭装備,中段頭装備,下段頭装備 + となります。装備はitem_dbのView欄参照のこと。 + (map/) + clif.c + clif_mob_0078()、clif_mob007b()、clif_spawnmob()修正。 + mob.h修正。 + mob.c + mob_get_sex()、mob_get_hair()、mob_get_hair_color()、ob_get_weapon()、 + mob_get_shield()、mob_get_head_top()、mob_get_head_mid()、mob_get_head_buttom()追加。 + mob_readdb()、mob_readdb_mobavail()修正。 + +-------------------- +//0843 by 死神 + +・リフレクトシールド実装。 +・アイテムスクリプトにbShortWeaponDamageReturnと +bLongWeaponDamageReturn 追加。 +・その他スキル関係や他の所修正。 + (db/) + item_db.txt 修正。 + skill_db.txt 修正。 + cast_db.txt 修正。 + const.txt 修正。 + (doc/) + item_bonus.txt 修正。 + (map/) + map.h 修正。 + battle.c + battle_get_def()、battle_get_def2()、battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_weapon_attack()、battle_calc_magic_attack() 修正。 + pc.c + pc_calcstatus()、pc_bonus()、pc_bonus2()、pc_equipitem() 修正。 + pc_unequipitem()、pc_checkallowskill() 修正。 + skill.c + skill_attack()、skill_unit_onplace()、skill_status_change_start() 修正。 + skill_status_change_end()、skill_status_change_timer() 修正。 + skill_castend_nodamage_id() 修正。 + clif.c + clif_additem()、clif_equiplist()、clif_storageequiplist() 修正。 + clif_tradeadditem()、clif_storageitemadded()、clif_cart_additem() 修正。 + clif_cart_equiplist()、clif_vendinglist()、clif_openvending() 修正。 + clif_damage()、clif_skill_damage()、clif_parse_LoadEndAck() 修正。 + +-------------------- +//0842 by 死神 + +・スキル関係の修正と細かい修正。 +・aegis鯖で色々と検証した物を適用。 +・メテオの範囲を7*7、LoV13*13、SG11*11、FN5*5に修正。 +・シグナム実装。(ただPVPでプレイヤーにかかるかどうかがわからなかったので +かかる方向で実装。)これで1次職業のスキルはクリアかも... +・装備スクリプトにbHPDrainRateとbSPDrainRate追加。 +・その他細かい修正少し。 + (doc/) + item_bonus.txt 修正。 + (db/) + cast_db.txt 修正。 + item_db.txt 修正。 + const.txt 修正。 + (map/) + map.h 修正。 + skill.c + skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 + skill_unitsetting()、skill_castend_pos2()、skill_castend_id() 修正。 + skill_status_change_start()、skill_status_change_timer() 修正。 + skill_status_change_end()、skill_unit_onplace() 修正。 + skill_frostjoke_scream()、skill_attack() 修正。 + skill_attack_area() 追加。 + battle.c + battle_calc_magic_attack()、battle_get_element()、battle_get_def() 修正。 + battle_get_def2()、battle_get_mdef()、battle_damage() 修正。 + battle_calc_damage()、battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_weapon_attack() 修正。 + mob.c + mobskill_castend_id() 修正。 + pc.c + pc_calcstatus()、pc_bonus2()、pc_attack_timer() 修正。 + clif.c + clif_spawnmob()、clif_spawnpet()、clif_spawnnpc() 修正。 + clif_parse_ActionRequest() 修正。 + +-------------------- +//0841 by Kalen + +・水溶液が作れなかったので追加 + conf/npc/npc_job_magician.txt + +-------------------- +//0840 by Kalen + +・鬼イベント追加 + conf/npc/npc_event_oni.txt + +・map_athena.conf修正(バレンタインコメントアウト。鬼追加) + conf/map_athena.conf + +-------------------- +//0839 by shuto + +・コンロンNPC追加(カン ソンソンが抜けてた) + +-------------------- +//0838 by 死神 + +・スキルサイトラッシャー実装。 +・モンスターのクローキングとマキシマイズパワーは持続時間をレベル*5秒に変更。 +・その他細かいバグ修正。 + (db/) + skill_db.txt 修正。 + (map/) + skill.c + skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 + skill_castend_pos2()、skill_unitsetting()、skill_get_unit_id() 修正。 + skill_status_change_start() 修正。 + battle.c + battle_calc_magic_attack() 修正。 + +-------------------- +//0837 by 死神 + +・スキル関係の細かい修正。 +・フロストノヴァをユニット設置式に変更。 +・ロードオブヴァーミリオンの範囲を11*11に修正と40ヒットするように変更。(ラグナゲートの情報。 +13*13説もありますが...) +・ユピテルサンダーのノックバックを2~7に変更。 +・ストームガストの攻撃回数をレベル依存から10回に固定。 +・サンクチュアリのノックバックを3から2に変更。(aegis鯖でノックバックがあることは確認しましたがどれぐらいなのかが不明だったので少し減らしてみました。) +・モンスターの詠唱時間が早くなっていた問題修正。(dex補正が入ってしまったせいです。) +・その他オートスペル当たりの細かい修正。 + (db/) + skill_db.txt 修正。 + (map/) + skill.c + skill_castfix()、skill_delayfix()、skill_timerskill() 修正。 + skill_castend_pos2()、skill_unitsetting()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_get_unit_id()、skill_attack() 修正。 + battle.c + battle_calc_magic_attack()、battle_weapon_attack() 修正。 + +-------------------- +//0836 by 釈尊 + +・モンスターの取り巻き召還の間隔を中ボス以外完全修正。 + (db/) + mob_skill_db.txt 修正。 + +-------------------- +//0835 by (凸) + +・白刃取りでポーズをとるようにした。 +(ポーズだけなので、実際に攻撃を受け止めたりはできません) +clif_bladestop()を呼ぶことで白刃取り状態のON、OFFのパケットが送れます。 + + (map/) + clif.h 修正。 + clif,c + clif_bladestop() 追加 + skill.c + skill_castend_nodamage_id() 修正。 + +-------------------- +//0834 by 釈尊 + +・モンスター取り巻き召還の間隔が短すぎるとの事で応急処置。(今回は黄金蟲のみ) + (db/) + mob_skill_db.txt 修正。 + +-------------------- +//0833 by (凸) + +・memo禁止地域で/memo時の修正。 +・ついでにitem_dbを更新。 + + (doc/) + client_packet.txt + R 0189 更新。 + (db/) + item_db.txt 最新版へ更新。 + (map/) + pc.c + pc_memo() 修正。 + +-------------------- +//0832 by 死神 + +・コード最適化と細かい修正。 +・オートスペルを地面魔法に対応。 +・サンダーストームとヘヴンズドライブをユニット設置式に変更。 +・ディフェンダーの攻撃速度低下を本鯖にあわせ。 +・その他細かい修正。 + (doc/) + item_bonus.txt 修正。 + (db/) + skill_require_db.txt 修正。 + cast_db.txt 修正。 + (map/) + map.h 修正。 + path.c + calc_index()、path_search() 修正。 + skill.c + skill_unitsetting()、skill_castend_pos2()、skill_get_unit_id() 修正。 + skill_status_change_timer_sub()、skill_castend_nodamage_id() 修正。 + skill_additional_effect()、skill_frostjoke_scream() 修正。 + pc.c + pc_calcstatus()、pc_skill()、pc_allskillup() 修正。 + battle.c + battle_get_speed()、battle_get_adelay()、battle_get_amotion() 修正。 + battle_weapon_attack() 修正。 + +-------------------- +//0831 by 死神 + +・少し修正。 +・オートスペル修正。装備による物とスキルによる物を別々に適用、発動確率修正。 +・装備によるオートスペルは指定したレベルより2つ下まで判定をします。つまりレベル5を設定するとレベル3から5まで発動します。 +・battle_athana.confのplayer_cloak_check_wall、monster_cloak_check_wallをplayer_cloak_check_type、monster_cloak_check_typeに変更。 +・アイテムルート権限時間を本鯖に合わせて修正。 +・その他スキル関係の細かい修正。 + (doc/) + conf_ref.txt 修正。 + db_ref.txt 修正。 + item_bonus.txt 修正。 + (conf/) + battle_athana.conf 修正。 + (db/) + item_db.txt 修正。 + (map/) + map.h + map.c + block_free_max、BL_LIST_MAX 修正。 + skill.h 修正。 + skill.c + skill_additional_effect()、skill_attack()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_unit_onplace() 修正。 + skill_status_change_end()、skill_status_change_start() 修正。 + skill_initunitgroup()、skill_unitsetting()、skill_castfix() 修正。 + skill_delayfix()、skill_autospell()、skill_use_id()、skill_use_pos() 修正。 + skill_check_cloaking()、skill_unit_timer_sub()、skill_check_condition() 修正。 + battle.h 修正。 + battle.c + battle_damage()、battle_get_agi()、battle_get_speed() 修正。 + battle_get_adelay()、battle_get_amotion()、battle_get_flee() 修正。 + battle_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_config_read() 修正。 + mob.c + mob_attack()、mob_damage()、mobskill_use_id() 修正。 + mobskill_use_pos()、mob_spawn()、mob_class_change() 修正。 + mob_can_move() 修正。 + pc.c + pc_attack_timer()、pc_checkweighticon()、pc_calcstatus() 修正。 + pc_damage()、pc_equipitem()、pc_unequipitem() 修正。 + pc_bonus2()、pc_bonus3()、pc_memo()、pc_authok() 修正。 + pc_isUseitem() 修正。 + clif.h 修正。 + clif.c + clif_changeoption()、clif_parse_LoadEndAck()、clif_autospell() 修正。 + clif_skill_memo() 修正。 + clif_skill_teleportmessage() 追加。 + script.c + buildin_sc_start() 修正。 + atcommnad.c + atcommand() 修正。 + +-------------------- +//0830 by huge + +・オートスペルで、自分の習得してるレベルよりも高いレベルで + 魔法が発動していたであろう問題を修正。 +・オートスペルでも、ちゃんとSPが減るように修正(ど忘れ) + (map/) + battle.c + battle_weapon_attack() 修正。 + skill.c + skill_autospell() 修正。 + +-------------------- +//0829 by Kalen + +・mob_db修正 + 自鯖用のと間違ってUPしてしまったようです。 + 本来のものに直しました。 + +-------------------- +//0828 by 聖 + +・サーバのSnapshot +・MVPボス系からバカンスチケットが大量に出ていた問題を修正。 + (common/) + version.h 修正。 + (db/) + mob_db.txt 修正。 + +-------------------- +//0827 by J + +・固定MOBのはずのメガリスと人面桃樹が歩いていたのを修正。 +・闘技場のMOBにスキルを実装。 +・パサナとファラオがスキルが設定されていなかったのを実装。 + (db/) + mob_db.txt 修正。 + mob_skill_db.txt 修正。 + +-------------------- +//0826 by ぴざまん + +・一部の演奏スキルを使うと鯖が落ちるバグ修正。 +・クローキング中にスキルを使用でき、 + 使用するとクローキングが解除されるように修正。 +・Kalenさんのmob_db.txtをまとめました。 + (map/) + skill.c + skill_unit_onplace()、skill_unit_onout() 修正。 + skill_status_change_start()、skill_status_change_timer() 修正。 + skill_use_id()、skill_use_pos() 修正。 + (db/) + mob_db.txt 修正。 + +-------------------- +//0825 by 死神 + +・細かい修正。(細かいことのわりには修正した所が多いけど...) +・ワープポータルの中に止まった時以外はワープしないように修正。 +・battle_athena.confにplayer_skill_nofootset、monster_skill_nofootset 追加。 +・NPCをクリックした後露店をクリックして露店を閉じると動けなくなるバグ修正。 +ただ露店を閉じる時何のパケットも転送してこないので露店をクリックするとNPCの処理から抜けるようにしました。(本鯖ではNPCの処理が抜けないらしいですがそれ以外方法がなかったのっで。) +・killmonsterのAllで召喚されたモンスターだけ消すように変更。 +・ソース最適化やスキル関係の細かい修正多数。 + (doc/) + conf_ref.txt 修正。 + db_ref.txt 修正。 + (conf/) + battle_athana.conf 修正。 + atcommnad_athena.conf 修正。 + (db/) + item_db.txt 修正。 + skill_db.txt 修正。 + (login/) + parse_fromchar() 修正。 + (map/) + map.h 修正。 + clif.c + clif_closevendingboard()、clif_parse_VendingListReq() 修正。 + clif_mob0078()、clif_mob007b()、clif_pet0078()、clif_pet007b() 修正。 + skill.h 修正。 + skill.c + skill_check_condition()、skill_castend_pos2() 修正。 + skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 + skill_castend_id()、skill_status_change_start()、skill_castfix() 修正。 + skill_delayfix()、skill_check_unit_range_sub() 修正。 + skill_check_unit_range()、skill_castend_pos()、skill_stop_dancing() 修正。 + skill_unit_onplace()、skill_readdb()、skill_timerskill()、skill_blown() 修正。 + skill_check_unit_range2_sub()、skill_check_unit_range2() 追加。 + skill_get_maxcount() 追加。 + mob.c + mobskill_castend_id()、mobskill_castend_pos()、mob_deleteslave() 修正。 + mob_stop_walking()、mob_walk()、mob_damage() 修正。 + pc.c + pc_calcstatus()、pc_checkskill()、pc_stop_walking() 修正。 + pc_walk()、pc_damage() 修正。 + npc.c + npc_touch_areanpc() 修正。 + pet.c + pet_stop_walking() 修正。 + script.c + buildin_killmonster()、buildin_killmonster_sub() 修正。 + battle.h + battle.c + battle_calc_magic_attack()、battle_get_flee()、battle_get_flee2() 修正。 + battle_get_adelay()、battle_get_amotion()、battle_get_max_hp() 修正。 + battle_get_hit()、battle_get_critical()、battle_get_atk2() 修正。 + battle_damage()、battle_config_read() 修正。 + atcommand.h 修正。 + atcommand.c 修正。 + +-------------------- +//0824 by ぴざまん + +・セイフティウォール・ニューマの足元置きができなかった問題修正。 +・エンペリウムにヒール等の支援スキルが効いていた問題修正。 +・闘技場でモンスターリセットができなかった問題修正。 + killmonsterは"killmonster ,"と記述して + 該当eventnameを持つモンスターを削除しますが + eventnameにAllと入れると該当MAPの全モンスターを消去するようにしました。 + + (map/) + skill.c + skill_check_unit_range_sub()、skill_castend_nodamage_id() 修正。 + script.c + buildin_killmonster()、buildin_killmonster_sub() 修正。 + (conf/npc/) + npc_event_tougijou.txt 修正。 + +-------------------- +//0823 by Kalen + +・闘技場データ揃ったので、完成 + conf/npc/npc_event_tougijou.txt + ただし、こちらでチェックしたところkillmonsterがうまくいかず、 + 失敗、時間切れした場合モンスターリセットが出来ません。 + イベントが設定されているモンスターは処理できないのかと思いましたが + AgitのほうのエンペのKillmonsterはちゃんと動いてますし… + 原因分かる方お願いします<(_ _)> + +・gon_testのmapflag追加 + conf/mapflag.txt + +・mob_db更新 + 1419〜1491が既存のMobの定義ばかりなので追加しませんでしたが、 + 調べた所闘技場のMobのデータであることが分かりました(Dropを弄ったもの) + 本鯖では闇りんごが報告されています。が、こちらはDrop空白で処理しました。 + クライアント上では同名でしたが、区別のため接頭にG_をつけて区別してます。 + mob_skill_dbありがとうございました↓ + +-------------------- +//0822 by ぴざまん + +・演奏スキルでの補正をダンサーにも適用。 +・サンクチュアリバグ修正。 +・KalenさんのMOBスキルデータベースをまとめときました。 + + (map/) + skill.c + skill_status_change_start()、skill_unit_onplace() 修正。 + battle.c + battle_get_critical()、battle_get_hit() 修正。 + pc.c + pc_calcstatus() 修正。 + +-------------------- +//0821 by huge + +・オートスペル仮実装。 +・timerで判定しようかとも思いましたが、装備の無限オートスペルの為にsc_[].val1で見てマス。 +・bonus2 bAutoSpell追加。一応どんなスキルでも指定できるようにしてますが(番号はskill_tree参照) + skill_castend_damage_idのタイプ以外のスキルを指定しないでください。 + 発動確率は、Lv1:50%、Lv2:35%、Lv3:15%、それ以上は 5%固定です。 + あと、スキルレベルも指定できますが、限界を超えた数字を入れると墜ちるかもしれません。 +■書き方例:(ファイアボルトLv3の時)bonus2 bAutoSpell 19,3; + + (db/) + const.txt 修正。 + (map/) + battle.c + battle_weapon_attack() 修正。 + clif.h + clif.c + packet_len_table 修正。 + clif_autospell() 追加。 + clif_parse_AutoSpell() 追加。 + map.h 修正。 + pc.c + pc_bonus2() 修正。 + pc_equipitem() 修正。 + pc_unequipitem() 修正。 + skill.h + skill.c + skill_castend_nodamage_id() 修正。 + skill_autospell() 追加。 + skill_status_change_end() 修正。 + skill_status_change_start() 修正。 + status_changeの番号テーブル修正。 + +-------------------- +//0820 by ぴざまん + +・アドリブのメッセージが入ってなかったので修正 +・バードの演奏スキルで楽器の練習や自ステータスの補正が入ってなかったのを修正。 + struct status_changeのvalが3つ必要だったので(val4は予約されてたっぽいので)val5を追加しました + (map/) + map.h 修正。 + skill.c + skill_status_change_start()、skill_castend_nodamage_id() 修正。 + skill_castfix()、skill_delayfix() 修正。 + battle.c + battle_get_flee()、battle_get_max_hp() 修正。 + battle_get_adelay()、battle_get_amotion() 修正。 + battle_calc_misc_attack() 修正。 + pc.c + pc_calcstatus() 修正。 + +-------------------- +//0819 by Kalen + +・コンロン(NPC、Warp)修正 + conf/npc/npc_town_gonryun.txt(案内員補充) + conf/npc/npc_event_tougijou.txt + conf/warp/npc_warp_gonryun.txt(宿2FとD2Fなど) + +・MOB修正 + conf/mob/npc_monster30.txt(一反木綿不足追加) + conf/mob/npc_monster35.txt(コンロンMob追加) + +・DB修正 + db/mob_db.txt(コンロン[全て]+ウンバラ[定義]追加。Aspeed等適当です。まぁ無いよりましということで) + db/mob_skill_db.txt(情報を元にコンロンのMob分追加) + db/item_db.txt(Athena DB Project 2/19 21:10DL分) + +-------------------- +//0818 by あゆみ + +・テレポートスキルLv1で、選択ウインドウが出てこないバグを修正。 +・重量が90%以上の場合でも、一部のスキルが使用可能だったバグを修正。 +・@allskillコマンドの修正とか。 + + (conf/) + msg_athena.conf 修正。 + (map/) + atcommand.c + atcommand() 修正。 + pc.c + pc_allskillup() 修正。 + skill.c + skill_castend_nodamage_id() 修正。 + skill_check_condition() 修正。 + +-------------------- +//0817 by huge + +・ディボーションの処理修正 + ・糸の出し方はパケを貰ったのでできましたが、アイコンの方はまだ分からないです。 + ・あと、自分の環境で2人以上に同時に掛けれなかったので、複数人にかけた場合 + 多分0の羅列の所に2人目、3人目・・・のIDが入るんじゃないかなぁという予測でやってます。 +・ハイディング中、及びクローキング中にダメージを受けると解けるよう修正。 + + (map/) + battle.c + battle_damage() 修正。 + clif.c + clif_devotion() 修正。 + pc.c + pc_walk() 修正。 + skill.c + skill.h + skill_castend_nodamage_id() 修正。 + skill_devotion() skill_devotion2() 修正。 + skill_devotion3()skill_devotion_end() 修正。 + +-------------------- +//0816 by ぴざまん +・ファイアーウォール3枚制限実装。 +・重ね置き禁止をプレイヤー・モンスターにも適用するように修正。 +・寒いジョーク・スクリームのPvP・GvGで、効果が自分にも及ぶバグ修正。 + ついでにPTメンバーには低確率でかかるのも実装。 +・寒いジョーク・スクリーム・スピアブーメランのディレイ修正。 + ミュージカルストライク・矢撃ちの詠唱時間修正。 + (map/) + skill.c + skill_check_condition()、skill_check_unit_range_sub() 修正。 + skill_check_unit_range()、skill_delunitgroup() 修正。 + skill_castend_pos2()、skill_frostjoke_scream() 修正。 + map.h 修正。 + (db/) + cast_db.txt 修正。 + +-------------------- +//0815 by 死神 + +・0814のバグ修正と細かい修正。 +・mapflag monster_noteleport、noreturn追加とnoteleportの仕様変更。 +noteleportはプレイヤーのハエとテレポート、ワープスキルの制限をするが蝶は制限しないように変更、monster_noteleportはモンスターのテレポートを制限する物でnoreturnは蝶の使用を制限する物です。ただmapflag.txtは修正していません。(noreturnを設定する必要があります。) +・battle_athena.confのplayer_auto_counter_typeとmonster_auto_counter_typeが説明通りに機能しなかった問題修正。 +・battle_athena.confにplayer_cloak_check_wall とmonster_cloak_check_wall 追加。 +・ボスモンスターの認識をMVP経験とmodeの0x20で行なっていた物をmodeだけにするように変更。(本鯖のイベントモンスターでMVP経験をくれるが状態異常に掛かるやつがあったらしく修正。HPが1億もあって毒じゃないと倒せなかったらしいので...) つまりMVP経験があってもボス扱いではないモンスターを作ることも可能です。 +・状態異常に掛かった状態で接続切断ができないように修正。(ただタイマーチェックではなくopt1とopt2をチェックするだけなので見た目が変わる状態異常だけに適用されます。) +・今さらですが昔のyareCVS(2003年9月バージョン)で適用されていたラグを減らす為の処理を入れてみました。どんな効果があるかは自分でもわかりません。(ただ入れてみただけ...) +・シーズモードとPVPで禁止装備が外されても効果が消えないバグ修正。 +・その他細かい修正。 +・未テストの物もかなりあります。 + (common/) + socket.c + connect_client()、make_listen_port()、make_connection() 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_calc_magic_attack()、battle_config_read() 修正。 + skill.c + skill_unit_onplace()、skill_status_change_timer() 修正。 + skill_castend_nodamage_id()、skill_use_id() 修正。 + skill_check_unit_range_sub()、skill_timerskill() 修正。 + skill_additional_effect()、skill_attack()、skill_status_change_start() 修正。 + skill_check_cloaking() 修正。 + clif.c + clif_item_identify_list()、clif_parse_QuitGame()、clif_GM_kick() 修正。 + pc.c + pc_attack_timer()、pc_isUseitem()、pc_checkitem 修正。 + mob.c + mob_warp()、mob_walk()、mob_attack()、mob_target() 修正。 + mob_ai_sub_hard_activesearch()、mob_ai_sub_hard_mastersearch() 修正。 + mob_ai_sub_lazy()、mob_damage() 修正。 + npc.c + npc_parse_mapflag() 修正。 + map.h 修正。 + +-------------------- +//0814 by 死神 + +・バグ修正と細かい修正。 +・battle_athena.confのplayer_auto_counter_typeとmonster_auto_counter_typeの仕様を変更。(本鯖ではスキル反撃はできないみたいなので設定できるように変更。) +・毒と石化によるHP減少を本鯖に合わせて修正と完全石化の前では動けるように変更。(毒は1秒に3+最大HPの1.5%(モンスターは0.5%)、石化は5秒に1%) 未テスト +・MVP経験値は本鯖でいつも入るようになったので修正。 +・スティールの確率を少し下げ。 +・モンスターのハイディング、クローキング、マキシマイズパワーがすぐに解除される問題修正。(モンスターにはSPがないせいです。取り敢えずクローキングはハイディングの時間を適用してマキシマイズパワーはウエポンパーフェクションの時間を適用します。) 未テスト +・サンクチュアリを人数から回数に変更。 +・PVPで自分のトラップに攻撃対象になるように変更。 +・vitペナルティの適用で乗算防御も減るように変更。(未テスト) +・その他細かいバグ修正。 + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + (db/) + skill_db.txt + (map/) + map.h 修正。 + script.c + buildin_itemskill() 修正。 + mob.c + mob_can_move()、mob_ai_sub_hard()、mob_damage() 修正。 + skill.c + skill_unitsetting()、skill_unit_onplace()、skill_castend_nodamage_id() 修正。 + skill_attack()、skill_status_change_start() 修正。 + skill_status_change_timer()、skill_status_change_timer_sub() 修正。 + skill_addtimerskill()、skill_cleartimerskill() 修正。 + skill_check_unit_range_sub() 修正。 + battle.c + battle_calc_damage()、battle_check_target() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack() 修正。 + pc.c + pc_steal_item() 修正。 + clif.c + clif_parse_WalkToXY()、clif_closevendingboard() 修正。 + +-------------------- +//0813 by Kalen +・コンロンNPC追加 + conf/npc/npc_town_gonryun.txt(クエストは不明 + conf/npc/npc_town_kafra.txt + conf/npc/npc_town_guide.txt + (conf/npc/npc_event_tougijou.txt)データ不足 + +・全GvGMAPのMobデータ追加 + conf/mob/npc_monster_gvg.txt + +・TESTmobからテストギルドフラグ移動 + conf/gvg/TEST_prtg_cas01_AbraiJ.txt + +-------------------- +//0812 by huge + +・ディボーションの仮実装 + ・パケットが全然分かりませんでしたので、 + 青い糸も出ないし、アイコンすら表示できません。 + ・ダメ移動だけで、ノックバック・オートガードは適応されません。 + + (map/) + clif.c + clif.h + clif_devotion() 追加。 + skill.c + skill_castend_nodamage_id() 修正。 + skill_devotion() skill_devotion2() 追加。 + skill_devotion3() skill_devotion_end() 追加。 + skill_status_change_end() 修正。 + skill_status_change_start() 修正。 + skill_brandishspear_first() 修正。 + skill_brandishspear_dir() 修正。 + pc.c + pc_authok() 修正。 + pc_walk() 修正。 + pc_damage() 修正。 + battle.c + battle_damage() 修正。 + map.h + map_session_data{} + struct square dev 追加。 + skill.h のbrandishをsquareに改名し、 + (common/) mmo.h に移動 + +-------------------- +//0811 by ぴざまん + +・攻城中は蝶が使えるように修正 +・寒いジョーク・スクリーム実装(PTメンバーに低確率で云々は未実装です) +・GVGスクリプトを修正(試行錯誤しすぎてどこをどうしたか覚えてません…) + GVGスクリプトに関してですが、既知のバグがあります + それは、占領ギルドマスター以外のPCが、占領ギルドマスターより先にNPCに話し掛けると + マップサーバが落ちるというものです。 + これは、getguildmaster・getguildnameを使用しているスクリプトすべてに起こり得ることであり + 先に占領ギルドマスター以外で話し掛けると、guild_searchが何故か(該当IDのギルドがあるにも関わらず) + NULLを返す事に起因します。 + 正直スクリプト関係はよくわかっていないので、これは私の技術では修正のしようがありません。 + 暫定的な対処としてNULLを返してMAP鯖が落ちるくらいなら文字列「null」を返すようにしました。 + + (map/) + skill.c + skill_frostjoke_scream() 追加。 + skill_additional_effect()、skill_timerskill() 修正。 + skill_castend_nodamage_id() 修正。 + pc.c + pc_isUseitem() 修正。 + script.c + buildin_getpartyname()、buildin_getguildname() 修正。 + buildin_getguildmaster() 修正。 + (db/) + cast_db.txt 修正。 + (conf/gvg/) + ev_*.txt以外のtxt全てを修正。 + +-------------------- +//0810 by 聖 + +・MVPの処理を変更。(確率で10000があっても、他のアイテムも出るようにしました) +・MVPで装備を入手した場合、鑑定済みで入手していた問題を修正。 +・スキル詠唱中にイグ葉や拡大鏡を使うとプレーヤーの使用可能な + 全スキルのLVが1に固定されてしまう問題を修正。 +・オークアーチャー等、モンスターによる罠スキルの有効期限が切れたときに、 + 設置用トラップが出る問題を修正。 +・ログインエラー(パスワード入力ミスやBAN等)のエラーメッセージが + 正しくクライアントに通知されない問題を修正。 +・その他細かな修正。 + (common/) + version.h 修正。 + (login/) + login.c + parse_login() 修正。 + parse_fromchar() 修正。 + (char/) + int_guild.c + mapif_parse_GuildLeave() 修正。 + (map/) + itemdb.c + itemdb_read_itemnametable() 修正。 + atcommand.c + atcommand() 修正。 + skill.c + skill_unit_timer_sub() 修正。 + script.c + buildin_itemskill() 修正。 + mob.c + mob_damage() 修正。 + +-------------------- +//0809 by Kalen + +・東湖城ワープポイント修正 +・アマツ寿司屋修正 +・バグスレ129の問題修正? + + +-------------------- +//0808 by ぴざまん + +・装備制限が上手く動作していなかったのを修正。 +・モンハウギルドはGvG開始時に作られるように変更。 +・GvG開始時に該当マップにいる全PC(占領ギルド員以外)をセーブポイントに戻すように修正。 +・モンハウギルドアジトでエンペを壊すと、モンハウが消えるように修正。 + この修正に伴ってmaprespawnguildidの引数のflagの仕様を変更しました + flagはビットフラグになり、 +  1ビット目:占領ギルド員をセーブポイントに戻すか +  2ビット目:占領ギルド員以外をセーブポイントに戻すか +  3ビット目:エンペ・ガーディアン以外のMOBを消すか + いずれも、0=NO、1=YESになります + + (conf/gvg/) + ev_agit_aldeg.txt 修正。 + ev_agit_gefg.txt 修正。 + ev_agit_payg.txt 修正。 + ev_agit_prtg.txt 修正。 + TEST_prtg_cas01_AbraiJ.txt 修正。 + TEST_prtg_cas01_mob.txt 修正。 + (map/) + pc.c + pc_checkitem() 修正。 + script.c + buildin_maprespawnguildid_sub() 修正。 + buildin_maprespawnguildid() 修正。 + +-------------------- +//0807 by 死神 + +・0805でFD_SETSIZEを修正する所を間違ったので修正しました。56名止まりが治ると言う保証はありませんが... +・一度に転送するパケットの長さを32768bytesから65536bytesに変更。 + (common/) + mmo.h 修正。 + socket.h 修正。 + socket.c 修正。 + +-------------------- +//0806 by Kalen + +・agitフォルダ→gvgフォルダへ移行 + 諸意見あると思いますが、jROでは攻城戦をgvgと呼ぶことが一般的なのでこちらに統合します。 + conf/gvg/ + ###agitフォルダを削除してください### (Please delete the "agit" folder.) + getmaster対応 + +・アマツの寿司屋バグ修正と項目追加(thx 114 + conf/npc/npc_town_amatsu.txt + +・map_flag再修正 + conf/map_flag.txt + [GVGMAP]確かに常にシーズモードなら問題ないですが、削除されましたので + 常にシーズモードではありません。従って解除時(時間外)には枝、テレポが使えます + 時間前に枝撒き、まだ実装してませんが宝箱奪取も可能になるので枝、テレポは常に使用不可で問題ないと思います。 + +後前回書き忘れましたが、momotaroイベントですが、ちょっと不安定な可能性があります。 +原因がわからないのですが、ループしてるかもしれません。一応コメントアウトしてあります + +-------------------- +//0805 by 死神 + +・文字化け修正。 +・シーズモードでのテレポート禁止や古木の枝使用禁止はソースレベルで +処理しているのでmapflag.txtから削除。(因みにnopenaltyもソースレベルで +処理しています。) +・battle_athena.confのagit_eliminate_timeをgvg_eliminate_timeに変更。 +・@コマンド@GM削除。 +・FD_SETSIZEかcygwinで64に設定されていたのせいで最大接続人数が56名を +越えるとマップ鯖が無限ループする問題修正。(ただテストができなかった物なので本当に大丈夫になったかどうかは不明です。あくまでも自分の予測にすぎない物ですが...) +・文字化けのせいでどこをどう修正したか覚えてないので修正したファイルだけ。 + (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 釈尊 + +・アルベルタのぬいぐるみイベントでうさぎのぬいぐるみをあげるとサーバーが落ちるバグ修正 + + (conf/npc/) + npc_event_doll.txt 修正。 + +-------------------- +//0803 by ぴざまん + + GvGでエンペリウム崩壊時gvg_eliminate_timeの値に関わらず即座に退去させられていたバグ修正 + GvGのセリフを一部修正 + inter鯖でcastle.txtがないと起こる色々なエラーを修正 + help.txtを修正(@gvgstart→@agitstart云々) + + (conf/) + gvg/TEST_prtg_cas01_AbraiJ.txt 修正。 + agit/ev_agit_prtgJ.txt 修正。 + help.txt 修正。 + (map/) + int_guild.c + inter_guild_init() 修正。 + +-------------------- +//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 +・アマツ修正 +  実装前のデータ、抜けてるデータなどを調査し修正 + 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 +・map_flag修正 + [GVGMAP]枝、テレポは常に使用不可 +・GVG関係 + 0800のコマンドに対応 + +-------------------- +//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 ぴざまん + +・GvG実装の為にinter-map間の通信仕様変更 +・0798のコンパイルエラー修正(byバグ報告スレ82氏) + (login/) + login.c + parse_login() 修正。 + (map/) + intif.c + packet_len_table[] 修正。 + intif_parse_GuildCastleInfo() 修正。 + intif_parse_GuildCastleChange()をintif_parse_GuildCastleChangeErr()に改名・修正。 + intif_parse() 修正。 + guild.c + guild_read_castledb() 修正。 + + (char/) + inter.c + inter_send_packet_length[] 修正。 + int_guild.c + inter_guildcastle_tostr() 修正。 + inter_guildcastle_fromstr() 修正。 + mapif_parse_GuildChangeCastle() 修正。 + mapif_parse_GuildCastleInfo() 修正。 + mapif_guild_castle_info() 修正。 + mapif_guild_change_castle()をmapif_guild_change_castle_err()に改名・修正。 + (common/) + mmo.h 修正。 + version.h 修正。 + +-------------------- +//0798 by 胡蝶蘭 + +・login-serverのログイン失敗パケットの長さがおかしかったのを修正 +・login-serverにアクセスコントロール機能追加 + ・login_athena.cnfにorder,allow,denyを記述することで、 + IP単位(前方一致)でアクセスを禁止する機能。 + ・指定方法は doc/conf_ref.txt を参照 + + (doc/) + conf_ref.txt + login_athena.cnfの部分修正 + (login/) + login.c + グローバル変数 access_* 追加 + parse_login()修正,check_ip()追加 + +・アカウント作成用CGIスクリプト追加 + ・自己責任&詳細な解説無し、質問されてもスルーする可能性有り + ・エディタで開いたら少し説明有り + ・CGI設置の基本さえわかれば問題ないはず + ・メッセージは英語、日本語両対応 + (Accept-Languageがjaなら日本語に変換します) + ・管理者パスワードなしで動くのでセキュリティには注意(.htaccessなど推奨) + + (tool/cgi/) + addaccount.cgi + アカウント作成用CGI。 + +・その他 + (tool/) + backup + castle.txtもバックアップするように + +-------------------- +//0797 by 死神 + +・少し修正。 +・battle_athena.confの項目変更。(lootitem_time 削除、item_first_get_time、 +item_second_get_time、item_third_get_time、mvp_item_first_get_time、 +mvp_item_second_get_time、mvp_item_third_get_time 追加。) +・アイテムルート権限を正しく実装。最初攻撃ではなく与えたダメージの +量によって収得権限を与えるように変更。(最初収得権限のみテスト) +パーティの場合パーティの設定に合わせる必要がありますがまだパケットが +不明な所がある為同じパーティなら収得できるようになっています。 +・ボウリングバッシュのバグ修正。(多分修正されたはず...) +・装備スクリプトbonusにbSplashRangeとbSplashAddRange追加。 +bSplashRangeとbSplashAddRangeは武器でダメージを与えた時のみ発動、通常の武器攻撃扱いなので避けられるが(Flee2による完全回避は不可能)クリは出ないようになっていて武器による状態異常は発生しません。本鯖仕様なんて知りません。 +・スキルの重ね置き処理を本鯖に合わせて修正。 +・mapflagのgvgはいつもなっているわけじゃないので削除。 +・その他細かい修正。 + athena-start 修正。 + (common/) + mmo.h 修正。 + (conf/) + mapflag.txt 修正。 + battle_athena.conf 修正。 + (db/) + const.txt 修正。 + item_db.txt 修正。 + (doc/) + conf_ref.txt 修正。 + item_bonus.txt 修正。 + (map/) + mob.c + mob_spawn()、mob_damage()、mob_class_change()、mob_warp() 修正。 + mob_delay_item_drop()、mob_delay_item_drop2() 修正。 + mobskill_castend_pos() 修正。 + pc.c + pc_takeitem()、pc_dropitem()、pc_equipitem() 修正。 + pc_calcstatus()、pc_bonus() 修正。 + skill.c + skill_attack()、skill_additional_effect()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_produce_mix() 修正。 + skill_arrow_create()、skill_unit_timer_sub()、skill_castend_pos() 修正。 + map.h 修正。 + map.c + map_addflooritem() 修正。 + script.c + buildin_getitem() 修正。 + pet.c + pet_return_egg()、pet_get_egg()、pet_unequipitem() 修正。 + battle.h 修正。 + battle.c + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack() 修正。 + battle_weapon_attack()、battle_config_read() 修正。 + +-------------------- +//0796 by huge + +・細かい修正 + (conf/npc/) + npc_event_valentine.txt 修正。 + + (map/) + pc.c + pc_takeitem() 修正。 + skill.c + skill_unit_timer_sub() 修正。 + +-------------------- +//0795 by Kalen + +・雑談341のnpc_warp_niflheim.txt追加 + conf/warp/npc_warp_niflheim.txt + +・mapflag.txt修正(GVGMAP設定) +  nosaveはしていません + +・map_athena.confの修正 +  umbala niflheim等の追加 +  コメントアウトしてあります。 + +・バレンタインスクリプト追加 + conf/npc/npc_event_valentine.txt +  チョコ達のDropは弄っていません。お好みでどうぞ +  尚、手作りチョコを食べたときのエフェクトは +  最新クライアントにすれば見えます。 + +・GVGScript追加 + conf/gvg/以下 +  Weiss時代に作成したものをAthena用にコンバート&台詞修正 +  prtg_cas01以外は旗のみです。 +  GVGDATAは鯖再起動で消滅します。 +  エラーが出るようならコメントアウトしてください。 +  MobData、執事Scriptもprtg_cas01のみです。(TestScript) +  あくまでテストスクリプトです。GVG実装の参考にどうぞ + +-------------------- +//0794 by DRG + +・skillusedで指定したIW,QMなどにのってる間MOBスキルを使用するように変更 +・アップスレ3の7のathena-startを一応含めときました + + athena-start + (map/) + skill.c + skill_unit_onplace() 修正。 + +-------------------- +//0793 by huge + +・サーバーsnapshot +・サーバーがクラッシュするバグを修正 +・発動せずに罠が消えたら、設置用トラップが返ってくるように修正。 +・ルート権限で、同じパーティーのキャラはすぐ拾えるように修正。 +・バグ報告スレ3 >>54 のバグ修正。 +・ログイン時にサーバー側にIDを表示するようにしました。 + (login/) + login.c + parse_login() 修正。 + (conf/npc/) + npc_event_doll.txt 修正。 + (map/) + skill.c + skill_unit_timer_sub() 修正。 + mob.c + mob_spawn_dataset() 修正。 + mob_damage() 修正。 + pc.c + pc_additem() 修正。 + +-------------------- +//0791 by 聖 + +・マップサーバがクラッシュするバグ修正。 +・イグ葉を使ってもジェムが必要になる問題を修正。 +・PvP強制送還実装。 +・PvPでリザレクションが出来なかった問題を修正。 +・その他細かな修正。 + (map/) + guild.c + mob.c + pc.c + skill.c + +-------------------- +//0790 by 死神 + +・バグ修正。 + (conf/) + battle_athena.conf 誤字修正。 + (doc/) + conf_ref.txt 誤字修正。 + (common/) + mmo.h 修正。 + (map/) + itemdb.h 修正。 + map.h 修正。 + skill.c + skill_check_condition()、skill_use_pos()、skill_unit_onplace() 修正。 + +-------------------- +//0789 by huge + +・ドロップアイテムにルート権限を実装。 +・最初に攻撃した人以外がドロップアイテムを拾えるまでの時間を設定できるように。 + (/conf) + battle_athena.conf 項目追加。 + + (/doc) + conf_doc.txt 説明追加。 + + (/map) + battle.h + Battle_Config{} 修正。 + battle.c + battle_config_read() 修正。 + itemdb.h + item_data {} 修正。 + map.h + flooritem_data {} 修正。 + mob_data {} 修正。 + map.c + map_addflooritem() 修正。 + mob.c + delay_item_drop{} 修正。 + mob_spawn() 修正。 + mob_damage() 修正。 + mob_delay_item_drop() 修正。 + mob_warp() 修正。 + pc.c + pc_takeitem() 修正。 + +-------------------- +//0788 by あゆみ + +・cardスキルの処理?を修正。 +・@allskillコマンドの再修正。 + + (map/) + pc.c + pc_skill() 修正。 + pc_allskillup() 修正。 + +-------------------- +//0787 by ぽぽぽ + +・ペットにもmob_avail.txtの設定を適用するようにした。 +・MOBスキルのskillusedでval1に0を入れるとあらゆるスキルに対して発動するようにした。 +・skillusedで発動したスキルの対象を、発動させたPCにするかどうか設定できるようにした(対IWハメなど?)。 + (/map) + clif.c + clif_pet0078()、clif_pet007b()修正。 + mob.c + mobskill_use()修正。 + skill.c + skill_attack() 、skill_castend_damage_id()修正。 + battle.h + battle.c + battle_config_read()修正。 + +-------------------- +//0786 by huge + +・BDS修正 + 前から吹き飛ばして行くと良くないかもしれないので、後ろから処理 + 有効範囲の修正 + + (/map) + + skill.h + skill.c + skill_castend_damage_id() 修正。 + skill_castend_nodamage_id() 修正。 + skill_brandishspear_first() 修正。 + skill_brandishspear_dir() 修正。 + +-------------------- +//0785 by 死神 + +・本鯖に合わせて修正。(韓国鞍のパッチnoticeを参考して修正しました。) +・BBとBSのキャスティング時間を0.7秒にしてディレイは0に変更。 +・ghostの変わりにマップ移動後の無敵時間を設定。この時間の間はどんな攻撃も受けないが移動や攻撃、スキル使用、アイテム使用でこの時間はなくなります。シーズモードではこの無敵時間を2倍として適用。 +・シーズモードで死んでも経験が減らないように修正。(mapflagのnopenaltyを設定する必要はありません。) +・スキッドで滑べる距離増加。 +・既に沈黙にかかってる対象にレックスディビーナを使うと沈黙が解除されるように変更。 +・呪いにかかると移動速度も減るように修正。 +・battle_athena.confに項目変更。 +・スキルの重ね置きを判断処理を少し変更。 +・HPの自然回復時間が4秒ではなく6秒だとわかったのでデフォルト修正とbattle_athena.conf修正。 +・その他細かい修正やバグ修正。 +・殆どテストしてません。 + (conf/) + atcommand_athena.conf 修正。 + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (db/) + cast_db.txt 修正。 + (map/) + atcommand.c 修正。 + clif.c + clif_mob0078()、clif_mob007b()、clif_skill_estimation() 修正。 + clif_mob_class_change()、clif_parse_WalkToXY() 修正。 + clif_parse_ActionRequest()、clif_parse_LoadEndAck() 修正。 + clif_parse_UseItem()、clif_parse_UseSkillToId() 修正。 + clif_parse_UseSkillToPos()、clif_parse_UseSkillMap() 修正。 + mob.h 修正。 + mob.c + mob_get_viewclass()、mob_attack()、mob_target() 修正。 + mob_ai_sub_hard_activesearch()、mob_ai_sub_hard() 修正。 + mobskill_castend_id()、mobskill_castend_pos() 修正。 + skill.h 修正。 + skill.c + skill_can_produce_mix()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_castend_id() 修正。 + skill_castend_pos()、skill_use_id()、skill_readdb() 修正。 + skill_check_condition()、skill_unit_onplace()、skill_unitsetting() 修正。 + skill_additional_effect()、skill_check_unit_range() 修正。 + skill_check_unit_range_sub()、skill_status_change_end() 修正。 + skill_status_change_start() 修正。 + pc.h + pc.c + pc_ghost_timer()、pc_setghosttimer()、pc_delghosttimer() 削除。 + pc_gvg_invincible_timer() -> pc_invincible_timer()に変更。 + pc_setgvginvincibletimer() -> pc_setinvincibletimer()に変更。 + pc_delgvginvincibletimer() -> pc_delinvincibletimer()に変更。 + pc_authok()、pc_attack_timer()、pc_calcstatus() 修正。 + pc_setrestartvalue()、pc_damage()、pc_allskillup() 修正。 + do_init_pc() 修正。 + battle.h 修正。 + battle.c + battle_config_read()、battle_weapon_attack()、battle_check_target() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_get_speed() 修正。 + map.h 修正。 + map.c + map_quit() 修正。 + +-------------------- +//0784 by あゆみ + +・カードスキルを覚えている状態で@allskillコマンドを使用するとmap-serverが暴走する問題を修正。 + + (map/) + pc.c + pc_allskillup() 修正。 + +-------------------- +//0783 by huge + +・ブランディッシュスピアの修正 + 範囲指定、斜めの際の格子範囲、攻撃力計算 + 多分合ってると思うんですけど、イマイチ自信が持てない・・・ + (参考)みすとれ巣 -スキル関連豆情報 +・スペルブレイカーをちょっと修正 +・プロボックをMVPmobに効かないよう修正 +・バグ報告スレ3 >>8 で報告されたものの取り込み + + (/db) + create_arrow.txt 修正。 + skill_db.txt 修正。 + + (/map) + battle.c + battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack() 修正。 + + skill.h + skill.c + skill_brandishspear_first() 追加。 + skill_brandishspear_dir() 追加。 + skill_castend_nodamage_id() 修正。 + skill_castend_damage_id() 修正。 + skill_unit_group() 修正。 + +-------------------- +//0782 by ぴざまん +・@allskillコマンドの使用条件が参照されていなかったバグ修正 + (/map) + atcommand.c + atcommand() 修正。 + +-------------------- +//0781 by Chunglyeng +・バド, ダンサー音楽具現 + (/map) + skill.c 修正。 + +-------------------- +//0780 by reia +・ペコペコの卵などが孵化するとノビになってしまう問題修正。 +・GMコマンド「@kickall」が何時の間にか無効になっていたので修正。 + + (/conf) + atcommand_athena.conf 修正。 + (db/) + mob_skill_db.txt 修正。 + (map/) + atcommand.c + atcommand_config_read() 修正。 + +-------------------- +//0779 by あゆみ + +・全スキル取得コマンドの追加。 + ・GMで全スキルを覚えられるようにしている場合や、スキルの数が多い職業は一部のスキル表示がおかしくなります。その場合はリログして下さい。 + @allskill : 現在の職業で取得可能な全スキルを取得する。(クエストスキル含む) + + (conf/) + battle_athena.conf 修正。 + help.txt 修正。 + (map/) + atcommand.h 修正。 + atcommand.c + atcommand() 修正。 + pc.h 修正。 + pc.c + pc_allskillup() 追加。 + (doc/) + conf_ref.txt 修正。 + help.txt 修正。 + +-------------------- +//0778 by huge + +・スペルブレイカーの修正 + ・キャスティングタイムの無いスキルには効かないように修正。 + ・使用された相手の消費SPの修正。 + + (map/) + skill.c + skill_castend_nodamage_id() 修正。 + +-------------------- +//0777 by ぴざまん + +・ギルド攻城戦仮実装 + ・基本的な部分だけしか実装してない上、いくつかの点で本鯖と相違があります。 + ・攻城戦開始と終了は@コマンドで行います + @gvgstart : 攻城戦開始 + @gvgend : 攻城戦終了 + ・battle_athena.confに項目追加。 + (char/) + int_guild.c + inter_guild_init()、inter_guild_readdb()、inter_guild_save() 修正。 + inter_castle_save_sub()、mapif_guild_castle_info() 追加。 + mapif_guild_change_castle()、mapif_parse_GuildCastleInfo() 追加。 + mapif_parse_GuildChangeCastle() 追加。 + inter.c + inter_config_read() 修正。 + inter_send_packet_length[]、inter_recv_packet_length[] 修正。 + int_guild.h 修正。 + (map/) + atcommand.c + atcommand()、atcommand_config_read() 修正。 + battle.c + battle_config_read() 修正。 + guild.c + guild_castle_search()、guild_read_castledb()追加。 + do_init_guild() 修正。 + guild_gvg_init()、guild_gvg_final()、guild_gvg_final_sub() 追加。 + guild_gvg_eliminate()、guild_gvg_eliminate_sub() 追加。 + guild_gvg_eliminate_timer()、guild_gvg_empelium_pos() 追加。 + guild_gvg_break_empelium() 追加。 + intif.c + intif_parse()、packet_len_table[] 修正。 + intif_parse_GuildCastleInfo()、intif_parse_GuildCastleChange() 追加。 + intif_guild_castle_info()、intif_guild_castle_change() 追加。 + mob.c + mob_damage() 修正。 + atcommand.h 修正。 + battle.h 修正。 + guild.h 修正。 + intif.h 修正。 + mob.h 修正。 + (common/) + mmo.h 修正。 + (conf/) + battle_athena.conf 修正。 + inter_athena.conf 修正。 + msg_athena.conf 修正。 + atcommand_athena.conf 修正。 + (db/) + castle_db.txt 追加。 +-------------------- +//0776 by 死神 + +・NPCスキル孵化実装。(mob_skill_db.txtのval1を使います。) +・mob_skill_db.txtの確率を千分率から万分率に変更。(ただmob_skill_db.txtの修正はしてません。) +・モンスターがダブルアタックする問題修正。(修正されたかどうかの自信はありませんが...) +・その他細かい修正。 + (db/) + mob_skill_db.txt 修正。 + skill_db.txt 修正。 + (map/) + map.h 修正。 + mob.h 修正。 + mob.c + mob_spawn_dataset()、mob_spawn() 修正。 + mob_changestate()、mobskill_use() 修正。 + mob_class_change() 追加。 + npc.c + npc_parse_mob() 修正。 + battle.c + battle_check_target() 修正。 + clif.h 修正。 + clif.c + clif_mob_class_change() 追加。 + skill.c + skill_castend_nodamage_id() 修正。 + +-------------------- +//0775 by 死神 + +・シーズモードの処理修正。 +・シーズモードの無敵時間の間はどんな攻撃も受けないように修正。 +・シーズモードの無敵時間が時間切れになる前には解除されないように修正。 +・battle_athena.confに項目追加。 +・@hideや/hideによるGMハイディング中は自分に自動使用されるスキル以外のスキル使用や攻撃を受けないように修正。 +・ハイディング中地属性スキル以外の攻撃を受けないように修正。(トラップやクァグマイア等のスキルは影響を受けるかどうか不明なので今までと同じように影響を受けるように処理。) +・トンネルドライブの移動速度を本鯖に合わせました。 +・その他バグ修正や細かい修正。(殆ど未テスト) + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_check_target()、battle_calc_damage() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_calc_misc_attack() 修正。 + battle_config_read()、battle_weapon_attack() 修正。 + pc.h 修正。 + pc.c + do_init_pc()、pc_authok() 修正。 + pc_attack()、pc_attack_timer() 修正。 + pc_setgvg_ghosttimer()、pc_delgvg_ghosttimer()を + pc_setgvginvincibletimer()、pc_delgvginvincibletimer()に修正。 + pc_gvg_invincible_timer() 追加。 + pc_attack_timer()、pc_steal_item()、pc_calcstatus() 修正。 + clif.c + clif_parse_ActionRequest()、clif_parse_UseItem() 修正。 + clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 + clif_parse_UseSkillMap()、clif_parse_WalkToXY() 修正。 + map.h 修正。 + map.c + map_quit() 修正。 + mob.c + mob_attack()、mob_target()、mob_ai_sub_hard_activesearch() 修正。 + mob_ai_sub_hard_mastersearch()、mob_ai_sub_hard() 修正。 + mob_damage()、mobskill_castend_id()、mobskill_castend_pos() 修正。 + skill.c + skill_castend_damage_id()、skill_attack() 修正。 + skill_castend_id()、skill_castend_pos()、skill_castend_map() 修正。 + +-------------------- +//0774 by 獅子o^.^o +・Monk job bouns 修正 +・ドケビ 修正 +(db/) + job_db2.txt 修正 + pet_db.txt 修正 + +-------------------- +//0773 by 聖 + +・細かいバグ修正 + (map/) + skill.c 修正。 + battle.c 修正。 + +-------------------- +//0772 by ぴざまん + +・シーズモード下で以下の点を修正 + ・連続して攻撃できなくなっていたバグ修正 + ・ダメージ軽減率が正しく設定できなかったバグ修正 + ・無敵時間実装。battle_athena.confのgvg_ghost_timeで設定できます + +・ハイディングで魔法攻撃等を回避できなかったバグ修正 + + (map/) + skill.c + skill_attack()、skill_unit_onplace()、skill_check_condition() 修正。 + clif.c + clif_parse_ActionRequest()、clif_parse_UseItem() 修正。 + clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 + clif_parse_UseSkillMap()、clif_parse_WalkToXY() 修正。 + pc.c + do_init_pc()、pc_authok() 修正。 + pc_attack()、pc_attack_timer() 修正。 + pc_setgvg_ghosttimer()、pc_delgvg_ghosttimer() 追加。 + pc_gvg_ghost_timer() 追加。 + map.c + map_quit() 修正 + battle.c + battle_config_read()、battle_weapon_attack() 修正。 + battle.h 修正。 + pc.h 修正。 + +-------------------- +//0771 by huge + +・スペルブレイカー実装 + (map/) + skill.c + skill_castend_nodamage_id() 修正。 + (db/) + skill_db.txt 修正。 + +-------------------- +//0770 by 聖 + +・青箱系の処理変更 +・その他バグ修正 + (map/) + battle.c 修正。 + itemdb.c 修正。 + mob.c 修正。 + script.c 修正。 + +-------------------- +//0769 by 死神 + +・シーズモード修正。 +・無敵時間の方はghost_timer以外の方法で実装するつもりなので今は削除しています。 +・スクリプトviewpointが正しく動作しない問題修正。 +・produce_db.txtを修正。(乳鉢はskill_require_db.txtで処理しています。そしてアイテムの数を0にすれば消耗はされないけど作る時必要なアイテムになります。) +・その他細かい修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (db/) + produce_db.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_calc_damage()、battle_calc_weapon_attack() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_calc_misc_attack()、battle_check_target()、battle_config_read() 修正。 + skill.c + skill_unit_onplace()、skill_castend_damage_id()、skill_castend_id() 修正。 + skill_use_id()、skill_use_pos()、skill_check_condition() 修正。 + skill_can_produce_mix() 修正。 + pc.c + pc_attack_timer()、pc_attack()、pc_isUseitem()、pc_delitem() 修正。 + pc_damage() 修正。 + mob.c + mob_damage()、mobskill_use_id()、mobskill_use_pos() 修正。 + script.c + buildin_viewpoint()、buildin_emotion() 修正。 + makefile 修正。 + +-------------------- +//0768 by ぴざまん + +・シーズモード下で、以下の点を修正 + ・死亡したらセーブポイントに強制送還するように修正 + ・特定のアイテムが使用できないように修正(アンティペインメント・ハエの羽) + ・特定のスキルが使用できないように修正(ワープポータル・バックステップ・インティミデイト・テレポート・インデュア) + ・同盟ギルドには無条件で攻撃できないように修正 + ・敵対ギルドには無条件で攻撃できるように修正 + ・無敵時間中は両者とも攻撃できないように修正 + +ソースレベルでテレポ、ハエの使用を禁じているため攻城戦MAPのmapflagにnoteleportは必要ありません +また、無敵時間はghost_timer依存です。つまりbattle_athena.conf内のghost_timeが無敵時間になります + + (map/) + skill.c + skill_castend_damage_id()、skill_castend_id() 修正 + skill_check_condition() 修正 + pc.c + pc_damage() 修正 + battle.c + battle_weapon_attack() 修正 + +-------------------- +//0767 by huge + +・ファーマシーで、製造の書が減る問題を修正 +・武器製造DBで、いくつか抜けていたのを修正 + + (map/) + skill.c 修正。 + (db/) + produce_db.txt 修正。 + +-------------------- +//0766 by ぴざまん + +・シーズモード下で、以下の点を修正 + ・正規ギルド承認がないとエンペリウムに攻撃が効かないように修正 + ・エンペリウムに対するスキル攻撃が効かないように修正 + ・魔法攻撃、遠距離攻撃、罠のダメージ補正を実装 +  魔法攻撃:50% 遠距離攻撃:75% 罠:60% +  これは人にもエンペリウムにも適用されます + (map/) + battle.c + #include "guild.h" 追加 + battle_calc_damage()、battle_calc_weapon_attack() 修正 + +-------------------- +//0765 by ぴざまん + +・装備制限実装 +・装備制限がかかった装備品は該当マップに移動した際に自動的に装備が外れ、 + 再装備もできなくなります +・制限できるのは装備品のみです。カード類は制限できません + (db/) + item_noequip.txt 追加 + (map/) + itemdb.h 修正 + itemdb.c + do_init_itemdb()、itemdb_search() 修正 + itemdb_read_noequip 追加 + pc.c + pc_checkitem()、pc_isequip() 修正 + +-------------------- +//0764 by 死神 + +・全てのダメージが1になる防御を10000から1000000に変更。 +・battle_athena.confに項目追加。 +・モンスターから経験値を貰う処理を本鯖のように修正。 +・スキルスローポイズン実装。 +・交換バグ修正。 +・その他細かい修正。 +・テストは殆どしてません。 + (db/) + mob_db.txt 修正。 + skill_db.txt 修正。 + (doc/) + conf_ref.txt 修正。 + db_ref.txt 修正。 + (conf/) + battle_athena.conf 修正。 + (map/) + makefile 修正。 + battle.h 修正。 + battle.c + battle_get_def()、battle_get_mdef() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_calc_misc_attack()、battle_config_read() 修正。 + skill.h 修正。 + skill.c + skill_castend_nodamage_id()、skill_castend_damage_id() 修正。 + skill_check_condition()、skill_status_change_timer() 修正。 + skill_status_change_end()、skill_status_change_start() 修正。 + skill_additional_effect()、skill_produce_mix()、skill_unit_timer_sub() 修正。 + skill_check_unit_sub()を skill_check_unit_range_sub()に変更。 + skill_check_unit_range() 追加。 + skill_castend_pos()、skill_area_sub_count() 修正。 + mob.c + mobskill_castend_pos()、mob_damage() 修正。 + clif.c + clif_parse_TradeRequest()、clif_parse_TradeAck() 修正。 + clif_parse_TradeAddItem()、clif_parse_TradeOk() 修正。 + clif_parse_TradeCansel()、clif_parse_TradeCommit() 修正。 + map.h 修正。 + map.c + do_init() 修正。 + pc.c + pc_calc_skilltree()、pc_calcstatus() 修正。 + tarde.c + trade_tradeack() 修正。 + +-------------------- +//0763 by 胡蝶蘭 + +・サーバーsnapshot + フォルダを整理したので注意してください。 + 以前のセーブデータ(account.txtなど)はsaveフォルダに置いてください + cnfファイルは各種ファイルのパスが変わってるので、 + この古いものをコピーではなく、新しく書き換えなおしてください。 + +・フォルダ整理 + confフォルダ + NPC関連をconf/npc/、MOB配置関連をconf/mob/、WARP関連をconf/warp/ + テストやサンプルをconf/sample/に移動しました。 + dbフォルダ + sampleフォルダのうちdb関係を db/sampleに移動しました。 + help.txt/motd.txt + confフォルダに移動しました + account.txt/athena.txt/guild.txt/party.txt/pet.txt/storage.txt + saveフォルダに移動しました + tool/backup + パス修正 + +・motd.txt/help.txtのパスをmap_athena.cnfで指定できるように + map.h/map.c/atcommand.c/atcommand.h修正 + +・athena-startにrestartオプション追加 + ./athena-start restartでAthenaを再起動します + +-------------- +//0761 by ぽぽぽ + +・MOBのMDEFに10000以上指定してもファイアピラーで普通にダメージを与えてしまうのを修正。 + (map/) + battle.c + +-------------- +//0760 by ll3y + +・文字化け修正 + (map/) + script.c + +-------------- +//0759 by 獅子o^.^o +・スピアクイッケン 修正 +・Dancer skill tree 修正 +(db/) + cast_db.txt 修正 + skill_tree.txt 修正 + +-------------- +//0758 by hack +・Put 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 + +・Interix(Windows Services for Unix 3.5)でコンパイルが通るように修正 + Interop Systems(http://www.interopsystems.com/)よりgmakeとzlibを取ってくるか、 + 自前でInterix用を用意する必要があります。 + (common/) + socket.h 修正。 + +-------------- +//0755 by 死神 + +・バグ修正と説明追加。(報告されたのは多分全て修正されたのかと...) +・0751でスキルの最大レベルを100まで設定できるようにしました。 +・cast_db.txtに入っている状態異常の維持時間は自分が適度に入れた物です。本鯖の仕様なんて知りませんので。 + (doc/) + db_ref.txt 修正。 + (db/) + cast_db.txt 修正。 + skill_db.txt 修正。 + (map/) + skill.h 修正。 + skill.c + skill_check_unit_sub()、skill_castend_id()、skill_use_id() 修正。 + skill_status_change_end()、skill_status_change_start() 修正。 + skill_castend_map() 修正。 + mob.c + mobskill_castend_id()、mobskill_castend_pos() 修正。 + pc.c + pc_calcstatus() 修正。 + battle.c + battle_calc_pc_weapon_attack() + battle_calc_mob_weapon_attack() + battle_calc_magic_attack() + +-------------- +//0754 by 獅子o^.^o +(db/) + cast_db.txt 修正 + +-------------- +//0753 by 聖 + +・IWの発生ポイントを指定するとメテオのエフェクトが一切出なくなる + 問題が復活していたので修正。 +・warningを出ないようにコード修正。 + (map/) + skill.c + skill_castend_pos2() 修正。 + chrif.h + +-------------- +//0752 by ぴざまん + +・changesexスクリプト実装。性別を反転させることができます + 性別反転成功後は、そのプレイヤーは強制的に接続を切断されます + また、ダンサー・バードの互換性はかなり怪しいです + ダンサー・バードがスロット内どこかに居るアカウントでの反転は、以下の点に注意して下さい + ・必ず反転させる前にそのキャラクターをスキルリセットしてください +  そのまま反転させると、共通するスキル(楽器の練習等)しか残らなくなってしまいます + ・ダンサー・バード専用武器を装備している場合は、外してから反転させてください +  そのまま反転させると、そのキャラクターの開始時に +  クライアントエラーが出ます(出るだけで、落ちることはないのですが…) +・データベース修正 by 獅子o^.^o + (map/) + chrif.c + packet_len_table[]、chrif_parse()修正 + chrif_changesex()、chrif_changedsex()追加 + chrif.h 修正 + (char/) + char.c + parse_frommap()、parse_tologin()修正 + (login/) + login.c + parse_fromchar()修正 + (db/) + cast_db.txt 修正 + skill_require_db.txt 修正 + +-------------- +//0751 by 死神 + +・skill_db.txtとcast_db.txtの変更とskill_require_db.txtの追加。 +・毒にかかるとHPが減るように変更。HPは1秒に最大HPの1%減ります。(未テスト) +・石化を進行中の物と完全な物に分けてHPが減るように変更。(1秒に最大HPの1%)ブレッシングで完全石化だけ治せるように修正。(未テスト) +・ハンターのトラップにエフェクト実装。ただランドマインとショックウェーブは爆発エフェクトが出ないようです。ランドマインはファイアピラーの爆発エフェクトが出るように変えています。 +・オートカウンターの方向チェックをするように変更と本鯖仕様に合わせました。 +・バックスタブも方向チェックをするように変更。 +・インティミデイトの処理変更。 +・ディフェンダーの移動速度減少を本鯖に合わせました。ASPDは勝手ながら +(30 - (skilllv*5))%が減るようにしましたが本鯖でいくら程減るのかの情報をお願いします。 +・トンネルドライブLV1で移動速度が150から312になるのが確認されて計算を変更しましたがレベルによってどれぐらい増加するかは不明です。情報を求めます。(今の計算式は適度に作った物です。) +・ポーション製造の計算式変更とちょっと修正。 +・一部地面スキルの重ね置きを禁止。 +・bNoMagicDamageで魔法による異常やステータスアップ効果が出ないように修正。(リザレクション以外の魔法は無効になります。) +・battle_athena.confに項目追加。 +・その他色々と修正。 +・変更されたskill_db.txt、castdb.txtと追加されたskill_require_db.txtの構造は今の所自分しか知らないのでdb_ref.txtに説明を追加する予定なのでそれまではこれらの変更は控えてください。 + (char/) + int_guild.c 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (db/) + skill_db.txt 修正。 + skill_require_db.txt 修正。 + cast_db.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_counttargeted()、battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_weapon_attack()、battle_config_read() 修正。 + skill.h 修正。 + skill.c + skill_attack()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_status_change_start() 修正。 + skill_check_condition()、skill_castend_pos() 修正。 + skill_use_id()、skill_use_pos() 修正。 + skill_status_change_timer()、skill_status_change_start() 修正。 + skill_check_unit_sub() 追加。 + pc.h 修正。 + pc.c + pc_damage()、pc_counttargeted()、pc_counttargeted_sub() 修正。 + mob.h 修正。 + mob.c + mob_countslave()、mob_counttargeted()、mob_counttargeted_sub() 修正。 + mobskill_use()、mob_can_move()、mob_damage() 修正。 + mobskill_use_id()、mobskill_use_pos()、mobskill_castend_id() 修正。 + mobskill_castend_pos() 修正。 + map.c + map_quit() 修正。 + +-------------- +//0750 by CHRIS + +・スキル関係のDBを調整 + (db/) + skill_db.txt + cast_db.txt + skill_require_db.txt + +-------------- +//0749 by 死神 + +・色々と変更と修正。 +・スキルの仕様変更や実装、状態異常の仕様変更や実装。 +・スキルの使用条件をdbに設定できるように変更。 +・skill_db.txtとcast_db.txtの仕様変更。 +・マップ鯖の無限ループ可能性がある部分を修正。(あくまでも可能性が +あっただけの物です。無限ループの原因とは断言できません。) +・トラップの発動実装。(ただ実際に動作はまだ修正していません。 +見た目が変わっただけです。) +・battle_athena.confに項目追加を削除。 +・0748の修正削除と文字化け修正。 +・skill_db.txt、cast_db.txt、skill_require_db.txtの方がまだ完成されていないので +かなりの量のスキルが正しく動作しません。(db_ref.txtに設定方法を入れないと + けないのですが時間がなかったので...) そして修正はしましたがテストは +殆んどしてませんので注意してください。 + (char/) + char.c 修正。 + int_party.h 修正。 + int_party.c 修正。 + int_guild.h 修正。 + int_guild.c 修正。 + int_pet.h 修正。 + int_pet.c 修正。 + int_storage.h 修正。 + int_storage.c 修正。 + charの方は大した修正はしてません。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (db/) + skill_db.txt 修正。 + cast_db.txt 修正。 + skill_require_db.txt 追加。 + produce_db.txt 修正。 + (map/) + map.h 修正。 + map.c + map_check_dir() 追加。 + map_readmap()、map_addblock()、map_delblock() 修正。 + map_foreachinarea()、map_foreachinmovearea() 修正。 + map_addflooritem() 修正。 + pc.h 修正。 + pc.c + pc_spiritball_timer()、pc_addspiritball()、pc_delspiritball() 修正。 + pc_steal_item()、pc_steal_coin()、pc_calcstatus() 修正。 + pc_checkallowskill()、pc_jobchange()、pc_checkweighticon() 修正。 + pc_damage()、pc_equipitem()、pc_walk()、pc_stop_walking() 修正。 + pc_authok()、pc_counttargeted()、pc_counttargeted_sub() 修正。 + pc_damage()、pc_setpos() 修正。 + skill.h 修正。 + skill.c + skill_get_range()、skill_get_sp()、skill_get_num() 修正。 + skill_get_cast()、skill_get_delay() 修正。 + skill_get_hp()、skill_get_zeny()、skill_get_time() 追加。 + skill_get_time2()、skill_get_weapontype() 追加。 + skill_get_unit_id()、skill_blown()、skill_additional_effect() 修正。 + skill_attack()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id()、skill_castend_id() 修正。 + skill_castend_pos()、skill_unit_onplace() 修正。 + skill_unit_timer_sub_onplace()、skill_unitsetting() 修正。 + skill_use_id()、skill_use_pos()、skill_check_condition() 修正。 + skill_status_change_end()、skill_status_change_timer() 修正。 + skill_status_change_start()、skill_can_produce_mix() 修正。 + skill_produce_mix()、skill_gangsterparadise() 修正。 + skill_gangster_out()、skill_gangster_in() 修正。 + skill_gangster_count() 追加。 + skill_readdb() 修正。 + battle.h 修正。 + battle.c + distance()、battle_counttargeted()、battle_get_range() 追加。 + battle_get_dir() 追加。 + battle_get_maxhp()、battle_get_str()、battle_get_agi() 修正。 + battle_get_vit()、battle_get_dex()、battle_get_int() 修正。 + battle_get_luk()、battle_get_flee()、battle_get_hit() 修正。 + battle_get_flee2()、battle_get_critical()、battle_get_baseatk() 修正。 + battle_get_atk()、battle_get_atk2()、battle_get_def() 修正。 + battle_get_def2()、battle_get_mdef()、battle_get_speed() 修正。 + battle_get_adelay()、battle_get_amotion()、battle_get_party_id() 修正。 + battle_get_guild_id()、battle_get_size() 修正。 + battle_check_undead() 追加。 + battle_check_target()、battle_addmastery() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_weapon_attack() 修正。 + clif.h 修正。 + clif.c + clif_skillinfo()、clif_skillinfoblock()、clif_skillup() 修正。 + clif_item_skill()、clif_changeoption()、clif_parse_LoadEndAck() 修正。 + clif_01ac() 追加。 + clif_parse_WalkToXY()、clif_parse_ActionRequest() 修正。 + clif_parse_TakeItem()、clif_parse_DropItem() 修正。 + mob.h 修正。 + mob.c + mobskill_castend_id()、mobskill_castend_pos() 修正。 + mobskill_use_id()、mobskill_use_pos()、mob_heal() 修正。 + mob_spawn()、mob_damage()、mob_walk() 修正。 + mob_stop_walking()、mob_warp()、mob_counttargeted() 修正。 + mob_counttargeted_sub()、mob_countslave() 修正。 + mob_attack()、mob_target()、mob_ai_sub_hard_activesearch() 修正。 + mob_ai_sub_hard_mastersearch()、mob_ai_sub_hard() 修正。 + script.c + buildin_sc_start() 修正。 + path.c + can_move() 修正。 + pet.c + pet_data_init()、pet_stop_walking() 修正。 + npc.c + npc_parse_warp()、npc_parse_shop()、npc_parse_script() 修正。 + +-------------- +//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 聖 +・ペットがエモを出すとmap-serverが落ちることがあった問題を修正。 + (map/) + clif_parse_SendEmotion() 修正。 + +-------------- +//0746 by Michael + (map/) + script.c + Add Script command - checkoption(type); + Attach a npc_testchkoption.txt npc script! + +-------------- +//0745 by ぴざまん +・ギャングスターパラダイス実装 +・PvPエリアのmapflagを修正(同士討ちが無くなったかと思います) +・シーズモードでノックバックがあったバグを修正 +・インティミの遅延時間を少し調整 + (map/) + skill.c + skill_attack()、skill_additional_effect()修正 + skill_gangsterparadise()、skill_gangster_in()、skill_gangster_out()追加 + clif.c + clif_parse_ActionRequest()修正 + mob.c + mob_target()、mob_attack()修正 + mob_ai_sub_hard()、mob_ai_sub_hard_mastersearch()修正 + mob_ai_sub_hard_activesearch()修正 + map.h 修正 + skill.h 修正 + (conf/) + npc_pvp.txt 修正 + +-------------- +//0744 by 聖 + +・アイスウォール、メテオストームのコンボでメテオストームのエフェクトが表示されなくなる問題を修正。 +・HP吸収スキルのエフェクト修正。 +・battle_athena.confに項目追加。 +・パケ周りの細かい修正。 + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + (map/) + battle.c + battle.h + clif.c + pc.c + pet.c + skill.c + +-------------- +//0743 by J + +・取り巻き召喚などを本鯖に似せる為の修正。 + あと本鯖相違スレにあったゴスリンの取り巻きを修正。 + デリーターの空と地のスキルが逆になっていたのを修正。 + (db/) + mob_skill_db.txt 修正 + +-------------- +//0742 by ぴざまん + +・インティミデイトを実装 + 攻撃とワープの分別がうまくいかなかったので + SC_INTIMIDATEを使って遅延処理をしました +・skill_dbの誤字等を修正 + (map/) + skill.c + skill_additional_effect()、skill_castend_map()修正 + skill_castend_nodamage_id()、修正 + skill_status_change_start()、skill_status_change_end()修正 + map.h 修正 + skill.h 修正 + (db/) + skill_db.txt 修正 + +-------------------- +//0741 by whitedog + +snapshot + +-------------- +//0740 by ぽぽぽ +・PCがMOBにタゲられたとき3匹目から防御と回避が減るようにした。 + 1匹につき回避は10%、防御は5%減ります。 + (map/) + pc.h + pc.c + pc_counttargeted()、pc_counttargeted_sub()追加 + battle.c + battle_get_flee()、battle_get_def()、battle_get_def2()修正。 + +-------------- +//0739 by 聖 +・ファイアーウォール等の設置系スキルが正しく表示されない問題を修正。 +・マリンスフィアが自爆するとサンダーストーム等のダメージが表示されなくなる問題を修正。 +・HP吸収系スキルで敵が回復してるエフェクトが出るよう修正。 + (map/) + skill.c + skill_castend_damage_id() 修正。 + battle.c + battle_calc_misc_attack() 修正。 + clif.c + clif_getareachar_skillunit() 修正。 + clif_skill_setunit() 修正。 + +-------------- +//0738 by ぴざまん +・ストームガストを完全に本鯖仕様に修正(3回で絶対凍結&凍結状態の敵はSGをくらわない) +・サフラギウムが自分にかけられるバグ修正 + (map/) + skill.c + skill_additional_effect()、skill_attack()修正 + skill_castend_nodamage_id()修正 + map.h 修正 + +-------------- +//0737 by ぽぽぽ +・アンクルが歩いている敵に効かない&複数の敵に効くのを修正。 + (map/) + skill.c + skill_unit_onplace()、skill_unit_onout()修正 + mob.c + mob_stop_walking()修正 + +-------------- +//0736 by ぴざまん +・状態異常耐性が効果時間にも及ぶ様に修正。発動率と同率で効果時間が割り引かれます +・ストーンカースの効果時間を永久からマジスレテンプレ準拠に +・攻撃を受けた時にペットの支援攻撃を受けられないよう修正(コメントアウトしただけ) + これはVIT型にペットを付けて放置するだけで自動でレベル上げができるのを + 防ぐための暫定的な処置です + (map/) + skill.c + skill_castend_nodamage_id()、skill_addisional_effect()修正 + skill_status_change_start()修正 + pc.c + pc_damage() 修正 + +-------------- +//0735 by ぽぽぽ + +・敵を倒してレベルが上がったときPT公平範囲のチェックをするようにした。 +・オートカウンター仮実装。 + 向きや射程チェックはしていません。またタイミングがおかしいかもしれません。 + MOBスキルとして使うときはターゲットをselfにしてください。 + (conf/) + battle_athena.conf項目追加 + (doc/) + conf_ref修正 + (map/) + battle.h + battle.c + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() + battle_config_read()修正 + pc.c + pc_checkbaselevelup()、pc_attack_timer()修正 + skill.c + skill_castend_nodamage_id()、skill_status_change_start()修正 + clif.c + clif_parse_WalkToXY()修正 + mob.c + mob_attack()修正 + +-------------- +//0734 by 死神 + +・player_skillup_limitの処理修正と細かい修正。 +・player_skillup_limitがyesの場合skill_tree.txtで設定されてるその下位職業の +スキルツリーを使いますのでその職業では無くなるはずのスキルが出ることが +ありますがこれは仕様でありバグではありません。バグ報告されても無視します。 + (doc/) + conf_ref.txt 修正。 + (char/) + char.c + mmo_char_sync_timer()、do_init() 修正。 + inter.c + inter_init() 修正。 + inter_save_timer() 削除。 + (map/) + pc.c + pc_calc_skilltree() 修正。 + pc_resetskill() 修正。 + +-------------- +//0733 by 死神 + +・バグ修正と細かい修正。 +・死んだ後にすぐにセーブポイントに戻らずにしばらく放置してると、 +放置してる時間によって経験値が減少するバグ修正。(未テスト) +・mob_availe.txtで設定したモンスターにモンスター情報を使うち鞍落ちする問題修正。 +・battle_athena.confに項目追加。 +・その他細かい修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + clif.c + clif_skill_estimation()、clif_parse_Restart() 修正。 + pc.c + pc_setrestartvalue()、pc_makesavestatus() 修正。 + pc_read_gm_account()、pc_calc_skilltree() 修正。 + pc_calc_skillpoint() 追加。 + map.c + map_quit() 修正。 + mob.c + mob_damage() 修正。 + skill.c + skill_unit_timer_sub()、skill_unit_timer() 修正。 + battle.h 修正。 + battle.c + battle_config_read() 修正。 + +-------------- +//0732 by Kalen + +・npc_town_kafra.txtの全面見直し + カプラ利用券の廃止 + 倉庫利用料を本鯖(jRO)と同一価格に調整 + カート使用料を本鯖(jRO)と同一価格に調整 + ポイント参照変更 + ジュノーのセーブポイント修正 + アマツのセーブポイント修正 + +-------------- +//0731 by ぽぽぽ + +・服の色を保存するかbattle_athena.confで選択できるように。 + 弊害があるので保存しないようにと書いてあったのでデフォルトでは保存しません。 +・スクリプト追加 + strcharinfo(1) 自分のパーティー名を取得します。 + strcharinfo(2) 自分のギルド名を取得します。 + getcharid(1) 自分のパーティーIDを取得します。 + getcharid(2) 自分のギルドIDを取得します。 + getpartyname(ID) IDで指定したパーティーの名前を取得します。 + getguildname(ID) IDで指定したギルドの名前を取得します。 + (map/) + battle.h + battle.c + battle_config_read()修正 + pc.c + pc_makesavestatus()修正 + script.c + buildin_strcharinfo()修正 + buildin_getcharid()、buildin_getpartyname()、buildin_getpartyname_sub() + buildin_getguildname()、buildin_getguildname_sub()追加 + +-------------- +//0730 by ぴざまん + +・ストームガストの凍結時間を本鯖にあわせて修正(スキルレベルに関係なく一定の凍結時間(10秒)になります) +・スタン、暗闇、沈黙、毒の状態異常時間の「継ぎ足し」ができないように修正 +・状態異常が掛かりにくすぎてたのでMOBの状態異常耐性を緩和(また調整するかも) + (map/) + skill.c + skill_castend_nodamage_id()、skill_addisional_effect()修正 + skill_status_change_start()修正 + +-------------- +//0729 by DRG + +・カートレボリューションがカートなしで使えた不具合の修正 +・カートレボリューションがJOBLV30で覚えれたのを修正 + (conf/) + npc_event_skillget.txt + カートレボリューション項修正 + (map/) + skill.c + skill_check_condition()修正 + +-------------- +//0728 by ぽぽぽ + +・職が変わってもギルドの職業欄が更新されない不具合の修正。 + + (char/) + inter.c + パケット長リスト修正。 + int_guild.c + mapif_guild_memberinfoshort()、mapif_parse_GuildChangeMemberInfoShort()、 + inter_guild_parse_frommap()修正 + (map/) + intif.h + intif.c + intif_guild_memberinfoshort()、intif_parse_GuildMemberInfoShort() + intif_parse()修正 + guild.h + guild_send_memberinfoshort()、guild_recv_memberinfoshort()修正 + + +-------------- +//0727 by 聖 + +・武器研究スキルによってホルグレンなどの精錬NPCが + 正常に動作しない問題を修正。 + + (map/) + pc.c + pc_percentrefinery() 修正。 + +-------------- +//0726 by 胡蝶蘭 + +・mob_skill_db2.txtがあればmob_skill_db.txtをオーバーライドするように修正 + オリジナルのMOB使用時や、現行MOBの使用スキルを変更したい場合に。 + +・mob_skill_db.txtでmob_idの次のダミー文字列が"clear"だった場合、 + そのMOBのスキルを初期化する機能追加。 + ・mob_skill_db2.txtであるMOBのスキルを完全に書き換えるときに使用して + ください。 + ・clearしなかった場合はmob_skill_db.txtのものに追加されます。 + + mob.c + mob_readskilldb()修正 + + +・アイテム名/MOB名が全角12文字(24バイト)あるアイテム/MOBが、 + @コマンドで取り寄せ/召喚できない問題修正。 + mob.c + mobdb_searchname()修正 + itemdb.c + itemdb_searchname_sub()修正 + +・現在時刻でイベントを起こす「時計イベント」機能を追加 + ・OnInitと同じようにそれぞれのNPCで、On〜で始まるラベルを定義します。 + OnMinute?? :毎時、??分にイベントを起こします。(0-59) + OnHour?? :毎日、??時にイベントを起こします。(0-23) + OnClock???? :毎日、??時??分にイベントを起こします。 + OnDate???? :毎年、??月??日にイベントを起こします。 + ・詳しくは npc_test_ev.txt を参照 + + (conf/) + npc_test_ev.txt + 内容追加 + (map/) + npc.c + 色々修正 + +・その他 + clif.c + コンパイル警告が出ないように修正 + +-------------- +//0725 by 死神 + +・鯖落ちバグ修正。 +・モンスターにイベントが設定されていて自殺やなにかでダメージを与えた +物がない場合鯖落ち確定なのでそのマップにあるプレイヤーを利用して +イベントスクリプトを実行するように変更。 + (map/) + makefile 修正。 + mob.c + mob_timer()、mob_damage() 修正。 + +-------------- +//0724 by 死神 + +・バグ修正と安定化の為の修正。 +・ペットの攻撃でイベントが処理されず鯖落ちになる問題修正。(未テスト) +・モンスターの大量発生で鯖が落ちる問題修正。(モンスターを10000匹を呼んで +魔法で倒すことを5回程テスト。ただ動かないやつのみ。) +・取り巻きがボスと一緒に死ぬ時アイテムを落とさないように変更。(未テスト) +・battle_athena.confのpc_skillfleeをplayer_skillfreeに変更して処理を変更。 +・アイスウォールにskill_unit_settingを使うスキルで攻撃できないように修正。 +・その他細かい修正少し。安定化されたかどうかはまだわかりませんがXP1800+、512M、モンスター配置50%で10000匹召喚して異常なかったので大丈夫になったと思います。大丈夫じゃなくても責任はとれませんが... + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + mob.h 修正。 + mob.c + mob_timer()、mob_deleteslave_sub()、mob_damage() 修正。 + npc.c + npc_event() 修正。 + skill.c + skill_area_sub()、skill_unit_onplace()、skill_castend_nodamage_id() 修正。 + clif.c + clif_parse_GMKick() 修正。 + battle.h + battle.c + battle_damage()、battle_check_target()、battle_config_read() 修正。 + pc.c + pc_calc_skilltree()、pc_checkskill() 修正。 + map.h 修正。 + map.c + map_foreachinarea()、map_foreachinmovearea() 修正。 + map_foreachobject() 修正。 + +-------------- +//0723 by DRG + +・0719の修正 + (map/) + pc.c pc_calc_skilltree()修正 + +-------------- +//0722 by パイン + +・gcc 2.29系列でもコンパイルが通るように修正。 + これは以前にも直したはずなのですが、なぜか元に戻っていましたので + 皆さん注意をお願いします。 + あと、gcc3系列なら定数はどこに書いても問題ないのですが、 + gcc2.29系列では「必ずブロック要素の一番最初」に書かないとコンパイルが + 通りませんのでこちらもご注意願います。 + +コンパイルが通る例 +void hoge() { + const char booboo = 1; + … + +コンパイルが通らない例 +void hoge() { + … + const char booboo = 1; + … + + (map/) + skill.h マクロを修正 + skill.c skill_addisional_effect()修正 + +-------------- +//0721 by 聖 + +・ボスにレックスデビーナが効いた問題を修正。 +・ボスにカードによる状態異常が効かなかった問題を修正。 + 本鯖ではマリナカード等でオークヒーローなどを殴ると時々凍結します。 + (結構微妙な実装方法なので、何か問題があった場合 +  その辺詳しい方おりましたら修正してやってください(^^; )) + +-------------- +//0720 by 胡蝶蘭 + +・PCにIWを重ねるとMOBが攻撃してこない問題を修正 + ・IWに重なっていても、隣接可能ならMOBが近寄ってきます + ・どんな地形にいても、隣接しているなら攻撃可能になります + ・ただし、MOBが遠距離攻撃可能で、攻撃範囲内にPCがいても、 + 隣接不可能なら攻撃してきません。これの解決はかなり面倒なので。 + + mob.c + mob_can_reach()修正 + battle.c + battle_check_range()修正 + +-------------- +//0719 by DRG + +・下位スキルがない場合は上位スキルがふれないようにしました。 + battle_athena.confのskillfleeで設定可能です。 + 下位スキルがないまま上位スキルをふった状態で、このオプションを使う場合はスキルリセットする必要があります。 + 一般アカにスキルリセットを解放したいときに使ってやって下さい。 + (conf/) + battle_athena.conf + (map/) + battle.c + battle.h + pc.c pc_calc_skilltree(),pc_checkskill()修正 + +-------------- +//0718 by 死神 + +・色々と修正。 +・毒によって防御が減るように変更。(HPはまだ減りません。) +・アイスウォールに攻撃できるように変更。(今は全ての攻撃に当たります。) +ただ鞍のバグらしくアイスウォールをクリックすると鞍から0x89パケットが30回以上連続で送ってくることが起こりますが原因は不明です。多分鞍のバグだと思いますが...) +・戦闘に関わる計算等を修正。 +・ゼニが増えるバグ修正。(多分これでこのバグはなくなると思いますがどうなのか報告をお願いします。) +・二刀流の左手武器の種族、属性、Sizeのダメージ補正を右手武器に適用するかどうかを設定できるように変更。 +・その他修正はしたはずですが覚えてません。(修正してない物もありますがdiff当ての途中でどれを作業したのかを忘れたので...) + (common/) + mmo.h 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_get_baseatk()、battle_get_speed()、battle_get_adelay() 追加。 + battle_get_amotion() 、battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_get_atk()、battle_get_atk_()、battle_get_atk2() 修正。 + battle_get_attack_element()、battle_get_attack_element2() 修正。 + battle_get_str()、battle_get_agi()、battle_get_vit()、battle_get_int() 修正。 + battle_get_dex()、battle_get_luk()、battle_get_flee() 修正。 + battle_get_flee2()、battle_get_hit()、battle_get_critical() 修正。 + battle_get_def()、battle_get_def2()、battle_get_mdef() 修正。 + battle_get_element()、battle_check_target()、battle_check_range() 修正。 + battle_weapon_attack()、battle_config_read() 修正。 + clif.c + clif_skill_estimation()、clif_mob0078()、clif_mob007b() 修正。 + pc.c + pc_attack_timer()、pc_attack()、pc_calcstatus()、pc_payzeny() 修正。 + pc_getzeny() 修正。 + npc.c + npc_buylist()、npc_selllist() 修正。 + pet.c + pet_attack()、pet_randomwalk()、pet_ai_sub_hard() 修正。 + mob.h 修正。 + mob.c + calc_next_walk_step()、mob_attack()、mobskill_castend_id() 修正。 + mobskill_use_id()、mobskill_use_pos()、mob_ai_sub_hard() 修正。 + mob_damage()、mob_changestate() 修正。 + mob_get_adelay()、mob_get_speed() 削除。 + skill.h 修正。 + skill.c + skill_unitsetting()、skill_unit_ondamaged()、skill_unit_timer_sub() 修正。 + skill_unit_timer()、skill_area_sub()、skill_unit_onplace() 修正。 + skill_status_change_start() 修正。 + chat.c 修正。 + makefile 修正。 + chrif.c 修正。 + guild.c 修正。 + itemdb.c 修正。 + map.c 修正。 + party.c 修正。 + script.c 修正。 + path.c 修正。 + +-------------- +//0717 by 聖 + +・大量にモンスターを召還して一度に倒すとmap-serverが落ちる問題を修正。 + (カホを100体ずつ召還して50回テストをしたので恐らく大丈夫だと思います。) +・その他結構細かい修正 + (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 聖 + +・精錬成功率に対してBSの武器研究が正しく適用されていなかった問題を修正。 + (map/) + pc.c + pc_percentrefinery() 修正。 + +-------------- +//0715 by 死神 + +・マップサーバーから表示される物を表示するかどうかの設定ができるようにしました。スキル表示だけでもなくしてやるとサーバーがかなり楽になったりもします。 +開発やバグトレースの時は表示することをお勧めします。 +・その他細かい修正。 +・修正した所を全て書けないのでファイルだけ。 + (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 死神 + +・細かい修正。 +・シールドブーメランで盾の重量と精錬によってダメージが増えるように修正。精錬ダメージを足す時適用でダメージ+重量+盾精錬*4(この4はrefine_db.txtの防具の過剰精錬ボーナスを使ってるので変更可能です。)になります。 +・スキルによる吹き飛ばし処理で0x88パケットを使っていましたがそのパケットの優先順位がかなり低いらしく後で来るパケットによって無視されることもあるようなのでプレイヤーだけに適用してモンスターには0x78を使うように変更しました。 +でも位置ずれは完全になくならないようです。(恐らく鞍のバグだと思います。鯖の +座標を確認してみましたが鯖の方は問題がありませんでした。) +プレイヤーの場合0x78(PACKETVERが4以上なら0x1d8)が使えません。分身を作ってしまうので... +・バグ報告スレッド2 の47を取り込みました。 +・その他修正した所少しあり。 + (db/) + refine_db.txt 修正。 + item_db.txt 修正。 + (map/) + battle.c + battle_stopattack()、battle_stopwalking() 修正。 + battle_get_attack_element2()、battle_calc_pc_weapon_attack() 修正。 + battle_weapon_attack() 修正。 + path.c + path_blownpos() 修正。 + pc.h 修正。 + pc.c + pc_stop_walking()、pc_damage() 修正。 + pc_getrefinebonus() 追加。 + mob.c + mob_damage() 修正。 + pet.c + pet_target_check()、pet_stop_walking()、pet_performance() 修正。 + skill.c + skill_attack()、skill_blown()、skill_status_change_start() 修正。 + skill_castend_damage_id() 修正。 + makefile 修正。 + +-------------- +//0713 by ぽぽぽ + +・mob_avail.txt追加。item_avail.txtと同様の指定でモンスターの見た目を他のIDのものに変更します。 + モンスターのID以外を指定したりするとPCやNPCの姿をしたMOBに一方的に攻撃される場合があるので注意。 + (db/) + mob_avail.txt 追加。 + (map/) + clif.c + clif_mob0078()、clif_mob007b() 修正。 + mob.h 修正。 + mob.c + mob_readdb_mobavail()、mob_get_viewclass()追加。 + do_init_mob()、mob_readdb() 修正。 + +-------------- +//0712 by 死神 + +・シールドチャージ、シールドブーメラン実装。 +・オートガードはとりあえずエフェクトが出るように変更しました。 +・0708で書き忘れ。ディフェンダーを使った時ASPDと移動速度は20%低下します。 +本鯖で低下するのは確かのようですがどれぐらい下がるのかはさっぱりわかりまんので... +・その他細かい修正。 + (db/) + cast_db.txt 修正。 + skill_db.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_calc_damage()、battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 + skill.c + skill_additional_effect()、skill_attack()、skill_castend_nodamage_id() 修正。 + skill_check_condition()、skill_status_change_start() 修正。 + skill_castend_damage_id() 修正。 + pc.h 修正。 + pc.c + pc_calcstatus()、pc_checkallowskill()、pc_unequipitem() 修正。 + +-------------- +//0711 by npc + +・鉱石製造エフェクトの修正 +・スクリプト埋め込み変数にHp,MaxHp,Sp,MaxSpを追加(読み込みのみ) + (map/) + skill.c + skill_produce_mix()修正。 + pc.c + pc_readparam()修正。 + (db/) + const.txt 修正。 + +-------------- +//0710 by 胡蝶蘭 + +・名前に半角スペースが入ったパーティーを作成したとき、および、 + 半角スペースが入った名前のPCをパーティメンバにしたとき、 + party.txtが正しく読み込めなくなる問題を修正 + + (char/) + int_party.c + inter_party_fromstr()修正 + +・Message of the Day 機能追加 + ・ログインしたユーザーにMOTDを表示させることが出来ます。 + ・map-server.exe実行時のカレントディレクトリ(help.txtと同じ + ディレクトリ)にmotd.txtを作ると表示します。 + ・MOTDが表示されるタイミングは、 + 「マップサーバーにログインした直後の、マップロード完了時」です。 + つまり、ログイン直後、キャラセレ直後および、 + マップサーバー間移動の時(マップサーバーの分散を行っている場合のみ) + のマップロードが終わった時に表示されます。 + ・表示方法はhelp.txtと同じで普通のメッセージとして送信します。 + (ギルド告知メッセージは文字数制限があり、GMアナウンスは長時間 + 画面の上部に表示されてしまうため) + ・会話と区別がつくように、"< Message of the Day >"、"< End of MOTD >" + の文で上下を囲います。 + + (map/) + pc.c + pc_authok()修正 + + +-------------- +//0709 by ぽぽぽ + +・スクリプトにemotion追加 + emotion n;と使うとNPCがエモを出します。nは0〜33が使用可能。 +・精錬と街ガイドのNPCを本鯖の台詞に合わせて修正。 + (conf/) + npc_town_refine.txt、npc_town_guide.txt 修正。 + (map/) + script.c + buildin_emotion() 追加。 + +-------------- +//0708 by 死神 + +・スキルキャストキャンセル、ディフェンダー、オートガード実装。 +・オートガードの場合ガードしてもエフェクトは出ません。ミスになるだけです。本鯖の方は表示されるかどうかもわからないしパケット情報もないので... +・ディフェンダーは未テスト。bLongAtkDefを使ってるのでホルンカードのようにbLongAtkDefを上げる物を装備して使うと遠距離物理攻撃を全て無効にできます。(これも本鯖の仕様がどうなのかはわかりません。) +・その他細かい修正。 + (db/) + cast_db.txt 修正。 + (map/) + map.h 修正。 + map.c + map_quit() 修正。 + skill.h 修正。 + skill.c + skill_castend_nodamage_id()、skill_use_id()、skill_check_condition() 修正。 + skill_castend_id()、skill_castend_nodamage_id()、skill_castcancel() 修正。 + pc.c + pc_calcstatus()、pc_setpos()、pc_damage() 修正。 + battle.c + battle_calc_damage()、battle_damage() 修正。 + clif.c + clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 + mob.c + mob_damage() 修正。 + itemdb.c + itemdb_searchrandomid() 修正。 + +-------------- +//0707 by 死神 + +・0705の阿修羅覇鳳拳のバグ修正。 + (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 +・修正 + conf/npc_warp_umbala.txt + +-------------- +//0705 by 死神 + +・色々と修正。 +・プレイヤーのクリティカル計算にバグがあったので修正。 +・爆裂波動の処理修正。 +・モンクのコンボを修正。 +・阿修羅覇鳳拳の使用によってマップ鯖の無限ループバグ修正。(これかなり致命的な物だったようです。) +・コンボで使う阿修羅覇鳳拳は敵をクリックする必要がないように修正。 +・猛龍拳で敵を吹き飛ばす距離を5セルに変更。よってコンボで使う阿修羅覇鳳拳は距離チェックをしません。5セル飛ばされた敵は阿修羅覇鳳拳の射程から離れたわけなので距離チェックなしで発動します。(本鯖の仕様なんて知りません。) +・マップの名前を16byteから24bytesに変更。(大した意味はありませんが安全の為の物です。) +・ウェディングキャラによる鞍落ちを防ぐ為に修正。 +・その他少し修正。(テストは殆んどしてません。) + (conf/) + battle_athena.conf 修正。 + (db/) + skill_db.txt 修正。 + (common/) + mmo.h 修正。 + (doc/) + conf_ref.txt 修正。 + item_bonus.txt 修正。 + (map/) + battle.h 修正。 + battle.c + battle_get_flee2()、battle_calc_pet_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_config_read() 修正。 + skill.h 修正。 + skill.c + skill_status_change_start()、skill_castend_damage_id() 修正。 + skill_check_condition()、skill_use_id()、skill_blown() 修正。 + skill_castend_map()、skill_unit_onlimit()、skill_attack() 修正。 + pc.c + pc_attack_timer()、pc_setpos()、pc_setsavepoint() 修正。 + pc_movepos()、pc_calcstatus()、pc_bonus() 修正。 + clif.h 修正。 + clif.c + clif_set0078()、clif_set007b() 修正。 + clif_updatestatus()、clif_initialstatus()、clif_parse_UseSkillToId() 修正。 + clif_skillinfo() 追加。 + map.h 修正。 + map.c + map_setipport()、map_addmap() 修正。 + その他抜けた所少しあり。 + +-------------------- +//0704 by kalen + +・Umbala Warp追加 + conf/npc_warp_umbala.txt + +-------------------- +//0703 by いど + +・サーバーsnapshot + +-------------- +//0702 by ぽぽぽ + +・ファーマシーのエフェクトを本来のものに変更 +・スクリプトでの埋め込み変数にBaseExp,JobExp,NextBaseExp,NextJobExp追加 + (map/) + skill.c + skill_produce_mix() 修正。 + pc.c + pc_readparam()、pc_setparam() 修正。 + (db/) + const.txt 修正。 + +-------------- +//0701 by ぴざまん + +・ステータス異常判別式導入。各ステータス異常の発動率がVIT/INT/MDEFに影響するようになります。持続時間短縮はまた今度で_| ̄|○ +・不死に凍結が効いたバグ修正。 + (map/) + skill.c + skill_additional_effect()、skill_castend_nodamage_id() 修正。 + +-------------- +//0700 by 南 + +・697のバグ修正。 +    (db/) + mob_db.txt + +-------------- +//0699 by 死神 + +・装備のボーナスクリティカルは自分の間違いだったのでbCriticalRateをbCriticalに変更。それと0695で書き忘れですがASPDを上げるカードや装備の一部をbAspdAddRateからbAspdRateに変更しました。みすとれ巣のシミュレーターによるとドッペルカードは複数でも一つしか適用されないみたいだったので。 + (db/) + item_db.txt + +-------------- +//0698 by 死神 + +・一部のキャラに重量が0になってカプラなど何もPC,NCPが表示されなくなるバグ修正。(それだけ) + (common/) + mmo.h 修正。 + (map/) + clif.c + clif_updatestatus() 修正。 + pc.c + pc_calcstatus() 修正。 + +-------------- +//0697 by 南 + +・mob_db修正 + ドロップを中心に修正。 +    (db/) + mob_db.txt + +-------------- +//0696 by 死神 + +・バグ修正。 +・テレポートやワープ等の時スキルユニットから抜ける処理が入って +なかったのでSAFETYWALL等によって鯖落ちが起こったようです。(確か報告も +あったと思いますが...) よって修正はしましたが確認はしてません。報告を +お願いします。 +・スキルによる吹き飛ばし処理をちょっと修正とモンスターのコードを少し修正。 +多分変になったことはないと思いますが変だったら報告してください。 +・その他細かい修正。 + (map/) + skill.h 修正。 + skill.c + skill_blown()、skill_attack()、skill_unit_move() 修正。 + skill_castend_nodamage_id()、skill_castend_damage_id() 修正。 + skill_unit_out_all()、skill_unit_out_all_sub() 追加。 + mob.c + mob_stop_walking()、mob_spawn()、mob_warp() 修正。 + mob_can_move()、mob_changestate() 修正。 + map.h 修正。 + pc.c + pc_setpos() 修正。 + battle.c + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack() 修正。 + +-------------- +//0695 by 死神 + +・少し修正。 +・プレイヤーの基本パラメータを2byteに拡張。 +・item_db.txtをラグナゲートの説明に合わせて修正。 +・bAddEffとbResEffの確率を百分率から万分率に変更。 +・スクリプトstatusupとstatusup2追加。 +statusup bStr; のように使って機能はステータスポイントを減らして +基本パラメータを1上げる。 +statusup2 bInt,n; のように使って機能はステータスポイントを減らさずに +基本パラメータをn上げる。 +・その他細かい修正。 + (conf/) + battle_athena.conf 修正。 + (db/) + item_db.txt 修正。 + const.txt 修正。 + (doc/) + item_bonus.txt 修正。 + conf_ref.txt 修正。 + (common/) + mmo.h 修正。 + (char/) + char.c + mmo_char_send006b()、parse_char() 修正。 + (map/) + map.h 修正。 + clif.h 修正。 + clif.c + clif_initialstatus()、clif_updatestatus() 修正。 + pc.h 修正。 + pc.c + pc_bonus()、pc_calcstatus()、pc_equippoint()、pc_equipitem() 修正。 + pc_jobchange()、pc_checkbaselevelup()、pc_statusup() 修正。 + pc_statusup2() 追加。 + battle.h 修正。 + battle.c + battle_calc_pet_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pc_weapon_attack()、battle_config_read() 修正。 + skill.c + skill_additional_effect()、skill_status_change_start() 修正。 + script.c + buildin_statusup()、buildin_statusup2() 追加。 + atcommnad.c 修正。 + +-------------- +//0694 by 死神 + +・バグ修正と細かい修正。 +・bCriticalRateが正しく適用されなかった問題修正。 +・ペットによるステータスボーナス追加。ステータスボーナスは装備の +スクリプトによって設定します。ただペットによるボーナスはカードによる物と同じ扱いをします。そして属性の適用は一番優先順位低いです。今は何も入ってませんが... + (conf/) + battle_athena.conf 修正。 + (db/) + const.txt 修正。 + pet_db.txt 修正。 + (doc/) + item_bonus.txt 修正。 + conf_ref.txt 修正。 + db_ref.txt 修正。 + (map/) + map.h 修正。 + map.c + map_quit() 修正。 + battle.h 修正。 + battle.c + battle_calc_pc_weapon_attack()、battle_weapon_attack() 修正。 + battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 + battle_config_read() 修正。 + pc.c + pc_calcstatus()、pc_bonus()、pc_setpos()、pc_authok() 修正。 + pc_damage()、pc_autosave_sub() 修正。 + pet.h 修正。 + pet.c + pet_hungry()、pet_birth_process()、pet_recv_petdata()、pet_food() 修正。 + pet_return_egg()、pet_ai_sub_hard()、read_petdb() 修正。 + clif.c + clif_sendegg()、clif_parse_LoadEndAck() 修正。 + atcommand.c 修正。 + makefile 修正。 + +-------------- +//0693 by 胡蝶蘭 + +・SC_*の列挙表をリナンバリング + クライアントに通知するのを64未満から128未満に増やした + パケット情報に合うようにリナンバー + StatusChangeの配列を128から192に増やしたのでメモリ使用量が増えます。 + + (db/) + const.txt + SC_* の数値を変更 + (map/) + skill.h + SC_* の列挙の数値を変更 + map.h + MAX_STATUSCHANGEを128から192に増やした + skill.c + skill_status_change_start(),skill_status_change_end(), + skill_status_change_clear()の通知処理を変更 + +・演奏/ダンスの処理を変更 + 演奏/ダンス中かどうかをSC_DANCINGで判定するように変更 + (判定処理が多少高速化されたはず) + ワープ(マップ移動や蝿など)すると演奏/ダンスを中断するように変更 + + skill.h/skill.c + skill_check_dancing()削除、skill_stop_dancing()追加 + skill_delunitgroup(),skill_initunitgroup()変更 + skill_status_change_start()変更 + skill_castend_nodamage_id()変更 + 書き損じがあるかも・・ + pc.c + pc_calcstatus(),pc_setpos(),pc_damage()変更 + +・不協和音スキルの修正 + (db/) + skill_db.txt + 不協和音スキルのHIT数修正 + (map/) + skill.c + skill_status_change_timer()変更 + battle.c + battle_calc_misc_attack()修正 + +-------------- +//0692 by 胡蝶蘭 + +・アドリブスキルが使用できない問題修正(skill_dbの添付し忘れ) + (db/) + skill_db.txt + アドリブの消費SPを1に修正 + +・mob_db2.txtがあればmob_db.txtにオーバーライドするように + オリジナルmobを作ってる人は使うと便利かもしれません。 + + mob.c + mob_readdb() + +・鯖落ちバグ報告時のためのスタックバックトレースログ所得方法を紹介 + 鯖落ちバグの報告時に、この情報をコピペすると開発者が喜びます。 + Cygwinでcoreの吐かせる方法も紹介してます。 + + (doc/) + coredump_report.txt + +-------------- +//0691 by 胡蝶蘭 + +・item_db2.txtがあればitem_db.txtにオーバーライドするように + オリジナルアイテムを作ってる人は使うと便利かもしれません。 + + itemdb.c + itemdb_readdb()修正 + +・演奏/ダンス系スキル仮実装 + ・演奏/ダンス中は移動が遅く、スキルも使えないようになりました + ・アドリブスキルで演奏/ダンスを中断できるようになりました + ・演奏/ダンスは石化などの異常、MHPの1/4以上のダメージで中断します + ・キャラクターグラフィックは演奏/ダンスしません + ・演奏/ダンス中のSP消費は未実装です + ・移動しても効果範囲はついてきません + ・重複しても不協和音などに変化しません + ・エフェクトが出ても効果は未実装のものがあります + ・ほとんど未テストなので多数の不都合があると思います + + skill.h + SC_* の列挙表を修正 + skill.c + skill_check_dancing()追加 + SkillStatusChangeTable[]修正 + 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()修正 + その他は忘れました + pc.c + pc_calcstatus(),pc_damage()修正 + +-------------- +//0690 by 波浪 + +・細かい修正 + (db/) + item_db.txt 錐とメギンギョルドのbonusを修正。 + (doc/) + item_bonus.txt 修正。 + +-------------- +//0689 by 死神 + +・倉庫バグ修正と細かい修正。 + (map/) + pc.c + pc_modifybuyvalue()、pc_modifysellvalue() 修正。 + storage.c + storage_storageopen() 修正。 + storage_storage_quit()、storage_storage_save() 修正。 + +-------------- +//0688 by 聖 + +・ディスカウント、コムパルションディスカウント、オーバーチャージが適用されなかった問題を修正。 + (map/) + pc.c + pc_modifybuyvalue() 修正。 + pc_modifysellvalue() 修正。 + +-------------- +//0687 by 死神 + +・少し修正。 +・battle_athena.confに項目追加。(詳しいことはconf_ref.txtで) +・item_avail.txtの処理を変更。アイテムIDの後に0を入れると今まで通りに使用不可能になるが0以外の数値を入れると使用不可能ではなくその数値をアイテムのIDとして見た目だけをそれに変更します。よって鞍落ちアイテムを別の物に表示して鞍落ちを防ぐことができます。(表示だけ変えて鯖の処理は本当のアイテムIDの物として認識します。修正は全てしたと思いますが抜けた所があるかも知りませので見た目変更したアイテムで鞍落ちが起こったら報告してください。) 鯖の処理はこれが限界です。(少なくとも自分には) アイテムが同じ物が二つ表示されて間違い安いとかどうこうとかの文句を言いたい人は鞍作れよ。以上。 +・ジルタスとアリスのコマントアウト解除。item_avail.txtで卵をルビーとアクアマリンで表示して捕獲アイテムも他の物に表示するように変更しています。 +・ダメージ計算のバグ修正。(大した物じゃありませんが弓だけちょっと問題があったようです。) +・青箱等のアイテムで得た装備品は未鑑定になるように変更。 +・装備ボーナスの内部処理修正と少し変更。(詳しいことはitem_bonus.txtで) +・キャラ鯖にテータを送る時キャラ、倉庫、ペットのテータを同時に送るように変更。(キャラ鯖とマップ鯖の間の転送量が増えるかも知りれませんがデータを同期化の為です。) +・FWの動作間隔を0.25秒から0.1秒に変更。(これで摺り抜は少し減るはずです。) +・カートレボリュションでどんな状態異常もかからないように変更。 + (conf/) + battle_athena.conf 修正。 + (db/) + const.txt 修正。 + item_avail.txt 修正。 + pet_db.txt 修正。 + (doc/) + conf_ref.txt 修正。 + item_bonus.txt 修正。 + (map/) + map.h 修正。 + map.c + map_quit() 修正。 + battle.h 修正。 + battle.c + battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_get_dmotion()、battle_config_read() 修正。 + pc.c + pc_calcstatus()、pc_bonus()、pc_bonus3()、pc_setpos() 修正。 + pc_makesavestatus()、pc_autosave_sub()、pc_modifybuyvalue() 修正。 + pc_modifysellvalue()、pc_stop_walking() 修正。 + skill.c + skill_additional_effect()、skill_unitsetting() 修正。 + clif.c + clif_buylist()、clif_selllist()、clif_set009e()、clif_set0078() 修正。 + clif_set007b()、clif_additem()、clif_itemlist()、clif_equiplist() 修正。 + clif_storageitemlist()、clif_storageequiplist()、clif_changelook() 修正。 + clif_arrow_create_list()、clif_useitemack()、clif_tradeadditem() 修正。 + clif_storageitemadded()、clif_getareachar_item() 修正。 + clif_skill_produce_mix_list()、clif_cart_additem()、clif_cart_itemlist() 修正。 + clif_cart_equiplist()、clif_vendinglist()、clif_openvending() 修正。 + clif_produceeffect()、clif_sendegg()、clif_pet_equip()、clif_mvp_item() 修正。 + clif_pet0078()、clif_pet007b() 修正。 + itemdb.h 修正。 + itemdb.c + itemdb_searchrandomid()、itemdb_search()、itemdb_readdb() 修正。 + itemdb_read_itemavail()、itemdb_read_itemvaluedb() 修正。 + itemdb_equippoint() 削除。 + storage.h 修正。 + storage.c + storage_storage_quitsave() ->storage_storage_quit()に変更と修正。 + storage_storageclose() 修正。 + atcommand.c 修正。 + pet.c + pet_change_name()、pet_equipitem()、pet_unequipitem() 修正。 + pet_birth_process()、pet_return_egg() 修正。 + script.c + buildin_getitem() 修正。 + mob.c + mob_stop_walking() 修正。 + makefile 修正。 + +-------------- +//0686 by 聖 + +・細かい修正。 + (map/) + pc.h 修正。 + +-------------- +//0685 by 波浪 + +・0683、0684でのbonusの追加にともなってitem_db.txtを修正 +・他色々修正 + (db/) + item_db.txt 修正。 + (doc/) + item_bonus.txt 修正。 + +-------------- +//0684 by 死神 + +・細かい修正。 +・死んだふりの時スキルとアイテムが使えないように変更。 +・bInfiniteEndure追加。機能は無限インデュア。 +・ダメージ表示の処理少し変更。 + (db/) + const.txt 修正。 + (doc/) + item_bonus.txt 修正。 + (map/) + map.h 修正。 + pc.c + pc_calcstatus() 修正。 + pc_equipitem()、pc_unequipitem() 修正。 + clif.c + clif_parse_UseItem()、clif_parse_UseSkillToId() 修正。 + clif_parse_UseSkillToPos()、clif_parse_UseSkillMap() 修正。 + clif_damage()、clif_skill_damage()、clif_skill_damage2() 修正。 + clif_parse_LoadEndAck() 修正。 + skill.c + skill_status_change_timer() 修正。 + +-------------- +//0683 by 死神 + +・バグ修正とbonus追加。 +・倉庫バグ、属性バグ修正とその他のバグ修正。 +・スクリプトbonus3追加。今はbAddMonsterDropItemだけが対応になっています。 +・bonus bRestartFullRecover;n;等でnは無意味だけど消すのはちょっとまずいですので0にして入れた方がいいです。bonusは2つの数値が必要なスクリプトなので。 +・bDefRatioAtkを防御無視に変更。 +・0677で書き忘れ。 +・武器の属性適用優先順位を製造>カード>武器に変更。製造が最優先です。(属性がある時に話です。属性がない場合属性ある物に上書きされたりはしません。) +・装備で適用される効果の優先順位を右手>左手>体>頭上>頭中>頭下>ローブ>靴>アクセサリー1>アクセサリー2>矢に設定。(本鯖仕様がどうなのか分かることができそうな物でもないのでアテナの仕様と言うことで。) 右手が最優先です。 +・武器の射程を右手と左手の武器の中で長い物を適用するように変更。 + (db/) + const.txt 修正。 + (doc/) + item_bonus.txt 修正。 + (map/) + map.h 修正。 + battle.c + battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_calc_pet_weapon_attack()、battle_calc_magic_attack() 修正。 + battle_damage() 修正。 + pc.c + pc_autosave_sub()、pc_calcstatus() 修正。 + pc_bonus()、pc_bonus2() 修正。 + pc_bonus3() 追加。 + script.c + buildin_bonus3() 追加。 + mob.c + mob_once_spawn()、mob_damage() 修正。 + storage.h 修正。 + storage.c + storage_storage_save() 追加 + atcommand.c 修正。 + +-------------- +//0682 by 聖 + +・スピードアップポーション系のバグ修正 + (map/) + pc.c + pc_calcstatus() 修正。 + +-------------- +//0681 by 死神 + +・装備バグ修正。 + (map/) + pc.c + pc_equipitem() 修正。 + +-------------- +//0680 by 聖 + +・細かい修正。 +・「@monster」コマンドでモンスターIDの指定に「-1」、「-2」等を指定すると + モンスターをランダムで召還できる機能を追加。 + (map/) + mob.c + atcommand.c + +-------------- +//0679 by 波浪 + +・0676で新しいアイテム効果が実装されたので、item_db.txtを修正(bonus bAddMonsterDropItem,n,x; は、種族判定ができないのでとりあえず保留しました。) +・他色々修正 + (db/) + item_db.txt + job_db1.txt + (doc/) + item_bonus.txt + +-------------- +//0678 by 聖 + +・召還関連の細かい修正。 + (map/) + mob.c + mob_once_spawn_area() 修正。 + +-------------- +//0677 by 死神 + +・細かい修正。 +・アイテム売買によって得られる経験値をカードによるスキルでは得られないように修正。 +・毒に掛かると自然回復できないように修正。 +・0676で書き忘れ。製造武器の場合製造によって与えた属性が武器の属性より優先して適用されるように変更。(製造武器が無属性の場合は適用されません。) + (doc/) + item_bonus.txt 誤字修正。 + (map/) + npc.c + npc_buylist()、npc_selllist() 修正。 + pc.c + pc_calcstatus()、pc_natural_heal_sub() 修正。 + +-------------- +//0676 by 死神 + +・色々と修正。 +・battle_athena.confに項目追加。(詳しいことはconf_ref.txtで) +・みすとれ巣を参考してダメージ計算を少し修正。 +・装備bonusに色々と追加。(詳しいことはitem_bonus.txtで) +・自動セーブする時(キャラ鯖にデータを送る時)倉庫のデータも送るように変更。 +・0667で言い忘れ。カートを外してもアイテムが消えないように変更。(本鯖で消えるのが仕様だと思っていたけど修正されたみたいなので。) +・取引要請を受ける側は基本スキルをチェックしないように修正。(受ける側の基本スキルチェックは自分が入れた物ではないです。いつの間にか入っていたので削除しました。) +・防具の精錬ボーナスを端数無視に変更。(これが本鯖の仕様みたいなので) +・アンクルの処理少し変更。(かからないと言う報告がありましたので...) +・プレイヤーのステータス計算で問題ありそうな所修正。 +・カードのIDで機能が決まっていたカードもスクリプトによって変えることができるように変更。(詳しいことはitem_bonus.txtで) +・aspd計算方法少し変更。 +・矢にbCritical、bAtkEle、bHit、bAddEle、bAddRace、bAddSize、bAddEffを適用できるように変更。矢を使うスキルや弓による攻撃だけに矢のbCritical、bAtkEle、bHit、bAddEle、bAddRace、bAddSize、bAddEffが適用されるように修正。 +・キリの実装に為に修正はしましたがキリが防御無視なのかどうかがわからなかったので防御無視はしないようになっています。 +・テストした物はbAddMonsterDropItemとbGetZenyNumだけなので正常に動作するかどうかの報告が欲しい所です。(ついでにitem_dbの修正も...これで吸収系とオートスペル系以外は殆ど実装できるはずです。多分...) +・その他は覚えてないけど修正した所が少しあるかも... + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + item_bonus.txt 修正。 + (db/) + const.txt 修正。 + (char/) + inter.c + inter_init() 修正。 + int_storage.c + mapif_parse_SaveStorage() 修正。 + (map/) + trade.c + trade_traderequest() 修正。 + pc.h 修正。 + pc.c + pc_autosave_sub()、pc_calcstatus() 修正。 + pc_bonus()、pc_bonus2() 修正。 + pc_setrestartvalue()、pc_setequipindex() 修正。 + pc_check_equip_wcard()、pc_check_equip_dcard()、pc_check_equip_card() 削除 + その他修正。 + skill.h 修正。 + skill.c 修正。 + skill_castend_nodamage_id()、skill_unit_onplace() 修正。 + skill_check_condition()、skill_additional_effect() 修正。 + skill_attack()、skill_status_change_start() 修正。 + map.h 修正。 + battle.h 修正。 + battle.c + battle_get_def()、battle_get_mdef2() 修正。 + battle_weapon_attack()、battle_damage() 修正。 + battle_calc_magic_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pet_weapon_attack() 修正。 + battle_calc_misc_attack()、battle_config_read() 修正。 + mob.c + mob_damage() 修正。 + pet.c + pet_target_check() 修正。 + clif.c + clif_set0078()、clif_set007b()、clif_changelook() 修正。 + atcommand.c 修正。 + +-------------- +//0675 by 波浪 + +・韓鯖で村正の効果が変更されたので報告を元にitem_db.txtを修正 +・job_db1.txtを修正 + (db/) + item_db.txt + job_db1.txt + +-------------- +//0674 by npc + +・ファーマシーの仮実装。 + (db/) + produce_db.txt + (map/) + skill.c + +-------------- +//0673 by 南 + +・集中力向上に装備品の補正が入っていなかったのを修正。 +     (map/)    +      pc.c + +-------------- +//0672 by 南 + +・集中力向上に装備品の補正が入っていなかったのを修正。 +     (map/)    +      pc.c + +-------------- +//0672 by 聖 + +・モンスター系のバグ修正(すみません、まだ残ってました(^^; ) + (map/) + mob.c + +-------------- +//0671 by 聖 + +・IDチェック範囲の修正他。 +・@monsterで数を指定しなくても召還できるように修正。 + (map/) + atcommand.c + battle.c + battle.h + mob.c + pet.c + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + +-------------- +//0670 by RR + +・モンスタードロップ率を修正(本鯖準拠、DBでの設定+1/10000)。 +・落下率0に設定したアイテムを落とすかどうかをbattle_athena.confで設定可能に。 + (map/) + mob.c + mob_damage() 修正。 + battle.c + battle.h + (conf/) + battle_athena.conf + +-------------- +//0669 by 聖 + +・モンスタードロップの修正。 + (map/) + mob.c + mob_damage() 修正。 + +-------------- +//0668 by 聖 + +・モンスターIDの範囲チェックを修正。 + (map/) + mob.c + mob_db、mob_once_spawn()、mob_once_spawn_area()、 + mob_summonslave()、mob_read_randommonster()、mob_readdb() 修正。 + +-------------- +//0667 by 死神 + +・最大HP計算式をミストレ巣を参考して修正。(多分これで本鯖にあっていると思います。) +・防具の精錬ボーナスを0.7に変更。(今は端数を四捨五入していますが本鯖が端数無視なら修正しておきます。) +・@refineコマンドで装備場所IDに0を入れると装備している全ての装備を精錬するように変更。 +・その他細かい修正。 + (db/) + item_db.txt + 7140、7142を元に戻して0666の物はコマントアウトしました。 + job_db1.txt 修正。 + refine_db.txt 修正。 + (map/) + mob.c + mob_once_spawn() 修正。 + itemdb.c + itemdb_read_randomitem() 修正。 + pet.c + pet_food() 修正。 + pc.c + pc_readdb()、do_init_pc()、pc_calcstatus()、pc_setoption() 修正。 + pc_calc_sigma() 追加。 + その他修正。 + map.h 修正。 + battle.c + battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 + atcommand.c 修正。 + +-------------- +//0666 by 聖 + +・ランダムアイテムの細かい修正。 +・battle_athena.confの項目追加。 +・古木の枝で召還するモンスターの確率を設定出来るようにしました。 +・モンスター召還アイテムを複数作る事が出来るようにしました。 +・召還アイテムのサンプルとして + 生命の種子をポリン系召還、 + エンブリオをMVPボス系召還にしてみました。 + あまりいいサンプルを思いつかなかったので、 + 何かいい案を思いついた人は書き換えてやってください(^^; + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + (map/) + mob.h + mob_db 修正。 + mob.c + mob_once_spawn()、mob_makedummymobdb()、mob_readdb() 修正。 + mob_readbranch() -> mob_read_randommonster()に変更。 + battle.h + battle_config 修正。 + battle.c + battle_config_read() 修正。 + itemdb.c + itemdb_read_randomitem() 修正。 + (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 追加。 + mob_boss.txt 追加。 + +-------------- +//0665 by J + +・怨霊武士の取り巻きがカブキ忍者になっていたのを酒天狗に修正。 +・オットーにフェイクエンジェルが出すはずの取り巻きがついてたのを修正。 + (db/) + mob_skill_db.txt + +-------------- +//0664 by 聖 + +・精錬失敗時他のプレーヤーにもエフェクトが表示されるように修正。 + (map/) + script.c + buildin_failedrefitem() 修正。 + +-------------- +//0663 by lide + +・ブランディッシュスピア修正 + (map/) + battle.c + skill.c + +-------------- +//0662 by 死神 + +・細かい修正とバグ修正。 +・プロボックによってモンスターは乗算防御と減算防御が減るように修正してプレイヤーは減算防御だけ減るように修正。 +・スクリプトgetgmlevel追加。機能はそのNPCと話しているプレイヤーのGMレベルを返します。 +・0659の書き忘れですがペットのパフォマンスの種類が親密度によって増えるように変更しました。 + (map/) + clif.c + pc.c + script.c + +-------------- +//0661 by 死神 + +・細かい修正。 +・接続した時のペットのメッセージを親密度がきわめて親しいの時のみに出るように変更。 +・0659で書き忘れですがペットの支援攻撃は親密度がきわめて親しいの時のみに発生します。(それと親密度によって支援攻撃確率が少し変化します。) +・ジルタスとアリスの卵のIDをitem_db.txtに合わせました。(自分が作ったpet_db.txtの方が自分勝手に設定していた物でしたので。て言うか未実装アイテムだから番号がわからなかっただけですが...) +・pet_db.txtのattack_rateが正しく適用されなかったバグ修正。 + (db/) + pet_db.txt + (map/) + clif.c + clif_parse_LoadEndAck() 修正。 + pc.c + pc_attack_timer() 修正。 + +-------------------- +//0660 by いど + +・サーバーsnapshot + +-------------- +//0659 by 死神 + +・ペットを色々と修正。(ペットのコードをほとんど変えました。) +・手動的だったペットの動きをモンスターのようにAIとして処理。 +・接続した時のペットのメッセージ実装。(本鯖はどうなのかわかりませんが +Athenaは接続すると100%話すようになっています。) +・ペットのスペシャルパフォマンス実装。(ただ台詞がちょっと変です。いくら探しても該当するパケットが見つからなかったので。) +・ペットの台詞を他のペットの物に変更する機能追加。(詳しいことはdb_ref.txtとpet_db.txtで。) +・ペットによる支援攻撃変更。pet_db.txtで攻撃する時と攻撃を受けた時の支援攻撃 +確率を別々に設定できます。攻撃する時の場合攻撃する度にチェックをしますので +攻撃速度が速いと支援攻撃を受けやすくなります。攻撃を受けた時も同じです。(こちらはダメージを喰らう度になりますが。) 支援攻撃確率はソヒー、ジルタス、アリスだけ自分勝手に設定しています。(他のは全部1%に。ペットの支援攻撃は同じモンスターにはできないようになっています。そしてペットの戦闘能力はモンスターと同じです。) +・/hideコマンド実装。 +・プロボックによって乗算防御も減るように修正。 +・フリーキャストのバグ修正。 +・ノービスのステータスボーナス削除。 +・battle_athena.confの項目追加と削除。 +・修正したファイルだけ。未テストした物もかなりありますので問題があったら報告をお願いします。 + (conf/) + battle_athena.conf + (doc/) + conf_ref.txt + db_ref.txt 追加。(今説明が入っているのはpet_db.txtのみです。 ) + 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 + +・ペットがとどめをさすと、飼い主に経験値が入るようにしました。 +・固定値ダメージじゃ味が無いのでATK1〜ATK2の間で乱数を取るようにしました。 +・あと、ペットがとどめをさすかどうかの設定を、battle_athena.confに加えました。 + + (conf/) + battle_athena.conf pet_finish追加。 + (map/) + battle.c + battle_config_read() 修正。 + battle.h 修正。 + pet.c + pet_attack() 修正。 + (doc/) + conf_ref.txt 説明追記。 + +-------------- +//0657 by huge + +・ペットによる攻撃を実装。 +・ペットを持っていて、ペットが装備品をつけてて、さらにランダムによる判定で発動します。 +・ただの遊び心ですw +・battle_athena.confで頻度を設定できます。詳細はdocで。 + + (conf/) + battle_athena.conf pet_attack追加。 + + (map/) + battle.c + battle_config_read() 修正。 + battle.h 修正。 + pc.c + pc_attack_timer() 修正。 + pet.c + pet.h + pet_attack() 追加。 + (doc/) + conf_ref.txt 説明追記。 + + とりあえず、ペットが動いてるなぁって感じと、ダメ回数を増やした程度です。 + +-------------- +//0656 by 死神 + +・グランドクロスの修正。(おいおい何度目だ...) +・グランドクロス計算式間違いで修正。(÷3がまずかったみたいです。) +でもまだ反射ダメージがみすとれ巣よりちょっと高いです。(10ぐらいだから +関係ないかも) +・モンクの気球を必中に修正。(自分の間違いのようですので...) + (map/) + skill.c 修正。 + battle.c 修正。 + +-------------- +//0655 by 死神 + +・グランドクロスの修正。 +・自分なりに情報を収集してみた結果グランドクロス反射ダメージは +プレイヤーキャラがそのキャラ自身にグランドクロスを使った時の +ダメージだそうなので修正しました。(みすとれ巣の計算とはかなり違うような +気もしますが...) +・魔法とトラップ、鷹の攻撃にも属性耐性と種族耐性を適用するように修正。 +(本鯖の仕様にあっているかどうかは不明ですが適用した方が正しいと思ったので +修正しました。) + (map/) + skill.c 修正。 + map.h 修正。 + battle.c 修正。 + +-------------- +//0654 by 死神 + +・グランドクロスの修正と細かい修正。(計算式間違いで修正。) +・0653で書き忘れ。気功による追加ダメージは必中ではないらしいので +修練の加算と同じ所に計算するように変更しました。 +・カートにバグがありそうだったのでちょっと修正。 +・ダメージ計算をほんの少し修正。(ダメージ量が変わったりはしません。) + (map/) + battle.c + battle_calc_magic_attack() 修正。 + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + skill.c + pc_damage_feedback() -> skill_damage_feedback()に変更。 + skill_unit_timer() 修正。 + pc.c + pc_setoption() 修正。 + atcommand.c 修正。 + +-------------- +//0653 by 死神 + +・0652の修正と細かい修正。今まで通り未テストも多いです。 +・グランドクロスの処理修正。(本鯖にあっているかどうかの自身はありません。) +ラグナーゲートの説明によると始めに現在HPの20%が消耗されてその後敵に与えた +ダメージの中で一番高い物が戻ってくるようです。そしてその戻ってきた +ダメージは聖の属性を持ちトラストによって聖の耐性が50%になっているので +半分を喰らうことになるようです。(聖の耐性上がる装備をしていれば戻ってくる +ダメージは受けないようです。) +問題なのはプレイヤーの防御属性を計算するかどうかです。今は防御属性計算の +後で聖の属性を計算しています。そして戻ってくるダメージはHPバーは減るけど +表示はされません。本鯖の方がどうなのか不明なので... +それと一応モンスターもグランドクロスの使用が可能です。ただモンスターの場合 +現在HPの20%消耗の後のダメージは受けません。(モンスターが使う +グランドクロスのテストはしてません。) +・ダメージによるディレイ中にまたディレイがかからないように修正。(大した意味はないかも...) +・値段がゼロのアイテムも売れるように変更。 +・@コマンドhealの処理少し修正。 +・移動コード少し修正。 + (map/) + clif.c + clif_selllist() 修正。 + battle.c + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_calc_magic_attack()、battle_calc_misc_attack() 修正。 + skill.c + skill_additional_effect()、skill_unit_onplace() 修正。 + skill_status_change_start()、skill_unit_onplace() 修正。 + skill_castend_damage_id()、skill_castend_id()、skill_attack() 修正。 + skill_unitsetting()、skill_check_condition() 修正。 + skill_use_id()、skill_use_pos() 修正。 + npc.c + npc_parse_script() 修正。 + pc.h 修正。 + pc.c + pc_walk()、pc_walktoxy_sub()、pc_stop_walking() 修正。 + map.h 修正。 + mob.h 修正。 + mob.c + mob_stop_walking()、mob_changestate()、mob_walk() 修正。 + pet.c + pet_changestate() 修正。 + atcommand.c 修正。 + (db/) + skill_db.txt グランドクロス修正。 + cast_db.txt グランドクロス修正。 + +-------------- +//0652 by 月詠み + +・グランドクロスを仮実装 + (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 波浪 + +・item_db.txtを修正 + (db/) + item_db.txt + 装備品のアイテム効果を修正 + +-------------- +//0650 by 死神 + +・三段掌の発動条件を弓と二刀流以外に変更。 +・表示をせずに内部で処理だけするNPCのCLASSを111から32767に変更。 +・細かい修正。 + (map/) + clif.c + clif_getareachar_npc()、clif_spawnnpc()、clif_pcoutsight() 修正。 + npc.h 修正。 + battle.c + battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + +-------------- +//0649 by 波浪 + +・DBとDOC修正 + (db/) + item_db.txt + グングニールはLV4武器なので、韓国のデータにあわせて風属性ではなくします。 + mob_db.txt + size_fix.txt + 楽器は大型に対して75%だそうです。 + (doc/) + item_bonus.txt + +-------------- +//0648 by 死神 + +・ショップの値段に-を入れると鯖が落ちる問題修正。(itemdbの初期化をnpcより +先にするように変更。) それだけです。 + (map/) + map.c + do_init() + +-------------- +//0647 by nini + +・item_db修正 +・スナッチャー仕様変更。弓以外のすべての武器で出るようになってます。 + (/map/) + battle.c + 三段掌の発動条件追加 + skill.c + スナッチャーの発動条件追加 + (/db/) + item_db.txt + シルクハットにSP上昇追加 + +-------------- +//0646 by last + +・item_db.txtの修正(属性関連) + (/db/) + item_db.txt + +-------------- +//0645 by るるる(&ree_ron) + +・item_value_db.txtにディスカウント&オーバーチャージ等のスキルによる価格変動を受けるかどうかのフラグメントを追加。 + 実際の形式はサンプルとして用意したitem_value_db.sample.txtを見てください。(設定価格は完全に独断と偏見です) + 同様のサンプルとしてNPC設置スクリプトも添付しておきます。 +・item_value_db.txtのアイテム価格設定で、売値と買値の設定を独立。(item_db.txtは従来どおり買値は売値の半額として自動処理) +・NPCショップにて、1NPCで扱えるアイテム数を最大64から最大100に変更。(クラ自体は120ぐらいまで可能ですが) + (/db) + item_value_db.txt + カラム数を整理しただけです。内容はまったく変更していません。 + (/map/) + clif.c + clif_buylist() clif_selllist() 変更 + itemdb.h + item_data 構造体変更 + itemdb_value_buy() itemdb_value_sell() itemdb_value_notdc() itemdb_value_notoc() マクロ追加 + itemdb.c + itemdb_search() itemdb_readdb() itemdb_read_itemvaluedb() 変更 + itemdb_sellvalue() 削除 + npc.c + npc_buylist() npc_selllist() npc_parse_shop() 変更 + (/sample/) + オマケです。次回SnapShotには含まないで宜しいです。 + +コメント +原型は私の友人ree_ronが行い、私が更に細かいミスを直しただけですが、テストはしましたので大丈夫でしょう。 +元々この処理を導入する理由として、特定アイテムの売値が1z固定にできないものか、という点だったからです。 +そしてやっていくうちに、NPCショップを利用したレアアイテムの販売とかで本鯖露店に近いことが出来るのではないか、 +ということが判ってきたわけです。 +それで一応はデータを用意しましたが、あくまでもサンプルとして利用してください。もし可能ならば、 +さらに修正を加えてアテナ独自として本採用としたデータをパッチアップしてくれればとも思いますがw + + +-------------- +//0644 by nini + +・DBの間違い、643で追加されたスクリプト追加。 + (/db/) + item_db.txt + cast_db.txt + チャージアローのキャスト追加。 + exp_guild.txt + 46-50までのexp抜けに追加。 + size_fix.txt + 楽器、鞭、ナックルのサイズ補正修正。 + +-------------- +//0643 by 死神 + +・色々と修正。 +・bMVPaddAtkRate削除。bAddRaceで処理するように変更。 +・bIgnoreDefEleとbIgnoreDefRace追加。 +bonus bIgnoreDefEle,n; n属性の敵の防御無視 +bonus bIgnoreDefRace,n; n種族の敵の防御無視 +・bMatkRate追加。魔法攻撃力を+n%上げます。よってbattle.cで計算していたロッドによる魔法攻撃力増幅の計算はなくしました。ステータス画面に上がった数値は表示されません。ダメージ計算の時に適用しています。 +・bCriticalDefに-を入れるとクリティカルを喰らう確率が上がるように変更。 +・NPC番号111は透明NPCですが落とし穴等のことを考えて表示を一切せずに +内部で処理だけするように変更。(flagを使うと何とかなりそうですがその +処理が全然わからなかったので透明NPCにクリックや名前の表示もできないように変更しました。) +・ショップの値段に-を入れるとitem_db.txtもしくはitem_value_db.txtの物を使うように変更。 +・スキルルアフのエフェクトがサイトと同じだったので修正。ついでにルアフの +ダメージも修正。 +・みすとれ巣によるとモンスター情報で表示される防御と魔法防御は乗算ではなく減算みたいなので修正。 +・他力本願ですがitem_db.txtの修正をお願いします。(全てのロッドにbonus bMatkRate,15; を入れる必要があります。その他の修正も必要です。) +・テストしていない物もかなりありますので問題があったら報告してください。 + (map/) + map.h 修正。 + map.c + map_quit() 修正。 + pc.h 修正。 + pc.c + pc_walk()、pc_stop_walking()、pc_setpos()、pc_authok() 修正。 + pc_calcstatus()、pc_bonus()、pc_natural_heal_sub() 修正。 + npc.h 修正。 + npc.c + npc_touch_areanpc()、npc_parse_shop() 修正。 + clif.c + clif_quitsave()、clif_getareachar_npc()、clif_spawnnpc() 修正。 + clif_skill_estimation() 修正。 + battle.c + battle_calc_magic_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_calc_mob_weapon_attack() 修正。 + mob.c + mobskill_use() 修正。 + skill.c + skill_status_change_end()、skill_status_change_timer() 修正。 + skill_status_change_start() 修正。 + (db/) + const.txt 修正。 + (doc/) + item_bonus.txt 修正。 + +-------------- +//0642 by 死神 + +・装備バグ修正。(それだけ) + (map/) + pc.c + pc_authok()、pc_checkitem() 修正。 + +-------------- +//0641 by 死神 + +・bAspdRateとbSpeedRateのバグ修正。(それだけ)0640で計算をちょっと変えて見ましたがそれがまずかったみたいです。今度も計算式を変えましたがもう大丈夫だと思います。(多分) + (map/) + pc.c + pc_calcstatus()、pc_bonus()、pc_delitem() + +-------------- +//0640 by 死神 + +・バグ修正と少し修正。 +・みすとれ巣を参考してダメージ計算を少し修正。 +・battle_athena.confに項目追加。(詳しいことはconf_ref.txtで) +・キャラのHPとSPを2byteから4byteに変更。(テストはしていますがバグが出る +可能性もかなりあります。ただキャラセレクト画面でHPやSPが32768を越える時 +表示は32768になるけど内部の処理は正常に動きますのでそれはバグではありません。 +パケットの長さのせいでそれ以外手段がなかったので...) +・bCriticalDef(クリティカルを喰らわない確率+n%)の処理変更。100にすれば +クリティカルを喰らわないようになります。) +・bInnerAtkをbBaseAtkに変更。みすとれ巣でカードの攻撃は基本攻撃力の方に足されるとありましたので変更しました。今度は上がった攻撃力が表示されます。 +・bDoubleRateの処理変更。確率を足さずに一番高い物だけ適用します。それと左手 +装備の場合無視するように変更しまた。(左手はダブルが適用されませんので) +・bDoubleAddRate追加。機能はダブルアタック確率+n%(武器無視)です。 +左手装備は無視されます。 +・0635で攻撃力表示を本鯖にあわせました。そして今度は弓だけではなく +楽器とムチもdexによって攻撃力が上がるように変更しました。 +・装備した武器が消えるバグ修正の為に少し修正はしましたが本当に +大丈夫なのかは不明です。報告をお願いします。 + (conf/) + battle_athena.conf 修正。 + (db/) + const.txt 修正。 + item_db.txt 修正。 + (doc/) + item_bonus.txt 修正。 + conf_ref.txt 修正。 + (map/) + map.h 修正。 + pc.c + pc_calcstatus()、pc_bonus()、pc_equipitem() 修正。 + battle.h 修正。 + battle.c + battle_calc_mob_weapon_attack()、battle_calc_pc_weapon_attack() 修正。 + battle_config_read() 修正。 + clif.c + clif_updatestatus()、clif_parse_LoadEndAck()、clif_party_hp() 修正。 + (common/) + mmo.h 修正。 + (char/) + char.c + mmo_char_send006b()、parse_char() 修正。 + +-------------- +//0639 by 胡蝶蘭 + +・ladminの修正など + ・プロンプトの入力にTerm::ReadLineを使うようにした +  (入力履歴やコマンドラインの編集が可能に) + ・POSIX関係の処理の例外エラーをトラップするようにしました +  (POSIXが全く使えない環境でも最低限、動くようになったかもしれない) + ・細部修正 + + (tool/) + ladmin + Ver.1.04に。 + +・MODバージョンがおかしい問題を修正 + (common/) + version.h + ATHENA_MOD_VERSIONが8進数で記述されている問題を修正 + 数字の頭に0をつけると8進数になるので注意してください + +-------------- +//0638 by 波浪 + +・0635・0637で新しくアイテム効果が実装されたので、それに伴ってitem_db.txtを修正 +・item_bonus.txtを修正 + (db/) + item_db.txt 修正 + (doc/) + item_bonus.txt 修正 + +-------------- +//0637 by 死神 + +・0635のバグ修正。 +・battle_athena.confに項目追加。(詳しいことはconf_ref.txtを見てください。) +・時間が遅すぎて0635で説明してなかったです。(寝不足だったので...) +まず仕様が変わったのは二刀流のダメージを武器別に完全に分けて行うように +変更とアサシンじゃなくても左手修練を覚えていれば二刀流を使えるように +変更しました。それとダメージの計算をちょっと修正。 +そしてbonusに追加されたのは +bonus bInnerAtk,n; 内部攻撃力+n +カードの引き上げダメージ用です。表示はされないけどダメージに計算されます。 +bonus bSpeed,n; 移動速度+n +移動速度をn上げます。 +bonus bAspd,n; 攻撃速度+n +攻撃速度をn上げます。 +bonus bSpeedRate,n; 移動速度+n% +移動速度をn%上げます。 +bonus bAspdRate,n; 攻撃速度+n% +攻撃速度をn%上げます。 +bonus bHPrecovRate,n; HP自動回復率+n% +自動回復するHPの量をn%上げます。スキルによる回復には影響がありません。本鯖の仕様とあっているかは不明です。 +bonus bSPrecovRate,n; SP自動回復率+n% +自動回復するSPの量をn%上げます。スキルによる回復には影響がありません。本鯖の仕様とあっているかは不明です。 +bonus bCriticalDef,n; クリティカルを喰らわない確率+n% +クリティカルの耐性をn上げます。10000以上にするとクリティカルを喰らいません。 +bonus bMVPaddAtkRate,n; MVPモンスターにn%の追加ダメージ +ボスモンスターにn%の追加ダメージを与えます。深淵の騎士カード用。 +bonus bNearAtkDef,n; 近距離攻撃のダメージをn%の減らす +全て近距離攻撃のダメージをn%の減らします。(魔法とトラップ、鷹を除く) +bonus bLongAtkDef,n; 遠距離攻撃のダメージをn%の減らす +全て遠距離攻撃のダメージをn%の減らします。(魔法とトラップ、鷹を除く) +bonus bDoubleRate,n; ダブルアタック確率+n%(武器無視) +武器に関係なく発動するダブルアタック確率をn%上げます。 +ダブルアタックスキルと別の判定を行う為ダブルアタックスキルが +あってもスキルによるダブルアタック確率が上がるわけではありません。 +サイドワインダーカード用。 + (map/) + pc.c + pc_bonus()、pc_calcstatus() 修正。 + pc_natural_heal_sub() 修正。 + battle.h + struct Battle_Config {} 修正。 + battle.c + battle_calc_pc_weapon_attack()、battle_calc_mob_weapon_attack() 修正。 + battle_config_read() 修正。 + (db/) + skill_db.txt + スティールのSPを10に修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + +-------------- +//0636 by Sin + +・デバッグ用ポタ子さんスクリプト(npc_pota.txt)のアマツ・コンロンへの対応。 + すでに自力実装されていらっしゃる方々も多いかと思いますが…。 + コンロンダンジョンの名前がわからないため「崑崙D1」などとさせていただいています。 + (conf/) npc_pota.txt + +-------------- +//0635 by 死神 + +・battle_athena.confに項目追加。(詳しいことはconf_ref.txtを見てください。) +・bonusにbInnerAtk(カード等で表示はされないけど実際には攻撃力に反映される物用です。)等を追加。他のはitem_bonus.txtを見てください。(追加はしたけどitem_db.txtは殆んど修正してません。) +・その他バグ修正や仕様変更もやりましたが一々書く時間がないので... + (map/) + makeile 修正。 + pc.c 修正。 + map.h 修正。 + clif.c 修正。 + battle.h 修正。 + battle.c 修正。 + itemdb.c 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + item_bonus.txt 修正。 + (db/) + const.txt 修正。 + item_db.txt 修正。 + +-------------- +//0634 by 死神 + +・weddingクラスには転職できないように修正。 +・スーパーノービスの為にexpテーブルをbase 4つjob 4つに拡張。 +exp.txtが変わりスーパーノービスだけの経験値を設定できます。(exp.txtの +4つ目がスーパーノービスのbase expで8つ目がjob expです。今は2次職業の物を +コピーした物に過ぎませんが。) exp.txtの設定方法も知らない方はいないと +思いますので説明は省略します。 +・スーパーノービスは転生のテストの為に韓国サクライだけ実装している物と +思われますが(転生が実装されればなくなると予測しています。)それを +実装していいのかと思ったりもしますが... +・結婚衣裳は既に0629で実装しているのにまたパッチとして +アップされるのもちょっと変(?)ですね。そういえば説明してなかったんですね。 +・装備専用スクリプトであるchangebaseの追加によってタキシードと +ウェディングドレスが実装しています。これは職業を変更せずに見た目だけ +変える物です。weddingクラス以外の適用も可能で変装セットとかも作れる +わけですが内部処理は変更せずに見た目だけ変えているので0631で説明したように +装備できない物を装備している場合鞍落ちが起こる可能性がありますので +他の職業で使うのはお勧めしません。仮実装なのは今の仕様はタキシードと +ウェディングドレスを装備するだけで見た目が変わるからです。韓国サクライの +方では何かの条件が必要だと思っているのでその条件がまだ実装されいないから +仮実装です。それにweddingクラスを職業にしてしまうと結婚するとスキル等が +リセットされるか変になるかのどちらなので変だと思ってなかったのでしょうか? + help.txt 修正。 + (db/) + job_db1.txt 修正。 + exp.txt 修正。 + (map/) + pc.c + pc_jobchange()、pc_readdb() 修正。 + pc_nextbaseexp()、pc_nextjobexp() 修正。 + +-------------- +//0633 by 波浪 + +・装備の設定修正。結婚衣裳の職は、実際に転職するのではなくペコナイト(13)、ペコクルセ(21)のように画像を使うだけだと思うので + 何も装備できない設定にしました。スパノビはノビが装備できるものだけ設定しました。 +・古木の枝の出現モンスターを追加 +・アマツのモンスの沸き具合を本鯖に近くなるように修正(まだまだ違いますが・・・) + (conf/) + npc_monster.txt モンス名修正 + npc_monster_amatsu.txt 修正 + (db/) + item_avail.txt 鞍落ちアイテム追加 + item_db.txt 装備設定を修正、他多数 + mob_branch.txt 修正 + mob_db.txt モンス名修正 + skill_tree.txt 修正 + +-------------- +//0632 by nini + +・@jobchangeで結婚衣裳とスーパーノービスになれるように。(注意:韓国桜井クライアントのみ) +・Sノビのステ、スキルなども暫定追加。(ノービスのコピーですが) + とりあえず見た目だけということで、結婚衣裳でも攻撃できますが(ただしノーモーション)、本来はできません。 +・上にあわせてitem_db編集。 + 結婚衣裳で武器もつとact、sprエラー出すので、結婚衣裳では武器を持てないようにした(はず)。 + (db/) + job_db1.txt + job_db2.txt + item_db.txt + 結婚衣裳、Sノビのデータ + skill_tree.txt + Sノビのスキル + (map/) + map.h + MAX_PC_CLASSに追加 + +-------------- +//0631 by 死神 + +・細かい修正。 +・タキシードとウェディングドレスの表示をbattle_athena.confで設定できる +ように変更。 +・武器グラパッチについてですがパッチ前は使えない職業が装備をしても表示は +されないだけで鞍落ちまでは起こらなかったけど武器グラパッチの後はその武器を +装備することができない職業(本鯖で)が装備してしまった場合鞍落ちが起こる +ことがありますので注意してください。 + (db/) + item_db.txt + 1161、2338、7170 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + battle.h + struct Battle_Configにwedding_modifydisplay 追加。 + battle.c + battle_config_read() 修正。 + pc.h + pc_cart_delitem() 修正。 + pc.c + pc_jobchange()、pc_additem()、pc_delitem()、pc_cart_delitem() 修正。 + pc_checkitem()、pc_getitemfromcart() 修正。 + clif.c + clif_changelook()、clif_send()、clif_parse_GlobalMessage() 修正。 + script.c + buildin_changebase() 修正。 + storage.c + storage_storageaddfromcart() 修正。 + vending.c + vending_purchasereq() 修正。 + +-------------- +//0630 by 引退人 + +・ギルド脱退時にcharサーバが落ちることがあるのを修正 +・water_height.txtを更新 +・0627に関連してmodifydisplay関連を削除 + (char/) + int_guild.c + mapif_guild_leaved()のバッファ容量が足りなかったので、 + unsigned char buf[64]; -> unsigned char buf[128]; + と修正。 + (conf/) + battle_athena.conf + equip_modifydisplayを削除 + water_height.txt + prt_fild04.gatとmoc_fild01.gatの分を追加 + (doc/) + conf_ref.txt + equip_modifydisplayの説明を削除 + (map/) + battle.h + struct Battle_Config からequip_modifydisplayを削除 + +-------------- +//0629 by 死神 + +・0627のバグ一部修正と新しい移動パケットに対応。(自分の間違いでした。 +モンスターやNPCも新しい移動パケットを使うと思っていたのですが +新しい移動パケットはプレイヤーのみのようです。) +・タキシードとウェディングドレス仮実装。(韓国のサクライ鞍じゃないと +鞍落ちされます。使用する時はitem_db.txtのコマントアウトされている +2338と7170を解除して使ってください。) +・SP回復アイテムもintによって効果が増えるように変更。 +・0627で書き忘れですがカートのアイテム計算とitemdb_を呼ぶのを最小化する +処理を入ってるせいでpc_additem()、pc_delitem()、pc_cart_additem()、pc_cart_delitem()以外の方法でカートアイテムやアイテムに変動がある場合 +正常に動作する保証がないので修正のさいには注意してください。 + readme0754をreadme0574に修正。 + makefile 修正。 + (map/) + map.h 修正。 + clif.c 修正。 + pc.c 修正。 + battle.c 修正。 + mob.c 修正。 + script.c 修正。 + (db/) + item_db.txt 修正。 + class_equip_db.txt 修正。 + skill_db.txt 修正。(誤字を治しただけです。) + (conf/) + npc_event_doll.txt 修正。(流浪人さんありがとうございます。) + +-------------- +//0628 by NOCTURNE + +・snapshot +・snapshotからsnapshotまでのReadme分割 +・要望が多かったのでsnap作成(プログラム的な変更点は無し + +-------------- +//0627 by 死神 + +・コードの最適化と少し修正。(少しは軽くなると思います。) +・ @modifydisplayコマンド削除。 +・新しい移動パケットに対応だと思ったら0x1d8、0x1d9、0x1daパケットの一部が +0x78、0x79、0x7bと変わってるみたいです。つまり今のままでは対応できません。 +X,Yの座標の部分の書式が変わったのかと予測はしていますが... +情報を求みます。(makefileのDPACKETVERを4にすれば0x1d8、0x1d9、0x1daを +使いますが座標がずれたらしく何も標示されません。) +・100000からだったchar_idを150000からに変更。(ペットの卵の問題で武器の名前がちょっと変になったので修正しました。) +・ペットのコード少し修正。(pet_idをcard[2]とcard[3]からcard[1]とcard[2]に変更しました。よって前に作った卵は使えません。鞍でcard[3]の機能が変わったので +仕方なく修正しました。今度はconvertツールがありません。作る時間がなかったので...) +・最適化の為に修正した所が多いですが全て正常動作する保証はありません。 +鯖落ちバグが発生したら報告お願いします。(batte.cはまだ最適化してません。) +カートのアイテム計算やアイテムの重量の計算を最初にだけするようにしているので表示に少し問題があるかも... +・修正したファイルだけ書いておきます。 + 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 引退人 + +・パケット長テーブル(新移動パケットなど)修正 + (doc/) + client_packet.txt パケット解析スレ Mさんの情報を反映 + conf_ref.txt 0624に合わせて修正 + (map/) + clif.c + packet_len_table[] client_packet.txtに合わせて修正 + +-------------- +//0625 by 引退人 + +・@hide透明化をBOSSなどに見破られないように修正 + (map/) + pc.h + #define pc_iscarton(sd) 修正 + #define pc_isinvisible(sd) 追加 + mob.c + mob_attack() + mob_target() + mob_ai_sub_hard_activesearch() + mob_ai_sub_hard_mastersearch() + mob_ai_sub_hard() + 透明(pc_isinvisible(sd)!=0)で死人と同様に判定されるように修正 + (conf/) + npc_cTower.txt 修正(thx to holyzardさん) + +-------------- +//0624 by るるる + +・武器画像表示処理の一新(新移動パケット使用) +・上と関連して、@modifydisplayコマンドを設けた +    機能としては、現在のアサシン武器などのがおかしい場合に、または気に入らないとかで、 +    キャラ毎に旧パケを使用するようにしている。 + + (map/) + atcommand.c + atcommand() @modifydisplayコマンドを追加 + atcommand.h + struct Atcommand_Config { +'7d 変更 + clif.c + clif_set0078_and01d8() , clif_set007b_and01da() 関数名&処理の変更 + clif_spawnpc() , clif_movechar() , clif_changelook() , clif_getareachar_pc() , + clif_fixpcpos() , clif_parse_LoadEndAck() 変更 + map.h + struct map_session_data ・b} 変更 + pc.c + pc_setnewpc() , pc_calcstatus() , pc_equiplookall() , pc_changelook() 変更 + + (conf/) + atcommand_athena.conf + equip_modifydisplay 追加 + + 変更箇所は全てキーワード「modifydisplay」でサーチすればほぼわかるかと。 + +コメント:もうこれで問題は無いはず。実は大いなる勘違いをしてた個所があったのは内緒(マテw + +-------------- +//0623 by 引退人 + +・@hideで透明化(見られない&MOBにタゲられない)するように修正など + (map/) + atcommand.c + @hideのoption設定を0x04から0x40に変更 + mob.c + mob_attack() + mob_target() + mob_ai_sub_hard_activesearch() + mob_ai_sub_hard_mastersearch() + mob_ai_sub_hard() + option判定を0x06から0x46に修正 + (conf/) + npc_event_potion.txt MORISON_MEAT修正(thx to holyzardさん) + +-------------- +//0622 by 引退人 + +・mobがスキル使用に失敗した場合、通常攻撃するように + (map/) + mob.c + mobskill_use_id() スキル使用失敗で0、成功で1を返すように修正 + mobskill_use_pos() スキル使用失敗で0、成功で1を返すように修正 + mobskill_use() 上記を反映して失敗時には0を返すように修正 + +-------------- +//0621 by 胡蝶蘭 + +・アイテムチェックを行うかどうかconf/battle_athena.cnfに書けるように +・アイテムチェックで不正と判断するかどうかをdb/item_avail.txtに書けるように +・@itemcheckで明示的にアイテムチェックできるように + + デバグやテストなどで色々なアイテムIDを使用したい場合は + アイテムチェックを無効にして下さい。(item_check: off) + 無効にした場合でも@itemcheckコマンドでチェックすることが出来ます。 + cnfファイルは用意してないので必要なら各自適当に書き換えてください。 + + (db/) + item_avail.txt + 新規追加。不正アイテムの列挙に使用。未完成。他力本願。 + item_db.txtに定義されてるが実際には使用できないアイテムを書く。 + (doc/) + conf_ref.txt + battle_athena.cnfとatcommand_athena.cnfの説明修正 + (map/) + itemdb.c/itemdb.h + itemdb_availableマクロ追加 + itemdb_read_itemavail()追加 + itemdb_readdb()でavailable=1にするように + itemdb_search()で存在しないIDはavailable=0でデータを作るように + do_init_itemdb()でitemdb_read_itemavail()を呼ぶように + pc.c/pc.h + pc_checkitem()をエクスポート + pc_checkitem()でavailableとbattleconfigをチェックするように + atcommand.c/atcommand.h + @itemでbattleconfigをチェックするように + @itemcheckコマンド追加 + atcommandconfigにitemcheckメンバ追加 + battle.c/battle.h + battle_configにitem_checkメンバ追加 + +・ladminの修正など + アカウント追加、パスワード変更の際にパスワードを省略すると、 + パスワード用のエコーしない専用プロンプトで入力できます(&入力確認)。 + 追加の際にパスワードが表示されたら困る場合などに。 + パスワード入力中はCtrl+Cが効かないので注意してください。 + + パスワードの不正文字の表示が、何文字目かで表示するようになりました。 + その他微妙にチェック追加など。 + + Cygwinでしか動作確認していません。POSIXモジュールを使っているので、 + POSIXでない(&エミュレーションもできない)プラットフォームだと + 動かないかもしれません。 + UNIX系ではnkfなどで改行コードを変換しないとだめかも? + + (tool/) + ladmin + Ver.1.03に。 + +------------- +//0620 by 月詠み + +・ホーリークロス実装 + + (db) + skill_db.txt 修正 + (map) + skill.c + skill_additional_effect()修正(コメントのみ) + battle.c + Damage battle_calc_weapon_attack()修正 + +------------- +//0619 by るるる + +・パッチ0617のでやり忘れと微妙な修正 + + clif.c + clif_movechar(),clif_parse_LoadEndAck() 修正 + +-------------- +//0618 by nini + +・リザレクションの詠唱、ディレイ追加。回復量修正。 +・消費SP修正 +・アローシャワーの範囲を5*5にして2セル吹き飛ばし。 +・チャージアローの使用武器条件無し。 +・スピアスタブの飛距離を6セルに。 + (/db) + cast_db.txt 修正 + skill_db.txt 修正 + (/map) + battle.c + battle_calc_weapon_attack() 修正 + skill.c + skill_castend_damage_id() 修正 + skill_check_condition() 修正 + skill_castend_nodamage_id() 修正 + +-------------- +//0617 by るるる + +・武器画像表示で他キャラが表示されないのを「とりあえず」修正 +・靴表示のパケットを送信停止(現時点ではムダ。コメントしただけですが) + clif.c + clif_spawnpc(),clif_getareachar_pc(),clif_fixpcpos(),clif_changelook()修正 + pc.c + clif_changelook()がある部分を修正(武器ー>盾と順になるように処理の入れ替え) + +コメント。 +新マップ移動パケ(0x1d8〜0x1da)を色々とやったが、そのパケ1つで武器表示が新式のに対応してる +というわけではないっぽい。旧移動パケだと自分以外のキャラが移動すると旧式表示になってしなう。 +更に、新武器表示パケは武器と盾の同時処理が出来てない。おそらくクライアントの問題だと思う。 +とりあえず、キャラが動くたびに新武器パケ=>旧盾パケの2つの装備パケを送ることで解決させている。 +本鯖ではどうなのかの実際のところのデータが無いため、これ以上のことはムリ。 + +-------------- +//0616 by 胡蝶蘭 + +・water_height.txtを読んでいないとサーバーが落ちるバグ修正 + map.c + map_waterheight()修正 + +・PCのマップ移動時のアイテムチェックでアイテムIDの存在をチェックするように修正 +・一部の@コマンドでアイテムIDの存在をチェックするように修正 + pc.c + pc_checkitem()修正 + pc_authok()修正 pc_checkitem()追加 + clif.c + clif_parse_LoadEndAck()修正 + itemdb.c + itemdb_exists()追加(itemdb_searchと同じだが、dbに存在しない + 場合は新しいデータを作らずにNULLを返す) + itemdb_read_classequipdb()修正 itemdb_search=>itemdb_exists + itemdb_read_itemnametable()修正 itemdb_search=>itemdb_exists + itemdb_read_itemvaluedb()修正 itemdb_search=>itemdb_exists + atcommand.c + @item修正 itemdb_search=>itemdb_exists + @produce修正 itemdb_existsでチェックするように + +-------------- +//0615 by 波浪 + +・アイテムDATA大幅修正 + 主な修正箇所は、回復アイテムの回復量の修正、消費アイテムをclass_equip_db.txt無しでも使用できる様に修正、 + 装備品の装備可能職を全て修正、カード効果を修正、etc・・・です。 + +-------------- +//0614 by Nikita + +・アイテムDATAの修正(主に回復量) +・スキル解毒の射程修正 +・0612の細かい修正 + (conf/) + npc_town_prontera.txt 修正 + (db/) + item_db.txt 修正 + skill_db.txt 修正 + +-------------- +//0613 by 引退人 +・checkweight修正 + (conf/) + npc_event_making.txt checkweight部分を修正 + npc_event_potion.txt ポーション、ジュースNPCのcheckweight修正 + +-------------- +//0612 by nini + +・アイテムDATA修正 + (db/) + item_db.txt 修正 + (conf/) + npc_town_***.txt 修正 + R.O.M776さんを参照しました。 + +-------------- +//0611 by 死神 + +・アイテム使用条件があわない時0xa8パケットを送るように変更。(バグ報告スレッド 243のno nameさん情報提供ありがとうございます。) +・QMで集中力向上と速度上昇、アドレナリンラッシュ、ラウドボイス、スピアクイッケン、ツーハンドクイッケンを解除するように修正。 +・速度上昇と速度減少で逆のスキルが解除されるように修正。 +・0609で書き忘れ。モンスターがQMの範囲から抜けても効果が維持するように +変更とブレッシングで呪いと石化が解除されるように修正。 + clif.c + clif_useitemack() 修正。 + skill.c + skill_status_change_start() 修正。 + pc.c + pc_insert_card() 修正。(これはカードバグとは関係ない修正です。そのバグの修正は自分が05xx当たりで修正しましたので。) + +-------------- +//0610 by 波浪 + +・アイテムDATA修正 + (db/) + item_db.txt 修正 + +-------------- +//0609 by 死神 + +・色々と修正。 +・モンスターが止まるように動く問題修正。 +・指弾のディレイ修正。 +・矢作成のコード片付け。 +・敵がスキル範囲から逃げた場合スキルが失敗するように変更。 +・class_equip_db.txtの仕様変更。 + 性別と装備レベルも設定可能に変更と使用アイテムの使用職業、性別と使用 + レベルの設定ができるように変更。(ただデータが多いせいで修正した + class_equip_db.txtはサンプル程度の物です。埋めてください。他力本願ですが...) + それとアイテム使用条件があわないとアイテムが使わないようにしては + いますが01c8パケットのを0にしてもアイテムを使用した時と同じ + エフェクトが出ます。本鯖のアイテム使用パケットが分からないままじゃ + こうするしかなかったのですが... +・battle_athena.confに項目追加。 +・その他スキル少し修正と細かい修正。 +・修正した所を全て覚えてませんのでファイルだけ。 + (map/) + clif.c 修正。 + mob.c 修正。 + mob.h 修正。 + pc.c 修正。 + map.h 修正。 + skill.c 修正。 + skill.h 修正。 + itemdb.c 修正。 + battle.c 修正。 + battle.h 修正。 + (conf/) + battle_athena.conf 修正。 + (db/) + cast_db.txt 修正。 + skill_db.txt 修正。 + create_arrow_db.txt 修正。 + class_equip_db.txt 修正。 + item_db.txt 修正。 + (doc/) + client_packet.txt 修正。 + conf_ref.txt 修正。 + +-------------- +//0608 by sk +・アマツNPC追加 + (conf/) + npc_town_amatsu.txt 城内NPC追加 + npc_warp_amatsu.txt 城内ワープポイント追加 + +-------------- +//0607 by J +・アサルトタートルの手下召喚のバグ修正(報告ありがとうございます るるるさん) + (db/) + mob_skill_db.txt アサルトの修正ついでにテレポを使うMOBのスキルディレイも修正 + +-------------- +//0606 by 引退人 +・スキルレベル最大値以上にクリックした時点で他スキルが上げられなくなるバグを修正(Thanx to 227さん) + (map/) + clif.c + clif_skillup() + スキルレベルが最大値のとき、パケット末尾を0にするように修正 + +-------------- +//0605 by るるる + +・武器属性付与スキルの不都合修正 + 武器を持ち替えたり外したりした場合も、属性付与を解除するようにしました。 + 但し、素手=>武器装備のみ状態維持します。 +・スピアクイッケンのステータスアイコンを正しく表示 +・2HQ、スピアクイッケン、アドレナリンラッシュで該当以外の武器持ち替えで状態消滅 + スピアクイッケンは未確認ですが、2HQは確実なので2HQと不公平な仕様とは + 考えにくいので同様なパターンとしました。本鯖と相違がある場合は報告願います。 +・敵のQMで集中力向上と速度上昇を解除 + QMで影響するスキルはこれ2つだけかな? 私の記憶と掲示板での報告とで + 判断したのですが、もし相違がありましたら報告願います。 + + (map/) + clif.c + clif_parse_UnequipItem() 修正 + pc.c + pc_checkallowskill() pc_equipitem() 修正 + skill.h + skill_encchant_eremental_end() 追加 + skill.c + skill_status_change_start() skill_status_change_end() + skill_status_change_clear() skill_encchant_eremental_end() 修正 + その他細かいところ少々 + +-------------- +//0604 by J +・MOBスキル再修正 +・MOBDB修正 + (db/) + mob_skill_db.txt + アークエンジェリングとタートルジェネラルが1回に2種類までしか + MOBを出さなかったのを修正 + mob_db.txt + ロードオブデスのドロップでエラーが出るのを修正(未確認) + 怨霊武士のドロップとMVPを追加(未確認) +-------------- +//0603 by 引退人 +・新規アイテム時にも所持可能個数チェックをするように修正 + (map/) + pc.c + pc_checkadditem() + 新規アイテム時にMAX_AMOUNTを超えていたら + ADDITEM_OVERAMOUNTを返すように修正 + +-------------- +//0602 by 引退人 +・Geffen鍛冶屋で落ちる問題を修正 + (conf/) + npc_town_geffen.txt if (!checkweight(,)) から if (!(checkweight(,))) に修正 + +-------------- +//0601 by J +・MOBスキルの危ない所をいくらか修正 +・覚醒と狂気の使える職を修正 +・ゲフェニアダンジョンの配置をカボチャイベントで入れたときの配置に修正 + ただしボスがDOP2体ではなくドラキュラにしています。 + (conf/) + npc_monster.txt モンスター配置微変更 + (db/) + mob_skill_db.txt 怪しい設定などの修正 + item_db.txt 増速POTの修正 + +-------------- +//0600 by 引退人 +・プロンテラ精錬所の横のファンに話し掛けると固まる問題を修正 +・MOBスキル取り込み(Thanx to Jさん) + (conf/) + npc_event_skillget.txt ファンのLabelを修正 + npc_town_prontera.txt ファンが重複していたので削除 + (db/) + mob_skill_db.txt ジュノー以降のMOBスキル追加 + +-------------- +//0599 by るるる + +・セージの武器属性付与スキルの不都合修正とステータスアイコン表示 + アスペルシオとエンチャントポイズンとで多重にかかってしまってたので、 + 最後に付与したもの1つになるようにしました。 + そのついでにステータスアイコンも表示するようにもしました。 + (未テストですが、アイコン出なかったスピアクイッケンもでるはずです。) +・アイテムDBにて、増速ポーションの使用制限を追加 + Jazzさん提供です。 + それと私の趣味でラグナロクTシャツをアレナニしましたがw 気に入らなければ + 消すなり元通りに修正するなりしてしちゃってくださいませ〜。 + + (conf/) + battle_athena.conf 598での入れ忘れ + (map/) + skill_encchant_eremental_end() 追加 + skill_status_change_end() skill_status_change_start() skill_status_change_clear() 修正 + (db/) + iten_db.txt 修正 + +-------------- +//0598 by るるる + +・装備武器の画像変更に対応 + 一応ながらクルセイダーの両手槍とかプリーストの鈍器とかはテストしましたが、 + 全ての職をチェックはいません。またこの時点ではクライアント自体の表示データに + 問題の有るのが多いのも付け加えておきます。 + あと、靴も一応は対応しました。但しこれは現時点では本鯖すらも未対応なのですが。 + 表示が化けて嫌だという場合は従来のやり方も出来ます。 + + (conf/) + battle_athena.conf + オプション equip_modifydisplay を追加 + (map/) + battle.h + Battle_Config 修正 + battle.c + battle_config_read() 修正 + clif.c + packet_len_table[] clif_changelook() 修正 + map.h + enum {} 修正 + pc.c + pc_calcstatus() pc_equiplookall() pc_changelook() 修正 + (common/) + mmo.h + mmo_charstatus {} 修正 + +-------------- +//0597 by 波浪 + +・アマツに関する修正&微修正 + (conf/) + npc_mob_job.txt + npc_monster.txt + npc_monster30.txt + モンス名修正 + npc_monster_amatsu.txt + 追加(モンス数がかなり手抜きです・・・ + npc_town_amatsu.txt + ショップNPCを統合(npc_shop3.txtを消してもOKです + (db/) + mob_db.txt + アマツのモンスデータを現在分かる範囲で修正&草ときのこのdef,mdefを修正 + +-------------- +//0596 by 死神 + +・0595の修正と細かい修正。 +・フリーキャストでキャストしている間は攻撃可能ですがキャストした後の +ディレイタイムでは攻撃できないようになっています。本鯖の仕様がどうなのかは +わかりません。 +・動いているPCにモンスターが攻撃できない問題修正。(テストしてませんが +多分これで大丈夫かと。) + (map/) + skill.h + SC_FREECAST 削除。 + skill.c + skill_use_id()、skill_use_pos() 修正。 + skill_castend_id()、skill_castend_pos() 修正。 + その他少し修正。 + pc.c + calc_next_walk_step()、pc_attack_timer()、pc_calcstatus() 修正。 + clif.c + clif_parse_ActionRequest()、clif_parse() 修正。 + map.h + struct map_session_dataにprev_speed追加。 + mob.c + mob_ai_sub_hard()、mob_changestate()、mob_attack() 修正。 + +-------------- +//0595 by PRevEv +・フリーキャスト修正、実装(キャスティング中攻撃もできます。) + (/map) + pc.c + pc_calcstatus() 修正。 + calc_next_walk_step() 修正。 + pc_attack_timer() 修正。 + skill.c + skill_castend_id()、skill_castend_pos()、skill_use_id()、skill_use_pos() 修正。 + +-------------- +//0594 by 死神 + +・韓国鞍のパーティ問題修正と細かい修正。 +・@partyコマンド修正と@guildコマンド追加。 +・battle_athena.confにguild_emperium_check追加。 +・スキル使用が失敗してもディレイがかかる問題修正。 + help.txt 修正。 + (map/) + clif.c + clif_parse_CreateParty2() 追加。 + clif_parse_ItemIdentify() 修正。 + その他少し修正。 + atcommand.h、atcommand.c 修正。 + battle.h + struct Battle_Configにguild_emperium_check追加。 + battle.c + battle_config_read() 修正。 + guild.c + guild_create()、guild_created() 修正。 + skill.c + skill_castend_id()、skill_castend_pos() 修正。 + Makefile 修正。 + (doc/) + client_packet.txt + パケット0x01e8 追加。 + conf_ref.txt 修正。 + (conf/) + atcommand_athena.conf 修正。 + battle_athena.conf 修正。 + +-------------- +//0593 by 死神 + +・メテオとバミリオンのダメージ修正と細かい修正。 +・メテオの隕石が落ちてくる範囲を7*7から5*5に変更。(これで中央は全ての隕石の +ダメージを受けることになります。) +・自動回復計算式変更。 + スキルレベル*5 + (max_hp/50)から + スキルレベル*5 + (max_hp*スキルレベル/500)に変更。(SPと息吹も同じように変更。) +・GM右クリック命令「使用者強制終了」でatcommand_athena.confのkickの +レベルをチェックするように変更。 + (db/) + skill_db.txt + スキル気功のspを10から8に修正。 + (map/) + map.c + NO_WATERを100から1000000に変更。 + battle.c + battle_calc_magic_attack() 修正。 + skill.c + skill_castend_pos2() 修正。 + pc.c + pc_natural_heal_hp()、pc_natural_heal_sp()、pc_spirit_heal() 修正。 + clif.c + clif_parse_GMKick() 修正。 + (doc/) + conf_ref.txt 修正。 + +-------------- +//0592 by 引退人 + +・水場の有り無しをwater_height.txtだけで決めるように変更。npc_water.txtは不要に。 +・カードスキルではレベル上げできないようになったため不要になった処理を削除。 + (conf/) + map_athena.conf + npc: conf/npc_water.txt 消去 + water_height.txt + デフォルト高さ3のマップ分を追加&all_waterを高さ-100としてコメントで追加 + (map/) + map.c + waterlistはmap_readwater()内でメモリ確保 + gat設定後は不要なのでmap_readallmap()でメモリ開放しています + map.h + struct map_dataのflagからwater_flagを消去 + npc.c + npc_parse_mapflag() + マップフラグwaterとall_waterを消去 + pc.c + pc_skillup() + 裏でスキルLvUPできなくなったのでskill[id].flagの分は消去 + skill.c + skill_check_condition() + map_getcellで水場判定するように修正 + +-------------- +//0591 by CHRIS + +・モンクが氣弾をもっているとき、氣弾*3の必中ダメージが入る様になりました。─ battle.c修正 +・モンクスキル「指弾」と「発勁」と「気孔」の詠唱時間が正しく修正されました。─ cast_db.txt修正 + +-------------- +//0590 by 死神 + +・grf-files.txtやconfファイル、account.txtファイルの名前と位置を変えるように変更。 +・マップ移動による鯖落ちを防ぐ為に修正。(マップが二度ロードされて鯖落ちが +起こったとの報告を受けたので。) +・0586をちょっと修正。装備によるスキルの場合レベル上げができないように修正。 +ただ装備によるスキルをスキルポイントを使って上げる時は装備を外す必要が +あります。 +・@partyちょっと修正。(名前に空白があっても大丈夫なように。) +・水場の高さをwater_height.txtで読み込むように変更。 +・confファイルで設定する物をファイルのパスに空白があっても大丈夫な +ように変更。 +・GM右クリック命令「使用者強制終了」でモンスターを倒せるように変更。 +(原因は不明ですがこれでモンスターを殺すと鯖がめちゃくちゃに遅くなることが +あります。) +・その他少し修正。 +・テストは殆んどしてませんので注意してください。 + athena-start 修正。 + (map/) + pc.c + pc_skill()、pc_resetskill()、pc_setpos()、pc_read_gm_account() 修正。 + pc_set_gm_account_fname() 追加。 + pc.h + pc_set_gm_account_fname() 追加。 + clif.c + clif_skillinfoblock()、clif_parse_LoadEndAck()、clif_parse_GMKick() 修正。 + clif_changemap() 修正。 + atcommand.c + @partty 修正。 + skill.c + skill_castend_nodamage_id() 修正。 + map.c + map_config_read()、map_readwater() 修正。 + script.c + script_config_read()、do_init_script() 修正。 + script.h + script_config_read() 追加。 + (common/) + version.h 修正。 + grfio.h + grfio.c + grfio_init() 修正。 + mmo.h + GRF_PATH_FILENAME 追加。 + (conf/) + map_athena.conf 修正。 + npc_water.txt 修正。 + water_height.txt 追加。 + login_athena.conf 修正。 + (login/) + login.c + login_config_read()、read_gm_account() 修正。 + (char/) + char.c + do_init() 修正。 + char_config_read() 追加。 + inter.c + inter_config_read() 修正。 + (doc/) + conf_ref.txt 修正。 + +-------------- +//0589 by 胡蝶蘭 + +・GMの右クリックで切断される問題を修正 + とりあえず01dfパケットを無視するようにしました。 + なんとなくこのパケットはチャット禁止回数とは関係無いような気も…… + + clif.c + clif_parse_GMReqNoChatCount()追加 + +・startをathena.shでなくathena-startを使うように変更 + start + athena.sh => athena-start startに置き換えしただけ + +-------------- +//0588 by Kalen + +・AmatsuNPC追加 + +-------------- +//0587 by 胡蝶蘭 + +・loginサーバーの管理パケットの仕様を変更(0579のログイン拒否情報に対応) + (login/) + login.c + アカウントバン状態変更パケット追加(7936,7937) + アカウントリスト所得パケット修正(7921) + (doc/) + admin_packet.txt + +・ladminの機能追加 + ・バン状態を変更するコマンド追加 + ・リスト表示と検索でバン状態も表示されるようになった + ・"?"でもヘルプが出るように修正 + ・シンボリックリンクにstateaccountが追加されました。 + 使う人はladminの--makesymlinkをもう一度実行してください + + (tool/) + ladmin + 機能追加 + +-------------- +//0586 by 引退人 +・カードスキルを修正 + (/map) + pc.c + pc_calc_skilltree() + pc_skill() + 覚えられないスキルならskill[id].flag=1とする + またはskill[id].flagに本来のlvを+2して記憶 + pc_skillup() + skill[id].flagも増やす + clif.c + clif_skillinfoblock() + skill[id].flag==1なら覚えられないスキル + (/char) + char.c + mmo_char_tostr() + skill[id].flagから本来のlv値を保存する + +-------------- +//0585 by kalen +・script修正 + npc_town_guid.txt 外見変更 + +-------------- +//0584 by 引退人 +・カードスキルを修正 + (/map) + pc.c + pc_calc_skilltree() cardスキルを忘れさせる処理を追加 + pc_skill() 整理 + +-------------- +//0583 by kalen +・script修正 + npc_event_doll.txt 抜けていた部分の会話追加 + npc_town_guid.txt 町の案内要員の画像を表示できるように修正 + 基本的に最新jROで問題なしです。 + +-------------- +//0582 by PRevEv +・580のバグ修正。 + (/map) + skill.c + skill_use_pos() 修正。 +-------------- +//0581 by 引退人 +・水場高さ設定関連を少し修正 + (/map) + map.c + map_waterheight() + map_readwater() + map_readmap() + waterlist[512] -> *waterlistにして、mallocでメモリ確保するように修正。 + map_readallmap() + free(waterlist);追加 + +・バグ報告スレッドの修正パッチを取り込み + (conf/) + npc_town_refine.txt セミコロン抜け修正 + (db/) + item_db.txt 1161,バルムン修正 + +-------------- +//0580 by PRevEv +・フリーキャスト仮実装(キャスティング中攻撃は不可能) + (/map) + clif.c + clif_parse_WalkToXY() 修正。 + pc.c + pc_calcstatus() 修正。 + skill.c + skill_castend_id()、skill_castend_pos()、skill_use_id()、skill_use_pos() 修正。 +-------------- +//0579 by Aの人 +・ログインを弾く処理を仮実装 + conf/login.c + auth_dat構造体にstateを追加 + mmo_auth関数修正 + mmo_auth_new関数修正 + mmo_auth_sync関数修正 + mmo_auth_init関数修正 + + この値を変更するツール、改善策。他力本願です(><; +-------------- +//0578 by 引退人 +・バグ報告スレッドの修正パッチを取り込みなど(thanx to るるるさん,Athefansさん,sageさん,zupportさん) + help.txt @goの説明ちょっと修正 + (conf/) + npc_mob_job.txt 第4列目をTab区切りに修正 + npc_water.txt 水場高さ修正 + (db/) + item_db.txt 640,...,{ pet 1155; },{},,に修正 + mob_db.txt 1162,RAFFLESIA,ラフレシア...修正 + +-------------- +//0577 by るるる +・@コマンドを追加&修正 + atcommand.c + atcommand() @itemresetコマンド追加 @goコマンド修正(アマツ・コンロンを追加) + atcommand_config_read() 上に合わせてitemreset使用レベル指定を追加 + + doc/conf_ref.txt + conf/atcommand_athena.conf itemreset使用レベル指定を追加 + help.txt @itemresetの説明追加と@goの説明修正 + +------------- +//0576 by V&S +・ゴーストリングカードとバースリーカードの効果が逆になっていたのを修正 + { bonus bDefEle,7; }→ゴーストリングカード(念) + { bonus bDefEle,8; }→バースリーカード(闇) + ↑だったのを↓に修正 + { bonus bDefEle,7; }→バースリーカード(闇) + { bonus bDefEle,8; }→ゴーストリングカード(念) + + 鋼鉄の重量を修正 + +-------------- +//0575 by 引退人 +・水場ファイルが"conf/npc_water.txt"固定だったのを修正 +(conf/map_athena.confのnpc:に書かれているファイルをみて水場高さ設定するように) + map.c + struct waterlist[512]; 新規追加。マップファイル名と水場高さを記憶。 + map_waterheight() 新規追加。水場の高さを返す。 + map_readwater() 水場ファイルをみてwaterlistを設定するように修正。 + map_readmap() map_waterheight()を呼ぶように修正。 + map_config_read() "npc"でmap_readwater(w2);追加。 + +-------------- +//0574 by いど + +・サーバーSnapshot +・conf/shop_*.txtの内容をconf/npc_town_*.txtに統合 + +-------------- +//0573 by Jazz + +・mapの penalty, nomemo, noteleport, nobranchの optionを設定。 +・map サーバーが cpuを無限占有することを検査するための script 添付. cygwin環境で作成と実験をしました. + (/conf) + mapflag.txt 追加。 + (/tool) + mapcheck.sh 追加。 + +-------------- +//0572 by 引退人 +・"conf/npc_water.txt"の第4列で水場高さ設定 + (ちゃんとした水場判定が実装されるまでのつなぎとして・・・) + (/conf) + npc_water.txt サンプル修正。 + ・第4列で水場の高さを設定します。 + ・高さを書かなかった場合のデフォルト値は3になります。 + (/map) + map.c + ・水場高さ設定関数 map_readwater() 追加。 + +-------------- +//0571 by code +天津フィールドのMOBの配置とワープポイントの設定の修正 +天津パッチに崑崙が含まれているのを確認したので崑崙のワープとmobを配置 + +conf/npc_monster35.txt + mobの配置 + +conf/npc_warp_amatsu.txt +   天津warp pointの設置 + +conf/npc_warp_gonryun.txt + 崑崙warp pointの設置 + +conf/npc_town_amatsu.txt +   暫定的にプロンテラ噴水前←→天津港/プロンテラ噴水前←→崑崙の接続NPC + +-------------- +//0570 by code +天津フィールドのMOBの配置とワープポイントの設定です。 +conf/npc_monster35.txt + mobの配置 + +conf/npc_warp_amatsu.txt +   warp pointの設置 + +conf/npc_town_amatsu.txt +   暫定的にプロンテラ噴水前←→天津港の接続NPC + +-------------- +//0569 by 死神 + +・0561の@jobcange での♀バード&♂ダンサーによる鞍落ち防止をpc_jobchange()でするように変更。 +・@コマンド@party追加。パーティを作る命令です。韓国鞍を使うとパーティを作る時止まるので臨時的にこれを使ってパーティを作ってください。 +・水の判断処理修正。 +・マップフラグにwaterとall_water追加。詳しくはnpc_water.txtを参考してください。 +iz_dun0xだけ入力していますので他のは埋めてください。マップフラグwaterかall_waterが入ってないとセルのtypeが3でも水として認識しません。そして水だらけのiz_dun02から04までは全て水として認識するようにall_waterを入れています。(これ以外は方法がなかったので...) +・battle_athena.confに項目追加。一部はWeissを参考して作った物です。 +・テストしてない物も少しあります。 + (/conf) + atcommand_athena.conf 修正。 + battle_athena.conf 修正。 + map_athena.conf 修正。 + npc_water.txt 追加。 + (/doc) + conf_ref.txt 修正。 + (/map) + atcommand.h、atcommand.c 修正。 + battle.h 修正。 + battle.c + battle_config_read() 修正。 + pc.c + pc_jobchange()、pc_stop_walking() 修正。 + npc.c + npc_parse_warp()、do_init_npc()、npc_parse_mapflag() 修正。 + mob.c + mob_ai_sub_hard() 修正。 + pet.c + pet_food() 修正。 + skill.c + skill_check_condition() 修正。 + map.h + struct map_data 修正。 + +-------------- +//0568 by 引退人 + +・アクアベネディクタ水場判定など +・ウォーターボール水場判定(read_gat(m,x,y)==3で水場と判定) + skill.c + skill_castend_nodamage_id() + case AL_HOLYWATER: アクアベネディクタ(聖水取得) + skill_check_condition() + case AL_HOLYWATER: アクアベネディクタ(水場判定) + case WZ_WATERBALL: ウォーターボール(水場判定) + +-------------- +//0567 by るるる + +・アコライトのアクアベネディクタを仮実装(水場限定使用のみ未実装) +・プリーストのアスペルシオ、セージのフレイムランチャーでスキル使用時にアイテム消費 +・ミストレスカード装備時にセージの属性原石&ハンターの罠が消費されないバグを修正 + + (/map) + skill.c + skill_check_condition() 修正 + +-------------- +//0566 by パイン + +・0563のスキル解除条件が間違っていたので修正。武器をはずす&武器を変えた場合は + 無条件で解除するようにした。 + +# pc_checkallowskill について(前回説明書くのを忘れていたので…) + 一応今後の含みとしてreturnを返すようにしていますが、現在は(戻り先では)使っていません。 + 今現在は騎士・クルセイダーくらいしかスキル使用時の武器制限がありませんが、今後出てこない + とも限らないので、もし(2次上位か3次?)出てきたらここでチェックしてください。 + + (/map) + pc.c + pc_checkallowskill() 修正 + +-------------- +//0565 by 引退人 + +・マップ移動時に矢装備が外れないように修正 +・ログイン時に矢装備が表示されるように修正 + (/common) + mmo.h + (矢装備は0x8000なので)shortだとintへのキャスト時などに + 負値となってしまうためunsigned shortに修正 + struct item + short equip; -> unsigned short equip; + (/map) + clif.c + clif_itemlist() アイテムリストの矢のついでに矢装備もチェック + clif_arrowequip() シンプル化 + pc.c + pc_equipitem() 修正 + +-------------- +//0564 by 紅葉 + +・@modelの服染め不可能判定修正。 +・@modelで、選べるハズの髪形に変更出来なかった部分を修正。 + 上記変更点に合わせてhelp.txtの修正。 + +-------------- +//0563 by パイン + +・MOBの暗闇スキルを食らった後に回復しないのを修正。…なんだけど、適正な値が分からないので + 毒や沈黙と同じ時間にしてあります + 今後、また手を加えるかもしれません。 +・2HQとスピアクイッケンを使用中に武器を変えた場合は解除するように変更。 + + (/map) + skill.c + skill_castend_damage_id() 修正。 + skill_status_change_timer() 修正。 + pc.c + pc_checkallowskill() 新設。 + pc_equipitem() 修正。 + pc.h + pc_checkallowskill() 新設。 + +-------------- +//0562 by huge + +・矢を弓装備時以外でも装備できるように戻しました。 +・矢の属性を適用するのを弓装備時のみに修正。 + + pc.c + pc_equipitem() 修正。 + pc_calcstatus() 修正。 + +-------------- +//0561 by 引退人 + +・Linuxでもコンパイルできるように + (/map) + skill.c + skill_castend_damage_id() 変数dx,dyの宣言位置変更 + Makefile + LIBS に -lm 追加 + +・@jobcange での♀バード&♂ダンサーによる鞍落ち防止。 by (no name)さん + atcommand.c + @jobchange,@charjobに性別チェック追加 + +// ナナスさん修正 +・clif.c内でatcommand.hを2度includeしていたので一つ削除。 +・パーティー会話、ギルド会話でも@コマンドをチェックするように修正。 + (/map) + clif.c + clif_parse_PartyMessage()、clif_parse_GuildMessage 修正。 + +-------------- +//0560 by パイン + +・0559 の athena-start を Unix Like OS でも動くようにリファイン。 + +-------------- +//0559 by rowla + +・athena.shを全面的に書き直し、athena-startに。athena-start startで開始、athena-start stopでサーバー停止。cygwinでテスト、*BSD|Linuxでは未テスト(環境がないため)。 + +-------------- +//0558 by 死神 + +・ブリッツビートを自動だけ弓を装備していないと発動できないように変更。(手動は武器に関係なく使えます。) 未テスト。 +・トラップの重さ修正。(何故かは知らないけど100になっていたのを10に修正。因みに倉の表示は100が10で10が1です。) +・弓で使うスキルの場合矢が減らないのが仕様だったと覚えているので矢をチェックしないように修正。 +・モンクスキル三段掌の表示をパッシブに変更。 +・マップフラグをセットする時dummyがなくてもセットできるように修正。 +(mapflag nomomo dummyからmapflag nomemoでも大丈夫なように変更。) +未テスト。 + (/db) + item_db.txt 修正。 + skill_db.txt 修正。 + (/map) + skill.c + skill_check_condition()、skill_additional_effect() 修正。 + skill_status_change_start() 修正。 + npc.c + do_init_npc() 修正。 + +-------------- +//0557 by huge + +・矢を、弓装備時のみ装備できるように修正。 +・弓を装備から外したら、矢も外れるように修正。 +・矢を消費するスキルをいくつか修正。 +・鷹を、弓を装備しているときのみ発動するように修正。(未テスト) + + pc.c + pc_equipitem() 修正。 + pc_unequipitem() 修正。 + skill.c + skill_additional_effect() 修正。 + skill_check_condition() 修正。 + +-------------- +//0555 by 死神 + +・細かい修正とプレゼントボックス、古い巻物のバグ修正。 +・@コマンド@refine、@produce少し修正。 +・サーバーのIPにDNS名を使えるように変更。(今さらですがYareから +持ってきた物です。) +・スティール計算式変更とMVPアイテム処理変更。 +・店NPCを利用によるジョブ経験値獲得計算式変更。 + 獲得ジョブ経験値 = ln(金*スキルレベル) * shop_exp / 100 +・ほとんどテストしてないのでバグの可能性があります。 + help.txt 修正。 + (/conf) + atcommand_athena.conf 修正。 + battle_athena.conf 修正。 + (/db) + item_db.txt 修正。 + (/doc) + conf_ref.txt 修正。 + (/char) + char.c + do_init()、check_connect_login_server() 修正と少し修正。 + (/map) + mob.c + mob_damage() 修正。 + pc.c + pc_getitemfromcart()、pc_steal_item() 修正。 + pet.c + pet_return_egg()、pet_get_egg()、pet_unequipitem() 修正。 + script.c + buildin_getitem() 修正。 + skill.c + skill_produce_mix() 修正。 + storage.c + storage_storageget() 修正。 + atcommand.c 修正。 + map.c + map_config_read() 修正と少し修正。 + chrif.c + check_connect_char_server()、do_init_chrif()、chrif_setip() 修正と少し修正。 + npc.c + npc_buylist()、npc_selllist() 修正。 + +-------------- +//0554 by NOCTURNE +・サーバーSnapShot +・too/addaccountの削除 +・help.txtの更新 + +-------------- +//0553 by 胡蝶蘭 + +・ladminのバグ修正と機能追加 + ・キーワードによるアカウント検索機能追加 + ・シェルコマンドとして使用できるようにプロンプトを使わないモード追加 + ・追加機能についてはladminを見てください + ・ ladminの--makesymlinkにより、シンボリックリンクとしてaddaccountを + 作成するため、以前のaddaccountは削除する必要があります。 + これらのシンボリックリンク(Cygwinではショートカット)と、 + 古いaddaccountは鯖snapshotには含まないで下さい。 + + (tool/) + ladmin + 機能追加と修正 + +・女性アカウントしか作成できないバグ修正 +・ladmin、checkversion使用時loginサーバーが暴走するバグ修正 +・GMアカウント周辺のIDを避けるためにSTART_ACCOUNT_NUMを変更 + (既にGMアカウントは避ける仕様になっていますが、混乱防止のため) + + (login/) + login.h + START_ACCOUNT_NUMを500000から2000000に変更 + login.c + 7532(切断)パケットの処理修正 + mmo_auth_new()修正 + +・backupがバックアップするファイルにpet.txtを追加 + (tool/) + backup + ファイル追加修正 + +-------------- +//0552 by 死神 + +・安定性を上げる為の修正ですが本当に安定性上がったか +どうかは不明です。 +・PVPによりクライアントが落ちる問題修正。 + atcommand.c + @pvpoff、@pvpon、@gvgon、@gvgoff 修正。 + script.c + buildin_pvpon()、buildin_pvpoff()、buildin_gvgon()、buildin_gvgoff() 修正。 + clif.c + clif_pvpset() 修正。 + skill.c + skill_attack()、skill_unit_onplace()、skill_unit_onout() 修正。 + skill_unit_ondelete() 修正。 + +-------------- +//0551 by Kalen +・DB修正 + db/create_arrow_db.txt 完成 + SourceID順にソートしました。 + +-------------- +//0550 by huge + +・矢作成スキル実装 + + clif.c + clif.h + clif_arrow_create_list() 追加 + clif_arrow_created() 追加 + clif_parse() 修正 + + pc.c + pc_search_inventory() 修正 + + skill.c + skill.h + skill_arrow_db() 追加 + skill_readdb() 修正 + skill_castend_damage_id() 修正 + + db/create_arrow_db.txt 追加 + db/skill_db.txt 修正 + + まだdbは未完成です。 + +-------------- +//0549 by Kalen + +・map_athena.conf + オリジナルスクリプト、季節限定スクリプトを整頓 + shop3.txt追加 + +・各種NPC追加&修正 + npc_event_yuno.txt [追加]ジュノーイベント(青石5個GET) + npc_cTower.txt [追加]地上地下の鍵NPC + npc_town_yuno.txt [修正]台詞修正 + + npc_event_carnival.txt [追加]旧鯖カーニバルイベント時のNPC + +-------------- +//0548 by huge + +・矢を装備した時の表示バグ問題を修正。 + clif.c + clif_arrowequip() 修正。 + pc.c + pc_equipitem() 修正。 + +あとは、マップを移動するたびに装備が外れちゃう点ですね・・・。 + +-------------- +//0547 by 死神 + +・安定性を上げる為の修正と細かい修正。 +・スキルユニットの判定をしている間メモリーを解除できないように変更。 + map.c + map_foreachinarea()、map_foreachinmovearea() 修正。 + map_foreachobject() 修正。 + block_free_maxを32000から50000に変更。 + pc.c + pc_calcstatus() 修正。 + skill.c + do_init_skill()、skill_unit_timer()、skill_status_change_clear() 修正。 + skill.c、battle.c、battle.h + struct battle_configのsanctury_typeをsanctuary_typeに変更。 + (英語スペル間違いで修正。) + battle_athena.conf + sanctury_typeをsanctuary_typeに変更。 + conf_ref.txt + sanctury_typeをsanctuary_typeに変更。 + +-------------- +//0546 by 獅子o^.^o + +conf/npc_shop2.txt +.バ一ド、ダンサ一用の武器。コモドの武器屋で販売している。 +.モンク用の武器。カピト一リナ修道院で販売している。 + +-------------- +//0545 by 死神 + +・ブリッツのダメージを自動で分散、手動で普通になるように変更。 +・オートブリッツバグ修正。(これで大丈夫だといいけど...) + map.c + block_free_maxを16000から32000に修正。 + block_list_maxを4096から5120に修正。 + battle.c + battle_weapon_attack() 修正。 + skill.c + skill_attack()、skill_castend_damage_id() 修正。 + +-------------- +//0544 by Diex +・猛龍拳から阿修羅覇凰拳へのコンボ実装。 +・阿修羅覇凰拳発動後、敵の背後に移動するよう、修正。 +・三段掌のダメージ修正。 + (/map) + skill.c + skill_castend_damage_id() 修正。 + skill_check_condition() 修正。 + skill_use_id() 修正。 + pc.c + pc_attack_timer() 修正。 + pc_authok() 修正。 + battle.c + battle_calc_weapon_attack() 修正。 + battle.h + struct Battle_Config 修正。 + map.h + struct map_session_data 修正。 + (/conf) + battle_athena.conf 修正。 + +はっきりいってコンボ繋げづらいです。そのため阿修羅へのコンボはかなり甘い判定に +してます(一時的にですが)。繋げづらければbattle_athena.confのほうでデュレイ時 +間を大きくしてみてください。 + 動画見てて気づいたのですが、阿修羅覇凰拳は猛龍拳が発動した後、即時発動のスキ +ルに変わってるようなのです。他力本願ですが、阿修羅までのコンボのパケを記録した +物をどなたかアップしてもらえないでしょうか?詳細がわかり次第、修正します。 + +-------------- +//0543 by 死神 + +・ブリッツのダメージを分散されるように変更。 +・普通のアカウント作りではGMアカウントを作れないように変更。 +(前に自分が入れた物がなくなったので戻しただけですが...) +・取り巻きが主と一緒に死ぬように変更。(ただちょっと重くなる +可能性があります。) 未テスト。 +・MVP経験値が表示だけされて実際には入ってない問題修正。 + (/login) + login.c + mmo_auth_new() 修正。 + (/map) + skill.c + skill_castend_damage_id() 修正。 + battle.c + battle_calc_misc_attack() 修正。 + mob.c + mob_damage() 修正。 + mob_deleteslave()、mob_deleteslave_sub() 追加。 + +-------------- +//0542 by 死神 + +・オートブリッツバグ修正。(今度こそ大丈夫のはず...) +・自分に使ったヒールでは経験が入らないように変更。 +・店NPCを利用によるジョブ経験値獲得計算式変更。 + 獲得ジョブ経験値 = ln(金) * shop_exp / 100 +になります。 +logを使うことで金が多くても入る経験値が多く入らないように変更しました。 + (/map) + battle.c + battle_damage() 修正。 + skill.c + skill_attack()、skill_castend_damage_id() 修正。 + skill_castend_nodamage_id 修正。 + npc.c + npc_buylist()、npc_selllist() 修正。 + map.c + map_foreachinarea()、map_foreachinmovearea()、map_foreachobject() + 修正。(大した修正ではないです。) + (/conf) + battle_athena.conf 修正。 + (/doc) + conf_ref.txt 修正。 + +-------------- +//0541 by huge + +・矢をまとめて持てるように修正。 +・弓で攻撃したときに、装備している矢を消費するように修正。 + + itemdb.c + itemdb_search() 修正 + itemdb_isequip() 修正 + + battle.c + battle_weapon_attack() 修正 + battle_calc_weapon_attack() 修正 + + clif.c + clif.h + clif_arrow_fail() 追加 + clif_parse_EquipItem() 修正 + +-------------- +//0540 by 死神 + +・バグ修正と問題ありそうな所修正。(これでWZ_FIREPILLARとブリッツに +よる鯖ダウンはなくなるはず...) + map.c + map_foreachinarea()、map_foreachinmovearea() 修正。 + skill.c + skill_unitsetting()、skill_delunitgroup() 修正。 + pc.c + pc_damage() 修正。 + battle.c + battle_damage() 修正。 + npc.c + npc_parse_mob() 修正。 + mob.c + mob_spawn_dataset() 修正。 + +-------------- +//0539 by 死神 + +・clif_pvpset()をマップからAREAかマップかを設定できるように変更。(pvpの時の処理は0535以前の物に戻そました。自分だけに転送してもいいような気もしますが...) + clif.h、clif.c + clif_pvpset() 修正。 + clif_parse_LoadEndAck() 修正。 + script.c + buildin_pvpoff() 修正。 + buildin_pvpon() 修正。 + atcommand.c 修正。 +・攻撃途中でアイテムを拾うと攻撃が止まるように修正。 + pc.c + pc_takeitem() 修正。 +・0535説明が爆裂波動になっているがそれは金剛に間違いです。 +・0537で説明を忘れましたがモンスターのdefとmdefを10000以上に設定すれば全ての攻撃に1ダメージになるモンスターになります。そしてモンスター情報でdefと +mdefが10000以上の場合def 100、mdef 99に表示するように変更。本鯖仕様に +するにはmob_db.txtを修正してください。 + +-------------- +//0538 by huge + +・グリムトゥースを範囲攻撃に修正 +・サプライズアタック実装 (有効範囲って、これであってるのかな?) +・バックスタブの仮実装 + 本鯖でやってる人から話を聞いて、場所指定じゃなくて + タゲ取っても良さそうだったので変更しました。(やりやすかったので (^^; + まだ、mobの後ろに居るかどうかの判定は入ってません。 + +・battle.c + battle_calc_weapon_attack() 修正 + +・skill.c + skill_additional_effect() 修正 + skill_castend_damage_id() 修正 + skill_check_condition() 修正 + skill_use_id() 修正 + skill_castend_nodamage_id() 修正 + +・skilldb.txt + バックスタブの種類を[場所]から[敵]へ変更 + +-------------- +//0537 by 死神 + +・スティールバグ修正とbattle_athena.confの項目追加、仕様変更と細かい修正です。 +(スティールは計算式に問題があったので修正して確率を更に落としました。) + battle.h + finger_offencive_typeをfinger_offensive_typeに修正。(英語スペル間違いで修正しました。) + struct battle_configにrestart_hp_rate、restart_sp_rate 追加。 + battle.c + battle_calc_weapon_attack()、battle_calc_magic_attack() 修正。 + skill.c + skill_attack() 修正。 + clif_skill_nodamage()にスキルレベルを送るように変更。(Mさんの指摘により修正。) + clif.c + clif_skill_estimation() 修正。 + conf_ref.txt + finger_offencive_typeをfinger_offensive_typeに修正と少し追加。 + mob.c + mob_ai_sub_hard()、mob_target()、mob_damage() 修正。 + pc.c + pc_steal_item() 修正。 + atcommnad.c、atcommnd.h + @コマンド@gvgon , @gvgoff 追加。 + battle_athena.conf + finger_offencive_typeをfinger_offensive_typeに修正と少し追加。 + +-------------- +//0536 by hogefuga3 (Athena staff) + +・新GRFファイルフォーマット対応 + - Athena staff 様の作成されたパッチを適用しました。 + 更新履歴の部分はパッチミスになったので手動で組み込み。 + +(変更) + common/ + grfio.c + +-------------- +//0535 by 死神 + +・0533の問題がありそうな部分全て修正。修正した所を全部チェックしてなかったので修正したファイルだけ... +・スクリプトsetmapflagnosave 追加。 + setmapflagnosave マップ名、セーブするマップ名、座標(X、Y) + nosaveフラグをonにします。 +・battle_athena.confに追加と一部仕様変更。(詳しくはconf_ref.txtを参考してください。) +・モンスターのdefとmdefが10000以上の場合全ての攻撃(クリティカル含めて)が1ダメージになるように変更。(トラップやブリッツの場合両方が10000以上の場合のみ1になります。) 草とキノコに1ダメージ固定は削除しました。(元々本鯖でも1固定ではないです。精練等による引き上げダメージはそのまま出ますので... 固定したいのならdefとmdefを10000にしてください。実はこれはクリスタルに為に作ろうとした物ですが...) +・爆裂波動の時アイテムによるスキルは使用できるように修正。 +・その他少し修正。(修正の物の中にテストしてない物もあります。) + (/doc) + conf_ref.txt 修正。 + (/conf) + battle_athena.conf 修正。 + (/map) + battle.h 修正。 + battle.c 修正。 + mob.h 修正。 + mob.c 修正。 + skill.c 修正。 + npc.c 修正。 + pc.c 修正。 + script.c 修正。 + clif.c 修正。 + chrif.c 修正。 + +-------------- +//0534 by Diex + +・コンボシステム仮実装 + map/ + battle.c + battle_weapon_attack() 修正。 + clif.c + clif.h + clif_combo_delay() 関数追加。 + map.h + map_session_data 変数追加。 + pc.c + pc_authok() 変数追加。 + pc_attack_timer() 修正。 + skill.c + skill_castend_damage_id() 修正。 + skill_check_condition 修正。 + skill_use_id 修正。 + db/ + skill_db.txt 修正。 + +注)猛龍拳から阿修羅覇鳳拳にはまだつなげません。 + 阿修羅覇鳳拳を放った後、PCはMOBの背後(?)に移動してるっぽいのですが、 +  そこらへんの情報が足りません。情報提供お願いします。 + +-------------- +//0533 by るるる + +・草とキノコに1ダメージ固定 +battle.c の battle_weapon_attack() と battle_calc_attack() を修正 +battle.c の battle_get_mobid() を追加 +mob.c の mob_makedummymobdb() と mob_readdb() を修正 + +・スキルログにモブの固有番号&PCのID番号を表示 +(battle.c の battle_get_mobid() を追加したのでそのついでに) +mob.c skill.c の変更箇所多数(汗 +("MOB %d" もしくは "PC %d" で検索すれば変更箇所がわかるかと) + +・ハンターの罠を使ったスキルで罠を消費するようにした +batttle.c の skill_check_condition() を修正 +(ジェム消費処理の流用っぽいことをやってるんだけど処理中身は理解してないw) + +・サンクチュアリ&マグヌスのダメージ判定を不死属性&悪魔種族に再度修正 +0532で再び元に戻ってしまったのをなおしました。 +ただし、回数&人数判定には手を加えていません(ってか自分にはまだムリ) + +以上。 +切った貼ったの見様見真似でやったので言語的に果たしてこれでよいのか。。。 +もし処理方法に問題有りだったら修正なりをしていただけると嬉しいです。 + +-------------- +//0532 by 死神 + +・修正した所を全然チェックしてなかったので修正したファイルだけ...汗 +・mapflagにnopenalty追加。使用方法は + mapflag nopenalty dummy +です。機能はそのマップで死んだ時経験が減らないようにします。 +・mapflagにpvp_noparty、pvp_noguild、gvg、gvg_noparty追加。 +pvp_nopartyはPVPモードで同じパーティに攻撃が当たらない、pvp_noguildはPVPモードで同じギルドに攻撃が当たらない、gvgはシーズモードに、gvg_nopartyはシーズモードで同じパーティに攻撃が当たらない物です。 +・可動してないタイマーは全て-1になるように変更。 +・吹き飛ばし処理修正。 +・マップロード直後気功が見えない問題修正。 +・残影の処理修正。 +・マップをロードすると死んだふりが解除されるように変更。 +・PVPを少し変更。 +・古木の枝で出るモンスターを自分のレベルより高い物は出ないように変更。 +・加速ポーションのsc_start SC_SpeedPot0,1,0;をsc_start SC_SpeedPot0,1800,0;のように変更。SC_SpeedPot?の後の数値は持続時間です。(単位は秒) +・@コマンド@pvpを@pvponに変更と@pvponと@pvpoff、@gatの機能変更。 +・battle_athena.confのpvp削除。 +・battle_athena.confにdeath_penalty_type追加。 +・ペナルティの適用を死んだ時から死んだ後リスタートした時に変更。(リザで復活すると経験が減りません。本鯖の仕様がかなり気にいらなかったので変更しました。) +・スクリプトsetmapflag、removemapflag、pvpon、pvpoff、gvgon、gvgoff追加。 + setmapflag マップ名、マップフラグタイプ + 指定したマップフラグをonします。(ただpvp、gvgはpvpon、gvgonでできるので指定しても動作しません。あとnosaveの場合処理がちょっと複雑になるので対応してません。) + removemapflag マップ名、マップフラグタイプ + 指定したマップフラグをoffします。(ただpvp、gvgはpvpoff、gvgoffでできるので指定しても動作しません。こちらはnosaveも可能です。) + pvpon マップ名 + 指定したマップをPVPモードにします。 + pvpoff マップ名 + 指定したマップのPVPモードを解除します。 + gvgon マップ名 + 指定したマップをシーズモードにします。 + gvgoff マップ名 + 指定したマップのシーズモードを解除します。 +ただ全てのスクリプトの動作は確認してませんので注意してください。 +・サンクチュアリ、マグヌスエクソシズムの処理を0529に戻しました。 +自分の調査ではサンクチュアリは人数の制限があります。(レベル1で4名で +1レベルに一人ずつ増えます。) +・その後少し修正。(したはず...) + (db/) + const.txt 修正。 + item_db.txt 修正。 + (conf/) + battle_athena.conf 修正。 + (doc/) + conf_ref.txt 修正。 + (map/) + clif.h、clif.c 修正。 + mob.c 修正。 + pc.h、pc.c 修正。 + skill.c 修正。 + pet.c 修正。 + npc.c 修正。 + map.h、map.c 修正。 + battle.h、battle.c 修正。 + atcommand.h、atcommand.c 修正。 + script.c 修正。 + makefile 修正。 + +-------------- +//0531 by 獅子o^.^o + +conf/npc_turtle.txt +.タートルアイランドに行く時、サ一バ一を落って問題修正 +.npc_turtle.txtの508行目 +set Zeny - 10000,0; --> set Zeny,Zeny-10000; 修正 + +-------------- +//0530 by RR +・スキル「サンクチュアリ」で攻撃対象をアンデット/悪魔種族から不死属性/悪魔種族に変更 +・スキル「マグヌスエクソシズム」で攻撃対象をアンデット/悪魔種族から不死属性/悪魔種族に変更 +・スキル「サンクチュアリ」の回復回数を人数からカウントに変更 + skill.c + skill_unit_onplace()修正 + skill_unit_onout()修正 + +多分この仕様で合ってるはずです…。 + +-------------- +//0529 by 胡蝶蘭 + +・MOBがスキル「ヒール」を使用するとサーバーが落ちる場合があった問題を修正 +・スキル「サンクチュアリ」で攻撃対象を不死属性からアンデット/悪魔種族に変更 + + skill.c + skill_unit_onplace()修正 + skill_castend_nodamage_id()修正 + +・ログインサーバーのアカウントデータベース保守ツールを添付 + Perl製なので実行にはPerlが必要です。 + 使用方法などはエディタで開いて見てください。 + 使い方が良くわからない人は手を出さないほうがいいです。 + + 特に理由が無い限りアカウント作成もこちらのツールを使ってください。 + addaccountはパケットの都合上パスワード文字数の制限がきついので。 + + アカウントを削除してもキャラクターデータ、倉庫データ、 + その他のアカウント以外のデータは消えません。相手がログイン中だった場合 + 強制切断はされませんが、次回からはログインできないはずです。 + (つまりは、単にlogin-server上のアカウントを消しているだけです) + + (login/) + login.c + parse_admin()追加、parse_login()修正 + (doc/) + admin_packet.txt + 新規追加。管理パケット情報 + (tool/) + ladmin + login-server administration toolのPerlスクリプト + + +-------------- +//0528 by RR +・スキル「ヒール」を使用した際に回復量に比例した分だけジョブ経験値が獲得できるように変更 +・商人系職業が店NPCを利用した際にジョブ経験値が獲得できるように変更 +・両方ともbattle_athena.confで調整可能にしました。初期設定は0倍(非適用) +・map_athena.confにてかぼちゃクエストのものが入ってなかったのでコメントアウトしながら追加。 + + map_athena.conf + + battle.c battle_config_read() + battle.h Battle_Config + battle_athena.conf + 以上、battle_athena.conf利用ために変更 + + pc.c pc_heal() + 戻り値をhp+spに。戻り値を利用してる部分がなさそうだったので使わせて貰いました。バグが起きたらすみません。 + + skill.c skill_casted_nodamage_id()のヒール部にてジョブ経験値獲得するよう変更 + + npc.c npc_buylist() + npc_selllist() 変更 + これらとの兼ね合いでskill.hをinclude。 + + +商人の店利用ジョブ経験値獲得ですが、計算式はまだ考え中なので仮で。 +計算式はアイテム購入が 代金 * スキルレベル(ディスカウント)/ ((1+300/アイテム個数) * 4000) +アイテム売却が 代金 * スキルレベル(オーバーチャージ) / ((1+500/アイテム個数) * 4000)です。 +常に矢をたくさん一緒に購入することで経験値を多量に稼ぐことが可能ですね…。 +どなたかいい式を思いついたら変更お願いします。 + +ところで転職NPCが一部かぶってるんですが修正しないでいいんでしょうか? + +-------------- +//0527 by 死神 + +・0526のバグ修正。(テストの為に変えていた物を入れたままアップしてしまったのが原因でした。) + skill.c 修正。 + pc.c 修正。 + mob.c 修正。 + clif.c 修正。 + +-------------- +//0526 by 死神 + +・0525のリザレクションを死んだキャラに使えないバグ修正。(テストはしてませんが治ったはずです。多分...) + skill.c 修正。 + clif.c 修正。 + +-------------- +//0525 by 死神 + +・dmotionの間はキャラが動かないように変更。(テストしてません。) +・メテオのダメージ表示タイミング修正。(少し遅い気もしますが...) +・バックスライディングの時にモーションが出るように変更。(スキル使用後 +0.2秒後にスキル使用パケットを送るように変更しました。ラグ等によって変な動作をする可能性もあります。) +・0524の修正。 +・ハイディングしている時自然回復しないように変更。 +・0519で間違ったconfの修正と細かい所修正。 + map.h + struct map_session_dataのcanmove_tickをcanact_tickに変更。 + skillcanmove_tickをcanmove_tickに変更。 + skill.c 修正。 + pc.c 修正。 + pc.h 修正。 + clif.c 修正。 + battle.c 修正。 + battle.h 修正。 + mob.c 修正。 + mob.h 修正。 + char_athena.conf 修正。 + map_athena.conf 修正。 + +-------------- +//0524 by huge + +・ローグ トンネルドライブ実装 + clif.c + clif_parse_WalkToXY() + pc.c + pc_calcstatus() + + どのくらい速度減少するのか分からなかったので、暫定的に + speed += speed * (20-スキルレベル)/40 + と、しました。本鯖仕様が分かる方居ましたら修正お願いします。 + +-------------- +//0523 by NOCTURNE + +・npc_event_rental.txtにクルセイダー用のペコペコ管理兵を追加 +-------------- +//0522 by 波浪 + +・mob_db.txtをジュノー後のデータに修正 + +-------------- +//0521 by 胡蝶蘭 + +・mapサーバーに繋がらない問題を修正 + clif.c + clif_parse()の修正 + +-------------- +//0520 by 胡蝶蘭 + +・charサーバーログの「set map X.Y HOGE.gat」が表示されなくなりました + 変わりに、「set map M from XX.YY.ZZ.WW:PP (CC maps)」 + というふうに何個のマップをセットしたかだけを表示するようになります。 + + char/char.c + parse_frommap修正 + +・複数mapサーバーに仮対応 + ・NPCのマップサーバー変数は鯖間では共有されません。共有すべき変数を + 持つNPCがいるマップ同士は同じmapサーバーで動かすべきです。 + おそらくPCのグローバル変数は共有できると思います(未テスト) + ・暫定的に動くようにしただけなので、不都合があるかもしれません。 + 特に、パーティ/ギルド/倉庫/ペット/Wisなどのinterサーバーを使う機能が + 正しく作動するか全くチェックしていません。 + ・「recv map on XX.YY.ZZ.WW:PP (CC maps)」というログが表示されます。 + これは他のmapサーバーが担当するマップのリストが、このmapサーバーに + 正常に受信されたという意味です。 + + (char/) + char.c/char.h + parse_frommap()修正 + mapif_sendallwos()追加 + (map/) + map.c/map.h + map_setipport()を修正 + struct map_session_dataのstateメンバにwaitingdisconnect追加 + chrif.c/chrif.h + 色々追加 + clif.c + waitingdisconnectが1ならパケットを無視するようにした + pc.c + pc_setpos()修正(マップサーバー変更処理など) + pc_setnewpc()修正 + +-------------- +//0519 by 死神 + +・サーバーsnapshotと色々修正。 +・死んだキャラに攻撃が当たるバグ修正。(テストしてません。本当に治ったかどうか報告お願いします。) +・0517のアイスウォールの処理を少し変更。 +・メテオをモンスターも使えるように変更。(テストしてません。報告お願いします。) でもちょっとメモリーの使用量が増えました。(約10M程上がるようです。) +・ボスの取り巻きがボスと一緒に行動するように変更。(テストしてませんのでどんな動きをするかは確認してません。攻撃も受けてないのにボスの隣から勝手に離れるかどうかの確認をお願いします。) +・その他細かい物修正。 + client-packet.txt 修正。 + map.h + AREA_SIZEを15から20に変更。 + struct map_session_data、struct mob_data、struct skill_timerskill 修正。 + map.c + map_quit() 修正。 + clif.h + clif_changemapcell() 修正。 + clif.c + clif_getareachar_skillunit()、clif_clearchar_skillunit()、clif_changemapcell() 修正。 + skill.c + skill_unitsetting()、skill_unit_onlimit()、skill_castend_pos2() 修正。 + skill_castend_nodamage_id()、skill_check_condition()、skill_attack() 修正。 + skill_timerskill()、skill_addtimerskill()、skill_cleartimerskill() 修正。 + その他少し修正。 + skill.h + skill_addtimerskill()、skill_cleartimerskill() 修正。 + pc.c + pc_movepos()、pc_walk()、pc_authok() 修正。 + mob.c + mob_spawn_dataset()、mob_spawn() 修正。 + mob_changestate()、mob_damage() 修正。 + mob_ai_sub_hard_mastersearch()、mob_ai_sub_hard() 修正。 + その他少し修正。 + battle.c + battle_calc_weapon_attack()、battle_weapon_attack() 修正。 + その他少し修正。 + +-------------- +//0518 by Kalen +・Event_pumpkin関連のフラグ不具合修正 + +-------------- +//0517 by 死神 + +・アイスウォールで摺り抜る問題修正と少し修正。(Mさんパケットの提供ありがとうございます。) + clif.h + clif_changemapcell() 追加。 + clif.c + clif_changemapcell() 追加。 + skill.h + SC_STEELBODYを84から87に変更。 + skill.c + skill_unitsetting()、skill_unit_onlimit() 修正。 + skill_status_change_end()、skill_status_change_start() 修正。 + client_packet.txt 修正。 + +-------------- +//0516 by 死神 + +・モンスターのメテオによる鯖ダウンを臨時に防いで置きました。(テストはしてません。) モンスターのスキルについてちょっと分析不足ですので分析した後に修正して置きます。 +・スキル指弾の仕様をbattle_athena.confで決めるように変更。(0515の物がちょっともったいなかったので...) + skill.c + skill_castend_pos2() 修正。 + battlc.h、battle.c + battle_configにfinger_offencive_type 追加。 + battle_calc_weapon_attack() 修正。 + battle_athena.conf 修正。 + conf_ref.txt 修正。 + +-------------- +//0515 by 死神 + +・スキルメテオと指弾修正とパケット修正、0512の落とし物修正と少しだけの仕様変更です。 +・指弾の場合説明を見てこんな感じかなと思って作った物です。以前の物が本鯖にあっているなら元に戻します。 +・メテオの1発の範囲は5*5セル(range = 2)です。 +・アイテム使用パケットを新しい物に変更したがエフェクトが出ない物は出ないようです。(色々エフェクトが入っているみたいだから後は使って確認ですけどね。) +・0512でhitrateが10000以上で必中ではなく100000以上で必中ですのでコードの修正のさいには気をっつけてください。 +・battle_athenaに設定されている武器の製造率とペットの捕獲確率の計算方法を少し変えました。(気にする必要もない物ですけどね。) + skill.h + skill_addtimerskill()、skill_cleartimerskill 追加。 + skill.c + skill_attack() fix、skill_use_id()、skill_use_pos() 修正。 + skill_castend_damage_id()、skill_castend_nodamage_id() 修正。 + skill_timerskill()、skill_addtimerskill()、skill_cleartimerskill 追加。 + skill_castcancel()、skill_castend_pos2()、skill_unitsetting() 修正。 + skill_produce_mix()、do_init_skill() 修正。 + mob.c + mob_damage() 修正。 + battle.c + battle_calc_weapon_attack() 修正。 + map.h + struct skill_timerskill 追加。 + struct map_session_data 修正。 + map.c + map_quit() 修正。 + pc.c + pc_authok() 修正。 + pc_damage() 修正。 + clif.c + clif_parse_WalkToXY() 修正。 + clif_useitemack() 修正。(資料提供: Kalenさん) + pet.c + pet_catch_process2() 修正。 + skill_db.txt + 気功のSPを10に変更。(ネットの検索では10だったので変更しました。韓国蔵では15と表示されますが...) + client_packet.txt + 01c8の変更です。Kalenさん情報提供ありがとうございます。 + +-------------- +//0514 by Kalen + +・script修正+追加 + + conf/npc_event_pumpkin.txt (新規)カボチャイベント + conf/npc_town_guide.txt (修正)Junoの「+」アイコンカラー修正 + conf/npc_town_lutie.txt (一部追加)カボチャイベントに影響するNPCの会話追加 + +-------------- +//0513 by RR + +・転職時に装備が全て外れるようにしました。関数位置の変更してないので、ひょっとしたらおかしくなってるかもしれません。うちの環境(win2k cygwin)では平気でしたのでそのままにしてあります。。 +・ノービス時の死亡では、最大HPの2分の1で復活できるよう修正。(スキルによる復活は未確認) +・デスペナルティによる経験値減少を追加。battle_athena.confにて、減少率を変更できるように設定。減る経験値は小数点以下切り捨てなので、必要経験値が低いうちにはちょうどその%分引かれるという風にはなりません。 + battle.h + Battle_Configにdeath_penalty_baseとdeath_penalty_jobを追加。 + battle.c + battle_config_readでdeath_penalty_baseとdeath_penalty_jobを読むように修正。 + pc.c + pc_makesavestatus() 修正。 + pc_damege() 修正。 + pc_jobchange() 修正。 + battle_athena.conf + death_penalty_base,death_penalty_job追加。 + +-------------- +//0512 by 死神 + +・問題になりそうな部分の修正と新しいパケットの対応がメインです。後バグも少し治しました。(動けない状態異常になっても動く問題の修正等です。) + athena.sh 修正。(いつも鯖を個別に実行していたので気がつきませんでした。) + makefile + DPACKETVERを2から3 に修正。ジューノ以後の蔵を使うのなら3にして使ってください。(その以前なら2か1) + clif.c + DPACKETVER=3に対応(今の所0x114を0x1deに変換と0x11fを01c9に変換するのみ対応) + clif_skill_damage3() 削除。 + clif_skillcastcancel() 追加。 + clif_skill_damage()、clif_getareachar_skillunit()、clif_skill_setunit() 修正。 + clif_fixmobpos()、clif_fixpetpos()、clif_fixpcpos() 修正。 + 他に少し修正。 + clif.h + clif_skill_damage3() 削除。 + clif_skillcastcancel() 追加。 + battle.c + battle_calc_weapon_attack() 修正。 + hitrateを10000以上にすれば必中になるように変更。(今の仕様ではモンスターの必中攻撃以外は必中になりません。) + 他に少し修正。 + client_packet.txt + 新しいパケット情報追加。 + pc.c + pc_spiritball_timer()、pc_delspiritball() 修正。 + pc_damage()、pc_skill() 修正。 + skill.h + SC_EXPLOSIONSPIRITSを89から86に変更。(86 = 0x56) + SC_DELUGEを86から89に変更。 + skill.c + skill_castcancel()、skill_use_id()、skill_use_pos() 修正。 + skill_check_condition() 修正。 + skill_castend_damage_id()、skill_castend_nodamage_id 修正。 + skill_status_change_end()、skill_status_change_start() 修正。 + skill_db.txt + 気功の消費SPを修正。(前の15が本鯖にあっているみたいですので...) + mob.c + mobskill_use_id()、mobskill_use_pos() 修正。 + map.c + map_quit() 修正。 + atcommand.h + atcommand.c + @コマンド@spiritball追加。(機能は使えばわかります。ただ1000以上は入れない方がいいです。蔵がパンクしますので...) + atcommand_athena.conf + 修正。 + conf_ref.txt + 修正。 +・0x196パケットに新しい物が追加されているので状態変化に直接に関係ないSC_xxxxの番号を調整する必要があります。(今はSC_EXPLOSIONSPIRITSにだけ対応しました。) それとskill_status_change_end()、skill_status_change_start()でclif_status_change()を呼ぶtypeの範囲が64(0x40)未満になっているがそれも追加されている物に合わせて修正する必要がありますが追加されている物が全てわかったわけでもないのでSC_EXPLOSIONSPIRITSにだけ対応しました。今度からは爆裂波動の解除が正確に見えます。金剛はデータを見つけられませんでした。 +※新しいパケットに対応する作業をしていますが情報が不足です。 +イグドラシルの実やイグドラシルの種のエフェクトが出るようにする為に01c8を使ってみましたが駄目でした。client_packet.txtのデータでは何も起こらないので何方が本鯖でイグドラシルの実やイグドラシルの種を使った時のパケットを提供してくれませんか?S 00a7の後00a8が来るのかそれとも01c8が来るのかの確認と00a8の後に01c8が来るのかの確認ができれば何とかなると思いますが... +それと01c9の後に来る?.81bがわかればアイスウォールを摺り抜る問題も解決できると思いますが... +情報提供をお願いします。 + +-------------- +//0511 by Diex + +・指弾の攻撃回数修正。 +・阿修羅覇鳳拳、発勁が修練を無視し、無属性になるように修正。 +・金剛使用時、MDEFが正しく表示されてなかったバグを修正。 +・気功の消費SPを修正。 + pc.c + pc_calcstatus() 修正。 + battle.c + battle_calc_weapon_attack() 修正。 + skill.c + skill_check_condition() 修正。 + + skill_db.txt 修正。 + +-------------- +//0510 by Diex + +・三段掌の表示バグ修正 +・指弾が気弾が無くても撃てるバグを修正 + map.h + struct map_session_dataにspiritball_old変数追加。 + skill.c + skill_check_condition() 修正。 + clif.c + clif_skill_damage3() 修正。 + battle.c + battle_weapon_attack()、battle_calc_weapon_attack 修正。 + +-------------- +//0509 by + +・npc_warp.txt + プロ城→プロフィールドになっていたのを、 + プロ城→ヴァルキリーレルムに修正。 + プロフィールド→プロ城になっていたのをプロフィールド→ヴァルキリーレルムに修正 + +-------------- +//0508 by 死神 + +・バグ修正と息吹、気功、気奪の修正がメインです。(今度からは他の人にも気がちゃんと見えます。) +・死んだキャラに経験値が入る問題修正。(テストはしてません。どうなのか報告をお願いします。) + pc.h + pc_addspiritball()、pc_delspiritball() 追加。 + pc_is50overweight() 修正。 + pc.c + pc_gainexp() 修正。 + pc_insert_card()、pc_item_identify() 修正。(大した修正じゃありませんが...) + pc_authok() 修正。 + pc_addspiritball()、pc_delspiritball() 追加。 + pc_spiritball_timer() 追加。 + do_init_pc()、pc_calcstatus()修正。 + pc_spirit_heal() 追加。 + pc_natural_heal()に関わる物の修正。 + map.h + struct map_session_data 修正。 + map.c + map_quit() 修正。 + map_addflooritem() 修正。 + clif.h + clif_spiritball_int()をclif_spiritball()に変更。 + clif_spiritball_ext() 削除。 + clif.c + clif_spiritball_int() をclif_spiritball()に変えて修正。 + clif_spiritball_ext() 削除。 + clif_set01e1() 追加。 + clif_getareachar_pc() 修正。 + skill.h + SC_CALLSPIRITS 削除。 + skill.c + SC_CALLSPIRITS 削除。 + skill_castend_nodamage_id()、skill_check_condition() 修正。 + skill_status_change_start() 修正。 +・床に落ちたアイテムが消えるまでの時間を設定できるように変更。 + battle.h、battle.c + battle_config_read() 修正。 + conf_ref.txt 修正。 + battle_athena.conf 修正。 + +-------------- +//0507 by Diex +0505の修正 +・三段掌のエフェクト実装 + +-------------- +//0506 by hoenny +全体的に少し式修正 +セイジのスキルがアイテムを消耗するように修正 +(スキルのDBに zeny, spiritball, item, equipを入れたいが時間がなくて臨時的に ...) + +-------------- +//0505 by Diex + +・阿修羅覇鳳拳のダメージ修正 +・猛龍拳のダメージ修正 +・指弾実装 +・発勁実装 +・金剛が減算DEFと減算MDEFが90に固定されていたのを乗算DEFと乗算MDEFが90になるように修正 +・三段掌実装(ただしコンボは未実装) + map/clif.c + map/clif.h + clif_skill_damage3()追加 + map/pc.c + map/skill.c + map/battle.c + 修正・及び追加 +(計算式は+ Acolyte Maniax +を参考にしました。) + +-------------- +//0504 by 死神 + +・atcommand.c 修正。(たった2文字を追加しただけです。) +atcommnad_gm_onlyがnoじゃなくても使用レベル設定を0にしたコマンドはGMじゃないキャラでも使えます。テストはしてません。 + +-------------- +//0503 by nabe + +・精錬修正とLinux用にちょっと変更など + conf/map_athena.conf + npc_event_doll.txt, + npc_turtle.txt, + //npc_pota.txt項目追加 + conf/npc_pota.txt追加(socieさん作のダンジョンポタ子さん) + conf/npc_shop.txt + イズルード武器商人の価格修正 + conf/script_athena.conf + 0499での文字化け?修正 + login/login.c + #include 追加 + map/script.c + buildin_getequipname() + 精錬メニューのmallocを修正 + buildin_getequipisenableref() + 精錬可能条件修正(Athefansさんの条件文にしてみました) + map/skill.c + skill_check_condition()変数宣言位置の変更のみ + +-------------- +//0502 by 死神 + +・カプラの倉庫もbattle_athena.confのbasic_skill_checkによって基本スキルが足りなくても使用することができるように修正しました。(プロンテラ中央のカプラのみ確認。) +・クェストスキルの取得は0492のせいです。0481にskillの最後が,2じゃなく,0だと書いたのですが何故か0492で,2になっていたので,0に修正しました。 +・スクリプトgetbaseskillcheckをbaseskillcheckに変更と自分で修正しましたが命令の後になんの数値も入らない場合はスクリプトが正しく作動しなかったので使用する場合はbaseskillcheck(0)にして使わないと正しい結果を得ることができません。 +(詳しくはnpc_town_kafra.txt参照。) + npc_event_skillget.txt 修正。 + npc_town_kafra.txt 修正。 + script.c 修正。 +・GM_account.txtに自分がテストの為に使っていた500000が入っていたので削除しました。(GM_account.txt作った理由は自分勝手にアカウントをGMにすることができるようにする為です。つまりGMとして表示されなくてもGMとして色んな権限を使うことができます。さすがにGM専用の右クリックコマンドは使えませんが... でもこれを活用している方はいないみたいなんですね...) + +-------------- +//0501 by hoenny + +・500の問題点修正 +-HP回復力向上,SP回復力向上 + map/pc.c + pc_natural_heal_hp()修正 + pc_natural_heal_sp()修正 + +500SP回復力向上 +-------------- +//0500 by hoenny + +・修道僧の息吹実装 +-基本的に座った時 10秒ごとに回復します. +-所持量が 50%をオーバーした場合 20秒ごとに回復します. +・修道僧の気奪実装 +-他の修道僧の氣球も吸収が可能です. +・修道僧の金剛実装 +-金剛状態ではすべてのアクティブスキルを使うことができないです. + db/skill_db.txt + 気奪修正 + 金剛修正 + map/pc.h + pc_is50overweight()追加 + pc_is90overweight()追加 + map/pc.c + pc_calcstatus()修正 + pc_spheal()修正 + pc_hpheal()修正 + pc_natural_heal_hp()修正 + pc_natural_heal_sp()修正 + pc_natural_heal_sub()修正 + map/skill.c + skill_check_condition()修正 + skill_castend_nodamage_id()修正 + skill_status_change_start()修正 + +-------------- +//0499 by 死神 + +・サーバーsnapshotとバグ修正。 +・スティールコインのゼニ量をモンスターレベル*10 + rand(100)に変更。 +・キャスティングタイムがないスキルはタイマーを使わないように変更。 +・カードの使用によるマップ鯖ダウンを防ぐ為に修正。(今度こそ治ったはず...) そして拡大鏡も同じようなことができるので修正。(これは鯖ダウンまでは起こさないようですが...) +・キャラにマップのロードが終わるまでペットのデータが来ないとマップ鯖が落ちる問題修正。(滅多なことがない限り起こらないですけどね。) +・オートバーサーク、重さのアイコンとチェックが正しく適用されるように修正。 +・増速ポーションの適用順番変更。今まではスピードアップポーションが最優先で次がハイスピードポーション、最後がバーサークポーションだったのですが順番を逆に変更しました。 +・アイテムで使うスキルはキャスティングタイムとディレイが0になるように変更。 +・アイテムで使うスキルのレベルがitem_dbに設定しているレベルより高くなるバグ修正。 + pc.h + pc_move()をpc_movepos()に変更。 + pc.c + pc_steal_coin()、pc_insert_card()、pc_item_identify()、pc_authok()、 + pc_calcstatus()、pc_checkweighticon()、pc_damage() 修正。 + skill.c + skill_castend_pos2()、skill_check_condition()、skill_use_id()、 + skill_use_pos() 修正。 + pet.c + pet_recv_petdata()、pet_change_name() 修正。 + map.h + struct map_session_dataにskillitemlv 追加。 + script.c + buildin_itemskill() 修正。 + clif.c + clif_parse_UseSkillToId()、clif_parse_UseSkillToPos()、 + clif_parse_LoadEndAck() 修正。 + mob.c + mobskill_use_id()、mobskill_use_pos() 修正。 + +-------------- +//0498 by hoenny + +.氣球がすっかり見えるように修正(消耗スキル使用の時消耗するように修正) +.スキル残影を使用の時氣球を消耗するように修正 + doc/client_packet.txt + 0x1d0追加 + map/map.h + sdのstructureに spiritball追加 + map/clif.h + clif_spiritball_del() -> clif_spiritball_int()修正 + clif_spiritball_cre() -> clif_spiritball_ext()修正 + map/clif.c + packet_len_table[]修正 + clif_spiritball_del() -> clif_spiritball_int()修正 + clif_spiritball_cre() -> clif_spiritball_ext()修正 + map/pc.h + pc_item_steal() -> pc_steal_item()修正 + pc_coin_steal() -> pc_steal_coin()修正 + map/pc.c + pc_item_steal() -> pc_steal_item()修正 + pc_coin_steal() -> pc_steal_coin()修正 + pc_calcstatus()修正 + map/skill.c + skill_check_conditon()修正 + +-------------- +//0497 by 死神 + +・0491のスキル残影のバグ修正とスティールとスティールコイン、スナッチャーの修正、mob_targetのバグ修正。 +・交換、座り、パーティ結成等の時に基本スキルをチェックするように修正。(battle_athena.confでチェックするかどうかを決めることができます。) +ただカプラの倉庫はスクリプトで制限をかけるしかありません。 +・スクリプトgetbasicskillcheck追加。 + 使用方法> getbasicskillcheck + 戻り値はbattle_athena.confのbasic_skill_checkです。0の場合は基本スキルのチェックなしで1の場合は基本スキルをチェックするのを意味します。 + skill.c + skill_castend_pos2() 修正。 + skill_additional_effect() 修正。 + pc.c + pc_move() 追加。 + pc_item_steal()、pc_coin_steal() 修正。 + pc.h + pc_move() 追加。 + map.h + struct mob_data 修正。 + mob.c + mob_spawn() 修正。 + mob_target() 修正。 + clif.c + clif_pcinsight()、clif_pcoutsight() 修正。 + clif_parse_ActionRequest()、clif_parse_Emotion()、 + clif_parse_TradeRequest()、clif_parse_CreateParty()、 + clif_parse_ReplyPartyInvite() 修正。 + battle_athena.conf 修正。 + conf_ref.txt 修正。 + skill_db.txt + スティールの射程を3から1に修正。 + battle.h、battle.c + battle_configにbasic_skill_check 追加。 + battle_config_read() 修正。 + trade.c + trade_traderequest() 修正。 + script.c + buildin_getbasicskillcheck() 追加。 + map/makefile 修正。 +※スティールとスティールコインの計算式は適当に作った物です。本鯖の方がどうなのか全然わからないので... + + スティール率 = (モンスターのアイテムdrop率 * (キャラレベル*0.5 + dex*0.4 +スキルレベル*5))% + スティールコイン率 = (スキルレベル + (キャラレベル - モンスターのレベル)*0.3 + dex*0.2 + luk*0.2)% + スナッチャー発動率 = (5.5 + スキルレベル*1.5 +スティールのスキルレベル)% + +本鯖の計算式がわかる方は情報提供をお願いします。 +スティールコインのゼニの量はモンスターのレベル*100になっています。これについても情報提供をお願いします。 +※残影の場合使った後普通に歩く前にはペットの装備が見えないバグがありますが原因がわからないので放置することにしました。 +※基本スキルが足りない時出るメッセージは殆ど合わせていますがパーティに入る時に基本レベルが足りない時に合う物がなかったのでパーティを作れない(基本スキルレベル7の物)と表示して勧誘した方には拒絶されたと表示されます。 + +-------------- +//0496 by hoenny + +.WZのメテオストーム実装 +.スティールコイン修正 + db/skill_db.txt + メテオストーム修正 + map/pc.c + pc_coin_steal()修正 + map/skill.c + skill_castend_pos2()修正 + +-------------- +//495 by nini + +・ARが片手斧、両手斧でしか発動しなかったところ修正→片手斧、両手斧、鈍器 + map/skill.c + skill_check_condition() 修正 + +前回修正のとき鈍器入れ忘れてたようです。 + +-------------- +//0494 by 獅子o^.^o + +conf/mpc_warp.txt +.ハンタ一転職地出ていない修正 + +-------------- +//0493 by 波浪 + +・script修正 + npc_town_comodo.txt コモド案内要員部分を削除(npc_town_guide.txtと重複していたので) + npc_town_guide.txt ジュノー案内要員を追加(viewpointの色が…) + npc_town_kafra.txt ジュノーカプラ部分をnpc_town_yuno.txtから移動 + npc_town_refine.txt ジュノー精錬所部分をnpc_town_yuno.txtから移動 + npc_town_yuno.txt 案内要員とカプラと精錬所部分を削除 + npc_turtle.txt 会話を微修正 + +-------------- +//0492 by Kalen + +・script修正+追加 + + conf/npc_event_doll.txt (新規) + conf/npc_turtle.txt (新規)亀島関連NPC+亀島クエスト(航海日誌)追加 + + conf/npc_event_skillget.txt (修正)応急処置の不具合+へんなtab削除etc.. + conf/npc_town_alberta.txt (修正)Turtle分離、ちびっ子削除(Event_dollへ移動) + conf/npc_town_guide.txt (修正)台詞がかなり変更されていたので、修正 + + +-------------- +//0491 by 死神 + +・スキル残影(韓国クライアントでは弓身彈影)実装。(ただ気弾のチェックはしてません。) + pc.h + pc.c + pc_can_reach() 追加。 + skill.c + skill_check_condition()、skill_castend_pos2() 修正。 + skill_db.txt + 残影修正。 +・script.c + set_posword() 修正。 +※一人でテストは済んでいますが他の人に正しく見えるかどうかは未確認です。 +変なのかどうか報告をお願いします。 + +-------------- +//0490 by nabe + +・場所スキルエフェクトでマップ鯖が落ちることがあったのを修正。 + clif.c + clif_skill_poseffect()の + unsigned char buf[16];を、unsigned char buf[32];に修正。 + +-------------- +//0489 by 死神 + +・0483のバグ修正。battle_athena.confのquest_skill_learnが正しく適用されるように変更と問題があった部分の修正。(テスト済み) + pc.c + pc_calc_skilltree()、pc_skill() 修正。 + atcommand.c + @lostskill 少し修正。 +・カードの使用によるマップ鯖ダウンを防ぐために少し修正。(ただカードの使用によるマップ鯖ダウンを再現できなかったので本当に治ったかどうかは不明...汗) + pc.c + pc_insert_card() 修正。 +・pc.h + pc_ishiding() 修正。 + +-------------- +//0488 by hoenny + +・RGのスティールコイン実装 +・スティール修正 +(二スキル皆一度スチールした場合またスチールすることができない.そしてスキル成功の時モンスターは攻撃するように修正した.エフェクトは成功の時だけ出るように修正した.) + db/skill_db.txt + スティールコイン修正 + map/pc.h + pc_coin_steal()追加 + map/pc.c + pc_coin_steal()追加 + pc_item_steal()修正 + map/skill.c + skill_castend_nodamage_id()修正 + +-------------- +//0487 by hoenny + +・485の問題点ちょっと修正 + map/pc.c + pc_item_steal()修正 + map/skill.c + skill_castend_nodamage_id()修正 + +-------------- +//0486 by 獅子o^.^o + +db/class_equip_db.txt修正 +裂けた大地の書、燃える太陽の書、乾いてる風の書、默示録、プリーストは装備することができない問題修正 + +-------------- +//0485 by hoenny + +・ RGのスナッチャー実装 +・ スティール修正 +・ 露店開設の時 skill_check_conditionで状態をチェクするように修正 + map/pc.h + pc_ishiding()追加 + pc_item_steal()追加 + map/pc.c + pc_item_steal()追加 + map/skill.c + skill_castend_nodamage_id()修正 + skill_additional_effect()修正 + skill_check_condition()修正 + +-------------- +//0484 by 胡蝶蘭 + +・覚えてないクエストスキルにスキルポイントを振れる問題修正 + pc.c + pc_calc_skilltree()でクエストスキルのチェック追加 + skill.c + skill_readdb()でinf2を読むように修正 + +・ペコペコ騎乗、ファルコンのアイコンがログイン直後には表示されない問題修正 + clif.c + clif_parse_LoadEndAck()修正 + +-------------- +//0483 by 死神 + +・0482の適用。 + npc_event_skillget.txt 修正。 + script.c 修正。 + skill.c 修正。 + pc.c 修正。 + +-------------- +//0482 by 胡蝶蘭 + +・クエストスキルのスクリプト少し修正 +・スクリプトgetskilllvを呼ぶとマップサーバーが落ちるバグ修正 + (conf/) + npc_event_skillget.txt + 出来るだけ変数を使わないように修正(未テスト) + (map/) + script.c + buildin_getskilllv()修正 + +・スティールで失敗時のエフェクト変更 +・同じMOBには1回しかスティールできないように修正 + (map/) + skill.c + skill_castend_nodamage_id()修正 + map.h + struct mob_dataにsteal_countメンバ追加 + mob.c + mob_spawn()修正、steal_countを0に初期化するように + +・イドゥンの林檎でHPが32767を超えるとサーバーが落ちるバグ修正(未テスト) + (map/) + pc.c + pc_calcstatus()修正 + +-------------- +//0481 by 死神 + +・これの適用には気をつけてください。0478の胡蝶蘭さんの物を Athena.txtのデータ形式変更せずにクェストスキルを覚えるように作った物です。自分が作ってる最中に胡蝶蘭さんが同じ物をアップしてくれたのですがデータは変えない方がいいと思って自分の物もアップしました。注意することは0478のathena.txtは使えないと言うことです。0478前の物を使ってください。 +・skill_db.txtにinf2を追加してこれを使ってクェストスキルかどうかを判断する仕組みです。 + skill.h 修正。 + skill.c + skill_readdb()修正と少し修正。 + skill_get_inf2() 追加。 + skill_db.txt 修正。 + skill_tree.txt 修正。(0478前の物) + clif.c + clif_skillinfoblock() 修正。 + char.c 修正。(0478前の物) +・battle_athena.confにquest_skill_learn追加。 + battle.h 修正。 + battle.c + battle_config_read() 修正。 + battle_athena.conf 修正。 +・/resetskillをbattle_athena.confにquest_skill_learnの設定に合わせてquest_skill_learnがyesの場合はスキルポイントに加算してquest_skill_learnがnoならリセットはされるがスキルポイントに加算されません。 + pc.c + pc_skill()、pc_resetskill() 修正と少し修正。 + pc.h 修正。 + atcommand.c 修正。 + atcommnad_athena.conf 修正。 +・スクリプトのskillコマンドでクエストスキルを覚えられるのは同じですが最後のフラグが2から0に変わってますので注意してください。 + npc_test_skill.txt 修正。 + npc_event_skillget.txt 修正。 + conf_ref.txt 修正。 + client_packet.txt 修正。 + +-------------- +//0480 by Kalen + +・Eventskill追加 + conf/npc_event_skillget.txt + +・map_athena.conf変更 + warp.txtの読み込み優先度を変更 + prt_castle等、旧EPのワープと異なる場所に変更された場合 + 先に読み込んだ方が優先されるので、EPの高い順のがよろしいかと + conf/map_athena.conf + +-------------- +//0478 by 胡蝶蘭 + +*** + Athena.txtのデータ形式変更!! (自動的に変換されます) + バックアップを忘れずに! + Data format of athena.txt is changed!! (convert automatically) + DONT FORGET BACKUP!! +*** + +・クエストスキル実装 +・スクリプトでスキルレベルをチェックできるように + ・スクリプトのskillコマンドでクエストスキルを覚えられます。 + 使用方法> skill スキルID,スキルLV[,フラグ] + フラグは省略可能で、省略すると1を指定したことになります。 + 1で装備品による一時的な習得、2でクエストによる恒久的な習得です。 + 恒久的な習得の場合、skill_tree.txtに依存します + ・getskilllvコマンド追加 + 使用方法> getskilllv(スキルID) 戻り値はレベルです。0で未習得。 + + (conf/) + npc_test_skill.txt + サンプル + (db/) + skill_tree.txt + クエストスキルとして必要スキルIDに-1を設定。 + (char/) + char.c + フラグもathena.txtに保存するように。 + 以前の形式のデータも読み込めます。 + (map/) + pc.c/pc.h + pc_skill(),pc_calc_skilltree()など修正 + script.c + buildin_skill(),buildin_getskillid()など修正 + +・@questskill,@lostskill追加 + ・@questskill スキルID でクエストスキルを覚えます。(クエストスキルのみ) + ・@lostskill スキルID でスキルを忘れます。(クエストスキル以外もOK) + + atcommand.c/atcommand.h + struct Atcommand_Configにlostskill,questskillメンバ追加 + @questskill,@lostskill処理追加 + +-------------- +//0477 by nabe + +・一部変数の宣言位置の変更のみ(Linux等でコンパイルしやすいように)。 + atcommand.c,battle.c,clif.c,mob.c,npc.c,skill.c + +-------------- +//0476 by nabe + +・conf/ ちょっと整理 + conf/map_athena.conf修正。 + tortoise.txtをnpc_town_alberta.txt中に移動。 + npc_script2.txtのコモドガイドをnpc_town_comodo.txt中に移動。 + +・npcがキャラ名を喋るときのバグ修正 + map/script.c + buildin_strcharinfo()でキャラ名用のメモリを + staticに確保してしまっていたのを、mallocに修正。 + +-------------- +//0475 by hoenny + +泥棒のスティール実装。 +ギルド生成の時エンペリウム消耗するように修正。 + map/guild.c + guild_create()修正。 + guild_created()修正。 + map/skill.c + skill_castend_nodamage_id()修正。 + +-------------- +//0474 by 死神 + +・0471の精練の時表示される文字の設定をmap_athena.confからscript_athena.confに変更。 + script.c + do_init_script() 修正と少し修正。 + script.h 修正。 + script_athena.conf 追加。 + map_athena.conf 修正。 + map.c + map_config_read() 修正。 +・古い巻物、プレゼントボックス実装と少し仕様変更。 +ランダムでアイテムを得る物にデフォルトで出るアイテムを設定できるように変更。今の仕様では1000回までアイテムが選択されなかったらデフォルトアイテムが出るようになっています。デフォルトアイテムが0の場合はアイテムを得られません。 +設定する確率を*1000から*10000に変更。ただitem_~.txtの修正はやっていません。誰かやってください。(他力本願) + itemdb.c + temdb_read_randomitem() 修正。 + itemdb_searchrandomid() 修正。 + item_purplebox.txt から item_violetbox.txt に修正。 + item_giftbox.txt、item_scroll.txt 追加。(moveさんありがとう。) + item_db.txt + 古い巻物、プレゼントボックス 修正。 +・trade.c + trade_tradecommit() 修正。pc_delitem()を使うように変更。 +※テストはやっていませんので問題があったら報告してください。 + +-------------- +//0473 by Kuro + +・class_equip_dbを一部修正 + db/class_equip_db.txt + +-------------- +//0471 by hoenny + +製錬の時出る文を変えることができるようにしました.(map_athena.confで調節可能) +気功の数字が市廛の時実際水路表示図緑修正 + conf/map_athena.conf + refine_posword:追加。 + map/map.c + map_config_read()修正。 + map/script.h + do_set_posword()追加。 + map/script.c + do_set_posword()追加。 + buildin_getequipname()修正。 + map/skill.c + skill_status_change_start()修正。 + +-------------- +//0470 by 死神 + +・製造の時属性石が二度減る問題修正。(実は二度減るように見えるだけでマップを移動すると正しく表示されますが...) + pc.h、pc.c + pc_delitem() 修正。 + npc.c、script.c、storage.c、pet.c + pc_delitem()を全て修正。 + skill.c + skill_produce_mix() 修正。 + +-------------- +//469 by 波浪 + +・npc_mob_job.txt、npc_monster.txt、npc_monster30.txt、mob_db.txtのモンス名を修正 +・item_db.txtの回復アイテムの回復量をジュノー後のものに修正 + +-------------- +//468 by Kuro + +・魔剣製作クエスト追加 + conf/npc_event_ma_sword.txt + +-------------- +//467 by nini + +・BBが両手剣でしか発動しなかったところ修正→すべての武器で +・ARが両手斧でしか発動しなかったところ修正→片手斧、両手斧、鈍器 +・スピアクイッケン発動を槍だけに +・キャストキャンセルされないものにグランドクロス、ローグのストリップシリーズ追加 +・ブリッツビートがキャストキャンセルされなくなってた点修正 + map/skill.c + skill_use_id() 修正 + skill_check_condition() 修正 +・2-2職スキルのキャスト・ディレイ追加 + db/cast_db.txt + + +-------------- +//466 by hoenny + +・阿修羅覇鳳拳修正(公式修正及び sp消耗がすぐ見えるように) +・蓄気の時気弾が見えるように修正(Mr.NO NAME様のパケ情報ありがとうございます.気弾が消えるパケ情報が不足です.) +・パリの羽やテレポート1を連続使用の時,鯖オーバーが発生しないように仮初めで修正 + doc/client_packet.txt + 0x1e1パケ情報追加 + map/battle.c + battle_calc_weapon_attack()修正 + map/clif.h + clif_spiritball_cre()追加 + clif_spiritball_del()追加 + map/clif.c + packet_len_table[]修正 + clif_spiritball_cre()追加 + clif_spiritball_del()追加 + clif_changemap()修正 + map/skill.c + skill_castend_nodamage_id()修正 + skill_check_condition()修正 + +-------------- +//0465 by 死神 + +・リザレクションとハイディング、ブリッツビートのバグ修正。(ブリッツビートは報告はなかったのですが分析したら問題があったので修正。) + skill.c + skill_use_id() 修正。 + skill_castend_nodamage_id() 修正。 +・0455のNPCを元に戻しました。 + npc_event_ice.txt 修正。 + npc_event_potion.txt 修正。 + npc_town_geffen.txt 修正。(454の物に戻しました。) +・0451のαマップをコマントアウトしました。必要な方はコマントアウトをなくして使ってください。 + map_athena.conf 修正。 +・リザレクションは0442の問題でハイディング、ブリッツビートは0445の問題でした。それと0445の修正でスキル番号をenumで宣言した文字に変えていますがそれに落としがあるようです。(ハイディング、ブリッツビートはそのせいでした。)前の番号ソースと比べて問題がある部分は修正する必要があります。ちょっと面倒ですが... + +-------------- +//464 by 波浪 + +・モンクスキルの部分について修正(未実装スレに書かれていたものを追加しただけです。 + skill.c + skill_use_id()修正 + cast_db.txt + モンクスキル追加 + +-------------- +//463 by 胡蝶蘭 + +・462のバグ修正 + ・NPCのSHOPの不都合修正 + ・READMEの間違い修正(warpwaitingpcがwarpwaitingroomになっていた) + + map.h + struct npc_dataのchat_idの位置を修正 + +-------------- +//462 by 胡蝶蘭 + +・NPCチャット作成 + ・waitingroom命令でNPCチャットを作成します。 + 引数は waitingroom "チャット名",制限人数,イベント名 です。 + イベント名は人数が最大になったときに起こすイベント名で、省略可能。 + ・warpwaitingpc命令で、チャット内にいるPC全員をワープできます。 + 引数はwarpと同じで、warpwaitingpc "マップ名",x,y です。 + + map.h + struct npc_dataとchat_dataを修正 + script.c + buildin_waitingroom(),buildin_warpwaitingpc()追加 + chat.c/chat.h + 色々修正 + clif.c + clif_getareachar_npc()、clif_joinchatok()など修正 + +・NPCのOnInitイベントをサーバー起動時に呼ぶように。 +・エクスポートするときのNPC名と表示上のNPC名を別々に設定可能に。 + ・同じNPC名のイベントは重複できないため、エクスポート用NPC名を使い、 + 同じNPC名でも別のNPCとして識別できるようにしなければなりません。 + (もちろん、イベント処理を行わない場合はその必要はありません。) + ・npc_*.txtのscript命令でNPCの名前を設定するとき、 + 「表示名::エクスポート名」とすると、表示する名前と、イベント用に + エクスポートする名前を別々に指定できます。 + 表示名が全く同じ別々のNPCでイベントを動作させるときに使用します。 + ・ややこしいのでPVPのnpcスクリプトを見てイメージを掴んでください。 + + npc.c/npc.h + npc_parse_*()の修正 + npc_event_do_oninit(),npc_event_do_oninit_sub()など追加 + map.c/map.h + do_init()でnpc_event_do_oninit()を呼ぶように + struct npc_data修正 + +・スクリプトgetmapusers、getareausersの致命的なバグ修正 + ・該当マップが存在しない場合、マップサーバーが落ちるのを修正。 + ・マップが存在しないと、-1を返すようにした。 + + script.c + buildin_getmapusers(),buildin_getareausers()修正 + +・pvpのスクリプト修正 + ・チャットルームを作るようにした + + (conf/) + npc_pvproom.txt + 全てのNPCのエクスポート名(pvp??r)設定 + OnInit:でwaitingroomを実行するように + +-------------- +//461 by Kuro +・アコライト転職クエスト一部修正 + conf/npc_job_aco.txt + +-------------- +//460 by sagitarius +・item_dbの間違い修正 + 4032,Ambernite_Card,アンバーナイトカード,6,20,,10,,2,,,,,32,,,,{},{},,修正 + +-------------- +//459 by hoenny +・アドレナリンラッシュ使用の時斧チェック(自分だけ) +・Old_Blue_Boxの確率が高いという報告によって修正 +・Script.cは0455以前ことで引換(NPCをここに合わせて修正してください) +・阿修羅覇鳳拳修正(公式を修正したんですが, 正確かはよく分からないですね.) +・修道僧の蓄気,爆期の仮実装.(阿修羅覇鳳拳使用の時蓄気,爆期状態をチェックします. ) +・ペコペコに乗った後に、ADPDが間違ったこと修正(バグを直してあげたが, 直す前ことに変わるせいでまた修正) +その外にも修正をしたようなのに覚えないですね.そして誤った部分があれば指摘してください. + conf/npc_event_ice.txt + checkweight修正 + conf/npc_town_geffen.txt + checkweight修正 + db/item_purplebox.txt + Old_Blue_Box修正 + map/battle.c + battle_calc_weapon_attack()修正 + map/pc.c + pc_spheal()修正 + pc_calcstatus()修正 + map/script.c + buildin_checkweight()修正 + map/skill.h + SC_ EXPLOSIONSPIRITS追加 + map/skill.c + SkillStatusChangeTable[]修正 + skill_castend_nodamage_id()修正 + skill_check_condition()修正 + +-------------- +//458 by Kuro +・アコライト転職クエスト追加 + conf/npc_job_aco.txt + 会話文が分からなかったので適当にしてあります。また、NPCの外見の変え方が分からなかったので適当にしてあります。 + 分かる方は修正しておいて下さい。 + +-------------- +//0457 by Kalen + +・PVP関連のNPC追加 + conf/npc_pvp.txt + conf/npc_pvproom.txt + +-------------- +//0456 by 死神 + +・モンスターの最初攻撃時間が長すぎる問題修正。 +モンスターの最初攻撃時間を今まではmob_dbのaDelayを使っていましたがこれをaMotionに変更しました。今まではmob_dbのaMotionはゴミでしたが今度からはゴミではありません。aMotionさえ正しければモンスターの攻撃のモーションの前にダメージが出てくる問題もなくなるはずです。 + mob.c + mob_changestate() 修正。 +・アイテムを入手できない時その理由に当たるメッセージが出るように変更。 + pc.c + pc_additem() 修正。 +・job_db1.txtので問題になった.を,に修正。 + +-------------- +//455 by Mr.NO NAME +・NPCとのアイテム交換や買い物関係のScriptが出来上がった当初の + NPCデータ(npc_event_making.txt、npc_town_geffen.txt等)に乗っ取り、以下を修正。 + conf/npc_event_ice.txt + npc_event_potion.txt + npc_town_geffen.txt(454以前の物に戻しました。) + map/script.c + buildin_checkweight()を修正。 + +-------------- +//454 by Kuro +・ゲッフェン鍛冶屋で買い物が出来るように修正 + conf/npc_town_geffen.txt + +-------------- +//0451 by code +・ 今更ですがαクライアントに対応(αクライアントのdata.grfをadata.grfとしてgrf-files.txtのadataのところに書いてください) + common/grfio.c + grfio_setadatafile()追加 + /grfio.h + grfio_setadatafile()追加 + conf/map_athena.conf + αクライアントのマップを読み込むように変更 + /npc_warp_a.txt + αマップのワープポイントの設定(ちょっとずれてるかも) + /grf-files.txt + αクライアントのdata.grfをadata.grfとして読み込むように設定 + adata: に記述 +※αクライアントは + ttp://www.castledragmire.com/ragnarok/ + あたりから入手してください。 + +-------------- +//0450 by hoenny +・ 騎兵修練実装 +・ コムパルションディスカウント実装 +・ ディスカウント・オーバーチャージ修正(数が高い場合計算法が間違ったことを直しました.) +・ 鉄拳修正(素手な時も適用されるように) +・ 斧修練修正(片手斧な時も適用されるように) +・ ボンゴンが攻撃するように修正 + map/pc.c + pc_calcstatus()修正 + pc_modifybuyvalue()修正 + pc_modifysellvalue()修正 + map/battle.c + battle_addmastery()修正 + db/mob_db.txt + ボンゴン修正 + +-------------- +//0449 by 死神 + +・変になった所修正。 + const.txt + bAtkとbDef 追加。 + battle.c + battle_calc_weapon_attack()を元に戻しました。(0445の物) + map.h + map_session_dataを元に戻しました。(0445の物) + pc.c + pc_calcstatus() 修正。 + pc_bonus() 修正。 + item_db.txtを元に戻しました。(0446の物) + +-------------- +//0448 by hoenny +・増速修正(pc_walk()から pc_calcstatus()に移動) +・最大所持量修正 + map/pc.c + pc_calcstatus()修正。 + +-------------- +//0447 by ゆう +・二刀流・矢の属性を正しく適応 +・ATKの上がるカードの効果を武器サイズ修正なしの底上げに変更 +・ATK・DEFの上がるカードの効果の適応の仕方を変更 + +map.h + map_session_dataにcatk(カードATK)を追加 + +pc.c + pc_calcstatus() + アサシンの二刀流の攻撃速度を修正した + スクリプトによる属性を左右正しく適応するようにした + 矢の属性を正しく適応するようにした(弓の属性優先) + ただし、矢がすべての攻撃に適応されます + カードATKの処理を追加した + +battle.c + battle_calc_weapon_attack() + カートATKを底上げダメージとして計算するようにした + +item_db.txt + カードの bonus bAtk、bDef を削除 + かわりに、装備と同様にATKとDEFを設定 + (変更前をitem_db2.txtとしているので、不具合があれば戻してください) + + +-------------- +//0446 by hoenny +・ミストレスカード実装。 +・スキル使用の時ジェムストーン消費。 +・スキル使用の時装備チェック。(ハンマーフォールだけ修正しようとしたが...) +・ハンマーフォールの範囲を 半径5セル(全25セル)ロ修正 + map/skill.c + skill_check_condition()修正。 + skill_castend_pos2()修正。 + +・ミストレスカード修正。 + db/item_db.txt + +-------------- +//0445 by Aya + +・基本ASPDと計算処理を修正。 + db/job_db1.txt + map/pc.c +・SP係数と計算処理を修正。 + db/job_db1.txt + map/pc.c +・スキル名をenumで宣言し、それを使うように変更。 + map/skill.h + map/battle.c + map/pc.c + map/skill.c +・リカバリーのスキルIDがスローポイズンになっていたのを修正。 + map/skill.c +・集中力向上にカード効果が適用されていた問題の修正。 + map/pc.c +・リムーブトラップ、スプリングトラップ、ポイズンリアクトのターゲットを修正。 + db/skill_db.txt +・GMアカウントをjROのclientinfo.xmlから追加。 + conf/GM_account.txt +・warning修正。 + map/party.c +・キャラセレ認証時にlogin_id2はチェックしないように変更。 + login/login.c +・object_def.bat以外全ファイルの改行コードをLFに変更。 +・*.cnfファイルを*.confファイルに名前変更。 + +-------------- +//0444 by 死神 + +・GMコマンドや@コマンドにコマンド別に使用レベルを設定できるように変更と@コマンド少し修正。(@whereと@day、@nightの修正と他のキャラに使うコマンドの場合GMレベルが自分以上の場合使えないように修正。) + atcommand.h 修正。 + atcommand.c 修正。 + clif.c 修正。 + map/makefile 修正。 + map.c + do_init() 修正。 + conf/atcommand_athena.cnf 追加。 +・細かい修正。 + pc.c + pc_setghosttimer()、pc_skill() 修正。 + script.c + buildin_skill() 修正。 +・conf_ref.txt 修正。 +・item_db.txt + 彼女の想い修正。 + +-------------- +//0442 by 胡蝶蘭 + +・増速ポーション実装 + ・Lvや職業判定は行いません + + (db/) + const.txt + SC_SpeedPot0,SC_SpeedPot1,SC_SpeedPot2追加 + item_db.txt + 増速ポーションのスクリプト追加 + (map/) + skill.c + skill_status_change_start()修正 + pc.c + pc_calcstatus()修正 + +・PvPシステムの仮実装 + ・pvpマップでは自動的に、PCのpvpフラグon、順位通知などを行います。 + ・マップにpvpフラグをつけるサンプルをnpc_pvp.txtとして添付しています。 + ・pvpの詳しいルールがよくわからなかったので、次のようにしています。 + ・最初の持ち点は5点、倒すと1点、倒されると-5点。 + ・0点以下のPCはリザレクションが掛からない + ・GMはpvpマップにいても足元にサークルが出現しないようです。 + (クライアントの仕様?) + ・pvpマップで@pvpoff/@pvpすると休憩したり、休憩をやめたりできますが、 + 使用するべきではありません。 + + (conf/) + npc_pvp.txt + pvpフラグを入れるサンプル。 + nosaveフラグや受け付けnpcなどを追加するとよいと思われる。 + (map/) + clif.c + clif_parse_LoadEndAck()修正 + npc.c + npc_parse_mapflag()修正 + skill.c + skill_castend_nodamage_id()修正 + pc.c + pc_damage()引数修正 + atcommand.c + pc_damage()引数修正に伴う修正 + battle.c + +・その他修正 + ・@pvpoff/@pvpで順位やサークルの表示をやめた + ・@jumptoでスペースの入ったキャラクターも指定できるように + ・@kamibコマンド復活(青文字天の声) + ・非PVPのときに、対象が敵のスキル使用時、敵味方判定を行うように + + skill.c + skill_castend_id()で敵味方判定 + atcommand.c + 各コマンド修正 + +-------------- +//0440 by 中の人 + +・本家を再現する方向なら意味はないかもしれませんが + pc.c「スクリプトによるスキル所得」を若干変更して + カードによるスキル一時習得の際でも1レベル以上を設定できるように致しました。 + + 単純に符号を変えてごまかしただけですので + 必要にあわせて修正をして下さい。 + +-------------- +//0439 by hoenny +・阿修羅覇鳳拳の修正。 + db/skill_db.txt +・モンスター情報の修正。 + map/clif.c +・見切りの実装。 + map/pc.c + +-------------- +//0438 by Aの人 +・古木の枝が使える場所をNPCスクリプトから制御可能 + mapflagにnobranchとすればそのマップは古木の枝使用不可になります。 + map.h + enumにMF_NOBRANCH 追加。 + npc.c + npc_parse_mapflag() 修正。 + pc.c + pc_useitem() 修正。 +ソース汚くしてしまったかも・・・. +勉強不足です + +-------------- +//0437 by 波浪 +・item_db.txtの英名を大幅修正。(s付きとそうでない武器の英名がいつの間にやら + 同じになっていたのでそれを直すついでに他の部分も修正しました。 + まったく違う名前になってるものもありますが、こっちの方が正しいと思います。 +・item_purplebox.txtを本家仕様っぽく作成(大体こんな感じかと +・アルベルタとイズルードNPCを修正 + +-------------- +//0436 by hoenny +・morocc 宝石商人の修正 + conf/npc_shop.txt +・ハンマーフォールの実装(Alchemist氏ソースを参照ありがとう!) + map/skill.c +以前に文字化けは低のせい! +次から気を付けます. + +-------------- +//0434 by Avethes + +・タートルアイランドへ行くNPC修正 +・ユノーNPC修正 +(前回のバグはすみませんでした) + +-------------- +//0433 by 死神 + +・製造バグ修正。 + 何故かはわからないがskill.cのskill_readdb()が変になっていたので修正。(自分がやった修正ではありませんが...) + skill.c + skill_readdb() 修正。 + +-------------- +//0432 by 死神 + +・0429で一部のアイテムのスキルが出ない問題修正。 + clif.c + clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 +・skill.c + skill_use_id() 修正。(大した修正ではないです。) +・item_db.txtの文字化け修正。言語設定が日本語ではない場合保存する時には気をつけましょう。 +・攻撃されたモンスターの反撃が早すぎる問題修正。始めての攻撃がモンスターの攻撃ディレイに関係なく100ms後になっていたので攻撃ディレイに合わせるように変更。(ただ少し反撃が遅いと思われたりもしますが...) + mob.c + mob_changestate() 修正。 +・鯖に接続する最大人数を決めるように変更。 + char.c 修正。 + conf_ref.txt 修正。 + char_athena.cnf 修正。 + +-------------- +//0430 by Avethes + +・NPC関係。ほとんどテスト。 +本家会話情報が揃えば修正。 + +-------------- +//0429 by 死神 + +・ギルドのレベルアップをキャラのレベルアップのように変更。 + int_guild.c + guild_calcinfo() 修正。 + guild_next_exp() 追加。 + exp_guild.txt 修正。(レベルが上がらないようにしたいレベルのexpに0を入れればそれ以上にレベルが上がらなくなります。) +・スクリプトresetstatus、resetskill 追加。 + pc.c + pc_resetskill() 修正。 + script.c + buildin_resetstatus()、buildin_resetskill() 追加。 +・0425の続きで少し修正。 + clif.c + clif_parse_ を少し修正。 +・ショートカットに覚えているスキルレベル以上のスキルが登録されていても覚えているスキルレベルまでのスキルを使うように変更。 + clif.c + clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() 修正。 +・メモの最大数を10個に変更。(あくまでも拡張の為の物です。まだ機能はしません。) + mmo.h + struct mmo_charstatusのmemo_pointを3から10に変更。 + char.c + mmo_char_tostr() 修正。 +・mob,c + mob_once_spawn()、mob_summonslave() 修正。(別に意味がある修正じゃありませんが...) +・@monster コマンドで座標を指定しない時モンスターが一か所に集中して出るのをキャラの10*10マス以内にランダムで現れるように変更。 + atcomand.c 修正。 + +-------------- +//0428 by Avethes + +・conf/npc_smilegirl.txt + スマイルマスクガールスクリプト。 + 0427のおかしい部分とか修正。 + 提供された各都市の座標に配置。(NONAMEさん提供ありがとう!) + +-------------- +//0426 by 胡蝶蘭 + +・アイテムの名前をdata.grfから読み込むようにした + itemdb.cのITEMDB_OVERRIDE_NAMEを定義しなければ読み込みません。 + ITEMDB_OVERRIDE_NAME_VERBOSEはitemdb.txtのデバグ用にどうぞ。 + 普通は変える必要はないと思うのでbattle_configには入れていません。 + + itemdb.c + itemdb_read_itemnametable()追加 + do_init_itemdb()修正 + +・データベース読み込み部の不安定性の修正(結構致命的だったみたいです) + なくても問題ないDB(item_value_db.txtなど)のファイルがない場合に + 鯖が落ちたりする現象が発生していた場合はこれで直っているかもしれません. + + skill.c + skill_readdb()でNULLポインタチェックを追加 + itemdb.c + item_readdb()を複数に分けた。 + ランダムアイテムデータベースの読み込み部を1つに纏めた。 + do_init_itemdb()修正 + +・細かいバグ修正 + ・ワープポータルの開くまでの秒数調整 + + skill.c + skill_unitsetting()修正 + +・その他修正(by 某M氏) + db/job_db1.txt + ちょこっと修正 + db/job_db2.txt + 2-2次職の足りないJobボーナスを追加(参考:R.O.M 776) + conf/npc_town_kafra.txt + オークD前と炭鉱前にカプラ配置(動作未確認) + conf/npc_shop3.txt + ジューノ販売NPC(拾い物) + conf/npc_town_yuno.txt + ジューノNPC(拾い物を改良。動作未確認) + +-------------- +//0425 by 死神 + +・0419で書き忘れた物ですがスキルラーニングポーションがSP回復アイテムにも効果があるように変更。 +・今度はバグ修正がメインです。鯖落ちがなりそうな所の修正とテレポートの時死んだまま移動できる問題と0419でアクティブモンスターの先攻問題修正、死んでいるのに他の人には死んだように見えない問題の修正です。少しテストはしましたが本当に治ったかどうかは不明です。報告をお願いします。 + pc.c + pc_attack_timer()、pc_damage()、pc_walk() 修正。 + map.c + map_quit() 修正。 + mob_db.txt + ビッグフットのmodeを修正(アクティブになっていた為) + clif.c + clif_parse_WalkToXY()、clif_pcoutsight()、clif_pcinsight()、 + clif_getareachar_pc()、clif_getareachar_mob()、clif_getareachar_pet() 修正。 + mob.c + mob_ai_sub_hard_activesearch()、mob_ai_sub_hard_mastersearch()、 + mob_walk() 修正。 + pet.c + pet_walk() 修正。 + +-------------- +//0424 by hoenny + +・クリップボーナス SP 10追加 + db/item_db.txt +・warp_test_yuno.txtを npc_warp30.txtに含んで, ちょっと修正 + conf/npc_warp30.txt +・他のサーバーが落ちても復旧されるように修正 + /startクリップ + +-------------- +//0420 by 紅葉 + +・EP 3.0でのカード効果変更に解る範囲で対応。 + ほぼ全ての変更点について、出来る限り修正してあります。 + ATK修正が正しく適用されているようなので追加してあります。(アンドレCなど) + +-------------- +//0419 by 死神 + +・0414で書き忘れた物ですが MOBのmodeで0x20(32)を復活させました。ボスじゃなくてもmodeに0x20が入っている場合普通のMOBでも死んだふりを破れます。 +(今の所機能はそれだけです。本鯖はAI強化みたいですが...) ただゴーストはボスでも破ることはできません。 +それと取り巻きのAIで取り巻きがターゲットした時主がターゲットしてないと主が取り巻きのターゲットをターゲットする部分をコマントアウトしました。(これが本鯖にあっていると思いましたので...) +・古い青い箱、古い紫色の箱、古いカード帖で出るアイテムをファイルで設定できるように変更。 + script.c + buildin_getitem() 修正。 + item_db.txt + 古い青い箱、古い紫色の箱、古いカード帖修正。 + item_bluebox.txt、item_purplebox.txt、item_cardalbum.txt 追加。(使用例程度の物です。どのアイテムが出るようにするかは自分で設定して使ってください。ただクライアントを落とすアイテムは出ないように設定してください。) + itemdb.h + struct random_item_data 追加。 + itemdb.c + itemdb_searchrandomid()、itemdb_readdb() 修正。 +・mob.c + mob_target()、mob_ai_sub_hard() 修正。(問題がありそうな部分だけ修正。) +・pc.c + pc_itemheal()、pc_walktoxy_sub() 修正。 +・ペットの出現をMOBと同じように変更。 + clif.c + clif_spawnpet() 修正。 + pet.c + pet_change_name() 修正。 +・0418を少し修正。(if文の条件を少し修正しただけです。) + +-------------- + +//0418 by hoenny +・ /mm(/mapmove) /nb /b /bb /resetskill /resetstate GM 命令語使用の制限 +clif_parse_MapMove ,clif_parse_ResetChar ,clif_parse_GMmessage 修正 + map/clif.c + +-------------- +//0417 by れあ + +・0412でitem_db.txtがおかしくなっていたのを修正 + +-------------- +//0416 by 紅葉 + +・ジュノー周辺のワープ定義と敵の配置。 + ワープ定義はnpc_warp30.txtとし、追加する形にしてあります。 + 敵の配置についてもnpc_monster.txtとは統合せず、npc_monster30.txtとしてあります。 + 問題が無いようであれば統合して下さい。 +・上記定義ファイル追加に従いmap_athena.cnfを変更。 +・@goコマンドへジュノー追加。 + 要望があったようなので追加しました。 + +-------------- +//0415 by 中の人 + +・今は亡き旧ROエミュ鯖開発スレッド Lv02での死神氏の説明に従って + モンスター定義データを若干変更させて頂きました。 + ・過去のnpc_monster.txtから通常マップ上(ルティエ等除く)にいるサンタポリン、アンソニを抽出し +  新たに作った「npc_x-masmonster.txt」に移転 + ・上記の修正にあわせてmap_athena.cnfを修正。 +  map_athenaにコメントアウト状態で「npc: conf/npc_x-masmonster.txt」を追加しました。 +  必要にあわせてコメントアウトをして下さい。 + +-------------- +//0414 by 死神 + +・strcasecmpをstrcmpiに変更。 +・dbや設定ファイルを読む時// をコマントアウトとして認識するように修正。 +・ペットと離れすぎるとペットが早く動くように変更。(キャラの2倍の速度で動きます。) +・ルートモンスターがアイテムをターゲットした時攻撃を受けても攻撃してこない問題修正。 +・同族モンスターのAIを変更。今まではtraget_idを使うせいでモンスターが攻撃した相手を攻撃する仕組みだったが今度はattacked_idを使う為攻撃してきた相手を攻撃するように変更。 +ただ今の仕様だと同族モンスターを攻撃して逃げる場合攻撃を受けた時その場になかったモンスターはついて来なくなっています。本鯖の仕様にあってるかどうかは不明ですので情報提供をお願いします。(attacked_idはいつもリセットされる為です。対策がいないわけでもないですが本鯖の仕様を知らないので...) +・メモリーの使用量を減らす為struct mob_dataとstruct npc_dataを変更。(0412で +map-serverのメモリーの使用量が164???KBytesだったが0414では152???KBytesになりました。ほんの少し減っただけですが増えるよりはましだと思いますので...) +・ゴーストタイム実装。 + マップ移動やテレポート、復活した時に敵に狙われない時間を重力ではゴーストタイム呼んでいます。そのゴーストタイムの実装です。 +battle_athena.cnfで時間を設定できます。時間を0にするとゴーストタイムは作動しません。ただこのゴーストタイムは攻撃行動、スキル使用、アイテム使用をするとなくなります。 + 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 を修正。(db/mob_db.txtは//を入れただけですが...) + 修正した所を全て覚えてませんのでファイルだけ知らせます。 + +-------------- +//0412 by いど + +・モンスター定義データ(日本語)の再整理 +  旧掲示板で指摘のあった事項について大体の範囲で修正 + snapshot387のバージョンをベースに修正しました。 + conf/npc_monster.txt + +・アイテム名の定義を大幅修正 + (root) + item.list + (db/) + item_db.txt + item_value_db.txt + +・マップデータの定義でコメントアウトしていたジュノー関連マップのコメントアウトを解除 + conf/map_athena.cnf + +-------------- +//0411 by 死神 + +・鯖snapshotです。それとlogin_port、char_port、map_portの設定がなくても +デフォルトで6900、6121、5121を使うように変更。 +・login.c、char.c、chrif.c、clif.c 少し修正。 +・conf_ref.txt 修正。 +・login_portを6900から他の物に変えた場合はclientinfo.xmlを変える必要があります。 + +-------------- +//0410 by 死神 + +GM用右クリックメニュー「(name)使用者強制終了」実装。(テストはしてません。@コマンドはテスト済みですが...) +0407のEXPに関する修正に問題があるらしいので修正しました。今度はテスト済みです。 +GMのアカウントIDを設定できるように変更とGMをレベル別に分けるように変更。 +(GMのレベルによる@コマンド等に制限をかけるつもりですが今制限がかけている物は@kick、@kickallのみになっています。) +・pc.c + pc_readdb()、pc_gainexp()、pc_nextbaseexp()、pc_nextjobexp()、 + pc_checkbaselevelup()、pc_checkjoblevelup() 修正。 + pc_isGM()、pc_read_gm_account() 追加。 +・pc.h + pc_isGM() 修正。 + pc_read_gm_account() 追加。 +・exp.txt + レベルが上がらない数値を999999999から0以下に変更。 + レベルを上げる為に必要なEXPを999999999以上にすることも可能。 +・clif.c + clif_GM_kickack()、clif_GM_kick()、clif_parse_GMKick() 追加。 +・clif.h + clif_GM_kickack()、clif_GM_kick() 追加。 +・atcomand.c + strncmpiをstrcmpiに変更。 + @kick、@kickall コマンド追加。 + @kick <キャラ名> + 自分以外のキャラの接続を強制終了させる。(自分よりGMレベルが + 低いキャラにしか使えない。GMではないキャラのGMレベルは0) + @kickall + 鯖に接続している全てのキャラの接続を強制終了させる。(自分と + GMを含めて) 鯖ダウン用のコマンドです。GMレベルが99じゃないと + 使えない。 +・conf/GM_account.txt 追加。 + GMとして認識するアカウントIDを設定するファイルです。 +・mmo.h + DEFAULT_WALK_SPEEDを140から150に変更。(これが本鯖にあってる数値 + みたいですので...) + struct gm_account 追加。 +・client_packet.txt + パケット0x00cd 追加。 +・login_portをcnfで読むように変更。(ただ6900からポートを変えるとクライアントが認識できない模様なので無駄なことだったりもしますが...) + char.c、login.c、char_athena.cnf、login_athena.cnf 修正。 +・普通のアカウント作成ではGMになれないようにlogin.cを変更。 +・login/makefile、map/makefile 修正。 + +-------------- +//0408 by 胡蝶蘭 + +・405の新しい@コマンドを以前のatcommand.cに取り込みました。 + ・@kamiを修正 + ・@kill,@recall,@charjob,@revive,@charstats,@charoption,@charsave, + @night,@day,@doom,@doommap,@raise,@raisemap,@charbaselvl,@charjlvl + を追加&メッセージを日本語に変更&少し修正 + + atcommand.c + 追加と修正 + +・一部のスキルの効果実装 + ・不死身のジークフリード、イドゥンの林檎、幸運のキス、 + フレイムランチャー、フロストウェポン、ライトニングローダー、 + サイズミックウェポン + + map.h + struct skill_unitにrangeを追加。 + skill.c + 色々修正 + skill.h + enumの修正など +-------------- +//0407 by 死神 + +・ペットのバグ修正。(ただ自分で再現できなかったので問題になりそうな所だけ修正しました。) +・ペットの移動速度をpet_dbに追加。 + pet.h + struct pet_dbにspeed追加。 + pet.c + pet_catch_process2()、read_petdb() 修正。 + pet_db.txt + 移動速度追加。 + (コマントアウトしているのはジルタスとアリスです。捕獲用の + アイテムが存在することとパフォーマンスをすることから考えて + 追加される予定の物と考えられます。ただその捕獲用のアイテムが + あるとクライアントを落ちますので注意してください。追加しても + 台詞はポリンの物ですので... 捕獲用のアイテム以外は適当に入れた + 物です。) +・pc.c、clif.c + pc_equipitem() 修正。 + clif_parse_EquipItem() 修正。 + pc_equipitem()の未鑑定アイテムのチェックをclif_parse_EquipItem()に + 移動しました。(ペットの装備もありますので...) +・レベルを99以上にあげるように変更と職業別にベースレベルの限界レベルを設定できるように修正。 + map.h + MAX_LEVEL追加。 + pc.c + pc_nextbaseexp(), pc_nextjobexp() 修正。 + pc_readdb() 修正。 +・exp.txt 修正。職業レベルと同じようにベースレベルもEXPテーブルを3つ作りました。レベルアップを止めたいレベルのexpを999999999にすればそれ以上レベルが上がりません。つまりnovice、1次職業と2次職業のベースレベルの限界を違うように設定できます。そしてベースレベル99以上に上がるようにすることもできます。(exp.txtの修正が必要ですが本鯖と違うように設定したい場合に修正して使ってください。) +・属性による回復をbattle_athena.cnfで設定できるように変更。 + attr_fix.txt 修正。 + battle.h + struct Battle_Configにattr_recover 追加。 + battle.c + battle_config_read() 修正。 + battle_athena.cnf 修正。 +・conf_ref.txt 修正。 +・client_packet.txt 修正。ペットパケット追加と少し修正。 + +-------------- +//0402 by 胡蝶蘭 + +・400のバグを一部修正 + ・掛かってないスキル効果によるステータス計算が行われてしまうバグ修正 + ・効果修正:あくまで効果の計算の修正で、使えないスキルは使えません。 + スピアクィッケン、プロヴィデンス、戦太鼓の響き、 + 夕陽のアサシンクロス、口笛、不死身のジークフリード、 + イドゥンの林檎、サービスフォーユー、幸運のキス + ・効果追加:あくまで効果の計算の追加で、使えないスキルは使えません。 + ハミング、私を忘れないで…、ニーベルングの指輪(武器レベル無視)、 + エターナルカオス、ドラゴノロジー + ・効果付加系はちょっとでも怪しいスキルは全て使用できないように修正 + ・攻撃系スキルはほとんど見てないのでたぶんバグ多いです。 + ・全て未テストです。怪しすぎる部分を修正しただけです。 + + map.h + MAX_STATUSCHANGEを128に修正 + pc.c + pc_calcstatus()修正 + skill.c/skill.h + enumを修正 + skill_status_change_start()修正 + battle.c + battle_calc_weapon_attack()など修正 + +-------------- +//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 + +* 適当な和訳 * +2-2次職スキルを追加しました +全ての修練スキル、スピアクイッケン、プロヴィデンス、 +夕陽のアサシンクロス(未テスト)、寒いジョーク、イドゥンの林檎、 +サービスフォーユー、メテオストライク(少し違う)、 +ミュージカルストライク、矢撃ち、フロストウェポン(属性が問題あり?) +フレームランチャー(〃)、サイズミックウェポン(〃)、ライトニングローダー(〃) +息吹、ポーションピッチャー +完全には働かないスキル: +猛龍拳、漣環全身掌、三段掌 +(skills in skill.c) (完了される必要がある) +ケミカルアーマーチャージ、ケミカルヘルムチャージ、 +ケミカルシールドチャージ、ケミカルウェポンチャージ、 +ストリップヘルム、ストリップウェポン +ストリップシールド、ストリップアーマー + +*注意 !! CAUTION !! by 胡蝶蘭* +この400にはバグが大量に含まれています。注意してください。 +there are many many BUGS in this update(400) !! Be careful !! + +-------------- +//0399 by 胡蝶蘭 + +・MOBスキル使用条件や行動を修正 + ・無行動MOBが待機時のスキルを使用できない問題を修正 + ・条件スキル反応(skillused)がどのスキルにも反応していたバグ修正 + ・非移動MOBが追撃してくる問題を修正 + + mob.c + mob_ai_sub_hard()修正 + mobskill_event()修正 + mobskill_use()修正 + skill.c + skill_attack()修正 + +・MOBスキル一部実装 + ・自決(エフェクト無し?)、自爆、タバコを吸う、範囲攻撃 + HP吸収2つ(通常/魔法)(回復エフェクト無し?)実装 + + (db) + skill_db.txt + スモーキングなどを修正 + (map/) + skill.c + skill_castend_damage_id(),skill_castend_nodamage_id()修正 + battle.c + battle_calc_misc_damage()修正 + +・未鑑定アイテムが装備できなくなりました +・未鑑定アイテムにカードがさせなくなりました + + pc.c + pc_equipitem(),pc_insert_card()修正 + clif.c + clif_use_card()修正 + +・battle_athena.cnfにMOBの配置割合を定義できるようになりました + ・配置数が1のMOBについては適用されません + ・計算後の配置数が1未満の場合1に修正されます。 + + (conf/) + battle_athena.cnf + mob_count_rate追加 + (doc/) + conf_ref.txt + 修正 + (map/) + battle.c/battle.h + struct BattleConfig に mob_count_rate メンバ追加 + npc.c + npc_parse_mob()の修正 + +・ボーリングバッシュが相手が1匹でもとりあえず当たるようになった。 + + skill.c + skill_castend_damage_id()修正 + +・学生帽作成イベントの修正 + + (conf/) + npc_event_making.txt + アロエベラ(606)をアロエ(704)に。 + +・パケット情報修正 + + (doc/) + client_packet.txt + 0199パケット修正 + +-------------- +//0397 by いど + +・モンスター定義データ(日本語)の整理 + ・npc_monster25.txtをnpc_monster.txtにリネームし、内容を整理(現在mob数:13450) + ・その軽量版としてnpc_monster_lite.txtを作成(現在mob数:11959) + ・上記の修正にあわせてmap_athena.cnfを修正 + +-------------- +//0395 by 胡蝶蘭 + +・取り巻きMOBの行動修正 + ・アンクルなどで移動できない場合主に近づかないように修正 + ・ロックしていると主に近寄る処理をしないように修正 + ・主がテレポートすると追いかけるように修正(付近10x10マス程度) + ・主のそばにいるときはランダム歩行をしないように修正 + + mob.c + mob_ai_sub_hard_mastersearch()修正 + mob_can_move()追加 + mob_ai_sub_hard()修正 + +・MOBの行動修正 + ・スキル使用ディレイ処理がおかしかったのを修正 + ・詠唱のないスキルはtimerを使わないように修正(死亡時処理対策) + + mob.c + mobskill_use(),mobskill_use_id()修正 + +・MOBエモーションの実装 + ・エモーションの種類がわからないものは全て「!」になります。 + 抜けているデータを埋めてくれるとうれしいです。 + + (db/) + mob_skill_db.txt + いくつかのMOBのエモーションの項目の値1に種類を入れた。 + + (map/) + skill.c + skill_castend_nodamage_id()修正 + clif.c/clif.h + clif_emotion()追加 + +・パケット解析.txtをclient_packet.txtに改名&修正 + + (doc/) + client_packet.txt + エモーションの説明追加 + +・どうやら取り巻きMOBの種類は古いデータだったっぽいです。 + しかもMOB召喚では手下召喚と違うMOBを召喚するみたいですね。 + 詳しい人はmob_skill_db.txtを直してくれると。 + +-------------- +//0393 by いど + +・char鯖でのlogin鯖のポート設定を6900に固定し、変更できないようにした + (login側でポート6900固定になっていたのでchar側もそれに合わせました。) + char/char.c + conf/char_athena.cnf + doc/conf_ref.txt + +-------------- +//0392 by 胡蝶蘭 + +・MOBの行動修正 + ・何故かlast_thinktickが初期化されていない問題修正 + ・上に関連してPCが近くにいても手抜き処理が行われる問題修正 + (どうやら初期からのバグだった模様? このバグと、 + 新しい手抜き処理の仕様がタッグを組んで残像を作っていた模様) + ・取り巻きMOB用のAI処理追加(まだ怪しいです) + ・MOBのスキルディレイをスキル項目ごとに持つように変更 + ・スキルディレイが大きな項目ではオーバーフローしていた問題を修正 + + map.h + struct mob_dataの skilldelayを配列にしてunsigned intに変更 + mob.h + struct mob_skillのcasttime,delayをintに変更 + mob.c + mob_ai_sub_hard_mastersearch()追加 + 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()など修正 + +・MOBスキルの手下召喚とモンスター召喚実装 + ・mob_skill_db.txtの書式変更(最後に値を1つ追加、取り巻きMOBのID) + ・取り巻きMOBがわからなかったものはコメント化しています + わかる人は入力よろしくお願いします。 + ・現在は取り巻きは一度倒したら沸きなおしません。 + ・ボスがテレポートしても取り巻きは追いかけません。 + ・本鯖でどうなってるのか知らないので、間違ってる場合は教えてください。 + + (db/) + mob_skill_db.txt + 手下召喚などのデータ修正 + + (map/) + skill.c + skill_castend_nodamage_id()修正 + +-------------- +//0391 by 死神 + +・ペットの移動中にパフォーマンスをするとペットが停止するように変更。 + (ペットの位置がずれるため修正しました。) + pet.c + pet_performance() 修正。 +・死んだモンスターはどんな行動もとれないように変更。(これで無敵 + モンスターがいなくなるといいですが...) + mob.c + mob_changestate(),mob_delete(),mob_catch_delete(),mob_damage(), + mob_ai_sub_hard(),mob_ai_sub_lazy() 修正。 +・PC、NPC、床アイテムが使うIDの範囲を調整。 + 床アイテムは0から500000まででPCは500000から100000000、NPC + (モンスターを含めて)は110000000から約21億までになります。 + (-を含めるともっと範囲が広くなりますがさすがにそこまでは必要ないと + 思いますので...) + map.h + MAX_FLOORITEM 追加(これを変えると床アイテムの最大数を変える + ことができます。今は100000になっています。ただこれは必ず + 500000以下にしてください。そうしないと正しく動くかどうか + 保証できません。) + map.c + map.hに合わせて少し修正。 + npc.h + START_NPC_NUM 追加。 + npc.c + npc.hに合わせて少し修正。 + login.h + START_ACCOUNT_NUMとEND_ACCOUNT_NUM 追加。 + login.c + login.hに合わせて修正。END_ACCOUNT_NUM以上にaccountを + 作れないように変更。 +・カートレボリューションに武器研究を2回適用するように変更。 + (結局は元に戻すことになりました...^^;) + battle.c + Damage battle_calc_weapon_attack() 修正。 +・mobのスキル使用をbattle_athena.cnfで決めるように変更。 + mob.c + mobskill_use() 修正。 + battle.h + battle.c + struct Battle_Configにmob_skill_use追加。 + battle_athena.cnf + mob_skill_use追加。(設定しないとnoです。) +・battle_athena.cnf + mobを二重で読めないようにnpc: conf/npc_monster.txtを削除。 + (最新はnpc_monster25.txtなので...) + +-------------- +//390 by 胡蝶蘭 + +・バージョン情報所得部分を少し変更 + ・MODバージョンを定義できるようになりました。詳細はversion.hを。 + 気が向いたときか、大きな更新があるときなどに変更してください。 + ・バージョンcheck時のset eofログが出ないようにパケット7532追加。 + + (common/) + version.h + MODバージョンを定義できるように。 + (tool/) + checkversion + MODバージョンを表示するように。 + (login/char/map) + login.c/char.c/clif.c + MODバージョンの処理追加、 + パケット7532(切断)処理追加。 + +・その他色々修正 + ・こまごました修正ばかりですが、あまり覚えていません。 + ・MOBスキル条件でslavelt,attackpcgt処理実装(未テスト)。 + ・MOBの手下召喚のための機構追加(まだ召喚できません)。 + ・範囲スキル効果範囲に死亡PCがいると鯖が落ちるバグ修正。 + ・MOB残像が出なく…なってたらいいな。 + + (map/) + mob.c/mob.h/map.h/battle.c + 色々追加 + + (db/) + mob_skill_db.txt + ルート時処理と、属性変更スキルのコメントを外した。 + (属性変更は本鯖で動いてないらしいものもコメントを外してます。 + 問題がある場合は再びコメント化してください) + +-------------- +//389 by いど + +・388の変更 + バージョン情報をcommon/version.h内の定数を使用するように変更 + +-------------- +//388 by 胡蝶蘭 + +・バージョン情報所得ツール添付 + Perl製なので実行にはPerlが必要です。 + 使用方法などはエディタで開いて見てください。 + 使い方が良くわからない人は手を出さないほうがいいです。 + + バージョンを確認する用途よりは、サーバーの生存確認用といったかんじです + パケット7530/7531の詳細はソースを見てください。 + + (tool/) + checkversion + バージョン確認ツールPerlスクリプト + + (login/) + login.c + パケット7530/7531の処理追加 + (char/) + char.c + パケット7530/7531の処理追加 + (map/) + clif.c + パケット7530/7531の処理追加 + +・384以前のathena.txtも読み込めるようにしました + ・convertが面倒な人向け。 + ・正しく読み込める保証無し。バックアップを忘れずに。 + + (char/) + char.c + 384の方式で読み込めないデータは384以前の方式も試すように。 + +・conf_ref.txt/help.txt/getaccount修正 + help.txt + petコマンドの説明追加 + (doc/) + conf_ref.txt + pet関連の設定の説明追加 + (tool/) + getlogincount + 表示の修正 + +-------------- +//387 by いど +・confフォルダ内のNPC定義データの整理 + 以下のファイルを削除しました + npc_kafraJ.txt + npc_mind_prtmons.txt + npc_script2J.txt(npc_event_mobtim.txtに同じものがあったため) + npc_testJ.txt(ほぼ同じことが@コマンドで出来るため) + npc_warp25.txt(npc_warp.txtに統合) + + 以下のファイルの名前を変更しました + 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 + +・マップ定義の追加 + ジュノーアップデートで追加されるマップと、韓鯖独自(?)のクイズゾーン + (コモドアップデート)と天津アップデートのマップ定義を追加 + 現在、日鞍に無いものに関してはコメントアウトしていま。 + conf/map_athena.cnf + +-------------- +//385 by 胡蝶蘭 + +・MOBの行動修正 + ・手抜き処理で移動しないモードのMOBも歩く問題修正 + ・MOBを倒したとき、再spawn時刻がおかしな値になる場合がある問題修正 + (MOBが沸かなくなる問題が修正されたはず) + ・MOBのワープで場所検索に1000回失敗したら元の場所に出るように修正 + ・MOBを詠唱中に倒すと、タイマーを削除するように修正 + + mob.c + mob_delete(),mob_catch(),mob_damage(), + mob_ai_sub_lazy(),mob_ai_sub_hard()など修正 + mobskill_deltimer()追加 + +-------------- +//0384 by 死神 + +・ペット実装。 +思ったより長くかかりました。一周もかかったせいで何処を修正したか +覚えてない問題がありますが... それで念の為にmapとcharのファイルは全て +含めてアップします。 +それとmakefileとathena.shは自分が使ている物です。 +Yare-launcherは使てませんがいつも鯖の実行ファイルで実行していますので... + char/char.c、char/char.h、char/inter.c、char/makefile 修正。 + char/int_pet.c、char/int_pet.h 追加。 + map/makefile 修正。 + map/intif.c、map/intif.h、map/map.c、map/map.h、map/mob.c、map/mob.h、 + map/npc.c、map/npc.h、map/battle.c、map/battle.h、atcomand.c、map/pc.c、 + map/clif.c、map/clif.h、map/script.c 色々修正。 + map/pet.c、map/pet.h は殆どを自分の物に書き換えました。 + common/mmo.h 修正。 + db/pet_db.txt 修正。 + db/item_db.txt 修正。(携帯卵孵化機のbpet スクリプトが抜けていたので + 入れただけですが...) + doc/INTER鯖パケット.txtの名前をinter_server_packet.txtに変更とペットの + 保存等に使うパケットを追加。 +* 今度のペット実装によりキャラファイルの構造が変わり以前の物と互換できない + ので tool/convert.c を追加しました。 + 単独でコンパイルできますのでコンパイルしたあと実行してキャラ + ファイルを変換してください。そうしないとキャラが全部飛びますので... +* ペットの親密度が0になるとペットはその場で動けなくなりその状態で他の + マップに移動するか終了するとペットは消滅します。一応ペットの逃走を + 実装するつもりで作ったのですが本鯖にあってるかどうかはわかりません。 +* 移動速度が遅いペットの場合離れ過ぎるとついて来れなくなります。でも + この場合マップを移動してもちゃんとついて来ます。 + 消滅したりはしません。 +* 移動速度が速いペットはキャラより先に移動します。本鯖の方がどうなのか + わからないのでペットの移動はモンスターの移動速度で移動する + ようにしました。 +・battle_athena.cnf +pet_catch_rate 追加。 + ペットの捕獲倍率を設定します。(設定しないと100) + 基本的にペットの捕獲に使ってる公式は + (pet_db.txtの捕獲率 + (キャラレベル - モンスターレベル)*0.3 + luk *0.2) + * (2 - モンスターの現在HP/モンスターの最大HP) + になります。自分なりに作った物ですので本鯖とはかなりの + 違いがあるかも知れません。(モンスターのHPを減らせば減らす程捕獲率が + 上がる仕組みですが...) +pet_rename 追加。 + ペットの名前を変更するかどうかを決めます。(設定しないとno) + yesは何度でも名前の変更が可能。 + noは一度変更するともう変更不可能になる +pet_hungry_delay_rate 追加。 + ペットの腹が減る時間の倍率です。(設定しないと100) + 倍率が高いと腹が減り難くなります +mvp_exp_rate 変更。 + すでにstruct mob_dbのmexpperはゴミになっているので(MVP EXPは + MVPアイテムが取れなかった場合入るので意味がありません。) + MVP EXPの量の倍率になるように変更。(mob.cを修正) +・char_athena.cnf +autosave_time 追加。 + 自動保存する時間を決めます。(設定しないと300) + 單位は秒です。(ファイルに保存する時間の間隔です。) +・map_athena.cnf +autosave_time 追加。 + 自動保存する時間を決めます。(設定しないと60) + 單位は秒です。(キャラ鯖にデータを送る時間の間隔です。これは + ファイルに保存する時間の間隔じゃありません。) +・inter_athena.cnf +pet_txt 追加。 + ペットのデータを保存するファイルを決めます。(設定しないとpet.txt) +・@makepet コマンド追加。 + ペットの実装によって@itemで作った卵は使っても無駄になりますので + これを使って卵を作ってください。 + @makepet <モンスターのID or 卵のID> +・@petfriendly コマンド追加。 + @petfriendly <数字> + ペットを連れている時にペットの親密度を変更。(0~1000) +・@pethungry コマンド追加。 + @pethungry <数字> + ペットを連れている時にペットの満腹度を変更。(0~100) +・@petrename コマンド追加。 + @petrename + ペットを連れている時にペットの名前を変更できるように変更。 +・int_guild.c、int_party.c 読み込むファイルにエラーがあってもプログラムを + 終了せずに進むように変更。 +・pc_walk 123 != 1234 等のエラーが出ないように + 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); + のように変更しました。 + tickが同じ数値になるのを防いたのですがこれでどんな影響が出るかは + さっぱりわかりません。 + pc.c、mob.cを修正。 + でもこの修正をしても連続でクリックしたりするとキャラがしばらく + 止まるようです。(ペットのせいと思いましたがペットがなくても + 同じだったので他の原因かと...) +* doc/code_ref.txtとhelp.txtは面倒くさいので修正してません。 +・gm_all_skill: yesで2-2のスキルも表示されるように変更。(試いせはいませんが...) + pc.c + pc_calc_skilltre() 修正。 +・カートレボリューションのダメージ計算を修正。 + 武器研究を二重計算していたので修正。 + battle.c + Damage battle_calc_weapon_attack() 修正。 + +-------------- +//381 by 胡蝶蘭 + +・MOBの行動修正 + ・PCのいないマップのMOBは時々ワープするようになりました + ・PCのいるマップのMOBは歩く以外に、時々沸き直すようになりました + (これまたパフォーマンスに影響があるかもしれません:少し重くなるかも) + ・手抜き処理でブロックの有効判定を行うようにしました + (HP無限MOB問題修正?) + ・ルート時スキル使用機構実装 + + mob.c/mob.h + mob_ai_sub_lazy(),mob_ai_sub_hard()修正 + MSS_LOOT追加,mob_readskilldb()修正 + +・MOBスキルの属性変更を実装しました。 + + map.h + struct mob_dataに def_eleメンバ追加 + mob.c + mob_spawn()でdef_eleをセットするように変更 + battle.c + battle_get_element()でdef_eleを読むように変更 + skill.c + skill_castend_nodamage_id()修正 + +・クァグマイアの効果範囲から出ると効果が切れるようになりました + + skill.c + ユニット系処理修正 + +-------------- +//380 by Aの人 + +・カートレヴォリューションのダメージ計算実装 + battle.cを変更。 + +CHRISさん、ありがとう御座います。 +ノックバック実装できなくて、困ってました(><; + +-------------- +//379 by CHRIS + +・カートレヴォリューションの実装 + skill.cとbattle.cを変更。 + +・マグナムブレイクにノックバックを追加。 + battle.cを変更。 + +(ソースを弄ったのは初めてなので、有ってるかどうか分かりませんが、自分では出来ました。) +(プログラム関係の書籍を買って勉強して初めて弄ったのです・・・。ガンバリマス!。) + +-------------- +//377 by 胡蝶蘭 + +・MOBの行動修正 + ・近くにPCのいないMOBが時々ワープする仕様を止めました。 + ・PCのいないマップのMOBは全く動かなくなりました。 + ・PCのいるマップで、近くにPCのいないMOBは時々歩くようになりました。 + ・その他細かいところ修正 + (パフォーマンスに影響があるかもしれません:少し重くなるかも) + + mob.c + mob_randomwalk()追加 + mob_ai_sub_lazy(),mob_ai_sub_hard()修正など + +・スキル修正 + ・MOBがテレポートできるようになりました + + mob.c + mob_warp()追加 + skill.c + skill_castend_nodamage_id()修正 + +・ステータス異常の一部を実装/修正 + ・PC/MOBともに速度減少の効果が現れるように(AGIの表示は変わらず) + ・PCのエンジェラス、インポシティオマヌス、速度上昇の効果を修正 + ・MOBの2HQ、アドレナリンラッシュ、エンジェラス、インポシティオマヌス、 + 速度上昇/減少、グロリア、ブレッシングなどの効果実装 + ・睡眠、凍結、スタンの必中効果実装 + ・睡眠のクリティカル倍効果実装 + ・暗黒の命中率、回避率減少効果実装 + ・呪いのATK減少効果、LUK減少効果実装 + + battle.c + battle_get_*()修正 + battle_calc_weapon_damage()修正 + mob.c + mob_get_speed(),mob_get_adelay()追加 + pc.c + pc_calcstatus()修正 + +・item_value_db.txtでアイテムの価格を設定できるようになりました + ・価格データをオーバーライドできるようにしました。 + ・これでitem_db2.txtを用意する必要がありません。 + + (db/) + item_value_db2.txt + item_db2.txtの価格データ。 + item_value_db.txtにリネームすると読み込みます。 + (map/) + itemdb.c + itemdb_readdb()修正 + +・古木の枝を使うとMOBの名前が 0 になる問題の修正 + + (db/) + item_db.txt + 古木の枝のデータ修正 + +-------------- +//375 by 胡蝶蘭 + +・MOB専用スキルの効果をいくつか実装 + 多段攻撃、毒などの追加効果付与攻撃、属性付き攻撃、魔法打撃攻撃 + 必中攻撃、防御無視攻撃、ランダムATK攻撃など。 + ただし、**全くテストしてません**。 + + (db/) + skill_db.txt + MOB用スキルのデータを修正 + mob_skill_db.txt + 少し追加 + (map/) + skill.c + skill_castend_damage_id()修正 + skill_status_change_start()修正 + skill_additional_effect()修正 + battle.c + battle_calc_weapon_attack()修正 + +・スキルを少し修正 + ・ウォーターボールで敵が死んでいても撃つモーションをする問題修正 + + skill.c + skill_status_change_timer()修正 + +・MOBデータが変なので某Wのデータベースを流用してみる + ・データの並び順とか全く同じなんですね + + (db/) + mob_db.txt + 某Wのmob_db.txt + +・各種confのリファレンスを添付 + あくまでリファレンスなので、HowToなんかは書いてません。 + + (doc/) + conf_ref.txt + confのリファレンス+α + + +-------------- +//373 by 胡蝶蘭 + +・MOBスキル使用機構仮実装 + ・スキル使用時の処理はプレイヤーと共用(skill.c)です。 + ・不都合が多いと思うので報告お願いします。 + ・mob_skill_db.txtを埋めてくれる人も募集。 + このデータは「ラグナロクのたまご」を参考にしています。 + + (db/) + mob_skill_db.txt + MOBスキルデータベース(未完成) + テスト用のデータしか入ってません。 + (map/) + mob.c/mob.h + mobskill_*追加、その他多数修正 + map.h + struct mob_data に skill* 追加 + skill.c/skill.h + skill_castcancel()やスキルユニット処理をMOBに対応させた + battle.c + battle_calc_damage()など修正 + +・ギルドのスキルが触れない問題修正 + ・いつのまにかpc_skillupが古いものに変わっていたので修正 + + pc.c + pc_skillup(),pc_checkskill()修正 + +-------------- +//368 by 胡蝶蘭 + +・MOB系の修正など + ・MOBが策敵範囲内のPC/アイテムを等確率でロックするようになりました + (アクティブ、ルート:いままでは該当ブロックのリンクリストの順などに + 依存していた) + ・射程範囲内かつ、到達不可能地帯のPCをMOBがロックすると、 + MOBが停止したり、その場で暴れだしたりする問題の修正 + ・MOBロック中にIWなどで到達不可能になった場合、ロックを解除するように。 + ・AEGIS方式で敵の移動を計算して移動不可能なら、Athena式で計算するように + ・ロックが解除されるときに数秒その場で停止するようにした + ・歩行が遅いMOBがとまらない/次の歩行開始が早すぎる問題を修正しました + ・ルート関連処理を少し修正 + + mob.c + mob_ai_sub_hard*()修正 + mob_can_reach()追加 + +・スキル使用時にターゲットブロックの有効性判定を行うように修正 +・ルアフのダメージが武器計算になっているのバグを魔法計算に修正 + + skill.c + skill_castend_id()修正 + skill_status_change_timer_sub()修正 + + +---------- +//364 by いど +・以下のパケットの説明を変更 + doc/パケット解析.txt + R 006a .B + R 0081 .B + +・363でビルド時にwarningが出る不具合を修正 + map/guild.h + +-------------- +//363 by 胡蝶蘭 + +・ギルドの修正 + ・ログインしていないPCを追放するとマップ鯖が落ちるバグ修正 + ・メンバー追加直後に追加されたPCがギルド表示に追加されない問題修正 + ・同じギルドに同垢別キャラが要るPCが脱退する/追放されると別キャラが + 脱退してしまう場合があるバグ修正 + ・メンバーがいるのに解散しようとするとマップ鯖が落ちるバグ修正 + + (char/) + int_guild.c + guild_calcinfo(),mapif_parse_GuildAddMember()修正 + (map/) + guild.c + guild_member_leaved(),guild_member_added() + guild_recv_info(),guild_break()修正 + +-------------- +//362 by 胡蝶蘭 + +・ギルド解散実装 + + (char/) + int_guild.c + 解散処理を追加 + (map/) + guild.c/guild.h + guild_break(),guild_broken(),guild_broken_sub()など追加 + clif.c/clif.h + clif_guild_broken(),clif_parse_GuildBreak()追加 + intif.c/intif.h + intif_parse_GuildBroken()追加 + +-------------- +//361 by いど + +・360での@healの変更間違いを訂正 + map/atcommand.c + +-------------- +//360 by いど + +・353の修正を削除 +・@healで変更後の値がマイナスにならないように修正 + +-------------- +//359 by いど + +・class_equip_db.txtの文字化け修正 + +-------------- +//358 by 胡蝶蘭 + +・ログイン時のdelete_timerのエラーを出ないようにした + pc.c + pc_authok()の修正 + +・ギルド関係の修正 + ・メンバ勧誘時に最大人数の確認を行うように + ・データ通知処理をいくつか修正 + + (char/) + int_guild.c + 色々修正 + (map/) + clif.c/clif.h + clif_guild_inviting_refused()をclif_guild_inviteack()に改名 + guild.c/intif.c + 色々修正 + +・@guildlvupコマンド作成。ギルドレベルが調整できます。 + + (char/) + int_guild.c + 色々修正 + (map/) + atcommand.c + @guildlvup処理追加 + +・Makefikeのclean部分を修正 + + (char/ map/ login/) + Makefile + ・削除する実行ファイルのパスを ../athena/ から ../ に修正 + +-------------- +//357 by 胡蝶蘭 + +・pc.cの文字化け修正 + 文字化けしたファイルをアップするのも、それを改造するのも禁止しませんか? + 直すの面倒くさすぎます。 + + pc.c + 文字化けの修正 + +・パーティやギルドに勧誘された状態でマップ移動やログアウトすると、 + 勧誘を拒否するように修正 + + pc.c + pc_setpos()修正 + map.c + map_quit()修正 + +・I-Athena自動復旧システム(B-NSJ氏作)をAthena用に改造して添付しました + プログラムの性質上./toolフォルダではなく./にあります。 + athena.shの変わりにstartで起動するとmap鯖が落ちても10秒程度で復旧します + プロセスは「map」で調べてますが他のプロセスに反応するときは + 「map-server」などに変えてみてください。 + + start + map鯖自動復旧システムのシェルスクリプト + + +-------------- +//0356 by 死神 + +・athena.shを使わなくてもYare-launcherを使えるように変更。(自分試してましたが +一応動きました。でも窓の場合login-server.exeがlogin-server.exに登録されてしまい +Yare-launcherがlogin-server.exe続けて実行する問題があります。これはathenaの +問題ではありませんが...) + comm/makefile以外のmakefile全てを修正。 + athena.sh修正。 + 実行ファイルは.,/athena フォルダーじゃなく./ フォルダーに作られます。 +・ 新規accountの許容するかどうかをlogin_athena.cnfで決めるように変更。(これは + YareCVSを参考した物です。) + login.c + int mmo_auth() 修正。 + login_athena.cnf + new_account 追加。 +・char.c、login.c、inter.c、map.c、battle.cで一部のstrcmpをstrcmpiに変更。 + +-------------- +//355 by ゆう + +・左手装備も考慮した二刀流に修正 + (ダメージ計算のみで見た目等は変更なし) + +map.h + map_session_dataに左手用の変数を追加 + +battle.h + battle_get_attack_element2()追加 + +battle.c + battle_get_attack_element2()追加 + battle_calc_weapon_attack()に +  二刀流の処理を追加修正 +  クリティカルよりダブルアタックを先に判定するように修正 +  過剰精錬の追加ダメージを精錬ダメージの次に処理するように修正 +  (これらは独自に調べたもので間違っている可能性あり) + +pc.c + pc_calcstatus()に左手用の変数に値を入れる処理を追加 + pc_equipitem()の二刀流装備の場所がおかしかったのを修正 + +-------------- +//353 by いど + +・Yare-launcherを使うことが出来るようにMakefileとathena.shを変更 + +-------------- +//352 by 胡蝶蘭 + +・詠唱中にクライアントを終了するとmap鯖が落ちる問題の修正 + skill.c + skill_castend_id(),skill_castend_pos(),skill_castend_map()修正 + map.c + map_quit()修正 + + +・データバックアップ用のツール添付 + Perl製なので実行にはPerlが必要です。 + 使用方法などはエディタで開いて見てください。 + 使い方が良くわからない人は手を出さないほうがいいです。 + データが消えても責任は持ちません + + (tool/) + backup + データバックアップ用Perlスクリプト + +-------------- +//0351 by 死神 +skill.c + skill_use_id()に詠唱反応モンスターの処理を変更。(攻撃状態以外の場合 + 詠唱反応を最優先にします。) +mob.c + mob_ai_sub_hard_castsearch() 詠唱反応モンスターを二重処理して + いたので削除。 + mob_ai_sub_hard() 詠唱反応モンスターを二重処理しないように変更。 +pet.c - 0344に戻しました。(修正は少し分析をしてからにします。) +pet.h - 0344に戻しました。 +char.h + CHAR_CONF_NAME 追加。 +char.c + do_init() 実行する時ファイル名が入力されていないとCHAR_CONF_NAMEを + 使うように変更。 +map.h + MAP_CONF_NAME 追加。 +map.c + do_init() 実行する時ファイル名が入力されていないとMAP_CONF_NAMEを + 使うように変更。 +これでlogin.exe、char.exe、map.exeをathenaフォルダーにコピーした後名前を +login-server.exe、char-server.exe、map-server.exeに変更するとYare-launcherを使う +ことができます。これを使うと鯖が落ちる度に自動的に再実行してくれます。 + +-------------- +//0345 by 死神 +・キャスティング探知実装。 + mob.c + mob_ai_sub_hard_lootsearch() 修正。 + mob_ai_sub_hard() 修正。 + mob_ai_sub_hard_castsearch() 追加。 + mob_target(), mob_ai_sub_hard_activesearch() ボスモンスターを + mvp経験値によって認識するように変更。 + mob_ai_sub_hard_linksearch() 修正。 + mob_attack() 死んだふり、ハイディングをチェックするように変更。 + mob_readdb() 修正。 +・pet.h + MAX_PET_DBを100に変更。 +・pet.c + read_petdb() 修正。 + +-------------- +//0344 by 過去の人i1 +・ ペット腹減り実装およびそのほか色々修正 +・ ペット餌やり実装 + + pet.c + pet_calcrate(struct map_session_data *sd); + ペットの獲得確率計算 + pet_food(struct map_session_data *sd); + ペット餌やりシステム + pet_hungry_change( int tid, unsigned int tick, int id,int data ); + ペットが腹を減るロジック + pet_status_int(struct map_session_data *sd); + 親密度計算 + pet_status_hungry(struct map_session_data *sd); + 満腹度計算 + pet_status_1a3(struct map_session_data *sd); + パケット1a3設定関数 + pet_initstate(struct map_session_data *sd); + ペットが初めて生まれたときの初期ステータス設定 + 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); + を追加 + clif.c + clif_pet_emotion(int fd,struct map_session_data *sd) + 餌をあげたときにエモーションを行う + clif.h + clif_pet_emotion(int fd,struct map_session_data *sd); + +-------------- +//0341 by 死神 +・ルートモンスター実装。 + map.h + LOOTITEM_SIZEを20に修正。 + struct mob_dataにint lootitem_count 追加。 + mob.c + mob_spawn() 少し修正。 + mob_ai_sub_hard_lootsearch() 追加。 + mob_ai_sub_hard() 修正。 + struct delay_item_drop2 追加。 + mob_delay_item_drop2() 追加。 + mob_damage() 修正。 + battle.h + struct Battle_Configにint monster_loot_type 追加。 + battle.c + battle_config_read() 修正。 + battle_athena.cnf + monster_loot_type: 0 追加。(基本的に0になっています。 + 0の場合はLOOTITEM_SIZEまでアイテムを食べても + またアイテムを食べて前のアイテムが消える仕様です。 + 1の場合はLOOTITEM_SIZEまでアイテムを食べると + もうアイテムを食べなくなります。 + +-------------- +//0340 by 死神 +・mvpバグ修正。 + mob.c + mob_damage()でjに変えたはずの物に見落としありましたので + 修正しました。これでmvpアイテムで変な物が出なくなるはずです。 +・class_equip_db.txt + EUC-JISをS-JISに変更。(意味はありませんが他のファイルは + 全部S-JISだったので...単なるミスですが...) + +---------- +//339 by いど + +・338を適用した状態でビルドエラーが発生する不具合を修正 + +---------- +//338 by 過去の人i1 + +・ pet_db.txtに対応しました。 +・ pet_dbをつかったプログラムの書き方に修正しました。 +・ ペットの名前を変更する事が出来ます +・ ペットにアクセサリーをつける事が出来ます。 +・ 現在ペット餌やり進行中 + + (map/) + clif.c/clif.h + ・ pet関連の関数をほぼ修正及び追加いたしました。 + ・ clif_parse_EquipItem()内部でペット用装備であるかどうかの判定を行ってます + ・ clif_parse()を修正しました。 + + battle.h/battle.c + ・ battle_config.pet_rate変数を増やしました。mobに対する卵の獲得率 +   を設定する事が可能となります + + pet.c/pet.h + ・ pet_initstate(struct map_session_data *sd); +  初期のペットステータスを設定する関数です + ・ pet_npcid(struct map_session_data *sd,int egg_name_id); +  ペットに割り当てられたnpc_idを返します + ・ pet_itemid(struct map_session_data *sd,int mob_id); +  モンスターIDから卵のIDを割り出します + ・ pet_equip(struct map_session_data *sd,int equip_id); +  ペットのアクセサリー装備です + ・ pet_unequip(struct map_session_data *sd); +  ペットのアクセサリー解除です + ・ pet_calcrate(struct map_session_data *sd); +  卵獲得確率計算を行い1or0を返します。 + ・ pet_food(struct map_session_data *sd); +  ペット餌やり考案です。まだ正常に動作しません。 + ・ read_petdb() +  pet_db.txtを読み込みpet_db[]に値を入れる関数です + + ・ do_init_pet() +  map鯖初期化でよびだしpet_db[]を使えるようにする為の + ペット情報初期化関数です。 + + map.c/map.h + ・ BL_PET変数を加えました + ・ map鯖初期化の時にdo_init_pet()を呼び出します。 + + mmo.h + ・ s_pet構造体に変数追加。キャラクターがペットのデータを保持する為のシステム +  の為今後も変数はそのつど増加する予定 + + npc.c + 改善しました。 + + (conf/) + battle_athena.cnfに卵の獲得確率pet_rateを加えました。 + +---------- +//337 by 胡蝶蘭 + +・ギルドの追加と修正 + ・ギルドに経験値を上納すると、上納されるEXPが異常な値になるバグ修正 + ・ギルドの敵対関係の追加 + + guild.c/guild.h + guild_payexp()の修正(上納EXP処理) + guild_opposition()追加 + guild_allianceack(),guild_reqalliance(), + guild_reply_reqalliance()の修正 + clif.c/clif.h + clif_guild_oppositionack(),clif_parse_GuildOpposition追加 + +・ディレイ時間がdexの影響を受けるかどうかをbattle_athena.cnfに書けるように + + (conf/) + battle_athena.conf + delay_dependon_dex を追加 + (map/) + skill.c + skill_delay_fix()の修正 + battle.c/battle.h + struct Battle_Configにdelay_dependon_dex追加 + battle_config_read()の修正(読み込み処理も変えてます) + +-------------- +//0336 by 死神 +・スキルインデュアを少し修正。 +・clif.c + clif_skill_damage()、clif_skill_damage2() インデュア合わせて修正。 + (ただスキルや魔法になるとモーションが出ないパケットを + 見つけなかったので完全じゃありません。) + clif_parse_ActionRequest()、clif_parse_UseSkillToId()、clif_parse_UseSkillToPos() + スキルディレイの時にメッセージが出るように修正。 +・バックステップ実装、オリデオコン研究実装。 +・skill.c + skill_castend_damage_id()にあったスキルバックステップの処理を + skill_castend_nodamage_id()に移動しました。 + スキルバックステップの処理でclif_skill_damage2()を呼ぶのをclif_fixpos()を + 呼ぶように変更。(これでダメージのモーションが出ずに + 移動できます。) + バックステップと叫ぶように変更。 + skill_produce_mix() オリデオコン研究適用。武器レベルが3以上の時に + スキルレベル*1%がボーナスとして製造確率に付きます。 + エルニウムの確率判定追加。 +・skill_db.txt - バックステップのnkを0から1に変更。(スキル番号150の物です。) +・produce_db.txt オリデオコン,エルニウムを追加。(これは本鯖にはない物です。 + よってクライアントには必要なアイテムが表示されません。) + オリデオコン研究を少し使える物にするために追加しました。 + オリデオコンの場合はオリデオコン原石3つと石炭1つが必要で + エルニウムはエルニウム原石3つと石炭1つが必要です。 +・pc.c 少し修正。 + pc_heal()pc_percentheal() 少しだけ修正。 + pc_gainexp() ギルドにexpを上納する時にexpがマイナスにならないように + 修正。同時に2つ以上のレベルが上がるように変更。 + 最大レベル以上にレベルが上がらないように修正。 + pc_checkbaselevelup()、pc_checkjoblevelup() 追加。レベルアップを + チェックします。 + pc_itemheal() 追加。アイテムを使う時にVITとスキルによってボーナスが + 付く物です。スキルラーニングポーション実装。 +・pc.h + pc_checkbaselevelup(),pc_checkjoblevelup() 追加。 + pc_itemheal() 追加。 +・script.c - スクリプトfixhealを除去。itemhealを追加。healがfixhealの機能をする + ように変更。 + buildin_fixheal() を消しbuildin_heal()を元の物に戻しました。(つまり + buildin_heal()がbuildin_fixheal()になりました。) + buildin_itemheal() 追加。アイテムによる回復はこれを呼ぶようにして + ください。 + buildin_heal()からボーナスの計算を除去。 +・item_db.txt、 item_db2.txt - healをitemhealに変更。 +・mob.c + mob_damage() 0335でmvpに少し間違いがありましたので修正しました。 +・skill.h + MAX_SKILL_PRODUCE_DBを64から100に変更。 + + +//0335 by 死神 +・char/char2.cの一部にRETCODEが適用されてなかったのでそれを修正。 +・char/char2.cのparse_char()でキャラを消す時に問題がありそうな所を修正。 +・char/cha2.c,login/ login2.cをchar/cha.c, login/login.cに変更。 +・char/makefile,login/makefileを変更。 +・makefileとcommon/mmo.hを変更してOSを自動認識してRETCODEを自動に + 適用するように変更。 +・common/grfio.cのgrfio_init()を修正。(コードをちょっときれい(?)に + しただけですが,,,) +・インデュア実装。よってアンティペインメントも実装。 +・map/clif.c + clif_parse_LoadEndAck() 韓国クライアントのパッチに合わせて少し変更。 + (マップが変わる度に武器とシールドが見えなくなるためです。まだ + 日本クラとは関係ありませんが...) + clif_skillinfoblock() upはいらないと思うので消しました。スキルポイントが + 256、512等の時スキルツリーが正しく表示されないことは + もうありません。 + clif_guild_skillinfo() 同じようにupを消しました。 + clif_birthpet() pc_delitem() 呼ぶように変更。 + clif_damage() インデュアに対応するように変更。 +・map/pc.c + pc_percentheal() マイナスを入れても動くように変更。少し修正。 + pc_heal() 少し修正。 + natual_heal() 少し修正。 + do_init_pc() natual_healの修正に合わせて変更。 + pc_calcstatus() 弓を装備してないとワシの目が適用されないように変更。 + トラスト実装。 + pc_damage() インデュアに対応するように変更。 +・map/pc.h + pc_checkoverhp(), pc_checkoversp()を追加。 +・map/map.h + MAX_PC_CLASSを+1に。 +・map/atcomand.c + comandをcommandに変更。 + strncmpをstrcmpiに変更。よってコマンドが大文字、小文字を区別する + 必要がなくなりました。 +・map/npc.h + npc_parse_mob()を追加。(意味はありませんが...) +・map/temdb.c + itemdb_readdb()でclass_equip_db.txtを読むように変更。 +・db/class_equip_db.txt を追加。ここで装備するクラスを指定します。ない場合は + item_db.txtにあるjobを使います。含まれてる物は完全な物ではなく + 使用例程の物です。 +・map/skill.c - skill_status_change_start() インデュアの時間を正しく変更。 +・map/battle.h + battle_configのexp_rateをbase_exp_rateに変更。,job_exp_rateを追加。 + battle_get_mexp()を追加。 +・map/battle.c + battle_configのexp_rateをbase_exp_rateに変更。,job_exp_rateを追加。 + battle_get_mexp()を追加。 + battle_calc_magic_attack()を変更。ダーンアンデッドでボスの認識をmvp + expでするように変更。 +・map/mob.c + mob_readdb() base_exp_rate,job_exp_rateに対応。 + mob_readdb() ボスの認識をmvp経験値でするように変更。 + mob_damage() mvpを取る時の処理を変更。重さが50%を越えると床に + 落ちるように変更と色々。 +・conf/battle_athena.cnf + base_exp_rate、,job_exp_rateを追加。 +・0308で忘れた物 + 古く青い箱、古いカード帖、古い紫色の箱の使用で得られたアイテムを + 持ってなくなったらアイテムを床に落とすように変更。 + 製造はすでに0302で適用。 + +---------- +//334 by C}{RIS + +・あぷろだの332.txtをpet_db.txtとして同梱。 + +・各種テキストファイルのミスを修正 + ・attr_fix.txt 属性修正がマイナスに働いて敵が回復する問題を修正。 + >元の回復仕様に戻したい場合attr_fix.txtをリネームし、attr_fix_old.txtをattr_fix.txtにリネームして下さい。 + ・mob_db.txt モンスターの日本語名を本鯖と統一。 + ・cast_db.txt 詠唱時間、ディレイを本鯖と統一。 + +---------- +//333 by 胡蝶蘭 + +・ギルド機能追加 + ・ギルドの同盟と同盟解消 + + (char/) + inter.c/int_guild.c + パケット長/ギルド処理追加 + (map/) + clif.c/clif.h + clif_guild_reqalliance,clif_guild_allianceack, + clif_guild_delalliance,clif_parse_GuildRequestAlliance, + lif_parse_GuildReplyAlliance,clif_parse_GuildDelAlliance追加 + (ギルド同盟関係のパケット処理) + intif.c/intif.h + ギルド同盟関係のパケット処理追加 + guild.c/guild.h + ギルド同盟関係の処理追加 + map.h + struct map_session_dataにguild_alliance,guild_alliance_account追加 + +・ギルドエンブレムの変更がマップ鯖を再起動しないと有効にならないバグ修正 + + guild.c/guild.h + guild_emblem_changedの修正 + +---------- +//331 by 過去の人i1 + +・ペットシステム修正(完成度25%) + + ・各種捕獲用アイテムをそれぞれ対応する敵に対して使用することで +  正しく卵が手に入るようになりました。 + ・各種捕獲用アイテムを対応しない敵に使用した場合はルーレットが必ず失敗します。 + ・ペットが瞬時に表示されるようになりました。 + ・ペットを右クリックするとメニューが出るようになりました + ・他色々危険な要素を修正しました。(アイテムの数の減少等のバグを直しました) + + (db/) + item_db.txt + 各種捕獲用アイテムに対応するようpetコマンドを正しく書きました。 + + (common/) + mmo.h + s_pet ペット構造体にpet_item_idを追加 + + (map/) + clif.c + clif_birthpet()を修正。正しく卵が減る、正しい卵のIDを取得するよう修正 + これによって、正しくnpc_pet関数が動きます。 + + clif_spawnnpc()を修正(WBUFPOS(buf,36,nd->bl.x,nd->bl.y)と、数値を26から36へ変更しました) + これによってペットが瞬時に表示されるようになりました。 + + npc.c + npc_pet()を修正。 + + pet.c/pet.h + ペット関連の細かな関数をこちらにまとめる為、追加しました。 + 現在はペットの判定関係をまとめてあります。 + + script.c + 特に大きな修正はありません。 +---------- +//330 by 過去の人i1 + +・ペットシステム導入(完成度20%) + ・敵に対して捕獲用アイテムを使用する事が可能となりました。 +  (まだ熟していないリンゴのみ使用可能、敵につかってもポリンの卵が手に入ります。) + ・各種卵に対してペットを表示する事ができます、ただしなぜか一度画面外に +  でないとペットが表示されません。 +  (恐らくペット表示の際に行っているNPCステータスが正しく入っていない) + ・表示されたペットがパフォーマンスを行います。 + + (db/) + item_db.txt + 携帯卵孵化機を使用可能に bpetコマンド(携帯卵孵化機使用) + 「まだ熟してないリンゴ」を使用可能に petコマンド(あるmobに対して使用可能にする) + (common/) + mmo.h + s_pet ペット構造体追加 + mmo_charstatus ペット構造体宣言変数追加(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); + + 以上の関数を追加しペットに関する処理を行っております。 + (ルーレット、卵選択窓、パフォーマンス、そのほか色々) + + npc.c/npc.h + int npc_pet(struct map_session_data *sd,int name_id); + ペット表示の為の関数を追加 + (この関数内部でペットの表示処理を行っています。適切に修正してください) + + script.c + int buildin_catchpet(struct script_state *st); + int buildin_birthpet(struct script_state *st); + を追加しました。スクリプトにpet,bpetを追加しました。 +---------- +//329 by 胡蝶蘭 + +・ギルド機能追加 + ・ギルドへのEXPの上納 + ・ギルドレベルアップ + ・ギルドスキルの割り振り + + (db/) + exp_guild.txt + ギルドレベルの経験値データベース + (common/) + mmo.h + GBI_*,GMI_*の定義の追加など + (char/) + int_guild.c + EXPやレベルアップ、スキルアップ処理追加など + inter.c + パケット長追加 + (map/) + guild.c/guild.h + ギルド処理追加 + intif.c/intif.h + ギルドパケット処理追加 + clif.c + clif_guild_skillinfo()修正 + clif_guild_skillup()追加 + pc.c + pc_skillup()でギルドスキルの場合はguild_skillup()を呼ぶように + pc_gainexp()で上納EXPのためにguild_payexp()を呼ぶように + +・ギルド機能修正 + ・ギルドメンバーがログインやログアウトすると、 + ログイン中のギルドメンバーにギルド系パケットが送られなくなる問題修正 + + guild.c + guild_recv_memberinfoshort()の修正 + +---------- +//328 by 胡蝶蘭 + +・ギルド機能の追加など + ・追放機能仮実装(追放したキャラも再加入可能&一部情報がダミー) + ・スキルの表示(表示だけです。上げたりは出来ません) + + (common/) + mmo.h + struct guild_explusionの変更 + (char/) + int_guild.c + 追放処理追加 + 空ギルドチェックなど追加 + (map/) + guild.c/guild.h + ギルドスキル関係のアクセサなど追加 + clif.c + clif_guild_skillinfo()の修正 + clif_guild_explusionlist()追加 + +・ターンアンデッドがボス系アンデッドでMISSになるバグ修正 + ・ターンアンデッド失敗時のダメージが使われます + + battle.c + battle_calc_magic_damage()の修正 + +---------- +//327 by いど +・経験値テーブルに1箇所間違いがあったので修正 + db/exp.txt + +---------- +//326 by いど +・char鯖の新鯖,メンテナンス中のフラグ情報を設定できるようにした +・char鯖の鯖名の長さが16バイトになっていた部分を20バイトに修正 + + (login/) + login2.c + parse_login()の修正 + login.h + struct mmo_char_serverの修正 + (char/) + char2.c + check_connect_login_server(),do_init()の修正 + (conf/) + char_athena.cnf +  ・char_maintenanceを1にするとログイン人数の後ろに(点検中)がつく +  ・char_newを1にすると鯖名の前に[新]がつく + (doc/) + パケット解析.txt + ・今回の変更に伴う一部修正 + +---------- +//325 by Mind Twist(224&0293) +・敵(NPC)スキルの追加(ツリーに追加のみ) + db/skill_db.txt + ・ギルドスキル相変わらず不明…この形式じゃないのかな? + +---------- +//324 by non + +・mobのターゲット後移動を修正 +・mobの移動速度をDBから反映させるように + + (map/) + mob.c + mob_ai_sub_hard()の修正 + +・斜め判定を修正 + ・FW等での斜め範囲を本鯖仕様に + + (map/) + map.c + map_calc_dir()の修正 + +---------- +//322 by 胡蝶蘭 + +・ログイン時に必ずパーティーから除名されるバグ修正 + ・0318の「パーティを除名されたのに〜」での修正ミス + + (char/) + int_party.c + パーティー競合時のメッセージに改行追加 + (map/) + party.c + party_check_member()の修正 + +・ギルド会話実装&修正など + (char/) + int_guild.c + ギルド競合時のメッセージに改行追加 + (map/) + guild.c/guild.c + guild_send_message(),guild_recv_message()など追加 + intif.c/intif.h + intif_parse_GuildMessage()など追加 + clif.c/clif.h + clif_guild_message(),clif_parse_GuildMessage()など追加 + clif_guild_basicinfo()のパケットを0150から01b6に変更 + +・バックステップがものすごく怪しいけど仮実装 + ・使うとダメージを1喰らったように見えます。(実際はダメージ0です) + + skill.c + skill_castend_damage_id()修正 + +------------------ +//321 by 過去の人i +・弓矢装備効果のみ実装(多々おかしい点は存在するが装備が出来、矢の効果が出る) + map/clif.c map/clif.h + clif_itemlist()追加 + 持ち物の中で弓矢に割り当てるパケット番号を0x8000とする処理追加 + + clif_arrowequip(struct map_session_data *sd,int val); //self + を追加。この中で弓矢装備パケット処理を行ってます + map/pc.c + pc_equipitem() 弓矢装備追加 + + 残された問題点: + ・ 矢が減らない + ・ リログすると矢が1になる + ・ 装備している矢が表示されない(←多分装備posの設定をしていない為かと) + ・ 矢を装備解除できない(他の矢を装備しなおせば装備した矢の効果になります + +---------- +//320 by いど +・以下のパケットのエラーコードの説明を追加 + doc/パケット解析.txt + R 006a .B + R 0070 .B + R 0081 .B + +---------- +//319 by mk +・NPCとの会話中に装備変更、アイテム、スキルを使用できないようにしました + map/clif.c + 各所でsd->npc_idをチェックしてます + +・一部の被り物でも精錬後に装備箇所がおかしくなるバグを修正 + map/script.c + buildin_successrefitem のコードを修正 + +・カードによる追加効果および異常耐性発動処理の修正 + map/skill.c + インデックス初期値が間違っていると思われるので修正(SC_POISON -> SC_STONE) + +・ボウリングバッシュの仮実装、グリムトゥースの使用条件追加 + ・ボウリングバッシュを仮実装。吹き飛ばし処理やってるので +  battle.c のblewcountをコメントアウトしました + ・グリムトゥースの使用条件(ハイディング&カタール装備)チェック追加 +  こんな感じで他のスキル使用条件も追加してもよいのかな? + ・skill_blown の吹き飛ばし方向をターゲットとの位置が重なっているときは +  ランダムではなくキャラクターを後ろへ吹き飛ばすように変更しました + map/skill.c + skill_castend_damage_id()変更 + skill_check_condition()変更 + skill_blown()変更 + +・アサシン二刀流処理に関する修正? + ・装備一覧へdrag&drop時に両手が赤くマーキングされるように修正 +  アサシンでは武器装備箇所が両手になるようitem_equippointを変更 +  それに伴いpc.cのpc_equipitemを修正 + ・逆手ダメージを表示してみました +  まともにダメージ計算やってないので攻撃回数の確認だけです + ・カタール追撃と左手攻撃のMISSを無理やり表示 + (map/) + itemdb.c (itemdb.h、clif.c、pc.c) + itemdb_equippoint() を変更 (二刀流を考慮) + 引数を(int nameid) -> (struct map_session_data *sd,int nameid)に + 引数変更に伴い宣言(itemdb.h)と呼び出し側(clif.c ,pc.c)も変更 + pc.c + pc_equipitem(), pc_checkitem()装備チェックを修正 + battle.c + battle_calc_weapon_attack(),battle_weapon_attack() + 上にも書きましたが左手のダメージ計算は行ってません + (カード、属性等も未適用)右手と同じダメージ入れて左右修練適用してます + カタール追撃と左手ダメージをミスさせる方法(パケット?)がわからないので + 計算後のダメージが-1の場合、damage=0を送るようにしています + もっとよい方法があるのでしたら修正お願いします + +・完全回避の計算をLukではなくFlee2で判断するように修正 + map/battle.c + battle_calc_weapon_attack() + + (db) + item_db.txt、item_db2.txt + 装備品の一部ボーナス効果を追加 + mob_db.txt + 某所でうpされていたものを少し修正 + まだModeやDropに問題点があるかもしれません + +---------- +//0318 by 胡蝶蘭 + +・ある公平分配PTとそのPTに属さないPCが共闘すると鯖が暴走するバグ修正 + + mob.c + mob_damage()のEXP分配処理修正 + +・パーティを除名されたのに所属しているように見えるバグ修正 + ・該当キャラがログアウト状態の時に除名され、その後、同垢別キャラが + 同パーティに所属しなおし、さらに元のキャラでログインすると、 + 除名判定に失敗してパーティに所属したままであるとされてしまう問題修正 + + party.c + party_check_member()の修正 + + +---------- +//0317 by nabe + +・「〜さんから取引を要請されました。」が自分の名前になっていたのを修正 + trade.c/clif.c/clif.h + clif_traderequest()で取引相手のキャラ名を渡すように変更 + +---------- +//0316 by nabe + +・両手武器を精錬すると片手装備になるバグを修正 + script.c + buildin_successrefitem()で、両手武器の場合等に装備箇所チェック + +---------- +//0315 by 胡蝶蘭 + +・PCのSPAWNタイミングを変更 + ・マップ移動(ログイン)時、ローディング終了後にSPAWNするように。 + ・ロード中に攻撃されたりしなくなります。 + ・ギルド/パーティ情報読み込み前に名前解決パケットが来る問題も + 修正されるはずです。 + + pc.c + pc_setpos()でmap_addblock,clif_spawnpcの呼び出しを止めた。 + clif.c + clif_parse_LoadEndAckでmap_addblock,clif_spawnpcを呼ぶように。 + +・inter鯖パケット処理の重大な問題を修正 + ・一度にパケットを送信できなかった場合、無限ループに陥る問題修正 + + (char/) + char2.c + parse_frommap()修正 + inter.c + inter_parse_frommap()修正 + (map/) + chrif.c + chrif_parse()修正 + intif.c + intif_parse()修正 + +・ギルドの機能追加 + ・他人のエンブレムが見えるように。 + ・ログイン直後の自分のエンブレムが見えるように。 + ・脱退できるように。(追放はまだです) + + <パケット情報引き続き模集> + ・016c,016d,0163,015cなどの詳細な情報 + ・ギルドスキルのIDがわかる人、教えてほしいです。 + 158,205,331あたり調べましたがダメな模様。 + + (common/) + mmo.h + MAX_GUILDを36に。 + (char/) + int_guild.c + 脱退のパケット変更 + inter.c + パケット長修正 + (map/) + clif.c/clif.h + clif_set0078,clif_set007bの修正 + clif_guild_belonginfoの修正 + clif_guild_skillinfo追加 + guild.c/guild.h + 脱退などの処理追加 + intif.c/intif.h + 脱退などの処理追加など + + +---------- +//0314 by いど + +・char鯖とmap鯖の鯖数上限を30に引き上げ + login/login.h + char/char.h + +・map_athena1.cnfをmap_athena.cnfにリネーム + それに伴い、athena.shを変更 + +・パケット解析資料をdoc/に移動 + + +---------- +//0313 by 胡蝶蘭 + +・ギルドの機能追加 + ・ギルド勧誘/役職内容変更/メンバーの役職変更など + ・guild.txtの書式がまた変わりましたが、前のデータも読み込めるはずです。 + + <パケット情報引き続き模集> + ・016c,016d,0163,015cなどの詳細な情報 + ・自分以外のPCの所属ギルドIDを通知するパケット + + (common/) + mmo.h + struct guild を変更 + (char/) + int_guild.c/inter.c + 処理追加/パケット長追加 + (map/) + guild.c/guild.h/intif.c/intif.h + 処理追加 + clif.c/clif.h + ギルド関係のパケット処理追加 + +・help.txtを修正 + help.txt + +・0311による文字化けを修正 + README + map/pc.c + +---------- +//0312 by いど + +・@hコマンドを@helpに変更 +・読み込むマップデータの定義部分を変更 + +---------- +//0311 by tk44 +・Assassin 二刀流装備、ASPD問題修正 + - map\pc.c + pc_equipitem(), pc_calcstatus(), pc_checkitem() + +・二刀流傷害計算修正まだ処理中 + +---------- +//0310 by 胡蝶蘭 + +・ログやデータに使う改行コードをmmo.hで設定可能に + (common/) + mmo.h + RETCODEで改行コードを文字列で定義します。 + Windows系だとCR/LFなので"\r\n",UNIX系だと"\n"です。 + 別に正しく指定しなくてもAthena自体は問題なく動作するはずです。 + (login/) + login2.c + (char/) + char2.c/int_storage.c/int_party.c/int_guild.c + 保存する改行コードをRETCODE依存に変更。 + 改行コードに依存せずに読めるように修正。 + +・クライアントから不明なパケットが来たらダンプするように + ・#define DUMP_UNKNOWN_PACKET 1 をコメント化すればダンプしません。 + + clif.c + 不明パケットの処理でダンプ処理を追加。 + +・ギルド機能の追加 + ・エンブレム変更/告知変更実装 + ・guild.txtの書式が変わりましたが、前のデータも読み込めるはずです + + (char/) + int_guild.c/inter.c + ギルドパケット処理、パケット長 + (map/) + guild.c/guild.h + 機能追加 + intif.c/intif.h + ギルド関係パケット追加 + clif.c/clif.h + ギルド関係パケット追加 + +---------- +//0309 by C}{RIS + +・ボウリングバッシュを範囲攻撃化しました。 +・プロンテラに装備品販売NPCを追加しました。 + map_athena1.cnfの + npc_shop1J.txtをコメントアウトすれば無効に出来ます。 +・アイテムの名前とIDを書いたテキストファイルを添付。(item.list) + +---------- +//0308 by 死神 +・自然回復のプログラムを修正しました。 + これで大丈夫だといいですが... + pc.c + pc_natural_heal()等を修正。 + pc_percentheal()を少し修正。 + pc_checkskill()を少し修正。スキルがない場合0を返すように + 変更しました。他の.cファイルも修正する必要がありましたので + 修正しました。 +・4人目と5人目のキャラを消せない問題を修正。 +・始めからナイフとコットンシャツを持つように変更。 +・LOOK_SHEILDをLOOK_SHIELDに修正。 +・mmo_charstatusのsheildをshieldに修正。 +・.logファイルやaccount.txtファイルをnotepadで開くと列が全部繋いでいる + 問題を修正。 +・乱数を時間によって初期化するように変更。 + map.c + do_init()を少し修正。 + +他に変更したファイルもありますが全部覚えてませんので... + +---------- +//0307 by 胡蝶蘭 + +・新規PCの初期位置をchar_athena.cnfに書けるようにした + start_point: マップ名,x,y のように指定します。 + <例> start_point: new_1-1.gat,53,111 + + (char/) + char2.c + +・ギルドの一部機能 + ・ギルド作成くらいしか動きません + ・勧誘/脱退/解散/情報の変更/エンブレム/告知などはすべて未実装です + + <切実な要望> + ギルド関係のパケット情報が全然足りません。わかる人は教えてください。 + 現在のままではエンブレムと告知くらいしか実装できない可能性が…。 + + (common/) + mmo.h + ギルド関係の構造体と定数追加 + (char/) + inter.c + パケット長情報追加 + int_guild.c/int_guild.h + 実際の処理追加 + (map/) + map.h + struct map_session_dataにギルド関係のメンバ追加 + guild.c/guild.h + 新規追加。ギルド機能用 + pc.c + pc_authok()でギルド所属時、guild_request_info()を呼ぶように。 + clif.c/clif.h + ギルドパケット追加 + intif.c/intif.h + ギルドパケット追加 + +・0303での修正「MAXHPなどがサーバーとクライアントで〜」を元に戻した + ・新PCを作るときに正しくHPなどを計算してくれるようになったので + 戻しても平気だろうと予測。 + ・ログイン直後に重量警告が出てしまうため。 + + pc.c + pc_authok()の修正 + +・範囲指定沸きの処理修正 + ・できるだけ指定した数と同じだけ沸くように + (障害物などによる沸き妨害の回避失敗時、前の回避結果を使う) + + mob.c + mob_once_spawn_area()の修正 + +---------- +//0305 by いど +・新規PCの位置を初心者修練場に変更。 +・map鯖がchar鯖に接続できない不具合の修正。 + +---------- +//0304 by 死神 +・自然回復の量と時間を変更。韓国鯖に適用されてる物ですが日本にも + 適用されてるはずです。(多分... やってませんのでわかりません。汗) + HPは毎4秒に 1 + vit/6 + max_hp/200 を回復、 + SPは毎8秒に 1 + int/6 + max_sp/100 を回復します。 +・スキルHP回復力向上による回復を + スキルレベル*5 + max_hp/50に変更。 +・スキルSP回復力向上による回復を + スキルレベル*3 + max_sp/50に変更。 +・スキル移動時HP回復実装。 + 今の所止まってるのと比べて1/4の量を回復します。(時間は同じです。) +・vitとintによって回復時間が短くなるのではなく回復量が増えます。 +・最大HPと最大SPの計算公式を変更。 + map.h + int inchealtickの変わりにint inchealhptick;と int inchealsptick;を追加。 + int parame[6] を追加。最大SPの計算の為の物で装備によって上がった + パラメータを持っつ。 + pc.c + pc_hpheal(),pc_spheal(),pc_natural_heal_sub(),pc_natural_heal()を + 自分のコードに書き換えましたが一応正常に動きますが + 他のコードに影響がないかどうかはわかりません。 + pc_additem()を少しだけ修正。 + hp_coefficientをintからdoubleに変更。 + pc_calcstatus()とpc_readdb()を修正。 + job_db1.txt + 職業の計数を変更しました。(クルセイダー等のデータは + 完全な物じゃありません。) + +・char2.cを少しだけ変更。 + char2.c + make_new_char()を少しだけ変更。(作った直後にHPとSPが完全に + 回復してるように変えました。) + parse_char()を少しだけ修正。韓国のクライアントで繋いても + 異常がないようにしました。(0x187パケットの処理を入れただけ + ですが... これはYareから持ってきた物です。) +・strcmpi等のdefineをatcomand.hからmmo.hに移動しました。 + atcomand.h, mmo.h 修正。 +・回復アイテムを使用する時vitとスキルHP回復力向上によるボーナスが付く + ように変更。ボーナスは + 回復量 *(1 + HP回復力向上スキルレベル*0.1 + vit/100) + になります。 +・イグドラシルの実とイグドラシルの種を仮実装。(回復はしますがエフェクトが + 出ません。item_dbでタイプを変えても駄目でした。) + script.c + buildin_fixheal()とbuildin_percentheal()を追加。 + buildin_fixheal()はbuildin_heal()がスキルとvitによって回復量が変わる + 仕様になったので元のbuildin_heal()の名前だけを変えた物です。 + buildin_percentheal()は入力された数字を%としてHPとSPを最大HPと + 最大SPを %比率に回復します。 + スクリプトfixheal 、 percentheal 追加。使用方法はhealと同じです。 + fixhealはvitとスキルHP回復力向上によるボーナスがない物で + percentheal は後の数字を %に認識します。 + pc.h + pc.c + pc_percentheal()を追加。 + item_db.txt、item_db2.txt + イグドラシルの実とイグドラシルの種を変更。 + +---------- +//0303 by 胡蝶蘭 + +・*.grfのパスをmap_athena.cnfにも書けるようにした。 + ・map_athena.cnfに「data_grf: ../data/data.grf」や + 「sdata_grf: ../sakurai/sdata.grf」のようにパス指定できます。 + ・grf-files.txtがある場合そちらの設定が優先されます + + (common/) + grfio.c/grfio.h + grfio_setdatafile(),grfio_setsdatafile()追加。 + data_file,sdata_fileをファイルローカルなグローバル変数に変更。 + +・@stpoint,@skpointに負値指定の範囲チェックを追加 +・@zenyコマンド追加(ゼニーの調整) +・@str,@agi,@vit,@int,@dex,@lukコマンド追加(基本パラメータ調整) + + atcommand.c + @stpoint,@skpoint修正 + @zeny,@str,@agi,@vit,@int,@dex,@luk追加 + +・メマーナイトを使うとぼったくられていた問題を修正 +・武器製造部分のコードを多少変更 + ・材料消費処理をアイテムが複数インデックスに分かれている場合に対応させた + (3万個限界を超えると別インデックスを使う仕様だった気がするので) + ・失敗時にも周りに通知するようにした + + skill.c + skill_check_condition()の修正 + skill_produce_mix()の修正 + +・武器製造確率をconfファイルで倍率指定できるように修正 + + (conf/) + battle_athena.cnf + weapon_produce_rate追加 + (map/) + skill.c + skill_produce_mix()の修正 + +・武器ATKサイズ補正テーブルを外部から読み込むようにした +・精錬成功確率/精錬ボーナスなどを外部から読み込むようにした +・過剰精錬ボーナスによる追加ダメージ実装 + + (db/) + size_fix.txt + サイズ補正テーブル + refine_db.txt + 精錬関係データ + (map/) + pc.c + pc_readdb()で読み込み + battle.c + battle_calc_weapon_attack()に過剰精錬ボーナス処理追加 + +・MAXHPなどがサーバーとクライアントで違う値に見えるバグ修正 + ログイン直後のステータス計算の結果を直ちに送信するようにした + + (map/) + pc.c + pc_authok()でのpc_calcstatus()のフラグを0にした + これでpc_calcstatus()のフラグパラメータは未使用? + +・item_dbの「忍者ス−ツ」を「忍者スーツ」に修正 + (db/) + item_db.txt/item_db2.txt + 忍者スーツの名称変更 + +・ログイン人数を調べるツールを添付 + Perl製なので実行にはPerlが必要です。 + 使用方法などはエディタで開いて見てください。 + 使い方が良くわからない人は手を出さないほうがいいです。 + + (tool/) + getlogincount + ログイン人数所得Perlスクリプト + +---------- +//0302 by 死神 +・アイテム製造 確率判定実装。 + 鉄の場合成功率は + (20 + base_level*0.3 + DEX*0.2 + LUK*0.1 + 要求スキルレベル*6)% + 鋼鉄と属性石、星のかけらの場合 + (10 + base_level*0.3 + DEX*0.2 + LUK*0.1 + 要求スキルレベル*5)% + 武器は + ((2.5 + base_level*0.15 + DEX*0.1 + LUK*0.05 + 要求スキルレベル*5 + + 金敷 - 属性石と星のかけら) * (1 - (武器レベル - 1)*0.2) + + スキル武器研究レベル*1)% + 金敷: ない場合 -5%で金敷は 0%、オリデオコンの金敷は + 2.5%、黄金の金敷は 5%、エンペリウムの金敷は 7.5% + 属性石と星のかけら: 属性石がある場合 5%で更に + 星のかけらの数 * 5%を足します。 + になりますがちょっと確率が低すぎる気もしますので + 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 + 程度に変えた方がいいかも知りません。 + skill.c + skill_can_produce_mix() と skill_produce_mix() を修正。 + produce_db.txt + 星のかけらをスキル属性石製造が必要に変更。 +・*.grf等を設置せずディレクトリからの読み込むように修正。(これはYareから + 持ち込んだ物ですが...) + grfio.c + grfio_init()を修正。 + grf-file.txt + 新規追加。grfファイルがあるディレクトリ設定用。 +・読み込むマップの最大数を512に修正。 + mmo.h + MAX_MAP_PER_SERVERを384から512に修正。 +・pc.cにpc_search_inventory()を追加。 + 機能はitem_idのアイテムを持ってるかどうかを確認して + 持ってる場合そのindexを返す。 + item_idが0の場合は空けてる所のindexを返す。 + pc_additem()とpc_takeitem()だけを少し修正。 +・GMコマンドに@stpointと@skpointを追加。 + @stpoint 数字 - ステータスポイントを上げる。 + @skpoint 数字 - スキルポイントを上げる。 + atcomand.c + 修正。 + atcomand.h + strcmpi等をLinuxでも使えるように修正。 + +---------- +//0301 by 胡蝶蘭 + +・最大HPが32767を超えると異常な値になる問題の修正 +・Lvが99を超えるときもエフェクトを出すようにした(自分には見えない模様) +・配置MOBによるイベントでイベント名が4バイト以上という制限をつけた +・teleport時に取引中断、チャット退室、倉庫保存処理をするようにした + + pc.c + pc_calcstatus()の修正(HP計算) + pc_setpos()の修正(取引中断など) + clif.c + clif_set0078(),clif_set007b(),clif_spawnpc()の修正(Lv99エフェクト) + npc.c + npc_parse_mob()の修正 + +・@hでhelp.txtが読めないときに落ちるバグ修正 +・@lvup/@joblvupで負値を入れるとLvダウンが可能になった + + atcommand.c + @h,@lvup,@joblvup処理の修正 + +・テレポートなどの消滅エフェクトの修正 + + skill.c + テレポの消滅エフェクトを変更 + +・状態異常に関するスクリプト実装 [sc_start]と[sc_end]。 +・緑POT、緑ハーブなど実装 +・装備ボーナスデータ追加 + + (db/) + item_db.txt/item_db2.txt + 装備ボーナスデータを追加 + 緑POT、緑ハーブなどのスクリプト追加 + (map/) + script.c + buildin_warp()で消滅エフェクトを変更 + buildin_sc_start(),buildin_sc_end()追加 + +---------- +//0299 by 胡蝶蘭 + +・NPCイベントでエクスポートされたラベルを指定できるようにした + NPCスクリプトでOn〜で始まるラベルを定義すると、エクスポートします。 + NPCイベントで"NPC名(orイベント名)::ラベル名"とすると、 + 指定したラベルから実行できます。 + ラベル名は24バイト以内にして下さい。 + あとプログラム的にメモリ効率悪いです。後日修正予定 + <例> + NPC「test」のスクリプト内で OnEvent: とラベル定義した場合、 + NPCイベント「test::OnEvent」で指定位置から実行できます。 + + (conf/) + npc_test_ev.txt + ラベル指定のサンプルもちょこっと追加 + (map/) + script.c/script.h + script_get_label_db()などの追加。 + parse_scriptでscriptlabel_dbにラベルデータを追加する + npc.c/npc.h + npc_event_export()など追加 + npc_parse_scriptでラベルデータをエクスポートする + map.h + struct map_session_data のeventqueueのイベント名のサイズを + 50バイトにした。 + +・AGIとDEXによるASPD計算の最大値を180から190に変更 + pc.c + pc_calcstatus()のASPD計算修正 + +・skill_db.txt/cast_db.txtの読み込みをskill.cに変更 + + pc.c + pc_readdb()の修正 + skill.c + skill_readdb()の追加 + +・アイテム製造仮実装 + 確率判定が未実装です。必ず成功します。 + + (db/) + item_db.txt/item_db2.txt + アイテム製造に対応(携帯用溶鉱炉、金槌など) + produce_db.txt + 新規追加。製造リスト。 + (map/) + skill.c/skill.h + struct skill_produce_db追加 + skill_readdb()でproduce_db.txtを読むように + clif.c/clif.h + clif_skill_produce_mix_list(),clif_parse_ProduceMix()追加 + script.c/script.h + 製造用コマンド[produce]作成。 + 引数は製造用数値で、1-4が武器製造(Lv)、16が鉱石 + + +---------- +//0298 by 胡蝶蘭 + +・Login鯖のパスワード暗号化タイプを自動認識できるように変更 + login.hのPASSWORDENCを3にすると自動認識します。 + 最初にpasswordencryptでチェックし、失敗すれば + passwordencrypt2でチェックします。 + + (login/) + login2.c/login.h + 暗号化パスワードの照合部分を修正 + +・アカウント作成ツールを添付 + Perl製なので実行にはPerlが必要です。 + 使用方法などはエディタで開いて見てください。 + 使い方が良くわからない人は手を出さないほうがいいです。 + + (tool/) + addaccount + アカウント作成ツールPerlスクリプト + +・スキルの追加修正 + ・ファイヤーウォールの回数制限をグループ毎からユニット毎に修正 + ・クァグマイア仮実装 (敵の移動速度、キャラの表示数値は変化せず) + ・ウォーターボール仮実装(動作が正しいのか不明) + ・フロストノヴァ仮実装(エフェクトが良くわからないので適当) + ・ベノムダスト仮実装(範囲とかが正しいかどうか不安) + ・プロボック、オートバーサーク、聖体降福、砂まき、石投げの実装 + ・エンチャントポイズンの毒付与実装 + + *注意* 毒状態は見た目だけで効果は未実装 + + (db/) + skill_db.txt + 砂まき/石投げ/ウォーターボールなど修正 + (map/) + skill.c/skill.h + 色々修正 + mob.c/mob.h + mob_target()追加。MOBのタゲ用 + battle.c + battle_get_*()系修正など + pc.c + pc_calcstatus()修正 + +---------- +//0297 by 胡蝶蘭 + +・Login鯖がパスワード暗号化に対応 + 暗号化keyは鯖起動時に一度だけ作成します。 + + **注意** + 暗号化パスワードを使っている場合は、アカウントを作成できません。 + アカウントを作る場合はclientinfo.xmlを編集するなどして、 + パスワードを暗号化しないクライアントを使う必要があります。 + + (login/) + login2.c/login.h + 暗号化パスワードのパケット処理追加 + 暗号化keyの生成処理追加 + md5calc.c/md5calc.h + 新規追加。md5計算用 + + +・スキル使用ディレイにDEXが反映されないように修正 + skill.c + skill_delay_fix()の修正 + +・死亡後も一部の状態異常の効果が持続する問題を修正 + pc.c + pc_damage()で死亡時にpc_calcstatus()を呼ぶように修正 + atcommand.c + 死亡時処理を一本化するため@dieではpc_damageを呼ぶように修正 + + +---------- +//0295 by 胡蝶蘭 + +・クレイモアートラップなどにスキルを使うとマップ鯖が落ちる問題の修正 + + battle.c + battle_get_*()などでBL_PC,BL_MOBじゃないときの処理を追加 + skill.c/skill.h + skill_unit_ondamage()追加 + +・約21Mzを超えるアイテムをNPCで扱うときOC,DC計算で値段がおかしくなるバグ修正 + DCでは20Mz、OCでは70Mzを超えるアイテムはdouble型にして計算します + + pc.c + pc_modifysellvalue(),pc_modifysellvalue()の修正 + +---------- +//0294 by 胡蝶蘭 + +・スクリプトコマンドでエリア指定のMOB沸き命令を作成 + areamonster "マップ名",x0,y0,x1,y1,"MOB表示名",MOBのclass,数,"イベント名" + 座標指定が(x0,y0)-(x1,y1)の任意ポイントになるだけで他はmonster命令と同じです + + script.c + buildin_areamonster()追加 + mob.c/mob.h + mob_once_spawn_area()追加 + +・アイスウォールの鯖側処理仮実装 + 攻撃できないなどの問題はあるものの、鯖側ではとりあえず動きます。 + ただ、クライアントに進入不可能エリアを教えるパケットがわからないので、 + 鯖側ではIWの回り込みを行う場合でも、クライアント側ではすり抜けている + ように見えます。 + + skill.c + 該当処理追加など + +---------- +//0293 +・2-2次職のスキルコメントの修正(一部追加) + (db/) + skill_db.txt + skill_tree.txt + + +---------- +//0292 by 胡蝶蘭 + +・SHOP NPCに話し掛けるとNPCが反応しなくなる問題のまともな?修正Part2 + ・売買できなかった問題修正 + + map.h + struct map_session_data にnpc_shopidメンバ追加 + npc.c + npc_click()など修正 + +・スクリプト命令追加 + ・指定エリアのユーザー数の所得 + getareausers("マップ名",x0,y0,x1,y1) + 指定マップの(x0,y0)-(x1,y1)にいるPCの数を計算 + ・指定エリアのユーザーのワープ + areawarp "転送元マップ名",x0,y0,x1,y1,"転送先マップ名",x,y; + 指定マップの(x0,y0)-(x1,y1)にいる全PCを指定マップの(x,y)に転送。 + + script.c + buildin_areawarp(),buildin_getareausers()追加 + +・スキル修正 + ・テレポート使用時に「テレポート!!」と叫ぶように。 + ・ストーンカースの成功率が低いのを修正 + + skill.c + skill_castend_nodamage_id()修正 + +---------- +//0291 by 胡蝶蘭 + +・スクリプト命令追加 + ・NPCの有効無効が切り替えられるようになりました + disablenpc "NPC名"で無効化、enablenpc "NPC名"で有効化。 + NPC名が重複しているときの動作は不定です。 + 主にワープポイントを無効化するときに使います。 + + ・タイマーのカウントを変更するスクリプト命令追加 + addtimercount "イベント名",ミリ秒 + で、タイマの期限を延ばせます(負値を指定して減らすことも出来ます) + + ・アナウンスの拡張 + mapannounce "マップ名","アナウンス文字列",フラグ + で指定マップにアナウンスを流します。フラグは0で黄色、16で青です。 + areaannounce "マップ",x0,y0,x1,y1,"文字列",フラグ + で指定マップの(x0,y0)-(x1,y1)のエリアにアナウンスを流します。 + フラグはmapannounceと同じで、0で黄色、0x10で青です。 + + (conf/) + npc_test_arena.txt + サンプルの修正 + (map/) + script.c + buildin_disablenpc(),buildin_enablenpc(), + buildin_mapannounce(),buildin_areaannounce(), + buildin_addtimercount()の追加 + npc.c/npc.h + NPCの有効無効処理追加 + map.h + struct npc_dataにflagメンバ追加(1ビット目が無効フラグ) + clif.c + clif_getareachar_npc()の修正 + pc.c/pc.h + pc_addeventtimercount()追加 + +・SHOP NPCに話し掛けるとNPCが反応しなくなる問題のまともな?修正 + SHOP NPCと取引中でもイベントが起こるようになります。 + これはROの仕様上避けるのが難しいためこのような結果で落ち着きました。 + + npc.c + npc_click()等の修正 + +・スキッドトラップで残像が残る問題修正 + skill.c + skill_blown()でclif_walkok()などを呼ぶように。 + skill_unit_onplace()のclif_fix*pos()を削除。 + +---------- +//0290 by 胡蝶蘭 + +・スクリプトでMAP鯖内共有変数が使えるようになりました。 + 変数名を$で開始すると、MAP鯖内の全員で共有する変数になります。 + + 言葉の問題ですが、PCのglobalregは「大域的」というより「永続性のある」 + 変数であって、MAP鯖内共有変数のほうが大域的ってイメージが強いんですが… + + script.c + mapval_db定義 + buildin_set(),buildin_input()の修正 + do_init_script()追加 + map.c + do_init()でdo_init_script()を呼ぶように。 + +・イベントキューが実装されました + ・キューサイズは2です。必要なら増やしますが。 + + サンプルの[ev_doテスト]がちゃんと動くようになったと思います。 + + map.h + struct map_session_dataにeventqueueメンバ追加 + npc.c + npc_event_timer()追加 + script.c + run_script()でEND処理でキューの処理追加 + +・スクリプトでタイマーが使用できるようになりました + 使用方法は、addtimer ミリ秒,"イベント名" でタイマー追加、 + deltimer "イベント名" でタイマー削除。 + + (common/) + timer.c/timer.h + get_timer(),addtick_timer()追加 + (map/) + map.c/map.h + struct map_session_dataにeventtimerメンバ追加 + map_quit()でpc_cleareventtimer()を呼ぶように。 + pc.c + pc_addeventtimer(),pc_deleventtimer(),pc_eventtimer(), + pc_cleaereventtimer()追加 + pc_authok()でeventimerの初期化 + script.c + buildin_addtimer(),buildin_deltimer()追加 + +・スクリプトの追加 + ・getusers,getmapusers,killmonsterの追加 + getusers(x)はユーザー数所得、x=0でPCのMAP,1=全MAP,8=NPCのMAP。 + getmapusers("マップ名")は指定マップのユーザー数を所得する。 + killmonster "マップ名","イベント名"で該当のマップにいる、 + 該当のイベント駆動指定モンスターを全て削除。 + ・announceコマンド拡張 + フラグの0x08ビットが1ならマップやエリア計算にPCでなくNPCを使う + + mob.c/mob.h + mob_delete()追加 + script.c + buildin_getusers(),buildin_getmapusers(), + buildin_killmonster()追加 + clif.c/clif.h + clif_GMmessage()の引数変更 + +・イベントサンプル追加 + 簡単なアリーナのサンプルを追加。 + + (conf/) + npc_test_ev.txt + 従来のサンプルの修正 + npc_test_arena.txt + 簡単なアリーナのサンプル + ワープポイントの無効化コマンドなどが必要と思われる。 + +・SHOP NPCに話し掛けるとNPCが反応しなくなる問題修正 + + npc.c + npc_buylist(),npc_selllist()修正 + +---------- +//0289 by 胡蝶蘭 + +・イベント駆動型スクリプトの修正など + ・他のNPCに話し掛けているときはイベントが無視されるようになりました + =>キューに入れるなどの処理がいると思われる。 + + この関係で、サンプルの[ev_doテスト]NPCをクリックしても + IDエラーが出て何も起きません。イベントキューを作れば直るはず。 + + npc.c + npc_event(),npc_click()にnpc_idチェックを追加 + script.c + 終了時にnpc_idをクリアするように + +・スクリプトコマンド[announce]の追加 + ・GMメッセージによるannounce。 + 第1引数は文字列、第2引数はフラグで、 + フラグの下位4ビットが0=全て、1=同じマップ、 + 2=画面内、3=自分のみ、4=同じマップ鯖に送信。 + フラグの4ビット目は色フラグで、0x10=青、0x00=黄色 + + script.c + buildin_announce()の追加 + clif.c + clif_send()でSELFの処理追加 + clif_GMmessage()の引数変更 + intif.c + intif_GMmessage()の引数変更 + +・メモ禁止、テレポ禁止、セーブ禁止マップが指定できるようになりました。 + ・NPCで、mapflagというタイプで、名前を nomemo 、 noteleportで + メモとテレポ禁止。nosave で、引数にセーブするマップ名と座標を指定。 + + 詳しくは同梱のconf/npc_test_ev.txtを参照。 + + (conf/) + npc_test_ev.txt + 修正 + (map/) + map.h + struct map_data にflag,savemap,savex,saveyメンバ追加 + npc.c + npc_parse_mapflag()追加 + do_init_npc()の修正 + pc.c + pc_memo()でメモ禁止かどうかを確認 + pc_makesavestatus()でセーブ禁止ならマップを変更 + pc_randomwarp()でテレポ禁止かどうか確認 + skill.c + テレポとポタでテレポ禁止か確認 + + +・ファイヤーウォールで落ちる問題修正…だといいな + + skill.c + さらにチェックを追加 + skill_blown()に落ちる原因っぽいもの発見したので修正 + +---------- +//0288 by 胡蝶蘭 + +・自動鷹発動時に「ブリッツビート!!」と叫ばなくなりました + skill.c + skill_attack(),skill_additional_effect(), + skill_castend_damage_id()の修正 + +・イベント駆動型スクリプトが記述できるようになりました +・モンスターを倒したときにイベントスクリプトを動かせるようになりました + + NPC定義のscriptで表示クラスを-1にするとイベント扱いになります。 + NPC定義のmonsterにイベント名を設定できます。 + スクリプトのmonsterコマンドにイベントを起こす引数追加。 + 詳しくはサンプルを見てください。 + 今後タイマーでイベントを起こせるようにしようと思っています。 + + 現状では、NPCウィンドウ操作中にイベントがおきて、 + そのイベントのスクリプトでNPCウィンドウを出すと問題が起きます。 + この辺は今後の課題ということで。 + + (db/) + item_db.txt/item_db2.txt + monsterコマンドの変更による修正(古木の枝)。 + (conf/) + npc_test_ev.txt + サンプル + (map/) + npc.c + npc_event()追加 + npc_parse_script()修正 + npc_checknear()修正 + clif.c + clif_getareachar_npc()修正 + map.h + struct mob_dataにnpc_eventメンバ追加 + mob.c/mob.h + mob_once_spawn()の引数変更 + mob_damage()で死亡時にイベントを起こすように + atcommand.h + mob_once_spawn()の引数変更 + script.c + buildin_monster()の修正 + +---------- +//0287 by 胡蝶蘭 + +・モンスター情報スキルでHPが65535を越えていると正常な値が見れないバグ修正 + + clif.c + clif_skill_estimation()の修正 + +・古木の枝アイテムでクライアントがリソースエラーを出す問題が修正されました +・古木の枝アイテムで召喚できる敵が指定できるようになりました + + (db/) + mob_branch.txt + 召喚可能な敵のリスト + (map/) + mob.c/mob.h + struct mob_dataにsummonflagメンバ追加。召喚可能性。 + mob_once_spawn()の修正 + mob_readbranch()の追加 + do_init_mob()でmob_readbranch()を呼ぶように。 + +・古く青い箱、古い紫色の箱が実装されました。 + 一部の未実装アイテムも出ます。item_db.txtにあるデータを検索しています。 + スクリプトgetitemで負の値を指定すると、その絶対値をフラグとして + ランダムにアイテムを選択します。 + + (db/) + item_db.txt/item_db2.txt + 該当部分のスクリプト修正 + (map/) + script.c + buildin_getitem()の修正 + itemdb.c/itemdb.h + itemdb_searchrandomid(),itemdb_searchrandomid_sub()追加 + +・詠唱データの一部修正 + (db/) + cast_db.txt + 速度上昇などの修正 + +・NPCの向き修正など + (conf/) + npc_*.txt + +---------- +//0286 by 胡蝶蘭 + +・モンスター情報スキルでクライアントが落ちるバグ修正 + clif.c + clif_skill_estimation()の修正 + +・詠唱反応モンスターが反応しないことがある問題を修正 + skill.c + skill_use_id(),詠唱反応時、最低追跡距離を13に設定するように。 + +・スクリプトコマンド[warp]でセーブポイント移動やランダム移動が可能になりました +・ハエの羽、蝶の羽アイテムが実装されました + スクリプトwarpでマップ名に"SavePoint"や"Random"が指定できます。 + + (db/) + item_db.txt/item_db2.txt + ハエの羽、蝶の羽のスクリプト修正 + script.c + buildin_warp()の修正 + +・@monsterコマンドによるMOBが復活しないようになりました +・スクリプトコマンド[monster]でMOBを発生させることができるようになりました +・古木の枝アイテムが実装されました + + スクリプト引数は monster マップ名,x,y,MOB名,MOBのID,数 です。 + マップ名が"this"の場合、スクリプトを実行したプレイヤーのいるマップ、 + x,yが-1ならプレイヤーの座標(どちらか一方のみそろえることも可能)、 + MOB名が"--en--"の場合、本来の英語名になり、"--ja--"の場合、 + 本来の日本語名になります。MOBのIDが-1の場合、適当なIDになります。 + + (db/) + item_db.txt/item_db2.txt + 古木の枝のスクリプト修正 + (map/) + mob.c/mob.h + mob_once_spawn()追加 + mob_setdelayspwan()で復活禁止処理追加。 + npc.c/npc.h + npc_get_new_npc_id()追加 + script.c + buildin_monster()追加 + atcommand.c + @monsterの修正 + +・@itemコマンドの修正(装備品などの問題) + + atcommand.c + @itemの修正 + +---------- +//0284 by 胡蝶蘭 + +・障害物があると遠距離攻撃ができなくなりました +・対地スキルが障害物上に使用できなくなりました + + path.c + path_search(),can_move()の修正、can_place()の追加 + battle.c/battle.h + battle_check_range()追加、射程と障害物判定。 + battle_weapon_attack()でbattle_check_range()を呼ぶ。 + skill.c + skill_use_id()、skill_use_pos()でbattle_check_range()を呼ぶ。 + mob.c + mob_ai_sub_hard()の処理を修正 + +・詠唱反応/リンクモンスターが実装されました + skill.c + skill_use_id()に詠唱反応モンスの処理追加 + mob.c + mob_ai_sub_hard_linksearch()の追加 + mob_ai_sub_hard()にリンク処理を修正 + +---------- +//0283 by れあ +・リザレクションの修正 + 0282で生きてるPCにリザがかけれるのに、 + 死んでるPCにはリザがかからなくなって + いたのを修正しました。 + +---------- +//0282 by 胡蝶蘭 + +・スキルの修正と追加実装 + ・キリエエレイソンのエフェクトの問題修正。 + ・リザレクションが生きているPCには掛けられないようになりました + ・ターンアンデッド/攻撃リザレクションがBOSSには効かないようになりました + ・ファイヤーウォールのヒット数制限を実装 + ・ストームガストの実装 + ただし、本鯖と違い凍結は確率のみで、最大ヒット数などが変です。 + + skill.c + skill_castend_nodamage_id()の修正 + ストームガストの処理追加 + +・スキルユニット処理に意地になって安全性チェックを追加。 + (落ちなくなる日は遠い??) + + map.h + MAX_SKILLUNITGROUPを32に増やした + skill.c + skill_status_change_*()にNULLチェック追加 + battle.c + battle_calc_damage()に生存チェック追加 + map.c + map_freeblock_unlock()にロック数チェックを追加 + +・その他修正 + ・PCの最大HPが30000に制限されました。 + ・PCの回復処理が修正されました + ・吹き飛ばし処理の修正 + ・0281のitem_db.txtの変更をitem_db2.txtにも適用 + + (map/) + pc.c + pc_heal(),pc_calcstatus()の修正 + path.c + path_blownpos()の修正 + (db/) + item_db2.txt + 0281の名前修正などを適用 + +---------- +//0280 by 胡蝶蘭 + +・管理者のシステムを作成 + "conf/login_athena.cnf"の作成、管理者パス、GMパスの設定。 + アカウントを作るとき、 + <例> ID: hoge_M Pass: foobar@admin + のように、パスワードの後ろに「@管理者パス」が必要に。 + login_athena.cnfのadmin_passの欄を消せば、今までのようにもつかえます。 + (その場合、admin_passの後ろだけでなく、行ごと消してください) + + (login/) + login.h + 設定ファイルのデフォルト名追加 + login2.c + アカウント作成のところを修正 + 設定ファイルの読み込み追加 + +・@GMコマンド復活 + ただし、「@gm GMパス」として使います。 + GMパスはlogin_athena.cnfのものです。 + 鯖の再起動の必要はありませんが、 + クライアントはリログする必要があります。 + + <注意> + 同じアカウントの全てのキャラはPTから抜けて置いてください。 + また、倉庫のアイテムは全部引き出して置いてください。 + そうしないとゴミデータが残ります。 + + (login/) + login2.c + アカウントID変更処理追加 + (char/) + char2.c + アカウントID変更処理追加 + (map/) + chrif.c/chrif.h + chrif_changegm(),chrif_changedgm()追加 + +・@pvpoffコマンド復活 + clif.c/clif.h + clif_pvpoff()追加 + atcommand.c + @pvpoffの処理追加 + +・空の倉庫データは保存されないように変更 + (char/) + int_storage.c + inter_storage_save()、storage_tostr()を修正 + +・@memoコマンド追加。 + 任意の記憶域にメモを取れるようになりました。 + + atcommand.c + @memoの処理追加 + + +---------- +//0279 by 胡蝶蘭 + +・スキルユニット処理の問題対策 + とりあえずひたすらチェックを入れました。 + + skill.c + skill_unit_timer_sub(),skill_unit_move_sub(), + skill_delunit()にユニットの生存判定を追加。 + skill_unitgrouptickset_search(),skill_unitgrouptickset_delete() + skill_delunitgroup()にNULLポインタチェックを追加。 + +・スキルの追加実装と修正 + テレポート、ワープポータルの実装 + キリエエレイソンをMOBに掛けると落ちるバグ修正 + + (db/) + cast_db.txt + ワープポータルの詠唱時間設定 + (map/) + map.h + struct skill_unit_groupのvalstrをポインタに変更 + clif.c/clif.h + clif_parse_UseSkillMap(),clif_skill_warppoint()、 + clif_parse_Memo(),clif_skill_memo()追加 + skill.c/skill.h + skill_castend_map(),skill_unit_onlimit()の追加 + skill_unit_*系の処理いろいろ追加。 + skill_status_change_start()のキリエの処理修正 + pc.c/pc.h + pc_randomwarp(),pc_memo()追加 + +---------- +//0278 by nabe + +・スキルポイントを振ったときにステータスを更新 + pc.c + pc_skillup()でpc_calc_skilltree()の代わりにpc_calcstatus() +・所持量増加を修正 + pc.c + pc_calcstatus()の所持量増加によるmax_weight増分をskill*1000に + +---------- +//0277 by nabe + +・付属品(カート、鷹、ペコ)の付け外しを改良 + (conf/) + npc_event_rental.txt + 鷹、ペコを付けるスクリプトコマンドを変更 + (map/) + battle.c + battle_addmastery(),battle_calc_weapon_attack()で + ペコペコ騎乗時の槍攻撃力補正を実装 + clif.c + clif_parse_CartOffをclif_parse_RemoveOptionに変更 + pc.c/pc.h + pc_calcstatus()でカート、ペコペコ乗りによる速度変化を計算 + pc_setoption(),pc_setcart()改良 + pc_setfalcon(),pc_setriding()追加 + pc.hにpc_isfalcon(),pc_isriding()マクロ追加 + script.c + buildin_setfalcon() 鷹付加 + buildin_setriding() ペコペコ乗り + +---------- +//0276 by nabe + +・精錬NPC実装 + (conf/) + npc_town_refine.txt + 精錬NPCスクリプトファイル新規追加 + (map/) + pc.c/pc.h + 精錬成功率の表percentrefinery[5][10]を追加 + script.cから呼ばれる関数 + pc_percentrefinery() 精錬成功率 + pc_equipitemindex() 装備品インデックス + を追加 + script.c + buildin_getequipname() 装備名文字列(精錬メニュー用) + buildin_getequipisequiped() 装備チェック + buildin_getequipisenableref() 装備品精錬可能チェック + buildin_getequipisidentify() 装備品鑑定チェック + buildin_getequiprefinerycnt() 装備品精錬度 + buildin_getequipweaponlv() 装備品武器LV + buildin_getequippercentrefinery() 装備品精錬成功率 + buildin_successrefitem() 精錬成功 + buildin_failedrefitem() 精錬失敗 + を追加 + +・スクリプトにWeight,MaxWeightパラメータを追加 + const.txt + Weight,MaxWeightを追加 + +・スクリプトでのキャラ名表示方式を変更 + (conf/) + npc_job_merchant.txt/npc_job_thief.txt/npc_town_kafra.txt + mes "$charaname"; を mes strcharinfo(0); に変更 + (map/) + script.c + buildin_strcharinfo()を追加 + +---------- +//0275 by 胡蝶蘭 + +・MVPの実装 + MVPの判定にはdmglogを使ってます。すなわち与ダメだけが計算対象です。 + 被ダメは考慮されてません。 + 経験値は無条件で入り、確率でさらにアイテムが入ります。 + アイテムは複数手に入ることもあります。 + + clif.c/clif.h + clif_mvp_effect(),clif_mvp_item(),clif_mvp_exp()追加 + mob.c + mob_damage()にMVP処理追加 + +・スキルの追加実装と修正 + ・マグナムブレイク、アローシャワー実装 + ・吹き飛ばし系スキルが一部使用されないバグ修正 + ・ダブルストレイフィングのダメージ計算式修正 + ・武器攻撃系属性付きスキルで属性が反映されない問題修正 + ・場所指定スキルが攻撃しながら詠唱できた問題を修正 + + battle.c + battle_calc_weapon_attack()の該当個所修正&追加 + skill.c + skill_castend_damage_id()に処理追加 + skill_use_pos()に攻撃停止処理追加 + +・カードスキルがカードを外しても使用可能な問題を修正 + pc.c + pc_calc_skilltree()を修正 + +・アイテムドロップ率、exp所得倍率などの調整機能追加 + battle_athena.cnfで調整できる項目が増えました。 + 詳しくはそちらを参照してください。 + + (conf/) + battle_athena.cnf + mvp_hp_rate,item_rate,exp_rate,mvp_item_rate,mvp_exp_rate追加 + (map/) + battle.c/battle.h + 増えた項目を読み込むように処理追加 + mob.c + mob_db.txt読み込み時、データを調整する処理追加 + +---------- +//0274 by 胡蝶蘭 + +・スキルの追加実装 + スキッドトラップ、ランドマイン、ブラストマイン、クレイモアートラップ、 + フリージングトラップ、サンドマン、アンクルスネア + + 睡眠や凍結などの確率は適当です。 + 罠発動時のエフェクトが出ません。ていうか出し方がわかりません。 + わかる人は教えてください。もしくは本鯖で罠発動時の複合化済みの + 生パケットデータでもいいので教えてください。 + + (db/) + skill_db.txt + 属性の修正 + (map/) + skill.c + 該当個所 + battle.c/battle.h + battle_calc_misc_damage()の該当個所 + battle_stopwalking()追加 + clif.c/clif.h + clif_fixpcpos()追加 + clif_parse_WalkToXY()にアンクルで動けなくする処理追加 + mob.c + mob_ai_sub_hard()にアンクルで動けなくする処理追加 + +・装備などのクリティカルボーナスが1/10になっているバグが修正されました + battle.c + battle_calc_weapon_attack()に追加分を計算する処理修正 + +・ブリッツビートの計算式が全然違うバグが修正されました + battle.c + battle_calc_attack()のBF_MISCの処置が間違っていたのを修正 + +・SWとニューマが武器攻撃ならどんなレンジの攻撃でも防いでいた問題を修正 + battle.c + battle_calc_damage()のレンジ判定を修正 + +・オーバートラストとウェポンパーフェクションがPTメンバにもかかるように修正。 + 効果は使用者とPTメンバで違いはありません。 + + skill.c + skill_castend_nodamage_id()の修正。 + +---------- +//0273 by 胡蝶蘭 + +・キャラクターが消失したり幻影が出る問題が修正されました + ・吹き飛ばしスキルを受けると発生していた + ・斜め以外の歩行で発生していた + + map.c + map_foreachinmovearea()の修正。 + skill.c + skill_blown()に表示範囲更新処理を追加。 + mob.c + mob_walk()で歩き終わったときに位置を再送信するように修正 + pc.c + pc_walk()で歩き終わったときに位置を再送信するように修正 + +・スキルの追加実装と修正 + ファイヤーウォール、ファイヤーピラーの実装 + サンクチュアリでのノックバック方向を修正 + + (db/) + skill_db.txt + ファイヤーピラー、ブリッツビートのヒット数修正 + (map/) + skill.c + skill_blown()に対象の向きによるノックバック処理追加 + その他必要な場所修正 + mob.c + mob_walk(),mob_attack()で向きを保存 + pc.c + pc_walk(),pc_attck()で向きを保存 + map.c + map_calc_dir()追加。相対的な方向を求める + + +・クリティカル増加装備が戦闘時に計算されてないバグが修正されました + battle.c + battle_calc_weapon_attack()に追加分を計算する処理追加 + + +・防御ユニット(SW/ニューマ)が敵に影響を及ぼすかどうかを + battle_athena.cnfで制御できるようになりました + デフォルトは「及ぼさない」です。 + + (conf/) + battle_athena.cnf + 項目defunit_not_enemyを追加 + (map/) + battle.c/battle.h + struct Battle_Config に defnotenemyメンバ追加。 + battle_read_config()の処理を修正。 + skill.c + skill_unitsetting()でSW/ニューマの処理を修正 + +・フェンカード装備時、死んでも詠唱が続くバグを修正 + (詠唱終了前に復活すれば魔法が発動する問題も修正になります) + + pc.c + pc_damage()で死亡時skill_castcancel()を呼ぶように修正 + +・敵味方判定処理にバグがあったのを修正 + battle.c + battle_check_target()の修正 + +---------- +//0272 by 胡蝶蘭 + +・スキルの追加実装と修正 + ・セイフティウォール、ニューマが実装されました。 + ・ロードオブバーミリオン発動中に効果範囲外から範囲内に入ってきたとき、 + 敵味方の区別無く攻撃が当たる問題が修正されました。 + ・サンクチュアリの射程が修正されました。 + ・範囲魔法で倒した敵がHP0で残る場合がある問題が修正されました。 + + (db/) + skill_db.txt + セイフティウォールとサンクチュアリの射程を8に変更 + (map/) + skill.c + skill_unit_onplace(),~ondelete(),~onout()などに、 + セイフティウォールとニューマの処理追加。 + skill_unit_move()にターゲットの敵味方判定を追加。 + skill_unit_timer_onplace(),~ondelete()にユニット生存判定を追加. + skill_clear_unitgroup()追加。ユニットグループの全削除をする。 + battle.c + battle_calc_damage()にセイフティウォールとニューマの処理追加。 + map_foreachinarea()など修正 + map.c + map_quit()でskill_clear_unitgroup()を呼ぶように。 + +・スキルの吹き飛ばし処理を実装 + ユピテルサンダー、サンクチュアリ、スピアスタブ、 + ボーリングバッシュ、チャージアローの吹き飛ばし処理実装 + + path.c/map.h + path_blownpos()追加 + battle.c/battle.h + struct Damageにblewcountメンバ追加 + battle_calc_*_damage()でblewcountをセットするように。 + skill.c/skill.h + skill_blown()追加。吹き飛ばし処理。 + skill_attack()でskill_blown()を呼ぶように。 + skill_attack()のflagの吹き飛ばしビットは未使用に。 + +・歩行中のモンスターに攻撃したとき、モンスターにディレイが入るようになりました + (攻撃のモーションの遅延を考えてないのであんまり意味がないかも?) + + (map/) + mob.c/mob.h + stateにMS_DELAYを追加。 + mob_damage(),mob_timer()などの修正 + +・歩行中のモンスターに攻撃したとき、位置がずれる問題の応急処置 + (まだ位置はずれるようです) + + clif.c/clif.h + clif_fixmobpos()を追加 + mob.c + mob_attack()でclif_fixmobpos()を呼ぶように。 + +・その他修正 + pc.c + pc_stop_walking()でpath_lenを初期化するように。 + +---------- +//0271 by れあ + +・PTに関して少しだけ修正 + 公平にしてからキャラを加入させると公平が解除されないバグを修正 + +---------- +//0270 by 胡蝶蘭 + +・スキルの追加実装と修正 + ロードオブバーミリオン、サンクチュアリ、マグヌスエクソシズム + + (db/) + skill_db.txt + マグヌスのヒット数、属性調整 + サンクチュアリの属性調整 + (map/) + map.h + struct map_session_dataの修正 + clif.c/clif.h + clif_skill_setunit(),clif_skill_delunit()、 + clif_getareachar_skillunit(),clif_clearchar_skillunit()追加 + clif_pcoutsight(),clif_pcinsight(),clif_getareachar()修正 + skill.c/skill.h + 忘れるほど多数変更。主にスキルユニット関連部分。 + pc.c + pc_authok()でskillunit,skillunittickを初期化するように。 + pc_walk()でskill_unit_move()を呼ぶように。 + mob.c + mob_spwan()でskillunittickを初期化するように。 + mob_walk()でskill_unit_move()を呼ぶように。 + battle.c/battle.h + battle_calc_magic_attack()修正 + battle_check_target()修正 + map.c + map_foreachobject()など修正 + +・こまかいバグ修正など + ・mobが回復しない問題修正 + + battle.c + battle_damage()修正 + +---------- +//0266 by 胡蝶蘭 + +・魔法計算式の修正 + 魔法倍率をダメージに掛けていたのをMATKにかけるようにしました。 + …こっちが正しいとしていいのかな?違うなら教えてください。 + + battle.c + battle_calc_magic_attack()の修正 + +・スキルの追加実装 + サイト、ルアフ、ロードオブヴァーミリオン + + ロードオブバーミリオンは3回の判定時に詠唱音が鳴ります…。 + clif_skill_damage()のtypeを色々変えてみましたがどうもうまくいきません。 + 直せる人は直してくれるとうれしいです。 + (うーん、ひょっとしたら本来はグラフィックのないスキルユニットを + 設置して、そのユニットのIDでダメージを与えるのかも??) + + (db/) + skill_db.txt + ロードオブバーミリオンのヒット数を3から10に変更。 + (map/) + skill.c + skill_status_change_timer_sub()追加。 + skill_status_change_*()に処理追加。 + +・blockのメモリ解放の安全性の向上 + map_foreachinarea,party_foreachsamemapで回っているときに + blockをチェインから削除すると、うまく回らない可能性がある問題修正。 + さらに、blockをメモリから解放すると危険な問題も修正。 + + ・foreach内で関数を呼ぶ前にblockがチェインから外れてないかチェック。 + ・foreachに入ったときにロックしてメモリから解放されないようにする。 + これはユーザーがfreeじゃなくmap_freeblockによって解放するように + プログラムする必要がある。(ループから呼ばれる可能性のある関数を作る + 場合のことで、普通はfreeでもいちおう動く。) + ・map_foreachinmoveareaについては改良していないが、 + このループでblockを削除することはありえない気がするのでいいとする。 + + これは今後を見越した改良であって、現在の不安定さを直すものではない。 + (現在はforeach内でメモリを解放していない…はずなので。 + ただ、スキルユニットなど一時オブジェクトを多用し始めると効果がある) + + map.c + map_freeblock(),map_freeblock_lock(),~_unlock()追加。 + map_delobject()のfree()をmap_freeblock()に置換。 + map_foreachinareaでロックと安全性チェック。 + party.c + party_foreachsamemap()でロックと安全性チェック + + +・スキルユニット機構実装 + 設置系のスキルのための機構実装。実際のスキルの実装はまだです。 + + skill.c + なんかもう色々追加しました。 + map.c + do_init()でdo_skill_init()を呼ぶように。 + map.h + struct skill_unit,skill_unit_groupなど追加。 + map_session_dataの書き換えなど。 + +・その他細かいところを修正したと思うけど忘れました。 + +---------- +//0264 by nabe + +・$charanameを喋るNPCと話した時、map鯖が落ちることがあるバグを修正しました。 + script.c + replacestr()がおかしかったのを手直ししました。 + +---------- +//0263 by nabe + +・露店開設中にカートアイテムを出し入れできないよう修正 + pc.c + pc_putitemtocart(),pc_getitemfromcart()に、露店判定を追加 + +・露店アイテム購入のチェックを追加 + vending.c + vending_purchasereq()で諸々の条件判定を追加 + +---------- +//0261 by 胡蝶蘭 + +・拡大鏡、イグドラシルの葉が実装されました + スクリプトにitemskillコマンド作成。一時的にスキルが使用できます。 + + (map/) + script.c + buildin_itemskill()の追加など。 + skill.c + アイテムスキルならSPなどを検査&消費しないように修正 + clif.c/clif.h + clif_item_skill()の追加。 + (db/) + item_db.txt/item_db2.txt + スキル使用アイテムのスクリプト修正 + +・パーティスキルの実装 + アンゼルス、マグニフィカート、グロリア、アドレナリンラッシュが + 画面内のパーティ全員に効果を及ぼすようになりました。 + + skill.c + skill_castend_nodamage_id()の該当個所の修正 + party.c + party_foreachsamemap()の修正 + +・スキル関係の修正 + キリエエレイソンが即時発動になっているのを修正。 + ストーンカースでエフェクトが存在しないバグ修正。 + + (db/) + skill_db.txt + キリエエレイソイン修正 + (map/) + skill.c/skill.h + skill_check_condition()追加。スキル使用条件検査の一本化。 + skill_castend_nodamage_id()でストーンカース修正 + +・スクリプトのコードを整理 + get_val()でconst.txtの定数を所得できるように修正。 + + (map/) + script.c + get_val()の修正(const.txtのtype==0の値が所得可能に) + bonus(),bonus2()などの修正。 + (db/) + const.txt + type=1である必要が無いものを0に。 + item_db.txt/item_db.txt + const.txtの変更に伴う修正。 + +---------- +//0260 by 胡蝶蘭 + +・戦闘関係の設定がファイルに書けるになりました + map鯖の第2引数にファイル名が設定されていると、それを使い、 + 設定されてない場合は "conf/battle_athena.cnf"を使います。 + + あと、一応範囲攻撃スキルについて説明。 + 鯖が常にPVPに設定されている場合、パーティメンバじゃないPCにも範囲攻撃が + あたります。嫌な場合はパーティを組むか、常にPVPをoffにして下さい。 + 常にPVPがoffでも、@pvpでpvpフラグを入れた人の間では攻撃が当たります。 + ただし、一度pvpをonにすると、リログするまでonのままなので注意。 + + (conf/) + battle_athena.cnf + 中に説明書いてるので各自好きなように書き換えてください。 + + (map/) + battle.c/battle.h + struct Battle_Configの定義。 + battle_config_read()など追加。 + skill.c + CASTFIX,DELAYFIXの廃止とBattle_Configによる修正の追加。 + atcommand.c + @pvpコマンドでpvpフラグをセットするように。 + (鯖設定の常にPVPがoffの時、両人がpvpをonにしてたら戦闘可能) + map.c/map.h + struct map_session_dataにpvp_flagを追加 + do_init()でbattle_config_read()を読むように。 + +・戦闘関係のコードが少し整理されました + battle.c/battle.h + battle_weapon_attack()追加。 + battle_calc_weapon_attack()の引数変更 + battle_calc_attack()を追加してbattle_calc_*_attack()を一本化。 + skill.c/skill.h + skill_weapon_attack(),~_magic_~(),~_misc_~()の廃止、 + skill_attack()に一本化。 + pc.c/mob.c + 攻撃処理をbattle_weapon_attack()に一本化。 + +・アイテム鑑定スキルを実装 + 商人のスキルの方です。虫眼鏡はまだです。 + + skill.c + スキル処理追加 + pc.c/pc.h + pc_item_identify()追加 + clif.c/clif.h + clif_item_identify_list(),clif_item_identified()追加 + clif_parse_ItemIdentify()追加 + +・スキルデータベースのコメント修正 + (db/) + skill_db.txt + 商人のスキルのコメントがずれていたのを修正 + +---------- +//0259 by れあ +・mob_db.txtの修正 + 亀島モンスターやBOSSのステータス調整 + 亀島モンスに適当にドロップを付けました。 + 本鯖と異なる物を落とす場合もあります。 + +---------- +//0258 by 胡蝶蘭 + +・パーティで一度公平にしたら各自所得に戻せないバグ修正 + (char/) + int_party.c + mapif_parse_PartyChangeOption()の判定修正 + +・スキルの追加実装(主に範囲攻撃系) + ナパームビート(分散対応)、ファイヤーボール、 + サンダーストーム、ヘブンズドライブ、 + ブリッツビート(自動鷹込み)、スチールクロウ + スキンテンパリング + + (db/) + skill_db.txt/skill_tree.txt + 一部修正 + (map/) + battle.c/battle.h + battle_check_target()を追加。対象になるかを検討する。 + battle_calc_magic_damage()の引数変更。ダメージ分散処理追加。 + battle_calc_misc_damage()追加。 + battle_calc_weapon_damage()修正。 + clif.c/clif.h + clif_skill_damage(),clif_skill_damage2()の引数変更。 + clif_skill_poseffect()追加。 + skill.c/skill.h + skill_weapon_attack(),skill_magic_attack()に微妙に処理を纏めた. + skill_area_sub()追加。範囲スキル用。 + skill_area_sub_count()追加。skill_area_sub()用、敵カウント。 + skill_castend_damage_id()修正。引数と処理を追加。 + skill_castend_nodamage_id()修正。引数と処理を追加。 + skill_misc_attack()追加。 + skill_additional_effect()修正(自動鷹) + skill_castend_pos()修正。 + skill_castend_pos2()追加。 + +・弓で攻撃したとき計算にDEXでなくSTRが使われる問題を修正。 + battle.c + battle_calc_weapon_damage()修正。 + +---------- +//0257 by 胡蝶蘭 + +・item_db.txtの職業フラグと、カードの装備個所フラグを修正 + 装備品はI-Athenaのデータを参考にして機械的にコンバートさせました。 + I-Athena側にない装備品は、あきらかに変なのは修正しましたが、 + 知らないものが多すぎて、ほとんど放置です。 + カードは、武器用カードの装備個所が0になってるのを2(左手)に修正。 + 両手武器の場合は別に判定してるので両手武器も問題ないはず。 + + (db/) + item_db.txt/item_db2.txt + 該当個所修正 + +・カード追加実装 + スタンなどの追加効果、それらへの耐性系統、オークヒーローカード実装 + + (db/) + item_db.txt/item_db2.txt + スクリプトの修正 + (map/) + map.h + struct map_session_dataにaddeffなどのメンバを追加 + pc.c + pc_calcstatus()、pc_bonus2()の修正 + pc_attack()でskill_additional_effct()を呼ぶように。 + skill.c/skill.h + skill_additional_effect()でカードによる判定追加 + skill_status_change_start()で耐性を付けた。 + battle.c + battle_calc_weapon_attack()でオークヒーローカード + (クリティカル耐性)の処理を追加 + +・回避判定の修正 + 攻撃者がPCの場合、最大命中率95%制限をなしにしました。 + battle.c + battle_calc_weapon_attack()を修正 + + +・完全回避を実装 + へんてこな処理してます&計算式適当です。 + + battle.c + battle_calc_weapon_attack()に処理追加。 + +・倉庫を開いたままログアウトしたときmap鯖内では開きっぱなしになってる問題を修正 + storage.c + storage_storage_quitsave()を修正 + +・@item,@monster,@produceで名前指定できるように変更 + 英語名、日本語名どちらでもOK。英語の場合は大文字小文字区別しません。 + + atcommand.c + 該当個所修正 + itemdb.c/itemdb.h + itemdb_searchname(),itemdb_searchname_sub()追加 + mob.c/mob.h + mobdb_searchname()追加 + +・@refineで上げる数値を指定できるように変更 + atcommand.c + 該当個所修正 + +・@produceによる製造時のエフェクトを正しいものに修正 + clif.c/clif.h + clif_produceeffect()追加 + atcommand.c + 該当個所修正 + +・露店スキル使用時の処理を少し修正 + skill.c + skill_castend_id()でなく、skill_castend_nodamage_id()で + 露店開設を呼ぶようにした。 + +・stricmpの変わりにstrcasecmpを使うようにした + (_WIN32か__EMX__が定義されているとstricmpを使います) + + (char/) + int_party.c + (map/) + itemdb.c/mob.c + マクロ定義の修正など + +・スキルを少し修正 + グリムトゥースがハイディングで使えない問題修正 + 武器研究の命中修正を実装 + + skill.c + skill_use_id()の修正 + pc.c + pc_calcstatus()で武器研究に従って命中修正 + +---------- +//0256 by nabe + +・露店アイテム購入のバグ修正 + clif.c + clif_vendinglist()で売り切れたアイテムは表示しないように + +---------- +//0255 by nabe + +・露店アイテム購入のバグ修正 + vending.c + vending_purchasereq()でzeny,weight部分修正 + +---------- +//0254 by nabe + +・露店を実装 + vending.c/vending.h + 新規追加。露店メイン処理 + skill.c + skill_castend_id()に露店開設スキル処理を追加 + clif.h/clif.h + 露店関連パケット処理を追加 + map.h + struct map_session_dataに、 + int vender_id; + int vend_num; + char message[80]; + struct vending vending[12]; + を追加 + +---------- +//0253 by 胡蝶蘭 + +・stricmp未定義エラーがでる環境用の修正 + エラーが出た場合、int_party.cの最初のマクロ定義のコメント化のうち、 + どちらかを外してやり直してみると、うまくいくかも。 + 最悪、下を有効にしたらうまくいくはず。(大文字小文字を区別するようになります) + + (char/) + int_party.c + コメント化済みのマクロ定義追加 + +---------- +//0252 by 胡蝶蘭 + +・カードの一部実装 + (ステータス変化全般、武器属性、スキルはすでに実装済み) + 防具属性、詠唱時間変化、属性攻撃耐性、種族耐性、種族追加ダメージ、 + 属性追加ダメージ、サイズ追加ダメージ、MAXHP、MAXSP増減、使用SP変化系、 + フェン、ドレイク、ホルン、深淵の騎士、黄金蟲、オシリスカードを実装 + + (db/) + const.txt + bonus用の定数追加、bonus2の定数も追加 + item_db.txt/item_db2.txt + カードのスクリプト追加 + (map/) + map.h + struct map_session_dataにhprateなど多数メンバ追加 + script.c + bonus2コマンド追加 + buildin_bonus2()追加 + pc.c/pc.h + pc_bonus2()追加 + pc_bonus()の処理追加 + pc_calcstatus()で各種追加メンバの初期化を行うようにし、 + hprateやsprateに従いmax_hp,max_spの調整もするように変更。 + pc_makesavestatus()でオシリスカード修正 + skill.c + skill_castfix()でcastrateに従い、詠唱時間を調整。 + skill_castend_id()でdsprateに従い、使用SPを調整。 + skill_castend_nodamage_id()でカード修正を追加 + battle.c + battle_calc_weapon_attack()でカード修正を追加 + battle_calc_magic_attack()でカード修正を追加 + battle_damage()でフェンカード修正を追加 + +・ステータス割り振りの表示上の問題修正 + STRを上げてもATKが変わらない問題、INTを上げてもMATKが変わらない問題修正 + + map.h + struct map_session_dataにmatk1,matk2メンバ追加 + pc.c + pc_calcstatus()の修正 + clif.c + clif_initialstatus()の修正 + battle.c + battle_calc_magic_attack()の修正 + + +---------- +//0251 by nabe + +・0250のバグ修正など + カートを付けずにログインまたはマップ移動した後にカートを付けると、 + カートの中身が2倍の量に表示されてしまっていたのを修正。 + カートのアイテム数を更新するように修正。 + pc.h/pc.c + pc_iscarton()マクロを追加 + pc_cart_additem(),pc_cart_delitem()にそれぞれ + sd->cart_num++;とsd->cart_num--;処理を追加 + clif.c + clif_parse_LoadEndAck()で、 + カートを付けているときのみカート情報を送信するようにした + +---------- +//0250 by nabe + +・カートOFF、チェンジカート実装。 + (map/) + pc.c/pc.h + pc_setcart()を追加 + script.c + buildin_setcart()を追加 + スクリプトコマンド「setcart;」でカートがつく + clif.c/clif.h + clif_parse_CartOff()追加。(カートをはずす) + clif_parse_ChangeCart()追加。(チェンジカートのカート選択) + (conf/) + npc_town_kafra.txt + カートサービスを「setcart;」に置換 + + +---------- +//0249 by 胡蝶蘭 + +・パーティのデータベースの矛盾を出来るだけ抑えるように。 + 複数パーティに所属してるデータの検査、追加に失敗したときに脱退など。 + + (char/) + int_party.c + party_check_conflict(),party_check_conflict_sub(), + mapif_parse_PartyCheck()追加 + inter.c + パケット長リストに0x3028追加 + INTER鯖パケット.txt + パケット0x3028追加 + (map/) + party.c/party.h + party_check_conflict()追加。 + party_invite()で同アカウント所属チェックを行うように。 + party_member_added(),party_send_movemap()で + party_check_conflict()を呼ぶように。 + intif.c/intif.h + intif_party_checkconflict()追加 + +・パーティの座標、HP通知を実装 + 変化があれば1秒に一回送信。 + + map.h + struct map_session_dataにparty_x,~_y,~_hpの3メンバ追加 + party.c/party.h + party_send_xyhp_timer_sub(),party_send_xyhp_timer(), + party_send_xy_clear(),party_send_hp_check()追加。 + party_recv_movemap()でsd->party_*を初期化するように。 + clif.c/clif.h + clif_sendのPARTY*フラグを有効に。 + (PARTY,PARTY_SAMEMAP,PARTY_AREA,PARTY*_WOSの6種) + clif_party_xy(),clif_party_hp()追加。 + pc.c/pc.h + pc_authok()でsd->party_*を初期化するように。 + pc_walk()でパーティメンバが視界内に入ってきたときに + party_hpを初期化するように。 + +・パーティのexp公平分配を実装 + party.c/party.h + party_share_exp()追加 + mob.c/mob.h + mob_damage()で公平分配処理追加 + +・スキルの修正と追加実装 + バッシュ、ピアースの命中率修正実装 + ピアースのサイズによる回数変動実装(プレイヤーは中型と仮定) + バッシュ、ソニックブロウのスタン効果実装 + ストーンカース、フロストダイバ、インベナム、 + アスペルシオ、エンチャントポイズン、レックスデビーナ実装 + + skill.c + skill_additional_effect()追加 + skill_castend_damage_id()該当個所修正 + skill_castend_nodamage_id()該当個所修正 + skill_use_id(),skill_use_pos()でスキルが使用できないときは + 何もしないように修正。 + battle.c + battle_calc_weapon_attack()の該当個所修正 + battle_get_dmotion(),battle_get_attack_element()修正 + clif.c + clif_mob007b(),clif_mob0078でoptionなどを送るように修正 + pc.c + pc_attack(),pc_walktoxy()で行動不可能なときは何もしないように。 + mob.c + mob_stopattack()修正 + mob_ai_sub_hard()で行動不能なときは何もしないように。 + +・攻撃射程の判定追加 + 相手が移動して届かないときは、移動パケットを送信 + + clif.c/clif.h + clif_movetoattack()追加 + pc.c + pc_attack()で射程判定、届かないならclif_movetoattack()を呼ぶ。 + +---------- +//0248 by nabe + +・パーティ作成時に既にパーティに所属していた場合の処理を追加 + party.c + party_create()に、既にパーティに所属していた場合 + clif_party_created(sd,2)を追加 + +・ディスカウント、オーバーチャージを計算 + pc.c + pc_modifybuyvalue()、pc_modifysellvalue()で値段を計算 + + +---------- +//0247 by 胡蝶蘭 + +・パーティ実装 + 公平分配は設定しても実際には公平分配されてない。 + パーティスキルはまだ自分にしかかからない + + (char/) + int_party.c/int_party.h + まともに実装 + inter.c + パケット長リスト追加 + INTER鯖パケット.txt + パーティのパケット追加 + (map/) + party.c/party.h + 新規追加 + map.c/map.h + struct map_session_dataにparty_sendedメンバ追加 + do_init()でdo_party_init()を呼ぶ + map_quit()でparty_send_logout()を呼ぶ + intif.c/intif.h + パーティ関連の部分追加 + clif.c/clif.h + パーティ関連の部分追加 + clif_parse_LoadEndAck()でparty_send_movemap()を呼び出す + pc.c + pc_authok()でparty_request_info()を呼ぶようにし、 + party_sendedを初期化するように。 + +・詠唱妨害されたとき画面上で詠唱をやめるように修正 + (map/) + skill.c + skill_castcancel()で詠唱中止パケ(合ってるのかな?)を送信 + +・超遠距離攻撃だと敵が反撃してこない問題を修正 + (map/) + map.h + struct mob_dataにmin_chaseメンバ追加(最低追跡距離) + mob.c + mob_attack()でmin_chaseを13に初期化する + mob_walk()でmin_chaseが13より大きいなら少しずつ引いていく + mob_ai_sub_hard()でmin_chaseにより追跡を判断、 + 攻撃を受けた時にmin_chaseを彼我距離+13に設定 + +---------- +//0246 by 胡蝶蘭 + +・カート実装 + map.h + struct map_session_dataにcart_weightなど4つメンバ追加 + pc.c/pc.h + pc_cart_additem(),pc_cart_delitem(), + pc_cart_putitemtocart(),pc_cart_getitemfromcart()追加 + pc_calcstatus()でカート重量や個数などの情報を計算 + clif.c/clif.h + clif_cart_itemlist(),clif_cart_equiplist(), + clif_cart_additem(),clif_cart_delitem(), + clif_parse_PutItemToCart(),clif_parse_GetItemFromCart()追加 + clif_parse_LoadEndAck()でカート情報、内容送信 + clif_updatestatus()でSP_CARTINFOでカート情報を送れるように + clif_parse_MoveFromKafraToCart(),~ToKafraFromCart()追加 + storage.c/storage.h + storage_additem(),storage_delitem()追加 + storage_storageadditemfromcart,~getitemtocart()追加 + storage_storageadd(),storage_storageget()で、 + storage_additem(),storage_delitem()を呼ぶように変更 + +・スキル詠唱ディレイなど実装 + clif.c + clif_parse_WalkToXY()にskilltimerによる移動可否を追加 + clif_parse_UseSkillToId(),clif_parse_UseSkillToPos()に + canmove_tickによる攻撃可否追加 + skill.c/skill.h + skill_castcancel()を追加 + skill_use_id(),skill_use_pos()でディレイ時間計算および、 + canmove_tickの設定 + battle.c + battle_damage()でskill_castcancel()の呼び出し追加 + +・0245のアイテムデータベース修正の通常価格版用意 + (db/) + item_db.txt + item_db2.txtに前のitem_db.txtの価格情報をマージしただけです。 + +---------- +//0245 by れあ + また例によって、相場修正版のみです。 +・item_db2.txtの修正 + 亀島新装備の効果を実装しました。 + ウィザードが杖を装備できないのを修正 + ウィザードがマジシャンハット、とんがり帽を + 装備できないのを修正 +---------- +//0244 by れあ +・mob_db.txtの修正 + 亀島モンスターのデータをいれました。 + ただ、間違ってる部分がかなりあります。 + Speed,Delayは適当です。 + また、わからないのは韓国版のデータなので + Mdefとか異常に高い気も。 +---------- +//0242 by 胡蝶蘭 + +・取引関連の変更と修正 + 取引に使う変数をmmo_charstatusからmap_session_dataに移動しました + + (common/) + mmo.h + struct mmo_charstatusから取引関係のメンバ削除 + (map/) + map.h + struct map_session_dataに取引関係のメンバ追加 + trade.c + 構造体の変更にあわせて修正 + map.c + map_quit()で取引中ならキャンセルするようにした + +・カードの組み合わせ実装 + pc.c/pc.h + pc_insert_card()でカードを実際に挿入する + clif.c/clif.h + clif_parse_UseCard(),clif_parse_InsertCard()追加 + clif_use_card(),clif_insert_card()追加 + +・一部のカード効果実装 + スキル習得カード、ステータスボーナスカードなど。 + + (map/) + map.h + struct map_session_dataに装備カード検索用の変数追加 + pc.c/pc.h + pc_calcstatus()でカードの処理追加 + あるIDのカードが装備済みか検索するための関数、 + pc_equip_card(),pc_equip_wcard(),pc_equip_dcard()を用意 + +・重量オーバー/鷹/騎乗アイコンの表示 + (map/) + pc.c/pc.h + pc_checkweighticon()追加、重量のアイコン処理 + clif.c + clif_updatestatus()で重量送信時にpc_checkweighticon()の実行 + clif_changeoption()で鷹と騎乗のアイコン処理 + +・0241のアイテムデータベース修正の通常価格版用意 + (db/) + item_db.txt + item_db2.txtに前のitem_db.txtの価格情報をマージしただけです。 + + +---------- +//0241 by れあ +・アイテムデータベースの修正 + 新頭装備のグラフィックが異なるのを修正 + 装備の効果の実装 + 上段・中段が間違ってたのを少し修正 + 速報版ってことで間違え多いかも。 + テストもあまりしてません。 + あと、相場調整版しか用意してません。 + + item_db2.txt + 亀島にあわせて調整 + +---------- +//0240 by nabe + +・取引を実装しました。 + (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; + を追加 + (map/) + clif.c,clif.h + clif_traderequest() : 0xe5(取り引き要請受け) + clif_tradestart() : 0xe7(取り引き要求応答) + clif_tradeadditem() : 0xe9(相手方からのアイテム追加) + clif_tradeitemok() : 0xea(アイテム追加成功) + clif_tradedeal_lock() : 0xec(ok押し) + clif_tradecancelled() : 0xee(取り引きキャンセル) + clif_tradecompleted() : 0xf0(取り引き完了) + を追加。 + trade.c,trade.h + trade_traderequest() : 取引要請を相手に送る + trade_tradeack() : 取引要請 + trade_tradeadditem() : アイテム追加 + trade_tradeok() : アイテム追加完了(ok押し) + trade_tradecancel() : 取引キャンセル + trade_tradecommit() : 取引許諾(trade押し) + を実装。それぞれclif.c::clif_parse_Trade*から呼ばれる。 + + +---------- +//0238 by れあ + +・速度変更に関して少し修正 + atcommand.c + 速度変更の部分を少し修正 + これで一応動くみたい? + pc.c + ついでにですが + 速度上昇で歩行速度が上がるようにした。 + 一応動くみたいですが適当なので + おかしなところがあればお願いします。 + +---------- +//0236 by nabe + +・スクリプトでmenuで飛んだ先で直ぐmenuを書くと誤動作するバグを修正しました。 + script.c + goto動作の後のRERUNLINEに対処するため、 + goto,menuで飛んだ後には、st.state==GOTOでrerun_posを更新。 + + +---------- +//0233 by nabe + +・アイテムを装備する際の装備判定を追加しました。 + pc.c + pc_equipitem()に装備判定(性別判定、装備LV判定、職業判定)追加 + +・重量判定スクリプトコマンドを追加しました。 + if (checkweight(アイテムID,アイテム数量)) + でそのアイテム×数量を取得できるかどうか判定できます。 + script.c + buildin_checkweight()を追加 + +・スクリプト詰め合わせをathena dev-2.1.1用に移植しました。 + map_athena1.cnf + npc_event_*.txt イベントNPC + npc_job_*.txt 転職NPC + npc_mob_job.txt 転職用モンスター + npc_town_*.txt 町NPC + + +---------- +//0232 by 胡蝶蘭 + +・装備ボーナスが実装されました + ボーナスに使うスクリプト(bonus,skill)を実装 + スクリプトはI-Athenaのデータを使ってコンバートしました。 + (まだカードには対応していません) + + (common/) + mmo.h + struct skillにflagメンバ追加(カードスキルかどうか) + (map/) + map.h + struct map_session_dataにatk_eleなどのメンバ追加 + enumでSP_ATKELEMENTなど追加 + pc.c + pc_bonus()の実装、pc_skill()追加 + script.c + buildin_skill()の追加 + buildin_bonus()の修正(const.txtの定数が使えるように) + clif.c + clif_skillinfoblock()の修正(カードスキルは上げられない) + (db/) + const.txt + bonusに使うための定数追加 + item_db.txt + 標準のデータに装備スクリプトを追加したもの + item_db2.txt + 0213で相場調整されたデータに装備スクリプトを追加したもの + +・詠唱関係のバグが修正されました + (map/) + skill.c + skill_use_id(),skill_use_pos()を修正 + (db/) + cast_db.txt + 少し追加(ブリッツビートなど) + +・攻撃属性が適用されるようになりました +・星のかけらの修正が適用されるようになりました + map.h + struct map_session_dataにstarメンバ追加 + pc.c + pc_calcstatus()で属性初期化 + battle.c + battle_get_element(),battle_get_attack_element()修正 + battle_calc_weapon_damage()の該当個所修正 + +・杖装備時にMATK+15%が適用されるようになりました + battle.c + battle_calc_magic_damage()の該当個所修正 + +・製造武器のキャラクター名が正しく表示されるようになりました + + 原理としては、map鯖内のキャラクタ名データベースを検索して、 + 存在すれば即返信、存在しなければchar鯖に解決要求を出す。 + このとき、名前を要求してきたクライアントのIDをデータベースに登録する。 + char鯖から名前データがくると、対応するデータベースに名前をセットし、 + 要求してきたクライアントに名前を返信する。 + 未解決の同じキャラID解決を複数のクライアントが要求してきた場合、 + 最後に要求してきたクライアントにしか返信しないが、 + 返信されなかったクライアントは数秒後に再び解決要求を送ってくる + (そしてそのときはmap鯖から即返信される)ので大きな問題はない。 + + パケット0x2b08,0x2b09でmap鯖とchar鯖が通信してます。 + + (char/) + char.h + UNKNOWN_CHAR_NAME定義(キャラデータが無いときに返される名前) + char2.c + parse_frommap()にパケット0x2b08の処理を追加 + + (map/) + chrif.c/chif.h + chrif_searchcharid()追加 + chrif_parse()で0x2b09の処理追加 + map.c + データベース charid_db 宣言 + struct charid2nick宣言。nickは名前、 + req_idは0で名前解決済み、0以外で未解決で解決待ちのブロックID + map_addchariddb()追加。データベースへ名前登録、要求に返信。 + map_reqchariddb()追加。要求があったことをデータベースへ追加。 + map_charid2nick()でデータベースの検索 + do_init()で charid_db の初期化を追加 + clif.c/clif.h + clif_parse_SolveCharName(),clif_solved_charname()追加 + + +---------- +//0231 by nabe + +・スクリプトで mes "$charaname"; 等と書くとキャラの名前をしゃべる機能を追加。 + script.c + buildin_mes()内で + mes内部の$charanameをキャラの名前に置換する処理を追加。 + #同様にして変数の値などをmes内部で表示するようにすることも + #できますが、これについては未実装です・・・。 + #とりあえず + # mes Global_Val; + #のように直接書くことで対処してください。 + +・敵に攻撃されたときにmap鯖が落ちることがあるのを修正。 + battle.c + battle_calc_weapon_attack()の + ディバインプロテクションのスキルチェック部分、 + pc_checkskill(sd,22)を、 + pc_checkskill(tsd,22)に。 + +---------- +//0230 by nabe + +・回避率増加スキルをステータスに反映。 + pc.c + 0228でのpc_calcstatus()の回避率増加分を元に戻しfleeを増加。 + battle.c + battle_calc_weapon_attack()のhitrate計算で回避率保証を計算。 +・グローバル変数を実装。 +  '@'もしくは'l'で始まらない変数名は、全てグローバル変数とみなされます。 + mmo.h + struct mmo_charstatus に + int global_reg_num; + struct global_reg global_reg[GLOBAL_REG_NUM]; + を追加。 + pc.c + pc_readglobalreg(),pc_setglobalreg()を追加。 + script.c + get_val(),buildin_input(),buildin_set()に + グローバル変数のための処理を追加。 + char2.c + mmo_char_tostr(),mmo_char_fromstr()に + グローバル変数のための処理を追加。 + +---------- +//0229 by 胡蝶蘭 + +・一部スキルの実装/修正 + ディバインプロテクション、デーモンベイン、ビーストベイン実装 + エナジーコート修正(魔法による攻撃にはスキルが働かないように修正) + 武器攻撃系スキル修正(エフェクトを通常攻撃からスキルに変更) + + battle.c + battle_addmastery()でベイン系追加 + battle_calc_damage()でエナジーコート修正 + skill.c + skill_castend_damage_id()の武器攻撃系スキルの部分を修正 + +・敵攻撃計算をPCのものと一本化 + これでPCvsPC、PCvsMOB、MOBvsPC、MOBvsMOB(!?)を1つの関数で計算できます + + battle.c/battle.h + battle_calc_weapon_attack()を修正 + battle_calc_weapon_attack_pc(),~mob()を削除 + mob.c + mob_attack()で計算にbattle_calc_weapon_attack()を使うように修正 + +・詠唱時間データがない場合のデフォルトの詠唱時間を0に変更 + 今までは1秒にしてましたが、バッシュとかがおかしくなるので。 + (バッシュとかのデータを用意すればこうしなくても直るんですが) + + pc.c + pc_readdb()で1000msをセットするのを止めた + +・遠距離攻撃してこないバグ、その他を修正 + mob.c + mob_attack()の射程を修正し忘れていた + mob_ai_sub_hard()で射程距離外の時、無移動の敵は + ターゲットを外すようにした + + +---------- +//0228 by nabe + +・ダブルアタックのSkillIDを修正。 + battle.c + battle_calc_weapon_attack_pc()で + pc_checkskill(sd,49) -> pc_checkskill(sd,48)に。 +・回避率向上を陽に表さない + pc.c + pc_calcstatus()でのfleeの回避率向上分を削除し、 + mob.c + mob_attack()のhitrate計算で回避率向上を計算。 +・盗蟲、盗蟲雌、盗蟲雄を正常化。 + npc_monster3J.txt + mob_db.txtに合わせて、たぶん正しいと思われるIDに修正。 + 盗蟲 1006 -> 1051 + 盗蟲雌 1017 -> 1053 + 盗蟲雄 1021 -> 1054 +・デバッグメッセージの消し忘れ(?)を削除。 + pc.c + printf("pc.c 63 clif_clearchar_area\n");をコメントアウト + +---------- +//0227 by 胡蝶蘭 + +・一部のスキル効果が実装されました + HP回復向上、SP回復向上、マグニフィカート、 + ハイディング、クローキング、死んだふり、応急手当 + + map.h + struct map_session_data に inchealtick メンバ追加 + pc.c + pc_spheal()でマグニフィカート処理追加 + pc_natual_heal_sub()で回復向上スキル処理追加 + pc_authok()でinchealtickを初期化するように変更 + pc_walk()でincheaktickを再設定するように変更 + pc_walk()でクローキングの終了条件を調査するように変更 + pc_walktoxy()で状態によって移動不可能にした + skill.c/skill.h + skill_status_change_start(),~timer(),~end()に処理追加 + skill_check_cloaking()追加、クローキングの終了条件を検査 + battle.c/battle.h + battle_stopattack()追加 + battle_calc_weapon_attack()で攻撃を止める処理追加 + mob.c + mob_ai_sub_hard()で攻撃を止める処理追加 + +・通常攻撃処理、対MOB、対PCを共用に。 + pc.c + pc_attack_mob(),pc_attack_pc()削除 + pc_attack()に攻撃処理追加 + +・モンスターの行動の一部実装 + アクティヴ、無反応、移動しない、遠距離攻撃一部 + + mob.c + mob_ai_sub_hard()に行動追加 + mob_ai_sub_hard_activesearch()追加、近くのPCへの策敵 + +・オーバートラストの増加倍率が100倍になっているバグが修正されました + battle.c + battle_calc_weapon_attack()で、該当個所を修正 + + +---------- +//0226 by 胡蝶蘭 + +やっぱりテストはあんまりしていません + +・一部のスキル効果が実装されました + 速度増加、エンジェラス、キュアー + インポシティオマヌス、サフラギウム、リカバリー、グロリア + ふくろうの目、ワシの目、集中力向上、回避率向上、解毒 + 所持量増加、ラウドボイス、アドレナリンラッシュ、オーバートラスト + ウェポンパーフェクション、マキシマイズパワー、2HQ + + (map/) + map.h + struct map_session_dataにwatk2,def2など追加 + pc.c + pc_calcstatus()にスキル修正追加 + atk2なども送信するように変更 + battle.c/battle.h + battle_get_def2()など多数追加 + battle_calc_weapon_damage()で敵減算防御の所得を + battle_get_def2()に変更 + battle_calc_magic_damage()で敵減算魔法防御の所得を + battle_get_mdef2()に変更 + battle_calc_weapon_damage()でスキル修正を追加 + skill.c/skill.h + skill_use_nodamage_id()の該当個所追加 + skill_status_change_start()の該当個所追加 + clif.c + clif_updatestatus()のatk2などの処理追加 + clif_initialstatus()でatk2などの扱い変更、aspdなど送信追加 + +・精錬ダメージ修正/精錬防御修正が適用されました + (map/) + pc.c + pc_calcstatus()でwatk2とdefの追加計算追加 + battle.c + battle_calc_weapon_damage()でwatk2をダメージに追加 + +・inter鯖のパケット解析部の致命的な問題が修正されました + TCP/IPプログラムでやってはいけないことをそのままやってました(汗 + inter鯖のパケット長データをinter.cに持つように修正されました。 + + (char/) + inter.c/inter.h + パケット長データ inter_*_packet_length[] を追加 + パケット長チェック inter_check_length() を追加 + mapif_parse_*()でRFIFOSKIPをなしに変更 + int_storage.c/int_storage.h + mapif_parse_*()でRFIFOSKIPをなしに変更 + int_party.c/int_guild.c + 仕様変更に対応させた変更 + INTER鯖パケット.txt + パケット長リスト追加 + +・ちょっとした修正 + (char/) + inter.h + inter_cfgNameを"conf/inter_athena.cnf"に修正 + char2.c + char.exe第2引数省略時、inter_cfgNameを使うように修正 + (db/) + cast_db.txt + ホーリーライトの詠唱時間追加(ディレイは適当) + 詳しい人追加求む + +---------- +//0225 by 胡蝶蘭 + +なんかかなり弄りましたが相変わらずテストはあんまりしてません。 + +・スキル使用時の変数を変更 + よく見たら最初から用意されてましたね。 + + map.h + struct map_session_dataのcast_*を削除 + skill.c + cast_*の変数をskill*に変更。 + +・ステータス異常スキルの処理を追加(効果は未実装) + 見かけ上、ステータス異常に掛かったりとかだけ。 + 効果はまだなし。 + + skill.c/skill.h + skill_status_change_start(),~end(),~timer(),~clear()追加。 + それぞれステータス異常の開始、終了、タイマ処理、全消去。 + map.c/map.h + map_quit()でskill_status_change_clear()を呼ぶようにした。 + struct map_session_dataにsc_data,sc_count追加。 + struct mob_dataにsc_data,sc_count,option,opt1,opt2追加。 + pc.c + pc_authok()でsc_data,sc_countを初期化するようにした。 + pc_setoptionでclif_changeoption()の引数変更。 + pc_damage()で死亡時にskill_status_change_clear()を呼ぶように。 + mob.c + mob_spawn()でsc_data,sc_countを初期化するようにした。 + mob_attack()でbattle_calc_damage()を呼ぶようにした。 + mob_damage()で死亡時にskill_status_change_clear()を呼ぶように。 + battle.c/battle.h + battle_get_*()たくさん追加。 + battle_calc_damage()追加。最終的なダメージ計算用。 + battle_calc_magic_attack(),battle_calc_weapon_attack()で + battle_calc_damage()を呼ぶようにした。 + clif.h/clif.c + clif_status_change()追加。ステータス異常アイコン表示用。 + clif_changeoption()の引数変更。 + atcommand.c + clif_changeoption()を呼んでいる2ヶ所で引数変更。 + @dieでskill_status_change_clear()を呼ぶように。 + +・マグヌスエクソシズムの習得条件が間違っているのを修正。 + db/skill_tree.txt + 該当個所修正。(レックスエーテルナの必要Lvを1に) + +・アクティブな敵は攻撃するとき時々ターゲットが変わるようになりました + mob.c + mob_ai_sub_hard()の攻撃されたか確認する部分に + アクティブなら25%の確率でターゲットが変わるように変更。 + +・一部のスキル効果が実装されました + キリエエレイソン、エナジーコート、レックスエーテルナ、 + ホーリーライト、リザレクション、ターンアンデッド、モンスター情報 + + skill.c/skill.h + skill_castend_nodamage_id()にスキルの処理を追加。 + skill_castend_*_id()の引数を変更 + battle.c + battle_calc_damage()にスキルの処理を追加。 + battle_damage(),battle_heal()の引数変更 + battle_calc_weapon_damage(),battle_calc_magic_damage()引数変更 + clif.c/clif.h + clif_skill_estimation()追加。モンスター情報送信用 + pc.c + battle_calc_weapon_damage()呼び出しの引数変更 + +・storage.txtが無い場合inter鯖が強制終了する仕様を変更しました + (char/) + int_storage.c + inter_storage_init()でファイルが読めないとexitしてたのを修正 + + +---------- +//0224 +・2-2次職のスキルをツリーに追加しました(実装はまだです) + (db/) + skill_db.txt + skill_tree.txt + + +---------- +//0223 by 胡蝶蘭 +・カプラ倉庫をinter鯖に対応させました + いままでのstorage.txtはそのまま使えます。 + inter鯖用の設定ファイルとしてconf/inter_athena.cnfを使います。 + (設定ファイルはchar.exeの第2引数で他のファイルを指定できます) + + カプラ倉庫のinter鯖実装の概要 + + inter鯖はstorage.txtの全データを持つ。map鯖はアカウントが要求するまで + そのアカウントの倉庫データを持たない。クライアントから倉庫を開く要求が + あったとき、map鯖は対応するアカウントの倉庫データをinter鯖に要求する。 + inter鯖からデータが届くとクライアントに倉庫データを送る。 + 倉庫の出し入れはクライアントとmap鯖間の通信だけで行われる。 + クライアントが倉庫を閉じるか終了すると、map鯖は該当アカウントの + 倉庫データをinter鯖に送る。このときinter鯖の応答を待たずにクライアントに + 倉庫クローズを送る。inter鯖は倉庫データを受け取ると、 + 全員分のデータをファイルに保存して、map鯖に成功ステータスを返す。 + map鯖は成功ステータスを無視する。(デバッグ用に画面に出力するだけ) + inter鯖終了時にも倉庫データをファイルに保存する。 + + map鯖でaccount2storageで新しい倉庫データを作るとき、 + すでに閉じられている倉庫データのメモリを使いまわしたほうがメモリが + 節約できるかも?(これは実装していません) + + (common/) + mmo.h + struct storage を map/storage.h から移動。 + inter鯖とmap鯖両方で使用するため。 + (char/) + char2.c + do_final()を作成、終了時にmmo_char_sync()以外にinter_save()を + 呼ぶようにした(これでinter_*_save()は全部呼ばれます) + inter_init()をchar.exeの第2引数もしくは"conf/inter.cnf"で + 呼ぶようにした(athena.shにinter鯖コンフィグファイルを指定できます) + inter.c/inter.h + inter_storage_init(),inter_storage_save(), + inter_storage_parse_frommap()を呼ぶように。 + inter_init()にコンフィグファイル名の引数を付けた。 + inter_config_read()追加、コンフィグファイルから + 倉庫とパーティー、ギルドのファイル名を読み込みます。 + int_storage.c/int_storage.h + 新規追加。倉庫部分のinter鯖機能。 + int_party.h/int_party.c/int_guild.h/int_guild.c/ + ファイル名変数の宣言追加 + INTER鯖パケット.txt + 倉庫パケットの解説追加 + + (map/) + storage.h/storage.c + storage_fromstr(),storage_tostr()をchar/int_storage.cに移動。 + 同じくdo_init,do_finalでのファイル処理も移動。 + do_final()は処理なし、do_init()は変数初期化のみに変更。 + storage_storageopen()では単にintif_request_storage()を呼ぶだけに。 + storage_storageclose()にintif_send_storage()を追加 + storage_storage_quitsave()追加。クライアント終了時に + カプラ倉庫が開いていればintif_send_storage()を呼ぶ関数。 + intif.h/intif.c + intif_parse_LoadStorage(),intif_parse_SaveStorage(), + intif_send_storage(),intif_request_storage()追加 + map.c + map_quit()でstorage_storage_quitsave()を呼ぶように。 + + (conf/) + inter_athena.cnf + 新規追加。inter鯖用のコンフィグレーションファイル + + +---------- +//0221 by 胡蝶蘭 + +・スキルターゲットのIDが正しく所得できない問題修正 + clif.c + clif_parse_UseSkillToId()でIDをWORDとして扱ってたのをLONGに修正 + +・スキル詠唱時間と属性表、および魔法系スキルの属性修正実装 + 属性ダメージ修正は battle_attr_fix() で計算します。 + atk_elemは属性そのまま、def_elemは(属性lv*20+属性)です。 + 詠唱時間はskill.cのCASTFIXの値を変えることで倍率を調整できます + + pc.c + pc_readdb()でcast_db.txtとattr_fix.txtの読み込み追加 + skill.c/skill.h + struct skill_db にcast,delay追加、それらのアクセサも追加 + スキル詠唱時間を skill_get_cast() で所得するようにした + battle.c/battle.h + attr_fix_table定義 + battle_attr_fix()追加、属性修正を計算する + 属性系アクセサ(battle_get_element()など)を追加 + battle_calc_magic_damage()に属性修正を追加 + cast_db.txt + 新規追加。詠唱時間とディレイのデータベース + 全然足りないので、誰か追加希望。 + attr_fix.txt + 新規追加。属性修正テーブル + +・ヒールの実装 + clif.c/clif.h + clif_skill_nodamage()追加、支援系や回復のエフェクト + skill.c/skill.h + skill_castend_damage_id()、skill_castend_nodamage_id()追加、 + 攻撃系と支援/回復系で関数を分けた + ヒール計算マクロ skill_calc_heal() 追加 + battle.c + battle_calc_magic_damage()でヒールのダメージ計算追加 + + +---------- +//0220 by れあ + +0216の修正 +HITの計算がおかしかったので修正してみました。 +間違ってたらごめんなさい。 + +・battle.c + 256行目の + hitrate=battle_get_hit(&sd->bl) - battle_get_flee(&sd->bl) + 80; + がたぶん、自分のHITと自分のFLEEで計算してる気がするので + hitrate=battle_get_hit(&sd->bl) - battle_get_flee(target) + 80; + に修正しました。 + + +---------- +//0218 by 胡蝶蘭 + +実際に分散させてテストしていなかったり。 + +・map鯖分散処理用にinter鯖機能をつけてみる(今後のための拡張) + char鯖にinter鯖を寄生させました。複数のmap鯖間の通信に利用します。 + map鯖を分散して処理できるようにするための機能です。 + 今後partyやguild実装時にきっと役にたってくれるかと。 + + 倉庫の実装もinter鯖に移動すべきかもしれません。 + どのキャラクターがどのmap鯖にいるか検索する機能もいるかも。 + + 使うパケットのIDは以下のようになります + map鯖=>inter鯖はパケット0x3000〜 + inter鯖=>map鯖はパケット0x3800〜 + パケットを作った場合は、INTER鯖パケット.txtに書いてください + + この機能によるメリット + map鯖分散にも対応できる + この機能によるデメリット + inter鯖経由の全ての命令の動作速度が落ちる + (一回inter鯖まで渡すため) + 鯖とクライアントを同じPCで使っているとつらいかも + + (char/) + char2.c/char.h + mapif_sendall()追加(全MAP鯖にパケットを送る) + mapif_send()追加(特定MAP鯖に送る:生存判定付き) + parse_frommap()でinter_parse_frommap()を呼ぶようにした + (inter鯖のmap鯖解析部をchar鯖に寄生させたことになる) + inter.h/inter.c + 新規追加。inter鯖の中核。 + inter_parse_frommapでMAP鯖からのパケットを解析します。 + int_party.h/int_party.c/int_guild.h/int_guild.c + 新規追加。今後のための予約。パーティやギルド機能用 + initでデータを読んで、saveで保存すべき? + saveはまだ呼ばれない。parseでパケット解析。 + common/mmo.hあたりでパーティーやギルドの構造体を + 定義する必要があると思われる。 + INTER鯖パケット.txt + パケットのリスト + + (map/) + intif.h/intif.c + inter鯖と通信する部分。 + inter_parse()でinter鯖からのパケットを解析します。 + inter鯖へデータを送るときはinter_fdを使います。 + chrif.h/chrif.c + chrif_parse()でinter_parse()を呼ぶようにした + (intif.cのinter鯖解析部をchar鯖解析部に寄生させたことになる) + +・@kamiコマンドをinter鯖経由に変更 + 原理としては次のような感じです + クライアント=>map鯖=>inter鯖=>全map鯖=>全クライアント + + (char/) + inter.c + mapif_GMmessage()追加 + (map/) + intif.h/intif.c + intif_GMmessage()追加 + intif_parseでGMメッセージの処理を追加 + clif.c/clif.h + clif_GMmessage()の引数を変更 + atcommand.c + @kami部分でintif_GMmessage()を呼ぶようにした + +・Wisをinter鯖経由に変更 + 原理としては次のような感じです + + 送り主クライアント=>送り主map鯖=>inter鯖=>全マップ鯖=>(分岐A) + [分岐A] + 1.相手の人いるmap鯖=>相手のクライアント +     〃    =>inter鯖=>送り主map鯖=>送り主クライアント + 2.相手のいないmap鯖=>inter鯖(分岐B) + [分岐B] + 1.全map鯖が応答したinter鯖 =>送り主map鯖=>送り主クライアント + 2.(全部は応答してないときは、全map鯖の応答を待つ) + + ものすごい複雑になってますね。 + + (char/) + inter.c + struct WisList 定義(Wisデータのリンクリスト) + add_wislist(),del_wislist(),search_wislist(), + check_ttl_wislist()追加,リンクリストを扱う関数群 + mapif_wis_message(),mapif_wis_end()追加 + (map/) + intif.h/intif.c + intif_wis_message(),intif_wis_end()追加 + intif_parse_WisMessage()追加,intif_parse()から呼ばれるように + clif.c/clif.h + clif_wis_message(),clif_wis_end()追加 + clif_parse_Wis()を変更,intif_wis_message()を呼ぶようにした + +・スキル使用時のヒット数/消費SP所得のバグ修正 + skill.c + skill_get_sp(),skill_get_num()で参照する配列インデックスをlv-1にした + + +---------- +//0216 by 胡蝶蘭 + +いつもどおりテストほとんどしてないので、バグ大量かも。 + +・0213の修正?のよくわからないところ修正 + itemdb.c + コンパイルが通らないのでitemdb_equipointの引数リスト変更 + +・Athena dev 2.1.1の適用 + dev-2.1.1で適用された修正を適用しました + + timer.c + 2.1.1のものと差し替え + script.c + C_NE: の修正の適用 + README + 最後の文章を2.1.1のものに差し替え + +・スキルデータベースの修正 + 一部の消費SPやヒット数などを修正。 + + skill_db.txt + 該当個所の修正 + +・スキル攻撃の実装変更&追加実装 + バッシュ、メマーナイト、ダブルストレイフィング、ピアース + スピアブーメラン、スピアスタブ、ボーリングバッシュ + ソニックブロー、グリムトゥース などの実装変更 + + ナパームビート、ソウルストライク、 + ファイヤーボルト、コールドボルト、ライトニングボルト、アーススパイク、 + ユピテルサンダー などを追加実装 + (全て、範囲攻撃やステータス異常などは未実装) + + pc.c/pc.h + 0213の変更をなかったことにした + pc_attack_mob()の修正、計算はbattle_calc_weapon_attack()に任せ、 + その計算結果を適用するだけに変更 + clif.c/clif.h + clif_skill_fail(),clif_skill_damage(),clif_skill_damage2()追加 + それぞれ使用失敗、使用エフェクト、吹き飛ばし付き使用エフェクト + skill.c/skill.h + 0213の変更をなかったことにした(ダメージ倍率計算がおかしい) + skill_castend_id()にSP/Zeny確認と消費部分を追加、 + 種類別に処理を追加。 + battle.c/battle.h + 新規追加 + 武器攻撃計算用にbattle_calc_weapon_attack(), + 魔法攻撃計算用にbattle_calc_magic_attack()を用意 + (双方とも、MOBとPC両方計算可能なはず) + ファイル増やしすぎという意見も…(汗) + + +---------- +//0214 by れあ +・ダブルアタックがおかしかったところを修正。 +・スキルの一部実装 + バッシュ・メマーナイト・ダブルストレイフィング・ピアース + スピアブーメラン・スピアスタブ・ボーリングバッシュ + ソニックブロー・グリムトゥースなどです。 + + 適当なのでどこか、不具合があるかもしれません。 + あと、テストもあまりしてませんのでおかしいところがあったら修正をお願いします。 + 他にも問題があったら手直しをお願いします。 + 変更内容は以下の通りです。 + + clif.c,clif.h + clif_skill_damage()を追加しました。 + + pc.c,pc.h + pc_attack_mob()の引数を一つ追加。 + ダブルアタックがおかしかったので正常に動作するように修正。 + + skill.c + 一部スキルの実装をしてみました。 + + +---------- +//0213 by れあ +・0208の@コマンドで少し修正 + atcommand.c + @itemで個数指定が無い場合、入手個数を1個にするようにした。 + @itemでIDの指定が無い場合、アイテムを入手してたことになって + いたのを修正 + itemdb.c + item_db.txtでSellの項目を店売りの値段としてみた。 + item_db2.txt + 試しにカードやレアアイテムの店売り価格を値段を本鯖の相場にし + てみたもの。使用する場合はitem_db.txtと差し替えてください。 + + +---------- +//0208 by nabe + +・@コマンド実装。 + atcommand.h,atcommand.c + ほぼI-Athenaの@コマンド相当ですが、@GMとPVPは未実装です。 + help.txtも同梱しています。 + GM(アカウントID=704554〜704583)専用にするには、 + atcommand.cの該当部分のコメントアウトを解除して下さい。 + clif.h,clif.c + clif_displaymessage() + clif_GMmessage() + clif_heal() + clif_resurrection() + clif_pvpon() + clif_pvpset() + clif_refine() + を追加しました。 + clif_parse_GlobalMessage()内でatcommand()を呼んでいます。 + +・ちょっとだけ修正。 + script.c + {buildin_openstorage,"openstorage","s"}, + から + {buildin_openstorage,"openstorage",""}, + に修正しました。 + + +---------- +//0206 by 胡蝶蘭 +・スキルツリー/スキル使用機構の実装 + mmo.h + MAX_SKILLを増やした + char2.c + mmo_char_fromstr() + mmo_charstatusのskillのインデックスにスキル番号を使うようにした + =>スキルの検索高速化のため(かわりにメモリ使用量が増える) + pc.h/pc.c + pc_skillup(),pc_calc_skilltree()追加 + pc_checkskill()変更(インデックスをスキル番号に) + 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()を追加 + clif_parse_SkillUp(),clif_parse_UseSkillToId(), + clif_parse_UseSkillToPos()を実装 + skill.h/skill.c + ファイル追加(map/) + map.h + struct map_session_dataにcast_*を追加 + skill_db.txt + ファイル追加(db/) + (I-Athena0200のskill_info2.txtをコンバートしたもの) + (スキル使用部分開発者向け情報) + スキルの効果を実装する場所はskill.cの + skill_castend_id(),skill_castend_pos()です。 + ターゲットや使用スキルは sd->cast_* から得ます + スキルデータベースへは skill_get_* でアクセスしてください + 今後、キャスティングタイムもデータベースに入れる予定 + +---------- +//0205 by nabe + +・storage.cのバグフィクス。 +・倉庫データを、マップ鯖起動時に読み、マップ鯖終了時に書くように変更。 + storage.h,storage.c + storage_init()をdo_init_storage()に改名。 + storage_save()をdo_final_storage()に改名。 + fcloseを忘れていたのを追加。 + map.c + #include "storage.h"を追加。 + do_final()にdo_final_storage()を追加。 + do_init()にdo_init_storage()を追加。 + +---------- + +//0203(unofficial) by なみ + +item_db.txtの書き換えのみです。 + +・アイテムの回復量を追加/変更 + 赤ポーション         HP 30- 44 + 紅ポーション         HP 70- 89 + 黄色いポーション       HP 175-234 + 白いポーション        HP 350-429 + 青いポーション        SP 40- 99 + 赤いハーブ          HP 12- 19 + 黄色いハーブ         HP 21- 29 + 白いハーブ          HP 80-111 + 青いハーブ          SP 15- 44 + リンゴ            HP 12- 15 + バナナ            HP 11- 16 + ブドウ            SP 10- 24 + いも             HP 11- 15 + にく             HP 70- 99 + ハチの蜜           HP 72- 97 / SP 20- 59 + ミルク            HP 25- 34 + キャンディ          HP 31- 74 + スティックキャンディ     HP 46-109 + リンゴジュース      ※ HP 28- 32 + バナナジュース        HP 27- 33 + ブドウジュース        SP 15- 39 + ニンジンジュース     ※ HP 29- 32 + カボチャ           HP 14 + ペットフード         HP 53- 83 + よく焼いたクッキー      HP 80-177 + ひとくちケーキー       HP 251-359 + ひなあられ          HP 175-234 + 菱餅             HP 350-429 + レッドスリムポーション  ※ HP 30- 44 + イエロスリムポーション  ※ HP 175-234 + ホワイトスリムポーション ※ HP 350-429 + 現在のAthenaではVITやスキルによるボーナスは加味されません。 + (適用する場合はscript.c内のbuildin_heal関数あたりにに手を加える必要あり) + なお、※付のアイテムのデータは適当です。 +・古いカード帖を実装(UseScript) +・その他修正 +  ひなあられ          重量なし→重量0.1に修正 +  菱餅             重量なし→重量0.1に修正 +  バルムン           重量0.1S4片手剣→重量100S0両手剣に修正 + なお、Sellの項目はあるだけ無駄っぽいので全部消しました。 + +---------- + +//0202 by nabe + +・カプラ倉庫の「同一アカウントなのに共有できないバグ」を改良しました。 + 各キャラに倉庫データを持たせるのは無駄が多い気がするので、 + アカウントIDで管理するように仕様を変更しました。 + ついでに、倉庫データは全てstorage.cでまかない、 + char鯖は関与しないようにしました。 + これに伴い、char_athena.cnf,mmo.h,char2.cは元に戻しました。 + また、倉庫ファイル名は“storage.txt”に固定しています。 + + 改変、追加したのは次のファイルです。 + map/storage.h, + map/storage.c, + map/clif.h,//引数変更だけ + map/clif.c,//引数変更だけ + conf/char_athena.cnf,//元に戻しただけ + common/mmo.h,//元に戻しただけ + char/char2.c,//元に戻しただけ + map/itemdb.h,//itemdb_equippoint()引数宣言変更だけ + map/itemdb.c,//itemdb_equippoint()引数宣言変更だけ + map/pc.c,//itemdb_equippoint()引数宣言変更だけ + +---------- + +//0201 by nabe + +・カプラ倉庫を実装しました。 + + スクリプトから呼び出すには、スクリプト内で + openstorage; + としてください。 + サンプルとしてnpc_kafraJ.txtを付けてあります。 + 併せてnpc_script3J.txtの該当部分も改変しました。 + + char_athena.cnfの + stor_txt: + で倉庫ファイル名を指定しています。 + + 改変、追加したのは次のファイルです。 + map/Makefile, + map/storage.c, + map/storage.h, + map/clif.c, + map/clif.h, + map/script.c, + char/char2.c, + common/mmo,h + 詳しくは、上記ファイルのコメントなどを参考にしてください。 + +・カプラ倉庫実装に伴い、map_athena1.cnfを少し書き換えました。 + +・全てのコメント文をEUCからSJISに変換しました。 + +---------- + + Athena Dev. v2.1.1 Released: Middle July, 2003 + (c) 2003 Athena Project. + http://project-yare.de/ + +1. Athena(アテナ)について +2. このリリースについて +3. 必要な物 +4. 使い方 +5. 現在の仕様 +6. 祝辞 +7. 免責事項 +8. 募集 +9. English + + +1. アテナについて + アテナとは2003年1月半ばにでた0052.lzhをベースとして作られているエミュレータの一つです。 + 基本的なライセンスはオリジナルがGPLの下に配布されている為、 + これに従いGPLの下配布を許可します。 + /* + 改良版を配布する場合は必ずこのREADMEを書き換えてください。 + 何処を改良したのか報告(athena@project-yare.deまで)して貰えると助かります。 + バイナリのみの配布はGPL違反ですので"必ず"ソースも添付してください。 + */ + 動作の確認は以下の通りのみ行っています。 + // ただし完璧に動く事を保証するものでありません + 対象CPU: Intel Pentium系 // PentiumII以上で確認. + FreeBSD 4.8R, 4.6.2R + Linux RedHat 7.3 + cygwin + gcc 3.2 20020927 (prerelease) + 開発元URL: http://project-yare.de/ + + +2. このリリースについて + 今回のリリースは前回(V2.1)同様開発版のリリースのみです。 + 2.1に比べ下記の点が修正されています。 + mapのデフォルト設定が韓国data.grfのみ正常に動作するようになっていた点 + common/timer.cやmap/script.cの幾つかのバグ + + 迅速にUpdateを強く推奨するものではありませんが各自の判断で行って下さい。 + + +3. 必要な物 + data.grf //sdata.grfは必要に応じて + account.txt //存在しない場合athena.shが自動生成します + conf/*.cnf //Map用とChar用の二種類あります + conf/npc*.txt //npc設定用ファイルです。複数のファイルに分けることが可能です。 + db/*.txt //アイテム、job情報など + + +4. 使い方 + > tar xvfz athena-d?.?.tar.gz + > cd athena-d?.?.tar.gz + > make + > vi conf/char_athena.cnf //IP(127.0.0.1)の部分を環境に合わせて変更してください + > vi conf/map_athena.cnf //同上、またmap設定などは、このファイルで行います。 + > ./athena.sh + 上記を行えば"たぶん"起動します。 + + 補足: + conf/npc_sampleJ.txtにはスクリプトの書き方について色々な説明が記載されています。 + もし、独自のMap設定を行ってみたい人や、スクリプトを弄りたい方は参考にしてください。 + ただし、開発中のためスクリプトの仕様が変更される可能性が高いです。 + command.txtには実装済みの特殊コマンドについての説明を記載しています。 + + +5. 現在の仕様 + 本鯖と比べておかしい(例えばプバが歩く、ポリンがアイテムを拾わないなど)点は、 + 全て現在開発中に因るものです。 + 現状としてキャラクタ系及びモンスター系のバグ報告は無視される可能性が高いです。 + + バグ報告について必ず発生条件をお書き下さい。 + 下にある報告用テンプレートを使って報告して頂くと助かります。 + 報告先はエミュ板の開発スレにでも。 + ---- Athena v 2.0 (stable or develop) ---- + 【gcc ver】gcc -vを実行時に表示される内容 + 【動作システム】FreeBSD, Linux(ディストリビュージョンも), cygwinなど + 【発生内容】mapが落ちてしまった時の表示されていたデバッグ情報など具体的に書いてください。 + 【操作内容】具体的にどんな操作を行ったかを書いてください。 + ------------------ END ------------------- + 理想はテンプレに加えてmap.coreなどcoreファイルをUploaderにアップして頂くことですが + 問題のMapだけの状態にしcoreの吐く容量に注意してください。 + /* + 確認した限りでは324個ほどmapデータを読み込ませると、 + 40MB近いcoreファイルを吐き出します @FreeBSD + cygwinの場合はstackdumpというファイルになるそうです。 + しかし、coreファイルなどをgzip圧縮などすれば大幅に小さくなります。 + 大凡30MBのcoreファイルが2.9MBほどになるようです。 + ですので、もしアップロードする場合はgzip圧縮など各自行ってください。 + */ + + 今回のリリースだけでなくHISTORYを作成すると大量に記述が必要な為省略しています。 + // 多い日だと本当に結構ありますので‥‥。 + + +6. 祝辞 + 今回このAthena開発版を出すに当たって感謝したい方々(順番不同) + Lemming氏 (Project YARE) + 0052氏 (Uploader) + 35氏 (エミュ開発スレ) + Johan Lindh氏(Author of memwatch) + YARE forumのNPC情報を作成した方々 + weiss研究会BBSの様々な情報ファイルを作成した方々 + 最後に、.coreファイル達 + + +7. 免責事項 + Athena Projectは一切Athenaの動作に関する保証等は行いません。 + つまり、Athenaは無保証です。 + athena@project-yare.deに動作・操作等に関する質問などを送られても一切お答えできません。 + 又Athenaを用いたことにより生じた被害・問題等の責任は一切Athena Projectは負いません。 + + +8. 募集 + athenaの開発に参加したい//興味があるという方ご連絡下さい。 + 我々は貴方の参加をお待ちしています。 + // 最新版が欲しいだけで何ら協力して頂けないという方はお断りです;-) + [募集要項: プログラマ(2-3人)] + 年齢: 不問 + 性別: 不問 + 言語: 日本語が理解可能 + 内容: C言語もしくはC++による開発。(特にネットワークやDBの経験が有る方大募集!) + [募集要項: 翻訳(?人)] + 年齢: 不問 + 性別: 不問 + 言語: 日本語、英語が理解可能 + 内容: 仏蘭西語、独逸語、西班牙語、伊太利亜語、泰(タイ)語、朝鮮語、中国語へ文献、サイトなどの翻訳 + 連絡先: athena@project-yare.de 雑務担当まで。 + + +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/Readme2.txt b/Readme2.txt index acbe2703f..cedb7cbb3 100644 --- a/Readme2.txt +++ b/Readme2.txt @@ -1,30 +1,30 @@ - ______ __ __ - /\ _ \/\ \__/\ \ - __\ \ \L\ \ \ ,_\ \ \___ __ ___ __ - /'__`\ \ __ \ \ \/\ \ _ `\ /'__`\/' _ `\ /'__`\ -/\ __/\ \ \/\ \ \ \_\ \ \ \ \/\ __//\ \/\ \/\ \L\.\_ -\ \____\\ \_\ \_\ \__\\ \_\ \_\ \____\ \_\ \_\ \__/.\_\ - \/____/ \/_/\/_/\/__/ \/_/\/_/\/____/\/_/\/_/\/__/\/_/ - _ _ _ _ _ _ _ _ _ _ _ _ _ - / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ -( e | n | g | l | i | s | h ) ( A | t | h | e | n | a ) - \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ - - --------------------------------------------------------------- -eAthena VERSION --------------------------------------------------------------- -Version 1.0.0 DEV-SVN --------------------------------------------------------------- - -Please read new HTML readme at: -./readme.html - --------------------------------------------------------------- --------------------------------------------------------------- -License: --------------------------------------------------------------- -eAthena is licensed under the GPL. Please refer to LICENSE in -your Athena folder for the full GPL License statement. --------------------------------------------------------------- --------------------------------------------------------------- + ______ __ __ + /\ _ \/\ \__/\ \ + __\ \ \L\ \ \ ,_\ \ \___ __ ___ __ + /'__`\ \ __ \ \ \/\ \ _ `\ /'__`\/' _ `\ /'__`\ +/\ __/\ \ \/\ \ \ \_\ \ \ \ \/\ __//\ \/\ \/\ \L\.\_ +\ \____\\ \_\ \_\ \__\\ \_\ \_\ \____\ \_\ \_\ \__/.\_\ + \/____/ \/_/\/_/\/__/ \/_/\/_/\/____/\/_/\/_/\/__/\/_/ + _ _ _ _ _ _ _ _ _ _ _ _ _ + / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ +( e | n | g | l | i | s | h ) ( A | t | h | e | n | a ) + \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ + + +-------------------------------------------------------------- +eAthena VERSION +-------------------------------------------------------------- +Version 1.0.0 DEV-SVN +-------------------------------------------------------------- + +Please read new HTML readme at: +./readme.html + +-------------------------------------------------------------- +-------------------------------------------------------------- +License: +-------------------------------------------------------------- +eAthena is licensed under the GPL. Please refer to LICENSE in +your Athena folder for the full GPL License statement. +-------------------------------------------------------------- +-------------------------------------------------------------- diff --git a/athena-start b/athena-start index f21dccf71..92d49c2ef 100644 --- a/athena-start +++ b/athena-start @@ -1,84 +1,84 @@ -#!/bin/sh -# athena starting script by rowla - -PATH=./:$PATH - -L_SRV=login-server -C_SRV=char-server -M_SRV=map-server -L_SRV_C=./conf/login_athena.conf -C_SRV_C=./conf/char_athena.conf -C_SRV_C2=./conf/inter_athena.conf -M_SRV_C=./conf/map_athena.conf -M_SRV_C2=./conf/battle_athena.conf -M_SRV_C3=./conf/atcommand_athena.conf -M_SRV_C4=./conf/script_athena.conf -M_SRV_C5=./conf/msg_athena.conf -M_SRV_C6=./conf/grf-files.txt - -print_start() { -# more << EOF -echo "Athena Starting..." -echo " (c) 2003 Athena Project." -echo " URL:http://project-yare.de/" -echo "" -echo "Debug informations will appear," -echo "since this is a test release." -echo "" -echo "checking..." -#EOF -} - -check_account() { - if [ ! -f ./save/account.txt ]; then - echo "0 s1 p1 - S 0" > save/account.txt - echo "1 s2 p2 - S 0" >>save/account.txt - echo "2 s3 p3 - S 0" >>save/account.txt - echo "3 s4 p4 - S 0" >>save/account.txt - echo "4 s5 p5 - S 0" >>save/account.txt - fi -} - -check_files() { - - for i in ${L_SRV} ${C_SRV} ${M_SRV} ${L_SRV_C} ${C_SRV_C} ${C_SRV_C2} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5} ${M_SRV_C6} - do - if [ ! -f ./$i ]; then - echo "$i does not exist, or can't run." - echo "Stoped, Check your compile or configuration file." - exit 1; - fi - done - -# more << EOF -echo "Check done." -echo "Looks good, have a nice athena!" -#EOF -} - - -case $1 in - 'start') - print_start - check_account - check_files - - exec ./${L_SRV} ${L_SRV_C}& -# exec ./${C_SRV} ${C_SRV_C} ${C_SRV_C2} > /dev/null& -# exec ./${M_SRV} ${M_SRV_C} ${M_SRV_C2} > /dev/null& - exec ./${C_SRV} ${C_SRV_C} ${C_SRV_C2}& - exec ./${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5} ${M_SRV_C6}& - - echo "Now Started Athena." -;; - 'stop') - ps ax | grep -E "${L_SRV}|${C_SRV}|${M_SRV}" | awk '{print $1}' | xargs kill -9 - ;; - 'restart') - $0 stop - $0 start - ;; - *) - echo "Usage: athena-start { start | stop | restart }" - ;; -esac +#!/bin/sh +# athena starting script by rowla + +PATH=./:$PATH + +L_SRV=login-server +C_SRV=char-server +M_SRV=map-server +L_SRV_C=./conf/login_athena.conf +C_SRV_C=./conf/char_athena.conf +C_SRV_C2=./conf/inter_athena.conf +M_SRV_C=./conf/map_athena.conf +M_SRV_C2=./conf/battle_athena.conf +M_SRV_C3=./conf/atcommand_athena.conf +M_SRV_C4=./conf/script_athena.conf +M_SRV_C5=./conf/msg_athena.conf +M_SRV_C6=./conf/grf-files.txt + +print_start() { +# more << EOF +echo "Athena Starting..." +echo " (c) 2003 Athena Project." +echo " URL:http://project-yare.de/" +echo "" +echo "Debug informations will appear," +echo "since this is a test release." +echo "" +echo "checking..." +#EOF +} + +check_account() { + if [ ! -f ./save/account.txt ]; then + echo "0 s1 p1 - S 0" > save/account.txt + echo "1 s2 p2 - S 0" >>save/account.txt + echo "2 s3 p3 - S 0" >>save/account.txt + echo "3 s4 p4 - S 0" >>save/account.txt + echo "4 s5 p5 - S 0" >>save/account.txt + fi +} + +check_files() { + + for i in ${L_SRV} ${C_SRV} ${M_SRV} ${L_SRV_C} ${C_SRV_C} ${C_SRV_C2} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5} ${M_SRV_C6} + do + if [ ! -f ./$i ]; then + echo "$i does not exist, or can't run." + echo "Stoped, Check your compile or configuration file." + exit 1; + fi + done + +# more << EOF +echo "Check done." +echo "Looks good, have a nice athena!" +#EOF +} + + +case $1 in + 'start') + print_start + check_account + check_files + + exec ./${L_SRV} ${L_SRV_C}& +# exec ./${C_SRV} ${C_SRV_C} ${C_SRV_C2} > /dev/null& +# exec ./${M_SRV} ${M_SRV_C} ${M_SRV_C2} > /dev/null& + exec ./${C_SRV} ${C_SRV_C} ${C_SRV_C2}& + exec ./${M_SRV} ${M_SRV_C} ${M_SRV_C2} ${M_SRV_C3} ${M_SRV_C4} ${M_SRV_C5} ${M_SRV_C6}& + + echo "Now Started Athena." +;; + 'stop') + ps ax | grep -E "${L_SRV}|${C_SRV}|${M_SRV}" | awk '{print $1}' | xargs kill -9 + ;; + 'restart') + $0 stop + $0 start + ;; + *) + echo "Usage: athena-start { start | stop | restart }" + ;; +esac diff --git a/char-server.sh b/char-server.sh index 39c1882ad..6cddf373c 100644 --- a/char-server.sh +++ b/char-server.sh @@ -1,16 +1,16 @@ -#/bin/sh -#Hi my naem is Kirt and I liek anime - -ulimit -Sc unlimited - -while [ 3 ] ; do -if [ -f .stopserver3 ] ; then -echo server marked down >> servlog.txt -else -echo restarting server at time at `date +"%m-%d-%H:%M-%S"`>> startlog.txt -./char-server -fi - -sleep 5 - -done +#/bin/sh +#Hi my naem is Kirt and I liek anime + +ulimit -Sc unlimited + +while [ 3 ] ; do +if [ -f .stopserver3 ] ; then +echo server marked down >> servlog.txt +else +echo restarting server at time at `date +"%m-%d-%H:%M-%S"`>> startlog.txt +./char-server +fi + +sleep 5 + +done diff --git a/charserv.bat b/charserv.bat index 75b3e7dc5..69900c7ec 100644 --- a/charserv.bat +++ b/charserv.bat @@ -1,4 +1,4 @@ -@echo off -:charserv -start /min /wait char-server.exe conf\char_athena.conf +@echo off +:charserv +start /min /wait char-server.exe conf\char_athena.conf goto charserv \ No newline at end of file diff --git a/conf-tmpl/GM_account.txt b/conf-tmpl/GM_account.txt index 170253c5f..a7acfa038 100644 --- a/conf-tmpl/GM_account.txt +++ b/conf-tmpl/GM_account.txt @@ -1,35 +1,35 @@ -// GMとして認識するアカウントIDを設定 -// -// -// GMのレベルは0以下は無視で最大は99 -704554 99 -704555 1 -704556 1 -704557 1 -704558 1 -704559 1 -704560 1 -704561 1 -704562 1 -704563 1 -704564 1 -704565 1 -704566 1 -704567 1 -704568 1 -704569 1 -704570 1 -704571 1 -704572 1 -704573 1 -704574 1 -704575 1 -704576 1 -704577 1 -704578 1 -704579 1 -704580 1 -704581 1 -704582 1 -704583 1 -794584 1 +// GMとして認識するアカウントIDを設定 +// +// +// GMのレベルは0以下は無視で最大は99 +704554 99 +704555 1 +704556 1 +704557 1 +704558 1 +704559 1 +704560 1 +704561 1 +704562 1 +704563 1 +704564 1 +704565 1 +704566 1 +704567 1 +704568 1 +704569 1 +704570 1 +704571 1 +704572 1 +704573 1 +704574 1 +704575 1 +704576 1 +704577 1 +704578 1 +704579 1 +704580 1 +704581 1 +704582 1 +704583 1 +794584 1 diff --git a/conf-tmpl/atcommand_athena.conf b/conf-tmpl/atcommand_athena.conf index a33be2ae9..f0add1f2e 100644 --- a/conf-tmpl/atcommand_athena.conf +++ b/conf-tmpl/atcommand_athena.conf @@ -1,644 +1,644 @@ -// Athena atcommand Configuration file. -// Translated by Peter Kieser - -// Set here the symbol that you want to use for your commands -// Only 1 character is get (default is '@'). You can set any character, -// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands) -// With default character, all commands begin by a '@': @revive -command_symbol: @ - - -// Sets the level of the users that can use the GM commands. -// : level -// When battle_athena.conf has atcommand_gm_only set to no, -// normal players (gm level 0) can use GM commands if you set 0 to the command level. -// Max GM level is 99. If you want forbid a command to all people, set it with level 100. - -// Default values are set to define different GM levels like follow: -// 0: normal player -// -> no special advantage (only @time to know time and if at_command_gm_only is disabled) -// 1: Super player -// -> some (very) little advantages: storage, petrename, etc... -// 10: Super player+ -// -> same of Super player with !go (very super player) -// 20: Mediator -// -> it's a GM that only need to know people, and move to their to speak with them (they can access to any command about wisps) -// 40: Sub-GM -// -> This GM can help a GM, and can not create item or zeny or modify a character (can have some information commands) -// 50: Sub-GM+ -// -> This GM can change some non-important things on a character -// 60: GM -// -> can do almost anything (excep administration, and mass commands) -// GM is the first level where we can modify a character with important value, create items or create zenys -// 80: GM Chief -// -> can do anything, except administration commands -// 99: Administrator -// -> can do anything! - - -//-------------------------- -// 0: normal player commands - -// Give server time. (6 same commands) -time: 0 -date: 0 -server_date: 0 -serverdate: 0 -server_time: 0 -servertime: 0 - -// Display your ignore list (people from which you ignore wisps) -ignorelist: 0 - -// To change your (own) email (characters protection) -// note: this command doesn't check email itself, but check structure of the email (xxx@xxx) -// if you want be sure of each e-mail disable this option (value: 100) -email: 0 - -// To become GM (need password; password is set in login_athena.conf). -// special!: only a non-GM (player with gm level 0) need to have this command. -// if you change the value, be sure of what you do! -// To be able to create a gm with @gm, you must: -// - give a level to level_new_gm (parameter of login_athena.conf) (not 0) -// - enable to level 0 the @gm command (atcommand_athena.conf) (default 100) - Only level 0 can give access to this command -// - enable gm commands to normal player (battle_athena.conf, atcommand_gm_only parameter) -// - and normal player must give correct password when he use the @gm command (gm_pass paramter in login_athena.conf) -gm: 100 - - -//------------------------- -// 1: Super player commands - -// Suicide your character. -die: 1 - -// Enables you to rename your pet. -petrename: 1 - -party: 1 - -// Brings up your personal storage wherever you are. -storage: 1 - -// Locate someone on a map, returns your coordinates if the person isn't on. -where: 1 - - -//--------------------------- -// 10: Super player+ commands - -// Spawns you to set points in major cities. -go: 10 - - -//---------------------- -// 20: Mediator commands - -// Displays helpfile in Athena base directory (2 same commands). -help: 20 -h: 20 - -// Warp yourself to a person (3 same commands + /shift). -jumpto: 20 -goto: 20 -warpto: 20 - -// follow a player (including warping to them) -follow: 20 - -// Disconnects a user from the server (1 command + right click menu for GM "(name) force to quit"). -kick: 20 - -// Changes your apperance. -model: 20 - -// To get a peco to (un)ride -mountpeco: 20 - -// Returns list of logged in characters with their position (2 same commands). -who: 20 -whois: 20 - -// Returns list of logged in characters with their job. -who2: 20 - -// Returns list of logged in characters with their party/guild. -who3: 20 - -// Returns list of logged in characters with their position in a specifical map. -whomap: 20 - -// Returns list of logged in characters with their job in a specifical map. -whomap2: 20 - -// Returns list of logged in characters with their party/guild in a specifical map. -whomap3: 20 - -// Like @who+@who2+who3, but only for GM. -whogm: 20 - -// Change your appearence to other players to a mob. -disguise: 20 - -//Restore your normal appearance. -undisguise: 20 - -// Display ignore list of a player (people from which the player ignore wisps) -charignorelist: 20 - -// Enable all wispers for a player -inall: 20 - -// Disable all wispers for a player -exall: 20 - - -//-------------------- -// 40: Sub-GM commands - -// Broadcast to the whole server. Using (1 command + /nb, /b). -broadcast: 40 - -// Broadcast to the map you are on (1 command + /lb, /nlb). -local_broadcast: 40 - -// Broadcast (with or without name). -kami: 40 -kamib: 40 - -// Enables you to go to a certain map, at (x,y) coordinates. (@mapmove + /mm or /mapmove) -mapmove: 40 - -// Enables you to view other characters stats. -charstats: 40 - -// Shows Stats Of All Characters Online -charstatsall: 40 - -// Enables GVG on a map (2 same commands). -gvgon: 40 -gpvpon: 40 - -// Turns GVG (Guild v. Guild) off on a map (2 same commands). -gvgoff: 40 -gpvpoff: 40 - -// Heals a person to full HP/SP. -heal: 40 - -// GM Hide (enables you to be invisible to characters, and most monsters) (1 command + /hide). -hide: 40 - -// Changes your job to one you specify (2 same commands). -job: 40 -jobchange: 40 - -// Enables you to to jump randomly on a map (that you are already on). -jump: 40 - -// Warps you to your last save point (2 same commands). -return: 40 -load: 40 - -// Enables lost skills. -lostskill: 40 - -// Saves a warp point. -memo: 40 - -// Set your character display options. (Visual effects of your character) -option: 40 - -//Makes an egg -makeegg: 40 - -//Hatches an egg -hatch: 40 - -// Sets the level of intemecy of your pet. -petfriendly: 40 - -// Sets hunger level of your pet. -pethungry: 40 - -// Turns PVP (Person v. Person) off on a map. -pvpoff: 40 - -// Enables PVP on a map. -pvpon: 40 - -// Enables platinum skills. -questskill: 40 - -// Sets the speed you can walk/attack at. Default is 150. -speed: 40 - -// Enables spirit sphere balls. -spiritball: 40 - -// Warp yourself to a certain map, at (x,y) coordinates (2 same commands). -rura: 40 -warp: 40 - -// Changes GM clothes color (2 same commands) -dye: 40 -ccolor: 40 - -// Changes GM hair style (2 same commands) -hairstyle: 40 -hstyle: 40 - -// Changes GM hair color (2 same commands) -haircolor: 40 -hcolor: 40 - -// Deletes all your items. -itemreset: 40 - -// Kill all monsters in map (without drops) -killmonster2: 40 - -// Sets your spawn point (aka save point). -save: 40 - -// Do some visual effect on your character -effect: 40 - -// Display all items of a player -charitemlist: 40 - -// Display all items of a player's storage -charstoragelist: 40 - -// Display all items of a player's cart -charcartlist: 40 - -// drop all your items -dropall: 40 - -// store all your items -storeall: 40 - -// allow other players to hit you out of pvp -killable: 40 - -// look up a skill by name -skillid: 40 - -// use a skill by id -useskill: 40 - -// make another player killable -charkillable: 40 - -//--------------------- -// 50: Sub-GM+ commands - -// Changes character's model -charmodel: 50 - -guild: 50 - -// Brings up your guild storage wherever you are. -gstorage: 50 - -// Spawns a monster, and a certain amount (3 same commands + /monster). -spawn: 50 -monster: 50 -summon: 50 - -// Spawns a monster with parameters not in same order of @spawn. -monster2: 50 - -// To get a peco to (un)ride for another player. -charmountpeco: 50 - -// Enables to give possibility to a player to rename his/her pet. -charpetrename: 50 - - -//---------------- -// 60: GM commands - -// Starts Guild Wars -agitstart: 60 - -// Ends Guild Wars -agitend: 60 - -// Resurects yourself. -alive: 60 - -// Levels your character to specified level (adds to your level) (3 same commands). -lvup: 60 -baselvlup: 60 -blevel: 60 - -// Raises your job level (3 same commands). -joblvup: 60 -joblvlup: 60 -jlevel: 60 - -// Sets another persons base level. -charbaselvl: 60 - -// Changes the sex of an online player (all characters on the account) -charchangesex: 60 - -// Remove items from a character -chardelitem: 60 - -// Sets another persons job level. -charjlvl: 60 - -// Sets the job of another character (2 same commands). -charjob: 60 -charjobchange: 60 - -// Set options on another character. -charoption: 60 - -// Gives another character status points -charstpoint: 60 - -// Gives another character skill points -charskpoint: 60 - -// Resets another character's stats -charreset: 60 - -// Resets another character's status, skills -charstreset: 60 -charskreset: 60 - -// Saves the respawn point of another character. -charsave: 60 - -// Changes another character's zenny -charzeny: 60 - -// Levels your guild to specified level (2 same commands). -guildlvup: 60 -guildlvlup: 60 - -idsearch: 60 - -// Creates an item of your choosing, either Item ID or Name (1 command + /item). -item: 60 - -// Creates a complet item (card, etc...) of your choosing, either Item ID or Name. -item2: 60 - -// ?? -itemcheck: 60 - -// Kill another character without hitting them. -kill: 60 - -// Kill all monsters in map (with drops) -killmonster: 60 - -// Creates yourself a pet egg, have to use Pet ID. -makeegg: 60 - -// Instantly kills player whose name is entered and deals insane damage to everything around. -// Disabled for now -//nuke: 60 - -// Enable hitting a player even when not in pvp -killer: 60 - -// Creates weapon of desired element. -produce: 60 - -// Warps a character to you (1 command + /recall). -recall: 60 - -// Refines all weapons in your items list. -refine: 60 - -// Will repair all broken items in inventory. -repairall: 60 - -// Revives a character, and heals them. -revive: 60 - -// Warp another person to a certain map, at (x,y) coordinates (2 same commands). -rura+: 60 -charwarp: 60 - -// Change Status of your character -str: 60 -agi: 60 -vit: 60 -int: 60 -dex: 60 -luk: 60 - -// Gets all skills (4 same commands) -allskill: 60 -allskills: 60 -skillall: 60 -skillsall: 60 - -// sets GM stats to maximum (4 same commands) -statall: 60 -statsall: 60 -allstats: 60 -allstat: 60 - -// Gives you job points. -stpoint: 60 - -// Gives you skill points of desired amount. -skpoint: 60 - -// Warps all online character of a guild to you. (at least one member of that guild must be on.) -guildrecall: 60 - -// Warps all online character of a party to you. (at least one party member must be online.) -partyrecall: 60 - -// Allows you to spy on any Guilds Guild chat. (at least one member of that guild must be on.) -guildspy: 60 - -//Allows you to spy on any party's party chat. (at least one party member must be online.) -partyspy: 60 - -// Gives you money (zeny) of desired amount. -zeny: 60 - -// To block definitively a player (only administrator can unblock the account) (2 same commands) -block: 60 -charblock: 60 - -// To unblock a player (2 same commands) -unblock: 60 -charunblock: 60 - -// To ban a player for a limited time (only administrator can unban the account) (4 same commands) -ban: 60 -banish: 60 -charban: 60 -charbanish: 60 - -// To unban a player (4 same commands) -unban: 60 -unbanish: 60 -charunban: 60 -charunbanish: 60 - -// To send specified character in jails -jail: 60 - -// To discharge a prisoner (2 same commands) -unjail: 60 -discharge: 60 - -// To change disguise of another player/GM -chardisguise: 60 -charundisguise: 60 - -// Enables platinum skills of another player. -charquestskill: 60 - -// Enables lost skills of another player. -charlostskill: 60 - -// turn on and off skills on a map -skillon: 60 -skilloff: 60 - -// Create a static warp portal that lasts until the next reboot -addwarp: 60 - -// drop a players possessions on the gruond -chardropall: 60 - -// put a players possessions in storage -charstoreall: 60 - -//---------------------- -// 80: GM Chief commands - -// Set the map you are on to day. -day: 80 - -// Kills everyone on the server. -doom: 80 - -// Kills everyone on the map you are on. -doommap: 80 - -// Set the map you are currently on to night. -night: 80 - -// Recalls Everyone To Your Coordinates -recallall: 80 - -// Revives all players on the map. -raisemap: 80 - -// Revives all players on the server. -raise: 80 - -// Enables a NPC. -enablenpc: 80 - -// Disables a NPC. -disablenpc: 80 - -// Move a NPC -npcmove: 80 - -// turn skills on for a map -skillon: 80 - -// turn skills off for a map -skilloff: 80 - -// Unmute a player -unmute: 60 - -//--------------------------- -// 99: Administrator commands - -// Disconnect all users from the server -kickall: 99 - -// Closes Map-Server -mapexit: 99 - -// Give information about terrain/area (debug function) -gat: 99 - -// Enables debugging -packet: 99 - -// Shows information about the map -mapinfo: 99 - -// Re-load item database (admin command) -reloaditemdb: 99 - -// Re-load monsters database (admin command) -reloadmobdb: 99 - -// Re-load skills database (admin command) -reloadskilldb: 99 - -// Re-load scripts (admin command) -reloadscript: 99 - -// Re-load GM level (admin command) -reloadgmdb: 99 - -// change a battle_config flag without rebooting server -setbattleflag: 99 - -// Refresh only status of players - SQL Only -refreshonline: 99 - -//--------------------------------------------------------------- -// 99: Weather effects - -rain: 99 - -snow: 99 - -fog: 99 - -sakura: 99 - -leaves:99 - -//--------------------------------------------------------------- -// 0: Mail System - SQL Only commands - Must be enabled - -// Check # of messages. -checkmail: 1 - -// List all messages. -listmail: 1 - -// List only new mail. -listnewmail: 1 - -// Read a message. -readmail: 1 - -// Send mail. -sendmail: 1 - -// Send priority mail (tagged with Priority and cannot be deleted until read) -sendprioritymail: 80 - -// Delete a message. -deletemail: 0 - - - -//--------------------- -// OTHER: not a command - -//import: conf/import/atcommand_conf.txt +// Athena atcommand Configuration file. +// Translated by Peter Kieser + +// Set here the symbol that you want to use for your commands +// Only 1 character is get (default is '@'). You can set any character, +// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands) +// With default character, all commands begin by a '@': @revive +command_symbol: @ + + +// Sets the level of the users that can use the GM commands. +// : level +// When battle_athena.conf has atcommand_gm_only set to no, +// normal players (gm level 0) can use GM commands if you set 0 to the command level. +// Max GM level is 99. If you want forbid a command to all people, set it with level 100. + +// Default values are set to define different GM levels like follow: +// 0: normal player +// -> no special advantage (only @time to know time and if at_command_gm_only is disabled) +// 1: Super player +// -> some (very) little advantages: storage, petrename, etc... +// 10: Super player+ +// -> same of Super player with !go (very super player) +// 20: Mediator +// -> it's a GM that only need to know people, and move to their to speak with them (they can access to any command about wisps) +// 40: Sub-GM +// -> This GM can help a GM, and can not create item or zeny or modify a character (can have some information commands) +// 50: Sub-GM+ +// -> This GM can change some non-important things on a character +// 60: GM +// -> can do almost anything (excep administration, and mass commands) +// GM is the first level where we can modify a character with important value, create items or create zenys +// 80: GM Chief +// -> can do anything, except administration commands +// 99: Administrator +// -> can do anything! + + +//-------------------------- +// 0: normal player commands + +// Give server time. (6 same commands) +time: 0 +date: 0 +server_date: 0 +serverdate: 0 +server_time: 0 +servertime: 0 + +// Display your ignore list (people from which you ignore wisps) +ignorelist: 0 + +// To change your (own) email (characters protection) +// note: this command doesn't check email itself, but check structure of the email (xxx@xxx) +// if you want be sure of each e-mail disable this option (value: 100) +email: 0 + +// To become GM (need password; password is set in login_athena.conf). +// special!: only a non-GM (player with gm level 0) need to have this command. +// if you change the value, be sure of what you do! +// To be able to create a gm with @gm, you must: +// - give a level to level_new_gm (parameter of login_athena.conf) (not 0) +// - enable to level 0 the @gm command (atcommand_athena.conf) (default 100) - Only level 0 can give access to this command +// - enable gm commands to normal player (battle_athena.conf, atcommand_gm_only parameter) +// - and normal player must give correct password when he use the @gm command (gm_pass paramter in login_athena.conf) +gm: 100 + + +//------------------------- +// 1: Super player commands + +// Suicide your character. +die: 1 + +// Enables you to rename your pet. +petrename: 1 + +party: 1 + +// Brings up your personal storage wherever you are. +storage: 1 + +// Locate someone on a map, returns your coordinates if the person isn't on. +where: 1 + + +//--------------------------- +// 10: Super player+ commands + +// Spawns you to set points in major cities. +go: 10 + + +//---------------------- +// 20: Mediator commands + +// Displays helpfile in Athena base directory (2 same commands). +help: 20 +h: 20 + +// Warp yourself to a person (3 same commands + /shift). +jumpto: 20 +goto: 20 +warpto: 20 + +// follow a player (including warping to them) +follow: 20 + +// Disconnects a user from the server (1 command + right click menu for GM "(name) force to quit"). +kick: 20 + +// Changes your apperance. +model: 20 + +// To get a peco to (un)ride +mountpeco: 20 + +// Returns list of logged in characters with their position (2 same commands). +who: 20 +whois: 20 + +// Returns list of logged in characters with their job. +who2: 20 + +// Returns list of logged in characters with their party/guild. +who3: 20 + +// Returns list of logged in characters with their position in a specifical map. +whomap: 20 + +// Returns list of logged in characters with their job in a specifical map. +whomap2: 20 + +// Returns list of logged in characters with their party/guild in a specifical map. +whomap3: 20 + +// Like @who+@who2+who3, but only for GM. +whogm: 20 + +// Change your appearence to other players to a mob. +disguise: 20 + +//Restore your normal appearance. +undisguise: 20 + +// Display ignore list of a player (people from which the player ignore wisps) +charignorelist: 20 + +// Enable all wispers for a player +inall: 20 + +// Disable all wispers for a player +exall: 20 + + +//-------------------- +// 40: Sub-GM commands + +// Broadcast to the whole server. Using (1 command + /nb, /b). +broadcast: 40 + +// Broadcast to the map you are on (1 command + /lb, /nlb). +local_broadcast: 40 + +// Broadcast (with or without name). +kami: 40 +kamib: 40 + +// Enables you to go to a certain map, at (x,y) coordinates. (@mapmove + /mm or /mapmove) +mapmove: 40 + +// Enables you to view other characters stats. +charstats: 40 + +// Shows Stats Of All Characters Online +charstatsall: 40 + +// Enables GVG on a map (2 same commands). +gvgon: 40 +gpvpon: 40 + +// Turns GVG (Guild v. Guild) off on a map (2 same commands). +gvgoff: 40 +gpvpoff: 40 + +// Heals a person to full HP/SP. +heal: 40 + +// GM Hide (enables you to be invisible to characters, and most monsters) (1 command + /hide). +hide: 40 + +// Changes your job to one you specify (2 same commands). +job: 40 +jobchange: 40 + +// Enables you to to jump randomly on a map (that you are already on). +jump: 40 + +// Warps you to your last save point (2 same commands). +return: 40 +load: 40 + +// Enables lost skills. +lostskill: 40 + +// Saves a warp point. +memo: 40 + +// Set your character display options. (Visual effects of your character) +option: 40 + +//Makes an egg +makeegg: 40 + +//Hatches an egg +hatch: 40 + +// Sets the level of intemecy of your pet. +petfriendly: 40 + +// Sets hunger level of your pet. +pethungry: 40 + +// Turns PVP (Person v. Person) off on a map. +pvpoff: 40 + +// Enables PVP on a map. +pvpon: 40 + +// Enables platinum skills. +questskill: 40 + +// Sets the speed you can walk/attack at. Default is 150. +speed: 40 + +// Enables spirit sphere balls. +spiritball: 40 + +// Warp yourself to a certain map, at (x,y) coordinates (2 same commands). +rura: 40 +warp: 40 + +// Changes GM clothes color (2 same commands) +dye: 40 +ccolor: 40 + +// Changes GM hair style (2 same commands) +hairstyle: 40 +hstyle: 40 + +// Changes GM hair color (2 same commands) +haircolor: 40 +hcolor: 40 + +// Deletes all your items. +itemreset: 40 + +// Kill all monsters in map (without drops) +killmonster2: 40 + +// Sets your spawn point (aka save point). +save: 40 + +// Do some visual effect on your character +effect: 40 + +// Display all items of a player +charitemlist: 40 + +// Display all items of a player's storage +charstoragelist: 40 + +// Display all items of a player's cart +charcartlist: 40 + +// drop all your items +dropall: 40 + +// store all your items +storeall: 40 + +// allow other players to hit you out of pvp +killable: 40 + +// look up a skill by name +skillid: 40 + +// use a skill by id +useskill: 40 + +// make another player killable +charkillable: 40 + +//--------------------- +// 50: Sub-GM+ commands + +// Changes character's model +charmodel: 50 + +guild: 50 + +// Brings up your guild storage wherever you are. +gstorage: 50 + +// Spawns a monster, and a certain amount (3 same commands + /monster). +spawn: 50 +monster: 50 +summon: 50 + +// Spawns a monster with parameters not in same order of @spawn. +monster2: 50 + +// To get a peco to (un)ride for another player. +charmountpeco: 50 + +// Enables to give possibility to a player to rename his/her pet. +charpetrename: 50 + + +//---------------- +// 60: GM commands + +// Starts Guild Wars +agitstart: 60 + +// Ends Guild Wars +agitend: 60 + +// Resurects yourself. +alive: 60 + +// Levels your character to specified level (adds to your level) (3 same commands). +lvup: 60 +baselvlup: 60 +blevel: 60 + +// Raises your job level (3 same commands). +joblvup: 60 +joblvlup: 60 +jlevel: 60 + +// Sets another persons base level. +charbaselvl: 60 + +// Changes the sex of an online player (all characters on the account) +charchangesex: 60 + +// Remove items from a character +chardelitem: 60 + +// Sets another persons job level. +charjlvl: 60 + +// Sets the job of another character (2 same commands). +charjob: 60 +charjobchange: 60 + +// Set options on another character. +charoption: 60 + +// Gives another character status points +charstpoint: 60 + +// Gives another character skill points +charskpoint: 60 + +// Resets another character's stats +charreset: 60 + +// Resets another character's status, skills +charstreset: 60 +charskreset: 60 + +// Saves the respawn point of another character. +charsave: 60 + +// Changes another character's zenny +charzeny: 60 + +// Levels your guild to specified level (2 same commands). +guildlvup: 60 +guildlvlup: 60 + +idsearch: 60 + +// Creates an item of your choosing, either Item ID or Name (1 command + /item). +item: 60 + +// Creates a complet item (card, etc...) of your choosing, either Item ID or Name. +item2: 60 + +// ?? +itemcheck: 60 + +// Kill another character without hitting them. +kill: 60 + +// Kill all monsters in map (with drops) +killmonster: 60 + +// Creates yourself a pet egg, have to use Pet ID. +makeegg: 60 + +// Instantly kills player whose name is entered and deals insane damage to everything around. +// Disabled for now +//nuke: 60 + +// Enable hitting a player even when not in pvp +killer: 60 + +// Creates weapon of desired element. +produce: 60 + +// Warps a character to you (1 command + /recall). +recall: 60 + +// Refines all weapons in your items list. +refine: 60 + +// Will repair all broken items in inventory. +repairall: 60 + +// Revives a character, and heals them. +revive: 60 + +// Warp another person to a certain map, at (x,y) coordinates (2 same commands). +rura+: 60 +charwarp: 60 + +// Change Status of your character +str: 60 +agi: 60 +vit: 60 +int: 60 +dex: 60 +luk: 60 + +// Gets all skills (4 same commands) +allskill: 60 +allskills: 60 +skillall: 60 +skillsall: 60 + +// sets GM stats to maximum (4 same commands) +statall: 60 +statsall: 60 +allstats: 60 +allstat: 60 + +// Gives you job points. +stpoint: 60 + +// Gives you skill points of desired amount. +skpoint: 60 + +// Warps all online character of a guild to you. (at least one member of that guild must be on.) +guildrecall: 60 + +// Warps all online character of a party to you. (at least one party member must be online.) +partyrecall: 60 + +// Allows you to spy on any Guilds Guild chat. (at least one member of that guild must be on.) +guildspy: 60 + +//Allows you to spy on any party's party chat. (at least one party member must be online.) +partyspy: 60 + +// Gives you money (zeny) of desired amount. +zeny: 60 + +// To block definitively a player (only administrator can unblock the account) (2 same commands) +block: 60 +charblock: 60 + +// To unblock a player (2 same commands) +unblock: 60 +charunblock: 60 + +// To ban a player for a limited time (only administrator can unban the account) (4 same commands) +ban: 60 +banish: 60 +charban: 60 +charbanish: 60 + +// To unban a player (4 same commands) +unban: 60 +unbanish: 60 +charunban: 60 +charunbanish: 60 + +// To send specified character in jails +jail: 60 + +// To discharge a prisoner (2 same commands) +unjail: 60 +discharge: 60 + +// To change disguise of another player/GM +chardisguise: 60 +charundisguise: 60 + +// Enables platinum skills of another player. +charquestskill: 60 + +// Enables lost skills of another player. +charlostskill: 60 + +// turn on and off skills on a map +skillon: 60 +skilloff: 60 + +// Create a static warp portal that lasts until the next reboot +addwarp: 60 + +// drop a players possessions on the gruond +chardropall: 60 + +// put a players possessions in storage +charstoreall: 60 + +//---------------------- +// 80: GM Chief commands + +// Set the map you are on to day. +day: 80 + +// Kills everyone on the server. +doom: 80 + +// Kills everyone on the map you are on. +doommap: 80 + +// Set the map you are currently on to night. +night: 80 + +// Recalls Everyone To Your Coordinates +recallall: 80 + +// Revives all players on the map. +raisemap: 80 + +// Revives all players on the server. +raise: 80 + +// Enables a NPC. +enablenpc: 80 + +// Disables a NPC. +disablenpc: 80 + +// Move a NPC +npcmove: 80 + +// turn skills on for a map +skillon: 80 + +// turn skills off for a map +skilloff: 80 + +// Unmute a player +unmute: 60 + +//--------------------------- +// 99: Administrator commands + +// Disconnect all users from the server +kickall: 99 + +// Closes Map-Server +mapexit: 99 + +// Give information about terrain/area (debug function) +gat: 99 + +// Enables debugging +packet: 99 + +// Shows information about the map +mapinfo: 99 + +// Re-load item database (admin command) +reloaditemdb: 99 + +// Re-load monsters database (admin command) +reloadmobdb: 99 + +// Re-load skills database (admin command) +reloadskilldb: 99 + +// Re-load scripts (admin command) +reloadscript: 99 + +// Re-load GM level (admin command) +reloadgmdb: 99 + +// change a battle_config flag without rebooting server +setbattleflag: 99 + +// Refresh only status of players - SQL Only +refreshonline: 99 + +//--------------------------------------------------------------- +// 99: Weather effects + +rain: 99 + +snow: 99 + +fog: 99 + +sakura: 99 + +leaves:99 + +//--------------------------------------------------------------- +// 0: Mail System - SQL Only commands - Must be enabled + +// Check # of messages. +checkmail: 1 + +// List all messages. +listmail: 1 + +// List only new mail. +listnewmail: 1 + +// Read a message. +readmail: 1 + +// Send mail. +sendmail: 1 + +// Send priority mail (tagged with Priority and cannot be deleted until read) +sendprioritymail: 80 + +// Delete a message. +deletemail: 0 + + + +//--------------------- +// OTHER: not a command + +//import: conf/import/atcommand_conf.txt diff --git a/conf-tmpl/atcommand_athena.conf.orig b/conf-tmpl/atcommand_athena.conf.orig index 2c9def212..3a3e359ae 100644 --- a/conf-tmpl/atcommand_athena.conf.orig +++ b/conf-tmpl/atcommand_athena.conf.orig @@ -1,569 +1,569 @@ -// Athena atcommand Configuration file. -// Translated by Peter Kieser - -// Set here the symbol that you want to use for your commands -// Only 1 character is get (default is '@'). You can set any character, -// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands) -// With default character, all commands begin by a '@': @revive -command_symbol: @ - - -// Sets the level of the users that can use the GM commands. -// : level -// When battle_athena.conf has atcommand_gm_only set to no, -// normal players (gm level 0) can use GM commands if you set 0 to the command level. -// Max GM level is 99. If you want forbid a command to all people, set it with level 100. - -// Default values are set to define different GM levels like follow: -// 0: normal player -// -> no special advantage (only @time to know time and if at_command_gm_only is disabled) -// 1: Super player -// -> some (very) little advantages: storage, petrename, etc... -// 10: Super player+ -// -> same of Super player with !go (very super player) -// 20: Mediator -// -> it's a GM that only need to know people, and move to their to speak with them (they can access to any command about wisps) -// 40: Sub-GM -// -> This GM can help a GM, and can not create item or zeny or modify a character (can have some information commands) -// 50: Sub-GM+ -// -> This GM can change some non-important things on a character -// 60: GM -// -> can do almost anything (excep administration, and mass commands) -// GM is the first level where we can modify a character with important value, create items or create zenys -// 80: GM Chief -// -> can do anything, except administration commands -// 99: Administrator -// -> can do anything! - - -//-------------------------- -// 0: normal player commands - -// Give server time. (6 same commands) -time: 0 -date: 0 -server_date: 0 -serverdate: 0 -server_time: 0 -servertime: 0 - -// Display your ignore list (people from which you ignore wisps) -ignorelist: 0 - -// To change your (own) email (characters protection) -// note: this command doesn't check email itself, but check structure of the email (xxx@xxx) -// if you want be sure of each e-mail disable this option (value: 100) -email: 0 - -// To become GM (need password; password is set in login_athena.conf). -// special!: only a non-GM (player with gm level 0) need to have this command. -// if you change the value, be sure of what you do! -// To be able to create a gm with @gm, you must: -// - give a level to level_new_gm (parameter of login_athena.conf) (not 0) -// - enable to level 0 the @gm command (atcommand_athena.conf) (default 100) - Only level 0 can give access to this command -// - enable gm commands to normal player (battle_athena.conf, atcommand_gm_only parameter) -// - and normal player must give correct password when he use the @gm command (gm_pass paramter in login_athena.conf) -gm: 100 - - -//------------------------- -// 1: Super player commands - -// Suicide your character. -die: 1 - -// Enables you to rename your pet. -petrename: 1 - -party: 1 - -// Brings up your personal storage wherever you are. -storage: 1 - -// Locate someone on a map, returns your coordinates if the person isn't on. -where: 1 - - -//--------------------------- -// 10: Super player+ commands - -// Spawns you to set points in major cities. -go: 10 - - -//---------------------- -// 20: Mediator commands - -// Displays helpfile in Athena base directory (2 same commands). -help: 20 -h: 20 - -// Warp yourself to a person (3 same commands + /shift). -jumpto: 20 -goto: 20 -warpto: 20 - -// follow a player (including warping to them) -follow: 20 - -// Disconnects a user from the server (1 command + right click menu for GM "(name) force to quit"). -kick: 20 - -// Changes your apperance. -model: 20 - -// To get a peco to (un)ride -mountpeco: 20 - -// Returns list of logged in characters with their position (2 same commands). -who: 20 -whois: 20 - -// Returns list of logged in characters with their job. -who2: 20 - -// Returns list of logged in characters with their party/guild. -who3: 20 - -// Returns list of logged in characters with their position in a specifical map. -whomap: 20 - -// Returns list of logged in characters with their job in a specifical map. -whomap2: 20 - -// Returns list of logged in characters with their party/guild in a specifical map. -whomap3: 20 - -// Like @who+@who2+who3, but only for GM. -whogm: 20 - -// Change your appearence to other players to a mob. -disguise: 20 - -//Restore your normal appearance. -undisguise: 20 - -// Display ignore list of a player (people from which the player ignore wisps) -charignorelist: 20 - -// Enable all wispers for a player -inall: 20 - -// Disable all wispers for a player -exall: 20 - - -//-------------------- -// 40: Sub-GM commands - -// Broadcast to the whole server. Using (1 command + /nb, /b). -broadcast: 40 - -// Broadcast to the map you are on (1 command + /lb, /nlb). -local_broadcast: 40 - -// Broadcast (with or without name). -kami: 40 -kamib: 40 - -// Enables you to go to a certain map, at (x,y) coordinates. (@mapmove + /mm or /mapmove) -mapmove: 40 - -// Enables you to view other characters stats. -charstats: 40 - -// Shows Stats Of All Characters Online -charstatsall: 40 - -// Enables GVG on a map (2 same commands). -gvgon: 40 -gpvpon: 40 - -// Turns GVG (Guild v. Guild) off on a map (2 same commands). -gvgoff: 40 -gpvpoff: 40 - -// Heals a person to full HP/SP. -heal: 40 - -// GM Hide (enables you to be invisible to characters, and most monsters) (1 command + /hide). -hide: 40 - -// Changes your job to one you specify (2 same commands). -job: 40 -jobchange: 40 - -// Enables you to to jump randomly on a map (that you are already on). -jump: 40 - -// Warps you to your last save point (2 same commands). -return: 40 -load: 40 - -// Enables lost skills. -lostskill: 40 - -// Saves a warp point. -memo: 40 - -// Set your character display options. (Visual effects of your character) -option: 40 - -//Makes an egg -makeegg: 40 - -//Hatches an egg -hatch: 40 - -// Sets the level of intemecy of your pet. -petfriendly: 40 - -// Sets hunger level of your pet. -pethungry: 40 - -// Turns PVP (Person v. Person) off on a map. -pvpoff: 40 - -// Enables PVP on a map. -pvpon: 40 - -// Enables platinum skills. -questskill: 40 - -// Sets the speed you can walk/attack at. Default is 150. -speed: 40 - -// Enables spirit sphere balls. -spiritball: 40 - -// Warp yourself to a certain map, at (x,y) coordinates (2 same commands). -rura: 40 -warp: 40 - -// Changes GM clothes color (2 same commands) -dye: 40 -ccolor: 40 - -// Changes GM hair style (2 same commands) -hairstyle: 40 -hstyle: 40 - -// Changes GM hair color (2 same commands) -haircolor: 40 -hcolor: 40 - -// Deletes all your items. -itemreset: 40 - -// Kill all monsters in map (without drops) -killmonster2: 40 - -// Sets your spawn point (aka save point). -save: 40 - -// Do some visual effect on your character -effect: 40 - -// Display all items of a player -charitemlist: 40 - -// Display all items of a player's storage -charstoragelist: 40 - -// Display all items of a player's cart -charcartlist: 40 - - -//--------------------- -// 50: Sub-GM+ commands - -// Changes character's model -charmodel: 50 - -guild: 50 - -// Brings up your guild storage wherever you are. -gstorage: 50 - -// Spawns a monster, and a certain amount (3 same commands + /monster). -spawn: 50 -monster: 50 -summon: 50 - -// Spawns a monster with parameters not in same order of @spawn. -monster2: 50 - -// To get a peco to (un)ride for another player. -charmountpeco: 50 - -// Enables to give possibility to a player to rename his/her pet. -charpetrename: 50 - - -//---------------- -// 60: GM commands - -// Starts Guild Wars -agitstart: 60 - -// Ends Guild Wars -agitend: 60 - -// Resurects yourself. -alive: 60 - -// Levels your character to specified level (adds to your level) (3 same commands). -lvup: 60 -baselvlup: 60 -blevel: 60 - -// Raises your job level (3 same commands). -joblvup: 60 -joblvlup: 60 -jlevel: 60 - -// Sets another persons base level. -charbaselvl: 60 - -// Changes the sex of an online player (all characters on the account) -charchangesex: 60 - -// Remove items from a character -chardelitem: 60 - -// Sets another persons job level. -charjlvl: 60 - -// Sets the job of another character (2 same commands). -charjob: 60 -charjobchange: 60 - -// Set options on another character. -charoption: 60 - -// Gives another character status points -charstpoint: 60 - -// Gives another character skill points -charskpoint: 60 - -// Resets another character's stats -charreset: 60 - -// Resets another character's status, skills -charstreset: 60 -charskreset: 60 - -// Saves the respawn point of another character. -charsave: 60 - -// Changes another character's zenny -charzeny: 60 - -// Levels your guild to specified level (2 same commands). -guildlvup: 60 -guildlvlup: 60 - -idsearch: 60 - -// Creates an item of your choosing, either Item ID or Name (1 command + /item). -item: 60 - -// Creates a complet item (card, etc...) of your choosing, either Item ID or Name. -item2: 60 - -// ?? -itemcheck: 60 - -// Kill another character without hitting them. -kill: 60 - -// Kill all monsters in map (with drops) -killmonster: 60 - -// Creates yourself a pet egg, have to use Pet ID. -makeegg: 60 - -// Instantly kills player whose name is entered and deals insane damage to everything around. -nuke: 60 - -// Enable hitting a player even when not in pvp -killer: 60 - -// Creates weapon of desired element. -produce: 60 - -// Warps a character to you (1 command + /recall). -recall: 60 - -// Refines all weapons in your items list. -refine: 60 - -// Will repair all broken items in inventory. -repairall: 60 - -// Revives a character, and heals them. -revive: 60 - -// Warp another person to a certain map, at (x,y) coordinates (2 same commands). -rura+: 60 -charwarp: 60 - -// Change Status of your character -str: 60 -agi: 60 -vit: 60 -int: 60 -dex: 60 -luk: 60 - -// Gets all skills (4 same commands) -allskill: 60 -allskills: 60 -skillall: 60 -skillsall: 60 - -// sets GM stats to maximum (4 same commands) -statall: 60 -statsall: 60 -allstats: 60 -allstat: 60 - -// Gives you job points. -stpoint: 60 - -// Gives you skill points of desired amount. -skpoint: 60 - -// Warps all online character of a guild to you. (at least one member of that guild must be on.) -guildrecall: 60 - -// Warps all online character of a party to you. (at least one party member must be online.) -partyrecall: 60 - -// Allows you to spy on any Guilds Guild chat. (at least one member of that guild must be on.) -guildspy: 60 - -//Allows you to spy on any party's party chat. (at least one party member must be online.) -partyspy: 60 - -// Gives you money (zeny) of desired amount. -zeny: 60 - -// To block definitively a player (only administrator can unblock the account) (2 same commands) -block: 60 -charblock: 60 - -// To unblock a player (2 same commands) -unblock: 60 -charunblock: 60 - -// To ban a player for a limited time (only administrator can unban the account) (4 same commands) -ban: 60 -banish: 60 -charban: 60 -charbanish: 60 - -// To unban a player (4 same commands) -unban: 60 -unbanish: 60 -charunban: 60 -charunbanish: 60 - -// To send specified character in jails -jail: 60 - -// To discharge a prisoner (2 same commands) -unjail: 60 -discharge: 60 - -// To change disguise of another player/GM -chardisguise: 60 -charundisguise: 60 - -// Enables platinum skills of another player. -charquestskill: 60 - -// Enables lost skills of another player. -charlostskill: 60 - -// turn on and off skills on a map -skillon: 60 -skilloff: 60 - -// Create a static warp portal that lasts until the next reboot -addwarp: 60 - - -//---------------------- -// 80: GM Chief commands - -// Set the map you are on to day. -day: 80 - -// Kills everyone on the server. -doom: 80 - -// Kills everyone on the map you are on. -doommap: 80 - -// Set the map you are currently on to night. -night: 80 - -// Recalls Everyone To Your Coordinates -recallall: 80 - -// Revives all players on the map. -raisemap: 80 - -// Revives all players on the server. -raise: 80 - -// Enables a NPC. -enablenpc: 80 - -// Disables a NPC. -disablenpc: 80 - -// Move a NPC -npcmove: 80 - - -//--------------------------- -// 99: Administrator commands - -// Disconnect all users from the server -kickall: 99 - -// Closes Map-Server -mapexit: 99 - -// Give information about terrain/area (debug function) -gat: 99 - -// Enables debugging -packet: 99 - -// Shows information about the map -mapinfo: 99 - -// Re-load item database (admin command) -reloaditemdb: 99 - -// Re-load monsters database (admin command) -reloadmobdb: 99 - -// Re-load skills database (admin command) -reloadskilldb: 99 - -// Re-load scripts (admin command) -reloadscript: 99 - -// Re-load GM level (admin command) -reloadgmdb: 99 - - -//--------------------- -// OTHER: not a command - -//import: conf/import/atcommand_conf.txt +// Athena atcommand Configuration file. +// Translated by Peter Kieser + +// Set here the symbol that you want to use for your commands +// Only 1 character is get (default is '@'). You can set any character, +// except control-character (0x00-0x1f), '%' (party chat speaking) and '/' (standard ragnarok GM commands) +// With default character, all commands begin by a '@': @revive +command_symbol: @ + + +// Sets the level of the users that can use the GM commands. +// : level +// When battle_athena.conf has atcommand_gm_only set to no, +// normal players (gm level 0) can use GM commands if you set 0 to the command level. +// Max GM level is 99. If you want forbid a command to all people, set it with level 100. + +// Default values are set to define different GM levels like follow: +// 0: normal player +// -> no special advantage (only @time to know time and if at_command_gm_only is disabled) +// 1: Super player +// -> some (very) little advantages: storage, petrename, etc... +// 10: Super player+ +// -> same of Super player with !go (very super player) +// 20: Mediator +// -> it's a GM that only need to know people, and move to their to speak with them (they can access to any command about wisps) +// 40: Sub-GM +// -> This GM can help a GM, and can not create item or zeny or modify a character (can have some information commands) +// 50: Sub-GM+ +// -> This GM can change some non-important things on a character +// 60: GM +// -> can do almost anything (excep administration, and mass commands) +// GM is the first level where we can modify a character with important value, create items or create zenys +// 80: GM Chief +// -> can do anything, except administration commands +// 99: Administrator +// -> can do anything! + + +//-------------------------- +// 0: normal player commands + +// Give server time. (6 same commands) +time: 0 +date: 0 +server_date: 0 +serverdate: 0 +server_time: 0 +servertime: 0 + +// Display your ignore list (people from which you ignore wisps) +ignorelist: 0 + +// To change your (own) email (characters protection) +// note: this command doesn't check email itself, but check structure of the email (xxx@xxx) +// if you want be sure of each e-mail disable this option (value: 100) +email: 0 + +// To become GM (need password; password is set in login_athena.conf). +// special!: only a non-GM (player with gm level 0) need to have this command. +// if you change the value, be sure of what you do! +// To be able to create a gm with @gm, you must: +// - give a level to level_new_gm (parameter of login_athena.conf) (not 0) +// - enable to level 0 the @gm command (atcommand_athena.conf) (default 100) - Only level 0 can give access to this command +// - enable gm commands to normal player (battle_athena.conf, atcommand_gm_only parameter) +// - and normal player must give correct password when he use the @gm command (gm_pass paramter in login_athena.conf) +gm: 100 + + +//------------------------- +// 1: Super player commands + +// Suicide your character. +die: 1 + +// Enables you to rename your pet. +petrename: 1 + +party: 1 + +// Brings up your personal storage wherever you are. +storage: 1 + +// Locate someone on a map, returns your coordinates if the person isn't on. +where: 1 + + +//--------------------------- +// 10: Super player+ commands + +// Spawns you to set points in major cities. +go: 10 + + +//---------------------- +// 20: Mediator commands + +// Displays helpfile in Athena base directory (2 same commands). +help: 20 +h: 20 + +// Warp yourself to a person (3 same commands + /shift). +jumpto: 20 +goto: 20 +warpto: 20 + +// follow a player (including warping to them) +follow: 20 + +// Disconnects a user from the server (1 command + right click menu for GM "(name) force to quit"). +kick: 20 + +// Changes your apperance. +model: 20 + +// To get a peco to (un)ride +mountpeco: 20 + +// Returns list of logged in characters with their position (2 same commands). +who: 20 +whois: 20 + +// Returns list of logged in characters with their job. +who2: 20 + +// Returns list of logged in characters with their party/guild. +who3: 20 + +// Returns list of logged in characters with their position in a specifical map. +whomap: 20 + +// Returns list of logged in characters with their job in a specifical map. +whomap2: 20 + +// Returns list of logged in characters with their party/guild in a specifical map. +whomap3: 20 + +// Like @who+@who2+who3, but only for GM. +whogm: 20 + +// Change your appearence to other players to a mob. +disguise: 20 + +//Restore your normal appearance. +undisguise: 20 + +// Display ignore list of a player (people from which the player ignore wisps) +charignorelist: 20 + +// Enable all wispers for a player +inall: 20 + +// Disable all wispers for a player +exall: 20 + + +//-------------------- +// 40: Sub-GM commands + +// Broadcast to the whole server. Using (1 command + /nb, /b). +broadcast: 40 + +// Broadcast to the map you are on (1 command + /lb, /nlb). +local_broadcast: 40 + +// Broadcast (with or without name). +kami: 40 +kamib: 40 + +// Enables you to go to a certain map, at (x,y) coordinates. (@mapmove + /mm or /mapmove) +mapmove: 40 + +// Enables you to view other characters stats. +charstats: 40 + +// Shows Stats Of All Characters Online +charstatsall: 40 + +// Enables GVG on a map (2 same commands). +gvgon: 40 +gpvpon: 40 + +// Turns GVG (Guild v. Guild) off on a map (2 same commands). +gvgoff: 40 +gpvpoff: 40 + +// Heals a person to full HP/SP. +heal: 40 + +// GM Hide (enables you to be invisible to characters, and most monsters) (1 command + /hide). +hide: 40 + +// Changes your job to one you specify (2 same commands). +job: 40 +jobchange: 40 + +// Enables you to to jump randomly on a map (that you are already on). +jump: 40 + +// Warps you to your last save point (2 same commands). +return: 40 +load: 40 + +// Enables lost skills. +lostskill: 40 + +// Saves a warp point. +memo: 40 + +// Set your character display options. (Visual effects of your character) +option: 40 + +//Makes an egg +makeegg: 40 + +//Hatches an egg +hatch: 40 + +// Sets the level of intemecy of your pet. +petfriendly: 40 + +// Sets hunger level of your pet. +pethungry: 40 + +// Turns PVP (Person v. Person) off on a map. +pvpoff: 40 + +// Enables PVP on a map. +pvpon: 40 + +// Enables platinum skills. +questskill: 40 + +// Sets the speed you can walk/attack at. Default is 150. +speed: 40 + +// Enables spirit sphere balls. +spiritball: 40 + +// Warp yourself to a certain map, at (x,y) coordinates (2 same commands). +rura: 40 +warp: 40 + +// Changes GM clothes color (2 same commands) +dye: 40 +ccolor: 40 + +// Changes GM hair style (2 same commands) +hairstyle: 40 +hstyle: 40 + +// Changes GM hair color (2 same commands) +haircolor: 40 +hcolor: 40 + +// Deletes all your items. +itemreset: 40 + +// Kill all monsters in map (without drops) +killmonster2: 40 + +// Sets your spawn point (aka save point). +save: 40 + +// Do some visual effect on your character +effect: 40 + +// Display all items of a player +charitemlist: 40 + +// Display all items of a player's storage +charstoragelist: 40 + +// Display all items of a player's cart +charcartlist: 40 + + +//--------------------- +// 50: Sub-GM+ commands + +// Changes character's model +charmodel: 50 + +guild: 50 + +// Brings up your guild storage wherever you are. +gstorage: 50 + +// Spawns a monster, and a certain amount (3 same commands + /monster). +spawn: 50 +monster: 50 +summon: 50 + +// Spawns a monster with parameters not in same order of @spawn. +monster2: 50 + +// To get a peco to (un)ride for another player. +charmountpeco: 50 + +// Enables to give possibility to a player to rename his/her pet. +charpetrename: 50 + + +//---------------- +// 60: GM commands + +// Starts Guild Wars +agitstart: 60 + +// Ends Guild Wars +agitend: 60 + +// Resurects yourself. +alive: 60 + +// Levels your character to specified level (adds to your level) (3 same commands). +lvup: 60 +baselvlup: 60 +blevel: 60 + +// Raises your job level (3 same commands). +joblvup: 60 +joblvlup: 60 +jlevel: 60 + +// Sets another persons base level. +charbaselvl: 60 + +// Changes the sex of an online player (all characters on the account) +charchangesex: 60 + +// Remove items from a character +chardelitem: 60 + +// Sets another persons job level. +charjlvl: 60 + +// Sets the job of another character (2 same commands). +charjob: 60 +charjobchange: 60 + +// Set options on another character. +charoption: 60 + +// Gives another character status points +charstpoint: 60 + +// Gives another character skill points +charskpoint: 60 + +// Resets another character's stats +charreset: 60 + +// Resets another character's status, skills +charstreset: 60 +charskreset: 60 + +// Saves the respawn point of another character. +charsave: 60 + +// Changes another character's zenny +charzeny: 60 + +// Levels your guild to specified level (2 same commands). +guildlvup: 60 +guildlvlup: 60 + +idsearch: 60 + +// Creates an item of your choosing, either Item ID or Name (1 command + /item). +item: 60 + +// Creates a complet item (card, etc...) of your choosing, either Item ID or Name. +item2: 60 + +// ?? +itemcheck: 60 + +// Kill another character without hitting them. +kill: 60 + +// Kill all monsters in map (with drops) +killmonster: 60 + +// Creates yourself a pet egg, have to use Pet ID. +makeegg: 60 + +// Instantly kills player whose name is entered and deals insane damage to everything around. +nuke: 60 + +// Enable hitting a player even when not in pvp +killer: 60 + +// Creates weapon of desired element. +produce: 60 + +// Warps a character to you (1 command + /recall). +recall: 60 + +// Refines all weapons in your items list. +refine: 60 + +// Will repair all broken items in inventory. +repairall: 60 + +// Revives a character, and heals them. +revive: 60 + +// Warp another person to a certain map, at (x,y) coordinates (2 same commands). +rura+: 60 +charwarp: 60 + +// Change Status of your character +str: 60 +agi: 60 +vit: 60 +int: 60 +dex: 60 +luk: 60 + +// Gets all skills (4 same commands) +allskill: 60 +allskills: 60 +skillall: 60 +skillsall: 60 + +// sets GM stats to maximum (4 same commands) +statall: 60 +statsall: 60 +allstats: 60 +allstat: 60 + +// Gives you job points. +stpoint: 60 + +// Gives you skill points of desired amount. +skpoint: 60 + +// Warps all online character of a guild to you. (at least one member of that guild must be on.) +guildrecall: 60 + +// Warps all online character of a party to you. (at least one party member must be online.) +partyrecall: 60 + +// Allows you to spy on any Guilds Guild chat. (at least one member of that guild must be on.) +guildspy: 60 + +//Allows you to spy on any party's party chat. (at least one party member must be online.) +partyspy: 60 + +// Gives you money (zeny) of desired amount. +zeny: 60 + +// To block definitively a player (only administrator can unblock the account) (2 same commands) +block: 60 +charblock: 60 + +// To unblock a player (2 same commands) +unblock: 60 +charunblock: 60 + +// To ban a player for a limited time (only administrator can unban the account) (4 same commands) +ban: 60 +banish: 60 +charban: 60 +charbanish: 60 + +// To unban a player (4 same commands) +unban: 60 +unbanish: 60 +charunban: 60 +charunbanish: 60 + +// To send specified character in jails +jail: 60 + +// To discharge a prisoner (2 same commands) +unjail: 60 +discharge: 60 + +// To change disguise of another player/GM +chardisguise: 60 +charundisguise: 60 + +// Enables platinum skills of another player. +charquestskill: 60 + +// Enables lost skills of another player. +charlostskill: 60 + +// turn on and off skills on a map +skillon: 60 +skilloff: 60 + +// Create a static warp portal that lasts until the next reboot +addwarp: 60 + + +//---------------------- +// 80: GM Chief commands + +// Set the map you are on to day. +day: 80 + +// Kills everyone on the server. +doom: 80 + +// Kills everyone on the map you are on. +doommap: 80 + +// Set the map you are currently on to night. +night: 80 + +// Recalls Everyone To Your Coordinates +recallall: 80 + +// Revives all players on the map. +raisemap: 80 + +// Revives all players on the server. +raise: 80 + +// Enables a NPC. +enablenpc: 80 + +// Disables a NPC. +disablenpc: 80 + +// Move a NPC +npcmove: 80 + + +//--------------------------- +// 99: Administrator commands + +// Disconnect all users from the server +kickall: 99 + +// Closes Map-Server +mapexit: 99 + +// Give information about terrain/area (debug function) +gat: 99 + +// Enables debugging +packet: 99 + +// Shows information about the map +mapinfo: 99 + +// Re-load item database (admin command) +reloaditemdb: 99 + +// Re-load monsters database (admin command) +reloadmobdb: 99 + +// Re-load skills database (admin command) +reloadskilldb: 99 + +// Re-load scripts (admin command) +reloadscript: 99 + +// Re-load GM level (admin command) +reloadgmdb: 99 + + +//--------------------- +// OTHER: not a command + +//import: conf/import/atcommand_conf.txt diff --git a/conf-tmpl/battle_athena.conf b/conf-tmpl/battle_athena.conf index 04c5227af..17ef2ca54 100644 --- a/conf-tmpl/battle_athena.conf +++ b/conf-tmpl/battle_athena.conf @@ -1,725 +1,725 @@ -// ______ __ __ -// /\ _ \/\ \__/\ \ -// __\ \ \L\ \ \ ,_\ \ \___ __ ___ __ -// /'__`\ \ __ \ \ \/\ \ _ `\ /'__`\/' _ `\ /'__`\ -///\ __/\ \ \/\ \ \ \_\ \ \ \ \/\ __//\ \/\ \/\ \L\.\_ -//\ \____\\ \_\ \_\ \__\\ \_\ \_\ \____\ \_\ \_\ \__/.\_\ -// \/____/ \/_/\/_/\/__/ \/_/\/_/\/____/\/_/\/_/\/__/\/_/ -// _ _ _ _ _ _ _ _ _ _ _ _ _ -// / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ -//( e | n | g | l | i | s | h ) ( A | t | h | e | n | a ) -// \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ -// -//-------------------------------------------------------------- -//eAthena Battle Configuration File -// Made in to plainer english by Ancyker -//-------------------------------------------------------------- -//Note 1: Directives can be set using on/off, yes/no or 1/0. -//Note 2: All rates are in percents, 100 would mean 100%, 200 -// would mean 200%, etc -// Other Information: -// 1000 miliseconds is 1 second. -//-------------------------------------------------------------- - -// Do you want to debug warp points? If set to yes, warp points will appear as flags.(Note 1) -warp_point_debug: no - -// When calculating critical, should we take in to account the enimies luck? (Note 1) -enemy_critical: yes - -// Enemy's Critical Rate (Note 2) -enemy_critical_rate: 100 - -// Are enemy attacks effected by their strength? (Note 1) -enemy_str: yes - -// Can enemies have perfect flee? (Note 1) -enemy_perfect_flee: no - -// The rate of time it takes to cast a spell (Note 2, 0 = No casting time) -casting_rate: 100 - -// Delay time after casting (Note 2) -delay_rate: 100 - -// Is the delay time is dependent on the caster's DEX? (Note 1) -delay_dependon_dex: yes - -// At what dex does the cast time become zero (instacast) -castrate_dex_scale: 150 - -// Is 'Skills add a delay before you can attack' enabled? (Note 1) -skill_delay_attack_enable: yes - -// Whether or not cards and attributes in the left hand are enabled (Note 1) -left_cardfix_to_right: yes - -// Increase player's attack range (in cells) -player_skill_add_range: 0 - -// If the target moves out of range while casting, do we take the items and SP for the skill anyway? (Note 1) -skill_out_range_consume: no - -// Increase Monsters attack range -monster_skill_add_range: 0 - -// If a player is attacked, will they have a delay in being able to move? (Note 1) -// (Setting to no will be like always endure) -player_damage_delay: yes - -// Damaged delay rate (Note 2) -player_damage_delay_rate: 100 - -// Is a player's defense NOT dependant on an enemies attack? (Note 1) -defunit_not_enemy: yes - -// Are summoned monsters level greater then your base level? (I think this is for dead branches) (Note 1) -random_monster_checklv: yes - -// The maximum quantity of monsters that can be summoned per GM command (0 denotes an unlimited quantity) -atcommand_spawn_quantity_limit: 100 - -// Does HP recover if hit by an attribute that's same as your own? (Note 1) -attribute_recover: yes - -// If an item is droped, does it go stright into the users inventory? (Note 1) -item_auto_get: no - -// How long does it take for an item to disappear from the floor after it is dropped? (in miliseconds) -flooritem_lifetime: 60000 - -// How long before the first person who did the most damage to a monster can get the item? (in milliseconds) -item_first_get_time: 3000 - -// How long before the second person who did the second most damage to a monster can get the item? (in milliseconds) -// (It Adds Time From The First Persons Time) -// So, It Is Like First Person's Time + Second Person's Time = Time Before Second Person Can Get The Items -item_second_get_time: 1000 - -// How long before the third person who did the third most/least damage to a monster can get the item? (in milliseconds) -// (It Adds Time From The First Persons Time And Second Persons Time) -// So, It Is Like First Person's Time + Second Person's Time + Third Person's Time = Time Before Third Person Can Get The Items -item_third_get_time: 1000 - -// How long before the first person who did the most damage to a MVP can get the item? (in milliseconds) -mvp_item_first_get_time: 10000 - -// How long before the second person who did the second most damage to a MVP can get the item? (in milliseconds) -// (It Adds Time From The First Persons Time) -// So, It Is Like First Person's Time + Second Person's Time = Time Before Second Person Can Get The Items -mvp_item_second_get_time: 10000 - -// How long before the third person who did the third most/least damage to a MVP can get the item -//(Note the Amount is in Milliseconds and It Adds Time From The First Persons Time And Second Persons Time) -//So It Is Like First Person's Time + Second Person's Time + Third Person's Time = Time Before Third Person Can Get The Items -mvp_item_third_get_time: 2000 - -// Item drop rates (Note 2) - -// The rate the common items are droped (Items that are in the ETC tab, besides card) -item_rate_common: 100 -item_drop_common_min: 1 -item_drop_common_max: 10000 - -// The rate healing items are droped (items that restore HP or SP) -item_rate_heal: 100 -item_drop_heal_min: 1 -item_drop_heal_max: 10000 - -// The rate at which usable items (in the item tab) other then healing items are droped. -item_rate_use: 100 -item_drop_use_min: 1 -item_drop_use_max: 10000 - -// The rate at which equipment is droped. -item_rate_equip: 100 -item_drop_equip_min: 1 -item_drop_equip_max: 10000 - -// The rate at which cards are droped -item_rate_card: 100 -item_drop_card_min: 1 -item_drop_card_max: 10000 - -item_drop_mvp_min: 1 -item_drop_mvp_max: 10000 - -// Can the monster's drop rate become 0? (Note 1) -drop_rate0item: no - -// Rate at which exp. is given. (Note 2) -base_exp_rate: 100 - -// Rate at which job exp. is given. (Note 2) -job_exp_rate: 100 - -// PVP exp. Do players get exp during pvp -pvp_exp: yes - -// When a player dies, how should we penalize them? -// 0 = No penalty. -// 1 = Lose % of current level when killed. -// 2 = Lose % of total experience when killed. -death_penalty_type: 1 - -// Base exp. penalty rate (Each 100 is 1% of their exp) -death_penalty_base: 100 - -// Job exp. penalty rate (Each 100 is 1% of their exp) -death_penalty_job: 100 - -// When a player dies, how much zeny should we penalize them with? -zeny_penalty: 0 - -// The amount of HP a player will respawn with, 0 is default. -// (Unit is in percentage of total HP, 100 is full heal of HP, 0 is respawn with 1HP total.) -restart_hp_rate: 0 - -// The amount of SP a player will respawn with, 0 is default. -// (Unit is in percentage of total SP, 100 is full heal of SP, 0 is respawn with 1SP total.) -restart_sp_rate: 0 - -// [MVP] Summoned monsters HP rate, that is, monsters summoned by an MVP will have this much HP. (Note 2) -mvp_hp_rate: 100 - -// [MVP] Item drop rate, that is, the overall drop rate for items droped by an MVP. (Note 2) -mvp_item_rate: 100 - -// [MVP] Exp. rate. (Note 2) -mvp_exp_rate: 100 - -// The HP rate of normal monsters (that is monsters that are not MVP's) (Note 2) -monster_hp_rate: 100 - -// The maximum attack speed of a monster -monster_max_aspd: 199 - -// (@) GM Commands available only to GM's? (Note 1) -// set to 'No', Normal players (gm level 0) can use GM commands _IF_ you set the command level to 0. -// set to 'Yes', Normal players (gm level 0) can never use a GM command even if you set the command level to 0. -atcommand_gm_only: no - -// [GM] Can use all skills? (No or mimimum GM level) -gm_all_skill: no - -// [GM] Can use all abracadabra skills? (No minimum GM level) -gm_all_skill_add_abra: no - -// [GM] Can equip anything? (No or minimum GM level, can cause client errors.) -gm_all_equipment: no - -// [GM] Raise skills unconditionally, that is, put points in to a skill not in thier jobs skill tree? (no or minimum gm level) -gm_skill_unconditional: no - -// Can a normal player by-pass the skill tree? (Note 1) -player_skillfree: no - -// When doing a skill reset, whether the skill's restriction is to be ignored or not. (Note 1) -player_skillup_limit: yes - -// Forging success rate. (Note 2) -weapon_produce_rate: 100 - -// Prepare Potion succsss rate. (Note 2) -potion_produce_rate: 100 - -// Allow monsters to be aggresive and attack first? (Note 1) -monster_active_enable: yes - -// Monster damage delay rate (Note 1) -monster_damage_delay_rate: 100 - -// Looting monster actions. -// 0 = Monster will consume the item. -// 1 = Monster will not consume the item. -monster_loot_type: 0 - -// Enable monster skills? (Note 1) -mob_skill_use: yes - -// Rate of monsters on a map, 200 would be twice as many as normal. (Note 2) -mob_count_rate: 100 - -// Quest skills can be learned? (Note 1) -// Setting this to yes can open an exploit on your server! -quest_skill_learn: no - -// When skills are reset, quest skills are reset as well? (Note 1) -// Setting this to yes can open an exploit on your server! -quest_skill_reset: no - -// You must have basic skills to be able to sit, trade, form a party or create a chatroom? (Note 1) -basic_skill_check: yes - -// When making a guild, an Emperium is consumed? (Note 1) -guild_emperium_check: yes - -// Maximum tax limit on a guild member. -guild_exp_limit: 50 - -// Maximum castles one guild can own (0 - unlimited) -guild_max_castles: 0 - -// When teleporting, or spawning to a map, how long before a monster sees you if you don't move? (time is in milliseconds) -// That is, when you go to a map and don't move, how long before the monsters will notice you. -// If you attack a monster, it will attack you back regaurdless of this setting. (I think) -player_invincible_time: 5000 - -// [PET] Rate for catching pets (Note 2) -pet_catch_rate: 100 - -// [PET] Can you name a pet more then once? (Note 1) -pet_rename: no - -// [PET] The rate a pet will get friendly by feeding it. (Note 2) -pet_friendly_rate: 100 - -// [PET] The rate at which a pet will become hungry. (Note 2) -pet_hungry_delay_rate: 100 - -// [PET] If your pet is hungry by how much will the friendlyness decrease by. (Default is 5) -// Note: The friendlyness is 0-1000 total, at 0 the pet runs away. -pet_hungry_friendly_decrease: 5 - -// [PET] Does Pet's Attack Damage Based On Str (Note 1) -pet_str: yes - -// [PET] Whether or not the pet's will use skills. (Note 1) -pet_status_support: yes - -// [PET] Does the pet need its equipment before it does its skill? (Note 1) -pet_equip_required: yes - -// [PET] Will all pets attack? (Note 1) -// Do NOT use this with pet skills! -pet_attack_support: no - -// [PET] When the master receives damage from the monster, whether or not the pet attacks back. -pet_damage_support: no - -// [PET] Rate at which a pet will support it's owner in battle. (Note 2) -pet_support_rate: 100 - -// [PET] Does the pets owner receive exp from the pets damage? -pet_attack_exp_to_master: no - -// [PET] The rate exp. is gained from the pet attacking monsters -pet_attack_exp_rate: 100 - -// Will there be a minimum skill dmg even if there is a miss? -skill_min_damage: no - -// Which finger offensive style can be used? -// 0 = Aegis style -// 1 = Athena style -finger_offensive_type: 0 - -// The rate of job exp. from using Heal skill (100 is the same as the heal amount, 200 is double. -// The balance of the exp. rate is best used with 5 to 10) -heal_exp: 0 - -// The rate of exp. that is gained by the process of resurrection, a unit is 0.01%. -// Experience calculations for the experience value * level difference of the person revived / 100 * resurrection_exp/10000 which the revived player has can be got. -resurrection_exp: 0 - -// The rate of job exp. when using discount and overcharge on an NPC (100 is normal, 200 is double.) -// The way it is calculated is (money recieved * skill lv) * shop_exp / 100. -shop_exp: 0 - -// The delay rate of monk's combo (Note 2) -combo_delay_rate: 100 - -// Item check? (Note 1) -// When logged in or moving in map if the item the player is holding isn't correct there will be a check. -item_check: no - -// Will tuxedo and wedding dresses be shown when worn? (Note 1) -wedding_modifydisplay: yes - -// The time interval for HP to restore naturally. (in milliseconds) -natural_healhp_interval: 6000 - -// The time interval for SP to restore naturally. (in milliseconds) -natural_healsp_interval: 8000 - -// Automatic healing skill's time interval. (in milliseconds) -natural_heal_skill_interval: 10000 - -// The maximum weight for a character to carry when the character stops healing naturally. (in %) -natural_heal_weight_rate: 50 - -// Override item names from GRF file? (Note 1) -item_name_override_grffile: yes - -// Are arrows are consumed when used on a bow? (Note 1) -arrow_decrement: yes - -// Maximum atk speed. (Default is 190) -max_aspd: 190 - -// Maximum HP. (Default is 32500) -max_hp: 32500 - -// Maximum SP. (Default is 32500) -max_sp: 32500 - -// Maximum user LV to send to client -// (Default is 99.. Never go above 127) -// -// this is only useful if you have adjusted your client -// to expect levels higher then 99 -max_lv: 99 - -// Max limit of char stats. (agi, str, etc.) -max_parameter: 99 - -// Max weight carts can hold. -max_cart_weight: 8000 - -// Display player skill errors in console? (for debug only) (default: off) (Note 1) -player_skill_log: off - -// Display monster skill errors in console? (for debug only) (default: off) (Note 1) -monster_skill_log: off - -// Display battle log? (for debug only) (default: off) (Note 1) -battle_log: off - -// Display save log? (for debug only) (default: off) (Note 1) -save_log: off - -// Display errors? (for debug only) (default: off) (Note 1) -error_log: off - -// Display other stuff? (for debug only) (default: off) (Note 1) -etc_log: off - -// Save Clothes color. (This will degrade performance [in txt?]) (Note 1) -save_clothcolor: yes - -// Undead type differeniate. -// 0 = element undead -// 1 = race undead -// 2 = both -undead_detect_type: 2 - -// Operational mode of automatic counter. -// 0 = disregard DEF and HIT+20 . CRI*2, 1 = 100% critical -// Players -player_auto_counter_type: 0 -// Monsters -monster_auto_counter_type: 0 - -// Type of penalty that is applied to FLEE when more than agi_penaly_count monsters are targetting player -// 0 = no penalty is applied -// 1 = agi_penaly_num is reduced from FLEE as a % -// 2 = agi_penaly_num is reduced from FLEE as an exact amount -agi_penaly_type: 1 - -// Amount of enemies required to be targetting player before FLEE begins to be penalized -agi_penaly_count: 3 - -// Amount of FLEE penalized per each attacking monster more than agi_penaly_count -agi_penaly_num: 10 - -// Type of penalty that is applied to VIT defense when more than vit_penaly_count monsters are targetting player -// 0 = no penalty is applied -// 1 = vit_penaly_num is reduced from FLEE as a % -// 2 = vit_penaly_num is reduced from FLEE as an exact amount -vit_penaly_type: 1 - -// Amount of enemies required to be targetting player before VIT defense begins to be penalized -vit_penaly_count: 3 - -// Amount of VIT defense penalized per each attacking monster more than vit_penaly_count -vit_penaly_num: 5 - -// When the player attacks an object, the calculation method of DEF. -// With 0 this will be ignored specification, at 1 or more def = subtraction of (DEF* value). -player_defense_type: 0 - -// When the monster attacks an object, the calculation method of DEF. -// With 0 this will be ignored, at 1 or more def = subtraction of (DEF* value). -monster_defense_type: 0 - -// When the pet attacks an object, the calculation method of DEF. -// With 0 this will be ignored specification, at 1 or more def = subtraction of (DEF* value). -pet_defense_type: 0 - -//MDEFTame as above....(MDEF*value) -magic_defense_type: 0 - -// Whether or not, ground skills of the players' will stack. (Note 1) -player_skill_reiteration: no - -//Whether or not, ground skills of the monsters' will pile up. (Note 1) -monster_skill_reiteration: no - -//Whether or not ground based skills of a certain type such as traps can be cast straight onto other players. (Note 1) -player_skill_nofootset: yes - -//Whether or not ground based skills of a certain type such as traps can be cast straight onto monsters. (Note 1) -monster_skill_nofootset: yes - -// When a player is cloaking, Whether the wall is checked or not. (Note 1) -// Note: Gravity announced that they were changing cloaking so it would -// not need a wall, but this was never implemented. I set to no, for fun. -player_cloak_check_type: no - -// When a monster is cloaking, Whether the wall is checked or not. (Note 1) -monster_cloak_check_type: no - -// Melee damage adjustments for WoE battles (Guild Vs Guild) (Note 2) -gvg_short_attack_damage_rate: 100 - -// Ranged damage adjustments for WoE battles (Guild Vs Guild) (Note 2) -gvg_long_attack_damage_rate: 100 - -// Magic damage adjustments for WoE battles (Guild Vs Guild) (Note 2) -gvg_magic_attack_damage_rate: 100 - -// Misc damage adjustments for WoE battles (Guild Vs Guild) (Note 2) -gvg_misc_attack_damage_rate: 100 - -// When the empelium is broken with WoE mode on, How Long Before The Declaration Of Castle Owner -// and Removal of Monsters/Players from Castle. (in milliseconds) -gvg_eliminate_time: 7000 - -// Whether or not skill is used vis-a-vis the user at the time of MOB skill motion of condition skillused. (Note 1) -// Not sure what this means, something about monsters changing target? -mob_changetarget_byskill: no - -// Player's Direction Changed When Attacking? (Note 1) -player_attack_direction_change: yes - -// Monsters's Direction Changed When Attacking? (Note 1) -monster_attack_direction_change: yes - -// If the player has Undead Elemental Equipment, should they be frozen or not. (Note 1) -player_undead_nofreeze: no - -// Will Player Skills Stay Within Land Limit or not? (Note 1) -player_land_skill_limit: yes - -// Will Monster Skills Stay Within Land Limit or not? (Note 1) -monster_land_skill_limit: yes - -// If a party uses a skill with penalties do they apply? (Note 1) -party_skill_penaly: yes - -// If monster's class is changed will it fully recover HP and SP and Ailments? (Note 1) -monster_class_change_full_recover: no - -// Do produced items have the maker's name on them? (Note 1) -produce_item_name_input: yes - -// Do produced potions have the maker's name on them? (Note 1) -produce_potion_name_input: yes - -// Do crafted arrows have the maker's name on them? (Note 1) -making_arrow_name_input: yes - -// Does created holy water have the maker's name on it? (Note 1) -holywater_name_input: yes - -// Stop logout for 10 seconds after a hit? (Note 1) -prevent_logout: yes - -// If skill fails by delay, should it display or not. (Note 1) -display_delay_skill_fail: yes - -// Can a player in chat room (in-game), be warped by a warp portal? (Note 1) -chat_warpportal: no - -// Can a monster be warped by a warp portal? (Note 1) -mob_warpportal: no - -// Is a monster summoned via dead branch aggresive? (Note 1) -dead_branch_active: yes - -// The highest value at which an item can be sold via the merchant vend skill. (in zeny) -vending_max_value: 10000000 - -// If someone loots, show name in party? (Note 1) -show_steal_in_same_party: no - -// Allow upper class (Advanced 2nd Class)? (Note 1) -// Just leave this at yes -enable_upper_class: yes - -// Is a usual attack of a pet delivered withOUT an attribute? (Note 1) -pet_attack_attr_none: no - -// Is a usual attack of a player delivered withOUT an attribute? (Note 1) -pc_attack_attr_none: no - -// Is a usual attack of a monster delivered withOUT an attribute? (Note 1) -mob_attack_attr_none: no - -// mob attacks againsts players wearing ghostring armor do full damage -mob_ghostring_fix: no - -// Does the Golden Thief Bug card only work during pvp? -// no or 0 - gtb works all the time -// 1 - 100 - percentage of magic damage reduced only during pvp (or gvg) -gtb_pvp_only: no - -// How to count the number of the enemies who do an agi penalty... -// 1 or less: It is a count altogether. -// 2: Full evasion exclusion -// 3: Full evasion and evasion exclusion -// 4 or more: Except all. -agi_penaly_count_lv: 2 - -// How to count the number of the enemies who do a vit penalty -// 1 or less: It is a count altogether. -// 2: Full evasion exclusion -// 3: Full evasion and evasion exclusion -// Four or more: Except all. -vit_penaly_count_lv: 3 - -// Grandcross Settings (Dont mess with these) -// Even if MOB (PC) has overlapped, it HIT(s) compulsion 3. (Default no) -gx_allhit: no -// The effect of the arms card of a damage %UP system is set also to GX at -L effect. (default no) -gx_cardfix: no -// The attribute affinity of GX is calculated doubly. (Default yes) -gx_dupele: yes -// Grandcross display type (Default 1) -// 0: Yellow character -// 1: White character -gx_disptype: 1 - -// If no than you can use the ensemble skills alone. (Note 1) -player_skill_partner_check: yes - -// Is the character of a GM account set as the object of a display by @ command etc. or not? -hide_GM_session: no - -// ユニット移動処-摯-@。0で-{鯖仕-l(回線負荷→重、鯖処-掾ィ軽)、1でAthena仕-l(回線負荷→軽、鯖処-掾ィ重) -// translation (babelfish): -// Unit portable place - ? @. -// With 0 - {mackerel SI -l (circuit load -> heavily, the mackerel place - the ? ? lightly), -// With 1 - Athena SI -l (circuit load -> lightly, the mackerel place - the ? ? it is heavy) -unit_movement_type: 0 - -// Are other requests accepted during [various things[party,guild]] a request or not? -// It does not accept by no accepted by yes. -invite_request_check: yes - -// リムーブトラップの仕-l 0:-{鯖仕-l、罠1個 1:Athena仕-l、使ったアイテムを使った個数 -// translation (babelfish): -// SI of ???????? -l -// 0: - {Mackerel SI -l, trap 1 -// 1:Athena SI -l, the quantity which used the item which was used -skill_removetrap_type: 0 - -// Will display experience gained from killing a monster. (Note 1) -disp_experience: no - -// Whether or not Marine Spheres and Floras summoned by Alchemist will drop items and give experience? (Note 1) -alchemist_summon_reward: no - -// Maximum level (default 255). Requires that you have an experience table that supports more than 99 levels to go -// any higher. It is left at 255 for default as to not cause problems for people who already have players at higher levels. -// @lvup command will not go higher than this value, and therefor will not loop back around 0. -maximum_level: 255 - -// Leave at 0 to use normal drop system. Anything higher than 0 will allow luk to affect drop rates, based on a percentage. -// Example 1: Setting of 10 with 50 luk would add 5 to the drop rate. So say a card has a drop rate of 2, it would become 7. -// Example 2 : Setting 100 with 99 luk would add 99 to the drop rate. -drops_by_luk: 0 - -// Do all monsters ignore GMs unless attacked? (Note 1) -monsters_ignore_gm: no - -// Turn equipment breaking on. (Note 1) -// Turning this one will allow equipment to break in battles, -// as well as some skills that have chance to break equipmen. -equipment_breaking: no - -// Overall rate of which equipment can break. (Note 2) [100 = .01% chance to break equipment before penalties.] -// Critical attacks will double chance to break equipment, and other skills (such as Power Thrust) will increase weapon breaking chance as well. -// This does not effect Sage weapon enchantment failure chance. -equipment_break_rate: 100 - -// PK Server Mode. Turns entire server pvp(excluding towns). Experience loss is doubled if killed by another player. -// When players hunt monsters over 20 levels higher, they will receive 15% additional exp., and 25% chance of receiving more items. -// There is a nopvp.txt for setting up maps not to have pk on in this mode. Novices cannot be attacked and cannot attack. -// Normal pvp counter and rank display are disabled as well. -pk_mode: no - -// Turn this on to allow a player to level up more than once from a kill. (Note 1) -multi_level_up: no - -// Does using bow to do a backstab give a 50% damage penalty? (Note 1) -backstab_bow_penalty: yes - -// Choose if server begin with night (yes) or day (no) -night_at_start: no - -// Define duration in msec of the day (default: 7,200,000 = 2 hours) -// Set to 0 to disable day cycle (but not @day GM command). -// Except 0, minimum is 60000 (1 minute). -day_duration: 7200000 - -// Define duration in msec of the night (default: 1,800,000 = 30 min) -// Set to 0 to disable night cycle (but not @night GM command). -// Except 0, minimum is 60000 (1 minute). -night_duration: 1800000 - -// Will display a mob's hp/maxhp when the mouse cursor is over them. (Note 1) -// Will not display guardian or emperium hp. -// -// Still under testing (works but doesn't update) -show_mob_hp: no - -// Ban people that try to use an other name of its name (spoof name). -// Duration of the ban, in minutes (default: 5). Value from 0 to 32767 -// to disable the ban, set 0 -ban_spoof_namer: 5 - -// Set here minimum level of a (online) GM that can receive all informations about any player that try to hack, spoof a name, etc. -// Values are from 0 to 100. -// 100: disable information -// 0: send to any people, including normal players -// default: 60, according to GM definition in atcommand_athena.conf -hack_info_GM_level: 60 - -// Set here the minimum GM level to disable the nowarp (from) and nowarpto (to) flags. -// This option is mainly used in AT_commands (@memo, @warp, @charwarp, @go, etc...). All GM commands used to move or set a new map check nowarp and nowarpto flags. -// default: 20 (first level after normal player or super'normal' player) -any_warp_GM_min_level: 20 - -// Set here which client version do you accept. Add all values of clients: -// 1: Clients before 2004-07-06 (old clients) -// 2: 2004-07-06 kRO client -// 4: 2004-07-13 kRO client -// 8: 2004-07-26 kRO client -// 16: 2004-08-09 kRO / 2004-08-16aSakray / 2004-08-17aSakray client -// 32: 2004-09-06aSakray client -// 64: 2004-09-21aSakray Client -// 128: 2004-10-18bSakexe Client -// 256: 2004-10-25aSakexe Client -// default value: 511 (all clients) -packet_ver_flag: 511 - -// Allow GMs to mute players or not? -muting_players: no - -// Mail system - Only function in sql version -mail_system: no - -// valid range of dye's and styles on the client -min_hair_style: 0 -max_hair_style: 20 -min_hair_color: 0 -max_hair_color: 9 -min_cloth_color: 0 -max_cloth_color: 4 - -// Visible area size (how many squares away from a player can they see) -area_size: 14 - -import: conf/import/battle_conf.txt - +// ______ __ __ +// /\ _ \/\ \__/\ \ +// __\ \ \L\ \ \ ,_\ \ \___ __ ___ __ +// /'__`\ \ __ \ \ \/\ \ _ `\ /'__`\/' _ `\ /'__`\ +///\ __/\ \ \/\ \ \ \_\ \ \ \ \/\ __//\ \/\ \/\ \L\.\_ +//\ \____\\ \_\ \_\ \__\\ \_\ \_\ \____\ \_\ \_\ \__/.\_\ +// \/____/ \/_/\/_/\/__/ \/_/\/_/\/____/\/_/\/_/\/__/\/_/ +// _ _ _ _ _ _ _ _ _ _ _ _ _ +// / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ +//( e | n | g | l | i | s | h ) ( A | t | h | e | n | a ) +// \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ +// +//-------------------------------------------------------------- +//eAthena Battle Configuration File +// Made in to plainer english by Ancyker +//-------------------------------------------------------------- +//Note 1: Directives can be set using on/off, yes/no or 1/0. +//Note 2: All rates are in percents, 100 would mean 100%, 200 +// would mean 200%, etc +// Other Information: +// 1000 miliseconds is 1 second. +//-------------------------------------------------------------- + +// Do you want to debug warp points? If set to yes, warp points will appear as flags.(Note 1) +warp_point_debug: no + +// When calculating critical, should we take in to account the enimies luck? (Note 1) +enemy_critical: yes + +// Enemy's Critical Rate (Note 2) +enemy_critical_rate: 100 + +// Are enemy attacks effected by their strength? (Note 1) +enemy_str: yes + +// Can enemies have perfect flee? (Note 1) +enemy_perfect_flee: no + +// The rate of time it takes to cast a spell (Note 2, 0 = No casting time) +casting_rate: 100 + +// Delay time after casting (Note 2) +delay_rate: 100 + +// Is the delay time is dependent on the caster's DEX? (Note 1) +delay_dependon_dex: yes + +// At what dex does the cast time become zero (instacast) +castrate_dex_scale: 150 + +// Is 'Skills add a delay before you can attack' enabled? (Note 1) +skill_delay_attack_enable: yes + +// Whether or not cards and attributes in the left hand are enabled (Note 1) +left_cardfix_to_right: yes + +// Increase player's attack range (in cells) +player_skill_add_range: 0 + +// If the target moves out of range while casting, do we take the items and SP for the skill anyway? (Note 1) +skill_out_range_consume: no + +// Increase Monsters attack range +monster_skill_add_range: 0 + +// If a player is attacked, will they have a delay in being able to move? (Note 1) +// (Setting to no will be like always endure) +player_damage_delay: yes + +// Damaged delay rate (Note 2) +player_damage_delay_rate: 100 + +// Is a player's defense NOT dependant on an enemies attack? (Note 1) +defunit_not_enemy: yes + +// Are summoned monsters level greater then your base level? (I think this is for dead branches) (Note 1) +random_monster_checklv: yes + +// The maximum quantity of monsters that can be summoned per GM command (0 denotes an unlimited quantity) +atcommand_spawn_quantity_limit: 100 + +// Does HP recover if hit by an attribute that's same as your own? (Note 1) +attribute_recover: yes + +// If an item is droped, does it go stright into the users inventory? (Note 1) +item_auto_get: no + +// How long does it take for an item to disappear from the floor after it is dropped? (in miliseconds) +flooritem_lifetime: 60000 + +// How long before the first person who did the most damage to a monster can get the item? (in milliseconds) +item_first_get_time: 3000 + +// How long before the second person who did the second most damage to a monster can get the item? (in milliseconds) +// (It Adds Time From The First Persons Time) +// So, It Is Like First Person's Time + Second Person's Time = Time Before Second Person Can Get The Items +item_second_get_time: 1000 + +// How long before the third person who did the third most/least damage to a monster can get the item? (in milliseconds) +// (It Adds Time From The First Persons Time And Second Persons Time) +// So, It Is Like First Person's Time + Second Person's Time + Third Person's Time = Time Before Third Person Can Get The Items +item_third_get_time: 1000 + +// How long before the first person who did the most damage to a MVP can get the item? (in milliseconds) +mvp_item_first_get_time: 10000 + +// How long before the second person who did the second most damage to a MVP can get the item? (in milliseconds) +// (It Adds Time From The First Persons Time) +// So, It Is Like First Person's Time + Second Person's Time = Time Before Second Person Can Get The Items +mvp_item_second_get_time: 10000 + +// How long before the third person who did the third most/least damage to a MVP can get the item +//(Note the Amount is in Milliseconds and It Adds Time From The First Persons Time And Second Persons Time) +//So It Is Like First Person's Time + Second Person's Time + Third Person's Time = Time Before Third Person Can Get The Items +mvp_item_third_get_time: 2000 + +// Item drop rates (Note 2) + +// The rate the common items are droped (Items that are in the ETC tab, besides card) +item_rate_common: 100 +item_drop_common_min: 1 +item_drop_common_max: 10000 + +// The rate healing items are droped (items that restore HP or SP) +item_rate_heal: 100 +item_drop_heal_min: 1 +item_drop_heal_max: 10000 + +// The rate at which usable items (in the item tab) other then healing items are droped. +item_rate_use: 100 +item_drop_use_min: 1 +item_drop_use_max: 10000 + +// The rate at which equipment is droped. +item_rate_equip: 100 +item_drop_equip_min: 1 +item_drop_equip_max: 10000 + +// The rate at which cards are droped +item_rate_card: 100 +item_drop_card_min: 1 +item_drop_card_max: 10000 + +item_drop_mvp_min: 1 +item_drop_mvp_max: 10000 + +// Can the monster's drop rate become 0? (Note 1) +drop_rate0item: no + +// Rate at which exp. is given. (Note 2) +base_exp_rate: 100 + +// Rate at which job exp. is given. (Note 2) +job_exp_rate: 100 + +// PVP exp. Do players get exp during pvp +pvp_exp: yes + +// When a player dies, how should we penalize them? +// 0 = No penalty. +// 1 = Lose % of current level when killed. +// 2 = Lose % of total experience when killed. +death_penalty_type: 1 + +// Base exp. penalty rate (Each 100 is 1% of their exp) +death_penalty_base: 100 + +// Job exp. penalty rate (Each 100 is 1% of their exp) +death_penalty_job: 100 + +// When a player dies, how much zeny should we penalize them with? +zeny_penalty: 0 + +// The amount of HP a player will respawn with, 0 is default. +// (Unit is in percentage of total HP, 100 is full heal of HP, 0 is respawn with 1HP total.) +restart_hp_rate: 0 + +// The amount of SP a player will respawn with, 0 is default. +// (Unit is in percentage of total SP, 100 is full heal of SP, 0 is respawn with 1SP total.) +restart_sp_rate: 0 + +// [MVP] Summoned monsters HP rate, that is, monsters summoned by an MVP will have this much HP. (Note 2) +mvp_hp_rate: 100 + +// [MVP] Item drop rate, that is, the overall drop rate for items droped by an MVP. (Note 2) +mvp_item_rate: 100 + +// [MVP] Exp. rate. (Note 2) +mvp_exp_rate: 100 + +// The HP rate of normal monsters (that is monsters that are not MVP's) (Note 2) +monster_hp_rate: 100 + +// The maximum attack speed of a monster +monster_max_aspd: 199 + +// (@) GM Commands available only to GM's? (Note 1) +// set to 'No', Normal players (gm level 0) can use GM commands _IF_ you set the command level to 0. +// set to 'Yes', Normal players (gm level 0) can never use a GM command even if you set the command level to 0. +atcommand_gm_only: no + +// [GM] Can use all skills? (No or mimimum GM level) +gm_all_skill: no + +// [GM] Can use all abracadabra skills? (No minimum GM level) +gm_all_skill_add_abra: no + +// [GM] Can equip anything? (No or minimum GM level, can cause client errors.) +gm_all_equipment: no + +// [GM] Raise skills unconditionally, that is, put points in to a skill not in thier jobs skill tree? (no or minimum gm level) +gm_skill_unconditional: no + +// Can a normal player by-pass the skill tree? (Note 1) +player_skillfree: no + +// When doing a skill reset, whether the skill's restriction is to be ignored or not. (Note 1) +player_skillup_limit: yes + +// Forging success rate. (Note 2) +weapon_produce_rate: 100 + +// Prepare Potion succsss rate. (Note 2) +potion_produce_rate: 100 + +// Allow monsters to be aggresive and attack first? (Note 1) +monster_active_enable: yes + +// Monster damage delay rate (Note 1) +monster_damage_delay_rate: 100 + +// Looting monster actions. +// 0 = Monster will consume the item. +// 1 = Monster will not consume the item. +monster_loot_type: 0 + +// Enable monster skills? (Note 1) +mob_skill_use: yes + +// Rate of monsters on a map, 200 would be twice as many as normal. (Note 2) +mob_count_rate: 100 + +// Quest skills can be learned? (Note 1) +// Setting this to yes can open an exploit on your server! +quest_skill_learn: no + +// When skills are reset, quest skills are reset as well? (Note 1) +// Setting this to yes can open an exploit on your server! +quest_skill_reset: no + +// You must have basic skills to be able to sit, trade, form a party or create a chatroom? (Note 1) +basic_skill_check: yes + +// When making a guild, an Emperium is consumed? (Note 1) +guild_emperium_check: yes + +// Maximum tax limit on a guild member. +guild_exp_limit: 50 + +// Maximum castles one guild can own (0 - unlimited) +guild_max_castles: 0 + +// When teleporting, or spawning to a map, how long before a monster sees you if you don't move? (time is in milliseconds) +// That is, when you go to a map and don't move, how long before the monsters will notice you. +// If you attack a monster, it will attack you back regaurdless of this setting. (I think) +player_invincible_time: 5000 + +// [PET] Rate for catching pets (Note 2) +pet_catch_rate: 100 + +// [PET] Can you name a pet more then once? (Note 1) +pet_rename: no + +// [PET] The rate a pet will get friendly by feeding it. (Note 2) +pet_friendly_rate: 100 + +// [PET] The rate at which a pet will become hungry. (Note 2) +pet_hungry_delay_rate: 100 + +// [PET] If your pet is hungry by how much will the friendlyness decrease by. (Default is 5) +// Note: The friendlyness is 0-1000 total, at 0 the pet runs away. +pet_hungry_friendly_decrease: 5 + +// [PET] Does Pet's Attack Damage Based On Str (Note 1) +pet_str: yes + +// [PET] Whether or not the pet's will use skills. (Note 1) +pet_status_support: yes + +// [PET] Does the pet need its equipment before it does its skill? (Note 1) +pet_equip_required: yes + +// [PET] Will all pets attack? (Note 1) +// Do NOT use this with pet skills! +pet_attack_support: no + +// [PET] When the master receives damage from the monster, whether or not the pet attacks back. +pet_damage_support: no + +// [PET] Rate at which a pet will support it's owner in battle. (Note 2) +pet_support_rate: 100 + +// [PET] Does the pets owner receive exp from the pets damage? +pet_attack_exp_to_master: no + +// [PET] The rate exp. is gained from the pet attacking monsters +pet_attack_exp_rate: 100 + +// Will there be a minimum skill dmg even if there is a miss? +skill_min_damage: no + +// Which finger offensive style can be used? +// 0 = Aegis style +// 1 = Athena style +finger_offensive_type: 0 + +// The rate of job exp. from using Heal skill (100 is the same as the heal amount, 200 is double. +// The balance of the exp. rate is best used with 5 to 10) +heal_exp: 0 + +// The rate of exp. that is gained by the process of resurrection, a unit is 0.01%. +// Experience calculations for the experience value * level difference of the person revived / 100 * resurrection_exp/10000 which the revived player has can be got. +resurrection_exp: 0 + +// The rate of job exp. when using discount and overcharge on an NPC (100 is normal, 200 is double.) +// The way it is calculated is (money recieved * skill lv) * shop_exp / 100. +shop_exp: 0 + +// The delay rate of monk's combo (Note 2) +combo_delay_rate: 100 + +// Item check? (Note 1) +// When logged in or moving in map if the item the player is holding isn't correct there will be a check. +item_check: no + +// Will tuxedo and wedding dresses be shown when worn? (Note 1) +wedding_modifydisplay: yes + +// The time interval for HP to restore naturally. (in milliseconds) +natural_healhp_interval: 6000 + +// The time interval for SP to restore naturally. (in milliseconds) +natural_healsp_interval: 8000 + +// Automatic healing skill's time interval. (in milliseconds) +natural_heal_skill_interval: 10000 + +// The maximum weight for a character to carry when the character stops healing naturally. (in %) +natural_heal_weight_rate: 50 + +// Override item names from GRF file? (Note 1) +item_name_override_grffile: yes + +// Are arrows are consumed when used on a bow? (Note 1) +arrow_decrement: yes + +// Maximum atk speed. (Default is 190) +max_aspd: 190 + +// Maximum HP. (Default is 32500) +max_hp: 32500 + +// Maximum SP. (Default is 32500) +max_sp: 32500 + +// Maximum user LV to send to client +// (Default is 99.. Never go above 127) +// +// this is only useful if you have adjusted your client +// to expect levels higher then 99 +max_lv: 99 + +// Max limit of char stats. (agi, str, etc.) +max_parameter: 99 + +// Max weight carts can hold. +max_cart_weight: 8000 + +// Display player skill errors in console? (for debug only) (default: off) (Note 1) +player_skill_log: off + +// Display monster skill errors in console? (for debug only) (default: off) (Note 1) +monster_skill_log: off + +// Display battle log? (for debug only) (default: off) (Note 1) +battle_log: off + +// Display save log? (for debug only) (default: off) (Note 1) +save_log: off + +// Display errors? (for debug only) (default: off) (Note 1) +error_log: off + +// Display other stuff? (for debug only) (default: off) (Note 1) +etc_log: off + +// Save Clothes color. (This will degrade performance [in txt?]) (Note 1) +save_clothcolor: yes + +// Undead type differeniate. +// 0 = element undead +// 1 = race undead +// 2 = both +undead_detect_type: 2 + +// Operational mode of automatic counter. +// 0 = disregard DEF and HIT+20 . CRI*2, 1 = 100% critical +// Players +player_auto_counter_type: 0 +// Monsters +monster_auto_counter_type: 0 + +// Type of penalty that is applied to FLEE when more than agi_penaly_count monsters are targetting player +// 0 = no penalty is applied +// 1 = agi_penaly_num is reduced from FLEE as a % +// 2 = agi_penaly_num is reduced from FLEE as an exact amount +agi_penaly_type: 1 + +// Amount of enemies required to be targetting player before FLEE begins to be penalized +agi_penaly_count: 3 + +// Amount of FLEE penalized per each attacking monster more than agi_penaly_count +agi_penaly_num: 10 + +// Type of penalty that is applied to VIT defense when more than vit_penaly_count monsters are targetting player +// 0 = no penalty is applied +// 1 = vit_penaly_num is reduced from FLEE as a % +// 2 = vit_penaly_num is reduced from FLEE as an exact amount +vit_penaly_type: 1 + +// Amount of enemies required to be targetting player before VIT defense begins to be penalized +vit_penaly_count: 3 + +// Amount of VIT defense penalized per each attacking monster more than vit_penaly_count +vit_penaly_num: 5 + +// When the player attacks an object, the calculation method of DEF. +// With 0 this will be ignored specification, at 1 or more def = subtraction of (DEF* value). +player_defense_type: 0 + +// When the monster attacks an object, the calculation method of DEF. +// With 0 this will be ignored, at 1 or more def = subtraction of (DEF* value). +monster_defense_type: 0 + +// When the pet attacks an object, the calculation method of DEF. +// With 0 this will be ignored specification, at 1 or more def = subtraction of (DEF* value). +pet_defense_type: 0 + +//MDEFTame as above....(MDEF*value) +magic_defense_type: 0 + +// Whether or not, ground skills of the players' will stack. (Note 1) +player_skill_reiteration: no + +//Whether or not, ground skills of the monsters' will pile up. (Note 1) +monster_skill_reiteration: no + +//Whether or not ground based skills of a certain type such as traps can be cast straight onto other players. (Note 1) +player_skill_nofootset: yes + +//Whether or not ground based skills of a certain type such as traps can be cast straight onto monsters. (Note 1) +monster_skill_nofootset: yes + +// When a player is cloaking, Whether the wall is checked or not. (Note 1) +// Note: Gravity announced that they were changing cloaking so it would +// not need a wall, but this was never implemented. I set to no, for fun. +player_cloak_check_type: no + +// When a monster is cloaking, Whether the wall is checked or not. (Note 1) +monster_cloak_check_type: no + +// Melee damage adjustments for WoE battles (Guild Vs Guild) (Note 2) +gvg_short_attack_damage_rate: 100 + +// Ranged damage adjustments for WoE battles (Guild Vs Guild) (Note 2) +gvg_long_attack_damage_rate: 100 + +// Magic damage adjustments for WoE battles (Guild Vs Guild) (Note 2) +gvg_magic_attack_damage_rate: 100 + +// Misc damage adjustments for WoE battles (Guild Vs Guild) (Note 2) +gvg_misc_attack_damage_rate: 100 + +// When the empelium is broken with WoE mode on, How Long Before The Declaration Of Castle Owner +// and Removal of Monsters/Players from Castle. (in milliseconds) +gvg_eliminate_time: 7000 + +// Whether or not skill is used vis-a-vis the user at the time of MOB skill motion of condition skillused. (Note 1) +// Not sure what this means, something about monsters changing target? +mob_changetarget_byskill: no + +// Player's Direction Changed When Attacking? (Note 1) +player_attack_direction_change: yes + +// Monsters's Direction Changed When Attacking? (Note 1) +monster_attack_direction_change: yes + +// If the player has Undead Elemental Equipment, should they be frozen or not. (Note 1) +player_undead_nofreeze: no + +// Will Player Skills Stay Within Land Limit or not? (Note 1) +player_land_skill_limit: yes + +// Will Monster Skills Stay Within Land Limit or not? (Note 1) +monster_land_skill_limit: yes + +// If a party uses a skill with penalties do they apply? (Note 1) +party_skill_penaly: yes + +// If monster's class is changed will it fully recover HP and SP and Ailments? (Note 1) +monster_class_change_full_recover: no + +// Do produced items have the maker's name on them? (Note 1) +produce_item_name_input: yes + +// Do produced potions have the maker's name on them? (Note 1) +produce_potion_name_input: yes + +// Do crafted arrows have the maker's name on them? (Note 1) +making_arrow_name_input: yes + +// Does created holy water have the maker's name on it? (Note 1) +holywater_name_input: yes + +// Stop logout for 10 seconds after a hit? (Note 1) +prevent_logout: yes + +// If skill fails by delay, should it display or not. (Note 1) +display_delay_skill_fail: yes + +// Can a player in chat room (in-game), be warped by a warp portal? (Note 1) +chat_warpportal: no + +// Can a monster be warped by a warp portal? (Note 1) +mob_warpportal: no + +// Is a monster summoned via dead branch aggresive? (Note 1) +dead_branch_active: yes + +// The highest value at which an item can be sold via the merchant vend skill. (in zeny) +vending_max_value: 10000000 + +// If someone loots, show name in party? (Note 1) +show_steal_in_same_party: no + +// Allow upper class (Advanced 2nd Class)? (Note 1) +// Just leave this at yes +enable_upper_class: yes + +// Is a usual attack of a pet delivered withOUT an attribute? (Note 1) +pet_attack_attr_none: no + +// Is a usual attack of a player delivered withOUT an attribute? (Note 1) +pc_attack_attr_none: no + +// Is a usual attack of a monster delivered withOUT an attribute? (Note 1) +mob_attack_attr_none: no + +// mob attacks againsts players wearing ghostring armor do full damage +mob_ghostring_fix: no + +// Does the Golden Thief Bug card only work during pvp? +// no or 0 - gtb works all the time +// 1 - 100 - percentage of magic damage reduced only during pvp (or gvg) +gtb_pvp_only: no + +// How to count the number of the enemies who do an agi penalty... +// 1 or less: It is a count altogether. +// 2: Full evasion exclusion +// 3: Full evasion and evasion exclusion +// 4 or more: Except all. +agi_penaly_count_lv: 2 + +// How to count the number of the enemies who do a vit penalty +// 1 or less: It is a count altogether. +// 2: Full evasion exclusion +// 3: Full evasion and evasion exclusion +// Four or more: Except all. +vit_penaly_count_lv: 3 + +// Grandcross Settings (Dont mess with these) +// Even if MOB (PC) has overlapped, it HIT(s) compulsion 3. (Default no) +gx_allhit: no +// The effect of the arms card of a damage %UP system is set also to GX at -L effect. (default no) +gx_cardfix: no +// The attribute affinity of GX is calculated doubly. (Default yes) +gx_dupele: yes +// Grandcross display type (Default 1) +// 0: Yellow character +// 1: White character +gx_disptype: 1 + +// If no than you can use the ensemble skills alone. (Note 1) +player_skill_partner_check: yes + +// Is the character of a GM account set as the object of a display by @ command etc. or not? +hide_GM_session: no + +// ユニット移動処-摯-@。0で-{鯖仕-l(回線負荷→重、鯖処-掾ィ軽)、1でAthena仕-l(回線負荷→軽、鯖処-掾ィ重) +// translation (babelfish): +// Unit portable place - ? @. +// With 0 - {mackerel SI -l (circuit load -> heavily, the mackerel place - the ? ? lightly), +// With 1 - Athena SI -l (circuit load -> lightly, the mackerel place - the ? ? it is heavy) +unit_movement_type: 0 + +// Are other requests accepted during [various things[party,guild]] a request or not? +// It does not accept by no accepted by yes. +invite_request_check: yes + +// リムーブトラップの仕-l 0:-{鯖仕-l、罠1個 1:Athena仕-l、使ったアイテムを使った個数 +// translation (babelfish): +// SI of ???????? -l +// 0: - {Mackerel SI -l, trap 1 +// 1:Athena SI -l, the quantity which used the item which was used +skill_removetrap_type: 0 + +// Will display experience gained from killing a monster. (Note 1) +disp_experience: no + +// Whether or not Marine Spheres and Floras summoned by Alchemist will drop items and give experience? (Note 1) +alchemist_summon_reward: no + +// Maximum level (default 255). Requires that you have an experience table that supports more than 99 levels to go +// any higher. It is left at 255 for default as to not cause problems for people who already have players at higher levels. +// @lvup command will not go higher than this value, and therefor will not loop back around 0. +maximum_level: 255 + +// Leave at 0 to use normal drop system. Anything higher than 0 will allow luk to affect drop rates, based on a percentage. +// Example 1: Setting of 10 with 50 luk would add 5 to the drop rate. So say a card has a drop rate of 2, it would become 7. +// Example 2 : Setting 100 with 99 luk would add 99 to the drop rate. +drops_by_luk: 0 + +// Do all monsters ignore GMs unless attacked? (Note 1) +monsters_ignore_gm: no + +// Turn equipment breaking on. (Note 1) +// Turning this one will allow equipment to break in battles, +// as well as some skills that have chance to break equipmen. +equipment_breaking: no + +// Overall rate of which equipment can break. (Note 2) [100 = .01% chance to break equipment before penalties.] +// Critical attacks will double chance to break equipment, and other skills (such as Power Thrust) will increase weapon breaking chance as well. +// This does not effect Sage weapon enchantment failure chance. +equipment_break_rate: 100 + +// PK Server Mode. Turns entire server pvp(excluding towns). Experience loss is doubled if killed by another player. +// When players hunt monsters over 20 levels higher, they will receive 15% additional exp., and 25% chance of receiving more items. +// There is a nopvp.txt for setting up maps not to have pk on in this mode. Novices cannot be attacked and cannot attack. +// Normal pvp counter and rank display are disabled as well. +pk_mode: no + +// Turn this on to allow a player to level up more than once from a kill. (Note 1) +multi_level_up: no + +// Does using bow to do a backstab give a 50% damage penalty? (Note 1) +backstab_bow_penalty: yes + +// Choose if server begin with night (yes) or day (no) +night_at_start: no + +// Define duration in msec of the day (default: 7,200,000 = 2 hours) +// Set to 0 to disable day cycle (but not @day GM command). +// Except 0, minimum is 60000 (1 minute). +day_duration: 7200000 + +// Define duration in msec of the night (default: 1,800,000 = 30 min) +// Set to 0 to disable night cycle (but not @night GM command). +// Except 0, minimum is 60000 (1 minute). +night_duration: 1800000 + +// Will display a mob's hp/maxhp when the mouse cursor is over them. (Note 1) +// Will not display guardian or emperium hp. +// +// Still under testing (works but doesn't update) +show_mob_hp: no + +// Ban people that try to use an other name of its name (spoof name). +// Duration of the ban, in minutes (default: 5). Value from 0 to 32767 +// to disable the ban, set 0 +ban_spoof_namer: 5 + +// Set here minimum level of a (online) GM that can receive all informations about any player that try to hack, spoof a name, etc. +// Values are from 0 to 100. +// 100: disable information +// 0: send to any people, including normal players +// default: 60, according to GM definition in atcommand_athena.conf +hack_info_GM_level: 60 + +// Set here the minimum GM level to disable the nowarp (from) and nowarpto (to) flags. +// This option is mainly used in AT_commands (@memo, @warp, @charwarp, @go, etc...). All GM commands used to move or set a new map check nowarp and nowarpto flags. +// default: 20 (first level after normal player or super'normal' player) +any_warp_GM_min_level: 20 + +// Set here which client version do you accept. Add all values of clients: +// 1: Clients before 2004-07-06 (old clients) +// 2: 2004-07-06 kRO client +// 4: 2004-07-13 kRO client +// 8: 2004-07-26 kRO client +// 16: 2004-08-09 kRO / 2004-08-16aSakray / 2004-08-17aSakray client +// 32: 2004-09-06aSakray client +// 64: 2004-09-21aSakray Client +// 128: 2004-10-18bSakexe Client +// 256: 2004-10-25aSakexe Client +// default value: 511 (all clients) +packet_ver_flag: 511 + +// Allow GMs to mute players or not? +muting_players: no + +// Mail system - Only function in sql version +mail_system: no + +// valid range of dye's and styles on the client +min_hair_style: 0 +max_hair_style: 20 +min_hair_color: 0 +max_hair_color: 9 +min_cloth_color: 0 +max_cloth_color: 4 + +// Visible area size (how many squares away from a player can they see) +area_size: 14 + +import: conf/import/battle_conf.txt + diff --git a/conf-tmpl/char_athena.conf b/conf-tmpl/char_athena.conf index 7edaa69e3..4783f0446 100644 --- a/conf-tmpl/char_athena.conf +++ b/conf-tmpl/char_athena.conf @@ -1,171 +1,171 @@ -// Athena Character configuration file. - -// Server Communication username and password. -userid: s1 -passwd: p1 - -// Server name, use alternative character such as ASCII 160 for spaces. -server_name: eAthena - -// Wisp name for server: used to send wisp from server to players (between 4 to 23 characters) -wisp_server_name: Server - -// Login Server IP -// -// You should only need to set this if you are running behind a -// firewall or on a machine with multiple interfaces. In that case, -// you need to specify the IP address you wish to export to the entire world. -// -// login_ip:127.0.0.1 - -// Login Server Port -login_port: 6900 - -// Character Server IP -// -// You should only need to set this if you are running behind a -// firewall or on a machine with multiple interfaces. In that case, -// you need to specify the IP address you wish to export to the entire world. -// -// char_ip:127.0.0.1 - -// Character Server Port -char_port: 6121 - -// Console Commands -// Allow for console commands to be used on/off -// This prevents usage of >& log.file -console: off - -// Option to force a player to create an e-mail. -// If a player have default e-mail, and if you activate this option, the player can only connect in the game (to arrive on a map) like follow: -// - Create at least 1 character -// - Select 1 character -// - Select DEL to enter his/her e-mail. (if OK is choosen, client says to the player: 'invalid e-mail') -// - If his/her e-mail is correct, the player enter in the game (an e-mail is saved definitively). -// - If his/her e-mail is incorrect, he/she have 'incorrect e-mail' and must select again DEL. -// - After entering in the game (when the player arrives on a map), DEL and SEL/OK button work normaly for all next connections. -// Resume: If a player have "incorrect/invalid e-mail" when he/she click on 'OK' button, -// the player must click 'DEL' button and register his/her NEW e-mail to enter in the game -// So, default is 0, because administrator must explain to their players before to activate this option. -email_creation: 0 - -// Is Character server in maintainence mode? -char_maintenance: 0 - -// Enable or disable creation of new characters. -char_new: 0 - -// Maximum users able to connect to the server. Set to 0 for unlimited. -max_connect_user: 0 - -// It's to check IP of a player between char-server and other servers (part of anti-hacking system) -// If player doesn't have same IP, connection is refused. -// Set to 0/off/no to not check IP of player. -// Set to 1/on/yes if you want to check (default) -// Note: if you enable this option, be sure that your (local/lan/wan) players use correct ip (in xml file) to contact servers, -// and that your LAN is correctly configured (!), and that LAN configuration of eathena is right. -check_ip_flag: yes - -// How often should the server save all files? (In seconds) -autosave_time: 15 - -// Character server flatfile database -char_txt: save/athena.txt - -// Choose to create or not backup file (yes/no, 0/1, etc...) -// default is 'no', because backup file take time for nothing. Actually, there is no problem on characters file creation and save. -backup_txt_flag: no - -// Character server flatfile database (backup) -backup_txt: save/athena_backup.txt - -// Friends list flatfile database -friends_txt: save/friends.txt - -// Start point, Map name followed by coordinates (x,y) -start_point: new_1-1.gat,53,111 - -// Starting weapon for new characters -start_weapon: 1201 - -// Starting armor for new characters -start_armor: 2301 - -// Starting zeny for new characters -start_zeny: 500 - -// Name used for unknown characters -unknown_char_name: Unknown - -// Log Filename -char_log_filename: log/char.log - -// Allow or not identical name for characters but with a different case (upper/lower): -// example: Test-test-TEST-TesT; Value: 0 not allowed (default), 1 allowed -name_ignoring_case: 0 - -// Manage possible letters/symbol in the name of charater. Control character (0x00-0x1f) are never accepted. Possible values are: -// 0: no restriction (default) -// 1: only letters/symbols in 'char_name_letters' option. -// 2: Letters/symbols in 'char_name_letters' option are forbidden. All others are possibles. -char_name_option: 0 - -// Set the letters/symbols that you want use with the 'char_name_option' option. -// Note: add 'space' between 2 others letters/symbols. -// default: void. -//char_name_letters: - -// Filename of the file which receives the online players list in text -online_txt_filename: online.txt - -// Filename of the file which receives the online players list, but in html version -online_html_filename: online.html - -// Choose how to display online players. -// (sorting operation with a lot of online players can take time on a slow computer) -// 0: no sorting (default) -// 1: by alphabetical order of their name -// 2: by number of their zenys -// 3: by their base level -// 4: by their job (and job level inside the same job) -// 5: by alphabetical order of their actual map location -online_sorting_option: 0 - -// Choose which columns that you want display in the online files. Do the addition of these values: -// (if value is 0, no file is done) -// 1: name (just the name, no function like 'GM') -// 2: job -// 4: levels -// 8: map name -// 16: mapname and coordonates -// 32: zenys -// 64: name (with 'GM' if the player is a GM) -// default value: 1 (only name) -online_display_option: 1 - -// minimum GM level to display 'GM' when we want to display it (default: 1) -online_gm_display_min_level: 20 - -// refresh time (in sec) of the html file in the explorer (default 20) -online_refresh_html: 20 - -// To log the character server? -log_char: 1 - -// What folder the DB files are in (item_db.txt, etc.) -db_path: db - -// Anti-freeze system enable -anti_freeze_enable: 0 -// Anti-freeze system interval (in seconds) -anti_freeze_interval: 6 - -// If you want use an additional configuration file, uncomment and use this parameter -//import: path/additional_configuration_file - -// Mugendai's GUI Support -imalive_on: 0 -imalive_time: 30 -flush_on: 0 +// Athena Character configuration file. + +// Server Communication username and password. +userid: s1 +passwd: p1 + +// Server name, use alternative character such as ASCII 160 for spaces. +server_name: eAthena + +// Wisp name for server: used to send wisp from server to players (between 4 to 23 characters) +wisp_server_name: Server + +// Login Server IP +// +// You should only need to set this if you are running behind a +// firewall or on a machine with multiple interfaces. In that case, +// you need to specify the IP address you wish to export to the entire world. +// +// login_ip:127.0.0.1 + +// Login Server Port +login_port: 6900 + +// Character Server IP +// +// You should only need to set this if you are running behind a +// firewall or on a machine with multiple interfaces. In that case, +// you need to specify the IP address you wish to export to the entire world. +// +// char_ip:127.0.0.1 + +// Character Server Port +char_port: 6121 + +// Console Commands +// Allow for console commands to be used on/off +// This prevents usage of >& log.file +console: off + +// Option to force a player to create an e-mail. +// If a player have default e-mail, and if you activate this option, the player can only connect in the game (to arrive on a map) like follow: +// - Create at least 1 character +// - Select 1 character +// - Select DEL to enter his/her e-mail. (if OK is choosen, client says to the player: 'invalid e-mail') +// - If his/her e-mail is correct, the player enter in the game (an e-mail is saved definitively). +// - If his/her e-mail is incorrect, he/she have 'incorrect e-mail' and must select again DEL. +// - After entering in the game (when the player arrives on a map), DEL and SEL/OK button work normaly for all next connections. +// Resume: If a player have "incorrect/invalid e-mail" when he/she click on 'OK' button, +// the player must click 'DEL' button and register his/her NEW e-mail to enter in the game +// So, default is 0, because administrator must explain to their players before to activate this option. +email_creation: 0 + +// Is Character server in maintainence mode? +char_maintenance: 0 + +// Enable or disable creation of new characters. +char_new: 0 + +// Maximum users able to connect to the server. Set to 0 for unlimited. +max_connect_user: 0 + +// It's to check IP of a player between char-server and other servers (part of anti-hacking system) +// If player doesn't have same IP, connection is refused. +// Set to 0/off/no to not check IP of player. +// Set to 1/on/yes if you want to check (default) +// Note: if you enable this option, be sure that your (local/lan/wan) players use correct ip (in xml file) to contact servers, +// and that your LAN is correctly configured (!), and that LAN configuration of eathena is right. +check_ip_flag: yes + +// How often should the server save all files? (In seconds) +autosave_time: 15 + +// Character server flatfile database +char_txt: save/athena.txt + +// Choose to create or not backup file (yes/no, 0/1, etc...) +// default is 'no', because backup file take time for nothing. Actually, there is no problem on characters file creation and save. +backup_txt_flag: no + +// Character server flatfile database (backup) +backup_txt: save/athena_backup.txt + +// Friends list flatfile database +friends_txt: save/friends.txt + +// Start point, Map name followed by coordinates (x,y) +start_point: new_1-1.gat,53,111 + +// Starting weapon for new characters +start_weapon: 1201 + +// Starting armor for new characters +start_armor: 2301 + +// Starting zeny for new characters +start_zeny: 500 + +// Name used for unknown characters +unknown_char_name: Unknown + +// Log Filename +char_log_filename: log/char.log + +// Allow or not identical name for characters but with a different case (upper/lower): +// example: Test-test-TEST-TesT; Value: 0 not allowed (default), 1 allowed +name_ignoring_case: 0 + +// Manage possible letters/symbol in the name of charater. Control character (0x00-0x1f) are never accepted. Possible values are: +// 0: no restriction (default) +// 1: only letters/symbols in 'char_name_letters' option. +// 2: Letters/symbols in 'char_name_letters' option are forbidden. All others are possibles. +char_name_option: 0 + +// Set the letters/symbols that you want use with the 'char_name_option' option. +// Note: add 'space' between 2 others letters/symbols. +// default: void. +//char_name_letters: + +// Filename of the file which receives the online players list in text +online_txt_filename: online.txt + +// Filename of the file which receives the online players list, but in html version +online_html_filename: online.html + +// Choose how to display online players. +// (sorting operation with a lot of online players can take time on a slow computer) +// 0: no sorting (default) +// 1: by alphabetical order of their name +// 2: by number of their zenys +// 3: by their base level +// 4: by their job (and job level inside the same job) +// 5: by alphabetical order of their actual map location +online_sorting_option: 0 + +// Choose which columns that you want display in the online files. Do the addition of these values: +// (if value is 0, no file is done) +// 1: name (just the name, no function like 'GM') +// 2: job +// 4: levels +// 8: map name +// 16: mapname and coordonates +// 32: zenys +// 64: name (with 'GM' if the player is a GM) +// default value: 1 (only name) +online_display_option: 1 + +// minimum GM level to display 'GM' when we want to display it (default: 1) +online_gm_display_min_level: 20 + +// refresh time (in sec) of the html file in the explorer (default 20) +online_refresh_html: 20 + +// To log the character server? +log_char: 1 + +// What folder the DB files are in (item_db.txt, etc.) +db_path: db + +// Anti-freeze system enable +anti_freeze_enable: 0 +// Anti-freeze system interval (in seconds) +anti_freeze_interval: 6 + +// If you want use an additional configuration file, uncomment and use this parameter +//import: path/additional_configuration_file + +// Mugendai's GUI Support +imalive_on: 0 +imalive_time: 30 +flush_on: 0 flush_time: 30 \ No newline at end of file diff --git a/conf-tmpl/grf-files.txt b/conf-tmpl/grf-files.txt index 186e690cb..3926a63b4 100644 --- a/conf-tmpl/grf-files.txt +++ b/conf-tmpl/grf-files.txt @@ -1,4 +1,4 @@ -data: C:\Program Files\Gravity\RO\data.grf -sdata: C:\Program Files\Gravity\RO\sdata.grf -//adata: C:\Program Files\Gravity\RO\adata.grf +data: C:\Program Files\Gravity\RO\data.grf +sdata: C:\Program Files\Gravity\RO\sdata.grf +//adata: C:\Program Files\Gravity\RO\adata.grf //data_dir: C:\Program Files\Gravity\RO\ \ No newline at end of file diff --git a/conf-tmpl/help.txt b/conf-tmpl/help.txt index 76cc3a922..fa8de1f69 100644 --- a/conf-tmpl/help.txt +++ b/conf-tmpl/help.txt @@ -1,225 +1,225 @@ -// put at first, the minimum level to display the line - 0:To use one command, type it inside the message window where you usually type to chat. - 20:@h/@help - display this help. - 40: - 40:--- MESSAGE CMD --- - 40:/b/@broadcast - Broadcasts a GM message with name of the GM (in yellow) - 40:/nb /@kami - Broadcasts a GM message without name of the GM (in yellow) - 40:@kamib - Broadcasts a GM message without name of the GM (in blue) - 40:/lb/@localbroadcast - Broadcasts a GM message with name of the GM (in yellow) ONLY on your map - 40:/nlb - Broadcasts a GM message without name of the GM (in yellow) ONLY on your map - 0: - 0:--- INFORMATION CMD --- - 20:@who/@whois [match_text] - Display a listing of who is online and where - 20:@who2 [match_text] - Display a listing of who is online and their job - 20:@who3 [match_text] - Display a listing of who is online and their party/guild - 20:@whomap/@whomap2/@whomap3 [map] - like @who/@who2/@who3 but only for specifical map - 20:@whogm [match_text] - Like @who+@who2+who3, but only for GM. - 1:@where [char name] - Tells you the location of a character - 40:@charstatsall - Displays stats of all characters. - 40:@charitemlist - Displays all items of a player. - 40:@charstoragelist - Displays all items of a player's storage. - 40:@charcartlist - Displays all items of a player's cart. - 0:@ignorelist - Displays your ignore list - 99:@mapinfo [<0-3> [map]] - Give information about a map (general info +: 0: no more, 1: players, 2: NPC, 3: shops/chat). - 0:@time/@date/@server_date/@serverdate/@server_time/@servertime - Display the date/time of the server - 60: - 60:@guildspy - You will receive all messages of the guild channel - 60:@partyspy - You will receive all messages of the party channel - 1: - 1:--- CHANGE GM STATE CMD --- - 40:/hide/@hide - Makes you character invisible (GM invisibility). Type @hide again become visible. - 40:@save - Sets respawn point to current spot - 40:@load/@return - Warps you to your save point - 40:/mm//mapmove/@warp/@rura/@mapmove - Warps you to the selected position - 40:@jump [x [y]]- Randomly warps you like a flywing. - 20:/shift/@jumpto/@warpto/@goto - Warps you to selected character - 20:@follow - follow a player - 10:@go - Warps you to a city. - 10: -3: (Memo point 2) 1: morocc 5: izlude 9: yuno 13: niflheim - 10: -2: (Memo point 1) 2: geffen 6: aldebaran 10: amatsu 14: louyang - 10: -1: (Memo point 0) 3: payon 7: xmas (lutie) 11: gonryun 15: start point - 10: 0: prontera 4: alberta 8: comodo 12: umbala 16: prison/jail - 10: - 1:@die ---- suicide - 60:@alive - Revives yourself from death - 40:@heal [ ] - Heals the desired amount of HP and SP. No value specified will do a full heal. - 20: - 40:@job/@jobchange - Changes your job - 40: 0 Novice 7 Knight 14 Crusader 22 Formal - 40: 1 Swordman 8 Priest 15 Monk 23 Super Novice - 40: 2 Mage 9 Wizard 16 Sage - 40: 3 Archer 10 Blacksmith 17 Rogue - 40: 4 Acolyte 11 Hunter 18 Alchem - 40: 5 Merchant 12 Assassin 19 Bard - 40: 6 Thief 13 Peco-Knight 20 Dancer 21 Peco-Crusader - 40: 24 Novice High 31 Lord Knight 38 Paladin - 40: 25 Swordman High 32 High Priest 39 Monk - 40: 26 Mage High 33 High Wizard 40 Professor - 40: 27 Archer High 34 Whitesmith 41 Stalker - 40: 28 Acolyte High 35 Sniper 42 Creator - 40: 29 Merchant High 36 Assassin Cross 43 Clown - 40: 30 Thief High 37 Peco Knight 44 Gypsy 45 Peco-Paladin - 60:@lvup/@blevel/@baselvlup - Raises your base level the desired number of levels. The max is 255 (User Defined). - 60:@joblvup/@jlevel/@joblvlup -Raises your job level the desired number of levels. The max is 50 For Basic Classes. For Super Novice and Advanced Classes it is 70. - 60:@allskill/@allskills/@skillall/@skillsall - Give you all skills. - 40:@option - Adds different visual effects on or around your character - 40: (stackable) - 40: 1 Petrified (stackable) 01 Sight 32 Peco Peco riding 2048 Orc Head - 40: 2 Frozen 01 Poison 02 Hide 64 GM Perfect Hide 4096 Wedding Sprites - 40: 3 Stunned 02 Cursed 04 Cloak 128 Level 2 Cart 8192 Ruwach - 40: 4 Sleeping 04 Silenced 08 Level 1 Cart 256 Level 3 Cart - 40: 6 darkness 08 ??? 16 Falcon 512 Level 4 Cart - 40: 16 darkness 1024 Level 5 Cart - 20:@mountpeco - Give/remove you a peco (Class is required, but not skill) - 20:@disguise - Change your appearence to other players to a mob. - 20:@undisguise - Restore your normal appearance. - 20:@model - Changes your characters appearence. - 40:@dye/@ccolor - Changes your characters appearence (only clothes color). - 40:@hairstyle/@hstyle - Changes your characters appearence (only hair style). - 40:@haircolor/@hcolor - Changes your characters appearence (only hair color). - 40:@speed <1-1000> - Changes you walking speed. 1 being the fastest and 1000 the slowest. Default 150. - 40:@effect [flag] - Give an efect to your character. - 40:@dropall - throws all your possession on the ground - 40:@storeall - puts all your possessions in storage - 40:@killable - make your character killable - 60:@stpoint - Gives you the desired number of stat points. - 60:@skpoint - Gives you the desired number of skill points. - 60:@zeny - Gives you desired amount of Zeny. - 60:@str,@agi,@vit,@int,@dex,@luk - Adds desired amount to any stat. For example "@str 10" raises your str by 10 - 60:@statall/@statsall/@allstats/@allstat [value] - Adds value in all stats (maximum if no value). - 40:@memo [memo_position] - set/change a memo location (no position: display memo points). - 40:@spiritball - Gives you "spirit spheres" like from the skill "Call Spirits" - 40: (If the number you use is > 1000, your server may become instable or crash) - 40:@questskill <#> - Gives you the specified quest skill - 40:@lostskill <#> - Takes away the specified quest skill from you - 40:@skillid - look up a skill by name - 40:@useskill - use a skill on target - 40: Novice Swordsman Thief Merchant - 40: 142 = Emergency Care 144 = Moving HP Recovery 149 = Throw Sand 153 = Cart Revolution - 40: 143 = Act dead 145 = Attack Weak Point 150 = Back Sliding 154 = Change Cart - 40: Archer 146 = Auto Berserk 151 = Take Stone 155 = Crazy Uproar/Loud Voice - 40: 147 = Arrow Creation Acolyte 152 = Stone Throw Magician - 40: 148 = Charge Arrows 156 = Holy Light 157 = Energy Coat - 60: @addwarp - 40: - 40:--- MONSTERS CMD --- - 50:/monster - Spawns 1 of the desired monster. - 50:@spawn/@monster/@summon [ [ [ []]]] - 50:@monster2 [ [ []]] - 50:@spawn/@monster/@summon/@monster2 "desired monster name" [ [ []]] - 50:@spawn/@monster/@summon/@monster2 "desired monster name" [ [ []]] - 50: Spawns the desired monster with any desired name. - 60:@killmonster [map] - kill all monsters of the map (they drop) - 40:@killmonster2 - kill all monsters of your map (without drops) - 1: - 1:--- ITEMS CMD --- - 1:@storage - Opens storage - 50:@gstorage - Opens guild storage - 60:/item - Gives you 1 of the desired item. - 60:@item - Gives you the desired item. - 60:@item2 = Gives you the desired item. - 40:@itemreset - Remove all your items. - 60:@itemcheck - Check your items with authorised items. - 60:@idsearch - Search all items that name have part_of_item_name - 60:@refine <+/- amount> - 60:@produce <# of very's> - 60: Element: 0=None 1=Ice 2=Earth 3=Fire 4=Wind - 60: It has separately with fragment 3 of the attribute + stars, you can apply. - 60:@repairall - Repair all items of your inventory - 40: - 40:--- PVP CMD --- - 40:@pvpon - Turns pvp on on the current map - 40:@pvpoff - Turns pvp off on the current map - 40:@gvgon/@gpvpon - Turns gvg on on the current map - 40:@gvgoff/@gpvpoff - Turns gvg off on the current map - 60:@agitstart - Starts War of Emperium - 60:@agitend - End War of Emperium - 1: - 1:--- GROUPS CMD --- - 1:@party - Create a party. - 50:@guild - Create a guild. - 60:@guildlvup/@guildlvlup <# of levels> - Raise Guild by desired number of levels - 60:@guildrecall - Warps all online characters of a guild to you. - 60:@partyrecall - Warps all online characters of a party to you. - 1: - 1:--- PETS CMD --- - 60:@hatch - Create a pet from your inventory eggs list. - 60:@makeegg - Gives pet egg for monster number in pet DB - 40:@petfriendly <#> - Set pet friendly amount (0-1000) 1000 = Max - 40:@pethungry <#> - Set pet hungry amount (0-100) 100 = Max - 1:@petrename - Re-enable pet rename - 20: - 20:--- REMOTE CHAR CMD --- - 60:@kill - Kills specified character. - 40:@charkillable - make another character killable - 60:@nuke - Kills specified character (nuclear effect). - 60:@chardropall - throws all a chars possession on the ground - 60:@charstoreall - puts all of anothers charactes possessions in storage - 60:/recall/@recall - Warps target character to you. - 80:@recallall - Warps every character online to you. - 60:@charwarp/@rura+ - Warps character to location of choice - 60:@revive - Revives target character. - 40:@charstats - Displays a characters stats. - 20:@charignorelist - Displays ignore list of the player - 20:@inall - Allows all wispers for the player - 20:@exall - Blocks all wispers for the player - 60:@charoption - Like @option command but only to target character. - 50:@charmountpeco - Give/remove to a player a peco (Class is required, but not skill). - 50:@charpetrename - Re-enable pet rename to a player. - 60:@charsave - Changes the target players respawn point. - 60:@charbaselvl <#> - Change a characters base level. - 60:@charjlvl <#> - Change a characters job level. - 60:@charjob/@charjobchange - Changes target characters job. - 60:@charzeny - Give/take a players Zeny - 60:@charstpoint - Give/take a players stat points - 60:@charskpoint - give/take a players skill points - 60:@charskreset - Reset skills of a character. - 60:@charstreset - Reset stats of a character. - 60:@charreset - Reset stats AND skills of a character. - 60:@charquestskill <#> - Gives to a player the specified quest skill. - 60:@charlostskill <#> - Takes away the specified quest skill from the player. - 60:@chardelitem - Remove items from a character - 50:@charmodel - Changes a player's model - 60:@chardisguise - Changes disguise of a player - 60:@charundisguise - Cancels disguise of a player - 60:@charchangesex - Changes sex of a player (all characters of the account) - 60:@charblock/@block - Blocks definitively a account - 60:@charunblock/@unblock - Unblocks a account - 60:@charban/@ban/@banish/@charbanish