Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Managing playable type: 3, 5 characters
#1
This thread talks about some crazy (proved) ideas about creating a playable character that runs on type: 3 or 5.
A number of other things will also be discussed.

For a live example, please visit Furrzee, a character that transforms into type 3 or 5.

Why to create a character that runs on type: 3 or 5

type: 3 is the common "projectile" data type. Apart from its chasing, z-axis managing, health and side changing properties,
It closely resembles a gravity-free object.

A large amount of functions can be done in type: 3 if you manage to get through the huge pain managing it.

type: 5 is similar to type: 0, the notable difference are its immunity against many itr effects and a similar injury model to type: 0.

How to setup data file first

To properly create a "playable" type: 3, 5 character, you must firstly understand there must still be a type: 0 placeholder character as same team as the t3/5,
otherwise the system will treat your side as no more characters and end the game.

So you should generate a type: 0 placeholder if your type: 0 character transforms into t3/5, and kills the placeholder when it transforms back,
unless you are using it inside some special system that has another t0 placeholder.

The placeholder is expected to be invulnerable all the time, so put state: 14 on it.

Then, add every tag in a type: 0 to the type: 3 or 5 you wish to control:
The bold lines in spoiler are originally in type: 3, you can remove this altogether to eliminate sound. (Thanks to STM)

Make sure your sprites are aligned in 140 blocks per section, and use pic: 0-139, 280-419 to properly access the sprite resources.
"Per section" means you can allocate any number of bmp files to occupy at most 140 pictures in area 0-139, 280-419 respectively.
If your sprite layout doesn't meet 140 slots, you can use some empty slots to fill up the space

In the example below, empty_slot.bmp fills up missing 10 spaces for pic: 130-139 (270-279 for _b sprite) so pictures starting from 280 will be shown properly.
Next, you must determine how invulnerable your character is. Be warned because you are controlling a non-type: 0 character,
nobody will recognize you as an attack-able target unless you summon a type: 0 that follows you around.

If you are happy about being untargetable, you might put an opoint that summons state: 14 object to scare computers away.

Type: 3 and 5 injured system

type: 3:
You may check here first for a beginner's guide.

Below I will outline some very important information regarding type: 3 playable characters:
A type: 3 with state 3, 7, 15 that has an itr that hits anything will not change its frame.
However, even in state 3, 7, 15, if type: 3 gets hit it will be treated as state: 3000

The frames which a type: 3 will jump into when attacked: 10, 20, 30 are all already allocated for type: 0 weapon actions.
It means if you wish to use type: 3 injured frames, you will be required to drop both light and heavy weapon system (or do a very significant change on these)
Not to forget the character will change side if being hit by a itr from type: 0 or itr kind: 9.

You are best be preventing the character from being hit at all costs if you don't want to mess with either weapon system or changing sides.

type: 5:
System is largely outlined by STM here (section 7)

