Browse Source

- Repairing items via scripts no longer displays "item has been repaired"
- Status Recovery again makes mobs unlock their current target.
- Moved requesting party/guilds from the char-server from pc_authok to pc_reg_received, since map_nick2sd and map_getallsd won't work until the characters are authentified. Also removed the guild master setting from clif_parse_LoadEndAck to pc_reg_received since guild master setting will work there.
- Fixed homun hunger timer being started on login even when hom is vaporized/dead.
- Fixed mvp exp attacker bonus applying incorrectly.
- Removed duplicate msg_athena.conf entries 619 and 620 for Ninja/Gunslinger.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9401 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 18 years ago
parent
commit
1424d93e12
9 changed files with 32 additions and 23 deletions
  1. 13 0
      Changelog-Trunk.txt
  2. 0 2
      conf-tmpl/msg_athena.conf
  3. 0 1
      src/char/int_guild.c
  4. 0 1
      src/char_sql/int_guild.c
  5. 2 11
      src/map/clif.c
  6. 2 1
      src/map/mob.c
  7. 13 6
      src/map/pc.c
  8. 0 1
      src/map/script.c
  9. 2 0
      src/map/skill.c

+ 13 - 0
Changelog-Trunk.txt

@@ -4,6 +4,19 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2006/12/04
+	* Repairing items via scripts no longer displays "item has been repaired"
+	  [Skotlex]
+	* Status Recovery again makes mobs unlock their current target. [Skotlex]
+	* Moved requesting party/guilds from the char-server from pc_authok to
+	  pc_reg_received, since map_nick2sd and map_getallsd won't work until the
+	  characters are authentified. Also removed the guild master setting from
+	  clif_parse_LoadEndAck to pc_reg_received since guild master setting will
+	  work there. [Skotlex]
+	* Fixed homun hunger timer being started on login even when hom is
+	  vaporized/dead. [Skotlex]
+	* Fixed mvp exp attacker bonus applying incorrectly. [Skotlex]
+	* Removed duplicate msg_athena.conf entries 619 and 620 for
+	  Ninja/Gunslinger.[Skotlex]
 	* Fixed the txt->sql converter not escaping character names before saving
 	  them. [Skotlex]
 	* Fixed a pet's level not resetting to their db level when you enable pet

+ 0 - 2
conf-tmpl/msg_athena.conf

@@ -549,8 +549,6 @@
 616: Taekwon
 617: Star Gladiator
 618: Soul Linker
-619: Gunslinger
-620: Ninja
 //...
 650: Unknown Job
 

+ 0 - 1
src/char/int_guild.c

@@ -1299,7 +1299,6 @@ int mapif_parse_GuildSkillUp(int fd, int guild_id, int skill_num, int account_id
 		if (guild_calcinfo(g) == 0)
 			mapif_guild_info(-1, g);
 		mapif_guild_skillupack(guild_id, skill_num, account_id);
-		ShowInfo("int_guild: skill %d up\n", skill_num);
 	}
 
 	return 0;

+ 0 - 1
src/char_sql/int_guild.c

@@ -1796,7 +1796,6 @@ int mapif_parse_GuildSkillUp(int fd,int guild_id,int skill_num,int account_id)
 		if (!guild_calcinfo(g))
 			mapif_guild_info(-1,g);
 		mapif_guild_skillupack(guild_id,skill_num,account_id);
-		ShowDebug("int_guild: skill %d up\n",skill_num);
 		g->save_flag |= (GS_LEVEL|GS_SKILL); // Change guild & guild_skill
 	}
 	return 0;

+ 2 - 11
src/map/clif.c

