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 TASK_VERIFIER: Pubkey = pubkey!("tASK7746ambmkkTvqtyCehd3F56X4VJpr9GCPh4bUmu");
9
10pub const CONFIG: &[u8] = b"config";
11pub const GAME: &[u8] = b"game";
12pub const DOJO: &[u8] = b"dojo";
13pub const SHOGUN: &[u8] = b"shogun";
14pub const BARRACKS: &[u8] = b"barracks";
15pub const FORGE: &[u8] = b"forge";
16pub const TASKS: &[u8] = b"tasks";
17pub const TREASURY: &[u8] = b"treasury";
18pub const REFERRAL: &[u8] = b"referral";
19
20pub const ED25519_SIGNATURE_OFFSETS_START: usize = 2;
21pub const ED25519_SIGNATURE_OFFSETS_SIZE: usize = 14;
22pub const ED25519_DATA_START: usize = ED25519_SIGNATURE_OFFSETS_START + ED25519_SIGNATURE_OFFSETS_SIZE;
23pub const ED25519_PUBKEY_SIZE: usize = 32;
24pub const ED25519_SIGNATURE_SIZE: usize = 64;
25
26pub const SECONDS_PER_SLOT: f64 = 0.4;
28pub const ONE_DAY_SLOTS: u64 = 216_000;
30pub const CHAKRA_MAX: u64 = ONE_DAY_SLOTS;
31pub const ORE_DIVISOR: u64 = 200;
33pub const HALVING_PERIOD_SLOTS_DEFAULT: u64 = 12_500_000;
35pub const DOJO_DECIMALS: u8 = 6;
36pub const ONE_DOJO: u64 = 10u64.pow(DOJO_DECIMALS as u32);
38
39pub const SLOTS_PER_LEVEL: u64 = 3;
40pub const MAX_BARRACKS_SLOTS: usize = 12;
41
42pub const STARTER_TICKET_PRICE: u64 = 1_000_000_000;
43pub const RECRUIT_SOL_PRICE: u64 = 100_000_000;
44
45pub const TICKET_BUNDLE_SOL: u64 = 5_000_000_000;
46pub const TICKET_BUNDLE_TICKETS: u64 = 150;
47
48pub const SHARD_DEAL_TICKETS: u64 = 5;
49pub const SHARD_DEAL_COST: u64 = 300_000_000;
50
51pub const FLASH_SALE_TICKETS: u64 = 50;
52pub const FLASH_SALE_COST: u64 = 5_000_000_000;
53pub const FLASH_SALE_DAILY_LIMIT: u64 = 5;
54
55pub const DINE_COST_24H: u64 = 15_000_000;
56pub const DINE_COST_48H: u64 = 30_000_000;
57pub const DINE_COST_72H: u64 = 45_000_000;
58
59pub const BARRACKS_COST_1_2_SHARDS: u64 = 50_000_000;
60pub const BARRACKS_COST_1_2_SOL: u64 = 10_000_000;
61pub const BARRACKS_COST_2_3_SHARDS: u64 = 300_000_000;
62pub const BARRACKS_COST_2_3_SOL: u64 = 100_000_000;
63pub const BARRACKS_COST_3_4: u64 = 8_000_000_000;
64
65pub const FORGE_COST_1_2: u64 = 100_000_000;
67pub const FORGE_COST_2_3: u64 = 1_000_000_000;
69pub const FORGE_COST_3_4: u64 = 2_000_000_000;
71pub const FORGE_COST_4_5: u64 = 5_000_000_000;
73pub const FORGE_COST_5_6: u64 = 12_000_000_000;
75pub const FORGE_COST_6_7: u64 = 21_000_000_000;
77
78pub const FORGE_COOLDOWN_1_2: u64 = 0;
80pub const FORGE_COOLDOWN_2_3: u64 = 0;
82pub const FORGE_COOLDOWN_3_4: u64 = 4_500;
84pub const FORGE_COOLDOWN_4_5: u64 = 13_500;
86pub const FORGE_COOLDOWN_5_6: u64 = 27_000;
88pub const FORGE_COOLDOWN_6_7: u64 = 45_000;
90
91pub const SHARDS_RAW_PER_UNIT: u64 = ONE_DOJO;
93
94pub 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;
98
99pub const SP_N: u64 = 10;
100pub const SP_R: u64 = 25;
101pub const SP_SR: u64 = 50;
102pub const SP_SSR: u64 = 100;
103pub const SP_UR: u64 = 160;
104
105pub const DROP_N: u64 = 541;
106pub const DROP_R: u64 = 324;
107pub const DROP_SR: u64 = 108;
108pub const DROP_SSR: u64 = 22;
109pub const DROP_UR: u64 = 5;
110
111pub const RECRUITMENT_TICKET_REWARD_1: u64 = 1;
112pub const RECRUITMENT_TICKET_REWARD_2: u64 = 2;
113pub const RECRUITMENT_TICKET_REWARD_3: u64 = 3;
114pub const RECRUITMENT_TICKET_REWARD_4: u64 = 4;
115pub const RECRUITMENT_TICKET_REWARD_5: u64 = 5;
116pub const RECRUITMENT_TICKET_REWARD_6: u64 = 6;
117pub const RECRUITMENT_TICKET_REWARD_7: u64 = 7;
118pub const RECRUITMENT_TICKET_REWARD_8: u64 = 8;
119pub const RECRUITMENT_TICKET_REWARD_9: u64 = 9;
120pub const RECRUITMENT_TICKET_REWARD_10: u64 = 10;
121pub const RECRUITMENT_TICKET_REWARD_11: u64 = 11;
122pub const RECRUITMENT_TICKET_REWARD_12: u64 = 12;
123pub const RECRUITMENT_TICKET_REWARD_13: u64 = 13;
124pub const RECRUITMENT_TICKET_REWARD_15: u64 = 15;
125
126pub const ELEMENT_RARITY_REWARD_N: u64 = 1;
127pub const ELEMENT_RARITY_REWARD_R: u64 = 1;
128pub const ELEMENT_RARITY_REWARD_SR: u64 = 2;
129pub const ELEMENT_RARITY_REWARD_SSR: u64 = 5;
130pub const ELEMENT_RARITY_REWARD_UR: u64 = 20;
131
132pub const OFF_CHAIN_TASK_START: u64 = 9;
133pub const OFF_CHAIN_TASK_END: u64 = 16;
134pub const OFF_CHAIN_TASK_REWARD: u64 = 1;
135
136pub const DAILY_TASK_START: u64 = 17;
137pub const DAILY_TASK_END: u64 = 24;
138
139pub const CLAIM_TASK_PREFIX: &[u8] = b"dojos:claim_task:";
140pub const ELEMENT_RARITY_SET_SIZE: usize = 3;
141
142pub const TASK_FORGE_3: u64 = 33;
149pub const TASK_FORGE_4: u64 = 34;
150pub const TASK_FORGE_5: u64 = 35;
151pub const FORGE_3_REWARD: u64 = 2;
152pub const FORGE_4_REWARD: u64 = 5;
153pub const FORGE_5_REWARD: u64 = 10;
154pub const FORGE_6_REWARD: u64 = 15;
155pub const FORGE_7_REWARD: u64 = 20;
156
157pub const MAX_SUPPLY: u64 = ONE_DOJO * 1_000_000_000;
158
159pub const SCENES: &[u8] = b"scenes";
161pub const SCENE_DEFAULT_ID: u64 = 0;
162pub const SCENE_SECTIONS_PER_SCENE: usize = 12;
163pub const SCENE_COUNT_MAX: usize = 9;
164pub const SCENE_COUNT: u64 = 8;
165pub const SCENE_ROLL_AMETHYST_COST: u64 = 100;
166pub const SCENE_ROLL_SHARD_COUNT: u64 = 10;
167pub const SCENE_ROLL_SHARD_COST: u64 = 1_000_000_000;
168pub const SCENE_SALVAGE_REFUND: u64 = 10;
169pub const SCENE_CHEST_SOL_COST: u64 = 1_000_000_000;
170pub const SCENE_CHEST_AMETHYST_AMOUNT: u64 = 5000;
171pub const SCENE_BUY_START: u64 = 6;
173pub const SCENE_BUY_AMETHYST_COST: u64 = 5000;