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 Feb 07, 2017 4:01 pm

I'll take another look at random_target. Last time I altered how this Game_Unit method works so that it would more accurately hit Taunting units. Yesterday, I decided to add in a few more targeting varieties and this is what I figured out:

1. random_target is mainly used in 3 Game_Action methods: confusion_target, decide_random_target, and targets_for_opponents.

2. I could replace random_target with my own random_target_2(subject). subject in Game_Action is mainly the person casting the skill, thus if a subject was flagged to to target people with low HP, I'm now able to do that.

3. Because of the above, I found out that targets_for_opponents handles who gets hit by an enemy AI.

4. Targeting occurs before the actual attack. I can confirm this due to errors and also because I tried to have a Guard status to intercept some attacks.

---

Generally speaking, I replaced random_target with my own targeting method. I'm thinking that with enemies having different targeting priorities (or skills that focus on low HP), I could force some sort of strategy to deal with them. Here are a few examples:

Low HP - These enemies, if allies are damaged, should focus on allies with low HP. Healing is one way to shift their focus, but generally, they are likely to kill an ally with their focus.

Chaotic - These enemies would hit allies regardless of Taunt or Hiding.

Don't hit self- More for my confusion, but this targeting priority ensures that they don't hit themselves if they are confused (unless they are the only person left).

Marked - These enemies will focus their attacks if allies are marked.

Stealth Hunters - This is a "reversed" targeting method, where they would hunt allies who have a lower targeting priority.

Self/Positional - I know User-targeting skills exist, but just in case, I could make it attack certain people. For example, if some enemies attack only the main player or their supports, and if a doppleganger only attacks their real self.

===

Since I also mentioned confusion_targets, I should probably mention set_confusion also in Game_Action. This mainly calls on set_attack through , which in turn sets the attack skill for use as set_skill(subject.attack_skill_id). In other works, you could replace subject.attack_skill_id with a different number (or use an id from a skills array). Here are some states that I might be able to create if I play around with set_confusion and confusion_target:

Fear: Ally will guard every turn out of fear.

Shroom: In addition to a small regen, the affected will spread spores that have a small chance to convert an ally into a Shroom.

Spicy Curry: Like Kirby, this spicy dish will have you barfing fireballs onto your enemies.

Corruption: It might be possible to grant a corrupted ally additional skills, like forcing them to web other characters despite not being a spider.

Zombie: This requires someone to die first, but after reviving, the affected would use a Bite to poison their target.

Summon Ragnaros: It could be possible to "replace" an ally with a Summon that launches a powerful Fireball at a random target.

===

I played Lia's Adventure on neocities. It is not a RPG Maker game, but it was a game that had an interesting concept of advancement with some perils.

Generally, you have Dexterity, Persuasion and Battle as your main "stats", which you can alter by learning passive skills and equipping some items. Your choices will have different results if you have high or low stats, with low stats placing a stacked debuff on you that drives you into the negatives. Some of these skills are also required if you wish to complete certain actions, such as Cell Escape being used to leave your cell without a debuff.

I believe this kind of game came be recreated in RPG Maker. First, by assigning three stats or variables as the "stats of this game. Seconding, it's probably useful to have a "passive state" to add stats, though you can also use the game's eventing to check if the player has that state in order to use that skill for escaping. You could also use a few variables to increase your reputation with certain villagers (which lets you quickly access those villagers in your hub).

Perhaps the main feature of this game are the states. At the very least, you may need to look for a script that alters the appearance of your character, and you may need to alter the script to work with stacked states.

---

Another game that caught my interest is Hearthstone. One of the nice cards is Kazakus, a Legendary minion that can create a potion with two effects.

If you want to recreate his effect, you would need 12 items/states that adds matching skills. Your skill would call up a Common Event that would use Choices to pick out, say, 4 choices with 3 choices that comes afterwards, and based on your results, you would add that item to your arsenal. Alternatively, you could craft one item and have the Common Event flip 2 out of 4 switch, and your item would then run a second Common Event that casts two "skills" depending on which switch is flipped.

The real Kazakus card is more complicated: First, all cards in your deck shouldn't have duplicates, and your first choice is to determine the cost of your potion (which also affects power levels). You could probably set a script condition so that this skill only works if your $game_party.alive_members.size is equal to 1 if you want this skill to only activate if you only have one character left.

===

