From 46e503a063783c8cd5a701615168e89a1992b5dc Mon Sep 17 00:00:00 2001
From: mekolat <mekolat@users.noreply.github.com>
Date: Sat, 2 May 2015 15:28:58 -0400
Subject: npc -1 => 32767

---
 src/ast/npc.cpp       |  55 +++--------------------
 src/ast/npc.hpp       |  11 +----
 src/ast/npc_test.cpp  |  68 +++-------------------------
 src/map/clif.cpp      |   4 +-
 src/map/npc-parse.cpp | 122 +-------------------------------------------------
 src/map/npc.cpp       |   2 +-
 6 files changed, 16 insertions(+), 246 deletions(-)

(limited to 'src')

diff --git a/src/ast/npc.cpp b/src/ast/npc.cpp
index e9c3464..8d4a43e 100644
--- a/src/ast/npc.cpp
+++ b/src/ast/npc.cpp
@@ -306,7 +306,7 @@ namespace npc
     static
     Result<ScriptNone> parse_script_none_head(io::LineSpan span, std::vector<Spanned<std::vector<Spanned<RString>>>>& bits)
     {
-        //  ScriptNone:         -|script|script name|-1{code}
+        //  ScriptNone:         -|script|script name|32767{code}
         if (bits.size() != 4)
         {
             return Err(span.error_str("expect 4 |component|s"_s));
@@ -319,10 +319,10 @@ namespace npc
         {
             return Err(bits[2].span.error_str("in |component 3| expect 1 ,component,s"_s));
         }
-        assert(bits[3].data[0].data == "-1"_s);
+        assert(bits[3].data[0].data == "32767"_s);
         if (bits[3].data.size() != 1)
         {
-            return Err(bits[3].span.error_str("in |component 4| should be just -1"_s));
+            return Err(bits[3].span.error_str("in |component 4| should be just 32767"_s));
         }
 
         ScriptNone script_none;
@@ -333,39 +333,6 @@ namespace npc
         return Ok(std::move(script_none));
     }
     static
-    Result<ScriptMapNone> parse_script_map_none_head(io::LineSpan span, std::vector<Spanned<std::vector<Spanned<RString>>>>& bits)
-    {
-        //  ScriptMapNone:      m,x,y,d|script|script name|-1{code}
-        if (bits.size() != 4)
-        {
-            return Err(span.error_str("expect 4 |component|s"_s));
-        }
-        if (bits[0].data.size() != 4)
-        {
-            return Err(bits[0].span.error_str("in |component 1| expect 3 ,component,s"_s));
-        }
-        assert(bits[1].data.size() == 1);
-        assert(bits[1].data[0].data == "script"_s);
-        if (bits[2].data.size() != 1)
-        {
-            return Err(bits[2].span.error_str("in |component 3| expect 1 ,component,s"_s));
-        }
-        if (bits[3].data.size() != 1 || bits[3].data[0].data != "-1"_s)
-        {
-            return Err(bits[3].span.error_str("in |component 4| should be just -1"_s));
-        }
-
-        ScriptMapNone script_map_none;
-        TRY_EXTRACT(bits[0].data[0], script_map_none.m);
-        TRY_EXTRACT(bits[0].data[1], script_map_none.x);
-        TRY_EXTRACT(bits[0].data[2], script_map_none.y);
-        TRY_EXTRACT(bits[0].data[3], script_map_none.d);
-        TRY_EXTRACT(bits[2].data[0], script_map_none.name);
-        script_map_none.key4_span = bits[3].data[0].span;
-        // also expect '{' and parse real script (in caller)
-        return Ok(std::move(script_map_none));
-    }
-    static
     Result<ScriptMap> parse_script_map_head(io::LineSpan span, std::vector<Spanned<std::vector<Spanned<RString>>>>& bits)
     {
         //  ScriptMap:          m,x,y,d|script|script name|class,xs,ys{code}
@@ -417,10 +384,9 @@ namespace npc
     static
     Result<Script> parse_script_any(io::LineSpan span, std::vector<Spanned<std::vector<Spanned<RString>>>>& bits, io::LineCharReader& lr)
     {
-        // 4 cases:
+        // 3 cases:
         //  ScriptFunction:     function|script|Fun Name{code}
-        //  ScriptNone:         -|script|script name|-1{code}
-        //  ScriptMapNone:      m,x,y,d|script|script name|-1{code}
+        //  ScriptNone:         -|script|script name|32767{code}
         //  ScriptMap:          m,x,y,d|script|script name|class,xs,ys{code}
         if (bits[0].data[0].data == "function"_s)
         {
@@ -445,17 +411,6 @@ namespace npc
             rv.body = TRY(ast::script::parse_script_body(lr, opt));
             return Ok(std::move(rv));
         }
-        else if (bits.size() >= 4 && bits[3].data[0].data == "-1"_s)
-        {
-            Script rv = TRY(parse_script_map_none_head(span, bits));
-            rv.key_span = bits[1].data[0].span;
-
-            ast::script::ScriptOptions opt;
-            opt.implicit_start = true;
-            opt.no_start = true;
-            rv.body = TRY(ast::script::parse_script_body(lr, opt));
-            return Ok(std::move(rv));
-        }
         else
         {
             ScriptMap script_map = TRY(parse_script_map_head(span, bits));
diff --git a/src/ast/npc.hpp b/src/ast/npc.hpp
index a51acd3..ca6479e 100644
--- a/src/ast/npc.hpp
+++ b/src/ast/npc.hpp
@@ -103,14 +103,6 @@ namespace npc
         Spanned<NpcName> name;
         io::LineSpan key4_span;
     };
-    struct ScriptMapNone
-    {
-        Spanned<MapName> m;
-        Spanned<unsigned> x, y;
-        Spanned<DIR> d;
-        Spanned<NpcName> name;
-        io::LineSpan key4_span;
-    };
     struct ScriptMap
     {
         Spanned<MapName> m;
@@ -120,13 +112,12 @@ namespace npc
         Spanned<Species> npc_class;
         Spanned<unsigned> xs, ys;
     };
-    using ScriptBase = Variant<ScriptFunction, ScriptNone, ScriptMapNone, ScriptMap>;
+    using ScriptBase = Variant<ScriptFunction, ScriptNone, ScriptMap>;
     struct Script : ScriptBase
     {
         Script() = default;
         Script(ScriptFunction s) : ScriptBase(std::move(s)) {}
         Script(ScriptNone s) : ScriptBase(std::move(s)) {}
-        Script(ScriptMapNone s) : ScriptBase(std::move(s)) {}
         Script(ScriptMap s) : ScriptBase(std::move(s)) {}
 
         io::LineSpan key_span;
diff --git a/src/ast/npc_test.cpp b/src/ast/npc_test.cpp
index a753623..dadeba7 100644
--- a/src/ast/npc_test.cpp
+++ b/src/ast/npc_test.cpp
@@ -423,11 +423,11 @@ namespace npc
         {
             //        1         2         3
             //23456789012345678901234567890123456789
-            "-|script|#config|-1{end;}"_s,
+            "-|script|#config|32767{end;}"_s,
             //                    123456
-            "-|script|#config|-1\n{end;}\n"_s,
+            "-|script|#config|32767\n{end;}\n"_s,
             //                      1234567
-            "-|script|#config|-1\n \n {end;} "_s,
+            "-|script|#config|32767\n \n {end;} "_s,
         };
         for (auto input : inputs)
         {
@@ -435,7 +435,7 @@ namespace npc
             auto res = TRY_UNWRAP(parse_top(lr), FAIL());
             EXPECT_TRUE(res.get_success().is_some());
             auto top = TRY_UNWRAP(std::move(res.get_success()), FAIL());
-            EXPECT_SPAN(top.span, 1,1, 1,19);
+            EXPECT_SPAN(top.span, 1,1, 1,22);
             auto script = top.get_if<Script>();
             EXPECT_TRUE(script);
             auto p = script->get_if<ScriptNone>();
@@ -446,66 +446,10 @@ namespace npc
                 EXPECT_SPAN(script->key_span, 1,3, 1,8);
                 EXPECT_SPAN(p->name.span, 1,10, 1,16);
                 EXPECT_EQ(p->name.data, stringish<NpcName>("#config"_s));
-                EXPECT_SPAN(p->key4_span, 1,18, 1,19);
+                EXPECT_SPAN(p->key4_span, 1,18, 1,22);
                 if (input.endswith('}'))
                 {
-                    EXPECT_SPAN(script->body.span, 1,20, 1,25);
-                }
-                else if (input.endswith('\n'))
-                {
-                    EXPECT_SPAN(script->body.span, 2,1, 2,6);
-                }
-                else if (input.endswith(' '))
-                {
-                    EXPECT_SPAN(script->body.span, 3,2, 3,7);
-                }
-                else
-                {
-                    FAIL();
-                }
-                EXPECT_EQ(script->body.braced_body, "{end;}"_s);
-            }
-        }
-    }
-    TEST(npcast, scriptmapnone)
-    {
-        QuietFd q;
-        LString inputs[] =
-        {
-            //        1         2         3
-            //23456789012345678901234567890123456789
-            "map.gat,1,2,3|script|Init|-1{end;}"_s,
-            "map.gat,1,2,3|script|Init|-1\n{end;}\n"_s,
-            "map.gat,1,2,3|script|Init|-1\n \n {end;} "_s,
-        };
-        for (auto input : inputs)
-        {
-            io::LineCharReader lr(io::from_string, "<string>"_s, input);
-            auto res = TRY_UNWRAP(parse_top(lr), FAIL());
-            EXPECT_TRUE(res.get_success().is_some());
-            auto top = TRY_UNWRAP(std::move(res.get_success()), FAIL());
-            EXPECT_SPAN(top.span, 1,1, 1,28);
-            auto script = top.get_if<Script>();
-            EXPECT_TRUE(script);
-            auto p = script->get_if<ScriptMapNone>();
-            EXPECT_TRUE(p);
-            if (p)
-            {
-                EXPECT_SPAN(p->m.span, 1,1, 1,7);
-                EXPECT_EQ(p->m.data, stringish<MapName>("map"_s));
-                EXPECT_SPAN(p->x.span, 1,9, 1,9);
-                EXPECT_EQ(p->x.data, 1);
-                EXPECT_SPAN(p->y.span, 1,11, 1,11);
-                EXPECT_EQ(p->y.data, 2);
-                EXPECT_SPAN(p->d.span, 1,13, 1,13);
-                EXPECT_EQ(p->d.data, DIR::NW);
-                EXPECT_SPAN(script->key_span, 1,15, 1,20);
-                EXPECT_SPAN(p->name.span, 1,22, 1,25);
-                EXPECT_EQ(p->name.data, stringish<NpcName>("Init"_s));
-                EXPECT_SPAN(p->key4_span, 1,27, 1,28);
-                if (input.endswith('}'))
-                {
-                    EXPECT_SPAN(script->body.span, 1,29, 1,34);
+                    EXPECT_SPAN(script->body.span, 1,23, 1,28);
                 }
                 else if (input.endswith('\n'))
                 {
diff --git a/src/map/clif.cpp b/src/map/clif.cpp
index e3cd55f..2c65d44 100644
--- a/src/map/clif.cpp
+++ b/src/map/clif.cpp
@@ -901,7 +901,7 @@ int clif_spawnnpc(dumb_ptr<npc_data> nd)
 {
     nullpo_retz(nd);
 
-    if (nd->npc_class == NEGATIVE_SPECIES || nd->flag & 1 || nd->npc_class == INVISIBLE_CLASS)
+    if (nd->flag & 1 || nd->npc_class == INVISIBLE_CLASS)
         return 0;
 
     Packet_Fixed<0x007c> fixed_7c;
@@ -2320,7 +2320,7 @@ void clif_getareachar_npc(dumb_ptr<map_session_data> sd, dumb_ptr<npc_data> nd)
     nullpo_retv(sd);
     nullpo_retv(nd);
 
-    if (nd->npc_class == NEGATIVE_SPECIES || nd->flag & 1 || nd->npc_class == INVISIBLE_CLASS)
+    if (nd->flag & 1 || nd->npc_class == INVISIBLE_CLASS)
         return;
 
     Buffer buf;
diff --git a/src/map/npc-parse.cpp b/src/map/npc-parse.cpp
index 9c9a22c..4d9fcbd 100644
--- a/src/map/npc-parse.cpp
+++ b/src/map/npc-parse.cpp
@@ -446,7 +446,7 @@ bool npc_load_script_none(ast::script::ScriptBody& body, ast::npc::ScriptNone& s
     nd->bl_id = npc_get_new_npc_id();
     nd->dir = DIR::S;
     nd->flag = 0;
-    nd->npc_class = NEGATIVE_SPECIES;
+    nd->npc_class = INVISIBLE_CLASS;
     nd->speed = 200_ms;
     nd->scr.script = std::move(script);
     nd->option = Opt0::ZERO;
@@ -513,115 +513,6 @@ bool npc_load_script_none(ast::script::ScriptBody& body, ast::npc::ScriptNone& s
     return true;
 }
 
-static
-bool npc_load_script_map_none(ast::script::ScriptBody& body, ast::npc::ScriptMapNone& script_map_none)
-{
-    MapName mapname = script_map_none.m.data;
-    int x = script_map_none.x.data, y = script_map_none.y.data;
-    DIR dir = script_map_none.d.data;
-    P<map_local> m = TRY_UNWRAP(map_mapname2mapid(mapname),
-            {
-                script_map_none.m.span.error("No such map"_s);
-                return false;
-            });
-
-    std::unique_ptr<const ScriptBuffer> script = compile_script(STRPRINTF("script npc \"%s\""_fmt, script_map_none.name.data), body, false);
-    if (script == nullptr)
-        return false;
-
-    dumb_ptr<npc_data_script> nd;
-    nd.new_();
-    nd->scr.event_needs_map = false;
-
-    nd->name = script_map_none.name.data;
-
-    nd->bl_prev = nd->bl_next = nullptr;
-    nd->bl_m = m;
-    nd->bl_x = x;
-    nd->bl_y = y;
-    nd->bl_id = npc_get_new_npc_id();
-    nd->dir = dir;
-    nd->flag = 0;
-    nd->npc_class = NEGATIVE_SPECIES;
-    nd->speed = 200_ms;
-    nd->scr.script = std::move(script);
-    nd->option = Opt0::ZERO;
-    nd->opt1 = Opt1::ZERO;
-    nd->opt2 = Opt2::ZERO;
-    nd->opt3 = Opt3::ZERO;
-
-    npc_script++;
-    nd->bl_type = BL::NPC;
-    nd->npc_subtype = NpcSubtype::SCRIPT;
-
-    nd->n = map_addnpc(m, nd);
-    map_addblock(nd);
-
-    {
-        struct event_data ev {};
-        ev.nd = nd;
-        ev.pos = 0;
-        NpcEvent npcev;
-        npcev.npc = nd->name;
-        npcev.label = ScriptLabel();
-        ev_db.insert(npcev, ev);
-    }
-
-    register_npc_name(nd);
-
-    for (auto& pair : scriptlabel_db)
-        npc_convertlabel_db(pair.first, pair.second, nd);
-
-    for (npc_label_list& el : nd->scr.label_listv)
-    {
-        ScriptLabel lname = el.name;
-        int pos = el.pos;
-
-        if (lname.startswith("On"_s))
-        {
-            struct event_data ev {};
-            ev.nd = nd;
-            ev.pos = pos;
-            NpcEvent buf;
-            buf.npc = nd->name;
-            buf.label = lname;
-            ev_db.insert(buf, ev);
-        }
-    }
-
-    for (npc_label_list& el : nd->scr.label_listv)
-    {
-        int t_ = 0;
-        ScriptLabel lname = el.name;
-        int pos = el.pos;
-        if (lname.startswith("OnTimer"_s) && extract(lname.xslice_t(7), &t_) && t_ > 0)
-        {
-            interval_t t = static_cast<interval_t>(t_);
-
-            npc_timerevent_list tel {};
-            tel.timer = t;
-            tel.pos = pos;
-
-            auto it = std::lower_bound(nd->scr.timer_eventv.begin(), nd->scr.timer_eventv.end(), tel,
-                    [](const npc_timerevent_list& l, const npc_timerevent_list& r)
-                    {
-                        return l.timer < r.timer;
-                    }
-            );
-            assert (it == nd->scr.timer_eventv.end() || it->timer != tel.timer);
-
-            nd->scr.timer_eventv.insert(it, std::move(tel));
-        }
-    }
-    // The counter starts stopped with 0 ticks, which is the first event,
-    // unless there is none, in which case begin == end.
-    nd->scr.timer = interval_t::zero();
-    nd->scr.next_event = nd->scr.timer_eventv.begin();
-    // nd->scr.timerid = nullptr;
-
-    return true;
-}
-
 static
 bool npc_load_script_map(ast::script::ScriptBody& body, ast::npc::ScriptMap& script_map)
 {
@@ -761,17 +652,6 @@ bool npc_load_script_any(ast::npc::Script *script)
         {
             return npc_load_script_none(script->body, script_none);
         }
-        MATCH_CASE (ast::npc::ScriptMapNone&, script_map_none)
-        {
-            auto& mapname = script_map_none.m;
-            Option<P<map_local>> m = map_mapname2mapid(mapname.data);
-            if (m.is_none())
-            {
-                mapname.span.error(STRPRINTF("Map not found: %s"_fmt, mapname.data));
-                return false;
-            }
-            return npc_load_script_map_none(script->body, script_map_none);
-        }
         MATCH_CASE (ast::npc::ScriptMap&, script_map)
         {
             auto& mapname = script_map.m;
diff --git a/src/map/npc.cpp b/src/map/npc.cpp
index 56c33cc..4296432 100644
--- a/src/map/npc.cpp
+++ b/src/map/npc.cpp
@@ -583,7 +583,7 @@ int npc_checknear(dumb_ptr<map_session_data> sd, BlockId id)
     if (nd->bl_type != BL::NPC)
         return 1;
 
-    if (nd->npc_class == NEGATIVE_SPECIES)
+    if (nd->npc_class == INVISIBLE_CLASS)
         return 0;
 
     // エリア判定
-- 
cgit v1.2.3-70-g09d2