summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichieru <Michieru@users.noreply.github.com>2014-06-06 14:52:16 +0200
committerMichieru <Michieru@users.noreply.github.com>2014-06-06 14:52:16 +0200
commit197d401dc57fd4c02009915816354b2205f17654 (patch)
treec9b3cc517c3d36ce2b10e4909581d414f21a4a5a
parent17382d380c0476ffc5616d8e34b299c4bc485be7 (diff)
downloadhercules-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.txt10
-rw-r--r--db/re/skill_unit_db.txt6
-rw-r--r--src/map/battle.c3
-rw-r--r--src/map/skill.c4
-rw-r--r--src/map/status.c79
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: