(final PlayerCharacter pc, Equipment eq)
| 289 | } |
| 290 | |
| 291 | public static Integer getRange(final PlayerCharacter pc, Equipment eq) |
| 292 | { |
| 293 | String rangeVar = pc.getControl(CControl.EQRANGE); |
| 294 | if (rangeVar != null) |
| 295 | { |
| 296 | //Need a special breakout based on PlayerCharacter reset of IntegerKey.RANGE |
| 297 | if (eq.isType("Both") && eq.isType("Melee")) |
| 298 | { |
| 299 | return 0; |
| 300 | } |
| 301 | return ((Number) eq.getLocalVariable(pc.getCharID(), rangeVar)).intValue(); |
| 302 | } |
| 303 | |
| 304 | int range = eq.getSafe(IntegerKey.RANGE); |
| 305 | |
| 306 | if (range == 0) |
| 307 | { |
| 308 | final String aRange = eq.getWeaponInfo("RANGE", true); |
| 309 | |
| 310 | if (!aRange.isEmpty()) |
| 311 | { |
| 312 | range = Integer.parseInt(aRange); |
| 313 | } |
| 314 | } |
| 315 | |
| 316 | int r = range + (int) eq.bonusTo(pc, "EQMWEAPON", "RANGEADD", true); |
| 317 | final int i = (int) eq.bonusTo(pc, "EQMWEAPON", "RANGEMULT", true); |
| 318 | double rangeMult = 1.0; |
| 319 | |
| 320 | if (i > 0) |
| 321 | { |
| 322 | rangeMult += (i - 1); |
| 323 | } |
| 324 | |
| 325 | int postAdd = 0; |
| 326 | |
| 327 | if (eq.isThrown()) |
| 328 | { |
| 329 | r += (int) pc.getTotalBonusTo("RANGEADD", "THROWN"); |
| 330 | postAdd = (int) pc.getTotalBonusTo("POSTRANGEADD", "THROWN"); |
| 331 | rangeMult += ((int) pc.getTotalBonusTo("RANGEMULT", "THROWN") / 100.0); |
| 332 | } |
| 333 | else if (eq.isProjectile()) |
| 334 | { |
| 335 | r += (int) pc.getTotalBonusTo("RANGEADD", "PROJECTILE"); |
| 336 | postAdd = (int) pc.getTotalBonusTo("POSTRANGEADD", "PROJECTILE"); |
| 337 | rangeMult += ((int) pc.getTotalBonusTo("RANGEMULT", "PROJECTILE") / 100.0); |
| 338 | } |
| 339 | |
| 340 | r *= rangeMult; |
| 341 | r += postAdd; |
| 342 | |
| 343 | return r; |
| 344 | } |
| 345 | |
| 346 | /** |
| 347 | * Converts the critical multiplier into a dispalyable string, i.e. |
no test coverage detected