From cd6a53f9c55548cfd77038882e96cffa1865fb29 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 22 Aug 2007 22:49:54 +0000 Subject: - Fixed Dragon Fear's status change selection and duration. - Fixed Metamorphosis not displaying a speed-change update on the client. - Status changes that were blocked by element are no longer blocked, instead, now no-damage skills are blocked if they have an element which is absorbed by the target (This is the behaviour that Tharis believes is correct). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11067 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 7 +++++++ src/map/mob.c | 1 + src/map/skill.c | 7 ++++++- src/map/status.c | 14 -------------- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index d3ec1a75d..54561f80d 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,13 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2007/08/22 + * Fixed Dragon Fear's status change selection and duration. + * Fixed Metamorphosis not displaying a speed-change update on the client. + * Status changes that were blocked by element are no longer blocked, + instead, now no-damage skills are blocked if they have an element which is + absorbed by the target (This is the behaviour that Tharis believes is + correct). [Skotlex] 2007/08/19 * Fixed small mistake in confs causing some confusion [Paradox924X] * Set proper limits to drop rates, prevents int overflow during calc diff --git a/src/map/mob.c b/src/map/mob.c index 086c85380..f3cec671a 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2341,6 +2341,7 @@ int mob_class_change (struct mob_data *md, int class_) status_set_viewdata(&md->bl, class_); clif_mob_class_change(md,class_); status_calc_mob(md, 3); + md->ud.state.speed_changed = 1; //Speed change update. if (battle_config.monster_class_change_recover) { memset(md->dmglog, 0, sizeof(md->dmglog)); diff --git a/src/map/skill.c b/src/map/skill.c index a67eb9d70..5f6c249ce 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -3400,6 +3400,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in tstatus = status_get_status_data(bl); sstatus = status_get_status_data(src); + + if(src!=bl && (i = skill_get_pl(skillid, skilllv)) > ELE_NEUTRAL && + battle_attr_fix(NULL, NULL, 100, i, tstatus->def_ele, tstatus->ele_lv) <= 0) + return 1; //Skills with an element should be blocked if the target element absorbs it. //Check for undead skills that convert a no-damage skill into a damage one. [Skotlex] switch (skillid) { @@ -5657,7 +5661,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case NPC_DRAGONFEAR: if (flag&1) { const int sc[] = { SC_STUN, SC_CURSE, SC_SILENCE, SC_BLEEDING }; - sc_start(bl,rand()%ARRAYLENGTH(sc),100,skilllv,skill_get_time2(skillid,skilllv)); + i = rand()%ARRAYLENGTH(sc); + sc_start(bl,sc[i],100,skilllv,skill_get_time2(skillid,i+1)); break; } case NPC_WIDEBLEEDING: diff --git a/src/map/status.c b/src/map/status.c index a08595952..f940e8add 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -4608,20 +4608,6 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val if (sc->opt1) return 0; //Cannot override other opt1 status changes. [Skotlex] break; - case SC_CURSE: - //Dark Elementals are inmune to curse. - if (status->def_ele == ELE_DARK && !(flag&1)) - return 0; - break; - case SC_CHANGEUNDEAD: //Undead/Dark are inmune to it. - if ((status->def_ele == ELE_DARK || undead_flag) && !(flag&1)) - return 0; - break; - case SC_COMA: - //Dark elementals and Demons are inmune to coma. - if((status->def_ele == ELE_DARK || status->race == RC_DEMON) && !(flag&1)) - return 0; - break; case SC_SIGNUMCRUCIS: //Only affects demons and undead. if(status->race != RC_DEMON && !undead_flag) -- cgit v1.2.3-70-g09d2