Follow up r16738 MO_ETREMITYFIST renewal behavior.

Fixed bugreport:6580 where SC_MANHOLE targets can use items.
Fixed bugreport:6636 a typo formula in WL_WHITEIMPRISON.
Fixed bugreport:6685 a missing column in skill_cast_db.txt for WL_COMET entry.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16776 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
rud0lp20 2012-09-13 16:16:08 +00:00
parent d974f37145
commit 5db62f5c84
6 changed files with 56 additions and 51 deletions

View File

@ -411,7 +411,7 @@
//-- MO_EXPLOSIONSPIRITS
270,0,0,0,180000,0,0,0
//-- MO_EXTREMITYFIST
271,4000:3500:3000:2500:2000,3000:2500:2000:1500:1000,0,0,300000,0,0
271,4000:3500:3000:2500:2000,3000:2500:2000:1500:1000,0,10000,300000,0,0
//-- MO_CHAINCOMBO
272,0,1000,0,0,0,0,0
//-- MO_COMBOFINISH
@ -1211,7 +1211,7 @@
//-- WL_HELLINFERNO
2212,3000,1000,0,15000,0,0,1000
//-- WL_COMET
2213,10000:11000:12000:13000:14000,0,15000,0,60000,1000:1500:2000:2500:3000
2213,10000:11000:12000:13000:14000,0,0,15000,0,60000,1000:1500:2000:2500:3000
//-- WL_CHAINLIGHTNING
2214,3500:4000:4500:5000:5500,0,0,100,0,3000,1000
@ -1837,61 +1837,61 @@
//===== Elemental Skills =======================
//-- EL_CIRCLE_OF_FIRE
8401,0,0,0,-1,0,0
8401,0,0,0,-1,0,0,-1
//-- EL_FIRE_CLOAK
8402,0,0,0,-1,0,0
8402,0,0,0,-1,0,0,-1
//-- EL_FIRE_MANTLE
8403,0,0,0,15000,0,0
8403,0,0,0,15000,0,0,-1
//-- EL_WATER_SCREEN
8404,0,0,0,-1,0,0
8404,0,0,0,-1,0,0,-1
//-- EL_WATER_DROP
8405,0,0,0,-1,0,0
8405,0,0,0,-1,0,0,-1
//-- EL_WATER_BARRIER
8406,1000,0,0,15000,0,0
8406,1000,0,0,15000,0,0,-1
//-- EL_WIND_STEP
8407,0,0,0,-1,0,0
8407,0,0,0,-1,0,0,-1
//-- EL_WIND_CURTAIN
8408,0,0,0,-1,0,0
8408,0,0,0,-1,0,0,-1
//-- EL_ZEPHYR
8409,0,0,0,15000,0,0
8409,0,0,0,15000,0,0,-1
//-- EL_STONE_SHIELD
8411,0,0,0,-1,0,0
8411,0,0,0,-1,0,0,-1
//-- EL_POWER_OF_GAIA
8412,0,0,0,15000,0,0
8412,0,0,0,15000,0,0,-1
//-- EL_PYROTECHNIC
8413,0,0,0,-1,0,0
8413,0,0,0,-1,0,0,-1
//-- EL_HEATER
8414,0,0,0,-1,0,0
8414,0,0,0,-1,0,0,-1
//-- EL_TROPIC
8415,0,0,0,-1,0,0
8415,0,0,0,-1,0,0,-1
//-- EL_AQUAPLAY
8416,0,0,0,-1,0,0
8416,0,0,0,-1,0,0,-1
//-- EL_COOLER
8417,0,0,0,-1,0,0
8417,0,0,0,-1,0,0,-1
//-- EL_CHILLY_AIR
8418,0,0,0,-1,0,0
8418,0,0,0,-1,0,0,-1
//-- EL_GUST
8419,0,0,0,-1,0,0
8419,0,0,0,-1,0,0,-1
//-- EL_BLAST
8420,0,0,0,-1,0,0
8420,0,0,0,-1,0,0,-1
//-- EL_WILD_STORM
8421,0,0,0,-1,0,0
8421,0,0,0,-1,0,0,-1
//-- EL_PETROLOGY
8422,0,0,0,-1,0,0
8422,0,0,0,-1,0,0,-1
//-- EL_CURSED_SOIL
8423,0,0,0,-1,0,0
8423,0,0,0,-1,0,0,-1
//-- EL_UPHEAVAL
8424,0,0,0,-1,0,0
8424,0,0,0,-1,0,0,-1
//-- EL_TIDAL_WEAPON
8433,0,0,0,-1,0,0
8433,0,0,0,-1,0,0,-1
//-- EL_TYPOON_MIS
8437,0,0,0,15000,0,0
8437,0,0,0,15000,0,0,-1
//-- EL_STONE_HAMMER
8439,0,0,0,5000,0,0
8439,0,0,0,5000,0,0,-1
//-- EL_ROCK_CRUSHER
8440,0,0,0,15000,0,0
8440,0,0,0,15000,0,0,-1
//-- EL_ROCK_CRUSHER_ATK
8441,0,0,0,15000,0,0
8441,0,0,0,15000,0,0,-1
//==========================================
//===== Guild Skills =======================

View File

