Pārlūkot izejas kodu

* Fixed skill tree entries for Vulcan Arrow, and Throw Arrow
* Fixed damage reflecting
* Fixed Backstab to not have a push back effect
* Fixed auto spell to not taking SP
* Fixed Sanctuary to have proper healing count

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

celest 20 gadi atpakaļ
vecāks
revīzija
1ea4b4dc0c
6 mainītis faili ar 62 papildinājumiem un 59 dzēšanām
  1. 4 0
      Changelog-SVN.txt
  2. 4 0
      db/Changelog.txt
  3. 1 1
      db/skill_db.txt
  4. 3 3
      db/skill_tree.txt
  5. 37 42
      src/map/battle.c
  6. 13 13
      src/map/skill.c

+ 4 - 0
Changelog-SVN.txt

@@ -2,6 +2,10 @@
 Date	Added
 
 04/05
+	* Fixed damage reflecting (silly typo xP) [celest]
+	* Fixed Backstab to not have a push back effect [celest]
+	* Fixed auto spell to not taking SP, thanks to Hekate
+	* Fixed Sanctuary to have proper healing count, thanks to Hekate
 	* Simplified Valaris' online_timer [celest]
 	* Updated Fogwall, Spiderweb, and HP Conversion, thanks to redcard [celest]
 	* Adding saving character online/offline for TXT char and login (unfinished)

+ 4 - 0
db/Changelog.txt

@@ -8,6 +8,10 @@
 	Einbroch items == 5%
 	Skill databases == celest working on them i believe.
 
+04/05
+	* Fixed skill tree entries for Vulcan Arrow, and Throw Arrow for gypsies,
+	  thanks to Hekate
+
 04/04
 	* Removed required skills for Berserk (only job level 50 is needed) [DracoRPG]
 	* Re-added MDEF +15 to Resting Cat [DracoRPG]

+ 1 - 1
db/skill_db.txt

@@ -261,7 +261,7 @@
 //208 193に同じ
 210,0,0,0,0,0,10,0,no,0,0,0,weapon,0	//RG_SNATCHER#スナッ?ャ?#
 211,1,6,1,0,1,10,1,no,0,0,0,weapon,0	//RG_STEALCOIN#スティ?ルコイン#
-212,-1,6,1,0,0,10,1,no,0,0,0,weapon,1	//RG_BACKSTAP#バックス?ブ#
+212,-1,6,1,0,0,10,1,no,0,0,0,weapon,0	//RG_BACKSTAP#バックス?ブ#
 213,0,0,0,0,0,5,0,no,0,0,0,none,0	//RG_TUNNELDRIVE#トンネルドライブ#
 214,0,6,4,0,1,5,1,no,0,0,0,weapon,0	//RG_RAID#サプライズア?ック#
 215,1,6,1,0,1,5,1,no,0,0,0,weapon,0	//RG_STRIPWEAPON#ストリップウェ?ン#

+ 3 - 3
db/skill_tree.txt

@@ -1152,7 +1152,7 @@
 4020,312,1,306,1,0,0,0,0,0,0,0,0//BD_INTOABYSS		#深淵の中に#
 4020,313,5,321,10,0,0,0,0,0,0,0,0//BD_SIEGFRIED		#不死身のジークフリード#
 4020,314,1,312,1,308,1,0,0,0,0,0,0//BD_RAGNAROK		#ラグナロク#
-4020,394,10,0,0,0,0,0,0,0,0,0,0//CG_ARROWVULCAN
+4020,394,10,47,5,316,1,0,0,0,0,0,0//CG_ARROWVULCAN
 4020,395,5,45,5,315,7,0,0,0,0,0,0//CG_MOONLIT
 4020,396,1,45,5,315,5,0,0,0,0,0,0//CG_MARIONETTE
 //Gypsy
@@ -1166,7 +1166,7 @@
 4021,147,1,0,0,0,0,0,0,0,0,0,0//AC_MAKINGARROW	#矢作成#
 4021,148,1,0,0,0,0,0,0,0,0,0,0//AC_CHARGEARROW	#チャージアロー#
 4021,323,10,0,0,0,0,0,0,0,0,0,0//DC_DANCINGLESSON		#ダンスの練習#
-4021,324,5,0,0,0,0,0,0,0,0,0,0//DC_THROWARROW		#矢撃ち#
+4021,324,5,323,3,0,0,0,0,0,0,0,0//DC_THROWARROW		#矢撃ち#
 4021,325,5,323,1,304,1,0,0,0,0,0,0//DC_UGLYDANCE		#自分勝手なダンス#
 4021,326,5,305,1,0,0,0,0,0,0,0,0//DC_SCREAM		#スクリーム#
 4021,327,10,325,3,0,0,0,0,0,0,0,0//DC_HUMMING		#ハミング#
