From bf07760665f25b3a80af93c7bc68427c1f77349c Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 1 Feb 2006 19:14:28 +0000 Subject: - Trick Dead makes you stop walking now. - Falcon Assault only does 1 hit now. - Soul Burn is not affected by Lex Aeterna, not affected by target's cards. - Freeze and Stone take preference over Benedictio - Opt1 inducing SCs fail if the target has already another Opt1 - Fixed areamonster when the passed class is negative - Removed the clear screen when launching the server. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@5156 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/core.c | 3 ++- src/map/battle.c | 5 +++-- src/map/mob.c | 2 +- src/map/status.c | 25 ++++++++++++------------- 4 files changed, 18 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/common/core.c b/src/common/core.c index b0b847ca2..857f21eb6 100644 --- a/src/common/core.c +++ b/src/common/core.c @@ -157,7 +157,8 @@ const char* get_svn_revision(void) static void display_title(void) { - ClearScreen(); // clear screen and go up/left (0, 0 position in text) + //The clearscreeen is usually more of an annoyance than anything else... [Skotlex] +// ClearScreen(); // clear screen and go up/left (0, 0 position in text) ShowMessage(""CL_WTBL" (=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=)"CL_CLL""CL_NORMAL"\n"); // white writing (37) on blue background (44), \033[K clean until end of file ShowMessage(""CL_XXBL" ("CL_BT_YELLOW" (c)2005 eAthena Development Team presents "CL_XXBL")"CL_CLL""CL_NORMAL"\n"); // yellow writing (33) ShowMessage(""CL_XXBL" ("CL_BOLD" ______ __ __ "CL_XXBL")"CL_CLL""CL_NORMAL"\n"); // 1: bold char, 0: normal char diff --git a/src/map/battle.c b/src/map/battle.c index 5f014879f..39256a8f2 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -620,7 +620,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i return 0; //Now damage increasing effects - if(sc->data[SC_AETERNA].timer!=-1 && skill_num != PA_PRESSURE){ + if(sc->data[SC_AETERNA].timer!=-1 && skill_num != PA_PRESSURE && skill_num != PF_SOULBURN){ damage<<=1; if (skill_num != ASC_BREAKER || flag & BF_MAGIC) //Only end it on the second attack of breaker. [Skotlex] status_change_end( bl,SC_AETERNA,-1 ); @@ -2655,7 +2655,8 @@ struct Damage battle_calc_magic_attack( MATK_RATE(cardfix); } - if (tsd && skill_num != HW_GRAVITATION) { //Card fixes always apply on the target side. [Skotlex] + if (tsd && skill_num != HW_GRAVITATION && skill_num != PF_SOULBURN) + { //Card fixes always apply on the target side. [Skotlex] short s_race2=status_get_race2(src); short s_class= status_get_class(src); short cardfix=100; diff --git a/src/map/mob.c b/src/map/mob.c index a1cbeac41..25806b76b 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -287,7 +287,7 @@ int mob_once_spawn_area(struct map_session_data *sd,char *mapname, max=(y1-y0+1)*(x1-x0+1)*3; if(max>1000)max=1000; - if(m<0 || amount<=0 || mob_db(class_) == mob_dummy) // A summon is stopped if a value is unusual + if (m < 0 || amount <= 0 || (class_ >= 0 && class_ <= 1000) || class_ > MAX_MOB_DB + 2*MAX_MOB_DB) // 値が異常なら召喚を止める return 0; for(i=0;icount) { - if( sc->data[SC_BENEDICTIO].timer!=-1 ) // 聖体降福 - return 26; if( sc->data[SC_FREEZE].timer!=-1 ) // 凍結 return 21; if( sc->data[SC_STONE].timer!=-1 && sc->data[SC_STONE].val2==0) return 22; + if( sc->data[SC_BENEDICTIO].timer!=-1 ) // 聖体降福 + return 26; } if(bl->type==BL_MOB) // 10の位=Lv*2、1の位=属性 return ((struct mob_data *)bl)->def_ele; @@ -3689,6 +3689,15 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val } } + if (sc->opt1) + switch (type) { + case SC_STONE: + case SC_FREEZE: + case SC_SLEEP: + case SC_STAN: + return 0; //Cannot override other opt1 status changes. [Skotlex] + } + if((type==SC_FREEZE || type==SC_STONE) && undead_flag && !(flag&1)) //I've been informed that undead chars are inmune to stone curse too. [Skotlex] return 0; @@ -3732,7 +3741,7 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val } if(type==SC_FREEZE || type==SC_STAN || type==SC_SLEEP || type==SC_STOP || type == SC_CONFUSION || - type==SC_CLOSECONFINE || type==SC_CLOSECONFINE2) + type==SC_CLOSECONFINE || type==SC_CLOSECONFINE2 || type ==SC_TRICKDEAD) battle_stopwalking(bl,1); // クアグマイア/私を忘れないで中は無効なスキル @@ -4628,16 +4637,6 @@ int status_change_start(struct block_list *bl,int type,int val1,int val2,int val battle_stopattack(bl); /* 攻?停止 */ skill_stop_dancing(bl); /* 演奏/ダンスの中? */ - { /* 同時に掛からないステ?タス異常を解除 */ - int i; - for(i = SC_STONE; i <= SC_SLEEP; i++){ - if(sc->data[i].timer != -1){ - (sc->count)--; - delete_timer(sc->data[i].timer, status_change_timer); - sc->data[i].timer = -1; - } - } - } if(type == SC_STONE) sc->opt1 = OPT1_STONEWAIT; else -- cgit v1.2.3-70-g09d2