Browse Source

- Added RUDE_ATTACKED_COUNT so you can easily adjust how many rude-attacks should happen before a mob uses the rude-attacked skill. Value has been set to 2 for now.
- Now when a mob changes target (to someone they can hit) their rude-attacked count won't be reset, but instead will be reduced by one.
- SC_SPEEDUP0 can now stack with the other speed raising buffs.
- Changed the inf2 value of SA_DISPEL so it can be casted on party/guild mates, but not yourself.


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

skotlex 19 years ago
parent
commit
187fb75379
5 changed files with 20 additions and 7 deletions
  1. 7 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 1 1
      db/skill_db.txt
  4. 8 4
      src/map/mob.c
  5. 2 2
      src/map/status.c

+ 7 - 0
Changelog-Trunk.txt

@@ -3,6 +3,13 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 2006/08/03
 2006/08/03
+	* Added RUDE_ATTACKED_COUNT so you can easily adjust how many rude-attacks
+	  should happen before a mob uses the rude-attacked skill. Value has been set
+	  to 2 for now. [Skotlex]
+	* Now when a mob changes target (to someone they can hit) their
+	  rude-attacked count won't be reset, but instead will be reduced by one.
+	  [Skotlex]
+	* SC_SPEEDUP0 can now stack with the other speed raising buffs. [Skotlex]
 	* Some adjustments so that the last-skill-used will be correctly cleared
 	* Some adjustments so that the last-skill-used will be correctly cleared
 	  when your combo-time ends. [Skotlex]
 	  when your combo-time ends. [Skotlex]
 	* Fix a bug in atcommand_charspeed [Toms]
 	* Fix a bug in atcommand_charspeed [Toms]

+ 2 - 0
db/Changelog.txt

@@ -20,6 +20,8 @@
 
 
 =========================
 =========================
 08/03
 08/03
+	* Changed the inf2 value of SA_DISPEL so it can be casted on party/guild
+	  mates, but not yourself. [Skotlex]
 	* Updated some monsters [Playtester]
 	* Updated some monsters [Playtester]
 	- Gig and Deleter are now Fire 2 element
 	- Gig and Deleter are now Fire 2 element
 	- reduced attack power of Skeggiolds
 	- reduced attack power of Skeggiolds

+ 1 - 1
db/skill_db.txt

@@ -309,7 +309,7 @@
 286,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0	//SA_DELUGE#Deluge#
 286,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0	//SA_DELUGE#Deluge#
 287,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0	//SA_VIOLENTGALE#Whirlwind#
 287,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0	//SA_VIOLENTGALE#Whirlwind#
 288,3,6,2,0,1,0,5,1,yes,0,0,0,magic,0	//SA_LANDPROTECTOR#Magnetic Earth#
 288,3,6,2,0,1,0,5,1,yes,0,0,0,magic,0	//SA_LANDPROTECTOR#Magnetic Earth#
-289,9,6,1,0,1,0,5,1,yes,0,0,0,magic,0	//SA_DISPELL#Dispel#
+289,9,6,1,0,1,0,5,1,yes,0,7680,0,magic,0	//SA_DISPELL#Dispel#
 290,0,6,4,0,1,0,10,1,yes,0,0,0,magic,0	//SA_ABRACADABRA#Hocus-pocus#
 290,0,6,4,0,1,0,10,1,yes,0,0,0,magic,0	//SA_ABRACADABRA#Hocus-pocus#
 291,9,6,1,0,1,0,1,1,yes,0,2,0,magic,0	//SA_MONOCELL#Monocell#
 291,9,6,1,0,1,0,1,1,yes,0,2,0,magic,0	//SA_MONOCELL#Monocell#
 292,9,6,1,0,1,0,1,1,yes,0,2,0,magic,0	//SA_CLASSCHANGE#Class Change#
 292,9,6,1,0,1,0,1,1,yes,0,2,0,magic,0	//SA_CLASSCHANGE#Class Change#

+ 8 - 4
src/map/mob.c

@@ -43,6 +43,9 @@
 #define MOB_LAZYWARPPERC 20	// Warp probability in the negligent mode MOB (rate of 1000 minute)
 #define MOB_LAZYWARPPERC 20	// Warp probability in the negligent mode MOB (rate of 1000 minute)
 
 
 #define MAX_MINCHASE 30	//Max minimum chase value to use for mobs.
 #define MAX_MINCHASE 30	//Max minimum chase value to use for mobs.
+
+#define RUDE_ATTACKED_COUNT 2	//After how many rude-attacks should the skill be used?
+
 //Dynamic mob database, allows saving of memory when there's big gaps in the mob_db [Skotlex]
 //Dynamic mob database, allows saving of memory when there's big gaps in the mob_db [Skotlex]
 struct mob_db *mob_db_data[MAX_MOB_DB+1];
 struct mob_db *mob_db_data[MAX_MOB_DB+1];
 struct mob_db *mob_dummy = NULL;	//Dummy mob to be returned when a non-existant one is requested.
 struct mob_db *mob_dummy = NULL;	//Dummy mob to be returned when a non-existant one is requested.
