diff --git a/src/gear/GearActions.cairo b/src/gear/GearActions.cairo index 6d4b2b8..15ef808 100644 --- a/src/gear/GearActions.cairo +++ b/src/gear/GearActions.cairo @@ -1,10 +1,9 @@ use starknet::{ContractAddress, get_caller_address}; use core::num::traits::Zero; use crate::models::gear::{Gear}; -use crate::models::player::{Player, Body, PlayerTrait, Errors}; +use crate::models::player::{Player, Body, Errors}; use crate::models::core::Contract; use crate::erc1155::erc1155::{IERC1155Dispatcher, IERC1155DispatcherTrait}; -use crate::helpers::gear::{get_high}; use crate::helpers::body::BodyTrait; use dojo::event::EventStorage; use dojo::model::{ModelStorage, Model}; diff --git a/src/helpers/body.cairo b/src/helpers/body.cairo index 4d00d98..a5337f5 100644 --- a/src/helpers/body.cairo +++ b/src/helpers/body.cairo @@ -1,7 +1,7 @@ use crate::models::player::Body; use crate::models::gear::GearType; use crate::helpers::gear::{parse_id, count_gear_in_array, contains_gear_type, get_high}; -use crate::models::player::{DEFAULT_MAX_EQUIPPABLE_SLOT, Errors}; +use crate::models::player::Errors; use core::num::traits::Zero; diff --git a/src/helpers/gear.cairo b/src/helpers/gear.cairo index c2fd627..1ef2a1b 100644 --- a/src/helpers/gear.cairo +++ b/src/helpers/gear.cairo @@ -1,5 +1,5 @@ use crate::models::gear::{GearType, GearDetails, GearDetailsImpl}; -use origami_random::dice::{Dice, DiceTrait}; +use origami_random::dice::DiceTrait; // Helper function to calculate upgrade multipliers based on level pub fn calculate_level_multiplier(level: u64) -> u64 { diff --git a/src/market/marketplace.cairo b/src/market/marketplace.cairo index d4469b3..01f5961 100644 --- a/src/market/marketplace.cairo +++ b/src/market/marketplace.cairo @@ -4,7 +4,6 @@ pub mod MarketplaceActions { use starknet::{ContractAddress, get_caller_address, get_block_timestamp, get_contract_address}; use dojo::model::ModelStorage; use dojo::event::EventStorage; - use core::num::traits::Zero; use crate::models::marketplace::{ diff --git a/src/models/gear.cairo b/src/models/gear.cairo index 0dfde79..fd8ed8a 100644 --- a/src/models/gear.cairo +++ b/src/models/gear.cairo @@ -4,10 +4,10 @@ use crate::helpers::base::ContractAddressDefault; use core::num::traits::Zero; -use openzeppelin::token::erc1155::interface::{IERC1155Dispatcher, IERC1155DispatcherTrait}; -use crate::erc1155::erc1155::{IERC1155MintableDispatcher, IERC1155MintableDispatcherTrait}; +// use openzeppelin::token::erc1155::interface::{IERC1155Dispatcher, IERC1155DispatcherTrait}; +// use crate::erc1155::erc1155::{IERC1155MintableDispatcher, IERC1155MintableDispatcherTrait}; use starknet::ContractAddress; -use dojo::world::WorldStorage; +// use dojo::world::WorldStorage; use core::traits::{Into, TryInto}; #[dojo::model] @@ -517,7 +517,7 @@ impl OptionArrayTupleImpl of Clone>> { // Tests for GearDetails struct #[cfg(test)] mod tests { - use super::{GearDetails, GearDetailsImpl, GearType}; + use super::{GearDetailsImpl, GearType}; #[test] fn test_valid_gear_details() { diff --git a/src/systems/armour.cairo b/src/systems/armour.cairo index 4259019..863c591 100644 --- a/src/systems/armour.cairo +++ b/src/systems/armour.cairo @@ -23,8 +23,8 @@ pub trait IArmour { #[dojo::contract] pub mod ArmourActions { - use starknet::{ContractAddress, get_caller_address}; - use crate::models::armour::{Armour, ArmourTrait}; + use starknet::ContractAddress; + use crate::models::armour::Armour; use super::IArmour; fn dojo_init(ref self: ContractState, admin: ContractAddress) {} diff --git a/src/systems/core.cairo b/src/systems/core.cairo index 79635a9..775f501 100644 --- a/src/systems/core.cairo +++ b/src/systems/core.cairo @@ -37,7 +37,6 @@ pub mod CoreActions { use dojo::world::WorldStorage; use coa::helpers::gear::{parse_id, random_geartype, get_max_upgrade_level, get_min_xp_needed}; use coa::models::player::{Player, PlayerTrait}; - use core::num::traits::Zero; use core::traits::Into; const GEAR: felt252 = 'GEAR'; @@ -79,6 +78,7 @@ pub mod CoreActions { let caller = get_caller_address(); let mut world = self.world_default(); let contract: Contract = world.read_model(COA_CONTRACTS); + assert(caller == contract.admin, 'Only admin can spawn items'); let erc1155_dispatcher = IERC1155MintableDispatcher { @@ -86,15 +86,23 @@ pub mod CoreActions { }; let mut items = array![]; + let gear_len = gear_details.len(); + let mut i = 0; + loop { + if i >= gear_len { + break; + } - while i < gear_details.len() { let details = *gear_details.at(i); + assert(details.validate(), 'Invalid gear details'); - let item_id: u256 = self.generate_incremental_ids(details.gear_type.into()); + // Generate ID once and reuse + let item_id = self.generate_incremental_ids(details.gear_type.into()); let item_type: felt252 = details.gear_type.into(); + // Create gear struct with computed values let mut gear = Gear { id: item_id, item_type, @@ -106,21 +114,19 @@ pub mod CoreActions { owner: contract_address_const::<0>(), max_upgrade_level: details.max_upgrade_level, min_xp_needed: details.min_xp_needed, - spawned: false, + spawned: true, }; - assert(!gear.spawned, 'Gear already spawned'); - gear.spawned = true; world.write_model(@gear); + items.append(item_id); - items.append(gear.id); erc1155_dispatcher - .mint(contract.warehouse, gear.id, details.total_count.into(), array![].span()); + .mint(contract.warehouse, item_id, details.total_count.into(), array![].span()); + i += 1; }; - let event = GearSpawned { admin: caller, items }; - world.emit_event(@event); + world.emit_event(@GearSpawned { admin: caller, items }); } // move to market only items that have been spawned. @@ -144,11 +150,13 @@ pub mod CoreActions { let gear_type = random_geartype(); let item_type: felt252 = gear_type.into(); - let item_id: u256 = self.generate_incremental_ids(gear_type.into()); - let max_upgrade_level: u64 = get_max_upgrade_level(gear_type); - let min_xp_needed: u256 = get_min_xp_needed(gear_type); + let item_id = self.generate_incremental_ids(item_type.into()); + + let (max_upgrade_level, min_xp_needed) = ( + get_max_upgrade_level(gear_type), get_min_xp_needed(gear_type), + ); - let gear = Gear { + Gear { id: item_id, item_type, asset_id: item_id, @@ -160,87 +168,94 @@ pub mod CoreActions { max_upgrade_level, min_xp_needed, spawned: false, - }; - - gear + } } //@ryzen-xp fn pick_items(ref self: ContractState, item_ids: Array) -> Array { let mut world = self.world_default(); let caller = get_caller_address(); + + // Cache contract + dispatcher let contract: Contract = world.read_model(COA_CONTRACTS); - let mut player: Player = world.read_model(caller); + let erc1155 = IERC1155Dispatcher { contract_address: contract.erc1155 }; + let mut player: Player = world.read_model(caller); player.init('default'); - let mut successfully_picked: Array = array![]; - + let mut successfully_picked = ArrayTrait::::new(); + let mut gears_to_update = ArrayTrait::::new(); + let mut events_to_emit = ArrayTrait::::new(); let mut has_vehicle = player.has_vehicle_equipped(); + let item_count = item_ids.len(); let mut i = 0; - while i < item_ids.len() { - let item_id = *item_ids.at(i); - let mut gear: Gear = world.read_model(item_id); - assert(gear.is_available_for_pickup(), 'Item not available'); - - if player.xp < gear.min_xp_needed { - i += 1; - continue; + loop { + if i >= item_count { + break; } - let mut equipped = false; - let mut mint_item = false; + let item_id = *item_ids.at(i); + let mut gear: Gear = world.read_model(item_id); - if has_vehicle { - // if player has vehicle, mint all items directly to inventory !!!!!!!!!!!! - mint_item = true; - } else { - if player.is_equippable(item_id) { + // Early filter-out + if gear.is_available_for_pickup() && player.clone().xp >= gear.min_xp_needed { + let mut equipped = false; + let can_pick = if has_vehicle { + true + } else if player.is_equippable(item_id) { PlayerTrait::equip(ref player, item_id); equipped = true; - mint_item = true; - } else if player.has_free_inventory_slot() { - mint_item = true; + true + } else { + player.has_free_inventory_slot() + }; + + if can_pick { + // ERC1155 transfer + erc1155 + .safe_transfer_from( + contract.warehouse, + caller, + item_id, + 1, + ArrayTrait::::new().span(), + ); + + // Defer gear update + event + gear.transfer_to(caller); + gears_to_update.append(gear); + successfully_picked.append(item_id); + + events_to_emit + .append( + ItemPicked { + player_id: caller, item_id, equipped, via_vehicle: has_vehicle, + }, + ); + + // If just equipped a vehicle, persist for next items + if equipped && parse_id(item_id) == GearType::Vehicle { + has_vehicle = true; + } } } - if mint_item { - // Transfer the pre-minted item from warehouse to the player - - let erc1155 = IERC1155Dispatcher { contract_address: contract.erc1155 }; - erc1155 - .safe_transfer_from( - contract.warehouse, caller, item_id, 1, array![].span(), - ); - - gear.transfer_to(caller); - world.write_model(@gear); - - // Add to successfully picked array - successfully_picked.append(item_id); - - world - .emit_event( - @ItemPicked { - player_id: caller, - item_id: item_id, - equipped: equipped, - via_vehicle: has_vehicle, - }, - ); - } - i += 1; + }; - // if we just equipped a vehicle, enable hands-free pickup - if equipped && parse_id(item_id) == GearType::Vehicle { - has_vehicle = true; + let updates_len = gears_to_update.len(); + let mut j = 0; + loop { + if j >= updates_len { + break; } + world.write_model(gears_to_update.at(j)); + world.emit_event(events_to_emit.at(j)); + j += 1; }; - // Update Player state world.write_model(@player); successfully_picked @@ -257,15 +272,12 @@ pub mod CoreActions { // Generates an incremental u256 ID based on gear_id.high. fn generate_incremental_ids(ref self: ContractState, item_id: u256) -> u256 { let mut world = self.world_default(); - let mut gear_counter: GearCounter = world.read_model(item_id.high); - let data = GearCounter { id: item_id.high, counter: gear_counter.counter + 1 }; - - world.write_model(@data); + gear_counter.counter += 1; + world.write_model(@gear_counter); - let id = u256 { high: data.id, low: data.counter }; - id + u256 { high: item_id.high, low: gear_counter.counter } } } } diff --git a/src/systems/gear.cairo b/src/systems/gear.cairo index acd1129..126034f 100644 --- a/src/systems/gear.cairo +++ b/src/systems/gear.cairo @@ -261,7 +261,7 @@ pub mod GearActions { self._assert_admin(); // Create a new gear instance based on the asset type - let new_gear_id = generate_id(GEAR, ref world); + let _new_gear_id = generate_id(GEAR, ref world); // Implementation would create gear based on asset type } @@ -1072,8 +1072,6 @@ pub mod GearActions { } fn _get_ownership_status(self: @ContractState, gear: @Gear) -> OwnershipStatus { - let caller = get_caller_address(); - OwnershipStatus { is_owned: !gear.owner.is_zero(), owner: *gear.owner, @@ -1087,7 +1085,7 @@ pub mod GearActions { fn _calculate_upgrade_preview( self: @ContractState, gear: @Gear, target_level: u64, ) -> UpgradeInfo { - let gear_type = parse_id(*gear.asset_id); + let _gear_type = parse_id(*gear.asset_id); let total_costs = self._calculate_total_upgrade_costs(gear, target_level); // Create gear at target level for stats calculation @@ -1778,7 +1776,7 @@ pub mod GearActions { fn _initialize_gear_assets(ref self: ContractState, ref world: WorldStorage) { // Weapons - using ERC1155 token IDs as primary keys - let weapon_1_id = u256 { low: 0x0001, high: 0x1 }; + let _weapon_1_id = u256 { low: 0x0001, high: 0x1 }; // let weapon_1_gear = Gear { // id: generate_id(GEAR, ref world), // WEAPON_1 from ERC1155 // item_type: 'WEAPON', diff --git a/src/systems/player.cairo b/src/systems/player.cairo index 6a38702..3119458 100644 --- a/src/systems/player.cairo +++ b/src/systems/player.cairo @@ -36,7 +36,7 @@ pub mod PlayerActions { Player, PlayerTrait, DamageDealt, PlayerDamaged, FactionStats, PlayerInitialized, CombatSessionStarted, BatchDamageProcessed, CombatSessionEnded, DamageAccumulator, }; - use crate::models::gear::{Gear, GearTrait, GearLevelStats, ItemRarity, GearType}; + use crate::models::gear::{Gear, GearLevelStats, ItemRarity, GearType}; use crate::models::armour::{Armour, ArmourTrait}; use crate::erc1155::erc1155::{IERC1155Dispatcher, IERC1155DispatcherTrait}; use super::IPlayer; @@ -846,7 +846,6 @@ pub mod PlayerActions { } fn calculate_gear_damage(self: @ContractState, gear: Gear) -> u256 { - let world = self.world_default(); let rarity = self.get_item_rarity(gear.asset_id); let base_damage = get_base_damage_for_type(parse_id(gear.asset_id)); diff --git a/src/systems/tournament.cairo b/src/systems/tournament.cairo index 45c9815..73d9668 100644 --- a/src/systems/tournament.cairo +++ b/src/systems/tournament.cairo @@ -46,7 +46,6 @@ pub mod TournamentActions { use starknet::{ContractAddress, get_caller_address, get_block_timestamp, get_contract_address}; use dojo::model::ModelStorage; // use dojo::world::WorldStorage; - use dojo::world::IWorld; use dojo::event::EventStorage; use core::num::traits::Zero; use core::num::traits::Pow; @@ -326,7 +325,7 @@ pub mod TournamentActions { assert(match_.match_id != 0, Errors::MATCH_NOT_FOUND); assert(!match_.is_completed, Errors::MATCH_COMPLETED); - let loser_id = if winner_id == match_.player1 { + let _loser_id = if winner_id == match_.player1 { match_.player2.unwrap() } else { match_.player1 diff --git a/src/test/pick_item_test.cairo b/src/test/pick_item_test.cairo index a85d470..504c25b 100644 --- a/src/test/pick_item_test.cairo +++ b/src/test/pick_item_test.cairo @@ -1,7 +1,3 @@ -use core::num::traits::Zero; -use coa::models::gear::{Gear, GearTrait}; -use coa::models::player::{Player, PlayerTrait}; - // Test constants const PLAYER_ADDRESS: felt252 = 0x123456789; const ITEM_ID_1: u256 = 0x1001; @@ -13,6 +9,9 @@ const VEHICLE_ID: u256 = 0x30001; mod pick_items_tests { use super::*; use starknet::contract_address_const; + use core::num::traits::Zero; + use coa::models::gear::{Gear, GearTrait}; + use coa::models::player::{Player, PlayerTrait}; fn sample_player() -> Player { Player { diff --git a/src/test/player_session_integration_test.cairo b/src/test/player_session_integration_test.cairo index 34a027f..c70bf9d 100644 --- a/src/test/player_session_integration_test.cairo +++ b/src/test/player_session_integration_test.cairo @@ -1,10 +1,3 @@ -use starknet::ContractAddress; -use coa::models::session::{SessionKey, SessionKeyCreated, SessionKeyRevoked, SessionKeyUsed}; - -// Import the PlayerActions contract and its interface -use coa::systems::player::{IPlayerDispatcher, IPlayerDispatcherTrait, PlayerActions}; -use coa::systems::session::SessionActions; - // Test constants const PLAYER_ADDRESS: felt252 = 0x123456789; const SESSION_DURATION: u64 = 21600; // 6 hours @@ -23,6 +16,11 @@ const REBEL_TECHNOMANCERS: felt252 = 'REBEL_TECHNOMANCERS'; mod tests { use super::*; use starknet::contract_address_const; + use starknet::ContractAddress; + use coa::models::session::{SessionKey, SessionKeyCreated, SessionKeyRevoked, SessionKeyUsed}; + + // Import the PlayerActions contract and its interface + use coa::systems::player::IPlayerDispatcher; fn sample_player() -> ContractAddress { contract_address_const::<0x123>() @@ -389,11 +387,11 @@ mod tests { #[test] fn test_validate_session_for_action_logic() { let session_id = 1; - let player = sample_player(); - let session_created_at = 1000; - let session_duration = 3600; // 1 hour - let used_transactions = 5; - let max_transactions = 100; + // let player = sample_player(); + // let session_created_at = 1000; + // let session_duration = 3600; // 1 hour + // let used_transactions = 5; + // let max_transactions = 100; // Test valid session logic let is_valid = session_id != 0; @@ -407,11 +405,11 @@ mod tests { #[test] fn test_get_session_status_logic() { let session_id = 1; - let player = sample_player(); - let session_created_at = 1000; - let session_duration = 3600; // 1 hour - let used_transactions = 5; - let max_transactions = 100; + // let player = sample_player(); + // let session_created_at = 1000; + // let session_duration = 3600; // 1 hour + // let used_transactions = 5; + // let max_transactions = 100; // Test valid session status logic let is_valid = session_id != 0; @@ -473,7 +471,7 @@ mod tests { #[test] fn test_player_new_with_valid_session() { // Create dispatcher for PlayerActions contract - let player_dispatcher = create_player_dispatcher(); + // let player_dispatcher = create_player_dispatcher(); // Create a valid session let session = create_sample_session(); @@ -498,7 +496,7 @@ mod tests { #[test] fn test_player_new_with_invalid_session() { - let player_dispatcher = create_player_dispatcher(); + // let player_dispatcher = create_player_dispatcher(); // Test with invalid session ID let invalid_session_id = INVALID_SESSION_ID; @@ -510,7 +508,7 @@ mod tests { #[test] fn test_player_deal_damage_with_valid_session() { - let player_dispatcher = create_player_dispatcher(); + // let player_dispatcher = create_player_dispatcher(); let session = create_sample_session(); // Validate session @@ -526,7 +524,7 @@ mod tests { // Mock data for damage test let target: Array = array![1_u256]; let target_types: Array = array!['LIVING']; - let with_items: Array = array![]; + // let with_items: Array = array![]; // Validate test data structure assert(target.len() == 1, 'Target array len'); @@ -539,7 +537,7 @@ mod tests { #[test] fn test_player_get_player_with_valid_session() { - let player_dispatcher = create_player_dispatcher(); + // let player_dispatcher = create_player_dispatcher(); let session = create_sample_session(); // Validate session @@ -562,7 +560,7 @@ mod tests { #[test] fn test_player_register_guild_with_valid_session() { - let player_dispatcher = create_player_dispatcher(); + // let player_dispatcher = create_player_dispatcher(); let session = create_sample_session(); // Validate session @@ -582,7 +580,7 @@ mod tests { #[test] fn test_player_transfer_objects_with_valid_session() { - let player_dispatcher = create_player_dispatcher(); + // let player_dispatcher = create_player_dispatcher(); let session = create_sample_session(); // Validate session @@ -608,7 +606,7 @@ mod tests { #[test] fn test_player_refresh_with_valid_session() { - let player_dispatcher = create_player_dispatcher(); + // let player_dispatcher = create_player_dispatcher(); let session = create_sample_session(); // Validate session @@ -791,7 +789,7 @@ mod tests { }; // Simulate auto-renewal - let current_time = 1400; + // let current_time = 1400; let new_used_transactions = 0; // Reset to 0 let new_max_transactions = 100; // Reset to 100 diff --git a/src/test/session_helper_test.cairo b/src/test/session_helper_test.cairo index f506414..3903b95 100644 --- a/src/test/session_helper_test.cairo +++ b/src/test/session_helper_test.cairo @@ -1,17 +1,14 @@ -use starknet::ContractAddress; -use coa::models::session::SessionKey; -use coa::helpers::session_validation::{ - calculate_session_time_remaining, calculate_session_time_remaining_with_time, - is_session_expired, is_session_expired_with_time, needs_auto_renewal, has_transactions_left, - validate_session_parameters, validate_session_parameters_with_time, get_session_status, - get_session_status_with_time, MIN_SESSION_DURATION, MAX_SESSION_DURATION, - AUTO_RENEWAL_THRESHOLD, -}; - #[cfg(test)] mod tests { use super::*; use starknet::contract_address_const; + use starknet::ContractAddress; + use coa::models::session::SessionKey; + use coa::helpers::session_validation::{ + calculate_session_time_remaining_with_time, is_session_expired_with_time, + has_transactions_left, validate_session_parameters_with_time, get_session_status_with_time, + MIN_SESSION_DURATION, MAX_SESSION_DURATION, AUTO_RENEWAL_THRESHOLD, + }; fn sample_player() -> ContractAddress { contract_address_const::<0x123>() diff --git a/src/test/session_system_test.cairo b/src/test/session_system_test.cairo index f96e220..4559ff4 100644 --- a/src/test/session_system_test.cairo +++ b/src/test/session_system_test.cairo @@ -1,6 +1,3 @@ -use starknet::ContractAddress; -use coa::models::session::{SessionKey, SessionKeyCreated, SessionKeyRevoked, SessionKeyUsed}; - // Test constants const PLAYER_ADDRESS: felt252 = 0x123456789; const SESSION_DURATION: u64 = 21600; // 6 hours @@ -12,6 +9,9 @@ const MAX_SESSION_DURATION: u64 = 86400; // 24 hours mod tests { use super::*; use starknet::contract_address_const; + use starknet::ContractAddress; + + use coa::models::session::{SessionKey, SessionKeyCreated, SessionKeyRevoked, SessionKeyUsed}; fn sample_player() -> ContractAddress { contract_address_const::<0x123>() @@ -347,11 +347,11 @@ mod tests { #[test] fn test_validate_session_for_action_logic() { let session_id = 1; - let player = sample_player(); - let session_created_at = 1000; - let session_duration = 3600; // 1 hour - let used_transactions = 5; - let max_transactions = 100; + // let player = sample_player(); + // let session_created_at = 1000; + // let session_duration = 3600; // 1 hour + // let used_transactions = 5; + // let max_transactions = 100; // Test valid session logic let is_valid = session_id != 0; @@ -365,11 +365,11 @@ mod tests { #[test] fn test_get_session_status_logic() { let session_id = 1; - let player = sample_player(); - let session_created_at = 1000; - let session_duration = 3600; // 1 hour - let used_transactions = 5; - let max_transactions = 100; + // let player = sample_player(); + // let session_created_at = 1000; + // let session_duration = 3600; // 1 hour + // let used_transactions = 5; + // let max_transactions = 100; // Test valid session status logic let is_valid = session_id != 0; diff --git a/src/test/test_unequip.cairo b/src/test/test_unequip.cairo index 870976c..d930e31 100644 --- a/src/test/test_unequip.cairo +++ b/src/test/test_unequip.cairo @@ -2,7 +2,7 @@ mod tests { // ----- IMPORTS ----- // - use crate::models::player::{Player, Body}; + use crate::models::player::Body; use crate::helpers::body::BodyTrait; use crate::helpers::gear::{parse_id, get_high}; use crate::models::gear::GearType; diff --git a/src/test/upgrade_gear_test.cairo b/src/test/upgrade_gear_test.cairo index 841cf45..c3fde8e 100644 --- a/src/test/upgrade_gear_test.cairo +++ b/src/test/upgrade_gear_test.cairo @@ -1,7 +1,3 @@ -use coa::models::gear::{Gear, GearType, UpgradeCost, UpgradeSuccessRate, UpgradeMaterial}; -use coa::models::player::{Player}; -use starknet::ContractAddress; - // Test constants const PLAYER_ADDRESS: felt252 = 0x123456789; const UPGRADABLE_ITEM_ID: u256 = 0x2001; @@ -13,6 +9,9 @@ const WIRING_ID: u256 = 2; mod upgrade_gear_tests { use super::*; use starknet::contract_address_const; + use coa::models::gear::{Gear, GearType, UpgradeCost, UpgradeSuccessRate, UpgradeMaterial}; + use coa::models::player::{Player}; + use starknet::ContractAddress; // Helper function to create a sample player fn sample_player() -> Player { @@ -154,7 +153,7 @@ mod upgrade_gear_tests { fn test_probability_logic_comparison() { // This test simulates the comparison part of the probability check // Test breakpoint mechanics - levels 1-5 should have higher rates than 6-10 - let rate_level_4 = sample_upgrade_success_rate(GearType::Firearm, 4, 85); + // let rate_level_4 = sample_upgrade_success_rate(GearType::Firearm, 4, 85); let rate_level_5 = sample_upgrade_success_rate(GearType::Firearm, 5, 80); let rate_level_6 = sample_upgrade_success_rate(GearType::Firearm, 6, 60); // Verify breakpoint: level 5 rate should be higher than level 6 diff --git a/src/types/base.cairo b/src/types/base.cairo index 22122e7..1e9a580 100644 --- a/src/types/base.cairo +++ b/src/types/base.cairo @@ -1,5 +1,3 @@ -use dojo::world::WorldStorage; - pub const CREDITS: u256 = 0x1; pub mod Ammo { diff --git a/src/types/player.cairo b/src/types/player.cairo index f6972da..8a06141 100644 --- a/src/types/player.cairo +++ b/src/types/player.cairo @@ -33,8 +33,8 @@ const BASE_XP: u256 = 1000; // can be changed. #[generate_trait] pub impl PlayerRankImpl of PlayerRankTrait { fn add_val(ref self: PlayerRank, val: u32) -> bool { - let rank_changed = false; - let mut xp: u256 = self.into(); + // let rank_changed = false; + // let mut xp: u256 = self.into(); false }