Browse Source

- Added cast time to pick stone of 3 secs and 500ms delay
- Removed area of effect of Assumptio.
- Added "can't act" delay update when an auto-spell triggers.


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

skotlex 19 năm trước cách đây
mục cha
commit
503a7759d0
5 tập tin đã thay đổi với 31 bổ sung7 xóa
  1. 2 0
      Changelog-Trunk.txt
  2. 1 0
      db/Changelog.txt
  3. 2 0
      db/skill_cast_db.txt
  4. 1 0
      src/map/mob.c
  5. 25 7
      src/map/skill.c

+ 2 - 0
Changelog-Trunk.txt

@@ -4,6 +4,8 @@ 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/04/12
+	* Removed area of effect of Assumptio. [Skotlex]
+	* Added "can't act" delay update when an auto-spell triggers. [Skotlex]
 	* Expanded the warp warning so that it also warns when a warps takes you to
 	  a non-walkable tile. [Skotlex]
 	* Simplified the mob-drops structure by using a single timer with a linked

+ 1 - 0
db/Changelog.txt

@@ -27,6 +27,7 @@
 
 =========================
 04/12
+	* Added cast time to pick stone of 3 secs and 500ms delay. [Skotlex]
 	* Fixed produce_db for Halberd 3-->12 Oridecons [Playtester]
 	* Fixed Violy's Violin[4] drop rate. It is 2%. [Playtester]
 	* Fixed a typo and sorted skill_cast_db by skill id. [Playtester]

+ 2 - 0
db/skill_cast_db.txt

@@ -271,6 +271,8 @@
 //-- TF_SPRINKLESAND
 149,0,0,0,0,10000
 
+//-- TF_PICKSTONE
+152,3000,500,0,0,0
 //-- TF_THROWSTONE
 152,0,100,0,0,8000
 

+ 1 - 0
src/map/mob.c

@@ -1952,6 +1952,7 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type)
 			if (sd && battle_config.pk_mode == 1 && (md->db->lv - sd->status.base_level >= 20))
 				drop_rate = (int)(drop_rate*1.25); // pk_mode increase drops if 20 level difference [Valaris]
 
+//			if (10000 < rand()%10000+drop_rate) { //May be better if MAX_RAND is too low?
 			if (drop_rate < rand() % 10000 + 1) { //fixed 0.01% impossible drops bug [Lupus]
 				drop_ore = i; //we remember an empty slot to put there ORE DISCOVERY drop later.
 				continue;

+ 25 - 7
src/map/skill.c

@@ -1324,10 +1324,12 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	}
 
 	//Reports say that autospell effects get triggered on skills and pretty much everything including splash attacks. [Skotlex]
-	//Here we use the nk value to trigger spells only on damage causing skills (otherwise stuff like AL_HEAL will trigger them)
-	if(sd && !status_isdead(bl) && src != bl &&
-		!(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE)) {
+	//No need to check the NK value as this function is only called on attacks
+	//(or stuff that should invoke these things.
+	if(sd && !status_isdead(bl) && src != bl/* &&
+		!(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE)*/) {
 		struct block_list *tbl;
+		struct unit_data *ud;
 		int i;
 		for (i = 0; i < MAX_PC_BONUS && sd->autospell[i].id; i++) {
 
@@ -1361,6 +1363,13 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 					skill_castend_damage_id(src, tbl, skill, skill2, tick, 0);
 					break;
 			}
+			//Set canact delay. [Skotlex]
+			ud = unit_bl2ud(src);
+			if (ud) {
+				rate = skill_delayfix(src, skill, skill2);
+				if (DIFF_TICK(ud->canact_tick, tick + rate) < 0)
+					ud->canact_tick = tick+rate;
+			}
 			break; //Only one auto skill comes off at a time.
 		}
 	}
@@ -1450,6 +1459,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 	if(dstsd && !status_isdead(bl) && src != bl && !(skillid && skill_get_nk(skillid)&NK_NO_DAMAGE)) 
 	{
 		struct block_list *tbl;
+		struct unit_data *ud;
 		int i, skillid, skilllv, rate;
 
 		for (i = 0; i < MAX_PC_BONUS; i++) {
@@ -1484,6 +1494,14 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 					skill_castend_damage_id(bl, tbl, skillid, skilllv, tick, 0);
 					break;
 			}
+			//Set canact delay. [Skotlex]
+			ud = unit_bl2ud(bl);
+			if (ud) {
+				rate = skill_delayfix(bl, skillid, skilllv);
+				if (DIFF_TICK(ud->canact_tick, tick + rate) < 0)
+					ud->canact_tick = tick+rate;
+			}
+			break; //trigger only one auto-spell per hit.
 		}
 	}
 	return 0;
@@ -3702,6 +3720,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case SG_MOON_COMFORT:
 	case SG_STAR_COMFORT:
 	case NPC_HALLUCINATION:
+	case HP_ASSUMPTIO:
 		clif_skill_nodamage(src,bl,skillid,skilllv,
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
@@ -3723,7 +3742,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			skill_moonlit(bl, NULL, skilllv); //The knockback must be invoked before starting the effect which places down the map cells. [Skotlex]
 		
 		break;
-	
+/* Was modified to only affect targetted char.	[Skotlex]
 	case HP_ASSUMPTIO:
 		if (flag&1)
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv));
@@ -3736,7 +3755,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			clif_skill_nodamage(src,bl,skillid,skilllv,1);
 		}
 		break;
-
+*/
 	case SM_ENDURE:			/* ƒCƒ“ƒfƒ…ƒA */
 		clif_skill_nodamage(src,bl,skillid,skilllv,
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
@@ -7061,8 +7080,7 @@ int skill_unit_onplace_timer(struct skill_unit *src,struct block_list *bl,unsign
 		break;
 
 	case UNT_GRAVITATION:
-		if (skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0))
-			skill_additional_effect(ss,bl,sg->skill_id,sg->skill_lv,BF_MAGIC,tick);
+		skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0);
 		break;
 	}
 	if (sg->val3 == HW_MAGICPOWER && sc && sc->data[SC_MAGICPOWER].timer < 0 && sc->data[SC_MAGICPOWER].val1 > 0)