[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://svn.code.sf.net/p/rathena/svn/trunk@5699 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Lance 2006-03-22 07:24:47 +00:00
parent dcd86e9161
commit a4bf5eb3d0
7 changed files with 70 additions and 57 deletions

View File

@ -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 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 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 2006/03/21
* Fixed duel in pk-mode (same party/same guild/alliance non-targeting issue). * Fixed duel in pk-mode (same party/same guild/alliance non-targeting issue).
Thanks to Hobbit for pointing that out. [LuzZza] Thanks to Hobbit for pointing that out. [LuzZza]

View File

@ -811,41 +811,41 @@
//-- GS_GLITTERING //-- GS_GLITTERING
500,1000,0,0,600000,0 500,1000,0,0,600000,0
//-- GS_FLING //-- GS_FLING
501,0,0,0,0,0 501,0,1000,0,0,0
//-- GS_TRIPLEACTION //-- GS_TRIPLEACTION
502,0,0,0,0,0 502,0,1000,0,0,0
//-- GS_BULLSEYE //-- GS_BULLSEYE
503,0,0,0,0,0 503,0,1000,0,0,0
//-- GS_MADNESSCANCEL //-- GS_MADNESSCANCEL
504,0,0,0,15000,0 504,0,1000,0,15000,0
//-- GS_ADJUSTMENT //-- GS_ADJUSTMENT
505,0,0,0,30000,0 505,0,1000,0,30000,0
//-- GS_INCREASING //-- GS_INCREASING
506,0,0,0,60000,0 506,0,1000,0,60000,0
//-- GS_MAGICALBULLET //-- GS_MAGICALBULLET
507,0,0,0,0,0 507,0,1000,0,0,0
//-- GS_CRACKER //-- GS_CRACKER
508,0,0,0,0,5000 508,0,1000,0,0,5000
//-- GS_TRACKING //-- GS_TRACKING
512,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,0,0 512,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,0,0
//-- GS_DISARM //-- GS_DISARM
513,0,0,0,0,0 513,0,1000,0,0,0
//-- GS_PIERCINGSHOT //-- GS_PIERCINGSHOT
514,0,0,0,0,60000 514,0,1000,0,0,60000
//-- GS_RAPIDSHOWER //-- GS_RAPIDSHOWER
515,0,0,0,0,0 515,0,1000,0,0,0
//-- GS_DESPERADO //-- GS_DESPERADO
516,0,0,0,0,0 516,0,1000,0,0,0
//-- GS_GATLINGFEVER //-- 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 //-- GS_DUST
518,0,0,0,0,0 518,0,1000,0,0,0
//-- GS_FULLBUSTER //-- GS_FULLBUSTER
519,0,1500:2000:2500:3000:3500,0,0,0 519,0,1500:2000:2500:3000:3500,0,0,0
//-- GS_SPREADATTACK //-- GS_SPREADATTACK
520,0,0,0,0,0 520,0,1000,0,0,0
//-- GS_GROUNDDRIFT //-- 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
//========================================== //==========================================

View File

@ -536,10 +536,10 @@
513,-5,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //GS_DISARM#Disarm# 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# 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# 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# 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# 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# 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# 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# 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0 //NJ_TOBIDOUGU#NJ_TOBIDOUGU#

View File

@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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

View File

@ -1893,19 +1893,19 @@ static struct Damage battle_calc_weapon_attack(
if (skill_lv == 10) skillratio += 80; if (skill_lv == 10) skillratio += 80;
break; break;
case GS_PIERCINGSHOT: case GS_PIERCINGSHOT:
skillratio += 10*skill_lv; skillratio += 100 + 20*skill_lv;
break; break;
case GS_RAPIDSHOWER: case GS_RAPIDSHOWER:
skillratio += 10*skill_lv; skillratio += 10*skill_lv;
break; break;
case GS_DESPERADO: case GS_DESPERADO:
skillratio += 50*skill_lv-50; skillratio += 50*skill_lv+50;
break; break;
case GS_DUST: case GS_DUST:
skillratio += 50*skill_lv; skillratio += 50*skill_lv;
break; break;
case GS_FULLBUSTER: case GS_FULLBUSTER:
skillratio += 150 + 250*skill_lv; skillratio += 300 + 100*skill_lv;
break; break;
case GS_SPREADATTACK: case GS_SPREADATTACK:
skillratio += 20*skill_lv-20; skillratio += 20*skill_lv-20;
@ -3014,7 +3014,8 @@ struct Damage battle_calc_misc_attack(
case CR_ACIDDEMONSTRATION: case CR_ACIDDEMONSTRATION:
//This equation is not official, but it's the closest to the official one //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] //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; if (tsd) damage/=2;
aflag = (aflag&~BF_RANGEMASK)|BF_LONG; aflag = (aflag&~BF_RANGEMASK)|BF_LONG;
break; 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. } else { //Non pvp/gvg, check party/guild settings.
if (flag&BCT_PARTY || state&BCT_ENEMY) { if (flag&BCT_PARTY || state&BCT_ENEMY) {
int s_party = status_get_party_id(s_bl); 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; state |= BCT_PARTY;
} }
if (flag&BCT_GUILD || state&BCT_ENEMY) { if (flag&BCT_GUILD || state&BCT_ENEMY) {

View File

@ -1254,6 +1254,9 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
case GS_PIERCINGSHOT: case GS_PIERCINGSHOT:
sc_start(bl,SC_BLEEDING,(skilllv*3),skilllv,skill_get_time2(skillid,skilllv)); sc_start(bl,SC_BLEEDING,(skilllv*3),skilllv,skill_get_time2(skillid,skilllv));
break; break;
case GS_FULLBUSTER:
sc_start(bl,SC_BLIND,(2*skilllv),skilllv,skill_get_time2(skillid,1));
break;
case NJ_HYOUSYOURAKU: case NJ_HYOUSYOURAKU:
sc_start(bl,SC_FREEZE,(10+10*skilllv),skilllv,skill_get_time2(skillid,skilllv)); sc_start(bl,SC_FREEZE,(10+10*skilllv),skilllv,skill_get_time2(skillid,skilllv));
break; break;
@ -3952,29 +3955,29 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case MO_ABSORBSPIRITS: // ?D case MO_ABSORBSPIRITS: // ?D
i = 0; i = 0;
if (dstsd && dstsd->spiritball > 0 && if (dstsd && dstsd->spiritball > 0)
((sd && sd == dstsd) || map_flag_vs(src->m)))
{ {
i = dstsd->spiritball * 7; if (((sd && sd == dstsd) || map_flag_vs(src->m)) && ((dstsd->class_&MAPID_BASEMASK)!=MAPID_GUNSLINGER))
pc_delspiritball(dstsd,dstsd->spiritball,0); { // split the if for readability, and included gunslingers in the check so that their coins cannot be removed [Reddozen]
} else if (dstmd && //??Ûªƒƒ“ƒXƒ^?‚Ì?ê?‡ i = dstsd->spiritball * 7;
//20%ÌŠm—¦Å??ÛÌLv*2ÌSPð‰ñ•œ·é?B?¬Œ÷‚µ‚½‚Æ‚«‚̓^?ƒQƒbƒg(ƒÐ?„D?)ƒÐ????!! pc_delspiritball(dstsd,dstsd->spiritball,0);
!(status_get_mode(bl)&MD_BOSS) && rand() % 100 < 20) } 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; i = 2 * dstmd->db->lv;
mob_target(dstmd,src,0); mob_target(dstmd,src,0);
} }
if (sd){ if (sd){
if (i > 0x7FFF) if (i > 0x7FFF)
i = 0x7FFF; i = 0x7FFF;
if (sd->status.sp + i > sd->status.max_sp) if (sd->status.sp + i > sd->status.max_sp)
i = sd->status.max_sp - sd->status.sp; i = sd->status.max_sp - sd->status.sp;
if (i) { if (i) {
sd->status.sp += i; sd->status.sp += i;
clif_heal(sd->fd,SP_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; break;
case AC_MAKINGARROW: /* –î?ì?¬ */ case AC_MAKINGARROW: /* –î?ì?¬ */
@ -8139,6 +8142,7 @@ int skill_check_condition(struct map_session_data *sd,int type)
case GS_TRIPLEACTION: case GS_TRIPLEACTION:
case GS_MAGICALBULLET: case GS_MAGICALBULLET:
case GS_CRACKER: case GS_CRACKER:
case GS_BULLSEYE:
spiritball = 1; spiritball = 1;
if (skill != GS_MAGICALBULLET) if (skill != GS_MAGICALBULLET)
arrow_flag = 1; arrow_flag = 1;
@ -8148,14 +8152,6 @@ int skill_check_condition(struct map_session_data *sd,int type)
} }
break; break;
case GS_BULLSEYE:
spiritball = 5;
if(sd->equip_index[10] < 0) {
clif_arrow_fail(sd,0);
return 0;
}
break;
case GS_MADNESSCANCEL: case GS_MADNESSCANCEL:
spiritball = 4; spiritball = 4;
if(sd->spiritball >= 4 && sd->sc.data[SC_ADJUSTMENT].timer!=-1) if(sd->spiritball >= 4 && sd->sc.data[SC_ADJUSTMENT].timer!=-1)

View File

@ -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); agi -= sc->data[SC_QUAGMIRE].val1*(bl->type==BL_PC?5:10);
if(sc->data[SC_SUITON].timer!=-1) if(sc->data[SC_SUITON].timer!=-1)
agi -= sc->data[SC_SUITON].val2; agi -= sc->data[SC_SUITON].val2;
if(sc->data[SC_INCREASING].timer!=-1)
agi += 4; // added based on skill updates [Reddozen]
} }
return agi; return agi;
@ -1806,6 +1808,8 @@ int status_calc_dex(struct block_list *bl, int dex)
dex >>= 1; dex >>= 1;
else dex += sc->data[SC_BLESSING].val1; else dex += sc->data[SC_BLESSING].val1;
} }
if(sc->data[SC_INCREASING].timer!=-1)
dex += 4; // added based on skill updates [Reddozen]
} }
return dex; return dex;
@ -1965,7 +1969,7 @@ int status_calc_hit(struct block_list *bl, int hit)
if(sc->data[SC_ADJUSTMENT].timer!=-1) if(sc->data[SC_ADJUSTMENT].timer!=-1)
hit += 30; hit += 30;
if(sc->data[SC_INCREASING].timer!=-1) if(sc->data[SC_INCREASING].timer!=-1)
hit += 50; // RockmanEXE hit += 20; // RockmanEXE; changed based on updated [Reddozen]
} }
return hit; return hit;