Bladeren bron

* Updates to ST_PRESERVE and a few other minor details!
- Recasting Preserve no longer toggles the skill off while active.
- Preserve is no longer saved on log-out or mapserver changes.
* Added SC_CRITICALWOUND and SC_SLOWCAST to negative statuses not saved with battle_config.debuff_on_logout&1
* Implemented the skills NPC_HELLPOWER and NPC_WIDEHELLDIGNITY, as per my personal experiences with the skill on iRO.
* Increased MAX_MOBSKILLS to 50, as Satan Morroc has over 40 active skills now.
* Added skill information for NPC_HELLPOWER and NPC_WIDEHELLDIGNITY, and enabled skills in mob_skill_db.

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

L0ne_W0lf 16 jaren geleden
bovenliggende
commit
7807036efd
11 gewijzigde bestanden met toevoegingen van 54 en 19 verwijderingen
  1. 7 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 8 8
      db/mob_skill_db.txt
  4. 6 0
      db/skill_cast_db.txt
  5. 3 2
      db/skill_db.txt
  6. 7 0
      src/map/map.c
  7. 1 1
      src/map/map.h
  8. 7 1
      src/map/skill.c
  9. 4 3
      src/map/skill.h
  10. 7 3
      src/map/status.c
  11. 2 1
      src/map/status.h

+ 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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+09/06/04
+	* Rev. 13843 Updates to ST_PRESERVE and a few other minor details! [L0ne_W0lf]
+	- Recasting Preserve no longer toggles the skill off while active.
+	- Preserve is no longer saved on log-out or mapserver changes.
+	* Added SC_CRITICALWOUND and SC_SLOWCAST to negative statuses not saved with battle_config.debuff_on_logout&1
+	* Implemented the skills NPC_HELLPOWER and NPC_WIDEHELLDIGNITY, as per my personal experiences with the skill on iRO.
+	* Increased MAX_MOBSKILL to 50, as Satan Morroc has over 40 active skills now.
 09/06/03
 	* Some clean ups on autocast and itemskill code. (see topic:220921 for some info) [Inkfish]
 	- Autocasted Teleport now skips the menu.

+ 2 - 0
db/Changelog.txt

@@ -37,6 +37,8 @@
 	2385 Recuvative_Armor		Should trigger HP/SP return with magical kills as well.
 
 =======================
+2009/06/04
+	* Rev. 13843 Added skill information for NPC_HELLPOWER and NPC_WIDEHELLDIGNITY, and enabled skills in mob_skill_db. [L0ne_W0lf]
 2009/06/03
 	* Rev. 13842 Fixed Party Assumptio scroll casting level 10 assumptio. [L0ne_W0lf]
 2009/06/02

+ 8 - 8
db/mob_skill_db.txt

@@ -4723,8 +4723,8 @@
 1916,Satan Morroc@NPC_DRAGONFEAR,attack,659,10,10000,0,600000,yes,self,myhpltmaxrate,5,,,,,,
 //1916,Satan Morroc@NPC_TALK,chase,682,10,10000,0,600000,yes,self,myhpltmaxrate,10,,,,,,
 //1916,Satan Morroc@NPC_TALK,attack,682,10,10000,0,600000,yes,self,myhpltmaxrate,10,,,,,,
-//1916,Satan Morroc@NPC_WIDEHELLDIGNITY,chase,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
-//1916,Satan Morroc@NPC_WIDEHELLDIGNITY,attack,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
+1916,Satan Morroc@NPC_WIDEHELLDIGNITY,chase,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
+1916,Satan Morroc@NPC_WIDEHELLDIGNITY,attack,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
 1916,Satan Morroc@NPC_WIDESTUN,chase,678,5,10000,1300,180000,no,self,myhpltmaxrate,30,,,,,,
 1916,Satan Morroc@NPC_WIDESTUN,attack,678,5,10000,1300,180000,no,self,myhpltmaxrate,30,,,,,,
 1916,Satan Morroc@NPC_EARTHQUAKE,chase,653,10,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
