Friday, March 7, 2014

Quick Update for Mari0 +Portal #11

It's been a looong time. How have you been? I've been really busy being dead busy. So, time for chat, GIFs and updates. Take a soda (I prefer coffee), relax, lie on your back, and apply immediate pressure to your temples attention to this post.

First of all: why am I quoting so much Portal 2? I don't know, but that MAY be because I've finally played the game entirely. It also means that I made a few tests for it, but that's a topic I'll discuss in my next post. This next post will also include some other small projects I'm working on, along with some explanations for a few things. So, wait for that...

Next subject: why did it took me so long to make another "Mari0 +Portal" update post? Well, it is mainly for two reasons:

First , and most obvious, is that "Mari0: SE" went out. Most people who used to download my mod did it because I implemented a lot of features from SE, which they liked a LOT. Of course, I made lots of other new features (as you can see in this a many, many other posts), features that would probably never make it to SE (mostly because Maurice - Mari0's author - wouldn't want to "copy" features if they are well-know to a specific mod - in this case, mine - or it's author - in this case, me). For example: Commanders. Even though SE has an AMAZING animation system, you can do a lot more things with Commanders, such as play sounds, create texts/images in different colors, positions and scroll factors, change/create/destroy tiles, enemies and entities, change Mari0's variables, make variables by yourself (like a brand new score system) and many others.
No, I'm not saying my mod is actually BETTER than Mari0: SE (which means "Special Edition", in case you didn't know). I'm just saying that my mod has better features than SE in some things, as well as SE has better features than my mod in other things.
So, maybe you're wondering: why are people stopping using my mod if it has most of SE's features and some brand new ones? I don't know for sure, but I have an idea of why: Mari0: SE is more "official", since it is made by Mari0's author. I've put "official" on quotes on purpose. Mari0: SE wasn't officially released yet, but it is available for members of Stabyourself's Forums (which I am, of course). Also, my mod - as most of you may already know - has a lot of bugs, due to the amount of things I try to add to it. Yeah, getting other's attention to a mod is not an easy task at all. I've had my "glory" days, though.

The second reason I'm not posting too many updates (you thought I forgot to say about the second reason, didn't you?) is that I'm not working so much on the mod itself. No, I haven't stopped working on it, and I'll not do it anytime soon. When I say I'm not working so much on the mod itself is because I'm mostly focused on other projects. It's also because I'm a little bit sick, but that's not the subject here. I'll explain more about these other projects on my next post. It'll be just texty, so don't scroll down like crazy trying to find GIFs or anything (although I think I will post some images and, perhaps, GIFs).

Anyway, I know you guys don't like texty posts too much (and use tl:dr to justify), so let's return to our GIF-spam-update-post-ish thing:

First, one of the most important features in this update: boxes got their own commands. Not much yet, but you can already make some cool things with them, such as emancipate them...

...make them ignore emancipation grills...

...detect - with Environmental Triggers - when they're being hit by lasers...

...and a few more, such as kill players when hitting them from above (like "smashing" the player), change their textures, make them ungrabbable (player can't grab), change their gel id (so you can make them have gel effects even if you haven't shoot gel on them nor spawned them with gel effects) and more!
But, how am I doing these things if I haven't even made a multigui for boxes yet? That's simple:

I added commands to Triggers! If you can't think of anything useful for it, here's a hint: you can use commands to change the state of whatever activated the Trigger - being it a player, a box or an enemy (not yet). All you need to do is specify a Trigger name - either in Commanders or in Environmental Triggers -, add commands after it related directly to the entity that is triggering it and you're done!

But I've added a few other commands too, not only related to boxes. For example: do you know the "tremor" effect you get with the Sonic Rainboom cheat? Well, Maurice made it available for users in his animation system. So, why shouldn't I with Commanders?

Oh, and have you noticed the player "flying" in the GIF above? Well, that's because I finally fixed the animation commands. Now you can make players walk, run, jump, crouch, move on vines and more, all by Commanders! This, plus the well-know control commands, such as player[n] disablecontrols or player[n] allowjumping [allowed/disallowed/always] (and others, such as allowwalking or allowrunning) makes player controls much more "cinematic"!

But we don't stop there! No way! I added a command to Environmental Triggers that will help you guys in a lot of brand new world of possibilities for mappacks: the proximity command. "What does it do?", you may ask. That's simple: it activates if the entity A is at an [n] distance or shorter from B. I'll explain it better: you can check if certain entities, with certain values or certain names, are next to each other by a distance equal to or smaller than [n]. In [n], 1 means 1 block. It works for players. boxes or enemies (not yet). you can do these commands to check players next to other players, boxes next to other boxes, players to boxes, and so on.

