summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcodemaster <codemaster@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-12-13 22:15:58 +0000
committercodemaster <codemaster@54d463be-8e91-2dee-dedb-b68131a5f0ec>2004-12-13 22:15:58 +0000
commitae6aa7431d176f3defab07234cdd7677523f0c4d (patch)
treeaead9f031a47c24081d13030d72fc6c63e1c8f50 /src
parent6ef9c57c9e27f1225ba4be518d980cfae17a10f5 (diff)
downloadhercules-ae6aa7431d176f3defab07234cdd7677523f0c4d.tar.gz
hercules-ae6aa7431d176f3defab07234cdd7677523f0c4d.tar.bz2
hercules-ae6aa7431d176f3defab07234cdd7677523f0c4d.tar.xz
hercules-ae6aa7431d176f3defab07234cdd7677523f0c4d.zip
* common/mmo.h: changed base_level and job_level to unsigned int to increase max levels
* char/char.c: added a NULL check for the file in parse_friend_txt * map/atcommand.c/.h: added @clearweather (thanks to Dexity) * map/charcommand.c/.h: added #spiritball * map/mob.c: fixed a compiler warning (ln was an int and was supposed to be an unsigned long int) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@563 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/char/char.c3
-rw-r--r--src/common/mmo.h2
-rw-r--r--src/map/atcommand.c23
-rw-r--r--src/map/atcommand.h1
-rw-r--r--src/map/charcommand.c47
-rw-r--r--src/map/charcommand.h1
-rw-r--r--src/map/mob.c3
7 files changed, 76 insertions, 4 deletions
diff --git a/src/char/char.c b/src/char/char.c
index 2d5c5ba7d..50e1c4f0a 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -577,6 +577,9 @@ int parse_friend_txt(struct mmo_charstatus *p)
// Open the file and look for the ID
fp = fopen(friends_txt, "r");
+
+ if(fp == NULL)
+ return 1;
while(fgets(line, sizeof(line)-1, fp)) {
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 3504b00e4..378f324a1 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -129,7 +129,7 @@ struct mmo_charstatus {
short head_top,head_mid,head_bottom;
char name[24];
- unsigned char base_level,job_level;
+ unsigned int base_level,job_level;
short str,agi,vit,int_,dex,luk;
unsigned char char_num,sex;
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index d460bfa2d..ff7ff00da 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -206,6 +206,7 @@ ATCOMMAND_FUNC(trade); // by MouseJstr
ATCOMMAND_FUNC(send); // by davidsiaw
ATCOMMAND_FUNC(setbattleflag); // by MouseJstr
ATCOMMAND_FUNC(unmute); // [Valaris]
+ATCOMMAND_FUNC(clearweather); // Dexity
ATCOMMAND_FUNC(uptime); // by MC Cameri
ATCOMMAND_FUNC(changesex); // by MC Cameri
ATCOMMAND_FUNC(mute); // celest
@@ -455,6 +456,7 @@ static AtCommandInfo atcommand_info[] = {
{ AtCommand_Send, "@send", 60, atcommand_send },
{ AtCommand_SetBattleFlag, "@setbattleflag", 60, atcommand_setbattleflag },
{ AtCommand_UnMute, "@unmute", 60, atcommand_unmute }, // [Valaris]
+ { AtCommand_Clearweather, "@clearweather", 99, atcommand_clearweather }, // Dexity
{ AtCommand_UpTime, "@uptime", 0, atcommand_uptime }, // by MC Cameri
{ AtCommand_ChangeSex, "@changesex", 1, atcommand_changesex }, // by MC Cameri
{ AtCommand_Mute, "@mute", 99, atcommand_mute }, // [celest]
@@ -7686,6 +7688,27 @@ atcommand_leaves(
clif_specialeffect(&sd->bl,effno,2);
return 0;
}
+
+/*==========================================
+ * Clearing Weather Effects by Dexity
+ *------------------------------------------
+ */
+int
+atcommand_clearweather(
+ const int fd, struct map_session_data* sd,
+ const char* command, const char* message)
+{
+ int effno = 0;
+ nullpo_retr(-1, sd);
+ map[sd->bl.m].flag.rain=0;
+ map[sd->bl.m].flag.snow=0;
+ map[sd->bl.m].flag.sakura=0;
+ map[sd->bl.m].flag.fog=0;
+ map[sd->bl.m].flag.leaves=0;
+ clif_specialeffect(&sd->bl,effno,2);
+ return 0;
+}
+
/*==========================================
*
*------------------------------------------
diff --git a/src/map/atcommand.h b/src/map/atcommand.h
index ce8fc2359..5cb40b433 100644
--- a/src/map/atcommand.h
+++ b/src/map/atcommand.h
@@ -187,6 +187,7 @@ enum AtCommandType {
AtCommand_Send,
AtCommand_SetBattleFlag,
AtCommand_UnMute,
+ AtCommand_Clearweather, // by Dexity
AtCommand_UpTime, // by MC Cameri
AtCommand_ChangeSex, // by MC Cameri
AtCommand_Mute, // [celest]
diff --git a/src/map/charcommand.c b/src/map/charcommand.c
index 4c22ecbcc..56cf6b316 100644
--- a/src/map/charcommand.c
+++ b/src/map/charcommand.c
@@ -42,6 +42,7 @@ CCMD_FUNC(option);
CCMD_FUNC(save);
CCMD_FUNC(stats_all);
CCMD_FUNC(reset);
+CCMD_FUNC(spiritball);
#ifdef TXT_ONLY
/* TXT_ONLY */
@@ -70,6 +71,7 @@ static CharCommandInfo charcommand_info[] = {
{ CharCommandReset, "#reset", 60, charcommand_reset },
{ CharCommandSave, "#save", 60, charcommand_save },
{ CharCommandStatsAll, "#statsall", 40, charcommand_stats_all },
+ { CharCommandSpiritball, "#spiritball", 40, charcommand_spiritball },
#ifdef TXT_ONLY
/* TXT_ONLY */
@@ -248,8 +250,8 @@ int charcommand_config_read(const char *cfgName) {
charcommand_config_read(w2);
else if (strcmpi(w1, "command_symbol") == 0 && w2[0] > 31 &&
w2[0] != '/' && // symbol of standard ragnarok GM commands
- w2[0] != '%' && // symbol of party chat speaking
- w2[0] != '@') // symbol for @commands
+ w2[0] != '%' // symbol of party chat speaking
+ )
command_symbol = w2[0];
}
fclose(fp);
@@ -701,3 +703,44 @@ int charcommand_stats_all(const int fd, struct map_session_data* sd, const char*
return 0;
}
+/*==========================================
+ * CharSpiritBall Function by PalasX
+ *------------------------------------------
+ */
+int charcommand_spiritball(const int fd, struct map_session_data* sd,const char* command, const char* message)
+{
+ struct map_session_data *pl_sd;
+ char character[100];
+ int spirit = 0;
+
+ memset(character, '\0', sizeof(character));
+
+ if(!message || !*message || sscanf(message, "%d %99[^\n]", &spirit, character) < 2 || spirit < 0 || spirit > 1000) {
+ clif_displaymessage(fd, "Usage: @spiritball <number: 0-1000>) <CHARACTER_NAME>.");
+ return -1;
+ }
+
+ if((pl_sd = map_nick2sd(character)) != NULL) {
+ if (spirit >= 0 && spirit <= 0x7FFF) {
+ if (pl_sd->spiritball != spirit || spirit > 999) {
+ if (pl_sd->spiritball > 0)
+ pc_delspiritball(pl_sd, pl_sd->spiritball, 1);
+ pl_sd->spiritball = spirit;
+ clif_spiritball(pl_sd);
+ // no message, player can look the difference
+ if (spirit > 1000)
+ clif_displaymessage(fd, msg_table[204]); // WARNING: more than 1000 spiritballs can CRASH your server and/or client!
+ } else {
+ clif_displaymessage(fd, msg_table[205]); // You already have this number of spiritballs.
+ return -1;
+ }
+ } else {
+ clif_displaymessage(fd, msg_table[37]); // An invalid number was specified.
+ return -1;
+ }
+ } else {
+ clif_displaymessage(fd, msg_table[3]); // Character not found.
+ return -1;
+ }
+ return 0;
+}
diff --git a/src/map/charcommand.h b/src/map/charcommand.h
index 11babb816..27629d9b7 100644
--- a/src/map/charcommand.h
+++ b/src/map/charcommand.h
@@ -11,6 +11,7 @@ enum CharCommandType {
CharCommandOption,
CharCommandSave,
CharCommandStatsAll,
+ CharCommandSpiritball,
#ifdef TXT_ONLY
/* TXT_ONLY */
diff --git a/src/map/mob.c b/src/map/mob.c
index d773de1ec..a7516c784 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -4185,7 +4185,8 @@ void mob_reload(void)
static int mob_read_sqldb(void)
{
char line[1024];
- int i,class,ln=0;
+ int i,class;
+ long unsigned int ln=0;
char *str[55],*p,*np;
memset(mob_db,0,sizeof(mob_db));