Mari0: Community Edition

Mods, guides how to use and install mods go right in here.
User avatar
I LÖVE LUA
Posts: 222
Joined: 12 Aug 2013, 13:19

Post » 18 Jun 2017, 02:25

Something that bothers me is that, when I'm on my laptop, I cant type numbers into inputs, so I went and made them use "textinput" instead of "keypressed". The list of the changes done to accomplish this is down below.
  • In main.lua:

    Code: Select all

    function love.textinput(text)
    	if _G[gamestate .. "_textinput"] and type(_G[gamestate .. "_textinput"]) == "function" then
    		local success, err = pcall(function() _G[gamestate .. "_textinput"](text) end) -- I don't wanna cause a crash
    		if not success then print(err) end
    	end
    
    	if guielements then
    		for _, v in pairs(guielements) do
    			v:textinput(text)
    		end
    	end
    end
  • In gui.lua (Note: you need to replace keypress to avoid weird double input):

    Code: Select all

    function guielement:textinput(text)
    	if self.type == "input" and self.inputting then
    		local ok = true
    		for i = 1, string.len(text) do
    			if not fontquads[text:sub(i, i)] then
    				ok = false
    			end
    		end
    		if not ok then return end -- Can you believe this is taken from Minecraft?
    		self.value = self.value .. text
    		self.cursorpos = self.cursorpos + string.len(text)
    	end
    end
    
    function guielement:keypress(key)
    	if self.active then
    		if self.type == "input" then
    			if self.inputting then
    				--[[if key == "-" or key == "," or key == ":" or key == ";" then
    					return
    				end]]
    				if key == "escape" then
    					self.inputting = false
    				elseif (key == "return" or key == "enter" or key == "kpenter") then
    					if self.func then
    						self:func()
    					else
    						self.inputting = false
    					end
    				elseif key == "backspace" then
    					self.value = string.sub(self.value, 1, string.len(self.value)-1)
    					if self.cursorpos > 1 and self.cursorpos > string.len(self.value)+1 then
    						self.cursorpos = self.cursorpos - 1
    					end
    					if self.offset > 0 and self.offset > string.len(self.value)-self.width+1 then
    						self.offset = self.offset - 1
    					end
    				--[[else
    					if string.len(self.value) < self.maxlength or self.maxlength == 0 then
    						local found = false
    						for i = 1, string.len(fontglyphs) do
    							if key == string.sub(fontglyphs, i, i) then
    								found = true
    								break
    							end
    						end
    						
    						if found and (not self.numerical or tonumber(key) or key == "." or key == ",") then
    							if key == "," then
    								key = "."
    							end
    							
    							self.value = self.value .. key
    							if self.cursorpos ~= self.maxlength then
    								self.cursorpos = self.cursorpos + 1
    							end
    							if self.cursorpos > self.offset+self.width then
    								self.offset = self.offset + 1
    							end
    						end
    					end]]
    				end
    				
    				return true
    			end
    		end
    	end
    end
  • In game.lua:

    Code: Select all

    function game_textinput(text)
    	if editormode and not testlevel then
    		editor_textinput(text)
    	end
    end
  • In editor.lua:

    Code: Select all

    function editor_textinput(text)
    	if rightclickm then
    		rightclickm:textinput(text)
    	end
    
    	if animationguilines then
    		for i, v in pairs(animationguilines) do
    			for k, w in pairs(v) do
    				w:textinput(text)
    			end
    		end
    	end
    end
  • In rightclickmenu.lua:

    Code: Select all

    function rightclickmenu:textinput(text)
    	for i = 1, #self.t do
    		if self.t[i].type then
    			if self.t[i]:textinput(text) then
    				return
    			end
    		end
    	end
    end
  • And finally, in animationguiline.lua:

    Code: Select all

    function animationguiline:textinput(text)
    	for i = 1, #self.elements do
    		if self.elements[i].gui then
    			self.elements[i].gui:textinput(text)
    		end
    	end
    end
I wanna point out that it is also implemented in my mod, but I figured it could be considered as a "bugfix".

Also, good luck Hugo with the contest (as I'm in too ;p).

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 18 Jun 2017, 03:37

Thanks a lot, dude! I was planning on implementing that at some point (I kept trying to type numbers using the keypad and it was frustrating me), so this came in handy at the right time! Implemented it already :)

And good luck with the contest too ;)

User avatar
I LÖVE LUA
Posts: 222
Joined: 12 Aug 2013, 13:19

Post » 29 Jun 2017, 13:28

Just came across something weird in the editor (i did not move my mouse):


It also crashes when copying while the copy cursor (the green-ish square) is outside of the screen:
editor.lua:3719: attempt to index a nil value

Traceback

main.lua:126: in function '__index'
editor.lua:3719: in function 'getTiles'
editor.lua:3288: in function 'editor_keypressed'
editor.lua:4036: in function 'game_keypressed'
main.lua:1680: in function <main.lua:1619>
main.lua:80: in function <main.lua:26>
[C]: in funciton 'xpcall'

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 29 Jun 2017, 16:12

Yeah, I noticed these problems recently as well. I'm inclined to say it came with the port to SE, so I'll try to fix that if possible. Thanks!

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 01 Jul 2017, 19:05

Alright, I fixed the scrolling issues with Better Editor. But I have no idea why the error you reported happens, since I can't reproduce it myself. What exactly do you mean by "outside of the screen"?

Try reproducing it again, if you can, and if it still happens, please let me know how you make it happen, so I can understand it better. Thanks :)

User avatar
I LÖVE LUA
Posts: 222
Joined: 12 Aug 2013, 13:19

Post » 01 Jul 2017, 19:07

I mean you scroll so much to the right you don't see the selection cursor when pressing control.

Edit 1: cool, it's fixed too. I was suspecting it a bit, but it looks those two errors were linked.

