RPG Maker "System" Ideas

Have any interesting vore scenarios in mind? Post your ideas here, and others may use them to create drawings, stories, and other forms of entertainment!

Read the rules in detail here
Forum rules
Have any interesting vore scenarios in mind? Post your ideas here, and others may use them to create drawings, stories, and other forms of entertainment!

Make sure you names the subject of your post properly!

Remember, this isn't a forum for you to make request to draw your character. Please ask an artist in private directly.

Read the rules in detail here

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Tue Oct 04, 2016 3:32 pm

After playing World of Warcraft Legion, I might as well put down some thoughts:

Level Scaling: Unlike previous expansions where each zone is a certain level range, Legion's zones will have its enemy levels equal to yours (though its Suramar endzone is a straight 110). The simplest answer recreate level scaling is probably to overwrite part of the Game_Enemy's initialize method and add formulas based on the lead actor's level / level variable. You could also add a notetag on endgame enemies that exclude them from this scaling formula.

World Quests: This is essentially Daily Quests except that not all of them will be available and completing four quests in a zone (or for Kirin Tor/Wardens) rewards you a chest. That, plus rewards are kind of randomized. There are some scripts that add a real-time clock or have daily logins, so you could probably work on that to reset a quest-count variable or run a loop to activate switches for certain dailies.

Class Hall Missions: Slightly different from Garrison missions, each "member" has special abilities that can improve the chance of getting a certain item/bonus experience from a mission. There might be a script out there based on Altier Sophia or similar that is similar in the sense of sending out your party members.

Bodyguard: You can also assign a buddy to either fight alongside your or grant a powerful skill, but not in dungeons or raids. Ideally, you can determine when these skills can be used with a variable based on who is active and an event to parallel process the skill (or lack) in each map.

Artifact Weapon: Similar to a Skill Tree / Sphere Grid script. The Relic slots on top are similar to accessories that increase one of these skills.

Artifact Knowledge: Artifact Power is the currency for your Artifact Weapon, but Artifact Knowledge increases how much Artifact Power is rewarded and unlocks a few things like quests. AK can be assigned to a leveling variable, and in the common event/script of the item you are using to gain AP, this variable will then determine the multiplier.

---

Withered Army Training: This is a special scenario in Suramar where you can spend up to 2000 mana to get 20 minions and then go through a spider-filled ruin, which you can simply handle with a variable and multiple choice. If you were doing this as an Active Battle System, actually having 20 minions may lag the game, so I will attempt to revisualize this in the default battle system.

First, it could be simple to give at least two commands to your minions: a Focused attack that can attack a targeted enemy or an Frenzied Attack that hits random enemies but is 75% more powerful. You already have skill options that can hit enemies multiple times in a fixed or random manner, but you may need some scripts/coding to attack more than the defined number of time, especially if you're going to base this on the number/level/"HP" of the minions. Obviously, if the minions get hurt, their number/damage will decrease as well. Having 0 minions will end the scenario.

Next, these minions can also be used to open doors and sacrificed to teleport big chests, which can then permanently buff your minions on the next run. Just checking the variable/level of your minion can unlock these doors. For the buffs, you can either set up a permanent state on your minion or add these states when you start the scenario. You can also gain more minions/level just by finding them in the scenario.

Also, this scenario has a score based on the enemies you defeat, which determines your end reward. This can be solved with another variable.

===

Interrupts: This is just one skill that can be used to interrupt spells. This is especially important for some fights as some spells can be very dangerous. In RPG Maker, this is already a skill used to kick down enemies. However, you can also make an enemy cast a skill to grant them the CASTING state and another skill that removes CASTING (usually the powerful spell). You can then create your own skill to remove CASTING and probably set a one-turn stun if it is successful.

===

Did I cover WoW's Dungeons and Raids yet? The footnote here is that not only do damage and health scale by difficulty, but some skills might show up on higher difficutlies. Mythic Raids are especially of note here as some fights will change the mechanics a lot. For example, Normal and Heroic Velhari in Hellfire Citadel has three phases defined by her debuffs only for each phase (moving causes damage in phase 1, HP decreases in phase 2, damage done and received increases on phase 3). In Mythic, these debuffs won't drop, so by phase 3, you also have to deal with the decreased HP and the movement debuffs. For Normal and Heroic raids, you also have HP scaled by the size of your party (LFR is fixed at 25 and Mythic at 20). In Legion, two dungeons can only be accessed on the Mythic difficulty. Also, while most Normal Dungeons can be accessed at appropriate levels, Heroics and Mythics are available only at the max levels (and probably after a certain item level).

There are some scripts that adjust enemies based on difficulty. The simple answer, though, is just to have a switch for difficulty, either switching out enemies, coding a formula on their creation, or adding buffs on the start of battle. This switch will also be used for opening up certain skills.

On my next post, I'll review some of the WoW bosses and replicating their skills into RPG Maker.

===

Also, since Paper Mario is coming out this week, that reminds me of Mario and Luigi Paper Jam. In that game, Mario and Luigi has normal HP but Paper Mario has "copies" which only go down based on hits received. With two HP types in one battle, you would need a custom formula so that if the target/b is "Paper" and "Stacked", they receive one damage instead.

For the upcoming Paper Mario, I wouldn't know the specifics of some skills, but other than the card/sticker system, you can also charge attacks (I would use Instant Skills script) and the requirement of Things (summons) in certain boss battles.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed Oct 05, 2016 4:30 pm

Alright, here are some bosses from WoW and ideas of replicating their skills in RPG Maker.

Imperator Mar'gok - This is the Sorcerer King of Highmaul, who would not allow his kingdom to fall to peasant. He uses 4 skills throughout the battle, but he also has 3-4 rune stones that can enhance his skills throughout the fight. For example, two of his skills summons a minion and creates a shockwave, but once a quarter of his health is gone, he'll attune himself to the Empowered rune stone; this will summon a stronger minion and also makes his shockwave push others back.

For these 4 skills and three additional rune variants, you could probably make 16 skills of increasing priority when his HP drops in quarters. Alternatively, you could throw a switch or state that forces him to use those skills at that phase. But alternatively, you can just make 4 skills, and in their custom formula, you can add some effects when the state/switch pops up.

---

Cordana Felsong - Once a Warden, Cordana indulged willingly in Fel magics and caused chaos in the Vault of Wardens, a jail for the worst of criminals. But fear not, for the light protects its warriors. In this battle, some of Cordana's abilities can be countered by the player holding an orb of light, but there's only one orb...(A simpler version of this mechanic is held by God-King Skavold and the Aegis)

First, you do want to assign the orb of light to one of your party members. Cordana started by knocking the tank around while spawning bad ground (which can be cleaned up with the orb of light). Once a quarter of her HP is gone, Cordana will summon a shadow that steals your orb and becomes invisible; she will continue to attack until you kill the shadow and take the orb back. At half HP, she will then put herself in a barrier and the orb holder needs to find the invisible minion. She also summons a wall of ghosts on higher difficulties that can push you off the platform.

Anyway, in RPG Maker, you should decide who gets the orb, easily through a multitple choice and applying a ORB OF LIGHT state. You will also need to add states and formulas that interact with ORB OF LIGHT. If it drops from a dead member, you might want to have a turn-by-turn event that will put a ORB OF LIGHT object on the battlefield to grab when it sees no ORB OF LIGHT on your party.

When Cordana hides, while you could just hide her and summon a minion, you could also give her a HIDDEN IN SHADOW state instead that, in your formula, should make damage equal 0 if she has this state unless an attacker wields the ORB OF LIGHT which should dispel the HIDDEN IN SHADOW. Also, you should make sure that when that minion dies, it drops the ORB OF LIGHT for one of your party to pick up. So essentially, kill minion, pick up orb, then have orb holder attack.

When Cordana puts a shield on herself, you then summon a minion, but that minion will also have HIDDEN IN SHADOW. All you have to do is start the attack with LIGHT OF ORB and kill the minion, though once you do, you would need an event to remove the shield on Cordana so you can resume fighting her.

---

Yan'zhu the Uncasked - Gao Stormstout would stop at nothing to create the perfect brew, even when his brewery is invaded by monkeys and rabbits. Especially when he accidentally brewed up a flying beer monster. Yan'zhu was notable since it would gain three special abilities according to the adds that spawn before its fight.

Mapping out this encounter is fairly simple. All you need are a couple of switches (6). You can decide randomly which 1 of 2 to turn on for three fights, or you can use a loop to see if you activated that switch and roll again. I guess part of the Loop will look like this:

Loop
>Variable 23 = Random 1-6
>if Variable 23 equals 1
>>if Switch 1 is OFF
>>>Switch 1 = ON
>>>BREAK
>>end
>end
...
Repeat Loop


---

Galakras - Garrosh Hellscream had gone too far in attacking Pandaria and stealing away a piece of ancient evil. When you join the army to lay siege on his homebase Ogrimmar, you are stopped by one of his warlords, who ride upon this vicious drake. Fortunately, there are two anti-air towers that your raid can break into, but you also have to deal with her army, so you'll need to split your party.

Now, there are multiple ways you can simulate an assault by ground and two invasions. I'll list a few of them:

1. Multiple battle scenes. This is the easiest way to go, similar to fighting Valentino and Dodo in Super Mario RPG. Essentially, you'll fight minions until the first tower can be infiltrated, then you'll have a chance to send one of your characters into the tower to fight more adds, then you cut back to the battlefield to take care of the ground troops, then the second tower opens...

2. One battle scene. The same as above, but requires a creative mix of switching party members and summoning minions.

3. Split scene. What I mean is that when the tower is unlocked, you will fight two battles at the same time. Ideally, you will put two types of states on all sides so that only those with matching states (BATTLEFIELD and TOWER) can only hurt their respective counterparts. If you are good with coding, you could probably limit the target scope to those with the states. Of course, you may also face some BATTLEFIELD tanks that can hurt those in the TOWER.

After you take both towers and shoot Galakras down, though, the battle becomes simple.

---

Dragon of Nightmares - Sadly, the Emerald Dream became a nightmare, and everyone in it has succumbed to the curse of sleep. One, or four, such victims are the now renamed Dragons of Nightmare. Ysonir is always on the battlefield, but when their shared HP reaches 70 and 40 percent, the other dragon in the fight will switch off. In addition to spawning different adds, their key mechanic is that staying near the dragon will force a powerful sleep, so tanks have resolved to switching them around.

I'll be focusing on their debuff; just by staying near the dragon, at ten stacks, this dragon will stun you for 30 second. Thankfully, each dragon's debuff doesn't stack onto the others. In RPG Maker, not many people make use of the taunt mechanic, so instead, attacking the dragon will add a stack.

This will require custom formulas and scripts. In the custom formula, just make sure that attack the dragon adds a state of stacking. (one for stacking and another for the STUN). You will need a script that stacks states and probably another script that can transform states under certain circumstances. With Himeworks' scripts, you can use State Charges and Conditional States. So for example, you would have to attack one dragon, then switch over to prevent STUN.

Of course, there might be another reason instead of attacking all at once and taking a healing break. Perhaps each stack will also increase damage on a dragon, for example.

---

Ursoc - Another victim of the Emerald Nightmare. Why does it have to be a bear? Ursoc has two main mechanics to deal with. One involves two debuffs on the tank that increases damage and adds a bleed, but that's not what we're after. What interests me is the Barreling Impact.

Barreling Impact is one part of a fight mechanic. First, the boss will target one player of the raid. Last, the boss will create a shockwave that will damage everyone in the raid. However, that shockwave can be lessened by any player that stands in the way of the charging bear.

So this attack can be one skill (with a warning turn beforehand). I'll assume people will use Guard, and because Guard actually creates a state, we'll pretend Guard will be the interceptors of this skill. When calculating the damage, say it's 5000 to all targets, lessened by each person who Guards, so it may look like this:

c = 10000
$game_party.members.each do |actor|
c /= 2 if actor.state?(2)
end
return c


So each person will get 2500 damage at most. But Ursoc also applies a debuff to all interceptors that increases damage from the charging attack A LOT, so it's not recommended for the same group to soak that attack.

---

That One Breaker Ogre - I forgot the name, but he comes before Mar'gok and is notable for his mana shield. Sure, he casts a lot of spells, but his mana shield is pretty impressive. For one, no magical spells can harm him, only deplete his mana shield. Second, when his shield is depleted, he will recharge it, but a few people can then step in to also gain a mana shield. This is important since it will keep your party safe, but especially since one of his later spells drops a ball that can deal raid-wide damage if missed but massive damage if caught.

So first, there are some scripts by Himeworks that creates a shield. However, you can use variables to create a fake HP, and in your formulas for magic spells, if you are fighting this guy, then magic spells will deal damage to his shield until it is gone.

Once his shield is down, I would suggest having the first person to attack him gain the MANA SHIELD state (ideally based on a ratio of damage). Again, the formula should see if this state exists on your person and take away from a different variable. Of course, you do want the mana shield to come up before the first ball drops...I envision this ball will follow Ursoc's attack, that it damages the whole party unless a scan shows one member with the GUARD states which it will instead deal damage to the ones with GUARD, and of course it's ideal to have the one with MANA SHIELD doing the guarding.

===

...Hm, I think I have ideas for the "tanking" of attacks through guarding. I'll see what I can come up with next post.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Fri Oct 07, 2016 4:10 pm

