Skip to content

Instantly share code, notes, and snippets.

@shakesoda
Created December 4, 2013 00:30
Show Gist options
  • Save shakesoda/7780296 to your computer and use it in GitHub Desktop.
Save shakesoda/7780296 to your computer and use it in GitHub Desktop.
simple rpg-esque leveling system converted to Python (originally Lua)
import math
class Stats:
def __init__(self, base_stats, aptitude):
self._base_stats = dict(base_stats)
self._aptitude = dict(aptitude)
self.level(1)
def __str__(self):
stats = self._stats
ret = "level %d\n" % self._level
for k, v in stats.items():
ret += "%s: %d\n" % (k, v)
return ret
def level(self, level):
self._stats = dict(self._base_stats)
self._level = level
stats = self._stats
base = self._base_stats
aptitude = self._aptitude
for k,v in stats.items():
stats[k] = math.floor(base[k] + pow(level-1, 2) * 3 * aptitude[k])
def diff(self, old_level, new_level):
# TODO
# print(v, before[i], after[i], "%+d" % (after[i] - before[i]))
return
base_stats = { "hp": 17, "sp": 12, "attack": 15, "defense": 14, "exp": 20 }
aptitude = { "hp": 1.2, "sp": 0.9, "attack": 1.2, "defense": 1.1, "exp": 2.0 }
stats = Stats(base_stats, aptitude)
print(stats)
stats.level(level = 50)
print(stats)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment