summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-09-13 16:16:08 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-09-13 16:16:08 +0000
commite9e4993f8b4d0a8e427a369ded2cd0a45322aac3 (patch)
tree1bee5d628620b20c894567e79fd5cdef1f133282
parent7f2dbf6889124f31e19074a6bf185a215459e401 (diff)
downloadhercules-e9e4993f8b4d0a8e427a369ded2cd0a45322aac3.tar.gz
hercules-e9e4993f8b4d0a8e427a369ded2cd0a45322aac3.tar.bz2
hercules-e9e4993f8b4d0a8e427a369ded2cd0a45322aac3.tar.xz
hercules-e9e4993f8b4d0a8e427a369ded2cd0a45322aac3.zip
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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16776 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r--db/re/skill_cast_db.txt60
-rw-r--r--src/map/pc.c11
-rw-r--r--src/map/script.c10
-rw-r--r--src/map/skill.c11
-rw-r--r--src/map/status.c12
-rw-r--r--src/map/status.h3
6 files changed, 56 insertions, 51 deletions
diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt
index d5ad33731..e37adc082 100644
--- a/db/re/skill_cast_db.txt
+++ b/db/re/skill_cast_db.txt
@@ -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 =======================
diff --git a/src/map/pc.c b/src/map/pc.c
index a8ccc5c47..ce58ed4b9 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -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
}
diff --git a/src/map/script.c b/src/map/script.c
index c829df26e..36b83215a 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -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;
diff --git a/src/map/skill.c b/src/map/skill.c
index 29500b8b0..7937498ea 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -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);
diff --git a/src/map/status.c b/src/map/status.c
index d6e96e522..585b90fe9 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -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:
diff --git a/src/map/status.h b/src/map/status.h
index 442d59986..8fa812432 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -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;