Guard is a stable in RPGs, yet at times, its also underutilized. Sures, games like Kingdom Hearts and the Tales Series are thankful to avoid combos, but in the more traditional RPGs, you might only resort to Guard if you expect a big attack, but otherwise, you simply heal through the damage.

RPG Maker's Guard used to be hard-coded into its battle system. In RPG Makver VX Ace and probably VX and MV as well, Guard is the second skill in the database. Guard has a 2000 speed boost so it will always happen first in battle, and all it does is apply a DEFEND state on the caster. The DEFEND state does apply a special GRD perimeter, which is coded into calculations to reduce damage. I believe the current calculation is among the lines of damage/(GRD rate * 2) with 100% Guard as default. Also, Attack is the first skill on the database.

Anyway, the previous post had me thinking that Guard (or a skill applying a state to oneself) can have more purpose. Well, I'l split this post into to parts: Guarding to Tank and Alternate Guards.

===

First, I now realize DEFEND is state 9 by default (Poison is 2). Anyway, for the Guard mechanics I'm about to suggest, it's only important that you have a "defending" state applied to your character. You could switch out the GRD feature of the state for one that increases Defense or you could leave that part blank and calculate damage reduction in your formula when you b.state?(9).

The Cleaver - This attack hits all for massive damage. This is what most RPGs use to make use of Guard. Ideally, you would also have a "charging" turn before to warn the party. You don't need to to anything special here.

The Marker -This will be a two-turn affair; the enemy will MARK a player on the first turn, and then deal massive damage to that player on the following turn. Due to how the AI works, you can't expect the enemy to hit the same person twice. However, you could make that second skill target everyone and only deal damage to the player with the MARK.

The Soaker - This attack will deal massive damage unless it is tanked, which it instead deals damage to the tank. Since all four members of our party is already fighting, we can pretend that Guarding will make the person rush out to soak the damage.

First, we need to determine if anyone is guarding. A while back, I pointed out the any? method, which will return true if at least one person fulfills that condition, specifically if that condition is guarding:

if $game_party.alive_members.any? { |member| member.state?(9)}
damage = 0
else
damage = 9999
end


Ideally, it deals damage to the target unless one party member is guarding, which fortunately happens because of the skill's speed. After that, we just need to check b.state?(9) and recalculate the damage.

The Reducer - This attack deals damage to the whole party, but guarding will reduce its effectiveness. I used Nightmare Ursoc to demonstrate this, but ideally, you don't need all party members to guard this attack, just at least half.

The any? method above is in an if statement, meaning it'll only run once. To calculate how many players are guarding, we need to check each person, so a loop will work. This here is made to check each player.

reduction = 0
$game_party.members.each do |actor|
reduction += 1 if actor.state?(9)
end


The Intercepter - This is a mix of the Reducer and Marker; the enemy stuns a player and will deal heavy damage to that player...unless another player gets in the way and guards. You could either apply the any? method to redirect the damage to the Guard person, or you could use the each? method to have each Guard person take a bit of damage and reduce the damage the target will receive.

Hammer of the Righteous! - You don't just have to Guard to reduce damage. For example, if the enemy is going to use an attack to confuse and blind everyone, you can apply those states in your formula if the DEFEND state isn't active.

Keep Guarding - I'm reminded of Oakheart in Dark Heart Thicket where he will grab the tank. This gets me thinking that, using the Marker method, the enemy will continue to attack that target and the player must guard and heal to survive that damage. However, you could also decide that if the tank is dead and the Mark is gone before the onslaught ends, the enemy can destroy the party.

Alternative, you could be fighting a Medusa and she'll freeze a Marked member. That member can choose to Guard, but when she puts a petrification, check for DEFEND in your formula and replace it with a SHIELDBEARER state. Until the petrification wears off, SHIELDBEARER can increase the defense of the rest of your party.


---

However, there should also be some punishment so that one person doesn't guard all the time...

Fresh Wound - If you guarded against a powerful attack, being hit by the same or following powerful attack will deal massive damage and probably kill you. This debuff is demonstrated in the Ursoc example and you won't be able to use the same two members to tank the attack. So ideally, one half of the party will guard that attack and then the other half will tank the second attack.

Lesser Fresh Wound - If you guard against a powerful attack, you will receive more damage from other attacks. Or you will be stunned. Or you won't receive much healing. In other words, guarding will give you a state that won't kill you on the next attack, but it would either make you use a dedicated tank or deter you from using the same tank two times in a row.

Cleave - To keep from having multiple people from guarding what should be a one-guard mechanic, you can also deal some damage to the target's neighbors. I forgot the keyword for a member's position, but a leader's data is 0. So ideally, as long as that data is more or equal to 0 and less than the party size (up to 4, down to 1), you also reduce the HP of the members one digit away from you.

Gong Ringer - Sometimes, guarding the wrong attack can have bad consequences or good depending on the mechanic. Think of this like a reverse Soaker: An attack would deal heavy damage to one person. If a person tries to block it, it instead makes a shockwave that damages the party.

Or alternative, an attack is a shield breaker and Guarding will only shatter the shield and deal more damage to you.

Can't Defend - Guard applies a state, but what happens if you already have a state that doesn't mix well with Guard. You can adjust your damage formulas so that if a person has DEFEND and NODEFEND, a different damage can happen. If you use Himework's Conditional States, you can use notetags to either apply the DEFEND state or replace it based on an existing state.

For example, the enemy inflicts you with Big Bug, a state that deals some damage over time. However, if you try to Guard while a Big Bug on you, it'll jump onto your face and force you into a Panic.

===

And now, for some alternatives to Guard:

Taunt - Taunt is another skill in RPG Maker that ideally makes the enemy more likely to attack the target with that state. This state, of course, contains a special perimeter that affects the likelyhood of being targeted. You can try to have Guard contain both the DEFEND and Taunt states.

Counter - Counter might be another skill, but if it's not, you can write in your formula that if you have this state when being attacked, a.hp will go down as well.

Hide - Hide is the reverse of Taunt, where you are least likely to be attacked. It wouldn't do to combine this with the DEFEND state as you're not likely to be hit.

Shield Throw - Essentially, you're throwing your shield to another character and giving them DEFEND, probably giving yourself a UNDEFENDED state as well (formula or multi-skill script). Alternatively, you could also throw your shield at an enemy and Guard at the same time.

Shield Guard - You could Guard and DEFEND, but if you have a shield equipped, you could ideally get a STRONGER DEFEND. I pointed out before that you can use a.equips[1] to see if you possess a shield, though you may also need a way to check if it is a shield and not a second sword (notetags, armor id). On the other hand, equipping a second sword could have you using COUNTERING DEFEND instead.

Shield Wall - You can go Reinhardt and apply a DEFEND state to everyone (or just apply a state to the user and check if he has this state in the formula).

And speaking of Shield Wall, Reinhardt's shield can absorb 2000 damage. So, assuming Reinhardt is going solo, you create a formula that gives a $game_variables[x] = 2000 and a REINHARDT SHIELD state. In the formulas of skills that can be blocked, after calculating damage, check if REINHARDT SHIELD is active, and if it is, you instead subtract from the Reinhardt variable and reduce the damage to 0. Of course, when the Reinhardt variable is 0, you instead remove the REINHARDT SHIELD. If you don't want to spam shields, you could just set the Reinhardt variable to 2000 at the beginning of the fight and recover about 500 each turn when the REINHARDT SHIELD is not active.

You can also pull a Zarya and increase a variable in relation to how much damage you took, which in turn can be used in your formulas to boost your damage.

Move - Since I visualized Guard as moving into to intercept attacks, you could also visualize how moving can give you states. Perhaps you have a Move to Front skill that places that character in the Leader position, which is granted a Taunt buff; I think of a fight where having a bomb state can damage the party when it blows up unless Move to Front is used, where it'll damage only the leader and the enemies.

I also think of a Sniper's Nest state; it'll decrease the chance to hit for melee skills but will make you immune to melee attacks in their formulas. Of course, if you are the only Sniper's Nest user alive, you only receive a smaller chance to evade attacks.

---

And more skills using Guard as a support. We are using the fact that Guard has a speed bonus:

Ricochet Shot - Since Guard is applied first, you could make a skill that increases in damage for each person guarding. Just check $game_party.members.each and count the total.

Alternatively, you can also try a Phalanx formation. In other words, have people guard, then use a formula to perform a series of states. At the most, this will increase the attack and defense of all party members, but it'll also stun the guards until the buffs wear off.

Secret Weapon - This may be a lengthy attack until it is finished. It's like this: One person will BUILD this skill, and then while this person is stunned building this skill, other members need to use Guard until the skill is ready. Perhaps it's just necessary to have one person put up guard as if veiling the project, or if the Builder is targeted, damage can be redirected to the person using DEFEND through $game_party.members.each instead. With some scripts or variables, you could choose to do damage each round, increase damage multiplier, or require a minimum number of turns until you cancel your Guards, when you can then unleash your ultimate attack!

...That is the theory, at least. You do have to see if DEFEND and SECRET WEAPON are up at the same time, but changing SECRET WEAPON to an actual attack made require some coding and scripts or good use of Force Action.

Warning Shout - This skill should have a higher speed bonus than Guard so that you can apply a state to everyone that turn that, when Guard is used by the others, can then be transformed into a different state such as an extended Guard or a buff.

Also, you could turn this into a Command: Shield Charge; in every battle at the end of each turn, check if those transformed states are up, then Force Action a Shield Charge into a random enemy when removing each state.

Greater Healing - Since Guard goes first, you could probably have another character heal them for more health or remove more debuffs since they are in effect not attacking at the moment.

===============
===============

Finally, here are some examples of Guarding in fights using what I explained:

1. Each turn, the enemy will create a Miasma on everyone; this attack applies a state that stacks and increases the damage from Miasma. You can instead have one party member Guard to gain three stacks of Miasma on behalf of everyone else. Ideally, you want to have one person guard two times before switching over to another person. However, the enemy will also Strike from the Mist at intervals to deal heavy damage to Guards as well as Swamp Glob that can prevent a person from guarding properly, ensuring that soaking Miasma can become a challenge.

2. You have awakened a dangerous dragon while cave-diving! At first, the battle goes as any battle goes, but when a quarter of its health is gone, the cave will start to cave in! To prevent this damage, you will need to assign at least one Guard at any time to negate this, and thankfully, the treasures you found gives an attack buff to make up for this. But halfway in the fight, the cave-in becomes stronger, so you'll have to have two Guards up (.each and add 1 for each guard state) and you get another attack buff. And of course, when you're down to the last quarter of health...

3. Your Guard becomes meditate as your party is assailed by a vicious ghost. You cannot damage this ghost in the physical realm and so you need to dedicate one person to guard and bear the Tempered Strikes, but attacking back will wipe away the stacks you earned. However, the ghost isn't blind to your antics, so from time to time, you will also need other guards to soak up his screeches and stuns (Check for someone who is Guarding but does not have Meditative stacks). When your dedicated guard becomes dedicated, he will have the state to deal damage to the ghost and end the fight!

4. You face a Gorgon in a trapped maze. In the first turn, you can have either your left, right or both party members Guard and the Gorgon will petrify them. This in turn can negate the traps on those sides, which in my case adds a stacking debuff increasing damage from that type of trap. Of course, the petrification wears off and the Gorgon will cast the spell again, so you may want to have the other Guard switch. The reason you don't want to have both guard/petrify at the same time is because reasons (unblocked traps increase your damage, statues can get debuffs, number of turns).

5. The final boss has your last member down to his legs, and he will perish you in a powerful beam! So all you can hope to do is Guard! As your HP dwindles, however, another party member will revive, and you should make him guard too. The final boss continues on, though, but your other two members should revive and guard as well. This doesn't make the boss happy, so he pours more power into his beam, even going as far as to whittle away your max health, MP, and even your level! But even though it looks like the last attack would truly be your last, you sudden BUFF up and manage to push the beam back, replenishing your stock and stunning the boss! A rather interesting interactive cutscene and a dramatic way to finish off this game!
Last edited by polyedit2000 on Fri Oct 14, 2016 5:41 pm, edited 1 time in total.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Oct 10, 2016 2:13 pm

I just played Paper Mario: Color Splash this weekend. Having never played Sticker Star, this a departure from standard RPGs and it's not all too bad. I'm not here to give a review, though, and will instead point out a few RPG elements that might become RPG Maker:

Damage Formula - The damage formula is rather simple: damage = a.atk. Guarding (or reading b.state?(9)) would simply cut the damage in half.

===

Color Boost - Cards come in uncolored and colored forms, which will affect their attack power; you can use some colors to color a card. You can use Yanfly's Instant Cast script to create a skill that will boost attacks (you may need more to make that skill only work one time per round).

---

No Levels - There are no experience points, but Mario can still "level up" two ways: he can acquire "hammers" from enemies to increase his paint gauge (boosting uncolored attacks and used to paint things in the map) and he can get an HP increase after defeating certain bosses (also can erase some enemies on the map). Mario's attack and defense stays about the same, though.