Final Fantasy XV has a Chocobo Moogle Festival going on. Generally, it will warp players to a special map. Most of the features would be locked, but you should be able to bring some items from that Festival into your main game. Loading your main game would load you where you last were.

So let's see, how to create a feature to teleport us to another map if we choose SPECIAL and still have LOAD game teleport us to the normal game? Well, DataManagers's self.reload_map_if_updated (inside self.load_game_without_rescue(index)) and self.setup_new_game assigns the position of the players, mainly the map and the x/y position but also with $game_party.setup_starting_members.

So probably a new "load" method for DataManager, and then we clone Scene_Load so that when it load_game, it would use that new method. From there, we should be able to load a different starting position. We might also need $game_variables to store the location data and party setup so as not to trap players inside the carnival.

===

Also, one more idea: Kryptonite. This stone is Superman's weakness, and as long as it is on the field, Superman gets weakened. Superman can negate this if he is wearing a special suit. This stone shouldn't affect other players.

So anyway, I might do this in a custom damage formula. First, we turn on a switch if anyone from the party or troop has Kryptonite (like that robot guy). Next, we check if Superman is the user/a or the target/b, and if that switch is on, we alter his damage accordingly.

I don't know how the equipment works, though I do know that Game_Actor's armors return an array of equipped armor, so we could try to see if user.armors.include? works if Superman is wearing that armor.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Tue Feb 14, 2017 6:58 pm

Map Encounters

In RPG Maker, the default encounter system (where you enter battle) is the random encounter, which has a chance to activate a battle on each step. However, you can make a Map Encounter, which is an enemy that moves around on the map. At the basic, you just need to set an Event to Event Touch and then place your Battle Processing in the page. Ideally, if you win, you could turn a self-switch on or use Erase Event to get rid of it until you reenter the map. Here are a few examples of Map Encounters:

Chaser - This is the basic enemy design. Your Custom Move Route will move toward the player, and if your Battle Processing allows escaping, it can stun and push the enemy away.

Alternatively, you can make enemies move around casually or have them flee if they are rare enemies.

Patrol - These enemies move on a certain route.

Mimic - Enemies disguised as items, mainly chests. Here, you use Action Button instead (or copy a chest and replace the contents with a battle processing).

---

Scripting in Move Route

Sound simple? Good, because now I will explain how to make your Custom Move Route more fancy. For example, we'll have an enemy that moves randomly unless you get close to them, then they will start chasing you. As you can see, your Custom Move Route doesn't have Conditional Branches, so you might have to turn your Event into a Parallel Process and write the Move Route on the page...Or you can still use the Custom Move Route.

In the Move Route, the last button is Script. It acts like a custom method for whatever the Move Route is moving, so we can use "move_toward_player" (moves a character towards the player), that method will move this event. It also has one line, so if you want to write a script like
if bob > 2
this
end


you would have to put semicolons in like
if bob > 2; this; end

Events take on the properties of Game_CharacterBase and Game_Character along with Game_Event, though you could use $game_event[] when referring to other NPCs. The player substitutes Game_Event with Game_Player, though you can use $game_player instead.

===

Advanced

Chase when Near: if distance_x_from($game_player.x) > 3 and distance_y_from($game_player.y) > 3; move_random; else; move_toward_player; end
We set a square that measures 3 tiles away from the center (enemy). If the player is outside this boundary, say the same Y but 8 tiles away on X, the enemy moves in a random direction. However, if the Player is within that zone, the enemy will chase the player. Only by moving far away will the enemy resume a random pattern again.

Another enemy is one that chases you from afar but stops when it gets close. Not much threat when it's chasing you, but when it's coming at you, its sudden stop could trip you up. Another possibility is to have these enemies hide on the way and jump down if the player gets within range.

Vanisher: if rand(10) <= 3; @priority_type = 0, @opacity = 0; move_toward_player; end
if @opacity == 0; @priority_type = 1, @opacity = 255; move_toward_player; end

And in your Conditional Branch in your event, you can use @opacity > 0 or is it self.opacity or $game_event[event_id].opacity. Anyway, this enemy usually stays still, but it may have a chance to disappear and move, making a lunge if it was invisible like a ghost or a burrowing plant. This enemy shouldn't block you when it is invisible. Another example, only having the ghost show up when you're close, or an enemy that goes stealth when it gets close to you. In the same way, you can try to change the graphics