@@ -1105,7 +1108,7 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap)
 				!battle_check_range(&md->bl, tbl, md->status.rhw.range))
 				!battle_check_range(&md->bl, tbl, md->status.rhw.range))
 			{	//Rude-attacked (avoid triggering due to can-walk delay).
 			{	//Rude-attacked (avoid triggering due to can-walk delay).
 				if (DIFF_TICK(tick, md->ud.canmove_tick) > 0 &&
 				if (DIFF_TICK(tick, md->ud.canmove_tick) > 0 &&
-				  	md->attacked_count++ > 3)
+				  	md->attacked_count++ >= RUDE_ATTACKED_COUNT)
 					mobskill_use(md, tick, MSC_RUDEATTACKED);
 					mobskill_use(md, tick, MSC_RUDEATTACKED);
 			}
 			}
 		} else
 		} else
@@ -1120,7 +1123,7 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap)
 					((TBL_PC*)abl)->state.gangsterparadise
 					((TBL_PC*)abl)->state.gangsterparadise
 				)
 				)
 			)	{	//Can't attack back
 			)	{	//Can't attack back
-				if (md->attacked_count++ > 3) {
+				if (md->attacked_count++ >= RUDE_ATTACKED_COUNT) {
 					if (mobskill_use(md, tick, MSC_RUDEATTACKED) == 0 && can_move)
 					if (mobskill_use(md, tick, MSC_RUDEATTACKED) == 0 && can_move)
 					{
 					{
 						int dist = rand() % 10 + 1;//Œã‘Þ‚·‚é‹——£
 						int dist = rand() % 10 + 1;//Œã‘Þ‚·‚é‹——£
@@ -1139,7 +1142,8 @@ static int mob_ai_sub_hard(struct block_list *bl,va_list ap)
 					//or if the previous target is not attacking the mob. [Skotlex]
 					//or if the previous target is not attacking the mob. [Skotlex]
 					md->target_id = md->attacked_id; // set target
 					md->target_id = md->attacked_id; // set target
 					md->state.aggressive = 0; //Retaliating.
 					md->state.aggressive = 0; //Retaliating.
-					//md->attacked_count = 0; //Should we reset rude attack count?
+					if (md->attacked_count)
+					  md->attacked_count--; //Should we reset rude attack count?
 					md->min_chase = dist+md->db->range3;
 					md->min_chase = dist+md->db->range3;
 					if(md->min_chase>MAX_MINCHASE)
 					if(md->min_chase>MAX_MINCHASE)
 						md->min_chase=MAX_MINCHASE;
 						md->min_chase=MAX_MINCHASE;
@@ -2676,7 +2680,7 @@ int mobskill_use(struct mob_data *md, unsigned int tick, int event)
 				case MSC_SKILLUSED:		// specificated skill used
 				case MSC_SKILLUSED:		// specificated skill used
 					flag = ((event & 0xffff) == MSC_SKILLUSED && ((event >> 16) == c2 || c2 == 0)); break;
 					flag = ((event & 0xffff) == MSC_SKILLUSED && ((event >> 16) == c2 || c2 == 0)); break;
 				case MSC_RUDEATTACKED:
 				case MSC_RUDEATTACKED:
-					flag = (md->attacked_count >= 3);
+					flag = (md->attacked_count >= RUDE_ATTACKED_COUNT);
 					if (flag) md->attacked_count = 0;	//Rude attacked count should be reset after the skill condition is met. Thanks to Komurka [Skotlex]
 					if (flag) md->attacked_count = 0;	//Rude attacked count should be reset after the skill condition is met. Thanks to Komurka [Skotlex]
 					break;
 					break;
 				case MSC_MASTERHPLTMAXRATE:
 				case MSC_MASTERHPLTMAXRATE:

+ 2 - 2
src/map/status.c

@@ -3422,10 +3422,10 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
 	if(sc->data[SC_WEDDING].timer!=-1)
 	if(sc->data[SC_WEDDING].timer!=-1)
 		speed += 300;
 		speed += 300;
 
 
-	//% increases (they don't stack)
+	//% increases (they don't stack, with the exception of Speedup1? @.@)
 	if(sc->data[SC_SPEEDUP1].timer!=-1)
 	if(sc->data[SC_SPEEDUP1].timer!=-1)
 		speed -= speed * 50/100;
 		speed -= speed * 50/100;
-	else if(sc->data[SC_SPEEDUP0].timer!=-1)
+	if(sc->data[SC_SPEEDUP0].timer!=-1)
 		speed -= speed * 25/100;
 		speed -= speed * 25/100;
 	else if(sc->data[SC_INCREASEAGI].timer!=-1)
 	else if(sc->data[SC_INCREASEAGI].timer!=-1)
 		speed -= speed * 25/100;
 		speed -= speed * 25/100;