@ -4145,6 +4145,7 @@ int pc_useitem(struct map_session_data *sd,int n)
sd->sc.data[SC_TRICKDEAD] ||
sd->sc.data[SC_HIDING] ||
sd->sc.data[SC__SHADOWFORM] ||
sd->sc.data[SC__MANHOLE] ||
sd->sc.data[SC_KAGEHUMI] ||
(sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM)
))
@ -6957,14 +6958,8 @@ int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
sp += sp / 10;
}
#ifdef RENEWAL
if( sd->sc.data[SC_EXTREMITYFIST] ){
const struct TimerData *timer;
int tick = skill_get_time2(MO_EXTREMITYFIST, sd->sc.data[SC_EXTREMITYFIST]->val1);
timer = get_timer(sd->sc.data[SC_EXTREMITYFIST]->timer);
if( DIFF_TICK(tick, DIFF_TICK(timer->tick, gettick())) < 10000 )// 10 sec
sp = 0;
}
if( sd->sc.data[SC_EXTREMITYFIST2] )
sp = 0;
#endif
}

View File

@ -5351,14 +5351,8 @@ BUILDIN_FUNC(percentheal)
if( sd == NULL )
return 0;
#ifdef RENEWAL
if( sd->sc.data[SC_EXTREMITYFIST] ){
const struct TimerData *timer;
int tick = skill_get_time2(MO_EXTREMITYFIST, sd->sc.data[SC_EXTREMITYFIST]->val1);
timer = get_timer(sd->sc.data[SC_EXTREMITYFIST]->timer);
if( DIFF_TICK(tick, DIFF_TICK(timer->tick, gettick())) < 10000 )// 10 sec
sp = 0;
}
if( sd->sc.data[SC_EXTREMITYFIST2] )
sp = 0;
#endif
pc_percentheal(sd,hp,sp);
return 0;

View File

@ -1700,7 +1700,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
switch(skillid){
case MO_EXTREMITYFIST:
sc_start(src,status_skill2sc(skillid),100,skilllv,skill_get_time2(skillid,skilllv));
sc_start(src,SC_EXTREMITYFIST,100,skilllv,skill_get_time2(skillid,skilllv));
break;
case GS_FULLBUSTER:
sc_start(src,SC_BLIND,2*skilllv,skilllv,skill_get_time2(skillid,skilllv));
@ -3634,6 +3634,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
{
status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
#ifdef RENEWAL
sc_start(src,SC_EXTREMITYFIST2,100,skilllv,skill_get_time(skillid,skilllv));
#endif
}
//Client expects you to move to target regardless of distance
{
@ -17497,7 +17500,11 @@ static void skill_readdb(void)
sv_readdb(db_path, DBPATH"skill_db.txt" , ',', 17, 17, MAX_SKILL_DB, skill_parse_row_skilldb);
sv_readdb(db_path, DBPATH"skill_require_db.txt" , ',', 32, 32, MAX_SKILL_DB, skill_parse_row_requiredb);
sv_readdb(db_path, DBPATH"skill_cast_db.txt" , ',', 7, 8, MAX_SKILL_DB, skill_parse_row_castdb);
#ifdef RENEWAL
sv_readdb(db_path, "re/skill_cast_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill_parse_row_castdb);
#else
sv_readdb(db_path, "re-pre/skill_cast_db.txt" , ',', 7, 7, MAX_SKILL_DB, skill_parse_row_castdb);
#endif
sv_readdb(db_path, DBPATH"skill_castnodex_db.txt", ',', 2, 3, MAX_SKILL_DB, skill_parse_row_castnodexdb);
sv_readdb(db_path, DBPATH"skill_unit_db.txt" , ',', 8, 8, MAX_SKILL_DB, skill_parse_row_unitdb);

View File

@ -312,7 +312,10 @@ void initChangeTables(void) {
add_sc( MO_BLADESTOP , SC_BLADESTOP_WAIT );
add_sc( MO_BLADESTOP , SC_BLADESTOP );
set_sc( MO_EXPLOSIONSPIRITS , SC_EXPLOSIONSPIRITS, SI_EXPLOSIONSPIRITS, SCB_CRI|SCB_REGEN );
set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , SI_EXTREMITYFIST , SCB_REGEN );
set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , SI_BLANK , SCB_REGEN );
#ifdef RENEWAL
set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST2 , SI_EXTREMITYFIST , SCB_NONE );
#endif
add_sc( SA_MAGICROD , SC_MAGICROD );
set_sc( SA_AUTOSPELL , SC_AUTOSPELL , SI_AUTOSPELL , SCB_NONE );
set_sc( SA_FLAMELAUNCHER , SC_FIREWEAPON , SI_FIREWEAPON , SCB_ATK_ELE );
@ -6079,8 +6082,11 @@ int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int ti
rate -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100; // Lineal Reduction of Rate
break;
case SC_WHITEIMPRISON:
rate -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100;
if( tick != 5000) // not applied on caster
if( tick == 5000 ) // 100% on caster
break;
if( bl->type == BL_PC )
tick -= (status_get_lv(bl) / 5 + status->vit / 4 + status->agi / 10)*100;
else
tick -= (status->vit + status->luk) / 20 * 1000;
break;
case SC_BURNING:

View File

@ -635,6 +635,9 @@ typedef enum sc_type {
SC_ZANGETSU,
SC_GENSOU,
SC_AKAITSUKI,
#ifdef RENEWAL
SC_EXTREMITYFIST2,
#endif
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
} sc_type;