Dog Chain
It may be possible that you could use distance_x/y_from so that enemies can move from a certain character on the map with move_toward_character($game_event[]). For example, a bear looms around a bee hive. It could move normally but would move towards the hive if it goes too far, and it might also chase the player only to the boundary (by which it will then have normal behavior and head back.

Switch Sensitive
Cockroaches made be sensitive to light, so they may chase you unless you turn the light on, in which case they could try to flee. You can either make a Map Encounter with two pages with the second page requiring that switch, or you can see if $game_switch is one only with one page.

Alternatively, you could check if your party leader has a Time Accel State, and then you adjust the move_speed so that enemies move in slow motion. Also, you could have a repellent that caused nearby enemies to move away from you.

Boo!
Or a Weeping Angel. Perhaps you could make it so that if Player's x is to the right of the Event and Player is not looking Left (direction == 4), the monster will move in that direction, so if the player looks in the direction of the monster, it will stop.

Teleporter
It just occurred to me that you could set the x and y of the monster. Perhaps it is a patrol that can't go far from its spawn point, or perhaps this monster is a projectile that returns to its shooter. Or perhap's its one monster that guards both points.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Thu Feb 23, 2017 3:58 pm

Hm, let's say you want to change Attack so that if it hits your allies for some reason (Confusion), it will deal double damage. So you might write

if a.actor? == b.actor?; damage *= 2; end

So why not a.actor? and b.actor? Well, the and means that both conditions must be true, so both a and b must be actors, not enemies. However, what we wrote up there will see if a is an actor, b is an actor, and then it'll see if a and b's answers are the same. This means that if both are actors or both are not actors (enemy), it'll return true for that condition. Alternatively, you can write

if !a.opposite?(b); damage *= 2; end

opposite?(battler) returns true for one of two conditions: It checks if user and target are actors and both conditions don't match, or it'll return true if the battle is flagged with Magic Reflection (I assume if a spell is reflected, the actor target is treated as an enemy to the actor who cast it). For the above example, we are using ! to check the opposite of opposite (meaning that getting true for having opposite members become false, thus we get true if the members are on the same side).

Battlers can also use friends_unit or opponents_unit. These will return Game_Party or Game_Troop depending on what the battler is. For example, Beastmasters have a skill that increases its power when there is a beast on their side on the field and this could be written as

if a.friends_unit.alive_members.any? { |member| member.race.include? "beast"}; damage *= 2; end

If an actor uses that skill, it'll check $game_party.alive_members.any? If it's an enemy using that skill, it'll check $game_troop.alive_members.any? Just remember: members account for all living and dead members of the units and alive_members refer only to the living members.

Here's a fancier example: if b.race.include? "boss" and b.friends_unit.alive_members.any? { |member| member.race.include? "barrier"}; damage = 0; end (I'm gonna make this boss receive 0 damage as long as a barrier-enemy still lives)

===

Let us take a look at some games, shall we?

Bowser's Inside Story / NieR: Automata-
In Bowser's Inside Story, Bowser can inhale an enemy, which will cause the Mario Bros to fight the "weakpoint". This is as simple as switching the party and hiding/appearing the enemies (you will need to use Script to hide enemies). The upcoming NieR game has a similar concept because some enemies can "hack" you, which will change the battle to a twin-stick shooter and damage from hacking will transfer to your character.

Overwatch
Overwatch has 3 kinds of HP. HP itself is self-explanatory. Armor reduces some damage and gains more healing. Shields regenerate by a set amount. While other characters can add armor and shields, let's keep it simple. Here, we'll assuming you set up a note-tag or a universal damage formula that references to certain enemies for the health change:

Armor- When your "HP" is above a certain amount, you just decrease the damage or increase healing.

Shield- You may need to introduce two new @variable. Subtract or add to one of the variables whenever you deal/heal damage, making sure the variable is within 0 or the max variable. In your regenerate_hp method for your Game_Battler, increase the variable and add/subtract from the damage as long as the variable in question is lower than your max variable

Giga Breaker
I haven't played this, but you basically gather junk and use them in devastating attacks. I suppose some adjustments to MP are in order. So let's say...fighting some enemies produces some MP. In this game, the player could drop their ball of junk, and I'm assuming that it'll affect their speed, though let's also say that some attacks will burn away the junk. So we would also create a skill to a common event that will store the MP in a variable and reduce MP to 0, and then we also create another skill to add that variable back to MP.

