Fan:DVPet

DVPet is a Java fan-game application for the PC based on the original Digimon V-Pets and Digimon World games. It is a pet simulator, designed to emulate the look and feel of the original Digimon vpets with a greater emphasis on pet raising mechanics. Raise over 400 different Digimon from an egg to a Super Ultimate in real time or in accelerated time. Battle with others online to test your strength.

Gameplay
Raise 400 different Digimon, including every character from versions 1-6 of the original vpets and 0-5 of the pendulums (+.5s).

Choose fast clock (three arrows) where every in-game minute is equal to 6 real-world seconds and every day is equal to one week. Choose slow clock for playing in real time (one arrow). With the slow clock, the game will account for the time it spends turned off. If 8 hours pass in real life while the game is turned off, it will be like those 8 hours really passed in game when you turn it back on.

The application allows you to choose the color shell you'd like as well as what size you want the screen to be.

Evolution
An evolution tree shows you the Digimon you've unlocked so far as well as their evolution requirements. It also shows you which Digimon you've evolved to in your Digimon's lifetime. Each game you create uses the same evolution tree save file, so you can raise multiple Digimon at once to fill the tree more quickly.

Train your Digimon in three attributes in three different minigames. Each attribute will affect both evolution and the outcome of battle differently. The Circle icon denotes the Vaccine attribute. The Square icon, the Data attribute. And the Triangle icon, the Virus attribute.

In addition to training attributes, a number of other factors can affect evolution, each represented by an icon on the evolution tree.

In order from left to right: mistakes, sicknesses, obedience, vaccine power, virus power, overeats, injuries, time of majority training sessions, data power, weight, sleep disturbances, battle win rate and battles, and mood.

Fulfill these requirements and evolve to the next level.

Both injuries and illnesses accumulate over the Digimon's lifetime. Unlike other requirements, they don't reset upon a successful evolution.

Care
Feed your Digimon different foods for different effects.


 * Meat increases mood most, but it also decreases enthusiasm (meaning it will be more likely to refuse training).


 * Fish makes your Digimon more enthusiastic about training (meaning it will be less likely to refuse training).


 * The apple increases mood more (like the meat) except it lowers obedience slightly.


 * The radish increases obedience, but it also lowers mood slightly.


 * Vitamins decrease the risk of injury for training and battles for 1 hour. They also increase 1 energy. If you want to train but are dangerously close to exhaustion, feeding a vitamin will decrease your strength by 1 so that you can train more. Be careful, though. Feeding more than one while the first is still in effect could make the Digimon sick. Feeding too many will negatively affect the Digimon's lifespan.

Your Digimon can refuse training or food if its obedience is low and/or it isn't in the mood. Praise/Scold after your Digimon does something to increase obedience and mood. A lightbulb icon will appear next to the Digimon when it can receive the maximum benefit from praising or scolding.

