public override void UpdateState(MeleeWeapon weapon, ExtractedParameters state) { if (state.HasValue(nameof(WeaponName))) { weapon.WeaponName = state.ToString(nameof(WeaponName)); } if (state.HasValue(nameof(Owner))) { weapon.Owner = state.ToString(nameof(Owner)); } if (state.HasValue(nameof(Weight))) { weapon.Weight = state.ToValue <double>(nameof(Weight)); } if (state.HasValue(nameof(Level))) { weapon.Level = state.ToValue <int>(nameof(Level)); } if (state.HasValue(nameof(OriginalCost))) { weapon.OriginalCost = state.ToValue <double>(nameof(OriginalCost)); } if (state.HasValue(nameof(Dice))) { weapon.Dice = state.ToString(nameof(Dice)); (weapon.NumRolls, weapon.MaxPoints) = weapon.Dice.FromDice(); } else { if (state.HasValue(nameof(NumRolls))) { weapon.NumRolls = state.ToValue <int>(nameof(NumRolls)); } if (state.HasValue(nameof(MaxPoints))) { weapon.MaxPoints = state.ToValue <int>(nameof(MaxPoints)); } } if (state.HasValue(nameof(MagicBonuses))) { weapon.MagicBonuses = state.ToString(nameof(MagicBonuses)); (weapon.Hit, weapon.Damage) = MagicBonuses.FromBrackets(); } else { if (state.HasValue(nameof(Hit))) { weapon.Hit = state.ToValue <int>(nameof(Hit)); } if (state.HasValue(nameof(Damage))) { weapon.Damage = state.ToValue <int>(nameof(Damage)); } } base.UpdateState(weapon, state); }
private void UseImpl(ExtractedParameters parameters) { var dispatchee = parameters.ToString("Dispatchee"); if (dispatchee != UniqueId) { return; } var direction = parameters.ToValue <Compass8Points>("Direction"); var owner = Registry.GetDispatchee(Owner); var strikeCoordindates = owner.Coordinates.Move(direction); var hit = RollDice() + Hit; var damage = RollDice() + Damage; _dispatcher.EnqueueStrike(strikeCoordindates, hit, damage); }