summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-03-11 16:33:21 +0000
committercelest <celest@54d463be-8e91-2dee-dedb-b68131a5f0ec>2005-03-11 16:33:21 +0000
commitc8745227f8cead250ccb8af5e932fa696b352cfc (patch)
tree4d3d0a663093a6dc3f9e5f38a6e93ab7b7581955 /src
parentd0e67c654cebf61e36595624ce9c467273d502e3 (diff)
downloadhercules-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.c4
-rw-r--r--src/map/pc.c58
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;