@@ -1184,7 +1184,7 @@
 4021,312,1,306,1,0,0,0,0,0,0,0,0//BD_INTOABYSS		#深淵の中に#
 4021,313,5,329,10,0,0,0,0,0,0,0,0//BD_SIEGFRIED		#不死身のジークフリード#
 4021,314,1,312,1,308,1,0,0,0,0,0,0//BD_RAGNAROK		#ラグナロク#
-4021,394,10,0,0,0,0,0,0,0,0,0,0//CG_ARROWVULCAN
+4021,394,10,47,5,324,1,0,0,0,0,0,0//CG_ARROWVULCAN
 4021,395,5,45,5,323,7,0,0,0,0,0,0//CG_MOONLIT
 4021,396,1,45,5,323,5,0,0,0,0,0,0//CG_MARIONETTE
 // Peco Paladin

+ 37 - 42
src/map/battle.c

@@ -3574,30 +3574,27 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target,
 		}
 		if(sd) {
 			if(sd->autospell_id > 0 && rand()%100 < sd->autospell_rate) {
-				int skilllv=sd->autospell_lv,i,f=0,sp;
+				int skilllv = sd->autospell_lv, i;
 				i = rand()%100;
 				if(i >= 50) skilllv -= 2;
 				else if(i >= 15) skilllv--;
 				if(skilllv < 1) skilllv = 1;
-				sp = skill_get_sp(sd->autospell_id,skilllv)*2/3;
-				if(sd->status.sp >= sp) {
-					if((i=skill_get_inf(sd->autospell_id) == 2) || i == 32)
-						f = skill_castend_pos2(src,target->x,target->y,sd->autospell_id,skilllv,tick,flag);
-					else {
-						switch( skill_get_nk(sd->autospell_id) ) {
-							case 0:	case 2:
-								f = skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag);
-								break;
-							case 1:/* Žx‰‡Œn */
-								if((sd->autospell_id==AL_HEAL || (sd->autospell_id==ALL_RESURRECTION && target->type != BL_PC)) && battle_check_undead(race,ele))
-									f = skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag);
-								else
-									f = skill_castend_nodamage_id(src,target,sd->autospell_id,skilllv,tick,flag);
-								break;
-						}
+				
+				if((i=skill_get_inf(sd->autospell_id) == 2) || i == 32)
+					skill_castend_pos2(src,target->x,target->y,sd->autospell_id,skilllv,tick,flag);
+				else {
+					switch( skill_get_nk(sd->autospell_id) ) {
+						case 0:	case 2:
+							skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag);
+							break;
+						case 1:/* Žx‰‡Œn */
+							if((sd->autospell_id==AL_HEAL || (sd->autospell_id==ALL_RESURRECTION && target->type != BL_PC)) && battle_check_undead(race,ele))
+								skill_castend_damage_id(src,target,sd->autospell_id,skilllv,tick,flag);
+							else
+								skill_castend_nodamage_id(src,target,sd->autospell_id,skilllv,tick,flag);
+							break;
 					}
-					if(!f) pc_heal(sd,0,-sp);
-				}
+				}				
 			}
 			if (wd.flag&BF_WEAPON && src != target && (wd.damage > 0 || wd.damage2 > 0)) {
 				int hp = 0,sp = 0;
@@ -3626,39 +3623,37 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target,
 			struct map_session_data *tsd = (struct map_session_data *)target;
 			if(tsd && ((sd && !sd->state.arrow_atk) || (status_get_range(src)<=2)) &&
 				tsd->autospell2_id > 0 && rand()%100 < tsd->autospell2_rate) {
-				int skilllv = tsd->autospell_lv,i,f=0,sp;
+				struct block_list *tbl;
+				int skilllv = tsd->autospell_lv, i;
 				i = rand()%100;
 				if(i >= 50) skilllv -= 2;
 				else if(i >= 15) skilllv--;
 				if(skilllv < 1) skilllv = 1;
-				sp = skill_get_sp(tsd->autospell2_id,skilllv)*2/3;
-				if(tsd->status.sp >= sp) {
-					struct block_list *tbl;
-					if (tsd->autospell2_type == 0) tbl = target;
-					else tbl = src;
-					if((i=skill_get_inf(tsd->autospell2_id) == 2) || i == 32)
-						f = skill_castend_pos2(target,tbl->x,tbl->y,tsd->autospell2_id,skilllv,tick,flag);
-					else {
-						switch( skill_get_nk(tsd->autospell2_id) ) {
-							case 0:	case 2:
-								f = skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag);
-								break;
-							case 1:/* Žx‰‡Œn */
-								if((tsd->autospell2_id==AL_HEAL || (tsd->autospell2_id==ALL_RESURRECTION && tbl->type != BL_PC)) &&
-									battle_check_undead(status_get_race(tbl),status_get_elem_type(tbl)))
-									f = skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag);
-								else
-									f = skill_castend_nodamage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag);
+				
+				if (tsd->autospell2_type == 0) tbl = target;
+				else tbl = src;
+				if((i=skill_get_inf(tsd->autospell2_id) == 2) || i == 32)
+					skill_castend_pos2(target,tbl->x,tbl->y,tsd->autospell2_id,skilllv,tick,flag);
+				else {
+					switch( skill_get_nk(tsd->autospell2_id) ) {
+						case 0:	case 2:
+							skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag);
+							break;
+						case 1:/* Žx‰‡Œn */
+							if((tsd->autospell2_id==AL_HEAL || (tsd->autospell2_id==ALL_RESURRECTION && tbl->type != BL_PC)) &&
+								battle_check_undead(status_get_race(tbl),status_get_elem_type(tbl)))
+								skill_castend_damage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag);
+							else
+								skill_castend_nodamage_id(target,tbl,tsd->autospell2_id,skilllv,tick,flag);
 								break;
-						}
 					}
