Node breaker fixup for ones lacking pick slot
authorZefram <zefram@fysh.org>
Sat, 9 Aug 2014 14:51:18 +0000 (15:51 +0100)
committerVanessa Ezekowitz <vanessaezekowitz@gmail.com>
Sat, 9 Aug 2014 14:57:43 +0000 (10:57 -0400)
This has been seen on Vanessa's server, and caused the wielding code
to crash.

wielder.lua

index 6d92a23e64857eb0b7ae74c01073a8a373859607..a57471fefe503dfb7b378f3c8dc28080e25cc9d3 100644 (file)
@@ -269,14 +269,18 @@ if pipeworks.enable_node_breaker then
                        local inv = meta:get_inventory()
                        -- Node breakers predating the visible pick slot
                        -- may have been partially updated.  This code
-                       -- fully updates them.  Originally, they had a
-                       -- ghost pick in a "pick" inventory, no other
-                       -- inventory, and no form.  The partial update of
-                       -- early with-form node breaker code gives them
-                       -- "ghost_pick" and "main" inventories, but leaves
-                       -- the old ghost pick in the "pick" inventory,
-                       -- and doesn't add a form.  First perform that
-                       -- partial update.
+                       -- fully updates them.  Some have been observed
+                       -- to have no pick slot at all; first add one.
+                       if inv:get_size("pick") ~= 1 then
+                               inv:set_size("pick", 1)
+                       end
+                       -- Originally, they had a ghost pick in a "pick"
+                       -- inventory, no other inventory, and no form.
+                       -- The partial update of early with-form node
+                       -- breaker code gives them "ghost_pick" and "main"
+                       -- inventories, but leaves the old ghost pick in
+                       -- the "pick" inventory, and doesn't add a form.
+                       -- First perform that partial update.
                        if inv:get_size("ghost_pick") ~= 1 then
                                inv:set_size("ghost_pick", 1)
                                inv:set_size("main", 100)