Check changelog ^^
git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@1267 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
64234b023c
commit
b9a1f0d7fd
@ -2,6 +2,25 @@ Date Added
|
|||||||
|
|
||||||
03/22
|
03/22
|
||||||
* Fixed Alchemist's CANNIBALIZE, now it summons correct # of plants. With their real HP [Lupus]
|
* Fixed Alchemist's CANNIBALIZE, now it summons correct # of plants. With their real HP [Lupus]
|
||||||
|
* Updated @reloadmobdb, @reloadskilldb, @reloaditemdb [celest]
|
||||||
|
* Some tidying up in @reloadscript (more work needed) [celest]
|
||||||
|
* Moved some gm command messages to msg_athena.conf [celest]
|
||||||
|
* Removed skill_range_leniency [celest]
|
||||||
|
* Removed enable_upper_class [celest]
|
||||||
|
* Removed riding_weight [celest]
|
||||||
|
* Added signal handler for SIGPIPE [celest]
|
||||||
|
* Updated Frost Joke to affect everyone else in PvP/GvG, thanks to veider
|
||||||
|
* Corrected Detect Trap range to be based on level, thanks to veider
|
||||||
|
* Updated Tunnel Drive's movement speed, thanks to veider
|
||||||
|
* Removed cdp_rate, suggested by leinsirk10
|
||||||
|
* Fixed a typo in Acid Terror, thanks to leinsirk10
|
||||||
|
* Fixed some typos/memory leak in script cleaning up, thanks to leinsirk10
|
||||||
|
* Added gm_can_drop_lv limitations for trading and opening storage, thanks to
|
||||||
|
Dino9021
|
||||||
|
* Changed shop_exp's calculation to use 0.01% increments, suggested by tcdiem
|
||||||
|
* Refixed "--en/ja--" usage in 'monster' script not working properly, thanks
|
||||||
|
to sbilly
|
||||||
|
|
||||||
03/21
|
03/21
|
||||||
* Moved /tool and /webserver to under /src and added 'make tools' and 'make
|
* Moved /tool and /webserver to under /src and added 'make tools' and 'make
|
||||||
web-server' [celest]
|
web-server' [celest]
|
||||||
@ -86,8 +105,6 @@ Date Added
|
|||||||
- Should be made as an option of battle_athena.conf
|
- Should be made as an option of battle_athena.conf
|
||||||
|
|
||||||
03/11
|
03/11
|
||||||
* Fixed "--en/ja--" usage in 'monster' script not working properly, thanks
|
|
||||||
to sbilly [celest]
|
|
||||||
* Speedup player autosaving -- don't save guild castle data at the same time,
|
* Speedup player autosaving -- don't save guild castle data at the same time,
|
||||||
thanks to Alex14 [celest]
|
thanks to Alex14 [celest]
|
||||||
* Optimised guild castle saving when autosaving player data, thanks to Yor /
|
* Optimised guild castle saving when autosaving player data, thanks to Yor /
|
||||||
|
@ -339,8 +339,9 @@ heal_exp: 0
|
|||||||
// Experience calculations for the experience value * level difference of the person revived / 100 * resurrection_exp/10000 which the revived player has can be got.
|
// Experience calculations for the experience value * level difference of the person revived / 100 * resurrection_exp/10000 which the revived player has can be got.
|
||||||
resurrection_exp: 0
|
resurrection_exp: 0
|
||||||
|
|
||||||
// The rate of job exp. when using discount and overcharge on an NPC (100 is normal, 200 is double.)
|
// The rate of job exp. when using discount and overcharge on an NPC
|
||||||
// The way it is calculated is (money recieved * skill lv) * shop_exp / 100.
|
// (in 0.01% increments - 100 is 1%, 10000 is normal, 20000 is double.)
|
||||||
|
// The way it is calculated is (money recieved * skill lv) * shop_exp / 10000.
|
||||||
shop_exp: 0
|
shop_exp: 0
|
||||||
|
|
||||||
// The delay rate of monk's combo (Note 2)
|
// The delay rate of monk's combo (Note 2)
|
||||||
@ -791,10 +792,6 @@ mobs_level_up: no
|
|||||||
// Use kRO new steal formula?
|
// Use kRO new steal formula?
|
||||||
skill_steal_type: yes
|
skill_steal_type: yes
|
||||||
|
|
||||||
// Sometimes when using skills while walking it'll fail because of range being too
|
|
||||||
// far, should we allow this to happen? (Setting this at 1 would be enough)
|
|
||||||
skill_range_leniency: 1
|
|
||||||
|
|
||||||
// Set this to 1 if your clients have langtype problems and can't display motd properly
|
// Set this to 1 if your clients have langtype problems and can't display motd properly
|
||||||
motd_type: 0
|
motd_type: 0
|
||||||
|
|
||||||
|
@ -257,6 +257,14 @@
|
|||||||
243: Map skills are off
|
243: Map skills are off
|
||||||
244: Map skills are on
|
244: Map skills are on
|
||||||
245: Server Uptime: %ld days, %ld hours, %ld minutes, %ld seconds.
|
245: Server Uptime: %ld days, %ld hours, %ld minutes, %ld seconds.
|
||||||
|
246: Your GM level don't authorise you to do this action.
|
||||||
|
247: You are not authorised to warp to this map.
|
||||||
|
248: You are not authorised to warp from your current map.
|
||||||
|
249: You are not authorised to warp to your save map.
|
||||||
|
250: You have already opened your storage. Close it first.
|
||||||
|
251: You have already opened your guild storage. Close it first.
|
||||||
|
252: You are not in a guild.
|
||||||
|
253: You are not authorised to memo this map.
|
||||||
|
|
||||||
// Messages of others (not for GM commands)
|
// Messages of others (not for GM commands)
|
||||||
// ----------------------------------------
|
// ----------------------------------------
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
Skill databases == celest working on them i believe.
|
Skill databases == celest working on them i believe.
|
||||||
|
|
||||||
03/22
|
03/22
|
||||||
|
* Corrected some typos in the items DB, thanks to Zoc [celest]
|
||||||
* Added new items. Thanks to Landarma [Lupus]
|
* Added new items. Thanks to Landarma [Lupus]
|
||||||
* skill CANNIBALIZE: fixed its upkeep time [Lupus]
|
* skill CANNIBALIZE: fixed its upkeep time [Lupus]
|
||||||
* Added Rafflesia into Dead Branch monsters list, removen all MVPs from there [Lupus]
|
* Added Rafflesia into Dead Branch monsters list, removen all MVPs from there [Lupus]
|
||||||
|
@ -71,10 +71,10 @@
|
|||||||
568,Lemon,Lemon,0,20,0,20,,,,,0,3,,,,,{},{}
|
568,Lemon,Lemon,0,20,0,20,,,,,0,3,,,,,{},{}
|
||||||
569,Novice's_Red_Potion,Novices Red Potion,0,50,0,70,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{}
|
569,Novice's_Red_Potion,Novices Red Potion,0,50,0,70,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{}
|
||||||
// st.Valentine's Day Items
|
// st.Valentine's Day Items
|
||||||
570,Fortune_Candy,Fortune Candy,0,10,0,30,,,,,10477567,2,,,,{ itemheal rand(45,64),0; },{}
|
570,Fortune_Candy,Fortune Candy,0,10,0,30,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{}
|
||||||
571,Fortune_Candy_Cane,Fortune Candy Cane,0,20,0,40,,,,,10477567,2,,,,{ itemheal rand(105,144),0; },{}
|
571,Fortune_Candy_Cane,Fortune Candy Cane,0,20,0,40,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{}
|
||||||
572,Fortune_Cookie,Fortune Cookie,0,15,0,30,,,,,10477567,2,,,,{ itemheal rand(45,64),0; },{}
|
572,Fortune_Cookie,Fortune Cookie,0,15,0,30,,,,,10477567,2,,,,,{ itemheal rand(45,64),0; },{}
|
||||||
573,Chocolate_Drink,Chocolate Drink,0,20,0,150,,,,,10477567,2,,,,{ itemheal rand(105,144),0; },{}
|
573,Chocolate_Drink,Chocolate Drink,0,20,0,150,,,,,10477567,2,,,,,{ itemheal rand(105,144),0; },{}
|
||||||
574,Egg,Egg,0,0,,30,,,,,10477567,2,,,,,{ itemheal rand(16,21),0; },{}
|
574,Egg,Egg,0,0,,30,,,,,10477567,2,,,,,{ itemheal rand(16,21),0; },{}
|
||||||
|
|
||||||
// Usable Items
|
// Usable Items
|
||||||
@ -1781,17 +1781,17 @@
|
|||||||
7303,Rice_Bag,Rice Straw Bag,3,20,0,800,,,,,,,,,,,{},{}
|
7303,Rice_Bag,Rice Straw Bag,3,20,0,800,,,,,,,,,,,{},{}
|
||||||
|
|
||||||
// 2005
|
// 2005
|
||||||
7304,Witchs_Spellbook,Witch's Spellbook,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7304,Witchs_Spellbook,Witch's Spellbook,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7305,Unknown_item,Authority of 9 worlds,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7305,Unknown_item,Authority of 9 worlds,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7306,Piece_of_Soul,Piece of Soul,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7306,Piece_of_Soul,Piece of Soul,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7307,Whisper_of_Soul,Whisper of Soul,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7307,Whisper_of_Soul,Whisper of Soul,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7308,Witchs_Potion,Witch's Potion,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7308,Witchs_Potion,Witch's Potion,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7309,Crows_Wing,Crow's Wing,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7309,Crows_Wing,Crow's Wing,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7310,Peco_Coupon,Pecopeco Free Coupon,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7310,Peco_Coupon,Pecopeco Free Coupon,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7311,Airship_Coupon,Airship Free Coupon,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7311,Airship_Coupon,Airship Free Coupon,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7312,Jubile,Jubilaeum,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7312,Jubile,Jubilaeum,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7313,Witch\'s_Voucher,Witch's Voucher,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7313,Witch\'s_Voucher,Witch's Voucher,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7314,The_Sign,The Sign,3,20,0,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7314,The_Sign,The Sign,3,20,0,10,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
|
|
||||||
7315,Black_Quartz_Piece,Piece of Black Quartz,3,,,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7315,Black_Quartz_Piece,Piece of Black Quartz,3,,,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
7316,Insect_Long_leg,Insect's Long Leg,3,,,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
7316,Insect_Long_leg,Insect's Long Leg,3,,,10,0,0,0,0,0,0,0,0,0,0,0,{},{}
|
||||||
|
@ -35,6 +35,8 @@ Other Ppl
|
|||||||
Date Added
|
Date Added
|
||||||
======
|
======
|
||||||
|
|
||||||
|
03/22
|
||||||
|
* Moved position for Marx Hansen to payon_in03, thanks to Dino9021 [celest]
|
||||||
03/18
|
03/18
|
||||||
* Reduced label name length in heal_payment.txt [celest]
|
* Reduced label name length in heal_payment.txt [celest]
|
||||||
* Added Sara-chan's Einbroch/Einbech city warps [celest]
|
* Added Sara-chan's Einbroch/Einbech city warps [celest]
|
||||||
|
@ -181,7 +181,7 @@ L_Juice:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Juicer Marx Hansen ---------------------------------------------------------
|
// Juicer Marx Hansen ---------------------------------------------------------
|
||||||
payon_in01.gat,5,48,7 script Juicer Marx Hansen 86,{
|
payon_in03.gat,188,146,5 script Juicer Marx Hansen 86,{
|
||||||
mes "[Juicer Marx Hansen]";
|
mes "[Juicer Marx Hansen]";
|
||||||
if(MARIANNE == 1) goto L_Juice;
|
if(MARIANNE == 1) goto L_Juice;
|
||||||
mes "Welcome to my shop. What brings you here?";
|
mes "Welcome to my shop. What brings you here?";
|
||||||
|
@ -76,7 +76,11 @@ sigfunc *compat_signal(int signo, sigfunc *func)
|
|||||||
* CORE : Signal Sub Function
|
* CORE : Signal Sub Function
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*/
|
*/
|
||||||
|
// for handling certain signals ourselves, like SIGPIPE
|
||||||
|
static void sig_ignore(int sn) {
|
||||||
|
printf ("Broken pipe found... closing socket\n"); // set to eof in socket.c
|
||||||
|
return; // does nothing here
|
||||||
|
}
|
||||||
static void sig_proc(int sn)
|
static void sig_proc(int sn)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -137,8 +141,7 @@ void sig_dump(int sn)
|
|||||||
fprintf(fp, "Exception: %s \n", strsignal(sn));
|
fprintf(fp, "Exception: %s \n", strsignal(sn));
|
||||||
fflush (fp);
|
fflush (fp);
|
||||||
|
|
||||||
|
#ifdef CYGWIN
|
||||||
#ifdef CYGWIN
|
|
||||||
cygwin_stackdump ();
|
cygwin_stackdump ();
|
||||||
#else
|
#else
|
||||||
fprintf(fp, "Stack trace:\n");
|
fprintf(fp, "Stack trace:\n");
|
||||||
@ -153,7 +156,7 @@ void sig_dump(int sn)
|
|||||||
|
|
||||||
printf ("Done.\n");
|
printf ("Done.\n");
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
// Pass the signal to the system's default handler
|
// Pass the signal to the system's default handler
|
||||||
compat_signal(sn, SIG_DFL);
|
compat_signal(sn, SIG_DFL);
|
||||||
@ -289,7 +292,7 @@ int main(int argc,char **argv)
|
|||||||
Net_Init();
|
Net_Init();
|
||||||
do_socket();
|
do_socket();
|
||||||
|
|
||||||
compat_signal(SIGPIPE,SIG_IGN);
|
compat_signal(SIGPIPE, sig_ignore);
|
||||||
compat_signal(SIGTERM,sig_proc);
|
compat_signal(SIGTERM,sig_proc);
|
||||||
compat_signal(SIGINT,sig_proc);
|
compat_signal(SIGINT,sig_proc);
|
||||||
|
|
||||||
|
@ -829,15 +829,11 @@ AtCommandType atcommand(struct map_session_data* sd, const int level, const char
|
|||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
*/
|
*/
|
||||||
static int atkillmonster_sub(struct block_list *bl, va_list ap) {
|
static int atkillmonster_sub(struct block_list *bl, va_list ap) {
|
||||||
int flag = va_arg(ap, int);
|
struct mob_data *md;
|
||||||
|
nullpo_retr(0, md=(struct mob_data *)bl);
|
||||||
nullpo_retr(0, bl);
|
|
||||||
|
|
||||||
if (flag)
|
|
||||||
mob_damage(NULL, (struct mob_data *)bl, ((struct mob_data *)bl)->hp, 2);
|
|
||||||
else
|
|
||||||
mob_delete((struct mob_data *)bl);
|
|
||||||
|
|
||||||
|
mob_damage(NULL, md, md->hp, 2);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*==========================================
|
/*==========================================
|
||||||
@ -893,34 +889,6 @@ static int atcommand_cleanmap_sub(struct block_list *bl,va_list ap)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static int atkillnpc_sub(struct block_list *bl, va_list ap)
|
|
||||||
{
|
|
||||||
int flag = va_arg(ap,int);
|
|
||||||
|
|
||||||
nullpo_retr(0, bl);
|
|
||||||
|
|
||||||
npc_delete((struct npc_data *)bl);
|
|
||||||
|
|
||||||
flag = 0;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void rehash( const int fd, struct map_session_data* sd )
|
|
||||||
{
|
|
||||||
int map_id = 0;
|
|
||||||
|
|
||||||
int LOADED_MAPS = map_num;
|
|
||||||
|
|
||||||
for (map_id = 0; map_id < LOADED_MAPS;map_id++) {
|
|
||||||
|
|
||||||
if (map_id > LOADED_MAPS)
|
|
||||||
break;
|
|
||||||
|
|
||||||
map_foreachinarea(atkillmonster_sub, map_id, 0, 0, map[map_id].xs, map[map_id].ys, BL_MOB, 0);
|
|
||||||
map_foreachinarea(atkillnpc_sub, map_id, 0, 0, map[map_id].xs, map[map_id].ys, BL_NPC, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Read Message Data
|
* Read Message Data
|
||||||
@ -1078,11 +1046,11 @@ int atcommand_rura(
|
|||||||
if (x > 0 && x < 400 && y > 0 && y < 400) {
|
if (x > 0 && x < 400 && y > 0 && y < 400) {
|
||||||
m = map_mapname2mapid(map_name);
|
m = map_mapname2mapid(map_name);
|
||||||
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to this map.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (pc_setpos(sd, map_name, x, y, 3) == 0)
|
if (pc_setpos(sd, map_name, x, y, 3) == 0)
|
||||||
@ -1161,11 +1129,11 @@ int atcommand_jumpto(
|
|||||||
|
|
||||||
if ((pl_sd = map_nick2sd(character)) != NULL) {
|
if ((pl_sd = map_nick2sd(character)) != NULL) {
|
||||||
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to the map of this player.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pc_setpos(sd, pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y, 3);
|
pc_setpos(sd, pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y, 3);
|
||||||
@ -1201,12 +1169,8 @@ int atcommand_jump(
|
|||||||
if (y <= 0)
|
if (y <= 0)
|
||||||
y = rand() % 399 + 1;
|
y = rand() % 399 + 1;
|
||||||
if (x > 0 && x < 400 && y > 0 && y < 400) {
|
if (x > 0 && x < 400 && y > 0 && y < 400) {
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && (map[sd->bl.m].flag.nowarp || map[sd->bl.m].flag.nowarpto) && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pc_setpos(sd, sd->mapname, x, y, 3);
|
pc_setpos(sd, sd->mapname, x, y, 3);
|
||||||
@ -1815,11 +1779,11 @@ int atcommand_load(
|
|||||||
|
|
||||||
m = map_mapname2mapid(sd->status.save_point.map);
|
m = map_mapname2mapid(sd->status.save_point.map);
|
||||||
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to your save map.");
|
clif_displaymessage(fd, msg_table[249]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1878,12 +1842,12 @@ int atcommand_storage(
|
|||||||
nullpo_retr(-1, sd);
|
nullpo_retr(-1, sd);
|
||||||
|
|
||||||
if (sd->state.storage_flag == 1) {
|
if (sd->state.storage_flag == 1) {
|
||||||
clif_displaymessage(fd, "You have opened your guild storage. Close it before.");
|
clif_displaymessage(fd, msg_table[250]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((stor = account2storage2(sd->status.account_id)) != NULL && stor->storage_status == 1) {
|
if ((stor = account2storage2(sd->status.account_id)) != NULL && stor->storage_status == 1) {
|
||||||
clif_displaymessage(fd, "You have already opened your storage.");
|
clif_displaymessage(fd, msg_table[250]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1906,16 +1870,16 @@ int atcommand_guildstorage(
|
|||||||
|
|
||||||
if (sd->status.guild_id > 0) {
|
if (sd->status.guild_id > 0) {
|
||||||
if (sd->state.storage_flag == 1) {
|
if (sd->state.storage_flag == 1) {
|
||||||
clif_displaymessage(fd, "You have already opened your guild storage.");
|
clif_displaymessage(fd, msg_table[251]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if ((stor = account2storage2(sd->status.account_id)) != NULL && stor->storage_status == 1) {
|
if ((stor = account2storage2(sd->status.account_id)) != NULL && stor->storage_status == 1) {
|
||||||
clif_displaymessage(fd, "Your storage is opened. Close it before.");
|
clif_displaymessage(fd, msg_table[251]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
storage_guild_storageopen(sd);
|
storage_guild_storageopen(sd);
|
||||||
} else {
|
} else {
|
||||||
clif_displaymessage(fd, "You are not in a guild.");
|
clif_displaymessage(fd, msg_table[252]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3066,11 +3030,11 @@ int atcommand_go(
|
|||||||
if (sd->status.memo_point[-town-1].map[0]) {
|
if (sd->status.memo_point[-town-1].map[0]) {
|
||||||
m = map_mapname2mapid(sd->status.memo_point[-town-1].map);
|
m = map_mapname2mapid(sd->status.memo_point[-town-1].map);
|
||||||
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to this memo map.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (pc_setpos(sd, sd->status.memo_point[-town-1].map, sd->status.memo_point[-town-1].x, sd->status.memo_point[-town-1].y, 3) == 0) {
|
if (pc_setpos(sd, sd->status.memo_point[-town-1].map, sd->status.memo_point[-town-1].x, sd->status.memo_point[-town-1].y, 3) == 0) {
|
||||||
@ -3087,11 +3051,11 @@ int atcommand_go(
|
|||||||
} else if (town >= 0 && town < (int)(sizeof(data) / sizeof(data[0]))) {
|
} else if (town >= 0 && town < (int)(sizeof(data) / sizeof(data[0]))) {
|
||||||
m = map_mapname2mapid((char *)data[town].map);
|
m = map_mapname2mapid((char *)data[town].map);
|
||||||
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (m >= 0 && map[m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to this destination map.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (pc_setpos(sd, (char *)data[town].map, data[town].x, data[town].y, 3) == 0) {
|
if (pc_setpos(sd, (char *)data[town].map, data[town].x, data[town].y, 3) == 0) {
|
||||||
@ -3675,7 +3639,7 @@ int atcommand_memo(
|
|||||||
else {
|
else {
|
||||||
if (position >= MIN_PORTAL_MEMO && position <= MAX_PORTAL_MEMO) {
|
if (position >= MIN_PORTAL_MEMO && position <= MAX_PORTAL_MEMO) {
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to memo this map.");
|
clif_displaymessage(fd, msg_table[253]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->status.memo_point[position].map[0]) {
|
if (sd->status.memo_point[position].map[0]) {
|
||||||
@ -5697,15 +5661,24 @@ int atcommand_reloadskilldb(
|
|||||||
*
|
*
|
||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
void rehash(void)
|
||||||
|
{
|
||||||
|
int map_id;
|
||||||
|
|
||||||
|
for (map_id = 0; map_id < map_num; map_id++) {
|
||||||
|
map_foreachinarea(cleanup_sub, map_id, 0, 0, map[map_id].xs, map[map_id].ys, BL_MOB);
|
||||||
|
map_foreachinarea(cleanup_sub, map_id, 0, 0, map[map_id].xs, map[map_id].ys, BL_NPC);
|
||||||
|
}
|
||||||
|
}
|
||||||
int atcommand_reloadscript(
|
int atcommand_reloadscript(
|
||||||
const int fd, struct map_session_data* sd,
|
const int fd, struct map_session_data* sd,
|
||||||
const char* command, const char* message)
|
const char* command, const char* message)
|
||||||
{
|
{
|
||||||
nullpo_retr(-1, sd);
|
nullpo_retr(-1, sd);
|
||||||
atcommand_broadcast( fd, sd, "@broadcast", "eAthena SQL Server is Rehashing..." );
|
atcommand_broadcast( fd, sd, "@broadcast", "eAthena Server is Rehashing..." );
|
||||||
atcommand_broadcast( fd, sd, "@broadcast", "You will feel a bit of lag at this point !" );
|
atcommand_broadcast( fd, sd, "@broadcast", "You will feel a bit of lag at this point !" );
|
||||||
|
|
||||||
rehash( fd, sd );
|
rehash();
|
||||||
|
|
||||||
atcommand_broadcast( fd, sd, "@broadcast", "Reloading NPCs..." );
|
atcommand_broadcast( fd, sd, "@broadcast", "Reloading NPCs..." );
|
||||||
do_init_npc();
|
do_init_npc();
|
||||||
@ -8376,11 +8349,11 @@ int atcommand_jumptoid(
|
|||||||
{
|
{
|
||||||
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
||||||
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to the map of this player.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pc_setpos(sd, pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y, 3);
|
pc_setpos(sd, pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y, 3);
|
||||||
@ -8431,11 +8404,11 @@ int atcommand_jumptoid2(
|
|||||||
{
|
{
|
||||||
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
||||||
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to the map of this player.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pc_setpos(sd, pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y, 3);
|
pc_setpos(sd, pl_sd->mapname, pl_sd->bl.x, pl_sd->bl.y, 3);
|
||||||
@ -8486,11 +8459,11 @@ int atcommand_recallid(
|
|||||||
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
||||||
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can recall only lower or same level
|
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can recall only lower or same level
|
||||||
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to the map of this player.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pc_setpos(pl_sd, sd->mapname, sd->bl.x, sd->bl.y, 2);
|
pc_setpos(pl_sd, sd->mapname, sd->bl.x, sd->bl.y, 2);
|
||||||
@ -8545,11 +8518,11 @@ int atcommand_recallid2(
|
|||||||
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
if ((pl_sd = session[session_id]->session_data) != NULL) {
|
||||||
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can recall only lower or same level
|
if (pc_isGM(sd) >= pc_isGM(pl_sd)) { // you can recall only lower or same level
|
||||||
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you to the map of this player.");
|
clif_displaymessage(fd, msg_table[247]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && battle_config.any_warp_GM_min_level > pc_isGM(sd)) {
|
||||||
clif_displaymessage(fd, "You are not authorised to warp you from your actual map.");
|
clif_displaymessage(fd, msg_table[248]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
pc_setpos(pl_sd, sd->mapname, sd->bl.x, sd->bl.y, 2);
|
pc_setpos(pl_sd, sd->mapname, sd->bl.x, sd->bl.y, 2);
|
||||||
|
@ -1441,7 +1441,7 @@ static struct Damage battle_calc_mob_weapon_attack(
|
|||||||
if( skill_num!=NPC_CRITICALSLASH ){
|
if( skill_num!=NPC_CRITICALSLASH ){
|
||||||
// 対 象の防御力によるダメージの減少
|
// 対 象の防御力によるダメージの減少
|
||||||
// ディバインプロテクション(ここでいいのかな?)
|
// ディバインプロテクション(ここでいいのかな?)
|
||||||
if ( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != KN_AUTOCOUNTER && skill_num != KN_AUTOCOUNTER && def1 < 1000000) { //DEF, VIT–³Ž‹
|
if ( skill_num != MO_INVESTIGATE && skill_num != MO_EXTREMITYFIST && skill_num != KN_AUTOCOUNTER && skill_num != AM_ACIDTERROR && def1 < 1000000) { //DEF, VIT–³Ž‹
|
||||||
int t_def;
|
int t_def;
|
||||||
target_count = 1 + battle_counttargeted(target,src,battle_config.vit_penalty_count_lv);
|
target_count = 1 + battle_counttargeted(target,src,battle_config.vit_penalty_count_lv);
|
||||||
if(battle_config.vit_penalty_type > 0) {
|
if(battle_config.vit_penalty_type > 0) {
|
||||||
@ -3958,7 +3958,6 @@ static const struct {
|
|||||||
{ "player_skillup_limit", &battle_config.skillup_limit },
|
{ "player_skillup_limit", &battle_config.skillup_limit },
|
||||||
{ "weapon_produce_rate", &battle_config.wp_rate },
|
{ "weapon_produce_rate", &battle_config.wp_rate },
|
||||||
{ "potion_produce_rate", &battle_config.pp_rate },
|
{ "potion_produce_rate", &battle_config.pp_rate },
|
||||||
{ "deadly_potion_produce_rate", &battle_config.cdp_rate },
|
|
||||||
{ "monster_active_enable", &battle_config.monster_active_enable },
|
{ "monster_active_enable", &battle_config.monster_active_enable },
|
||||||
{ "monster_damage_delay_rate", &battle_config.monster_damage_delay_rate},
|
{ "monster_damage_delay_rate", &battle_config.monster_damage_delay_rate},
|
||||||
{ "monster_loot_type", &battle_config.monster_loot_type },
|
{ "monster_loot_type", &battle_config.monster_loot_type },
|
||||||
@ -4058,7 +4057,6 @@ static const struct {
|
|||||||
{ "dead_branch_active", &battle_config.dead_branch_active },
|
{ "dead_branch_active", &battle_config.dead_branch_active },
|
||||||
{ "vending_max_value", &battle_config.vending_max_value },
|
{ "vending_max_value", &battle_config.vending_max_value },
|
||||||
{ "show_steal_in_same_party", &battle_config.show_steal_in_same_party },
|
{ "show_steal_in_same_party", &battle_config.show_steal_in_same_party },
|
||||||
{ "enable_upper_class", &battle_config.enable_upper_class },
|
|
||||||
{ "pet_attack_attr_none", &battle_config.pet_attack_attr_none },
|
{ "pet_attack_attr_none", &battle_config.pet_attack_attr_none },
|
||||||
{ "mob_attack_attr_none", &battle_config.mob_attack_attr_none },
|
{ "mob_attack_attr_none", &battle_config.mob_attack_attr_none },
|
||||||
{ "mob_ghostring_fix", &battle_config.mob_ghostring_fix },
|
{ "mob_ghostring_fix", &battle_config.mob_ghostring_fix },
|
||||||
@ -4075,7 +4073,6 @@ static const struct {
|
|||||||
{ "skill_removetrap_type", &battle_config.skill_removetrap_type },
|
{ "skill_removetrap_type", &battle_config.skill_removetrap_type },
|
||||||
{ "disp_experience", &battle_config.disp_experience },
|
{ "disp_experience", &battle_config.disp_experience },
|
||||||
{ "castle_defense_rate", &battle_config.castle_defense_rate },
|
{ "castle_defense_rate", &battle_config.castle_defense_rate },
|
||||||
{ "riding_weight", &battle_config.riding_weight },
|
|
||||||
{ "hp_rate", &battle_config.hp_rate },
|
{ "hp_rate", &battle_config.hp_rate },
|
||||||
{ "sp_rate", &battle_config.sp_rate },
|
{ "sp_rate", &battle_config.sp_rate },
|
||||||
{ "gm_can_drop_lv", &battle_config.gm_can_drop_lv },
|
{ "gm_can_drop_lv", &battle_config.gm_can_drop_lv },
|
||||||
@ -4131,7 +4128,6 @@ static const struct {
|
|||||||
{ "skill_steal_type", &battle_config.skill_steal_type}, // [celest]
|
{ "skill_steal_type", &battle_config.skill_steal_type}, // [celest]
|
||||||
{ "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest]
|
{ "skill_steal_rate", &battle_config.skill_steal_rate}, // [celest]
|
||||||
{ "night_darkness_level", &battle_config.night_darkness_level}, // [celest]
|
{ "night_darkness_level", &battle_config.night_darkness_level}, // [celest]
|
||||||
{ "skill_range_leniency", &battle_config.skill_range_leniency}, // [celest]
|
|
||||||
{ "motd_type", &battle_config.motd_type}, // [celest]
|
{ "motd_type", &battle_config.motd_type}, // [celest]
|
||||||
{ "allow_atcommand_when_mute", &battle_config.allow_atcommand_when_mute}, // [celest]
|
{ "allow_atcommand_when_mute", &battle_config.allow_atcommand_when_mute}, // [celest]
|
||||||
{ "finding_ore_rate", &battle_config.finding_ore_rate}, // [celest]
|
{ "finding_ore_rate", &battle_config.finding_ore_rate}, // [celest]
|
||||||
@ -4208,7 +4204,6 @@ void battle_set_defaults() {
|
|||||||
battle_config.skillup_limit = 0;
|
battle_config.skillup_limit = 0;
|
||||||
battle_config.wp_rate=100;
|
battle_config.wp_rate=100;
|
||||||
battle_config.pp_rate=100;
|
battle_config.pp_rate=100;
|
||||||
battle_config.cdp_rate=100;
|
|
||||||
battle_config.monster_active_enable=1;
|
battle_config.monster_active_enable=1;
|
||||||
battle_config.monster_damage_delay_rate=100;
|
battle_config.monster_damage_delay_rate=100;
|
||||||
battle_config.monster_loot_type=0;
|
battle_config.monster_loot_type=0;
|
||||||
@ -4308,7 +4303,6 @@ void battle_set_defaults() {
|
|||||||
battle_config.dead_branch_active = 0;
|
battle_config.dead_branch_active = 0;
|
||||||
battle_config.vending_max_value = 10000000;
|
battle_config.vending_max_value = 10000000;
|
||||||
battle_config.show_steal_in_same_party = 0;
|
battle_config.show_steal_in_same_party = 0;
|
||||||
battle_config.enable_upper_class = 0;
|
|
||||||
battle_config.pet_attack_attr_none = 0;
|
battle_config.pet_attack_attr_none = 0;
|
||||||
battle_config.pc_attack_attr_none = 0;
|
battle_config.pc_attack_attr_none = 0;
|
||||||
battle_config.mob_attack_attr_none = 1;
|
battle_config.mob_attack_attr_none = 1;
|
||||||
@ -4325,7 +4319,6 @@ void battle_set_defaults() {
|
|||||||
battle_config.skill_removetrap_type = 0;
|
battle_config.skill_removetrap_type = 0;
|
||||||
battle_config.disp_experience = 0;
|
battle_config.disp_experience = 0;
|
||||||
battle_config.castle_defense_rate = 100;
|
battle_config.castle_defense_rate = 100;
|
||||||
battle_config.riding_weight = 0;
|
|
||||||
battle_config.hp_rate = 100;
|
battle_config.hp_rate = 100;
|
||||||
battle_config.sp_rate = 100;
|
battle_config.sp_rate = 100;
|
||||||
battle_config.gm_can_drop_lv = 0;
|
battle_config.gm_can_drop_lv = 0;
|
||||||
@ -4380,7 +4373,6 @@ void battle_set_defaults() {
|
|||||||
battle_config.skill_steal_type = 1;
|
battle_config.skill_steal_type = 1;
|
||||||
battle_config.skill_steal_rate = 100;
|
battle_config.skill_steal_rate = 100;
|
||||||
battle_config.night_darkness_level = 9;
|
battle_config.night_darkness_level = 9;
|
||||||
battle_config.skill_range_leniency = 1;
|
|
||||||
battle_config.motd_type = 0;
|
battle_config.motd_type = 0;
|
||||||
battle_config.allow_atcommand_when_mute = 0;
|
battle_config.allow_atcommand_when_mute = 0;
|
||||||
battle_config.finding_ore_rate = 100;
|
battle_config.finding_ore_rate = 100;
|
||||||
@ -4511,9 +4503,6 @@ void battle_validate_conf() {
|
|||||||
if (battle_config.night_darkness_level > 10) // Celest
|
if (battle_config.night_darkness_level > 10) // Celest
|
||||||
battle_config.night_darkness_level = 10;
|
battle_config.night_darkness_level = 10;
|
||||||
|
|
||||||
if (battle_config.skill_range_leniency < 0) // Celest
|
|
||||||
battle_config.skill_range_leniency = 0;
|
|
||||||
|
|
||||||
if (battle_config.motd_type < 0)
|
if (battle_config.motd_type < 0)
|
||||||
battle_config.motd_type = 0;
|
battle_config.motd_type = 0;
|
||||||
else if (battle_config.motd_type > 1)
|
else if (battle_config.motd_type > 1)
|
||||||
|
@ -131,7 +131,6 @@ extern struct Battle_Config {
|
|||||||
int skillup_limit;
|
int skillup_limit;
|
||||||
int wp_rate;
|
int wp_rate;
|
||||||
int pp_rate;
|
int pp_rate;
|
||||||
int cdp_rate;
|
|
||||||
int monster_active_enable;
|
int monster_active_enable;
|
||||||
int monster_damage_delay_rate;
|
int monster_damage_delay_rate;
|
||||||
int monster_loot_type;
|
int monster_loot_type;
|
||||||
@ -232,7 +231,6 @@ extern struct Battle_Config {
|
|||||||
// int pet_lootitem; // removed [Valaris]
|
// int pet_lootitem; // removed [Valaris]
|
||||||
// int pet_weight; // removed [Valaris]
|
// int pet_weight; // removed [Valaris]
|
||||||
int show_steal_in_same_party;
|
int show_steal_in_same_party;
|
||||||
int enable_upper_class;
|
|
||||||
int pet_attack_attr_none;
|
int pet_attack_attr_none;
|
||||||
int mob_attack_attr_none;
|
int mob_attack_attr_none;
|
||||||
int mob_ghostring_fix;
|
int mob_ghostring_fix;
|
||||||
@ -273,7 +271,6 @@ extern struct Battle_Config {
|
|||||||
int skill_removetrap_type;
|
int skill_removetrap_type;
|
||||||
int disp_experience;
|
int disp_experience;
|
||||||
int castle_defense_rate;
|
int castle_defense_rate;
|
||||||
int riding_weight;
|
|
||||||
int backstab_bow_penalty;
|
int backstab_bow_penalty;
|
||||||
int hp_rate;
|
int hp_rate;
|
||||||
int sp_rate;
|
int sp_rate;
|
||||||
@ -309,7 +306,6 @@ extern struct Battle_Config {
|
|||||||
int skill_steal_type; // [celest]
|
int skill_steal_type; // [celest]
|
||||||
int skill_steal_rate; // [celest]
|
int skill_steal_rate; // [celest]
|
||||||
int night_darkness_level; // [celest]
|
int night_darkness_level; // [celest]
|
||||||
int skill_range_leniency; // [celest]
|
|
||||||
int motd_type; // [celest]
|
int motd_type; // [celest]
|
||||||
int allow_atcommand_when_mute; // [celest]
|
int allow_atcommand_when_mute; // [celest]
|
||||||
int finding_ore_rate; // orn
|
int finding_ore_rate; // orn
|
||||||
|
@ -929,13 +929,7 @@ static int itemdb_final(void *key,void *data,va_list ap)
|
|||||||
|
|
||||||
void itemdb_reload(void)
|
void itemdb_reload(void)
|
||||||
{
|
{
|
||||||
/*
|
numdb_final(item_db,itemdb_final);
|
||||||
|
|
||||||
<empty item databases>
|
|
||||||
itemdb_read();
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
do_init_itemdb();
|
do_init_itemdb();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3120,7 +3120,7 @@ int map_db_final(void *k,void *d,va_list ap)
|
|||||||
}
|
}
|
||||||
int nick_db_final(void *k,void *d,va_list ap){ return 0; }
|
int nick_db_final(void *k,void *d,va_list ap){ return 0; }
|
||||||
int charid_db_final(void *k,void *d,va_list ap){ return 0; }
|
int charid_db_final(void *k,void *d,va_list ap){ return 0; }
|
||||||
static int cleanup_sub(struct block_list *bl, va_list ap) {
|
int cleanup_sub(struct block_list *bl, va_list ap) {
|
||||||
nullpo_retr(0, bl);
|
nullpo_retr(0, bl);
|
||||||
|
|
||||||
switch(bl->type) {
|
switch(bl->type) {
|
||||||
|
@ -791,6 +791,8 @@ int path_blownpos(int m,int x0,int y0,int dx,int dy,int count);
|
|||||||
|
|
||||||
int map_who(int fd);
|
int map_who(int fd);
|
||||||
|
|
||||||
|
int cleanup_sub(struct block_list *bl, va_list ap);
|
||||||
|
|
||||||
void map_helpscreen(); // [Valaris]
|
void map_helpscreen(); // [Valaris]
|
||||||
int map_delmap(char *mapname);
|
int map_delmap(char *mapname);
|
||||||
|
|
||||||
|
@ -4352,14 +4352,17 @@ static int mob_readdb_race(void)
|
|||||||
|
|
||||||
void mob_reload(void)
|
void mob_reload(void)
|
||||||
{
|
{
|
||||||
/*
|
#ifndef TXT_ONLY
|
||||||
|
if(db_use_sqldbs)
|
||||||
|
mob_read_sqldb();
|
||||||
|
else
|
||||||
|
#endif /* TXT_ONLY */
|
||||||
|
mob_readdb();
|
||||||
|
|
||||||
<empty monster database>
|
mob_readdb_mobavail();
|
||||||
mob_read();
|
mob_read_randommonster();
|
||||||
|
mob_readskilldb();
|
||||||
*/
|
mob_readdb_race();
|
||||||
|
|
||||||
do_init_mob();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef TXT_ONLY
|
#ifndef TXT_ONLY
|
||||||
|
@ -1106,7 +1106,7 @@ int npc_buylist(struct map_session_data *sd,int n,unsigned short *item_list)
|
|||||||
if (sd->status.skill[MC_DISCOUNT].flag != 0)
|
if (sd->status.skill[MC_DISCOUNT].flag != 0)
|
||||||
skill = sd->status.skill[MC_DISCOUNT].flag - 2;
|
skill = sd->status.skill[MC_DISCOUNT].flag - 2;
|
||||||
if (skill > 0) {
|
if (skill > 0) {
|
||||||
z = z * (double)skill * (double)battle_config.shop_exp/100.;
|
z = z * (double)skill * (double)battle_config.shop_exp/10000.;
|
||||||
if (z < 1)
|
if (z < 1)
|
||||||
z = 1;
|
z = 1;
|
||||||
pc_gainexp(sd,0,(int)z);
|
pc_gainexp(sd,0,(int)z);
|
||||||
@ -1166,7 +1166,7 @@ int npc_selllist(struct map_session_data *sd,int n,unsigned short *item_list)
|
|||||||
if (sd->status.skill[MC_OVERCHARGE].flag != 0)
|
if (sd->status.skill[MC_OVERCHARGE].flag != 0)
|
||||||
skill = sd->status.skill[MC_OVERCHARGE].flag - 2;
|
skill = sd->status.skill[MC_OVERCHARGE].flag - 2;
|
||||||
if (skill > 0) {
|
if (skill > 0) {
|
||||||
z = z * (double)skill * (double)battle_config.shop_exp/100.;
|
z = z * (double)skill * (double)battle_config.shop_exp/10000.;
|
||||||
if (z < 1)
|
if (z < 1)
|
||||||
z = 1;
|
z = 1;
|
||||||
pc_gainexp(sd,0,(int)z);
|
pc_gainexp(sd,0,(int)z);
|
||||||
@ -2094,16 +2094,13 @@ int npc_parse_mob(char *w1,char *w2,char *w3,char *w4)
|
|||||||
md->bl.x=x;
|
md->bl.x=x;
|
||||||
md->bl.y=y;
|
md->bl.y=y;
|
||||||
|
|
||||||
if(sscanf(w3,"%[^,],%d",mobname,&level) > 1) {
|
if(sscanf(w3,"%[^,],%d",mobname,&level) > 1)
|
||||||
if(strcmp(mobname,"--en--")==0)
|
|
||||||
memcpy(md->name,mob_db[class_].name,24);
|
|
||||||
else if(strcmp(mobname,"--ja--")==0)
|
|
||||||
memcpy(md->name,mob_db[class_].jname,24);
|
|
||||||
md->level=level;
|
md->level=level;
|
||||||
}
|
if(strcmp(mobname,"--en--")==0)
|
||||||
|
memcpy(md->name,mob_db[class_].name,24);
|
||||||
else
|
else if(strcmp(mobname,"--ja--")==0)
|
||||||
memcpy(md->name,w3,24);
|
memcpy(md->name,mob_db[class_].jname,24);
|
||||||
|
else memcpy(md->name,mobname,24);
|
||||||
|
|
||||||
md->n = i;
|
md->n = i;
|
||||||
md->base_class = md->class_ = class_;
|
md->base_class = md->class_ = class_;
|
||||||
|
26
src/map/pc.c
26
src/map/pc.c
@ -978,13 +978,11 @@ int pc_calc_skilltree(struct map_session_data *sd)
|
|||||||
if(i==331) continue;
|
if(i==331) continue;
|
||||||
sd->status.skill[i].id=i;
|
sd->status.skill[i].id=i;
|
||||||
}
|
}
|
||||||
if(battle_config.enable_upper_class){ //confで無?でなければ?み?む
|
for(i=355;i<411;i++)
|
||||||
for(i=355;i<411;i++)
|
sd->status.skill[i].id=i;
|
||||||
sd->status.skill[i].id=i;
|
for(i=475;i<480;i++)
|
||||||
for(i=475;i<480;i++)
|
sd->status.skill[i].id=i;
|
||||||
sd->status.skill[i].id=i;
|
} else {
|
||||||
}
|
|
||||||
}else{
|
|
||||||
do {
|
do {
|
||||||
flag=0;
|
flag=0;
|
||||||
for(i=0;(id=skill_tree[s][c][i].id)>0;i++){
|
for(i=0;(id=skill_tree[s][c][i].id)>0;i++){
|
||||||
@ -3611,10 +3609,6 @@ struct pc_base_job pc_calc_base_job(int b_class)
|
|||||||
bj.upper = 2;
|
bj.upper = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(battle_config.enable_upper_class==0){ //confで無?になっていたらupper=0
|
|
||||||
bj.upper = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(bj.job == 0){
|
if(bj.job == 0){
|
||||||
bj.type = 0;
|
bj.type = 0;
|
||||||
}else if(bj.job < 7){
|
}else if(bj.job < 7){
|
||||||
@ -4355,12 +4349,10 @@ int pc_allskillup(struct map_session_data *sd)
|
|||||||
if(i==331) continue;
|
if(i==331) continue;
|
||||||
sd->status.skill[i].lv=skill_get_max(i);
|
sd->status.skill[i].lv=skill_get_max(i);
|
||||||
}
|
}
|
||||||
if(battle_config.enable_upper_class){ //confで無?でなければ?み?む
|
for(i=355;i<411;i++)
|
||||||
for(i=355;i<411;i++)
|
sd->status.skill[i].lv=skill_get_max(i);
|
||||||
sd->status.skill[i].lv=skill_get_max(i);
|
for(i=475;i<480;i++)
|
||||||
for(i=475;i<480;i++)
|
sd->status.skill[i].lv=skill_get_max(i);
|
||||||
sd->status.skill[i].lv=skill_get_max(i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for(i=0;(id=skill_tree[s][c][i].id)>0;i++){
|
for(i=0;(id=skill_tree[s][c][i].id)>0;i++){
|
||||||
|
@ -7833,11 +7833,11 @@ int do_final_script()
|
|||||||
if (script_config.die_event_name)
|
if (script_config.die_event_name)
|
||||||
aFree(script_config.die_event_name);
|
aFree(script_config.die_event_name);
|
||||||
if (script_config.kill_event_name)
|
if (script_config.kill_event_name)
|
||||||
aFree(script_config.die_event_name);
|
aFree(script_config.kill_event_name);
|
||||||
if (script_config.login_event_name)
|
if (script_config.login_event_name)
|
||||||
aFree(script_config.die_event_name);
|
aFree(script_config.login_event_name);
|
||||||
if (script_config.logout_event_name)
|
if (script_config.logout_event_name)
|
||||||
aFree(script_config.die_event_name);
|
aFree(script_config.logout_event_name);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -4812,7 +4812,7 @@ int skill_castend_pos2( struct block_list *src, int x,int y,int skillid,int skil
|
|||||||
|
|
||||||
case HT_DETECTING: /* ディテクティング */
|
case HT_DETECTING: /* ディテクティング */
|
||||||
{
|
{
|
||||||
const int range=7;
|
int range=skilllv*2+1;
|
||||||
if(src->x!=x)
|
if(src->x!=x)
|
||||||
x+=(src->x-x>0)?-range:range;
|
x+=(src->x-x>0)?-range:range;
|
||||||
if(src->y!=y)
|
if(src->y!=y)
|
||||||
@ -6915,14 +6915,13 @@ int skill_use_id( struct map_session_data *sd, int target_id,
|
|||||||
range = status_get_range(&sd->bl) - (range + 1);
|
range = status_get_range(&sd->bl) - (range + 1);
|
||||||
// be lenient if the skill was cast before we have moved to the correct position [Celest]
|
// be lenient if the skill was cast before we have moved to the correct position [Celest]
|
||||||
if (sd->walktimer != -1)
|
if (sd->walktimer != -1)
|
||||||
range += battle_config.skill_range_leniency;
|
range++;
|
||||||
else check_range_flag = 1;
|
else check_range_flag = 1;
|
||||||
if(!battle_check_range(&sd->bl,bl,range)) {
|
if(!battle_check_range(&sd->bl,bl,range)) {
|
||||||
if (check_range_flag && battle_check_range(&sd->bl,bl,range + battle_config.skill_range_leniency)) {
|
if (check_range_flag && battle_check_range(&sd->bl,bl,range + 1)) {
|
||||||
int dir, mask[8][2] = {{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};
|
int mask[8][2] = {{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};
|
||||||
dir = map_calc_dir(&sd->bl,bl->x,bl->y);
|
int dir = map_calc_dir(&sd->bl,bl->x,bl->y);
|
||||||
pc_walktoxy (sd, sd->bl.x + mask[dir][0] * battle_config.skill_range_leniency,
|
pc_walktoxy (sd, sd->bl.x + mask[dir][0], sd->bl.y + mask[dir][1]);
|
||||||
sd->bl.y + mask[dir][1] * battle_config.skill_range_leniency);
|
|
||||||
} else
|
} else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -7177,14 +7176,13 @@ int skill_use_pos( struct map_session_data *sd,
|
|||||||
range = status_get_range(&sd->bl) - (range + 1);
|
range = status_get_range(&sd->bl) - (range + 1);
|
||||||
// be lenient if the skill was cast before we have moved to the correct position [Celest]
|
// be lenient if the skill was cast before we have moved to the correct position [Celest]
|
||||||
if (sd->walktimer != -1)
|
if (sd->walktimer != -1)
|
||||||
range += battle_config.skill_range_leniency;
|
range ++;
|
||||||
else check_range_flag = 1;
|
else check_range_flag = 1;
|
||||||
if(!battle_check_range(&sd->bl,&bl,range)) {
|
if(!battle_check_range(&sd->bl,&bl,range)) {
|
||||||
if (check_range_flag && battle_check_range(&sd->bl,&bl,range + battle_config.skill_range_leniency)) {
|
if (check_range_flag && battle_check_range(&sd->bl,&bl,range + 1)) {
|
||||||
int dir, mask[8][2] = {{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};
|
int mask[8][2] = {{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1}};
|
||||||
dir = map_calc_dir(&sd->bl,bl.x,bl.y);
|
int dir = map_calc_dir(&sd->bl,bl.x,bl.y);
|
||||||
pc_walktoxy (sd, sd->bl.x + mask[dir][0] * battle_config.skill_range_leniency,
|
pc_walktoxy (sd, sd->bl.x + mask[dir][0], sd->bl.y + mask[dir][1]);
|
||||||
sd->bl.y + mask[dir][1] * battle_config.skill_range_leniency);
|
|
||||||
} else
|
} else
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -7656,12 +7654,16 @@ int skill_frostjoke_scream(struct block_list *bl,va_list ap)
|
|||||||
if(src == bl)//自分には?かない
|
if(src == bl)//自分には?かない
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(battle_check_target(src,bl,BCT_ENEMY) > 0)
|
if (map[src->m].flag.gvg || map[src->m].flag.pvp)
|
||||||
skill_additional_effect(src,bl,skillnum,skilllv,BF_MISC,tick);
|
skill_additional_effect(src,bl,skillnum,skilllv,BF_MISC,tick);
|
||||||
else if(battle_check_target(src,bl,BCT_PARTY) > 0) {
|
// we freeze everybody except of ourselfes on pvp/gvg [veider]
|
||||||
if(rand()%100 < 10)//PTメンバにも低確率でかかる(とりあえず10%)
|
else {
|
||||||
|
if(battle_check_target(src,bl,BCT_ENEMY) > 0)
|
||||||
|
skill_additional_effect(src,bl,skillnum,skilllv,BF_MISC,tick);
|
||||||
|
else if(battle_check_target(src,bl,BCT_PARTY) > 0 && rand()%100 < 10)
|
||||||
skill_additional_effect(src,bl,skillnum,skilllv,BF_MISC,tick);
|
skill_additional_effect(src,bl,skillnum,skilllv,BF_MISC,tick);
|
||||||
}
|
}
|
||||||
|
// so on non-pvp/gvg we are just freezing as freezed before
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -8373,8 +8375,9 @@ int skill_unit_timer_sub( struct block_list *bl, va_list ap )
|
|||||||
|
|
||||||
if(!unit->alive)
|
if(!unit->alive)
|
||||||
return 0;
|
return 0;
|
||||||
|
group=unit->group;
|
||||||
|
|
||||||
nullpo_retr(0, group=unit->group);
|
nullpo_retr(0, group);
|
||||||
range = unit->range;
|
range = unit->range;
|
||||||
|
|
||||||
/* onplace_timerイベント呼び出し */
|
/* onplace_timerイベント呼び出し */
|
||||||
@ -8772,41 +8775,33 @@ int skill_produce_mix( struct map_session_data *sd,
|
|||||||
make_per += 500 + pc_checkskill(sd,AM_CP_WEAPON)*100 + pc_checkskill(sd,AM_CP_SHIELD)*100 +
|
make_per += 500 + pc_checkskill(sd,AM_CP_WEAPON)*100 + pc_checkskill(sd,AM_CP_SHIELD)*100 +
|
||||||
pc_checkskill(sd,AM_CP_ARMOR)*100 + pc_checkskill(sd,AM_CP_HELM)*100;
|
pc_checkskill(sd,AM_CP_ARMOR)*100 + pc_checkskill(sd,AM_CP_HELM)*100;
|
||||||
else
|
else
|
||||||
make_per = 1000 + sd->status.base_level*30 + sd->paramc[3]*20 + sd->paramc[4]*15 + pc_checkskill(sd,AM_LEARNINGPOTION)*100 + pc_checkskill(sd,AM_PHARMACY)*300;
|
make_per = 1000 + sd->status.base_level*30 + sd->paramc[3]*20 + sd->paramc[4]*15 + pc_checkskill(sd,AM_LEARNINGPOTION)*100 + pc_checkskill(sd,AM_PHARMACY)*300;
|
||||||
} else if (skill_produce_db[idx].req_skill == ASC_CDP) {
|
} else if (skill_produce_db[idx].req_skill == ASC_CDP) {
|
||||||
make_per = 2000 + 40*sd->paramc[4] + 20*sd->paramc[5];
|
make_per = 2000 + 40*sd->paramc[4] + 20*sd->paramc[5];
|
||||||
//make_per = 20 + (20*sd->paramc[4])/50 + (20*sd->paramc[5])/100;
|
|
||||||
} else {
|
} else {
|
||||||
if(nameid == 998)
|
if(nameid == 998)
|
||||||
make_per = 1500 + sd->status.job_level*35 + sd->paramc[4]*10 + sd->paramc[5]*10 + pc_checkskill(sd,skill_produce_db[idx].req_skill)*600;
|
make_per = 1500 + sd->status.job_level*35 + sd->paramc[4]*10 + sd->paramc[5]*10 + pc_checkskill(sd,skill_produce_db[idx].req_skill)*600;
|
||||||
else
|
else
|
||||||
make_per = 1000 + sd->status.job_level*35 + sd->paramc[4]*10 + sd->paramc[5]*10 + pc_checkskill(sd,skill_produce_db[idx].req_skill)*500;
|
make_per = 1000 + sd->status.job_level*35 + sd->paramc[4]*10 + sd->paramc[5]*10 + pc_checkskill(sd,skill_produce_db[idx].req_skill)*500;
|
||||||
}
|
}
|
||||||
}
|
if(battle_config.pp_rate != 100)
|
||||||
else { // Corrected rates [DracoRPG]
|
make_per = make_per * battle_config.pp_rate / 100;
|
||||||
|
} else { // Corrected rates [DracoRPG]
|
||||||
int add_per=0;
|
int add_per=0;
|
||||||
if(pc_search_inventory(sd,989) >= 0) add_per = 400;
|
if(pc_search_inventory(sd,989) >= 0) add_per = 400;
|
||||||
else if(pc_search_inventory(sd,988) >= 0) add_per = 300;
|
else if(pc_search_inventory(sd,988) >= 0) add_per = 300;
|
||||||
else if(pc_search_inventory(sd,987) >= 0) add_per = 200;
|
else if(pc_search_inventory(sd,987) >= 0) add_per = 200;
|
||||||
else if(pc_search_inventory(sd,986) >= 0) add_per = 100;
|
else if(pc_search_inventory(sd,986) >= 0) add_per = 100;
|
||||||
wlv = itemdb_wlv(nameid);
|
wlv = itemdb_wlv(nameid);
|
||||||
make_per = 1500 + sd->status.job_level*35 + sd->paramc[4]*10 + sd->paramc[5]*10 + pc_checkskill(sd,skill_produce_db[idx].req_skill)*1000 + pc_checkskill(sd,BS_WEAPONRESEARCH)*100 +
|
make_per = 1500 + sd->status.job_level*35 + sd->paramc[4]*10 + sd->paramc[5]*10 + pc_checkskill(sd,skill_produce_db[idx].req_skill)*1000 + pc_checkskill(sd,BS_WEAPONRESEARCH)*100 +
|
||||||
((wlv >= 3)? pc_checkskill(sd,BS_ORIDEOCON)*100 : 0) + add_per - (ele? 2500:0) - sc*((4-wlv)*500) - wlv*1000;
|
((wlv >= 3)? pc_checkskill(sd,BS_ORIDEOCON)*100 : 0) + add_per - (ele? 2500:0) - sc*((4-wlv)*500) - wlv*1000;
|
||||||
|
if(battle_config.wp_rate != 100) /* Šm—¦•â<E280A2>³ */
|
||||||
|
make_per = make_per * battle_config.wp_rate / 100;
|
||||||
}
|
}
|
||||||
// -----------------------------------------------------//
|
// -----------------------------------------------------//
|
||||||
|
|
||||||
if(make_per < 1) make_per = 1;
|
if(make_per < 1) make_per = 1;
|
||||||
|
|
||||||
if(skill_produce_db[idx].req_skill==AM_PHARMACY ||
|
|
||||||
skill_produce_db[idx].req_skill==ASC_CDP) {
|
|
||||||
if( battle_config.pp_rate!=100 )
|
|
||||||
make_per=make_per*battle_config.pp_rate/100;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if( battle_config.wp_rate!=100 ) /* 確率補正 */
|
|
||||||
make_per=make_per*battle_config.wp_rate/100;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if(battle_config.etc_log)
|
// if(battle_config.etc_log)
|
||||||
// printf("make rate = %d\n",make_per);
|
// printf("make rate = %d\n",make_per);
|
||||||
|
|
||||||
@ -9556,14 +9551,9 @@ static int skill_read_skillspamount(void)
|
|||||||
|
|
||||||
void skill_reload(void)
|
void skill_reload(void)
|
||||||
{
|
{
|
||||||
/*
|
skill_readdb();
|
||||||
|
if (battle_config.skill_sp_override_grffile)
|
||||||
<empty skill database>
|
skill_read_skillspamount();
|
||||||
<?>
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
do_init_skill();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
|
@ -921,7 +921,8 @@ int status_calc_pc(struct map_session_data* sd,int first)
|
|||||||
if( (skill=pc_checkskill(sd,BS_WEAPONRESEARCH))>0) // 武器?究の命中率?加
|
if( (skill=pc_checkskill(sd,BS_WEAPONRESEARCH))>0) // 武器?究の命中率?加
|
||||||
sd->hit += skill*2;
|
sd->hit += skill*2;
|
||||||
if(sd->status.option&2 && (skill = pc_checkskill(sd,RG_TUNNELDRIVE))>0 ) // トンネルドライブ // トンネルドライブ
|
if(sd->status.option&2 && (skill = pc_checkskill(sd,RG_TUNNELDRIVE))>0 ) // トンネルドライブ // トンネルドライブ
|
||||||
sd->speed += (1.2*DEFAULT_WALK_SPEED - skill*9);
|
sd->speed += (100-16)*skill*DEFAULT_WALK_SPEED/100;
|
||||||
|
//sd->speed += (1.2*DEFAULT_WALK_SPEED - skill*9);
|
||||||
if (pc_iscarton(sd) && (skill=pc_checkskill(sd,MC_PUSHCART))>0) // カ?トによる速度低下
|
if (pc_iscarton(sd) && (skill=pc_checkskill(sd,MC_PUSHCART))>0) // カ?トによる速度低下
|
||||||
sd->speed += (10-skill) * (DEFAULT_WALK_SPEED * 0.1);
|
sd->speed += (10-skill) * (DEFAULT_WALK_SPEED * 0.1);
|
||||||
else if (pc_isriding(sd)) { // ペコペコ?りによる速度?加
|
else if (pc_isriding(sd)) { // ペコペコ?りによる速度?加
|
||||||
|
@ -3,15 +3,18 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "db.h"
|
#include "../common/db.h"
|
||||||
|
#include "../common/nullpo.h"
|
||||||
|
#include "../common/malloc.h"
|
||||||
|
|
||||||
#include "itemdb.h"
|
#include "itemdb.h"
|
||||||
#include "clif.h"
|
#include "clif.h"
|
||||||
#include "intif.h"
|
#include "intif.h"
|
||||||
#include "pc.h"
|
#include "pc.h"
|
||||||
#include "storage.h"
|
#include "storage.h"
|
||||||
#include "guild.h"
|
#include "guild.h"
|
||||||
#include "nullpo.h"
|
#include "battle.h"
|
||||||
#include "malloc.h"
|
#include "atcommand.h"
|
||||||
|
|
||||||
#ifdef MEMWATCH
|
#ifdef MEMWATCH
|
||||||
#include "memwatch.h"
|
#include "memwatch.h"
|
||||||
@ -124,6 +127,10 @@ int storage_storageopen(struct map_session_data *sd)
|
|||||||
|
|
||||||
nullpo_retr(0, sd);
|
nullpo_retr(0, sd);
|
||||||
|
|
||||||
|
if(pc_isGM(sd) && pc_isGM(sd) < battle_config.gm_can_drop_lv) {
|
||||||
|
clif_displaymessage(sd->fd, msg_txt(246));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
if((stor = numdb_search(storage_db,sd->status.account_id)) != NULL) {
|
if((stor = numdb_search(storage_db,sd->status.account_id)) != NULL) {
|
||||||
if (stor->storage_status == 0) {
|
if (stor->storage_status == 0) {
|
||||||
stor->storage_status = 1;
|
stor->storage_status = 1;
|
||||||
@ -132,7 +139,7 @@ int storage_storageopen(struct map_session_data *sd)
|
|||||||
clif_storageequiplist(sd,stor);
|
clif_storageequiplist(sd,stor);
|
||||||
clif_updatestorageamount(sd,stor);
|
clif_updatestorageamount(sd,stor);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
intif_request_storage(sd->status.account_id);
|
intif_request_storage(sd->status.account_id);
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "../common/nullpo.h"
|
||||||
#include "clif.h"
|
#include "clif.h"
|
||||||
#include "itemdb.h"
|
#include "itemdb.h"
|
||||||
#include "map.h"
|
#include "map.h"
|
||||||
@ -16,8 +17,6 @@
|
|||||||
#include "intif.h"
|
#include "intif.h"
|
||||||
#include "atcommand.h"
|
#include "atcommand.h"
|
||||||
|
|
||||||
#include "nullpo.h"
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* 取引要請を相手に送る
|
* 取引要請を相手に送る
|
||||||
*------------------------------------------
|
*------------------------------------------
|
||||||
@ -34,7 +33,10 @@ void trade_traderequest(struct map_session_data *sd, int target_id) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((target_sd->trade_partner != 0) || (sd->trade_partner != 0)) {
|
if(pc_isGM(sd) && pc_isGM(sd) < battle_config.gm_can_drop_lv) {
|
||||||
|
clif_displaymessage(sd->fd, msg_txt(246));
|
||||||
|
trade_tradecancel(sd); // GM is not allowed to trade
|
||||||
|
} else if ((target_sd->trade_partner != 0) || (sd->trade_partner != 0)) {
|
||||||
trade_tradecancel(sd); // person is in another trade
|
trade_tradecancel(sd); // person is in another trade
|
||||||
} else {
|
} else {
|
||||||
if (sd->bl.m != target_sd->bl.m ||
|
if (sd->bl.m != target_sd->bl.m ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user