diff --git a/res/content/base/scripts/components/drop.lua b/res/content/base/scripts/components/drop.lua index cf57f72f..4995aee4 100644 --- a/res/content/base/scripts/components/drop.lua +++ b/res/content/base/scripts/components/drop.lua @@ -66,8 +66,9 @@ function on_sensor_enter(index, oid) local stack = item.stack_size(dropitem.id) local sum = dropitem.count + odrop.count if sum <= stack then - dropitem.count = sum - other:despawn() + dropitem.count = 0 + odrop.count = sum + entity:despawn() end end end diff --git a/src/coders/BasicParser.inl b/src/coders/BasicParser.inl index 6eac2b47..2e7a3623 100644 --- a/src/coders/BasicParser.inl +++ b/src/coders/BasicParser.inl @@ -435,19 +435,21 @@ dv::value BasicParser::parseNumber(int sign) { static_cast(std::log10(afterdot) + 1) ) ); - c = source[pos]; double dvalue = (value + (afterdot / (double)expo)); - if (c == 'e' || c == 'E') { - pos++; - int s = 1; - if (peek() == '-') { - s = -1; - pos++; - } else if (peek() == '+') { + if (hasNext()){ + c = source[pos]; + if (c == 'e' || c == 'E') { pos++; + int s = 1; + if (peek() == '-') { + s = -1; + pos++; + } else if (peek() == '+') { + pos++; + } + return sign * dvalue * power(10.0, s * parseSimpleInt(10)); } - return sign * dvalue * power(10.0, s * parseSimpleInt(10)); } return sign * dvalue; }