===

The next game I was going to suggest is Shantae, and that has a lot of topics. In Shantae (Half Genie Hero), you can transform into different animals. These animals don't have much combat abilities, but they can access areas you normally can't reach. A similar concept is Pokemon, where HMs give Pokemon skills to pass certain areas.

If you don't use scripts, it is simple to use a common event to either change the player or to change the state and character graphic of your player into an animal of your choice. And then check for the player/state when trying to access areas like mouse holes and water. Since mouse holes are small, you may also want to activate a switch in those areas and place a condition in those common events preventing you from "transforming".

An elephant form is heavy, so you could have "wind" events that push back players unless they have the Elephant State, in the same way that stepping on some rotten floors in this state could send you down one floor. You might also have the Dryad Form that makes monster think you are a tree and move away, though at the cost of walking (so you would have to uncast that spell to proceed).

---

Oh yeah, speaking of floors, let's have some floor traps. Just touch and below character, run the thing and either flip a switch or erase the event depending on how many times you use them. Here's some effects you can try out:

Drop a Floor/Teleporter - Move to another map. Simple enough. Some can be disguised as regular floors. Or you can move to a different part of the same map.

Bridge - Surprisingly enough, you can walk on events, so you could activate a bridge to walk over otherwise impassible tiles. You could also make it so that it becomes a disappearing block and if you're still on it when it disappears, you'll drop down.

Spike Trap - There are numerous tutorials for this, but it's similar to my Bridge. Pretty much the spike event shifts through multiple pages via self-switches, and one of those pages would deal damage on touch.

Wind/River Tile - The events here should push you back in a certain direction. Like the elephant example above, you could walk over them if you're heavy.

Slow/Haste Tiles - This requires you to adjust Game_Player's move_speed, but pretty much these tiles add a state that increases or decreases your move speed. Alternatively, you can check $game_player.region_id or $game_map.events[EVENT_ID].region_id if you only want to change the speeds by region.

Confusion - There's already a few scripts that mess up how you walk. Essentially, if you have the state, you will chose a random direction to walk, otherwise you will walk normally. There's also a Jelly state where you could try to walk away only to step/pull back into place

Stuck - Taking the same concept as Confusion, your character won't move, but pressing the buttons will eventually remove the state. I suppose you could use a Common Event and Auto-Run with a Loop to simulate this, where pressing buttons decrease a variable enough to unflip the switch.

Arrow Trap - This is actually going to take two events. One is the arrow that will do something on touch, and the other is a switch that makes the arrow move. You might have to use Script to check if the arrow "landed" to determine if you can reset and fire "another" arrow.

Gorgon Trap - Ah, here's a more interesting trap. It'll actually be a parallel-process event placed on a variable timer, and once that time goes down, it activates a condition: If you are looking UP at the gorgon, you'll be petrified, but if you are looking in other directions, you're safe. If the gorgon's not looking at the whole room, you could check the region_it of affected hallways (or hiding places).

Disguise / Transformation - This sounds like something you do with spells, but they can be traps too. For example, you are in a prison and you can actually leave. However, there are glitchy drones that can strap collars on you, and those collars can keep you from passing security checkpoints. So you'll have to remove those collars before you can move on. Or perhaps you are going through the forest of a Mushroom Eater that only attacks mushrooms...and you step on a patch that turns you into a mushroom.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed Mar 15, 2017 6:25 pm

You know, it's easy to change your save files without going for an over-the-top save script. In my case, I wanted to put up icons to notify players of which option they chose.

DataManager handles most of the data, though it's mainly used for new games or saving/loading. If you want to change things for your savefile, you need to add a header first:
Code: Select all
def self.make_save_header
  header = {}
  header[:characters] = $game_party.characters_for_savefile
  header[:playtime_s] = $game_system.playtime_s
  header
end


By default, RPG Maker savefiles show all the characters in your party and your playtime, both data drawn from your savefile. Let's say that you want to put a NewGame+ star on your savefile. In this case, you add a header[:newgameplus] = $game_switches[100].

Next, we check out Window_Savefile. First, you need to create a new drawing method and place it in the refresh method. In this case, we have draw_newgameplus(contents.width-24, 0) (contents is the size of the window and an icon is 24 wide). For our draw_newgameplus(x,y) method, we should study the other drawing methods in this window; We do need

