Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # PoE_ExpPenalty.py
- # by DajDwaZlote
- # v1.0
- ###
- import math
- import sys
- def GetSafeZone(PlayerLevel):
- return math.floor(3 + PlayerLevel / 16.0)
- def GetEffectiveDifference(PlayerLevel, MonsterLevel):
- SafeZone = GetSafeZone(PlayerLevel)
- return max(abs(PlayerLevel - MonsterLevel) - SafeZone, 0)
- def GetXPMultiplier(PlayerLevel, MonsterLevel):
- EffectiveDifference = GetEffectiveDifference(PlayerLevel, MonsterLevel)
- A = pow((PlayerLevel + 5) / (PlayerLevel + 5 + pow(EffectiveDifference, 2.5)), 1.5)
- if PlayerLevel < 95:
- return max(A, 0.01)
- else:
- B = 1 / (1 + 0.1 * (PlayerLevel - 94))
- return max(A * B, 0.01)
- def GenTable(MinPlayerLevel, MaxPlayerLevel, MinMonsterLevel, MaxMonsterLevel):
- for PlayerLevel in range(MinPlayerLevel, MaxPlayerLevel + 1):
- print("%d: " % PlayerLevel, end='')
- for MonsterLevel in range(MinMonsterLevel, MaxMonsterLevel + 1):
- XPMultiplier = GetXPMultiplier(PlayerLevel, MonsterLevel)
- print("%.2f " % XPMultiplier, end='')
- print("")
- def GetXML(filename, MinPlayerLevel, MaxPlayerLevel, MinMonsterLevel, MaxMonsterLevel):
- file = open(filename, "w")
- if file:
- file.write('<?xml version="1.0" encoding="UTF-8"?>\n')
- file.write('<?mso-application progid="Excel.Sheet"?>\n')
- file.write('<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="https://www.w3.org/TR/html401/">\n')
- # <NumberFormat ss:Format="0.0%"/>
- file.write('<Styles>\n')
- file.write('<Style ss:ID="C0"><Interior ss:Color="#FF0000" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C1"><Interior ss:Color="#FF3300" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C2"><Interior ss:Color="#FF7700" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C3"><Interior ss:Color="#FFBB00" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C4"><Interior ss:Color="#FFFF00" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C5"><Interior ss:Color="#BBFF00" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C6"><Interior ss:Color="#77FF00" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C7"><Interior ss:Color="#33FF00" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="C8"><Interior ss:Color="#00FF00" ss:Pattern="Solid"/><Alignment ss:Horizontal="Right" ss:WrapText="1"/></Style>\n')
- file.write('<Style ss:ID="GREY"><Interior ss:Color="#EEEEEE" ss:Pattern="Solid"/></Style>\n')
- file.write('</Styles>\n')
- file.write('<Worksheet ss:Name="ExpPenalty">\n')
- file.write('<Table>\n')
- file.write('<Column ss:Index="1" ss:AutoFitWidth="0" ss:Width="120"/>\n')
- file.write('<Row>\n')
- file.write('<Cell ss:StyleID="GREY"><Data ss:Type="String">PlayerLevel\MonsterLevel</Data></Cell>\n')
- for MonsterLevel in range(MinMonsterLevel, MaxMonsterLevel + 1):
- file.write('<Cell ss:StyleID="GREY"><Data ss:Type="String">%d</Data></Cell>\n' % MonsterLevel)
- file.write('</Row>\n')
- for PlayerLevel in range(MinPlayerLevel, MaxPlayerLevel + 1):
- file.write('<Row>\n')
- file.write('<Cell ss:StyleID="GREY"><Data ss:Type="Number">%d</Data></Cell>\n' % PlayerLevel)
- for MonsterLevel in range(MinMonsterLevel, MaxMonsterLevel + 1):
- XPMultiplier = GetXPMultiplier(PlayerLevel, MonsterLevel)
- #file.write('<Cell ss:StyleID="C%d"><Data ss:Type="Number">%.4f</Data></Cell>\n' % (int(XPMultiplier * 7), XPMultiplier))
- file.write('<Cell ss:StyleID="C%d"><Data ss:Type="String">%.2f%%</Data></Cell>\n' % (int(XPMultiplier * 7), XPMultiplier * 100))
- file.write('</Row>\n')
- file.write('</Table>\n')
- file.write('</Worksheet>\n')
- file.write('</Workbook>\n')
- file.close()
- MinPlayerLevel = 1
- MaxPlayerLevel = 99
- MinMonsterLevel = 1
- MaxMonsterLevel = 83
- #GenTable(MinPlayerLevel, MaxPlayerLevel, MinMonsterLevel, MaxMonsterLevel)
- GetXML("PoE_ExpPenalty.xml", MinPlayerLevel, MaxPlayerLevel, MinMonsterLevel, MaxMonsterLevel)
- MinPlayerLevel = 68
- MaxPlayerLevel = 99
- MinMonsterLevel = 68
- MaxMonsterLevel = 83
- #GenTable(MinPlayerLevel, MaxPlayerLevel, MinMonsterLevel, MaxMonsterLevel)
- GetXML("PoE_ExpPenaltyMapping.xml", MinPlayerLevel, MaxPlayerLevel, MinMonsterLevel, MaxMonsterLevel)
Advertisement
Add Comment
Please, Sign In to add comment