summaryrefslogtreecommitdiff
path: root/src
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 /src
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
Diffstat (limited to 'src')
-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
5 files changed, 26 insertions, 21 deletions
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;