One way you can try this effect is to have levels only increase your MP (other charts flat), and bosses will give a permanent boost to HP. The other way is to have enemies fill up a variable to later affect your MP and have Bosses level you up. But anyway, if you don't want enemies to power-grind you, this Paper Mario seems to have the formula down (as enemies reward colors, coins, hammers and cards).

---

Cursed - At a certain point and onward, Kamek will fly into a random battle but isn't an enemy. He will instead prevent you from escaping and mess up your cards (only 6, multiples of one card, all face down). However, you are awarded 300 additional coins if you complete this challenge.

Obviously, you will need a switch after Kamek shows up, and another switch/variable to determine his curse. You can then use this switch to code a laugh before the transition or in the beginning of a battle, which you then dole out the curse.

---

Mini Paint Stars - Paint stars are the main objectives in each place, and grabbing one will guide you to a new place. They also dish out paint and color and is used to reset Roshambo temples and bonus doors. You can use these to replace paths, effectively turning each place in a dungeon of its own. These Paint Stars can also be placed in places without battles and when you do find them, you can teleport out of that place.

First, you simply need to flip a switch upon finding the Paint Star to reveal the next location or unlock paths, probably need to flip a few more switches to reset some events. That's simple. If you want to add a teleport to only work with places you've already cleared...

To a teleport spell, you make a common event and move to map location X and Y and make sure it doesn't activate in battle. Condensed down, you would place the teleport behind the conditions of 1. current map id and 2. switch associated for that place. This will of course require a lot of coding.
Last edited by polyedit2000 on Fri Oct 14, 2016 5:40 pm, edited 1 time in total.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed Oct 12, 2016 2:39 pm

So I had this idea after a battle to show the enemy who defeated you at the gameover screen. Because the enemy would look the same as his battler sprite, I do have the option to put the sprite in the Picture folder...Which would effectively double my game size. So the question is, how can I show my enemy as a Picture without adding a duplicate to the Picture folder?

For example, say a Goblin defeated me and will put me in a pot, so I want to show a Goblin...Well, I can use Show Picture to paste a background with a cooking pot that will go over the existing battle scene if I put that picture in the Picture folder. I could also do that with a Goblin if he's in my Picture Folder, but say I want to simply use the Goblin from my Battler Folder...First, this is the Script Call for Show Picture:

screen.pictures[number].show(file_name, upperleft/center, x, y, x zoom, y zoom, opacity, blend type)

number = the id of this picture object, also an attribute of the picture object.
file_name = "file.png"
upperleft/center = 0 or 1, which affects x/y and rotating point.
x/y =position on the screen
x/y zoom = 100 (1x scale)
opacity = 0-255
blend type = 0, 1, 2

In this example: screen.pictures[35].show("Goblin1.png", 0, 50, 50, 100, 100, 255, 1)


This Script Call isn't useful since this method from Game_Pictures/Game_Picture will be rendered through Sprite_Picture, so we're overwriting this part:

class Sprite_Picture < Sprite
def update_bitmap
if @picture.name.empty?
self.bitmap = nil
elsif @picture.number == 35
self.bitmap = Cache.battler(@picture.name, 0)

else
self.bitmap = Cache.picture(@picture.name)
end
end
end


By default, update_bitmap displays nothing unless it has a name, which it will then grab from the Picture folder. I just made it so that if the picture's id number is 35 (same as the Goblin), it will instead grab the picture from the Battler folder. Please note that the 0 in Cache.battler is the hue which we haven't defined, so it is zero in this example. While I have not tried Move Picture with this, I was able to show the goblin this way, so I feel it can be affected by events.

---

So all I have shown you is how to grab a picture from another folder that can be affected by RPG Maker's picture events. These are ways you can use pictures, especially with this little mod:

1. Fake Game Over Screen. You could create a new Scene_Gameover, but you could also plant a picture and some music. With Cache.system, people looking through your folders will not be spoiled about such a scene in your game.

2. Cutscene. Perhaps when you defeat Baby Bowser, you want Kamek to come in and make him grow. While you could end the first battle and have characters walk in, you could also stay in one battle, show a background and have Kamek slide in. You can also zoom into Bowser while turning all pictures black to transition to the next battlefield. And while you're at it, you could have Baby Bower rise from the rubbles of his castle before you erase those pictures once you have the next boss phase in place.

3. Message Busts. This is seems simple, showing the picture while talking and adjusting while not. If your busts are battlers, this will save some space.

4. Paper Enemies. You could have enemies replace the sprites on the map if you want to go this route, probably need to zoom out on the enemy. I'm not sure if Show Picture will follow the event around, so here's the Move Picture script:
screen.pictures[number].move(upperleft/center, x, y, x zoom, y zoom, opacity, blend type, wait)
wait = the number of frame (60 per second) to complete the move from initial to defined points


Also, an event is $game_map.events[event_id], and event_id can return the current event's id.

---

5. Summons. When everyone goes to space and the almighty Fan blows everyone into the screen, that's epic. Of course, we may want to be picture-perfect, so we have to take account with the current enemies:

a. Ideally through a loop, we want to register the battler's name and other details into a set of screen.picture[n]
b. We also determine if an enemy is already dead, which we replace the picture's name with nil. The update_bitmap method shows that this would simply return a blank picture.

You could also try to single out an enemy for an Omnislash this way.

===

Also, you could try using $data_enemies[n].battler_name in place of a filename. With multiple bad battle ends, I could have set the picture for each possible enemy encounter but managed to have one short script call set up the picture based on a variable.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Oct 17, 2016 5:09 pm

After playing some more Paper Mario: Color Splash, I got a few more things...This part I'll put in spoilers for people who haven't played this far.

Spoiler: show
Steak Fight: You literally have to fight a steak in order to cook it, which ends in three turns. If you spoke to the Toads, you would have to "tenderize" it half-way, then season, cook, and flavor it. Once you figure out the order of flavors, the fight should be easy.

So obviously, this can be a vore-related battle since the steak hops back to the dinner plate. I can't add spoilers inside spoilers, so let me break down how to achieve this fight, assuming you don't use other skills like ice:

Tenderize- Most of your physical skills would work, but once the meat is cooked, you can't tenderize anymore. In your physical formula, make sure you deal 0 damage when any level of Cooked is active.

Season- For best effect, this step must be set immediately before the Cooking phase. You could set your physical skills to erase this State upon hit. Also, when you Cook with this Seasoning, you could also replace the Season state so that it doesn't get removed by damage accidentally. Alternatively, just have try to last 1 or 2 turns.

Cook- Skills that are fire-natured tends to work, but there is one attack that gets the best
temperature. Since cooking should negate tenderizing, we instead have these fire skills deal 0 damage to the steak and instead increase a "temperature variable". Obviously, you do not want to burn the steak.

Zest-The last step is just to add flavor, meaning that it shouldn't be before Cooking. Like Seasoning, just have the Zest replaced by Soured if you cook this steak with fire skills, because if you Zest after the Cook state is on, it's not going to change Zest.

---

Again, this is the order of cooking a steak:
physical damage, but 0 it when Cooked
Season be removed by physical damage but not by fire.
Cook with variables
Zest before or after, definitely after.


From what I talked about in the spoiler, you could do an alternate battle system. There are many different ways, but here's one using what's available in the default battle system:

-First, let's set a good amount of turns since we are not really defeating our enemies. You just end the battle when the last turn comes (and you also make a skill to end the battle early).
-Next, our skills should increase a variable when it hits. There are probably multiple variables like Tenderizing and Cooking. T goes with physical skills and Cooking with fire skills.
-You need many states. Perhaps you'll add them through formulas with with Himework's Conditional States, but due to the delicate nature of cooking, adding a spice at a wrong time can remove or morph the flavor of the fight. Also, some states will be used in formulas to negate variable gains, such as Cooking will no longer allow you to Tenderize the meat.
-Once the battle ends, you'll need to calculate the taste of the dish. Easiest way is probably to check the enemy for the desired variables and states.

Anyway, that does make me wonder how other recipes will work.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Thu Oct 20, 2016 4:29 pm

Timer - The Timer is an event button that either starts a Timer at some minutes and seconds or stops it. All it will do is count down. The main way to use this timer is with a Conditional Branch, which can measure the Timer based on the current time and above or current time and below.

There is only one Timer, so Starting a new timer is the same as resetting it. It should also persist through battles and map changes as well. There are few RPGs that use the Timer, and that is usually to simulate a bomb that must be disarmed, a crumbling building, or digestion.

---

Note: I don't know if Stop Timer resets the time to 0 or freezes the time. Therefore, I assume the timer will reset. In other words, remember to turn the Timer off, preferably after you checked the Timer.

1. Timed Door - This concept is simple. Have one button turn the Timer on. Make a door and have it take you to another room when you reach the door and your Timer is greater than 0; if you reach it later, the door won't open. You could also have the button turn a switch on so that only one timed door reacts to that switch.

a. Alternative, you could have the door open once the timer reaches 0. For this, you could try to preoccupy your character's time by having them avoid patrols or turning off overloading devices.

b. You could use more than one Conditional Branches. For example, it's Game Over if your timer officially reaches 0, but if you get to the door between 0 and 10 seconds, you'll arrive only to hear the final countdown, too late to stop them anyway. Or perhaps you have 5 minutes to your sentence and your "guard"/spy comes at the last minute, give or take 5 seconds.

---

2. Parallel Condition - A Parallel Processing event will be active even when another event is active. Once you start the Timer on a regular event, you can Parallel Process the Conditional Branches. Ideally, when your timer is at 0, you fail (You should ideally use a switch to prevent any mess with timers if going back.) This can result in a game over or ejection from the scene.

The main difference between Parallel and a door is that a door only acts the 0 time when you reach the door whereas a parallel event acts once the time reaches 0 on that map.

a. If you happen to find a guard schedule, you could fill a walkway with regions. Then you have a limited amount of Time to get to a safe shadowy spot or else you'll be evicted from the lighted region. The timer then starts again, allowing you to continue on.

b. You could also try to flip switches and variables when certain time intervals come, like while you have a 5-minute timer to get to the front of the train, the doors close off when 4/3/2 minutes, forcing you off the train early.

---

3. Battle - In the Mario and Luigi series, there were two bosses that had timers despite the turn-based system. A pillar in Dream Team had a countdown once its HP hit a certain point. King Bom-Omb's timer starts from the beginning, but the timer can be stop. The battle system's events can activate at the end of the turn, after an action, or at a moment. Also, please note that the Timer is currently coded to stop battles when it reaches 0; you could code this out of the Game_Timer's update, or you stop the timer at 1 second.

The Timer's script call is $game_timer.start(x) where x is 60 frames per second. $game_timer.sec returns the timer's seconds (frame count/graphics frame rate), so it'll return seconds. If you can record .sec *60 in a variable, you could ideally record the time, which can allow you to:

