#Custom Enemies Support/Thread
1 messages · Page 3 of 1
Looks like my kaizo uns
i think that's totally balance mod 
what that means was like
if you attach a turret to a vanilla green un
Oooh I understood now, my bad lol
@safe rover, what are the args in Lua that can be applied to a summoned vanilla homingMissile entity to make it not home toward the player in a brief period of time?
Don't recall there being any
homingDelay is a command argument you can use
Time in ticks
30 ticks is the default value, so that makes sense
sometimes when i think it doesn't work, i just crank the number to the absurd to see if it affects anything 
I can confirm with the vanilla missile launching enemies we have in the game.
Set the homingDelay to 600 ticks, and nothing happened either.
It's also an integer, not sure that matters though
It works!
Guess it does matter
NGL, those missiles traveling straight seems funny. 
What is the default speed of the missile BTW?
You can set currentAngle integer in degrees as well
Thank you Kroporo!
I have now perfectly replicated the Lua missile gunship's launch behavior.
Apparently, depending on the move speed of the Lua missile ship, its launch X positions seem out of sync with the vanilla one.
However, I was somehow able to get them right as the ship is at its slow speed.
it might be missile pos
Currently making a workaround here.
are you using world position or position for your missile pos?
Currently, they use world position.
i see
Alr, so changing this to position won't change anything.
it kinda does 
i recomend keep using world position for shooting
I guess world position is probably more consistent.
position kinda depends on the on screen coordinates (the screen moves so yeah)
while world position is kinda of a true position
good luck ^^
Just experimenting with car behaviour.
1 tick too early for the spawn
Once i finish my update, i may get back into creating more stuff
Funny, never noticed turrets need 1 tick to start it behaviour
LMAO
IG it doesn't matter in the grand scheme of things.
Except for eagle-eyed players.
You almost never see a turret spawn anyways
Yeah, true. :p
Now is just fixing the position of the turrets
And the on hit knockback
BTW, curious regarding the application of OnDeinitialise.
Well it happens when on deinitialise 
Mostly used for despawns and stuff, not for when you kill it
I wonder
If you get the knockback
Remenber the legacy thing?
For flip planes
Maybe can be used for platypus +
Gotcha
OnHitByBullet() it is.
-# Meanwhile, enjoy watching the flip plane shedding unholy amounts of debris. >:3
Ah yes
The extra "gore" add on
Ho boy, Lua modding is even more addictive than practicing Nasty runs. I'mma need some rest. 
Good night
I assume you'll be spending the rest of your day finalizing the release candidate of Casinopolis D3.5.
Yeah
And dying of the temperature
Screw you! (Jk)
I wanted to finish this one first but you beat me to it 😂
Honestly yours looks quite awesome tho
Mine was a bit off, specially on the deacceleration part
No idea how you pulled that off so nicely 🤔
LMFAO, so much for crab mentality then? >:3
A whole bunch of trial and error.
The end result is actually kinda a mess, but totally functional. :3
true!
kudos to you for achieving it tho! It was a very hardcoded enemy, so I've been wanting to have a lua version of it for a while hehe
Stacking flip planes for testing purposes is super helpful.
flipplane moment
@safe rover, how to apply bulletSpawnDistance argument for any Lua fire pattern?
Or rather, what are the applications for the that field in particular?
So far, I already know how to use the rest as of late.
I believe TurretData was read only data you got out of BehaviourData
IK.
I just need an example of bulletSpawnDistance used on a sample Lua fire pattern.
It's not something for fire patterns, the fire patterns are just for timings
The spawn distance for most objects is just an addition to the radius when we spawn want to spawn a bullet
So we have to set up a radius variable then?
Completely depends on how you want to set up your entity
When bulletSpawnDistance is 0, most bullets in the game will spawn at Vector2(bulletOriginOffX, bulletOriginOffY) + GlobalPosition
More examples is planned, I'm just stationed with another project right now
Fair enough.
Alright, I managed to apply the spawn distance variable.
Thank you @safe rover! 
peak
By this point, I have pretty much made a softcoded rendition of the cannon gun.
it has more distance
I'll soon publish it here at https://discord.com/channels/334342069755576322/1437926250374103234.
and all boats
both missile and normal
I use it for the cannonredfins
Thing is, with the file I'm about to send, you will be able to configure every parameter found in turretData component.
real
here's a huge challenge
make an accurate squidmother
luasquidmother
I mean you can make that Slot train from casinopolis making luasquidmother might be a challenging one
it has hidden turret
explode turned into a boss 5
spawn squids
that means need luasquid (optional)
shoot missiles
@safe rover, is there a way to specify a range for the spritesheet to be used for damage frames?
This will be useful for the Flip Plane replica I have been working on.
Apparently, 0.8475 is supposed to be the max mx as the flip plane gets knocked back.
Not really the range, though you can change the maximum number with an optional parameter
Isn't too hard writing your own utility function for it though
A bit rough, but gets the job done.
Now the damage framing system is the only thing to implement.
shouldn't be that hard to make a custom damagesprite function
you basically divide in the ammount of frames and well hp and the other and uthm and then the 
5 frames / maxHitPoints?
you can get the max ammount of frames in a spritesheet
Then subtract from the ammount taken by the animation
then is just molding it with the hp
ok so what if you get the total let say 5, then divide by the hp
you get the threeshold
so is just if the hp goes trought that threeshold, add + 1 to the sprite var,
then reset the hp counter
so it can mold to any spritesheet number
So the total HP get will be executed not per tick tight?
was thinking just a counter, that just counts when the hp taken goes above the threeshold
it's okay
Get a rest
@cunning wind
if timer > 82 then mx = mx - 0.065 end if mx < -1.3 then mx = -1.3 end
quite more compact 
i think it might be off my some ticks but idk
Might as well test it stacked directly top of each other, which is what I like to do when making accurate movements.
gotta give them a unique texture, 1 second
To make things easier, set the lua flip plane's sort order to 400 or smth, then temporarily whitewash its sprite completely.
it's every so slighly off
but is an advancement
Ah, I see what you did with the Lua Flip Plane's sprite:
Replace it with your take on the bomber sprite. :3
I feel ya. :3
But yeah, nice simplification.
Perhaps the same could be done to the staggered flip animation.
gotta give it a try
atleast is less if mazes 
also i have the pre makyuni damage frame code
also, do you know what fruit set flip planes uses?
i might need that info for something
Let me check then.
i think is a cherry, 2 bananas and a grape
Might as well check out level_defaults.json.
I doubt there is currently an efficient way to to set up a default fruit set on a Lua behaviour, unless I am missing something out.
Oh, NVM.

TIL
so i basically saw it like yesterday
i think we need to do more types lua reading
but yeah this is all you need
Found it.
so i guess is time to work on the animation if maze
then we have like a really nice recreation
i do say 99%
Funny that you did say that in particular back then. :P
that's weird, it initial velocity might not be the correct one
if i had that thing set correctly, then it would show me all the vars, but since i don't i have to read
The initial speed is supposed to be 6.5 right?
is set to 6.5 but seems that it trails
or maybe is the sprite i dunno
not the sprite
as is spawn correctly
that means the starting velocity is lower than the vanilla one
Hold on...
I'm testing your changes right now.
You have a problem with your sprite. :p
how so
By the time you edited the sprite, I think you might have accidentally offset its position.
i mean in this example im using the same sprite
and same result
i think some of the changes might have change something in the animation code
Deacceleration is at 0.066, and it's actually not linear.
¯_(ツ)_/¯
i'm so confused
I very much feel you.
also is this with the changes i made or the one you had?
I used your changes.
try using the regular flip plane sprite
My game is slow for some goddamn reason.
Wait, lemme restart my PC. -_-
Not even off in the slightest.
my game is cursed
So as I said earlier, I tested your change, and a simple deacceleration isn't even accurate apparently.
i think it might
you just need more force
Either way, thank you for showing me how default fruit set works in Lua. :3
genuine puzzled why the offset
No clue either.
also maybe try something like 0.07
since seems that the force is weak
too much force, then is an inbetween
like 0.068 or
Alright, even with an inbetween, it still is off.
weird
This perfectly demonstrates it, as it actually is in-between.
As you can see, it goes perfectly into the same spot once at max backward velocity.

