1use solana_program::pubkey::Pubkey;
4use solana_program::pubkey;
5
6pub const ADMIN_ADDRESS: Pubkey = pubkey!("DEvGq2WVuA3qkSCtwwuMYThY4onkJunEHSAxU5cieph8");
7pub const FEE_COLLECTOR: Pubkey = pubkey!("FEEjHM2DoFu6UifSBmrxTQ6X2KkWQ1dbPXASCtdLUdnx");
8pub const SOL_SPLIT_TREASURY_BPS: u64 = 9000;
10pub const SOL_SPLIT_FEE_BPS: u64 = 1000;
12
13pub const TASK_VERIFIER: Pubkey = pubkey!("tASK7746ambmkkTvqtyCehd3F56X4VJpr9GCPh4bUmu");
14pub const DOJO_MINT: Pubkey = pubkey!("ShardMNKCZTxGVpnsJEL6tapMhf7DCM7WMqW7kADwQ8");
16
17pub const CONFIG: &[u8] = b"config";
18pub const GAME: &[u8] = b"game";
19pub const DOJO: &[u8] = b"dojo";
20pub const SHOGUN: &[u8] = b"shogun";
21pub const BARRACKS: &[u8] = b"barracks";
22pub const FORGE: &[u8] = b"forge";
23pub const TASKS: &[u8] = b"tasks";
24pub const TREASURY: &[u8] = b"treasury";
25pub const REFERRAL: &[u8] = b"referral";
26pub const PRESTIGE: &[u8] = b"prestige";
27pub const SEEKER: &[u8] = b"seeker";
29pub const PRESTIGE_LEVELS: usize = 6;
31
32pub const ED25519_SIGNATURE_OFFSETS_START: usize = 2;
33pub const ED25519_SIGNATURE_OFFSETS_SIZE: usize = 14;
34pub const ED25519_DATA_START: usize = ED25519_SIGNATURE_OFFSETS_START + ED25519_SIGNATURE_OFFSETS_SIZE;
35pub const ED25519_PUBKEY_SIZE: usize = 32;
36pub const ED25519_SIGNATURE_SIZE: usize = 64;
37
38pub const SECONDS_PER_SLOT: f64 = 0.4;
40pub const ONE_DAY_SLOTS: u64 = 216_000;
42pub const CHAKRA_MAX: u64 = ONE_DAY_SLOTS;
43pub const CHAKRA_24H: u64 = ONE_DAY_SLOTS;
45pub const CHAKRA_48H: u64 = 2 * ONE_DAY_SLOTS;
46pub const CHAKRA_72H: u64 = 3 * ONE_DAY_SLOTS;
47pub const ORE_DIVISOR: u64 = 200;
49pub const EMISSION_RAW_PER_SLOT_BASE: u64 = 40_000_000;
51pub const DOJO_DECIMALS: u8 = 6;
52pub const ONE_DOJO: u64 = 10u64.pow(DOJO_DECIMALS as u32);
54
55pub const SLOTS_PER_LEVEL: u64 = 3;
56pub const MAX_BARRACKS_SLOTS: usize = 12;
57pub const MAX_FODDER_TOTAL: u64 = 200;
59
60pub const STARTER_TICKET_PRICE: u64 = 1_000_000_000;
61pub const RECRUIT_SOL_PRICE: u64 = 100_000_000;
62
63pub const DINE_COST_24H: u64 = 150_000_000;
65pub const DINE_COST_48H: u64 = 300_000_000;
66pub const DINE_COST_72H: u64 = 450_000_000;
67
68pub const DINE_COST_24H_ESCALATED: u64 = 195_000_000;
70pub const DINE_COST_48H_ESCALATED: u64 = 390_000_000;
71pub const DINE_COST_72H_ESCALATED: u64 = 585_000_000;
72
73pub const BARRACKS_COST_1_2_SHARDS: u64 = 50_000_000;
74pub const BARRACKS_COST_1_2_SOL: u64 = 10_000_000;
75pub const BARRACKS_COST_2_3_SHARDS: u64 = 300_000_000;
76pub const BARRACKS_COST_2_3_SOL: u64 = 100_000_000;
77pub const BARRACKS_COST_3_4: u64 = 8_000_000_000;
78
79pub const FORGE_COST_1_2: u64 = 100_000_000;
81pub const FORGE_COST_2_3: u64 = 1_000_000_000;
83pub const FORGE_COST_3_4: u64 = 2_000_000_000;
85pub const FORGE_COST_4_5: u64 = 5_000_000_000;
87pub const FORGE_COST_5_6: u64 = 12_000_000_000;
89pub const FORGE_COST_6_7: u64 = 21_000_000_000;
91
92pub const FORGE_COOLDOWN_1_2: u64 = 0;
94pub const FORGE_COOLDOWN_2_3: u64 = 0;
96pub const FORGE_COOLDOWN_3_4: u64 = 4_500;
98pub const FORGE_COOLDOWN_4_5: u64 = 13_500;
100pub const FORGE_COOLDOWN_5_6: u64 = 27_000;
102pub const FORGE_COOLDOWN_6_7: u64 = 45_000;
104
105pub const SHARDS_RAW_PER_UNIT: u64 = ONE_DOJO;
107
108pub const LEVEL_UP_COST_BASE: u64 = 200_000_000; pub const LEVEL_UP_COST_INCREMENT: u64 = 800_000_000; pub const MAX_SHOGUN_LEVEL: u64 = 100;
112
113pub const SP_N: u64 = 10; pub const SP_R: u64 = 20; pub const SP_SR: u64 = 80; pub const SP_SSR: u64 = 200; pub const SP_UR: u64 = 600; pub const DROP_N: u64 = 541;
120pub const DROP_R: u64 = 324;
121pub const DROP_SR: u64 = 108;
122pub const DROP_SSR: u64 = 22;
123pub const DROP_UR: u64 = 5;
124
125pub const RECRUITMENT_TICKET_REWARD_1: u64 = 1;
126pub const RECRUITMENT_TICKET_REWARD_2: u64 = 2;
127pub const RECRUITMENT_TICKET_REWARD_3: u64 = 3;
128pub const RECRUITMENT_TICKET_REWARD_4: u64 = 4;
129pub const RECRUITMENT_TICKET_REWARD_5: u64 = 5;
130pub const RECRUITMENT_TICKET_REWARD_6: u64 = 6;
131pub const RECRUITMENT_TICKET_REWARD_7: u64 = 7;
132pub const RECRUITMENT_TICKET_REWARD_8: u64 = 8;
133pub const RECRUITMENT_TICKET_REWARD_9: u64 = 9;
134pub const RECRUITMENT_TICKET_REWARD_10: u64 = 10;
135pub const RECRUITMENT_TICKET_REWARD_11: u64 = 11;
136pub const RECRUITMENT_TICKET_REWARD_12: u64 = 12;
137pub const RECRUITMENT_TICKET_REWARD_13: u64 = 13;
138pub const RECRUITMENT_TICKET_REWARD_15: u64 = 15;
139
140pub const ELEMENT_RARITY_REWARD_N: u64 = 1;
141pub const ELEMENT_RARITY_REWARD_R: u64 = 1;
142pub const ELEMENT_RARITY_REWARD_SR: u64 = 2;
143pub const ELEMENT_RARITY_REWARD_SSR: u64 = 5;
144pub const ELEMENT_RARITY_REWARD_UR: u64 = 20;
145
146pub const DAILY_TASK_START: u64 = 17;
147
148pub const CLAIM_TASK_PREFIX: &[u8] = b"dojos:claim_task:";
149pub const ELEMENT_RARITY_SET_SIZE: usize = 3;
150
151pub const TASK_FORGE_3: u64 = 33;
158pub const TASK_FORGE_4: u64 = 34;
159pub const TASK_FORGE_5: u64 = 35;
160pub const FORGE_3_REWARD: u64 = 2;
161pub const FORGE_4_REWARD: u64 = 5;
162pub const FORGE_5_REWARD: u64 = 10;
163pub const FORGE_6_REWARD: u64 = 15;
164pub const FORGE_7_REWARD: u64 = 20;
165
166pub const MAX_SUPPLY: u64 = ONE_DOJO * 1_000_000_000;
167
168pub const SCENES: &[u8] = b"scenes";
170pub const SCENE_DEFAULT_ID: u64 = 0;
171pub const SCENE_SECTIONS_PER_SCENE: usize = 12;
172pub const SCENE_COUNT_MAX: usize = 9;
173pub const SCENE_COUNT: u64 = 8;
174pub const SCENE_ROLL_COUNT: u64 = 5;
176pub const SCENE_ROLL_SHARD_COUNT: u64 = 10;
177pub const SCENE_BUY_START: u64 = 6;
179
180pub const SCENE_BONUS_FLAT_50K: u64 = 50_000;
184pub const SCENE_BONUS_FLAT_100K: u64 = 100_000;
186pub const SCENE_BONUS_PCT_2: u64 = 200;
188pub const SCENE_BONUS_PCT_3: u64 = 300;
190pub const SCENE_BONUS_PCT_5: u64 = 500;