EloSnack is a program that lets you cheat by editing files in the game save folders.
- Spreadsheet of various values used.
- Download Java, which is required to run the program.
- Updated Snack files for Elona+, with the files to update it.(info)
- Alternate Snack files for Elona+ if the other link doesn't work.
Basics of using EloSnack
- First, run/launch the file
elosnack.cmdand wait for a window titled "EloSnack" to come up (this might take a little while).
- Click the "Open Configuration..." button (or choose "Open Configuration File" from the File menu), navigate to the EloSnack folder, and choose the
- Click the "Open Target..." button (or choose "Open Target Directory" from the File menu), navigate to your Elona's save folder, choose the folder for your save game, and press "Open".
Now you'll have a bunch of sub-windows open inside the EloSnack window, though initially they'll all be on top of each other. If you expand the main window you'll have room to move them around. Alternatively, you can minimize some of them, though the minimized sub-windows won't show up if the main window is too small.
In each sub-window there'll be a table. The first column is the name of the thing you can edit, the second column in the offset or line-number within the file of the thing that can be edited, the third column is the value of the thing that can be edited, and the fourth is a comment you can make about the thing to be edited. Columns can be rearranged by dragging the headers. To edit the value/comment for a thing, you have to double-click on the exact cell you wish to edit.
For some files there'll be multiple objects of the same kind stored in a single file. In that case above the table there'll be a line saying "Index". An index of 0 is for the first object, an index of 1 is for the second object, and so on. You can edit the number and pressto change the index, or use the up and down arrows to change it.
After finishing your edits you can press the "Save" button or choose "Save modifications" from the "File" menu. Every time you save from EloSnack, a zip file of the pre-modification save folder will be generated as a backup file.
A brief summary of the editable files.
- cdata.s1: Data about the player and NPCs.
- cdatan.s1: Names/aliases, races, and jobs of the player, pets, and NPCs; can be edited with Notepad. Note that the names of races and jobs has no effect on game play, and is purely cosmetic.
- gdata.s1: Global data.
- inv.s1: Inventory items.
- kitem.s1: Information about items and how many have been generated.
- mat.s1: Amounts of materials the player has. List hasn't been updated for Elona+.
- qdata.s1: Data about quests.
- sdata.s1: More data about the player and NPCs.
- spact.s1: The list of special actions the player has. Values are 0 for doesn't have and 1 for has. List hasn't been updated for Elona+.
- spells.s1: The Spell Stock the player has in various spells. List hasn't been updated for Elona+.
- trait.s1: The feats, mutations and Ether diseases the player has. List hasn't been updated for Elona+.
Data about the player and NPCs, with the player being at index 0. More research needed on how the other indexes associate with NPCs.
- Current X/Y position.
- Attraction level to the player. (friend/soulmate/etc)
- Height, weight, and age.
- Fullness counter.
- Amount of gold and platinum coins held.
- Character experience and level.
- Bonus points which can be spent on skills.
- Current and maximum HP, MP, stamina and inventory weight.
- Which god you worship and your level of favor with that god.
- Information about various body parts. 0 denotes the body part is currently not spawned on the player.
- 10000 = head
- 20000 = neck
- 30000 = back
- 40000 = body
- 50000 = hand
- 60000 = ring
- 70000 = arm
- 80000 = waist
- 90000 = leg
- 100000 = either ammo or shoot
- 110000 = either ammo or shoot
- Adding body parts this way will not incur a speed penalty. If you want to add the complicated body speed penalty your character you need to modify "Speed Correction" (offset 272) with a POSITIVE value. 5 equals 5% speed penalty, or one body part above 13.
- I didn't test 100000, or 110000 due to whether or not having extra shoot/ammo would corrupt the save game.
- Tested with all empty equipment slots. The last remaining numbers in the value (10067, etc) denote equipment (67 being the item at this index in inv.s1), so adding just whole values (eg. Only 10000) would safely add just the body part.
- According to EloSnack, it is possible to have at least 30 body parts total.
- Note these are only tested for player values, not pet values.
- Various information for shopkeepers.
- Various AI information for NPCs, including:
- Main actions
- Sub-actions and chance of use
- Low-health action
- bit flags
- Neutral behavior type
- Attack range
- Move frequency
- "Corrections" for various attributes at offsets 960 to 996. These are the bonuses you get from drinking Blessed Potions of Restore Body/Spirit or Soma.
- Counters for various status effects.
- Information about buffs, which comes in triplets. Each triplet is in the form "Buff Type #X", "Buff Magnitude #X", and "Buff Duration #X". The values for the buff types can be found in columns "A" and "B" of the spreadsheet.
- 132: Message displayed when doing unarmed attacks. (bite/punch/claw)
- 192: Highest level
- 260: Message displayed when using spells. (NPCs/Pets only)
- 264: Total 'absolute pierce chance' from equipment.
- 268: Total 'critical hit chance' from equipment.
- 356: Total 'Extra Range Chance' from equipment.
- 392: Total 'Magic Boost' from equipment.
- 636: The total AP the char has gained.
- 640: The part of INI which is determined by life and mana, plus possibly the AP you've gained.
- 676: master-servant relationship
- 692: current AP
- 728: Limit Gauge value
- 768 and 772 may be used to hold values on the mats gathered by pets
- 792: The part of INI which is determined by all attributes save for life and mana.
- 796: The part of INI which is determined by speed.
- 848: Always adds up to (subaction*10+actions), might be to detect how many actions the char has and might need to be updated if you manually add one (not sure)
- 856: What stage of evolution the ally is at.
- 920: The "element" a chars unarmed attack is with a multiplier. (multiplier is use to calculate how effective status effect form the element are)
- 1080: STR growth buff magnitude. Each point is 1% additional exp gained.
- 1084: CON growth buff magnitude.
- 1088: DEX growth buff magnitude.
- 1092: PER growth buff magnitude.
- 1096: LER growth buff magnitude.
- 1100: WIL growth buff magnitude.
- 1104: MAG growth buff magnitude.
- 1108: CHR growth buff magnitude.
- 1112: SPD growth buff magnitude.
- 1116: LUK growth buff magnitude.
- 1600: Anniversary Day
- 1604: Anniversary Month
- 1608: Anniversary Year
- 1616: alcoholic beverages consumed (Elona+ only)
- 1628: Leather&Meat power for ranch breeders
- 1632: Egg&Milk power for ranch breeders
- 1768: Tobacco dependence
- 1772: Drug dependence
- 1784: Hydration
- 1924: bit flags for the AP Traits
Global data. This data seems to correspond to the "core game data" which you get by entering "5" in the game console.
- Deepest floor visited. Dungeons with a higher danger level count as deeper. This stat seems to influence the danger levels of random dungeons.
- Number of player kills and game-days played.
- Current game year, month and day.
- Current map and floor depth player is on.
- Cargo weight, in thousandths of a stone. "Effective Cargo Weight" is the cargo weight limit.
- Counter for how far along you are to your next ether disease.
- Counter for having gotten wishes from fountains.
- Number of charges the the holy well has.
- God gifts you've gotten.
- Wizard mode flag.
- 0: Number of times the player has been killed.
- 12: Number of non-PC/non-pet entities on current map.
- 20: X position on the global map of the last area entered. Doesn't return you to odd locations if modified.
- 24: Y position on the global map of the last area entered. See above.
- 68: current weather:
- 0: clear weather
- 1: Etherwind
- 2: snow
- 3: rain
- 4: hard rain
- 100: Current Recharge powers
- 156: Total amount of skills learned form trainers
- 252: return countdown
- 256: return location
- 280: quest map modifier (needed for quest map #13):
- 360: sleepiness counter
- 388: Heirship Claims
- 716: how many bills you have
- 732: currently riding or not (0,1)
- 756: Highest Danger Level completed (or Story Progress Var/4 + 1, if that is higher)
- 760: sampling spot gathering counter (0-6, after which the spot disappears, counter resets)
- 1008: Story variable. 180 is end of Ch1, 345 is end of Ch2. Unknown if modifying this can cause adverse affects.
- 1052: Guild membership toggle (Mages Guild)
- 1056: Guild membership toggle (Fighters Guild)
- 1060: Guild membership toggle (Thieves Guild)
- 1068: kills left for a fighter quest
- 1092: current game mode:
- 0: Advancing (default)
- 1: No future
- 2: Overdose
- 3: Inferno
- 4: Natural
- 2048: the number of chestnuts thrown (100 or more spawns him, then the number is halved.)
- 2064: quest stage counter for Insect curse level 40
- 2076: quest stage counter for From the sea of stars level 140
- 2080: quest stage counter for Beyond the generations Lv20
- 2220: quest stage counter for Live in This World Lv50
- 3240: The number of Little sisters killed.
- 3244: The number of Little sisters saved.
- 3248: The number of rewards you've already taken from the <Strange Scientist>.
- 3284: Allies in the Doujou
Data about the items in your (and your pets') inventory. There are two ways to determine the index of an item:
- Open up the console by pressing , enter , then press . This will show you a list of inventory items, with the number at the start of each line being the item's index.
- Drop all of your items then pick up one item and save the game. That item will have index 0.
Some notes about the various data types:
- "Quality" controls both the quality given by Sense Quality, and controls if it's an artifact, and if so what kind (miracle, godly or special). Changing a special artifact to godly will allow its material type be changed by a material kit, while changing godly to miracle will allow its material type to be changed by scrolls. The types:
- 2: Good
- 3: Great
- 4: Miracle
- 5: Godly
- 6: Special
- "Identification Level" is how thoroughly identified the item is:
- 0 or 1: only bare type is know (e.g., "a pair of composite boots")
- 2: material, quality level are known (e.g., "a pair of composite boots (Great) [Dragon scale])"
- 3: fully identified
- "Usage modifier" determines the effect of any item which can be used (Values are listed here. A few notable values:
- 33: Monster ball
- 58: Heart (used for evolution in Elona+)
- Values for the equipment materials can be found in columns "G" and "H" of the spreadsheet.
- The number for an artifact's name must be at least 40,000. This number seems to choose from an existing list of names, so there's no way to make your own custom name unless you're willing to spend an ungodly amount of time compiling or trying to figure out the list.
- "Weapon Level OR deed house type" does a few other things:
- Determines the "quality" level for cooking tools, instruments, and beds.
- Determines the god for an altar.
- Determines ancient book type.
- Determines heart type (Elona+ only):
- 11: King heart
- 12: Machine heart
- 13: God heart
- 14: Another heart
- 15: Magic heart
- 16: Evolution heart
- Determines the enchantment conferred by jewel of tear of god and jewel of core of nefia.
- "Flag" packs many item attributes into a single number by adding together different numbers, each of which represents a single attribute. For instance, an item which was only acid proof would have a Flag of 2, an item which was only fire proof would have a Flag of 4, while an item which was acid proof and fireproof (but nothing else) would be 6 (2 + 4). The numbers and their associated attributes:
- 2: Acid proof
- 4: Fireproof
- 16: Has charges. Note that removing this from an item which has charges will just result in charges not being displayed, and the item not being eligible for being recharged, but otherwise changes nothing.
- 32: Precious
- 64: Aphrodisiac (food which has been dipped in a love potion)
- 256: Blessed by Ehekatl.
- 512: Stolen
- 1024: Living weapon. (NOTE: If you make an item living but don't give it a level of at least 1, attempting to examine the item will crash the game)
- 16384: Poisoned (food).
- 32768: Makes it an "eternal force" equipment with "The enemy dies" attribute, meaning it invokes the Word of Death on everyone on the map, including you.
- 65536: Can only be used in a show room.
- 131072: It is a hand-made item.
- 262144: Has the "Herb" attribute (Elona+ only).
- 524288: Has the "Antiseptic" attribute (Elona+ only).
- At the bottom of the table are variables to give the item up to fifteen equipment attributes (which doesn't cover the attributes granted by the "Flag" variable). The attributes come in pairs, with "Attribute #X" determining type type of attribute and "Magnitude of attribute #X" determining the attribute's magnitude (it is unknown if magnitude has any effect for attributes which are solely on/off). The game stops checking for attributes at the first "Attribute #X" which has a value of 0, so any further attributes will be cut off. An exact list of attributes can be found in columns "C" and "D" of the spreadsheet. The attribute numbers fall into various ranges:
- Attribute numbers less than 100 cover "It negates the effects of [whatever]" and miscellaneous attributes like "It lets you see invisible beings", "It occasionally stops time", and so on.
- Attributes in range of 10,000 affect the character attributes.
- Attributes in the range of 20,000 affect resistance.
- Attributes in the range of 30,000 affect skills. The wording differences between skills in the item description (It grants X, It strengthens Y, It improves Z) is purely cosmetic.
- Attributes in the range of 60,000 maintain character attributes. Higher magnitude values for these result in stronger buffs to stat potential when the item is eaten.
- Attributes in the range of 70,000 deal extra damage.
- Attributes in the range of 80,000 invokes various things.
- Attributes in the range of 90,000 grants special ammo.
- 72: equip status (0: not equipped; 100: equipped in 1st slot; 101: equipped in 2nd slot, etc.).
- 112: gift level / bait type on fishing rod.
Data about the player and NPCs, with the player being at index 0. More research needed on how the other indexes associate with NPCs.
- Attributes, skill, resistances and spell levels. Two notes on these:
- These things come in "base" and "effective". "Base" is what they are before adding bonuses from equipment, feats, buffs and status effects, while "effective" is what you have after all of those are applied.
- The bases version have values which are in the millions. The three lowest/right-most digits (ones, tens and hundreds) represent the potential, the next three higher digits (thousands, ten thousands and hundred thousands) represent the the actual vale that goes to the right of the decimal place, and all the higher digits (millions, ten millions, etc) represent the actual value that goes to the left of the decimal place. For instance, if you have a base Strength number of 12,345,678, that would represent a base strength of 12.345 with a potential of 678%. Base values range from 1,001,000 and 1,000,001 (1.001 at no potential and 1.000 at base potential) to 2,471,449,999 (2471.449 at 999% potential, in which case it will almost always snap back down to a base 2000 as soon as it is used.)
The feats, mutations and Ether diseases the player has. Note that for feats and mutations that have multiple levels, the value is how many levels the player has. So, for instance, for the Luck feat, "1" means +5 luck, "2" means +10 luck and "3" means +15 luck.
For Ether diseases, the same applies, but the value is negative (-1 for 10% increased weight from "generates gravity", -2 for 20% increased weight, etc). Additionally, if you give yourself a disease while your "Ether Disease" counter (found in gdata.s1) is below 1000, drinking a Potion of Cure Corruption will not remove that disease. The potion only attempts to remove the last disease acquired for every 1000 of ether disease, then reducing the counter by 1000. A normal potion does this twice and a blessed potion does it 3 times. In other words it will only remove the disease that you got when reaching 1000, 2000, 3000, etc and will leave the diseases added with EloSnack untouched.
- 600: racial fire resistance
- 604: racial cold resistance (Lich players have it)
- 4312: Gem Power level
Offsets in this section do not necessarily apply to its children variants