Game Mechanics
Contents
General Information[edit]
Chrono Cross[edit]
Battle Mechanics[edit]
Thanks to Grobycftw, glennxserge
Player weapon damage to enemy
weak=((str+2)*(100-f)*wp - (def+2)*400)*10/20000*c/1000 medium=((str+2)*(100-f)*wp - (def+2)*400)*25/20000*c/1000 heavy=((str+2)*(100-f)*wp - (def+2)*400)*40/20000*c/1000
This formula shows raw damage; it doesn't consider abnormal status and innate colors.
Each step should return an integer value; for example 2.7 should be 2.
- str: Attacker's strength
- f: It is a semi-random value, differs among weapons, explain later.
- wp: Weapon damage, include bonus from accessories like Dragoon Gauntlet
- def: Target's defense
- c: Color multiplier, it has a base value of 1125 and follows a rule shown in the table below
c value 665 750 875 1000 1125 1250 1375 1500 1500 1500 points -3 -2 -1 0 1 2 3 4 5 6
Points rules:
- A field color cirlce has same color as attacker, +1
- A field color circle has opposite color as attacker, -1
- Target and attacker have same color, -1
- Target and attacker have opposite color, 0, but total damage will be multiplied by 1.5
- Field color circle, target and attacker have same color, color circle will have no effect. For example, if target and attacker are both red, red color circle will have no effect, but rule 2-4 still work.
f is a value determine the percentage between max damage and min damage. You can find it in this thread: here. For example, Serge's weapons have a value of 20%, then f will be a value between 0 and 20.
However, f is not completely random; it cycles in a pre-generated random array. (str+2)*(100-f)*wp is a loop, the result is increased by (100*wp - f*wp) in every step, totally (str+2) times. So a weapon can NEVER deal its max damage.
The part before *c/1000 has a minimum value (wp-4)/2, which means even if the enemy has high defense and you have poor strength, the damage is at least (wp-4)*5/8.
Weapon based tech damage
damage=((str+2)*(100-f)*wp - (def+2)*400)*atk/20000*c/1000
It's almost the same as a normal weapon attack.
- atk: tech damage multiplier, it is not shown in stats window, however. For example, Serge's Dash & Slash has a value of 60.
- c: Color multiplier, it has a base value of 1000 and follows a rule shown in the table below
value 665 750 875 1000 1125 1250 1375 1500 1500 1500 points -3 -2 -1 0 1 2 3 4 5 6
Points rules:
- Caster and element have same color: +1
- Caster and element have opposite color: -1
- A field color circle has same color as the element: +1
- A field color circle has opposite color as the element: -1
- Element color is same as the target: -1
- Element color is opposite as the target: 0, but total damage will be multiplied by 1.5
- Field color doesn't affect points if it is same as the target and the element, but rule 1, 2, 4, 5, 6 still work
For example, if the target and element are both red, red color circles will have no effect.
Element damage
damage=((mag+3)*(100-f)*e-(mdef+2)*500)*(1000+v*125)/400000*c/1000*(100+r)/100
- mag: Caster's magic power, plus equipment bonus.
- f: Like weapon based damage, f is a semi-random value. It is 20 for most elements.
- e: Element's damage (AtkSpread)
- mdef: Target's magic defense
- v: grid level - element level, for example, liftup +7, photonbeam -2...
- r: a random value between 0 and 5
- c: Color multiplier, same rules as above
Base element damage:
Formatted the Base Damage table a little better. Name Level +/- Targets Base Damage AquaBeam 1 7 Single Foe 12 IceLance 2 6 Single Foe 15 AquaBall 3 5 Single Foe 20 IceBlast 4 4 Single Foe 28 Deluge 5 3 All Foes 30 Iceberg 6 2 All Foes 38 Name Level +/- Targets Base Damage Fireball 1 7 Single Foe 12 MagmaBomb 2 6 All Foes 10 FirePillar 3 5 Single Foe 20 MagmaBurst 4 4 Single Foe 28 Inferno 5 3 All Foes 30 Volcano 6 2 All Foes 40 Name Level +/- Targets Base Damage Bushwhacker 1 7 Single Foe 12 Aerosaucer 2 6 Single Foe 15 Bushbasher 3 5 Single Foe 20 Aeroblaster 4 4 Single Foe 28 Carnivore 5 3 All Foes 30 Tornado 6 2 All Foes 38 Name Level +/- Targets Base Damage Uplift 1 7 Single Foe 12 ElectroJolt 2 6 Single Foe 15 Upheaval 3 5 Single Foe 20 ElectroBolt 4 4 Single Foe 28 Earthquake 5 3 All Foes 30 ThundaStorm 6 2 All Foes 40 Name Level +/- Targets Base Damage PhotonRay 1 7 Single Foe 13 Meteorite 2 6 Single Foe 16 PhotonBeam 3 5 Single Foe 22 MeteorShower 4 4 All Foes 25 HolyLight 5 3 All Foes 32 UltraNova 6 2 All Foes 42 Name Level +/- Targets Base Damage GravityBlow 1 7 Single Foe 13 HellSoul 2 - Single Foe -- Gravitonne 3 5 All Foes 16 HellBound 4 - Single Foe -- FreeFall 5 3 Single Foe 36 BlackHole 6 2 All Foes 44
Variable F
The 'f' variable is a placeholder for a random value returned in the range of 0 to the value set in byte 0x0C of the element block. It corresponds to 0x0C in the element's data block. Take a look at the following chunk of data for aquabeam, you'll see that 0x0C is set to 0x14 or 20. So 'f' would be a random value between 0-20:
AquaBeam xx 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------------------------------------------------- 00| 01 01 00 00 80 80 01 00 0C 00 00 00 14 00 00 00 10| 20 00 77 00 FF FF FF FF 00 00 00 00 20 00 00 20 20| 00 00 00 00 00 00 00 00 00 00 00 00
The value 20, means that in a damage calculation the elements power (specified in addr 0x08) has random variance between 80-100% effectiveness, since 'f' has a potential range of 0-20. If you set 0x0C to 0, you will get no variance.
For all standard attack elements in the game (any elements with addr:0x07 set to 0; mode 0), that value is 20 (except UltraNova, which is 0). Fun fact, SexyWink is the only non-standard element that uses mode 0 that also sets that byte (0x0A or 10).
- UltraNova, BlackHole: f = 0
- SexWink: f = 10
- Otherwise, attack elements: f = 20
If we look at Aquabeam:
"f" 01 01 00 00 80 80 01 00 0C 00 00 00 14 00 00 00 20 00 77 00 FF FF FF FF 00 00 00 00 20 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00
The 6th Byte in element corresponds to its color using this Table
Table 2:
80 = Blue 20 = Red 40 = Yellow 04 = Green 10 = Black 08 = White
And it works just looking at Iceberg for ex:
"f"
01 01 00 80 90 80 06 00 26 00 00 00 14 00 00 00 25 00 22 00 FF FF FF FF 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00
Black Hole
also I think Blackhole as a chance to 1 hit Kill any regular mobs (no boss or mini boss I think). maybe its only white color foes but I think it apply to all of them! glennxserge: Blackhole for instance, uses mode 0x0F, and it's the only element that uses it. On the surface it just looks like an element that does damage and sometimes kills (based on the stat Death, being set), which could also be done with the default mode 0x00. So why add an entirely new element mode? What it actually does is only apply damage if a status effect didn't land. So for instance, if you change the stat block for blackhole to apply poison instead of death, then you'll either damage your enemy or poison them, but not both. My guess is that the developers realized that it would be confusing to show the numerical damage simultaneously to death (it would be ambiguous at least), so they needed this mode to make it clear that non-damage killed the enemy.
Have you noticed that the Element data are spread on 2 Blocks? The first block is the Data that will be show in the in-game menu, like when you allocate your element to your characters. The Second block is the Data use in Battle, so you have to change Both if you want a clean hack! Both Blocks will be identical! Make sure you keep it that way when editing.
Blackhole (which is kind of UltraNova's complement), also has an 0x0C value of 0, but because it uses it's own special element mode, I haven't tested whether that byte functions the same. It probably does though. I'll check now... EDIT: Yes, mode 0x0F for Blackhole does make use of byte 0x0C. I think it's functionally the same as in mode 0 behavior. So I think we can put Blackhole in the same category as UltraNova.
First Block start at
002694D4 (Aquabeam) -Formart 2352- or ~0021983B (00219C7C not sure why its a tiny bit offset from my calcul)
(Aquabeam) -Formart 2048- (Please correct me If im wrong, I usually use 2352 format to work mainly,
the Second block starts at
13BA00F4 (Aquabeam) -Formart 2352-
or
~112D483B (112D4C7C) (Aquabeam) -Formart 2048-
Further Discussion
The high bit of byte 0x18 of the element block is the 'instant death' effect. And byte 0x0A is expressed as a percentage chance to hit. You can see a couple examples linked below of Hellbound and Blackhole. You can also test this yourself if you set the value of blackhole's 0x0A to 0x64 (100 decimal), it will always kill standard enemies, regardless of innate type.
Code: [Select] HellBound 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ------------------------------------------------- 00| 01 01 00 00 80 10 04 02 00 00 28 00 00 00 00 00 10| 1A 00 00 00 FF FF FF FF 80 00 00 00 00 00 00 40 20| 00 00 00 00 00 00 00 00 00 00 00 00 BlackHole 00| 01 01 00 80 90 10 06 0F 2C 00 14 00 00 00 00 00 10| 09 00 22 00 FF FF FF FF 80 00 00 00 00 00 00 80 20| 00 00 00 00 00 00 00 00 00 00 00 00
The above indicates that HellBound has a whopping 40% chance to kill whereas BlackHole has 20% (which make sense since it hits all enemies). I'm getting in the weeds here, but wanted to demystify the instant death behavior.
Debuffs
------------------------------------------------ Stats Boost Element ------------------------------------------------ FF FF FF FF XX XX XX XX 00 01 00 00 List of Stats 40 00 00 00 = Att. 80 00 00 00 = Hit% 00 01 00 00 = Def 00 02 00 00 = Evd. 00 04 00 00 = M.Att. 00 08 00 00 = M.Def ex : C0 00 00 00 = Att. + Hit% ------------------------------------------------ Debuff Status Element ------------------------------------------------ MagmaBurst 01 01 00 00(80 20 04 00)1C 00 32 00 14 00 00 00 2B 00 44 00 FF FF FF FF 00 00 10 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 If 80 20 04 00 => 00 calls a list for status 32 = 50% of 00 00 10 00 = Confused 01 00 00 00 = Poison 08 00 00 00 = Burns 10 00 00 00 = Sprain 20 00 00 00 = Flu 00 01 00 00 = Afraid 00 20 00 00 = Fatigued 00 40 00 00 = Asleep 00 00 02 00 = Darkness 00 00 10 00 = Confused 00 00 20 00 = Frozen 00 00 00 04 = Cursed 00 00 00 02 = Dizzy If 80 20 04 02 => 02 calls another list of status? 32 = 50% of 80 00 00 00 = Curse+Darkness+1hit kill? 20 00 00 00 = Curse or Darkness? 01 00 00 00 = Poison or Darkness?
I've been trying to unravel the element block design 100%, but there are quite a few different modes and depending on the mode, some bytes either don't function or do something completely different. Case in point: when byte 0x07 is 3 (healing type), the byte 0x0C acts as a percentage to recover used elements in caster's grid. In most modes it is the random variance for damage. There are a bunch of these little cases that make it hard to get a complete picture.
Healing
HP=(rawmag+2)*(100-f)*e/400*(1000+v*125)/1000
- rawmag: Caster's magic but NOT including bonus from equipment
There may be more behind the formula, but as far as I know field color doesn't affect it.
Dual/Triple Techs
Weapon based:
Each character performs the attack separately, and then the game adds the results.
Element attack:
Same as normal elements, but the tech only uses the magic power of the one who chooses the command.
Weapon Hit%
In battle: weak = acc/3 + wpacc*2/3 - evd medium = 50/3 + wpacc*2/3 - evd heavy = 20/3 + wpacc*2/3 - evd
- acc: ACC showed in character stats and equipment menu.
- wpacc: Weapon accuracy, it is not listed in the encyclopedia directly, but better weapons usually have better values.
- evd: Target evade rate.
After a weak attack, all 3 values are increased, the increment is:
weak = (102-currentweak)*30/100 medium = (102-currentmedium)*25/100 heavy = (103-currentheavy)*20/100 1 medium attack = 3 weak attacks 1 heavy attack = 7 weak attacks
I've no idea about the Hit% value shown in equipment menu. It is different from all three above and is not used in battle at all.
From the formula we can see heavy and medium have nothing to do with character ACC value, so a heavy attack usually misses if you start with it.
Status effect lasting time
time=c*s - 1
- c: It is usually 3, depends on which status it is.
- s: Character based value. For example, Guile has a greater value than most characters.
- Resistance Ring: It will reduce s[/b by 1.
- Resistance Belt: It will reduce s[/b by 2.
Level Up and Stat Bonuses[edit]
by utunnels
I found some people ask about how to max all statistics at 99th star, such as "why is my Serge's strength 87 instead of 88; it was 88 in my last run", or "why is Riddel's magic attack not 60". I searched via Google, some say it is all random (and it is almost true since I myself saw Guile had very poor magic attack, at least before Serge became Lynx). And someone says the bonus can't be changed by the save/load trick; I tested before a boss battle, and it is true. Later I found bonus values for next star are determined after a boss battle which gives you a star and will be carried in the save file until you receive next star.
Level star bonus values are random and follow a formula like:
HP bonus = ((Lv99HP - MaxHP) / (101 - Stars)) x random(0, 2) + 2 Other bonus = ((Lv99Points - Points) / (101 - Stars)) x random(0, 2)
random(0, 2) is a random decimal value between 0 and 2, doesn't include 0 and 2. The result will be rounded to get an integer value (for example, 2.4 will be 2 but 3.6 will become 4).
Minor bonus values after regular fight
I'm still not sure how exactly the formula works, but here's what I've figured out:
1. Your team receives some kind of "exp" after a regular fight, based on what star level you are currently at, until it reaches a certain value (ThresholdPoint). It will be zeroed if you gain a new star level. For example, at level 1, you will receive 1 point per fight. But after 8 fights, it just stops increasing. But at level 50, you receives 3757 points per fight, but stop receiving any after 3 fights.
2. The "exp" interacts with your stats growth, but not by adding up. It is still unknown. However, it seems the rule is fixed instead of random. That means the save and load trick doesn't work here.
3. Total bonus will not get past about 66%-69% of next star bonus. For example, if Serge will gain 12 HP at the next star level, he can receive at most 8 HP during those regular fights.
4. After each fight, points growth is based on "exp" and other factors. It differs among star levels. For example, at star level 0, Serge gains HP in an order of 12%, 13%, 12%, 10%, 7%, 4%, 3%, ... in the first fight, he will gain 12% x next star level hp bonus, and so on. But at level 50, the order is almost 20%, 20%, 14%, 7%, 4%, 2%, 1%,... percentage drops sharply after the ThresholdPoint, which will make it almost impossible to gain any points sooner or later.
5. Small values can be added to next fight, somehow. Though the formula is unknown, but I've noticed, if next star bonus is only 1 point( for example, strength bonus), the character can still receive the point after several fights, in my test case, it should be before the ThresholdPoint.
6. Add a new member to your 3-person team after the ThresholdPoint? Well, he/she will still receive a bonus, and quite a lot in the first fight, but tgus will drop sharply later, and total bonus still can't get past 66-69% of next star bonus.
Most used character gain stats like the red curve in the picture, and those you never use are like the blue one.
From: Main Page
From: Modification