From fc9bda5ac3dff71807027e0b09aae72f817909a0 Mon Sep 17 00:00:00 2001 From: skotlex Date: Mon, 30 Oct 2006 20:31:28 +0000 Subject: - Corrected GS skill ranges using Aegis data. All their targetted skills have a base range of 9 T_T, and Dust (Choke) has a range of 2. - Updated the code so mobs can use ChainAction as a targetted skill. - Added GroundDrift effects for Wind (Stun) and Fire (knockback). The knockback value is unknown, so 3 is used for now. - Cleaned up some more the steal code, now you can't steal the last slot regardless of skill level used. - Added consideration of Chain Action when cloning GunSlingers. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9100 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 7 +++++++ db/Changelog.txt | 4 ++++ db/skill_db.txt | 30 +++++++++++++++--------------- src/map/battle.c | 2 ++ src/map/mob.c | 3 ++- src/map/pc.c | 28 ++++++++++++---------------- src/map/skill.c | 7 +++++++ 7 files changed, 49 insertions(+), 32 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index e2d98da83..4c80e2c4a 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. 2006/10/30 + * Updated the code so mobs can use ChainAction as a targetted skill. + [Skotlex] + * Added GroundDrift effects for Wind (Stun) and Fire (knockback). The + knockback value is unknown, so 3 is used for now. [Skotlex] + * Cleaned up some more the steal code, now you can't steal the last slot + regardless of skill level used. [Skotlex] + * Added consideration of Chain Action when cloning GunSlingers. [Skotlex] * Modified battle_calc_return_damage to take the skill id as well, now magic damage return will not work on skills tagged as ground or self targetted. [Skotlex] diff --git a/db/Changelog.txt b/db/Changelog.txt index c91bd6dee..5290f3351 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -20,6 +20,10 @@ ======================== 10/30 + * Corrected GS skill ranges using Aegis data. All their targetted skills + have a base range of 9, and Dust (Choke) has a range of 2. [Skotlex] + * Gave Grounddrift a knockback of 3 for the fire-elemental effect (value + totally custom) * Set the inf2 to encore skills of Wand of Hermode [Skotlex] 10/29 * Official NJ/GS exp chart for level 1-48 [Playtester] diff --git a/db/skill_db.txt b/db/skill_db.txt index 751d9c5a4..e57e41903 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -525,27 +525,27 @@ 499,-9,8,4,-1,0,0,1,2,no,0,520,0,weapon,0 //HT_POWER#Beast Strafing# //Temp Plugs(using bash as base) 500,0,6,4,0,0,0,5,1,no,0,0,0,misc,0 //GS_GLITTERING#Flip the Coin# -501,-3,6,1,-1,0,0,1,1,no,0,0,0,misc,0 //GS_FLING#Fling# -502,-3,8,1,-1,0,0,1,3,no,0,0,0,weapon,0 //GS_TRIPLEACTION#Triple Action# -503,-3,6,1,-1,0,0,1,1,no,0,0,0,weapon,0 //GS_BULLSEYE#Bulls Eye# +501,9,6,1,-1,0,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,0,0,1,1,no,0,0,0,weapon,0 //GS_BULLSEYE#Bulls Eye# 504,0,6,4,0,1,0,1,1,no,0,0,0,weapon,0 //GS_MADNESSCANCEL#Madness Canceler# 505,0,6,4,0,1,0,1,1,no,0,0,0,weapon,0 //GS_ADJUSTMENT#AdJustment# 506,0,6,4,0,1,0,1,1,no,0,0,0,weapon,0 //GS_INCREASING#Increasing Accuracy# -507,-3,6,1,8,0,0,1,1,no,0,0,0,weapon,0 //GS_MAGICALBULLET#Magical Bullet# -508,-3,6,1,-1,1,0,1,1,no,0,0,0,weapon,0 //GS_CRACKER#Cracker# -509,-3,0,0,0,0,0,10,0,no,0,0,0,none,0 //GS_SINGLEACTION#Single Action# +507,-9,6,1,8,0,0,1,1,no,0,0,0,weapon,0 //GS_MAGICALBULLET#Magical Bullet# +508,-9,6,1,-1,1,0,1,1,no,0,0,0,weapon,0 //GS_CRACKER#Cracker# +509,0,0,0,0,0,0,10,0,no,0,0,0,none,0 //GS_SINGLEACTION#Single Action# 510,0,0,0,0,0,0,10,0,no,0,0,0,none,0 //GS_SNAKEEYE#Snake Eye# -511,-3,8,0,-1,0,0,10,2,no,0,0,0,weapon,0 //GS_CHAINACTION#Chain Action# -512,3,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //GS_TRACKING#Tracking# -513,7,6,1,-1,1,0,5,1,no,0,0,0,weapon,0 //GS_DISARM#Disarm# -514,3,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //GS_PIERCINGSHOT#Piercing Shot# -515,3,8,1,-1,0,0,10,5,no,0,0,0,weapon,0 //GS_RAPIDSHOWER#Rapid Shower# +511,-9,8,0,-1,0,0,10,2,no,0,0,0,weapon,0 //GS_CHAINACTION#Chain Action# +512,-9,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //GS_TRACKING#Tracking# +513,-9,6,1,-1,1,0,5,1,no,0,0,0,weapon,0 //GS_DISARM#Disarm# +514,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0 //GS_PIERCINGSHOT#Piercing Shot# +515,-9,8,1,-1,0,0,10,5,no,0,0,0,weapon,0 //GS_RAPIDSHOWER#Rapid Shower# 516,0,8,4,-1,2,3,10,1,no,0,0,0,weapon,0 //GS_DESPERADO#Desperado# 517,0,6,4,-1,1,0,10,1,no,0,0,0,weapon,0 //GS_GATLINGFEVER#Gatling Fever# -518,3,6,1,-1,0,0,10,1,no,0,0,0,weapon,5 //GS_DUST#Dust# -519,3,6,1,-1,0,0,10,1,yes,0,0,0,weapon,0 //GS_FULLBUSTER#Full Buster# -520,3,6,1,-1,2,1:1:1:2:2:2:3:3:3:4,10,1,no,0,0,0,weapon,0 //GS_SPREADATTACK#Spread Attack# -521,3,6,2,-1,0,0,10,1,no,0,0,0,weapon,0 //GS_GROUNDDRIFT#Ground Drift# +518,2,6,1,-1,0,0,10,1,no,0,0,0,weapon,5 //GS_DUST#Dust# +519,-9,6,1,-1,0,0,10,1,yes,0,0,0,weapon,0 //GS_FULLBUSTER#Full Buster# +520,-9,6,1,-1,2,1:1:1:2:2:2:3:3:3:4,10,1,no,0,0,0,weapon,0 //GS_SPREADATTACK#Spread Attack# +521,-9,6,2,-1,0,0,10,1,no,0,0,0,weapon,3 //GS_GROUNDDRIFT#Ground Drift# 522,0,0,0,0,0,0,10,1,no,0,0,0,weapon,0 //NJ_TOBIDOUGU#NJ_TOBIDOUGU# 523,9,6,1,-1,0,0,10,1,no,0,0,0,weapon,0 //NJ_SYURIKEN#NJ_SYURIKEN# 524,9,8,1,-1,0,0,5,3,no,0,0,0,weapon,0 //NJ_KUNAI#NJ_KUNAI# diff --git a/src/map/battle.c b/src/map/battle.c index 6d6c928d7..4e1f2692c 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -911,6 +911,7 @@ static struct Damage battle_calc_weapon_attack( break; case TF_DOUBLE: //For NPC used skill. + case GS_CHAINACTION: wd.type = 0x08; break; @@ -918,6 +919,7 @@ static struct Damage battle_calc_weapon_attack( case KN_BOWLINGBASH: case MO_BALKYOUNG: case TK_TURNKICK: + case GS_GROUNDDRIFT: wd.blewcount=0; break; diff --git a/src/map/mob.c b/src/map/mob.c index 61789b7fc..fe0b323ee 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -3006,10 +3006,11 @@ int mob_clone_spawn(struct map_session_data *sd, int m, int x, int y, const char switch (skill_id) { //Certain Special skills that are passive, and thus, never triggered. case MO_TRIPLEATTACK: case TF_DOUBLE: + case GS_CHAINACTION: ms[i].state = MSS_BERSERK; ms[i].target = MST_TARGET; ms[i].cond1 = MSC_ALWAYS; - ms[i].permillage = skill_id==TF_DOUBLE?(ms[i].skill_lv*500):(3000-ms[i].skill_lv*100); + ms[i].permillage = skill_id==MO_TRIPLEATTACK?(3000-ms[i].skill_lv*100):(ms[i].skill_lv*500); ms[i].delay -= 5000; //Remove the added delay as these could trigger on "all hits". break; default: //Untreated Skill diff --git a/src/map/pc.c b/src/map/pc.c index 210181527..5ad01d285 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3173,25 +3173,24 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, int lv) if(!sd || !bl || bl->type!=BL_MOB) return 0; + md = (TBL_MOB *)bl; + + if(md->state.steal_flag == UCHAR_MAX || md->sc.opt1) //already stolen from / status change check + return 0; + sd_status= status_get_status_data(&sd->bl); md_status= status_get_status_data(bl); - md = (TBL_MOB *)bl; - if(md->state.steal_flag == UCHAR_MAX || //already stolen from - md_status->mode&MD_BOSS || md->master_id || + if(md->master_id || md_status->mode&MD_BOSS || (md->class_>=1324 && md->class_<1364) || // prevent stealing from treasure boxes [Valaris] - map[md->bl.m].flag.nomobloot || // check noloot map flag [Lorky] - md->sc.opt1 //status change check - ) - return 0; - - if(battle_config.skill_steal_max_tries && - md->state.steal_flag++ >= battle_config.skill_steal_max_tries) - { //Reached limit of steal attempts. + map[bl->m].flag.nomobloot || // check noloot map flag [Lorky] + (battle_config.skill_steal_max_tries && //Reached limit of steal attempts. [Lupus] + md->state.steal_flag++ >= battle_config.skill_steal_max_tries) + ) { //Can't steal from md->state.steal_flag = UCHAR_MAX; return 0; } - + rate = battle_config.skill_steal_type ? (sd_status->dex - md_status->dex)/2 + lv*6 + 10 : (sd_status->dex - md_status->dex) + lv*3 + 10; @@ -3203,10 +3202,7 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl, int lv) //preliminar statistical data hints at this behaviour: //each steal attempt: try to steal against ONE mob drop, and no more. - if (lv > 5) //Include last slot (card slot) - i = rand()%MAX_MOB_DROP; - else //Do not include card slot - i = rand()%(MAX_MOB_DROP-1); + i = rand()%(MAX_MOB_DROP-1); //You can't steal from the last slot. if(rand() % 10000 >= md->db->dropitem[i].p*rate/100) return 0; diff --git a/src/map/skill.c b/src/map/skill.c index 3c8a956e8..724c915ba 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2714,6 +2714,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int case HT_POWER: case TK_DOWNKICK: case TK_COUNTER: + case GS_CHAINACTION: case GS_TRIPLEACTION: case GS_MAGICALBULLET: case GS_TRACKING: @@ -7317,6 +7318,9 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns switch (sg->val1) { + case ELE_WIND: + sc_start(bl,SC_STUN,5,sg->skill_lv,skill_get_time2(sg->skill_id, sg->skill_lv)); + break; case ELE_WATER: sc_start(bl,SC_FREEZE,5,sg->skill_lv,skill_get_time2(sg->skill_id, sg->skill_lv)); break; @@ -7326,6 +7330,9 @@ int skill_unit_onplace_timer (struct skill_unit *src, struct block_list *bl, uns case ELE_DARK: sc_start(bl,SC_BLIND,5,sg->skill_lv,skill_get_time2(sg->skill_id, sg->skill_lv)); break; + case ELE_FIRE: + skill_blown(&src->bl,bl,skill_get_blewcount(sg->skill_id,sg->skill_lv)); + break; } sg->unit_id = UNT_USED_TRAPS; -- cgit v1.2.3-70-g09d2