-					if(!f) pc_heal(tsd,0,-sp);
-				}
+				}				
 			}
 		}
 
 		if(rdamage > 0)
-			battle_delay_damage(tick+wd.amotion,src,target,rdamage,0);
+			battle_delay_damage(tick+wd.amotion,target,src,rdamage,0);
+
 		if(t_sc_data && t_sc_data[SC_AUTOCOUNTER].timer != -1 && t_sc_data[SC_AUTOCOUNTER].val4 > 0) {
 			if(t_sc_data[SC_AUTOCOUNTER].val3 == src->id)
 				battle_weapon_attack(target,src,tick,0x8000|t_sc_data[SC_AUTOCOUNTER].val1);

+ 13 - 13
src/map/skill.c

@@ -5633,26 +5633,26 @@ int skill_unit_onplace_timer(struct skill_unit *src,struct block_list *bl,unsign
 	switch (sg->unit_id) {
 	case 0x83:	/* サンクチュアリ */
 		{
-			int race=status_get_race(bl);
+			int race = status_get_race(bl);
 
-			if (battle_check_undead(race,status_get_elem_type(bl)) || race==6) {
-				if (skill_attack(BF_MAGIC,ss,&src->bl,bl,sg->skill_id,sg->skill_lv,tick,0)) {
-					// reduce healing count if this was meant for damaging [celest]
-					// sg->val1 /= 2;
-					sg->val1--;	// チャットキャンセルに対応
+			if (battle_check_undead(race, status_get_elem_type(bl)) || race==6) {
+				if (skill_attack(BF_MAGIC, ss, &src->bl, bl, sg->skill_id, sg->skill_lv, tick, 0)) {
+					// reduce healing count if this was meant for damaging [hekate]
+					sg->val1 -= 2;
+					//sg->val1--;	// チャットキャンセルに対応
 				}
 			} else {
 				int heal = sg->val2;
-				if (status_get_hp(bl)>=status_get_max_hp(bl))
+				if (status_get_hp(bl) >= status_get_max_hp(bl))
 					break;
-				if(bl->type==BL_PC && ((struct map_session_data *)bl)->special_state.no_magic_damage)
-					heal=0;	/* 黄金蟲カード(ヒール量0) */
-				clif_skill_nodamage(&src->bl,bl,AL_HEAL,heal,1);
-				battle_heal(NULL,bl,heal,0,0);
-				if (diff>=500)
+				if (bl->type == BL_PC && ((struct map_session_data *)bl)->special_state.no_magic_damage)
+					heal = 0;	/* 黄金蟲カード(ヒール量0) */
+				clif_skill_nodamage(&src->bl, bl, AL_HEAL, heal, 1);
+				battle_heal(NULL, bl, heal, 0, 0);
+				if (diff >= 500)
 					sg->val1--;	// 新規に入ったユニットだけカウント
 			}
-			if (sg->val1<=0)
+			if (sg->val1 <= 0)
 				skill_delunitgroup(sg);
 			break;
 		}