Pages: 1 ... 7 8 [9]
  Print  
Author Topic: The Spelunky Community Update Project  (Read 109898 times)
TyrOvC
Mossbaby
*
Posts: 424


This text is not random :(


View Profile WWW
« Reply #120 on: July 23, 2013, 06:43:46 PM »

Added all that into the github repository, but I haven't gotten around to testing or working on any other bugs today.
Logged

Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #121 on: July 28, 2013, 02:30:43 PM »

I'm not sure if it's been addressed already, but is there a fix for this nonsense?


Logged

Urza
Mossbaby
*
Posts: 463


View Profile
« Reply #122 on: July 29, 2013, 12:20:49 AM »

I'm not sure if it's been addressed already, but is there a fix for this nonsense?

Oh yeah. I fixed that too... I seem to recall it involved a good bit of trial-and-error and changes in multiple places, so I'll have to see if I can figure out what all it was now.

But basically I changed the ropes to align to the grid before flying up, instead of before coming down.
Logged
Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #123 on: July 29, 2013, 05:53:06 PM »

But basically I changed the ropes to align to the grid before flying up, instead of before coming down.

Thanks, that was an easy fix - works great now! Just copied the alignment code already there to be used while the rope is moving upwards.

Code:
// top of oRopeThrow.Step
    if (armed and yVel < 0)
    {
        move_snap(16, 1);
        if (px < x)
        {
            if (not collision_point(x-8, y, oSolid, 0, 0)) x -= 8;
            else x += 8;
        }
        else
        {
            if (not collision_point(x+8, y, oSolid, 0, 0)) x += 8;
            else x -= 8;
        }
    }

See also Urza's bug fix for ropes below.



At the same time I thought to add something to prevent wasting ropes if launched in a confined (2 block high) space. If an 'armed' oRopeThrow hits the ceiling and has travelled less than 32 pixels from the point the player launched it, the rope fails to hook into the wall and instead falls back to the ground where it can be picked up again. This check only works if the player launched the rope while standing on the ground, as in some situations the player could be jumping out from a ledge and back to toss the rope and intentionally hit the ceiling with it.

I'm not proposing this one as necessary for the community update, but I have experience stupidly wasting ropes in such a way.

oRopeThrow.Create:
Code:
// add:
startY = 0;

scrUseItem:
Code:
// in the section that handles rope launch, look for 'holdItem.armed = true' and add:
if (platformCharacterIs(ON_GROUND)) holdItem.startY = y;

oPlayer1.Step (Action):
Code:
// in the section that handles rope launch, look for 'obj.armed = true' and add:
if (platformCharacterIs(ON_GROUND)) obj.startY = y;

oItem.Step:
Code:
// within the isCollisionTop(1) stuff
    if (type == "Rope")
    {
            if (armed and startY > 0 and startY-y < 32)
            {
                    armed = false;
                    startY = 0;
            }
    }
« Last Edit: August 05, 2013, 12:25:53 PM by Moloch » Logged

TyrOvC
Mossbaby
*
Posts: 424


This text is not random :(


View Profile WWW
« Reply #124 on: July 29, 2013, 06:53:23 PM »

Thanks, that was an easy fix - works great now! Just copied the alignment code already there to be used while the rope is moving upwards.
Yay!
At the same time I thought to add something to prevent wasting ropes if launched in a confined (2 block high) space. I'm not proposing this one as necessary for the community update, but I have experience stupidly wasting ropes in such a way.
Yeah I think we probably ought to leave that out, since it could be limiting an intentional not really a bug action.
Logged

Urza
Mossbaby
*
Posts: 463


View Profile
« Reply #125 on: July 29, 2013, 08:51:16 PM »

It's entirely possible I did something different when tried to fix it, but I remember my first attempt made it so you could throw a rope through a wall. I mean like... oh like this:
Spelunky MarkedSpelunky WallSpelunky DudeSpace
SpaceSpelunky WallSpelunky WallSpelunky Wall
(Or maybe it was on the right?) Anyway, you might want to quickly check that doens't happen with your fix.
Logged
Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #126 on: July 30, 2013, 05:07:17 AM »

I couldn't find such weirdness while facing left or right..thanks though!
Logged

Urza
Mossbaby
*
Posts: 463


View Profile
« Reply #127 on: August 01, 2013, 09:41:38 AM »

So this is funny, apparently the rope-through-walls bug was in the original game. I just happened to find it while testing the my rope-snapping changes. But it only happens in a specific combination of circumstances. Namely, when you use a held rope (not with the rope key) and you are ducking.

To fix this, find this code near the top of scrUseItem:
Code:
        else if (holdItem.sprite_index = sRopeEnd)
        {
            if (not kDown and colTop)
            {
              // do nothing
            }
            else
            {
            holdItem.held = false;
            holdItem.armed = true;
           
            holdItem.px = x;
            holdItem.py = y;
           
            if (kDown)
            {
                if (facing == LEFT)
                {
                    obj = instance_create(x-16, y, oRopeThrow);
                }
                else
                {
                    obj = instance_create(x+16, y, oRopeThrow);
                }
And change those two 16s to 12s.
« Last Edit: August 01, 2013, 09:57:06 AM by Urza » Logged
Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #128 on: August 01, 2013, 01:39:51 PM »

I see it now...I was using a held rope but didn't try crouching.

EDIT:
I thought there was a fix posted somewhere to prevent taking damage from enemies through diagonal walls like so:
 Spelunky Wall Spelunky Bat
 Spelunky Dude Spelunky Wall
(imagine there is no wall gap between blocks)
But I can't find it now.
« Last Edit: August 01, 2013, 02:38:52 PM by Moloch » Logged

Urza
Mossbaby
*
Posts: 463


View Profile
« Reply #129 on: August 01, 2013, 04:20:59 PM »

I thought there was a fix posted somewhere to prevent taking damage from enemies through diagonal walls
I was able to fix that at least in some cases by tweaking their bounding boxes.

For the UFO, which seems to be the biggest offender:
Code:
setCollisionBounds(1, 0, 15, 14);

And the bat has the opposite problem, you can hit IT through walls.
Code:
setCollisionBounds(0, 2, 16, 14)

I haven't tried it with all the others, or tested exactly which ones suffer from this in the first place, althoguh I think frogs do.
Logged
Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #130 on: August 01, 2013, 06:16:31 PM »

With the two frogs and zombie, you can whip them through a wall, and if you are in the higher diagonal gap, they can hit you when they jump, AND you can kill them by jumping.

New bounds for frogs:
Code:
setCollisionBounds(1, 2, 14, 16)

New bounds for zombie:
Code:
setCollisionBounds(0, 2, 16, 16)

There's others but I don't feel like messing with them now.
From the upper position the player can stun a vampire and pick him up through the wall. I seem to remember hearing about that one before.
Logged

Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #131 on: August 09, 2013, 12:47:47 PM »

Using the latest revision, found an old bug that I forgot about.

Music on title screen does not loop. Not sure if this happens in all cases or only if you get the the title screen without pressing any buttons to skip the intro.

Fix:
oTitle.Alarm3 should call 'playMusic' instead of 'playSound'. The arguments are OK.
Logged

Moloch
Mosskid
*
Posts: 565


View Profile WWW
« Reply #132 on: October 28, 2013, 10:10:47 PM »

Likely an overlooked copy/paste error from the original version with the small gems:
The value of oEmerald is $200, but oSapphire and oRuby are both worth $400. oSapphire should probably be worth $300 to match Spelunky HD.
Logged

Pages: 1 ... 7 8 [9]
  Print  
 
Jump to: