public override OrderDigest Digest2(AvatarState avatarState, CostumeStatSheet costumeStatSheet) { if (avatarState.inventory.TryGetTradableItem(TradableId, ExpiredBlockIndex, ItemCount, out Inventory.Item inventoryItem)) { ItemBase item = inventoryItem.item; int cp = CPHelper.GetCP((ITradableItem)item, costumeStatSheet); int level = item is Equipment equipment ? equipment.level : 0; return(new OrderDigest( SellerAgentAddress, StartedBlockIndex, ExpiredBlockIndex, OrderId, TradableId, Price, cp, level, item.Id, ItemCount )); } throw new ItemDoesNotExistException( $"Aborted because the tradable item({TradableId}) was failed to load from avatar's inventory."); }
public RankingSimulator( IRandom random, Player player, EnemyPlayerDigest enemyPlayerDigest, List <Guid> foods, RankingSimulatorSheets rankingSimulatorSheets, int stageId, ArenaInfo arenaInfo, ArenaInfo enemyInfo, CostumeStatSheet costumeStatSheet ) : base( random, player, foods, rankingSimulatorSheets ) { _enemyPlayer = new EnemyPlayer(enemyPlayerDigest, CharacterSheet, CharacterLevelSheet, EquipmentItemSetEffectSheet) { Simulator = this }; _enemyPlayer.Stats.EqualizeCurrentHPWithHP(); _stageId = stageId; _arenaInfo = arenaInfo; _enemyInfo = enemyInfo; WeeklyArenaRewardSheet = rankingSimulatorSheets.WeeklyArenaRewardSheet; if (!(costumeStatSheet is null)) { Player.SetCostumeStat(costumeStatSheet); _enemyPlayer.SetCostumeStat(costumeStatSheet); } }
/// <summary> /// return `Player` Combat Point. /// Calculate Level Stat, Equipment Stat, Equipment SKills, Costume Stat. /// </summary> /// <param name="player"></param> /// <param name="costumeStatSheet"></param> /// <returns></returns> public static int GetCP(Player player, CostumeStatSheet costumeStatSheet) { var levelStatsCP = GetStatsCP(player.Stats.LevelStats, player.Level); var equipmentsCP = player.Equipments.Sum(GetCP); var costumeCP = player.Costumes.Sum(c => GetCP(c, costumeStatSheet)); return(DecimalToInt(levelStatsCP + equipmentsCP + costumeCP)); }
public static int GetCP(Costume costume, CostumeStatSheet sheet) { var statsMap = new StatsMap(); foreach (var r in sheet.OrderedList.Where(r => r.CostumeId == costume.Id)) { statsMap.AddStatValue(r.StatType, r.Stat); } return(DecimalToInt(GetStatsCP(statsMap))); }
public static int GetCPV2( AvatarState avatarState, CharacterSheet characterSheet, CostumeStatSheet costumeStatSheet) { var current = GetCP(avatarState, characterSheet); var costumeCP = avatarState.inventory.Costumes .Where(c => c.equipped) .Sum(c => GetCP(c, costumeStatSheet)); return(DecimalToInt(current + costumeCP)); }
public static int GetCP(ITradableItem tradableItem, CostumeStatSheet sheet) { if (tradableItem is ItemUsable itemUsable) { return(GetCP(itemUsable)); } if (tradableItem is Costume costume) { return(GetCP(costume, sheet)); } return(0); }
public void SetCostumeStat(CostumeStatSheet costumeStatSheet) { var statModifiers = new List <StatModifier>(); foreach (var itemId in _costumes.Select(costume => costume.Id)) { statModifiers.AddRange( costumeStatSheet.OrderedList .Where(r => r.CostumeId == itemId) .Select(row => new StatModifier(row.StatType, StatModifier.OperationType.Add, (int)row.Stat)) ); } Stats.SetOption(statModifiers); Stats.EqualizeCurrentHPWithHP(); }
/// <summary> /// Do not use anymore since v100025. /// </summary> public StageSimulator( IRandom random, AvatarState avatarState, List <Guid> foods, int worldId, int stageId, StageSimulatorSheets stageSimulatorSheets, CostumeStatSheet costumeStatSheet ) : this( random, avatarState, foods, worldId, stageId, stageSimulatorSheets ) { Player.SetCostumeStat(costumeStatSheet); }
public RankingSimulator( IRandom random, AvatarState avatarState, AvatarState enemyAvatarState, List <Guid> foods, RankingSimulatorSheets rankingSimulatorSheets, int stageId, ArenaInfo arenaInfo, ArenaInfo enemyInfo, CostumeStatSheet costumeStatSheet ) : this( random, avatarState, enemyAvatarState, foods, rankingSimulatorSheets, stageId, arenaInfo, enemyInfo ) { Player.SetCostumeStat(costumeStatSheet); _enemyPlayer.SetCostumeStat(costumeStatSheet); }
public StageSimulator( IRandom random, AvatarState avatarState, List <Guid> foods, int worldId, int stageId, StageSimulatorSheets stageSimulatorSheets, CostumeStatSheet costumeStatSheet, int constructorVersion, int playCount = 1 ) : this( random, avatarState, foods, worldId, stageId, stageSimulatorSheets, constructorVersion, playCount ) { Player.SetCostumeStat(costumeStatSheet); }
public void SetV2(AvatarState avatarState, CharacterSheet characterSheet, CostumeStatSheet costumeStatSheet) { UpdateV2(avatarState, characterSheet, costumeStatSheet); }
private void UpdateV2(AvatarState avatarState, CharacterSheet characterSheet, CostumeStatSheet costumeStatSheet, bool active = false) { Add(avatarState.address, new ArenaInfo(avatarState, characterSheet, costumeStatSheet, active)); }
public ArenaInfo(AvatarState avatarState, CharacterSheet characterSheet, CostumeStatSheet costumeStatSheet, bool active) : this(avatarState, characterSheet, active) { CombatPoint = CPHelper.GetCPV2(avatarState, characterSheet, costumeStatSheet); }
public void UpdateV2(AvatarState state, CharacterSheet characterSheet, CostumeStatSheet costumeStatSheet) { ArmorId = state.GetArmorId(); Level = state.level; CombatPoint = CPHelper.GetCPV2(state, characterSheet, costumeStatSheet); }
public abstract OrderDigest Digest2(AvatarState avatarState, CostumeStatSheet costumeStatSheet);