Edit 2: But there is another thing...
Image
Now (if it wasn't before) it's the replace_all that's not scrolling correctly.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 01 Jul 2017, 19:35

It was an oversight from my end, should be patched now. Thanks again!

User avatar
Technochips
Posts: 608
Joined: 12 Mar 2015, 16:05
Contact:

Post » 29 Jul 2017, 17:19

On the latest version of Love2D, the game crashes when you try to change the controls. Apparently it's because it's using some functions for the joystick that was removed in 0.9.0. So I fixed this by copypasting this.

RealGabdhhf
Posts: 60
Joined: 16 Jul 2017, 21:45

Post » 29 Jul 2017, 18:34

No local multiplayer bug fixes?

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 29 Jul 2017, 22:01

Thanks, Technochips! Updated it to include your fixes :)

User avatar
HansAgain
Posts: 1111
Joined: 03 Feb 2012, 18:51
Contact:

Post » 02 Aug 2017, 00:21

Everytime i click the button to select tiles in the entity menu the game crashes.
Image

EDIT: I happens when i do the same with the trigger area entity.

User avatar
I LÖVE LUA
Posts: 222
Joined: 12 Aug 2013, 13:19

Post » 02 Aug 2017, 06:15

Replace editor.lua in the bugfix with this one. For some reason, startregion was commented out (maybe Hugo knows why).

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 02 Aug 2017, 12:22

Oops, probably my fault from when I was trying to fix the editor. Sorry about that, should be fixed now. Thanks, I LÖVE LUA :)

User avatar
Sky
Posts: 1283
Joined: 08 Mar 2012, 04:35
Contact:

Post » 27 Sep 2017, 00:39

Bug report: when a level is finished in a sublevel, the next level loads into a sublevel instead of main, making it impossible to complete most mappacks. This may have something to do with the way the "load level" animation was fixed. Would post a fix for this but I can't pinpoint the exact place it occurs.

EDIT: Fixed by adding a new "reason" to the levelscreen logic. Thanks to Turret for helping me look at it.
In animation.lua starting at line 332:

Code: Select all

elseif v[1] == "loadlevel" then
	love.audio.stop()
	
	marioworld = tonumber(v[2]) or marioworld
	mariolevel = tonumber(v[3]) or mariolevel
	mariosublevel = tonumber(v[4]) or mariosublevel
	levelscreen_load("anim")
In levelscreen.lua starting at line 21:

Code: Select all

if reason == "next" or reason == "anim" then --next level
	checkpointsub = false
	checkpointx = {}
	checkpointy = {}
	respawnsublevel = 0
	if reason == "anim" then
		respawnsublevel = mariosublevel or 0
	end
EDIT 2: actually there's a much simpler way than the above
In game.lua after line 4726:

Code: Select all

mariosublevel = 0
Last edited by Sky on 17 Nov 2017, 07:51, edited 1 time in total.

User avatar
TurretBot
Posts: 4412
Joined: 15 Mar 2012, 23:18
Contact:

Post » 28 Sep 2017, 00:25

4 possible fixes for the Lakito End entity.
Add one of these to enemy.lua at line 256:

Code: Select all

	if lakitoend and self.t == "lakito" then
		self.speedx = -3
		return false
	end

Code: Select all

	if lakitoend and self.movement == "follow" then
		self.speedx = -3
		return false
	end

Code: Select all

	if lakitoend and self.lakitoend then
		self.speedx = self.lakitoend or -3
		return false
	end

Code: Select all

	if lakitoend and (self.lakitoend or self.t == "lakito") then
		self.speedx = self.lakitoend or -3
		return false
	end
There's 4 because it depends on how you interpret the purpose of Lakito End. I actually put a strawpoll on the STYS Discord (invite) for which way people wanted me to fix it, however it turned out to be an extremely simple fix, so I just did them all. As for which fix is added, I'll leave that up to Hugo, but here's the poll if you want to vote.

User avatar
Superjustinbros
Posts: 2119
Joined: 29 Mar 2012, 20:39
Contact:

Post » 06 Dec 2017, 18:29

Two small things I'd like to bring up after running into them while making a mappack.

*When you place down coin tiles, they cannot be deleted and will always overlap with whatever tile you place over them. Neither the tile nor entity erasers work. Sure you can delete them by placing coins over the coin tile, but I'd find it more convent if the eraser also erased tiles.

*When assigning pipe exits and entrances, you cannot type in the box that pops up, only backspace.

Lastly, I don't think this is supposed to happen...
Image

EDIT: Terribly sorry for continuing to add onto this, but the mod needs to have "DS_Store" files blacklisted when loading files.
Image

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 08 Dec 2017, 01:11

Alright, updated after 75 long years. Includes WillWare's fix, as well as Turret's. I blacklisted .DS_STORE (needs testing), but I could not reproduce the other two bugs. I suppose we'll need to investigate these ones together

User avatar
Superjustinbros
Posts: 2119
Joined: 29 Mar 2012, 20:39
Contact:

Post » 08 Dec 2017, 01:28

HugoBDesigner wrote:Alright, updated after 75 long years. Includes WillWare's fix, as well as Turret's. I blacklisted .DS_STORE (needs testing), but I could not reproduce the other two bugs. I suppose we'll need to investigate these ones together
After testing, I can conform that my two issues (the entities shaking and not being able to enter warp destinations) are indeed Mac-exclusive.

User avatar
Sky
Posts: 1283
Joined: 08 Mar 2012, 04:35
Contact:

Post » 08 Dec 2017, 07:41

I think startregion() is commented out again in the new update, it keeps crashing when I try to use region triggers.

User avatar
Superjustinbros
Posts: 2119
Joined: 29 Mar 2012, 20:39
Contact:

Post » 08 Dec 2017, 20:38

Looking at the fix more closely, I think you'll want to add ".DS_S.png" to the blacklist.
https://i.imgur.com/vkRx8qY.png

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 09 Dec 2017, 01:51

Sorry, seems like I copied the wrong version of editor.lua. startregion bug has been fixed. Same for DS_S (hopefully)

User avatar
Superjustinbros
Posts: 2119
Joined: 29 Mar 2012, 20:39
Contact:

Post » 20 Dec 2017, 07:42

Alright, I think i found a trigger for this bug.
Image
It has something to do with trying to leave the editor after placing enemies, at least from what I was doing. However I can't seem to recreate how I triggered the error screen to appear.

I also caused this small movement glitch with the vine.
Image

User avatar
Technochips
Posts: 608
Joined: 12 Mar 2015, 16:05
Contact:

Post » 07 Jan 2018, 23:24

I feel like this should be on GitHub, patch management would be better than just sending files via google drive or dropbox.

User avatar
Mari0_Player
Posts: 224
Joined: 23 Sep 2013, 00:48

Post » 02 Feb 2018, 03:11

Image
It doesn't like my Logitech Dual Action :(

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 21 Mar 2018, 15:33

Can I contribute to this?

I made some changes to the entity.lua file that changes a few things for additional convenience. Not a bugfix, but Alesan99's enemy.lua changes got in, so why not?

It changes most of the scrollbar menus to text inputs, which lets you get the exact value you want easier, or add values that weren't possible in the original editor(except the faith plate, replacing the scrollbars with text inputs breaks them so i didn't change those)

Also, it changes item descriptions to be a bit more accurate/in-depth.

Code: Select all

entity = class("entity")

entitylist = {	
	{t="remove", category="misc", description="place anywhere - acts as an entity eraser", iconauthor="Assasin-Kiashi"},
	{t="powerup", category="smb stuff", description="place on block - will give a mushroom, if you already have one, it gives a flower", iconauthor=""},
	{t="cheepcheep", category="smb stuff", description="place on empty tile - red or white cheep cheep, chosen at random", iconauthor="alesan99"},
	{t="musicentity", category="misc", description="place anywhere - plays specified music track when given input", iconauthor="idiot9.0"},
	{t="manycoins", category="smb stuff", description="place on a ? or brick block - gives many coins", iconauthor="TheCanadianToast"},
	{t="enemyspawner", category="misc", description="place on empty tile - will spawn specified enemy on input", iconauthor=""},
	{t="animatedtiletrigger", category="i/o objects", description="place anywhere - will animate tiles with the trigger attribute", iconauthor=""},
	{t="spawn", category="level markers", description="place on empty tile - mario's starting point", iconauthor="TripleXero"},
	{t="delayer", category="gates", description="place anywhere - delayer, will delay an input", output=true, iconauthor=""},
	{t="rsflipflop", category="gates", description="place anywhere - rs flip-flop, can be toggled on and off", output=true, iconauthor=""},
	{t="flag", category="level markers", description="place on block - bottom of the flag, end of level", iconauthor="TripleXero"},
	{t=""},
	{t=""},
	{t="vine", category="smb stuff", description="place on ? or brick block - vine - right click to choose destination", iconauthor="Superjustinbros"},
	{t="vinestop", category="smb stuff", description="place anywhere - will stop a vine's growth at this point", iconauthor="alesan99"},
	{t=""},
	{t=""},
	{t="platform", category="smb stuff", description="place on empty tile - oscillating platform", iconauthor="Assasin-Kiashi"},
	{t="regiontrigger", category="i/o objects", description="place anywhere - will output when there's a player or enemy in a region", output=true, iconauthor="alesan99"},
	{t="box", category="portal elements", description="place on empty tile - weighted storage cube, can be picked up or weigh down buttons", output=true, iconauthor="alesan99"},
	{t="pipe", category="level markers", description="place on block - pipe - right click for destination sublevel", iconauthor="automatik"},
	{t=""},
	{t="mazestart", category="level markers", description="place anywhere - logical maze start", hidden=not DEBUG, iconauthor=""},
	{t="mazeend", category="level markers", description="place anywhere - logical maze end", hidden=not DEBUG, iconauthor=""},
	{t="mazegate", category="level markers", description="place on empty tile - maze gate", hidden=not DEBUG, iconauthor=""},
	{t="emance", category="portal elements", description="place on empty tile - emancipation grill, stops portals and objects other than mario", iconauthor="Assasin-Kiashi"},
	{t="scaffold", category="portal elements", description="place on empty tile - platform with an input", iconauthor=""},
	{t="door", category="portal elements", description="place on empty tile - will open or close when given input", iconauthor="idiot9.0"},
	{t="pedestal", category="portal elements", description="place on empty tile - portal gun ready for pickup, rightclick to change available portals", iconauthor=""},
	{t="wallindicator", category="i/o objects", description="place anywhere - shows on or off state", iconauthor=""},
	{t="pipespawn", category="level markers", description="place on block - spawn for when coming from a sublevel", iconauthor="TripleXero"},
	{t="platformfall", category="smb stuff", description="place on empty tile - falling platforms", iconauthor=""},
	{t="bulletbillstart", category="level markers", description="place anywhere - beginning of bullet zone", iconauthor="Jackostar10000"},
	{t="bulletbillend", category="level markers", description="place anywhere - end of bullet zone", iconauthor="Jackostar10000"},
	{t="drain", category="level markers", description="place at the very bottom of a level - drain, attracts mario down", iconauthor="Bobfan"},
	{t="lightbridge", category="portal elements", description="place on empty tile - light bridge, can be projected through portals", iconauthor="ChrisGin"},
	{t="portal1", category="misc", description="place on portalable block - create a blue portal on input", iconauthor="Firaga"},
	{t="portal2", category="misc", description="place on portalable block - create a orange portal on input", iconauthor="Firaga"},
	{t="actionblock", category="i/o objects", description="place on empty tile - will create a ? block style toggle button", output=true, iconauthor=""},
	{t="button", category="portal elements", description="place on empty tile - floor button, can be weighed down by cubes, enemies or mario", output=true, iconauthor=""},
	{t="platformspawner", category="smb stuff", description="place on empty tile - platform spawner", iconauthor=""},
	{t="animationtrigger", category="i/o objects", description="place anywhere - will start an animation when getting an input signal", iconauthor=""},
	{t="groundlightver", category="portal elements", description="place anywhere - use to show on/off state", iconauthor="idiot9.0"},
	{t="groundlighthor", category="portal elements", description="place anywhere - use to show on/off state", iconauthor="idiot9.0"},
	{t="groundlightupright", category="portal elements", description="place anywhere - use to show on/off state", iconauthor="idiot9.0"},
	{t="groundlightrightdown", category="portal elements", description="place anywhere - use to show on/off state", iconauthor="idiot9.0"},
	{t="groundlightdownleft", category="portal elements", description="place anywhere - use to show on/off state", iconauthor="idiot9.0"},
	{t="groundlightleftup", category="portal elements", description="place anywhere - use to show on/off state", iconauthor="idiot9.0"},
	{t="faithplate", category="portal elements", description="place on ground - flings things along a set trajectory, rightclick to modify", iconauthor="idiot9.0"},
	{t=""},
	{t=""},
	{t="laser", category="portal elements", description="place on empty tile - laser, kills things and goes through portals", iconauthor="Pixelworker"},
	{t=""},
	{t=""},
	{t=""},
	{t="laserdetector", category="portal elements", description="place on tile - will create input if laser is detected", output=true, iconauthor="QwertymanO07"},
	{t=""},
	{t=""},
	{t=""},
	{t="bulletbill", category="smb stuff", description="place on bulletbill launchers - will make the launcher actually launch bulletbills", iconauthor="Mari0Maker"},
	{t="geldispenser", category="portal elements", description="place on empty tile - will dispense gel, rightclick to change gel", iconauthor=""},
	{t=""},
	{t=""},
	{t=""},
	{t=""},
	{t=""},
	{t="boxtube", category="portal elements", description="place on empty tile - will drop a cube or enemy and fizzle previous one, rightclick to modify", iconauthor="Mari0Maker"},
	{t="pushbutton", category="portal elements", description="place on empty tile - will send a toggle signal when used", output=true, iconauthor=""},
	{t=""},
	{t=""},
	{t=""},
	{t=""},
	{t=""},
	{t="walltimer", category="i/o objects", description="place anywhere - will send on signal for a duration", output=true, iconauthor=""},
	{t=""},
	{t=""},
	{t=""},
	{t=""},
	{t="castlefire", category="smb stuff", description="place anywhere - rotating firebar", iconauthor="Assasin-Kiashi"},
	{t="seesaw", category="smb stuff", description="place on empty tile - see-saw", iconauthor="Firaga"},
	{t="warppipe", category="level markers", description="place on block - warp pipe, rightclick for destination level and world", iconauthor="BobTheLawyer"},
	{t="squarewave", category="gates", description="place anywhere - squarewave, sends on signal for x seconds and off signal for y seconds", output=true, iconauthor="crazyal02"},
	{t="lakitoend", category="level markers", description="place anywhere - defines a right border for lakito", iconauthor=""},
	{t="notgate", category="gates", description="place anywhere - not gate, inverts inputs", output=true, iconauthor="Pixelworker"},
	{t="gel", category="portal elements", description="place on tile - creates gel on this block, rightclick to change gel and side to apply", iconauthor="MissingWorld"},
	{t="orgate", category="gates", description="place anywhere - or gate, requires any inputs to be active", output=true, iconauthor=""},
	{t="andgate", category="gates", description="place anywhere - and gate, requires all inputs to be active", output=true, iconauthor="Turtle95"},
	{t=""},
	{t="firestart", category="level markers", description="place anywhere - fire start - bowser fire projectiles will regularly cross the screen", iconauthor=""},
	{t="bowser", category="level markers", description="place on empty tile preferably on the first block on a bridge with an axe - bowser", iconauthor="renhoek"},
	{t="axe", category="level markers", description="place on empty tile preferably behind a bridge - axe, end of level", iconauthor="alesan99"},
	{t="platformbonus", category="smb stuff", description="place on empty tile - platform, moves to the right", iconauthor=""},
	{t="spring", category="smb stuff", description="place on empty tile - spring, jump on it to bounce, hold to bounce higher", iconauthor="Firaga"},
	{t=""},
	{t="flyingfishstart", category="level markers", description="place anywhere - defines the start of a flying cheep cheep zone", iconauthor=""},
	{t="flyingfishend", category="level markers", description="place anywhere - defines the end of a flying cheep cheep zone", iconauthor=""},
	{t=""},
	{t=""},
	{t=""},
	{t="checkpoint", category="level markers", description="place on empty tile - checkpoint - mario will spawn there if he dies after reaching it", iconauthor="TripleXero"},
	{t="ceilblocker", category="level markers", description="place an	ywhere - makes it impossible to jump over the top row of blocks", iconauthor="alesan99"},
	{t=""},
	{t=""},
	{t=""},
	{t="funnel", category="portal elements", description="place on empty tile - excursion funnel, transports objects and goes through portals", iconauthor=""},
	{t=""},
	{t=""},
	{t=""},
	{t="panel", category="portal elements", description="place on block - will probably be removed anyway. todo!", iconauthor=""},
	{t="textentity", category="i/o objects", description="place anywhere - creates a text in the level, supports input", iconauthor=""},
}

