v6cord / VVVVVV-CE

:warning: VVVVVV: Community Edition is no longer being worked on, supported, or maintained. For more information, see https://vsix.dev/vce/status/
https://vsix.dev/vce/status/
Other
23 stars 2 forks source link

Suggestions #4

Open leo60228 opened 4 years ago

leo60228 commented 4 years ago

stelpjo:

pixelator:

InfoTeddy commented 4 years ago

make SS1 -1 tileset available through the editor and make its entities gray (like in gray WZ)

As of 12340a2f888bb7aff4fee9b9ab268ff12c311cc1 and 9155f9baaf14abc946882147e904cbaa68a15b4f, these have been added.

InfoTeddy commented 4 years ago

make warpdir(x,y,0) switch to the correct background (lab, tower, WZ)

You're a bit late to the party - I've already gotten it fixed in the official VVVVVV repository. So two-thirds of this suggestion is really, really redundant.

That said, the Tower background is something we added, so we'll have to fix that...

InfoTeddy commented 4 years ago

Fixed warpdir setting current room warp background to none in a Tower room in d990c4982ee0b8f5f56750db36ad46068829ce9f.

InfoTeddy commented 4 years ago

make editing an entity's position through notepad a working way to set entities at any pixel position (so that the game will not automatically correct them)

As of bded94a19339ed2cbe1ba947b2400fd2f60f5a1b, this is added. You can edit the subx and suby attributes of entities in Notepad.

InfoTeddy commented 4 years ago

Proper stopscript command

Stelpjo, you added this (named stop) but forgot to strikethrough your own suggestion.

InfoTeddy commented 4 years ago

When variables are implemented, add some constants for the player's X and Y positions.

This was added (%player_x%, %player_y%) but the suggestion didn't get strikethroughed at the time of implementing it.

InfoTeddy commented 4 years ago

Add ifvar(name,less/lesseq/greater/greatereq,value,script)

This was added, but the suggestion didn't get strikethroughed when it was added.

InfoTeddy commented 4 years ago

working enemies, platforms, quicksand, warptokens etc in towers

Enemies already work just fine (although their color doesn't change, which is minor but will be fixed). Platforms and quicksand render weirdly. Platforms don't move, but quicksand is already functional. Warp tokens are the most broken here, so half of the things you listed are already more-or-less functional.

InfoTeddy commented 4 years ago

Add a way to do drawtext() with a border (i.e. with dwgfx.bprint())

Stelpjo, just like with stop, you added this but forgot to strikethrough your own suggestion.

Fussmatte commented 4 years ago

Also, can someone fix sounds not loading with the reloadresources() function? I tried to, but i havent got a clue what im doing

leo60228 commented 4 years ago

test

AllyTally commented 4 years ago

test

Playtesting has existed since f7c0321b715ceed8e87eba2ca507ad2dc28a428d.

InfoTeddy commented 4 years ago

combining all the commands for flipping, finalstretch, etc. into single commands with a simple argument for on or off

Do we really need to do this?

Also, it'd be inconsistent with the vanilla commands. And I'm not changing the vanilla commands because that will break levels.

Trinket9 commented 4 years ago

More suggestions:

leo60228 commented 4 years ago

The numbering in the editor is the same as the music simplified command.

InfoTeddy commented 4 years ago

Non-repeating scripts without using flags

As of 4ce23bfb217d91c3cc53ecdc45029c60af2ee86b and a3346ca420a2df34679da2b57a5a52026ea8c11b, you can hold down X when placing a script box to make it run only once.

InfoTeddy commented 4 years ago

fix enemy movement type 1 bugging when attempting to warp through the top of a screen

This isn't a bug specific to any enemy or any movement type - it looks like the bounds of enemies and platforms are just bugged in general in warping rooms.

InfoTeddy commented 4 years ago

fix enemy movement type 1 bugging when attempting to warp through the top of a screen

Fixed in ef023648767b036e18ead401fc40146de009853a.

InfoTeddy commented 4 years ago

remove the settile thing from all rooms where it happens but exactly (12,8) 1-indexed which is prize for the reckless

If we're fixing this (which I don't really plan on doing anyway), I'd rather we just make it so it only happens in the main game. I don't think we need this hardcoded behavior anywhere in custom levels.

