moo3oo3oo3

Thaumcraft 4 Potential Node Centivis Tracker

Feb 6th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.89 KB | None | 0 0
  1. --[[
  2.     This program can only detect if nodes increase in vis! Any reduction of an aspect will not be counted!
  3. --]]
  4.  
  5. --Peripherals
  6. monitor = peripheral.wrap("left")
  7. node = peripheral.wrap("right")
  8.  
  9. --Sets monitor scale factor. Only values by increments of .5 allowed.
  10. --Currently set for a 3x3 monitor setup
  11. monitor.setTextScale(1.0)
  12.  
  13. --Sets monitor to mirror computer
  14. term.redirect(s)
  15.  
  16. local asp = {
  17.     aer = "aer",
  18.     aqua = "aqua",
  19.     ignis = "ignis",
  20.     ordo = "ordo",
  21.     perditio = "perditio",
  22.     terra = "terra"
  23. }
  24. --Tier 1
  25. asp.gelum = {asp.ignis, asp.perditio}
  26. asp.lux = {asp.aer, asp.ignis}
  27. asp.motus = {asp.aer, asp.ordo}
  28. asp.permutatio = {asp.ordo, asp.perditio}
  29. asp.potentia = {asp.ignis, asp.ordo}
  30. asp.tempestas = {asp.aer, asp.aqua}
  31. asp.vacuos = {asp.aer, asp.perditio}
  32. asp.venenum = {asp.aqua, asp.perditio}
  33. asp.victus = {asp.aqua, asp.terra}
  34. asp.vitreus = {asp.ordo, asp.terra}
  35.  
  36. --Tier 2
  37. asp.bestia = {asp.motus, asp.victus}
  38. asp.fames = {asp.vacuos, asp.victus}
  39. asp.herba = {asp.terra, asp.motus}
  40. asp.iter = {asp.terra, asp.motus}
  41. asp.limus = {asp.aqua, asp.victus}
  42. asp.metallum = {asp.terra, asp.vitreus}
  43. asp.mortuus = {asp.perditio, asp.victus}
  44. asp.praecantatio = {asp.potentia, asp.vacuos}
  45. asp.sano = {asp.ordo, asp.victus}
  46. asp.tenebrae = {asp.lux, asp.vacuos}
  47. asp.vinculum = {asp.perditio, asp.mortuus}
  48. asp.volatus = {asp.aer, asp.motus}
  49.  
  50. --Tier 3
  51. asp.alienis = {asp.vacuos, asp.tenebrae}
  52. asp.arbor = {asp.aer, asp.herba}
  53. asp.auram = {asp.aer, asp.praecantatio}
  54. asp.corpus = {asp.bestia, asp.mortuus}
  55. asp.exanimis = {asp.mortuus, asp.motus}
  56. asp.spiritus = {asp.victus, asp.mortuus}
  57. asp.vitium = {asp.perditio, asp.praecantatio}
  58.  
  59. --Tier 4
  60. asp.cognitio = {asp.ignis, asp.spiritus}
  61. asp.sensus = {asp.aer, asp.spiritus}
  62.  
  63. --Tier 5
  64. asp.humanus = {asp.bestia, asp.cognitio}
  65.  
  66. --Tier 6
  67. asp.instrumentum = {asp.ordo, asp.humanus}
  68. asp.lucrum = {asp.fames, asp.humanus}
  69. asp.messis = {asp.herba, asp.humanus}
  70. asp.perfodio = {asp.terra, asp.humanus}
  71.  
  72. --Tier 7
  73. asp.fabrico = {asp.humanus, asp.instrumentum}
  74. asp.machina = {asp.motus, asp.instrumentum}
  75. asp.meto = {asp.instrumentum, asp.messis}
  76. asp.pannus = {asp.bestia, asp.instrumentum}
  77. asp.telum = {asp.ignis, asp.instrumentum}
  78. asp.tutamen = {asp.terra, asp.instrumentum}
  79.  
  80. --Forbidden Magic
  81. asp.infernus = {asp.ignis, asp.praecantatio}
  82. asp.luxuria = {asp.fames, asp.corpus}
  83. asp.gula = {asp.vacuos, asp.fames}
  84. asp.desidia = {asp.vinculum, asp.spiritus}
  85. asp.ira = {asp.ignis, asp.telum}
  86. asp.invidia = {asp.fames, asp.sensus}
  87. asp.superbia = {asp.vacuos, asp.volatus}
  88.  
  89. --Magic Bees
  90. asp.tempus = {asp.ordo, asp.vacuos}
  91.  
  92. --Aspect Variables
  93. local primals = {
  94.     ignis = 0,
  95.     aqua = 0,
  96.     aer = 0,
  97.     terra = 0,
  98.     ordo = 0,
  99.     perditio = 0
  100. }
  101.  
  102. --Resets monitor
  103. function monReset()
  104. monitor.clear()
  105. monitor.setCursorPos(1,1)
  106. end
  107.  
  108. --Math
  109. function convert(amount)
  110.     return math.floor(math.sqrt(amount))
  111. end
  112.  
  113. --Find all primal aspects of an aspect
  114. function primalFind (aspect, components)
  115.     local components = components or {}
  116.    
  117.     --Allows for testing Primal and Tier 1 Aspects
  118.     if type(asp[aspect]) == "table" then
  119.         aspect = asp[aspect]
  120.     end
  121.    
  122.     if type(aspect) == "table" then
  123.         --Recursive
  124.         for _,v in ipairs(aspect) do
  125.             primalFind(v, components)
  126.         end
  127.     else
  128.         --Test for duplicates
  129.         local notDuplicate = true
  130.         for _,v in ipairs(components) do
  131.             if v == aspect then
  132.                 notDuplicate = false
  133.             end
  134.         end
  135.         if notDuplicate then
  136.             table.insert(components, aspect)
  137.         end
  138.     end
  139.     return components
  140. end
  141.  
  142. while true do
  143.     monReset()
  144.     print("Current Centivis Output\n")
  145.     for _,v0 in ipairs(node.getAspects()) do
  146.         for _,v1 in ipairs(primalFind(v0)) do
  147.             if primals[v1] < convert(node.getAspectCount(v0)) then
  148.                 primals[v1] = convert(node.getAspectCount(v0))
  149.             end
  150.         end
  151.     end
  152.     for k,v in pairs(primals) do
  153.         print(k..": "..v.."\n")
  154.     end
  155.     sleep(60)
  156. end
Add Comment
Please, Sign In to add comment