From a09b9f87fa701f19001c2fb312c88c2496816197 Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 5 Mar 2007 22:00:01 +0000 Subject: - Added NK value 0x80: ignore target's cards (0x8 will now only ignore attacker's cards). - Corrected the NK values of skills (0x08 -> 0x80): Self Destruction, Smoking, Pressure, Fling, Zeny Nage, BioExplosion - Soul Burn & Gravitation got NK 0x80 (previously hardcoded) - Corrected Soul Breaker ignoring target's cards instead of the caster's. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9967 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 4 ++++ db/Changelog.txt | 3 +++ db/skill_db.txt | 21 +++++++++++---------- src/map/battle.c | 28 ++++++++++++++++------------ src/map/skill.h | 3 ++- 5 files changed, 36 insertions(+), 23 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 89e167095..77d497541 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,10 @@ 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. 2007/03/06 + * Added NK value 0x80: ignore target's cards (0x8 will now only ignore + attacker's cards). + * Corrected Soul Breaker ignoring target's cards instead of the caster's. + [Skotlex] * Fixed an infinite loop if script name contains a single ':' [Toms] * Simplified the Utsusemi/Bunsinjyutsu check to only block weapon skills that do not ignore offensive cards. [Skotlex] diff --git a/db/Changelog.txt b/db/Changelog.txt index 2ff448554..9216a4c09 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -20,6 +20,9 @@ ======================== 03/06 + * Corrected the NK values of skills (0x08 -> 0x80): Self Destruction, + Smoking, Pressure, Fling, Zeny Nage, BioExplosion + * Soul Burn & Gravitation got NK 0x80 (previously hardcoded) [Skotlex] * Added various new headgears thanks to Argatlahm [Playtester] - some headgears might not be fully official, feel free to report bugs if you find any - also updated item_db.sql diff --git a/db/skill_db.txt b/db/skill_db.txt index c9ec2a498..5332257e4 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -6,14 +6,15 @@ // 04 inf (0- passive, 1- enemy, 2- place, 4- self, 16- friend, 32- trap) // 05 pl attributes (0- neutral, 1- water, 2- earth, 3- fire, 4- wind, // 5- poison, 6- saint, 7- darkness, 8- sense, 9- immortality) -// 06 nk ( +// 06 nk (skill damage properties): // 0x01 - No damage skill // 0x02 - Has splash area // 0x04 - Damage should be split among targets -// 0x08 - Skill ignores caster's % damage cards +// 0x08 - Skill ignores caster's % damage cards (misc type always ignores) // 0x10 - Skill ignores elemental adjustments // 0x20 - Skill ignores target's defense (misc type always ignores) // 0x40 - Skill ignores target's flee (magic type always ignores) +// 0x80 - Skill ignores target's def cards // 07 splash/effect range (-1 for screen-wide) // 08 MaxLv // 09 Number of hits (when positive, damage is increased by hits, @@ -210,7 +211,7 @@ 170,-1,6,1,-1,0x20,0,10,1,no,0,0x2,0,weapon,0 //NPC_CRITICALSLASH#Defense disregard attack# 171,-1,8,1,-1,0,0,10,2:3:4:5:6:7:8:9:10:11,no,0,0x2,0,weapon,0 //NPC_COMBOATTACK#Multi-stage Attack# 172,-1,6,1,-1,0x40,0,10,1,no,0,0x2,0,weapon,0 //NPC_GUIDEATTACK#On-target Impact Attack# -173,5,6,4,3,0x5A,5,10,1,no,0,0x2,0,misc,3 //NPC_SELFDESTRUCTION#Suicide bombing# +173,5,6,4,3,0xD2,5,10,1,no,0,0x2,0,misc,3 //NPC_SELFDESTRUCTION#Suicide bombing# 174,-1,6,1,-1,0x2,3,1,1,no,0,0x2,0,weapon,0 //NPC_SPLASHATTACK#Splash attack# 175,0,0,4,0,0x41,0,10,1,no,0,0x2,0,misc,0 //NPC_SUICIDE#Suicide# 176,-1,6,1,-1,0,0,5,1,no,0,0x2,0,weapon,0 //NPC_POISON#Poison Attack# @@ -232,7 +233,7 @@ 192,-1,6,1,-1,0,0,10,1,no,0,0x2,0,weapon,0 //NPC_MAGICALATTACK#Demon Shock Attack# 193,0,0,4,0,0x1,0,10,1,no,0,0x2,0,none,0 //NPC_METAMORPHOSIS#Metamorphosis# 194,0,0,4,0,0x1,0,10,1,no,0,0x2,0,none,0 //NPC_PROVOCATION#Provocation# -195,0,6,4,0,0x58,0,10,1,no,0,0x2,0,misc,0 //NPC_SMOKING#Smoking# +195,0,6,4,0,0xD0,0,10,1,no,0,0x2,0,misc,0 //NPC_SMOKING#Smoking# 196,0,0,4,0,0x1,0,10,1,no,0,0x2,0,magic,0 //NPC_SUMMONSLAVE#Follower Summons# 197,0,0,4,0,0x1,0,10,1,no,0,0x2,0,none,0 //NPC_EMOTION#Emotion# 198,0,0,4,0,0x1,0,10,1,no,0,0x2,0,magic,0 //NPC_TRANSFORMATION#Transformation# @@ -404,7 +405,7 @@ 364,0,0,0,0,0,0,10,1,no,0,0,0,magic,0 //HW_SOULDRAIN#Soul Drain# 365,9,8,1,-1,0,0,1,1,yes,0,0,0,weapon,0 //HW_MAGICCRASHER#Stave Crasher# 366,0,6,4,0,0x1,0,10,1,no,0,0,0,magic,0 //HW_MAGICPOWER#Mystical Amplification# -367,9,8,1,0,0x58,0,5,1,no,0,0,0,misc,0 //PA_PRESSURE#Gloria Domini# +367,9,8,1,0,0xD0,0,5,1,no,0,0,0,misc,0 //PA_PRESSURE#Gloria Domini# 368,0,6,4,0,0x61,0,5,1,yes,0,0,0,weapon,0 //PA_SACRIFICE# Martyr's Reckoning# 369,0,6,4,0,0x41,0,10,1,yes,0,0,0,misc,0 //PA_GOSPEL#Battle Chant# 370,-2,6,1,-1,0,0,5,1,yes,0,0,0,weapon,3 //CH_PALMSTRIKE#Raging Palm Strike# @@ -412,7 +413,7 @@ 372,-2,8,4,-1,0,0,10,-1:-1:-2:-2:-3:-3:-4:-4:-5:-5,no,0,0x200,0,weapon,0 //CH_CHAINCRUSH#Chain Crush Combo# 373,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0 //PF_HPCONVERSION#Health Conversion# 374,9,6,16,0,0x1,0,1,1,yes,0,0x1E00,0,none,0 //PF_SOULCHANGE#Soul Exhale# -375,9,6,1,0,0x18,0,5,1,yes,0,0,0,magic,0 //PF_SOULBURN#Soul Siphon# +375,9,6,1,0,0x98,0,5,1,yes,0,0,0,magic,0 //PF_SOULBURN#Soul Siphon# 376,0,0,0,0,0x1,0,5,1,no,0,0,0,weapon,0 //ASC_KATAR#Advanced Katar Mastery# //377,0,0,4,0,0x1,0,10,1,no,0,0,0,misc,0 //ASC_HALLUCINATION#Hallucination Walk# 378,0,6,4,5,0x1,0,5,1,no,0,0,0,weapon,0 //ASC_EDP#Deadly Poison Enchantment# @@ -521,7 +522,7 @@ 481,0,0,0,0,0,0,5,0,no,0,0,0,none,0 //HP_MANARECHARGE#Mana Recharge# 482,0,6,4,0,0x1,0,5,1,no,0,0,0,magic,0 //PF_DOUBLECASTING#Double Casting# 483,9,6,2,0,0x1,1,1,1,no,0,0,0,none,0 //HW_GANBANTEIN#Ganbantein# -484,9,6,2,2,0x31,0,5,1,yes,0,0,0,magic,0 //HW_GRAVITATION#Gravity Field# +484,9,6,2,2,0xB1,0,5,1,yes,0,0,0,magic,0 //HW_GRAVITATION#Gravity Field# 485,-2,6,1,-1,0x8,0,10,1,no,0,0,0,weapon,0 //WS_CARTTERMINATION#Cart Termination# 486,0,6,4,0,0x1,0,5,1,no,0,0,0,weapon,0 //WS_OVERTHRUSTMAX#Maximum Power Thrust# 487,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0 //CG_LONGINGFREEDOM#Longing for Freedom# @@ -538,7 +539,7 @@ 498,0,6,4,0,0x1,0,1,0,no,0,0x8,0,none,0 //AM_TWILIGHT3#Twilight Alchemy 3# 499,-9,8,4,-1,0,0,1,2,no,0,0x208,0,weapon,0 //HT_POWER#Beast Strafing# 500,0,6,4,0,0x40,0,5,1,no,0,0,0,misc,0 //GS_GLITTERING#Flip the Coin# -501,9,6,1,-1,0x58,0,1,1,no,0,0,0,misc,0 //GS_FLING#Fling# +501,9,6,1,-1,0xD0,0,1,1,no,0,0,0,misc,0 //GS_FLING#Fling# 502,-9,8,1,-1,0,0,1,3,no,0,0,0,weapon,0 //GS_TRIPLEACTION#Triple Action# 503,-9,6,1,-1,0x8,0,1,1,no,0,0,0,weapon,0 //GS_BULLSEYE#Bulls Eye# 504,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0 //GS_MADNESSCANCEL#Madness Canceler# @@ -563,7 +564,7 @@ 523,9,6,1,-1,0x40,0,10,1,no,0,0,0,weapon,0 //NJ_SYURIKEN#NJ_SYURIKEN# 524,9,8,1,-1,0x40,0,5,3,no,0,0,0,weapon,0 //NJ_KUNAI#NJ_KUNAI# 525,9,8,1,-1,0x6,1,5,-3:-3:-4:-4:-5,yes,0,0,0,weapon,0 //NJ_HUUMA#NJ_HUUMA# -526,9,6,1,0,0x58,0,10,1,no,0,0,0,misc,0 //NJ_ZENYNAGE#NJ_ZENYNAGE# +526,9,6,1,0,0xD0,0,10,1,no,0,0,0,misc,0 //NJ_ZENYNAGE#NJ_ZENYNAGE# 527,0,6,4,-1,0,0,5,1,no,0,0,0,weapon,3 //NJ_TATAMIGAESHI#NJ_TATAMIGAESHI# 528,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //NJ_KASUMIKIRI#NJ_KASUMIKIRI# 529,7:9:11:13:15,6,2,0,0x1,0,5,1,no,0,0,0,none,0 //NJ_SHADOWJUMP#NJ_SHADOWJUMP# @@ -618,7 +619,7 @@ 8013,9,6,1,0,0,0,5,1:2:3:4:5,no,0,0,0,magic,0 //HVAN_CAPRICE 8014,0,6,4,0,0x1,0,5,0,no,0,0,0,none,0 //HVAN_CHAOTIC 8015,0,0,0,0,0x1,0,5,0,no,0,0,0,none,0 //HVAN_INSTRUCT -8016,4,6,4,-1,0x5A,4,3,1,no,0,0,0,misc,0 //HVAN_EXPLOSION +8016,4,6,4,-1,0xD2,4,3,1,no,0,0,0,misc,0 //HVAN_EXPLOSION 10000,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0 //GD_APPROVAL#Approval# 10001,0,0,0,0,0,0,1,0,no,0,0x10,0,none,0 //GD_KAFRACONTRACT#Kafra Contract# diff --git a/src/map/battle.c b/src/map/battle.c index 0b4aa2f69..8a0bd5c7d 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -307,7 +307,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i } if(sc->data[SC_AUTOGUARD].timer != -1 && flag&BF_WEAPON && - !(skill_get_nk(skill_num)&NK_NO_CARDFIX) && + !(skill_get_nk(skill_num)&NK_NO_CARDFIX_ATK) && rand()%100 < sc->data[SC_AUTOGUARD].val2) { int delay; clif_skill_nodamage(bl,bl,CR_AUTOGUARD,sc->data[SC_AUTOGUARD].val1,1); @@ -363,7 +363,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i if ((sc->data[SC_UTSUSEMI].timer != -1 || sc->data[SC_BUNSINJYUTSU].timer != -1) && - flag&BF_WEAPON && !(skill_get_nk(skill_num)&NK_NO_CARDFIX)) + flag&BF_WEAPON && !(skill_get_nk(skill_num)&NK_NO_CARDFIX_ATK)) { if (sc->data[SC_UTSUSEMI].timer != -1) { clif_specialeffect(bl, 462, AREA); @@ -1845,7 +1845,7 @@ static struct Damage battle_calc_weapon_attack( } //Card Fix, sd side - if ((wd.damage || wd.damage2) && !(nk&NK_NO_CARDFIX)) + if ((wd.damage || wd.damage2) && !(nk&NK_NO_CARDFIX_ATK)) { short cardfix = 1000, cardfix_ = 1000; short t_race2 = status_get_race2(target); @@ -1918,17 +1918,21 @@ static struct Damage battle_calc_weapon_attack( } } //if (sd) - //Card Fix, tsd side - Cards always apply on the target. [Skotlex] - if (tsd) { + //Card Fix, tsd sid + if (tsd && !(nk&NK_NO_CARDFIX_DEF)) + { short s_race2,s_class; short cardfix=1000; s_race2 = status_get_race2(src); s_class = status_get_class(src); - cardfix=cardfix*(100-tsd->subele[s_ele])/100; - if (flag.lh && s_ele_ != s_ele) - cardfix=cardfix*(100-tsd->subele[s_ele_])/100; + if (!(nk&NK_NO_ELEFIX)) + { + cardfix=cardfix*(100-tsd->subele[s_ele])/100; + if (flag.lh && s_ele_ != s_ele) + cardfix=cardfix*(100-tsd->subele[s_ele_])/100; + } cardfix=cardfix*(100-tsd->subsize[sstatus->size])/100; cardfix=cardfix*(100-tsd->subrace2[s_race2])/100; cardfix=cardfix*(100-tsd->subrace[sstatus->race])/100; @@ -2364,7 +2368,7 @@ struct Damage battle_calc_magic_attack( if (!(nk&NK_NO_ELEFIX)) ad.damage=battle_attr_fix(src, target, ad.damage, s_ele, tstatus->def_ele, tstatus->ele_lv); - if (sd && !(nk&NK_NO_CARDFIX)) { + if (sd && !(nk&NK_NO_CARDFIX_ATK)) { short t_class = status_get_class(target); short cardfix=1000; @@ -2383,8 +2387,8 @@ struct Damage battle_calc_magic_attack( MATK_RATE(cardfix/10); } - if (tsd && skill_num != HW_GRAVITATION && skill_num != PF_SOULBURN) - { //Card fixes always apply on the target side. [Skotlex] + if (tsd && !(nk&NK_NO_CARDFIX_DEF)) + { //Target cards. short s_race2=status_get_race2(src); short s_class= status_get_class(src); short cardfix=1000; @@ -2605,7 +2609,7 @@ struct Damage battle_calc_misc_attack( } } - if(md.damage && tsd && !(nk&NK_NO_CARDFIX)){ + if(md.damage && tsd && !(nk&NK_NO_CARDFIX_DEF)){ int cardfix = 10000; int race2 = status_get_race2(src); if (!(nk&NK_NO_ELEFIX)) diff --git a/src/map/skill.h b/src/map/skill.h index dc1bcbe23..bc850af21 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -26,10 +26,11 @@ #define NK_NO_DAMAGE 0x01 #define NK_SPLASH (0x02|0x04) // 0x4 = splash & split #define NK_SPLASHSPLIT 0x04 -#define NK_NO_CARDFIX 0x08 +#define NK_NO_CARDFIX_ATK 0x08 #define NK_NO_ELEFIX 0x10 #define NK_IGNORE_DEF 0x20 #define NK_IGNORE_FLEE 0x40 +#define NK_NO_CARDFIX_DEF 0x08 //A skill with 3 would be no damage + splash: area of effect. //Constants to identify a skill's inf2 value. -- cgit v1.2.3-70-g09d2