diff options
-rw-r--r-- | Changelog-Trunk.txt | 7 | ||||
-rw-r--r-- | src/map/battle.c | 4 | ||||
-rw-r--r-- | src/map/pc.c | 2 | ||||
-rw-r--r-- | src/map/skill.c | 18 | ||||
-rw-r--r-- | src/map/status.c | 10 |
5 files changed, 24 insertions, 17 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index fd4289264..ba347515d 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,13 @@ 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. +2008/06/13 + * Corrected dc_serviceforyou bonus values based on irowiki (better have fansite info than 100% guessed info). + * Fixed dc_humming only recieving half the bonus from dancing lessons. + * Fixed some skills working on undead element when they were supposed to work on undead race. [Brainstorm] + Skills Fixed: Cure, Signum Crusis, Blessing, Demons Bane, Divine Protection. + Skills needing confirmation: Magnus Exorcismus, Evil Land, Sanctuary, Status Recovery, GrandCross, Dark GrandCross, Head Crush + 2008/06/12 * Added check to prevent crashing on logmes with no player attached (bugreport:1648) [ultramage] diff --git a/src/map/battle.c b/src/map/battle.c index a1f9f6e8b..348cd8ad0 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -614,7 +614,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int nullpo_retr(0, sd); if((skill = pc_checkskill(sd,AL_DEMONBANE)) > 0 && - (battle_check_undead(status->race,status->def_ele) || status->race==RC_DEMON) ) + (status->race==RC_UNDEAD || status->race==RC_DEMON) ) damage += (skill*(int)(3+(sd->status.base_level+1)*0.05)); // submitted by orn //damage += (skill * 3); @@ -1713,7 +1713,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo vit_def = def2*(def2-15)/150; vit_def = def2/2 + (vit_def>0?rand()%vit_def:0); - if((battle_check_undead(sstatus->race,sstatus->def_ele) || sstatus->race==RC_DEMON) && + if((sstatus->race==RC_UNDEAD || sstatus->race==RC_DEMON) && src->type == BL_MOB && (skill=pc_checkskill(tsd,AL_DP)) > 0) vit_def += skill*(int)(3 +(tsd->status.base_level+1)*0.04); // submitted by orn } else { //Mob-Pet vit-eq diff --git a/src/map/pc.c b/src/map/pc.c index 643863ea6..620038d00 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6558,7 +6558,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) status_calc_pc(sd,0); } - if(sd->sc.data[SC_SIGNUMCRUCIS] && !battle_check_undead(sd->battle_status.race,sd->battle_status.def_ele)) + if(sd->sc.data[SC_SIGNUMCRUCIS] && (sd->battle_status.race != RC_UNDEAD)) status_change_end(&sd->bl,SC_SIGNUMCRUCIS,-1); //OnUnEquip script [Skotlex] diff --git a/src/map/skill.c b/src/map/skill.c index 5bf2ee9c9..b2da0e8b5 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3903,8 +3903,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in status_change_end(bl, SC_SILENCE , -1 ); status_change_end(bl, SC_BLIND , -1 ); status_change_end(bl, SC_CONFUSION, -1 ); - //Confusion on undead won't trigger on undead players. - if(!dstsd && battle_check_undead(tstatus->race,tstatus->def_ele)) + //Confusion status will trigger against undead race. + if(tstatus->race==RC_UNDEAD) sc_start(bl, SC_CONFUSION,100,1,skill_get_time2(skillid, skilllv)); clif_skill_nodamage(src,bl,skillid,skilllv,1); break; @@ -6297,7 +6297,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli case DC_HUMMING: val1 = 2*skilllv+status->dex/10; // Hit increase if(sd) - val1 += 2*pc_checkskill(sd,DC_DANCINGLESSON); + val1 += pc_checkskill(sd,DC_DANCINGLESSON); break; case BA_POEMBRAGI: val1 = 3*skilllv+status->dex/10; // Casting time reduction @@ -6312,8 +6312,8 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli val1 = 30*skilllv+status->dex; // ASPD decrease val2 = 100 -2*skilllv -status->agi/10; // Movement speed adjustment. if(sd){ - val1 += pc_checkskill(sd,DC_DANCINGLESSON); - val2 -= pc_checkskill(sd,DC_DANCINGLESSON); + val1 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This is a guessed value + val2 -= pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This is a guessed value } if (val2 < 1) val2 = 1; break; @@ -6328,11 +6328,11 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli } break; case DC_SERVICEFORYOU: - val1 = 10+skilllv+(status->int_/10); // MaxSP percent increase - val2 = 10+3*skilllv+(status->int_/10); // SP cost reduction + val1 = 15+skilllv+(status->int_/10); // MaxSP percent increase TO-DO: this INT bonus value is guessed + val2 = 20+3*skilllv+(status->int_/10); // SP cost reduction if(sd){ - val1 += pc_checkskill(sd,DC_DANCINGLESSON); - val2 += pc_checkskill(sd,DC_DANCINGLESSON); + val1 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This bonus value is guessed + val2 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO Should be half this value } break; case BA_ASSASSINCROSS: diff --git a/src/map/status.c b/src/map/status.c index e8df69b3f..b92373a95 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -4672,8 +4672,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val return 0; //Cannot override other opt1 status changes. [Skotlex] break; case SC_SIGNUMCRUCIS: - //Only affects demons and undead. - if(status->race != RC_DEMON && !undead_flag) + //Only affects demons and undead races + if(status->race!=RC_UNDEAD && status->race!=RC_DEMON) return 0; break; case SC_AETERNA: @@ -4818,7 +4818,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val return 0; switch (type) { case SC_BLESSING: - if (!undead_flag && status->race != RC_DEMON) + if (status->race!=RC_UNDEAD && status->race!=RC_DEMON) break; case SC_QUAGMIRE: case SC_DECREASEAGI: @@ -4842,7 +4842,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_BLESSING: //TO-DO Blessing and Agi up should do 1 damage against players on Undead Status, even on PvM //but cannot be plagiarized (this requires aegis investigation on packets and official behavior) [Brainstorm] - if ((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC) { + if (status->race!=RC_UNDEAD && status->race!=RC_DEMON) { if (sc->data[SC_CURSE]) status_change_end(bl,SC_CURSE,-1); if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE) @@ -5717,7 +5717,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val val4 = -1; //Kaahi Timer. break; case SC_BLESSING: - if ((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC) + if (status->race!=RC_UNDEAD && status->race!=RC_DEMON) val2 = val1; else val2 = 0; //0 -> Half stat. |