Post by raithwall on Jul 28, 2008 3:59:57 GMT -5
(post any ideas for battle engines in this thread)
SINGLE ACTION BATTLE ENGINE
I have come up with an experimental battle engine where you can have each member attack immediately after choosing his action instead of choosing everyones action first. Only 1 member and 1 enemy are active at any given time. This system is untested and I have posted this here as a creative idea for anyone who wants to give it a shot!
Be warned, this is a lot of work for a pretty insignificant feature, but if this kind of unique battle system is your thing go ahead:
1) First you need to put all but 1 party member in an action status at the beginning of the battle. The system won't let you choose turns for incapacitated members so you only work with one person. Script in enter battle or each members enter script. Use member order 1-3 and apply the status, leaving member 0, the leader, unaffected.
2) The enemy doesn't need to be in action status. Make a variable that starts equal to the first enemy in the enemy battle order variable and increase it by 1 after his turn or back to 0 when it hits the max number of enemies. If the enemy taking action isn't the one that equals this variable force the script to end for every action he tries to take. Put the following script in check start of every direct effect an enemy can choose to do anything with:
battle: substitute attribute for variable (to load enemy info)
condition: side is enemy taking action (I think flag is on)
condition: turn variable is different then enemy battle order
no instigator action on
force script end.
condition end
condition end
if you use a check fail message, you will have to make a branch to end the script before the message appears so that there is no text.
3) When a party member finishes his turn change back target and apply the action status to put him back to sleep.
4) Now you need to remove the action status from the next party member. The hard part is finding out where to work. The following script after last member takes action should be modified to accomodate the kind of turn order you want, either in order, random, or via agility or some other stat. What will actually happen is one enemy and one member are being freed, whichever of them has the higher agility will go first.
member order = member order +1
conditon: member order is same or higher then total members
member order = 0
conditon end
(or temp variable = member order.
repeat while member order = temp variable
member order = 0 ? total members)
(or member order = variable determined by turn sequence)
use member order
member info load
confirm real action statuses (numb, sleep etc)
if flag 170 is off
target: action status remove
(might also need make active target, change back target, attribute for variable, variable for attribute, or member info save somewhere)
If the script didnt end, continue member order +1 until you come to someone who isnt dead, sleeping or numb. You might need a branch to end the cycle if everyone is sleeping or numb.
5) Manipulating the Turn Order - The easy way
make everyone stunned the very first round of battle, then unlock the first enemy and the first member probably by scripting in custom indirect effects that are constantly on. This method utilizes the default turn order of the battle system which is based on Agility. For enemies make sure to set the turn variable to his enemybattleorder number. If you can remove the action status at the beginning of the turn in the custom script you might not even need the above script.
5) Manipulating the Turn order - the hard way
Members: at the beginning of the battle cycle member order for each member, load stats, find the highest value, free that person alone from the action status. This will begin the cycle.
Enemies: Check the enemy stats on his enter battle script. Make about 10 variables or so that can be used to store the enemy stat values. Now compare them and set the enemy battle order to the one thats the highest. This is a pretty complex script and some complex mathematics.
* In the above scripts check total members and confirm that the enemy battle order is changing. If there is only 1 enemy or 1 member have your scripts bypass the entire treatment as it is obviously useless and uncalled for.
* what seems like one round is now becoming many. Keep this mind when considering your turn count for poison, number, lose turn count, and similar effects. 1 turn has now become 1 round. Members with poison or regen will be affected up to 4 times per round.
SINGLE ACTION BATTLE ENGINE
I have come up with an experimental battle engine where you can have each member attack immediately after choosing his action instead of choosing everyones action first. Only 1 member and 1 enemy are active at any given time. This system is untested and I have posted this here as a creative idea for anyone who wants to give it a shot!
Be warned, this is a lot of work for a pretty insignificant feature, but if this kind of unique battle system is your thing go ahead:
1) First you need to put all but 1 party member in an action status at the beginning of the battle. The system won't let you choose turns for incapacitated members so you only work with one person. Script in enter battle or each members enter script. Use member order 1-3 and apply the status, leaving member 0, the leader, unaffected.
2) The enemy doesn't need to be in action status. Make a variable that starts equal to the first enemy in the enemy battle order variable and increase it by 1 after his turn or back to 0 when it hits the max number of enemies. If the enemy taking action isn't the one that equals this variable force the script to end for every action he tries to take. Put the following script in check start of every direct effect an enemy can choose to do anything with:
battle: substitute attribute for variable (to load enemy info)
condition: side is enemy taking action (I think flag is on)
condition: turn variable is different then enemy battle order
no instigator action on
force script end.
condition end
condition end
if you use a check fail message, you will have to make a branch to end the script before the message appears so that there is no text.
3) When a party member finishes his turn change back target and apply the action status to put him back to sleep.
4) Now you need to remove the action status from the next party member. The hard part is finding out where to work. The following script after last member takes action should be modified to accomodate the kind of turn order you want, either in order, random, or via agility or some other stat. What will actually happen is one enemy and one member are being freed, whichever of them has the higher agility will go first.
member order = member order +1
conditon: member order is same or higher then total members
member order = 0
conditon end
(or temp variable = member order.
repeat while member order = temp variable
member order = 0 ? total members)
(or member order = variable determined by turn sequence)
use member order
member info load
confirm real action statuses (numb, sleep etc)
if flag 170 is off
target: action status remove
(might also need make active target, change back target, attribute for variable, variable for attribute, or member info save somewhere)
If the script didnt end, continue member order +1 until you come to someone who isnt dead, sleeping or numb. You might need a branch to end the cycle if everyone is sleeping or numb.
5) Manipulating the Turn Order - The easy way
make everyone stunned the very first round of battle, then unlock the first enemy and the first member probably by scripting in custom indirect effects that are constantly on. This method utilizes the default turn order of the battle system which is based on Agility. For enemies make sure to set the turn variable to his enemybattleorder number. If you can remove the action status at the beginning of the turn in the custom script you might not even need the above script.
5) Manipulating the Turn order - the hard way
Members: at the beginning of the battle cycle member order for each member, load stats, find the highest value, free that person alone from the action status. This will begin the cycle.
Enemies: Check the enemy stats on his enter battle script. Make about 10 variables or so that can be used to store the enemy stat values. Now compare them and set the enemy battle order to the one thats the highest. This is a pretty complex script and some complex mathematics.
* In the above scripts check total members and confirm that the enemy battle order is changing. If there is only 1 enemy or 1 member have your scripts bypass the entire treatment as it is obviously useless and uncalled for.
* what seems like one round is now becoming many. Keep this mind when considering your turn count for poison, number, lose turn count, and similar effects. 1 turn has now become 1 round. Members with poison or regen will be affected up to 4 times per round.