Since I like playing around with socs very much I thought of things that might improve the customization capabilities of the game. I messed around with the sourcecode for a while and created some new soc actions. The ones that turned out well I am now willing to release.

Feel free to use the exe for your own projects.
Don't bother asking questions if you want to know more details about how some of the actions work.
If you encouter bugs while using them, please, tell me! ^^'

It is more for people who want to have more SOC actions in their wads/socs. I believe this does have an example wad of what kind of actions you can use for custom bosses

You are absolutely right. The sole purpose for this mod was to make new soc actions available, allowing to create enemies/objects with more complex or even just different abilities. As for the example file... I removed it because people thought that the thread was about the file itself and not the mod that made it possible. You can still see some of it in action in my TwistedMobile.wad.
Due to lack of time (caused by my studies) I kinda stopped working on this for a while now BUT I am planning to begin working on it somewhere in the distant future again. So it's not totally shelved.

After all SRB2 was and is a great experience and I appreciate the work done here so much that I kinda feel like contributing something.
^__^

A new ObjectFlag has been implemented: MF_ALWAYSHARM = 134217728
Objects that have MF_SPECIAL and MF_ALWAYSHARM turned on will always damage a player if he/she touches them. This does not grant invincibility BUT will break spinning and jumping.

These new soc actions have been implemented:

Code:

A_SetObjectTypeState
Description: Changes the state of all active objects of a certain type in a certain range of the actor.
var1 = state number
var2:
lower 16 bits = type
upper 16 bits = range (if == 0, across whole map)
A_Custom3DRotate
Description: Rotates the actor around its target in 3 dimensions.
var1:
lower 16 bits = radius in fracunits
upper 16 bits = vertical offset
var2 = vertical rotation speed in fracunits per tic
Note: The actor rotates horizontally and vertically around its target. The horizontal speed is defined by the unit's speed in fracunits. If the actor's target dies so does the actor. This action uses the same mechanic like A_RotateSpikeball which means that it has to be looped infinitely and has to last 1 tic.
A_CheckThingCount
Description: Calls a state depending on the number of active things in range.
var1:
lower 16 bits: if var1lw < things in range, call state
upper 16 bits = thing type
var2:
lower 16 bits = state number
upper 16 bits = range (if == 0, check whole map)
A_CheckAmbush
Description: Calls a state if the actor is behind its targeted player.
var1 = unused
var2 = state number[/FONT]
A_ForceStop
Description: Actor immediately stops its current movement.
var1:
if var1 == 0, stop x-y-z-movement
else, stop x-y-movement only
var2 = unused

The rar file contains a folder with test socs that will show you some examples how the new soc actions can be used. The files are meant to be loaded one at a time and they all will turn the blue crawlas into something new. They work in connection with the exe mod only:

a_MaceCrawlas.soc => Crawlas swinging maces
a_MaceCrawlas2.soc => Crawlas swinging maces differently
a_SissyCrawlas.soc => Crawlas will try to avoid your attacks
a_BooHooCrawlas.soc => Crawlas will behave like Boohoos from SMB
a_AtomCrawlas.soc => ... It just looked like an atom to me :-p
a_CrawlaPack.soc => Crawlas will hunt in a pack if 3 or more come close to each other

PS: I will update the documentation page as soon as I can but the web hosting service is currently not available. ^^'

A new ObjectFlag has been implemented: MF_ALWAYSHARM = 134217728
Objects that have MF_SPECIAL and MF_ALWAYSHARM turned on will always damage a player if he/she touches them. This does not grant invincibility BUT will break spinning and jumping.

These new soc actions have been implemented:

Code:

