Browse Source

- Casting Kaensin will clear out Suiton and viceversa now.
- Fixed drop-rates (@whodrops) getting duplicates when you use @reloadmobdb
- Fixed unjailing not sending characters to Prontera.


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

skotlex 19 years ago
parent
commit
8157062811
7 changed files with 18 additions and 20 deletions
  1. 4 0
      Changelog-Trunk.txt
  2. 1 1
      db/skill_cast_db.txt
  3. 1 1
      db/skill_unit_db.txt
  4. 3 4
      src/map/atcommand.c
  5. 4 3
      src/map/mob.c
  6. 1 1
      src/map/pc.c
  7. 4 10
      src/map/skill.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ 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/08/08
+	* Casting Kaensin will clear out Suiton and viceversa now. [Skotlex]
+	* Fixed drop-rates (@whodrops) getting duplicates when you use @reloadmobdb
+	  [Skotlex]
+	* Fixed unjailing not sending characters to Prontera. [Skotlex]
 	* Fixed yet again AS_SPLASHER doing full damage on all characters. Now you
 	  can use the NK split damage value in the skill_db if you want damage
 	  divided by the amount of targets rather than by 2. [Skotlex]

+ 1 - 1
db/skill_cast_db.txt

@@ -886,7 +886,7 @@
 //-- NJ_ZENYNAGE
 526,0,5000,0,0,0
 //-- NJ_TATAMIGAESHI // Duration1 is land-effect. Duration2 is the range-inmunity effect
-527,0,3000,0,500,3000
+527,0,3000,0,1000,3000
 //-- NJ_KASUMIKIRI // Delay unknown (if there is one)
 528,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0
 //-- NJ_SHADOWJUMP // Delay unknown (if there is one)

+ 1 - 1
db/skill_unit_db.txt

@@ -89,6 +89,6 @@
 488,0xb9,    ,  3, 0,  -1,all,   0x200	//CG_HERMODE
 516,0xba,    ,  0, 3, 100,enemy, 0x000	//GS_DESPERADO
 521,0xc2,    ,  0, 1,1000,enemy, 0x006	//GS_GROUNDDRIFT
-527,0xbc,    , -1, 0,1000,enemy, 0x000	//NJ_TATAMIGAESHI
+527,0xbc,    , -1, 0,2000,enemy, 0x000	//NJ_TATAMIGAESHI
 535,0xbd,    , -1, 0, 200,enemy, 0x008	//NJ_KAENSIN
 538,0xbb,,1:1:1:2:2:2:3:3:3:4,0,-1,all,0x000	//NJ_SUITON

+ 3 - 4
src/map/atcommand.c

@@ -6523,9 +6523,7 @@ int atcommand_unjail(
 		return -1;
 	}
 
-	m_index = mapindex_name2id(MAP_JAIL);
-
-	if (pl_sd->mapindex != m_index) {
+	if (pl_sd->mapindex != mapindex_name2id(MAP_JAIL)) {
 		clif_displaymessage(fd, msg_table[119]); // This player is not in jails.
 		return -1;
 	}
@@ -6536,7 +6534,8 @@ int atcommand_unjail(
 		x =  pl_sd->sc.data[SC_JAILED].val4&0xFFFF;
 		y =  pl_sd->sc.data[SC_JAILED].val4>>16;
 		status_change_end(&pl_sd->bl,SC_JAILED,-1);
-	}
+	} else
+		m_index = mapindex_name2id(MAP_PRONTERA);
 	
 	if (pc_setpos(pl_sd, m_index, x, y, 3) == 0 ||
  		pc_setpos(pl_sd, mapindex_name2id(MAP_PRONTERA), 0, 0, 3) == 0

+ 4 - 3
src/map/mob.c

@@ -3359,7 +3359,8 @@ static int mob_readdb(void)
 					if (k == MAX_SEARCH)
 						continue;
 				
-					memmove(&id->mob[k+1], &id->mob[k], (MAX_SEARCH-k-1)*sizeof(id->mob[0]));
+					if (id->mob[k].id != class_)
+						memmove(&id->mob[k+1], &id->mob[k], (MAX_SEARCH-k-1)*sizeof(id->mob[0]));
 					id->mob[k].chance = mob_db_data[class_]->dropitem[i].p;
 					id->mob[k].id = class_;
 				}
@@ -4028,8 +4029,8 @@ static int mob_read_sqldb(void)
 						}
 						if (k == MAX_SEARCH)
 							continue;
-					
-						memmove(&id->mob[k+1], &id->mob[k], (MAX_SEARCH-k-1)*sizeof(id->mob[0]));
+						if (id->mob[k].id != class_)
+							memmove(&id->mob[k+1], &id->mob[k], (MAX_SEARCH-k-1)*sizeof(id->mob[0]));
 						id->mob[k].chance = mob_db_data[class_]->dropitem[i].p;
 						id->mob[k].id = class_;
 					}

+ 1 - 1
src/map/pc.c

@@ -3267,7 +3267,7 @@ int pc_setpos(struct map_session_data *sd,unsigned short mapindex,int x,int y,in
 	{	//Misc map-changing settings
 		party_send_dot_remove(sd); //minimap dot fix [Kevin]
 		guild_send_dot_remove(sd);
-		skill_clear_group(&sd->bl, 1|4|(battle_config.traps_setting&2));
+		skill_clear_group(&sd->bl, 1|(battle_config.traps_setting&2));
 		if (sd->sc.count)
 		{ //Cancel some map related stuff.
 			if (sd->sc.data[SC_WARM].timer != -1)

+ 4 - 10
src/map/skill.c

@@ -2732,8 +2732,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 		break;
 
 	case TK_JUMPKICK:
-		if (skillid == TK_JUMPKICK)
-			skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
+		skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
 		if (unit_movepos(src, bl->x, bl->y, 0, 0))
 			clif_slide(src,bl->x,bl->y);
 		break;
@@ -6661,7 +6660,7 @@ struct skill_unit_group *skill_unitsetting (struct block_list *src, int skillid,
 		if (sd) val1 = sd->status.child;
 		break;
 	case NJ_KAENSIN:
-		skill_clear_group(src, 4); //Delete previous Kaensins
+		skill_clear_group(src, 1); //Delete previous Kaensins/Suitons
 		val2 = (skilllv+1)/2 + 4;
 		break;
 
@@ -9162,11 +9161,8 @@ int skill_clear_group (struct block_list *bl, int flag)
 			case SA_VIOLENTGALE:
 			case SA_LANDPROTECTOR:
 			case NJ_SUITON:
-				if (flag&1)
-					group[count++]= ud->skillunit[i];
-				break;
 			case NJ_KAENSIN:
-				if (flag&4)
+				if (flag&1)
 					group[count++]= ud->skillunit[i];
 				break;
 			default:
@@ -9876,9 +9872,7 @@ int skill_unit_timer_sub (struct block_list *bl, va_list ap)
 	struct skill_unit_group *group;
 	unsigned int tick;
 
-	nullpo_retr(0, bl);
-	nullpo_retr(0, ap);
-	nullpo_retr(0, unit=(struct skill_unit *)bl);
+	unit=(struct skill_unit *)bl;
 	tick=va_arg(ap,unsigned int);
 
 	if(!unit->alive)