summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorremoitnane <remoit(DOT)nane(AT)gmail(DOT)com>2010-08-29 21:56:24 -0700
committerremoitnane <remoit(DOT)nane(AT)gmail(DOT)com>2010-08-29 21:56:24 -0700
commit729fa55b9d7b7f29c6a152ad6846eac1bc43cdee (patch)
treeb90b83189a8a7b83df4d628ad532e081b42005ee
parente3672654b00c81e0a171e40a2683ffb904d4f540 (diff)
downloadtmwa-729fa55b9d7b7f29c6a152ad6846eac1bc43cdee.tar.gz
tmwa-729fa55b9d7b7f29c6a152ad6846eac1bc43cdee.tar.bz2
tmwa-729fa55b9d7b7f29c6a152ad6846eac1bc43cdee.tar.xz
tmwa-729fa55b9d7b7f29c6a152ad6846eac1bc43cdee.zip
Expand script function "misceffect" and clean up documentation
-rw-r--r--src/map/script.c44
1 files changed, 35 insertions, 9 deletions
diff --git a/src/map/script.c b/src/map/script.c
index d36334e..58c4b33 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -4104,10 +4104,11 @@ int buildin_savepoint (struct script_state *st)
/*==========================================
* gettimetick(type)
*
- * type:
- * 0 system tick (default)
- * 1 seconds elapsed today
- * 2 seconds since Unix epoch
+ * type The type of time measurement.
+ * Specify 0 for the system tick, 1 for
+ * seconds elapsed today, or 2 for seconds
+ * since Unix epoch. Defaults to 0 for any
+ * other value.
*------------------------------------------
*/
int buildin_gettimetick (struct script_state *st) /* Asgard Version */
@@ -6671,31 +6672,56 @@ int buildin_classchange (struct script_state *st)
}
/*==========================================
- * NPC���甭�������G�t�F�N�g
+ * misceffect(effect, [target])
+ *
+ * effect The effect type/ID.
+ * target The player name or being ID on
+ * which to display the effect. If not
+ * specified, it attempts to default to
+ * the current NPC or invoking PC.
*------------------------------------------
*/
int buildin_misceffect (struct script_state *st)
{
int type;
+ int id = 0;
char *name = NULL;
+ struct block_list *bl = NULL;
type = conv_num (st, &(st->stack->stack_data[st->start + 2]));
+
if (st->end > st->start + 3)
- name = conv_str (st, &(st->stack->stack_data[st->start + 3]));
+ {
+ struct script_data *sdata = &(st->stack->stack_data[st->start + 3]);
+
+ get_val (st, sdata);
+
+ if (sdata->type == C_STR || sdata->type == C_CONSTSTR)
+ name = conv_str (st, sdata);
+ else
+ id = conv_num (st, sdata);
+ }
+
if (name)
{
struct map_session_data *sd = map_nick2sd (name);
if (sd)
- clif_misceffect (&sd->bl, type);
+ bl = &sd->bl;
}
+ else if (id)
+ bl = map_id2bl (id);
else if (st->oid)
- clif_misceffect (map_id2bl (st->oid), type);
+ bl = map_id2bl (st->oid);
else
{
struct map_session_data *sd = script_rid2sd (st);
if (sd)
- clif_misceffect (&sd->bl, type);
+ bl = &sd->bl;
}
+
+ if (bl)
+ clif_misceffect (bl, type);
+
return 0;
}