-Follow up r17244 r17229 typo on blewcount handler

-Follow up r17242 upd Cmakefile for cmake build
-Apply Baalberith fix for chan system leaks, thx =) 

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17245 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
glighta 2013-04-10 08:58:33 +00:00
parent 0ccd53156b
commit 53d1292de4
4 changed files with 37 additions and 36 deletions

View File

@ -1699,32 +1699,7 @@ int map_quit(struct map_session_data *sd) {
elemental_clean_effect(sd->ed);
unit_remove_map(&sd->ed->bl,CLR_TELEPORT);
}
if( raChSys.ally && sd->status.guild_id ) {
struct guild *g = sd->guild, *sg;
if( g ) {
if( idb_exists(((struct raChSysCh *)g->channel)->users, sd->status.char_id) )
clif_chsys_left((struct raChSysCh *)g->channel,sd);
for (i = 0; i < MAX_GUILDALLIANCE; i++) {
if( g->alliance[i].guild_id && (sg = guild_search(g->alliance[i].guild_id) ) ) {
if( idb_exists(((struct raChSysCh *)sg->channel)->users, sd->status.char_id) )
clif_chsys_left((struct raChSysCh *)sg->channel,sd);
break;
}
}
}
}
if( sd->channel_count ) {
uint8 ch_count = sd->channel_count;
for( i = 0; i < ch_count; i++ ) {
if( sd->channels[i] != NULL )
clif_chsys_left(sd->channels[i],sd);
}
if( raChSys.closing )
aFree(sd->channels);
}
unit_remove_map_pc(sd,CLR_TELEPORT);
if( map[sd->bl.m].instance_id ) { // Avoid map conflicts and warnings on next login
@ -3593,8 +3568,11 @@ void do_final(void)
// remove all objects on maps
for (i = 0; i < map_num; i++) {
ShowStatus("Cleaning up maps [%d/%d]: %s..."CL_CLL"\r", i+1, map_num, map[i].name);
if (map[i].m >= 0)
if (map[i].m >= 0) {
map_foreachinmap(cleanup_sub, i, BL_ALL);
if( map[i].channel != NULL )
clif_chsys_delete((struct raChSysCh *)map[i].channel);
}
}
ShowStatus("Cleaned up %d maps."CL_CLL"\n", map_num);

View File

@ -2470,8 +2470,8 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds
if(rnd()%100 > (1 + skill_lv) ) dmg.blewcount = 0;
break;
default:
if(damage < dmg.div_ && skill_lv != CH_PALMSTRIKE)
dmg.blewcount = 0; //only pushback when it hit
if(damage < dmg.div_ && skill_id != CH_PALMSTRIKE)
dmg.blewcount = 0; //only pushback when it hit for other
break;
}
switch(skill_id){
@ -3374,10 +3374,6 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data)
( sc && sc->option&OPTION_HIDE ) ){
skill_blown(src,target,skill_get_blewcount(skl->skill_id, skl->skill_lv), -1, 0x0 );
break;
} else if( tsc && tsc->data[SC_SAFETYWALL] ){
skill_attack(skl->type,src,src,target,skl->skill_id,skl->skill_lv,tick,skl->flag);
skill_blown(src,target,skill_get_blewcount(skl->skill_id, skl->skill_lv), -1, 0x0 );
break;
}
}
default:
@ -12330,7 +12326,7 @@ static int skill_unit_effect (struct block_list* bl, va_list ap)
skill_unit_onout(unit,bl,tick);
if( flag&4 )
skill_unit_onleft(skill_id, bl, tick);
skill_unit_onleft(skill_id, bl, tick);
}else if( !isTarget && flag&4 && ( group->state.song_dance&0x1 || ( group->src_id == bl->id && group->state.song_dance&0x2 ) ) ){
skill_unit_onleft(skill_id, bl, tick);//Ensemble check to terminate it.
}
@ -15935,7 +15931,7 @@ int skill_unit_move (struct block_list *bl, unsigned int tick, int flag) {
for( i = 0; i < ARRAYLENGTH(skill_unit_temp); i++ )
if( skill_unit_temp[i] )
skill_unit_onleft(skill_unit_temp[i], bl, tick);
}
}
return 0;
}

View File

@ -41,6 +41,7 @@ set( SQL_MAP_HEADERS
"${SQL_MAP_SOURCE_DIR}/trade.h"
"${SQL_MAP_SOURCE_DIR}/unit.h"
"${SQL_MAP_SOURCE_DIR}/vending.h"
"${SQL_MAP_SOURCE_DIR}/cashshop.h"
)
set( SQL_MAP_SOURCES
"${SQL_MAP_SOURCE_DIR}/atcommand.c"
@ -80,6 +81,7 @@ set( SQL_MAP_SOURCES
"${SQL_MAP_SOURCE_DIR}/trade.c"
"${SQL_MAP_SOURCE_DIR}/unit.c"
"${SQL_MAP_SOURCE_DIR}/vending.c"
"${SQL_MAP_SOURCE_DIR}/cashshop.c"
)
set( DEPENDENCIES common_sql )
set( LIBRARIES ${GLOBAL_LIBRARIES} )

View File

@ -334,7 +334,7 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
if (flag&4 && DIFF_TICK(ud->canmove_tick, gettick()) > 0 &&
DIFF_TICK(ud->canmove_tick, gettick()) < 2000)
{ // Delay walking command. [Skotlex]
{ // Delay walking command. [Skotlex]
add_timer(ud->canmove_tick+1, unit_delay_walktoxy_timer, bl->id, (x<<16)|(y&0xFFFF));
return 1;
}
@ -2293,6 +2293,31 @@ int unit_free(struct block_list *bl, clr_type clrtype)
if( sd->duel_invite > 0 )
duel_reject(sd->duel_invite, sd);
if( raChSys.ally && sd->status.guild_id ) {
struct guild *g = sd->guild, *sg;
if( g ) {
if( idb_exists(((struct raChSysCh *)g->channel)->users, sd->status.char_id) )
clif_chsys_left((struct raChSysCh *)g->channel,sd);
for (i = 0; i < MAX_GUILDALLIANCE; i++) {
if( g->alliance[i].guild_id && (sg = guild_search(g->alliance[i].guild_id) ) ) {
if( idb_exists(((struct raChSysCh *)sg->channel)->users, sd->status.char_id) )
clif_chsys_left((struct raChSysCh *)sg->channel,sd);
break;
}
}
}
}
if( sd->channel_count ) {
uint8 ch_count = sd->channel_count;
for( i = 0; i < ch_count; i++ ) {
if( sd->channels[i] != NULL )
clif_chsys_left(sd->channels[i],sd);
}
if( raChSys.closing )
aFree(sd->channels);
}
// Notify friends that this char logged out. [Skotlex]
map_foreachpc(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0);
party_send_logout(sd);