Furthermore, this should be fixed upstream, and not only in VCE. In fact, there are a lot of things that should be sent upstream instead of being VCE-only (such as the optimized levels list loading, although it seems to be a bit buggy right now, so it's probably best that it hasn't been sent upstream yet...).

InfoTeddy commented 4 years ago

I've sent a fix upstream for the map.settile(18, 9, 59); bug: TerryCavanagh/VVVVVV#136

InfoTeddy commented 4 years ago

Alright, the map.settile(18, 9, 59); fix has been upstreamed.

InfoTeddy commented 4 years ago

Fade out the "[Press ENTER to return to editor]" text after a few seconds

Not sure why this should be VCE-only. If this is going to be added, it should be upstreamed as well.

InfoTeddy commented 4 years ago

combining all the commands for flipping, finalstretch, etc. into single commands with a simple argument for on or off

Do we really need to do this?

Also, it'd be inconsistent with the vanilla commands. And I'm not changing the vanilla commands because that will break levels.

Actually, I guess we could do this for not only VCE commands but vanilla commands as well, and keep the old ones around for backwards compatibility. But still, I ask if we actually need to do this or not.

InfoTeddy commented 4 years ago

working enemies, platforms, quicksand, warptokens etc in towers

This suggestion is already more-or-less finished, now the entities that don't work are script boxes and terminals. Enemies were already working, but now they change color with the tower. Platforms and quicksand now render properly and change color with the tower. Platforms used to not move their collision. Quicksand used to not respawn upon death. And warp tokens now work properly.

AllyTally commented 4 years ago

Placing down terminals that don't create activity zones would be nice. Adding it to the UI would be simple--holding down Z while placing a terminal.

AllyTally commented 4 years ago

moveplayersafe(x,y) - moveplayer(x,y) but it doesn't move the player inside walls. If the destination will be inside of a wall, push them out of it, so they'd be as close as possible. ignoredamage(bool) - If this is true, then the player should be able to walk through spikes and enemies without dying.

AllyTally commented 4 years ago

csay([lines[, color]]) - say([lines[, color]]) except it uses position instead of customposition. - done

InfoTeddy commented 4 years ago

csay([lines[, color]]) - say([lines[, color]]) except it uses position instead of customposition.

As of cb53b9d7e861c2d7ea3dfe3dbf5d2a7d491148f2, this is added. Also, csayquiet() is also added in 84fc46a0c8c1fba71889d1867c00adc3390afa34.

AllyTally commented 4 years ago

I feel like there should be a way to completely pause the players movement (without affecting anything else). freezeplayer/unfreezeplayer could work, or playerfreeze(on/off) When the player is frozen they shouldn't be able to move or fall (but they should still interact with stuff, like being able to die, being flipped from gravity lines, collecting trinkets etc). All it'd really do is pause the players movement. This would be extremely useful for things like powerups, or custom abilities which mess with the players movement using a frozen player and moveplayersafe.

AllyTally commented 4 years ago