Along with new commands for Commanders and Environmental Triggers, new functions to Logic Gates would be very useful, right? So, I added two more of them: a "Random" gate and an "Adder" gate. The Random gate - as the name suggests - selects a random gate with the same name of the one being activated and activates whatever is linked to that one. The Adder gate changes sequentially between each gate with the same name to activate what is linked to them. But, as you may have already guessed, this system is different from other logic gates: instead of activating every gate with the same name - and therefore every entity linked to any of them -, these gates only activate one of the gates with the same name, which means that you must link every different entity (doesn't have to be a single entity per gate, though) to every single gate.
Oh, and, before you get confused, you don't need to link every gate with the same name: just one makes it work.

Example 1: Multiple Indicators linked to multiple Random gates:

Example 2: Multiple Indicators linked to multiple Adder gates:

And how they're linked:

Keep in mind that the Adder gate activates gates with different names from left to right, up to down. That's why they're not linked in a circle in the image above.

Anyway, a very requested feature I've already tried to implement before without success is just done: linkable Emancipation Grills. Yes, I know, finally!

Another entity that got a new feature was the Light Bridge. Before, you could even make them activate laser detectors. Now, you can also place gels on them, just like in Portal 2! Every gel keep it's effect on light bridges, such as Repulsion, Propulsion, Deadly, Slowness and so on. Of course, not the Conversion Gels (the whit for portal-able and the gray for non-portal-able). But it is still fun:

The Deadly Gel is blue here, but don't mind it.

I made it so you can even preset a gel property to the whole bridge, even if you redirect it with portals:

Speaking of gels, I've took some time to work on one of the most requested features for my mod and for Mari0: SE: The Adhesion Gel. Yes, now you can climb walls and ceilings like if there were no gravity!

Okay, that's fun, but not enough! I also added a master gravity direction variable, named "gravityside". That means that you can make the player fall upwards as default, even if he isn't on the Adhesion Gel! Since it is a variable, that means that you can set it either via custom variables or via globalvariable command for Commanders.

It works very well by itself, but Gravity side + Adhesion Gel = Lots of fun!

I hope you aren't tired or bored yet, because we have much more! I've made lots, LOTS of upgrades to the editor. It is just AWESOME now! For example: remember the "entities categories" feature? Well, I found something really annoying about it: even though you could arrange the entities as you'd like or as it's better, you still had to open the editor menu to change between entities on the same category. Never mind, you can now scroll easily through entities on the same category!

And what about map width? It was a pain to make a big map when you had to click-like-crazy or hold-your-mouse-forever to get the map width on the editor. But that changes now! Just like I've already made with background's scroll factor, map widths can be typed in!

Time to get better! Isn't it annoying when you make a group of tiles (for example, a 2x2 square) but have to scroll between each tile? Well, you could "fix" it by using objects, but that wasn't efficient enough. I wanted it to be like that 2x2 tile on the default Portal tileset: one click and all tiles! So, I made it possible really easily: place your tiles in their positions, select them and press "Ctrl+G". You've just made a tile group!

Now with click-and-drag!

And, as you can see in the GIF, you can just remove groups by pressing "U" when your mouse is over the tile of the group (they're highlighted on green).
The groups can also support entities and entities data, just like objects!
Objects... They're so cool and complete (now with the entities implementation), but they'd be a LOT better if we could also save linked objects - perhaps, to make a system of Commanders, Logic Gates and Environmental Triggers easier to add in multiple levels. Guess what? It is possible now!

But, as you know, you still have to find what object you've just created between those auto-generated weird names, until you exit the game, open it's file and rename manually, right? Wrong! I made that too. It was NECESSARY!

Here we get. The BEST feature of this update. The most required one. The one EVERYBODY wanted: Animated tiles! Yes!
I know, I know, I've already implemented them before, but they were very lousy. I've then removed temporarily it, until now! Animated tiles are just COMPLETE: they support properties (per tile), custom delays (per tile as well), looping and more! To make it MORE complete, I've also added customization to some properties, even if not animated. For example: coin blocks can have an specific tile ID to switch to when hit, coins tiles can give custom amount of coins...

Even though I've shown you tons of new features, it eventually had to come to an end. If you were patient enough to make it 'til here, thank you a lot! And I see you in my next post!


  1. Dude how are you so freaking awesome
    What's your secret
    (Time vortex? Transmissions from alternate dimensions?!?!)

    1. Thanks, man! I mean, B-Man! It's great to read such a positive comment.
      Well, I actually DO own a time machine and I actually DID already traveled to the future, but I try not to "cheat" by using future's knowledge in my projects ;)