Skip to main content
Topic: Sphere 1.5 vs miniSphere (Read 414475 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: Sphere 1.5 vs miniSphere

Reply #45
Just turned the Triforce Outlines into a static image. It now displays properly in Sphere & miniSphere. Also, eliminated the need for all the triangle coordinates. The function is more streamlined this way too.
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

Re: Sphere 1.5 vs miniSphere

Reply #46
You probably would have been better to draw the triangles as LineSeries(), but this works too.  For some reason Sphere doesn't have an OutlinedTriangle function...

Re: Sphere 1.5 vs miniSphere

Reply #47
Well here's a new one for Sphere vs miniSphere
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

 

Re: Sphere 1.5 vs miniSphere

Reply #48
That's interesting.  You might have found an actual bug!  What does your code to activate the passageway look like?

Re: Sphere 1.5 vs miniSphere

Reply #49
@Fat Cerberus It's a rough draft...
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

Re: Sphere 1.5 vs miniSphere

Reply #50
Okay, so looking at the code, I have a question:
  • Does it play the Secret sound and just not show the staircase?
  • Or does it NOT play the sound?

If it's the former, then that means SetTile() is bugged.  If it's the latter, than something else is going wrong because that means name is always "block" (since the condition to unlock the secret is for name to not be "block").

Re: Sphere 1.5 vs miniSphere

Reply #51
hmm, Let me try something real quick

Edit: Edited the north directional only for testing purposes.

Changed the code to read
Code: [Select]
if (y == (yn+1))
{
  if (name != "block")
  {
    PlaySound(Secret);
  }
SetTile(tileX, tileY, tileL, tile);
}

Now, it should only play the sound if the name is not "block" but set the tile in either case.

When I tried it in miniSphere the tile still did not change yet functions in Sphere.
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

Re: Sphere 1.5 vs miniSphere

Reply #52
That means there's a problem with SetTile.  I'll look into it.

Re: Sphere 1.5 vs miniSphere

Reply #53
That means there's a problem with SetTile.  I'll look into it.

Mathematical error in my code. The tile now appears in both Sphere and miniSphere. Not an issue with SetTile.
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

Re: Sphere 1.5 vs miniSphere

Reply #54
That's still curious that the behavior differed between the two engines.  What was the mistake?

Re: Sphere 1.5 vs miniSphere

Reply #55
 I started by commenting out different parts of the code. "// this out, test with sphere, functions, miniSphere still broken. Ok, so i don't even need this line." After that it was just "let's check the math", which was literally off by 1.

On a side note: I keep forgetting to add this line
Code: [Select]
if (GetVersion() < 2 || GetActingPerson() == MainChar){//code here}
to certain entities on the map. As a result I just watched an Armos kick a headstone across the screen.
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

Re: Sphere 1.5 vs miniSphere

Reply #56
What I mean though, is why did the off-by-one math not break things in Sphere 1.5?  That indicates some imperfect emulation on my part, and I'd really like to fix that ;)

Re: Sphere 1.5 vs miniSphere

Reply #57
ah, that is an interesting question. I'm not sure why the errored version would process correctly in Sphere. Now, with no slow down in graphics, testing and debugging in miniSphere are a regular task of creating ZeC.
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

Re: Sphere 1.5 vs miniSphere

Reply #58
Now here's one I don't understand...

In miniSphere it functions. In Sphere 1.5, on touching the triforce it just pauses and warps the player outside the level...

Triforce 'On Touch'
Code: [Select]
LVL1C = true;
CollectTriforce();
QueuePersonScript("Triforce", "LevelComplete(119, 87, D3)", false);

Code: [Select]
function CollectTriforce();
{
DetachInput(MainChar);
Foo("Triforce", 127, 71, "north", 0); //Fooing again
ClearPersonQueue(MainChar);
Foo(MainChar, 127, 92, "collect", 0); //always with the Fooing
PlaySound("ItemCollected.ogg"); //To be changed to something more appropriate for the Triforce later
}

Code: [Select]
function LevelComplete(x, y, map);
{
Delay(1500); // adjust for future sound file length
DestroyPerson("Triforce");
AttachInput(MainChar);
FancyWarp(x, y, "south", map, 1500); //I think this came from sphere.chm. Nothing actually fancy just FadeOut() & FadeIn().
}

There are no ifs, no switch, no anything. The code is just straight forward commands.
"I am to misbehave." - Malcom Renyolds, Captain of Serenity

Re: Sphere 1.5 vs miniSphere

Reply #59
That's interesting, there seems to be a bug in Sphere 1.5's handling of queued person scripts from the looks of things.  Not sure what's wrong yet, I can look into that later.