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 » Sat Apr 23, 2016 2:51 pm

So I'm making a spider game demo. At this point, I feel pleased about my cocooning states, so I might as well post what I achieved and what I'm aiming for:

---

My Cocoon State...is composed of many states. You may need Conditional States, and here are a few rules:
1. You can't assign nil or zero as there is no state for that.
2. States you assign with this script cannot trigger the condition of another state.
3. The basis of the Conditional State script is that it outputs one number

So the first version of my Cocooned State was Cocooned, and the second version includes a Webbed state; a person needs to be webbed before they could be cocooned via the same skill, so my notebox has this:

if a.state?(WEBBED)
COCOONED
else
WEBBED
end


Though now that I think about it, the player could Web a Cocooned player, so you might want to have:

If a.state(COCOONED)
COCOONED
else
if a.state?(WEBBED)
COCOONED
else
WEBBED
end
end


Now, what I have for version X is a bit more complicated, but it works. This is what the general code looks like: If the target is COCOONED, maintain the current cocoon state; else if the target has two other parts of the body WEBBED (or PARTS doesn't need webbing like a snake) and the target is not IMMUNED to cocooning, then apply a cocoon based on their SIZE (predetermined by a state) and remove the other two states; else if the target doesn't have a missing-body state, apply the state. This WEBBED state is also copied to the other two WEBBED states. I had to decide if I wanted cocooning or body parts first, but I figured if a target is cocooned, then there's not really a point to reinforced certain body parts, so those web skills will affect a cocoon equally. Anyway, these are some (not all) of the states I used for version X to give you an idea:

Active States: States to be applied after processing.
NORMAL COCOON- This is the state you're aiming for.
SMALL COCOON
HEAD WEBBED- These states hold the conditional states.
BODY WEBBED

"Passive" States: States to check and determine results.
NO COCOON- For enemies that can be Webbed but not Cocooned (ie a spider).
SMALL- Size modifier for Cocoon.
NO HEAD- Immune to the Webbed state for that part, but also means one less requirement for cocooning.
NO BODY


---

Next, the cocoons themselves. Using the same author, I went with Shape Shift to change the graphics and skills of the battler through a state; this requires setting up the Actor or Enemy depending on who is targeted. I went a bit further with State Charges and a modified Confusion Fix to automatically use skills (requires setting confusion). Anyway, once you have COCOONED inflicted, don't forget to set some freedom methods for a challenge; Skills that remove the state, damage change, etc.

Also, I tested this for enemies but should probably see how actors work, but some enemies may possess skills like Cut to help free them. So I created two more states: KNIFE and NO KNIFE, and also a skill type called Blade with a removal spell inside it. With how the Shape Shift script works, you want to give the specific enemy KNIFE and the cocoon in general the removal spell (requiring KNIFE state). This means that KNIFE enemies can use that skill to escape while cocooned while normal enemies use the other skills. However, NO KNIFE will be set to seal the Fire skill type, which also includes that certain skill, so an enemy infected with NO KNIFE cannot use that KNIFE escape skill. I will see if I can find a simpler method.

And I used State Charges as I did not want a simple escape spell to undo your cocoon. Keep in mind that you cannot refresh the State Charges by applying the same state, but there are methods in the script to refresh or add to the states.

---

Oh, and I have a few snippets:

1. Placing $game_variables[x] = y; dmg in a skill's formula and calling a Common Event. I used this to have dialogue depending on the skill, but I'm not sure if I need this for the demo.

2. If one of my "party members" gets uncocooned, they're likely to escape from the party. So at the end of each turn in battle, I run a Common Event, and the Common Event will check if the party member has that state...if not, then the member is removed from the party after a few parting words. Since I'm looking forward to Cloning Actors, though, I'm not sure if this method works...unless I use a Loop?

3. I want to carry cocoons on the field but want to suffer a speed penalty the more cocoons I have. In a parallel Common Event, I have a variable store the number of party members I have and then use a script call to set move speed equal to 5-(x/4) (or your own).

4. I checked Sprite_Battler's code and found :blink and :damage, part of the collapse animation. Playing around, I have the battlers move around a bit when attacking or getting hit, or when the Cocooned states are involved, have them shake and wiggle.

5. I created WEB BARRIER. When the player is in this state, an enemy who attacks him will be inflicted with a WEBBED state. In your formula, simply include something like if b.state?(BARRIER) b.remove_state(BARRIER) a.add_state(WEBBED) end. Adding a state will also trigger the Conditional State tag. Alternatively, spells aren't physically touching the player, so you can burn the WEB BARRIER away with b.state?(BARRIER) b.remove_state(BARRIER) end

---

Here are the stuff I'm looking forward to:

-Shiggy's multi-skill can shoot extra skills. One of the skills I plan to create is based on World of Warcraft's Monk's chi talent, which is bouncing a ball back and forth.

-I'm not sure if I should use the Cannibalism/Devour/Cook scripts or use a common event, but in either case, I should do something about capturing enemy cocoons. At the basic, Female Cocoons will be temporary party members, but I'm not sure what bonuses other cocoons will provide.

-I notice I have State Faces script that change an Actor's face with another visual, which I know works even with Shape Shift. In another game, I would have demonstrated a wrapped (Shape Shift) person with hypno eyes (State Face). However, with "passive" states like SMALL from the example way above, and probably a few states exclusively for females, I think I can personalize those cocoons. Actually I recall a script that can change a battler's appearance via states, but I have some difficulty finding it.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon May 02, 2016 8:49 pm

Bosses...they hit harder and can take more hits. Some of them require thinking, whether it's by learning from enemies or learning from their patterns. In a Vore RPG, it's not surprising that bosses have more spectacular Game Over scenes (since they are made in events) when they defeat and eat you.

However, those are for games where enemies are the pred. If you are the pred (or in Esthe Hunter's case, the tamer/captor), there are mainly two ways to finish an enemy, by defeat or by vore, but we'll be focusing by going on the VORE route. In my case, my spider can COCOON an enemy after WEBBING their HEAD, ARMS, and LEGS, but it would be too easy for my spider to defeat bosses that way, but VORE and COCOON will have the same end goal as an alternate means of ending the battle.

---

How to Serve Boss a la Mode:


1. Vore by Percentage- This is what most vore skills are designed as. It can work with bosses too, only with more damage required.
Spoiler: show
I can COCOON enemies by inflicting WEB HEAD, WEB ARMS, and WEB LEGS, but I also have a NO COCOON to prevent COCOON from forming even if all three prior states exist (and I will remove NO COCOON when conditions are met. In this case, Boss 1 has armor and cannot be cocooned until half of her health is gone.


2. Vore by Patience- If you don't want to beat up your food, wait for the boss to become tired. This is either after a number of turns or when a percent of their MP is used up. This is how you achieve Undertale's Pacifist victories.
Spoiler: show
Boss 2 is supplied with a number of Antidotes. Any attempts to web or poison her will just have her healing. Once she's out of Antidotes, there's nothing to keep her from being Cocooned.


3. Vore by Opportunity- You can only vore the enemy after a certain skill is used. The skill itself will apply a state, and that state can be used to activate the vore component of your finisher. Some bosses in mainstream games can only be damaged after certain attacks anyway, most obvious in The Witch and the Hundred Knight.
Spoiler: show
Boss 3 possesses a powerful barrier...that goes down after a powerful laser. I only have a few turns to successfully cocoon her while she tries to reactivate her barrier.


4. Vore by Preparation- You cannot vore the boss until it has a specific state. You could be used to voring enemies after their health is down, but the boss will not be vore...unless you also include Sleep or Stun to keep them from fighting back.
Spoiler: show
Some enemies with a blade or fire element can use alternate methods to escape the cocoon. One boss is actually a flaming swordsman, so they will always escape even when cocooned until other skills seal up those attacks.


5. Vore by Puzzle- You cannot vore the boss unless you perform certain steps. In Elebits, you can only defeat the final boss after removing the screws to expose the core.
Spoiler: show
A boss controls a mech suit. I cannot web the rider, so first, I have remove its blade to make it shoot flames, then I web the flames and make it over heat. Only then will the boss transform and expose the rider, which can then be cocooned.


So those are a few examples if you want to put some variety in eating bosses. But why would you eat a boss? Well, some of the vorish scripts can give stat boosts or drop items, so perhaps eating a boss could net you rare skills or massive boosts in stats.

---

Have you kept up with custom formulas? Here are some other tricks you can try:

1. Barrier - if b.state?(BARRIER) damage = 0 end. When the target has this state, reduce or null damage. My WEB BARRIER applies a state to the user if they strike this barrier. You can also choose to heal the target by making it negative (Masochism) or increase the damage (Shattered Armor)

2. Mana Boost - If a.state?(MANABOOST) damage = atk+mag else damage = atk end. This state increases the attack through magic attack. As a POISONED BLADE, your sword attacks can also apply poison.

3. Pseudo Accuracy - d = rand(10) ; if d < 3 damage += 1000 end. A random generator can add extra damage through a headshot or cauterize wounds. Through the same principle, you can also roll dice.

---

Also, I have been adjusting the Collapse/Motion area of the battlers. That gets me thinking: I can change how the battler moves by self.state?(), so if I apply a self.state?(MINI) and change the self.zoom_x and self.zoom_y, I can shrink down the battler without having to create another graphic.

And I got it. At the moment, I have this tied into a Battler Motion script and I haven't checked the default script, but at the basic, you find the update in the Sprite_Battler and add a mini_update method, and in the mini_update method, call on @battler.state(MINI). Define self.zoom_x and self.zoom_y's size for both cases (note that self refers to the picture and @battler refers to the enemy the picture represents). And with update, you can += or -= until you get the desired zoom to animate this change. Also, the default zoom_y and zoom_y is 1.

Also, if you are using this in a Battler Motion script and want to use the Breathing effect (enemy's pic stretches up and down), it's doable as well. From the script I used, it used if self.zoom_y<1.01 and self.zoom_y >1.05; change it to minibase + 0.01 and minibase + 0.05 where minibase is the size determined by MINI.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed May 04, 2016 1:52 pm

Some other things I messed around with:

1. Prizes on alt-death state: For my spider game, I decided that you can only reap experience and money if they are defeated while COCOONED. This would be similar to Pacifism in Undertale.

Anyway, my method first starts in Game_Enemy. There are methods for exp, gold, and make_drop_items that references to the database's enemy template. Since, for example, I want enemies to grant experience only if they are COCOONED, I would make

Spoiler: show
def exp
enemy.exp
end

into

def exp
if self.state?(COCOONED)
enemy.exp
else
0
end
end


The issue with the above script, though, is that when an enemy dies, the clear_state method runs and all states other than death are removed. One way to resolve this is to change the clear_state to exclude some states from being removed. However, you can also look for a "state persists through death" or "permanent state" script that keeps the state active even when you die.

---

1a. Prize from alt-death (Shapeshift) - Also, keep in mind that if you transform your enemies, the exp/money/items come from the transformed enemy. With Himework's Shapeshift, the enemy is considered transformed while the state is up, and if the state is removed normally, then you get the normal enemy drops; if you make the Shapeshift state exist through death, it'll take the drops from the transformation. So unless you decide to make every enemy have a Shapeshift state (which would involve a lot of if self.state?(SHAPESHIFT) and self.enemy_id(X) in the script), here's a different method.

For example, my state COCOONED is a Shapeshift, so I make another state called PRIZE and I also have the permanent state script. Under Game_Enemy, I make modifications to exp/gold/items to make PRIZE the condition for winning (see above example). Next, in the Sprite_Battler, I make modifications to the collapse/boss collapse method (which only runs after an enemy is dead); when the COCOONED state exists and @effect_duration is at a certain number (1 if you made a separate animation for the effects), remove the COCOONED state and add the PRIZE state.

===

2. Custom Formula thoughts-

a. If you want to handle your own variance instead of the checkbox, you add this to your damage: vary - (rand(vary) * 2). If you use a formula(a,b), you can do a formula(a,b,vary = 0)...that way, when you do use formula(a,b), it runs as if you put 0 where vary is.

b. I put the custom variance up there because you can do if damage > b.hp. In theory, I can also add if b.state?(COCOONED) under there and apply the PRIZE state. However, you may also want to modify the damage calculations as there might be a chance you could miss.

c. Similar to above, you can also do if b.hp <= b.mhp/2. I point this out because when you fight Toriel in Undertale, you do a lot of damage when she's down to half her HP. Or, if you're feeling a bit genocidal and like to kill a SPARED opponent, just do if b.state?(SPARED) damage = 999999 end.

d. Actually, that does get me thinking, if you have flame breath and an alcohol item, you could probably increase its attack and remove the item. Though, you may also want to make sure the attacker is an actor so that enemies with the same skill don't steal your booze.

d2. Or have the enemy steal your booze in what amounts to theft (assuming user is enemy and target is actor).

e. Or, with a game variable or @variable (@variables are unique to the enemy/actor they're in), you can have one skill create "stock" variables and another skill that can consume a stock to increase its attack. Think of this like Zelda from Hyrule Warriors where she could use light balls to change her attacks.

===

3. A "Battler Motion" script like one made by Soulpour777 or MOGhunter will have the enemy "breathe" instead of being a pretty picture. In Soulpour's case, his breathing effect is determined by "breath_phases" which equals 0 (up) or 1 (down) once it reaches a certain number. I decided to change how my COCOONED enemies breathe by adding another condition (rand(x)<3 and have state) and make breath_phase equal to 2 so that there is a chance the COCOONED victim takes a sudden gasp of air and jerks quickly.

Anyway, if you have an enemy that vored one of your party members, you can change the Breath Effect to have these sudden jerks. In the same way, you could probably change the zooms to make the eater look bigger.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Fri May 06, 2016 3:49 pm

Have I discussed Common Events before? The thing is, I decided to have three characters, and calling common events would save a lot of space when eventing. First of all, common events can be made in the database, and there are three triggers:

Call- this only runs if you call common event from the event page
Autorun- this runs when a switch is on. Nothing else on the map can run while the switch is on.
Parallel Process- this runs when a switch is on. Everything else can run while the switch is on.

Smiley also mentioned this in the first page:
The first one I made was a way for a party member eat enemys in a battle.
The party member uses a vore attack which puts them in a "full" state and the enemy in a "eaten" state. A common event is then used to check for enemys with the "eaten" state and kill them. Then you can display some dialogue and/or a picture of the pred with a full belly. The "full" state that the pred is in prevents them from moving either for a number of turns or until the battle ends. This is to prevent the player from abusing the attack.

In other words, a common event like that should be:
if enemy1 has state EATEN
enemy1 get state DEATH
show pic
show textbox
remove pic
end


---

Here are a few more examples of how you can use common events (I'll use the lead player as an example, though more eventing would be needed if this applies to the whole party from any character):

States on Map (parallel process)
Spoiler: show
If actor has state(X)
stuff
else
not stuff
end


I want to make it so that if my character gets COCOONED, they can only hop around (with another script), which requires a switch. So if I have the COCOONED state, I can turn this switch on and turn the switch off if they no longer have it. Similarly, you can slow your character down if they are FULL or you can cancel a state if they have it (if your character cannot be COCOONED but you want to apply it to the whole party).

Alternatively, you can make a call version of this script for battle. In my case, if one of my COCOONED victim-party-member is no longer cocooned, they'll remove themselves from the battle.

Music Changer (call)
Spoiler: show
If switch is on
off
else
on
end
if switch is on
boss music
else
enemy music
end


I know it's simple if you have one party, but for me who have multiple parties (like The Cursed Village), I feel that each character have their own set of themes. So I would place Music Changer before and after a boss battle, and, in theory, the music shifts between boss and enemy mode. With this common event, though, if I were to fight a boss that has their own theme (like a final boss), I'll turn the switch on while changing the music so that I can call Music Changer after the boss.

My spider character would drag cocoons behind him, but he'll also have actual party members join; I would prefer it be spider>party>cocoons, but I don't know if there are calls to insert the party in a certain position. So my work around would be to have the common event toggle between removing the cocoons (and activating switches to remember them) with the switch on and to add them back using the activated switches).

Encounters
This is the basic use of on-map encounters; rather than reworking the code of one monster and having to correct/copy-paste all the monsters, you need only to edit the relevant common events and only adjust the monster in terms of encounters.

But there are alternative ways to use Common Events for encounters. For example, you could set some variables whenever you go to a map and set the encounters to 0 (or set it to normal if you want the Common Event to spawn "rare"/baited monsters). Then you just have a common event use more variables to determine when you have your "encounter", and (earlier) variables to determine which set of monsters you face. This way, you could probably add some pre/post encounter dialogue as well. However I recommend setting up 4 variables for the player and update's X and Y positions so that you can update the encounter variables and not have them while you're standing still.

Or you could simply have normal random encounters but flip some switches if you encounter certain enemies or states. A parallel common event can simply have post-encounter dialogue, especially if you find a present on the ground, activate a quest flag, or teleport after you killed x amount of enemies.

Calling (call)
HELLO! THIS IS PAPYRUS, TELLING YOU ABOUT THIS KIND OF COMMON EVENT! YOU COULD USE A PHONE ITEM AND THEN CHECK A VARIABLE BASED ON THE MAP ID TO DETERMINE WHAT I, THE GREAT PAPYRUS, WOULD SAY. IN FACT, YOU COULD SCAN MONSTERS WITH THIS KIND OF KNOWLEDGE!

Misc

Hm, there are probably some other ideas you can try:

Treasure Map: Call to see how close you are to hidden treasure (check map and event proximity/region) and if you are on top of the treasure. If you already found it, then tell the player you don't need to find it.

Night Vision Goggles: Or Hidden-Stuff Goggles. Anyway, just use this to toggle a switch that will adjust the hue of the screen (and some events with the switches). I say Night Vision Goggles because when you walk out of a cave, the first thing you'll see is BLIND.

Idle Animation: I know there are scripts that make this easier, but have this parallel event run a variable and change the graphic when you hit a certain number (and have the graphic/variable reset after pressing buttons). If you also move at a certain speed (default is 4), you can also change those graphics and activate a switch for stealth/noisy running. With a variable timer like this, you could also calculate quicksand, digestion and even state times.

Puzzle Key: Two Common Events, actually. The first Common Event sets the ons and offs of a switched "key", then the second common event is used at the lock which plays those switches and see if the door matches. Ingenious if you want a lock that's never the same for each game.

Cooking: It could be interesting to use a recipe and have a Common Event use the ingredients if they exist, but even more so if the recipe is affected by whoever's in your party (ex Prisma Illya where having a brat in your party may add breath mints to your bread). Or in terms of vore, substituting turkey for someone else in your party and mashing the stuffing button.

And of course, a Full Tour Outage where, after a count of variables have passed, using the restroom can have interesting results.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon May 09, 2016 5:20 pm

Strangely enough I have not mentioned any vore scripts...when there are in fact three of them (for RPG Maker VX Ace).

Cannibalism (Grimoire Castle)- This is a basic script: If you kill the enemy with Cannibalism, you gain stats. The limit feature seems nifty.

Cook (Fomar)- This is what most of the vore skills look like: killing an enemy under a certain percent of hp and getting something out of it. It also reminds me of a pokeball for some reason.

Devour (Himeworks)- Requires a core script and some in-script additions.

As you may have noticed, all three skills are processed in Game_Enemy (could be extended to Game_Actor with more coding). In other words, you could make Devour emulate the results of Cannibalism and Cook, so I'll be discussing Devour for this post.

---

Devour first requires you to add <eff: devour> to an item or skill; this skill will trigger the devour effect on an enemy. Similarly, the enemy must be tagged with <devour: n> where n is a number defined in the Devour_Table below.

Devour requires some customization for its full use, but this is the first example in the script:

module Devour

# A table of devour effects. The key is what you use for your note tag,
# while the value is the method that should be called.
Devour_Table = {
1 => :devour_recover_hp,
#2 => :devour_recover_mp #I didn't define this maybe you can do it as an exercise
}

def devour_recover_hp(user, item, effect)
user.hp = user.mhp
self.hp = 0
@result.effect_results.push("%s ate %s!" %[user.name, self.name])
end


As you can see, the devour_recover_hp is the name of a method ((user, item, effect) required) that gets pushed into work, so both of those items must have the same name. In the example, you want the enemy to die and the hero to gain some HP back, and since this takes place inside Game_Enemy, you have:
user = caster = actor
self = target = enemy
(I don't know about item and effect except that item might be damage and effect might be other stuff)
And also keep note of that @result.effect_result.push if you like to have your messages in the battle log instead of the text boxes.

Anyway, the 2nd item on the table, devour_recover_mp, isn't scripted, but by copy-paste, you should have something that looks like
def devour_recover_mp(user, item, effect)
user.mp = user.mmp
self.hp = 0
@result.effect_results.push("%s ate %s!" %[user.name, self.name])
end


---

1...You may realized that Himework's Devour doesn't have anything that defines Devour's limit such as HP percentage. Unless you like to change the notetags, all you simply have to do is add the condition to the devour methods (if (self.hp/self.mhp <= 0.3)).

1a. You don't have to make Devour a "hit or miss". If you use Devour but don't hit the percentage, you could make the enemy BLEED in the else statement at least.

1b. Alternatively, you can use $game_variables or $game_switches; have the devour work only when you have a switch off and turn the switch on inside it (if switch off, eat switch on, end). Of course, make sure to turn the switch back off at some point.

2. Remember that user (a) and self (b) are battlers; you can do user.add_state(FULL).

2a. Also, you can check if the enemy have certain states. Eating a poisoned enemy could poison you even if the enemy normally is safe to eat. Also, extra dialogue if one of the frogs you're eating is actually a transformed prince.

---

And here are some more ideas on using Devour:

1. Pokeball- Capture weakened enemies (either forcing them into your party or by dropping an item that can call them). Golemancy has crates that call and store your golem teammates so you don't have to have a Pokemon script.

2. Kirby- With Himework's Shapeshift as well, you could eat enemies and "gain" their powers. Creatively, you can have a "Star State" where you have "Exhale" and "Gulp", both normal skills that will get rid of this state.

3. Multiple Gulps- Remove the self.hp = 0 and the enemy lives a bit longer. One vore example is getting SILENCED after attempting to eat a slimy enemy. Another example is to try and gulp down a snake, adding to a variable each time until the variable allows you to finish the last of the snake.

3a. Learning Devour- Or you can use variables/hidden states to restrict Devour from eating large enemies until you Devoured enough small enemies as practice without adding another Devour skill. Perhaps you can even learn Unbirth after eating that many enemies.

4. Execution States- Another Himeworks script that activates a state to the user only for the duration of the attack. You can also use the states of this script to define which vore you are using. For example, you can push the message of "You ate Jimmy" or "You shoved Jimmy up your ass", unbirth the enemy even if you are full, or keep track of which vore you prefer.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Fri May 13, 2016 3:49 pm

I just realized that Dungeons and Dragons use stats in "social situations" such as charming and bartering. In the Conditional Branches button, there is a script option that analyzes a statement (a statement like a == b, not if a == b as it would be analyzing if (a == b)). So for example, if we want to see if our character is fast enough to jump over a gator, we would check $game_party.leader.agi > 0 ($game_party.leader returns the actor in the first slot of the party.)

Anyway, here are some other conditions to check:

---

Gender

There are some scripts that allow you to tag whoever is male or female. You can also do this with events (or common event). Say, like FFVII, you can only enter a mansion if you're a girl. Your spot check would go something like this:

switch MALE = off
if Alex in Party, switch MALE = on
if Justin in Party, switch MALE = on

if MALE switch is on...


So we are able to turn away males from the mansion or from a biased pred. While you could simply replace
your males with females to advance, you can also change the "gender" of the guys with a disguise or a state (MIDNIGHT BLISS) just by simply checking that condition inside the member check.

If your main character is one of those create-a-character, their gender can be predefined with a separate switch. You can also check for age and allergies among other things, as long as you make switches for those.

---

Weight

Like above, in this manner:
variable MASS = 0
if Alex is VOREd, variable MASS + 100
...

Plus any additional weight like monsters. I figure, assuming your party is prey, that you might cause the monster to vore you to crash through the floor in an alternate game-over scene.

Or, if you have stacking states, you could add some mass per vored type to yourself for some dynamic weight judgement. You might need personal variables for the party if you wish to have them alter their own base weight through eating or working.

---

Character States

One example I posted earlier was changing how a character moves while COCOONED. However, you could also use States to determine how Events interact, first by setting up a character to represent the NPC. This trick was covered in a tutorial where a guy who gets SICK could DIE.

For example, you created an event that starts a battle against a Pred, and this Pred can VORE one of your party members, which in turn removes them from your party. When you defeat the Pred and win the battle, your VOREd party members aren't added back...but you can check the Pred's corpse and cut your VOREd members out, healing their VORE state and getting some dialogue out of them.

You could also use states to see if a full snake can go through vents, if you are trippy enough to see hallucinations, or to create a "cooldown timer". For the latter example, you JUST PLANTED a Pokemon tree and checking it again won't let you take its fruits until the JUST PLANTED wears off by walking enough. (you many need multiple JUST PLANTED if you have multiple trees).

==========

I was thinking about methods. In the scripts, they are def something and would return a value when processed. In the case of update methods, the value is returned repeatedly, so it looks animated. It's also how you get the value of some variables within the scripts.

For example, I talked about Gender in this post, and while common events could sort this out, what if I want this coded instead? Well, I'm not a scripter, so this is simple...Of course, this should be inside the object you're referring to, Game_Actor in this case:

def male
false #is female
true if self.id = 1 || self.id = 3 #if actor is one of these, male.
end


You should also post this script in Game_Battler or Game_Enemy (default false) so that the game doesn't crash if your code tries to process an enemy.

Depending on where the code is asked, the call could be from b.male (extra damage from nut kick) to $game_party.leader.male (men's club).

...But that defines gender by default. What if I want to change gender? There are two ways if you look at Game_Battler. One make is to make :gender an attribute like hp, mp and tp, though I can only guess they are the object's variables you can directly modify. Another way is to make it like a stat.

The current stats at the top of the script looks like def mhp param(0) end and would return your character's max HP. If I wanted to change that, I cannot change mhp. However, param(0) is actually another method with the number representing a case, and the general param(x) method includes these two: param_base(x, y) and param_add(x, y). If you happen to use a Clone Character or Shapeshift script, base changes the default amount the battler is referring to while add would add or subtract the amount individually, so the latter is good for customization.

But anyway, if you want to call a character's gender but want to change it at some point, you would need more than one method and probably some variables. I'll cover this mess in the next post.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon May 16, 2016 4:04 pm

First of all, I saw on Youtube that someone had managed to create the Undertale Battle System on MV. Congrats.

Second, I just finished working on my Animated Title script from scratch...I think it's from scratch. Point is, I think I have a better understanding of scripts, and I did say I would try to give a lesson.

---

Understanding Scripts:

Classes:
RPG Maker comes pre-made with scripts that make up the engine of the game. In the scripts, you may see that they go something like Scene_Title < Scene_Base. While it is technically possible to replace all the scripts and make a new engine, most scripts are built upon or influenced by the default scripts.

The default scripts are sorted mainly by their base scripts or how they handle data, which goes by Cache, Game, Sprites, Managers, Windows, Scenes, etc. Classes like Window_Base and Scene_Base make the framework for other scripts, and they can be declared like Scene_Title < Scene_Base (Scene_Title will have the basic functions of Scene_Base so you don't have to rewrite the update method in there). Be aware, however, that Classes cannot have two parents, so you can't run the game if you make a script based on Scene_Title < Scene_MenuBase and still have Scene_Title < Scene_Base.

Methods:

Methods are the actions of the Classes, made by def...end. Methods have to be called in order to act, mainly handled by the Manager Classes. Methods can be accessed by the Class it is in and any Class that accesses the previous class (you can access stuff from Game_Battler through Game_Actor and Game_Enemy, but not through Game_BattlerBase which is Game_Battler's parents). As the scripts are run downward, it takes on the latest version of the methods, which is why most scripts say to install between default and Main, especially with Core scripts and Add-ons.

As some scripts are coded based on existing scripts, they usually overwrite existing methods (meaning the same method from a default script or a parent Class won't trigger). This is okay with one or two scripts, but sometimes, you have multiple scripts from multiple authors, and one of them might overwrite the other. Fortunately, there are two ways to minimize these changes:

alias- This will treat methods named under this like the same name. This means a method could call the second name and run the first method, but it also means that a script can call the first name and run the second method.

super- This will call the method of the same name from the parent Class. For example, if I wrote update def update super blab end (in Scene_Title < Scene_Base), this method runs Scene_Base's update and blab.

Methods and variables

A method can return one value, much like how a damage formula can only return one value. However, you can still manipulate other variables, much like how you can change $game_variable[x] inside the damage formula.

Also, some methods are something(arg) instead of something. The "arg" translates into a variable for that method and is useful if what you are evaluating has different names (For example, custom formulas usually go damage(a,b,value) where a and b are actors/enemies). You can also set arg=3 when defining the method to make that specific variable equal to 3 by default.

Both things I said above deals with variables, so you also have to understand the scope of what you will be working with. That is, variables with a low scope cannot be accessed by other methods unless declared that way. However, you also want to make sure that variables aren't too accessible by other methods.

local - These work only for the methods they are in. They can't be accessed anywhere else, and methods that use variables of the same name cannot get tainted results.

@shared - These work across the Class. You could declare this variable in one method and change its values in another variable. However, I don't think you can change this variable if you call it.

:attributes - These sets of variables work across the Class, but you can also change it directly. HP, MP and TP are the main examples here.

$global - Variables like game_variables[x] that can be accessed by any class.

Also, when you work with methods, keep an eye out for initialize/start (runs once but sets up things) and update (change things frame by frame), and terminate (runs once and clean up things. Most Classes will have these methods.

param()

Earlier, I mentioned you couldn't change stats like mhp and atk directly. That's because they're methods returning param(0) and param(2) Similarly, you cannot change mhp through param(x) as these are methods. However, if you do want to change mhp (max hp), you want to change it through methods, specifically param_base(x,y) or param_add(x,y). (x is the param number and y is the value)

param_base() is first called to get the value from the database. It'll also change the value of the database. This is most evident with enemies since, if you change the base, it'll also apply to every enemy of the same type. param_add() is used to add stats on top of the base stats, notably with weapons and buffs. Like those things, using param_add to change the stat applies only to the target you're changing. Keep in mind that param_add does not come with a method to reverse the changes by itself, so if you have a transformation, you'll also have to apply negative numbers.

I point the param() out because, in the previous post, the gender method I wrote out cannot be changed. What you could do, instead, is create and alter several methods so that, if you want to change your guy into a girl, you could do a script call.
old-
def male
true
end

ex: if actor.male == true , deal extra damage. Alex is always male, so always do extra damage.

---

new-
def initialize
@gender = true
end

def male
return @gender
end

def become_male (val)
@gender = val
end

ex: actor.become_male(false). Alex becomes a girl now.
if actor.male == true , deal extra damage. Alex is not a male now, so no extra damage.

Note that I used the @variable here. You can also set monster types, "immunities" and other modifiers this way.


---

Anyway, I enjoy the title I made for my game idea, so I might upload it as a placeholder if I decide to open up a game topic. I hope all that I discussed in this topic was clear to all of you. Oh, if I do get any more idea, I will still track them here. I just need to step back and figure out ideas for now, not just what I discovered.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed May 18, 2016 4:57 pm

Splash Screen (I might not use the right terms as I'm not in front of RPG Maker.)

I know there's already a script for this, but if you want to make one from scratch...A Splash Screen is the Nintendo and Ubisoft logo before the title screen, in case you want to have a logo before the title screen shows up.

First comes actually making the splash screen. I would recommend copying the Game Over Scene, replacing the sprite.bitmap = cache.system("Gameover") with the graphic of your choice. This Scene goes to the Title by default, though if you want the scene to automatically change, initialize a @variable, update the variable, and run the Title method when the variable hits a number.

Next, inserting the splash screen. You could either do this two ways: First way is to call the splash screen Scene_Title and call the original title Scene_Title2 (make sure to update the name in your splash screen). Second way is to call this splash screen Scene_Splash, instead changing the SceneManager so that it goes to Scene_Splash instead of Scene_Title.

---

Game Over Choice

You could attempt to copy Scene_Title as the new Game Over. The Title and Game Over scenes are similar as they bring you to a scene with a background, except that the Title has extra sprites and can call the window menu.

In the Title Scene, you should see that it creates a window that sets up :new_game, :start_new_game or something like that. One of them is a method to return a string, so you could replace that with "your own". The second calls a method that is further down in the script.

So all you have to do is just find those methods and change them. By default, the title has New Game, Load Game, and Exit, so you might not need New Game. The Scenes, from what I can see, won't actually reset the game stuff like variables or switches, so you could script a go-to-map method if you want to respawn at the last save point. (An example of a go_to map method is in New Game set for the starting position)

===

Now this is interesting. You could also set up a splash screen in place of a Gameover scene or with a respawn method. This is in case you want a cutscene if you prefer scripting over eventing or in case you have a minigame.

Also, if you could base a splash screen off a Gameover scene, you might be able to, say, copy the Game/Scene Map and affiliate additional movement scripts to the copy. If my theory is correct, the script still makes references to the interface, so you might be able to have a Zelda 3d World through normal maps and had a two map when you transfer using the second script's go_to method. I believe some multi-battle scripts follow this concept, so you could also make two separate battle systems that way.

---

Speaking of Minigame, setting up multiple variables could be a hassle. So what if, instead, you simply referenced to a specific actor's stats as variables? A character technically has three bars, so you could use them as HP, cool down, and special.

Actually, the bars also remind me of Kirby Superstar's Megaton Punch. Just have three @variables determine if the "character's" power, accuracy and impact goes up or down, then multiply the results for your score.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Fri May 20, 2016 3:10 pm

I like my Title and Splash Screen. My Gameover Screen is a bit bare (considering I have no progress in the game to experiment with multiple game over screens), but it still has a basic animation of sorts. Also, I have decided to have a window show up if you have a savefile present so you can choose to load or return to the title...though I suppose I should just have the window up at all times.

---

First of all, some scripting words:

return x- This will return the value you place there. More importantly, the method will stop there, not bothering to run the rest of the code.

begin...rescue...end- If your codes requires something that might or might not be there, you could make conditionals to check if the thing exists or you could use this. For example, the code begins to check the code to draw a battle-only faceset and runs it, but if you don't have that certain faceset, the script will be rescued, and it'll instead draw the regular faceset.

exists?()- Some code might have this method. It simply returns true or false if the file exists. The continue button checks if a savefile exist, for example.

---

Anyway, when you script, you might be drawing from external resources. RPG Maker Ace's default scripts already defines some of the paths and functions, but these are the general three you'll see:

-Graphics (.system() starts at the System Folder, .title2() starts at the Title Folder)
-Audio.play(file,volume,pitch) (file starts in the game folder, so you'll also have to include "Audio/SE...)
-savefile (Mainly associated with the Continue/Scene_Load windows.)

Some scripts are written to access data from a textfile as well, an example being lengthy dialogue or extra stat tables. So what can you with external files?

---

Mods and Add-ons-
What I imagine is that, in Scene_Title or some Scene_Addon, you'll see if an addon file exists. Inside the addon, you'll probably find advanced code that injects data into the database (or you can have the database already prepared and flip a switch to prepare it).

For example, you could give out the game but then require a file that, just flipping a switch, would unlock adult content. Or just adding a file will allow your new game to warp to a secret zone.

Music Game-
This is obvious with some Music Game scripts, but being able to insert your own music into the game. You could also make a radio that plays these songs.

Drawn to Life-
Some scripts let you take screenshots or print a character from multiple parts. It might be possible to draw a logo with a script, save it, and then prop that logo in your base...or you could just draw the logo with a paint program and put it in the folder.

It might also be possible...not only to replace your own character but probably to replace the graphics of certain monsters like a skin mod, even if your game is encrypted.

Saga Frontier
This might be a bit more difficult as you'll have to somehow read the savefiles, but if you can check the games to see if the last switches are flipped, instead of going to the end scene, you head over to a secret room. Some scripts instead store a variable that works outside normal game operations.

In terms of Undertale, you might save some switches to an outside file so that, when you load the regular file, Sans would know he already gave the speech to you.

Trophies
Any interesting way to gain trophies by having the game create these images when you earn them. The trophies can also be used to see if you already earned them and possibly unlock content even in a new game.

You might also be able to write down some story stuff in text files or make a virtual stamp card.

Who knows? Perhaps with some scripting, you could make something like Barbftr where you can import monsters you want to fight...
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Tue May 24, 2016 3:26 pm

Damn, when I mentioned Loops, I just tested and found an unplanned effect: The Button Press Condition persists whenever the button is pressed. In Game Maker terms, this is whenever you hold the button down, which I guess can be good if you want a jug-filling game. Fear not, for you can create simple button tapping with this method and commence with the button mashing:

if Button Pressed
>if Switch off
>>get pressed stuff
>>Switch = on
>end
else
>if Switch on
>>released stuff
>>Switch = off
>end
end

This code checks for when the button is first pressed and when it is released. If you're only checking for one of them, you can substitute the other part you don't need with a simple switch = off.


A sound inside the button press or a dialogue are some of the ways you can check to see if this code works.

===

I was planning to get Severed or Malicious Rebirth on the Vita, but first I decided to have a crack at a RPG my brother purchased: SAO Hollow Fragments. I get the feeling he didn't go far in the game, but somehow I got hooked onto it despite the single save file.

So while scripters like Soul Pour made a few scripts based on SAO, an anime about being trapped in an MMORPG, here are a few ideas from playing inside the Hollow part of SAO:

---

Mastery: In World of Warcraft, Mastery provides a percentage boost in a class-specific stat. In Sword Arts Online, Mastery is a weapon-related stat; it adds up to 1000 whenever you attack with a specific weapon, is a requirement in advancing the skill tree, and may be related to gaining more skill points. It probably increases weapon accuracy for that type too. One of the ways I can think of implementing Mastery is by increasing the variable whenever you attack, whether through a Common Event or a custom formula. Inside the formula, you want to check if you have a weapon equipped and add to a variable when you attack.

Two things I want to note here: If you are dealing with multiple variables, if-elsif-end statements might be a bit lengthy. You can use case-when-end instead:
case variable/formula
when 1
this runs stuff when variable equals 1
when 2..5
this runs stuff when variable equals numbers 2 through 5.
when 6, 8
this runs stuff when variable is equal to 6 or 8
else
this runs any other result
end


Also, the equipment of your actor is a.equips[x] (a = actor, x = slot). For x in this example, 0 is your main weapon and 1 is your off-hand weapon like shields or dual-wielded blade. So when the id of your equipment is a number for a sword (.id probably), then you increase the Master variable for swords.

---

Hollow Quest: When you enter an area or a specific part of the map, this quest gives a small story and some unique objectives, sometimes with a time. There are some quest scripts out there, but instead of looking at a bounty board, the quest starts when you enter the area. Also, you can only complete objectives for Implements in Hollow Quests, and Hollow Quests are repeatable.

So if you can track your party's XY location, you can also track which map you're in. If not, just create a variable (or two if you don't know the id of the map); check the variable to see if the ids match and then run the code if it doesn't. In that part of the code, you can then run your events to determine if a Hollow Quest shows up.

if map1 does not equal map id
>random hollow quest switch
>variable map1 = map id
end


For Implements, you'll also want to flip a switch at the quest location so you can earn some objective points.

---

Implements: Implements are a list of objectives. They can only be earned inside a Hollow Quest. Completing an Implement and activating it in the console can unlock more Implements, Hollow Points and stuff (skills, loot from rare monster, shop items). Some Implements require Hollow Points when redeeming them in the console.

So since only the selected Implement can be earned, you would need a variable to change when you select that quest. Wherever the quest takes place, it'll see what that variable is equal to and then changes the other variable for that Implement. Here are some examples of the Implements and what I would do with them:

Deal Damage: Deal a certain amount of total damage. While you could use a Common Event to compare previous and current HP, what I would do involves changing the script; in game_battler, you can see where the damage is processed (and deemed missed/critical). At the end, you can add the final damage to a variable and return the damage. Since the damage is calculated for the battler, you might want to check if the attacker/a is an actor and the target/b is an enemy. Oh, and you may want to make sure the variable is only increased when the skill is not a recovery spell.

Receive Damage: I cheated with Lava Floors, but anyway, this is the same as dealing damage, except you need to check if a is an enemy and b is an actor.

Number of Attacks: Can be placed in a custom formula. Just make sure a is an actor and b is enemy, and increase a variable by 1 or "hits".

Cast BUFF/DOWN/Damage Skill: Just increase the associated variable when you cast the spell.

Complete Hollow Quest: Increase the variable when you turn the kill switch of the Hollow Quest.

---

Now for the second part of Implements: when you start on in a Hollow Quest, your stats might get modified and you might be forced to wear a specific item. For example, one Implement will boost your STR by 30% and force you to wield a testing rapier.

In that example, we could use a Common Event to check if the switch for that Implement is on. When it is, we apply the STR (perma)state, record the old weapon equip to a variable, and equip the rapier; the rapier's database says this rapier cannot be unequipped as well. When we leave the quest, we turn off the quest switch, which in turn will remove the state and reequip the stored weapon. You might also need a second switch to be turned on during the quest so that, when you reequip the weapon after the quest, you're not stuck with reequipping the same item over and over again.

---

Risk: In a way, risk is an aggro stat; it increases whenever you attack or are targeted. Having higher Risk also lowers the fill rate of your Burst. However, I'll cover aggro and targeting stuff later.

Burst: This is your "normal" attack. When you press it, it will deal massive damage, and if you can combo it, the last hit becomes a skill instead. However, if you spend too much, it only deals little damage. Also, it starts at full 5 bars at each new battle.

1. Probably in Game_Battler or near that, but there should be an attack_id method; it returns the skill id of the normal attack which is 1. Here, you can deduct 1 from a @burst variable.

2. We also want to include some sort of @counter to see each time the attack button is used. You might have to search the script to see where the skill_id is used, but generally, you want to change that part to first store the skill_id and then check if the skill id equals 1; if not, then the counter equals 0.

2a. Alternatively, just set a @switch when you use the attack_id (or off when you change the attack skill to your combo-skill). When processing damage, check if the switch is on and flip it off, else reset the counter to 0.

2b. For @burst recovery, we can either add to the variable at the end of each turn or when checking a skill that isn't attack_id. Or put it in the off-condition above.

3. When the @counter is at 3 or more inside attack_id, we should reset the @counter to zero and return a different number which would return a different skill. Some extra scripting might be required if you want to change a skill to a RP

4. When the @burst is less than 1, you return a weaker attack skill. Also, it'll drain the @burst to zero when used though it wouldn't stop the counter.

A. If you want an indicator, you would have to alter one of the battle windows, either the battle status or the window menu.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Wed May 25, 2016 5:48 pm

If you want a critical attack, you can do b.result.critical = true. Alternatively, criticals in RPG Maker is about 3 times, so your custom formula can have a condition to see if it's true. For example, you can fake a critical that can deal 100 damage compared to its usual 10 or enable auto-crits against slimes.

---

I was thinking, for my game, that if I had more walls in a battlefield like a cave, then my webs would be more effective because they can latch to more places. Then I realized a simple truth: You could set the variable/switch whenever you head into a new place.

Geomancer: This was a complicated set of spells, mainly because its effects changed wherever you are. Assuming it's just damage from picking out a rock from the ground, the map variable can become a case to determine which damage formula one can use. It might case Acid Burn if you manage to geomance lumps inside one's stomach.

Cave-In: There are probably a few ways, but what I imagine is...if you cause any BIG EXPLOSION spells, this will also make rocks fall from the ceiling and hurt some people. So in a spell that can explode, you probably want to activate a switch, and when the switch is on, the troop event will force action and drop rocks.

Alternatively, you could probably increase a variable instead. Perhaps have every water-based attack fill up the room, which also increases the power of the boss's swim-by attacks.

Field States: You could use a script for this, but what I mean is, if you're fighting in an altered field, you could either add new states each turn the switch is on or you can alter damage in different ways. A gravity field could lower your agility, runes could keep you silenced, and stomach acids could switch to stronger doses the longer you're in there.

In Saga Frontier, Red has to fight some bad guys in their trippy zone, which can multiply their attack power by three. You could create new creatures, or you could modify all relevant attacks so that it stores damage; if switch is on and battler is enemy, attack = a.atk * 3, else attack = a.atk end.

Or, you could probably camp out inside a werewolf's stomach, though maybe that would only increase floor damage outside of safe zones?

This is Heroic Mode!: It's probably better with common events, though you might also want to set the damage of your skill to zero when this switch is on. Basically in Hearthstone's Heroic Naxx, Kel'thuzad would interrupt you when you try to play a certain card (Alex's change HP to 15 on Loatheb's 99 HP or reducing minion HP to one). You could also change the parameters of the bad guys at the beginning of battle and make their key skills hit harder.

===

Since I just mentioned Hearthstone, there was a boss called Grand Widow Farlina who not only dealt damage based on your number of cards (or mp) but also buffed herself for each Cultist on the scene. There are also some more bosses that benefit from party size such as Grodus and his X-Bits from Paper Mario.

You could, if you were a rat king, base your attack on $game_party.alive_members.size (or $game_troops.alive_members.size); members would count your total party size but alive_members would only count those who are alive...And battle_members check those who are in the battle party. However, what if the rat king summons buffing rats and normal rats? What we want to do, if enemy_id = RATKING, is += these rats to attack or defense. We could do this by trying $game_troop.members.include?($game_enemy[x]) which should see if that rat exists in the enemy party.

...But include? only returns true or false, so if the rat king has two rodents, this condition only returns once. We could apply some advanced mathematics to calculate party size and check the party. However, we could shorten this with do loops and brackets.
$game_troop.members.each do |enemy|
attack += 10 if enemy.enemy_id == rat
end

$game_troop.members.each {|enemy|
attack += 10 if enemy.enemy_id == rat}


|these| straight-line things is the (method's arg) of that loop and both loops will run until the array runs out. In this case, we are checking each enemy and adding to an attack value when that enemy has the right id. We can also try enemy.name == "Attack Rat" or enemy.name.include?("Attack") if we plan to change the id of these enemies later.

Some other examples you can do with $game_troop.alive_members.each or $game_party:

1. Increase the buff you get from a support unit. Or if you are Sanji, increase your power for each female member.
2. When dealing damage against a certain boss, as long as shield units exist, the boss will always receive 0 damage.
3. Laharl's attack deals very little damage as long as LOVE still exists.
4. A boss gains additional buffs by eating his own minions. This is done by applying death to them while adding to himself...but also make sure to check if the enemies aren't his own id.
4a. Said boss only eats a number of his minions; a variable will increase on each bite, but when the variable is full, the buffs and deaths don't occur.
5. An attack deals damage it a single target but will also Blind the whole party.

Also, there are .any? and .all? associated with these do/brackets and they are designed to return true or false; .any? is true if at least one enemy matches and .all? is true if all enemies match.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Fri May 27, 2016 4:08 pm

I was thinking about Soul Vore. This niche of vore is about sucking up a person's soul/spirit, like enjoying one of those oxygen bars.

Version A- Let's deal with ghosts. First, you should have a way to determine if your target is a ghost, either by their ids or creating a method to return their racial type. Next, the formula or common event of your vore skill should check if the enemy is a ghost; finish it off if it is or do nothing if it isn't. You could flip a switch if ghost is true.
if b.enemy_id = GHOST
DAMAGE
end


Version B- What if we want to suck it out of a living person? First, I probably would create a state to "remove their soul". Once an enemy is inflicted with this Soul Severed state, I would then use a vore skill; it would replace that state with "Soul Eaten", or it does nothing much. In additional, I'll probably have Soul Eaten on a paralysis-like state until I get my soul back. And...you probably want to make sure neither skills work on a person who has their soul eaten already.
if b.state?(SOULEATEN)
NODAMAGE
elsif b.state?(SOULSEVERED)
b.add_state(SOULEATEN)
b.remove_state(SOULSEVERED)
DAMAGE
end

...




How to Get One's Soul Back-If you defeat one soul sucker, you could run a troop event to remove the Soul Eaten states, but what if you have two? There might be a few scripts that can track who cast the state on a certain target. Alternatively, you set up variables that would be bound to each member of the party, and if you cast a spell that needs tracking, you store the variable in there. What I mean is, if two suckers eat two different players and the third play destroys one sucker, you should only get one player back in action. (Also make sure that, if the skill executes, you don't have the variable switch over.)

if b.state?(SOULSEVERED)
b.add_state(SOULEATEN)
$game_variables[PLAYER1] = a.enemy_id
end

...

if $game_variable[PLAYER1] == ENEMY
b.remove_state(SOULEATEN)
end


---

Also, when I talked about actor.weight earlier, I think it's an interesting idea not just to be a spot-check on floors but also resistance to suction or grabbing attacks.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Sat Jun 04, 2016 1:49 pm

Undertale had a simple yet interesting transition. Whenever you enter a random battle, the screen blacks out and you turn into a heart that floats down to the menu. What RPG Maker has is just a swirly transition.

System Graphics

In the older RPG Makers, you could change your transitions in the database and through events. Now, there isn't that option...but you have scripts. Every Scene has some way to handle transitions from one scene to another, though they are either Fade In/Out or a Graphic Transition, and the only Graphic Transition is from the Map to the Battle (name of file is "BattleStart")...

But you can make some adjustments to these kinds of transitions:

1. Replace the Fade In/Out methods with the Graphic methods.

2. IF you have a switch, you can decide which transition you want to use.

3. Use rand(x) to determine which transition you want to use, or if you like arrays, then str =rand(x) and transition[str] (where transition = ["Battlestart", "Transition 1", "etc"]

---

The Heart (thinking)

I thought I would have to make another scene to do this, but after looking at one Transition script, I think this can be in one method. It also looks like (and I'm assuming for the default fade in/battle transitions) that the transition methods only run once with a loop inside them updating the graphics.

1. The Black Screen- First, we have to make the screen very black. You could try to turn the map black. Alternatively, we just create a new sprite of a black image. Just remember to .dispose of any sprites you create to free up some space.

2. The Lone Player- In the black, only the player is visible. You could create a duplicate of the player using that associated sprite's data, or if you used a black screen image, you could try to change the player's z (adjusts the "depth" of the sprite or the order of sprites).

3. The Blinking Heart- You could either change the graphics at interval or create a heart sprite and switch the opacities. This might take two do loops, the first to handle the blinking and then the second to move the heart into position.

4. Transition- You probably don't need to do anything else as, after the transition runs, it should run the go_to Battle Scene method.

If you feel like you want to use events to sort this out instead, just call the Common Event from the script. You could look into the main scripts or a Gameover Event script to find a common event method.

So it makes me wonder if you can sprite an enemy chomping you as you head into the battle.

---

This also makes me wonder about random butt ninja attacks that'll teleport you into their guts, but fortunately, you shouldn't need to script a new transition.

...Okay, I just had an interesting idea: a battle transition of a stick figure getting swallowed up a butt.

---

I was thinking...since I worked on animating the battlers and adding sprites for my animated title, could I also add sprites to certain battlers?
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Jun 13, 2016 1:53 pm

Here's a thought that came into my mind: I wanted to store the ID of the enemy who defeated the last of the party, which would influence what plays at the Game Over scene. Initially, I thought this would take a lot of coding, but fortunately, all it requires is one variable.

You could also use the concept for the party member who finishes the last enemy off to give them extra experience.

---

The Last Attacker

So one thing about most vore RPGs with combat is that you often fight a group of the same enemies. In standard RPGs, enemy compositions are usually mixed to change the flow of battle. I mean, I can understand that enemies can't vore people if they are dead.

So all you need is one variable. This variable will store the attacker (a)'s id/enemy_id. You could probably insert this variable to the part of the script that calculates damage, but you can easily write this in the first line of your skill or damage formula. As a quick reminder for skill formulas, you would need ; to separate each "line" of the formula and it returns the last number as the damage, so ideally you want to put the variable first. Also, the script for the variable is $game_variables[x] = y where x is the ID of the variable and y is what you store in it. In this case, we want a.enemy_id; by theory, the last id to be stored is from the last skill used, which should be an attack skill.

Next, we use this variable, which means we have to get a vore event playing. People have various ways to handle vore via defeat, but it's usually inside the battle or back to the map. In both case, this is what happens when our HP reaches 0...But the main problem is that when that happens, it'll go to the Game Over Screen. You could set the battle to (run after defeat) if you set up enemy characters, but you could also use a script like [urlhttp://himeworks.com/2013/05/post-battle-events/] this Post Battle script[/url]; it will change the Scene_Battle so that it will run events instead of going straight to the game over.

Back to topic, when you have this variable, use the id stored in it to determine which dialogue comes up. You can also change the variable one last time depending on the situation (if enemies are of the same race or if you fight the same enemies in different maps). This is going to be lengthy regardless and you can use the Common Events to save some space.

Also, actors use id and enemies use enemy_id, so you want to check a.is_enemy? before attempting to story the enemy id.

Edit: This is assuming that a monster gets to attack you. If you have the Surrender skill to kill yourself, you might want to add some lines on Turn 0 to keep the monster scenes only inside the current troop.


---

My Pet the Eater

Here's what I was thinking: Let's say you made an orc that ties you up and a wolf that eats you up. From what I said up there, being defeated either gets you tied up or eaten...but what if the orc wishes to tie you up and feed you to his wolf?

When you're checking this id, you might also want to try
if $game_troop.alive_members.any? ( |member| member.enemy_id == WOLF)
activate WOLF events
end

And probably same for the wolf in regards to the orc. In this case, .any? will return true if at least one if the living enemies is a wolf.


So instead of having two outcomes when you lose, you can end up with three outcomes. Also, assuming you have a script that keeps some states after death, you can check if your character is SHRUNKEN, which can allow an orc to eat you instead of butchering you.

---

Last Attack Bonus

In some RPGs, characters can get extra EXP if they kill the last enemy. However, I don't know if EXP is calculated during or at the end of the battle, so with one variable like above, you might end up giving the last character all the experience.

You want to give a @last_attacker variable to the Game_Battler, though at the moment, we'll use this on Game_Enemy. You also want some way to write and read this variable. In either case, @last_attacker is a variable bound to Game_Battler and its child classes, unique to each battler.

The exp method is inside Game_Enemy, but I believe what we need to adjust is in Game_Actor. In the later case, we want to store the exp and multiply it if the actor's id matches the id of the enemy's @last_attacker:

Ant drops 2 EXP
Bull drops 10 EXP

Player 1 receives 12 EXP
Player 2 receives 12 EXP
Player 3 dead; no EXP

---

Bonus EXP is 50%
Player 1 defeats Bull
Player 3 defeats Ant

Player 1 receives 12 (+5) EXP
Player 2 receives 12 EXP
Player 3 dead; no EXP


Also, I think it might be interesting that, if one of the enemy members destroys another, it'll set @last_attacker to 0 (where 0 determine no boost/exp).

===

The above got me thinking...you usually get gold, but what if you're in an arena or a different continent where your earnings are in tokens? You could probably set a switch (or check enemies) and instead of adding gold, you add the amount to another variable.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Tue Jun 21, 2016 2:40 pm

I had been working on my demo, but I was sidetracked when I decided to rewrite Himework's Shapeshift. The Shapeshift had been integral to my Cocoon State, but the script draws on duplicating a character, which might mess up character selection in the menu. What I ended up doing was rebuilding this script to copy attributes like graphics and skills instead of transforming the whole thing, so I guess you can say this is a Shapeshift Lite. So this is what I learned:

1. @battler_name is the Game_Enemy variable that stores the filename of its Battler graphics. If you decide to change the self.bitmap in Sprite_Battler instead, there is a method that will revert the battler graphics to what the enemy has, so you can "animate" enemies when you include this change in its motion phases (:whiten and such).

2. feature_objects draws upon the features listed in the data base; it will draw the features of states and enemies on the enemy side and the states, actor, class and equipment on the player side. These features include equipment types, skill sealing and parameter multiplying. These features update frequently if states are anything to go by.

While I managed to have a character draw features from another character, I'm not able to add the skill category features. I would guess that, as it affects the Actor Command Window, the Window needs to be reset first.

3. Enemies and Players had different ways to handle skills. Enemies primarily choose their actions by make_action, which also includes ways to determine the rating of skills. Players mainly draw their skills from @skills which can be stored in an array. It should also be noted that enemies can use any skill category but Players are limited by what skill category they have (ie Magic and Special).

Also, be aware that learn_skill and forget_skill will write to the current @skill, which usually happens as a feature, event call and leveling.

===

Point 2 seems to be the interesting topic: If I decided to replace/add to the features of my character with that of another character (or enemy upon enemy), wouldn't it be easier just to add those features to the state? For one character, that's fine, but with multiple characters, especially enemies and actors, the state applies to the both of them. Besides, having a placeholder character apply features to your character might be interesting.

First, the methods inside feature_objects are as follows:
enemy : $data_enemies[@enemy_id]
actor : $data_actors[@actor_id]
self.class : $data_classes[@class_id]


So let's say that you have an enemy commander that, when he's on the field, the attack of all enemies are doubled. You could just give all enemies the state in this fight and remove it when he's gone. Alternatively, you could alter the feature_objects to look like:

if $game_troop.members.include?($game_enemy[COMMANDER])
super + [enemy] + [$data_enemies[ATKBOOSTDUMMY]]
else
super + [enemy]
end


I think you could also check for states so that you can negate additional features gained from states or even characters (ie, if you gain extra features from being possessed but you fight an enemy that can ward ghosts).

Other ways to treat this "secondary character": Power Suit, Absorption via Buu, Totems, Disguise (Gain the features of the enemy), Fear Aura (get scared when a certain enemy exists)...
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby Thagrahn » Fri Jun 24, 2016 1:07 am

I figured I would mention something I'm figuring out for Kingdom of the Hunters.

One of the actors is a dryad who can act like a mobile base for bees and fairies, but the bees and fairies aren't actually party members. Instead, the dryad is going to have skills who's effect is based on the number of bees or fairies that have been collected.

Certain enemies are suppose to be able to eat the bees and fairies, but I haven't gotten that far yet.

...

Another issue is that VX Ace limits you to four vehicles, but doesn't seem to have a way to tell if a given vehicle is limited, or has a different speed than the party.
Avatar done by Kharstonish.
User avatar
Thagrahn
Advanced Vorarephile
 
Posts: 818
Joined: Tue May 05, 2009 7:12 pm
Location: St.Louis Missouri
Blog: View Blog (13)

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Fri Jun 24, 2016 2:31 pm

Well, it depends what represents bees and fairies. At the basic level, you just use variables (represented in formula as $game_variables[x]). Alternatively, you could create your own Game_Actor method and put in @variables and methods, use items, etc. You could either use the variables to multiply damage or you could use them with ifs and cases. For example, I could probably check 20 and 40 bees to see if I can also remove a few status effects and gain a wax shield.

As a warning, the database's formula boxes have a character limit, so you might have to make a custom formula. Here's a quick example below:

module Formulae
module_function
#Put methods such as def damage(user,target,extra) here.
#Then just put the Formula.damage(a,b,100) in your formula box.
#The damage is the last value in the method. Using return VALUE can also return the value and exit that method.
#And finally, if the attack misses, the damage methods don't run. I think.

def dryad_skill(user, target, damage)
#this is assuming skill is only for dryad
return user.atk - target.def + damage + $game_variables[BEES]
end

def dryad_eater(user, target, damage)
#this is assuming skill is only for those eating enemies
#Also, don't forget to set variables to 0 or max value if it's below or above those.

if target.actor?
$game_variables[BEES] -= 3 if target.id == DRYAD
#I have to check if the target is an actor as enemies and actors use enemy_id and id methods.
end
return user.atk - target.def + damage
end

def attack(user, target, damage, eater = 0)
#This method is if you wish to not have separate dryad/counter-dryad skills.
#setting eater = 0 means if we write attack(a,b,100), eater is automatically 0.

c = 0
if user.actor?
if user.id == DRYAD
c = user.atk - target.def + damage + $game_variables[BEES]
else
c = user.atk - target.def + damage
end
end

if target.actor? and user.enemy?
$game_variables[BEES] -= eater if target.id == DRYAD
end
end

end
end


---

Vehicles isn't something I have fiddled around with at this point, but it seems that there is a Game_Vehicle class based on Game_Character while Game_Map checks for passibility for vehicles. Once you figure out how to spawn a vehicle by script, you should be able to at least create a fifth vehicle.

It does seem that boat, ship and airship are referenced in these scripts, so you can Search in your scripts to find these parts and figure it out.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Tue Jul 05, 2016 5:29 pm

.include? is a function that returns true or false if the desired object is included in an array or if part of a string is in a larger string. For example,
strWorld = "hello"
strWorld.include? "ell" #true
strWorld.include? "elk" #false


One of my scriptlets checked my notetag for a string to define the race of actors/enemies (deal extra damage to insects, etc). I worried that I might have to change the string into an array, but with .include?, I could just place all racial aspects into one string.

That also got me thinking...could enemies be randomized in this manner as well? The idea is similar to the weapons of Borderlands where a gun could have numerous parts that affected its stats. I also know that you can use a variable to add together the face_name and "_wide" to get the face from x_wide, so it is possible to add strings together.

---

So let's say that you have a Goblin and you make a Mage Goblin and Archer Goblin, so you obviously set their attacks as such. However, you also want to make Fast and Armored versions of those three goblins as well with a chance to get a Fast Armored goblin. That should be about 12 Goblins altogether, 3 gobs with 4 combinations. But what if you have more versions like Lucky, the Silent, etc. Well, here's several ways you can do that:

1. Use an enemy-replacing script such as Rare Enemies or Placeholders.

2. Write the event for Turn 0 in battle, where you calculate the chance of receiving the associated states.

3. What I plan to do is write a small script that mainly changes the initialize step of Game_Enemy or naming an enemy. Whereas @name equals enemy.name, I might do:
newname = enemy.name

if rand(10) < 1
newname = "Quick " + newname
param_add(AGI, 5)
end

if rand(10) < 1
newname = "Armored " + newname
param_add(DEF, 5)
end

@name = newname


So you could probably have an Armored Quick Mage Goblin ready to attack. However, simply adding that part means that the bosses could become Quick King Goblin and we might not want that, or you have an Armored Lizardman and Armored Armored Lizardman becomes too redundant. You could have the condition check against enemy ids, though you could also:

A. See if !newname.include? "Armored" already. If the enemy contains that name already, there's no need to add to it.

B. Check for ids of bosses.

C. Use notetags or scripts to define "variant". You could then check to see if the enemy is a "boss" or if the enemy is eligible to have a "fast" or "armored" variation of itself.

---

Also, say you want to limit the enemy names to one prefix and suffix such as Quick Goblin the Dumb. Here are several ways:

1. Flip a switch when you get a nickname.

2. Use a case/when statement.

3. See if the updated name .start_with? or .end_with? the original name, where this checks the beginning and end of a string respectively.

===

...So for example, name mods like Hungry, Starving and the Gluttonous can apply a state on the enemy, which in its skill list can be used to unlock higher-priority moves such as "Bite". Mods such as Skinny and Chubby can also determine how many calories an enemy is, and names like the Endowed or the AssAssassin might alter your defeat.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Mon Jul 25, 2016 1:37 pm

Has anyone played Help Wanted on the Wii? In this game, you have to stop a meteor, but with the space program destroyed, it's up to you and your Grandpa to stop the world from being blown up!

...But in order to do that, you have to earn money, so you need to work in minigame-like jobs.

===

1. Meteor-
Or perhaps some giant monster that looms closer to your village. In either case, you can use a telescope to check its HEALTH and DAYS until it attacks:

Health- When this reaches 0, the monster is defeated!

Days- When this reaches 0, bad stuff happens. In Help Wanted, the Days are extended by 14, but your Money and Points are halved, your Memorial Collection is burned, and your face gets messed up.

So it's simple: You wear down its health before the days run out. The image does change on 1 Day, and you do get to run a Point Item on 0 Day. In fact, you only need two variables to store the Health and Days and drop the Days each...day.

Point Items are the only things that can fight Meteors and extend Days. Usually, they have an Advertised prize and a Minimum/Maximum range, so for an item that can deal 2000 damage and extend 3 days but has a disclaimer range of 1000-3000, damages are usually 1000, 2000 or 3000.

---

2. Shopping-

But how do you destroy a Meteor? Our heroes have to make do with the Shopping Network, which happens to sell meteor-fighting items! Here are the four shops in the game:

Uniform- These unlock minigames and 5% of purchases is converted to points.
Support- These items make certain minigames easier and 10% of purchases is converted to points.
Memorial- These are collectibles, but they grant 15% of purchases as points!
Points- These items cost points, dealing damage to the Meteor's Health or extending the Days.

So in other words, you have to spend money from your jobs to get points, then you spend points to fight the meteor! While points are rewarded immediately, all items are delivered the next day (or next week for collectibles). In addition, Uniforms and Collectibles can't be stacked, and when you purchase a Point Item, you can't buy any other Point Items.

Okay, the concept falls into two categories: Adding points earned per transaction and a variable shop. There are various ways you can handle this, but here's one way:

A. Set up an Event. Check if you possess a certain item, a Ranger Uniform in this case. If you do, you can't purchase it. If you don't show a dialogue listing the item's price and point value. For example, the uniform costs 200 gold and gives 10 points. Of course, you also need to let the player choose whether to buy this or not and sell the item if it work; you will also have to check if the person does have enough gold.

B. The second Event is similar. Check if you have a certain item, Scary Mask, but this time, it costs 5 points! So instead, list the points and choose if the points are available. Since you now purchased this Mask and you can only run one Point Item per day, set a switch so that no other Point Items can be purchased.


So the flow is that you can shop for items, then use the Point Item in the next day.

---

3. Days-

In the game, you quickly login to the Employment screen to pick a job...but there is no work on Sunday! Additionally, you can choose to log out, but by doing so, you can't pick a job. Logging out or Sunday, you can at least check other places, most notably the Shops. So it's either pick a job or shop. When you complete a job or go to bed, a day passes.

Furthermore, there are events that can either happen on Sunday (affects Shopping) or the rest of the week (mainly affects Jobs). But anyway, you probably want to call a Common Event to handle the transition of the days or to do a teleport, and you want to decrease Days by 1 and increase DayoftheWeek by 1 (when this number is above 7/Sunday, reset to 1).

By the way, there are a few more changes to perform when changing days: Changing the meteor to a more dramatic day on Day 1/0, "delivering" shopped items, and using a Point Item. Also, if the Meteor still has Health on Day 0, then the Reset penalty kicks in.

After that, you have your cutscenes (based on checkpoints from meteor health) and random events. You can determine random events by giving a variable a random number and then checking which number is chosen. Some of the events can increase how much you earn in jobs, limit how many jobs you can choose, force you to buy an item, find some items, etc.

---

So the flow of the game is as goes: Each day, you can go on a job or leave to do other things like Shop, though you have no jobs on Sunday. After you complete a job or sleep, a day passes. In the morning of the next day, you get your deliveries, then you use your Point Items to destroy/delay the Meteor. If it is Day 0 and the Meteor still lives, bad stuff happens.

Of course, you do need points to get Point Items and you need money to make points. Next time, I'll try to come up with some mini-games where you can earn money.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

Re: RPG Maker "System" Ideas

Postby polyedit2000 » Fri Jul 29, 2016 5:26 pm

Okay, Minigames. Not something you'd think about when making an RPG, but some RPGs do place them in. Whether it's a card game, an amusement park/casino or the puzzle on a dungeon door, they provide some fun factor when battles become stale. Some even give you rewards!

---

Rewards: It's one thing to put puzzles in that game. It's another thing to have a reason to put puzzles in. For example, do you need to complete it to advance the game? Do you expect to win tickets or prizes? Or is it there just to troll you?

There's also the matter of how you choose to reward the player. At the basic level, completing the minigame gives you a reward. You could also incorporate a timer, and with a timer, you can aim for completing as many objectives within a time frame or compete for a faster time. You can even keep track of score or earn money per action.

With that last one, I suggest you store "money earned" in a variable rather than add it straight to your pocket. If you had a double-or-nothing scenario for beating your previous score, you can modify the reward at the end.

Also, if you have unique rewards like a key or piece of heart, don't forget to flip a switch to modify the reward listing and the reward you get.

===

For the sake of vore, I'm making these minigames almost vore-related:

Conveyor Belt- This may work better with a picture, but you have an event on a lane and your job is to press the button to change directions (change switch). However, you also have an "AI" that will throw the switch at random intervals. Failing to escape in time or falling into the maw is a game over.

Runner Belt- Same concept as Conveyor, but this may have one or two buttons for jumping and ducking. Pretty much, if you hit anything (or if your ducking variable is not at 0), your sprite gets moved back, and getting hit too many times gets you eaten.

Button Masher- It's simple really. At an event, you have a variable to determine how many bites is needed (or escape). To make this game more interesting, you can also put in spicy food that you can swat away with a button or just a break to prevent the pred from poking you. You can also use this as a counting ticker or a tug of war.

Escape! - The general minigame when you're stuck in a pred's intestines. However, you could also make this like Super Bonk, where entering an intestine will suck you into a pre-defined route until you enter another gut.

Sorting - Monsters go one way, goods go another. Just need to check the switch when the event reaches a certain point to determine which way it goes once it reaches a certain point.

---

Some more games via Help Wanted:

Cleaning Crew: You need to clean spots (some requiring multiple times). You can mix up the flow with random dungeons or with events that slow you down.

Bodybuilder: This minigame requires you to pose uniquely. First, you pick a variable and the first event poses that way. Next, either with Loops or with 2 choices, the second event poses another way. That leaves you with one last pose that you should get right in a few seconds.

===

...This topic isn't my strongest.
User avatar
polyedit2000
Participator
 
Posts: 222
Joined: Fri Dec 23, 2005 12:00 am

PreviousNext

Return to Suggestion & inspiration

Who is online

Users browsing this forum: No registered users and 1 guest