@@ -4743,8 +4743,8 @@
 1916,Satan Morroc@NPC_EVILLAND,attack,670,10,10000,1000,50000,no,target,myhpltmaxrate,50,,,,,,
 1916,Satan Morroc@NPC_WIDESLEEP,chase,668,5,10000,700,35000,no,self,myhpltmaxrate,60,,,,,,
 1916,Satan Morroc@NPC_WIDESLEEP,attack,668,5,10000,700,35000,no,self,myhpltmaxrate,60,,,,,,
-//1916,Satan Morroc@NPC_HELLPOWER,chase,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
-//1916,Satan Morroc@NPC_HELLPOWER,attack,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
+1916,Satan Morroc@NPC_HELLPOWER,chase,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
+1916,Satan Morroc@NPC_HELLPOWER,attack,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
 1916,Satan Morroc@NPC_HELLJUDGEMENT,chase,662,5,10000,800,35000,no,self,myhpltmaxrate,60,,,,,,
 1916,Satan Morroc@NPC_HELLJUDGEMENT,attack,662,5,10000,800,35000,no,self,myhpltmaxrate,60,,,,,,
 1916,Satan Morroc@MG_STONECURSE,chase,16,10,10000,1000,20000,no,target,myhpltmaxrate,80,,,,,,
@@ -4772,8 +4772,8 @@
 1917,Wounded Morroc@NPC_DRAGONFEAR,attack,659,10,10000,0,600000,yes,self,myhpltmaxrate,5,,,,,,
 //1917,Wounded Morroc@NPC_TALK,chase,682,10,10000,0,600000,yes,self,myhpltmaxrate,10,,,,,,
 //1917,Wounded Morroc@NPC_TALK,attack,682,10,10000,0,600000,yes,self,myhpltmaxrate,10,,,,,,
-//1917,Wounded Morroc@NPC_WIDEHELLDIGNITY,chase,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
-//1917,Wounded Morroc@NPC_WIDEHELLDIGNITY,attack,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
+1917,Wounded Morroc@NPC_WIDEHELLDIGNITY,chase,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
+1917,Wounded Morroc@NPC_WIDEHELLDIGNITY,attack,684,1,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
 1917,Wounded Morroc@NPC_WIDESTUN,chase,678,5,10000,1300,180000,no,self,myhpltmaxrate,30,,,,,,
 1917,Wounded Morroc@NPC_WIDESTUN,attack,678,5,10000,1300,180000,no,self,myhpltmaxrate,30,,,,,,
 1917,Wounded Morroc@NPC_EARTHQUAKE,chase,653,10,10000,2000,180000,no,self,myhpltmaxrate,30,,,,,,
@@ -4792,8 +4792,8 @@
 1917,Wounded Morroc@NPC_EVILLAND,attack,670,10,10000,1000,50000,no,target,myhpltmaxrate,50,,,,,,
 1917,Wounded Morroc@NPC_WIDESLEEP,chase,668,5,10000,700,35000,no,self,myhpltmaxrate,60,,,,,,
 1917,Wounded Morroc@NPC_WIDESLEEP,attack,668,5,10000,700,35000,no,self,myhpltmaxrate,60,,,,,,
-//1917,Wounded Morroc@NPC_HELLPOWER,chase,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
-//1917,Wounded Morroc@NPC_HELLPOWER,attack,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
+1917,Wounded Morroc@NPC_HELLPOWER,chase,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
+1917,Wounded Morroc@NPC_HELLPOWER,attack,683,1,10000,800,35000,no,target,myhpltmaxrate,60,,,,,,
 1917,Wounded Morroc@NPC_HELLJUDGEMENT,chase,662,5,10000,800,35000,no,self,myhpltmaxrate,60,,,,,,
 1917,Wounded Morroc@NPC_HELLJUDGEMENT,attack,662,5,10000,800,35000,no,self,myhpltmaxrate,60,,,,,,
 1917,Wounded Morroc@MG_STONECURSE,chase,16,10,10000,1000,20000,no,target,myhpltmaxrate,80,,,,,,

+ 6 - 0
db/skill_cast_db.txt

@@ -970,6 +970,12 @@
 678,0,0,0,0,5000
 //==========================================
 
+//===== New Monster Skills (12.1) ==========
+//-- NPC_HELLPOWER
+683,0,0,0,0,300000
+//-- NPC_WIDEHELLDIGNITY
+684,0,0,0,0,300000
+
 //===== Item Use-Only Skills ===============
 //-- CASH_BLESSING
 689,0,0,0,60000:80000:100000:120000:140000:160000:180000:200000:220000:240000,0

