diff options
author | Michieru <Michieru@users.noreply.github.com> | 2014-06-06 14:52:16 +0200 |
---|---|---|
committer | Michieru <Michieru@users.noreply.github.com> | 2014-06-06 14:52:16 +0200 |
commit | 197d401dc57fd4c02009915816354b2205f17654 (patch) | |
tree | c9b3cc517c3d36ce2b10e4909581d414f21a4a5a | |
parent | 17382d380c0476ffc5616d8e34b299c4bc485be7 (diff) | |
download | hercules-197d401dc57fd4c02009915816354b2205f17654.tar.gz hercules-197d401dc57fd4c02009915816354b2205f17654.tar.bz2 hercules-197d401dc57fd4c02009915816354b2205f17654.tar.xz hercules-197d401dc57fd4c02009915816354b2205f17654.zip |
Fix bug 8225
http://hercules.ws/board/tracker/issue-8225-gentle-touch-revitalize/
Complete Sorcerer Elemental Skills.
-rw-r--r-- | db/re/skill_db.txt | 10 | ||||
-rw-r--r-- | db/re/skill_unit_db.txt | 6 | ||||
-rw-r--r-- | src/map/battle.c | 3 | ||||
-rw-r--r-- | src/map/skill.c | 4 | ||||
-rw-r--r-- | src/map/status.c | 79 |
5 files changed, 65 insertions, 37 deletions
diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 0d498fc17..456fa7008 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -1247,15 +1247,15 @@ 8431,9,6,1,1,0,1,1,1,no,0,0,0,magic,0, EL_WATER_SCREW,Water Screw 8432,9,6,1,1,0,1,1,1,no,0,0,0,weapon,0, EL_WATER_SCREW_ATK,Water Screw Attack 8433,9,6,1,1,0,1,1,1,no,0,0,0,weapon,0, EL_TIDAL_WEAPON,Tidal Weapon -8434,11,6,1,4,0,0,1,1,no,0,0,0,weapon,0, EL_WIND_SLASH,Wind Slasher -8435,11,6,1,4,0,1,1,1,no,0,0,0,weapon,0, EL_HURRICANE,Hurricane Rage +8434,11,6,1,4,0,0,1,1,no,0,0,0,weapon,0, EL_WIND_SLASH,Wind Slasher +8435,11,6,1,4,0,1,1,1,no,0,0,0,weapon,0, EL_HURRICANE,Hurricane Rage 8436,7,6,1,4,0,0,1,1,no,0,0,0,magic,0, EL_HURRICANE_ATK,Hurricane Rage Attack -8437,11,8,1,4,0,1,1,-3,no,0,0,0,weapon,0, EL_TYPOON_MIS,Typhoon Missile -8438,11,8,1,4,0,1,1,-3,no,0,0,0,magic,0, EL_TYPOON_MIS_ATK,Typhoon Missile Attack +8437,11,6,1,4,0,1,1,1,no,0,0,0,weapon,0, EL_TYPOON_MIS,Typhoon Missile +8438,11,6,1,4,0,1,1,1,no,0,0,0,magic,0, EL_TYPOON_MIS_ATK,Typhoon Missile Attack 8439,5,6,1,2,0,0,1,1,no,0,0,0,weapon,0, EL_STONE_HAMMER,Stone Hammer 8440,3,6,1,2,0,1,1,1,no,0,0,0,weapon,0, EL_ROCK_CRUSHER,Rock Launcher 8441,5,6,1,2,0,1,1,1,no,0,0,0,magic,0, EL_ROCK_CRUSHER_ATK,Rock Launcher Attack -8442,9,6,1,2,0,1,1,-5,no,0,0,0,weapon,0, EL_STONE_RAIN,Stone Rain +8442,9,6,1,2,0,1,1,-5,no,0,0,0,weapon,0, EL_STONE_RAIN,Stone Rain 10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0, GD_APPROVAL,Official Guild Approval 10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0, GD_KAFRACONTRACT,Kafra Contract diff --git a/db/re/skill_unit_db.txt b/db/re/skill_unit_db.txt index 54f9d7a2c..ed69a46bb 100644 --- a/db/re/skill_unit_db.txt +++ b/db/re/skill_unit_db.txt @@ -178,9 +178,9 @@ 8212,0x97, , 0, 1,1000,enemy, 0x006 //MA_FREEZINGTRAP 8403,0xed, , -1, 1,1000,enemy, 0x018 //EL_FIRE_MANTLE -8406,0xee, , 0, 1, -1,friend,0x018 //EL_WATER_BARRIER -8409,0xef, , 0, 1,1000,friend,0x018 //EL_ZEPHYR -8412,0xf0, , 0, 1, -1,friend,0x018 //EL_POWER_OF_GAIA +8406,0xee, , 0, 1, -1,friend,0x2018 //EL_WATER_BARRIER +8409,0xef, , 0, 1, -1,friend,0x2018 //EL_ZEPHYR +8412,0xf0, , 0, 1, -1,friend,0x2018 //EL_POWER_OF_GAIA 10006,0xc1, , 2, 0, -1,sameguild, 0x040 //GD_LEADERSHIP 10007,0xc2, , 2, 0, -1,sameguild, 0x040 //GD_GLORYWOUNDS 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: |