summaryrefslogtreecommitdiff
path: root/src/map/status.c
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-31 16:38:47 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2012-07-31 16:38:47 +0000
commit8b63621196b61b105009b1ca40d208afb825dd7e (patch)
tree97bd12f093853259bd15a2be7373b9e05cd623e5 /src/map/status.c
parent1ce8bd7486059d05b3953d2412dc060f316a9e06 (diff)
downloadhercules-8b63621196b61b105009b1ca40d208afb825dd7e.tar.gz
hercules-8b63621196b61b105009b1ca40d208afb825dd7e.tar.bz2
hercules-8b63621196b61b105009b1ca40d208afb825dd7e.tar.xz
hercules-8b63621196b61b105009b1ca40d208afb825dd7e.zip
Fixed SC_CRYSTALIZE where it stacks with other opt and ignore SC_WARMER.
Fixed weapon check in dual wielding where it doesn't function properly specially in checking with the dual-wield constants. Added some Kagerou/Oboro skills. (KO_KAIHOU,KO_ZENKAI,KO_GENWAKU,KO_IZAYOI) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16539 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/status.c')
-rw-r--r--src/map/status.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 987de30fe..a89253a2d 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -716,6 +716,8 @@ void initChangeTables(void) {
set_sc( KO_MEIKYOUSISUI , SC_MEIKYOUSISUI , SI_MEIKYOUSISUI , SCB_NONE );
set_sc( KO_KYOUGAKU , SC_KYOUGAKU , SI_KYOUGAKU , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
add_sc( KO_JYUSATSU , SC_CURSE );
+ set_sc( KO_ZENKAI , SC_ZENKAI , SI_ZENKAI , SCB_NONE );
+ set_sc( KO_IZAYOI , SC_IZAYOI , SI_IZAYOI , SCB_MATK );
add_sc( MH_STAHL_HORN , SC_STUN );
set_sc( MH_ANGRIFFS_MODUS , SC_ANGRIFFS_MODUS , SI_ANGRIFFS_MODUS , SCB_BATK|SCB_WATK|SCB_DEF|SCB_FLEE );
@@ -4501,7 +4503,9 @@ static unsigned short status_calc_matk(struct block_list *bl, struct status_chan
if(sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3)
matk += 50;
if(sc->data[SC_ODINS_POWER])
- matk += 70;
+ matk += 70;
+ if(sc->data[SC_IZAYOI])
+ matk += 50 * sc->data[SC_IZAYOI]->val1;
return (unsigned short)cap_value(matk,0,USHRT_MAX);
}
@@ -6291,9 +6295,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
case SC_SLEEP:
case SC_STUN:
case SC_FREEZING:
+ case SC_CRYSTALIZE:
if (sc->opt1)
return 0; //Cannot override other opt1 status changes. [Skotlex]
- if((type == SC_FREEZE || type == SC_FREEZING) && sc->data[SC_WARMER])
+ if((type == SC_FREEZE || type == SC_FREEZING || type == SC_CRYSTALIZE) && sc->data[SC_WARMER])
return 0; //Immune to Frozen and Freezing status if under Warmer status. [Jobbie]
break;
@@ -8263,7 +8268,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
val2 = 2*val1 + rand()%val1;
clif_status_change(bl,SI_ACTIVE_MONSTER_TRANSFORM,1,0,1002,0,0); // Temporarily shows Poring need official [malufett]
break;
-
+ case SC_IZAYOI:
+ val2 = tick/1000;
+ tick_time = 1000;
+ break;
default:
if( calc_flag == SCB_NONE && StatusSkillChangeTable[type] == 0 && StatusIconChangeTable[type] == 0 )
{ //Status change with no calc, no icon, and no skill associated...?
@@ -10199,6 +10207,16 @@ int status_change_timer(int tid, unsigned int tick, int id, intptr_t data)
return 0;
}
break;
+ case SC_IZAYOI:
+ case SC_KAGEMUSYA:
+ if( --(sce->val2) > 0 )
+ {
+ if(!status_charge(bl, 0, 1))
+ break;
+ sc_timer_next(1000+tick, status_change_timer, bl->id, data);
+ return 0;
+ }
+ break;
}
// default for all non-handled control paths is to end the status