Added skill_steal_type and removed snatcher's steal fail message
git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@231 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
4bb5a9e24e
commit
62574ea526
@ -1,4 +1,10 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
11/17 * Added skill_steal_type to battle_athena.conf for the new (but unconfirmed)
|
||||||
|
stealing formula [celest]
|
||||||
|
* Skill updates: [celest]
|
||||||
|
- Removed annoying skill fail messages from rogue's Snatcher
|
||||||
|
- Add sc_data check for firewall and fogwall
|
||||||
|
|
||||||
11/16
|
11/16
|
||||||
* Fix for compiling against gcc 2.95 [MouseJstr]
|
* Fix for compiling against gcc 2.95 [MouseJstr]
|
||||||
* Added day of week events (OnSat2000) into scripting engine [MouseJstr]
|
* Added day of week events (OnSat2000) into scripting engine [MouseJstr]
|
||||||
|
@ -730,5 +730,8 @@ zeny_from_mobs: no
|
|||||||
// Monsters level up (monster will level up each time a player is killed and they will grow stronger)
|
// Monsters level up (monster will level up each time a player is killed and they will grow stronger)
|
||||||
mobs_level_up: no
|
mobs_level_up: no
|
||||||
|
|
||||||
|
// Use kRO new steal formula?
|
||||||
|
skill_steal_type: yes
|
||||||
|
|
||||||
import: conf/import/battle_conf.txt
|
import: conf/import/battle_conf.txt
|
||||||
|
|
||||||
|
@ -5113,7 +5113,10 @@ static const struct {
|
|||||||
{ "muting_players", &battle_config.muting_players}, // added by [Apple]
|
{ "muting_players", &battle_config.muting_players}, // added by [Apple]
|
||||||
{ "zeny_from_mobs", &battle_config.zeny_from_mobs}, // [Valaris]
|
{ "zeny_from_mobs", &battle_config.zeny_from_mobs}, // [Valaris]
|
||||||
{ "mobs_level_up", &battle_config.mobs_level_up}, // [Valaris]
|
{ "mobs_level_up", &battle_config.mobs_level_up}, // [Valaris]
|
||||||
{ "pk_min_level", &battle_config.pk_min_level}, // [celest]
|
{ "pk_min_level", &battle_config.pk_min_level}, // [celest]
|
||||||
|
{ "skill_steal_type", &battle_config.skill_steal_type}, // [celest]
|
||||||
|
{ "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest]
|
||||||
|
|
||||||
//SQL-only options start
|
//SQL-only options start
|
||||||
#ifndef TXT_ONLY
|
#ifndef TXT_ONLY
|
||||||
{ "mail_system", &battle_config.mail_system }, // added by [Valaris]
|
{ "mail_system", &battle_config.mail_system }, // added by [Valaris]
|
||||||
@ -5336,6 +5339,8 @@ void battle_set_defaults() {
|
|||||||
battle_config.zeny_from_mobs = 0;
|
battle_config.zeny_from_mobs = 0;
|
||||||
battle_config.mobs_level_up = 0;
|
battle_config.mobs_level_up = 0;
|
||||||
battle_config.pk_min_level = 55;
|
battle_config.pk_min_level = 55;
|
||||||
|
battle_config.skill_steal_type = 1;
|
||||||
|
battle_config.skill_steal_rate = 100;
|
||||||
|
|
||||||
battle_config.castrate_dex_scale = 150;
|
battle_config.castrate_dex_scale = 150;
|
||||||
|
|
||||||
|
@ -334,6 +334,8 @@ extern struct Battle_Config {
|
|||||||
int zeny_from_mobs; // [Valaris]
|
int zeny_from_mobs; // [Valaris]
|
||||||
int mobs_level_up; // [Valaris]
|
int mobs_level_up; // [Valaris]
|
||||||
int pk_min_level; // [celest]
|
int pk_min_level; // [celest]
|
||||||
|
int skill_steal_type; // [celest]
|
||||||
|
int skill_steal_rate; // [celest]
|
||||||
|
|
||||||
#ifndef TXT_ONLY /* SQL-only options */
|
#ifndef TXT_ONLY /* SQL-only options */
|
||||||
int mail_system; // [Valaris]
|
int mail_system; // [Valaris]
|
||||||
|
@ -3309,7 +3309,9 @@ int pc_steal_item(struct map_session_data *sd,struct block_list *bl)
|
|||||||
if(!md->state.steal_flag && mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode&0x20) && md->sc_data[SC_STONE].timer == -1 && md->sc_data[SC_FREEZE].timer == -1 &&
|
if(!md->state.steal_flag && mob_db[md->class].mexp <= 0 && !(mob_db[md->class].mode&0x20) && md->sc_data[SC_STONE].timer == -1 && md->sc_data[SC_FREEZE].timer == -1 &&
|
||||||
(!(md->class>1324 && md->class<1364))) // prevent stealing from treasure boxes [Valaris]
|
(!(md->class>1324 && md->class<1364))) // prevent stealing from treasure boxes [Valaris]
|
||||||
{
|
{
|
||||||
skill = sd->paramc[4] - mob_db[md->class].dex + pc_checkskill(sd,TF_STEAL)*3 + 10;
|
skill = battle_config.skill_steal_type == 1
|
||||||
|
? (sd->paramc[4] - mob_db[md->class].dex)/2 + pc_checkskill(sd,TF_STEAL)*6 + 10
|
||||||
|
: sd->paramc[4] - mob_db[md->class].dex + pc_checkskill(sd,TF_STEAL)*3 + 10;
|
||||||
|
|
||||||
if(0 < skill)
|
if(0 < skill)
|
||||||
{
|
{
|
||||||
|
@ -973,8 +973,8 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl,int s
|
|||||||
if((skill*15 + 55) + (skill2 = pc_checkskill(sd,TF_STEAL))*10 > rand()%1000) {
|
if((skill*15 + 55) + (skill2 = pc_checkskill(sd,TF_STEAL))*10 > rand()%1000) {
|
||||||
if(pc_steal_item(sd,bl))
|
if(pc_steal_item(sd,bl))
|
||||||
clif_skill_nodamage(src,bl,TF_STEAL,skill2,1);
|
clif_skill_nodamage(src,bl,TF_STEAL,skill2,1);
|
||||||
else
|
//else
|
||||||
clif_skill_fail(sd,skillid,0,0);
|
// clif_skill_fail(sd,skillid,0,0); // it's annoying! =p [Celest]
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -4700,6 +4700,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
int i,count=1,limit=10000,val1=0,val2=0;
|
int i,count=1,limit=10000,val1=0,val2=0;
|
||||||
int target=BCT_ENEMY,interval=1000,range=0;
|
int target=BCT_ENEMY,interval=1000,range=0;
|
||||||
int dir=0,aoe_diameter=0; // -- aoe_diameter (moonsoul) added for sage Area Of Effect skills
|
int dir=0,aoe_diameter=0; // -- aoe_diameter (moonsoul) added for sage Area Of Effect skills
|
||||||
|
struct status_change *sc_data = battle_get_sc_data(src); // for firewall and fogwall - celest
|
||||||
|
|
||||||
nullpo_retr(0, src);
|
nullpo_retr(0, src);
|
||||||
|
|
||||||
@ -4720,8 +4721,12 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
if(dir&1) count=5;
|
if(dir&1) count=5;
|
||||||
else count=3;
|
else count=3;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
if (((struct map_session_data *)src)->sc_data[SC_VIOLENTGALE].timer!=-1)
|
if(sc_data) {
|
||||||
limit *= 1.5;
|
if (sc_data[SC_VIOLENTGALE].timer!=-1) limit *= 1.5;
|
||||||
|
}
|
||||||
|
// check for sc_data first - Celest
|
||||||
|
// if (((struct map_session_data *)src)->sc_data[SC_VIOLENTGALE].timer!=-1)
|
||||||
|
// limit *= 1.5;
|
||||||
val2=4+skilllv;
|
val2=4+skilllv;
|
||||||
interval=1;
|
interval=1;
|
||||||
break;
|
break;
|
||||||
@ -5006,8 +5011,9 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case PF_FOGWALL: /* フォグウォ?ル */
|
case PF_FOGWALL: /* フォグウォ?ル */
|
||||||
count=15;
|
count=15;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
if (((struct map_session_data *)src)->sc_data[SC_DELUGE].timer!=-1)
|
if(sc_data) {
|
||||||
limit *= 2;
|
if (sc_data[SC_DELUGE].timer!=-1) limit *= 2;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case RG_GRAFFITI: /* Graffiti */
|
case RG_GRAFFITI: /* Graffiti */
|
||||||
count=1; // Leave this at 1 [Valaris]
|
count=1; // Leave this at 1 [Valaris]
|
||||||
@ -8525,11 +8531,11 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val
|
|||||||
return 0;/* ?ぎ足しができない?態異常である時は?態異常を行わない */
|
return 0;/* ?ぎ足しができない?態異常である時は?態異常を行わない */
|
||||||
if(type == SC_GRAFFITI){ //異常中にもう一度?態異常になった時に解除してから再度かかる
|
if(type == SC_GRAFFITI){ //異常中にもう一度?態異常になった時に解除してから再度かかる
|
||||||
skill_status_change_end(bl,type,-1);
|
skill_status_change_end(bl,type,-1);
|
||||||
}else{
|
} else {
|
||||||
(*sc_count)--;
|
(*sc_count)--;
|
||||||
delete_timer(sc_data[type].timer, skill_status_change_timer);
|
delete_timer(sc_data[type].timer, skill_status_change_timer);
|
||||||
sc_data[type].timer = -1;
|
sc_data[type].timer = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(type){ /* 異常の種類ごとの?理 */
|
switch(type){ /* 異常の種類ごとの?理 */
|
||||||
@ -8566,9 +8572,17 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val
|
|||||||
skill_status_change_end(bl,SC_WINDWALK,-1);
|
skill_status_change_end(bl,SC_WINDWALK,-1);
|
||||||
break;
|
break;
|
||||||
case SC_DECREASEAGI: /* 速度減少 */
|
case SC_DECREASEAGI: /* 速度減少 */
|
||||||
|
if (bl->type == BL_PC) // Celest
|
||||||
|
tick>>=1;
|
||||||
calc_flag = 1;
|
calc_flag = 1;
|
||||||
if(sc_data[SC_INCREASEAGI].timer!=-1 )
|
if(sc_data[SC_INCREASEAGI].timer!=-1 )
|
||||||
skill_status_change_end(bl,SC_INCREASEAGI,-1);
|
skill_status_change_end(bl,SC_INCREASEAGI,-1);
|
||||||
|
if(sc_data[SC_ADRENALINE].timer!=-1 )
|
||||||
|
skill_status_change_end(bl,SC_ADRENALINE,-1);
|
||||||
|
if(sc_data[SC_SPEARSQUICKEN].timer!=-1 )
|
||||||
|
skill_status_change_end(bl,SC_SPEARSQUICKEN,-1);
|
||||||
|
if(sc_data[SC_TWOHANDQUICKEN].timer!=-1 )
|
||||||
|
skill_status_change_end(bl,SC_TWOHANDQUICKEN,-1);
|
||||||
break;
|
break;
|
||||||
case SC_SIGNUMCRUCIS: /* シグナムクルシス */
|
case SC_SIGNUMCRUCIS: /* シグナムクルシス */
|
||||||
calc_flag = 1;
|
calc_flag = 1;
|
||||||
@ -8582,10 +8596,14 @@ int skill_status_change_start(struct block_list *bl, int type, int val1, int val
|
|||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
case SC_TWOHANDQUICKEN: /* 2HQ */
|
case SC_TWOHANDQUICKEN: /* 2HQ */
|
||||||
|
if(sc_data[SC_DECREASEAGI].timer!=-1)
|
||||||
|
return 0;
|
||||||
*opt3 |= 1;
|
*opt3 |= 1;
|
||||||
calc_flag = 1;
|
calc_flag = 1;
|
||||||
break;
|
break;
|
||||||
case SC_ADRENALINE: /* アドレナリンラッシュ */
|
case SC_ADRENALINE: /* アドレナリンラッシュ */
|
||||||
|
if(sc_data[SC_DECREASEAGI].timer!=-1)
|
||||||
|
return 0;
|
||||||
calc_flag = 1;
|
calc_flag = 1;
|
||||||
break;
|
break;
|
||||||
case SC_WEAPONPERFECTION: /* ウェポンパ?フェクション */
|
case SC_WEAPONPERFECTION: /* ウェポンパ?フェクション */
|
||||||
@ -9253,7 +9271,7 @@ int skill_check_cloaking(struct block_list *bl)
|
|||||||
if(bl->type == BL_PC &&
|
if(bl->type == BL_PC &&
|
||||||
(battle_config.pc_cloak_check_type&1 || pc_checkskill(sd,AS_CLOAKING)>2))
|
(battle_config.pc_cloak_check_type&1 || pc_checkskill(sd,AS_CLOAKING)>2))
|
||||||
return 0;
|
return 0;
|
||||||
if(bl->type == BL_MOB && battle_config.monster_cloak_check_type&1)
|
else if(bl->type == BL_MOB && battle_config.monster_cloak_check_type&1)
|
||||||
return 0;
|
return 0;
|
||||||
for(i=0;i<sizeof(dx)/sizeof(dx[0]);i++){
|
for(i=0;i<sizeof(dx)/sizeof(dx[0]);i++){
|
||||||
int c=map_getcell(bl->m,bl->x+dx[i],bl->y+dy[i]);
|
int c=map_getcell(bl->m,bl->x+dx[i],bl->y+dy[i]);
|
||||||
@ -9275,7 +9293,7 @@ int skill_type_cloaking(struct block_list *bl)
|
|||||||
nullpo_retr(0, bl);
|
nullpo_retr(0, bl);
|
||||||
if(bl->type == BL_PC && battle_config.pc_cloak_check_type&1)
|
if(bl->type == BL_PC && battle_config.pc_cloak_check_type&1)
|
||||||
return 0;
|
return 0;
|
||||||
if(bl->type == BL_MOB && battle_config.monster_cloak_check_type&1)
|
else if(bl->type == BL_MOB && battle_config.monster_cloak_check_type&1)
|
||||||
return 0;
|
return 0;
|
||||||
for(i=0; i<sizeof(dx)/sizeof(dx[0]); i++)
|
for(i=0; i<sizeof(dx)/sizeof(dx[0]); i++)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user