summaryrefslogtreecommitdiff
path: root/src/map/battle.c
diff options
context:
space:
mode:
authorrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2013-01-16 14:45:42 +0000
committerrud0lp20 <rud0lp20@54d463be-8e91-2dee-dedb-b68131a5f0ec>2013-01-16 14:45:42 +0000
commit32ea0d89b449710473aab78d83840d22fccfd5b4 (patch)
tree39862506e041505aa576b33aebd71f5e8b077a53 /src/map/battle.c
parent2905b80803313112e951e2d1e32f2c2e1252c170 (diff)
downloadhercules-32ea0d89b449710473aab78d83840d22fccfd5b4.tar.gz
hercules-32ea0d89b449710473aab78d83840d22fccfd5b4.tar.bz2
hercules-32ea0d89b449710473aab78d83840d22fccfd5b4.tar.xz
hercules-32ea0d89b449710473aab78d83840d22fccfd5b4.zip
Fixed bugreport:7182 where GN_MIX_COOKING is limited in creating 1 food item.
Fixed bugreport:7172 missing elemental resistance bonus of NC_RESEARCHFE. Recoded RA_FEARBREEZE.(bugreport:7188). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@17101 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/battle.c')
-rw-r--r--src/map/battle.c34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index 7b6bf5869..0959ea858 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -1857,19 +1857,35 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
wd.div_ = skill_get_num(GS_CHAINACTION,skill_lv);
wd.type = 0x08;
}
- else if(sc && sc->data[SC_FEARBREEZE] && sd->weapontype1==W_BOW && (i = sd->equip_index[EQI_AMMO]) >= 0 && sd->inventory_data[i] && sd->status.inventory[i].amount > 1){
- short rate[] = { 4, 4, 7, 9, 10 };
- if(sc->data[SC_FEARBREEZE]->val1 > 0 && sc->data[SC_FEARBREEZE]->val1 < 6 && rand()%100 < rate[sc->data[SC_FEARBREEZE]->val1-1]) {
+ else if(sc && sc->data[SC_FEARBREEZE] && sd->weapontype1==W_BOW
+ && (i = sd->equip_index[EQI_AMMO]) >= 0 && sd->inventory_data[i] && sd->status.inventory[i].amount > 1){
+ int chance = rand()%100;
wd.type = 0x08;
- wd.div_ = 2;
- if(sc->data[SC_FEARBREEZE]->val1 > 2){
- int chance = rand()%100;
- wd.div_ += (chance >= 40) + (chance >= 70) + (chance >= 90);
- wd.div_ = min(wd.div_,sc->data[SC_FEARBREEZE]->val1);
+ switch(sc->data[SC_FEARBREEZE]->val1){
+ case 5:
+ if( chance < 3){// 3 % chance to attack 5 times.
+ wd.div_ = 5;
+ break;
+ }
+ case 4:
+ if( chance < 7){// 6 % chance to attack 4 times.
+ wd.div_ = 4;
+ break;
+ }
+ case 3:
+ if( chance < 10){// 9 % chance to attack 3 times.
+ wd.div_ = 3;
+ break;
+ }
+ case 2:
+ case 1:
+ if( chance < 13){// 12 % chance to attack 2 times.
+ wd.div_ = 2;
+ break;
+ }
}
wd.div_ = min(wd.div_,sd->status.inventory[i].amount);
sc->data[SC_FEARBREEZE]->val4 = wd.div_-1;
- }
}
}