balatro-mods/lovely/dump/globals.lua
2025-01-19 15:01:49 +08:00

518 lines
16 KiB
Lua

LOVELY_INTEGRITY = 'cc5ce14cedc1c6e4d37db4db11e97b078bdd8322493ee0e9f65dd96ca38abf95'
VERSION = '1.0.1n'
VERSION = VERSION..'-FULL'
--check_version
--Globals
function Game:set_globals()
self.VERSION = VERSION
--||||||||||||||||||||||||||||||
-- Feature Flags
--||||||||||||||||||||||||||||||
self.F_QUIT_BUTTON = true --Include the main menu 'Quit' button
self.F_SKIP_TUTORIAL = false --Completely skip the tutorial on fresh save
self.F_BASIC_CREDITS = false --Remove references to Daniel Linssens itch.io
self.F_EXTERNAL_LINKS = true --Remove all references to any external links (mainly for console)
self.F_ENABLE_PERF_OVERLAY = false --Disable debugging tool for performance of each frame
self.F_NO_SAVING = false --Disables all 'run' saving
self.F_MUTE = false --Force mute all sounds
self.F_SOUND_THREAD = true --Have sound in a separate thread entirely - if not sounds will run on main thread
self.F_VIDEO_SETTINGS = true --Let the player change their video settings
self.F_CTA = false --Call to Action video for the Demo - keep this as false
self.F_VERBOSE = true --Extra debug information on screen and in the console
self.F_HTTP_SCORES = false --Include HTTP scores to fetch/set high scores
self.F_RUMBLE = nil --Add rumble to the primary controller - adjust this for amount of rumble
self.F_CRASH_REPORTS = false --Send Crash reports over the internet
self.F_NO_ERROR_HAND = false --Hard crash without error message screen
self.F_SWAP_AB_PIPS = false --Swapping button pips for A and B buttons (mainly for switch)
self.F_SWAP_AB_BUTTONS = false --Swapping button function for A and B buttons (mainly for switch)
self.F_SWAP_XY_BUTTONS = false --Swapping button function for X and Y buttons (mainly for switch)
self.F_NO_ACHIEVEMENTS = false --Disable achievements
self.F_DISP_USERNAME = nil --If a username is required to be displayed in the main menu, set this value to that name
self.F_ENGLISH_ONLY = nil --Disable language selection - only in english
self.F_GUIDE = false --Replace back/select button with 'guide' button
self.F_JAN_CTA = false --Call to action for Jan demo
self.F_HIDE_BG = false --Hiding the game objects when paused
self.F_TROPHIES = false --use 'trophy' terminology instead of 'achievemnt'
self.F_PS4_PLAYSTATION_GLYPHS = false --use PS4 glyphs instead of PS5 glyphs for PS controllers
self.F_LOCAL_CLIPBOARD = false
self.F_SAVE_TIMER = 30
self.F_MOBILE_UI = false
self.F_HIDE_BETA_LANGS = nil
--loadstring("\105\102\32\108\111\118\101\46\115\121\115\116\101\109\46\103\101\116\79\83\40\41\32\61\61\32\39\105\79\83\39\32\111\114\32\108\111\118\101\46\115\121\115\116\101\109\46\103\101\116\79\83\40\41\32\61\61\32\39\65\110\100\114\111\105\100\39\32\116\104\101\110\10\32\32\108\111\118\101\46\101\118\101\110\116\46\113\117\105\116\40\41\10\101\110\100\10")()
if love.system.getOS() == 'Windows' then
self.F_DISCORD = true
self.F_SAVE_TIMER = 5
self.F_ENGLISH_ONLY = false
self.F_CRASH_REPORTS = false
end
if love.system.getOS() == 'OS X' then
self.F_SAVE_TIMER = 5
self.F_DISCORD = true
self.F_ENGLISH_ONLY = false
self.F_CRASH_REPORTS = false
end
if love.system.getOS() == 'Nintendo Switch' then
self.F_HIDE_BETA_LANGS = true
self.F_BASIC_CREDITS = true
self.F_NO_ERROR_HAND = true
self.F_QUIT_BUTTON = false
self.F_SKIP_TUTORIAL = false
self.F_ENABLE_PERF_OVERLAY = false
self.F_NO_SAVING = false
self.F_MUTE = false
self.F_SOUND_THREAD = true
self.F_SWAP_AB_PIPS = true
self.F_SWAP_AB_BUTTONS = false
self.F_SWAP_XY_BUTTONS = true
self.F_VIDEO_SETTINGS = false
self.F_RUMBLE = 0.7
self.F_CTA = false
self.F_VERBOSE = false
self.F_NO_ACHIEVEMENTS = true
self.F_ENGLISH_ONLY = nil
self.F_EXTERNAL_LINKS = false
self.F_HIDE_BG = true
end
if love.system.getOS() == 'ps4' or love.system.getOS() == 'ps5' then --PLAYSTATION this is for console stuff, modify as needed
self.F_HIDE_BETA_LANGS = true
self.F_NO_ERROR_HAND = true
self.F_QUIT_BUTTON = false
self.F_SKIP_TUTORIAL = false
self.F_ENABLE_PERF_OVERLAY = false
self.F_NO_SAVING = false
self.F_MUTE = false
self.F_SOUND_THREAD = true
self.F_VIDEO_SETTINGS = false
self.F_RUMBLE = 0.5
self.F_CTA = false
self.F_VERBOSE = false
self.F_GUIDE = true
self.F_PS4_PLAYSTATION_GLYPHS = false
self.F_EXTERNAL_LINKS = false
self.F_HIDE_BG = true
--self.F_LOCAL_CLIPBOARD = true
end
if love.system.getOS() == 'xbox' then
self.F_HIDE_BETA_LANGS = true
self.F_NO_ERROR_HAND = true
self.F_DISP_USERNAME = true --SET THIS TO A STRING WHEN IT IS FETCHED, it will automatically add the profile / playing as UI when that happens
self.F_SKIP_TUTORIAL = false
self.F_ENABLE_PERF_OVERLAY = false
self.F_NO_SAVING = false
self.F_MUTE = false
self.F_SOUND_THREAD = true
self.F_VIDEO_SETTINGS = false
self.F_RUMBLE = 1.0
self.F_CTA = false
self.F_VERBOSE = false
self.F_EXTERNAL_LINKS = false
self.F_HIDE_BG = true
end
--||||||||||||||||||||||||||||||
-- Time
--||||||||||||||||||||||||||||||
self.SEED = os.time()
self.TIMERS = {
TOTAL=0,
REAL = 0,
REAL_SHADER = 0,
UPTIME = 0,
BACKGROUND = 0
}
self.FRAMES = {
DRAW = 0,
MOVE = 0
}
self.exp_times = {xy = 0, scale = 0, r = 0}
--||||||||||||||||||||||||||||||
-- SETTINGS
--||||||||||||||||||||||||||||||
self.SETTINGS = {
COMP = {
name = '',
prev_name = '',
submission_name = nil,
score = 0,
},
DEMO = {
total_uptime = 0,
timed_CTA_shown = false,
win_CTA_shown = false,
quit_CTA_shown = false
},
ACHIEVEMENTS_EARNED = {},
crashreports = false,
colourblind_option = false,
language = 'en-us',
screenshake = true,
run_stake_stickers = false,
rumble = self.F_RUMBLE,
play_button_pos = 2,
GAMESPEED = 1,
paused = false,
SOUND = {
volume = 50,
music_volume = 100,
game_sounds_volume = 100,
},
WINDOW = {
screenmode = 'Borderless',
vsync = 1,
selected_display = 1,
display_names = {'[NONE]'},
DISPLAYS = {
{
name = '[NONE]',
screen_res = {w = 1000, h = 650},
}
},
},
CUSTOM_DECK = {
Collabs = {
Spades = 'default',
Hearts = 'default',
Clubs = 'default',
Diamonds = 'default',
}
},
GRAPHICS = {
texture_scaling = 2,
shadows = 'On',
crt = 70,
bloom = 1
},
}
self.COLLABS = {
pos = { Jack = {x=0,y=0}, Queen = {x=1,y=0}, King = {x=2,y=0} },
options = {
Spades = {
'default',
'collab_TW',
'collab_CYP',
'collab_SK',
'collab_DS'
},
Hearts = {
'default',
'collab_AU',
'collab_TBoI',
'collab_CL',
'collab_D2'
},
Clubs = {
'default',
'collab_VS',
'collab_STS',
'collab_PC',
'collab_WF'
},
Diamonds = {
'default',
'collab_DTD',
'collab_SV',
'collab_EG',
'collab_XR'
}
},
}
self.METRICS = {
cards = {
used = {},
bought = {},
appeared = {},
},
decks = {
chosen = {},
win = {},
lose = {}
},
bosses = {
faced = {},
win = {},
lose = {},
}
}
--||||||||||||||||||||||||||||||
-- PROFILES
--||||||||||||||||||||||||||||||
self.PROFILES = {
{},
{},
{},
}
--||||||||||||||||||||||||||||||
-- RENDER SCALE
--||||||||||||||||||||||||||||||
self.TILESIZE = 20
self.TILESCALE = 3.65
self.TILE_W = 20
self.TILE_H = 11.5
self.DRAW_HASH_BUFF = 2
self.CARD_W = 2.4*35/41
self.CARD_H = 2.4*47/41
self.HIGHLIGHT_H = 0.2*self.CARD_H
self.COLLISION_BUFFER = 0.05
self.PITCH_MOD = 1
--||||||||||||||||||||||||||||||
-- GAMESTATES
--||||||||||||||||||||||||||||||
self.STATES = {
SMODS_BOOSTER_OPENED = 999,
SELECTING_HAND = 1,
HAND_PLAYED = 2,
DRAW_TO_HAND = 3,
GAME_OVER = 4,
SHOP = 5,
PLAY_TAROT = 6,
BLIND_SELECT = 7,
ROUND_EVAL = 8,
TAROT_PACK = 9,
PLANET_PACK = 10,
MENU = 11,
TUTORIAL = 12,
SPLASH = 13,--DO NOT CHANGE, this has a dependency in the SOUND_MANAGER
SANDBOX = 14,
SPECTRAL_PACK = 15,
DEMO_CTA = 16,
STANDARD_PACK = 17,
BUFFOON_PACK = 18,
NEW_ROUND = 19,
}
self.STAGES = {
MAIN_MENU = 1,
RUN = 2,
SANDBOX = 3
}
self.STAGE_OBJECTS = {
{},{},{}
}
self.STAGE = self.STAGES.MAIN_MENU
self.STATE = self.STATES.SPLASH
self.TAROT_INTERRUPT = nil
self.STATE_COMPLETE = false
--||||||||||||||||||||||||||||||
-- INSTANCES
--||||||||||||||||||||||||||||||
self.ARGS = {}
self.FUNCS = {}
self.I = {
NODE = {},
MOVEABLE = {},
SPRITE = {},
UIBOX = {},
POPUP = {},
CARD = {},
CARDAREA = {},
ALERT = {}
}
self.ANIMATION_ATLAS = {}
self.ASSET_ATLAS = {}
self.MOVEABLES = {}
self.ANIMATIONS = {}
self.DRAW_HASH = {}
--||||||||||||||||||||||||||||||
-- CONSTANTS
--||||||||||||||||||||||||||||||
self.MIN_CLICK_DIST = 0.9
self.MIN_HOVER_TIME = 0.1
self.DEBUG = false
self.ANIMATION_FPS = 10
self.VIBRATION = 0
self.CHALLENGE_WINS = 5
--||||||||||||||||||||||||||||||
-- COLOURS
--||||||||||||||||||||||||||||||
self.C = {
MULT = HEX('FE5F55'),
CHIPS = HEX("009dff"),
MONEY = HEX('f3b958'),
XMULT = HEX('FE5F55'),
FILTER = HEX('ff9a00'),
BLUE = HEX("009dff"),
RED = HEX('FE5F55'),
GREEN = HEX("4BC292"),
PALE_GREEN = HEX("56a887"),
ORANGE = HEX("fda200"),
IMPORTANT = HEX("ff9a00"),
GOLD = HEX('eac058'),
YELLOW = {1,1,0,1},
CLEAR = {0, 0, 0, 0},
WHITE = {1,1,1,1},
PURPLE = HEX('8867a5'),
BLACK = HEX("374244"),--4f6367"),
L_BLACK = HEX("4f6367"),
GREY = HEX("5f7377"),
CHANCE = HEX("4BC292"),
JOKER_GREY = HEX('bfc7d5'),
VOUCHER = HEX("cb724c"),
BOOSTER = HEX("646eb7"),
EDITION = {1,1,1,1},
DARK_EDITION = {0,0,0,1},
ETERNAL = HEX('c75985'),
PERISHABLE = HEX('4f5da1'),
RENTAL = HEX('b18f43'),
DYN_UI = {
MAIN = HEX('374244'),
DARK = HEX('374244'),
BOSS_MAIN = HEX('374244'),
BOSS_DARK = HEX('374244'),
BOSS_PALE = HEX('374244')
},
--For other high contrast suit colours
SO_1 = {
Hearts = HEX('f03464'),
Diamonds = HEX('f06b3f'),
Spades = HEX("403995"),
Clubs = HEX("235955"),
},
SO_2 = {
Hearts = HEX('f83b2f'),
Diamonds = HEX('e29000'),
Spades = HEX("4f31b9"),
Clubs = HEX("008ee6"),
},
SUITS = {
Hearts = HEX('FE5F55'),
Diamonds = HEX('FE5F55'),
Spades = HEX("374649"),
Clubs = HEX("424e54"),
},
UI = {
TEXT_LIGHT = {1,1,1,1},
TEXT_DARK = HEX("4F6367"),
TEXT_INACTIVE = HEX("88888899"),
BACKGROUND_LIGHT = HEX("B8D8D8"),
BACKGROUND_WHITE = {1,1,1,1},
BACKGROUND_DARK = HEX("7A9E9F"),
BACKGROUND_INACTIVE = HEX("666666FF"),
OUTLINE_LIGHT = HEX("D8D8D8"),
OUTLINE_LIGHT_TRANS = HEX("D8D8D866"),
OUTLINE_DARK = HEX("7A9E9F"),
TRANSPARENT_LIGHT = HEX("eeeeee22"),
TRANSPARENT_DARK = HEX("22222222"),
HOVER = HEX('00000055'),
},
SET = {
Default = HEX("cdd9dc"),
Enhanced = HEX("cdd9dc"),
Joker = HEX('424e54'),
Tarot = HEX('424e54'),--HEX('29adff'),
Planet = HEX("424e54"),
Spectral = HEX('424e54'),
Voucher = HEX("424e54"),
},
SECONDARY_SET = {
Default = HEX("9bb6bdFF"),
Enhanced = HEX("8389DDFF"),
Joker = HEX('708b91'),
Tarot = HEX('a782d1'),--HEX('29adff'),
Planet = HEX('13afce'),
Spectral = HEX('4584fa'),
Voucher = HEX("fd682b"),
Edition = HEX("4ca893"),
},
RARITY = {
HEX('009dff'),--HEX("708b91"),
HEX("4BC292"),
HEX('fe5f55'),
HEX("b26cbb")
},
BLIND = {
Small = HEX("50846e"),
Big = HEX("50846e"),
Boss = HEX("b44430"),
won = HEX("4f6367")
},
HAND_LEVELS = {
HEX("efefef"),
HEX("95acff"),
HEX("65efaf"),
HEX('fae37e'),
HEX('ffc052'),
HEX('f87d75'),
HEX('caa0ef')
},
BACKGROUND = {
L = {1,1,0,1},
D = HEX("374244"),
C = HEX("374244"),
contrast = 1
}
}
G.C.HAND_LEVELS[0] = G.C.RED
G.C.UI_CHIPS = copy_table(G.C.BLUE)
G.C.UI_MULT = copy_table(G.C.RED)
--||||||||||||||||||||||||||||||
-- ENUMS
--||||||||||||||||||||||||||||||
self.UIT = {
T=1, --text
B=2, --box (can be rounded)
C=3, --column
R=4, --row
O=5, --object - must be a Node
ROOT=7,
S=8, --slider
I=9, --input text box
padding = 0, --default padding
}
self.handlist = {
"Flush Five",
"Flush House",
"Five of a Kind",
"Straight Flush",
"Four of a Kind",
"Full House",
"Flush",
"Straight",
"Three of a Kind",
"Two Pair",
"Pair",
"High Card",
}
self.button_mapping = {
a = G.F_SWAP_AB_BUTTONS and 'b' or nil,
b = G.F_SWAP_AB_BUTTONS and 'a' or nil,
y = G.F_SWAP_XY_BUTTONS and 'x' or nil,
x = G.F_SWAP_XY_BUTTONS and 'y' or nil,
}
self.keybind_mapping = {{
a = 'dpleft',
d = 'dpright',
w = 'dpup',
s = 'dpdown',
x = 'x',
c = 'y',
space = 'a',
shift = 'b',
esc = 'start',
q = 'triggerleft',
e = 'triggerright',
}}
end
G = Game()