When your Digimon refuses something, scold it to raise obedience. After scolding, your Digimon will never refuse the next thing you ask (unless its hunger is full or it doesn't have any energy). In this same sequence, after your Digimon does what you ask, praise it to raise obedience further. In addition, praise your Digimon after a successful training session or after winning a battle to increase obedience even further.

Failing to praise or scold in time will have different effects. Failure to praise will increase your Digimon's discipline substantially, but it will also greatly decrease its mood. Failure to scold will increase its mood, but its obedience will go down.

Sometimes, a Digimon with low obedience will call out for attention for no reason. Scold your Digimon when this happens. Tending to it instead will cause your Digimon's obedience to greatly decrease.

At high obedience, the Digimon will change how it reacts when scolded. The Digimon's mood will decrease less and it will visibly react differently.

A baby Digimon will start with high default obedience. When it evolves for the first time, its default obedience will decrease slightly. And when your Digimon reaches the child stage, its starting obedience depends on its mood when it evolved. A happy Digimon will allot a higher starting obedience.

There is a very low chance that, when unhappy, your Digimon will become depressed. The more unhappy your Digimon is, the higher that chance becomes (although it's still low). If your Digimon becomes depressed, then it has a 50% chance of refusing to do anything. If you maintain a high enough mood for a long period of time it will return to normal.

Maintain a healthy weight or your Digimon will have a higher risk of injury. The scale in the menu will tilt left if the Digimon is underweight and right if it is overweight.

Clean up after your Digimon before feeding or it could get sick.

Your Digimon's on-screen behavior will change slightly based on how it's feeling. If it's happy or unhappy, it will act differently while wandering its cage. If it hasn't trained in a while, it will become bored and behave restlessly.

Care mistakes occur when the call alert on the bottom left of the screen lights up. Alerts trigger if your Digimon's hunger or strength hearts reach 0, if your Digimon has pooped more than 3 uncleaned poops, or if your Digimon is asleep with the lights on. If 10 minutes pass without attending to your Digimon's needs, you will get a care mistake.

If your Digimon becomes sick or injured, you will have to care for it. Training and battling while ill or injured runs a higher risk of injury or worsening your condition. Neither sickness nor injury counts as a care mistake, but they may be required for some later evolutions. Both sickness and injury incur a small penalty to your Digimon's lifespan.

Left untreated, your Digimon's sickness will last approximately half a day, but that duration can be reduced by treating it with medicine or a bandage every hour. Treating more frequently than an hour won't affect your Digimon when injured. However, if you feed it more medicine before the first has worn off, your Digimon's condition could get worse.

Both sickness and injury have unique, hourly effects.
 * Sickness: Poop more frequently. Will likely result in becoming underweight.


 * Injury: Become hungry more quickly. Will likely result in becoming overweight. When first injured, lose 12 energy.

Personality
Each Digimon is unique. Appetite, activity level, general disposition, how responsive it is to discipline, its favorite training game, favorite food, and favorite time of day are all randomized whenever a Digimon is born. However, depending on how you raise it, the Digimon's personality may change when it becomes an Adult.

Feed your Digimon its favorite food and have it complete its favorite training game to increase mood more quickly. The Digimon is less likely to refuse its favorites. In addition, when your mood is high and you train in the same attribute as the Digimon, training is more effective.

Train your Digimon during its preferred time of day to increase mood more as well. You'll also have a chance of not losing any energy for that training session. The time of day is split up between morning, afternoon, and night. The times at which these occur change with the seasons.

Over time, your Digimon's favorites may change to match how you're raising it. If you keep feeding it meat, for example, your Digimon's favorite food may eventually become meat. However, if you re-expose your Digimon to its favorite before, your Digimon's interest in anything else will decrease.

Training and Battling
Without a vitamin, every training session or battle runs a small chance of injury. If you train in the attribute your Digimon is weak to or if you lose a battle, the chance of injury increases.

Be careful of training and battling too much. If you train more than 12 times in a row or your energy drops below 0, your Digimon will become exhausted and receive a care mistake. Avoid this penalty by paying attention to your Digimon's behavior. It will act more exhausted the closer you get to the limit. If you train or battle while exhausted, you'll lose more energy and have an increased chance of injury. This fatigue will wear off after about an hour.

Let your Digimon sleep to regain energy every hour. Your Digimon's sleeping pattern will change based on how much energy it has when it falls asleep. Additionally, have your Digimon take a nap by turning off the lights. After a little while, it will fall asleep. By taking a nap, your Digimon can recover 1 energy point every 30 minutes. By sleeping normally, your Digimon will recover 2 energy every hour.

After every battle, your Digimon will need to recover a bit before the next or you won't battle with full health. You don't have to do anything special to recover. Just wait until the pulsating heart is full on the energy menu and you can battle again without penalty.

Whenever you win a battle you'll get a small increase to your attack power depending on the attribute of your enemy. In addition, if you win a battle without your health falling below half, you won't lose as much energy.

When you first start battling, you start off with 5 HP. The more battles you win at full muscle strength, the more HP your Digimon will get. Each evolutionary stage has a max HP. To increase your HP beyond a certain point, you'll need to evolve.

Each attribute represents a Digimon's strength in and resistance to that attribute. A Digimon with high stats in Data will hit harder with and take less damage from Data attacks. The menu that measures attribute attack power is displayed in terms of levels. Each level represents 25 attack power in a particular attribute and there are 20 levels in total. A Digimon may increase its attack power beyond the maximum, but it won't be measured in this menu.

Each attribute also has a secondary use that helps to determine a Digimon's attack power and when it attacks. Vaccine is synonymous with power, Data with defense, and Virus with speed. High Vaccine stats strengthen the Digimon's attacks and high Data stats weaken the attacks of opponents. High Virus stats will help a Digimon attack before its opponent as well as make attacks hit the enemy slightly harder and land on your Digimon slightly softer.

Adventure Mode
An adventure mode quest game is included that repurposes the first map from the original season 1 English Digivice. All the bosses and most of the random encounters are the same, but there are some additional enemies to keep things interesting.

Your Digimon will travel across the quest map according to how fast you've told it to walk. There are two traveling speeds: walking and running. Walking will increase your steps and decrease your energy over time. Running will greatly increase your steps, but it will also greatly decrease your energy.

While traveling, every so often your Digimon will encounter an enemy. Click the "Battle" screen to start the battle. If you don't click it in time, it will count as a forfeit and the number of steps you've traveled on that map will decrease as penalty.

Battling and the adventure mode aren't unlocked until you reach Child stage. Only Adults and higher can jogress.

Online Functionality
Both jogress and battles can be done online. For people connecting to a host, enter his or her IP address and click the flashing battle icon to start. You can surrender battles, but it will count as a loss for the person who surrendered. For the other person, it won't count as a battle at all.

For jogressing, there is no time limit like there is with normal evolution. If you fail to meet the requirements to evolve normally in time, you can try jogressing instead. If you still have any unfulfilled requirements for the jogress, your Digimon will shake its head at you. Look for the tiny DNA icon in the evolution tree to see who you can jogress to. Keep in mind that Digimon partners in a jogress must both be different.

Digital diseases are contagious. If you battle or jogress with a Digimon online who's sick, there is a good chance of you catching its disease.

Modability
If you want to add custom or new Digimon or modify the characters currently in the game, it's as simple as downloading a program that allows you to view and extract files from a .jar. For example, download 7zip here.

Open the .jar with the program you installed to view its files. Navigate to the Model folder and extract the files named evolutions.csv and parents.csv. These files contain everything that determines the sprites used, evolutionary requirements, and evolutions for each Digimon. I would recommend using a program like Excel to organize the entries.

Modify Evolutionary Requirements and Characteristics

The evolutions.csv file is what the program uses to determine a Digimon's basic statistics and evolutionary requirements. The first row of the file gives you a clue into what each variable represents. First of all, if you're adding a new Digimon, make sure each variable contains an entry, following the standards of the other row entries. It should be fairly easy to figure out what is used as the default value for each variable.

The NaturalParent column in the csv file requires either a name of one of the available Digimon or no name. The game will add the indicated Digimon without a time requirement as the evolution of the Digimon record. This was originally made so that the same Baby II Digimon could have two different requirements depending on who it evolves from. Even though it can now be modded easily, there would be little reason to use it for other evolutionary stages, but it shouldn't break anything.

The Name represents the Digimon's name.

The evolutions.csv file uses a Key/Value pair standard for data ranges. The Key must be either None, GreaterThan, LessThan, or EqualTo. This key decides how the value (a whole number) is compared. Each variable whose name includes "Key" or "Value" follows this standard, so an explanation of each is unnecessary.

The EggType is only used for Baby I stage Digimon and determines which egg it comes from. Every other stage must have the default -1 value.

The NewAttribute variable determines the Digimon's attribute and must be either None, Data, Vaccine, or Virus.

The NewField variable determines the Digimon's field and must be either None, NatureSpirit, NightmareSoldier, DarkArea, VirusBuster, DragonsRoar, WindGuardian, JungleTrooper, DeepSaver, or MetalEmpire.

The Parents variable determines how many Digimon a Digimon can evolve into. Note that only the first 10 will be shown on the evolution chart and the failure evolutions Chuumon, Sukamon, Numemon, and Nanimon aren't displayed. There shouldn't be a reason to go beyond 10 for Digimon who aren't the Child or Baby II stage.

Difficulty determines which evolution a Digimon evolves to when it fulfills the requirements of more than one evolution. The higher difficulty will take precedent over lower difficulties. If the Digimon fulfills the requisites of two or more evolutions of the same difficulty, then each evolution is checked in order of appearance within the set of data and is given a 50% chance of evolving instead of the previous evolution checked.

IsJogress determines whether a Digimon is capable of jogressing.

NewWeight determines the Digimion's base weight.

StomachCapacity determines how many times you can feed a Digimon before it won't eat anymore.

Sick and injured variables determine how many times a Digimon must have been sick or injured in its lifetime to evolve.

Mood variables determine what the Digimon's mood must be to evolve. The value can be between -300 and 300. Note that a Digimon cannot increase its mood past 300 or decrease its mood below -300.

Obedience variables determine how obedient a Digimon must be to evolve. The value can be between 0 and 100. Note that a Digimon cannot increase its obedience past 100 or decrease its obedience below 0.

Time determines whether a Digimon must have trained the majority of its total training sessions during a certain time period. Time must be None, Morning, Noon, or Night.

The wins variables specify the win rate percentage a Digimon must achieve to evolve.

Probability is a percentage variable between 0 and 100 that determines how likely a Digimon is to evolve. This value is added together with care bonuses to determine the overall chance of evolution. (Disabled as of 1/12/18 - However, must contain a whole number in the spread sheet)

The unlocked column allows you to set whether the new Digimon you add are unlocked in the evolution tree by default

Modify Sprites

The NewStage variable determines the Digimon's stage and must be Egg, Fresh, InTraining, Rookie, Champion, Ultimate, or Mega. That said, the Digitama entity is hard-coded into the program, so don't attempt to modify it or add a new Digitama.

The NewSpriteNum and NewSpriteSet variables along with the NewStage variable determine what sprites to use. Each sprite sheet can be found in the "resources" folder and is named following a certain standard: "sprites[Stage][Set#]."

For example, spritesRookie0 is the first sprite sheet for Rookie Digimon. When the program looks for what sprites to use, it will check both the NewStage and NewSpriteSet variables first, corresponding to the naming standard above. The NewSpriteNum variable is the first sprite of each column in the sprite sheet that represents a unique Digimon.

If you want to add a new Digimon to the game with your own art, simply follow this naming standard and add a new .png file to the .jar. Otherwise, you can modify the .png files included in the program by extracting and adding/overwriting the sprite sheet with 7zip.

To add a new egg, follow the steps above to extract the eggs.png file. Add a new egg to the end of this image following the dimensions and margins of the other images in that same file. The background picture is determined by the file named "egg[Baby I's egg type divided by 3]Back.png" - the egg type variable is the same as the one entered into the csv file for the Baby I Digimon that hatches from your new egg.

Modify Available Evolutions for Each Digimon

The parents.csv file is relatively straightforward. The first row is the name of the Digimon whom you are modifying. Subsequent rows list the name of that Digimon's possible evolutions. Do not add more parents to this file than the Parents variable in evolutions.csv defines. Names are not case sensitive.

Finish Modding

After you're done editing the files, use 7zip to add and overwrite the files you modified.

Note that the new Digimon you add won't be automatically unlocked in the evolution chart. You'll have to achieve the evolution normally.