+ 3 - 2
db/skill_db.txt

@@ -1,4 +1,5 @@
 //id,range,hit,inf,element,nk,splash,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count,name,description
+//id,range,hit,inf,element,nk,splash,max,list_num,castcancel,cast_defence_rate,inf2,maxcount,skill_type,blow_count,name,description
 // 01 ID
 // 02 range (combo skills do not check for range when used,
 //           if range is < 5, the skill is considered melee-range)
@@ -622,8 +623,8 @@
 
 // Additional NPC skill (Episode 12)
 //682,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		NPC_TALK,Talk
-//683,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		NPC_HELLPOWER,Hell Power
-//684,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		NPC_WIDEHELLDIGNITY,Hell Dignity
+683,-9,6,1,-1,0,0,1,1,no,0,0x2,0,none,0,		NPC_HELLPOWER,Hell Power
+684,0,6,4,0,0x3,-1,1,1,no,0,0x2,0,none,0,		NPC_WIDEHELLDIGNITY,Hell Dignity
 //685,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		NPC_INVINCIBLE,Incinvible
 //686,0,0,0,0,0,0,9,0,no,0,0,0,none,0,		NPC_INVINCIBLEOFF,Invincible off
 687,0,6,4,0,0x1,0,1,1,yes,0,0x2,0,none,0,	NPC_ALLHEAL,Full Heal

+ 7 - 0
src/map/map.c

@@ -1559,6 +1559,11 @@ int map_quit(struct map_session_data *sd)
 			//TO-DO Probably there are way more NPC_type negative status that are removed
 			if(sd->sc.data[SC_CHANGEUNDEAD])
 				status_change_end(&sd->bl,SC_CHANGEUNDEAD,-1);
+			// Both these statuses are removed on logout. [L0ne_W0lf]
+			if(sd->sc.data[SC_SLOWCAST])
+				status_change_end(&sd->bl,SC_SLOWCAST,-1);
+			if(sd->sc.data[SC_CRITICALWOUND])
+				status_change_end(&sd->bl,SC_CRITICALWOUND,-1);
 		}
 		if (battle_config.debuff_on_logout&2)
 		{
@@ -1568,6 +1573,8 @@ int map_quit(struct map_session_data *sd)
 				status_change_end(&sd->bl,SC_MAXOVERTHRUST,-1);
 			if(sd->sc.data[SC_STEELBODY])
 				status_change_end(&sd->bl,SC_STEELBODY,-1);
+			if(sd->sc.data[SC_PRESERVE])
+				status_change_end(&sd->bl,SC_PRESERVE,-1);
 		}
 	}
 	

+ 1 - 1
src/map/map.h

@@ -33,7 +33,7 @@ struct item_data;
 #define AREA_SIZE battle_config.area_size
 #define DAMAGELOG_SIZE 30
 #define LOOTITEM_SIZE 10
-#define MAX_MOBSKILL 40
+#define MAX_MOBSKILL 50
 #define MAX_MOB_LIST_PER_MAP 128
 #define MAX_EVENTQUEUE 2
 #define MAX_EVENTTIMER 32

+ 7 - 1
src/map/skill.c

@@ -786,6 +786,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 	case NPC_POISON:
 	case NPC_SILENCEATTACK:
 	case NPC_STUNATTACK:
+	case NPC_HELLPOWER:
 		sc_start(bl,status_skill2sc(skillid),50+10*skilllv,skilllv,skill_get_time2(skillid,skilllv));
 		break;
 	case NPC_ACIDBREATH:
@@ -2555,6 +2556,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
 	case HFLI_SBR44:	//[orn]
 	case NPC_BLEEDING:
 	case NPC_CRITICALWOUND:
+	case NPC_HELLPOWER:
 		skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
 		break;
 
@@ -3252,6 +3254,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 			break;
 		{
 			int per = 0, sper = 0;
+			if (status_get_sc(bl)->data[SC_HELLPOWER])
+				break;
+
 			if (map[bl->m].flag.pvp && dstsd && dstsd->pvp_point < 0)
 				break;
 
@@ -3635,6 +3640,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case NJ_NEN:
 	case NPC_DEFENDER:
 	case NPC_MAGICMIRROR:
+	case ST_PRESERVE:
 		clif_skill_nodamage(src,bl,skillid,skilllv,
 			sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv)));
 		break;
