Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- double EffectiveHealP(int base, int rev, int bre)
- {
- double EH = (20.0 + (rev * 3));
- double health = (base + (10.0 * bre));
- double effectivehealth = (health * 0.6);
- if (EH >= effectivehealth)
- {
- return effectivehealth;
- }
- else
- {
- return EH;
- }
- }
- double EffectiveHealS(int base, int rev, int bre)
- {
- double EH = (15.0 + (rev * 3));
- double health = (base + (10.0 * bre));
- double effectivehealth = (health * 0.6);
- if (EH >= effectivehealth)
- {
- return effectivehealth;
- }
- else
- {
- return EH;
- }
- }
- double ZealotPCrunch(int base, int rev, int ble, int dev, int bre)
- {
- double tot = ((((50.0 + (100 * ble) + (10 * dev)) * EffectiveHealP(base, rev, bre)) / 25) + (bre * 10) + base);
- return tot;
- }
- double ZealotSCrunch(int base, int rev, int ble, int dev, int bre)
- {
- double tot = ((((50.0 + (100 * ble) + (10 * dev)) * EffectiveHealS(base, rev, bre)) / 25) + (bre * 10) + base);
- return tot;
- }
- void ZealotCalculator(int level)
- {
- int points = 0;
- int base = 50;
- int rev = 0;
- int ble = 0;
- int dev = 0;
- int bre = 0;
- int pb_rev = 0;
- int pb_ble = 0;
- int pb_dev = 0;
- int pb_bre = 0;
- int sb_rev = 0;
- int sb_ble = 0;
- int sb_dev = 0;
- int sb_bre = 0;
- double p_tot = 0.0;
- double s_tot = 0.0;
- double pb_tot = 0.0;
- double sb_tot = 0.0;
- if (level <= 1)
- {
- printf("level: 1, no talents, total: %d\n", base);
- return;
- }
- if (level < 7)
- {
- printf("level: %d, breathing: %d, total: %d\n", level, level - 1, (base + (10 * (level - 1))));
- return;
- }
- points = level - 2;
- //p
- for (rev = 5; rev <= points; ++rev)
- {
- for (ble = 0; ble <= 1 && ble <= (points - rev); ++ble)
- {
- for (dev = 0; dev <= (points - rev - ble); ++dev)
- {
- for (bre = 0; bre <= (points - rev - ble - dev); ++bre)
- {
- if ((points - rev - ble - dev - bre) == 0)
- {
- p_tot = ZealotPCrunch(base, rev, ble, dev, bre);
- if (p_tot >= pb_tot)
- {
- pb_rev = rev;
- pb_ble = ble;
- pb_dev = dev;
- pb_bre = bre;
- pb_tot = p_tot;
- }
- }
- }
- }
- }
- }
- //s
- for (rev = 0; rev <= points; ++rev)
- {
- if (rev >= 5)
- {
- for (ble = 0; ble <= 1 && ble <= (points - rev); ++ble)
- {
- for (dev = 5; dev <= (points - rev - ble); ++dev)
- {
- for (bre = 0; bre <= (points - rev - ble - dev); ++bre)
- {
- if ((points - rev - ble - dev - bre) == 0)
- {
- s_tot = ZealotSCrunch(base, rev, ble, dev, bre);
- if (s_tot >= sb_tot)
- {
- sb_rev = rev;
- sb_ble = ble;
- sb_dev = dev;
- sb_bre = bre;
- sb_tot = s_tot;
- }
- }
- }
- }
- }
- }
- else
- {
- ble = 0;
- for (dev = 5; dev <= (points - rev); ++dev)
- {
- for (bre = 0; bre <= (points - rev - dev); ++bre)
- {
- if ((points - rev - dev - bre) == 0)
- {
- s_tot = ZealotSCrunch(base, rev, ble, dev, bre);
- if (s_tot >= sb_tot)
- {
- sb_rev = rev;
- sb_ble = ble;
- sb_dev = dev;
- sb_bre = bre;
- sb_tot = s_tot;
- }
- }
- }
- }
- }
- }
- if (pb_tot > sb_tot)
- {
- printf("level: %d, prayer: 1, reverence: %d, blessing: %d, devotion: %d, breath: %d, total: %f\n",
- level, pb_rev, pb_ble, pb_dev, pb_bre, pb_tot);
- }
- else
- {
- printf("level: %d, selfish: 1, reverence: %d, blessing: %d, devotion: %d, breath: %d, total: %f\n",
- level, sb_rev, sb_ble, sb_dev, sb_bre, sb_tot);
- }
- return;
- }
- int main()
- {
- int i;
- for (i = 1; i < 51; ++i)
- {
- ZealotCalculator(i);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement