From: <jde...@us...> - 2006-04-24 23:35:25
|
Revision: 890 Author: jdempsey Date: 2006-04-24 16:35:11 -0700 (Mon, 24 Apr 2006) ViewCVS: http://svn.sourceforge.net/pcgen/?rev=890&view=rev Log Message: ----------- [ 1469579 ] feats not stacking their bonus - Copied from change 889 in Trunk Modified Paths: -------------- Branches/5.10.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java Branches/5.10.x/pcgen/code/src/test/pcgen/core/PObjectTest.java Modified: Branches/5.10.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java =================================================================== --- Branches/5.10.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2006-04-24 22:34:00 UTC (rev 889) +++ Branches/5.10.x/pcgen/code/src/java/pcgen/core/PlayerCharacter.java 2006-04-24 23:35:11 UTC (rev 890) @@ -11989,10 +11989,11 @@ aList.add(ab.toString().toUpperCase()); - // If we have processed all of the entriues, or this is not - // a LIST bonus, don't add any more copies. - if (aTok.countTokens() > 0 || listindex >= cnt - || !bonusInfo.equals("LIST")) + // If we have processed all of the entries, or if this object + // has multiple bonuses, don't add any more copies. + if (aTok.countTokens() > 0 + || listindex >= cnt + || anObj.getBonusList().size() > 1) { break; } Modified: Branches/5.10.x/pcgen/code/src/test/pcgen/core/PObjectTest.java =================================================================== --- Branches/5.10.x/pcgen/code/src/test/pcgen/core/PObjectTest.java 2006-04-24 22:34:00 UTC (rev 889) +++ Branches/5.10.x/pcgen/code/src/test/pcgen/core/PObjectTest.java 2006-04-24 23:35:11 UTC (rev 890) @@ -28,6 +28,7 @@ import pcgen.AbstractCharacterTestCase; import pcgen.PCGenTestCase; import pcgen.persistence.PersistenceLayerException; +import pcgen.persistence.lst.AbilityLoader; import pcgen.persistence.lst.CampaignSourceEntry; import pcgen.persistence.lst.PCClassLoader; import pcgen.persistence.lst.RaceLoader; @@ -168,7 +169,69 @@ .getTotalBonusTo("SPELLKNOWN", "CLASS.TestPsion;LEVEL.1")); } + + /** + * Test the function of adding an ability multiple times which has + * no choices and adds a static bonus. + */ + public void testNoChoiceBonus() throws Exception + { + CampaignSourceEntry source = new CampaignSourceEntry(new Campaign(), + getClass().getName() + ".java"); + AbilityLoader loader = new AbilityLoader(); + loader.setCurrentSource(source); + Ability pObj = new Ability(); + loader + .parseLine( + pObj, + "Toughness TYPE:General STACK:YES MULT:YES CHOOSE:NOCHOICE BONUS:HP|CURRENTMAX|3", + source); + + PlayerCharacter aPC = getCharacter(); + int baseHP = aPC.hitPoints(); + pObj.addAssociated(""); + aPC.addFeat(pObj, null); + aPC.calcActiveBonuses(); + assertEquals("Should have added 3 HPs", baseHP+3, aPC.hitPoints()); + + pObj.addAssociated(""); + aPC.calcActiveBonuses(); + assertEquals("2 instances should have added 6 HPs", baseHP+6, aPC.hitPoints()); + + } + + + /** + * Test the function of adding an ability multiple times which has + * a single choice and adds a static bonus. + */ + public void testNoSubsChoiceBonus() throws Exception + { + CampaignSourceEntry source = new CampaignSourceEntry(new Campaign(), + getClass().getName() + ".java"); + AbilityLoader loader = new AbilityLoader(); + loader.setCurrentSource(source); + Ability pObj = new Ability(); + loader + .parseLine( + pObj, + "Toughness TYPE:General STACK:YES MULT:YES CHOOSE:HP|+3 HP BONUS:HP|CURRENTMAX|3", + source); + + PlayerCharacter aPC = getCharacter(); + int baseHP = aPC.hitPoints(); + pObj.addAssociated("+3 HP"); + aPC.addFeat(pObj, null); + aPC.calcActiveBonuses(); + assertEquals("Should have added 3 HPs", baseHP+3, aPC.hitPoints()); + + pObj.addAssociated("+3 HP"); + aPC.calcActiveBonuses(); + assertEquals("2 instances should have added 6 HPs", baseHP+6, aPC.hitPoints()); + + } + protected void setUp() throws Exception { super.setUp(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |