Parses a spells range (short, medium or long) into an Integer based on the spell and spell casters level @param aSpell The spell being output. @param si The info about conditions applied to the spell @return spell range
(final CharacterSpell aSpell, final SpellInfo si)
| 3477 | * @return spell range |
| 3478 | */ |
| 3479 | public String getSpellRange(final CharacterSpell aSpell, final SpellInfo si) |
| 3480 | { |
| 3481 | String aRange = aSpell.getSpell().getListAsString(ListKey.RANGE); |
| 3482 | String aSpellClass = aSpell.getVariableSource(this); |
| 3483 | int rangeInFeet; |
| 3484 | String aString = SettingsHandler.getGameAsProperty().get().getSpellRangeFormula(aRange.toUpperCase()); |
| 3485 | |
| 3486 | if (aRange.equalsIgnoreCase("CLOSE") && (aString == null)) |
| 3487 | { |
| 3488 | aString = "((CASTERLEVEL/2).TRUNC*5)+25"; //$NON-NLS-1$ |
| 3489 | } else if (aRange.equalsIgnoreCase("MEDIUM") && (aString == null)) |
| 3490 | { |
| 3491 | aString = "(CASTERLEVEL*10)+100"; //$NON-NLS-1$ |
| 3492 | } else if (aRange.equalsIgnoreCase("LONG") && (aString == null)) |
| 3493 | { |
| 3494 | aString = "(CASTERLEVEL*40)+400"; //$NON-NLS-1$ |
| 3495 | } |
| 3496 | |
| 3497 | if (aString != null) |
| 3498 | { |
| 3499 | List<Ability> metaFeats = null; |
| 3500 | if (si != null) |
| 3501 | { |
| 3502 | metaFeats = si.getFeatList(); |
| 3503 | } |
| 3504 | rangeInFeet = getVariableValue(aSpell, aString, aSpellClass).intValue(); |
| 3505 | if ((metaFeats != null) && !metaFeats.isEmpty()) |
| 3506 | { |
| 3507 | for (Ability feat : metaFeats) |
| 3508 | { |
| 3509 | rangeInFeet += (int) BonusCalc.charBonusTo(feat, "SPELL", "RANGE", this); |
| 3510 | |
| 3511 | final int iMult = (int) BonusCalc.charBonusTo(feat, "SPELL", "RANGEMULT", this); |
| 3512 | |
| 3513 | if (iMult > 0) |
| 3514 | { |
| 3515 | rangeInFeet *= iMult; |
| 3516 | } |
| 3517 | } |
| 3518 | } |
| 3519 | |
| 3520 | aRange += (" (" + Globals.getGameModeUnitSet().displayDistanceInUnitSet(rangeInFeet) |
| 3521 | + Globals.getGameModeUnitSet().getDistanceUnit() + ')'); |
| 3522 | } else |
| 3523 | { |
| 3524 | aRange = parseSpellString(aSpell, aRange); |
| 3525 | } |
| 3526 | |
| 3527 | return aRange; |
| 3528 | } |
| 3529 | |
| 3530 | /** |
| 3531 | * Computes the Caster Level for a Class |
no test coverage detected