Code: Select all
  header = DataManager.load_header(@file_index)
  return unless header


The other drawing methods take an array of objects and a string, but in our case, we used a switch. So we could just use draw_icon(19, x, y) if header[:newgameplus]. If this works, then you have a New Game Plus sunglasses in the corner of the savefile once you flip the switch for the New Game Plus. Also, when you use those two lines, you can use multiple headers in one drawing method.

---

Now, what can we do to make the savefile more interesting? Well, I suppose we could replace the characters with faces if you fancy that instead. However, there are other tricks you could do:

Strings- Chapter Name - Chapter 1- The Beginning; You could have a header for the chapter number and then use a case/if statement to determine the chapter name. However, you could also read this topic and learn how to place arrays and variables in the game's variables, though that would be a second header.

Final Fantasy XV's savefiles show what quest you are currently on too. Other examples of strings could be your character's thought of their last meal or a reminder to use the toilet

Pictures all around! - Undertale's save file was creative since the characters you meet (and spare) show up there. You could probably arrange your characters like a photoshoot or even place a background for them to stand on based on where you saved. Perhaps you could show they are chasing their next boss or you could show a stomach filled with bosses you consumed before.

---

Rather than coming up with small things to do, here are some ways you can customize your save files:

-Case file with the current story target's face and personal info.
-Passport with stamps and signatures of new places.
-Pieces of a machine to reverse shrinking.
-Hearts like Zelda.
-Debt remaining to escape arena.
-A notification of when that savefile is valid for a daily reward.

===

Under Scene_Load, the on_load_success will take you to the Scene_Map (after things including map location are loaded). Perhaps you can go instead to Scene_Synopsis so you can give a summary of your adventures so far.

===

Earlier, I might have mentioned that you could use distance_x_from(x) and its y counterpart to measure spaces from a location or player. Yeah, let's say x and y are at the center of the screen. An event to the left of the center is at the left and an event to the right of the center is at the right. So you would need four distance_x/y_from calls. However, you could use .abs (absolute) which returns a positive number, reducing this to two calls.

Actually, a method you want to copy and rewrite is Game_Event's near_the_player? since it already finds the absolutes of X and Y and returns true/false depending on the sum, which would create a diamond-shaped area of detection.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Sat Mar 25, 2017 4:30 pm

Hm, I just had a thought about an airship in the game that exploded and drops chests into places...

So let's see, we should have a variable to randomize the results in an area, say 1-10, so that 1-5 are chests. So let's see how to set up our chests:

Page 1: Parallel Process, condition to check if variable matches a certain number so that we can turn on Switch B or erase the event.
Page 2: Switch B required, pretty much the Chest Event.

