summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/skill_cast_db.txt2
-rw-r--r--db/re/skill_require_db.txt8
-rw-r--r--src/map/battle.c19
-rw-r--r--src/map/pc.h2
-rw-r--r--src/map/skill.c4
-rw-r--r--src/map/status.c6
6 files changed, 31 insertions, 10 deletions
diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt
index 375455d28..0ac81340a 100644
--- a/db/re/skill_cast_db.txt
+++ b/db/re/skill_cast_db.txt
@@ -1660,7 +1660,7 @@
//-- ALL_GUARDIAN_RECALL
2536,3000,0,0,0,0,300000,0
//-- ALL_ODINS_POWER
-2537,5000,5000,0,60000,0,60000,0
+2537,0,0,0,60000,0,0,0
//==========================================
//===== Rebellion ==========================
diff --git a/db/re/skill_require_db.txt b/db/re/skill_require_db.txt
index 16af38c32..0b9f86efe 100644
--- a/db/re/skill_require_db.txt
+++ b/db/re/skill_require_db.txt
@@ -778,10 +778,10 @@
2461,0,0,50,0,0,0,99,0,0,elementalspirit,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_EL_ACTION#Elemental Action#
2462,0,0,10:20,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_EL_ANALYSIS#Four Spirit Analysis#
2464,0,0,10,0,0,0,99,0,0,elementalspirit,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_EL_CURE#Spirit Recovery#
-2465,0,0,22:30:38,0,0,0,99,0,0,none,0,6360,1:2:3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_FIRE_INSIGNIA#Fire Insignia#
-2466,0,0,22:30:38,0,0,0,99,0,0,none,0,6361,1:2:3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_WATER_INSIGNIA#Water Insignia#
-2467,0,0,22:30:38,0,0,0,99,0,0,none,0,6362,1:2:3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_WIND_INSIGNIA#Wind Insignia#
-2468,0,0,22:30:38,0,0,0,99,0,0,none,0,6363,1:2:3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_EARTH_INSIGNIA#Earth Insignia#
+2465,0,0,22:30:38,0,0,0,99,0,0,none,0,6360,1,6360,2,6360,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_FIRE_INSIGNIA#Fire Insignia#
+2466,0,0,22:30:38,0,0,0,99,0,0,none,0,6361,1,6361,2,6361,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_WATER_INSIGNIA#Water Insignia#
+2467,0,0,22:30:38,0,0,0,99,0,0,none,0,6362,1,6362,2,6362,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_WIND_INSIGNIA#Wind Insignia#
+2468,0,0,22:30:38,0,0,0,99,0,0,none,0,6363,1,6363,2,6363,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //SO_EARTH_INSIGNIA#Earth Insignia#
//****
// GN Genetic
diff --git a/src/map/battle.c b/src/map/battle.c
index e9e17708c..40f3d2482 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -3220,6 +3220,14 @@ int battle_range_type(struct block_list *src, struct block_list *target, uint16
return BF_SHORT;
return BF_LONG;
}
+
+ if (skill_id == SR_GATEOFHELL) {
+ if (skill_lv < 5)
+ return BF_SHORT;
+ else
+ return BF_LONG;
+ }
+
//based on used skill's range
if (skill->get_range2(src, skill_id, skill_lv) < 5)
return BF_SHORT;
@@ -4441,8 +4449,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
if( !sd )
hitrate = cap_value(hitrate, 5, 95);
#endif
- if(rnd()%100 >= hitrate)
+ if(rnd()%100 >= hitrate){
wd.dmg_lv = ATK_FLEE;
+ if (skill_id == SR_GATEOFHELL)
+ flag.hit = 1;/* will hit with the special */
+ }
else
flag.hit = 1;
} //End hit/miss calculation
@@ -4645,6 +4656,12 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list
}
#endif
switch(skill_id){
+ case SR_GATEOFHELL:
+ if (wd.dmg_lv != ATK_FLEE)
+ ATK_RATE(battle->calc_skillratio(BF_WEAPON, src, target, skill_id, skill_lv, skillratio, wflag));
+ else
+ wd.dmg_lv = ATK_DEF;
+ break;
#ifdef RENEWAL
case NJ_TATAMIGAESHI:
ATK_RATE(200);
diff --git a/src/map/pc.h b/src/map/pc.h
index 47bbe9202..255fcdbc4 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -655,7 +655,7 @@ enum equip_pos {
#define pc_leftside_mdef(sd) ((sd)->battle_status.mdef2)
#define pc_rightside_mdef(sd) ((sd)->battle_status.mdef)
#define pc_leftside_matk(sd) (status->base_matk(status->get_status_data(&(sd)->bl), (sd)->status.base_level))
-#define pc_rightside_matk(sd) ((sd)->battle_status.rhw.matk+(sd)->battle_status.lhw.matk+(sd)->bonus.ematk)
+#define pc_rightside_matk(sd) ((sd)->battle_status.rhw.matk+(sd)->battle_status.lhw.matk+(sd)->bonus.ematk+((sd)->battle_status.matk_min-(sd)->base_status.matk_min))
#else
#define pc_leftside_atk(sd) ((sd)->battle_status.batk + (sd)->battle_status.rhw.atk + (sd)->battle_status.lhw.atk)
#define pc_rightside_atk(sd) ((sd)->battle_status.rhw.atk2 + (sd)->battle_status.lhw.atk2)
diff --git a/src/map/skill.c b/src/map/skill.c
index 9f03fcd20..72b59aab7 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -11005,6 +11005,10 @@ struct skill_unit_group* skill_unitsetting(struct block_list *src, uint16 skill_
val1 = skill_lv + 1;
val2 = 1;
case WM_POEMOFNETHERWORLD: // Can't be placed on top of Land Protector.
+ case SO_WATER_INSIGNIA:
+ case SO_FIRE_INSIGNIA:
+ case SO_WIND_INSIGNIA:
+ case SO_EARTH_INSIGNIA:
if( map->getcell(src->m, x, y, CELL_CHKLANDPROTECTOR) )
return NULL;
break;
diff --git a/src/map/status.c b/src/map/status.c
index 6b8282a4e..5dcf35198 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -445,7 +445,7 @@ void initChangeTables(void) {
set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_NONE );
set_sc( ALL_PARTYFLEE , SC_PARTYFLEE , SI_PARTYFLEE , SCB_NONE );
- set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , SI_ODINS_POWER , SCB_MATK|SCB_BATK|SCB_MDEF|SCB_DEF );
+ set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , SI_ODINS_POWER , SCB_WATK | SCB_MATK | SCB_MDEF | SCB_DEF);
set_sc( CR_SHRINK , SC_CR_SHRINK , SI_CR_SHRINK , SCB_NONE );
set_sc( RG_CLOSECONFINE , SC_RG_CCONFINE_S , SI_RG_CCONFINE_S , SCB_NONE );
@@ -4510,8 +4510,6 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc,
batk += batk / 5;
if(sc->data[SC_FULL_SWING_K])
batk += sc->data[SC_FULL_SWING_K]->val1;
- if(sc->data[SC_ODINS_POWER])
- batk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1;
if(sc->data[SC_VOLCANIC_ASH] && (bl->type==BL_MOB)){
if(status_get_element(bl) == ELE_WATER) //water type
batk /= 2;
@@ -4628,6 +4626,8 @@ unsigned short status_calc_watk(struct block_list *bl, struct status_change *sc,
watk -= watk * sc->data[SC__ENERVATION]->val2 / 100;
if(sc->data[SC_RUSH_WINDMILL])
watk += sc->data[SC_RUSH_WINDMILL]->val2;
+ if (sc->data[SC_ODINS_POWER])
+ watk += 40 + 30 * sc->data[SC_ODINS_POWER]->val1;
if((sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 2)
|| (sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 2)
|| (sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 2)