diff options
author | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-03-11 16:33:21 +0000 |
---|---|---|
committer | celest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2005-03-11 16:33:21 +0000 |
commit | c8745227f8cead250ccb8af5e932fa696b352cfc (patch) | |
tree | 4d3d0a663093a6dc3f9e5f38a6e93ab7b7581955 /src | |
parent | d0e67c654cebf61e36595624ce9c467273d502e3 (diff) | |
download | hercules-c8745227f8cead250ccb8af5e932fa696b352cfc.tar.gz hercules-c8745227f8cead250ccb8af5e932fa696b352cfc.tar.bz2 hercules-c8745227f8cead250ccb8af5e932fa696b352cfc.tar.xz hercules-c8745227f8cead250ccb8af5e932fa696b352cfc.zip |
* Fixed "--en/ja--" usage in 'monster' script not working properly
* Speedup player autosaving
* Optimised guild castle saving when autosaving player data
* Added sd check in mob_damage
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@1224 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r-- | src/map/mob.c | 4 | ||||
-rw-r--r-- | src/map/pc.c | 58 |
2 files changed, 46 insertions, 16 deletions
diff --git a/src/map/mob.c b/src/map/mob.c index 3fb7de38c..8f41f93c7 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2612,7 +2612,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) } // Ore Discovery [Celest] - if (pc_checkskill(sd,BS_FINDINGORE)>0 && battle_config.finding_ore_rate/100 >= rand()%1000) { + if (sd && pc_checkskill(sd,BS_FINDINGORE)>0 && battle_config.finding_ore_rate/100 >= rand()%1000) { struct delay_item_drop *ditem; int itemid[17] = { 714, 756, 757, 969, 984, 985, 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, 1002 }; ditem=(struct delay_item_drop *)aCalloc(1,sizeof(struct delay_item_drop)); @@ -2631,7 +2631,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) } //this drop log contains ALL dropped items + ORE (if there was ORE Recovery) [Lupus] - if(log_config.drop > 0 && drop_items) //we check were there any drops.. and if not - don't write the log + if(sd && log_config.drop > 0 && drop_items) //we check were there any drops.. and if not - don't write the log log_drop(sd, md->class_, log_item); //mvp_sd if(sd && sd->state.attack_type == BF_WEAPON) { diff --git a/src/map/pc.c b/src/map/pc.c index 70b6449fc..6a325176c 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6821,6 +6821,8 @@ int pc_setsavepoint(struct map_session_data *sd,char *mapname,int x,int y) *------------------------------------------ */ static int last_save_fd,save_flag; +static int Ghp[MAX_GUILDCASTLE][8]; // so save only if HP are changed // experimental code [Yor] + static int pc_autosave_sub(struct map_session_data *sd,va_list ap) { nullpo_retr(0, sd); @@ -6828,8 +6830,11 @@ static int pc_autosave_sub(struct map_session_data *sd,va_list ap) Assert((sd->status.pet_id == 0 || sd->pd == 0) || sd->pd->msd == sd); if(save_flag==0 && sd->fd>last_save_fd && !sd->state.waitingdisconnect){ - struct guild_castle *gc=NULL; - int i; +// --- uncomment to reenable guild castle saving ---// +// struct guild_castle *gc=NULL; +// int i; +// + // if(battle_config.save_log) // printf("autosave %d\n",sd->fd); // pet @@ -6839,18 +6844,43 @@ static int pc_autosave_sub(struct map_session_data *sd,va_list ap) chrif_save(sd); storage_storage_save(sd); - for(i=0;i<MAX_GUILDCASTLE;i++){ - gc=guild_castle_search(i); - if(!gc) continue; - if(gc->visibleG0==1) guild_castledatasave(gc->castle_id,18,gc->Ghp0); - if(gc->visibleG1==1) guild_castledatasave(gc->castle_id,19,gc->Ghp1); - if(gc->visibleG2==1) guild_castledatasave(gc->castle_id,20,gc->Ghp2); - if(gc->visibleG3==1) guild_castledatasave(gc->castle_id,21,gc->Ghp3); - if(gc->visibleG4==1) guild_castledatasave(gc->castle_id,22,gc->Ghp4); - if(gc->visibleG5==1) guild_castledatasave(gc->castle_id,23,gc->Ghp5); - if(gc->visibleG6==1) guild_castledatasave(gc->castle_id,24,gc->Ghp6); - if(gc->visibleG7==1) guild_castledatasave(gc->castle_id,25,gc->Ghp7); - } +// --- uncomment to reenable guild castle saving ---// +/* for(i = 0; i < MAX_GUILDCASTLE; i++) { // [Yor] + gc = guild_castle_search(i); + if (!gc) continue; + if (gc->visibleG0 == 1 && Ghp[i][0] != gc->Ghp0) { + guild_castledatasave(gc->castle_id, 18, gc->Ghp0); + Ghp[i][0] = gc->Ghp0; + } + if (gc->visibleG1 == 1 && Ghp[i][1] != gc->Ghp1) { + guild_castledatasave(gc->castle_id, 19, gc->Ghp1); + Ghp[i][1] = gc->Ghp1; + } + if (gc->visibleG2 == 1 && Ghp[i][2] != gc->Ghp2) { + guild_castledatasave(gc->castle_id, 20, gc->Ghp2); + Ghp[i][2] = gc->Ghp2; + } + if (gc->visibleG3 == 1 && Ghp[i][3] != gc->Ghp3) { + guild_castledatasave(gc->castle_id, 21, gc->Ghp3); + Ghp[i][3] = gc->Ghp3; + } + if (gc->visibleG4 == 1 && Ghp[i][4] != gc->Ghp4) { + guild_castledatasave(gc->castle_id, 22, gc->Ghp4); + Ghp[i][4] = gc->Ghp4; + } + if (gc->visibleG5 == 1 && Ghp[i][5] != gc->Ghp5) { + guild_castledatasave(gc->castle_id, 23, gc->Ghp5); + Ghp[i][5] = gc->Ghp5; + } + if (gc->visibleG6 == 1 && Ghp[i][6] != gc->Ghp6) { + guild_castledatasave(gc->castle_id, 24, gc->Ghp6); + Ghp[i][6] = gc->Ghp6; + } + if (gc->visibleG7 == 1 && Ghp[i][7] != gc->Ghp7) { + guild_castledatasave(gc->castle_id, 25, gc->Ghp7); + Ghp[i][7] = gc->Ghp7; + } + }*/ save_flag=1; last_save_fd = sd->fd; |