From cdd9705b238a13fadde43448182e4b0a350bac86 Mon Sep 17 00:00:00 2001 From: Lance Date: Wed, 22 Mar 2006 07:24:47 +0000 Subject: [reddozen's fix] - Updated Full Buster's damage, status effects, and skill levels - Bullseye now only uses 1 coin - changed Adjustment's required SP - changed Incerase Accuracy's effect bonuses - changed Magical Bullet's SP cost - changed Piercing Shot's damage and SP - changed Desperado's range, hit count, aftercast delay, and SP - fixed Absorb Spirit Sphere being able to remove coins - changed Acid Demonstration's damage to the new Japanese formula git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5699 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 12 ++++++++++++ db/skill_cast_db.txt | 32 +++++++++++++++--------------- db/skill_db.txt | 4 ++-- db/skill_require_db.txt | 10 +++++----- src/map/battle.c | 11 ++++++----- src/map/skill.c | 52 +++++++++++++++++++++++-------------------------- src/map/status.c | 6 +++++- 7 files changed, 70 insertions(+), 57 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 68b1a89bd..e0327370e 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,18 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EVERYTHING ELSE GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS +2006/03/22 + * Changes by [reddozen] --> + - Updated Full Buster's damage, status effects, and skill levels + - Bullseye now only uses 1 coin + - changed Adjustment's required SP + - changed Incerase Accuracy's effect bonuses + - changed Magical Bullet's SP cost + - changed Piercing Shot's damage and SP + - changed Desperado's range, hit count, aftercast delay, and SP + - fixed Absorb Spirit Sphere being able to remove coins + - changed Acid Demonstration's damage to the new Japanese formula + 2006/03/21 * Fixed duel in pk-mode (same party/same guild/alliance non-targeting issue). Thanks to Hobbit for pointing that out. [LuzZza] diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index 81f8197a1..bbb65d195 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -811,41 +811,41 @@ //-- GS_GLITTERING 500,1000,0,0,600000,0 //-- GS_FLING -501,0,0,0,0,0 +501,0,1000,0,0,0 //-- GS_TRIPLEACTION -502,0,0,0,0,0 +502,0,1000,0,0,0 //-- GS_BULLSEYE -503,0,0,0,0,0 +503,0,1000,0,0,0 //-- GS_MADNESSCANCEL -504,0,0,0,15000,0 +504,0,1000,0,15000,0 //-- GS_ADJUSTMENT -505,0,0,0,30000,0 +505,0,1000,0,30000,0 //-- GS_INCREASING -506,0,0,0,60000,0 +506,0,1000,0,60000,0 //-- GS_MAGICALBULLET -507,0,0,0,0,0 +507,0,1000,0,0,0 //-- GS_CRACKER -508,0,0,0,0,5000 +508,0,1000,0,0,5000 //-- GS_TRACKING 512,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,0,0 //-- GS_DISARM -513,0,0,0,0,0 +513,0,1000,0,0,0 //-- GS_PIERCINGSHOT -514,0,0,0,0,60000 +514,0,1000,0,0,60000 //-- GS_RAPIDSHOWER -515,0,0,0,0,0 +515,0,1000,0,0,0 //-- GS_DESPERADO -516,0,0,0,0,0 +516,0,1000,0,0,0 //-- GS_GATLINGFEVER -517,0,0,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:160000,0 +517,0,1000,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:160000,0 //-- GS_DUST -518,0,0,0,0,0 +518,0,1000,0,0,0 //-- GS_FULLBUSTER 519,0,1500:2000:2500:3000:3500,0,0,0 //-- GS_SPREADATTACK -520,0,0,0,0,0 +520,0,1000,0,0,0 //-- GS_GROUNDDRIFT -521,0,0,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000,0 +521,0,1000,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000,0 //========================================== diff --git a/db/skill_db.txt b/db/skill_db.txt index 836fda796..c13616619 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -536,10 +536,10 @@ 513,-5,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //GS_DISARM#Disarm# 514,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //GS_PIERCINGSHOT#Piercing Shot# 515,-5,8,1,-1,0,0,10,5,no,0,0,0,weapon,0 //GS_RAPIDSHOWER#Rapid Shower# -516,-5,8,4,-1,2,3,10,7,no,0,0,0,weapon,0 //GS_DESPERADO#Desperado# +516,-5,8,4,-1,2,2,10,10,no,0,0,0,weapon,0 //GS_DESPERADO#Desperado# 517,0,6,4,0,1,0,5,1,no,0,0,0,weapon,0 //GS_GATLINGFEVER#Gatling Fever# 518,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //GS_DUST#Dust# -519,-5,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //GS_FULLBUSTER#Full Buster# +519,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //GS_FULLBUSTER#Full Buster# 520,-5,6,4,-1,2,1:1:1:2:2:2:3:3:3:4,10,1,no,0,0,0,weapon,0 //GS_SPREADATTACK#Spread Attack# 521,-5,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //GS_GROUNDDRIFT#Ground Drift# 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0 //NJ_TOBIDOUGU#NJ_TOBIDOUGU# diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index fee53e3e7..48b708b7c 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -393,18 +393,18 @@ 502,0,0,10,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION 503,0,0,10,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_BULLSEYE 504,0,0,10,0,0,0,17:18:19:20:21,none,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL -505,0,0,10,0,0,0,17:18:19:20:21,none,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT +505,0,0,15,0,0,0,17:18:19:20:21,none,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT 506,0,0,10,0,0,0,17:18:19:20:21,none,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_INCREASING -507,0,0,10,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET +507,0,0,7,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET 508,0,0,10,0,0,0,17:18:19:20:21,none,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_CRACKER 512,0,0,10,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_TRACKING 513,0,0,10,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DISARM -514,0,0,10,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_PIERCINGSHOT +514,0,0,11:12:13:14:15,0,0,0,17:18,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_PIERCINGSHOT 515,0,0,10,0,0,0,17,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_RAPIDSHOWER -516,0,0,10,0,0,0,17,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DESPERADO +516,0,0,32:34:36:38:40:42:44:46:48:50,0,0,0,17,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DESPERADO 517,0,0,10,0,0,0,20,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GATLINGFEVER 518,0,0,10,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DUST -519,0,0,10,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_FULLBUSTER +519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_FULLBUSTER 520,0,0,10,0,0,0,19,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_SPREADATTACK 521,0,0,10,0,0,0,21,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT 523,0,0,10,0,0,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NJ_SYURIKEN diff --git a/src/map/battle.c b/src/map/battle.c index de9a7d636..fc60a1eba 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1893,19 +1893,19 @@ static struct Damage battle_calc_weapon_attack( if (skill_lv == 10) skillratio += 80; break; case GS_PIERCINGSHOT: - skillratio += 10*skill_lv; + skillratio += 100 + 20*skill_lv; break; case GS_RAPIDSHOWER: skillratio += 10*skill_lv; break; case GS_DESPERADO: - skillratio += 50*skill_lv-50; + skillratio += 50*skill_lv+50; break; case GS_DUST: skillratio += 50*skill_lv; break; case GS_FULLBUSTER: - skillratio += 150 + 250*skill_lv; + skillratio += 300 + 100*skill_lv; break; case GS_SPREADATTACK: skillratio += 20*skill_lv-20; @@ -3014,7 +3014,8 @@ struct Damage battle_calc_misc_attack( case CR_ACIDDEMONSTRATION: //This equation is not official, but it's the closest to the official one //that Viccious Pucca and the other folks at the forums could come up with. [Skotlex] - damage = int_ * (int)(sqrt(100*status_get_vit(target))) / 3; + // updated the formula based on a Japanese formula found to be exact [Reddozen] + damage = (0.7 * status_get_vit(target) * (int_ * int_)) / (status_get_vit(target) + int_); if (tsd) damage/=2; aflag = (aflag&~BF_RANGEMASK)|BF_LONG; break; @@ -3668,7 +3669,7 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f } else { //Non pvp/gvg, check party/guild settings. if (flag&BCT_PARTY || state&BCT_ENEMY) { int s_party = status_get_party_id(s_bl); - if(!is_duel s_party && s_party ==status_get_party_id(t_bl)) // +check for duel [LuzZza] + if(!is_duel && s_party && s_party == status_get_party_id(t_bl)) // +check for duel [LuzZza] state |= BCT_PARTY; } if (flag&BCT_GUILD || state&BCT_ENEMY) { diff --git a/src/map/skill.c b/src/map/skill.c index 44ac95464..ef835eba4 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1254,6 +1254,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int case GS_PIERCINGSHOT: sc_start(bl,SC_BLEEDING,(skilllv*3),skilllv,skill_get_time2(skillid,skilllv)); break; + case GS_FULLBUSTER: + sc_start(bl,SC_BLIND,(2*skilllv),skilllv,skill_get_time2(skillid,1)); + break; case NJ_HYOUSYOURAKU: sc_start(bl,SC_FREEZE,(10+10*skilllv),skilllv,skill_get_time2(skillid,skilllv)); break; @@ -3952,29 +3955,29 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case MO_ABSORBSPIRITS: // ?’D i = 0; - if (dstsd && dstsd->spiritball > 0 && - ((sd && sd == dstsd) || map_flag_vs(src->m))) + if (dstsd && dstsd->spiritball > 0) { - i = dstsd->spiritball * 7; - pc_delspiritball(dstsd,dstsd->spiritball,0); - } else if (dstmd && //??Û‚ªƒ‚ƒ“ƒXƒ^?‚Ì?ê?‡ - //20%‚ÌŠm—¦‚Å??Û‚ÌLv*2‚ÌSP‚ð‰ñ•œ‚·‚é?B?¬Œ÷‚µ‚½‚Æ‚«‚̓^?ƒQƒbƒg(ƒÐ?„D?)ƒÐ????!! - !(status_get_mode(bl)&MD_BOSS) && rand() % 100 < 20) - { - i = 2 * dstmd->db->lv; - mob_target(dstmd,src,0); - } - if (sd){ - if (i > 0x7FFF) - i = 0x7FFF; - if (sd->status.sp + i > sd->status.max_sp) - i = sd->status.max_sp - sd->status.sp; - if (i) { - sd->status.sp += i; - clif_heal(sd->fd,SP_SP,i); + if (((sd && sd == dstsd) || map_flag_vs(src->m)) && ((dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER)) + { // split the if for readability, and included gunslingers in the check so that their coins cannot be removed [Reddozen] + i = dstsd->spiritball * 7; + pc_delspiritball(dstsd,dstsd->spiritball,0); + } else if (dstmd && !(status_get_mode(bl)&MD_BOSS) && rand() % 100 < 20) + { // check if target is a monster and not a Boss, for the 20% chance to absorb 2 SP per monster's level [Reddozen] + i = 2 * dstmd->db->lv; + mob_target(dstmd,src,0); + } + if (sd){ + if (i > 0x7FFF) + i = 0x7FFF; + if (sd->status.sp + i > sd->status.max_sp) + i = sd->status.max_sp - sd->status.sp; + if (i) { + sd->status.sp += i; + clif_heal(sd->fd,SP_SP,i); + } } } - clif_skill_nodamage(src,bl,skillid,skilllv,0); + clif_skill_nodamage(src,bl,skillid,skilllv,0); break; case AC_MAKINGARROW: /* –î?ì?¬ */ @@ -8139,6 +8142,7 @@ int skill_check_condition(struct map_session_data *sd,int type) case GS_TRIPLEACTION: case GS_MAGICALBULLET: case GS_CRACKER: + case GS_BULLSEYE: spiritball = 1; if (skill != GS_MAGICALBULLET) arrow_flag = 1; @@ -8148,14 +8152,6 @@ int skill_check_condition(struct map_session_data *sd,int type) } break; - case GS_BULLSEYE: - spiritball = 5; - if(sd->equip_index[10] < 0) { - clif_arrow_fail(sd,0); - return 0; - } - break; - case GS_MADNESSCANCEL: spiritball = 4; if(sd->spiritball >= 4 && sd->sc.data[SC_ADJUSTMENT].timer!=-1) diff --git a/src/map/status.c b/src/map/status.c index d576f29a2..eb7f3eff2 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1728,6 +1728,8 @@ int status_calc_agi(struct block_list *bl, int agi) agi -= sc->data[SC_QUAGMIRE].val1*(bl->type==BL_PC?5:10); if(sc->data[SC_SUITON].timer!=-1) agi -= sc->data[SC_SUITON].val2; + if(sc->data[SC_INCREASING].timer!=-1) + agi += 4; // added based on skill updates [Reddozen] } return agi; @@ -1806,6 +1808,8 @@ int status_calc_dex(struct block_list *bl, int dex) dex >>= 1; else dex += sc->data[SC_BLESSING].val1; } + if(sc->data[SC_INCREASING].timer!=-1) + dex += 4; // added based on skill updates [Reddozen] } return dex; @@ -1965,7 +1969,7 @@ int status_calc_hit(struct block_list *bl, int hit) if(sc->data[SC_ADJUSTMENT].timer!=-1) hit += 30; if(sc->data[SC_INCREASING].timer!=-1) - hit += 50; // RockmanEXE + hit += 20; // RockmanEXE; changed based on updated [Reddozen] } return hit; -- cgit v1.2.3-70-g09d2