summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt4
-rw-r--r--db/Changelog.txt6
-rw-r--r--db/const.txt3
-rw-r--r--db/item_db.txt8
-rw-r--r--db/skill_cast_db.txt8
-rw-r--r--db/skill_require_db.txt4
-rw-r--r--src/map/map.h8
-rw-r--r--src/map/pc.c5
-rw-r--r--src/map/skill.c17
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 )