모듈:Npcinfo
This module is used to obtain the base statistics of an NPC. It should only be used in templates and the like; use {{getNpcInfo}} in article text.
It can calculate NPC stats for different stages/modes of the game (Classic / Expert pre-Hardmode / Expert Hardmode / Expert post-Plantera / Master pre-Hardmode / Master Hardmode / Master post-Plantera).
The code is synchronized with version 1.4.3.1 of Terraria.
Usage
{{#invoke:Npcinfo | getInfo | id = <npcid> | prefix = <prefix for variables> (optional) }}</nowiki>
- id
NPC id. Can be -1 to -65 or 1 to 662. 틀:Note
- prefix
The prefix for the output variables. Default is _npcinfo_
. For example, the default variable name for damage is _npcinfo_damage
. If
was set to $prefix
my_
, the variable name would be my_damage
.
Statistics
Invoking this module sets a number of DPL variables, one for each stat. They can be retrieved via {{#[[[:틀:Tl/parser function links]]##dplvar dplvar]:<prefix><stat>}}
, e.g. {{#[[[:틀:Tl/parser function links]]##dplvar dplvar]:_npcinfo_defense}}
for the defense stat with the default
. The following table contains the most important stats:
$prefix
dplvar 틀:Note |
Content |
---|---|
aiStyle | The ID of the AI that the NPC uses. |
banner | The item ID of the enemy banner that the NPC drops. |
boss | The internal flag that determines whether the NPC is considered a boss. 틀:Note |
buffImmune | A comma-separated list of de-/buffs the NPC is immune to. |
buffImmuneAll | Whether the NPC is immune to all de-/buffs. 틀:Note |
buffImmuneAllNotWhips | Whether the NPC is immune to all de-/buffs, except whip debuffs. 틀:Note |
coldDamage | Whether the NPC is affected by the Warmth buff. 틀:Note |
friendly | Whether the NPC is a friendly NPC (e.g. a town NPC or critter). 틀:Note |
housingCategory | if the NPC is a town pet, otherwise.
|
internalName | Internal name of the NPC. |
lavaImmune | Whether the NPC takes damage from lava. 틀:Note |
netID | ID of the NPC, the value of the parameter.
|
noGravity | Whether the NPC is unaffected by gravity. 틀:Note |
noTileCollide | Whether the NPC can move freely through tiles. 틀:Note |
npcSlots | Number of NPC slots that the NPC occupies. See NPC spawning for explanation. |
rarity | Rarity level of the NPC for the Lifeform Analyzer. |
townNPC | Whether the NPC is a town NPC. 틀:Note |
trapImmune | Whether the NPC is completely unaffected by all traps. 틀:Note |
type | "Type ID" of the NPC. For a positive NPC ID, it is equal to . For a negative NPC ID, it is the ID of the corresponding "master" variant (e.g. 1 (Blue Slime) for -3 (Green Slime)).
|
HitSound | File name (without file extension, but it is usually .wav ) of the sound effect that is played when this NPC takes damage (or reflects a projectile). Note that the listed sound is only the base sound; it might be played with modified pitch and volume in-game.
|
DeathSound | File name (without file extension, but it is usually .wav ) of the sound effect that is played when this NPC dies. Note that the listed sound is only the base sound; it might be played with modified pitch and volume in-game.
|
damage damage_e damage_e_hm damage_e_pp damage_m damage_m_hm damage_m_pp |
Damage, defense, knockback resistance, and maximum health values for Classic, Expert pre-Hardmode, Expert Hardmode, Expert post-Plantera, Master pre-Hardmode, Master Hardmode, and Master post-Plantera, respectively. The values are the original values as in the source code, the value displayed in {{npc infobox}}es on the wiki is .
|
defense defense_e defense_e_hm defense_e_pp defense_m defense_m_hm defense_m_pp | |
knockBackResist knockBackResist_e knockBackResist_e_hm knockBackResist_e_pp knockBackResist_m knockBackResist_m_hm knockBackResist_m_pp | |
lifeMax lifeMax_e lifeMax_e_hm lifeMax_e_pp lifeMax_m lifeMax_m_hm lifeMax_m_pp | |
value value_e value_e_hm value_e_pp value_m value_m_hm value_m_pp |
Coins dropped for Classic, Expert pre-Hardmode, Expert Hardmode, and Expert post-Plantera, respectively. Counted in Copper Coins. |
In addition, a variable named
is set. It contains the names of all available statistics.
_fields
Examples
package.lua 80번째 줄에서 Lua 오류: module 'Module:npcinfo/data' not found.package.lua 80번째 줄에서 Lua 오류: module 'Module:npcinfo/data' not found.package.lua 80번째 줄에서 Lua 오류: module 'Module:npcinfo/data' not found.package.lua 80번째 줄에서 Lua 오류: module 'Module:npcinfo/data' not found.Stat 틀:Note | Result 틀:Note | ||
---|---|---|---|
Green Slime 틀:Note | Eye of Cthulhu 틀:Note | Clothier 틀:Note |
local data = mw.loadData( 'Module:npcinfo/data' ) -- loading data table.
local getArg = function(frame, key)
local value = frame.args[key]
if not value then
return nil
end
value = mw.text.trim(value)
if value == '' then
return nil
else
return value
end
end
local fields = {'DeathSound',
'HitSound',
'Opacity',
'aiStyle',
'alpha',
'behindTiles',
'banner',
'boss',
'buffImmune',
'buffImmuneAll',
'buffImmuneAllNotWhips',
'catchItem',
'coldDamage',
'damage',
'damage_e',
'damage_e_hm',
'damage_e_pp',
'damage_m',
'damage_m_hm',
'damage_m_pp',
'defense',
'defense_e',
'defense_e_hm',
'defense_e_pp',
'defense_m',
'defense_m_hm',
'defense_m_pp',
'dontCountMe',
'dontTakeDamage',
'friendly',
'height',
'housingCategory',
'internalName',
'knockBackResist',
'knockBackResist_e',
'knockBackResist_e_hm',
'knockBackResist_e_pp',
'knockBackResist_m',
'knockBackResist_m_hm',
'knockBackResist_m_pp',
'lavaImmune',
'lifeMax',
'lifeMax_e',
'lifeMax_e_hm',
'lifeMax_e_pp',
'lifeMax_m',
'lifeMax_m_hm',
'lifeMax_m_pp',
'name',
'netAlways',
'netID',
'noGravity',
'noTileCollide',
'npcSlots',
'rarity',
'scale',
'timeLeft',
'townNPC',
'trapImmune',
'type',
'value',
'value_e',
'value_e_hm',
'value_e_pp',
'value_m',
'value_m_hm',
'value_m_pp',
'width',}
local statname = {}
local clear = function (frame)
local prefix = getArg(frame, 'prefix') or '_npcinfo_'
local args = {}
for i,v in ipairs(fields) do
table.insert(args, prefix .. v)
table.insert(args, '')
end
frame:callParserFunction{ name = '#dplvar:set', args = args }
end
local p = {
getInfo = function (frame)
local npcid = tonumber(getArg(frame, 'id') or 0)
local prefix = getArg(frame, 'prefix') or '_npcinfo_'
local count = tonumber(getArg(frame, 'players') or 1)
if not npcid then
return
end
-- 76/146/408 not used.
if npcid < -65 or npcid > 669 then
clear(frame) -- reset all dpl vars
return
end
local result = {}
for k,v in pairs(data[0]) do
result[k] = v
end
for k,v in pairs(data[npcid]) do
result[k] = v
end
local args = {}
for k,v in pairs(result) do
args[#args + 1] = prefix .. k
args[#args + 1] = v
end
args[#args + 1] = prefix .. '_fields'
args[#args + 1] = table.concat(fields, ',')
args[#args + 1] = prefix
args[#args + 1] = 'InvalidNpcinfoStatName'
frame:callParserFunction{ name = '#dplvar:set', args = args }
end,
clear = clear,
getStat = function (frame)
local npcid = tonumber(getArg('id')) or tonumber(getArg(1)) or 0
local stat = getArg('stat') or getArg(2)
stat = statname[stat] or stat
if npcid < -65 or npcid > 669 then
return
end
if not stat then
return
end
return data[npcid][stat] or data[0][stat]
end,
-- for module.
stat = function(npcid, stat)
stat = statname[stat] or stat
if npcid < -65 or npcid > 669 then
return
end
if not stat then
return
end
return data[npcid][stat] or data[0][stat]
end,
}
p.getinfo = p.getInfo
p.GetInfo = p.getInfo
p.getstat = p.getStat
p.GetStat = p.getStat
return p
- Pages using DynamicPageList3 parser function
- Pages using DynamicPageList3 dplreplace parser function
- Pages using DynamicPageList3 dplvar parser function
- 구식 enclose 속성을 사용하는 문서
- 스크립트 오류가 있는 문서
- Modules