* Updated Acid Terror, Sword Reject, Double Strafe
* Replaced checking whether items can be refined or not with a new function * Fixed npctalk outputting to chat [celest] * Allowed some values in script_config to be customised in script_athena.conf git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@654 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
b7690af868
commit
439a6b11ac
@ -1,5 +1,13 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
|
||||||
|
12/20
|
||||||
|
* Updated Acid Terror - should never miss [celest]
|
||||||
|
* updated Sword Reject - should display reflected damage properly now [celest]
|
||||||
|
* Updated Double Strafe - should only work with bows [celest]
|
||||||
|
* Replaced checking whether items can be refined or not with a new function [celest]
|
||||||
|
* Added Gengar's fix for npctalk outputting to chat [celest]
|
||||||
|
* Allowed some values in script_config to be customised in script_athena.conf [celest]
|
||||||
|
|
||||||
12/19
|
12/19
|
||||||
* Added -DFASTCHAR to char_sql for testing performance work
|
* Added -DFASTCHAR to char_sql for testing performance work
|
||||||
before I merge it into the main running code [MouseJstr]
|
before I merge it into the main running code [MouseJstr]
|
||||||
|
@ -1,2 +1,14 @@
|
|||||||
// When choosing those which it refines setting the letter which is indicated. (Those for word use other than Japanese?)
|
// When choosing those which it refines setting the letter which is indicated. (Those for word use other than Japanese?)
|
||||||
refine_posword: Head,Body,Left hand,Right hand,Robe,Shoes,Accessory 1,Accessory 2,Head 2,Head 3,Not Equipped
|
refine_posword: Head,Body,Left hand,Right hand,Robe,Shoes,Accessory 1,Accessory 2,Head 2,Head 3,Not Equipped
|
||||||
|
|
||||||
|
warn_func_no_comma: yes
|
||||||
|
|
||||||
|
warn_cmd_no_comma: yes
|
||||||
|
|
||||||
|
warn_func_mismatch_paramnum: yes
|
||||||
|
|
||||||
|
warn_cmd_mismatch_paramnum: yes
|
||||||
|
|
||||||
|
check_cmdcount: 8192
|
||||||
|
|
||||||
|
check_gotocount: 512
|
@ -1608,6 +1608,7 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
|
|||||||
((src->type==BL_PC && ((struct map_session_data *)src)->status.weapon == (1 || 2 || 3)) || src->type==BL_MOB )){
|
((src->type==BL_PC && ((struct map_session_data *)src)->status.weapon == (1 || 2 || 3)) || src->type==BL_MOB )){
|
||||||
if(rand()%100 < (15*sc_data[SC_REJECTSWORD].val1)){ //反射確率は15*Lv
|
if(rand()%100 < (15*sc_data[SC_REJECTSWORD].val1)){ //反射確率は15*Lv
|
||||||
damage = damage*50/100;
|
damage = damage*50/100;
|
||||||
|
clif_damage(bl,src,gettick(),0,0,damage,0,0,0);
|
||||||
battle_damage(bl,src,damage,0);
|
battle_damage(bl,src,damage,0);
|
||||||
//ダメージを与えたのは良いんだが、ここからどうして表示するんだかわかんねぇ
|
//ダメージを与えたのは良いんだが、ここからどうして表示するんだかわかんねぇ
|
||||||
//エフェクトもこれでいいのかわかんねぇ
|
//エフェクトもこれでいいのかわかんねぇ
|
||||||
@ -2048,6 +2049,7 @@ static struct Damage battle_calc_pet_weapon_attack(
|
|||||||
damage2 = damage2*(100+ 20*skill_lv)/100;
|
damage2 = damage2*(100+ 20*skill_lv)/100;
|
||||||
break;
|
break;
|
||||||
case AM_ACIDTERROR: // アシッドテラー
|
case AM_ACIDTERROR: // アシッドテラー
|
||||||
|
hitrate = 1000000;
|
||||||
damage = damage*(100+ 40*skill_lv)/100;
|
damage = damage*(100+ 40*skill_lv)/100;
|
||||||
damage2 = damage2*(100+ 40*skill_lv)/100;
|
damage2 = damage2*(100+ 40*skill_lv)/100;
|
||||||
break;
|
break;
|
||||||
@ -2542,6 +2544,7 @@ static struct Damage battle_calc_mob_weapon_attack(
|
|||||||
damage2 = damage2*(100+ 20*skill_lv)/100;
|
damage2 = damage2*(100+ 20*skill_lv)/100;
|
||||||
break;
|
break;
|
||||||
case AM_ACIDTERROR: // アシッドテラー
|
case AM_ACIDTERROR: // アシッドテラー
|
||||||
|
hitrate = 1000000;
|
||||||
damage = damage*(100+ 40*skill_lv)/100;
|
damage = damage*(100+ 40*skill_lv)/100;
|
||||||
damage2 = damage2*(100+ 40*skill_lv)/100;
|
damage2 = damage2*(100+ 40*skill_lv)/100;
|
||||||
break;
|
break;
|
||||||
@ -3326,6 +3329,7 @@ static struct Damage battle_calc_pc_weapon_attack(
|
|||||||
damage2 = damage2*(100+ 20*skill_lv)/100;
|
damage2 = damage2*(100+ 20*skill_lv)/100;
|
||||||
break;
|
break;
|
||||||
case AM_ACIDTERROR: // アシッドテラー
|
case AM_ACIDTERROR: // アシッドテラー
|
||||||
|
hitrate = 1000000;
|
||||||
damage = damage*(100+ 40*skill_lv)/100;
|
damage = damage*(100+ 40*skill_lv)/100;
|
||||||
damage2 = damage2*(100+ 40*skill_lv)/100;
|
damage2 = damage2*(100+ 40*skill_lv)/100;
|
||||||
break;
|
break;
|
||||||
|
@ -7772,7 +7772,7 @@ int clif_message(struct block_list *bl, char* msg)
|
|||||||
WBUFL(buf, 4) = bl->id;
|
WBUFL(buf, 4) = bl->id;
|
||||||
memcpy(WBUFP(buf, 8), msg, msg_len);
|
memcpy(WBUFP(buf, 8), msg, msg_len);
|
||||||
|
|
||||||
clif_send(buf, WBUFW(buf,2), bl, AREA);
|
clif_send(buf, WBUFW(buf,2), bl, AREA_CHAT_WOC); // by Gengar
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,7 @@ static int itemdb_read_randomitem();
|
|||||||
static int itemdb_read_itemavail(void);
|
static int itemdb_read_itemavail(void);
|
||||||
static int itemdb_read_itemnametable(void);
|
static int itemdb_read_itemnametable(void);
|
||||||
static int itemdb_read_noequip(void);
|
static int itemdb_read_noequip(void);
|
||||||
|
static int itemdb_read_norefine(void);
|
||||||
void itemdb_reload(void);
|
void itemdb_reload(void);
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
@ -292,6 +293,7 @@ static void itemdb_read(void)
|
|||||||
itemdb_read_randomitem();
|
itemdb_read_randomitem();
|
||||||
itemdb_read_itemavail();
|
itemdb_read_itemavail();
|
||||||
itemdb_read_noequip();
|
itemdb_read_noequip();
|
||||||
|
itemdb_read_norefine();
|
||||||
|
|
||||||
if (!battle_config.item_name_override_grffile)
|
if (!battle_config.item_name_override_grffile)
|
||||||
itemdb_read_itemnametable();
|
itemdb_read_itemnametable();
|
||||||
@ -637,6 +639,31 @@ static int itemdb_read_noequip(void)
|
|||||||
ShowStatus(tmp_output);
|
ShowStatus(tmp_output);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================
|
||||||
|
* Whether the item can be refined or not [Celest]
|
||||||
|
*------------------------------------------------
|
||||||
|
*/
|
||||||
|
static int itemdb_read_norefine(void)
|
||||||
|
{
|
||||||
|
int i, nameid;
|
||||||
|
struct item_data *id;
|
||||||
|
// To-do: let it read from a text file later
|
||||||
|
int cant_refine[] = {
|
||||||
|
0, 1243, 1530, 2110, 2112, 2264, 2298, 2352, 2410, 2413,
|
||||||
|
2414, 2509, 2510, 5008, 5046, 5049, 5050, 5053, 5055, 5098
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i=0; i < (int)(sizeof(cant_refine) / sizeof(cant_refine[0])); i++) {
|
||||||
|
nameid = cant_refine[i];
|
||||||
|
if(nameid<=0 || nameid>=20000 || !(id=itemdb_exists(nameid)))
|
||||||
|
continue;
|
||||||
|
id->flag.no_refine = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef TXT_ONLY
|
#ifndef TXT_ONLY
|
||||||
|
|
||||||
/*======================================
|
/*======================================
|
||||||
@ -870,6 +897,7 @@ static void itemdb_read(void)
|
|||||||
itemdb_read_randomitem();
|
itemdb_read_randomitem();
|
||||||
itemdb_read_itemavail();
|
itemdb_read_itemavail();
|
||||||
itemdb_read_noequip();
|
itemdb_read_noequip();
|
||||||
|
itemdb_read_norefine();
|
||||||
itemdb_read_cardillustnametable();
|
itemdb_read_cardillustnametable();
|
||||||
if (!battle_config.item_name_override_grffile)
|
if (!battle_config.item_name_override_grffile)
|
||||||
itemdb_read_itemnametable();
|
itemdb_read_itemnametable();
|
||||||
|
@ -33,6 +33,7 @@ struct item_data {
|
|||||||
unsigned no_equip : 3;
|
unsigned no_equip : 3;
|
||||||
unsigned no_drop : 1;
|
unsigned no_drop : 1;
|
||||||
unsigned no_use : 1;
|
unsigned no_use : 1;
|
||||||
|
unsigned no_refine : 1; // [celest]
|
||||||
} flag;
|
} flag;
|
||||||
int view_id;
|
int view_id;
|
||||||
};
|
};
|
||||||
|
@ -2921,10 +2921,13 @@ int buildin_getequipisenableref(struct script_state *st)
|
|||||||
num=conv_num(st,& (st->stack->stack_data[st->start+2]));
|
num=conv_num(st,& (st->stack->stack_data[st->start+2]));
|
||||||
sd=script_rid2sd(st);
|
sd=script_rid2sd(st);
|
||||||
i=pc_checkequip(sd,equip[num-1]);
|
i=pc_checkequip(sd,equip[num-1]);
|
||||||
if(i >= 0 && num<7 && sd->inventory_data[i] && (num!=1
|
if(i >= 0 && num<7 && sd->inventory_data[i] && !sd->inventory_data[i]->flag.no_refine)
|
||||||
|
// replaced by Celest
|
||||||
|
/*(num!=1
|
||||||
|| sd->inventory_data[i]->def > 1
|
|| sd->inventory_data[i]->def > 1
|
||||||
|| (sd->inventory_data[i]->def==1 && sd->inventory_data[i]->equip_script==NULL)
|
|| (sd->inventory_data[i]->def==1 && sd->inventory_data[i]->equip_script==NULL)
|
||||||
|| (sd->inventory_data[i]->def<=0 && sd->inventory_data[i]->equip_script!=NULL)))
|
|| (sd->inventory_data[i]->def<=0 && sd->inventory_data[i]->equip_script!=NULL)))*/
|
||||||
|
|
||||||
{
|
{
|
||||||
push_val(st->stack,C_INT,1);
|
push_val(st->stack,C_INT,1);
|
||||||
} else {
|
} else {
|
||||||
@ -6983,7 +6986,25 @@ int script_config_read(char *cfgName)
|
|||||||
if(strcmpi(w1,"refine_posword")==0) {
|
if(strcmpi(w1,"refine_posword")==0) {
|
||||||
set_posword(w2);
|
set_posword(w2);
|
||||||
}
|
}
|
||||||
if(strcmpi(w1,"import")==0){
|
else if(strcmpi(w1,"warn_func_no_comma")==0) {
|
||||||
|
script_config.warn_func_no_comma = battle_config_switch(w2);
|
||||||
|
}
|
||||||
|
else if(strcmpi(w1,"warn_cmd_no_comma")==0) {
|
||||||
|
script_config.warn_cmd_no_comma = battle_config_switch(w2);
|
||||||
|
}
|
||||||
|
else if(strcmpi(w1,"warn_func_mismatch_paramnum")==0) {
|
||||||
|
script_config.warn_func_mismatch_paramnum = battle_config_switch(w2);
|
||||||
|
}
|
||||||
|
else if(strcmpi(w1,"warn_cmd_mismatch_paramnum")==0) {
|
||||||
|
script_config.warn_cmd_mismatch_paramnum = battle_config_switch(w2);
|
||||||
|
}
|
||||||
|
else if(strcmpi(w1,"check_cmdcount")==0) {
|
||||||
|
script_config.check_cmdcount = battle_config_switch(w2);
|
||||||
|
}
|
||||||
|
else if(strcmpi(w1,"check_gotocount")==0) {
|
||||||
|
script_config.check_gotocount = battle_config_switch(w2);
|
||||||
|
}
|
||||||
|
else if(strcmpi(w1,"import")==0){
|
||||||
script_config_read(w2);
|
script_config_read(w2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5435,7 +5435,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case BA_WHISTLE: /* 口笛 */
|
case BA_WHISTLE: /* 口笛 */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_NOENEMY;
|
target=BCT_NOENEMY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = (pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON)+1)>>1;
|
val1 = (pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON)+1)>>1;
|
||||||
@ -5445,7 +5445,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case DC_HUMMING: /* ハミング */
|
case DC_HUMMING: /* ハミング */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_NOENEMY;
|
target=BCT_NOENEMY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
||||||
@ -5456,14 +5456,14 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case DC_UGLYDANCE: /* 自分勝手なダンス */
|
case DC_UGLYDANCE: /* 自分勝手なダンス */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_ENEMY;
|
target=BCT_ENEMY;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DC_DONTFORGETME: /* 私を忘れないで… */
|
case DC_DONTFORGETME: /* 私を忘れないで… */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_ENEMY;
|
target=BCT_ENEMY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
||||||
@ -5473,7 +5473,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case BA_POEMBRAGI: /* ブラギの詩 */
|
case BA_POEMBRAGI: /* ブラギの詩 */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_NOENEMY;
|
target=BCT_NOENEMY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON);
|
val1 = pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON);
|
||||||
@ -5483,7 +5483,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case BA_APPLEIDUN: /* イドゥンの林檎 */
|
case BA_APPLEIDUN: /* イドゥンの林檎 */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_NOENEMY;
|
target=BCT_NOENEMY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = ((pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON))&0xffff)<<16;
|
val1 = ((pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON))&0xffff)<<16;
|
||||||
@ -5495,7 +5495,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case DC_SERVICEFORYOU: /* サ?ビスフォ?ユ? */
|
case DC_SERVICEFORYOU: /* サ?ビスフォ?ユ? */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_PARTY;
|
target=BCT_PARTY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
||||||
@ -5504,7 +5504,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case BA_ASSASSINCROSS: /* 夕陽のアサシンクロス */
|
case BA_ASSASSINCROSS: /* 夕陽のアサシンクロス */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_NOENEMY;
|
target=BCT_NOENEMY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = (pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON)+1)>>1;
|
val1 = (pc_checkskill((struct map_session_data *)src,BA_MUSICALLESSON)+1)>>1;
|
||||||
@ -5513,7 +5513,7 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
|
|||||||
case DC_FORTUNEKISS: /* 幸運のキス */
|
case DC_FORTUNEKISS: /* 幸運のキス */
|
||||||
count=49;
|
count=49;
|
||||||
limit=skill_get_time(skillid,skilllv);
|
limit=skill_get_time(skillid,skilllv);
|
||||||
range=5;
|
range=3;
|
||||||
target=BCT_NOENEMY;
|
target=BCT_NOENEMY;
|
||||||
if(src->type == BL_PC)
|
if(src->type == BL_PC)
|
||||||
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
val1 = (pc_checkskill((struct map_session_data *)src,DC_DANCINGLESSON)+1)>>1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user