1
0
Fork 0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-12-22 17:49:43 +01:00

Fix bug with destroy(moving)/destroy(disappear)

This commit fixes an obscure bug with `destroy(moving)` and
`destroy(disappear)` where, when looping through entities, the code
doesn't actually check what the entity is before trying to destroy the
block underneath it.

To fix this, we just put the block-destroying code *inside* of the
check, instead of being outside of it.

I also fixed the code style because it was horrible.
This commit is contained in:
AllyTally 2023-09-04 00:34:20 -03:00 committed by Misa Elizabeth Kai
parent 5b2fbeb6b4
commit bcc302bcc2

View file

@ -268,25 +268,48 @@ void scriptclass::run(void)
} }
if (words[0] == "destroy") if (words[0] == "destroy")
{ {
if(words[1]=="gravitylines"){ if (words[1] == "gravitylines")
for(size_t edi=0; edi<obj.entities.size(); edi++){ {
if(obj.entities[edi].type==9) obj.disableentity(edi); for (size_t edi = 0; edi < obj.entities.size(); edi++)
if(obj.entities[edi].type==10) obj.disableentity(edi); {
if (obj.entities[edi].type == 9 || obj.entities[edi].type == 10)
{
obj.disableentity(edi);
} }
}else if(words[1]=="warptokens"){
for(size_t edi=0; edi<obj.entities.size(); edi++){
if(obj.entities[edi].type==11) obj.disableentity(edi);
} }
}else if(words[1]=="platforms"||words[1]=="moving"){
bool fixed=words[1]=="moving";
for(size_t edi=0; edi<obj.entities.size(); edi++){
if(fixed) obj.disableblockat(obj.entities[edi].xp, obj.entities[edi].yp);
if(obj.entities[edi].rule==2 && obj.entities[edi].animate==100) obj.disableentity(edi);
} }
}else if(words[1]=="disappear"){ else if (words[1] == "warptokens")
{
for (size_t edi = 0; edi < obj.entities.size(); edi++) { for (size_t edi = 0; edi < obj.entities.size(); edi++) {
if (obj.entities[edi].type == 11)
{
obj.disableentity(edi);
}
}
}
else if (words[1] == "platforms" || words[1] == "moving")
{
for (size_t edi = 0; edi < obj.entities.size(); edi++)
{
if (obj.entities[edi].rule == 2 && obj.entities[edi].animate == 100)
{
if (words[1] == "moving")
{
obj.disableblockat(obj.entities[edi].xp, obj.entities[edi].yp); obj.disableblockat(obj.entities[edi].xp, obj.entities[edi].yp);
if(obj.entities[edi].type==2 && obj.entities[edi].rule==3) obj.disableentity(edi); }
obj.disableentity(edi);
}
}
}
else if (words[1] == "disappear")
{
for (size_t edi = 0; edi < obj.entities.size(); edi++)
{
obj.disableblockat(obj.entities[edi].xp, obj.entities[edi].yp);
if (obj.entities[edi].type == 2 && obj.entities[edi].rule == 3)
{
obj.disableentity(edi);
}
} }
} }
} }