From ec655a58ffb1dc5d37a504aaac51f5393a1a81fb Mon Sep 17 00:00:00 2001 From: celest Date: Fri, 7 Jan 2005 07:28:20 +0000 Subject: * Added 'bDelayrate' and changed Phen card, Marduk Card and Berzebub Card's effects to use this * Some tidying up of skill_castfix and skill_delayfix git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@928 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog.txt | 4 ++++ db/Changelog.txt | 6 ++++++ db/const.txt | 3 +++ db/item_db.txt | 8 ++++---- db/skill_cast_db.txt | 8 ++++---- db/skill_require_db.txt | 4 ++-- src/map/map.h | 8 ++++---- src/map/pc.c | 5 +++++ src/map/skill.c | 17 ++++++++--------- 9 files changed, 40 insertions(+), 23 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 89d36d8b9..62ed62185 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,9 @@ Date Added 01/07 + * Added 'bDelayrate' and changed Phen card, Marduk Card and Berzebub Card's + effects to use this instead of bCastrate (which was reducing casting time, + not delay time) [celest] + * Some tidying up of skill_castfix and skill_delayfix [celest] * Added Filougarou's fix for Bowling Bash causing it to only display damage, but doesn't do any - thanks! [celest] * Set delay_dependon_dex in battle_athena to 'no' by default [celest] diff --git a/db/Changelog.txt b/db/Changelog.txt index bf3fe98f6..08e6bf4c7 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -5,6 +5,12 @@ Ayathoya items == Added but no effect ( all are "ect" itens) Skill databases == celest working on them i believe. +01/07 + * Added midas' fix for Hammerfall and Adrenaline Rush [celest] + * Added 'bDelayrate' and changed Phen card, Marduk Card and Berzebub Card's + effects to use this instead of bCastrate (which was reducing casting time, + not delay time) [celest] + 01/05 * Added DracoRPG's changes [celest] - changed Gungnir to wind element diff --git a/db/const.txt b/db/const.txt index 36e826e71..63c502fba 100644 --- a/db/const.txt +++ b/db/const.txt @@ -215,6 +215,9 @@ bDisguise 1077 bClassChange 1078 bHPDrainValue 1079 bSPDrainValue 1080 +bWeaponAtk 1081 +bWeaponAtkRate 1082 +bDelayrate 1083 bRestartFullRecover 2000 bNoCastCancel 2001 diff --git a/db/item_db.txt b/db/item_db.txt index 9382a9620..4c3bcecdf 100644 --- a/db/item_db.txt +++ b/db/item_db.txt @@ -1097,7 +1097,7 @@ 4074,BigFoot_Card,BigFoot Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bSubRace,4,30; } 4075,Argos_Card,Argos Card,6,20,0,10,,,,,,,32,,,,{},{ bonus2 bResEff,Eff_Stone,2000; bonus bDef,1; } 4076,Magnolia_Card,Magnolia Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddEff,Eff_Curse,500; bonus bBaseAtk,5; } -4077,Phen_Card,Phen Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bNoCastCancel,0; bonus bCastrate,25; } +4077,Phen_Card,Phen Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bNoCastCancel,0; bonus bDelayrate,25; } 4078,Savage_Card,Savage Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bVit,3; } 4079,Mantis_Card,Mantis Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bStr,3; } 4080,Flora_Card,Flora Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,5,20; } @@ -1132,7 +1132,7 @@ 4109,Jakk_Card,Jakk Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,3,30; bonus bFlee,5; } 4110,Ghoul_Card,Ghoul Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Poison,2000; bonus bDef,1; } 4111,Strouf_Card,Strouf Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bAddRace,6,20; } -4112,Marduk_Card,Marduk Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Silence,10000; } +4112,Marduk_Card,Marduk Card,6,20,0,10,,,,,,,769,,,,{},{ bonus2 bResEff,Eff_Silence,10000; bonus bDelayrate,-5; } 4113,Marionette_Card,Marionette Card,6,20,0,10,,,,,,,4,,,,{},{ bonus2 bSubEle,8,30; bonus bFlee,5; } 4114,Argiope_Card,Argiope Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bDefEle,5; bonus bDef,1; } 4115,Hunter_Fly_Card,Hunter Fly Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bHpDrainRate,3,15; } @@ -1165,7 +1165,7 @@ 4142,Doppelganger_Card,Doppelganger Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAspdRate,15; } 4143,Orc_Hero_Card,Orc Hero Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bVit,3; bonus2 bResEff,Eff_Stan,10000; } 4144,Osiris_Card,Osiris Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bRestartFullRecover,0; } -4145,Berzebub_Card,Berzebub Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bCastrate,-30; bonus bMaxSPrate,-15; bonus bMaxHPrate,-5; } +4145,Berzebub_Card,Berzebub Card,6,20,0,10,,,,,,,136,,,,{},{ bonus bDelayrate,-30; bonus bMaxSPrate,-15; bonus bMaxHPrate,-5; } 4146,Maya_Card,Maya Card,6,20,0,10,,,,,,,32,,,,{},{ bonus bMagicDamageReturn,30; } 4147,Baphomet_Card,Baphomet Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bHit,-10; bonus bSplashRange,1; } 4148,Pharaoh_Card,Pharaoh Card,6,20,0,10,,,,,,,769,,,,{},{ bonus bUseSPrate,-30; } @@ -1181,7 +1181,7 @@ 4158,Dark_Priest_Card,Dark Priest Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-15; } 4159,Punk_Card,Punk Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-5; } 4160,Zherlthsh_Card,Zherlthsh Card,6,20,0,10,,,,,,,4,,,,{},{ bonus bUseSPrate,-10; } -4161,Mysteltainn_Card,Mysteltainn Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAtk,30; bonus bMaxHPrate,-22; bonus bCastrate,-10; } +4161,Mysteltainn_Card,Mysteltainn Card,6,20,0,10,,,,,,,64,,,,{},{ bonus bAtk,30; bonus bMaxHPrate,-22; bonus bDelayrate,-10; } 4162,Tirfing_Card,Tirfing Card,6,20,0,10,,,,,,,2,,,,{},{ bonus bAgi,3; bonus bFlee,10; } 4163,Executioner_Card,Executioner Card,6,20,0,10,,,,,,,2,,,,{},{ bonus2 bRandomAttackIncrease,300, 4; } 4164,Anolian_Card,Anolian Card,6,20,0,10,,,,,,,16,,,,{},{ bonus bStr,2; } diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index 342212dbb..af93d845d 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -270,7 +270,7 @@ 476,1000,1000,75000:90000:105000:120000:135000,0 //ST_FULLSTRIP## 479,2000,0,120000:240000:360000:480000:600000,0 //CR_FULLPROTECTION## -10010,100,60000,0 //GD_BATTLEORDER## -10011,100,60000,0 //GD_REGENERATION## -10012,100,0,0 //GD_RESTORE## -10013,100,0,0 //GD_EMERGENCYCALL## +10010,100,1000,60000,0 //GD_BATTLEORDER## +10011,100,1000,60000,0 //GD_REGENERATION## +10012,100,1000,0,0 //GD_RESTORE## +10013,100,1000,0,0 //GD_EMERGENCYCALL## diff --git a/db/skill_require_db.txt b/db/skill_require_db.txt index 317badb90..ec109af85 100644 --- a/db/skill_require_db.txt +++ b/db/skill_require_db.txt @@ -85,8 +85,8 @@ 108,0,0,5,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_REPAIRWEAPON#武器修理# -110,0,0,10,0,0,0,7:8,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_HAMMERFALL#ハンマ?フォ?ル# -111,0,0,20:23:26:29:32,0,0,0,6:7:8:9,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_ADRENALINE#アドレナリンラッシュ# +110,0,0,10,0,0,0,6:7:8,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_HAMMERFALL#ハンマ?フォ?ル# +111,0,0,20:23:26:29:32,0,0,0,6:7:8,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_ADRENALINE#アドレナリンラッシュ# 112,0,0,18:16:14:12:10,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_WEAPONPERFECT#ウェポンパ?フェクション# 113,0,0,18:16:14:12:10,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_OVERTHRUST#オ?バ?トラスト# 114,0,0,10,0,0,0,99,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //BS_MAXIMIZE#マキシマイズパワ?# diff --git a/src/map/map.h b/src/map/map.h index acc285d67..99e4b5285 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -240,7 +240,7 @@ struct map_session_data { int watk,watk2,atkmods[3]; int def,def2,mdef,mdef2,critical,matk1,matk2; int atk_ele,def_ele,star,overrefine; - int castrate,hprate,sprate,dsprate; + int castrate,delayrate,hprate,sprate,dsprate; int addele[10],addrace[12],addsize[3],subele[10],subrace[12]; int addeff[10],addeff2[10],reseff[10]; int watk_,watk_2,atkmods_[3],addele_[10],addrace_[12],addsize_[3]; //二刀流のために追加 @@ -616,11 +616,11 @@ enum { SP_DISGUISE,SP_CLASSCHANGE, // 1077-1078 SP_HP_DRAIN_VALUE,SP_SP_DRAIN_VALUE, // 1079-1080 SP_WEAPON_ATK,SP_WEAPON_ATK_RATE, // 1081-1082 + SP_DELAYRATE, // 1083 SP_RESTART_FULL_RECORVER=2000,SP_NO_CASTCANCEL,SP_NO_SIZEFIX,SP_NO_MAGIC_DAMAGE,SP_NO_WEAPON_DAMAGE,SP_NO_GEMSTONE, // 2000-2005 - SP_NO_CASTCANCEL2,SP_INFINITE_ENDURE,SP_UNBREAKABLE_WEAPON,SP_UNBREAKABLE_ARMOR, SP_UNBREAKABLE_HELM, - SP_UNBREAKABLE_SHIELD, // 2006-2011 - SP_LONG_ATK_RATE // 2012 - celest + SP_NO_CASTCANCEL2,SP_INFINITE_ENDURE,SP_UNBREAKABLE_WEAPON,SP_UNBREAKABLE_ARMOR, SP_UNBREAKABLE_HELM, // 2006-2010 + SP_UNBREAKABLE_SHIELD, SP_LONG_ATK_RATE // 2011-2012 }; enum { diff --git a/src/map/pc.c b/src/map/pc.c index 7fff1f1ae..eb22b8376 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1296,6 +1296,7 @@ int pc_calcstatus(struct map_session_data* sd,int first) sd->hprate=battle_config.hp_rate; sd->sprate=battle_config.sp_rate; sd->castrate=100; + sd->delayrate=100; sd->dsprate=100; sd->base_atk=0; sd->arrow_atk=0; @@ -2722,6 +2723,10 @@ int pc_bonus(struct map_session_data *sd,int type,int val) if(sd->status.weapon == 11 && sd->state.lr_flag != 2) sd->atk_rate += val; break; + case SP_DELAYRATE: + if(sd->state.lr_flag != 2) + sd->delayrate+=val; + break; default: if(battle_config.error_log) printf("pc_bonus: unknown type %d %d !\n",type,val); diff --git a/src/map/skill.c b/src/map/skill.c index c767d9f15..cf99a8615 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7398,7 +7398,6 @@ int skill_castfix( struct block_list *bl, int time ) struct map_session_data *sd = NULL; struct mob_data *md; // [Valaris] struct status_change *sc_data; - int dex; int castrate=100; int skill,lv; @@ -7417,7 +7416,6 @@ int skill_castfix( struct block_list *bl, int time ) if(lv <= 0) return 0; sc_data = battle_get_sc_data(bl); - dex=battle_get_dex(bl); if (skill > MAX_SKILL_DB || skill < 0) return 0; @@ -7430,11 +7428,9 @@ int skill_castfix( struct block_list *bl, int time ) if(time==0) return 0; if (sd) { - if(skill_get_castnodex(skill, lv) > 0) + if(!skill_get_castnodex(skill, lv) > 0) { castrate=((struct map_session_data *)bl)->castrate; - else { - castrate=((struct map_session_data *)bl)->castrate; - time=time*castrate*(battle_config.castrate_dex_scale - dex)/(battle_config.castrate_dex_scale * 100); + time=time*castrate*(battle_config.castrate_dex_scale - battle_get_dex(bl))/(battle_config.castrate_dex_scale * 100); time=time*battle_config.cast_rate/100; } } @@ -7455,6 +7451,7 @@ int skill_delayfix( struct block_list *bl, int time ) struct status_change *sc_data; struct map_session_data *sd = NULL; int skill,lv = 0; + int delayrate=100; nullpo_retr(0, bl); @@ -7473,12 +7470,14 @@ int skill_delayfix( struct block_list *bl, int time ) time = battle_get_adelay (bl)/2; if(sd) { + delayrate=((struct map_session_data *)bl)->delayrate; + if(battle_config.delay_dependon_dex && /* dexの影響を計算する */ !skill_get_delaynodex(skill, lv)) // if skill casttime is allowed to be reduced by dex - time=time*(battle_config.castrate_dex_scale - battle_get_dex(bl))/battle_config.castrate_dex_scale; + time=time*delayrate*(battle_config.castrate_dex_scale - battle_get_dex(bl))/(battle_config.castrate_dex_scale * 100); + + time=time*battle_config.delay_rate/100; } - - time=time*battle_config.delay_rate/100; /* ブラギの詩 */ if(sc_data && sc_data[SC_POEMBRAGI].timer!=-1 ) -- cgit v1.2.3-70-g09d2