OutlandsMud/world/basestats.py

183 lines
3.5 KiB
Python

_BASE_STATS_DATA = {
1: {
'PC': 80,
'ST': 'Cannot Walk',
'DX': 'Infant',
'IQ': 'Vegetable',
'HT': 'Barely awake'
},
2: {
'PC': 70,
'ST': 'Cannot Walk',
'DX': 'Cannot Walk',
'IQ': 'Insect',
'HT': 'Barely awake'
},
3: {
'PC': 60,
'ST': '3 year old',
'DX': 'Ludicrous',
'IQ': 'Reptile',
'HT': 'Very sickly'
},
4: {
'PC': 50,
'ST': '4 year old',
'DX': 'Ludicrous',
'IQ': 'Horse',
'HT': 'Very sickly'
},
5: {
'PC': 40,
'ST': '6 year old',
'DX': 'Ludicrous',
'IQ': 'Dog',
'HT': 'Sickly'
},
6: {
'PC': 30,
'ST': '8 year old',
'DX': 'Ludicrous',
'IQ': 'Chimpanzee',
'HT': 'Sickly'
},
7: {
'PC': 20,
'ST': '10 year old',
'DX': 'Clumsy',
'IQ': 'Child',
'HT': 'Weak'
},
8: {
'PC': 15,
'ST': '13 year old',
'DX': 'Clumsy',
'IQ': 'Dull',
'HT': 'Weak'
},
9: {
'PC': 10,
'ST': 'Average',
'DX': 'Average',
'IQ': 'Dull average',
'HT': 'Average'
},
10: {
'PC': 0,
'ST': 'Average',
'DX': 'Average',
'IQ': 'Average',
'HT': 'Average'
},
11: {
'PC': 10,
'ST': 'Average',
'DX': 'Average',
'IQ': 'Average +',
'HT': 'Average'
},
12: {
'PC': 20,
'ST': 'Weekend Athlete',
'DX': 'Graceful',
'IQ': 'Bright average',
'HT': 'Energetic'
},
13: {
'PC': 30,
'ST': 'Athlete',
'DX': 'Graceful',
'IQ': 'Bright',
'HT': 'Energetic'
},
14: {
'PC': 45,
'ST': 'Athlete',
'DX': 'Graceful',
'IQ': 'Very Bright',
'HT': 'Energetic'
},
15: {
'PC': 60,
'ST': 'Weightlifter',
'DX': 'Very nimble',
'IQ': 'Genius minus',
'HT': 'Very healthy'
},
16: {
'PC': 80,
'ST': 'Weightlifter',
'DX': 'Very nimble',
'IQ': 'Genius',
'HT': 'Very healthy'
},
17: {
'PC': 100,
'ST': 'Circus strongman',
'DX': 'Very nimble',
'IQ': 'Genius-plus',
'HT': 'Very healthy'
},
18: {
'PC': 125,
'ST': 'Circus strongman',
'DX': 'Very nimble',
'IQ': 'Genius-plus',
'HT': 'Very healthy'
},
19: {
'PC': 150,
'ST': 'Olympic weightlifter',
'DX': 'Incredible agile',
'IQ': 'Nobel prize',
'HT': 'Perfect health'
},
20: {
'PC': 175,
'ST': 'Olympic weightlifter',
'DX': 'Incredible agile',
'IQ': 'Nobel prize',
'HT': 'Perfect health'
},
}
def getStatDescription(level, stat):
return _BASE_STATS_DATA[level][stat]
def getStatCost(currentLevel, newLevel):
pcCurrent = _BASE_STATS_DATA[currentLevel]['PC']
pcNew = _BASE_STATS_DATA[newLevel]['PC']
if newLevel < currentLevel:
if newLevel <= 10 and currentLevel <= 10:
return pcNew - pcCurrent
elif newLevel >= 10 and currentLevel >= 10:
return pcCurrent - pcNew
elif newLevel <= 10 and currentLevel >= 10:
return pcCurrent + pcNew
else:
if currentLevel <= 10 and newLevel <= 10:
return pcCurrent - pcNew
elif currentLevel >= 10 and newLevel >= 10:
return pcNew - pcCurrent
elif currentLevel <= 10 and newLevel >= 10:
return pcCurrent + pcNew