@@ -8338,7 +8338,6 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 
 	if(sd->state.connect_new) {
 		int lv;
-		struct guild *g;
 		sd->state.connect_new = 0;
 		clif_skillinfoblock(sd);
 		clif_updatestatus(sd,SP_NEXTBASEEXP);
@@ -8365,17 +8364,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 
 		if(sd->pd && sd->pd->pet.intimate > 900)
 			clif_pet_emotion(sd->pd,(sd->pd->pet.class_ - 100)*100 + 50 + pet_hungry_val(sd->pd));
-		if(sd->hd)
-			merc_hom_init_timers(sd->hd);
 
-		if (sd->status.guild_id > 0 && !sd->state.gmaster_flag &&
-			(g=guild_search(sd->status.guild_id)) &&
-			strcmp(sd->status.name,g->master) == 0)
-		{	//Block Guild Skills to prevent logout/login reuse exploiting. [Skotlex]
-			guild_block_skill(sd, 300000);
-			//Also set the Guild Master flag.
-			sd->state.gmaster_flag = g;
-		}
+		if(merc_is_hom_active(sd->hd))
+			merc_hom_init_timers(sd->hd);
 
 		//Delayed night effect on log-on fix for the glow-issue. Thanks to Larry.
 		if (night_flag && map[sd->bl.m].flag.nightenabled)

+ 2 - 1
src/map/mob.c

@@ -2072,7 +2072,8 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type)
 			exp =1; 
 		else {
 			exp = md->db->mexp;
-			exp += exp*(battle_config.exp_bonus_attacker*count)/100.; //[Gengar]
+			if (count > 1)
+				exp += exp*(battle_config.exp_bonus_attacker*(count-1))/100.; //[Gengar]
 		}
 		
 		mexp = (exp > UINT_MAX)?UINT_MAX:(exp<1?1:(unsigned int)exp);

+ 13 - 6
src/map/pc.c

@@ -671,11 +671,6 @@ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_t
 	if (sd->status.hom_id > 0)
 		intif_homunculus_requestload(sd->status.account_id, sd->status.hom_id);
 
-	if (sd->status.party_id > 0 && party_search(sd->status.party_id) == NULL)
-		party_request_info(sd->status.party_id);
-	if (sd->status.guild_id > 0 && guild_search(sd->status.guild_id) == NULL)
-		guild_request_info(sd->status.guild_id);
-
 	clif_authok(sd);
 	map_addiddb(&sd->bl);
 	if (map_charid2nick(sd->status.char_id) == NULL)
@@ -795,6 +790,7 @@ int pc_set_hate_mob(struct map_session_data *sd, int pos, struct block_list *bl)
 int pc_reg_received(struct map_session_data *sd)
 {
 	int i,j;
+	struct guild *g = NULL;
 	
 	sd->change_level = pc_readglobalreg(sd,"jobchange_level");
 	sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER");
@@ -851,9 +847,20 @@ int pc_reg_received(struct map_session_data *sd)
 	//Weird... maybe registries were reloaded?
 	if (sd->state.auth)
 		return 0;
+	sd->state.auth = 1;
+
+	if (sd->status.party_id > 0 && party_search(sd->status.party_id) == NULL)
+		party_request_info(sd->status.party_id);
+	if (sd->status.guild_id > 0 && (g=guild_search(sd->status.guild_id)) == NULL)
+		guild_request_info(sd->status.guild_id);
+	else if (g && strcmp(sd->status.name,g->master) == 0)
+	{	//Block Guild Skills to prevent logout/login reuse exploiting. [Skotlex]
+		guild_block_skill(sd, 300000);
+		//Also set the Guild Master flag.
+		sd->state.gmaster_flag = g;
+	}
 
 	status_calc_pc(sd,1);
-	sd->state.auth = 1;
 	if (!sd->state.connect_new && sd->fd)
 	{	//Character already loaded map! Gotta trigger LoadEndAck manually.
 		sd->state.connect_new = 1;

+ 0 - 1
src/map/script.c

@@ -6018,7 +6018,6 @@ int buildin_repair(struct script_state *st)
 					clif_equiplist(sd);
 					clif_produceeffect(sd, 0, sd->status.inventory[i].nameid);
 					clif_misceffect(&sd->bl, 3);
-					clif_displaymessage(sd->fd,"Item has been repaired.");
 					break;
 				}
 		}

+ 2 - 0
src/map/skill.c

@@ -4321,6 +4321,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 				skill_get_time2(skillid, skilllv) * (100-(tstatus->int_+tstatus->vit)/2)/100,10);
 		}
 		clif_skill_nodamage(src,bl,skillid,skilllv,1);
+		if(dstmd)
+			mob_unlocktarget(dstmd,tick);
 		break;
 
 	case WZ_ESTIMATION: