Dead by Daylight Wiki

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