summaryrefslogtreecommitdiff
path: root/src/map/atcommand.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/atcommand.c')
-rw-r--r--src/map/atcommand.c656
1 files changed, 312 insertions, 344 deletions
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index 57d2a73ef..cec314134 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -53,15 +53,9 @@
struct atcommand_interface atcommand_s;
-static char* msg_table[MAX_MSG]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others)
-
static char atcmd_output[CHAT_SIZE_MAX];
static char atcmd_player_name[NAME_LENGTH];
-static AtCommandInfo* get_atcommandinfo_byname(const char *name); // @help
-static const char* atcommand_checkalias(const char *aliasname); // @help
-static void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool is_atcmd_cmd); // @help
-
// @commands (script-based)
struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
int i = 0;
@@ -80,8 +74,8 @@ struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
const char* msg_txt(int msg_number)
{
if (msg_number >= 0 && msg_number < MAX_MSG &&
- msg_table[msg_number] != NULL && msg_table[msg_number][0] != '\0')
- return msg_table[msg_number];
+ atcommand->msg_table[msg_number] != NULL && atcommand->msg_table[msg_number][0] != '\0')
+ return atcommand->msg_table[msg_number];
return "??";
}
@@ -102,7 +96,7 @@ int msg_config_read(const char* cfgName)
}
if ((--called) == 0)
- memset(msg_table, 0, sizeof(msg_table[0]) * MAX_MSG);
+ memset(atcommand->msg_table, 0, sizeof(atcommand->msg_table[0]) * MAX_MSG);
while(fgets(line, sizeof(line), fp))
{
@@ -118,10 +112,11 @@ int msg_config_read(const char* cfgName)
msg_number = atoi(w1);
if (msg_number >= 0 && msg_number < MAX_MSG)
{
- if (msg_table[msg_number] != NULL)
- aFree(msg_table[msg_number]);
- msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char));
- strcpy(msg_table[msg_number],w2);
+ if (atcommand->msg_table[msg_number] != NULL)
+ aFree(atcommand->msg_table[msg_number]);
+ /* this could easily become consecutive memory like get_str() and save the malloc overhead for over 1k calls [Ind] */
+ atcommand->msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char));
+ strcpy(atcommand->msg_table[msg_number],w2);
}
}
}
@@ -138,7 +133,7 @@ void do_final_msg(void)
{
int i;
for (i = 0; i < MAX_MSG; i++)
- aFree(msg_table[i]);
+ aFree(atcommand->msg_table[i]);
}
/**
@@ -384,8 +379,7 @@ return false;\
/*==========================================
* @rura, @warp, @mapmove
*------------------------------------------*/
-ACMD(mapmove)
-{
+ACMD(mapmove) {
char map_name[MAP_NAME_LENGTH_EXT];
unsigned short mapindex;
short x = 0, y = 0;
@@ -405,17 +399,17 @@ ACMD(mapmove)
mapindex = mapindex_name2id(map_name);
if (mapindex)
- m = iMap->mapindex2mapid(mapindex);
+ m = map->mapindex2mapid(mapindex);
if (!mapindex || m < 0) { // m < 0 means on different server or that map is disabled! [Kevin]
clif->message(fd, msg_txt(1)); // Map not found.
return false;
}
- if ((x || y) && iMap->getcell(m, x, y, CELL_CHKNOPASS) && pc->get_group_level(sd) < battle_config.gm_ignore_warpable_area)
- { //This is to prevent the pc->setpos call from printing an error.
+ if ((x || y) && map->getcell(m, x, y, CELL_CHKNOPASS) && pc->get_group_level(sd) < battle_config.gm_ignore_warpable_area) {
+ //This is to prevent the pc->setpos call from printing an error.
clif->message(fd, msg_txt(2));
- if (!iMap->search_freecell(NULL, m, &x, &y, 10, 10, 1))
+ if (!map->search_freecell(NULL, m, &x, &y, 10, 10, 1))
x = y = 0; //Invalid cell, use random spot.
}
if (maplist[m].flag.nowarpto && !pc->has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
@@ -438,8 +432,7 @@ ACMD(mapmove)
/*==========================================
* Displays where a character is. Corrected version by Silent. [Skotlex]
*------------------------------------------*/
-ACMD(where)
-{
+ACMD(where) {
struct map_session_data* pl_sd;
nullpo_retr(-1, sd);
@@ -450,7 +443,7 @@ ACMD(where)
return false;
}
- pl_sd = iMap->nick2sd(atcmd_player_name);
+ pl_sd = map->nick2sd(atcmd_player_name);
if (pl_sd == NULL ||
strncmp(pl_sd->status.name, atcmd_player_name, NAME_LENGTH) != 0 ||
(pc->has_permission(pl_sd, PC_PERM_HIDE_SESSION) && pc->get_group_level(pl_sd) > pc->get_group_level(sd) && !pc->has_permission(sd, PC_PERM_WHO_DISPLAY_AID))
@@ -478,7 +471,7 @@ ACMD(jumpto) {
return false;
}
- if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL) {
+ if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -529,10 +522,10 @@ ACMD(jump)
return false;
}
- if ((x || y) && iMap->getcell(sd->bl.m, x, y, CELL_CHKNOPASS))
- { //This is to prevent the pc->setpos call from printing an error.
+ if ((x || y) && map->getcell(sd->bl.m, x, y, CELL_CHKNOPASS)) {
+ //This is to prevent the pc->setpos call from printing an error.
clif->message(fd, msg_txt(2));
- if (!iMap->search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1))
+ if (!map->search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1))
x = y = 0; //Invalid cell, use random spot.
}
@@ -546,8 +539,7 @@ ACMD(jump)
* Display list of online characters with
* various info.
*------------------------------------------*/
-ACMD(who)
-{
+ACMD(who) {
struct map_session_data *pl_sd = NULL;
struct s_mapiterator *iter = NULL;
char map_name[MAP_NAME_LENGTH_EXT] = "";
@@ -566,7 +558,7 @@ ACMD(who)
nullpo_retr(-1, sd);
if (strstr(command, "map") != NULL) {
- if (sscanf(message, "%15s %23s", map_name, player_name) < 1 || (map_id = iMap->mapname2mapid(map_name)) < 0)
+ if (sscanf(message, "%15s %23s", map_name, player_name) < 1 || (map_id = map->mapname2mapid(map_name)) < 0)
map_id = sd->bl.m;
} else {
sscanf(message, "%23s", player_name);
@@ -757,7 +749,7 @@ ACMD(load) {
nullpo_retr(-1, sd);
- m = iMap->mapindex2mapid(sd->status.save_point.map);
+ m = map->mapindex2mapid(sd->status.save_point.map);
if (m >= 0 && maplist[m].flag.nowarpto && !pc->has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
clif->message(fd, msg_txt(249)); // You are not authorized to warp to your save map.
return false;
@@ -895,9 +887,9 @@ ACMD(hide) {
if (sd->sc.option & OPTION_INVISIBLE) {
sd->sc.option &= ~OPTION_INVISIBLE;
if (sd->disguise != -1 )
- iStatus->set_viewdata(&sd->bl, sd->disguise);
+ status->set_viewdata(&sd->bl, sd->disguise);
else
- iStatus->set_viewdata(&sd->bl, sd->status.class_);
+ status->set_viewdata(&sd->bl, sd->status.class_);
clif->message(fd, msg_txt(10)); // Invisible: Off
// increment the number of pvp players on the map
@@ -908,7 +900,7 @@ ACMD(hide) {
sd->pvp_timer = timer->add( timer->gettick() + 200, pc->calc_pvprank_timer, sd->bl.id, 0 );
}
//bugreport:2266
- iMap->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl);
+ map->foreachinmovearea(clif->insight, &sd->bl, AREA_SIZE, sd->bl.x, sd->bl.y, BL_ALL, &sd->bl);
} else {
sd->sc.option |= OPTION_INVISIBLE;
sd->vd.class_ = INVISIBLE_CLASS;
@@ -1011,8 +1003,7 @@ ACMD(kill)
ACMD(alive)
{
nullpo_retr(-1, sd);
- if (!iStatus->revive(&sd->bl, 100, 100))
- {
+ if (!status->revive(&sd->bl, 100, 100)) {
clif->message(fd, msg_txt(667));
return false;
}
@@ -1080,7 +1071,7 @@ ACMD(heal)
}
if ( hp > 0 && sp >= 0 ) {
- if(!iStatus->heal(&sd->bl, hp, sp, 0))
+ if(!status->heal(&sd->bl, hp, sp, 0))
clif->message(fd, msg_txt(157)); // HP and SP are already with the good value.
else
clif->message(fd, msg_txt(17)); // HP, SP recovered.
@@ -1088,7 +1079,7 @@ ACMD(heal)
}
if ( hp < 0 && sp <= 0 ) {
- iStatus->damage(NULL, &sd->bl, -hp, -sp, 0, 0);
+ status->damage(NULL, &sd->bl, -hp, -sp, 0, 0);
clif->damage(&sd->bl,&sd->bl, timer->gettick(), 0, 0, -hp, 0, 4, 0);
clif->message(fd, msg_txt(156)); // HP or/and SP modified.
return true;
@@ -1097,18 +1088,18 @@ ACMD(heal)
//Opposing signs.
if ( hp ) {
if (hp > 0)
- iStatus->heal(&sd->bl, hp, 0, 0);
+ status->heal(&sd->bl, hp, 0, 0);
else {
- iStatus->damage(NULL, &sd->bl, -hp, 0, 0, 0);
+ status->damage(NULL, &sd->bl, -hp, 0, 0, 0);
clif->damage(&sd->bl,&sd->bl, timer->gettick(), 0, 0, -hp, 0, 4, 0);
}
}
if ( sp ) {
if (sp > 0)
- iStatus->heal(&sd->bl, 0, sp, 0);
+ status->heal(&sd->bl, 0, sp, 0);
else
- iStatus->damage(NULL, &sd->bl, 0, -sp, 0, 0);
+ status->damage(NULL, &sd->bl, 0, -sp, 0, 0);
}
clif->message(fd, msg_txt(156)); // HP or/and SP modified.
@@ -1392,22 +1383,22 @@ ACMD(help) {
} else {
if (*message == atcommand->at_symbol || *message == atcommand->char_symbol)
++message;
- command_name = atcommand_checkalias(message);
+ command_name = atcommand->check_alias(message);
}
if (!atcommand->can_use2(sd, command_name, COMMAND_ATCOMMAND)) {
sprintf(atcmd_output, msg_txt(153), message); // "%s is Unknown Command"
clif->message(fd, atcmd_output);
- atcommand_get_suggestions(sd, command_name, true);
+ atcommand->get_suggestions(sd, command_name, true);
return false;
}
- tinfo = get_atcommandinfo_byname(atcommand_checkalias(command_name));
+ tinfo = atcommand->get_info_byname(atcommand->check_alias(command_name));
if ( !tinfo || tinfo->help == NULL ) {
sprintf(atcmd_output, msg_txt(988), atcommand->at_symbol, command_name); // There is no help for %c%s.
clif->message(fd, atcmd_output);
- atcommand_get_suggestions(sd, command_name, true);
+ atcommand->get_suggestions(sd, command_name, true);
return false;
}
@@ -1423,7 +1414,7 @@ ACMD(help) {
StrBuf->Init(&buf);
StrBuf->AppendStr(&buf, msg_txt(990)); // Available aliases:
- command_info = get_atcommandinfo_byname(command_name);
+ command_info = atcommand->get_info_byname(command_name);
iter = db_iterator(atcommand->alias_db);
for (alias_info = dbi_first(iter); dbi_exists(iter); alias_info = dbi_next(iter)) {
if (alias_info->command == command_info) {
@@ -1444,7 +1435,7 @@ ACMD(help) {
// helper function, used in foreach calls to stop auto-attack timers
// parameter: '0' - everyone, 'id' - only those attacking someone with that id
-static int atcommand_stopattack(struct block_list *bl,va_list ap)
+int atcommand_stopattack(struct block_list *bl,va_list ap)
{
struct unit_data *ud = unit->bl2ud(bl);
int id = va_arg(ap, int);
@@ -1458,7 +1449,7 @@ static int atcommand_stopattack(struct block_list *bl,va_list ap)
/*==========================================
*
*------------------------------------------*/
-static int atcommand_pvpoff_sub(struct block_list *bl,va_list ap)
+int atcommand_pvpoff_sub(struct block_list *bl,va_list ap)
{
TBL_PC* sd = (TBL_PC*)bl;
clif->pvpset(sd, 0, 0, 2);
@@ -1477,15 +1468,15 @@ ACMD(pvpoff) {
return false;
}
- iMap->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
+ map->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
maplist[sd->bl.m].flag.pvp = 0;
if (!battle_config.pk_mode) {
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP);
}
- iMap->foreachinmap(atcommand_pvpoff_sub,sd->bl.m, BL_PC);
- iMap->foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
+ map->foreachinmap(atcommand->pvpoff_sub,sd->bl.m, BL_PC);
+ map->foreachinmap(atcommand->stopattack,sd->bl.m, BL_CHAR, 0);
clif->message(fd, msg_txt(31)); // PvP: Off.
return true;
}
@@ -1493,7 +1484,7 @@ ACMD(pvpoff) {
/*==========================================
*
*------------------------------------------*/
-static int atcommand_pvpon_sub(struct block_list *bl,va_list ap)
+int atcommand_pvpon_sub(struct block_list *bl,va_list ap)
{
TBL_PC* sd = (TBL_PC*)bl;
if (sd->pvp_timer == INVALID_TIMER) {
@@ -1515,13 +1506,13 @@ ACMD(pvpon) {
return false;
}
- iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME));
+ map->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME));
maplist[sd->bl.m].flag.pvp = 1;
if (!battle_config.pk_mode) {// display pvp circle and rank
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_FREEPVPZONE);
clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP);
- iMap->foreachinmap(atcommand_pvpon_sub,sd->bl.m, BL_PC);
+ map->foreachinmap(atcommand->pvpon_sub,sd->bl.m, BL_PC);
}
clif->message(fd, msg_txt(32)); // PvP: On.
@@ -1540,11 +1531,11 @@ ACMD(gvgoff) {
return false;
}
- iMap->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
+ map->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
maplist[sd->bl.m].flag.gvg = 0;
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP);
- iMap->foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
+ map->foreachinmap(atcommand->stopattack,sd->bl.m, BL_CHAR, 0);
clif->message(fd, msg_txt(33)); // GvG: Off.
return true;
@@ -1561,7 +1552,7 @@ ACMD(gvgon) {
return false;
}
- iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME));
+ map->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME));
maplist[sd->bl.m].flag.gvg = 1;
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE);
clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP);
@@ -1853,7 +1844,7 @@ ACMD(go)
}
if (town >= 0 && town < ARRAYLENGTH(data)) {
- m = iMap->mapname2mapid(data[town].map);
+ m = map->mapname2mapid(data[town].map);
if (m >= 0 && maplist[m].flag.nowarpto && !pc->has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
clif->message(fd, msg_txt(247));
return false;
@@ -1953,7 +1944,7 @@ ACMD(monster)
count = 0;
range = (int)sqrt((float)number) +2; // calculation of an odd number (+ 4 area around)
for (i = 0; i < number; i++) {
- iMap->search_freecell(&sd->bl, 0, &mx, &my, range, range, 0);
+ map->search_freecell(&sd->bl, 0, &mx, &my, range, range, 0);
k = mob->once_spawn(sd, sd->bl.m, mx, my, name, mob_id, 1, eventname, size, AI_NONE);
count += (k != 0) ? 1 : 0;
}
@@ -1976,7 +1967,7 @@ ACMD(monster)
/*==========================================
*
*------------------------------------------*/
-static int atkillmonster_sub(struct block_list *bl, va_list ap)
+int atkillmonster_sub(struct block_list *bl, va_list ap)
{
struct mob_data *md;
int flag;
@@ -1994,8 +1985,7 @@ static int atkillmonster_sub(struct block_list *bl, va_list ap)
return 1;
}
-ACMD(killmonster)
-{
+ACMD(killmonster) {
int map_id, drop_flag;
char map_name[MAP_NAME_LENGTH_EXT];
nullpo_retr(-1, sd);
@@ -2005,13 +1995,13 @@ ACMD(killmonster)
if (!message || !*message || sscanf(message, "%15s", map_name) < 1)
map_id = sd->bl.m;
else {
- if ((map_id = iMap->mapname2mapid(map_name)) < 0)
+ if ((map_id = map->mapname2mapid(map_name)) < 0)
map_id = sd->bl.m;
}
drop_flag = strcmp(command+1, "killmonster2");
- iMap->foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag);
+ map->foreachinmap(atcommand->atkillmonster_sub, map_id, BL_MOB, -drop_flag);
clif->message(fd, msg_txt(165)); // All monsters killed!
@@ -2194,8 +2184,7 @@ ACMD(memo)
/*==========================================
*
*------------------------------------------*/
-ACMD(gat)
-{
+ACMD(gat) {
int y;
nullpo_retr(-1, sd);
@@ -2204,11 +2193,11 @@ ACMD(gat)
for (y = 2; y >= -2; y--) {
sprintf(atcmd_output, "%s (x= %d, y= %d) %02X %02X %02X %02X %02X",
maplist[sd->bl.m].name, sd->bl.x - 2, sd->bl.y + y,
- iMap->getcell(sd->bl.m, sd->bl.x - 2, sd->bl.y + y, CELL_GETTYPE),
- iMap->getcell(sd->bl.m, sd->bl.x - 1, sd->bl.y + y, CELL_GETTYPE),
- iMap->getcell(sd->bl.m, sd->bl.x, sd->bl.y + y, CELL_GETTYPE),
- iMap->getcell(sd->bl.m, sd->bl.x + 1, sd->bl.y + y, CELL_GETTYPE),
- iMap->getcell(sd->bl.m, sd->bl.x + 2, sd->bl.y + y, CELL_GETTYPE));
+ map->getcell(sd->bl.m, sd->bl.x - 2, sd->bl.y + y, CELL_GETTYPE),
+ map->getcell(sd->bl.m, sd->bl.x - 1, sd->bl.y + y, CELL_GETTYPE),
+ map->getcell(sd->bl.m, sd->bl.x, sd->bl.y + y, CELL_GETTYPE),
+ map->getcell(sd->bl.m, sd->bl.x + 1, sd->bl.y + y, CELL_GETTYPE),
+ map->getcell(sd->bl.m, sd->bl.x + 2, sd->bl.y + y, CELL_GETTYPE));
clif->message(fd, atcmd_output);
}
@@ -2688,8 +2677,7 @@ ACMD(recall) {
return false;
}
- if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL)
- {
+ if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -2881,11 +2869,10 @@ ACMD(char_unban)
/*==========================================
*
*------------------------------------------*/
-ACMD(night)
-{
+ACMD(night) {
nullpo_retr(-1, sd);
- if (iMap->night_flag != 1) {
+ if (map->night_flag != 1) {
pc->map_night_timer(pc->night_timer_tid, 0, 0, 1);
} else {
clif->message(fd, msg_txt(89)); // Night mode is already enabled.
@@ -2898,11 +2885,10 @@ ACMD(night)
/*==========================================
*
*------------------------------------------*/
-ACMD(day)
-{
+ACMD(day) {
nullpo_retr(-1, sd);
- if (iMap->night_flag != 0) {
+ if (map->night_flag != 0) {
pc->map_day_timer(pc->day_timer_tid, 0, 0, 1);
} else {
clif->message(fd, msg_txt(90)); // Day mode is already enabled.
@@ -2969,9 +2955,9 @@ ACMD(doommap)
/*==========================================
*
*------------------------------------------*/
-static void atcommand_raise_sub(struct map_session_data* sd) {
+void atcommand_raise_sub(struct map_session_data* sd) {
- iStatus->revive(&sd->bl, 100, 100);
+ status->revive(&sd->bl, 100, 100);
clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
clif->message(sd->fd, msg_txt(63)); // Mercy has been shown.
@@ -2990,7 +2976,7 @@ ACMD(raise)
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) )
if( pc_isdead(pl_sd) )
- atcommand_raise_sub(pl_sd);
+ atcommand->raise_sub(pl_sd);
mapit->free(iter);
clif->message(fd, msg_txt(64)); // Mercy has been granted.
@@ -3011,7 +2997,7 @@ ACMD(raisemap)
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) )
if (sd->bl.m == pl_sd->bl.m && pc_isdead(pl_sd) )
- atcommand_raise_sub(pl_sd);
+ atcommand->raise_sub(pl_sd);
mapit->free(iter);
clif->message(fd, msg_txt(64)); // Mercy has been granted.
@@ -3034,8 +3020,7 @@ ACMD(kick)
return false;
}
- if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL)
- {
+ if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -3283,15 +3268,14 @@ ACMD(breakguild)
/*==========================================
*
*------------------------------------------*/
-ACMD(agitstart)
-{
+ACMD(agitstart) {
nullpo_retr(-1, sd);
- if (iMap->agit_flag == 1) {
+ if (map->agit_flag == 1) {
clif->message(fd, msg_txt(73)); // War of Emperium is currently in progress.
return false;
}
- iMap->agit_flag = 1;
+ map->agit_flag = 1;
guild->agit_start();
clif->message(fd, msg_txt(72)); // War of Emperium has been initiated.
@@ -3301,15 +3285,14 @@ ACMD(agitstart)
/*==========================================
*
*------------------------------------------*/
-ACMD(agitstart2)
-{
+ACMD(agitstart2) {
nullpo_retr(-1, sd);
- if (iMap->agit2_flag == 1) {
+ if (map->agit2_flag == 1) {
clif->message(fd, msg_txt(404)); // "War of Emperium SE is currently in progress."
return false;
}
- iMap->agit2_flag = 1;
+ map->agit2_flag = 1;
guild->agit2_start();
clif->message(fd, msg_txt(403)); // "War of Emperium SE has been initiated."
@@ -3319,15 +3302,14 @@ ACMD(agitstart2)
/*==========================================
*
*------------------------------------------*/
-ACMD(agitend)
-{
+ACMD(agitend) {
nullpo_retr(-1, sd);
- if (iMap->agit_flag == 0) {
+ if (map->agit_flag == 0) {
clif->message(fd, msg_txt(75)); // War of Emperium is currently not in progress.
return false;
}
- iMap->agit_flag = 0;
+ map->agit_flag = 0;
guild->agit_end();
clif->message(fd, msg_txt(74)); // War of Emperium has been ended.
@@ -3337,15 +3319,14 @@ ACMD(agitend)
/*==========================================
*
*------------------------------------------*/
-ACMD(agitend2)
-{
+ACMD(agitend2) {
nullpo_retr(-1, sd);
- if (iMap->agit2_flag == 0) {
+ if (map->agit2_flag == 0) {
clif->message(fd, msg_txt(406)); // "War of Emperium SE is currently not in progress."
return false;
}
- iMap->agit2_flag = 0;
+ map->agit2_flag = 0;
guild->agit2_end();
clif->message(fd, msg_txt(405)); // "War of Emperium SE has been ended."
@@ -3355,11 +3336,10 @@ ACMD(agitend2)
/*==========================================
* @mapexit - shuts down the map server
*------------------------------------------*/
-ACMD(mapexit)
-{
+ACMD(mapexit) {
nullpo_retr(-1, sd);
- iMap->do_shutdown();
+ map->do_shutdown();
return true;
}
@@ -3581,7 +3561,7 @@ ACMD(reloadmobdb) {
homun->reload();
mercenary->read_db();
mercenary->read_skilldb();
- elemental->reload_elementaldb();
+ elemental->reload_db();
clif->message(fd, msg_txt(98)); // Monster database has been reloaded.
return true;
@@ -3605,7 +3585,6 @@ ACMD(reloadskilldb)
/*==========================================
* @reloadatcommand - reloads conf/atcommand.conf conf/groups.conf
*------------------------------------------*/
-void atcommand_doload();
ACMD(reloadatcommand) {
config_t run_test;
@@ -3616,14 +3595,14 @@ ACMD(reloadatcommand) {
config_destroy(&run_test);
- if (conf_read_file(&run_test, iMap->ATCOMMAND_CONF_FILENAME)) {
+ if (conf_read_file(&run_test, map->ATCOMMAND_CONF_FILENAME)) {
clif->message(fd, msg_txt(1037)); // Error reading atcommand.conf, reload failed.
return false;
}
config_destroy(&run_test);
- atcommand_doload();
+ atcommand->doload();
pc_groups_reload();
clif->message(fd, msg_txt(254));
return true;
@@ -3636,7 +3615,7 @@ ACMD(reloadbattleconf)
struct Battle_Config prev_config;
memcpy(&prev_config, &battle_config, sizeof(prev_config));
- battle->config_read(iMap->BATTLE_CONF_FILENAME);
+ battle->config_read(map->BATTLE_CONF_FILENAME);
if( prev_config.item_rate_mvp != battle_config.item_rate_mvp
|| prev_config.item_rate_common != battle_config.item_rate_common
@@ -3679,9 +3658,8 @@ ACMD(reloadbattleconf)
/*==========================================
* @reloadstatusdb - reloads job_db1.txt job_db2.txt job_db2-2.txt refine_db.txt size_fix.txt
*------------------------------------------*/
-ACMD(reloadstatusdb)
-{
- iStatus->readdb();
+ACMD(reloadstatusdb) {
+ status->readdb();
clif->message(fd, msg_txt(256));
return true;
}
@@ -3698,8 +3676,7 @@ ACMD(reloadpcdb)
/*==========================================
* @reloadscript - reloads all scripts (npcs, warps, mob spawns, ...)
*------------------------------------------*/
-ACMD(reloadscript)
-{
+ACMD(reloadscript) {
struct s_mapiterator* iter;
struct map_session_data* pl_sd;
@@ -3728,7 +3705,7 @@ ACMD(reloadscript)
mapit->free(iter);
flush_fifos();
- iMap->reloadnpc(true); // reload config files seeking for npcs
+ map->reloadnpc(true); // reload config files seeking for npcs
script->reload();
npc->reload();
@@ -3771,9 +3748,9 @@ ACMD(mapinfo) {
if (mapname[0] == '\0') {
safestrncpy(mapname, mapindex_id2name(sd->mapindex), MAP_NAME_LENGTH);
- m_id = iMap->mapindex2mapid(sd->mapindex);
+ m_id = map->mapindex2mapid(sd->mapindex);
} else {
- m_id = iMap->mapname2mapid(mapname);
+ m_id = map->mapname2mapid(mapname);
}
if (m_id < 0) {
@@ -3791,7 +3768,7 @@ ACMD(mapinfo) {
if( pl_sd->mapindex == m_index ) {
if( pl_sd->state.vending )
vend_num++;
- else if( (cd = (struct chat_data*)iMap->id2bl(pl_sd->chatID)) != NULL && cd->usersd[0] == pl_sd )
+ else if( (cd = (struct chat_data*)map->id2bl(pl_sd->chatID)) != NULL && cd->usersd[0] == pl_sd )
chat_num++;
}
}
@@ -3970,7 +3947,7 @@ ACMD(mapinfo) {
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) )
{
- if ((cd = (struct chat_data*)iMap->id2bl(pl_sd->chatID)) != NULL &&
+ if ((cd = (struct chat_data*)map->id2bl(pl_sd->chatID)) != NULL &&
pl_sd->mapindex == m_index &&
cd->usersd[0] == pl_sd)
{
@@ -4060,8 +4037,7 @@ ACMD(mount_peco)
/*==========================================
*Spy Commands by Syrus22
*------------------------------------------*/
-ACMD(guildspy)
-{
+ACMD(guildspy) {
char guild_name[NAME_LENGTH];
struct guild *g;
nullpo_retr(-1, sd);
@@ -4069,7 +4045,7 @@ ACMD(guildspy)
memset(guild_name, '\0', sizeof(guild_name));
memset(atcmd_output, '\0', sizeof(atcmd_output));
- if (!iMap->enable_spy)
+ if (!map->enable_spy)
{
clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
return false;
@@ -4101,8 +4077,7 @@ ACMD(guildspy)
/*==========================================
*
*------------------------------------------*/
-ACMD(partyspy)
-{
+ACMD(partyspy) {
char party_name[NAME_LENGTH];
struct party_data *p;
nullpo_retr(-1, sd);
@@ -4110,7 +4085,7 @@ ACMD(partyspy)
memset(party_name, '\0', sizeof(party_name));
memset(atcmd_output, '\0', sizeof(atcmd_output));
- if (!iMap->enable_spy)
+ if (!map->enable_spy)
{
clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
return false;
@@ -4172,8 +4147,7 @@ ACMD(repairall)
/*==========================================
* @nuke [Valaris]
*------------------------------------------*/
-ACMD(nuke)
-{
+ACMD(nuke) {
struct map_session_data *pl_sd;
nullpo_retr(-1, sd);
@@ -4184,7 +4158,7 @@ ACMD(nuke)
return false;
}
- if ((pl_sd = iMap->nick2sd(atcmd_player_name)) != NULL) {
+ if ((pl_sd = map->nick2sd(atcmd_player_name)) != NULL) {
if (pc->get_group_level(sd) >= pc->get_group_level(pl_sd)) { // you can kill only lower or same GM level
skill->castend_nodamage_id(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, 99, timer->gettick(), 0);
clif->message(fd, msg_txt(109)); // Player has been nuked!
@@ -4374,8 +4348,7 @@ char* txt_time(unsigned int duration)
* @time/@date/@serverdate/@servertime: Display the date/time of the server (by [Yor]
* Calculation management of GM modification (@day/@night GM commands) is done
*------------------------------------------*/
-ACMD(servertime)
-{
+ACMD(servertime) {
const struct TimerData * timer_data;
const struct TimerData * timer_data2;
time_t time_server; // variable for number of seconds (used with time() function)
@@ -4392,61 +4365,59 @@ ACMD(servertime)
clif->message(fd, temp);
if (battle_config.night_duration == 0 && battle_config.day_duration == 0) {
- if (iMap->night_flag == 0)
+ if (map->night_flag == 0)
clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight.
else
clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night.
- } else if (battle_config.night_duration == 0)
- if (iMap->night_flag == 1) { // we start with night
+ } else if (battle_config.night_duration == 0) {
+ if (map->night_flag == 1) { // we start with night
timer_data = timer->get(pc->day_timer_tid);
sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,timer->gettick())/1000)); // Game time: The game is actualy in night for %s.
clif->message(fd, temp);
clif->message(fd, msg_txt(234)); // Game time: After, the game will be in permanent daylight.
} else
clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight.
- else if (battle_config.day_duration == 0)
- if (iMap->night_flag == 0) { // we start with day
- timer_data = timer->get(pc->night_timer_tid);
- sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,timer->gettick())/1000)); // Game time: The game is actualy in daylight for %s.
- clif->message(fd, temp);
- clif->message(fd, msg_txt(236)); // Game time: After, the game will be in permanent night.
- } else
- clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night.
- else {
- if (iMap->night_flag == 0) {
- timer_data = timer->get(pc->night_timer_tid);
- timer_data2 = timer->get(pc->day_timer_tid);
- sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,timer->gettick())/1000)); // Game time: The game is actualy in daylight for %s.
- clif->message(fd, temp);
- if (DIFF_TICK(timer_data->tick, timer_data2->tick) > 0)
- sprintf(temp, msg_txt(237), txt_time(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000)); // Game time: After, the game will be in night for %s.
- else
- sprintf(temp, msg_txt(237), txt_time(DIFF_TICK(timer_data2->tick,timer_data->tick)/1000)); // Game time: After, the game will be in night for %s.
- clif->message(fd, temp);
- sprintf(temp, msg_txt(238), txt_time(timer_data->interval / 1000)); // Game time: A day cycle has a normal duration of %s.
- clif->message(fd, temp);
- } else {
- timer_data = timer->get(pc->day_timer_tid);
- timer_data2 = timer->get(pc->night_timer_tid);
- sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,timer->gettick()) / 1000)); // Game time: The game is actualy in night for %s.
- clif->message(fd, temp);
- if (DIFF_TICK(timer_data->tick,timer_data2->tick) > 0)
- sprintf(temp, msg_txt(239), txt_time((timer_data->interval - DIFF_TICK(timer_data->tick, timer_data2->tick)) / 1000)); // Game time: After, the game will be in daylight for %s.
- else
- sprintf(temp, msg_txt(239), txt_time(DIFF_TICK(timer_data2->tick, timer_data->tick) / 1000)); // Game time: After, the game will be in daylight for %s.
- clif->message(fd, temp);
- sprintf(temp, msg_txt(238), txt_time(timer_data->interval / 1000)); // Game time: A day cycle has a normal duration of %s.
- clif->message(fd, temp);
- }
- }
+ } else if (battle_config.day_duration == 0) {
+ if (map->night_flag == 0) { // we start with day
+ timer_data = timer->get(pc->night_timer_tid);
+ sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,timer->gettick())/1000)); // Game time: The game is actualy in daylight for %s.
+ clif->message(fd, temp);
+ clif->message(fd, msg_txt(236)); // Game time: After, the game will be in permanent night.
+ } else
+ clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night.
+ } else {
+ if (map->night_flag == 0) {
+ timer_data = timer->get(pc->night_timer_tid);
+ timer_data2 = timer->get(pc->day_timer_tid);
+ sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,timer->gettick())/1000)); // Game time: The game is actualy in daylight for %s.
+ clif->message(fd, temp);
+ if (DIFF_TICK(timer_data->tick, timer_data2->tick) > 0)
+ sprintf(temp, msg_txt(237), txt_time(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000)); // Game time: After, the game will be in night for %s.
+ else
+ sprintf(temp, msg_txt(237), txt_time(DIFF_TICK(timer_data2->tick,timer_data->tick)/1000)); // Game time: After, the game will be in night for %s.
+ clif->message(fd, temp);
+ } else {
+ timer_data = timer->get(pc->day_timer_tid);
+ timer_data2 = timer->get(pc->night_timer_tid);
+ sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,timer->gettick()) / 1000)); // Game time: The game is actualy in night for %s.
+ clif->message(fd, temp);
+ if (DIFF_TICK(timer_data->tick,timer_data2->tick) > 0)
+ sprintf(temp, msg_txt(239), txt_time((timer_data->interval - DIFF_TICK(timer_data->tick, timer_data2->tick)) / 1000)); // Game time: After, the game will be in daylight for %s.
+ else
+ sprintf(temp, msg_txt(239), txt_time(DIFF_TICK(timer_data2->tick, timer_data->tick) / 1000)); // Game time: After, the game will be in daylight for %s.
+ clif->message(fd, temp);
+ }
+ sprintf(temp, msg_txt(238), txt_time(timer_data->interval / 1000)); // Game time: A day cycle has a normal duration of %s.
+ clif->message(fd, temp);
+ }
return true;
}
//Added by Coltaro
-//We're using this function here instead of using time_t so that it only counts player's jail time when he/she's online (and since the idea is to reduce the amount of minutes one by one in iStatus->change_timer...).
+//We're using this function here instead of using time_t so that it only counts player's jail time when he/she's online (and since the idea is to reduce the amount of minutes one by one in status->change_timer...).
//Well, using time_t could still work but for some reason that looks like more coding x_x
-static void get_jail_time(int jailtime, int* year, int* month, int* day, int* hour, int* minute)
+void get_jail_time(int jailtime, int* year, int* month, int* day, int* hour, int* minute)
{
const int factor_year = 518400; //12*30*24*60 = 518400
const int factor_month = 43200; //30*24*60 = 43200
@@ -4475,8 +4446,7 @@ static void get_jail_time(int jailtime, int* year, int* month, int* day, int* ho
* @jail <char_name> by [Yor]
* Special warp! No check with nowarp and nowarpto flag
*------------------------------------------*/
-ACMD(jail)
-{
+ACMD(jail) {
struct map_session_data *pl_sd;
int x, y;
unsigned short m_index;
@@ -4489,7 +4459,7 @@ ACMD(jail)
return false;
}
- if ((pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL) {
+ if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -4530,8 +4500,7 @@ ACMD(jail)
* @unjail/@discharge <char_name> by [Yor]
* Special warp! No check with nowarp and nowarpto flag
*------------------------------------------*/
-ACMD(unjail)
-{
+ACMD(unjail) {
struct map_session_data *pl_sd;
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
@@ -4541,7 +4510,7 @@ ACMD(unjail)
return false;
}
- if ((pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL) {
+ if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -4565,8 +4534,7 @@ ACMD(unjail)
return true;
}
-ACMD(jailfor)
-{
+ACMD(jailfor) {
struct map_session_data *pl_sd = NULL;
int year, month, day, hour, minute, value;
char * modif_p;
@@ -4621,7 +4589,7 @@ ACMD(jailfor)
return false;
}
- if ((pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL) {
+ if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -4648,7 +4616,7 @@ ACMD(jailfor)
clif->message(pl_sd->fd, msg_txt(120)); // GM has discharge you.
clif->message(fd, msg_txt(121)); // Player unjailed
} else {
- get_jail_time(jailtime,&year,&month,&day,&hour,&minute);
+ atcommand->get_jail_time(jailtime,&year,&month,&day,&hour,&minute);
sprintf(atcmd_output,msg_txt(402),msg_txt(1137),year,month,day,hour,minute); //%s in jail for %d years, %d months, %d days, %d hours and %d minutes
clif->message(pl_sd->fd, atcmd_output);
sprintf(atcmd_output,msg_txt(402),msg_txt(1138),year,month,day,hour,minute); //This player is now in jail for %d years, %d months, %d days, %d hours and %d minutes
@@ -4672,7 +4640,7 @@ ACMD(jailfor)
break;
}
- sc_start4(&pl_sd->bl,SC_JAILED,100,jailtime,m_index,x,y,jailtime?60000:1000); //jailtime = 0: Time was reset to 0. Wait 1 second to warp player out (since it's done in iStatus->change_timer).
+ sc_start4(&pl_sd->bl,SC_JAILED,100,jailtime,m_index,x,y,jailtime?60000:1000); //jailtime = 0: Time was reset to 0. Wait 1 second to warp player out (since it's done in status->change_timer).
return true;
}
@@ -4700,7 +4668,7 @@ ACMD(jailtime)
}
//Get remaining jail time
- get_jail_time(sd->sc.data[SC_JAILED]->val1,&year,&month,&day,&hour,&minute);
+ atcommand->get_jail_time(sd->sc.data[SC_JAILED]->val1,&year,&month,&day,&hour,&minute);
sprintf(atcmd_output,msg_txt(402),msg_txt(1142),year,month,day,hour,minute); // You will remain in jail for %d years, %d months, %d days, %d hours and %d minutes
clif->message(fd, atcmd_output);
@@ -5041,8 +5009,7 @@ ACMD(killer)
* @killable by MouseJstr
* enable other people killing you
*------------------------------------------*/
-ACMD(killable)
-{
+ACMD(killable) {
nullpo_retr(-1, sd);
sd->state.killable = !sd->state.killable;
@@ -5050,7 +5017,7 @@ ACMD(killable)
clif->message(fd, msg_txt(242));
else {
clif->message(fd, msg_txt(288));
- iMap->foreachinrange(atcommand_stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id);
+ map->foreachinrange(atcommand->stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id);
}
return true;
}
@@ -5081,8 +5048,7 @@ ACMD(skilloff) {
* @npcmove by MouseJstr
* move a npc
*------------------------------------------*/
-ACMD(npcmove)
-{
+ACMD(npcmove) {
int x = 0, y = 0, m;
struct npc_data *nd = 0;
nullpo_retr(-1, sd);
@@ -5093,23 +5059,21 @@ ACMD(npcmove)
return false;
}
- if ((nd = npc->name2id(atcmd_player_name)) == NULL)
- {
+ if ((nd = npc->name2id(atcmd_player_name)) == NULL) {
clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
return false;
}
- if ((m=nd->bl.m) < 0 || nd->bl.prev == NULL)
- {
+ if ((m=nd->bl.m) < 0 || nd->bl.prev == NULL) {
clif->message(fd, msg_txt(1154)); // NPC is not on this map.
return false; //Not on a map.
}
x = cap_value(x, 0, maplist[m].xs-1);
y = cap_value(y, 0, maplist[m].ys-1);
- iMap->foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
- iMap->moveblock(&nd->bl, x, y, timer->gettick());
- iMap->foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
+ map->foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
+ map->moveblock(&nd->bl, x, y, timer->gettick());
+ map->foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
clif->message(fd, msg_txt(1155)); // NPC moved.
return true;
@@ -5155,8 +5119,7 @@ ACMD(addwarp)
* @follow by [MouseJstr]
* Follow a player .. staying no more then 5 spaces away
*------------------------------------------*/
-ACMD(follow)
-{
+ACMD(follow) {
struct map_session_data *pl_sd = NULL;
nullpo_retr(-1, sd);
@@ -5169,7 +5132,7 @@ ACMD(follow)
return true;
}
- if ( (pl_sd = iMap->nick2sd((char *)message)) == NULL )
+ if ( (pl_sd = map->nick2sd((char *)message)) == NULL )
{
clif->message(fd, msg_txt(3)); // Character not found.
return false;
@@ -5343,15 +5306,15 @@ ACMD(skillid) {
skillen = strlen(message);
- iter = db_iterator(skilldb_name2id);
+ iter = db_iterator(skill->name2id_db);
for( data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key) ) {
idx = skill->get_index(DB->data2i(data));
- if (strnicmp(key.str, message, skillen) == 0 || strnicmp(skill_db[idx].desc, message, skillen) == 0) {
- sprintf(atcmd_output, msg_txt(1164), DB->data2i(data), skill_db[idx].desc, key.str); // skill %d: %s (%s)
+ if (strnicmp(key.str, message, skillen) == 0 || strnicmp(skill->db[idx].desc, message, skillen) == 0) {
+ sprintf(atcmd_output, msg_txt(1164), DB->data2i(data), skill->db[idx].desc, key.str); // skill %d: %s (%s)
clif->message(fd, atcmd_output);
- } else if ( found < MAX_SKILLID_PARTIAL_RESULTS && ( stristr(key.str,message) || stristr(skill_db[idx].desc,message) ) ) {
- snprintf(partials[found++], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_txt(1164), DB->data2i(data), skill_db[idx].desc, key.str);
+ } else if ( found < MAX_SKILLID_PARTIAL_RESULTS && ( stristr(key.str,message) || stristr(skill->db[idx].desc,message) ) ) {
+ snprintf(partials[found++], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_txt(1164), DB->data2i(data), skill->db[idx].desc, key.str);
}
}
@@ -5373,8 +5336,7 @@ ACMD(skillid) {
* @useskill by [MouseJstr]
* A way of using skills without having to find them in the skills menu
*------------------------------------------*/
-ACMD(useskill)
-{
+ACMD(useskill) {
struct map_session_data *pl_sd = NULL;
struct block_list *bl;
uint16 skill_id;
@@ -5387,8 +5349,9 @@ ACMD(useskill)
return false;
}
- if(!strcmp(target,"self")) pl_sd = sd; //quick keyword
- else if ( (pl_sd = iMap->nick2sd(target)) == NULL ){
+ if(!strcmp(target,"self"))
+ pl_sd = sd; //quick keyword
+ else if ( (pl_sd = map->nick2sd(target)) == NULL ) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -5425,12 +5388,11 @@ ACMD(displayskill) {
uint16 skill_lv = 1;
nullpo_retr(-1, sd);
- if (!message || !*message || sscanf(message, "%hu %hu", &skill_id, &skill_lv) < 1)
- {
+ if (!message || !*message || sscanf(message, "%hu %hu", &skill_id, &skill_lv) < 1) {
clif->message(fd, msg_txt(1166)); // Usage: @displayskill <skill ID> {<skill level>}
return false;
}
- st = iStatus->get_status_data(&sd->bl);
+ st = status->get_status_data(&sd->bl);
tick = timer->gettick();
clif->skill_damage(&sd->bl,&sd->bl, tick, st->amotion, st->dmotion, 1, 1, skill_id, skill_lv, 5);
clif->skill_nodamage(&sd->bl, &sd->bl, skill_id, skill_lv, 1);
@@ -5442,8 +5404,7 @@ ACMD(displayskill) {
* @skilltree by [MouseJstr]
* prints the skill tree for a player required to get to a skill
*------------------------------------------*/
-ACMD(skilltree)
-{
+ACMD(skilltree) {
struct map_session_data *pl_sd = NULL;
uint16 skill_id;
int meets, j, c=0;
@@ -5456,8 +5417,7 @@ ACMD(skilltree)
return false;
}
- if ( (pl_sd = iMap->nick2sd(target)) == NULL )
- {
+ if ( (pl_sd = map->nick2sd(target)) == NULL ) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -5482,7 +5442,7 @@ ACMD(skilltree)
{
if( ent->need[j].id && pc->checkskill(sd,ent->need[j].id) < ent->need[j].lv)
{
- sprintf(atcmd_output, msg_txt(1170), ent->need[j].lv, skill_db[ent->need[j].id].desc); // Player requires level %d of skill %s.
+ sprintf(atcmd_output, msg_txt(1170), ent->need[j].lv, skill->db[ent->need[j].id].desc); // Player requires level %d of skill %s.
clif->message(fd, atcmd_output);
meets = 0;
}
@@ -5495,8 +5455,7 @@ ACMD(skilltree)
}
// Hand a ring with partners name on it to this char
-void getring (struct map_session_data* sd)
-{
+void getring(struct map_session_data* sd) {
int flag, item_id;
struct item item_tmp;
item_id = (sd->status.sex) ? WEDDING_RING_M : WEDDING_RING_F;
@@ -5510,7 +5469,7 @@ void getring (struct map_session_data* sd)
if((flag = pc->additem(sd,&item_tmp,1,LOG_TYPE_COMMAND))) {
clif->additem(sd,0,0,flag);
- iMap->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0);
+ map->addflooritem(&item_tmp,1,sd->bl.m,sd->bl.x,sd->bl.y,0,0,0,0);
}
}
@@ -5518,8 +5477,7 @@ void getring (struct map_session_data* sd)
* @marry by [MouseJstr], fixed by Lupus
* Marry two players
*------------------------------------------*/
-ACMD(marry)
-{
+ACMD(marry) {
struct map_session_data *pl_sd = NULL;
char player_name[NAME_LENGTH] = "";
@@ -5530,7 +5488,7 @@ ACMD(marry)
return false;
}
- if ((pl_sd = iMap->nick2sd(player_name)) == NULL) {
+ if ((pl_sd = map->nick2sd(player_name)) == NULL) {
clif->message(fd, msg_txt(3));
return false;
}
@@ -5617,7 +5575,7 @@ ACMD(autotrade) {
sd->state.autotrade = 1;
if( battle_config.at_timeout ) {
int timeout = atoi(message);
- iStatus->change_start(&sd->bl, SC_AUTOTRADE, 10000, 0, 0, 0, 0, ((timeout > 0) ? min(timeout,battle_config.at_timeout) : battle_config.at_timeout) * 60000, 0);
+ status->change_start(&sd->bl, SC_AUTOTRADE, 10000, 0, 0, 0, 0, ((timeout > 0) ? min(timeout,battle_config.at_timeout) : battle_config.at_timeout) * 60000, 0);
}
clif->chsys_quit(sd);
@@ -5631,8 +5589,7 @@ ACMD(autotrade) {
* @changegm by durf (changed by Lupus)
* Changes Master of your Guild to a specified guild member
*------------------------------------------*/
-ACMD(changegm)
-{
+ACMD(changegm) {
struct guild *g;
struct map_session_data *pl_sd;
nullpo_retr(-1, sd);
@@ -5652,7 +5609,7 @@ ACMD(changegm)
return false;
}
- if((pl_sd=iMap->nick2sd((char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) {
+ if((pl_sd=map->nick2sd((char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) {
clif->message(fd, msg_txt(1184)); // Target character must be online and be a guild member.
return false;
}
@@ -5665,17 +5622,15 @@ ACMD(changegm)
* @changeleader by Skotlex
* Changes the leader of a party.
*------------------------------------------*/
-ACMD(changeleader)
-{
+ACMD(changeleader) {
nullpo_retr(-1, sd);
- if( !message[0] )
- {
+ if( !message[0] ) {
clif->message(fd, msg_txt(1185)); // Usage: @changeleader <party_member_name>
return false;
}
- if (party->changeleader(sd, iMap->nick2sd((char *) message)))
+ if (party->changeleader(sd, map->nick2sd((char *) message)))
return true;
return false;
}
@@ -6099,33 +6054,28 @@ ACMD(mobsearch)
* @cleanmap - cleans items on the ground
* @cleanarea - cleans items on the ground within an specified area
*------------------------------------------*/
-static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap)
-{
+int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) {
nullpo_ret(bl);
- iMap->clearflooritem(bl);
+ map->clearflooritem(bl);
return 0;
}
-ACMD(cleanmap)
-{
- iMap->foreachinmap(atcommand_cleanfloor_sub, sd->bl.m, BL_ITEM);
+ACMD(cleanmap) {
+ map->foreachinmap(atcommand->cleanfloor_sub, sd->bl.m, BL_ITEM);
clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up.
return true;
}
-ACMD(cleanarea)
-{
+ACMD(cleanarea) {
int x0 = 0, y0 = 0, x1 = 0, y1 = 0;
if (!message || !*message || sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) < 1) {
- iMap->foreachinrange(atcommand_cleanfloor_sub, &sd->bl, AREA_SIZE * 2, BL_ITEM);
- }
- else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 1) {
- iMap->foreachinrange(atcommand_cleanfloor_sub, &sd->bl, x0, BL_ITEM);
- }
- else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 4) {
- iMap->foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM);
+ map->foreachinrange(atcommand->cleanfloor_sub, &sd->bl, AREA_SIZE * 2, BL_ITEM);
+ } else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 1) {
+ map->foreachinrange(atcommand->cleanfloor_sub, &sd->bl, x0, BL_ITEM);
+ } else if (sscanf(message, "%d %d %d %d", &x0, &y0, &x1, &y1) == 4) {
+ map->foreachinarea(atcommand->cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM);
}
clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up.
@@ -6375,8 +6325,7 @@ ACMD(adjgroup)
* @trade by [MouseJstr]
* Open a trade window with a remote player
*------------------------------------------*/
-ACMD(trade)
-{
+ACMD(trade) {
struct map_session_data *pl_sd = NULL;
nullpo_retr(-1, sd);
@@ -6385,8 +6334,7 @@ ACMD(trade)
return false;
}
- if ( (pl_sd = iMap->nick2sd((char *)message)) == NULL )
- {
+ if ( (pl_sd = map->nick2sd((char *)message)) == NULL ) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -6422,8 +6370,7 @@ ACMD(setbattleflag)
/*==========================================
* @unmute [Valaris]
*------------------------------------------*/
-ACMD(unmute)
-{
+ACMD(unmute) {
struct map_session_data *pl_sd = NULL;
nullpo_retr(-1, sd);
@@ -6432,7 +6379,7 @@ ACMD(unmute)
return false;
}
- if ( (pl_sd = iMap->nick2sd((char *)message)) == NULL )
+ if ( (pl_sd = map->nick2sd((char *)message)) == NULL )
{
clif->message(fd, msg_txt(3)); // Character not found.
return false;
@@ -6492,8 +6439,7 @@ ACMD(changesex)
/*================================================
* @mute - Mutes a player for a set amount of time
*------------------------------------------------*/
-ACMD(mute)
-{
+ACMD(mute) {
struct map_session_data *pl_sd = NULL;
int manner;
nullpo_retr(-1, sd);
@@ -6503,8 +6449,7 @@ ACMD(mute)
return false;
}
- if ( (pl_sd = iMap->nick2sd(atcmd_player_name)) == NULL )
- {
+ if ( (pl_sd = map->nick2sd(atcmd_player_name)) == NULL ) {
clif->message(fd, msg_txt(3)); // Character not found.
return false;
}
@@ -7050,7 +6995,7 @@ ACMD(hominfo) {
}
hd = sd->hd;
- st = iStatus->get_status_data(&hd->bl);
+ st = status->get_status_data(&hd->bl);
clif->message(fd, msg_txt(1261)); // Homunculus stats:
snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1262), // HP: %d/%d - SP: %d/%d
@@ -7291,7 +7236,7 @@ ACMD(whereis)
clif->message(fd, atcmd_output);
for (i = 0; i < ARRAYLENGTH(monster->spawn) && monster->spawn[i].qty; i++) {
- j = iMap->mapindex2mapid(monster->spawn[i].mapindex);
+ j = map->mapindex2mapid(monster->spawn[i].mapindex);
if (j < 0) continue;
snprintf(atcmd_output, sizeof atcmd_output, "%s (%d)", maplist[j].name, monster->spawn[i].qty);
clif->message(fd, atcmd_output);
@@ -7322,7 +7267,7 @@ ACMD(version) {
/*==========================================
* @mutearea by MouseJstr
*------------------------------------------*/
-static int atcommand_mutearea_sub(struct block_list *bl,va_list ap)
+int atcommand_mutearea_sub(struct block_list *bl,va_list ap)
{
int time, id;
@@ -7343,8 +7288,7 @@ static int atcommand_mutearea_sub(struct block_list *bl,va_list ap)
return 0;
}
-ACMD(mutearea)
-{
+ACMD(mutearea) {
int time;
nullpo_ret(sd);
@@ -7355,9 +7299,9 @@ ACMD(mutearea)
time = atoi(message);
- iMap->foreachinarea(atcommand_mutearea_sub,sd->bl.m,
- sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE,
- sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd->bl.id, time);
+ map->foreachinarea(atcommand->mutearea_sub,sd->bl.m,
+ sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE,
+ sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd->bl.id, time);
return true;
}
@@ -7569,8 +7513,8 @@ ACMD(fakename)
* Ragnarok Resources
*------------------------------------------*/
ACMD(mapflag) {
-#define checkflag( cmd ) if ( maplist[ sd->bl.m ].flag.cmd ) clif->message(sd->fd,#cmd)
-#define setflag( cmd ) do {\
+#define CHECKFLAG( cmd ) do { if ( maplist[ sd->bl.m ].flag.cmd ) clif->message(sd->fd,#cmd); } while(0)
+#define SETFLAG( cmd ) do { \
if ( strcmp( flag_name , #cmd ) == 0 ) { \
maplist[ sd->bl.m ].flag.cmd = flag; \
sprintf(atcmd_output,"[ @mapflag ] %s flag has been set to %s value = %hd",#cmd,flag?"On":"Off",flag); \
@@ -7587,19 +7531,19 @@ ACMD(mapflag) {
if (!message || !*message || (sscanf(message, "%99s %hd", flag_name, &flag) < 1)) {
clif->message(sd->fd,msg_txt(1311)); // Enabled Mapflags in this map:
clif->message(sd->fd,"----------------------------------");
- checkflag(autotrade); checkflag(allowks); checkflag(nomemo); checkflag(noteleport);
- checkflag(noreturn); checkflag(monster_noteleport); checkflag(nosave); checkflag(nobranch);
- checkflag(noexppenalty); checkflag(pvp); checkflag(pvp_noparty); checkflag(pvp_noguild);
- checkflag(pvp_nightmaredrop); checkflag(pvp_nocalcrank); checkflag(gvg_castle); checkflag(gvg);
- checkflag(gvg_dungeon); checkflag(gvg_noparty); checkflag(battleground);checkflag(nozenypenalty);
- checkflag(notrade); checkflag(noskill); checkflag(nowarp); checkflag(nowarpto);
- checkflag(noicewall); checkflag(snow); checkflag(clouds); checkflag(clouds2);
- checkflag(fog); checkflag(fireworks); checkflag(sakura); checkflag(leaves);
- checkflag(nobaseexp);
- checkflag(nojobexp); checkflag(nomobloot); checkflag(nomvploot); checkflag(nightenabled);
- checkflag(nodrop); checkflag(novending); checkflag(loadevent);
- checkflag(nochat); checkflag(partylock); checkflag(guildlock); checkflag(src4instance);
- checkflag(notomb);
+ CHECKFLAG(autotrade); CHECKFLAG(allowks); CHECKFLAG(nomemo); CHECKFLAG(noteleport);
+ CHECKFLAG(noreturn); CHECKFLAG(monster_noteleport); CHECKFLAG(nosave); CHECKFLAG(nobranch);
+ CHECKFLAG(noexppenalty); CHECKFLAG(pvp); CHECKFLAG(pvp_noparty); CHECKFLAG(pvp_noguild);
+ CHECKFLAG(pvp_nightmaredrop); CHECKFLAG(pvp_nocalcrank); CHECKFLAG(gvg_castle); CHECKFLAG(gvg);
+ CHECKFLAG(gvg_dungeon); CHECKFLAG(gvg_noparty); CHECKFLAG(battleground); CHECKFLAG(nozenypenalty);
+ CHECKFLAG(notrade); CHECKFLAG(noskill); CHECKFLAG(nowarp); CHECKFLAG(nowarpto);
+ CHECKFLAG(noicewall); CHECKFLAG(snow); CHECKFLAG(clouds); CHECKFLAG(clouds2);
+ CHECKFLAG(fog); CHECKFLAG(fireworks); CHECKFLAG(sakura); CHECKFLAG(leaves);
+ CHECKFLAG(nobaseexp);
+ CHECKFLAG(nojobexp); CHECKFLAG(nomobloot); CHECKFLAG(nomvploot); CHECKFLAG(nightenabled);
+ CHECKFLAG(nodrop); CHECKFLAG(novending); CHECKFLAG(loadevent);
+ CHECKFLAG(nochat); CHECKFLAG(partylock); CHECKFLAG(guildlock); CHECKFLAG(src4instance);
+ CHECKFLAG(notomb);
clif->message(sd->fd," ");
clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
clif->message(sd->fd,msg_txt(1313)); // Type "@mapflag available" to list the available mapflags.
@@ -7609,34 +7553,34 @@ ACMD(mapflag) {
if ( strcmp( flag_name , "gvg" ) == 0 ) {
if( flag && !maplist[sd->bl.m].flag.gvg )
- iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME));
+ map->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_GVG_NAME));
else if ( !flag && maplist[sd->bl.m].flag.gvg )
- iMap->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
+ map->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
} else if ( strcmp( flag_name , "pvp" ) == 0 ) {
if( flag && !maplist[sd->bl.m].flag.pvp )
- iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME));
+ map->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_PVP_NAME));
else if ( !flag && maplist[sd->bl.m].flag.pvp )
- iMap->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
+ map->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
} else if ( strcmp( flag_name , "battleground" ) == 0 ) {
if( flag && !maplist[sd->bl.m].flag.battleground )
- iMap->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_BG_NAME));
+ map->zone_change2(sd->bl.m,strdb_get(zone_db, MAP_ZONE_BG_NAME));
else if ( !flag && maplist[sd->bl.m].flag.battleground )
- iMap->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
- }
-
- setflag(autotrade); setflag(allowks); setflag(nomemo); setflag(noteleport);
- setflag(noreturn); setflag(monster_noteleport);setflag(nosave); setflag(nobranch);
- setflag(noexppenalty); setflag(pvp); setflag(pvp_noparty); setflag(pvp_noguild);
- setflag(pvp_nightmaredrop); setflag(pvp_nocalcrank); setflag(gvg_castle); setflag(gvg);
- setflag(gvg_dungeon); setflag(gvg_noparty); setflag(battleground); setflag(nozenypenalty);
- setflag(notrade); setflag(noskill); setflag(nowarp); setflag(nowarpto);
- setflag(noicewall); setflag(snow); setflag(clouds); setflag(clouds2);
- setflag(fog); setflag(fireworks); setflag(sakura); setflag(leaves);
- setflag(nobaseexp);
- setflag(nojobexp); setflag(nomobloot); setflag(nomvploot); setflag(nightenabled);
- setflag(nodrop); setflag(novending); setflag(loadevent);
- setflag(nochat); setflag(partylock); setflag(guildlock); setflag(src4instance);
- setflag(notomb);
+ map->zone_change2(sd->bl.m,maplist[sd->bl.m].prev_zone);
+ }
+
+ SETFLAG(autotrade); SETFLAG(allowks); SETFLAG(nomemo); SETFLAG(noteleport);
+ SETFLAG(noreturn); SETFLAG(monster_noteleport); SETFLAG(nosave); SETFLAG(nobranch);
+ SETFLAG(noexppenalty); SETFLAG(pvp); SETFLAG(pvp_noparty); SETFLAG(pvp_noguild);
+ SETFLAG(pvp_nightmaredrop); SETFLAG(pvp_nocalcrank); SETFLAG(gvg_castle); SETFLAG(gvg);
+ SETFLAG(gvg_dungeon); SETFLAG(gvg_noparty); SETFLAG(battleground); SETFLAG(nozenypenalty);
+ SETFLAG(notrade); SETFLAG(noskill); SETFLAG(nowarp); SETFLAG(nowarpto);
+ SETFLAG(noicewall); SETFLAG(snow); SETFLAG(clouds); SETFLAG(clouds2);
+ SETFLAG(fog); SETFLAG(fireworks); SETFLAG(sakura); SETFLAG(leaves);
+ SETFLAG(nobaseexp);
+ SETFLAG(nojobexp); SETFLAG(nomobloot); SETFLAG(nomvploot); SETFLAG(nightenabled);
+ SETFLAG(nodrop); SETFLAG(novending); SETFLAG(loadevent);
+ SETFLAG(nochat); SETFLAG(partylock); SETFLAG(guildlock); SETFLAG(src4instance);
+ SETFLAG(notomb);
clif->message(sd->fd,msg_txt(1314)); // Invalid flag name or flag.
clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
@@ -7650,8 +7594,8 @@ ACMD(mapflag) {
clif->message(sd->fd,"nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,");
clif->message(sd->fd,"guildlock, src4instance, notomb");
-#undef checkflag
-#undef setflag
+#undef CHECKFLAG
+#undef SETFLAG
return true;
}
@@ -7709,7 +7653,7 @@ ACMD(showdelay)
*------------------------------------------*/
ACMD(invite) {
unsigned int did = sd->duel_group;
- struct map_session_data *target_sd = iMap->nick2sd((char *)message);
+ struct map_session_data *target_sd = map->nick2sd((char *)message);
if(did == 0) {
// "Duel: @invite without @duel."
@@ -7781,7 +7725,7 @@ ACMD(duel) {
duel->create(sd, maxpl);
} else {
struct map_session_data *target_sd;
- target_sd = iMap->nick2sd((char *)message);
+ target_sd = map->nick2sd((char *)message);
if(target_sd != NULL) {
unsigned int newduel;
if((newduel = duel->create(sd, 2)) != -1) {
@@ -7910,8 +7854,7 @@ ACMD(cash)
}
// @clone/@slaveclone/@evilclone <playername> [Valaris]
-ACMD(clone)
-{
+ACMD(clone) {
int x=0,y=0,flag=0,master=0,i=0;
struct map_session_data *pl_sd=NULL;
@@ -7920,7 +7863,7 @@ ACMD(clone)
return true;
}
- if((pl_sd=iMap->nick2sd((char *)message)) == NULL && (pl_sd=iMap->charid2sd(atoi(message))) == NULL) {
+ if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
clif->message(fd, msg_txt(3)); // Character not found.
return true;
}
@@ -7949,7 +7892,7 @@ ACMD(clone)
do {
x = sd->bl.x + (rnd() % 10 - 5);
y = sd->bl.y + (rnd() % 10 - 5);
- } while (iMap->getcell(sd->bl.m,x,y,CELL_CHKNOPASS) && i++ < 10);
+ } while (map->getcell(sd->bl.m,x,y,CELL_CHKNOPASS) && i++ < 10);
if (i >= 10) {
x = sd->bl.x;
@@ -8408,7 +8351,7 @@ ACMD(font)
/*==========================================
* type: 1 = commands (@), 2 = charcommands (#)
*------------------------------------------*/
-static void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommandType type)
+void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommandType type)
{
char line_buff[CHATBOX_SIZE];
char* cur = line_buff;
@@ -8468,7 +8411,7 @@ static void atcommand_commands_sub(struct map_session_data* sd, const int fd, At
*------------------------------------------*/
ACMD(commands)
{
- atcommand_commands_sub(sd, fd, COMMAND_ATCOMMAND);
+ atcommand->commands_sub(sd, fd, COMMAND_ATCOMMAND);
return true;
}
@@ -8477,7 +8420,7 @@ ACMD(commands)
*------------------------------------------*/
ACMD(charcommands)
{
- atcommand_commands_sub(sd, fd, COMMAND_CHARCOMMAND);
+ atcommand->commands_sub(sd, fd, COMMAND_CHARCOMMAND);
return true;
}
/* for new mounts */
@@ -9063,15 +9006,15 @@ ACMD(channel) {
}
if (!message || !*message || sscanf(message, "%s %s %24[^\n]", key, sub1, sub2) < 1) {
- sprintf(atcmd_output, msg_txt(1434), sub2);// Player '%s' was not found
- clif->message(fd, atcmd_output);
- return false;
+ sprintf(atcmd_output, msg_txt(1434), sub2);// Player '%s' was not found
+ clif->message(fd, atcmd_output);
+ return false;
}
- if( sub2[0] == '\0' || ( pl_sd = iMap->nick2sd(sub2) ) == NULL ) {
- sprintf(atcmd_output, msg_txt(1434), sub2);// Player '%s' was not found
- clif->message(fd, atcmd_output);
- return false;
+ if( sub2[0] == '\0' || ( pl_sd = map->nick2sd(sub2) ) == NULL ) {
+ sprintf(atcmd_output, msg_txt(1434), sub2);// Player '%s' was not found
+ clif->message(fd, atcmd_output);
+ return false;
}
if( pc->has_permission(pl_sd, PC_PERM_HCHSYS_ADMIN) ) {
@@ -9124,7 +9067,7 @@ ACMD(channel) {
return false;
}
- if( sub2[0] == '\0' || ( pl_sd = iMap->nick2sd(sub2) ) == NULL ) {
+ if( sub2[0] == '\0' || ( pl_sd = map->nick2sd(sub2) ) == NULL ) {
sprintf(atcmd_output, msg_txt(1434), sub2);// Player '%s' was not found
clif->message(fd, atcmd_output);
return false;
@@ -9750,15 +9693,14 @@ AtCommandInfo* atcommand_exists(const char* name) {
return strdb_get(atcommand->db, name);
}
-static AtCommandInfo* get_atcommandinfo_byname(const char *name) {
+AtCommandInfo* get_atcommandinfo_byname(const char *name) {
AtCommandInfo *cmd;
if ((cmd = strdb_get(atcommand->db, name)))
return cmd;
return NULL;
}
-static const char* atcommand_checkalias(const char *aliasname)
-{
+const char* atcommand_checkalias(const char *aliasname) {
AliasInfo *alias_info = NULL;
if ((alias_info = (AliasInfo*)strdb_get(atcommand->alias_db, aliasname)) != NULL)
return alias_info->command->command;
@@ -9766,7 +9708,7 @@ static const char* atcommand_checkalias(const char *aliasname)
}
/// AtCommand suggestion
-static void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool is_atcmd_cmd) {
+void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bool is_atcmd_cmd) {
DBIterator* atcommand_iter;
DBIterator* alias_iter;
AtCommandInfo* command_info = NULL;
@@ -9910,7 +9852,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
if( !pc->get_group_level(sd) ) {
if( x >= 1 || y >= 1 ) { /* we have command */
- info = get_atcommandinfo_byname(atcommand_checkalias(command + 1));
+ info = atcommand->get_info_byname(atcommand->check_alias(command + 1));
if( !info || info->char_groups[pc_group_get_idx(sd->group)] == 0 ) /* if we can't use or doesn't exist: don't even display the command failed message */
return false;
} else
@@ -9945,16 +9887,21 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
binding = atcommand->get_bind_byname(command);
// Check if the binding isn't NULL and there is a NPC event, level of usage met, et cetera
- if( binding != NULL && binding->npc_event[0] &&
- ((*atcmd_msg == atcommand->at_symbol && pc->get_group_level(sd) >= binding->group_lv) ||
- (*atcmd_msg == atcommand->char_symbol && pc->get_group_level(sd) >= binding->group_lv_char)))
- {
+ if( binding != NULL
+ && binding->npc_event[0]
+ && (
+ (*atcmd_msg == atcommand->at_symbol && pc->get_group_level(sd) >= binding->group_lv)
+ || (*atcmd_msg == atcommand->char_symbol && pc->get_group_level(sd) >= binding->group_lv_char)
+ )
+ ) {
// Check if self or character invoking; if self == character invoked, then self invoke.
bool invokeFlag = ((*atcmd_msg == atcommand->at_symbol) ? 1 : 0);
// Check if the command initiated is a character command
- if (*message == atcommand->char_symbol &&
- (ssd = iMap->nick2sd(charname)) == NULL && (ssd = iMap->nick2sd(charname2)) == NULL ) {
+ if (*message == atcommand->char_symbol
+ && (ssd = map->nick2sd(charname)) == NULL
+ && (ssd = map->nick2sd(charname2)) == NULL
+ ) {
sprintf(output, msg_txt(1389), command); // %s failed. Player not found.
clif->message(fd, output);
return true;
@@ -9969,12 +9916,12 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
}
//Grab the command information and check for the proper GM level required to use it or if the command exists
- info = get_atcommandinfo_byname(atcommand_checkalias(command + 1));
+ info = atcommand->get_info_byname(atcommand->check_alias(command + 1));
if (info == NULL) {
if( pc->get_group_level(sd) ) { // TODO: remove or replace with proper permission
sprintf(output, msg_txt(153), command); // "%s is Unknown Command."
clif->message(fd, output);
- atcommand_get_suggestions(sd, command + 1, *message == atcommand->at_symbol);
+ atcommand->get_suggestions(sd, command + 1, *message == atcommand->at_symbol);
return true;
} else
return false;
@@ -10003,8 +9950,10 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
}
// Check if target is valid only if confirmed that player can use command.
- if (*message == atcommand->char_symbol &&
- (ssd = iMap->nick2sd(charname)) == NULL && (ssd = iMap->nick2sd(charname2)) == NULL ) {
+ if (*message == atcommand->char_symbol
+ && (ssd = map->nick2sd(charname)) == NULL
+ && (ssd = map->nick2sd(charname2)) == NULL
+ ) {
sprintf(output, msg_txt(1389), command); // %s failed. Player not found.
clif->message(fd, output);
return true;
@@ -10026,7 +9975,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
/*==========================================
*
*------------------------------------------*/
-static void atcommand_config_read(const char* config_filename) {
+void atcommand_config_read(const char* config_filename) {
config_t atcommand_config;
config_setting_t *aliases = NULL, *help = NULL, *nolog = NULL;
const char *symbol = NULL;
@@ -10219,7 +10168,7 @@ void atcommand_db_load_groups(GroupSettings **groups, config_setting_t **command
}
bool atcommand_can_use(struct map_session_data *sd, const char *command) {
- AtCommandInfo *info = get_atcommandinfo_byname(atcommand_checkalias(command + 1));
+ AtCommandInfo *info = atcommand->get_info_byname(atcommand->check_alias(command + 1));
if (info == NULL)
return false;
@@ -10232,7 +10181,7 @@ bool atcommand_can_use(struct map_session_data *sd, const char *command) {
return false;
}
bool atcommand_can_use2(struct map_session_data *sd, const char *command, AtCommandType type) {
- AtCommandInfo *info = get_atcommandinfo_byname(atcommand_checkalias(command));
+ AtCommandInfo *info = atcommand->get_info_byname(atcommand->check_alias(command));
if (info == NULL)
return false;
@@ -10274,7 +10223,7 @@ bool atcommand_hp_add(char *name, AtCommandFunc func) {
/**
* @see DBApply
*/
-static int atcommand_db_clear_sub(DBKey key, DBData *data, va_list args) {
+int atcommand_db_clear_sub(DBKey key, DBData *data, va_list args) {
AtCommandInfo *cmd = DB->data2ptr(data);
aFree(cmd->at_groups);
aFree(cmd->char_groups);
@@ -10285,7 +10234,7 @@ static int atcommand_db_clear_sub(DBKey key, DBData *data, va_list args) {
void atcommand_db_clear(void) {
if( atcommand->db != NULL ) {
- atcommand->db->destroy(atcommand->db, atcommand_db_clear_sub);
+ atcommand->db->destroy(atcommand->db, atcommand->cmd_db_clear_sub);
atcommand->db = NULL;
}
if( atcommand->alias_db != NULL ) {
@@ -10296,13 +10245,13 @@ void atcommand_db_clear(void) {
void atcommand_doload(void) {
if( runflag >= MAPSERVER_ST_RUNNING )
- atcommand_db_clear();
+ atcommand->cmd_db_clear();
if( atcommand->db == NULL )
atcommand->db = stridb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, ATCOMMAND_LENGTH);
if( atcommand->alias_db == NULL )
atcommand->alias_db = stridb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, ATCOMMAND_LENGTH);
- atcommand_basecommands(); //fills initial atcommand_db with known commands
- atcommand_config_read(iMap->ATCOMMAND_CONF_FILENAME);
+ atcommand->base_commands(); //fills initial atcommand_db with known commands
+ atcommand->config_read(map->ATCOMMAND_CONF_FILENAME);
}
void do_init_atcommand(void) {
@@ -10310,11 +10259,11 @@ void do_init_atcommand(void) {
atcommand->char_symbol = '#';
atcommand->binding_count = 0;
- atcommand_doload();
+ atcommand->doload();
}
void do_final_atcommand(void) {
- atcommand_db_clear();
+ atcommand->cmd_db_clear();
}
void atcommand_defaults(void) {
@@ -10323,6 +10272,8 @@ void atcommand_defaults(void) {
atcommand->db = NULL;
atcommand->alias_db = NULL;
+ memset(atcommand->msg_table, 0, sizeof(atcommand->msg_table));
+
atcommand->init = do_init_atcommand;
atcommand->final = do_final_atcommand;
@@ -10335,4 +10286,21 @@ void atcommand_defaults(void) {
atcommand->msg_read = msg_config_read;
atcommand->final_msg = do_final_msg;
atcommand->get_bind_byname = get_atcommandbind_byname;
+ atcommand->get_info_byname = get_atcommandinfo_byname;
+ atcommand->check_alias = atcommand_checkalias;
+ atcommand->get_suggestions = atcommand_get_suggestions;
+ atcommand->config_read = atcommand_config_read;
+ atcommand->stopattack = atcommand_stopattack;
+ atcommand->pvpoff_sub = atcommand_pvpoff_sub;
+ atcommand->pvpon_sub = atcommand_pvpon_sub;
+ atcommand->atkillmonster_sub = atkillmonster_sub;
+ atcommand->raise_sub = atcommand_raise_sub;
+ atcommand->get_jail_time = get_jail_time;
+ atcommand->cleanfloor_sub = atcommand_cleanfloor_sub;
+ atcommand->mutearea_sub = atcommand_mutearea_sub;
+ atcommand->commands_sub = atcommand_commands_sub;
+ atcommand->cmd_db_clear = atcommand_db_clear;
+ atcommand->cmd_db_clear_sub = atcommand_db_clear_sub;
+ atcommand->doload = atcommand_doload;
+ atcommand->base_commands = atcommand_basecommands;
}