outputs = {}
outputsi = {}
for i = 1, #entitylist do
	if entitylist[i].output then
		table.insert(outputs, entitylist[i].t)
		table.insert(outputsi, i)
	end
end

tooltipimages = {}

for i = 1, #entitylist do
	local path = "graphics/entitytooltips/" .. entitylist[i].t .. ".png"
	if love.filesystem.isFile(path) then
		tooltipimages[i] = love.graphics.newImage(path)
	end
end

rightclickmenues = {}

rightclickmenues.seesaw = {
	{t="text", value="distance:"},
	{t="input", min=2, max=10, step=1, default=7},
	{t="text", value="left height:"},
	{t="input", min=1, max=10, step=1, default=4},
	{t="text", value="right height:"},
	{t="input", min=1, max=10, step=1, default=6},
	{t="text", value="platf. width:"},
	{t="input", min=1, max=10, step=0.5, default=3},
}

rightclickmenues.spawn = {
	{t="text", value="for players:"},
	{t="checkbox", text="all", default="true"},
	{t="checkbox", text="1", default="false"},
	{t="checkbox", text="2", default="false"},
	{t="checkbox", text="3", default="false"},
	{t="checkbox", text="4", default="false"}
}

rightclickmenues.castlefire = {
	{t="text", value="length:"},
	{t="input", min=1, max=16, step=1, default=6},
	{t="text", value="delay:"},
	{t="input", min=0.03, max=1, step=0.01, default=0.11},
	{},
	{t="checkbox", text="counter-cw", default="false"}
}

