Browse Source

* 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://svn.code.sf.net/p/rathena/svn/branches/stable@1224 54d463be-8e91-2dee-dedb-b68131a5f0ec

celest 20 years ago
parent
commit
a3fbd42dd5
5 changed files with 58 additions and 17 deletions
  1. 7 0
      Changelog-SVN.txt
  2. 3 0
      npc/Changelog.txt
  3. 2 1
      npc/quests/skills/swordsman_skills.txt
  4. 2 2
      src/map/mob.c
  5. 44 14
      src/map/pc.c

+ 7 - 0
Changelog-SVN.txt

@@ -1,6 +1,13 @@
 Date	Added
 
 03/11
+        * Fixed "--en/ja--" usage in 'monster' script not working properly, thanks
+          to sbilly [celest]
+        * Speedup player autosaving -- don't save guild castle data at the same time,
+          thanks to Alex14 [celest]
+        * Optimised guild castle saving when autosaving player data, thanks to Yor /
+          Freya (UPDATE: view above)
+        * Added sd check in mob_damage, thanks to sbilly [celest]
         * Added Sage enchanting skills can only be cast on party members [celest]
         * Fixed Magic Power not working for ground-targeted skills [celest]
         * Fixed Frost Diver having double freezing chances [celest]

+ 3 - 0
npc/Changelog.txt

@@ -35,6 +35,9 @@ Other Ppl
 Date		Added
 ======
 
+03/11
+        * Reverted the Moving HP skill quest change, thanks to DracoRPG [celest]
+
 03/07
         * Fixed a typo in high mage job changing, thanks to hongmei [celest]
 

+ 2 - 1
npc/quests/skills/swordsman_skills.txt

@@ -234,7 +234,8 @@ L_Check:
 	mes "Haha! You have just learned HP Moving Recovery!";
 	delitem 713,200;
 	delitem 1058,1;
-	delitem 2312,1;
+//-- Padded armor does not have to be deleted! --
+//	delitem 2312,1;
 	skill 144,1,0;
 	set MOVHPREC, 0;
 	next;

+ 2 - 2
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) {

+ 44 - 14
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;