A_SetObjectTypeState
Description: Changes the state of all active objects of a certain type in a certain range of the actor.
var1 = state number
var2:
lower 16 bits = type
upper 16 bits = range (if == 0, across whole map)
A_Custom3DRotate
Description: Rotates the actor around its target in 3 dimensions.
var1:
lower 16 bits = radius in fracunits
upper 16 bits = vertical offset
var2 = vertical rotation speed in fracunits per tic
Note: The actor rotates horizontally and vertically around its target. The horizontal speed is defined by the unit's speed in fracunits. If the actor's target dies so does the actor. This action uses the same mechanic like A_RotateSpikeball which means that it has to be looped infinitely and has to last 1 tic.A_CheckThingCount
Description: Calls a state depending on the number of active things in range.
var1:
lower 16 bits: if var1lw < things in range, call state
upper 16 bits = thing type
var2:
lower 16 bits = state number
upper 16 bits = range (if == 0, check whole map)
A_CheckAmbush
Description: Calls a state if the actor is behind its targeted player.
var1 = unused
var2 = state number[/FONT]
A_ForceStop
Description: Actor immediately stops its current movement.
var1:
if var1 == 0, stop x-y-z-movement
else, stop x-y-movement only
var2 = unused

The rar file contains a folder with test socs that will show you some examples how the new soc actions can be used. The files are meant to be loaded one at a time and they all will turn the blue crawlas into something new. They work in connection with the exe mod only:

a_MaceCrawlas.soc => Crawlas swinging maces
a_MaceCrawlas2.soc => Crawlas swinging maces differently
a_SissyCrawlas.soc => Crawlas will try to avoid your attacks
a_BooHooCrawlas.soc => Crawlas will behave like Boohoos from SMB
a_AtomCrawlas.soc => ... It just looked like an atom to me :-p
a_CrawlaPack.soc => Crawlas will hunt in a pack if 3 or more come close to each other

PS: I will update the documentation page as soon as I can but the web hosting service is currently not available. ^^'

its lowercase value: which equals the assigned value as is (up to 65535).

and its uppercase value: which equals how many times 65536 goes into the assigned value. (Sidenote: 65536 because this is the maximal value that can be expressed by 16 bits. You could describe the uppercase value as how many 16 bit units the variable needs to be expressed, too.)

This is nothing I invented or something... the lowercase and uppercase value system is already used by some of srb2's current soc actions. Instead of using one 32 bit variable the storage area is devided into two 16 bit variables. It's kind of hard to explain if you do not know how data is stored by a computer.

A_Custom3DRotate: horizontal rotation speed is now defined by var2's upper 16 bits instead of the object's speed. both vertical and horizontal speed are now worth 1/10 FRACUNITS per tic and not 1 FRACUNIT per tic

New actions that have been implemented:

A_CheckTargetRings: Calls a state depending on the number of rings the actor's target is currently owning.

A_MissileSplit: Makes missiles able to spawn other missiles with alternate flightpaths that belong to the actor who shot the former missiles in first place.

Sounds pretty cool! I think these actions should be added into the official EXE...they could really come in handy for the actual game.

BTW, I notice in your tutorial that you constantly misspell "amount" as "ammount". *shot by people who hate Spelling/Grammar Nazis*

Some of them are crap I guess. Much stuff is experimental and I am constantly changing things... I do not know if it is that advisable to add them to the official game (though I would not reject that idea in general). It's not that hard to use the alternate exefile anyway... ^^'

As for the tutorial: Yay somebody read it. :p
There may be far more grammar and spelling errors than that. After all I am not a native english speaker. In the end the only thing that matters is that it is understandable so that people get what I tried to explain and that it is (hopefully) somewhat helpful.

There may be far more grammar and spelling errors than that. After all I am not a native english speaker. In the end the only thing that matters is that it is understandable so that people get what I tried to explain and that it is (hopefully) somewhat helpful.

I still suspect you of being German :O

That said, I need to add the new actions to the Wiki article if I find the time.

That said, I need to add the new actions to the Wiki article if I find the time.

Thought that was well known but good guess anyway.

Speaking of the wiki article...

Quote:

Originally Posted by srb2wiki

Objects that have MF_SPECIAL and MF_ALWAYSHARM turned on will always damage a player if they touch them. This does not grant them total invincibility but they can't be destroyed by spinning or jumping. The flags value for this flag is 134217728.

The sentence that was changed is actually not 100% correct. If you spin or jump into an enemy with the flag turned on it will damage you first while taking no damage itself... However, if you are invincible (flickering after beeing hit or by a monitor) and you do the same thing they WILL take damage. It is supposed to simplify creating melee attacks. ^^'

Version 2.0.6.2 is out and this time I was up to something more complicated (at least that's what it felt like). I tried to come up with ideas for new hardcoded special character abilities and implemented some of them. Like Thok, Glide, Fly, Double Jump... etc. these abilities will be applied to a character by changing the ability parameter in the character's S_SKIN.

So here we go:

Telekinesis

Ability # 50
Description: Enemies or other players who are next to the character will be pushed away by pressing JUMP in mid-air or will be pulled towards the player by pressing SPIN in mid-air. The parameter actionspd will determine the pulling/pushing force.

Fall Switch

Ability # 51
Description: The character's current vertical movement speed will be inversed by pressing JUMP in mid-air. The parameter actionspd has no effect.

Jump Boost

Ability # 52
Description: The character will jump higher the faster he is moving. Jumping while standing still will perform a normal jump. The parameter actionspd determines the jumping force increase.

Air Drill

Ability # 53
Description: The character will change into drilling mode by pressing JUMP in mid-air. In drilling mode the character will slowly start accelerating into its facing direction until a certain amount of time has passed or the character is touching ground. While Air Drill is activated the player keeps in control of his/her facing direction and his/her falling speed is decreased. The parameter actionspd determines the drilling acceleration.[/FONT]

The new download file additionally contains 4 placeholder characters (using old, color palette shifted Morphling sprites) who each make use of one of the abilities. Feel free to mess around with them or testing for bugs.

Also it would be nice if you could leave a comment if the abilities are overpowered, pointless or if you have ideas for improvement.

;D

EDIT: I am going to update the documentation page soon... right now I have some problems with my web hosting provider.

I must say that I kinda didn't expect this, but I'm very pleased with having new character ability options. The ones you made were quite useful and balanced, with the possible exception of the Air Drill. It's nothing more than a time-constrained glide that makes you lose control.

The other ones were very nice though. Telekinesis is obviously very dependent on the level but that's to be expected. I had a lot of fun messing around with it in Aerial Garden, because it makes combating flying enemies much easier. Fall Switch is quite useful in general, but in levels with pools of water, it can get out of hand due to the additional acceleration. That's not your fault though. Jump Boost is a great idea, and I'd really love to see a Mario character with it. You could also try changing Sonic's ability to this for Mario Mode, similarly to what ShufflarB2 did in 1.09.4.

I'm really pleased with this update, and I hope someone will use these features in some way in the future. Keep up the good work :)

I've been testing these new abilities, it's kinda amusing to play with them if ya ask me

It's kinda random using these in a character with ability2 = 1, like, it can kinda be random depending of the ability and how you use it, lol

Yeah activating multiability is possible for Telekinesis, Fall Switch and Air Drill, though I did not think about the consequences. Air Drill is pretty messed up with multiability turned on, I guess, while multi Fall Switch means infinite air bouncing. Maybe I should handle multiability differently like increasing jump height instead or something... ^^'
Glad you had fun fooling around with 'em, anyway.

Quote:

Originally Posted by SpiritCrusher

The ones you made were quite useful and balanced, with the possible exception of the Air Drill. It's nothing more than a time-constrained glide that makes you lose control.

Hmmmm... You might have a point there, though it differs from gliding by accelerating speed and by not beeing interruptable if you release the jump key.
I could try limiting the maximum speed and make the character raising instead of limiting the falling speed while using the ability. That way it would be kind of a hybrid between Double Jump, Thok and Glide. Would that be better or worse?

Quote:

Originally Posted by SpiritCrusher

I'm really pleased with this update, and I hope someone will use these features in some way in the future. Keep up the good work :)

I could try limiting the maximum speed and make the character raising instead of limiting the falling speed while using the ability. That way it would be kind of a hybrid between Double Jump, Thok and Glide. Would that be better or worse?

Or you could make the player not lose any height while performing the maneuver. That way, it would be kind of like a hybrid between thok and glide.