From 2f526028369f0fb0148ced3d9d6d6b970307421d Mon Sep 17 00:00:00 2001 From: L0ne_W0lf Date: Thu, 4 Jun 2009 22:46:14 +0000 Subject: * 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13843 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 7 +++++++ db/Changelog.txt | 2 ++ db/mob_skill_db.txt | 16 ++++++++-------- db/skill_cast_db.txt | 6 ++++++ db/skill_db.txt | 5 +++-- src/map/map.c | 7 +++++++ src/map/map.h | 2 +- src/map/skill.c | 8 +++++++- src/map/skill.h | 7 ++++--- src/map/status.c | 10 +++++++--- src/map/status.h | 3 ++- 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, -- cgit v1.2.3-70-g09d2