char_at(var,string,index) basically just saves words[2][ss_toi(words[3)] to var words[3] should be clamped

AllyTally commented 4 years ago

~~disablepause(on/off) - make enter do nothing, this would also affect playtesting (as people can just use escape) this would be useful for ifkey stuff~~ done

InfoTeddy commented 4 years ago

disablepause(on/off)

I'd rather name it togglepause(on/off) so the negative doesn't confuse anyone.

AllyTally commented 4 years ago

that makes more sense, originally i was thinking itd be pause(on/off) but pause() could be its own command that pauses the game, or at least people would think itd do that

AllyTally commented 4 years ago

this could be pretty hard: %script_x%, %script_y%, %script_w%, %script_h% - position and size of the script box or activity zone that called the script %script_type% - box (script box), terminal, activityzone or script (another script using load or smth) if the script was loaded from another script, these variables should be kept from the last script that called it if the script is called from a terminal, they should be the 2x2 area that the terminal takes up (or 2x3, depending if terminals are actually 2x3 or not)

InfoTeddy commented 4 years ago

(or 2x3, depending if terminals are actually 2x3 or not)

Only edentity terminals are 2x3 (if unflipped, in VCE flipped edentity terminals are 2x2), but the terminal that gets createentityed for each edentity terminal is 2x2.

InfoTeddy commented 4 years ago

~a correctly working one-way tile that points up (doesn't freeze your flip while standing on it) - in a different spot on tiles.png/tiles2.png to avoid breaking any levels~

This has been added, however we have not added another set of one-ways. Instead, we fixed the original set, but only in VCE levels.

mse-k commented 4 years ago

untilmusic(), to wait until the music has fully faded in/out, but the only real usefulness that would have is covered by nicefade()

Whatever this nicefade() is supposed to be, I can't find it anywhere and it's not in the Discord. So I can't tell what Pixelator wants a nicefade() to do.

nicefade(x) changes the music to x smoothly (?) i dont really know that it uses to fade "nicely" but it isnt just instant change, so he want it to wait until it actually switches tracks

AllyTally commented 4 years ago

nicefade(x) changes the music to x smoothly (?) i dont really know that it uses to fade "nicely" but it isnt just instant change, so he want it to wait until it actually switches tracks

The correct command is niceplay(x), and they can use a simple delay(x) command.

InfoTeddy commented 4 years ago

nicefade(x) changes the music to x smoothly (?) i dont really know that it uses to fade "nicely" but it isnt just instant change, so he want it to wait until it actually switches tracks

nicefade was just a typo on the user's part, they meant niceplay().

mse-kez commented 4 years ago

Variables - @ AllyTally is working on this - done, use setvar(name [, contents]) to set a variable to the argument or the next line, and addvar(name [, value]) to add/subtract an amount or concatenate a string, using the argument or the next line

is there a way to run a script if a variable is x (somthing like say ifvar(name [, value]) where if value is omitted it will check if it existsand will otherwise see if it is equal to it [there could even be a third param to set what i compairs say if its less than ect])

InfoTeddy commented 4 years ago

Yes, ifvar() exists. Although I don't think it's intended to be used to check if a variable exists.

InfoTeddy commented 4 years ago

It's documented in FEATURES.md (Ctrl+F for ifvar()):

ifvar(var,operator[,value],script) - go to script if a variable equals/isn't equal to/is greater than/is lesser than/is greater or equal to/is lesser or equal to value - if value not given, uses the next line

ncrecc commented 4 years ago

Advanced autotiling that accounts for the thin walls and extra corners in Lab tileset and the single tiles in most tilesets (e.g. tiles2 tile 225), latter isn't as important

AllyTally commented 4 years ago

disablepause(on/off) - make enter do nothing, this would also affect playtesting (as people can just use escape) this would be useful for ifkey stuff

as of https://github.com/v6cord/VVVVVV-CE/commit/094c229c0c479a92f133e306f89c3d1880f7370b, this now exists as togglepause(on/off)

AllyTally commented 4 years ago

%entities% - The number of entities in the room, useful for looping through all entities in the room to do something for each of them done in 588e0eeefb7a9adb7d26ec7b2c7c1f4dd794f173 register(commandname,script) - Run scripts like commands! Could possibly have a namespace argument so you would have to invoke a custom command like std:cool_command(a,b). The variables arg1, arg2 etc would be set to the arguments you pass in the command, and args would be the number of arguments passed. If arguments aren't passed, they should be set to an empty string

AllyTally commented 4 years ago

%cursor_x%, %cursor_y% - cursor position, clamped between 0,0 and 320,240

PIXELATOR37 commented 4 years ago
iTom33ro commented 4 years ago

Hey, I have few suggestion:

AllyTally commented 4 years ago

clearimagecache() - simple command that just empties the image cache that gets filled using drawimage/loadimage. this is like super duper important for levels that have like, a drawimage every room