From 197d401dc57fd4c02009915816354b2205f17654 Mon Sep 17 00:00:00 2001 From: Michieru Date: Fri, 6 Jun 2014 14:52:16 +0200 Subject: Fix bug 8225 http://hercules.ws/board/tracker/issue-8225-gentle-touch-revitalize/ Complete Sorcerer Elemental Skills. --- src/map/battle.c | 3 +-- src/map/skill.c | 4 ++- src/map/status.c | 79 +++++++++++++++++++++++++++++++++++++------------------- 3 files changed, 57 insertions(+), 29 deletions(-) (limited to 'src/map') diff --git a/src/map/battle.c b/src/map/battle.c index 810bebae9..6d1a98b54 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -2621,8 +2621,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam } } - if(sc->data[SC_ZEPHYR] && - flag&(BF_LONG|BF_SHORT)){ + if( sc->data[SC_ZEPHYR] && ((flag&BF_LONG) || rand()%100 < 10) ) { d->dmg_lv = ATK_BLOCK; return 0; } diff --git a/src/map/skill.c b/src/map/skill.c index cb0f4786f..ddd5cb73e 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2436,6 +2436,8 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr case EL_ROCK_CRUSHER_ATK: case EL_HURRICANE: case EL_HURRICANE_ATK: + case EL_TYPOON_MIS: + case EL_TYPOON_MIS_ATK: case KO_BAKURETSU: case NC_MAGMA_ERUPTION: dmg.dmotion = clif->skill_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,skill_id,-1,5); @@ -8812,7 +8814,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin case SR_GENTLETOUCH_CHANGE: case SR_GENTLETOUCH_REVITALIZE: clif->skill_nodamage(src,bl,skill_id,skill_lv, - sc_start2(src,bl,type,100,skill_lv,src->id,skill->get_time(skill_id,skill_lv))); + sc_start2(src,bl,type,100,skill_lv,bl->id,skill->get_time(skill_id,skill_lv))); break; case SR_FLASHCOMBO: { diff --git a/src/map/status.c b/src/map/status.c index d05341683..a05f50748 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -8830,16 +8830,34 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t case SC_STONE_SHIELD_OPTION: val2 = 100; // Elemental modifier. break; - case SC_CIRCLE_OF_FIRE: - case SC_FIRE_CLOAK: - case SC_WATER_DROP: - case SC_WATER_SCREEN: - case SC_WIND_CURTAIN: - case SC_WIND_STEP: - case SC_STONE_SHIELD: - case SC_SOLID_SKIN: - val2 = 10; - tick_time = 2000; // [GodLesZ] tick time + case SC_TROPIC: + case SC_CHILLY_AIR: + case SC_WILD_STORM: + case SC_UPHEAVAL: + val2 += 10; + case SC_HEATER: + case SC_COOLER: + case SC_BLAST: + case SC_CURSED_SOIL: + val2 += 10; + case SC_PYROTECHNIC: + case SC_AQUAPLAY: + case SC_GUST: + case SC_PETROLOGY: + val2 += 5; + val3 += 9000; + case SC_CIRCLE_OF_FIRE: + case SC_WATER_SCREEN: + case SC_WIND_STEP: + case SC_SOLID_SKIN: + case SC_FIRE_CLOAK: + case SC_WATER_DROP: + case SC_WIND_CURTAIN: + case SC_STONE_SHIELD: + val2 += 5; + val3 += 1000; + val4 = tick; + tick_time = val3; break; case SC_WATER_BARRIER: val2 = 40; // Increasement. Mdef1 ??? @@ -11125,22 +11143,31 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) { } break; - case SC_CIRCLE_OF_FIRE: - case SC_FIRE_CLOAK: - case SC_WATER_DROP: - case SC_WATER_SCREEN: - case SC_WIND_CURTAIN: - case SC_WIND_STEP: - case SC_STONE_SHIELD: - case SC_SOLID_SKIN: - if( !status->charge(bl,0,sce->val2) ){ - struct block_list *s_bl = battle->get_master(bl); - if( s_bl ) - status_change_end(s_bl,type+1,INVALID_TIMER); - status_change_end(bl,type,INVALID_TIMER); - break; - } - sc_timer_next(2000 + tick, status->change_timer, bl->id, data); + case SC_TROPIC: + case SC_CHILLY_AIR: + case SC_WILD_STORM: + case SC_UPHEAVAL: + case SC_HEATER: + case SC_COOLER: + case SC_BLAST: + case SC_CURSED_SOIL: + case SC_PYROTECHNIC: + case SC_AQUAPLAY: + case SC_GUST: + case SC_PETROLOGY: + case SC_CIRCLE_OF_FIRE: + case SC_WATER_SCREEN: + case SC_WIND_STEP: + case SC_SOLID_SKIN: + case SC_FIRE_CLOAK: + case SC_WATER_DROP: + case SC_WIND_CURTAIN: + case SC_STONE_SHIELD: + if(status->charge(bl, 0, sce->val2) && (sce->val4==-1 || (sce->val4-=sce->val3)>=0)) + sc_timer_next(sce->val3 + tick, status->change_timer, bl->id, data); + else + if (bl->type == BL_ELEM) + elemental->change_mode(BL_CAST(BL_ELEM,bl),MAX_ELESKILLTREE); return 0; case SC_STOMACHACHE: -- cgit v1.2.3-70-g09d2