Therefore, I'll be settling with a minimum of 2 deacceleration values.
if only i were able to test it with not offset
maybe i could pull the cubic easing
I think I solved the accurate deacceleration with only one value.
if timer >= 82 then
mx = mx - 0.065
end
what did it change
The timer threshold went from > 82 to >= 82.
ah, that was an easy change
IKR?
🥳 🎉
And I love how its deacceleration speed shares the same value as knockback movement decay.
knockback = knockback - 0.065
now the only to thing to overhaul would be the animation thing
my aim is really, small code 
And not a chonky one like the one you used on your green big un in essentials.lua.
that was really just experimental with no cleaning 
bosses have like a ton of code too, but i think they are more readable
Oh, I also managed to simplify the flip animation index.
if flipSprite == 1 or flipSprite == 3 or flipSprite == 5 or flipSprite == 7 then
flipSprite = flipSprite + 1
flipTimer = 2
elseif flipTimer <= 0 and flipSprite < 11 then
flipSprite = flipSprite + 1
end
Oh, and I also made it so self.fruitSet can be overriden by "fruit_set" level command arg.
Otherwise, it will still by default use "fruit_set": 5.
Yeah, all these things are applied to my work on the Lua Flip Plane.
By this point, people would have more control over the entity drops and no longer have to deal with hard-coded drops that are irremovable.
@crimson linden, did you see that?
Anyway, this is the latest iteration of the Lua Flip Plane.
Peak
🎉 so i'ts pretty much done now !
Notable changes since the last time MAKYUNI updated the file include the following:
- It now has a default fruit drop that can completely be overriden by
fruit_setlevel command argument when applied. - Its turrets can be configured through
topTurretandbottomTurretlevel command arguments respectively. - Simplified deacceleration velocity.
- Simplified animation index.
Demo of configurable fruit sets.
The top Flip Plane has its fruit_set level command arg set to the value of 9, i.e. it only drops a coin balloon crate.
The bottom one doesn't have the fruit_set level command arg, therefore its value is set to 5 by default.
I think you can add more fruitsets via level_default
If you analyse this, then you'll realize that you can actually set up a fruit set integer in Lua.
Provided that the fruit sets have already been set up in a level defaults data.
Like gunship
Deflector
i remenber you said, you concepted this enemy way before, i wonder what other crazy ideas you did
-# and if they are possible of course
I pitched a concept of a bomber variant that would drop a nuclear bomb that screenwipes the player when it touches the ground.
well tecnically you have that already 
just move the bomb timer screenwipe into a mine, and put it onto the bomber flip plane code
heavyweapon fatty
I had an enemy idea
but I am not sure if this would work
but lemme transfer my LUA learnings
Just saw this. Peak Heavy Weapon reference. This is awesome, possibility for implementation in Platypus 2 Reclayed? 👀
Either as a new enemy, or higher difficulties exclusive feature.
Could be an original Platypus 2 Reclayed enemy.
And will appear more on higher difficulties for sure.
Sounds great! 🙌
Basing some enemies off of Heavy Weapon is quite interesting, a lot of it could work and fit the Platypus engine.
I personally love the Blimp that drops a ton of bombs and when destroyed drops bullets, and the Big Ship that drops a nuclear mine wiping the enemy entirely with no chance, hehe.
Would genuinely love to create some enemies inspired by them for Platypus 2 Reclayed.
would be a great addition to have sprite rotations
specially for bullets
as lightning stars use sprite rotations for lightning
also for smaller sprite sizes
Imagine having a spritesheet for rotating lightning 💀
that was my plan 
I assume rn you'd end up with an 80.000 x 80.000 resolution image or sth like that
So yeah I totally understand and agree with your suggestion
Insanely high resolutions like this will fail to load by the game sadly.
Dang it...
I would assume you have to divide humongous entities into different sprites/images then
Well, TBF the sprite had to cover the entire screen, but before I got it to work, the entire spritesheet was too large.
And AFAIK, it uses 16 frames in total.
This one, on the other hand, is like 6 frames, and each frame doesn't cover the entire screen, but still humongous nonetheless.
not sure if you want anything bigger than that for a singular entity
For segmented units, ye
Rotation comes with quite a few caveats, so that's why mostly nothing uses it, despite the setup technically supporting it
I assume lightning rotation is totally hardcoded then.
Also, will it take a long time to make it fully supported?
Not sure that's planned, but might be worth exposing with a big warning connected to it
I see.
is a worth tradeoff
Heya, although we are able to get the scrolling speed of the background via Globals.ScrollingSpeed(), apparently, there isn't a way to get background scroll speed multiplier, or at the very least, it isn't taken into account.
@safe rover, will there ever be something like Globals.backgroundSpeedMultiplier?
Basically, it gets the value from the level command setBackgroundSpeedMultiplier.
Also, I wonder if it will be possible in the future to have an entity playsound in a similar manner to lightning sfx, wherein the sound loops over and over until a specified duration in ticks has reached or it deactivates prematurely through entity deactivation or kill.
is there a way to kill children entities?
Tary exposed
not better than this 
anyways, is there a way to render something above the player?
"above" regarding position, or sort order?
With sort order, wouldn't just using a greater (or lower, I forgot) order index work?
yeah sort order, however it seems that the player might just bypass the sort order
oh well that kinda sucks :(
it shouldn't do that, imo
nah, that is like a common thing in games
fair nuff lol
but yeah, there should defo be an option to make sprites bypass it too.
will need it for my mod aswell
maybe there a certain sortorder number
but if you input something too big then it just goes back to a very small sort order 
dang
well with sortnumbers and such I thought you could even spawn things on top of the HUD, but now I'm starting to think that's unlikely
you gotta play with the limitations.
MAKYUNI, you're so devious as hell. >:3
Imagine if AdamCom-, I mean AdamChaos makes a meme about that.
Where Tartaz was suspected on planning to kill ch-.
Also, Squid Mother's parenting tips be like...
Oh BTW, before we close this random ass discussion, I'd like to remind you that if ever "Tary exposed" meme spreads to the rest of the server, you are one to talk @crimson linden, haha. :3
Very soon, yes
I'm already having loads of fun toying with new Lua tools. 
Two different enemies sharing the same Lua script thanks to getting their customBehaviourData.
Holy shit, I think I'm addicted to modding. 
WHAT ITs OUT??
Hehe, the weird visuals are likely due to the reflections being enabled on that sprite (the shader doesn't support rotations)
Interesting.
You probably know this by now, but it is an open beta for the time being.
I guess i gotta delay stuff till is onto the public
Your work on Casinopolis?
Wait, is that an actual enemyZap rotating?
Nah, it's a custom Lua entity that demonstrates rotatable sprites.
Ah, fair enough.
If i release the update with this still being a beta, for non beta users it will be a buggy mess 
Fair point.
So far, I've only scratched much of the surface in the newly buffed Lua modding api.
And it doesn't help that I am about to prepare for a weekend-long vacation.
It shouldn't stay in beta like this for long, just making sure that everything is in order and perhaps catch potential oversights
Well said Kroporo. 
Also, thank you for adding much of the features I had requested, ranging from splitted sound definitions to more new level commands.
🫡
And let's not forget the Lua expansions being made. 
That one goes to @buoyant lake, I'm just the gun for hire
Well then, I hereby extend my gratitude towards him as well, even if he is probably on leave for a few days like he alluded to earlier.
i wonder if the being able to manually set the position of an entity is in the beta
Yes
i tried but seems that didn't let me
self.worldPosition = { x = self.worldPosition.x + mx, y = self.worldPosition.y + my }
basically tried setting them via it, but only got a couldn't assign,
maybe is done with other function?
@safe rover wondering this ^
Odd, that looks alright to me
yes, i only got met with
chunk_2:(57,4-89): userdata member worldPosition cannot be assigned to.
Right, it's lastPosition and nextPosition that are available to be modified on BaseEntity, as the game never modifies Position and WorldPosition either
Update is queued that will expose the setters too
I wonder if said setters will be part of the upcoming update.
We'll be thanking you then.
is this currently in the beta?
I'll take a look
Should any of these be found after the version number of the game?
I have no clue tho.

Didn't realize that we create a new non-automized branch, your change should be in any moment now, the player coordinate change from today needs a bit longer in the oven
Ah, the one Bonnie suggested?
Yes
We can wait. 
finally updating ^^
Fly rework huh?
that's the idea
How did you set up the position setters, even if bugged atm?
just changing well the position
I tried using position setters for use in default entity spawn positions, and nothing worked.
Besides, like you alluded to, it's probably bugged still.
what i ponder, is that this may tied to any core thing on the game 
Either way, what was the rationale behind the fly rework? :3
so is closer what i had in mind to begin
I wonder if you have shared your original idea before.
LMAO, bootleg Nitro emojis be like...
I'll just copy paste the entry for these setters directly:
Warnings
The game uses interpolated positions to support higher framerates without too much additional load.
Due to popular demand, BaseEntity.position and Player.position are now technically able to be set, but setting it carelessly will result in undefined behaviour and laggy movement on refresh rates above 60hz. For that reason it is recommended to stick with BaseEntity.movement (and not move the player at all)
If you really need to set positions: BaseEntity.lastPosition and BaseEntity.nextPosition are used internally in conjunction with BaseEntity.lastUpdateTime and BaseEntity.nextUpdateTime to determine the final position of the entities (and the player), the game handles this for you when using BaseEntity.movement. By using position setters, you opt in to being on your own
Basically, you will need to set lastPosition and nextPosition as well

Tested these for myself. 
self.lastPosition = { x = 300, y = -300, z = 0 }
self.nextPosition = { x = 300, y = -300, z = 0 }
Edit:
-# There's no point on adding z value. :p
self.lastPosition = { x = 300, y = -300 }
self.nextPosition = { x = 300, y = -300 }
Without the mildly annoying position change frame.
if i remenber positions in the game are just vector2 so z is doing nothing there
Ye
Was pretty lazy at the time, as I just copied the vector from BaseEntity.movement, LOL
@safe rover
for some reason after using
self.defaultOnHitByBulletBehaviour = false
self.defaultOnHitByPlayerBehaviour = false
on a bullet, like the example
the rest of lua entities start having the same thing? like they start ignoring my bullets for no reason
i guess i gotta put true on every entity now if i use the bullet if i had to guess?
well that fixed it, but is still weird that the next lua entity copy those from the previous ones
Oh god, good catch.. that too is state stored on all LuaBehaviours
I'll check tomorrow!
By default, when not defined, both the hit behaviours should be set to true.
Yeah, I first found it out over 6 hours ago. :p
It's what happens after a Lua entity with false hit behaviors loads.
Indeed
How to actually spawn the car.lua entity properly?
So I tried using the velocity-based animation system used by car.lua onto a custom enemy, and this is what happened:
This is its current syntax:
walkSpeed = walkSpeed + math.max(1, Round((2.7 - mx) / 3))
walkSpeed = walkSpeed % 100
self.animator.GoTo(walkSpeed / 5)
Also, I tried using the exact same wheel animation index from car.lua to a custom car enemy, and it doesn't work as it should be.
The wheel animation should stop when the parent entity stops, right?
I mean, it makes sense. Should be like that
Have you tried this?
if walkSpeed > 0 then
self.animator.GoTo(walkSpeed / 5)
end
Yeah.
I'm out of reach from my pc rn tho.
This was made before the beta, but feel free to add in the said features to experiment with.
So after trying out the attached sprite animator collision using the code from car.lua, it doesn't seem to work at all.
@safe rover
That's a pretty complex shape, you may need to specify a separate collision sprite
You also need to call CheckCollisions with it, or it won't do anything
Gotcha
Apparently I'm an idiot overlooking the fact that they existed in car.lua until now.
It now works!
Thanks Kroporo. ^^
You optionally can define custom behaviour when something does collide, think one of the other examples makes use of it
Now I wonder where it is, now that I am using my computer.
I'm trying to customise an enemy with a squid behaviour.
However it's not as focused on the set coordinates as I'd like to.
(the focus coordinates are set with the spawn command)
How do I make the enemy stay closer to the focus points?
Not that perfect tbh.
@safe rover, apparently, even before the Lua entities spawns, they seem to already be at max speed variable, even when they are supposed to have their vars set to 0 before spawning. This bug seems to occur in the latest beta build, and from the looks of it, the following lines of codes seem to run even before they spawn, unless of course the if self.lifetime > 0 condition has been set up, which is not the case in the transcript below:
if leaveTimer > 0 then
leaveTimer = leaveTimer - 1
mx = mx + ( dx * 0.15 )
if timer <= 0 then
if spriteInvert == false then sprite = sprite + 1 else sprite = sprite - 1 end
if dx > 0 then
if sprite <= 0 then spriteInvert = false elseif sprite >= 5 then spriteInvert = true end
else
if sprite >= 18 then spriteInvert = true elseif sprite <= 13 then spriteInvert = false end
end
end
else
mx = mx - 0.15
if timer <= 0 then
if spriteInvert == false then sprite = sprite + 1 else sprite = sprite - 1 end
if sprite >= 18 then spriteInvert = true elseif sprite <= 13 then spriteInvert = false end
end
end
my = my + ( dy * 0.15 )
To be able to reproduce what I am talking about, you can get the all the assets of the "bug" enemy shown in the video above from our Platypus 2 Reclayed GitHub repository:
https://github.com/Greenness348/Platypus-2-Reclayed
Will take a look
IMO, I think this one takes the priority, since unlike the other, to which I managed to fix it at least, the custom looping sound effect not stopping is something else.
Yeah saw that too, gonna guess it is related
I think the best approach is to make a custom lua behaviour to be perfectly honest
The way the squids work is very "good enough", with the "GenericSquid" having been the answer to "no lua, but we want customizability"
ya, I've realised that 
I'm not 100% following, when printing out execution all looks correct
Can you clarify?
The enemy movement pattern?
Anyway, as I took a deep look onto the code, apparently, it all came to awkward arrangement of functions.
In other words, there actually wasn't a bug at all, just improper execution of functions in order.
Ah alright, I'll dismiss it in that case!
I'm currently trying to retexture squid mother,
but when displayed, the hatch is offset.
So I tried offsetting the texture to fix the issue.
The offset didn't change.
Yeah, that texture is an unfortunate one, as it uses it's own size as an offset too
hatchOffset should valid custom behaviour data though
Note that there is a ReclayedSquidMother and a SquidMother
I tried changing the hatchOffset values, but to no avail
I'm talking about the Reclayed one
-# I'll give it a 5th try just to make sure
Let me try it real fast
want the textures DMd to you?
Texture shouldn't matter too much, no worries
oki
-# yup, value x=0 and value x=100 give the same result
Worked for me just now, the hatch is behind boss, not sure what your setup looks like
the layer position is not the issue
the hatch is just offset, despite me changing the values
changing the texture itself, so the hatch is off center
?
-# the sprites are DMd to you
Ah, didn't see the message request
Are both hatches offset?
As in, both the squid and the turret ones?
yup
but, the issue is solved now
thanks to
-# I remember that people can be pinged without using the @
Yup, it's the mention reply
You gotta disable it manually each time 
I'm surprised that the Squid Mother's huge bullet attack pattern still doesn't have a fireSFX component. :p
Pinging @safe rover for this...
So I used the exact same bullet hit behaviour as enemy_bullet.lua, and found out that sonic pulse does not block the Lua-made bullet entities.
function OnHitByBullet(bulletEntity)
if bulletEntity.data.behaviourName == "PlayerShotSonicPulse" then
CreateFlash(self.worldPosition.x, self.worldPosition.y, self.movement.x, 0)
self.Deactivate()
end
end
In fact, entites using the enemy_bullet.lua example script are not erased by sonic pulse. 
Is it really called "PlayerShotSonicPulse"?
That's the behaviourName of PlayerShotSonicPulse
{
"name": "playershotSonicPulse",
"sprite": "Effects/Bullets/sonic pulse",
"sortOrder": 11500,
"behaviour": "PlayerShotSonicPulse",
"customBehaviourData": {
"baseDamage": 1.5,
"baseDamagePods": 1.0
}
}
Hi there. Didn't know you're probably gonna stay up late until 3:00 am in your place. :3
I'm already sleeping
-# half way there
Nah i'm just sleeping late today
Gotcha
It doesn't work at all.
Yeah i said it too
I noticed that some Lua examples from the beta do have some inconsistencies with their vanilla counterparts.
reclayed_turret.lua for instance will often miss the target player since its target position uses the player's "regular" position, and not world position.
And we all know that position isn't the same as worldPosition, which is far more consistent than the former.
Without checking I can only really point at the logic layer. Is your logic layer set up properly?
This is its logic layer:
self.SetLogicLayerEnemyShot()
Which is exactly identical to the one used in enemy_bullet.lua.
Ah yeah.. I see what's going on
behaviourName resolves into the "real" name not just the one in entities.json so the correct comparison to make is: if bulletEntity.data.behaviourName == "PlayerShotSonicPulseBehaviour" then
There is an update on the way to adjust the example as well, I forgot to mention
btw, how did yu upscale the flip plane?
I mean, it doesn't look upscaled, like I don't see any quality loss
IIRC, I used adaptive sharp setting.
In photoshop?
I have it too but I never dived much into it
Will give it a try, at least for scaling 👍
One advantage of Paint.NET is that it boots up instantly upon opening.
Many advanced image editing softwares take time to start up.
Blender vs Maya be like.. 
Nice custom loading screen you have in Autodesk Maya. :3
Yes, I am familiar with Autodesk as a company.
Photoshop takes forever too.
Gimp heh kinda in between, not as long but not as short either, lol.
I imagine you having an attack similar to Papyrus from Undertale, where he turns his opponent blue.
You would turn your enemy green of course 
Da ba dee
"If I was green I would die"
-# -Someone from the internet
I got that phrase from this video:
https://m.youtube.com/watch?v=eqsh1GSJAdw
Want to watch FOREVER?
http://www.youtuberepeat.com/watch?v=eqsh1GSJAdw
Brought to you by popular demand!
Jill and Leon are blue and lovin' it. Chris however...
And of course, who could forget that sourpuss Ark?
This has a lot of personal nostalgia for me for a lot of reasons. The obvious being the video this origina...
Anyway, we should be moving to a different channel if ever we continue talking about miscellaneous stuff.
do we have a command like "if specific enemy is dead, then-"?
We already have something like that, known as ifNotSpecificEntityOnScreen("entity": "", "places": 1);
I was expecting Maya to crash 😂 😭
How does colouring the player ships in the select screen work?
like how to determine which colour must be changeable
or is it hard-coded that red is always primary etc
Red is always primary, green is secondary, then blue is tertiary.
They will always be that way.
But, you can assign these colors onto your model.
Kind of like this:
-# An excerpt from Platypus Casinopolis
yup, I'm aware of that
I'm just afraid that it will misread other colours
like brown - it has some red in it
So you're planning to more than 3 colors?
As far as I remember, probably no one has before
though wait
How does witch broomstick work, isn't it like a 4th/not mentioned in the json colour?
as tertiary - cloth
secondary - skin
I think what happens is that both the primary and secondary colors are sort of disabled.
It goes something like this:
"uiSecondaryColorHigh": "#00ff00",
"uiSecondaryColorLow": "#00ff00"
yup, they're kinda just unchanged
Basically, you're narrowing their color range to the point that it is only limited to that specific color.
so the broomstick is brown by itself and not affected by the code
Seems like it.
so to keep things simple, how to make sure that the code doesn't change brown?
Try doing the exact same thing as this, but only for primary.
okay
I'll have to make some work-around
as to set the secondary colour as the main changing one etc.
but doable
Good thing you only have one changeable color in mind.
ya, as most of the player ships just change the "main" colour
btw, Bananawar will have 7 different ships to choose from
IG no one else knows what is the 7th ship in your mod. :3
I'm currently trying to set the ship SelectScreen colors from scratch, it's tedious.
I try to match my sprites, which use slightly different lightning
👀
tbh, despite how bad it sounds, I'm considering just making sprites for each colour
How to set custom diff dict data in Lua?
"Add Trail behaviour that offers customizability though customBehaviourData as well as being able to being spawned as a child of any other entity"
Could someone explain to me how to use it? Is it possible to make a connected chain of enemies?
that's what I tried.
It's basically a homer trail, but can be attached to a different entity.
awh.
function OnDestroy() has officially been added. 
using self.animator.rotation on an entity
the next entity will mantain that rotation of the previous rotable entity
alas is not resetting it rotation value between lua entities
I wonder if the devs could just make the entities without that value always have the rotation set to 0.
Hi @opaque island, I wanna ask how easy or hard would it be to implement this from your perspective.
Hello! I'd need to look into that for you - I've been working on other things for a bit and my Platypus Knowledge has eroded a bit 🙂
can we had the editable boss 2?
now that I think of it, shouldn't it be possible with the train code?
Oh boy, the Lua rotation persistence bug seems to affect vanilla child entities too. 
And yes, that turret uses ReclayedTurret vanilla behaviour.
Yet another reason why Lua rotation persistence bug should be fixed. 
FYI, the child entity is now a Lua entity with the manually coded default rotation.
i.e. self.animator.rotation = 0
Actually, all the entities onscreen have said rotation defaults.
P.S.: Okay, I guess that glitch may be dismissed, since I found a solid workaround for the fix.
Okay, I've been wondering what are the valid commandArgs for enemyZap behaviour?
Does anyone know how to change the offset and/or sprites of the water splashes generated by the submarine? or is it hardcoded?
splashes as in the, moving water sprite?
ye
