Open leo60228 opened 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.
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...
Fixed warpdir
setting current room warp background to none in a Tower room in d990c4982ee0b8f5f56750db36ad46068829ce9f.
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.
Proper
stopscript
command
Stelpjo, you added this (named stop
) but forgot to strikethrough your own suggestion.
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.
Add
ifvar(name,less/lesseq/greater/greatereq,value,script)
This was added, but the suggestion didn't get strikethroughed when it was added.
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.
Add a way to do
drawtext()
with a border (i.e. withdwgfx.bprint()
)
Stelpjo, just like with stop
, you added this but forgot to strikethrough your own suggestion.
Also, can someone fix sounds not loading with the reloadresources()
function? I tried to, but i havent got a clue what im doing
test
test
Playtesting has existed since f7c0321b715ceed8e87eba2ca507ad2dc28a428d.
combining all the commands for flipping, finalstretch, etc. into single commands with a simple argument for
on
oroff
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.
More suggestions:
The numbering in the editor is the same as the music
simplified command.
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.
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.
fix enemy movement type 1 bugging when attempting to warp through the top of a screen
Fixed in ef023648767b036e18ead401fc40146de009853a.
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...).
I've sent a fix upstream for the map.settile(18, 9, 59);
bug: TerryCavanagh/VVVVVV#136
Alright, the map.settile(18, 9, 59);
fix has been upstreamed.
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.
combining all the commands for flipping, finalstretch, etc. into single commands with a simple argument for
on
oroff
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.
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.
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.
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.
- donecsay([lines[, color]])
- say([lines[, color]])
except it uses position
instead of customposition
.
csay([lines[, color]])
-say([lines[, color]])
except it usesposition
instead ofcustomposition
.
As of cb53b9d7e861c2d7ea3dfe3dbf5d2a7d491148f2, this is added. Also, csayquiet()
is also added in 84fc46a0c8c1fba71889d1867c00adc3390afa34.
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
.
char_at(var,string,index)
basically just saves words[2][ss_toi(words[3)] to var
words[3] should be clamped
~~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
disablepause(on/off)
I'd rather name it togglepause(on/off)
so the negative doesn't confuse anyone.
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
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)
(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 createentity
ed for each edentity terminal is 2x2.
~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.
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 anicefade()
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
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.
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()
.
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])
Yes, ifvar()
exists. Although I don't think it's intended to be used to check if a variable exists.
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
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
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)
%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
%cursor_x%, %cursor_y% - cursor position, clamped between 0,0 and 320,240
%altstate% - built-in variable for the altstate the player is in done
createcollision(x,y,w,h)
- create a region that acts like a solid wall for all entities
imagedata(id,x,y[,filename[,centered[,alpha[,background[,blend]]]]])
- manipulate an existing image that's been created with drawimagepersist
; changing the filename of a loaded image seems hacky, but it could allow for easier image animation, as the current alternative is having to remove and redraw the image for every new sprite
two new optional arguments to getvar
: n, which is the number of characters to read from var2, and start
or end
, which determines whether to read said characters forward from the start of the variable, or back from the end, respectively
Hey, I have few suggestion:
To make R
key work in ifkey()
To keep raw color in createentity()
To add a new command customenemy(x,y,mt,ms,bx,by,bw,bh,c,t,hw,hh,f,fs,h)
, which:
x
and y
are enemy position;
mt
and ms
are movement type and movement speed;
bx
, by
, bw
and bh
are bound position and bound size;
c
is enemy raw color;
t
is enemy tile (from sprites.png);
hw
and hh
are hitbox size;
f
and fs
are frames and frame speed;
h
is if enemy hurt or not.
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
stelpjo:
Non-repeating scripts without using flags- done, hold down X when placing a script box to make it run only onceFix cutscene bars appearing on one-time scripts with say or reply- done, usenobars()
to disable automatic barsFix looping playfile continuing after exiting level (playtesting or otherwise)- doneMode for flipping in mid-air/disabling flipping/jumping- done, usedisableflip
,enableflip
,enableinfiniflip
, anddisableinfiniflip
Command to go back to last checkpoint without dying- doneProper- done, usestopscript
commandstop()
Labels and-goto
command@AllyTally is working on this@InfoTeddy did it instead - define a label with$label$
, then go to it using something likeiftrinkets(0,$label$)
, if you're in another script doiftrinkets(0,scriptname$label$)
insteadVariables-@AllyTally is working on this- done, usesetvar(name [, contents])
to set a variable to the argument or the next line, andaddvar(name [, value])
to add/subtract an amount or concatenate a string, using the argument or the next lineReload scripts in room without affecting entities- done, usereloadscriptboxes()
Fix delay when immediately loading a script when entering a room- donepixelator:
placeable upsidedown terminals- done- done, also addeduntilmusic()
, to wait until the music has fully faded in/out, but the only real usefulness that would have is covered bynicefade()
puntilmusic()
- donemarkmap(roomx,roomy,tiles1 tile id)
, kind of self explanatory- doneunmarkmap(roomx,roomy)
: removes all map markers from the specified room on the mapinverse- equivalent feature added, optional parameter ofstopmusic
. sometimes i want my track to start instantly yknowplay
sets fade in time in ms (just pass 0)also an inverse- doneendtextfast
, maybespeak_fast
andspeak_active_fast
do()
modifier that will repeat for the duration that the player's hitbox is inside the script box. as a failsafe, maybe make it do nothing if the player has no control when they get to the loop command - not planneddestroy(crewman,<color>)
is implemented, give it an extra argument for the crewman to be killed like the player (0 or 1) - not plannedcreatergbcrewman
should be a thing. also should we use hex codes instead of three separate arguments for r, g, and b - unsure of the status on this