summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt7
-rw-r--r--db/Changelog.txt2
-rw-r--r--db/mob_skill_db.txt16
-rw-r--r--db/skill_cast_db.txt6
-rw-r--r--db/skill_db.txt5
-rw-r--r--src/map/map.c7
-rw-r--r--src/map/map.h2
-rw-r--r--src/map/skill.c8
-rw-r--r--src/map/skill.h7
-rw-r--r--src/map/status.c10
-rw-r--r--src/map/status.h3
11 files changed, 54 insertions, 19 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 18d448d1e..daf9082a9 100644
--- a/Changelog-Trunk.txt
+++ b/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.
diff --git a/db/Changelog.txt b/db/Changelog.txt
index 3aaa75009..2564c6366 100644
--- a/db/Changelog.txt
+++ b/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
diff --git a/db/mob_skill_db.txt b/db/mob_skill_db.txt
index 9e8de91c3..3e2321aa9 100644
--- a/db/mob_skill_db.txt
+++ b/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,,,,,,
diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt
index 053b37ebf..6018165ca 100644
--- a/db/skill_cast_db.txt
+++ b/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
diff --git a/db/skill_db.txt b/db/skill_db.txt
index 394adbd28..fd4754a2c 100644
--- a/db/skill_db.txt
+++ b/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
diff --git a/src/map/map.c b/src/map/map.c
index acf203615..65e22fe48 100644
--- a/src/map/map.c
+++ b/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);
}
}
diff --git a/src/map/map.h b/src/map/map.h
index 56f71e845..d07871951 100644
--- a/src/map/map.h
+++ b/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
diff --git a/src/map/skill.c b/src/map/skill.c
index bcd25556d..fd9c4b674 100644
--- a/src/map/skill.c
+++ b/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 {
diff --git a/src/map/skill.h b/src/map/skill.h
index e2dbe2dee..b6495538e 100644
--- a/src/map/skill.h
+++ b/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,
*/
diff --git a/src/map/status.c b/src/map/status.c
index 0b89ba5a9..6015837f0 100644
--- a/src/map/status.c
+++ b/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;
}
diff --git a/src/map/status.h b/src/map/status.h
index e6adb62b7..6a3f89004 100644
--- a/src/map/status.h
+++ b/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,