* Item-bonuses and NPC skills now use the official default durations for status changes

- you gain Curse immunity if you have 0 Luk (seems buggy but is official)
- our status defense stats are already fully correct :-)
- thanks to ultramage for testing this

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@13790 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
Playtester 2009-05-18 20:45:44 +00:00
parent 7f18f11403
commit 0affe1454c
4 changed files with 19 additions and 16 deletions

View File

@ -4,6 +4,7 @@ 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.
09/05/18
* Item-bonuses now use the official default durations for status changes [Playtester]
* status calc code cleanup [ultramage]
- Inverted the status calc code order, so that status_calc_bl optionally invokes status_calc_pc/mob/whatever instead of every status_calc_* calling status_calc_bl.
- Inlined functions status_calc_bl_sub_pc, status_calc_bl_sub_hom and status_calc_bl_sub_mer into status_calc_bl.

View File

@ -37,6 +37,8 @@
2385 Recuvative_Armor Should trigger HP/SP return with magical kills as well.
=======================
2009/05/18
* NPC skills now use the official default durations for status changes [Playtester]
2009/05/15
* Rev. 13784 Updated walk speed and aspd of Okolnir mobs, also fixed the flower mob modes. [L0ne_W0lf]
* Rev. 13779 Minor database updates related to the Falicious Okolnir dungeon. [L0ne_W0lf]

View File

@ -309,7 +309,7 @@
173,0,0,0,3500,0
//-- NPC_POISON
176,0,0,0,0,30000
176,0,0,0,0,60000
//-- NPC_BLINDATTACK
177,0,0,0,0,30000
//-- NPC_SILENCEATTACK
@ -317,7 +317,7 @@
//-- NPC_STUNATTACK
179,0,0,0,0,5000
//-- NPC_PETRIFYATTACK
180,0,0,0,0,30000
180,0,0,0,0,20000
//-- NPC_CURSEATTACK
181,0,0,0,0,30000
//-- NPC_SLEEPATTACK
@ -927,23 +927,23 @@
//===== New Monster Skills =================
//-- NPC_ICEBREATH
655,0,0,0,0,30000
655,0,0,0,0,12000
//-- NPC_ACIDBREATH
657,0,0,0,0,30000
657,0,0,0,0,60000
//-- NPC_DRAGONFEAR (Upkeep2 times are duration of: Stun(lv1), Curse(lv2), Silence(lv3) and Bleeding (lv4))
659,0,0,0,0,5000:30000:30000:60000
659,0,0,0,0,5000:30000:30000:120000
//-- NPC_BLEEDING
660,0,0,0,0,60000
660,0,0,0,0,120000
//-- NPC_HELLJUDGEMENT
662,0,0,0,0,30000
//-- NPC_WIDESILENCE
663,0,0,0,0,30000
//-- NPC_WIDEFREEZE
664,0,0,0,0,30000
664,0,0,0,0,12000
//-- NPC_WIDEBLEEDING
665,0,0,0,0,60000
665,0,0,0,0,120000
//-- NPC_WIDESTONE
666,0,0,0,0,30000
666,0,0,0,0,20000
//-- NPC_WIDECONFUSE
667,0,0,0,0,30000
//-- NPC_WIDESLEEP

View File

@ -122,16 +122,16 @@ void initChangeTables(void)
memset(StatusChangeFlagTable, 0, sizeof(StatusChangeFlagTable));
//First we define the skill for common ailments. These are used in skill_additional_effect through sc cards. [Skotlex]
set_sc( MG_STONECURSE , SC_STONE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
set_sc( MG_FROSTDIVER , SC_FREEZE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
set_sc( NPC_PETRIFYATTACK , SC_STONE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
set_sc( NPC_WIDEFREEZE , SC_FREEZE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
set_sc( NPC_STUNATTACK , SC_STUN , SI_BLANK , SCB_NONE );
set_sc( NPC_SLEEPATTACK , SC_SLEEP , SI_BLANK , SCB_NONE );
set_sc( NPC_POISON , SC_POISON , SI_BLANK , SCB_DEF2|SCB_REGEN );
set_sc( NPC_CURSEATTACK , SC_CURSE , SI_BLANK , SCB_LUK|SCB_BATK|SCB_WATK|SCB_SPEED );
set_sc( NPC_SILENCEATTACK , SC_SILENCE , SI_BLANK , SCB_NONE );
set_sc( DC_WINKCHARM , SC_CONFUSION , SI_BLANK , SCB_NONE );
set_sc( NPC_WIDECONFUSE , SC_CONFUSION , SI_BLANK , SCB_NONE );
set_sc( NPC_BLINDATTACK , SC_BLIND , SI_BLANK , SCB_HIT|SCB_FLEE );
set_sc( LK_HEADCRUSH , SC_BLEEDING , SI_BLEEDING , SCB_REGEN );
set_sc( NPC_BLEEDING , SC_BLEEDING , SI_BLEEDING , SCB_REGEN );
set_sc( NPC_POISON , SC_DPOISON , SI_BLANK , SCB_DEF2|SCB_REGEN );
//The main status definitions
@ -4535,14 +4535,14 @@ int status_get_sc_def(struct block_list *bl, enum sc_type type, int rate, int ti
sc_def = 3 +status->mdef;
break;
case SC_CURSE:
//Special property: inmunity when luk is greater than level
if (status->luk > status_get_lv(bl))
//Special property: inmunity when luk is greater than level or zero
if (status->luk > status_get_lv(bl) || status->luk == 0)
return 0;
else
sc_def = 3 +status->luk;
tick_def = status->vit;
break;
case SC_BLIND: //TODO: These 50/50 factors are guessed. Need to find actual value.
case SC_BLIND:
sc_def = 3 +(status->vit + status->int_)/2;
break;
case SC_CONFUSION: