public override bool Prepare(Monster m) { parent = m; InputOtherAction dialog = new InputOtherAction(); dialog.ActivateKeywords(); if (dialog.ShowDialog() == DialogResult.OK) { keywords = dialog.Keywords; abilityType = dialog.AbilityType; name = "[" + dialog.AbilityName + "]"; slotCost = dialog.SlotCost; notes = dialog.Notes; //if it's an action if (abilityType == AbilityType.Action) { if (keywords.Contains(Keyword.Weapon)) { //handle this shit differently!!! weaponDelayMod = dialog.DelayMod; weaponFloorMod = dialog.FloorMod; weaponCoSMod = dialog.CoSMod; weaponPowMod = dialog.PowerMod; weaponPowModPerTier = dialog.PowerModPerTier; weaponDice = dialog.DieMod; weaponDicePerTier = dialog.DieModPerTier; weaponPowerMult = dialog.PowerMultiplier; weaponTargetType = dialog.TargetType; weaponMPCost = dialog.MP; weaponMPCostPerTier = dialog.MPPerTier; weaponCTCost = dialog.CT; if (weaponTargetType == TargetType.Null) { weaponTargetType = TargetType.Single; } type = AttackType.Physical; } else { type = dialog.AttackType; //it's a Aimed or Magic or some shit baseDelay = dialog.Delay; target = dialog.TargetType; baseCos = dialog.CoS; baseFloor = dialog.Floor; mp = dialog.MP; mpPerTierAfterOne = dialog.MPPerTier; chargeTime = dialog.CT; if (type == AttackType.Physical || type == AttackType.Magical ) { basePower = dialog.BasePower; powerPerTierAfterOne = dialog.PowerPerTier; dice = dialog.Dice; diePerTierAfterOne = dialog.DicePerTier; dieType = dialog.DieType; baseElement = dialog.Element; } } } else if (abilityType == AbilityType.Support) { type = AttackType.Null; target = TargetType.Null; //don't need to do anything else here! } else if (abilityType == AbilityType.Reaction) { type = AttackType.Null; target = TargetType.Null; } else { //wtf? } return true; } else { return false; } }
public override void Edit(Monster monster) { InputOtherAction dialog = new InputOtherAction(); dialog.SlotsRemaining = parent.SlotsRemaining; dialog.AbilityName = name; dialog.SlotCost = slotCost; dialog.Notes = notes; //populate dialog keywords, make sure if weapon keyword it shows correct boxes! dialog.Keywords = keywords; dialog.ActivateKeywords(); dialog.AbilityType = abilityType; dialog.Element = baseElement; if (abilityType == AbilityType.Action) { if (this.keywords.Contains(Keyword.Weapon)) { dialog.DelayMod = weaponDelayMod; dialog.FloorMod = weaponFloorMod; dialog.MP = weaponMPCost; dialog.MPPerTier = weaponMPCostPerTier; dialog.CT = weaponCTCost; dialog.CoSMod = weaponCoSMod; dialog.TargetType = weaponTargetType; dialog.DieMod = weaponDice; dialog.DieModPerTier = weaponDicePerTier; dialog.PowerMod = weaponPowMod; dialog.PowerModPerTier = weaponPowModPerTier; dialog.PowerMultiplier = weaponPowerMult; } else { dialog.Delay = baseDelay; dialog.Floor = baseFloor; dialog.MP = mp; dialog.MPPerTier = mpPerTierAfterOne; dialog.CT = chargeTime; dialog.CoS = baseCos; dialog.TargetType = target; dialog.DieType = dieType; dialog.AttackType = type; dialog.Dice = dice; dialog.DicePerTier = diePerTierAfterOne; dialog.BasePower = basePower; dialog.PowerPerTier = powerPerTierAfterOne; } } if (dialog.ShowDialog() == DialogResult.OK) { int slotCostDifference = dialog.SlotCost - slotCost; if (slotCostDifference <= parent.SlotsRemaining) { //update keywords list based on dialog results slotCost = dialog.SlotCost; name = "[" + dialog.AbilityName + "]"; notes = dialog.Notes; abilityType = dialog.AbilityType; baseElement = dialog.Element; if (abilityType == AbilityType.Action) { if (this.keywords.Contains(Keyword.Weapon)) { weaponTargetType = dialog.TargetType; weaponDelayMod = dialog.Delay; weaponCoSMod = dialog.CoS; weaponFloorMod = dialog.Floor; weaponCTCost = dialog.CT; weaponDice = dialog.DieMod; weaponDicePerTier = dialog.DieModPerTier; weaponMPCost = dialog.MP; weaponMPCostPerTier = dialog.MPPerTier; weaponPowerMult = dialog.PowerMultiplier; weaponPowMod = dialog.PowerMod; weaponPowModPerTier = dialog.PowerModPerTier; } else { baseDelay = dialog.Delay; baseFloor = dialog.Floor; mp = dialog.MP; mpPerTierAfterOne = dialog.MPPerTier; chargeTime = dialog.CT; baseCos = dialog.CoS; basePower = dialog.BasePower; powerPerTierAfterOne = dialog.PowerPerTier; dice = dialog.Dice; diePerTierAfterOne = dialog.DicePerTier; dieType = dialog.DieType; target = dialog.TargetType; type = dialog.AttackType; } } else { //reaction or support are treated identically at this point target = TargetType.Null; type = AttackType.Null; } } else { Complain(5); } } }