@@ -4064,7 +4070,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case TK_READYCOUNTER:
 	case TK_DODGE:
 	case CR_SHRINK:
-	case ST_PRESERVE:
 	case SG_FUSION:
 	case GS_GATLINGFEVER:
 		if( tsce )
@@ -5607,6 +5612,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 	case NPC_WIDESTONE:
 	case NPC_WIDESTUN:
 	case NPC_SLOWCAST:
+	case NPC_WIDEHELLDIGNITY:
 		if (flag&1)
 			sc_start(bl,type,100,skilllv,skill_get_time2(skillid,skilllv));
 		else {

+ 4 - 3
src/map/skill.h

@@ -973,10 +973,11 @@ enum e_skill {
 	NPC_WIDESOULDRAIN,
 
 	ALL_INCCARRY = 681,
-	/*
-	NPC_TALK = 682,
-	NPC_HELLPOWER,	
+
+	//NPC_TALK = 682,
+	NPC_HELLPOWER = 683,
 	NPC_WIDEHELLDIGNITY,
+	/*
 	NPC_INVINCIBLE,
 	NPC_INVINCIBLEOFF,
 	*/

+ 7 - 3
src/map/status.c

@@ -386,9 +386,12 @@ void initChangeTables(void)
 	add_sc( NPC_WIDECURSE        , SC_CURSE           );
 	add_sc( NPC_WIDESTUN         , SC_STUN            );
 
-	set_sc( CASH_BLESSING          , SC_BLESSING        , SI_BLESSING        , SCB_STR|SCB_INT|SCB_DEX );
-	set_sc( CASH_INCAGI            , SC_INCREASEAGI     , SI_INCREASEAGI     , SCB_AGI|SCB_SPEED );
-	set_sc( CASH_ASSUMPTIO         , SC_ASSUMPTIO       , SI_ASSUMPTIO       , SCB_NONE );
+	set_sc( NPC_HELLPOWER        , SC_HELLPOWER       , SI_HELLPOWER       , SCB_NONE );
+	set_sc( NPC_WIDEHELLDIGNITY  , SC_HELLPOWER       , SI_HELLPOWER       , SCB_NONE );
+
+	set_sc( CASH_BLESSING        , SC_BLESSING        , SI_BLESSING        , SCB_STR|SCB_INT|SCB_DEX );
+	set_sc( CASH_INCAGI          , SC_INCREASEAGI     , SI_INCREASEAGI     , SCB_AGI|SCB_SPEED );
+	set_sc( CASH_ASSUMPTIO       , SC_ASSUMPTIO       , SI_ASSUMPTIO       , SCB_NONE );
 
 	set_sc( CR_SHRINK            , SC_SHRINK          , SI_SHRINK          , SCB_NONE );
 	set_sc( RG_CLOSECONFINE      , SC_CLOSECONFINE2   , SI_CLOSECONFINE2   , SCB_NONE );
@@ -6228,6 +6231,7 @@ int status_change_clear(struct block_list* bl, int type)
 		case SC_JAILED:
 		case SC_EXPBOOST:
 		case SC_ITEMBOOST:
+		case SC_HELLPOWER:
 			continue;
 		}
 

+ 2 - 1
src/map/status.h

@@ -312,6 +312,7 @@ typedef enum sc_type {
 	SC_ITEMSCRIPT,
 	SC_S_LIFEPOTION,
 	SC_L_LIFEPOTION,
+	SC_HELLPOWER,
 
 	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
 } sc_type;
@@ -623,7 +624,7 @@ enum si_type {
 	SI_TARGET_BLOOD = 301,
 	SI_ARMOR_PROPERTY = 302,
 //	SI_REUSE_LIMIT_A = 303,
-//	SI_HELLPOWER = 304,
+	SI_HELLPOWER = 304,
 //	SI_STEAMPACK = 305,
 //	SI_REUSE_LIMIT_B = 306,
 //	SI_REUSE_LIMIT_C = 307,