rightclickmenues.walltimer = {
	{t="text", value="time:"},
	{t="input", min=1, max=10, step=0.01, default=1},
	{},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.delayer = {
	{t="checkbox", text="visible", default="true"},
	{},
	{t="text", value="delay:"},
	{t="input", min=0.01, max=10, step=0.01, default=1},
	{},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.wallindicator = {
	{t="checkbox", text="reversed", default="false"},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.notgate = {
	{t="checkbox", text="visible", default="true"},
	{},
	{t="linkbutton", value="link in", link="in"}
}

rightclickmenues.rsflipflop = {
	{t="checkbox", text="visible", default="true"},
	{},
	{t="linkbutton", value="link set", link="set"},
	{t="linkbutton", value="link reset", link="reset"}
}

rightclickmenues.orgate = {
	{t="checkbox", text="visible", default="true"},
	{},
	{t="linkbutton", value="link in 1", link="1"},
	{t="linkbutton", value="link in 2", link="2"},
	{t="linkbutton", value="link in 3", link="3"},
	{t="linkbutton", value="link in 4", link="4"}
}

rightclickmenues.andgate = {
	{t="checkbox", text="visible", default="true"},
	{},
	{t="linkbutton", value="link in 1", link="1"},
	{t="linkbutton", value="link in 2", link="2"},
	{t="linkbutton", value="link in 3", link="3"},
	{t="linkbutton", value="link in 4", link="4"}
}

rightclickmenues.musicentity = {
	{t="checkbox", text="visible", default="true"},
	{t="checkbox", text="single use", default="true"},
	{},
	{t="submenu", entries=function() local t = {} for i, v in pairs(musiclist) do table.insert(t, v) end return t end, actualvalue=true, default=1, width=15},
	{},
	{t="linkbutton", value="link trigger", link="trigger"}
}

rightclickmenues.enemyspawner = {
	{t="submenu", entries=function() return {unpack(enemies)} end, actualvalue=true, default=1, width=15},
	{},
	{t="text", value="velocity x:"},
	{t="input", min=-50, max=50, default=0},
	{t="text", value="velocity y:"},
	{t="input", min=-50, max=50, default=0},
	{},
	{t="linkbutton", value="link trigger", link="trigger"}
}

rightclickmenues.boxtube = {
	{t="text", value="on load:"},
	{t="checkbox", text="drop box", default="true"},
	{},
	{t="checkbox", text="respawn obj", default="true"},
	{t="text", value="if destroyed"},
	{},
	{t="text", value="object:"},
	{t="submenu", entries=function() return {"box", unpack(enemies)} end, actualvalue=true, default=1, width=15},
	{},
	{t="linkbutton", value="link drop", link="drop"}
}

rightclickmenues.laserdetector = {
	{t="text", value="direction:"},
	{t="directionbuttons", left=true, right=true, up=true, down=true, default="right"}
}

rightclickmenues.pushbutton = {
	{t="text", value="direction:"},
	{t="directionbuttons", left=true, right=true, default="left"},
	{},
	{t="text", value="base:"},
	{t="directionbuttons", left=true, right=true, up=true, down=true, default="down"}
}

rightclickmenues.platformfall = {
	{t="text", value="width:"},
	{t="input", min=1, max=10, step=0.5, default=3}
}

rightclickmenues.pipe = {
	{t="text", value="destination:"},
	{t="submenu", entries={"main", "sub-1", "sub-2", "sub-3", "sub-4", "sub-5"}, default=1, width=5},
}

rightclickmenues.vine = {
	{t="text", value="destination:"},
	{t="submenu", entries={"main", "sub-1", "sub-2", "sub-3", "sub-4", "sub-5"}, default=1, width=5},
}

rightclickmenues.mazegate = {
	{t="text", value="gatenumber:"},
	{t="submenu", entries={"main", "gate 1", "gate 2", "gate 3", "gate 4", "gate 5"}, default=1, width=6},
}

rightclickmenues.pipespawn = {
	{t="text", value="source:"},
	{t="submenu", entries={"main", "sub-1", "sub-2", "sub-3", "sub-4", "sub-5"}, default=1, width=5},
}

rightclickmenues.warppipe = {
	{t="text", value="world:"},
	{t="submenu", entries={"1", "2", "3", "4", "5", "6", "7", "8"}, default=1, width=1},
	{t="text", value="level:"},
	{t="submenu", entries={"1", "2", "3", "4", "5", "6", "7", "8"}, default=1, width=1},
}

rightclickmenues.funnel = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", left=true, up=true, right=true, down=true, default="right"}, 
	{}, 
	{t="text", value="speed:"}, 
	{t="input", min=funnelminspeed, max=funnelmaxspeed, step=0.01, default=3}, 
	{}, 
	{t="checkbox", text="reverse", default="false"}, 
	{t="checkbox", text="default off", default="false"}, 
	{},
	{t="linkbutton", value="link reverse", link="reverse"},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.emance = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", hor=true, ver=true, default="ver"}, 
	{}, 
	{t="checkbox", text="default off", default="false"}, 
	{}, 
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.laser = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", left=true, up=true, right=true, down=true, default="right"}, 
	{}, 
	{t="checkbox", text="default off", default="false"}, 
	{}, 
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.lightbridge = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", left=true, up=true, right=true, down=true, default="right"}, 
	{}, 
	{t="checkbox", text="default off", default="false"}, 
	{}, 
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.platformspawner = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", up=true, down=true, default="up"}, 
	{}, 
	{t="text", value="width:"},
	{t="input", min=1, max=10, step=0.5, default=3},
	{t="text", value="speed:"},
	{t="input", min=0.5, max=10, step=0.01, default=3.5},
	{t="text", value="delay:"},
	{t="input", min=1, max=10, step=0.01, default=2.18}
}

rightclickmenues.platform = {
	{t="text", value="width:"},
	{t="input", min=1, max=10, step=0.5, default=3},
	{t="text", value="distance x:"},
	{t="input", min=-15, max=15, step=0.5, default=3.3125},
	{t="text", value="distance y:"},
	{t="input", min=-15, max=15, step=0.5, default=0},
	{t="text", value="duration:"},
	{t="input", min=1, max=10, step=0.01, default=4}
}

rightclickmenues.scaffold = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", down=true, left=true, right=true, up=true, default="right"},
	{t="checkbox", text="default off", default="false"}, 
	{t="text", value="width:"},
	{t="input", min=0.5, max=15, step=0.5, default=3},
	{t="text", value="distance:"},
	{t="input", min=0.5, max=15, step=0.01, default=3},
	{t="text", value="speed:"},
	{t="input", min=0.5, max=10, step=0.01, default=5.5},
	{t="text", value="wait start:"},
	{t="input", min=0, max=10, step=0.01, default=0.5},
	{t="text", value="wait end:"},
	{t="input", min=0, max=10, step=0.01, default=0.5},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.faithplate = {
	{t="text", value="velocity x:"},
	{t="scrollbar", min=-50, max=50, step=0.01, default=30},
	{t="text", value="velocity y:"},
	{t="scrollbar", min=5, max=50, step=0.01, default=30},
	{},
	{t="checkbox", text="default off", default="false"},
	{},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.door = {
	{t="text", value="direction:"},
	{t="directionbuttons", hor=true, ver=true, default="ver"},
	{},
	{t="checkbox", text="start open", default="false"},
	{t="checkbox", text="force close", default="false"},
	{},
	{t="linkbutton", value="link open", link="open"}
}

rightclickmenues.gel = {
	{t="text", value="type:"},
	{t="submenu", entries={"blue", "orange", "white", "purple"}, default=1, width=6},
	{},
	{t="text", value="direction:"}, 
	{t="checkbox", text="left", default="false"},
	{t="checkbox", text="top", default="true"},
	{t="checkbox", text="right", default="false"},
	{t="checkbox", text="bottom", default="false"}
}

rightclickmenues.geldispenser = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", left=true, right=true, down=true, up=true, default="down"}, 
	{},
	{t="text", value="type:"},
	{t="submenu", entries={"blue", "orange", "white", "purple"}, default=1, width=6},
	{},
	{t="checkbox", text="default off", default="false"},
	{},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.panel = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", left=true, up=true, right=true, down=true, default="right"}, 
	{}, 
	{t="checkbox", text="start white", default="false"}, 
	{}, 
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.button = {
	{t="text", value="direction:"},
	{t="directionbuttons", left=true, right=true, up=true, down=true, default="down"}
}

rightclickmenues.textentity = {
	{t="input", default="text", max=50},
	{},
	{t="checkbox", text="default off", default="false"},
	{},
	{t="text", value="red:"},
	{t="scrollbar", min=0, max=255, step=1, default=255},
	{t="text", value="green:"},
	{t="scrollbar", min=0, max=255, step=1, default=255},
	{t="text", value="blue:"},
	{t="scrollbar", min=0, max=255, step=1, default=255},
	{},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.squarewave = {
	{t="text", value="off time"},
	{t="input", min=0.01, max=10, step=0.01, default=2},
	{t="text", value="on time"},
	{t="input", min=0.01, max=10, step=0.01, default=2},
	{},
	{t="text", value="wave offset"},
	{t="input", min=0, max=1, step=0.01, default=0},
	{},
	{t="checkbox", text="visible", default="true"}
}

rightclickmenues.regiontrigger = {
	{t="text", value="trigger on:"},
	{t="checkbox", text="players", default="true"},
	{t="checkbox", text="enemies", default="true"},
	{},
	{t="regionselect", value="select region", region="region", default="region:0:0:1:1"}
}

rightclickmenues.animationtrigger = {
	{t="text", value="animation id"},
	{t="input", default="myanim", max=12},
	{},
	{t="linkbutton", value="link in", link="in"}
}

rightclickmenues.animatedtiletrigger = {
	{t="checkbox", text="visible", default="true"},
	{},
	{t="regionselect", value="select tiles", region="region", default="region:0:0:1:1"},
	{},
	{t="linkbutton", value="link trigger", link="trigger"}
}

rightclickmenues.checkpoint = {
	{t="text", value="for players:"},
	{t="checkbox", text="all", default="true"},
	{t="checkbox", text="1", default="false"},
	{t="checkbox", text="2", default="false"},
	{t="checkbox", text="3", default="false"},
	{t="checkbox", text="4", default="false"},
	{t="checkbox", text="the rest", default="false"},
	{},
	{t="checkbox", text="visible", default="false"},
	{},
	{t="regionselect", value="select region", region="region", default="region:0:0:1:1"},
	{},
	{t="linkbutton", value="link trigger", link="trigger"}
}

rightclickmenues.portal1 = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", left=true, right=true, down=true, up=true, default="up"}, 
	{},
	{t="text", value="portal id:"},
	{t="submenu", entries={"1", "2", "3", "4", "5", "6", "7", "8"}, default=1, width=1},
	{},
	{t="checkbox", text="default on", default="false"},
	{},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.portal2 = {
	{t="text", value="direction:"}, 
	{t="directionbuttons", left=true, right=true, down=true, up=true, default="up"}, 
	{},
	{t="text", value="portal id:"},
	{t="submenu", entries={"1", "2", "3", "4", "5", "6", "7", "8"}, default=1, width=1},
	{},
	{t="checkbox", text="default on", default="false"},
	{},
	{t="linkbutton", value="link power", link="power"}
}

rightclickmenues.pedestal = {
	{t="text", value="portal:"},
	{t="checkbox", text="blue", default="true"},
	{t="checkbox", text="orange", default="true"}
}

groundlighttable = {"groundlightver", "groundlighthor", "groundlightupright", "groundlightrightdown", "groundlightdownleft", "groundlightleftup"}

for i = 1, #groundlighttable do
	rightclickmenues[groundlighttable[i]] = {
		{t="checkbox", text="default on", default="false"},
		{},
		{t="linkbutton", value="link power", link="power"}
	}
end

function entity:init(img, x, y, width, height)
	self.image = img
	self.quad = love.graphics.newQuad((x-1)*17, (y-1)*17, 16, 16, width, height)	
end

function entity:sett(i)
	for j = 1, #entitylist do
		if i == j then
			self.t = entitylist[j].t
		end
	end
end

User avatar
Qwerbey
Posts: 1280
Joined: 05 Oct 2012, 07:58
Contact:

Post » 21 Mar 2018, 21:24

Unfortunately it doesn't cover the main editor menu or the animations menu, which is actually why I haven't uploaded this mod myself.

If you want faithplates to work, you need to edit editor.lua, and overwrite the current text of line 1196 with this code, just under --faithplate paths:

Code: Select all

if rightclickm ~= nil then
				if rightclickm.t[4] ~= nil then
					if tonumber(rightclickm.t[2].value) and tonumber(rightclickm.t[4].value) then
						faithplatepathsafe = true
					else
						faithplatepathsafe = false
					end
				end
			end
			
			if entitylist[map[tx][ty][2]].t == "faithplate" and faithplatepathsafe then
This probably isn't the best way to do it, but it works. It also can't correctly display paths for negative numbers, but maybe you can fix that.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 23 Mar 2018, 01:16

Haven't tested yet, but does this completely overwrite the sliders? Personally, I'd prefer them both to act together, if possible. I'll see what I can do on that front

User avatar
MagicPillow
Posts: 1108
Joined: 20 Jul 2013, 04:59
Contact:

Post » 23 Mar 2018, 05:39

quick somebody add an option to toggle sliders

User avatar
Qwerbey
Posts: 1280
Joined: 05 Oct 2012, 07:58
Contact:

Post » 21 Apr 2018, 07:56

I know it's not really a bug, but here's how to add erase gel. It basically just gives gel id 0 blobs a graphic:
  1. main.lua, line 533. Add "gel0" to the imagelist table.
  2. gel.lua, line 37. Add elseif self.id == 0 then self.graphic = gel0img to the big elseif chain
  3. Add an actual gel0.png to graphics/DEFAULT. I used this: Image Looks like crap, but it works.
Of course, unless you edit entity.lua, you'll have no way of actually adding it to maps, but that's not my concern. Also, it still technically works in vanilla, it's just invisible.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 21 Apr 2018, 21:28

Alright guys, decided that it's not fair that new bugfixes from you should wait for my lazy ass, so I moved SE Bugfixes to GitHub!
If you wanna contribute, you can fork and pull requests at will, which should make it much easier for all of us. If you guys want to contribute but don't have a GitHub account, you can still send code here and I'll try to be less lazy and actually commit it. Also, it's much better now cuz we get to have version control and rollbacks in case any of us probably me messes anything up.

GitHub Repository

I'm still trying to get used to GitHub stuff, so if I did some goof or could improve anything, please let me know!
Last edited by HugoBDesigner on 07 May 2018, 01:47, edited 1 time in total.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 25 Apr 2018, 00:30

Status update: I'm dumb and forgot to upload a bunch of files. Every file should now be up. Sorry for the inconvenience

Further update: Forgot to mention, but many thanks to QwertymanO07 for contributing with cleansing gel and some new tooltips. I'd like to remind people that, although contributions will be much easier if made via GitHub, you can still just paste the fixes here and I'll get onto them. I'll also try to keep the downloadable .love file releases as up to date as possible, but if you want to pull directly from the source code, it's perfectly fine and workable too.

I'd like to gather people's opinion on whether I should update SE to LÖVE 11.1, so lemme know what you think.

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 25 Apr 2018, 08:40

SE for LÖVE 11.1 would be appreciated, but I don't think it really matters that much.

On a side note, one thing I would like to see implemented is the ability to make worlds that aren't numbered(Worlds A-D in SMB2J, for example, or the Minus World), it shouldn't be too difficult to make the game save/load level files with letters and symbols and stuff(or maybe it won't, I don't know)

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 25 Apr 2018, 13:40

I'm a bit on the edge about behavior that isn't compatible with the non-bugfixes release, since I don't want to turn this into a mod. I've opened up an exception for cleansing gel because, although non-rendered, it still works in vanilla. Other changes were mainly in the editor, so they shouldn't affect how a map plays in vanilla

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 25 Apr 2018, 14:12

Alesan99's enemy.lua added some new properties for custom enemies, which break when you load them without the bugfix version. I believe there is also a change that prevents levels from being loaded in the non-bugfix version due to a crash(i think it's something to do with map height? i can't remember), which essentially makes them incompatible, so you might as well just add new things anyway.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 25 Apr 2018, 15:04

While I agree that the custom enemies is a new addition, the crash fix is kind of the point of bugfixes really :P
It doesn't necessarily make mappacks incompatible, it's just that vanilla has bugs.
I guess I'll wait for more opinions before I add new content. The enemies was based on a mod, but a popular mod at the time, so I'm not sure if it was the right decision to include it

User avatar
Qwerbey
Posts: 1280
Joined: 05 Oct 2012, 07:58
Contact:

Post » 25 Apr 2018, 15:19

I always thought that including the latest enemy.lua was because we all figured that beta 10 would do the same, but then that never existed. It was a sort of forward-compatibility that never ended up mattering.

EDIT: With regard to lettered worlds, you could probably set it up so that certain, ridiculous world or level numbers are displayed as text, like 9001 gets rendered as "A", 9002 is "B" and so on. On a vanilla copy, they would still function, but a modified version would properly display it. I do feel like that's pushing the meaning of bigfixes, though.

User avatar
MagicPillow
Posts: 1108
Joined: 20 Jul 2013, 04:59
Contact:

Post » 26 Apr 2018, 08:40

does anyone actually use the non-bugfix version, though?
From what I remember, it's broken to the point of being painful to use.

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 26 Apr 2018, 09:51

I'm fairly sure most people just use either the Bugfixed SE or Alesan99's Entities, both of them are much better compared to the vanilla versions each are based off of. At this point, we might as well just abandon the old one and have the bugfix version be an all-around continuation where SE left off, there's no real point in maintaining the old one anymore.

User avatar
MagicPillow
Posts: 1108
Joined: 20 Jul 2013, 04:59
Contact:

Post » 26 Apr 2018, 10:12

hey someone set up a vote or something

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 26 Apr 2018, 10:21

https://www.strawpoll.me/15579998/r

done

i really want a cheesecake right now

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 27 Apr 2018, 05:38

some amount of time has passed since i put up the poll, i would wait 24 hours but it looks like "add new features" completely destroyed "bugfixes only" and i doubt it will change

results are here: https://www.strawpoll.me/15579998/r

78% - 22% with 9 participants

we can have new features now yay

please give me cheesecake

User avatar
MagicPillow
Posts: 1108
Joined: 20 Jul 2013, 04:59
Contact:

Post » 27 Apr 2018, 10:42

I'd be completely fine with new features that don't make maps incompatible with old versions of SE
like in the better level editor mod, for example. it adds new options to make map creating easier, but you can still play the maps in old versions.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 27 Apr 2018, 13:15

Well yeah, I've been following through with that: new features that don't make mappacks incompatible

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 27 Apr 2018, 14:19

Okay, I kinda fucked up on the vote thing, I didn't clarify that by "new features", I meant completely new stuff that would render mappacks incompatible, and abandoning the old version, should I start a new poll or something? Because I really don't see the point in keeping compatibility with the old version when this one is better in every way, it has a better editor, more stability, less bugs and other things, essentially making the vanilla one obsolete.

Anyway, should I start a new poll with fixed descriptions? Or does everybody believe that the old version should stay supported? Either choice is fine, but I would like to see something similar to what Mari0 SE would have been had it been finished properly, with new gameplay features and less bugs.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 27 Apr 2018, 14:55

I think it'd be interesting if you could set one both in here and on Discord. But my main concern is with turning this into HEC 2.0, cuz we all know how well that went the first time around...

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 27 Apr 2018, 15:59

I can see why you're concerned about that, though my ideas of having additional features would mainly be stuff that SE already has, but enhanced, along with some new stuff. More enemy functions, more mappack settings/customisation, better tilesets in general, slopes that actually function, more fleshed out portal elements, stuff like that. Basically what SE would have been like if it got finished, with a little extra. I'm not saying we should "aDD CaLL of DUtY MOEd LolOLOl" or anything ridiculous like that, but rather just enhancing/polishing existing things, while adding a few extra bits, in favor of mappack authors by providing new settings, entities and other features.

Mari0: SE is fairly barebones as is(the portal elements are an egregious example) and keeping it that way in favor of supporting an obsolete version just seems like a waste. I can see a lot of potential in this game, not just as a Mario + Portal crossover, but as a way to create entirely new experiences through the use of the tools provided, but a lot of it can't be fully realised because of how clunky or limited SE can be at times.

And regarding your concerns about this ending up like HEC, the goal I have in mind is polishing and enhancing existing features, while adding extras, as stated above. HEC definitely focused on customisation and new features, but a lot of existing features were left behind in their clunky, unfinished states. Sure, there were things like cubes reacting to gel, sideways faith plates, etc. but for the most part, they stayed mostly the same. The way I want SE to go is to prioritise polishing/finishing existing features over adding new features entirely. And to do this in such a way that it actually has an impact on the way levels are designed, we have to abandon the old version for these changes/additions to be implemented.

Here's the new poll, I will also be posting it on the Stabyourself.net Discord: https://www.strawpoll.me/15587602

User avatar
Villager103
Posts: 506
Joined: 31 Jan 2013, 14:50
Contact:

Post » 28 Apr 2018, 15:04

24 HOURS HAVE PASSED, POLL IS OVER GUYS!

https://www.strawpoll.me/15587602/r

This time, it was much closer than I expected, with "Abandon vanilla SE in favor of polishing existing features/adding new ones" winning 55 - 45(just one vote!), with 11 participants. I honestly expected a bigger divide.

So... I guess it's time for new features and stuff? And as the votes say, I guess it's time for old SE to retire too.

EDIT: As for the new features, this is community-driven, so I feel like we should compile a "to-do list" of the things we want in SE, and have every member add things, as long as they aren't too crazy.

Personally, I want all the current features to be polished and finished up(like the portal elements, they are quite rough right now) and quality-of-life changes, like singleplayer custom portals, separate volume sliders for sound effects and music, among other things.

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 04 May 2018, 22:00

With some help of Villager103 and QwertymanO07, we now have an issues page!
Well, technically, we had from the start, but it is now better organized and has some good issues going on already.

GitHub Issues Page

Again, people can still post suggestions/bug reports here, but it'd make life a lot easier if they were posted there instead, so that we can discuss specific issues in their designated threads (so no cluttering here with parallel subjects), tag them appropriately, track progress, and commit/close once finished.

However, the main reason I'm posting here is to ask for help with contributions to the Wiki. I figured that, since GitHub provides this functionality with such ease, we might as well use it. I'm aware there are wikis on the Wikia page, so porting/adapting those would also be much appreciated. I'll take some time in the next couple days to work some issues out as well as maybe some Wiki pages, but since this would be very useful for the community as a whole, I figured it's best to start early.

Here's our currently barren Wiki page. Thank you all for the time, and for the help!

User avatar
Sky
Posts: 1283
Joined: 08 Mar 2012, 04:35
Contact:

Post » 06 May 2018, 22:00

petition to rename this to Mari0: Community Edition since that's what it's basically turning into

User avatar
HugoBDesigner
Posts: 2188
Joined: 19 Sep 2012, 02:23
Contact:

Post » 06 May 2018, 22:07

I was just thinking of that actually. Should we set up a voting or just do it right away?
Next post gets new page >:(

Post Reply