A documentação para este módulo pode ser criada na página Módulo:Datatable/Loadout/History/doc
-----------------------
-- HELP TABLE: UNITS --
-----------------------
--1 = seconds
--2 = second(s)
--3 = metres
--4 = %
--5 = Tokens
--6 = Token(s)
--7 = empty string, used when there is no unit (i.e. slightly/moderately/tremendously)
--8 = times
--9 = Charges
---------------------------------------
-- HELP TABLE: RARITIES (PERKS ONLY) --
---------------------------------------
--1 = Common / Uncommon / Rare <-- used on some Perks before Patch 4.6.0
--2 = Uncommon / Rare / Very Rare <-- default for Perks past Patch 4.6.0
--3 = Rare / Very Rare / Ultra Rare <-- used on some Perks before Patch 4.6.0
--NOTE: For Perks, the Rarity defines the start of the Rarity-sequence used to colour the tier-based values
--------------------------------------------------
-- HELP TABLE: RARITIES (ALL OTHER UNLOCKABLES) --
--------------------------------------------------
--1 = Common
--2 = Uncommon
--3 = Rare
--4 = Very Rare
--5 = Ultra Rare
--7 = Event
local str = require("Module:Strings")
local p = {}
--overwriting the logic for semantic of historic records
local function iconLink(icon)
return i(icon)
end
local function ibil(text) --iconlink is skipped
return i(b(text))
end
local function quote(text, author)
return cstr.empty
end
p.loadoutStrings = {
activeAbilityButton = i("Active Ability button"), --C & V (Survivor)
activeEventAbilityButton = i("Active Event Ability button"), --TAB (Killer), T (Survivor)
attackButton = i("Attack button"), --M1 (Killer)
interactionButton = i("Interaction button"), --M1 (Survivor), SPACE (Killer)
powerButton = i("Power button"), --M2 (Killer)
secondaryActionButton = i("Secondary Action button"), --SPACE (Survivor)
secondaryPowerButton = i("Secondary Power button"), --LCTRL (Killer)
sprintButton = i("Sprint button"), --SHIFT (Survivor)
useItemButton = i("Use Item button"), --M2 (Survivor)
boonPerkBottom = i("Only one Totem can be blessed by your " .. b("Boon Perks") .. " at a time and all of their effects are active on the same " .. b("Boon Totem")) .. dot,
boonPerkTop = "Press and hold the " .. i("Active Ability button") .. " on a Dull or Hex Totem to bless it and create a " .. i(b("Boon Totem")) .. dot .. br ..
"Soft chimes ring out in a radius of " .. clror("24 metres") .. dot .. nlp .. "All Survivors benefit from the following effects when inside the " .. i("Boon Totem's") .. " radius:",
conspicuousActions = i(b("Endurance")) .. " is cancelled prematurely when performing a " .. i("Conspicuous Action") .. dot,
conspicuousActionsPerk = "#name is deactivated prematurely when performing a " .. i("Conspicuous Action") .. " and remains disabled for the remainder of the Trial.",
hexPerk = i("All effects of the " .. b("Hex Perk") .. " persist until its " .. b("Hex Totem") .. " is cleansed or blessed."),
invocationPerkTop = "When in the Basement near the circle, press the " .. i("Active Ability button") .. " to begin the " .. i("Invocation") .. ", which takes " .. clror("60 seconds") .. " to complete." .. br .. "During an " .. i("Invocation") .. ", your Aura is revealed to all other Survivors and they can join in, accelerating the process by " .. clro("+100 %") .. ", if they too have an " .. i("Invocation Perk") .. " equipped, or by " .. clro("+50 %") .. ", if they have not.",
invocationPerkBottom = "Completing an " .. i("Invocation") .. " disables all " .. i("Invocation Perks") .. " for the remainder of the Trial for all Survivors.",
limitedHeader = ibclr(25, "Limited Item"),
limitedHeaderCraftable = i("Craftable " .. bclr(25, "Limited Item")),
limitedFooter = ibclr(25, "Limited Items") .. " are consumed on use." .. br .. "They cannot be brought back to the Campfire after a Trial and are removed by " .. b("The Entity") .. " upon exiting the Trial.",
limitedFooterMagic = ibclr(25, "Magic Limited Items") .. " are depleted on use but kept on your person." .. br .. "They cannot be brought back to the Campfire after a Trial and are removed by " .. b("The Entity") .. " upon exiting the Trial.",
obsessionChancePlus = b("Increases") .. " your chance of becoming the initial " .. i(b("Obsession")) .. " by increasing the default value by " .. b("+100 %") .. dot,
obsessionChanceMinus = b("Reduces") .. " your chance of becoming the initial " .. i(b("Obsession")) .. " by reducing the default value by " .. b("-100 %") .. dot,
obsessionPerkSurvivor = i("The Killer can only be " .. b("obsessed") .. " with one Survivor at a time."),
obsessionPerkKiller = i("You can only be " .. b("obsessed") .. " with one Survivor at a time."),
scourgeHookDefault = "At the start of the Trial, " .. clror("4 random Hooks") .. " are changed into " .. b("Scourge Hooks") .. colon .. nl ..
nbullet .. space .. "The " .. iconLink(ils.auras) .. " of " .. b("Scourge Hooks") .. " are revealed to you in " .. bclr(16, "white") .. dot,
scourgeHookUnhooked = "Each time a Survivor is unhooked from a " .. b("Scourge Hook") .. ", the following effects apply:",
scourgeHookHooked = "Each time a Survivor is hooked on a " .. b("Scourge Hook") .. ", the following effects apply:",
singleInstancePerk = "Survivors can only be affected by one instance of #pn at a time.",
teamworkPerkHealOnOther = "Whenever you finish healing another Survivor, #pn activates, and both you and the healed Survivor benefit from the following effect:",
teamworkPerkHealOnYou = "Whenever another Survivor finishes healing you, #pn activates, and both you and the Survivor who healed you benefit from the following effect:",
trappedGenerators = "The Auras of " .. i("Trapped Generators") .. " are revealed to all Survivors in " .. bclr(2, "yellow") .. dot,
}
local loadoutStrings = p.loadoutStrings
p.itemDescriptionsHistory = {
["Commodious Toolbox"] = {
{
version = "3.6.0",
charges = "32 Charges",
bonus = "+30 %",
rarity = 3,
desc =
"A large metal box containing basic tool and extra mechanical parts. Even without training, can be used to repair or break various mechanical components." ..
list(
clror("#charges"),
tooltip(b("Moderately increases"), "#bonus", true) .. " Repair speed.",
"Unlocks the Sabotage action."
)
},
{
version = "1.1.2",
charges = "180 Charges",
bonus = "+15 %",
rarity = 3,
desc =
"A large metal box containing basic tool and extra mechanical parts. Even without training, can be used to repair or break various mechanical components." ..
list(
clror("#charges"),
tooltip(b("Moderately increases"), "#bonus", true) .. " Repair speed.",
"Unlocks the Sabotage action."
)
}
}
}
p.perkDescriptionsHistory = {
["A Nurse's Calling"] =
{
{
version = "2.4.0",
units = {3},
values = {20, 24, 28},
rarity = 3,
desc =
"Unlocks potential in your Aura-reading ability." ..
list("The Auras of Survivors who are healing or being healed are revealed to you within #pl(1).")
},
{
version = "1.1.2",
units = {3},
values = {20, 26, 32},
rarity = 3,
desc =
"Unlocks potential in your Aura-reading ability." ..
list("The Auras of Survivors who are healing or being healed are revealed to you within #pl(1).")
},
},
["Ace in the Hole"] =
{
{
version = "3.6.0",
units = {4},
values = {10, 25, 50},
rarity = 3,
desc =
"Lady Luck always seems to be throwing something good your way." .. nlp ..
"When retrieving an " .. b("Item") .. " from a " .. b("Chest") .. ", there is a chance an " .. i(b("Add-on")) .. " will be attached to it:" ..
list(
clror("100 %") .. " chance for an Add-on of " .. bclr(4, "Very Rare") .. " Rarity or lower.",
"#pl(1) chance for a second Add-on of " .. bclr(2, "Uncommon") .. " Rarity or lower.") ..
"#pn allows you to keep any Add-ons your " .. b("Item") .. " has equipped upon escaping."
},
{
version = "2.1.0",
units = {4},
values = {10, 25, 50},
rarity = 3,
desc =
"Lady Luck always seems to be throwing something good your way." .. nlp ..
"When retrieving an " .. b("Item") .. " from a " .. b("Chest") .. ", there is a chance an " .. i(b("Add-on")) .. " will be attached to it:" ..
list(
clror("100 %") .. " chance for an Add-on of " .. bclr(4, "Very Rare") .. " Rarity or lower.",
"#pl(1) chance for a second Add-on of " .. bclr(2, "Uncommon") .. " Rarity or lower.")
},
{
version = "1.3.1",
units = {7},
values = {"Uncommon", "Rare", "Very Rare"},
rarity = 3,
desc =
"Lady Luck always seems to be throwing something good your way." .. nlp ..
"When retrieving an " .. b("Item") .. " from a " .. b("Chest") .. ", there is a " .. clror("50 %") .. " chance an " .. i(b("Add-on")) .. " of #pl(1) Rarity will be attached to it."
},
},
["Adrenaline"] =
{
{
version = "7.7.0",
units = {1},
values = {60, 50, 40},
rarity = 2,
desc =
"You are fuelled by unexpecting energy when on the verge of escape." .. nlp ..
"Once the " .. b("Exit Gates") .. " are powered, #pn activates:" ..
list(
b("Instantly") .. " heal the equivalent of " .. clror(1) .. " Health State.",
"Grants a " .. clro("+50 %") .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("3 seconds") .. dot) ..
"#pn ignores an existing " .. i(b("Exhausted")) .. space .. b("Status Effect") .. ", but causes it for #pl(1)."
},
{
version = "1.8.1",
units = {1},
values = {60, 50, 40},
rarity = 3,
desc =
"You are fuelled by unexpecting energy when on the verge of escape." .. nlp ..
"Once the " .. b("Exit Gates") .. " are powered, #pn activates:" ..
list(
b("Instantly") .. " heal the equivalent of " .. clror(1) .. " Health State.",
"Grants a " .. clro("+50 %") .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("5 seconds") .. dot) ..
"#pn is paused if you are hooked or being carried at the moment of its activation and will instead activate once freed." .. nlp ..
"#pn wakes you from the " .. i("Dream World") .. dot .. nlp ..
"#pn ignores an existing " .. i(b("Exhausted")) .. space .. b("Status Effect") .. ", but causes it for #pl(1)."
},
{
version = "1.5.0",
units = {7, 1, 1},
values = {"Injured State", "Injured State", "Injured or Dying State", 3, 5, 5, 60, 50, 40},
rarity = 3,
desc =
"You are fuelled by unexpecting energy when on the verge of escape." .. nlp ..
"Once the " .. b("Exit Gates") .. " are powered, #pn activates:" ..
list(
b("Instantly") .. " heal from the #pl(1).",
"Grants a " .. clror("+50 %") .. i(b("Haste")) .. space .. b("Status Effect") .. " for #pl(2).") ..
"#pn is paused if you are hooked or being carried at the moment of its activation and will instead activate once freed." .. nlp ..
"#pn ignores an existing " .. i(b("Exhausted")) .. space .. b("Status Effect") .. ", but causes it for #pl(3)."
},
{
version = "1.0.0",
units = {7, 1},
values = {"Injured State", "Injured State", "Injured or Dying State", 3, 5, 5},
rarity = 3,
desc =
"You are fuelled by unexpecting energy when on the verge of escape." .. nlp ..
"Once either of the two " .. b("Exit Gates") .. " is opened, #pn activates:" ..
list(
b("Instantly") .. " heal from the #pl(1).",
b("Increases") .. " your Movement speed to " .. clror("150 %") .. " of its default value for #pl(2).")
},
},
["Alert"] =
{
{
version = "2.3.0",
units = {1},
values = {3, 4, 5},
rarity = 2,
desc =
"Your acute senses are on high alert." .. nlp ..
"Whenever the Killer performs the " .. i("Break or Damage") .. " Action, #pn triggers:" ..
list("Their Aura is revealed to you for #pl(1).")
},
{
version = "1.5.2c",
units = {3, 1},
values = {12, 24, 36, 60, 45, 30},
rarity = 2,
desc =
"Your acute senses are on high alert." .. nlp ..
"Whenever the Killer performs the " .. i("Break or Damage") .. " Action within #pl(1) of your location, #pn triggers:" ..
list("Their Aura is revealed to you for " .. clror("6 seconds") .. dot) ..
"#pn has a cool-down of #pl(2)."
},
{
version = "1.5.1",
units = {3, 1},
values = {12, 24, 36, 60, 45, 30},
rarity = 2,
desc =
"Your acute senses are on high alert." .. nlp ..
"Whenever the Killer performs the " .. i("Break or Damage") .. " Action within #pl(1) of your location, #pn triggers:" ..
list("Their Aura is revealed to you for " .. clror("3 seconds") .. dot) ..
"#pn has a cool-down of #pl(2)."
},
},
["Any Means Necessary"] =
{
{
version = "6.6.0",
units = {1},
values = {6, 5, 4},
rarity = 2,
desc =
"You stand up for yourself, using whatever's on hand to gain an advantage." .. nlp ..
"Press and hold the " .. loadoutStrings.activeAbilityButton .. " for #pl(1) while standing beside a dropped " .. b("Pallet") .. " to reset it to its upright position." ..
list(
"Grants the ability to see the Auras of all dropped but not yet destroyed " .. b("Pallets") .. " in the environment.")
},
{
version = "5.3.0",
units = {1},
values = {100, 80, 60},
rarity = 2,
desc =
"You stand up for yourself, using whatever's on hand to gain an advantage." .. nlp ..
"Press and hold the " .. loadoutStrings.activeAbilityButton .. " for " .. clror("4 seconds") .. " while standing beside a dropped " .. b("Pallet") .. " to reset it to its upright position." ..
list(
"Grants the ability to see the Auras of all dropped but not yet destroyed " .. b("Pallets") .. " in the environment.") ..
"#pn has a cool-down of #pl(1)."
},
{
version = "4.3.0",
units = {1},
values = {100, 80, 60},
rarity = 2,
desc =
"You stand up for yourself, using whatever's on hand to gain an advantage." .. nlp ..
"Press and hold the " .. loadoutStrings.activeAbilityButton .. " for " .. clror("4 seconds") .. " while standing beside a dropped " .. b("Pallet") .. " to reset it to its upright position." .. nlp ..
"#pn has a cool-down of #pl(1)."
},
{
version = "3.4.0",
units = {1},
values = {140, 130, 120},
rarity = 2,
desc =
"You stand up for yourself, using whatever's on hand to gain an advantage." .. nlp ..
"Press and hold the " .. loadoutStrings.activeAbilityButton .. " for " .. clror("4 seconds") .. " while standing beside a dropped " .. b("Pallet") .. " to reset it to its upright position." .. nlp ..
"#pn has a cool-down of #pl(1)."
},
},
["Autodidact"] =
{
{
version = "8.1.0",
units = {5},
values = {3, 4, 5},
rarity = 2,
desc =
"Succeeding a " .. i("Skill Check") .. " while healing another Survivor grants " .. clror("+1 Token") .. ", up to a maximum of #pl(1):" ..
list(
b("Suppresses") .. space .. i("Great Healing Skill Checks") .. dot,
"Causes " .. i("Good Healing Skill Checks") .. " to grant Healing progress based on the number of accumulated Tokens:",
nbullet .. bclr(13, "0 Tokens") .. colon .. space .. clro("-15 %") .. dot,
nbullet .. bclr(13, "1 Token") .. colon .. space .. clro("+0 %") .. dot,
nbullet .. bclr(13, "2 Tokens") .. colon .. space .. clro("+15 %") .. dot,
nbullet .. bclr(13, "3 Tokens") .. colon .. space .. clro("+30 %") .. space .. "(limit of " .. bclr(2, "Tier I") .. ").",
nbullet .. bclr(13, "4 Tokens") .. colon .. space .. clro("+45 %") .. space .. "(limit of " .. bclr(3, "Tier II") .. ").",
nbullet .. bclr(13, "5 Tokens") .. colon .. space .. clro("+60 %") .. space .. "(limit of " .. bclr(4, "Tier III") .. ").") ..
"#pn is inactive when healing using a " .. b("Med-Kit") .. dot
},
{
version = "2.2.0",
units = {5},
values = {3, 4, 5},
rarity = 2,
desc =
"Succeeding a " .. i("Skill Check") .. " while healing another Survivor grants " .. clror("+1 Token") .. ", up to a maximum of #pl(1):" ..
list(
b("Suppresses") .. space .. i("Great Healing Skill Checks") .. dot,
"Causes " .. i("Good Healing Skill Checks") .. " to grant Healing progress based on the number of accumulated Tokens:",
nbullet .. bclr(13, "0 Tokens") .. colon .. space .. clro("-25 %") .. dot,
nbullet .. bclr(13, "1 Token") .. colon .. space .. clro("-10 %") .. dot,
nbullet .. bclr(13, "2 Tokens") .. colon .. space .. clro("+5 %") .. dot,
nbullet .. bclr(13, "3 Tokens") .. colon .. space .. clro("+20 %") .. space .. "(limit of " .. bclr(2, "Tier I") .. ").",
nbullet .. bclr(13, "4 Tokens") .. colon .. space .. clro("+35 %") .. space .. "(limit of " .. bclr(3, "Tier II") .. ").",
nbullet .. bclr(13, "5 Tokens") .. colon .. space .. clro("+50 %") .. space .. "(limit of " .. bclr(4, "Tier III") .. ").") ..
"#pn is inactive when healing using a " .. b("Med-Kit") .. dot
},
},
["Babysitter"] =
{
{
version = "8.1.0",
units = {1},
values = {20, 25, 30},
rarity = 2,
desc =
"While you have a reputation for being self-centred, you risk it all to help those in need." .. nlp ..
"Whenever you unhook a Survivor, the Aura of the Killer is revealed to you for " .. clror("8 seconds") .. ", while the unhooked Survivor benefits from the following effects for #pl(1) instead:" ..
list(
b("Suppresses") .. " the creation of their " .. i("Scratch Marks") .. " and " .. i("Pools of Blood") .. dot,
b("Increases") .. " the strength of their " .. i(b("Haste")) .. space .. b("Status Effect") .. " by " .. clro("+10 %") .. dot)
},
{
version = "7.3.3",
units = {1},
values = {4, 6, 8},
rarity = 2,
desc =
"While you have a reputation for being self-centred, you risk it all to help those in need." .. nlp ..
"Whenever you unhook a Survivor, the Aura of the Killer is revealed to you for " .. clror("8 seconds") .. ", while the unhooked Survivor benefits from the following effects for #pl(1) instead:" ..
list(
b("Suppresses") .. " the creation of their " .. i("Scratch Marks") .. " and " .. i("Pools of Blood") .. dot,
b("Increases") .. " the strength of their " .. i(b("Haste")) .. space .. b("Status Effect") .. " by " .. clro("+7 %") .. dot)
},
{
version = "5.3.0",
units = {1},
values = {4, 6, 8},
rarity = 2,
icon = "Guardian",
desc =
"You risk it all to help those in need" .. nlp ..
"Whenever you unhook a Survivor, the Aura of the Killer is revealed to you for " .. clror("8 seconds") .. ", while the unhooked Survivor benefits from the following effects for #pl(1) instead:" ..
list(
b("Suppresses") .. " the creation of their " .. i("Scratch Marks") .. " and " .. i("Pools of Blood") .. dot,
b("Increases") .. " the strength of their " .. i(b("Haste")) .. space .. b("Status Effect") .. " by " .. clro("+7 %") .. dot)
},
{
version = "3.2.0",
units = {1},
values = {4, 6, 8},
rarity = 2,
desc =
"While you have a reputation for being self-centred, you risk it all to help those in need." .. nlp ..
"Whenever you unhook a Survivor, you and the Killer see each other's Auras for " .. clror("4 seconds") .. ", while the unhooked Survivor benefits from the following effects for #pl(1) instead:" ..
list(b("Suppresses") .. " the creation of their " .. i("Scratch Marks") .. " and " .. i("Pools of Blood") .. dot)
},
},
["Background Player"] =
{
{
version = "8.0.0",
units = {1},
values = {30, 25, 20},
rarity = 2,
desc =
"You are not usually the centre of attention and in some cases, this can be a good thing." .. nlp ..
"Whenever another Survivor is picked up, #pn activates for " .. clror("10 seconds") .. dot .. br .. "Starting to run while it is active causes the following effect:" ..
list("Grants a " .. clro("+50 %") .. space .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("5 seconds") .. dot) ..
"#pn causes the " .. i(b("Exhausted")) .. space .. b("Status Effect") .. " for #pl(1)." .. nlp ..
"#pn cannot be used when " .. i(b("Exhausted")) .. dot
},
{
version = "7.3.0",
units = {1},
values = {60, 50, 40},
rarity = 2,
desc =
"You are not usually the centre of attention and in some cases, this can be a good thing." .. nlp ..
"Whenever another Survivor is picked up, #pn activates for " .. clror("10 seconds") .. dot .. br .. "Starting to run while it is active causes the following effect:" ..
list("Grants a " .. clro("+100 %") .. space .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("5 seconds") .. dot) ..
"#pn causes the " .. i(b("Exhausted")) .. space .. b("Status Effect") .. " for #pl(1)." .. nlp ..
"#pn cannot be used when " .. i(b("Exhausted")) .. dot
},
{
version = "6.6.0",
units = {1},
values = {60, 50, 40},
rarity = 2,
desc =
"You are not usually the centre of attention and in some cases, this can be a good thing." .. nlp ..
"Whenever another Survivor is picked up, #pn activates for " .. clror("10 seconds") .. dot .. br .. "Starting to run while it is active causes the following effect:" ..
list("Grants a " .. clro("+50 %") .. space .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("4 seconds") .. dot) ..
"#pn causes the " .. i(b("Exhausted")) .. space .. b("Status Effect") .. " for #pl(1)." .. nlp ..
"#pn cannot be used when " .. i(b("Exhausted")) .. dot
},
},
["Balanced Landing"] =
{
{
version = "3.4.0",
units = {1},
values = {60, 50, 40},
rarity = 1,
desc =
"Your agility and cat-like relexes are incomparable." .. nlp ..
"When falling from height, you benefit from the following effects:" ..
list(
b("Reduces") .. " the duration of the " .. i("Stagger") .. " upon landing by " .. clror("-75 %") .. dot,
b("Suppresses") .. " all noises associated with falling.",
"Grants a " .. clro("+50 %") .. space .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("3 seconds") .. " upon landing.") ..
"#pn causes the " .. i(b("Exhausted")) .. space .. b("Status Effect") .. " for #pl(1)." .. nlp ..
"#pn cannot be used when " .. i(b("Exhausted")) .. dot
},
{
version = "2.0.0",
units = {1},
values = {60, 50, 40},
rarity = 1,
desc =
"Your agility and cat-like relexes are incomparable." .. nlp ..
"When falling from height, you benefit from the following effects:" ..
list(
b("Reduces") .. " the duration of the " .. i("Stagger") .. " upon landing by " .. clror("-75 %") .. " at all times.",
"Grants a " .. clro("+50 %") .. space .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("3 seconds") .. " upon landing if you are not already afflicted by " .. i(b("Exhaustion")) .. dot) ..
"#pn causes the " .. i(b("Exhausted")) .. space .. b("Status Effect") .. " for #pl(1)."
},
{
version = "1.5.0",
units = {4},
values = {50, 75, 75},
rarity = 1,
desc =
"Your agility and cat-like relexes are incomparable." .. nlp ..
"When falling from height, you benefit from the following effects:" ..
list(b("Reduces") .. " the duration of the " .. i("Stagger") .. " upon landing by #pl(1) at all times.") ..
bclr(3, "Tier III only") .. colon ..
list("Grants a " .. clror("+50 %") .. space .. i(b("Haste")) .. space .. b("Status Effect") .. " for " .. clro("3 seconds") .. " upon landing if not already suffering from " .. i(b("Exhaustion")) .. dot) ..
"#pn causes the " .. i(b("Exhausted")) .. space .. b("Status Effect") .. " for " .. clro("40 seconds") .. dot
},
{
version = "1.3.0",
units = {4},
values = {50, 75, 75},
rarity = 1,
desc =
"Your agility and cat-like relexes are incomparable." .. nlp ..
"When falling from height, you benefit from the following effects:" ..
list(b("Reduces") .. " the duration of the " .. i("Stagger") .. " upon landing by #pl(1) at all times.") ..
bclr(3, "Tier III only") .. colon ..
list(b("Increases") .. " your Movement speed to " .. clror("150 %") .. " of its default value for " .. clro("3 seconds") .. " upon landing.") ..
"#pn has a cool-down of " .. clro("40 seconds") .. dot
},
{
version = "1.1.0",
units = {4},
values = {50, 75, 75},
rarity = 1,
desc =
"Your agility and cat-like relexes are incomparable." .. nlp ..
"When falling from height, you benefit from the following effects:" ..
list(b("Reduces") .. " the duration of the " .. i("Stagger") .. " upon landing by #pl(1) at all times.") ..
bclr(3, "Tier III only") .. colon ..
list(b("Increases") .. " your Movement speed to " .. clror("150 %") .. " of its default value for " .. clro("2 seconds") .. " upon landing.") ..
"#pn has a cool-down of " .. clro("60 seconds") .. dot
},
},
["Better Together"] =
{
{
version = "7.3.3",
units = {1},
values = {8, 9, 10},
rarity = 1,
desc =
"You seek justice and uncover the truth no matter what obstacle stands in your way." ..
list(
"While repairing a " .. b("Generator") .. ", its Aura is highlighted in " .. bclr(2, "yellow") .. " to all other Survivors within " .. clror("32 metres") .. dot,
"Whenever the Killer downs a Survivor while you are repairing a " .. b("Generator") .. ", the Auras of all other Survivors are revealed to you for #pl(1).")
},
{
version = "5.3.0",
units = {1},
values = {8, 9, 10},
rarity = 1,
icon = "Situational Awareness",
desc =
"You are aware of your surroundings and share the information with others." ..
list(
"While repairing a " .. b("Generator") .. ", its Aura is highlighted in " .. bclr(2, "yellow") .. " to all other Survivors within " .. clror("32 metres") .. dot,
"Whenever the Killer downs a Survivor while you are repairing a " .. b("Generator") .. ", the Auras of all other Survivors are revealed to you for #pl(1).")
},
{
version = "3.2.3",
units = {1},
values = {8, 9, 10},
rarity = 1,
desc =
"You seek justice and uncover the truth no matter what obstacle stands in your way." ..
list(
"While repairing a " .. b("Generator") .. ", its Aura is highlighted in " .. bclr(2, "yellow") .. " to all other Survivors within " .. clror("32 metres") .. dot,
"Whenever the Killer downs a Survivor while you are repairing a " .. b("Generator") .. ", the Auras of all other Survivors are revealed to you for #pl(1).")
},
},
["Blast Mine"] =
{
{
version = "8.2.0",
units = {1},
values = {100, 110, 120},
rarity = 2,
desc =
"When direct combat is not an option, you still find ways to strike back." .. nlp ..
"After repairing " .. b(Generators) .. " for a total of " .. clror("40 %") .. ", #pn activates:" ..
list(
"Press the " .. loadoutStrings.activeAbilityButton .. " while near a partially progressed Generator to install a Trap, which stays active for #pl(1).",
"When the Killer damages the " .. i("Trapped Generator") .. ", its Trap explodes half-way through:",
nbullet .. "Stuns the Killer for " .. clro("4 seconds") .. dot,
nbullet .. "Blinds all Players within " .. clro("12.5 metres") .. " of the " .. i("Trapped Generator") .. dot) ..
"#pn deactivates after triggering successfully or once the timer runs out." .. nlp ..
loadoutStrings.trappedGenerators
},
{
version = "7.2.0",
units = {1},
values = {100, 110, 120},
rarity = 2,
desc =
"When direct combat is not an option, you still find ways to strike back." .. nlp ..
"After repairing " .. b(Generators) .. " for a total of " .. clror("50 %") .. ", #pn activates:" ..
list(
"Press the " .. loadoutStrings.activeAbilityButton .. " while near a partially progressed Generator to install a Trap, which stays active for #pl(1).",
"When the Killer damages the " .. i("Trapped Generator") .. ", its Trap explodes half-way through:",
nbullet .. "Stuns the Killer for " .. clro("4 seconds") .. dot,
nbullet .. "Blinds all Players within " .. clro("12.5 metres") .. " of the " .. i("Trapped Generator") .. dot) ..
"#pn deactivates after triggering successfully or once the timer runs out." .. nlp ..
loadoutStrings.trappedGenerators
},
{
version = "7.1.0",
units = {1},
values = {100, 110, 120},
rarity = 2,
desc =
"When direct combat is not an option, you still find ways to strike back." .. nlp ..
"After repairing " .. b(Generators) .. " for a total of " .. clror("50 %") .. ", #pn activates:" ..
list(
"Press the " .. loadoutStrings.activeAbilityButton .. " after repairing any " .. b("Generator") .. " for an additional " .. clro("3 seconds") .. " to install a Trap, which stays active for #pl(1).",
"When the Killer damages the " .. i("Trapped Generator") .. ", its Trap explodes half-way through:",
nbullet .. "Stuns the Killer for " .. clro("4 seconds") .. dot,
nbullet .. "Blinds all Players within " .. clro("12.5 metres") .. " of the " .. i("Trapped Generator") .. dot) ..
"#pn deactivates after triggering successfully or once the timer runs out." .. nlp ..
loadoutStrings.trappedGenerators
},
{
version = "6.2.2",
units = {1},
values = {40, 45, 50},
rarity = 2,
desc =
"When direct combat is not an option, you still find ways to strike back." .. nlp ..
"After repairing " .. b(Generators) .. " for a total of " .. clror("50 %") .. ", #pn activates:" ..
list(
"Press the " .. loadoutStrings.activeAbilityButton .. " after repairing any " .. b("Generator") .. " for an additional " .. clro("3 seconds") .. " to install a Trap, which stays active for #pl(1).",
"When the Killer damages the " .. i("Trapped Generator") .. ", its Trap explodes half-way through:",
nbullet .. "Stuns the Killer for " .. clro("4 seconds") .. dot,
nbullet .. "Blinds all Players within " .. clro("12.5 metres") .. " of the " .. i("Trapped Generator") .. dot) ..
"#pn deactivates after triggering successfully or once the timer runs out." .. nlp ..
loadoutStrings.trappedGenerators
},
{
version = "6.2.0",
units = {1},
values = {35, 40, 45},
rarity = 2,
desc =
"When direct combat is not an option, you still find ways to strike back." .. nlp ..
"After repairing " .. b(Generators) .. " for a total of " .. clror("66 %") .. ", #pn activates:" ..
list(
"Press the " .. loadoutStrings.activeAbilityButton .. " after repairing any " .. b("Generator") .. " for an additional " .. clro("3 seconds") .. " to install a Trap, which stays active for #pl(1).",
"When the Killer damages the " .. i("Trapped Generator") .. ", its Trap explodes half-way through:",
nbullet .. "Stuns the Killer for " .. clro("4 seconds") .. dot,
nbullet .. "Blinds all Players within " .. clro("12.5 metres") .. " of the " .. i("Trapped Generator") .. dot) ..
"#pn deactivates after triggering successfully or once the timer runs out." .. nlp ..
loadoutStrings.trappedGenerators
},
{
version = "5.0.0",
units = {1},
values = {35, 40, 45},
rarity = 2,
desc =
"When direct combat is not an option, you still find ways to strike back." .. nlp ..
"After repairing " .. b(Generators) .. " for a total of " .. clror("66 %") .. ", #pn activates:" ..
list(
"Press the " .. loadoutStrings.activeAbilityButton .. " after repairing any " .. b("Generator") .. " for an additional " .. clro("3 seconds") .. " to install a Trap, which stays active for #pl(1).",
"When the Killer damages the " .. i("Trapped Generator") .. ", its Trap explodes half-way through:",
nbullet .. "Stuns the Killer for " .. clro("4 seconds") .. dot,
nbullet .. "Blinds all Players within " .. clro("12.5 metres") .. " of the " .. i("Trapped Generator") .. dot) ..
"#pn deactivates after triggering successfully, but stays active should the timer run out." .. nlp ..
loadoutStrings.trappedGenerators
},
},
["Decisive Strike"] =
{
{
version = "8.0.0",
units = {1},
values = {40, 50, 60},
rarity = 2,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"After being unhooked or unhooking yourself, #pn activates for the next #pl(1):" ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for " .. clror("4 seconds") .. dot,
"Causes you to become the next " .. i(b("Obsession")) .. dot) ..
"#pn is deactivated prematurely when the " .. b("Exit Gates") .. " are powered." .. br ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.conspicuousActionsPerk .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "7.7.0",
units = {1},
values = {40, 50, 60},
rarity = 2,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"After being unhooked or unhooking yourself, #pn activates for the next #pl(1):" ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for " .. clror("5 seconds") .. dot,
"Causes you to become the next " .. i(b("Obsession")) .. dot) ..
"#pn is deactivated prematurely when the " .. b("Exit Gates") .. " are powered." .. br ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.conspicuousActionsPerk .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "6.1.0",
units = {1},
values = {40, 50, 60},
rarity = 2,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"After being unhooked or unhooking yourself, #pn activates for the next #pl(1):" ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for " .. clror("3 seconds") .. dot,
"Causes you to become the next " .. i(b("Obsession")) .. dot) ..
"#pn is deactivated prematurely when the " .. b("Exit Gates") .. " are powered." .. br ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.conspicuousActionsPerk .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "5.4.0",
units = {1},
values = {40, 50, 60},
rarity = 2,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"After being unhooked or unhooking yourself, #pn activates for the next #pl(1):" ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for " .. clror("5 seconds") .. dot,
"Causes you to become the next " .. i(b("Obsession")) .. dot) ..
"#pn is deactivated prematurely when performing any of the following interactions:" ..
list(
"Repairing a " .. b("Generator") .. dot,
"Healing yourself or other Survivors.",
"Cleansing or Blessing a " .. b("Totem") .. dot,
"Sabotaging a " .. b("Hook") .. dot,
"Unhooking other Survivors.") ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "4.6.0",
units = {1},
values = {40, 50, 60},
rarity = 2,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"After being unhooked or unhooking yourself, #pn activates for the next #pl(1):" ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for " .. clror("5 seconds") .. dot,
"Causes you to become the next " .. i(b("Obsession")) .. dot) ..
"#pn is deactivated prematurely when performing any of the following interactions:" ..
list(
"Repairing a " .. b("Generator") .. dot,
"Healing yourself or other Survivors.",
"Cleansing a " .. b("Totem") .. dot,
"Sabotaging a " .. b("Hook") .. dot,
"Unhooking other Survivors.") ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "2.6.3",
units = {1},
values = {40, 50, 60},
rarity = 3,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"After being unhooked or unhooking yourself, #pn activates for the next #pl(1):" ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for " .. clror("5 seconds") .. dot,
"Causes you to become the next " .. i(b("Obsession")) .. dot) ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "2.6.0",
units = {1},
values = {40, 50, 60},
rarity = 3,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"After being unhooked or unhooking yourself, #pn activates for the next #pl(1):" ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for " .. clror("3 seconds") .. dot,
"Causes you to become the next " .. i(b("Obsession")) .. dot) ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "1.4.0",
units = {1, 4},
values = {3, 3.5, 4, 45, 40, 35},
rarity = 3,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
"If you are the " .. i(b("Obsession")) .. colon ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for #pl(1).") ..
"If you are not the " .. i(b("Obsession")) .. colon ..
list(
"While being carried by the Killer and after filling the " .. i("Wiggle Meter") .. " to #pl(2), succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for #pl(1).") ..
"#pn is disabled for the remainder of the Trial after use." .. nlp ..
loadoutStrings.obsessionChancePlus .. br ..
loadoutStrings.obsessionPerkSurvivor
},
{
version = "1.3.0",
units = {1},
values = {3, 3.5, 4},
rarity = 3,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for #pl(1).") ..
"#pn is disabled for the remainder of the Trial after use."
},
{
version = "1.2.1",
units = {1},
values = {3, 4, 5},
rarity = 3,
desc =
"Using whatever is at hand, you stab your aggressor in an ultimate attempt to escape." .. nlp ..
list(
"When grabbed or picked up by the Killer, succeed a " .. i("Skill Check") .. " to stab the Killer and escape from their grasp.",
nbullet .. " Stuns the Killer for #pl(1).") ..
"#pn is disabled for the remainder of the Trial after use."
}
},
["Dying Light"] =
{
{
version = "3.2.0",
units = {4, 4},
values = {2, 2.5, 3, 22, 27.5, 33},
rarity = 3,
desc =
"Each time you hook a Survivor other than your " .. i(b("Obsession")) .. ", you gain " .. clror("+1 Token") .. colon ..
list(
"For as long as the " .. i(b("Obsession")) .. " is alive, all other Survivors suffer from a stack-able #pl(1) per Token Action Speed penalty to Repairing, Healing, and Sabotaging, up to a maximum of #pl(2) or " .. clro("11 Tokens") .. dot,
"The " .. i(b("Obsession")) .. " is unaffected by this penalty and instead granted a permanent " .. clro("+33 %") .. " Action Speed bonus to Unhooking and Healing other Survivors.") ..
loadoutStrings.obsessionPerkKiller
},
{
version = "1.2.1",
units = {4, 4},
values = {19, 22, 25, 38, 44, 50},
rarity = 3,
desc =
"After you kill or sacrifice your " .. i(b("Obsession")) .. ", all other Survivors suffer from a permanent #pl(1) Action Speed penalty to Repairing, Healing, and Sabotaging." .. nlp ..
"While alive, the " .. i(b("Obsession")) .. " benefits from a permanent #pl(2) Action Speed bonus to Unhooking and Healing other Survivors." .. nlp ..
loadoutStrings.obsessionPerkKiller
},
},
["Enduring"] =
{
{
version = "5.6.1",
units = {4},
values = {40, 45, 50},
rarity = 2,
desc =
"You are resilient to pain." ..
list(b("Reduces") .. " the duration of " .. i("Pallet Stuns") .. " by #pl(1).") ..
"#pn has no effect while carrying a Survivor."
},
{
version = "3.0.0",
units = {4},
values = {40, 45, 50},
rarity = 1,
desc =
"You are resilient to pain." ..
list(b("Reduces") .. " the duration of " .. i("Pallet Stuns") .. " by #pl(1).")
},
{
version = "2.6.0",
units = {4},
values = {50, 60, 75},
rarity = 1,
desc =
"You are resilient to pain." ..
list(b("Increases") .. " the Recovery rate from all " .. i("Stuns") .. " by #pl(1).")
},
{
version = "1.7.0",
units = {4, 4},
values = {50, 60, 75, 20, 28, 35},
rarity = 1,
desc =
"You are resilient to pain." ..
list(
b("Increases") .. " the Recovery rate from " .. i("Pallet Stuns") .. " by #pl(1).",
b("Increases") .. " the Recovery rate from " .. i("Perk Stuns") .. " by #pl(2).")
},
{
version = "1.2.1d",
units = {4},
values = {25, 50, 75},
rarity = 1,
desc =
"You are resilient to pain." ..
list(
b("Increases") .. " the Recovery rate from " .. i("Pallet Stuns") .. " by #pl(1).",
b("Reduces") .. " the Recovery time from " .. i("Perk Stuns") .. " by " .. clror("-35 %") .. dot)
},
{
version = "1.2.1",
units = {4},
values = {25, 50, 75},
rarity = 1,
desc =
"You are resilient to pain." ..
list(
b("Increases") .. " the Recovery rate from " .. i("Pallet Stuns") .. " by #pl(1).",
b("Reduces") .. " the Recovery time from " .. i("Perk Stuns") .. " by " .. clror("-20 %") .. dot)
},
{
version = "1.0.0",
units = {4},
values = {25, 50, 75},
rarity = 1,
desc =
"You are resilient to pain." ..
list(b("Increases") .. " the Recovery rate from " .. i("Pallet Stuns") .. " by #pl(1).")
},
},
}
return p