Something to add:
itr kind: 3 (forced grab by Louis's D^J) doesn't work but itr kind: 1 (grabbing DOP character by moving towards him) works.
However you can change all state: 16 to something else to completely remove possibility of being grabbed.

P.S. a type: 3 (I guess every object) at a frame with bdy and state: 16 can also be grabbed by a controlled character not necessary a type: 0, although usually it cannot be seen because state: 16 is generally used in DOP frames, and grabbing non-type: 0 objects are uncommon.

There is no landing collision in type: 5,
however a notably safe method is to lead all falling, jumping and dashing (latter two are used to counter fall:100+60 bashing problem) frames to transform to type: 0 to prevent locked in unending gravity fall. (provided you don't have a move that buries a character under the ground)

Any type: 3 object hitting a state: 7 type: 5 will not peel the latter's HP, does not hitlag, the type: 3 will not trigger a hitting animation.
If an energy disk hits a defending type: 5, it will damage the character from behind.
However a type: 0 does not follow this standard, Dennis's shrafe used against a defending type: 5 will cause first 3 hits to miss but the last one dealing normal damage (unless type: 5 blocks in time)

type: 5 will take damage from itr kind: 0 effect: 4, because all ik0 are treated as effect: -1.

Type: 3 and 5 and AI

There is NO AI inscribed for any type: 3 or 5 or anything other than type: 0.
However if a type: 0 character is transformed into a non-type: 0 character, that character is locked at the last input point.
For example, if you put state: 8xxx on one of Freeze's D>A frame, Freeze will become a non-type: 0 character that repeatedly presses A or J or direction forever
(or until there is a forced transformation back to type: 0)

It means the new character will punch forever, jump (not forever because it will drop indefinitely) or run. But definitely not using any move or do any intelligent thing. This glitched character however will do anything that is related to spamming a single button, like performing super_punch or picking up weapons.

Type: 3 and 5 and Playable characters
Firstly, by controlling a non-type: 0 character, it will inherit most of non-aerial properties (except injury system) that are written in data files.
This include the new character can drink, use and throw weapons, use basic attacks, super punches, grab enemies, and inherit all the tags that are written in <bmp> tags.
The type: 3/5 character can have different running speeds from the type: 0 you transformed from.
Friction naturally occurs just like type: 0 characters on ground.

Aerial states are f***** up. Although you can jump, you will suffer from these:
type: 3: There is no gravity
type: 5: There is gravity but you will fall below ground forever.
Both jumping states will render you unable to use jump attack/ dash attack until you put a hit_a tag there.

Do notice if you are t3/5 playable character, the camera still follows you even when the t0 placeholder and computer are left behind.

If you wish to create a t5 that can be damaged, it is best to put all falling frames to transform back to t0.

hit_a, j, d, XX tags and mp tags will all work.
For t5, it is easy to implement any move with these tags, but for t3 it will by much much more complex.


Using hit_x tags in type: 3 playable characters

The big problem on using tags on type: 3 PC is: hit_x tags will both act as key input and type: 3 properties at the same time.
For instance, if type: 3 has a frame that has hit_a: 1, it will deplete its HP by 1 per frame.
however since type: 3 is used as a playable character, hit_a also acts as "if you press A in this frame, the character will go to frame 1".

This property renders putting hit_a and hit_j commands much harder than expected when making type: 3 character.

P.S. However there is a stable way to bypass hit_a,j effects by using negative tags and then a frame with wait: 0 and negative next.

The hit_a or j tag will not take effect during the frame, you just need to reverse the direction again to cancel out the consequence. The character will also turn around if F6 is pressed, due to negative direction in hit_a,j no longer working.

The frames will look like this:
Do notice there is NO AI whenever a character is transformed to type: 3, so we can just leave behind some assumptions and use some gimmicks to bypass it.

The hit_a tag as mentioned, will drain HP from character whenever the frame is present. We can however limit the amount of health drained by avoiding any move that has a "+A" input and possibly make use of normal punch properties:

A normal punch is triggered by pressing A, but the "A" input can last to next frame.

it means something like this will cancel out health drain unless F6 is pressed or computer is using the character (the latter is impossible)
In the example, when normal punch goes to frame 60, it will drain 61 HP per frame
(frame 60 only lasts 1 frame before it goes to frame 61)
And because player "is pressing A" to go to frame 60, the "A" key input lasts to frame 60 and it redirects to frame 61, which then drains 9 HP but the mp tag restores 70 HP, which cancel out each other.

frame 61 literally lasts 0 frame because it is triggered by a hit_a tag in frame 60, but the hit_a in frame 61 can act for 1 frame only for the HP drain, and does not trigger a "press Attack" effect.

If the character has less than 61 HP, he will become 0 HP instead and go to frame 281.

The trick is the frame number where your character goes to is equal to the amount of health for detection. So you might need some lower frame numbers to create some specific death effects.

Because type: 3 does not go to frame 180/186 whenever its HP reaches zero, but instead remains controllable by player, it is then possible to return to standing frames after going to frame 281.

Do notice if a type: 3 character is killed by using hit_a tags, he will never be able to fulfill hit_a requirements tags again unless some attacks that have negative damage is dealt upon him, but it will cause the character to go frame 20... Or, a mp tag that revives the character.

I must also note that using any attack onto bdy of a type: 3 does NOT deal any damage to the latter. The latter instead goes to certain frame and possibly change side.

Be warned F6 will disable any mp tag and prevents the hit_a tags to be cancelled out with mp tag, causing rapid HP drain whenever this kind of move is used.


For hit_d tag, it is quite simple to implement. hit_d both acts as the frame whenever type: 3's HP runs out, it will go to,
and the frame the character will go to if you controll him and presses D. It works in type: 3 and 5.

For hit_j tag, type: 3 will have an addition of z-axis movement indicated by hit_j, but it also acts as the frame the character goes to if you presses J.
You might need to move around weapon frames elsewhere to properly use hit_j to perform moves that shift character in z-axis.

For hit_Fa tag, bear in mind the only hit_Fa: 1-14 tags have special effect. Above 14 you can use any number without side effects.

Using type: 3 as a part of character

If you wish to only use type: 3/5 as only a part of your character, like becoming a whirlwind which drains your health until you press D to cancel, this section is for you.

By sacrificing the standing frames (and weapon holding frames), you can put hit_a, j, Fa tags to small numbers,
like in the above example, your character transforms into a type: 3, because transformation will lead to frame 0,
your frame 0 nexts to whirlwind frames that have hit_a: 1, hit_d: XXX.

When you press A in whirlwind form, character goes to frame 1 and you can use frame 1 to do something else,
like performing a slash and then returning to human, or you can press D to return to human form directly.

P.S. weapon types are unsuitable for making a character

If you try to create a controllable character in a weapon type, they suffer from these:

1. When they land on floor, they go to frame 21 first (just_on_ground) and then frame 20 (on_ground)
While they are have a good gravity model and have stable landing animation, frame 20 is used by heavy object management.

2. If you transform into a weapon object by state: 8xxx, there is a random chance of character disappearing if someone attacks the character.
This is a critical problem making the character highly unstable.
The chance is observed to be independent of frame layout of the character.

3. The damage animation goes into frame 0-15 (light) or 0-5 (heavy). This means to properly create such weapon-based character, frames regarding weapon management (10, 15) must be freed out except for heavy ones.

P.S. Choosing between type: 3 hit_j and dvz: 5xx for movement in z-axis

Thanks for STM for reminding me about using dvz for z-axis movement.

hit_j specifies a movement speed that is added towards the current z-axis speed of a type: 3 object.
For example, by holding Down key, Davis's energy blast can be directed slightly downward but the propagation pattern still follows its normal or upward pattern.

You must also be wary that a positive hit_j also acts as a goto tag if you are using a type: 3 character.

dvz: 5xx (or more precisely, dvz: 501+) in the other hand, can be used in any object.
Dvz: 501+ is a dvz tag with a number no less than 501, dvz: 501, dvz: 550, dvz: 9999 all will contribute to z-axis movement.

Dvz: 501+ will cause the object to force its z-axis speed to (number-50) while the frame is active.
Even if you are controlling a character and tries to walk down, a dvz: 549 tag will drag you upwards (for 1px per tu).

However it's perfectly okay if you are planning on a move that doesn't allow z-axis custom movement in occasion. And it's a very convenient choice compared to making a type: 3 character just for z-axis movement. Don't forget dvz tag does not interfere with hit_a,j,d tags and you can cancel a z-axis moving move as you wish.
Reply
Thanks given by: STM1993 , Nyamaiku , AmadisLFE




Users browsing this thread: 1 Guest(s)