Forráskód Böngészése

more ninja/gs work

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@5572 54d463be-8e91-2dee-dedb-b68131a5f0ec
Vicious 19 éve
szülő
commit
173221b52e
4 módosított fájl, 18 hozzáadás és 10 törlés
  1. 1 1
      db/skill_cast_db.txt
  2. 1 3
      src/map/battle.c
  3. 3 3
      src/map/skill.c
  4. 13 3
      src/map/status.c

+ 1 - 1
db/skill_cast_db.txt

@@ -861,7 +861,7 @@
 //-- NJ_TATAMIGAESHI
 527,0,0,0,0,0
 //-- NJ_KASUMIKIRI
-528,0,0,0,0,0
+528,0,0,0,30000:60000:90000:120000:150000:180000:210000:240000:270000:300000,0
 //-- NJ_SHADOWJUMP
 529,0,0,0,0,0
 //-- NJ_KIRIKAGE

+ 1 - 3
src/map/battle.c

@@ -2280,9 +2280,7 @@ static struct Damage battle_calc_weapon_attack(
 				damage_div_fix(wd.damage, wd.div_);
 				wd.type = 0x08;
 			}
-		} else if (( (skill_lv = 5*pc_checkskill(sd,GS_CHAINACTION)) > 0 &&
-			(sd->weapontype1 == 0x11 || sd->weapontype1 == 0x12 || sd->weapontype1 == 0x13
-			|| sd->weapontype1 == 0x14 || sd->weapontype1 == 0x15)) || sd->double_rate > 0) // Copied double attack
+		} else if (( (skill_lv = 5*pc_checkskill(sd,GS_CHAINACTION)) > 0 && sd->weapontype1 == 0x11) || sd->double_rate > 0)
 			if (rand()%100 < (skill_lv>sd->double_rate?skill_lv:sd->double_rate))
 			{
 				wd.div_=skill_get_num(GS_CHAINACTION,skill_lv?skill_lv:1);

+ 3 - 3
src/map/skill.c

@@ -3133,7 +3133,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl,int s
 		break;
 	case NJ_KASUMIKIRI:
 		skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
-		sc_start(bl,SC_HIDING,100,skilllv,skill_get_time(skillid,skilllv));
+		sc_start(src,SC_HIDING,100,skilllv,skill_get_time(skillid,skilllv));
 		break;
 	case NJ_KIRIKAGE:
 		status_change_end(src, SC_HIDING, -1);	// ƒnƒCƒfƒBƒ“ƒO‰ð?œ
@@ -8191,7 +8191,7 @@ int skill_check_condition(struct map_session_data *sd,int type)
 		}
 		break;
 	case GS_ADJUSTMENT:
-		if(sd->spiritball < 2 || sd->sc.data[SC_MADNESSCANCEL].timer == -1) {
+		if(sd->spiritball < 2 || sd->sc.data[SC_MADNESSCANCEL].timer != -1) {
 			clif_skill_fail(sd,skill,0,0);
 			return 0;
 		}
@@ -8216,7 +8216,7 @@ int skill_check_condition(struct map_session_data *sd,int type)
 	case GS_GROUNDDRIFT:
 	case NJ_SYURIKEN:
 	case NJ_KUNAI:
-	case NJ_HUUMA:
+	//case NJ_HUUMA:
 		arrow_flag = 1;
 		if(sd->equip_index[10] < 0) {
 			clif_arrow_fail(sd,0);

+ 13 - 3
src/map/status.c

@@ -1713,7 +1713,7 @@ int status_calc_agi(struct block_list *bl, int agi)
 			agi += sc->data[SC_INCAGI].val1;
 		if(sc->data[SC_AGIFOOD].timer!=-1)
 			agi += sc->data[SC_AGIFOOD].val1;
-  		if(sc->data[SC_TRUESIGHT].timer!=-1)
+		if(sc->data[SC_TRUESIGHT].timer!=-1)
 			agi += 5;
 		if(sc->data[SC_INCREASEAGI].timer!=-1)
 			agi += 2 + sc->data[SC_INCREASEAGI].val1;
@@ -1721,8 +1721,14 @@ int status_calc_agi(struct block_list *bl, int agi)
 			agi -= 2 + sc->data[SC_DECREASEAGI].val1;
 		if(sc->data[SC_QUAGMIRE].timer!=-1)
 			agi -= sc->data[SC_QUAGMIRE].val1*(bl->type==BL_PC?5:10);
-		if(sc->data[SC_SUITON].timer!=-1 || status_get_class(bl) != JOB_NINJA)
-			agi -= (((sc->data[SC_SUITON].val1 - 1) / 3) + 1) * 3;
+		if(sc->data[SC_SUITON].timer!=-1 && status_get_class(bl) != JOB_NINJA)
+			if (sc->data[SC_SUITON].val1 > 7)
+				agi -= 8;
+			else if (sc->data[SC_SUITON].val1 > 4)
+				agi -= 5;
+			else if (sc->data[SC_SUITON].val1 > 1)
+				agi -= 3;
+			
 	}
 
 	return agi;
@@ -1957,6 +1963,10 @@ int status_calc_hit(struct block_list *bl, int hit)
 			hit += hit * sc->data[SC_INCHITRATE].val1/100;
 		if(sc->data[SC_BLIND].timer != -1)
 			hit -= hit * 25 / 100;
+		if(sc->data[SC_ADJUSTMENT].timer!=-1)
+			hit += 30;
+		if(sc->data[SC_INCREASING].timer!=-1)
+  		hit += 50; // RockmanEXE
 	}
 
 	return hit;