Module:Mazunki/Monsters
From Melvor Idle
Documentation for this module may be created at Module:Mazunki/Monsters/doc
--local Shared = require('Module:Shared')
local MonsterData = mw.loadData('Module:Monsters/data')
local Monsters = require('Module:Monsters')
local Items = require('Module:Items')
local Constants = require('Module:Constants')
-- local SourceTables = require('Module:Monsters/SourceTables')
-- local UseTables = require('Module:Monsters/UseTables')
local p = {}
function p.getRawTable(frame)
local result = '{|\r\n'
local rows = {}
-- local monsterList = Monsters.getMonsters(function(item) return true end)
-- table.sort(monsterList, function(a, b) return a.id < b.id end)
local monsterID = 0
local monster = Monsters.getMonsterByID(monsterID)
while monster ~= nil and monsterID < 2000 do -- as of writing this, there are [0..163] monsters
local rowTxt = '|-\r\n'
result = result..result..'!!ID'
rowTxt = rowTxt..'|'..monsterID
result = result..'!!Name'
rowTxt = rowTxt..'|'..monster.name
result = result..'!!CombatLevel'
local combatLevel = Monsters._getMonsterCombatLevel(monster) -- used for slayer
rowTxt = rowTxt..'|'..combatLevel
result = result..'!!HP'
local hitpoints = Monsters._getMonsterHP(monster) -- used for slayer
rowTxt = rowTxt..'|'..hitpoints
result = result..'!!Interval'
rowTxt = rowTxt..'|'..Monsters._getMonsterAttackSpeed(monster)
result = result..'!!NormalAttackMaxHit'
rowTxt = rowTxt..'|'..Monsters._getMonsterMaxHit(monster)
result = result..'!!NormalAttackType'
rowTxt = rowTxt..'|'..monster.attackType
result = result..'!!HasSpecial'
rowTxt = rowTxt..'|'..tostring(not #(monster.specialAttack or {}))
result = result..'!!Accuracy'
rowTxt = rowTxt..'|'..Monsters._getMonsterAR(monster)
result = result..'!!MeleeEvasion'
rowTxt = rowTxt..'|'..Monsters._getMonsterER(monster, 'Melee')
result = result..'!!RangedEvasion'
rowTxt = rowTxt..'|'..Monsters._getMonsterER(monster, 'Ranged')
result = result..'!!MagicEvasion'
rowTxt = rowTxt..'|'..Monsters._getMonsterER(monster, 'Magic')
result = result..'!!GoldDropMin'
rowTxt = rowTxt..'|'..monster.dropCoins[1]
result = result..'!!GoldDropMax'
rowTxt = rowTxt..'|'..monster.dropCoins[2]
result = result..'!!BoneType'
result = result..'!!BonePrayerValue'
local bones = Items.getItemByID(monster.bones)
if bones.prayerPoints then
rowTxt = rowTxt..'|'..bones.name
rowTxt = rowTxt..'|'..bones.prayerPoints
else
rowTxt = rowTxt..'|'..tostring(false)
rowTxt = rowTxt..'|'..tostring(0)
end
result = result..'!!Location'
rowTxt = rowTxt..'|'..Monsters._getMonsterAreas(monster, false) --args[2] is excludeDungeons
result = result..'!!SlayerTier'
result = result..'!!SlayerTierName'
result = result..'!!SlayerTierCost'
result = result..'!!SlayerTierPlayerLevel'
result = result..'!!SlayerTierQtyMin'
result = result..'!!SlayerTierQtyMax'
result = result..'!!SlayerCoinReward'
local slayer = nil
if monster.canSlayer then
slayer = Constants.getSlayerTierByLevel(combatLevel)
slayer.reward = math.floor(hitpoints/10)
else
rowTxt = rowTxt
end
-- rowTxt = rowTxt..'|'..slayer.id
-- rowTxt = rowTxt..'|'..slayer.display
-- rowTxt = rowTxt..'|'..slayer.cost
-- rowTxt = rowTxt..'|'..slayer.slayerLevel
-- rowTxt = rowTxt..'|'..slayer.minQuantity
-- rowTxt = rowTxt..'|'..slayer.maxQuantity
-- rowTxt = rowTxt..'|'..slayer.reward
-- result = result..'!!ItemsID'
-- result = result..'!!ItemsWeight'
-- result = result..'!!ItemsDenominators'
-- result = result..'!!ItemsTotalWeight'
-- result = result..'!!ItemsQtyMin'
-- result = result..'!!ItemsQtyMax'
-- local itemIds = {}
-- local itemWeights = {}
-- local itemDenominators = {}
-- local itemQtyMins = {}
-- local itemQtyMaxs = {}
-- local totalWeight = 0
-- for _, droppable in pairs(monster.lootTable) do
-- totalWeight = totalWeight + droppable[2]
-- end
-- for _, droppable in pairs(monster.lootTable) do
-- table.insert(itemIds, droppable[1])
-- table.insert(itemWeights, droppable[2]*monster.lootChance)
-- table.insert(itemDenominators, totalWeight*100)
-- table.insert(itemQtyMins, 1)
-- table.insert(itemQtyMaxs, droppable[3])
-- end
-- rowTxt = rowTxt..'|'..table.concat(itemIds, ",")
-- rowTxt = rowTxt..'|'..table.concat(itemWeights, ",")
-- rowTxt = rowTxt..'|'..table.concat(itemDenominators, ",")
-- rowTxt = rowTxt..'|'..totalWeight
-- rowTxt = rowTxt..'|'..table.concat(itemQtyMins, ",")
-- rowTxt = rowTxt..'|'..table.concat(itemQtyMaxs, ",")
table.insert(rows, rowTxt)
monsterID = monsterID + 1
monster = Monsters.getMonsterByID(monsterID)
end
result = result..'\r\n'..table.concat(rows, '\r\n')..'\r\n|}'
return result
end
function p.getDRValueForMonsterIdForHP(frame)
local monsterid = frame.args[1]
local hp = frame.args[2]
local autoeatlvl = frame.args[3] or 3
return 100
end
return p