summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/script_commands.txt18
-rw-r--r--src/map/mob.c3
-rw-r--r--src/map/script.c59
3 files changed, 79 insertions, 1 deletions
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index f718298a2..2cb0a55c0 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -2493,7 +2493,23 @@ Examples:
// Outputs IP address of character "Silver".
mes "Silver's IP: " + getcharip("Silver");
-
+
+---------------------------------------
+
+*sit({"<character name>"})
+*stand({"<character name>"})
+
+This function will force a character to sit/stand if it is standing/sitting.
+If no player is specified, the attached player will be used.
+
+---------------------------------------
+
+*issit({"<character name>"})
+
+This function will return a number depending on the character's sitting state.
+If the character is sitting, it will return 1, otherwise (standing) it will return 0.
+In case no player is specified, the function will return the state of the attached player.
+
---------------------------------------
\\
2,2 Item-related commands
diff --git a/src/map/mob.c b/src/map/mob.c
index ad3dd50c3..7482a9d56 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -4591,6 +4591,9 @@ static void mob_load(void)
if (iMap->db_use_sql_mob_db)
{
mob_read_sqldb();
+ }
+ if (iMap->db_use_sql_mob_skill_db)
+ {
mob_read_sqlskilldb();
}
else
diff --git a/src/map/script.c b/src/map/script.c
index 4a90290cf..3ba8ea9fc 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -16679,6 +16679,61 @@ BUILDIN(freeloop) {
return true;
}
+BUILDIN(sit)
+{
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 2))
+ sd = iMap->nick2sd(script_getstr(st, 2));
+
+ if (sd == NULL)
+ sd = script_rid2sd(st);
+
+ if (!pc_issit(sd))
+ {
+ pc_setsit(sd);
+ skill->sit(sd,1);
+ clif->sitting(&sd->bl);
+ }
+ return true;
+}
+
+BUILDIN(stand)
+{
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 2))
+ sd = iMap->nick2sd(script_getstr(st, 2));
+
+ if (sd == NULL)
+ sd = script_rid2sd(st);
+
+ if (pc_issit(sd))
+ {
+ pc->setstand(sd);
+ skill->sit(sd,0);
+ clif->standing(&sd->bl);
+ }
+ return true;
+}
+
+BUILDIN(issit)
+{
+ struct map_session_data *sd = NULL;
+
+ if (script_hasdata(st, 2))
+ sd = iMap->nick2sd(script_getstr(st, 2));
+
+ if (sd == NULL)
+ sd = script_rid2sd(st);
+
+ if (pc_issit(sd))
+ script_pushint(st, 1);
+ else
+ script_pushint(st, 0);
+ return true;
+}
+
/**
* @commands (script based)
**/
@@ -17962,6 +18017,10 @@ void script_parse_builtin(void) {
BUILDIN_DEF(packageitem,"?"),
+ BUILDIN_DEF(sit, "?"),
+ BUILDIN_DEF(stand, "?"),
+ BUILDIN_DEF(issit, "?"),
+
/* New BG Commands [Hercules] */
BUILDIN_DEF(bg_create_team,"sii"),
BUILDIN_DEF(bg_join_team,"i?"),