(Events are determined by latest pages, so setting Page 1 as Page 2 means conditions are (true) and it won't matter if Switch B is on)

So let's say the variable is 3 when you enter, so Chest 3 appears on the map, and stays there when you go in and out...but that might also spawn Chest 2 with the randomziation.

Hm...Perhaps you don't want additional randomized chests until the one in question is opened, so let's say when you randomize it, you either require that the variable starts less then a certain number (100) or it requires a switch, then for the Chest...

Page 1: Parallel Process, when turning Switch B on, we change the Variable/Switch
Page 2: Switch B required, Chest event, but when looting, reset the variable/switch.

Hm, that's probably an interesting way to randomize map events or encounters by turning them on or off before they become "active".

---

Hm...the issue with that is that Switch B will make the event stay...So what if you want a random event to disappear when leaving the map? One way would be to Script Call $game_self_switches[[map, event, 'self_switch']] = value where you use the ID of the map and event as well as the letter for the switch. Another thing I would like to try on the Event is:

Page 1: Parallel Process, condition to check if variable matches a certain number so that we can turn on Switch B or erase the event.
Page 2: Switch B required, pretty much the Chest Event.
Page 3: Parallel Process, Switch B required and Variable is more than one. If the Variable matches the number, make Variable 0, else turn off Switch B and erase event.

Ideally, Page 1 turns on Switch B after matching the variable, and since the variable hasn't changed, it checks Page 3 and turns that variable to 0 and goes to Page 2, not triggering Page 3. The next time we come in with that variable randomized, that variable either triggers 0 and shows the Page 2 of the event, triggers the same number and goes to Page 3 which will 0 the variable and go to Page 2, or it becomes a different number and Page 3 turns off Switch B which might go to Page 1 and Erase itself.

===

Also, I want to point out that images in the game usually come in Sprites and Planes, with planes more for looping parallax. For Sprites like battlers, you can use @wave_amp, @wave_length, @wave_speed and @wave_phase to control the picture's built-in wave effect. This effect is when your still image decides to do a belly dance.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Jul 24, 2017 3:12 pm

I may have mentioned counterattacks briefly, but here's the general idea:

Code: Select all
class Scene_Battle
def invoke_item(target, item)
  if rand < target.item_cnt(@subject, item)
    invoke_counter_attack(target, item)
  elsif rand < target.item_mrf(@subject, item)
    invoke_magic_reflection(target, item)
  else
    apply_item_effects(apply_substitute(target, item), item)
  end
  @subject.last_target_index = target.index
end

def invoke_counter_attack(target, item)
  @log_window.display_counter(target, item)
  attack_skill = $data_skills[target.attack_skill_id]
  @subject.item_apply(target, attack_skill)
  refresh_status
  @log_window.display_action_results(@subject, attack_skill)
end
end


This is what happens line-by-line:
-A window shows that the target counters a skill
-A skill is created from the target's attack skilll
-That skill is then inflict on the subject aka user.
-refresh
-The window show the user being attacked.

You can modify the second to use a different skill (based on list number). You could use a if/case statement or a race script to help you determine which skill gets used. Here are some examples of counterattacks:

---

Fire Guy -This enemy is a living bonfire, so punching him deals fire damage.

Slime Guy-This enemy is pretty sticky, so attacking him can add Slow.

Heal Bomb-This object heals you if you attack it, though it can only take one hit.

Card Duelist- This enemy uses a Trap Card on himself. If you attack this enemy, he'll activate his trap card to paralyze you!

Shield Mage- This enemy casts fire shields and thorn shields on his allies. Ideally, you would make new methods based on counterattacks and activate them with the matching states, so an enemy with both shields can counter two times.

Raging Gorilla-This enemy instead targets itself and boosts its attack when it's hit.

Toppling Tower-If you use a stacking state script, you could probably have and enemy build up a stack, then fall and damage the player who adds the tenth stack.

===

I also have an idea to update a previous boss idea. Assume that you are fighting with four people:

Slime Tower 2.0 -
Slime Tower is a stack of slimes that comes in two phases that switch back and forth. In the first phase, the Slime Tower will attack. Each hit on the boss adds a stacking debuff, but whoever deals the last stack causes the boss to fall on him. This also forces the boss into the second phase where it will be stunned, but a group of smaller slimes will also be spawned. When the boss recovers from the stun, it then transforms back into the first phase.

For a hard mode version of this boss, I'm thinking of either adding a stacking buff or a shorter stun for each second. From their, it's either increasing the counterattack topple in the first phase to make players wait until the boss drops some stacks, or an increasing buff in the first phase that drops when going to the second phase.

===

I also played with concept around a Game_Battler's refresh. For this example, a knight's special passive is that when it drops to 25% health, it'll go into Sleep Mode, a state that keeps it asleep but grants more defense and massive regen. This state is also removed at 100% health.

Now, this gets me an idea for another boss: This boss has soldiers that won't die, but you can deal enough damage to force them into Sleep Mode. The boss also adds states to his soldiers that grant abilities like healing and bombing, so you would have to hurt them to shut them down.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Apr 02, 2018 2:04 pm

It has been a while since I posted ideas, mainly because I was experiment with my ideas. In fact, the games I posted has slowly evolved into an ABS and I think I have an idea for my next game project. Anyway, I won't tell you how to build an ABS, but here's some interesting things I've came up with:

===

"Auto State" on Map - In the Game_Player/Game_Follower's update method, you can put in a variable and have it tick down, pulling an effect and resetting the ticker variable. In my case, I use variables to increase my MP, count a state, and determine the attack intervals of creatures. This will require high numbers as update is check frequently, roughly the same amount as frames per second (30?).

Instant Teleport - For a Game_Character, you have x/y (destination)and real_x/y(current position), and movement generally stops when x == real_x. If you manage to set both of these sets of variables, you can make teleporters. Well, you also have the same-map transfer, but still.

Integer/Array catch - The is_a? is good for determining what kind of thing an object is. It also works down to the lowest levels. For example, perhaps you wrote a method that is supposed to use an array but you use variables in some cases.
Code: Select all
def set_range(examplearr)
codearr = [0,0]
if examplearr.is_a?(Integer)
  codearr[0] = example
else
  codearr = examplearr
end
end


Double Notetags - When you're using notetags, sometimes the format is easy enough so that you can set up two Regexs in case you don't know how to write it to make it flexible. For example, Regex1 is <Enemy: id> and Regex2 is <Enemy: id state>; so it's something like
Code: Select all
examplearr = [0,0]
res = match(Regex1)
if res
examplearr[0] = res[1]
else
res = match(Regex2)
if res
   examplearr = [res[1],res[2]]
end
end


Array Stuff - There are some array things you can use to make your coding easier. For example, .push() will add an object or variable to the end of the array, which is useful if you have no idea how many items you're adding in or if what you're putting in from another variable already has some order. .max and .min returns the highest and lowest variables inside an array, and .max_by/.min_by {|thing| thing.property} will return an object based on the highest or lowest number it can find. And .clone makes a separate copy of an array, so making changes to that will not change the original array, useful if you're planning swap.

Common Event Evaluation - If you use an item/skill from the menu and it has a Common Event feature, the check_common_event in Scene_ItemBase will go to the map if it detects a common event. In my ABS, I place item.damage.eval(self, self, $game_variables) (if in the game map) there so I can use the damage box to change my game variables and switches instead of having multiple common events. The selfs will cover the user and target respectively in the formula box and the item here will be represented by the selected item in the window.

===

Anyway, here's some things you can try out:

-Create a clone array from the players and followers, then in the game_party's swap order (usually used for Formation), swap the characters and reapply the data so your characters stay in their respective positions even though your leader changes.

-This can be combined by having a switch stop the follower from chase_preceding_character
or if you teleport members of your party into separate parts.

-Use a common event and a damage formula or an event to create something like a move_toward_point, serving as a nice distraction. Don't forget to reset the variable when transferring maps.

-For my camping common event, I used the Script part of the Variable to put in floats and to set the variable equal to itself as an integer.

-$game_message.busy is nice if you have a window you want to vanish while a textbox is up. $game_map.interpreter.running? is useful if an event is running, so events don't attack you when you're watching something.

--Oh, and I started the ABS when I managed to infuse an enemy object into the event object.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Apr 09, 2018 1:06 pm

This just occurred to me, but Battlers have a method called state_resist?(). This method is related to the State Resist feature, and it's meant to keep a state from applying to the character. This method mainly shows up in the add_state() so that even if the state application is successful, the state will not actually apply. So for my state-nullified message script, I put an extra branch so that if the new state doesn't add, it will add to the added_state and nullified_state objects if it's due to resistance, so I can show the message when it's "added".

However, I just realized a second use for State Resist: You can resist states that you're not planning to add. What I mean is that a State Resist can act like an extra property of the battler just like you add a "No Boys Allowed" sign to your door even if you don't have brothers. It's similar to scripts that gives your characters racial or gender tags.

For example, you have Stomp, a skill that kills tiny things. You can give this skill an element and small enemies a high elemental rate. Alternatively, you can give small enemies a State Resist [SMALL] and then you could probably just apply the death state:

state_resist?(SMALL) ? add_state(1) : 15


One famous example of a gender tag is the ability to go into a bathroom of a specific gender. By using the script option of the conditional branch, you can write

$game_player.actor.state_resist?(FEMALE) ((If you only want to check if the leader is female))

or

$game_party.battle_members.all? {|member| member.state_resist?(FEMALE)} ((Checking if all members are female.))

With some more coding, there are some interesting ways to use state_resist?(). For example, give a weapon State Resist [Chop], then have a tree event check if you can "resist" Chop for some wood, an alternative to checking all of your battle axes. And of course, you can use state_resist?() for the obvious; for example, to get past the succubus' hypnosis will require a guy immune to her charms, an amulet that nullifies her charms, or having drank a potion that makes you immune to her charms, all which should count as having that state resisted.
User avatar
polyedit2000
Participator
 
Posts: 285
Joined: Fri Dec 23, 2005 12:00 am

Previous

Return to Suggestion & inspiration