diff options
author | Wushin <pasekei@gmail.com> | 2015-04-29 22:31:07 -0500 |
---|---|---|
committer | Wushin <pasekei@gmail.com> | 2015-04-29 22:31:07 -0500 |
commit | a75608ef2f62a07879e7ef6d73c0ebe5b23908b2 (patch) | |
tree | a9662a4100c2d2213d954239b7046f7b897a6cbe | |
parent | ff87a3f275966dfcdd5a123b44b8802288ca6b22 (diff) | |
parent | 6c0348dc296f9c038a0ca5d6e600c1d802981dc4 (diff) | |
download | tmwa-a75608ef2f62a07879e7ef6d73c0ebe5b23908b2.tar.gz tmwa-a75608ef2f62a07879e7ef6d73c0ebe5b23908b2.tar.bz2 tmwa-a75608ef2f62a07879e7ef6d73c0ebe5b23908b2.tar.xz tmwa-a75608ef2f62a07879e7ef6d73c0ebe5b23908b2.zip |
Merge pull request #66 from mekolat/emotion
make emotion send to a single rid
-rw-r--r-- | src/map/clif.cpp | 6 | ||||
-rw-r--r-- | src/map/clif.hpp | 1 | ||||
-rw-r--r-- | src/map/script-fun.cpp | 19 |
3 files changed, 16 insertions, 10 deletions
diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 577d7be..339adda 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -198,11 +198,6 @@ int is_deaf(dumb_ptr<block_list> bl) return sd->special_state.deaf; } -static -void clif_emotion_towards(dumb_ptr<block_list> bl, - dumb_ptr<block_list> target, int type); - - enum class ChatType { Party, @@ -3113,7 +3108,6 @@ void clif_emotion(dumb_ptr<block_list> bl, int type) clif_send(buf, bl, SendWho::AREA); } -static void clif_emotion_towards(dumb_ptr<block_list> bl, dumb_ptr<block_list> target, int type) { diff --git a/src/map/clif.hpp b/src/map/clif.hpp index 153cc7c..e9f0452 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -96,6 +96,7 @@ int clif_changeoption(dumb_ptr<block_list>); // area int clif_useitemack(dumb_ptr<map_session_data>, IOff0, int, int); // self void clif_emotion(dumb_ptr<block_list> bl, int type); +void clif_emotion_towards(dumb_ptr<block_list> bl, dumb_ptr<block_list> target, int type); void clif_sitting(Session *, dumb_ptr<map_session_data> sd); // trade diff --git a/src/map/script-fun.cpp b/src/map/script-fun.cpp index 4cb4448..17fe943 100644 --- a/src/map/script-fun.cpp +++ b/src/map/script-fun.cpp @@ -2179,11 +2179,22 @@ void builtin_getpvpflag(ScriptState *st) static void builtin_emotion(ScriptState *st) { - int type; - type = conv_num(st, &AARG(0)); + ZString str; + dumb_ptr<map_session_data> pl_sd = nullptr; + int type = conv_num(st, &AARG(0)); + if (HARG(1)) { + str = ZString(conv_str(st, &AARG(1))); + CharName player = stringish<CharName>(str); + pl_sd = map_nick2sd(player); + } if (type < 0 || type > 200) return; - clif_emotion(map_id2bl(st->oid), type); + if (pl_sd != nullptr) + clif_emotion_towards(map_id2bl(st->oid), pl_sd, type); + else if (st->rid && str == "self"_s) + clif_emotion(map_id2sd(st->rid), type); + else + clif_emotion(map_id2bl(st->oid), type); } static @@ -3178,7 +3189,7 @@ BuiltinFunction builtin_functions[] = BUILTIN(pvpoff, "M"_s, '\0'), BUILTIN(setpvpchannel, "i"_s, '\0'), BUILTIN(getpvpflag, "i"_s, 'i'), - BUILTIN(emotion, "i"_s, '\0'), + BUILTIN(emotion, "i?"_s, '\0'), BUILTIN(mapwarp, "MMxy"_s, '\0'), BUILTIN(mobcount, "ME"_s, 'i'), BUILTIN(marriage, "P"_s, 'i'), |