diff --git a/src/simulation/elements/PROT.cpp b/src/simulation/elements/PROT.cpp index c603a3399..15604833f 100644 --- a/src/simulation/elements/PROT.cpp +++ b/src/simulation/elements/PROT.cpp @@ -55,11 +55,17 @@ int Element_PROT::update(UPDATE_FUNC_ARGS) switch (utype) { case PT_SPRK: + { //remove active sparks - sim->part_change_type(under>>8, x, y, parts[under>>8].ctype); - parts[under>>8].life = 44 + parts[under>>8].life; - parts[under>>8].ctype = 0; + int sparked = parts[under>>8].ctype; + if (sparked >= 0 && sparked < PT_NUM && sim->elements[sparked].Enabled) + { + sim->part_change_type(under>>8, x, y, sparked); + parts[under>>8].life = 44 + parts[under>>8].life; + parts[under>>8].ctype = 0; + } break; + } case PT_DEUT: if ((-((int)sim->pv[y / CELL][x / CELL] - 4) + (parts[under>>8].life / 100)) > rand() % 200) {