-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

@ -1700,31 +1700,6 @@ int map_quit(struct map_session_data *sd) {
unit_remove_map(&sd->ed->bl,CLR_TELEPORT); 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); unit_remove_map_pc(sd,CLR_TELEPORT);
if( map[sd->bl.m].instance_id ) { // Avoid map conflicts and warnings on next login 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 // remove all objects on maps
for (i = 0; i < map_num; i++) { for (i = 0; i < map_num; i++) {
ShowStatus("Cleaning up maps [%d/%d]: %s..."CL_CLL"\r", i+1, map_num, map[i].name); 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); 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); 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; if(rnd()%100 > (1 + skill_lv) ) dmg.blewcount = 0;
break; break;
default: default:
if(damage < dmg.div_ && skill_lv != CH_PALMSTRIKE) if(damage < dmg.div_ && skill_id != CH_PALMSTRIKE)
dmg.blewcount = 0; //only pushback when it hit dmg.blewcount = 0; //only pushback when it hit for other
break; break;
} }
switch(skill_id){ 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 ) ){ ( sc && sc->option&OPTION_HIDE ) ){
skill_blown(src,target,skill_get_blewcount(skl->skill_id, skl->skill_lv), -1, 0x0 ); skill_blown(src,target,skill_get_blewcount(skl->skill_id, skl->skill_lv), -1, 0x0 );
break; 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: default:

View File

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

View File

@ -2293,6 +2293,31 @@ int unit_free(struct block_list *bl, clr_type clrtype)
if( sd->duel_invite > 0 ) if( sd->duel_invite > 0 )
duel_reject(sd->duel_invite, sd); 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] // Notify friends that this char logged out. [Skotlex]
map_foreachpc(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0); map_foreachpc(clif_friendslist_toggle_sub, sd->status.account_id, sd->status.char_id, 0);
party_send_logout(sd); party_send_logout(sd);