CURRENT RELEASE: 1.6
I played around with combo stomps after seeing 4matsy's post, and the logic of the combo points is a bit different in Mari0 than SMB. I think you'll need to restructure your points logic a bit. Here's how it should work.
- Whenever Mario touches the ground, his combo counter is set to 0.
- Whenever Mario stomps on an enemy that is not a stationary shell or a bullet, his combo counter goes up by 1 (capped at 11).
- Whenever Mario stomps on a stationary shell, his combo counter goes up by 3.
- Whenever Mario stomps on an enemy that is not a bullet, he gets Points[combo] points, where Points = {100, 200, 400, 500, 800, 1000, 2000, 4000, 5000, 8000, 1UP}. This occurs after the combo value has been added.
- Kicking a stopped shell starts it with a combo value of 3, and awards you Points[3] (i.e. it's like stomping it, so your combo counter goes to 3, then you get Points[3], then your combo counter is set back to zero because you're touching the ground).
- Whenever a kicked shell strikes an enemy, the shell gets one more on its combo counter, then gives you Points[combo].
As is, there are a few deviations in Mari0. Kicking or stomping a stopped shell always gives you 500 points in Mari0, but it should give you 400 for kicking it from the ground, or a dynamic value for stomping on it. Also, the shell kill combos start out at 800, but they should start at 500. I think this is happening because the following two lines in koopa:leftcollide and koopa:rightcollide should trade places:
self.combo = self.combo + 1
addpoints(koopacombo[self.combo], b.x, b.y)
It's adding the combo before giving the points, but the shell combo is initialized to 1 already. Either swap the order of these lines, or initialize the shell combo to 0. Alternatively, eliminate the koopacombo structure entirely and just use mariocombo for the shell, initializing to 3 upon being kicked or stomped.
You can test all of this in 3-1 on SMB. I think the problem with the stairs 1UP trick is happening because of these lines near the top of the koopa section in mario:stompenemy :
if b.speedx == 0 then
addpoints(500, b.x, b.y)
self.combo = 1
end
Mario's stomp combo is set to 1 whenever he lands on a stopped shell.
EDIT: The mario:stompenemy thing is also missing code to give you 1UPs from stomping on a koopa. I just made a test level with a bunch of goombas in a row, followed by a koopa. I get 1UPs from stomping, then only get 8000 points when I reach the koopa.
EDIT2: Stomping on a flying koopa should give you 400 points and should *not* add to your combo count.
EDIT3: In SMB, bumping your head against the axis block of a fire chain hurts you, but it doesn't in Mari0.
- Whenever Mario touches the ground, his combo counter is set to 0.
- Whenever Mario stomps on an enemy that is not a stationary shell or a bullet, his combo counter goes up by 1 (capped at 11).
- Whenever Mario stomps on a stationary shell, his combo counter goes up by 3.
- Whenever Mario stomps on an enemy that is not a bullet, he gets Points[combo] points, where Points = {100, 200, 400, 500, 800, 1000, 2000, 4000, 5000, 8000, 1UP}. This occurs after the combo value has been added.
- Kicking a stopped shell starts it with a combo value of 3, and awards you Points[3] (i.e. it's like stomping it, so your combo counter goes to 3, then you get Points[3], then your combo counter is set back to zero because you're touching the ground).
- Whenever a kicked shell strikes an enemy, the shell gets one more on its combo counter, then gives you Points[combo].
As is, there are a few deviations in Mari0. Kicking or stomping a stopped shell always gives you 500 points in Mari0, but it should give you 400 for kicking it from the ground, or a dynamic value for stomping on it. Also, the shell kill combos start out at 800, but they should start at 500. I think this is happening because the following two lines in koopa:leftcollide and koopa:rightcollide should trade places:
self.combo = self.combo + 1
addpoints(koopacombo[self.combo], b.x, b.y)
It's adding the combo before giving the points, but the shell combo is initialized to 1 already. Either swap the order of these lines, or initialize the shell combo to 0. Alternatively, eliminate the koopacombo structure entirely and just use mariocombo for the shell, initializing to 3 upon being kicked or stomped.
You can test all of this in 3-1 on SMB. I think the problem with the stairs 1UP trick is happening because of these lines near the top of the koopa section in mario:stompenemy :
if b.speedx == 0 then
addpoints(500, b.x, b.y)
self.combo = 1
end
Mario's stomp combo is set to 1 whenever he lands on a stopped shell.
EDIT: The mario:stompenemy thing is also missing code to give you 1UPs from stomping on a koopa. I just made a test level with a bunch of goombas in a row, followed by a koopa. I get 1UPs from stomping, then only get 8000 points when I reach the koopa.
EDIT2: Stomping on a flying koopa should give you 400 points and should *not* add to your combo count.
EDIT3: In SMB, bumping your head against the axis block of a fire chain hurts you, but it doesn't in Mari0.
Last edited by Hexonxonx on 11 Mar 2012, 10:16, edited 2 times in total.
Someone in another thread posted that koopa shells don't wake up like they usually do in SMB, and Maurice indicated that this wasn't an issue he wanted to address. Continuing with the small fixes, here's the code to copy and paste. In koopa:update, go to the block that animates non-small koopas, and add this elseif block:
elseif self.speedx == 0 then
self.shelltimer = self.shelltimer + dt
if self.shelltimer > koopashellblinktime then
self.animationtimer = self.animationtimer + dt
while self.animationtimer > koopaanimationspeed do
self.animationtimer = self.animationtimer - koopaanimationspeed
if self.quad ~= koopaquad[spriteset][3] then
self.quad = koopaquad[spriteset][3]
else
self.quad = koopaquad[spriteset][6]
end
end
else
self.quad = koopaquad[spriteset][3]
end
if self.shelltimer > koopashelltotaltime then
self.small = false
self.speedx = -koopaspeed
self.quad = koopaquad[spriteset][2]
end
end
Down in koopa:stomp, a few lines need to be added. In the "elseif self.small == false" block, add "self.shelltimer = 0"; add the same line in the "else" block there. In the "elseif self.speedx == 0" block add "self.quad = koopaquad[spriteset][3]". The shelltimer can be initialized up in koopa:init (is it necessary?). In variables.lua, add "koopashellblinktime = 4" and "koopashelltotaltime = 5.6". In main.lua where koopaquad is defined, change the x range to "1, 6" rather than "1, 5".
The updated graphics for koopas can be found at http://www.mnwhite.org/koopa.png and http://www.mnwhite.org/koopared.png
Apparently kicking a shell that's blinking is supposed to yield 500 points (instead of 400), and kicking one just before it wakes up (last game-second?) gets you 1000. That's an easy enough change.
elseif self.speedx == 0 then
self.shelltimer = self.shelltimer + dt
if self.shelltimer > koopashellblinktime then
self.animationtimer = self.animationtimer + dt
while self.animationtimer > koopaanimationspeed do
self.animationtimer = self.animationtimer - koopaanimationspeed
if self.quad ~= koopaquad[spriteset][3] then
self.quad = koopaquad[spriteset][3]
else
self.quad = koopaquad[spriteset][6]
end
end
else
self.quad = koopaquad[spriteset][3]
end
if self.shelltimer > koopashelltotaltime then
self.small = false
self.speedx = -koopaspeed
self.quad = koopaquad[spriteset][2]
end
end
Down in koopa:stomp, a few lines need to be added. In the "elseif self.small == false" block, add "self.shelltimer = 0"; add the same line in the "else" block there. In the "elseif self.speedx == 0" block add "self.quad = koopaquad[spriteset][3]". The shelltimer can be initialized up in koopa:init (is it necessary?). In variables.lua, add "koopashellblinktime = 4" and "koopashelltotaltime = 5.6". In main.lua where koopaquad is defined, change the x range to "1, 6" rather than "1, 5".
The updated graphics for koopas can be found at http://www.mnwhite.org/koopa.png and http://www.mnwhite.org/koopared.png
Apparently kicking a shell that's blinking is supposed to yield 500 points (instead of 400), and kicking one just before it wakes up (last game-second?) gets you 1000. That's an easy enough change.
-
- Posts: 1
- Joined: 11 Mar 2012, 10:34
THERE IS STILL NO CHECKPOINT IN LEVEL 4-1 TO 8-4 THE ORIGINAL MARIO MAPPACKS... its really frustrating
Does anyone else have problems with mazes?
I see you're problemFranpa wrote:Does anyone else have problems with mazes?
I took a look at the original mappack and you're ment to stack it vertically.
You can't expect the gates to magically know what spaces they should take up.Franpa wrote:Does anyone else have problems with mazes?
Add a fuckton of them to cover an area.
Thank you both for the help.
So, something like this then? It still doesn't loop the 3rd and 4th mazes properly.
Edit: Nevermind I'm an idiot. A really big one! I wasn't setting the gate numbers. Yep working great now.
Edit: Nevermind I'm an idiot. A really big one! I wasn't setting the gate numbers. Yep working great now.
Nope I can't get it to work properly as several individual mazes. It works fine as one giant maze though if I remove all the End Maze squares and number the gates.
I want to create multiple individual mazes with each one followed immediately by another. (Similar to 4-4 but have the mazes closer together) This way I can have a large maze that provides more immediate feedback if any mistakes are made by the player rather then the player having to play through the whole thing before receiving feedback. Currently I can only get the 7-4 type of maze working.
The video that displays the maze not working correctly?angal wrote:Couse you need to do somethink, like you see on the video.
- EntranceJew
- Posts: 93
- Joined: 05 Mar 2012, 05:37
I fixed gel dispensers not having their image displayed properly when they face leftward:
geldispenser.lua geldispenser:draw()
Code: Select all
elseif self.dir == "left" then
love.graphics.draw(geldispenserimg, math.floor((self.cox-xscroll+1)*16*scale), (self.coy-1.5)*16*scale, math.pi*-1.5, scale, scale, 0, 0)
geldispenser.lua geldispenser:draw()
Code: Select all
elseif self.dir == "left" then
love.graphics.draw(geldispenserimg, math.floor((self.cox-xscroll+1)*16*scale), (self.coy+.5)*16*scale, math.pi*-1.5, -scale, scale, 0, 0)
I tried using gel dispensers on the right and they seem to have difficulty spawning in? I'll take a screenshot on request, but unlike using dispensers to the right, which shows the dispenser, the dispensers facing to the left simply do not show up at all, only the gel dispense animation (Globs of stuff coming out of what appears to be nothing).
EDIT: I'll wait until this fix is committed in the next version. :)
EDIT: I'll wait until this fix is committed in the next version. :)
Please implement an easier way to change gels, it's painful to change all the blue gels to orange one by one.
Never gonna happen son. Beside, you can overwrite blue and orange gels anyway and I prefer one-by-one instead of all-at-once which would cause problems elsewhere.RWLabs wrote:Please implement an easier way to change gels, it's painful to change all the blue gels to orange one by one.
http://www.youtube.com/watch?v=fiYalrR40o8&t=30s
http://www.youtube.com/watch?v=Ep5jtXEV-EU&t=25s
Turtles don't behave accurately when knocked out from below (They shouldn't die, neither should Spiny's or bouncing ducks etc.) and they still don't resume walking after being stomped/stunned, after a period of time has passed (Bouncing ducks turn into walking ducks when recovering iirc).
Edit: Note the video isn't real time as the emulator was lagging while recording with Fraps.
http://www.youtube.com/watch?v=Ep5jtXEV-EU&t=25s
Turtles don't behave accurately when knocked out from below (They shouldn't die, neither should Spiny's or bouncing ducks etc.) and they still don't resume walking after being stomped/stunned, after a period of time has passed (Bouncing ducks turn into walking ducks when recovering iirc).
Edit: Note the video isn't real time as the emulator was lagging while recording with Fraps.
I posted code fixes for all but one of those problems in this thread; scroll up. If you've been a good boy this year, Maurice will copy and paste them into v1.5. The issue of bumping koopas from below requires writing a koopa:jump(x) routine, where x is the location of the block that's bumping the koopa. You can can copy most of the code from mushroom:jump(x), and then add the appropriate parts from koopa:stomp to turn it into a shell. It will also require an adjustment to koopa:floorcollide and mario:hitblock. I'll try to write something up.
I realized there's an outstanding issue with the code for koopas waking up that I posted above: I didn't draw the blinking frame for buzzy beetles. When beetles are about to wake up, the entire shell blinks in and out of visibility. I'm feeling lazy, could someone adjust beetle.png to add the blinking state? Just make sure to put it in the 6th column, leaving 2 columns (32 pixels) blank between the shell and the blinking shell.
EDIT: Here's the main code fix to make bopping koopas from below (mostly) work correctly:
Other small changes: initializing "self.plop = false" in koopa:init; adding the clause "and self.plop == false" to koopa:leftcollide and koopa:rightcollide in the line "if w.shotted then"; adding the clause "or "green"" to the line that defines "self.t = t" in koopa:init. The last koopa bit is to add these lines at the end of koopa:floorcollide
The other adjustment is to the part of mario:hitblock that deals with killing enemies:
All that's been added is the stuff about iskoopa. This code also includes the earlier change for spikeys to not be killed by bopping from below, just bumped up. The path the shell takes upon being hit doesn't look perfect, but it's pretty close. I didn't implement the shell flipping over when hit from below, or blinking briefly upon being hit.
I realized there's an outstanding issue with the code for koopas waking up that I posted above: I didn't draw the blinking frame for buzzy beetles. When beetles are about to wake up, the entire shell blinks in and out of visibility. I'm feeling lazy, could someone adjust beetle.png to add the blinking state? Just make sure to put it in the 6th column, leaving 2 columns (32 pixels) blank between the shell and the blinking shell.
EDIT: Here's the main code fix to make bopping koopas from below (mostly) work correctly:
Code: Select all
function koopa:jump(x)
playsound(shotsound)
self.quad = koopaquad[spriteset][3]
self.small = true
self.mask = {false, false, false, false, false, true, false, false, false, true}
self.shelltimer = 0
self.falling = true
self.speedy = -mushroomjumpforce
if self.x+self.width/2 < x-0.5 then
self.speedx = -koopaspeed/2
elseif self.x+self.width/2 > x-0.5 then
self.speedx = koopaspeed/2
end
self.plop = true
end
Code: Select all
if self.plop == true then
self.speedx = 0
self.plop = false
self.shelltimer = 0
end
Code: Select all
--kill enemies on top
for i, v in pairs(enemies) do
if objects[v] then
for j, w in pairs(objects[v]) do
local centerX = w.x + w.width/2
if inrange(centerX, x-1, x, true) and y-1 == w.y+w.height then
--get dir
local dir = "right"
if w.x+w.width/2 < x-0.5 then
dir = "left"
end
--determine if koopa
local iskoopa = false
if w.t == "green" or w.t == "red" or w.t == "flying" or w.t == "redflying" then
iskoopa = true
end
if w.shotted then
if w.t ~= "spikey" and iskoopa == false then
w:shotted(dir)
elseif iskoopa == true then
w:jump(x)
end
addpoints(100, w.x+w.width/2, w.y)
end
end
end
end
end
Last edited by Hexonxonx on 13 Mar 2012, 01:58, edited 1 time in total.
I've noticed if a koopa or similar creature runs towards the right edge of the screen and meets it as a turtle spawns, they end up inside each other and in the case of red turtles, one will be pushed off the edge of the platform.
hi,
Just a couple of bugs i have found while playing with the editor (Ver 1.4).
*Can ride vertical moving platforms through solid objects .
*In intermission fireball/large mario in invulnerable to laser.
*Underwater large mario can slide while ducked.
*A pair of hammer brothers don't interact well (will stand on other, will ride others hammer, will glitch and fall through floor).
*Light bridge & lasers (possibly other entites) after maze will apear in first repeat of maze and then not after maze.
*Fireball marios hat will jump if fireball shot while ducking.
*Custom tile set '?' box will revert to defualt '?' box.
Just a couple of bugs i have found while playing with the editor (Ver 1.4).
*Can ride vertical moving platforms through solid objects .
*In intermission fireball/large mario in invulnerable to laser.
*Underwater large mario can slide while ducked.
*A pair of hammer brothers don't interact well (will stand on other, will ride others hammer, will glitch and fall through floor).
*Light bridge & lasers (possibly other entites) after maze will apear in first repeat of maze and then not after maze.
*Fireball marios hat will jump if fireball shot while ducking.
*Custom tile set '?' box will revert to defualt '?' box.
- teryakisan
- Posts: 53
- Joined: 08 Mar 2012, 06:16
- Contact:
This. So, so much this.TheCakeIsALie wrote: Allow whatever joystick controls are set for up,down,left,right to be usable in navigating the menu.
might want to put something that says "only for multiplayer" so people stop whining. or make them available in single player, but that is up to you.Maurice wrote:Because I want orange and blue as standard portals but that would be confusing in multiplayer since they're completely different colors.
I was actually enjoying the gel thing not showing up because I could make it look like it was coming out of a pipe, but whatev
-
- Posts: 2
- Joined: 06 Mar 2012, 16:39
An idea. What about a separate volume slider for music and sfx? Sometimes I want to listen to some sweet, sweet chiptunes while playing
- Raicuparta
- Posts: 539
- Joined: 04 Feb 2012, 02:07
- Contact:
This is probably my currently shitty connection, but I have problems getting all the DLC, stuck on downloading 4 of 5.
But if the DLC list is going to keep growing, shouldn't we have the option so download only the packs we choose? I know they are small packages, but shitty connections hate to download all those tiny files.
EDIT: it finally downloaded, so I guess it was connection problems on my behalf.
But if the DLC list is going to keep growing, shouldn't we have the option so download only the packs we choose? I know they are small packages, but shitty connections hate to download all those tiny files.
EDIT: it finally downloaded, so I guess it was connection problems on my behalf.
v1.5 with appdata cleared fresh, after selecting the "new mappack" option then going to the level editor.
Error
editor.lua:1213: bad argument #1 to 'sqrt' (number expected, got nil)