(($game_timer.working? sees if the timer's on or off))

a. Pause the timer when the enemy bomb king is stunned. Just record .sec and stop the time, then when his turn starts again, apply.start(variable) to restart it.

b. Certain attack formulas or events could record .sec for the current time and then add more time to the variable or .start((.sec * 60) + x) before calculating damage. Good for delaying explosions.

c. Instead of blowing up, you could have enemies base their attack power on $game_timer.sec. For example, a clock enemy will add many status effects if the timer reachs 0 based on your dilly-dallying. However, its battle formula will also change to remove 1/4 of a target if it happens at 15 seconds.

---

4. Event - This is assuming you have one event to start a timer and stop it in one run. By doing so, your character should stay in one place.

a. Turn the computer on, and you have 10 seconds to guess the right password.

b. You could also use Loops, so you can retype the password until time is up.

c. You can also button-mash. I may have said this before, but in a loop, have a button-press turn on a switch and else turn it off so it doesn't build up your button count. Perhaps you need to crank a gate close before reinforcements arrive.

d. "Timed" button presses, as in pressing a button to turn a switch on which, depending on Timer Conditions or .sec comparisons, can register as getting the right time. Perhaps used to make your character jump forward at the right times while still working on a time limit.

===

First of all, you can't use a timer for scenes that ideally uses two timers or for minigames that requires timing you don't want to see. However, making a timer is simple as you only need to change a variable 1 at a time, which you can place in a Parallel Process event or in a loop.

But anyway, you don't need to restrict the Timer to one epic escape scene. For me, who makes a cocooning game, you can find some cocoons and will need to tear them apart in a certain amount of time, either granting a reward or dealing some consequences.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Sat Oct 22, 2016 2:42 pm

There's two items this time, and they pertain to battle.

First, we have Force Action. This will make a specific character cast a specific skill. There are three types of targets: It can be casted on a random target, it can be casted on the last target the caster hit, and it can be cast on a certain position in the party (i.e. it will hit the third member of your party, not the third member of your database). Also, the character/enemy you choose as the caster will influence the power of the skill.

Since this fires off a skill, the main place you can use Force Action is in a Battle, either in the Troops Page or in a Common Event, which you can place in a Skill (possibly wepaons and states as well). (It might be possible you could place this on skills you would use in a map, but I haven't tested that yet.)

Of course, the second item is Common Events. I already may have covered this or you might already use this to save some coding on your Events, but when it comes to battle skills, this is mainly the way to add extra event stuff to Skills, including Force Action. Please note that the Skill comes first, followed by any additional features like Force Action. Thus, Force Action's last target will usually be the target your skill hit.

Also, save and check your scripts. Sometimes, a variable or method that should work might not work properly until it will.

This guy has a few examples of skills with common events.

===

Cut-in and Double Attack- Let's start with something simple. Perhaps your skills does two cleaves. All you have to do is put the Common Event in your skill features. Next, your Common Event should have Force Action, and that's it. Also, you can have stuff like pictures show up, so if you want a picture of your character readying the second slash, just Show Picture and animate accordingly.

Alternatively, because of Force Action's last target option, you could have your first skill do nothing so you could have a cut-in "before" the damaging skill.

Dual Wield- Okay, supposed you have two swords and want to have two attacks. In your damage formula, you may want to check that your character can a.dual_wield? , a feature that gives classes the ability to equip two weapons. You can then simply check if a.weapons[1] to see if they have two weapons; I believe if a weapon is equipped in the left or right, it'll be treated as weapons[0] or the first one, but you can also check that as well. Anyway, if both slots have weapons, you would want to deal reduced damage and turn on a switch.

Now, when you run the common event, you want to check if that switch is on. If it is, you will cast a second attack with Force Action. Also, if you use the same skill, you might get stuck in an infinite loop of attacks since that attack might reference the Common Event in it, so either use a different attack or put in switches/variables to control how many times a skill works. Also, you want to turn off that switch so that other characters without two weapons can't double attack, either at the beginning of the first skill or at the end of the common event.

Quick Time Events - I'm not here to tell you how to make QTEs, button-pressing minigames in a battle. However, I can confirm the button-checking conditions work as I am using my button-masher event here. For example, I decided that I may have attacks that might cocoon (stun and increase damage) the whole party, which would suck, so instead of adding the cocoon status in the skill, I can add the state under the condition that I failed to button-mash within the time limit.

Other attacks you could use QTE for:
-Mario's Timed attacks, hitting a button within a time limit to either add extra jumps or to hit (or fail) a hammer.
-Mario and Luigi's dodge/counter, show a picture or animation as a cue, press the button to react and deal damage back to the enemy or get hit by the enemy.
-An attack that "cages" you quickly followed by a powerful attack.
-Boosting Summons like Final Fantasy 8.
-Ganon Tennis Match, looping button presses until a variable decides you have enough.
-Power Bar to determine power of skill, using at least two pictures to determine the follow-up attack.

Also, you could probably make a multi-stage vore scene with a few labels. If I was using my button masher code, I would put a condition after each one to either jump to the previous button masher (or success) block or to move to the next block. However, I might also add another variable to limit how long I can stay in this series of mashing.

Vore - Some people have used common events since 2000 to create vorish dialogues. Even I at one time used this to have Kirby suck up enemies. Simplicity at its best. But yeah, you can add a little bit of dialogue, such as a rallying speech to a buff shout.

For example, let's say you are fighting the final boss who has a state that keeps him immune to all your attacks. If you do attack, with a common event added, he will say that he cannot be hurt; you either check if he has that state or you record a $game_variable based on b.enemy_id (check if he's .enemy? first). Anyway, once you do use the crystal to remove his state, he shouldn't be saying that line anymore. Also, you could make it so that the final boss can truly not be defeated once he's at 1 HP unless you Attack a.k.a. plunge your masterful sword in him.

Misc Skills:
-A commanding shout that makes other characters attack. In the common event, you could check if that character is in your party and then unleash a specific attack. If you have a specific party composition, you could even unleash a special attack!
-Your attacks may do damage or have a chance to be in a Dynasty Warriors clash, where you could either win a more powerful attack or lose with a counterattack.
-A skill that made differ depending on the weapon involved. Daggers and Swords can both rend, but one deals poison and the other deals bleeding.
-You can use variables to randomly decide your following attack like Metronome. Or you could use variables to determine a specific attack, such as if you are fighting in a specific terrain.
-Your attacks could probably deal a Steam skill if you use a water skill on a fire enemy. Also, if you throw a bomb, it usually damages everyone, but some enemies might eat it instead...
-A rainbow skill from Chrono Cross required you to have six states in order to work. Also, if your allies have certain weapons equipped, you could use the Power Blaster! Or if you are vored/cocooned, a cutting skill could be used to free you instead. Or you could throw hammers if you have a state...
-Your skills could hurt you from backlash.
-An enemy uses Run Away to go down a hallway, which can result in some QTEs to dodge obstacles or button-mash to keep them from Escaping.
-Some special skills like Steal, Scan and Transform were made this way before the coming of scripts.
-An attack that deal damage only to the leader of the party.
-An interesting boss mechanic: A robot that's part of a gunship, the robot being immune to your weak weapons. Attacking his turrets will launch a volley skill at the boss.
-Interactive CPR. Lengthy for a revive, but it adds drama, right?

---

I haven't covered using Force Action in just the Troops page, but here's what you could do: If you are making map encounters (enemies you can touch on screen), you probably worked out how to make Preemptive and Ambush conditions work. One thing you could do is to have Preemp/Ambush also turn on a switch that, in battle on turn 0, will force you or the enemy to deal the first attack. This is similar to how Paper Mario starts a battle (jumping on Spinies is bad).

Also, this in an interesting dynamic cutscene: you find a boss battle where your future teammate is nearly injured. You could have this scene play out automatically, using Force Action to use a Cure (condition based on having the skill) or a potion, or if you somehow lack that, the teammate's hp starts low. Or perhaps in the middle of the battle, your teammate finally opens up a tome and you can choose which skill he can cast.

Also, for the robot boss above, at the end of each turn, he will either "attack" with the remaining turrets or he will replace the dead ones.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed Oct 26, 2016 1:26 pm

((Hope I don't have to remind you, but try not to overwrite your default scripts. Instead, you would want to copy the method you want to change and place it lower at the list where you download scripts. This makes it easier to edit/delete the method you are working on.))

I just realized the alternative way to create a double-attack skill. In your Game_BattlerBase, there are methods that sets the skill for your Attack and Guard commands; they return 1 and 2 respectively, which are skills 1 (Attack) and 2 (Guard). If you want to set a double-attack, check self.actor? (or write the attack method under Game_Actor) and then check if you have both weapons. So your method should look like this:

def attack_skill_id
if self.actor?
if self.weapons[0] and self.weapons[1]
return 3
end
else
return 1
end
end


Of course, your formula for your double attack should be halved as not to make it more powerful than a two-handed weapon of the same value. Anyway, this method and guard_skill_id should affect both players and enemies due to being in Game_BattlerBase. For my game, which makes cocoon states, I can replace my attack and guard with skills that instead remove some cocoons...Ah, you could also "equip" special weapons like a rail gun or have limit breaks at 100 TP.

Here's another State that plays with this: Slime, which negates guarding or rather turns Guard into Pass.

---

Alright, let's step away from event buttons and look at stomachs. You've probably played some RPGs that has you crawling through a stomach, but let me remind you that sometimes the guts doesn't have to resemble flesh (Look at Ni no Kuni and Mario and Luigi : Partners in Time) or have a regular stomach structure (Kingdom Hearts and Saga Frontier). Anyway, here's some diddling with stomachs.

Health Level
Not everyone is the same, especially in their stomachs. Some are vegetarians while others indulge in junk food. Here are are a few more examples of a vore dungeon's health and how they would affect you, the prey.

Normal - Default, assuming there is a countdown timer for digestion.
Peptobismol - Digestion timer is extended.
Sick - You're likely to encounter more antibodies and viral enemies.
Hungry - More obstacles in the stomach.
Plugged/Constipated - More obstacles in the intestines.
Stomach Cramp - Fight the Stomach Flan.
Undigested - Fight Food to unlock the way to the intestines.

I would guess you could use one or two variables to decide which kind of stomach you'll go into. It might also add some personality to your people.

Bathrooms
I haven't played enough vore dungeons, but I figured your reward for getting out is to be out. Again, you can use some variables to randomize where you get out; at least one to associate map ID from the big world and another to randomly determine your toilet point, and maybe another in the event you want to narrow the results further.

For example, if you got vored by a girl in school, it's not likely she'll take a dump anywhere, so the map ID limits the toilet selection to the ones and school, and another variable should limit her to girl bathrooms. (Or for simplicity, you could just assign one variable to assign a specific toilet for each pred.)

Meds
Did I mention using items on maps? Anyway, there's two I can think of: Tums/Peptobismol to reset the digestion timer and Laxatives to increase your speed. These items should use a Common Event, and in that Common Event, you would have to check the ID of the maps you're in; While you could event the start timer for each Map ID, you could also turn a switch when the ID matches and then check for that switch.

For Laxatives, you would have to dive into Game_Player and look for your move speed method; it should have something like move_speed += can_dash? ? 1 : 0 in it. Before that, you could also put down move_speed += $game_party.leader.state?(LAX) ? 1 : 0. If this works, you should be moving fast if you have Lax on you as things go out faster...Also, please note that $game_player is the map character representing the player and not based on the first person in your party, which is why you can't use $game_player.state?().

Also, you could change can_dash?'s method so that slowed people can't dash and Lax-covered people don't walk. Take note that can_dash? also returns false for what looks like move routes, so you may also want to make sure your changes to move speed can't happen during what should be cutscenes.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Oct 31, 2016 4:36 pm

Sometimes, you might come across a script that is more flexible than what you use or your current script has limitations. For example, Himework's Transform Effect felt like it would change the graphics only for that state while NeonBlack's Graphics Change could be adjusted for multiple characters; I changed to Neonblack's mainly because I wasn't using the skill-changing part of Transform.

However, you don't have to change all the scripts just because they look better. For example, I use Himework's State Charges and I was thinking about NeonBlack's Stacked States; the latter is designed to add the stacks together (5 stacks of poison = 25% whereas 5 charges of poison = 5%). In the end, I stuck with Himework's State Charges since switching over meant rewriting my conditional state code for my cocoons and there weren't much states I would use the additive features for.

...I also realized that Himework's State Face is more similar to Neonblack's Graphic script in function, except that Himework's script is placed in actor notes instead of state notes and it only covers faces (might be easy to edit to make for characters and battlers).

===

Skill Rating (Enemy)
When you design an actor, you figure which skills the player can use. Designing an enemy is a bit different because you are choosing what the AI can select from. These are the limits of the AI:

1. It will use the skill of the highest rating with a chance to use a different skill 1 or 2 ratings below.
2. There are 10 levels of ratingss you can choose from.
3. Conditions can be set for some skills, but you can only set one condition per skill.

Like other parts of RPG Maker, there are scripts you can use to change how to target players or specify the conditions more specifically. However, I'll post rating lists that should work in the default system.

---

Basic
First, an example of how the list would work:

Attack 5
Guard 5

Both skills have an equal chance of being used.

Attack 5
Guard 5
Fireball 3

Fireball has a very low chance of being used

Attack 5
Guard 5
Fireball 3
Ice 6

Ice now is the higher rating skill, with Guard and Attack having a lower chance of activating. Fireball is more than 2 rating and will not be activated.

Attack 5
Guard 5
Fireball 3
Ice 6 (HP less than 50%)

Attack, Guard and Fireball can be used. This rating will continue until the enemy is at 50%, which it will then use Attack, Guard and Ice.

Attack 5
Guard 5
Attack 5
Ice 2 (HP less than 50%)

While all skills have equal rating, because you have two Attacks, you're more likely to get Attack. Also, Ice won't activate even with half HP because the rating is lower..


---

States
Ideally, you should not use states that restrict you like Death, Sleep and Paralysis, or states that the enemy is immune to anyway.

Counter - Say you give a Malboro Poison...set a skill's ratingto high and give it the (Has Poison) condition, and you could use a skill that removes the poison and heals it for a percent of its HP. You could also make the enemy do nothing (but puke) if it really don't like Poison. Or you could spray it and put it in a vorish mood.

False Paralysis - What I planned with my Cocoons is basically this: if they are Cocooned, they instead choose the higher rating skills of wiggling (or a special move that is available to them. Because the Cocoon is not an actual paralysis, you would also need to add a light Stun state or check if the user has Cocoon and 0 the damage so that the enemy won't attack using the skill it already selected.

Light Transformation - You're fighting a Mad Scientist, and he drinks Potions that gives him Brute Force or Magic Unbound, each with their own list of skills. Or perhaps you'll fight a Harpy that takes to the sky and Flies (with attacks having a chance to ground her).

Actual Transformation - With a Cocoon, some enemies like Caterpillars could transform into Butterflies. However, Transform Enemy is an event button, so one way would be to call a common event through your skill, but Transform will select from a list of enemies. You can get around this by putting a.transform(enemy_id) in your formula where enemy_id is the id of the new monster you want to change to; you also want to check if a.enemy? as well. Also, formulas tend to return the last number used, so also write a 0 after that.

Charging Skill - You could use Turn Count have a skill for "charging" at 3 + 3x and a powerful attack at 4 + 3x. You could also not have this skill activate every three turns by creating a skill to apply a Charging State and then a skill with a very high rating and the Charging condition so that it'll definitely activate the next time it attacks.

Cooling State - Similarly, that powerful skill could then apply a Cooling state onto the enemy, which could be a stun or the enemy following up with another strong attack. You could also give the enemy a different set of skills (or a skill with Cooling condition one rating above your current list so that the super attack at the lowest rating of the set won't activate.

---

Switch

Terrain Change - You trek through a dark abandoned factory where you may have to face giant cockroaches. Once you turn the switch on (for the lights too), cockroaches are more likely to try escaping...Until the lights go out again. Please note that a switch affects all enemies, so cockroaches in a second factory will be "afraid of the light" unless you make a different breed of cockroaches with a different switch. You could also use a switch to represent a day-night cycle or some ritual that makes them barf fireballs.

Enemy Specs - Perhaps there is a raid on the enemy HQ coming up and you have an opportunity to disable either their Rocket factory or their Rifle factory. Once you get to the Enemy HQ, the enemies will be equipped (switch) with skills of the remaining "weapons". Alternatively, you could start the game with the switches on and deactivate them later in order to remove their "equipments".

Influenced Boss - If you played Warcraft, you might know of the Uncasked boss of Stormstout Brewery or the more recent dragon mob before the Nightmare of Dragons. Anyway, you can use switches to change the attacks of the boss while keeping their stats the same, so some bosses might not fight the same way per playthrough. You could also use a switch when you acquire Excaliburp, which would make a Ghost Knight unleash their true skills against a legendary sword holder.

Come, Troops - You could also have enemies use a skill to turn a switch on, which will in turn affect the troops page or other enemies as well (switches don't turn off automatically, so you may want to turn them off yourself. For example, you have a commander who uses a Shout to change some switches around, and this in turn will make his soldiers attack offensively or defensively depending on which switch is on. You could also have a soldier try to activate a switch in battle, which can cause participating mechs to change from patrol mode to ERADICATION mode.

Revenge - There are some bosses like the duo in Dark Souls and some of the council fights in Warcraft where defeating one boss will empower the other bosses. You may need to use the troops page and some events/script calls to check if a certain boss is dead in order to turn the switch on.

---

Turns - Turns are rather predictable, which sometimes isn't a bad thing. The first number is when the turn starts, and the second number is when the skill activates again. When making a "charging skill", it's the first number you should change.

Orderly Dance - Perhaps on turns 1 through 4, the engineer boss shows you what each gun can do. You could then have these guns repeat each four turns to induce a pattern (4x). Or you could set them to (0x) if you only want these guns to activate once, turning them into normal skills later. Or you could try 1x, 2x, 3x, 4x for some controlled chaos.

Conveyor Belt - Perhaps the engineer boss's reason for order is that he gets a new set of ammo (state) every 5th turn, which influences his attack patterns unless you manage to stun him for that turn.

Delays - Perhaps an enemy needs time to prepare to actually fight. You could have four high-rating "mana up" skills for turns 1 through 4, or you could have a low-rating skill and then activate a higher "attack" skill at turns 4 + 1x.

---

HP/MP Percentage They can be set at a minimum-maximum range. In most games, especially Warcraft, bosses get a new attack or set of attacks at certain HP. The Curator most likely applies a RECHARGING skill/state on himself when his MP goes low.

Party Level This takes the average party level and sees if it's above that. Genocide Run?

Just remember that you have rating 1-10, so you have a minimum of three separate skill lists unless you get creative with the conditions of your skills. For example, instead of Attack 1 and Cleave 4 (HP 0-50%), you could try to replace this with Attack 1 (HP 51-100%) and Cleave 1 (HP 0-50%)
Last edited by polyedit2000 on Thu Nov 03, 2016 4:18 pm, edited 1 time in total.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Tue Nov 01, 2016 1:47 pm

Okay, here's another set of bosses, this time taking the influence of enemies I just discussed:

===

Moroes - Moroes, servant of Medivh, mainly has two abilities: a Coat Check to reduce armor by 75% and a Garrote that stacks. That said, he comes with four dinner guests and by Legion standards, he'll remove all their restrictions once he hits 60%. The general strategy is to stun all but 1 guest and kill them one by one before focusing on Moroes, either killing them all or ignoring the last guest. Ghost Traps that stun the guests for a minute (or damage) are available before the fight.

Coat Check can be achieve just by reducing their DEF with a state. Garrote mainly requires a Stacked State script, preferably one with additive properties like NeonBlack's. For Moroes's crowd control removal, there are several ways to get this, and it mainly involves a state applied to the enemy troop. The easiest way would be to give that state immunity to all other crowd control abilities and its skill the ability to remove said states.

---

Curator - The Curator is a two-phase fight that goes back and forth, depending on his mana. On the first phase, he throws down lightning patchs and summons sparks that get stronger with each attack. Once he is low on MP, he will switch to his Charging phase, and once he maxes out his MP, he'll Overload and go back to phase one; Overload also increase the damage of Overload.

For the Curator himself, his main skill is the one that reduces his MP, though he'll also have a summoning skill with a lower rating. When his MP is less than maybe 10% (best make his skill worth a little less than that), he should then use a skill that will restore MP and cast a State or Switch, forcing him to use a higher rated skill that only restores his MP. When he reaches max MP, you use the highest ranked skill to deal damage to everyone and apply Overloaded to the boss; to keep Overloaded from increasing the damage of his normal lightnings, Overloaded would be a blank state (using stacked states) and his damage formula is multiplied by how much Overloaded states he has.

Summoning his sparks either involves a switch to turn on a Troop Page or a Common Event. In either case, summoning a Spark is actually "unhiding" a battler in that troop (first, you need to hide the battler by right-clicking on it in the troop page). Since all the Sparks are the same, we'll skip randomization, and in the event page, we'll check if a switch is on and if Enemy 2 has the Death state; if not, we summon that Spark and throw the switch, remembering to turn the switch off at the very beginning or end of the event. Alternatively, you could just make this a revive skill on the dead and turn a switch on if the target is not alive (the only one alive with no one summoned yet should be the Curator).

---

Attumen the Huntsman - This guy likes his horse a lot. He is a bit like the Headless Horseman that you have to bring one boss's HP down before the second boss is summoned. I'm not sure that enemies could be hidden with events, but you can use something like $game_troop.members[1].hide to hide him (hiding shouldn't reset HP, but keep a variable just in case.

For the Horse, his first skill set is at the bottom. However, his Troop Page should check if his health is less than half, which should turn on a switch and summon Attumen (and thus change the Horse's attacks. You should also add a state or event-heal the Horse, and when its HP is at 100, you should hide Attumen and turn the switch off. You should also see if Attumen is dead so you can turn on another switch and remove his healing state/add a weakening state; the switch should ensure the 50% health switch doesn't turn or should be that same switch.

Attumen himself has some skills that plays around with the Tanking mechanic I have earlier:

Heavy Blow - This halves the HP of anyone close to the tank, which can be achieved through a state.
Severing Slice - This deals heavy damage to a target, but can be split to all who guards.

With the Headless Horseman (different boss), his body is immortal; set a state that resists Death on the Headless Horseman, and when the Head of the Headless Horseman dies, remove the state and apply death on him.

---

Xavius - This being corrupted the Emerald Dream, the blueprint of the world. His attacks cause Corruption. Fortunately, the Dreamer herself gives your party her protection.

Here's a reminder about variables: You can create an attribute or a @variable in $game_battler and some methods to adjust that variable. Each attack from Xavius increases Corruption; there are also force actions each turn that deals damage if your character has at least 33 or 66 corruption (100 is a super-confused state).

Next, you have Dream Sim applied to half of the party. This is a state that zeros out Corruption and negates Corruption in damage calculations. Once a third of Xavius's health is gone, the sim is applied to the second half of the party. Dream Sim can be used to negate meteors and tank enemies. They can also be used to deal massive damage/death to smaller enemies that chase undreamed players.

===

Also, you may have seen the states Provoke and Hide. Both of these mess with a TGR or TarGet Rate and are set to 1000% and 10% respectively. This is mainly for the AI (enemies) to determine which character gets hit by their attacks. This will not make them immune to group attacks...under normal circumstances.

First of all, and I may be wrong, but I assume that everyone has 1 threat, so a party of 4 means one person has 1/4 of a chance to be hit. With Provoke, that probably brings the total threat to 13 (10+1+1+1), and one person has 10/13 chance to be hit with others at 1/13. With Hide, you're looking at 1/31 (1+1+1+0.1) for one person and 10/31 for everyone else. You could probably modify the method that handles this selection so that it sees who has a high target rate before looking at normal and eventually low rates...Anyway, tgr is most likely going to be a percent-based variable (1 = 100%).

Here's what I'm guessing you can do with b.tgr (b is the target in your formula):

- if b.tgr < 1, the target is hiding. You could probably reduce the damage to 0 at this point. You could also check if the party/troop has more than one alive member so that hiding solo doesn't make you cheat.
- This could also mean that your party gets knocked back. There might be some battlegrounds where being at the edge isn't good like a crowd throwing fruit or the edge of a ring where a second attack will kill you.
- You could be a Subtlety Rogue where being stealth would increase the damage of some attacks, or a Hunter whose camouflage restores health until broken.

- if b.tgr > 1, the target is tanking. It could be a cleave so that the tank gets a larger portion of damage.
- Like above, perhaps a boss teleports one of your party members to be "judged", which deals massive damage to the marked player...but might not do anything if that mark is removed.
-Or simply the boss would chase a player down due to some berserking skill
-Or a boss or some enemies would go after a priestess in your party.

-Hm, perhaps you can increase your own tgr through some actions, probably with stacked states.
-You could also create Misdirect or Tricks of the Trade. On a basic level, it's putting a taunt on another character. On a more specific level, you can check if the user has Misdirect and if there is another person in your party with the dependent state and give the person with that state the tgr you would have gotten.

- A bit more complicated, but in the method handling target rates, you could check for states or notetags in order to "reverse" damage calculations. Perhaps the boss deals heavy damage on the tank but flings a spell on a DPS. Or you could ensure that the boss goes after the tank and his pet goes after the marks.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Nov 07, 2016 5:42 pm

Above, I mentioned TGR (TarGet Rate). I had decided to change how my tgr works...and what tgr mainly affects is finding the random target (skills that randomly hit as well as enemy skills). TGR is mainly used in tgr_sum of the Game_Unit (parent of Game_Party and Game_Troop), which adds up the party/troops tgr. However, the first method that uses this is random_target also in Game_Unit. Please note that if you use a skill that targets all enemies/allies, then it'll hit all members regardless of your tgr.

This is the general breakdown of random_target:
tgr_rand = rand * tgr_sum : This creates a number between 0 and tgr_sum. rand(tgr_sum) would only make integers, but rand creates any float number between 0 and 1.

alive_members.each do |member| : Alive_members is a method in Game_Units that creates an array based on members who are alive. This loop is designed to check each member of the party, but it only goes through the party once. Inside this loop, we have:

tgr_rand -= member.tgr ; return member if tgr_rand < 0 : These two lines calculate who the random target is. If you have four members, the max tgr_rand becomes 3.9999~ and it's likely the fourth member will be targeted, but tgr_rand could become 1.53 and 1.53 - 1 (member[0]) to 0.53 - 1 (member[1]) means the second character of your party (member[1]) becomes the target. And don't forget, return grabs the result and quits the method regardless of how close to the end it is.

alive_member[0] This is in case the for_loop runs short of the HP, and if I recall, the tgr_sum calculates based on all members.


Ideally, a party member with Provoke (1000% TGR) should get a weight of 10 and bring tgr_sum up to 13. However, that leaves about 3/13 odds that it can hit a target that is not the take, plus random_target is designed to go by party/troop order, meaning that if you try to make the third member a tank, then your tank needs to get a number between 2 and 12.

I won't tell you how to change up how random_target works, but there are various ways to "fix" this. For example, one person suggests replacing .each with .sort_by { |member| member.tgr }, so that 1-1-10-1 should be calculated as 10-1-1-1. What I've decided to do and might rewrite is that I placed a loop so that it checks the party multiple times and I also check if .any? of the unit's members' tgr is above a certain number so that in each loop, those with Provoke are very likely to get random hits.

Please note that random targets are calculated in the beginning of the round, so if your target dies, then targeting is handled by the method smooth_target.

---

When I was looking for other examples of random_target, a person rewrote their random_target to have more bias based on different states and even HP. What caught my attention were these three lines:

item = SceneManager.scene.subject.current_action.item
ele = item.damage.element_id
atkr = SceneManager.scene.subject


It's not difficult to determine that item is the skill/item that is being used and that atkr is the caster of said item. If you manage to note-tag a skill, it could be possible to create different random_target priorities, such as preferring those with high HP or aiming for those with certain states, or even hunting those who Hide.

---

Anyway, if you manage to work our your tgr mechanic, it may provide some variety in your game. For example, you're fighting a power-armor boss standing next to two lightning towers, and at the end of each turn, lightning strikes at a random enemy to lower the defense of the enemy...but the tower's tgr are very high, so you'll need to destroy those towers before you can fight the boss.

Another example could be that you designed your party to be a bit like Warcraft's Withered Army Training or like Tales series where you control one person and the rest of your party are AI (you can use a Confusion Fix script that let you use your skills and some coding to ensure all except your first member get the "AI" state). You could then set up "behavior" states that make them favor enemies with certain conditions. You could also create a "focus attack" using Provoke after you launch an attack.

And also, if you do manage to create multiple ways to do random_target, it could be possible to have Arrow Rain fly to a magnet while Arcane Barrage still hits randomly. (I may need to see how normal party targeting works if I want a normal sword swing to hit a magnet.) Or for bees to focus on honey-covered targets.

===

I have also fiddled with a simple alternate shop. Here, I use a variable and a switch, but there are plenty of alternate currency/alt currency shops out there.

So the simplest way to create a new currency is to copy Window_Gold; the two methods you should change is value where it returns the party's gold and currency_unit that returns a string.

The simplest way to create an alternate currency shop is to turn on a switch before (and off after) calling a shop. In the Scene_Shop, it initializes a couple of windows, including a gold_window from Window_Gold under create_gold_window; you can use a switch to decide if you want the default gold window or your alternate currency window. The shop draws your current currency from the window, not directly from your party's gold...

However, do_buy and do_sell shows that the party will gain and lose gold on transactions, so you'll have to go to Game_Party's gain_gold method; lose_gold uses gain_gold with a negative number so there's no need to mess with that. Since we're using the switch only for the alt-currency shop, we will use the switch to determine if gain_gold will change the gold or our variable.

Also, if you want to adjust the price of items in your alt currency shop (a potion is 50 gold but could be 1 token, here's the thing: Scene_Shop has a selling_price equal to half the item's price but buying_price is based on another window's price-list, so you'd have to go to Window_ShopBuy and place yet another switch under its price method.

So again, the scripts you want to copy and modify for a shop that uses one switch and variable are:
Game_Party - gain_gold
Window_Gold - value, currency-unit
Window_ShopBuy - price(item)
Scene_Shop - create_gold_window, selling_price


Also, you don't need the alternate currency, but you can use switches and variables to make unique shops. For example, finding scam shops that sells potions at triple the price, or earning rep with a faction to lower the prices of their goods. Or perhaps you can "lock" selling until you get a merchant's permit, or shops only give you "store credits" that don't go back to your gold but can be added onto your gold when purchasing from their shops.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Tue Nov 08, 2016 5:25 pm

Sometimes, when you are setting a move route during an event or an event's custom move route, you might have seen the Script button. The most you'll probably use it for are for "extended" move scripts...but you can still put in some code!

For example, I want my spider to wander around randomly...unless my player is about three spaces away from them, then I want the spider to chase the player. At first, I thought this would require another page, but then I figured I could try this code:

if distance_x_from($game_player.x) <= 3 and distance_y_from($game_player.y) <= 3; move_toward_player; else; move_random; end


And it works. My spider moves normally, but when I get close, it will go after me, and when I get far away, the spider moves randomly again. In the same way, you could also include a switch or item check to reveal treasures or ghosts, or to not make enemies chase you when stealthed.

---

So anyway, here are some suggestions of how you could use scripts to move your events:

Cheering Crowd: Suppose you're in an arena and the crowd around you wants to jump at the excitement. Instead of customizing each event personally, you could have the script get a rand(number) and then use that number to perform a jump(0, 0). In face, you could also randomize the character_name and character_index of the crowd by checking for a dummy character_name/index or by checking for a $game_self_switches[[$game_map.map_id, id, "A"]] and then turning the switch on.

Patrols: Patrols were an old feature where guards would walk back and forth until they hit walls. Sure, you could probably just set a move route going left and right on the castle wall, but what if that patrol route includes a door you can remotely open and close to trap him? Okay, you could either have your patrol move_forward and turn_180 or you could have move_left and move_right based on your self switch; you will be checking passable?(direction) to see if that event can move in that direction or not. Also, the direction is represented as a number that is also on your keyboard's number pad:

2- down
4- left
6- right
8-up


If you want to be more complicated, you could have the event bounce diagonally on walls or you can make sure that guards patrol around a block, turning when the adjacent space is passable, or you could have the patrol route instantly jump over a crack by checking map_passable?(x,y,direction) too or play leap frog.

Synchronized Swimming - Let's say there's an NPC moving a wheelchair, or two guys moving glass, or perhaps two sumo wrestlers. If the two sumo wrestlers have ids 1 and 2 and you want to move to the left, you might have move_left; $game_map.events[2].move_left. You should also check $game_map.events[2].passable?(2/8) and passable?(2/8) so that if half of the event can't pass a wall, then both will not do that.

It could also be possible to sync an event with $game_player's movement...probably. That is, if you want to move a box or if you are walking next to a mirror. Or have a belly wiggle regardless of event movement. Or probably press a remote of a wireless vibrator.

Projectiles - I talked about patrols and how hitting walls make them turn away. I also talked about controlling another event. Now, when your projectile hits a wall, it is going to switch or teleport to a safe place, and after some time passes, it is going to teleport in front of the event to fly again. Or perhaps you throw steak to distract nearby dogs. Or make the crowd jump in a wave with an invisible flyby.

===

Another note: strings are case-sensitive. As such, if you want to check if a string.include? "this" when a string is "This", it returns false. However, you could work around this if you have a string.downcase, which turns "This" into "this".
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed Dec 07, 2016 5:32 pm

First of all, I want to point out http://rgss3.hudell.com/ . This site lists all the classes and methods of the RPG Maker VX Ace default scripts. It's a quick way to figure out what each part does, especially if you are working on your own script.

Also, when I say you should make a change to something like Game_Actor, what I mean is that you don't change Game_Actor but place one of those class Game_Actor < Game_Battler things under Materials; this helps you remember where you edited the script and it's less messy if you need to delete that part.

Anyway, I got three RPGs on Black Friday as well as Final Fantasy 15. I was also playing a bit of Tera and reached level 65 (working on second character and item level). There are understandably some ideas not implemented in RPG Maker.

===

Delayed EXP
In Final Fantasy XV, you gain EXP from fighting monsters or from small tasks like training or choices...but you do not level up with that EXP unless you camp or stay at an inn. An inn multiplies your experience, but a camp (with some AP investment) can grant some more AP and even some quests. In another game like Nights of Azure (made by the people of Dynasty Warriors), EXP is applied at the end of a dungeon.

First, Game_Actor has change_exp() that changes the current exp variable of the actor and gain_exp() which is change_exp that adds the extra exp and multiplier to the current exp variable. You also have a gain_exp method in Battle Manager which is designed to apply the total exp from the battled Game_Troop into each actor's gain_exp method.

Personally, I think it's ideal to just change the Game_Actor's gain_exp so that it'll add any exp into a different variable. There should also be a gain_exp2 method that will add the variable to the player's current exp and also reset that variable. You should also add a method for game Party similar to BattleManager just to make the script call easier. This is a rough draft of what I mean:

#Game_Actor
def gain_exp(exp)
@campexp = 0 if @campexp == nil
@campexp += exp
end

#Game_Actor
def gain_camp_exp
@campexp = 0 if @campexp == nil
change_exp(self.exp + (@campexp.to_i * $game_variable[MULTIPLIER]), true)
@campexp = 0
end
#That game_variable is to indicate the exp boost from inns, especially those with high multipliers.

#Game_Party
def camp_exp
$game_party.all_members.each do |actor|
actor.gain_camp_exp
end
wait_for_message
end


In theory, all exp gains will be stored in a variable until you camp, which you then script call $game_party.camp_exp to apply the stored exp into your actual exp. This is a nice idea if you are attempting to Level 1 you way to the end (or just equip a 0 exp rate ring for everyone).

---

Bloodborne's EXP
Bloodborne is a different type of delayed EXP, though the EXP in the form of Blood Shards is also used as currency in shops; this would also be similar to Odin Sphere's use of Mana Shards to either grow exp-giving trees or level up your skills. Let's assume you're using one character for this example (or a script that levels everyone up when the main character levels).

Assuming that you only have one currency for shops and exp, you only need to apply Gold to the enemy. That's good for shops, but let's have a Doll NPC for your level; Game_Actor's for_next_level should tell you the amount needed for the next level which you should add to a variable for calculations, but there is also a current_level_exp if you need your current exp and exp_for_level if you want a specific level. If you want, you could just have the choice to convert all your gold into experience (or use that number button to set how much gold you want to change to exp).

Let's say you instead want to use gold on the condition that you have enough for leveling. With the exp for the next level stored into your variable, you can use \v[LEVEL] to show the variable for that number. After that, you run a condition to see if you have more gold than that variable; if you do, you gain that much as EXP or level up and then you subtract that amount from your Gold. If you don't have enough gold, the Doll should tell you that you don't have enough (or have the option to apply remaining gold to your exp total).

---

FFXV KO?
In a traditional RPG, being KO'd means dying. In Final Fantasy 15, however, dying is two parts: You first hit 0 HP, which nullifies your attacks and decreases your Max HP, then when your Max HP drops to zero, you will die (in 15, it's Game Over if Noctis gets to the second 0, but he can use a Phoenix Down to recover from that.) You can use potions to get out of the first death, though elixirs will restore your Max HP. Also, monsters do not have this "second death", so destroying their first HP should make them die. Also, the "MaX HP" thankfully replenishes while hiding or after battle. Oh, and HP/MP is usually recovered after each battle, so you can add that script (it shouldn't heal past the "maxHP").

First, what is death in RPG Maker? In the database, this is the first state and it has Restriction on it. In the script, this is further identified as Game_BattlerBase's dead? which checks for the death_state?, which checks if you have state?(death_state_id), and death_state_id returns 1 (which is the first state in the database). By default, Game_BattlerBase's refresh checks if a player's HP is 0 in order to apply the death_state. The dead? method is also used in Game_Party and Game_Troop to separate dead players from living ones, and BattleManager's judge_win_loss sees if all of a party/troop's members.

If you are planning to make this kind of HP system, first, you would need to create a new variable for the Game_Actor's mid_HP/[i] since this will represent the "Max HP". Next, Game_Actor's Refresh has a super method, so replace that super with Game_BattlerBase's refresh and modify the hp == 0 ? line so that it'll apply a "Downed" state when your HP is 0 and the Dead state when you midHP is 0. You should also change the max hp in the line above to mid_hp so that normal healing should only restore up to the midHP and also set the boundaries for the midHP. Ideally, the Downed State will cancel out Attack and Magic, forcing you to pass your turn or to use an item.

Now that we have HP taken care of, we need to figure out how to mess with midHP. Damage and recovery come in Game_Battler's execute_damage(), regenerate_hp, and item_effect_recover_hp(). In execute_damage, make it so that if hp is 0 or if the Downed state exists and self.actor?, then the damage values will be subtracted from the midHP; healing here is a negative number and normal healing shouldn't increase midHP, so also make sure that damage is above zero for this line. regenerate_hp should work every turn, so for our midHP decay, also see if the battler is an actor and has Downed/0 HP so that you can remove a bit of midHP. You should also look into the revive method and add a midHP = 1 if midHP == 0 since phoenix downs are mainly used to revive KOed victims.

Now, if this works as I think it does, it should treat the HP of enemies normally and the HP of players normally...but in the player's case, once they reach 0, they gain the Downed State and their "maxHP" should drop if they get further damage and for each turn. They are still treated as alive, so a potion or healing spell should affect HP and restore that, removing the Downed state and not going over the dropped midHP, and damage should not affect midHP immediately. For elixirs and resting where you want to restore midHP, you may also want to add something like [i]if b.actor?; b.midHP = b.mHP; end;
.

Alternatively, you could keep the HP and Death state working as normal but you could also create attacks that lower "max HP". For example, losing limbs to hard vore or some flesh in digestion.

---

FFXV Stasis
In Final Fantasy 15, MP is mainly used for Warping/Dodging/Defending. If you overuse the MP, you go into Stasis, meaning you can't use all those warping tricks unless your MP is topped off.

In this example, we'll have MP affect the spells they are used for. Thankfully, you can go to Game_BattlerBase's refresh and add mp == 0 ? add_state(STASIS) as well as mp == self.mmp ? remove_state(STASIS). The Stasis state is pretty much a Silence with MP regen, only activating if MP reaches 0 and dispelling if MP is fully recovered.

...Of course, the glaring issue is that players rarely hit 0 MP. If we want Stasis to work properly, we need to figure out how to make a skill work regardless of the MP cost. This can simply be found in Game_BattlerBase's skill_cost_payable?() which returns true if the mp/tp of a skill is more that its cost, though that method is also part of skill_conditions_met?(). Anyway, we just need to remove the part in skill_cost_payable? that checks if mp >= skill_mp_cost().

With that small edit, it should mean that you should be able to use skills regardless of how much MP you have left, and you should now be able to get Stasis because you use up all that MP.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed Dec 07, 2016 5:32 pm

First of all, I want to point out http://rgss3.hudell.com/ . This site lists all the classes and methods of the RPG Maker VX Ace default scripts. It's a quick way to figure out what each part does, especially if you are working on your own script.

Also, when I say you should make a change to something like Game_Actor, what I mean is that you don't change Game_Actor but place one of those class Game_Actor < Game_Battler things under Materials; this helps you remember where you edited the script and it's less messy if you need to delete that part.

Anyway, I got three RPGs on Black Friday as well as Final Fantasy 15. I was also playing a bit of Tera and reached level 65 (working on second character and item level). There are understandably some ideas not implemented in RPG Maker.

===

Delayed EXP
In Final Fantasy XV, you gain EXP from fighting monsters or from small tasks like training or choices...but you do not level up with that EXP unless you camp or stay at an inn. An inn multiplies your experience, but a camp (with some AP investment) can grant some more AP and even some quests. In another game like Nights of Azure (made by the people of Dynasty Warriors), EXP is applied at the end of a dungeon.

First, Game_Actor has change_exp() that changes the current exp variable of the actor and gain_exp() which is change_exp that adds the extra exp and multiplier to the current exp variable. You also have a gain_exp method in Battle Manager which is designed to apply the total exp from the battled Game_Troop into each actor's gain_exp method.

Personally, I think it's ideal to just change the Game_Actor's gain_exp so that it'll add any exp into a different variable. There should also be a gain_exp2 method that will add the variable to the player's current exp and also reset that variable. You should also add a method for game Party similar to BattleManager just to make the script call easier. This is a rough draft of what I mean:

#Game_Actor
def gain_exp(exp)
@campexp = 0 if @campexp == nil
@campexp += exp
end

#Game_Actor
def gain_camp_exp
@campexp = 0 if @campexp == nil
change_exp(self.exp + (@campexp.to_i * $game_variable[MULTIPLIER]), true)
@campexp = 0
end
#That game_variable is to indicate the exp boost from inns, especially those with high multipliers.

#Game_Party
def camp_exp
$game_party.all_members.each do |actor|
actor.gain_camp_exp
end
wait_for_message
end


In theory, all exp gains will be stored in a variable until you camp, which you then script call $game_party.camp_exp to apply the stored exp into your actual exp. This is a nice idea if you are attempting to Level 1 you way to the end (or just equip a 0 exp rate ring for everyone).

---

Bloodborne's EXP
Bloodborne is a different type of delayed EXP, though the EXP in the form of Blood Shards is also used as currency in shops; this would also be similar to Odin Sphere's use of Mana Shards to either grow exp-giving trees or level up your skills. Let's assume you're using one character for this example (or a script that levels everyone up when the main character levels).

Assuming that you only have one currency for shops and exp, you only need to apply Gold to the enemy. That's good for shops, but let's have a Doll NPC for your level; Game_Actor's for_next_level should tell you the amount needed for the next level which you should add to a variable for calculations, but there is also a current_level_exp if you need your current exp and exp_for_level if you want a specific level. If you want, you could just have the choice to convert all your gold into experience (or use that number button to set how much gold you want to change to exp).

Let's say you instead want to use gold on the condition that you have enough for leveling. With the exp for the next level stored into your variable, you can use \v[LEVEL] to show the variable for that number. After that, you run a condition to see if you have more gold than that variable; if you do, you gain that much as EXP or level up and then you subtract that amount from your Gold. If you don't have enough gold, the Doll should tell you that you don't have enough (or have the option to apply remaining gold to your exp total).

---

FFXV KO?
In a traditional RPG, being KO'd means dying. In Final Fantasy 15, however, dying is two parts: You first hit 0 HP, which nullifies your attacks and decreases your Max HP, then when your Max HP drops to zero, you will die (in 15, it's Game Over if Noctis gets to the second 0, but he can use a Phoenix Down to recover from that.) You can use potions to get out of the first death, though elixirs will restore your Max HP. Also, monsters do not have this "second death", so destroying their first HP should make them die. Also, the "MaX HP" thankfully replenishes while hiding or after battle. Oh, and HP/MP is usually recovered after each battle, so you can add that script (it shouldn't heal past the "maxHP").

First, what is death in RPG Maker? In the database, this is the first state and it has Restriction on it. In the script, this is further identified as Game_BattlerBase's dead? which checks for the death_state?, which checks if you have state?(death_state_id), and death_state_id returns 1 (which is the first state in the database). By default, Game_BattlerBase's refresh checks if a player's HP is 0 in order to apply the death_state. The dead? method is also used in Game_Party and Game_Troop to separate dead players from living ones, and BattleManager's judge_win_loss sees if all of a party/troop's members.

If you are planning to make this kind of HP system, first, you would need to create a new variable for the Game_Actor's mid_HP/[i] since this will represent the "Max HP". Next, Game_Actor's Refresh has a super method, so replace that super with Game_BattlerBase's refresh and modify the hp == 0 ? line so that it'll apply a "Downed" state when your HP is 0 and the Dead state when you midHP is 0. You should also change the max hp in the line above to mid_hp so that normal healing should only restore up to the midHP and also set the boundaries for the midHP. Ideally, the Downed State will cancel out Attack and Magic, forcing you to pass your turn or to use an item.

Now that we have HP taken care of, we need to figure out how to mess with midHP. Damage and recovery come in Game_Battler's execute_damage(), regenerate_hp, and item_effect_recover_hp(). In execute_damage, make it so that if hp is 0 or if the Downed state exists and self.actor?, then the damage values will be subtracted from the midHP; healing here is a negative number and normal healing shouldn't increase midHP, so also make sure that damage is above zero for this line. regenerate_hp should work every turn, so for our midHP decay, also see if the battler is an actor and has Downed/0 HP so that you can remove a bit of midHP. You should also look into the revive method and add a midHP = 1 if midHP == 0 since phoenix downs are mainly used to revive KOed victims.

Now, if this works as I think it does, it should treat the HP of enemies normally and the HP of players normally...but in the player's case, once they reach 0, they gain the Downed State and their "maxHP" should drop if they get further damage and for each turn. They are still treated as alive, so a potion or healing spell should affect HP and restore that, removing the Downed state and not going over the dropped midHP, and damage should not affect midHP immediately. For elixirs and resting where you want to restore midHP, you may also want to add something like [i]if b.actor?; b.midHP = b.mHP; end;
. Oh, and before I forget, if you heal a Downed victimed when their midHP is less than a quarter of their max HP, their midHP is set to a quarter of their max HP.

Alternatively, you could keep the HP and Death state working as normal but you could also create attacks that lower "max HP". For example, losing limbs to hard vore or some flesh in digestion.

---

FFXV Stasis
In Final Fantasy 15, MP is mainly used for Warping/Dodging/Defending. If you overuse the MP, you go into Stasis, meaning you can't use all those warping tricks unless your MP is topped off.

In this example, we'll have MP affect the spells they are used for. Thankfully, you can go to Game_BattlerBase's refresh and add mp == 0 ? add_state(STASIS) as well as mp == self.mmp ? remove_state(STASIS). The Stasis state is pretty much a Silence with MP regen, only activating if MP reaches 0 and dispelling if MP is fully recovered.

...Of course, the glaring issue is that players rarely hit 0 MP. If we want Stasis to work properly, we need to figure out how to make a skill work regardless of the MP cost. This can simply be found in Game_BattlerBase's skill_cost_payable?() which returns true if the mp/tp of a skill is more that its cost, though that method is also part of skill_conditions_met?(). Anyway, we just need to remove the part in skill_cost_payable? that checks if mp >= skill_mp_cost().

With that small edit, it should mean that you should be able to use skills regardless of how much MP you have left, and you should now be able to get Stasis because you use up all that MP.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Jan 02, 2017 5:37 am

Undertale's Skill Sets:

Undertale has a variety of enemies. Sometimes, you have to Pet and Play with the dog, and other times, you have to Flirt. The point is, the MC's skills change for each opponent you fight against.

All you have to do in this case is create several States that is removed at the end of battle and has no time limit, and for each State, you add skills from the Feature list. In the Troops page on Turn 0, you then add the State to match each enemy. Keep in mind that states are usually removed on death, so this is good for one player but you would need a Stop State Removal on Death script for a party.

---

So yeah, you can Add skills or Seal skills. Here are some ideas you can use for them:

-Your skills first consists of loading Ammo. Once you loaded them, you can then access new shooting skills based on the ammo you created. Also, you could seal your Ammo until your loaded one runs out.

-An alternate to Crafting (Might need an Instant Skills script to keep all the steps in one turn and a Alternate Cost script to consume items). For example, selecting a Curative (Potion) can let you make Pepper Up (Boost Atk) and Dreamless Sleep (Cast Sleep).

-Let's say you have Fire and Wind spells under Magic. Now, the enemy fish Drenches you, which seals a lot of Fire magic but leaves your Wind magic alone.

-You're on a Horse! Not only does this give you a speed boost, but you can also perform certain mounted skills like Charge.

-Playing Hot Potato! Let's say the boss can inflict a powerful poison that can only be removed by passing a special potion (state) around. Or let's say that a boss throws a relic (state) that deals extra damage to the holder and you can toss this back to the boss.

-Some equipment like Boxing Gloves can prevent Sword skills but grant Fist skills.

---

Kei-Waza attempted to use weather to change how a map looks. For example, a forest would be extra muddy if it was raining. I figured I could do something similar for my game:

First, I'd have a variable for each location. Second, let's say I have rain and spider invasion. At a certain location like my bed, I'll have the variable get a random value.

Next, I figured I'd have switches for each outcome to make easier to control my events. For example, I have a Rain switch and a Spider Switch. Before each location, I will check the value of the variable for that location and turn on a switch if the value matches. For Rainy Day, I will make sure to turn on rain and probably teleport to a different version of the map. Also, when I leave that location, I'll make sure to turn the switches off. Therefore, I can use those two switches for two different locations without accidentally combining them.

And also, I want to make sure that if a Spider Invasion is happening, I need to take care of the Spider Invasion before I can access a normal or rainy version. So I will make sure that when I use my bed to randomize the variable, I can only do that if my variable is below a certain number (Spider Invasion is above that number). Also, I want to make sure that clearing that invasion will activate resets my variable and probably add a few switches too.

---

Hm, using Common Event to then Force Action in combat. I think I covered this before, but here are a few more examples:

-Gilgamesh's Roulette or Dice Roll. Roll a variable, and then execute a skill with matching visuals.

-Steal Lite - In the old days, this was used to create a Steal Method. Instead, you could probably make the skill get the id of the enemy, then you use that id to match the conditions for the desired effect. In one case, Steal Weapon can steal a sword that boosts your attack or a wand that grants spells for that battle.

-Chaining - Your Elemental Blade can deal extra skills if you have Lighting, Fire and Ice states. If you happen to have all three, you can also deal a finisher!

---

Hm, I was wondering...Milia Wars DX had enemies grab you: A simple grab if you have MP, and a vore-related grab if you run out of MP. I also believe that if you are out of MP, you get more damage...

Also, their "Experience" Bar is a bit like Cave Story's weapons where upgrading them can increase your special skill. I'll probably work that out later.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Jan 02, 2017 4:31 pm

Milia Wars is a game that's mainly impressive for its sprite works, though it is the ideal image of a vore platformer. What I did notice while playing this was that enemy grabs would damage both HP and MP, but if the MP is gone, more HP is removed and grabs turns into vore attacks. Here's an example of say, the spider grabbing you and deciding to either play with you or give you a tour of her tracts.

c = damage
b.mp -= c
if b.mp <=0
c *= 2
b.add_state(BUTTWEB)
end
return c


It makes you wonder how you can use other things to determine damage. Perhaps 100 TP can increase your attack or luck can nullify weak attacks under a certain threshold.

---

Also, Milia War uses Lives, a standard in Platformers but not in RPGs. This makes me wonder if you can implement a similar mechanic, reviving your party for free every turn until you run out of Lives.

I guess a common event would help, but in the Troops page, you simply have a variable, then check if a teammate is dead. If you still have a number in that variable, take away one and revive that character. However, this still results in a Game Over if everyone dies at at the same time.

So alternatively, there is a refresh method in Game_BattlerBase (you can also overwrite this by placing a refresh method for Game_Actor). By default, it checks @hp == 0 ? add_state(death_state_id) : remove_state(death_state_id) meaning that if hp is 0, it adds the death state and remove that when it's not at 0.

I'll use Auto-Life as a simpler example. Auto-Life is a Final Fantasy Spell that revives a character one time.

if @hp == 0
if state?(AUTOLIFE)
@hp += 1
remove_state(AUTOLIFE)
else
add_state(death_state_id)
end
else
remove_state(death_state_id)
end


If that doesn't work, you might ironically need a Don't Remove State on Death script.

===

Alright, let's talk about Classes this time. So much discussion was place on code and not enough on how a character acts. So...let's see what we got.

---

Sniper/Assassin - This character is weak, but is most likely to get critical hits, especially with the right conditions like Hiding.

Dancer/Storyweaver - This is based on Egg Assault's Shantae. Pretty much, Shante's Dance is designed so that a Dance per turn unlocks a new dance, making them a continuous support class. In a different way, a Story Weaver starts with a opening and each skill and state adds new elements like a holy blessing or an ambush.

Ninja - I figured that a Ninja would instead be a strong attacker with low HP, so they have some skills to negate and redirect damage in that case.

Thief - Rather than just having one skill do Steal, all the skills play with the concept of stealing. For example, swiping an enemy's shield can lower their defense and raise your own.

Horseman - This class can ride different mounts from horses to dragons to gain a massive buff and different skills.

Shadow Priest - Based on Warcraft's current concept, your first set of skills build up Shadow Power that you can use to active a transformation, which then has you dealing more damage until you run out of Shadow Power.

Hero - In Saga Frontier, one character can transform into a superhero assuming no other humans are alive in the party, getting a massive buff and unique skills but not gain any experience like that.

Tank - I recall in Xenoblade Chronicles X, you could taunt enemies, then you could deal extra damage or gain more MP by striking while you have taunt.

Dummy Tank/Sunflower - Like the Walnut of Plants versus Zombies, this class doesn't do anything but has a very high taunt rate. Similarly, a Sunflower's only purpose is to replenish the MP of the party.

Scavenger - A character whose presence should grant more item drops. In Nights of Azure, this is a cat summon that digs up items during battle.

Bastian - Based on Overwatch's turret, Bastian has two modes. In Turret mode, he is stronger but being immobile makes him a more likely target to be attacked.

Discipline Priest/Fistweaver - These healers place a buff on their allies, and damaging skills will then heal those buffed allies.

Nurse/Aide - This class are weak on their own, but they deal more damage or healing based on buffs provided from their allies. For example, First Aid doesn't heal much, but if they use that on a recently healed character (hidden state), it heals a lot and even adds Regen.

Crowd Pleaser - This class uses a variable; using attacks increases this damage multiplier and unlocks some finishers, but repeated or missed attacks can lower that variable.

Liar - Ussop of One Piece thinks he is weak, yet he managed to take down people more powerful than him. This class uses Intimidation and Lies to build up buffs like "Killing Intent?", which can end up paralyzing even bosses.

Masochist/Vorist - Believe it or not, these classes mainly get benefits if they're attacked, especially before they attack. For example, all attacks deal a temporary Struck state, though only a Masochist can use that to buff attacks. A Vorist is one who "levels up" if they end up being vored.

Dominatrix - This class gains a bonus to their attacks mainly by targeting the same target repeatedly, probably requiring a variable. For example, enough stacks of "Discipline" can be used to silence a boss or make them drop their guard.

Necromancer/Queen Bee - These classes support their party...by changing them. For example, Egg Assault's Q-Bee can change her allies into Drones to change their attacks and gain a powerful attack. A Necromancer's Rise would revive fallen allies into Zombies that his necrotic spells can bolster.

Hypnotist - Hm, a class that puts others to sleep...but they can also implant Suggestions that can add new skills or change how some work. For example, a Knight would have low magic, but hypnotizing them into a "Mage" can use their atk instead of mag to power their spells.

Cola Cyborg/Scaredy Dog - Franky is SUPAH, but more importantly, his attacks are fueled by Cola. Pretty much, Potions and Ethers will give different states, and those states can buff his stats and activate certain skills. Alternatively, Scooby Snacks can heal some HP but Scooby Doo and Shaggy can gain "Bravery" from them that lets them use skills they normally won't use.

Cosplayer - This class gain bonuses depending on their equipment, somewhat of a class-changer lite. For example, both a Doctor and Priest increases the power of their Heal, but a Doctor can also remove physical wounds while a Priest removes magical curses.

---

Hm, I believe in FFXV, you could BREAK certain enemies to gain a specific item like horns. Hm, create a switch for an enemy and activate it on a random chance (preferably with a critical hit). In the item drop method of the enemy, check for this switch and drop the item if it is on.

---

Also, it's somewhat a habit to place the skill type inside a class. As you may know, a skill is assigned a "skill type" and the skill type feature must be added to use that skill. For example, a Black Mage has Black Magic and a White Mage has White Magic, so a Black Mage can't use White Magic despite knowing them.

By this concept, it can be possible to learn the skills by level and NOT have a skill type assigned to the character. For example, Vindictus players can access classes with two different weapons, each that has its own skill type (Reaper vs Magic). Alternatively, you can just decide that changing Bodywear changes "classes".
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Jan 09, 2017 8:12 pm

So I just read a series of comics that can be summed into: Make the foundation of your RPG first. In terms of JRPGs like Final Fantasy, the maps and events basically follow:

Town>Story>Dungeon>Boss

which can be split into

Town>Story and Dungeon>Boss maps. Usually, getting a Story or defeating a Boss will activate a Switch, and these Story/Boss switches are also the points when some extra contents like side quests get activated. It also helps if you don't have things like maps and enemies sorted out yet.

In general, this method points out Story switch A, Boss switch A, Story switch B, Boss switch B...etc.

----

So basically, you want to figure out how to get from Story A to Boss Z. After talking a look, I have to agree that this is the structure that many games are based on. The variants lie mainly on their paths:

Branching Endings: This is popular with Disgaea Games, though a big example is Hyperdimension Neptunia mk2, where a choice will lead you to fight Goddesses instead of viruses.

Morality: Undertale and Mass Effect might play differently if you are kind or killer, but you generally head from ruins to castle.

Open World: Games like Fallout 4 or the upcoming Zelda: Breath of the Wind are slated to be more about exploration, though another way to look at it is that they have one boss and a lot of side bosses.

Romancing Saga: This is actually an Open World series, though the main difference is that you start with different characters with a switch that activates storylines unique to them.

Megaman: This game and RPGs like Evolution lets you take dungeons in any order, though after a certain number of cleared dungeons, you'll be fighting key bosses. So instead of fight A to fight B to fight C to fight Z, you fight A/B/C in any order but need to fight all of them to get to Z. A variable can help keep track of how many bosses you fought.

Fighting Games: A more randomized approach to the Megaman structure, with Boss Z showing up at a certain point. Think of Halo/Gears of War Horde Mode or Egg Assault by lipucd, where a boss shows up after a number of waves.

===

I haven't covered Boss Rushes, have I? You might have played them in Mario and Luigi RPGs or in Kirby, but it's pretty much fighting bosses you have fought before. You can replace Boss Rush with Minigames as well.

Basic- This is all the bosses and a practice in how to make a boss rush. First, make sure all the battles have a Lose/Escape condition as this is a side quest that you can't really lose. Second, use a switch or label to skip the rest of the battles (and victory) if you happen to lose. The structure of the event would look like:

Switch: Lose = OFF
Condition Switch Lose == OFF
>Battle: Boss 1
>if win
>>
>elsif lose
>> Switch: Lose = ON
>end
Condition Switch Lose == OFF
>Battle: Boss 2
>if win
>>
>elsif lose
>> Switch: Lose = ON
>end
end

or
>Battle: Boss 1
>if win
>>
>elsif lose
>> Go to Label Loser
>end
>Battle: Boss 2
>if win
>>
>elsif lose
>> Go to Label Loser
>end
Label: Loser


---

Growing- This Boss Rush unlocks more bosses the further you progress in the story. Or to be more accurate, when you defeat a boss in the story, you flip its switch (Boss A, Boss B). You then add that switch as a condition for the relevant boss battle.

---

Kirby's Randomized Arena - This Boss Rush will randomize the order of bosses except for the last one(s).

First, you will need to use a Loop to contain the bosses, and have a condition to either use all the Boss Rush switches or a Boss Count variable to leave the Loop, and also leave the Loop or jump to a Label if you lose. Secondly, we need a variable to get a random number for a boss and switches for each boss. It should look something like this:

Loop
if Variable Boss Count >= 10
>Go to Label: Victory
end
Variable Boss Select = Random (1-10)
if Variable Boss Select == 1
>if Switch BossRush01 == OFF
>>Battle: Boss 1
>>if Win
>>> Variable Boss Count += 10
>>> BossRush01 == ON
>>elsif Lose
>>> Go to Label: Defeat
>>end
>end
end
End Loop>


So ideally, if you defeat Boss 1 in this random arena, you don't fight Boss 1 and it'll loop back, randomizing the number again. Once you defeated 10 bosses in that example, you can then jump to fighting the Final Four, which will go on as a regular Boss Rush.

===

Hm, I'm looking at
def skill_mp_cost(skill)
(skill.mp_cost * mcr).to_i
end

in Game_BattlerBase. As you can see here, the Magic Cost Rate is a feature that changes the cost of a skill by percent. Previously, I changed HP Regeneration from percent to digits, so I could choose to Increase spell costs up and down like Hearthstone.

But more importantly, can I change the mp costs for certain skills? For example, if I have a Sword Mastery state, skills that require swords cost 90% in addition to current reductions. Would that mean reducing the skill by its skill_id or by it's wtype?

===

Also, if you want a custom introduction to your troops, go to your BattleManager and find battle_start. Here, you can see that it counts how many battles you have, initializes your party and enemy troops for battle, and handles the introduction of enemies.

$game_troop.enemy_names.each do |name|
$game_message.add(sprintf(Vocab::Emerge, name))
end

This part adds a message of "THISGUY has emerged" for each enemy. One way you can change this introduction for a boss is simply to have a $game_switches[] determine which message shows up ("%s flexes his muscles, name"). Alternatively, just place a nil if the boss qualifies, because the troop's Turn 0 event comes after that, so you can use events to sort your dialogue and animations in that case.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed Jan 11, 2017 4:07 pm

Enemy Action Conditions

Earlier on this page, I talked about how you can place conditions on enemy skills such as attacking each turn and on low MP. Today, we'll look at customizing conditions even further.

First, under Game_Enemy, you'll see the conditions_met method; it either gets a true/false value based on other methods or it'll return true if no conditions were selected. You'll see that the six methods also in Game_Enemy are conditions_met_hp?/mp?/party_level?/state?/switch?/turns? that use two parameters, though with how the database is designed, some methods only use the first parameter.

In my case, I decided to replace the contents of conditions_met_party_level? (checks if .highest_level of the party passes the number) with $game_troop.alive_members.size; I wanted a boss to revive her minions if there were a certain number or less. I mean, you could check for party level if you decided to have anti-leveling enemies or a clone that got stronger moves the stronger you were.

Alternatively, you can use Himework's Enemy Action Conditions, though you'll be working through notetags placed on the enemy page instead.

---

Custom Enemy Action Conditions:

Party/Troop Size - As I said, your enemy could select an attack based on the number of living members in its troops. You could choose to have an upper limit so that you don't waste revives on a full party and you could have a lower limit so that a buff-bunny doesn't just buff themselves. You can also determine actions by the party size as well, using hit-all breath attacks when everyone is alive and using grabs when only one person is alive.

Please take note that while you are able to use the stats of the enemy as well, skill targeting isn't possible until after the skill qualifies, so you can't determine a "targeted actor". You can, however, determine specific actors, such as if Main Character is Distracted, or perhaps make the enemy duel if party and troops have one member each.
---

Only one Grab - Some adult RPGs have "grabbing moves" that places a Grabbing state on the enemy and another state on you, and Grabbing enemies would use special moves when they have Grabbing...but normally, if one enemy is Grabbing, another enemy still qualifies for Grabbing.

One way you can prevent this is by using .none? to check if an array has no qualifying items. More specifically, $game_troop.members.none? {|mem| mem.state?(HOLDING)} will see if any enemy has that state and return false for even one guy. This should allow, say, one hydra head to chew you in peace and keep the other two from joining in at later rounds.

...But because no one has the Holding state yet, it still technically means that all hydra heads can get the Holding state on the same turn. However, if you manage to place the Holding state on one head during this turn, then that should keep the other heads from selecting that skill in the same turn. Therefore, you can try turning that none? condition into an if-statement, and in addition to returning true or false, you also add_state the enemy.

Also, you could make it so that as long as one hydra head is Holding, other Hydra heads would just breath on the rest on the rest of the party.

---

Attract/Repel - In a similar manner to above, you could check if any/all/none of the party or a certain member (not targeted) has certain states. For example, most enemies might not attack or flee if one person has Intimidation (none), sharks might go into a Feeding Frenzy if one person is Bleeding (any), or an boss prefers to use their Pinball Basher if they manage to paralyze everyone first (all).

Hm, that's an interesting idea: Your party leader can "command" the party to Make Distance, causing enemies to shoot from afar or charge the party until the Make Distance state is gone or the distance of that variable is covered.

---

Variable- Let's say you're chasing a train, and the bad guys decide to fight you by throwing boxes and stuff; a toss costs one box and a double toss costs 2 boxes. Sure, you can just subtract the number of boxes used in the damage formula. You could also subtract this variable in the condition so that a double toss can't be used with one box, and the boss has to jump to another car to reload that variable.

Alternatively, you could have a baddie who plants bombs in the battlefield and detonates them when there is enough, or your enemy is Cocoon of Evolution, which either Evolves each turn or Hatches, with a variable to determine their new form. Or perhaps you use a variable to determine "crowd presence" and enemies might backstab you if there is a low presence or use a flashy attack to please a high presence.

Or just using the variable itself to determine attacks. For example, the Prinny games on PSP gives you 6 bosses to choose from but they get tougher after each boss you defeat.

---

Others: Perhaps if you have a holy sword, ghosts of the round table would flee, or if you hold a potion, "thieves" would "steal" one. Or like variables, gold could be used to make thieves more determined to attack you. You can also, say, use switches to disable three attacks and then launch the fourth attack using all three switches. Another thing you could probably do is give enemies different attacks if they are "shiny" or if they had a name that isn't their species.

===

Counterattack:

item_cnt under Game_Battler determines what Counter Attack rate the battler gets, and by default, you get 0 cnt except when the attack is physical and the battler is the opposite faction of the user.

invoke_counter_attack under Scene_Battle is what occurs during a counter attack. The target here is the battler with the cnt, and the @subject would be the person who just attacked them. By default, the attack skill (Attack) is used for counterattacking.
User avatar
polyedit2000
Participator
 
Posts: 188
Joined: Fri Dec 23, 2005 12:00 am

Previous

Return to Suggestion & inspiration

Who is online

Users browsing this forum: No registered users and 2 guests