Compare commits
9 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e1e0ce0661 | |||
| 8cf3988bcc | |||
| ac2157799e | |||
| 97d50cbb48 | |||
| 270b163c22 | |||
| 396a1ff322 | |||
| 12d7e17b72 | |||
| 98e855e314 | |||
| 961225f64d |
|
|
@ -20,11 +20,11 @@ continuation_indent = 4
|
||||||
|
|
||||||
# this mean utf8 length , if this is 'unset' then the line width is no longer checked
|
# this mean utf8 length , if this is 'unset' then the line width is no longer checked
|
||||||
# this option decides when to chopdown the code
|
# this option decides when to chopdown the code
|
||||||
max_line_length = lf
|
max_line_length = 120
|
||||||
|
|
||||||
# optional crlf/lf/cr/auto, if it is 'auto', in windows it is crlf other platforms are lf
|
# optional crlf/lf/cr/auto, if it is 'auto', in windows it is crlf other platforms are lf
|
||||||
# in neovim the value 'auto' is not a valid option, please use 'unset'
|
# in neovim the value 'auto' is not a valid option, please use 'unset'
|
||||||
end_of_line = auto
|
end_of_line = lf
|
||||||
|
|
||||||
# none/ comma / semicolon / only_kv_colon
|
# none/ comma / semicolon / only_kv_colon
|
||||||
table_separator_style = none
|
table_separator_style = none
|
||||||
|
|
|
||||||
6
.vscode/settings.json
vendored
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"Lua.diagnostics.globals": [
|
|
||||||
"Jen",
|
|
||||||
"Jane"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
BIN
assets/1x/afterimage.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 3.1 KiB |
BIN
assets/2x/afterimage.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
|
|
@ -3,11 +3,11 @@ return {
|
||||||
Blind = {
|
Blind = {
|
||||||
bl_Roland_improbable = {
|
bl_Roland_improbable = {
|
||||||
name = "The Improbable",
|
name = "The Improbable",
|
||||||
text = {"{C:attention}All probabilities", "cannot happen"}
|
text = {"{C:attention}All probabilities", "cannot happen"},
|
||||||
},
|
},
|
||||||
bl_Roland_nimble = {
|
bl_Roland_nimble = {
|
||||||
name = "The Nimble",
|
name = "The Nimble",
|
||||||
text = {"The first {C:attention}5 cards", "drawn are {C:attention}played"}
|
text = {"The first {C:attention}5 cards", "drawn are {C:attention}played"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Joker = {
|
Joker = {
|
||||||
|
|
@ -27,45 +27,47 @@ return {
|
||||||
quotes = {
|
quotes = {
|
||||||
marble = {{"there is no escape..."}},
|
marble = {{"there is no escape..."}},
|
||||||
normal = {
|
normal = {
|
||||||
{"I can't wait to", "work with you!"},
|
{"I can't wait to", "work with you!"},
|
||||||
{"Did you need something", "from me?"},
|
{"Did you need something", "from me?"},
|
||||||
{"Oh! I'm just so", "happy to see you!"},
|
{"Oh! I'm just so", "happy to see you!"},
|
||||||
{"Can I talk about something irrelevant?", "I promise it won't be long."},
|
{"Can I talk about something irrelevant?", "I promise it won't be long."},
|
||||||
{"Can you introduce me to your friends?", "Assuming you have friends of course!"},
|
{"Can you introduce me to your friends?", "Assuming you have friends of course!"},
|
||||||
},
|
},
|
||||||
scared = {
|
scared = {
|
||||||
{"What am I", "going to do?!"},
|
{"What am I", "going to do?!"},
|
||||||
{"I'm not scared,", "you are!"},
|
{"I'm not scared,", "you are!"},
|
||||||
{"Tell me when", "this is over..."},
|
{"Tell me when", "this is over..."},
|
||||||
{"I can't keep", "looking at this!"},
|
{"I can't keep", "looking at this!"},
|
||||||
{"Let me go hide in", "this corner... Okay?"},
|
{"Let me go hide in", "this corner... Okay?"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
Spectral = {
|
Spectral = {
|
||||||
|
c_Roland_afterimage = {
|
||||||
|
name = "Afterimage",
|
||||||
|
text = {
|
||||||
|
"Add {C:dark_edition}Negative {}to {C:attention}#1#",
|
||||||
|
"selected card in hand",
|
||||||
|
"{C:red}#2#{} hand size",
|
||||||
|
},
|
||||||
|
},
|
||||||
c_Roland_void = {
|
c_Roland_void = {
|
||||||
name = "Void",
|
name = "Void",
|
||||||
text = {
|
text = {
|
||||||
"{C:red}Destroys {X:red,C:white}all{} owned",
|
"{C:red}Destroys {X:red,C:white}all{} owned",
|
||||||
"playing cards {}for",
|
"playing cards {}for",
|
||||||
"{C:attention}#1# {C:dark_edition}Negative {C:spectral}Cryptids",
|
"{C:attention}#1# {C:dark_edition}Negative {C:spectral}Cryptids",
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
misc = {
|
misc = {
|
||||||
challenge_names = {
|
challenge_names = {
|
||||||
c_Roland_Soaring = "Soaring",
|
|
||||||
c_Roland_Jokerful = "Jokerful",
|
c_Roland_Jokerful = "Jokerful",
|
||||||
c_Roland_Ascension = "Ascension",
|
|
||||||
c_Roland_Balanced_Jokers = "Balanced Jokers",
|
|
||||||
},
|
},
|
||||||
v_text = {
|
v_text = {
|
||||||
ch_c_Roland_Accelerated = {"Start with {C:blue}Accelerated Deck"},
|
|
||||||
ch_c_Roland_Saint = {"Start with an {C:attention}Eternal {C:legendary}Saint"},
|
|
||||||
ch_c_Roland_Jokerful = {"Only the {C:common}default Joker{} can appear in shops"},
|
ch_c_Roland_Jokerful = {"Only the {C:common}default Joker{} can appear in shops"},
|
||||||
ch_c_Roland_Balanced_Jokers = {"All Cryptid and Jen's jokers {C:attention}cannot appear"},
|
},
|
||||||
}
|
},
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
"author": [
|
"author": [
|
||||||
"Emik"
|
"Emik"
|
||||||
],
|
],
|
||||||
"version": "1.2.9",
|
"version": "1.4.3",
|
||||||
"badge_colour": "8BE9FD",
|
"badge_colour": "8BE9FD",
|
||||||
"main_file": "src/main.lua",
|
"main_file": "src/main.lua",
|
||||||
"badge_text_colour": "44475A",
|
"badge_text_colour": "44475A",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
local jokerful = {banned_cards = {}}
|
local jokerful = {banned_cards = {}}
|
||||||
local balanced_jokers = {banned_cards = {}}
|
|
||||||
|
|
||||||
SMODS.Challenge {
|
SMODS.Challenge {
|
||||||
key = "Jokerful",
|
key = "Jokerful",
|
||||||
|
|
@ -7,40 +6,9 @@ SMODS.Challenge {
|
||||||
restrictions = jokerful,
|
restrictions = jokerful,
|
||||||
}
|
}
|
||||||
|
|
||||||
local deck = {}
|
|
||||||
local card = {eternal = true, cry_absolute = true}
|
|
||||||
|
|
||||||
SMODS.Challenge {
|
|
||||||
key = "Ascension",
|
|
||||||
deck = deck,
|
|
||||||
jokers = {card},
|
|
||||||
rules = {custom = {{id = "Roland_Saint"}, {id = "Roland_Accelerated"}}},
|
|
||||||
}
|
|
||||||
|
|
||||||
if Cryptid then
|
|
||||||
SMODS.Challenge {
|
|
||||||
key = "Soaring",
|
|
||||||
deck = deck,
|
|
||||||
jokers = {card},
|
|
||||||
sleeve = "sleeve_cry_equilibrium_sleeve",
|
|
||||||
rules = {custom = {{id = "Roland_Saint"}, {id = "Roland_Accelerated"}}},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
SMODS.Challenge {
|
|
||||||
key = "Balanced_Jokers",
|
|
||||||
restrictions = balanced_jokers,
|
|
||||||
rules = {custom = {{id = "Roland_Balanced_Jokers"}}},
|
|
||||||
}
|
|
||||||
|
|
||||||
G.E_MANAGER:add_event(Event {
|
G.E_MANAGER:add_event(Event {
|
||||||
trigger = "immediate",
|
trigger = "immediate",
|
||||||
func = function()
|
func = function()
|
||||||
if Jen or Jane then
|
|
||||||
deck.type = Jen and "b_jen_nitro" or "b_jane_nitro"
|
|
||||||
card.id = Jen and "j_jen_saint" or "j_jane_saint"
|
|
||||||
end
|
|
||||||
|
|
||||||
F.foreach(
|
F.foreach(
|
||||||
F.filter(
|
F.filter(
|
||||||
G.P_CENTERS,
|
G.P_CENTERS,
|
||||||
|
|
@ -49,14 +17,6 @@ G.E_MANAGER:add_event(Event {
|
||||||
function(v) table.insert(jokerful.banned_cards, {id = v.key}) end
|
function(v) table.insert(jokerful.banned_cards, {id = v.key}) end
|
||||||
)
|
)
|
||||||
|
|
||||||
F.foreach(
|
|
||||||
F.filter(
|
|
||||||
jokerful.banned_cards,
|
|
||||||
function(v) return v.id:sub(1, 6) == "j_cry_" or v.id:sub(1, 6) == "j_jen_" end
|
|
||||||
),
|
|
||||||
function(v) table.insert(balanced_jokers.banned_cards, {id = v.key}) end
|
|
||||||
)
|
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,10 @@ end
|
||||||
local function common_hand()
|
local function common_hand()
|
||||||
return (G.GAME or {}).current_round and F.reduce(
|
return (G.GAME or {}).current_round and F.reduce(
|
||||||
G.GAME.hands,
|
G.GAME.hands,
|
||||||
{name = "High Card", order = -1 / 0, played = 0},
|
{ name = "High Card", order = -1 / 0, played = 0 },
|
||||||
function(a, v, k)
|
function(a, v, k)
|
||||||
return (a.played < v.played or (a.played == v.played) and (a.order > v.order)) and
|
return (a.played < v.played or (a.played == v.played) and (a.order > v.order)) and
|
||||||
{name = k, order = v.order, played = v.played} or a
|
{ name = k, order = v.order, played = v.played } or a
|
||||||
end,
|
end,
|
||||||
pairs
|
pairs
|
||||||
).name or "High Card"
|
).name or "High Card"
|
||||||
|
|
@ -41,10 +41,10 @@ SMODS.Atlas {
|
||||||
SMODS.Joker {
|
SMODS.Joker {
|
||||||
key = "escapey",
|
key = "escapey",
|
||||||
atlas = "escapey",
|
atlas = "escapey",
|
||||||
pos = {x = 0, y = 0},
|
pos = { x = 0, y = 0 },
|
||||||
sinis = {x = 2, y = 0},
|
sinis = { x = 2, y = 0 },
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = { x = 1, y = 0 },
|
||||||
config = {extra = {level_up_by = 1}},
|
config = { extra = { level_up_by = 1 } },
|
||||||
cost = 8,
|
cost = 8,
|
||||||
rarity = 3,
|
rarity = 3,
|
||||||
eternal_compat = true,
|
eternal_compat = true,
|
||||||
|
|
@ -52,16 +52,19 @@ SMODS.Joker {
|
||||||
blueprint_compat = false,
|
blueprint_compat = false,
|
||||||
loc_vars = function(_, _, card)
|
loc_vars = function(_, _, card)
|
||||||
local loc_self = G.localization.descriptions.Joker.j_Roland_escapey
|
local loc_self = G.localization.descriptions.Joker.j_Roland_escapey
|
||||||
|
|
||||||
|
---@diagnostic disable-next-line: undefined-global
|
||||||
|
local sinister = (Jen or {}).sinister or G.escapey_sinister
|
||||||
local quotes = loc_self.quotes
|
local quotes = loc_self.quotes
|
||||||
|
|
||||||
local merge = G.jokers
|
local merge = G.jokers
|
||||||
and F.count(F.filter(G.jokers.cards, is_mergeable_with(card))) > 0
|
and F.count(F.filter(G.jokers.cards, is_mergeable_with(card))) > 0
|
||||||
and loc_self.merge or {}
|
and loc_self.merge or {}
|
||||||
|
|
||||||
local normal = (merge[1] or (Jen or Jane or {}).sinister) and {} or
|
local normal = (merge[1] or sinister) and {} or
|
||||||
pseudorandom_element(quotes.normal, pseudoseed("EscapeyQuotes")) or {}
|
pseudorandom_element(quotes.normal, pseudoseed("EscapeyQuotes")) or {}
|
||||||
|
|
||||||
local scared = (merge[1] or not (Jen or Jane or {}).sinister) and {} or
|
local scared = (merge[1] or not sinister) and {} or
|
||||||
pseudorandom_element(quotes.scared, pseudoseed("EscapeyQuotes")) or {}
|
pseudorandom_element(quotes.scared, pseudoseed("EscapeyQuotes")) or {}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
@ -107,7 +110,7 @@ SMODS.Joker {
|
||||||
F.filter(G.jokers.cards, is_mergeable_with(card)),
|
F.filter(G.jokers.cards, is_mergeable_with(card)),
|
||||||
function(v)
|
function(v)
|
||||||
sum = sum + v.ability.extra.level_up_by * (v.getEvalQty and v:getEvalQty() or 1)
|
sum = sum + v.ability.extra.level_up_by * (v.getEvalQty and v:getEvalQty() or 1)
|
||||||
v:start_dissolve({HEX("57ecab")}, nil, 1.6)
|
v:start_dissolve({ HEX("57ecab") }, nil, 1.6)
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -162,22 +165,25 @@ SMODS.Joker {
|
||||||
F.foreach(
|
F.foreach(
|
||||||
F.filter(G.consumeables.cards, destructible),
|
F.filter(G.consumeables.cards, destructible),
|
||||||
function(v)
|
function(v)
|
||||||
v:start_dissolve({HEX("57ecab")}, nil, 1.6)
|
v:start_dissolve({ HEX("57ecab") }, nil, 1.6)
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
|
local trigger = #G.GAME.tags >= 30 and "immediate" or "before"
|
||||||
|
local delay = #G.GAME.tags >= 30 and 0 or 1 / #G.GAME.tags
|
||||||
|
|
||||||
F.foreach(
|
F.foreach(
|
||||||
G.GAME.tags,
|
G.GAME.tags,
|
||||||
function(v)
|
function(v)
|
||||||
G.E_MANAGER:add_event(Event({trigger = "immediate", func = fast_delete(v)}))
|
G.E_MANAGER:add_event(Event { trigger = trigger, blocking = #G.GAME.tags < 30, delay = delay, func = fast_delete(v) })
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
|
||||||
level_up_hand(card, hand, nil, object_count * card.ability.extra.level_up_by)
|
level_up_hand(card, hand, nil, object_count * card.ability.extra.level_up_by)
|
||||||
|
|
||||||
update_hand_text(
|
update_hand_text(
|
||||||
{sound = "button", volume = 0.7, pitch = 1.1, delay = 0},
|
{ sound = "button", volume = 0.7, pitch = 1.1, delay = 0 },
|
||||||
{mult = 0, chips = 0, handname = "", level = ""}
|
{ mult = 0, chips = 0, handname = "", level = "" }
|
||||||
)
|
)
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
SMODS.Sound({key = "void", path = "void.ogg"})
|
|
||||||
|
|
||||||
local function can_use()
|
local function can_use()
|
||||||
return not ((G.play and #G.play.cards > 0 or
|
return not ((G.play and #G.play.cards > 0 or
|
||||||
G.CONTROLLER.locked or
|
G.CONTROLLER.locked or
|
||||||
|
|
@ -9,6 +7,15 @@ local function can_use()
|
||||||
G.STATE ~= G.STATES.PLAY_TAROT)
|
G.STATE ~= G.STATES.PLAY_TAROT)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
SMODS.Sound({key = "void", path = "void.ogg"})
|
||||||
|
|
||||||
|
SMODS.Atlas {
|
||||||
|
px = 71,
|
||||||
|
py = 95,
|
||||||
|
key = "afterimage",
|
||||||
|
path = "afterimage.png",
|
||||||
|
}
|
||||||
|
|
||||||
SMODS.Atlas {
|
SMODS.Atlas {
|
||||||
px = 71,
|
px = 71,
|
||||||
py = 95,
|
py = 95,
|
||||||
|
|
@ -16,6 +23,42 @@ SMODS.Atlas {
|
||||||
path = "void.png",
|
path = "void.png",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SMODS.Consumable {
|
||||||
|
key = "afterimage",
|
||||||
|
set = "Spectral",
|
||||||
|
pos = {x = 0, y = 0},
|
||||||
|
cost = 6,
|
||||||
|
atlas = "afterimage",
|
||||||
|
config = {extra = {amount = 1, hand = -1}},
|
||||||
|
loc_vars = function(_, _, card)
|
||||||
|
return {vars = {card.ability.extra.amount, card.ability.extra.hand}}
|
||||||
|
end,
|
||||||
|
can_use = function(_, card)
|
||||||
|
return can_use() and card.ability.extra.amount == #Bakery_API.get_highlighted()
|
||||||
|
end,
|
||||||
|
use = function(_, card, _, _)
|
||||||
|
for _, v in ipairs(Bakery_API.get_highlighted()) do
|
||||||
|
G.E_MANAGER:add_event(Event {
|
||||||
|
delay = 0.1,
|
||||||
|
func = function()
|
||||||
|
v:set_edition({negative = true})
|
||||||
|
v:juice_up(0.5, 0.5)
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
G.E_MANAGER:add_event(Event {
|
||||||
|
delay = 0.1,
|
||||||
|
func = function()
|
||||||
|
G.hand:change_size(card.ability.extra.hand)
|
||||||
|
Bakery_API.unhighlight_all()
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
SMODS.Consumable {
|
SMODS.Consumable {
|
||||||
key = "void",
|
key = "void",
|
||||||
set = "Spectral",
|
set = "Spectral",
|
||||||
|
|
|
||||||